First post, by truth_deleted
And why is kekko’s 3dfx patch so crucial to Windows gaming in emulators? To answer this, we should examine the current state of the x86 emulators.
There are the two major emulators with robust DirectX support for gaming, VirtualBox and VMware. By my measure, VMware is the best emulator for Windows gaming, but it is not open source, not portable, and there is no guarantee it will support future operating systems. This solution is not tailored for gaming, significantly more difficult to setup and maintain than DosBox, and requires a license for a supported Windows operating system.
VirtualBox also runs DirectX games but at slower speeds that VMware. It’s advantage is that its source code is open (edit: but the 3d video driver is not?) and has allowed it to be ported to many operating systems. However, like VMware, its development is complex and not geared toward Windows gaming. Supporting these conclusions is that both of these emulators are not ported to Android or iOS.
DosBox has been ported to Android and iOS. It has been ported many times. It has a focus on gaming, so development would continue in the direction of running games. One particular port to Java is jDosBox. It has a couple of features which DosBox does not – a working virtual hard disk controller and reportedly working virtual Voodoo2 video card. One could imagine that the hurdle is surmountable to port both these devices to DosBox. And these two devices are the keys to robust Windows gaming in DosBox.
In its current state, DosBox along with a few key patches is available via the “Daum build”, a version already capable of DirectX gaming. I posted a few results in a previous thread, including that Jedi Knight runs with 3d hardware acceleration (Direct3d 5.0). I also could run the Direct3d titles Rainbow Six and Rogue Spear, but there are graphical artifacts which accompany the high framerates. (Edit: artifacts are observed on ATI HD6000 series with Windows driver, but not on other tested card). From testing and known limitations of 3dfx’s Voodoo1, it is apparent that it will fully support DirectX features up until version 5, including the corresponding Direct3d component. In addition, it will accelerate nearly all Glide-enhanced DirectX games. I verified this by running Half-life and GLQuake, at framerates similar to the functioning Glide wrappers running via DosBox (for example, nGlide). (Edit: Kekko's Voodoo1 is working on DirectX5/6/7; also, on Direct3D5/6; Direct3D7 is showing graphical artifacts which may be attributed to the architecture of the physical Voodoo1 card).
However, the problem is running Windows games newer than DirectX5 which also use Direct3d. NOLF is a game which supports DirectX7. While DirectX7 can be installed in Windows 9x inside the Daum build of DosBox, there is still the limitation that Voodoo1 only supports DirectX5 features and is limited to 4mb of RAM (actually only 2mb is available for textures; without textures the world would appear as sculptures without paint nor molded by chisel). This limitation is seen by running NOLF which displays characters and operates at high framerates, but the world is mainly devoid of textures. This is likely caused by low texture memory, as the system requirements of this game reveals. (Edit: this is likely a Direct3D driver limitation and not attributed to low memory). So, while DirectX7 provides bug fixes for older Windows games, it does not overcome the requirement of the higher video memory requirements of games from this era. DirectX7 is essentially running the DirectX5 Voodoo1 renderer along with the enhanced capability to emulate the newer non-supported graphical functions via CPU. But it cannot overcome the limitation in texture memory. This same limitation was observed in Rogue Spear: Direct3d in software mode was slow while Direct3d in hardware mode was fast but both showed degraded texturing and some graphical artifacts. There are reports that the Voodoo1 system reduces texture filtering when memory is low, the presumed cause of this problem (alternate explanation is a Voodoo1-specific bug in rendering, whether the driver or from the game itself, such as the use of large fonts).
The capability of the virtual Voodoo1 device should allow Direct3d gaming from 1996 through 1998, nearly all Glide game titles (notable exception is the steeper requirements of Operation Flashpoint), and up to DirectX8 for non-3d games. As an example, I ran Starcraft easily: the framerates were very high, there were no graphical artifacts, and the stability of DosBox was excellent.
The downside is that the Voodoo1 will not run games requiring more than 4mb on a 3d accelerated video card – a vast number of Windows titles. However, there is cause for hope that this is achievable. The missing component is the virtual Voodoo2 device, a device already available in Boch and jDosBox. However, both these two emulators are much slower for different reasons, as compared to DosBox, and have not been designed for running games efficiently. If it was simple to design an emulator for gaming, as DosBox has, then others would have done so. Therefore, we could assume that Bochs or jDosBox could not easily achieve this goal, even though they both have a working virtual Voodoo2 device in software mode and a functioning virtual hard disk controller (IDE).
The other problem is that these virtual Voodoo2 devices do not run in Windows 9x, but require a Windows NT class system or higher. If this and the virtual IDE were ported from jDosBox to DosBox, then this class of operating systems may boot inside DosBox. Also, Voodoo2 would allow support for Warcraft 3 and many other Direct3d/OpenGL games. It would be a flood of Windows games supported by the DosBox platform. This solution would serve the advanced computer user.
But, there is ReactOS, an open source operating system, much like FreeDOS. FreeDOS is already used and distributed via DosBox. The same could be done with ReactOS, so the user has a ready-made Windows compatible system. The user would mount a CD of a game, install, and then play. Also, ReactOS has ported much of the Wine libraries so the gaming compatibility would depend merely on the limitations of the Voodoo2, both in its Direct3d capability and its video memory. I hope to boot ReactOS in Daum’s build of Dosbox without the fully functioning hard disk controller. The other missing component will be the virtual Voodoo2 device which is just one port away, from either Bochs or jDosBox to DosBox. It reportedly was an effort of just one developer to port this device to jDosBox, and so we should hope the same for DosBox. The above is why kekko’s patch is so crucial for Windows gaming.
Edits: updated to show that DirectX5/6/7 will run in the above configuration; also, Direct3D5/6. The graphical artifact is likely an issue with ATI OpenGL support for my specific card.