Add Voodoo2 emulation for Qemu?
Moderators: Cat_7, Ronald P. Regensburg
-
- Mac Mechanic
- Posts: 178
- Joined: Sun Feb 07, 2016 4:40 pm
Add Voodoo2 emulation for Qemu?
Apparently, DOSBox has Voodoo2 emulation working, that translates Glide2 calls to OpenGL.
http://www.vogons.org/viewtopic.php?t=25888
http://dl.dropbox.com/u/7801769/DOSBox% ... _Intel.dmg
I wonder if we can use this with Qemu to emulate a Voodoo2 in OS 9?
Here are the diff's for it, but I'm not sure what version of DOSBox's source code they are build against.
DOSBox ?Windows?.
https://drive.google.com/open?id=0B9sU4 ... Hd6aUF6VjQ
DOSBox OS X:
https://drive.google.com/open?id=0B9sU4 ... GNWREt4Wm8
http://www.vogons.org/viewtopic.php?t=25888
http://dl.dropbox.com/u/7801769/DOSBox% ... _Intel.dmg
I wonder if we can use this with Qemu to emulate a Voodoo2 in OS 9?
Here are the diff's for it, but I'm not sure what version of DOSBox's source code they are build against.
DOSBox ?Windows?.
https://drive.google.com/open?id=0B9sU4 ... Hd6aUF6VjQ
DOSBox OS X:
https://drive.google.com/open?id=0B9sU4 ... GNWREt4Wm8
-
- Mac Mechanic
- Posts: 178
- Joined: Sun Feb 07, 2016 4:40 pm
Re: Add Voodoo2 emulation for Qemu?
Just looking at the code for DOSBox, it looks like it uses SDL for windowing and OpenGL calls to the host. So, I figured a good starting place would be to get a working SDL build of Qemu.
I tried first with the Qemu source from GitHub, but that built, but I got some crazy error when I run make install, about a missing file. Remembering that alex made an SDL build, I used his source linked in the mega thread, and it seemed to build fine with --enable-sdl --disable-cocoa in the configure script.
Now I have an SDL build, that supports screen scaling in windowed mode:
I guess that's the easy part, I've tried to apply the diff's to DosBox's latest SVN, but I get errors when I try and make it. Once I figure out how to get it to compile clean, I'll start to figure out how it does it's voodoo emulation, and how hard it will be to port to Qemu.
Here is an updated diff against the lastest SVN for DOSBox, still need to run the OS X diff linked in my first post.
https://drive.google.com/open?id=0B9sU4 ... VdiZFA5bWc
Just cd to the DOSBox source dir and run:
and:
I tried first with the Qemu source from GitHub, but that built, but I got some crazy error when I run make install, about a missing file. Remembering that alex made an SDL build, I used his source linked in the mega thread, and it seemed to build fine with --enable-sdl --disable-cocoa in the configure script.
Now I have an SDL build, that supports screen scaling in windowed mode:
I guess that's the easy part, I've tried to apply the diff's to DosBox's latest SVN, but I get errors when I try and make it. Once I figure out how to get it to compile clean, I'll start to figure out how it does it's voodoo emulation, and how hard it will be to port to Qemu.
Here is an updated diff against the lastest SVN for DOSBox, still need to run the OS X diff linked in my first post.
https://drive.google.com/open?id=0B9sU4 ... VdiZFA5bWc
Just cd to the DOSBox source dir and run:
Code: Select all
patch -p0 -i < voodoo_20160825.diff
Code: Select all
patch -p0 -i < voodoo_fix.diff
-
- Mac Mechanic
- Posts: 178
- Joined: Sun Feb 07, 2016 4:40 pm
Re: Add Voodoo2 emulation for Qemu?
Ok, so now I think the next step is to get the Voodoo2 to enumerate on the PCI Bus of the emulated mac, I found something interesting in the pic_database.c:
I wonder why there is a ATY, Rage128?
Anyway, I think the part I'm interested in is PCI_SUBCLASS_DISPLAY_3D, "3D display controller". I don't think the Voodoo2 was a VGA device, I think it just did VGA passthrough, tho I'm not sure what class of device it was, I think the subclass was "3D display controller".
Code: Select all
static const pci_dev_t vga_devices[] = {
{
PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RAGE128_PF,
NULL, "ATY", "ATY Rage128", "VGA\0",
0, 0, 0,
NULL, NULL,
},
{
PCI_VENDOR_ID_QEMU, PCI_DEVICE_ID_QEMU_VGA,
NULL, "QEMU,VGA", "Qemu VGA", "VGA\0",
0, 0, 0,
NULL, NULL,
},
{
0xFFFF, 0xFFFF,
NULL, NULL, NULL, NULL,
-1, -1, -1,
NULL, NULL,
},
};
static const struct pci_iface_t vga_iface[] = {
{
0x00, "VGA controller", NULL,
vga_devices, &vga_config_cb, NULL,
},
{
0x01, "8514 compatible controller", NULL,
NULL, NULL, NULL,
},
{
0xFF, NULL, NULL,
NULL, NULL, NULL,
},
};
static const pci_subclass_t displ_subclass[] = {
{
PCI_SUBCLASS_DISPLAY_VGA, "display controller",
NULL, NULL, vga_iface,
NULL, NULL,
},
{
PCI_SUBCLASS_DISPLAY_XGA, "XGA display controller",
NULL, NULL, NULL,
NULL, NULL,
},
{
PCI_SUBCLASS_DISPLAY_3D, "3D display controller",
NULL, NULL, NULL,
NULL, NULL,
},
{
PCI_SUBCLASS_DISPLAY_OTHER, "misc display controller",
NULL, NULL, NULL,
NULL, NULL,
},
{
0xFF, NULL,
NULL, NULL, NULL,
NULL, NULL,
},
};
Anyway, I think the part I'm interested in is PCI_SUBCLASS_DISPLAY_3D, "3D display controller". I don't think the Voodoo2 was a VGA device, I think it just did VGA passthrough, tho I'm not sure what class of device it was, I think the subclass was "3D display controller".
-
- Mac Mechanic
- Posts: 178
- Joined: Sun Feb 07, 2016 4:40 pm
Re: Add Voodoo2 emulation for Qemu?
hmmmmmm...................
The ATI Extensions didn't load, I'm sure the Startup would have bombed out if they did. I really still emulating the QEMU_VGA, I think I just changed the Vendor ID the Device ID and the name in the Device Tree, but that should have been enough to load the ATI Extensions?
It maybe easier to try and emulate the Rage 128, than the Voodoo2, I still have to track down the 3DFX Voodoo2 Extensions, they seem to be lost to the internet, and I'm unsure of the Class Type of a Voodoo2, but I have all that nice code from DOSBox, that gives the perimeters of the Voodoo2, and translates Glide calls from the Guest, to OpenGL calls for the Host.
However, I believe AMD released the Technical Documentation for the Rage Chips, and there are Open Source Linux driver for it, so maybe I can glean the info needed to emulate the Rage Chip, and the Rage Pro 128 has OpenGL drivers in OS X, and there are no drivers for the Voodoo.
The ATI Extensions didn't load, I'm sure the Startup would have bombed out if they did. I really still emulating the QEMU_VGA, I think I just changed the Vendor ID the Device ID and the name in the Device Tree, but that should have been enough to load the ATI Extensions?
It maybe easier to try and emulate the Rage 128, than the Voodoo2, I still have to track down the 3DFX Voodoo2 Extensions, they seem to be lost to the internet, and I'm unsure of the Class Type of a Voodoo2, but I have all that nice code from DOSBox, that gives the perimeters of the Voodoo2, and translates Glide calls from the Guest, to OpenGL calls for the Host.
However, I believe AMD released the Technical Documentation for the Rage Chips, and there are Open Source Linux driver for it, so maybe I can glean the info needed to emulate the Rage Chip, and the Rage Pro 128 has OpenGL drivers in OS X, and there are no drivers for the Voodoo.
-
- Mac Mechanic
- Posts: 178
- Joined: Sun Feb 07, 2016 4:40 pm
Re: Add Voodoo2 emulation for Qemu?
Hmmmmm.............
That's Panther( 10.3.9 ), I get some weird screen redraws, and the mouse pointer tends to disappear, but then I'm not emulating the Rage 128 chip, itself, I'm still emulating whatever GPU QEMU_VGA uses?
It's progress, none the less.
That's Panther( 10.3.9 ), I get some weird screen redraws, and the mouse pointer tends to disappear, but then I'm not emulating the Rage 128 chip, itself, I'm still emulating whatever GPU QEMU_VGA uses?
It's progress, none the less.
-
- Mac Mechanic
- Posts: 178
- Joined: Sun Feb 07, 2016 4:40 pm
Re: Add Voodoo2 emulation for Qemu?
Ok, I need to extract the NDRV from the Rage 128 Pro rom:
http://campahunta.free.fr/Downloads/ROM ... p_full.zip
I know it starts with:
But I don't know where it ends?
Alex?
http://campahunta.free.fr/Downloads/ROM ... p_full.zip
I know it starts with:
Code: Select all
Joy!peffpwpc.........
Alex?
-
- Tinkerer
- Posts: 92
- Joined: Sun Sep 28, 2014 11:53 am
Re: Add Voodoo2 emulation for Qemu?
There's another emulator that have the Voodoo 2 emulation. It's PCem that implement Voodoo/Voodoo 2 emulation on register level.
And, the Voodoo 2 Macintosh drivers can be found here: http://falconfly.de/voodoo2.htm
And, the Voodoo 2 Macintosh drivers can be found here: http://falconfly.de/voodoo2.htm
- adespoton
- Forum All-Star
- Posts: 4279
- Joined: Fri Nov 27, 2009 5:11 am
- Location: Emaculation.com
- Contact:
Re: Add Voodoo2 emulation for Qemu?
If you want software compatability, ATi Rage is the way to go, not Voodoo; a lot of 3D-dependent software from the OS 9-10.2 era depended explicitly on the Rage chipset, due to that being inside the iMac.
The best route forward is probably a Rage 128 -> OpenGL 1.2 emulation, if we can figure out how to pass that through to the host graphics subsystem; probably not a good idea to make it platform specific and have to maintain Mac/Win/Lin branches.
The best route forward is probably a Rage 128 -> OpenGL 1.2 emulation, if we can figure out how to pass that through to the host graphics subsystem; probably not a good idea to make it platform specific and have to maintain Mac/Win/Lin branches.
-
- Mac Mechanic
- Posts: 178
- Joined: Sun Feb 07, 2016 4:40 pm
Re: Add Voodoo2 emulation for Qemu?
Thanks, tho I may go the Rage/Radeon rout, once I get some preliminary support going, I'll revisit the Voodoo chipsets, as I love Glide.kikyoulinux wrote:There's another emulator that have the Voodoo 2 emulation. It's PCem that implement Voodoo/Voodoo 2 emulation on register level.
And, the Voodoo 2 Macintosh drivers can be found here: http://falconfly.de/voodoo2.htm
Last edited by darthnvader on Mon Feb 06, 2017 6:33 pm, edited 1 time in total.
-
- Mac Mechanic
- Posts: 178
- Joined: Sun Feb 07, 2016 4:40 pm
Re: Add Voodoo2 emulation for Qemu?
So far, my code changes to Qemu, should build on any platform. I'm going to try to just get SDL to pass the OpenGL calls to the Host, should work on all platforms.
I can't find the Rage Pro 128 documentation, ATI/AMD may have never released it, tho there is an open source Linux driver, so it maybe best to target the Readon 8500, as that is the last GPU that supports OS 9 and X, but I think it will be a lot harder than the Rage 128, so may more registers to write and debug.
I can't find the Rage Pro 128 documentation, ATI/AMD may have never released it, tho there is an open source Linux driver, so it maybe best to target the Readon 8500, as that is the last GPU that supports OS 9 and X, but I think it will be a lot harder than the Rage 128, so may more registers to write and debug.
-
- Mac Mechanic
- Posts: 178
- Joined: Sun Feb 07, 2016 4:40 pm
Re: Add Voodoo2 emulation for Qemu?
Hmmmmmmmmm............................................
Re: Add Voodoo2 emulation for Qemu?
So does Bochs, but it's not in the official binaries. The relevant patch is derived from DOSBox; perhaps whatever changes were made there would be useful here?kikyoulinux wrote:There's another emulator that have the Voodoo 2 emulation. It's PCem that implement Voodoo/Voodoo 2 emulation on register level.
-
- Mac Mechanic
- Posts: 178
- Joined: Sun Feb 07, 2016 4:40 pm
Re: Add Voodoo2 emulation for Qemu?
Likely would, I think Qemu uses the VGA code from Bochs.
Re: Add Voodoo2 emulation for Qemu?
At lot of work has been done in qemu to provide opengl to guests:
https://wiki.yoctoproject.org/wiki/Open ... gh_in_QEMU
https://www.kraxel.org/slides/qemu-opengl/
https://virgil3d.github.io/
source code: https://cgit.freedesktop.org/virglrenderer
best,
Cat_7
https://wiki.yoctoproject.org/wiki/Open ... gh_in_QEMU
https://www.kraxel.org/slides/qemu-opengl/
https://virgil3d.github.io/
source code: https://cgit.freedesktop.org/virglrenderer
best,
Cat_7
-
- Mac Mechanic
- Posts: 178
- Joined: Sun Feb 07, 2016 4:40 pm
Re: Add Voodoo2 emulation for Qemu?
I tried playing around with Bochs, to get an idea how Voodoo2 emulation works, but it's dog slow.
I mean, it was faster on my old Powermac 8600 with a 450 Mhz G3 upgrade card, 45 Mhz bus.
Even running Dos in Bochs is too slow, what a piece of crapware. I don't know what they did to Bochs in the last 15 years since I used it last, but I can't see how useful Voodoo emulation is supposed to be on a system that can only emulate an 8 Mhz cpu.
I mean, it was faster on my old Powermac 8600 with a 450 Mhz G3 upgrade card, 45 Mhz bus.
Even running Dos in Bochs is too slow, what a piece of crapware. I don't know what they did to Bochs in the last 15 years since I used it last, but I can't see how useful Voodoo emulation is supposed to be on a system that can only emulate an 8 Mhz cpu.
-
- Mac Mechanic
- Posts: 178
- Joined: Sun Feb 07, 2016 4:40 pm
Re: Add Voodoo2 emulation for Qemu?
I'm trying to work on the voodoo2, I've got it initializing in Open Firmware, and OS X can see it in the IOReg, but the drivers can't see the device in OS 9.
The System Profiler doesn't show the card in OS 9, or OS X, so I need to figure out why?
The System Profiler doesn't show the card in OS 9, or OS X, so I need to figure out why?
- adespoton
- Forum All-Star
- Posts: 4279
- Joined: Fri Nov 27, 2009 5:11 am
- Location: Emaculation.com
- Contact:
Re: Add Voodoo2 emulation for Qemu?
Which machine are you emulating in qemu?
-
- Mac Mechanic
- Posts: 178
- Joined: Sun Feb 07, 2016 4:40 pm
Re: Add Voodoo2 emulation for Qemu?
I'm emulating mac99, seems I need to set the subsystem-id, and maybe the sub-device-id, and sub-class id, for OS 9 to load the drivers.
Re: Add Voodoo2 emulation for Qemu?
It seems pcem emulates the Voodoo1 and 2:
https://bitbucket.org/pcem_emulator/pce ... at=default
Best,
Cat_7
https://bitbucket.org/pcem_emulator/pce ... at=default
Best,
Cat_7
-
- Mac Mechanic
- Posts: 178
- Joined: Sun Feb 07, 2016 4:40 pm
Re: Add Voodoo2 emulation for Qemu?
Hmmmm...............
I can't seem to understand where the NDRV is coming from in Qemu, I'm handing it the proper FCode rom, but somehow it's getting an NDRV, from somewhere other than the Rom file:
I can't seem to understand where the NDRV is coming from in Qemu, I'm handing it the proper FCode rom, but somehow it's getting an NDRV, from somewhere other than the Rom file:
- adespoton
- Forum All-Star
- Posts: 4279
- Joined: Fri Nov 27, 2009 5:11 am
- Location: Emaculation.com
- Contact:
Re: Add Voodoo2 emulation for Qemu?
Where are the VGA additions being injected? This could help answer the NDRV question. Could that area in the OpenBIOS also be where the NDRV data is being populated?
-
- Mac Mechanic
- Posts: 178
- Joined: Sun Feb 07, 2016 4:40 pm
Re: Add Voodoo2 emulation for Qemu?
I'm not sure what the question you're asking is.adespoton wrote:Where are the VGA additions being injected? This could help answer the NDRV question. Could that area in the OpenBIOS also be where the NDRV data is being populated?
Here's what I get when I try and load OS 9 with the Voodoo4 NDRV:
- adespoton
- Forum All-Star
- Posts: 4279
- Joined: Fri Nov 27, 2009 5:11 am
- Location: Emaculation.com
- Contact:
Re: Add Voodoo2 emulation for Qemu?
What I'm asking is up a layer from that... I'm wondering at what point the VGA patch injects into the OpenBIOS. I can probably find out by statically walking through the OpenBIOS code when I next get a chance. I just know that the VGA code is loaded as an entire object into memory, and this could be happening with the NDRV entry too, not during the regular load sequence.
-
- Mac Mechanic
- Posts: 178
- Joined: Sun Feb 07, 2016 4:40 pm
Re: Add Voodoo2 emulation for Qemu?
You lost me, it's a bit over my head.adespoton wrote:What I'm asking is up a layer from that... I'm wondering at what point the VGA patch injects into the OpenBIOS. I can probably find out by statically walking through the OpenBIOS code when I next get a chance. I just know that the VGA code is loaded as an entire object into memory, and this could be happening with the NDRV entry too, not during the regular load sequence.
Seems I can't access the Option Rom I'm injecting for the Voodoo5, PCI Peak gives me the Rom Address, 82010001, so the last bit is set, I do:
>swc 11804 6
Then drop into Macsbugs and try and dump the first 100 bytes of the Rom:
dm 82010000 100
But it returns an error that it can't read from that address?
http://mirror.informatimago.com/next/de ... n2000.html
Seems I'm not getting a proper Assigned-Adresses .property:
-
- Mac Mechanic
- Posts: 178
- Joined: Sun Feb 07, 2016 4:40 pm
Re: Add Voodoo2 emulation for Qemu?
Ok, it seems when I use the -device secondary-vga argument, that I use to init the Voodoo2, I'm able to read the Rom from the Voodoo5.