Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature Request] Emulate other 3D accelerators like the Savage series, Riva series, Voodoo 3, and (if possible) Diamond Edge #1773

Open
ChrisNonyminus opened this issue Aug 1, 2020 · 18 comments

Comments

@ChrisNonyminus
Copy link

Is your feature request related to a problem? Please describe.
Kind of. Voodoo 1 being the only accelerator that can be emulated in DosBox-x sorta disappoints me, and I would like to see other 3D accelerators of the 90s be emulated.

Describe the solution you'd like
If possible, please implement emulation for the early cards in the S3 Savage series and NVidia Riva series. And possibly Diamond Edge, although this might be me losing my mind.

Describe alternatives you've considered
The only alternative is to emulate Voodoo1, which isn't that advanced.

Additional context
On the other hand, emulation of these other accelerators might be tricky, as currently 3D emulation in Windows 9x in DosBox-x is weird; polygons may stretch in games like The Sims 1 and Tomb Raider 2. 3D emulation in MS-DOS doesn't have this problem.
dosbox-x_2020-07-31_09-10-40
Also, emulation of the Savage, the Riva, and definitely the Diamond Edge might be too out of scope for DosBox-x. Either way, it would be nice to see emulation of these MS-DOS/Windows 95-era 3D graphics cards.

@ChrisNonyminus ChrisNonyminus changed the title Emulate other 3D accelerators like the Savage series, Riva series, and (if possible) Diamond Edge [Feature Request] Emulate other 3D accelerators like the Savage series, Riva series, and (if possible) Diamond Edge Aug 1, 2020
@ChrisNonyminus ChrisNonyminus changed the title [Feature Request] Emulate other 3D accelerators like the Savage series, Riva series, and (if possible) Diamond Edge [Feature Request] Emulate other 3D accelerators like the Savage series, Riva series, Voodoo 3, and (if possible) Diamond Edge Aug 1, 2020
@joncampbell123
Copy link
Owner

joncampbell123 commented Aug 2, 2020

This should be added as additional machine= types since the cards mentioned are integrated VGA and accelerator on a card.

I recommend:

  • S3 Savage: machine=svga_s3_savage
  • Riva: machine=svga_nv_riva
  • Voodoo 3: machine=svga_3dfx_voodoo3
  • NVidia NV1 / Diamond Edge: machine=svga_nv1

Also since these are PCI cards, the svga machine types mentioned should not be available if dosbox.conf has PCI bus emulation disabled.

@joncampbell123
Copy link
Owner

I also want to point out that while building the emulation from datasheets and whatever Windows does is initially fine, long term I suggest writing test code to program the hardware and determine actual behavior. Much like the code I write in DOSLIB. As always, know that actual hardware behavior can differ from datasheets.

@joncampbell123
Copy link
Owner

I have some datasheets for SVGA chipsets (that I've been able to find) up on hackipedia.org.

Here's what I have for S3 (not sure if Savage)

http://hackipedia.org/browse.cgi/Computer/Platform/PC%2c%20IBM%20compatible/Video/VGA/SVGA/S3%20Graphics%2c%20Ltd

@rderooy
Copy link
Contributor

rderooy commented Aug 4, 2020

There is an experimental patch for S3 Virge with S3D support
https://github.com/joncampbell123/dosbox-x/tree/master/patch-integration/S3Virge

You can find the games with S3D support listed in this thread:
https://www.vogons.org/viewtopic.php?f=46&t=33483

The patch however needs some work, instead of replacing the S3 Trio, it needs to be a separate option and it needs further testing and development.

@fuel-pcbox
Copy link
Contributor

@joncampbell123 I've got some basic code for the nVidia RIVA 128 in my 86Box fork here https://github.com/qeeg/86Box/tree/feature/riva128 if you need a base to start with. Keep in mind that I'm pretty sure that the interrupt emulation is still a liiiiiiiittle off.

@RNMB15
Copy link
Contributor

RNMB15 commented Aug 6, 2020

I found that for the NVidia NV1 card.
https://vintage3d.org/nv1.php
http://www.vgamuseum.info/index.php/component/k2/item/543-diamond-edge-3d-3240xl-nvidia-nv1

This is the code of the SEGA Saturn emulator, where the 3d unit of the NVidia NV1 card should be based.
https://github.com/FCare/Kronos

@fuel-pcbox
Copy link
Contributor

The Nvidia NV1 isn't based on the Saturn's graphics hardware AT ALL. That's a common misconception.

@BridgeHeadland
Copy link

This should be added as additional machine= types since the cards mentioned are integrated VGA and accelerator on a card.

I recommend:

* S3 Savage: machine=svga_s3_savage

* Riva: machine=svga_nv_riva

* Voodoo 3: machine=svga_3dfx_voodoo3

* NVidia NV1 / Diamond Edge: machine=svga_nv1

Also since these are PCI cards, the svga machine types mentioned should not be available if dosbox.conf has PCI bus emulation disabled.

Note that I do not have a full understanding of this with such things, so it is possible that I may have said something that didn't add up while I was writing it!

I can see that there could be a lot of machine values ​​eventually.
If it won't be too difficult, why not have just one SVGA value, and then have a separate SVGA video card setting, with different types of computer graphics companies/series and technology companies/series (such as those mentioned), where again each setting emulates the video cards, as values, from day one, until, preferably, the end of the Windows XP 32-bit era? That way, you can have several video cards at once, as long as there is not more than one from the same series, of course.

This is just an unfinished example.

[svga]
s3_savage=savage_xp
riva=tnt2
voodoo=voodoo5_5500
diamond_edge=stg_2000_edge_3d

@BridgeHeadland
Copy link

Has anyone even worked on adding these 3D accelerators to DOSBox-X after 2020, and is it worth adding SVGA or something like that as a separate section?

@rderooy
Copy link
Contributor

rderooy commented Oct 25, 2023

It makes no sense to add "svga" as a machine option as there is no single svga standard. Every vendor had its own implementation, and often vendors even had multiple incompatible or partly compatible implementations.

@BridgeHeadland
Copy link

@rderooy I understand. By the way, today I found out that (the) current version(s) of DOSBox-X already emulate SVGA ATI as multiple machine values.

@rderooy
Copy link
Contributor

rderooy commented Oct 25, 2023

Those ATI machine types are experimental, and incomplete, and not suited for actual use at this point. This is also mentioned on the wiki.
https://dosbox-x.com/wiki/Guide%3AVideo-card-support-in-DOSBox%E2%80%90X#_ati_technologies

@BridgeHeadland
Copy link

@rderooy I have just now noticed that the ATI machine values ​​are incomplete. I just tried svga_ati_mach64, then installing one of the Mach64 drivers in Windows ME, with no luck.

I haven't had time to do a full survey, but do you know which of the values ​​are the closest to complete?

@rderooy
Copy link
Contributor

rderooy commented Oct 26, 2023

None or suitable right now for actual use.

@Torinde
Copy link
Contributor

Torinde commented Mar 31, 2024

@aquaboxs above is adding Riva128 and Voodoo3 to DOSbox.

86Box/PCBox have Riva128: PCBox/PCBox#34

  • MAME seems to mention various Riva TNT models, but those are less complete.

Bochs extends DOSbox Voodoo to Banshee and Voodoo3 with further improvements, LGPL BIOS, etc.

@WhiteMagicRaven
Copy link

is something exist to try or test on those 3d accelerators? some branches / patches? in binary form.

@BridgeHeadland
Copy link

@WhiteMagicRaven I just checked it with the very latest nightly build (64-bit MinGW, SDL 2), no new machine values ​​since the unfinished ATI machine types (tested ATI Mach64).

@Torinde
Copy link
Contributor

Torinde commented Jun 15, 2024

Nvidia documentation, envytools

(nVIDIA documentation) that has NV3, and likely MMIO registers has PMC, PGRAPH, PFIFO, and then more registers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

10 participants