-
Notifications
You must be signed in to change notification settings - Fork 217
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
Add NVIDIA cards for PCem v18 #205
Comments
As it has been said MANY TIMES before: Nvidia cards cannot be added to PCem (at least not for the time being) due to incomplete and insufficient documentation currently available. Some people actually attempted to add Nvidia cards in the past, however, none of them were able to deliver the code that actually worked. |
wasn't ever. Incoming was Direct3D5 (and already works). |
Incoming ran even on my SiS 6326. I don't recall any Nvidia-only games being released. There might be some tech demos but definitely no commercially released games. |
NVIDIA cards provided the best OpenGL compliant performance and compatibility when the NVIDIA RIVA TNT came out.
Even the 3dfx Voodoo 3 cards typically used 16-bit depth buffers and often had Z-fighting issues in games like GL Quake. Quake runs on those cards but it is not optimal.
On older 3dfx cards you had to use crummy miniGL drivers which offered subpar graphics quality as well.
I have a modern AMD GPU and Incoming will not even run on it. Some other Windows 95/98 era games also have extreme difficulty with running on modern Windows OSes.
I will also note that the NVIDIA RIVA TNT predates both the Pentium III/K7. It came out in Summer 1998. Both those CPUs came out in 1999. The original NVIDIA RIVA TNT was clocked at 90 MHz. It was contemporary to the Voodoo 2, similarly clocked at 90 MHz, which also came out in 1998. Not the Voodoo 3 which came out in 1999. The NVIDIA RIVA TNT is basically a contemporary of the 3dfx Voodoo 2 and Banshee cards but has much better performance than the Banshee card (Fall 1998), it has performance close to the Voodoo 2 (Spring 1998), but much better support for multi-texturing, higher resolution depth and color buffer, and actual working OpenGL and Direct3D, unlike 3dfx cards back at the time.
I understand your concern that there is limited information on the cards themselves and that the PCem emulation is still not fast enough on modern hardware to emulate Pentium III/K7 class hardware. But the software is clearly getting there as Pentium II and K6 support is already here. The initial Slot A K7 processors ran at 500 MHz. The initial Pentium III ran at 400 MHz. When you consider that there are PS3 emulators already out there, and that Cell has a 3.2 GHz PowerPC RISC processor with 550 MHz NVIDIA GeForce 7 GPU, I do not think it will be impossible to get to PIII/K7 levels of performance even on current PC hardware in the future with something similar to PCem. Also, I never even mentioned Pentium III/K7 support, so I do not understand why you put that canard into the discussion.
|
The slowest Pentium III desktop processor that was released to market ran at 450 Mhz, actually. The PS3 emulators you mentioned use high level emulation (HLE) approach whereas PCem uses the low level (LLE) one. This means that these PS3 emulators sacrifice accuracy and precision for the sake of performance. The purpose of these emulators is to allow as many software titles to be played on another machine (and as fast) as possible. Pentium III was brought into discussion only to give you an example why GeForce 2 would be impractical to emulate at this point even if there were all possible details about the card available. Please close this ticket since you're asking about something that cannot be done at this point. |
Banshee and V3 had working OpenGL and Direct3D HAL just fine. also nvidia's opengl compliance is debatable, considering id software used them to develop quake3, in which a nvidia non-compliant behavior regarding texture clamping led to the skybox lines bugs on other hardware that were compliant all along also demanding video cards for v18's just going to stall v18. |
I guess the OP wasn't around when 3Dfx cards were popular. People were buying these cards not only to be able to run Glide stuff but to get decent performance in D3D and OGL as well. I was one of them too. There was a reason why my SiS 6326 had to be replaced with Voodoo 3. |
I was around. I explicitly avoided buying a Voodoo 1/2 card because of that stupid passthrough cable to the separate 2D card which made the video look muddled. Yes you needed to use an analog cable to connect the 2D card to the 3D card, and then another analog cable to the monitor. Not that this would be a problem in an emulator. But the crummy dithered textures sure still are. The Voodoo 2 was also a card which has like 256x256 textures with 16-bit color. The RIVA TNT has 1024x1024 textures with 32-bit color. The NVIDIA RIVA TNT was a replacement for both the 2D and 3D card and had similar performance to the Voodoo 2 in 3D at a lower price than just the single Voodoo 2 card in some cases. And much better OpenGL and Direct3D driver support. And you are not limited to the 800x600 screen resolution of the single Voodoo 2. Only reason leading edge consumers kept using the Voodoo 2 back then was Glide and the SLI support. You would get more FPS but you need to buy 3 graphics cards for a new computer. The later 3dfx Banshee had integrated 2D but came with lackluster performance, plus arrived after the NVIDIA RIVA TNT as well, although they were contemporaries on the same Xmas season intro. The 3dfx Voodoo 3 was an even later card, which solved some of the performance issues of the Banshee, but still came with putrid dithered textures. By the time 3dfx came out with the Voodoo3, NVIDIA had come with the faster clocked RIVA TNT2, with 32-bit Z-buffer, 32-bit textures, and could beat 3dfx Voodoo 3 in performance as well, besides image quality and price after they boosted the clockspeed from 90 MHz to 150 MHz. Later clockspeed increases basically made the TNT2 roughly as fast as a Voodoo 2 SLI system with a single integrated 2D/3D card in a single chip. As for the lack of Glide it was never a problem for me and the games I used to play back then like Homeworld. The only Glide specific software I used was UltraHLE and there were Glide wrappers for it. Never noticed a difference. I will try running Incoming on QEMU like on that video to see if it works on my system. It certainly does not run outside QEMU. |
It does. |
I don't think there's a need to disrespect others or their work because you like a particular emulator. |
It's not really professional for a developer to blast the work of another developer (in particularly when done out of jealousy because your work cannot hold a candle to that of a developer you're blasting). |
As of December 2021 PCem has a new maintainer. |
LOL, that's MW3 running on an emulated Pentium 200. Considering that the game's minimum requirements are P166, 32 MB RAM it shouldn't come as surprise that the game is running so "slow".
I would have but I just don't have the time for such things. Just as I don't have the time to argue with frustrated individuals. I've got actual work to do. Okay, so whatever you're offering might be suitable for old/low-end/slower CPUs but that's also because you went with a different approach. The people you criticize didn't criticize you for taking these "shortcuts" and choosing virtualization so why are you criticizing them? If you're not into it, just leave it. It's not mandatory to use PCem or any of its derivatives.
PCem strives to accurately emulate the components as they were not as how they were supposed to be. If you're not after an authentic "back from the day with all its ups and downs" experience you should pick something else.
The stats are displayed. We see emulated configuration and emulation speed the whole time during video. Also no need to insult others. |
Btw, I didn't know my Dark Rock Pro 4 was a cryogenic cooler🤣. |
When did I ever say that PCem was never intended for retro games? As a matter of fact the dynarec was introduced so that at least the games could be fully playable at a slight cost of accuracy. It was never said that PCem is fully accurate at what it does it just strives to be as close to the real deal as possible. Currently, there are certain technical and other limitations that prevent it from being 100% accurate.
Never seen a virtualization software that is about running retro games and especially at the very best and highest possible quality.
This happens when your host CPU isn't powerful enough to handle the emulated configuration. A solution is to reduce CPU speed. (or buy a faster host CPU and run your desired configuration with it).
The minor audio issue mentioned affects only a small number of games (the Screamer series for instance). And besides, one of the PCem forks has already fixed it. it's not a big deal, actually. |
I think the OP likes PCem enough to ask for a new feature to be added to it and didn't seem concerned with the accuracy of the emulation or whether high-level or low-level emulation is better. The only problem is that someone needs to have a deep understanding of how these NVIDIA cards work, both at the hardware and software level, in order to write the code necessary to emulate them. |
As for Incoming, all CD's from that time will have 16 bit installers, but some of them won't work on modern 64 bit Windows, because Microsoft decided to add compatibility for only a couple of 16 bit installers on 64 bit Windows. But I found out that installing winevdm (https://github.com/otya128/winevdm/releases/download/v0.8.0/otvdm-v0.8.1.zip) solves the problem. Basically winevdm is a replacement for the 32 bits NTVM no longer included with 64 bit Windows and it will run most Windows 3.x programs inside 64 bits Windows, and those 16 bit installers are just Windows 3.x executables. I already had winevdm installed, that's why I found out the installer was being ran by winevdm instead of Windows, so I disabled winevdm and tried again to let Windows run it and it failed, telling me that the executable wasn't meant for this version of Windows or for 64 bit processors or something like that, because I tried to launch the installed from the launcher and also directly from its own folder, each way gave me a different error. To install winevdm download the latest version and extract the zip contents somewhere, I've them in c:\otvdm Once you've winevdm installed run whatever launcher/isntaller is at the root folder of the game CD and it should work. |
Why are you so threatened by PCem that you feel the need to continuously come here and attack it? It fulfills a completely different need than your project. QEMU 3dfx has serious issues with accuracy in some games, based on the videos you yourself post on Youtube. I can only imagine you aren't that familiar with how these games are meant to run on original hardware. |
Sadly, no, NVIDIA Cards cannot be added for PCem v18. Maybe add ATI Rage 128 Pro for PCem v18? for #193 I did this a few months ago. I already submitted datasheets for ATI Rage 128 Pro. Well, "2 thumbs-up reactions" from now on, That's fine. |
@kjliew I still don't understand where you want to get to... I don't know who would need to buy the retail version since Incoming came bundled with Riva TNT cards from various manufacturers, like an Asus I've, with various models of cards based on different 3dfx chips, with the Matrox Mystique, with Ati Rage Pro, with S3 Virge, I would not be surprised if it also came with some motherboards based on the Intel i740 ;-) Some CDs with the game in Spanish say they're optimized for both 3dfx and NVIDIA because the same CD was bundled with cards using both brands of chips. In PCem I can confirm it does work OK with the 3dfx Banshee. I've never been into flight simulators or first person shooters, I'd be more lost than trying to pilot the space shuttle so I can't show you without ridiculing myself for how badly I would play how Incoming works on PCem with Windows 98SE and the 3dfx Banshee, but you can try it yourself: I tested it with a FIC VA-503+ mainboard, a Pentium MMX 233, a 3dfx Banshee grahics card and a Sound Blaster AWE32, then installed Windows 98SE, installed Banshee drivers version 1.04.00, installed Direct X 9, installed Incoming and tried to play it as best as I could, for me it looked fine for a 25 years old game. In fact to me it looks the same as in Windows 10 x64 |
Can you post a video of Heavy Gear (1997) running in QEMU? I'm curious to see how it runs. Please post an uncut video showing 1) a movie clip, 2) weapon selection screen, and 3) gameplay. |
You're running the game in Direct3D. Any reason? It gets slightly better performance in 3dfx mode. I'd say the game is semi-playable in QEMU, but I wouldn't want to play it like that. On real hardware with a Voodoo 1, the game averages around 30 fps in 3dfx mode ( https://vintage3d.org/3dfx1.php ). PCem pretty much matches that. The problems I noticed in the QEMU video you posted:
On PCem, videos play fine, cursor is fine, and frame rate is more consistent. How about in 640x480 software mode? I actually prefer to play in software mode on a ~450 MHz PC, which gives a slightly higher frame rate (at the cost of no texture filtering). The game speed is tied to the frame rate, though, so anything above 40 fps feels too fast. The sweet spot is 30-40 fps. |
Well, honestly I don't even know if my computer can compress a video while running PCem, I probably haven't used any screen capture software in the last 20 years so I don't know how much CPU they use nowadays. I used Windows 98SE with these "Updated drivers" As an alternative to a pixelated video I took some screenshots instead so you can see how the graphics look and the average FPS: I did this just to show that NVIDIA emulation is not essential to run Incoming on PCem. |
BINGO! At least you got that one right. |
And yet managed to provide Matrox Millennium emulation months after allegedly "abandoning" the project. |
My i7-3770k can run much faster but it's slowed down in order to draw less power and be quieter because I don't need a lot of GHz to surf the internet or to run software and games that would work perfectly on a Pentium 3, the only reason I have to use this CPU is to have 8 threads available for some very specific tasks. If you need to watch PCem it in realtime I guess you should have at least one Windows 98 hard disc image for testing qemu, you can make a copy of it and use it on PCem, spend a few minutes reinstalling drivers and you will be done. While hardware CPU virtualization is really useful for me to be able to use Windows 2000 on Virtualbox it is useless to emulate a 386 on the Raspberry Pi 3B which is one of the things that I do with PCem. |
I have no idea about those discussions so i can't comment, I only read the PCem forum topics about any features I like or when I think I can help others, just like here where just I wanted to help the OP to be able to play a game but without having to be specifically using PCem. |
https://github.com/xemu-project/xemu/commits/master/hw a bit more on-topic? Not sure how low-level it is, and it also for xbox (so not desktop or even IGP). But something geforce-like |
Lets keep things to the topic at hand, not talk about other emulators! |
If is THAT hard to insert a Nvidia or ATI card on the emulation...what about make a virtual graphics card to act as a pass thru? much harder? |
I can't answer that but you can try VMware Workstation Player meanwhile, it's free for personal use. I use both VMware and VirtualBox to run some games that are not compatible with Windows 10, but the VirtualBox 3D driver for Windows 2000/XP is more complicated to install, you had to start Windows in safe mode and then run the "Guest Additions" installer. Under VMware Windows XP and Vista are limited to DX9 while Windows 7 or later have support for DX10 and DX11 I'm not sure if that particular game will work because I haven't tried it myself, but you may need to install Daemon Tools Lite or equivalent on the guest OS and use it to mount the game CD/DVD image within the guest OS, VMware emulated CD/DVD-ROM drive is unable to emulate special features of copy protected discs. If you decide to try VMware or VirtualBox remember to choose the correct guest operating system when you create a new virtual machine, otherwise 3D acceleration may not work and/or you can end with emulated hardware not supported by older Windows versions. |
There is SoftGPU and QEMU VirGL drivers, @michael-manley to comment on how/if those fit with PCem. |
Will anyone decompile the NVIDIA RIVA 128 drivers, please? |
I am just gonna close this as wontfix, as Nvidia, unless they release specs wont happen anytime soon. |
I am just adding this information for future reference in case anyone wants
to pick this up. There was an open source code drop from NVIDIA to the
XFreeOrg project which had support for the RIVA 128 and RIVA TNT chips.
https://www.x.org/wiki/nv/
For example, the Linux kernel framebuffer device for those chips contains
references to it.
Nouveau might also be useable as a reference for RIVA TNT cards:
https://nouveau.freedesktop.org/
Kind regards,
…On Tue, Dec 10, 2024 at 7:11 AM Michael Manley ***@***.***> wrote:
I am just gonna close this as wontfix, as Nvidia, unless they release
specs wont happen anytime soon.
—
Reply to this email directly, view it on GitHub
<#205 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAMQC2EPPUBGX6SLCMSBO3T2E2H2JAVCNFSM6AAAAABSYSQTG6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKMZQGYYTOMJTGM>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
--
Vasco Alexandre da Silva Costa
PhD in Computer Engineering (Computer Graphics)
Instituto Superior Técnico/University of Lisbon, Portugal
|
Hello,
It would be nice to have support for NVIDIA GPUs and cards in the emulator. For example, the NVIDIA NV1 which can accelerate Sega Saturn PC ports like Panzer Dragoon or PC games like NASCAR Racing. Or more to the point something like the NVIDIA RIVA TNT (NV4) or GeForce 2 MX (NV11). That would allow running some NVIDIA only games like Incoming or OpenGL software more easily.
Examples of cards with the before mentioned chips include the Diamond Edge 3D (NV1) or the Creative Labs Graphics Blaster RIVA TNT (NV4).
With regards to the RIVA TNT and GeForce 2 MX emulation perhaps the reverse engineering done for Linux graphics drivers like Nouveau would help with writing the emulator. See also:
https://nouveau.freedesktop.org/NvHardwareDocs.html
As for the NVIDIA NV1, the SDK is archived at Vogons, but I do not know if that would be enough to provide a base for work on emulating it. XFree86 X server for Linux had 2D acceleration on NV1 with available driver source code at one point:
https://ftp.xfree86.org/pub/XFree86/3.3.6/
https://ftp.xfree86.org/pub/XFree86/3.3.6/doc/README.NVIDIA
https://ftp.xfree86.org/pub/XFree86/3.3.6/source/X336src-1.tgz
X336src-1.tar\xc\programs\Xserver\hw\xfree86\vga256\drivers\nv\
The text was updated successfully, but these errors were encountered: