First post, by kjliew
Looking at how DOSBox & QEMU revive the 3Dfx Glide accelerated games on modern system & OS, I was thinking if the same can be done for PowerVR native SGL games for DOS and Win9x. From the technical perspective, PowerVR PCX2 add-in card has an advantage over 3Dfx in emulation due to the headless architecture of PowerVR 3D rendering. Unlike 3Dfx hardware where they lived into the era of Win2k/WinXP, PowerVR PCX2 were dead after Win9x. Drivers support were only available on Win9x. So this makes perfect sense for DOSBox or QEMU running DOS/Win9x to revive PowerVR SGL games on modern system & OS, such as Windows 10 and Linux x64. There are several ways of achieving that vary in difficulties.
1. PowerVR SGL wrappers
Tuxality used to work on this, but I couldn't find anything to download from his website for the wrappers. This is the least resistance path to achieve the goal as the wrappers would have done all the heavy lifting of emulating the PowerVR SGL APIs. It should be comparatively easier to implement the stubs in DOSBox & QEMU to pass-through the APIs from guest into host. This does not require real PowerVR hardware. Glancing through the thread where Tuxality was actively developing the wrappers, it seemed that he was also stumbled on PowerVR titles that absolutely required Win9x to work, such as Mechwarrior 2 31st. If someone can point me to the last working version of Tuxality PowerVR SGL wrappers, then I would consider working on the the pass-through stubs for QEMU. I am a long-time fan of Mechwarrior 2 31st. This would pretty much give enough motivation for me get to play the game in PowerVR SGL version, which is highly claimed to be the best version. Tomb Raider 1 would come next on my mind.
2. PowerVR PCX2 PCI pass-through
From emulation perspective, this is highly doable. In fact, with the headless architecture it is possible to get the real PowerVR PCX2 render into the framebuffer of emulated display adapters in DOSBox & QEMU. Guest to host address mapping can be done on-the-fly behind the scene within DOSBox & QEMU. The PowerVR drivers running on guest OS would have its guest address programming intercepted and translated into host address, so the hardware can render directly into host physical memory. Official chip datasheet/programmer's manual for PowerVR PCX2 would really help to get this done correctly. Otherwise, reverse engineering can be done to log and trace very writes into the PCI apertures of the hardware and slowly figuring out the patterns of memory address programming. Unfortunately, this requires real PowerVR PCX2 hardware, and they have become really rare and expensive to acquire.
3. PowerVR PCX2 chip emulation
OK the last resort is obviously to do everything in emulation, similar to kekko voodoo1 chip emulation in DOSBox. This is nearly impossible to do without proper technical documentation. And, AFAIK there isn't any hardware documentation available today which describes the register level details of the PowerVR PCX2 chip.
I don't have PowerVR PCX2 hardware at my disposal. I can't work on #2 unless someone can help me to acquire one. I hope I can start working on #1 on QEMU if I can get my hand on the wrappers that Tuxality used to work on. My initial goal is to bring Mechwarrior 2 31st and Tomb Raider 1 to life. Once we get there, then we can see which PowerVR native titles to work on.
Please help to keep the discussion on-topic. There is no point to discuss PowerVR games through miniGL or Direct3D as those can always be played or easily made to play on modern OS, or games that support native PowerVR SGL, but also have very good 3Dfx Glide/Direct3D options, for eg. Turok 1.
Feel free to share any ideas on bringing PowerVR SGL games to life on modern system & OS.