VOGONS


First post, by MrPepka

User metadata
Rank Newbie
Rank
Newbie

I plan to start a project where I want to preserve 1: 1 games (I want to do it this way, that I want to add hashes of game disks on redump.org, and save the disk images on another page, I also intend to keep mds files from DPM data of protected disks so that no-cd or no-dvd patches will not be required when starting them, as well as CD-Keys for games that require them when installing or running them). The reason why I want to preserve games in this way is that this project is aimed at collectors of boxed games who would like to be sure that they have a perfectly preserved game disc and who would like to go back in time and play their favorite games on retro-machine with some old system (Win XP, Win 98 or something like that). As part of this project, I also wanted to create a virtual computer museum and it would be emulating some old computers as much as possible (so 86box and pcbox are of interest to me here). However, I know that a lot of games that I would keep would also be 3D games, and I would also like to recreate the experience of users who run them on old computers with PIII 500 MHz, GeForce 3 GPU, SB Live sound card, 256 MB RAM, Win98 system ( sample configuration). And here comes the problem. In the case of 3D graphics cards, I know that the last well-documented cards are 3DFX Voodoo (1/2/3), which are not enough, and NVIDIA GeForce or ATI Radeon cards are less documented (if at all). Adapting games to their operation on new systems does not interest me because people interested in it have a lot of other projects to choose from and I am not able to think of anything new here. Wrappers and FPS limiters also do not interest me because they usually work only in user mode, which means that they are beyond the reach of my project (in user mode, it is not always possible to emulate the operation of, for example, a given graphics card or how a given game could work on it). From the existing solutions, in addition to the above-mentioned 86box and pcbox, I also found qemu-3dfx that would almost fit my project (it allows you to play various old games, even 3D ones on Win98, XP, etc.), but firstly it is paid, and secondly if I saw right the wrappers WineD3D, OpenGlide and probably DSOAL are used there, but I'm not sure if, for example, WineD3D is able to, for example, emulate (at least partially) drivers for GeForce or Radeon graphics cards (because I know that this wrapper can be set in the registry editor so that the game thinks that it is dealing with, for example, a GeForce 4 MX 440 card, but does it give anything else in practice, or does the game only think that it sees this card and does not give anything else?). Other solutions that came to mind include:
1. Emulation of the hardware I want in 86box / pcbox
The best solution. It would be possible to recreate the operation of these devices 1: 1 so that you could see how certain 3D graphics cards, 3D sound cards etc worked in the past and it would basically correspond to this project. The problem is that it is not feasible. As is well known, NVIDIA GeForce graphics cards, ATI Radeon or Aureal Vortex and SB Live sound cards, Audigy 1/2 are not well documented and are so complicated equipment that it would be difficult to do such an emulation, not to mention that on today's computers such emulation would be slow because there are no CPUs on the market that, for example, would be able to emulate such a PIII, not to mention the aforementioned GPUs or sound cards
2. VFIO
In fact, in another thread, I wrote how I saw it. The plan was to use QEMU. The idea was that I had to assign a graphics card to QEMU as I have in my computer (GeForce RTX 2060 SUPER) via VFIO, but in the QEMU virtual machine configuration, I would change the graphics card ID so that QEMU thought that I had assigned a GeForce FX 5200 graphics card (for example, I chose this GPU). In addition, I would load the VBIOS of this card into QEMU and although the RTX 2060 SUPER card would be allocated to QEMU thanks to VFIO, QEMU would load the FX 5200 cards into the VBIOS virtual machine and my physical card would identify in the virtual machine in QEMU as FX 5200, but thanks to hardware acceleration with VFIO The "emulation" of such a card would be smooth (it would work like KVM hardware acceleration for Linux or WHPX / HAXM for Windows to improve the performance of the virtual machine in QEMU). However, after discussing the DSC 86box, I came to the conclusion that this solution would not work because the behavior of the VFIO is closer to that of the physical card and just as flashing the VBIOS FX 5200 to the RTX 2060 SUPER would release the card, I would probably get similar behavior in QEMU. I also considered an alternative in the form of Open-Mdev projects (now it is probably called Open-IOV), NVIDIA vGPU, AMD mxGPU or GVT-G from Intel, but these solutions work based on modified graphics card drivers and the same driver must be on the host and in the guest
3. ATILLA GPU Simulator
It was a GPU simulator made by some students. It had OpenGL and D3D9 implementations and was able to emulate a GPU using D3D9 (another thing was that it had poor performance). This project, however, collapsed a few years ago and I do not see anyone who would like to revive it, its operation was limited to Linux, now it probably does not work anywhere
4. Wrapper running in kernel mode
This proposal makes sense to me and perhaps even corresponds to the goals of my project. Well, I wonder if it is possible to create a WineD3D and DSOAL wrapper, but running in kernel mode? It would consist in the fact that, for example, WineD3D would create a virtual graphics card that would be able to emulate drivers for NVIDIA GeForce or ATI Radeon cards, and thanks to that someone who used to have e.g. a GeForce 3 computer would be able to install the wrapper in this form in QEMU on a Win98 machine , run a game that he used to play on an old computer, but in the wrapper configuration he could choose a GeForce 3 card (i.e. the one he had), it would run the game and it would look as if he had an old computer on which he was running the game. Thanks to this, it would be possible to recreate the behavior of games on a given graphics or sound card, the behavior of games with drivers for these devices, etc. The question is whether it is actually possible to create something like this?
In the case of BIOSes of motherboards or laptops, I don't have too many ideas. I know that QEMU and Bochs (and also SPC/AT Emulator) are able to run custom BIOSes, but I also know that it doesn't always work. Has anyone ever had fun with booting BIOSs in QEMU or Bochs and could say whether it is actually possible to run such BIOSes in these programs or do you need to emulate all such laptops and motherboards (which due to documentation problems, as well as possible problems with emulation performance can be troublesome)?
Feel free to discuss