VOGONS


Voodoo4 M4800

Topic actions

Reply 80 of 99, by sdz

User metadata
Rank Member
Rank
Member

Some updates:

1. I got coreboot and SeaBIOS working on the machine with the V4 MXM card as the primary card. It's a long story, but basically I moved the VGA ROM execution from coreboot to SeaBIOS and axed the iGPU so that it isn't detected by SeaBIOS (which was way harder than I thought it would be) during init.
Installing XP fails with "System is not fully ACPI compliant". I found a few ACPI related issues and fixed them, but it still fails with that error.
98 freezes shorty during startup.
DOS and Linux work fine.

2. Managed to finally assemble a second card/laptop. Found a bug that wasn't present on the first card/laptop, most likely due to silicon variation and whatnot. Fixed that.
I'll probably assemble 3-4 more laptops/cards, just to be sure that everything is fine.

3. Found some FIFO related issues on the FPGA side and fixed them.

4. 1280x960 now works thanks to the timings provided by @3dfx_fan here: Lost Joker 2 - image shifted to the right

I'll start assembling all the documentation/files for this project, and if the next few laptops/cards work fine, I'll publish everything. Haven't tested the latest FPGA code on the eDP variant, but it likely still has issues.

Also made this in the meantime, currently testing it, but it seems to work fine:

The attachment 20250227_132041.webp is no longer available
The attachment 20250227_132057.webp is no longer available
The attachment 20250430_152026.jpg is no longer available
Last edited by sdz on 2025-04-30, 12:21. Edited 1 time in total.

Reply 81 of 99, by tehsiggi

User metadata
Rank Newbie
Rank
Newbie

Always lovely to see the results of your work sdz. Quick question from my end, how many layers do you use on your projects. I suppose this MXM one might use more due to the density?

Reply 82 of 99, by sdz

User metadata
Rank Member
Rank
Member

@tehsiggi Thank you!
You are right, due to the density of components, and the extra components so that this can work in an MXM slot, it has quite a few layers. The V3/V4/V5 MXM cards all use 12 layers.

Edit: For the V5, I would have used more, since there's the SLI/AA bus between the two VSAs, as well as the PCI bus, but JLCPCB can't do more than 12 layers @1.2mm thickness. It was a bit of a pain to route it.

The attachment S1B.jpg is no longer available
The attachment 20241205_152825.jpg is no longer available
The attachment 20241205_152849.jpg is no longer available

Reply 83 of 99, by tehsiggi

User metadata
Rank Newbie
Rank
Newbie

12 layers, that is quite hefty!

Given that the surface basically is covered with components, a logical choice.
Again very nice work. Looking forward to further updates!

Reply 84 of 99, by sdz

User metadata
Rank Member
Rank
Member

I managed to get XP working on the machine with coreboot/SeaBIOS and the V4 M4800 as the primary card:
-made a few more coreboot ACPI related patches
-used a newer XP acpi.sys
-modified the V4 M4800 so that IDSEL is connected to PCI AD16 instead of AD17. It was previously connected on AD17, because with the original BIOS and XP installed, the card would not work on AD16, resource conflict error.
All of the above were needed to get rid of the "non ACPI compliant system" error.

The attachment 20250430_215303.jpg is no longer available
The attachment 20250430_222644.jpg is no longer available
The attachment 20250430_215523.jpg is no longer available
The attachment 20250430_215834.jpg is no longer available
The attachment 20250430_222748.jpg is no longer available

At the moment, XP, DOS, Linux work.
Windows 98 is still very much broken.

Reply 85 of 99, by sdz

User metadata
Rank Member
Rank
Member

Managed to get Windows98 working on the machine.
It was freezing up when loading himem.sys. I removed the /M:1 switch from config.sys DEVICE=C:\WINDOWS\HIMEM.SYS /M:1 /V -> DEVICE=C:\WINDOWS\HIMEM.SYS /V and now it boots.
Currently running from an USB stick (with a a pimped up 98 image kindly provided by Omores https://www.youtube.com/@O_mores ).

Coreboot doesn't have support for legacy mode on the QM87/Lynxpoint chipset, it's AHCI only. I made a coreboot patch and forced the SATA controller to be initialized in Legacy mode only. It kinda works, as can be seen from Linux:

The attachment S1.jpg is no longer available
The attachment S2.jpg is no longer available

In legacy mode, only 4 ports are available, as compared to 6 in AHCI mode. Luckily, it's not a big deal, the only SATA port that won't work in Legacy mode is routed to the mSATA slot. The internal 2.5" drive and ODD will (should) work.

Currently, it fails to detect anything except the ODD, so it needs further investigation.

The attachment S3.jpg is no longer available

Anyway, here it is, booted from an USB drive (haven't installed the V4 driver yet) :

The attachment S4.jpg is no longer available

Reply 86 of 99, by sdz

User metadata
Rank Member
Rank
Member

After installing the driver (latest official 3dfx non beta and amigamerlin 2.9), the card would not work properly.

The attachment S1.jpeg is no longer available

While I am killing the iGPU from the SeaBIOS payload, and it isn't detected at all in Linux or Windows XP, it seems Windows 98 somehow brings it back to life. Removed the iGPU from device manager, and:

The attachment S2.jpeg is no longer available

Now, the system would start up in 640x480, 16 colors. Attempting to change the resolution/color depth would result in:

The attachment 20250503_130348.jpg is no longer available

Tried different monitor drivers, no change.

Removed the card from the laptop and plugged it into an MXM to PCIe adapter, and that into a PCIe to MXM extender (basically the same thing as the card plugged into the laptop) so that I can have access to the VGA port, and I "could" (will get back to this) change the resolution.

It would seem that under 98 and with the 98 3dfx drivers, it really doesn't like the EDID that's baked into the card (there's an EEPROM on the board that holds the EDID). It's an EDID I generated a while ago, and it works fine under XP. Shamelessly dumped the EDID from a random 1080p monitor I had on my desk, and wrote that to the flash.

Plugged the card back into the laptop, it picked up the new "Monitor", rebooted, and black screen. Removed the card again, let it boot via digital output and then plugged in the VGA (so it doesn't pick up the VGA monitor). For some reason, after it picks up the new EDID, it changes the video output to 800x600@85Hz. That won't work. Changed to 60Hz and plugged the card back into the laptop, and now I "could" change the resolution with the card plugged directly into the laptop and with image on the screen via the digital output.

Regarding the "could". On VGA and now on the digital video output, setting any color depth/resolution would work fine, as long as it was less than 1280x1024. As soon as I set 1280x1024 or above (regardless of color depth) it would do this (even after rebooting):

The attachment 20250503_182507.jpg is no longer available

Tried a couple of drivers, they all behaved the same. Changing the VSA framebuffer size from 64MB to 32MB fixed it. I have no clue why with 64MB FB size, when setting a resolution >= 1280x1024, explorer.exe crashes.

After wasting the entire day on this, behold the glorious 1920 × 1080, on W98, with the V4 as the primary card (still booted from an USB key):

The attachment 20250503_213800.jpg is no longer available

Reply 87 of 99, by sdz

User metadata
Rank Member
Rank
Member

And some 3DMark2001SE under W98:

The attachment 20250503_225043.jpg is no longer available

Reply 88 of 99, by Tiido

User metadata
Rank l33t
Rank
l33t

As far as EDID + Win9x goes, I found that I needed to use EDID 1.3 in my experiments, at least with ATI drivers. Version 1.4 didn't get picked up properly, with missing display name and other things.

T-04YBSC, a new YMF71x based sound card & Official VOGONS thread about it
Newly made 4MB 60ns 30pin SIMMs ~
mida sa loed ? nagunii aru ei saa 😜

Reply 89 of 99, by sdz

User metadata
Rank Member
Rank
Member

@Tiido Thanks! I just checked, and EDID 1.3 is what I used. Maybe there's something else messed up there. I'll look into it after I fix the rest of the stuff that isn't working...

Just plugged a SATA SSD in the optical drive slot, and it does work, in legacy mode. So the patch I made does indeed initialize the SATA controller in legacy mode, but only 1 port currently works. Maybe I messed something up in the port mapping.

The attachment Screenshot 2025-05-04 181230.png is no longer available

Reply 90 of 99, by sdz

User metadata
Rank Member
Rank
Member

Had a really nasty surprise yesterday, when I started the laptop without the EHCI console connected (to see coreboot log). It would fail to boot any OS. No signs of life whatsoever. Connecting the console to get some coreboot output would make the system work.
Initially, I was disabling the iGPU from the SeaBIOS payload, and it worked. Made a patch to kill it from coreboot, and the system started without the debug console connected. XP and Linux. Windows 98 would just boot loop. Made a couple more patches, killing the iGPU in other places in the boot, same thing.
The problem was from mrc.bin (a binary blob from intel, memory reference code). It handles things like reading SPD, memory training etc. But, it also does PCI enumeration, and if it detects a VGA card in the PEG slot, it will disable the iGPU. With the EHCI console disconnected, it would not detect the V4 card (I did try adding a significant delay before it reaches that point, did not help) and it would reserve memory for the iGPU.
Even if I disabled the iGPU later in coreboot (which I did), that memory would still be reserved and caused W98 to boot loop.

So I killed the iGPU right after the chipset BARs are set up and before mrc.bin runs, so that it doesn't even see it. Now DOS/98/XP/Linux work, with or without the EHCI console connected.

Need to do some code cleanup now, as I don't need a lot of the changes I did before.

Reply 91 of 99, by sdz

User metadata
Rank Member
Rank
Member

Had no luck getting W98 working with the SATA controller in AHCI mode (it works with the original BIOS).

It does boot from the SSD with the controller in legacy mode, but I'm still unable to make any other port besides SATA #1 work.

The attachment 20250506_120106.jpg is no longer available

Reply 92 of 99, by digger

User metadata
Rank Oldbie
Rank
Oldbie
sdz wrote on 2025-05-06, 09:13:

Had no luck getting W98 working with the SATA controller in AHCI mode (it works with the original BIOS).

It does boot from the SSD with the controller in legacy mode, but I'm still unable to make any other port besides SATA #1 work.

Have you tried the Windows 9x AHCI driver by the late Rudolph R. Loew?

You can find it at his memorial site, or in the Internet Archive.

Reply 93 of 99, by sdz

User metadata
Rank Member
Rank
Member
digger wrote on 2025-05-06, 12:08:

Have you tried the Windows 9x AHCI driver by the late Rudolph R. Loew?
You can find it at his memorial site, or in the Internet Archive.

Yes, that's what I used for testing, and it works fine with the original BIOS.

After many hours of work.. SATA #1 shows some signs of life. With an old LITEON SSD connected:

The attachment S1.png is no longer available
The attachment S2.png is no longer available

45kB/s.

With a new Kingston SSD:

The attachment S3.png is no longer available
The attachment S4.png is no longer available
The attachment S5.png is no longer available

I think I will make a new thread regarding all this, and ask a mod to move some posts, as it seems quite off-topic for the Video section.

Reply 94 of 99, by sdz

User metadata
Rank Member
Rank
Member

This was not easy, but now the SATA controller in the QM87 is initialized in IDE mode and both SATA#0 (HDD BAY) and SATA#1 (ODD BAY) work (mostly) as they should.

SeaBIOS can now boot without issues from any of the two SATA devices:

The attachment 20250509_004649.jpg is no longer available

Both SATA devices are detected in Linux, and now the SSD connected to SATA#0 is stable, and it went from 45kB/s to 491.95MB/s.

The attachment Screenshot 2025-05-09 005945.png is no longer available

XP can be installed to the SSD connected to SATA#0 from the ODD connected to SATA#1. Also boots from the SSD@SATA#0 and detects the ODD@SATA#1:

The attachment 20250509_003439.jpg is no longer available

Windows98 boots from the SSD@SATA#0, but it doesn't detect the ODD@SATA#1, and something isn't quite right:

The attachment 20250509_005158.jpg is no longer available

Also made this:

The attachment 20250506_152926.jpg is no longer available

+10% FPS

Reply 95 of 99, by rasteri

User metadata
Rank Oldbie
Rank
Oldbie

Awesome!

(searches ebay for M4800s....)

Reply 96 of 99, by sdz

User metadata
Rank Member
Rank
Member

Got it working properly in Windows98, as well as XP/Linux:

The attachment 20250509_133925.jpg is no longer available

@rasteri
Thank you!

Might want to wait on those Dells a bit... For Windows XP only, and the original BIOS, it's pretty much perfect.

For coreboot/SeaBIOS with the V4 as a primary card and DOS/98/XP support, while what's important works now, there are still many issues to fix:
-new hardware revision to map IDSEL to AD16 and to connect a MCU GPIO to the FPGA. Needed, because of the image shifted to the right VSA bug under 2000/XP. At the moment, I have the fix applied in the FPGA, and under DOS/98, the image is shifted to the left 😀 . I'll implement a checkbox in the Control Panel app to enable/disable the fix.
-battery reporting doesn't work under any OS
-caps lock LED doesn't work under 98??
-it would be nice to have VGA output as well. There is a mux on the MB that is connected by the EC. The EC runs custom code... Need to figure out how to make it toggle that GPIO from coreboot via the LPC bus.
-USB doesn't work under 98.
-audio doesn't work and will not work under 98. Under XP, the card is detected, but doesn't play anything. I have no intention of fixing it and will axe it from the BIOS, and make a sound card that works under 98/XP/Linux and maybe DOS?
I don't know much about audio under DOS, but maybe YMF724/744/754/ with DSDMA could work?
-the card works fine under 98 and XP between 512x384@60 and 1920x1080@60, however, there are issues with 720x400@70. It works fine until the card gets warm, then the image gets messed up.
-Intel SpeedStep doesn't seem to work under XP, while it works fine under Linux, and probably 98 as well (judging by the fan speed).
-probably other stuff

I'll take a break for this, as this is pretty much all I have been doing for the last week.

Reply 97 of 99, by sdz

User metadata
Rank Member
Rank
Member

Regarding battery reporting.

I booted the laptop with the OEM BIOS, dumped, extracted and disassembled the ACPI tables. Those are huge. I grabbed parts that are necessary for EC, AC and battery support, then kept adding whatever dependencies those had. This is the "TL;DR" version, it was quite a hassle.

Got it working under Linux:

The attachment S3.jpg is no longer available
The attachment S4.png is no longer available

In Windows however, absolutely nothing. Neither in Windows XP or Windows 10. Spend the whole Sunday trying various things, and nothing. Read the ACPI standard regarding batteries and all that.
Well, it seems Windows is really picky about "OEM ID", "OEM Table ID" and/or "OEM Revision" in the DSDT header. Changed them to match the original Dell ones, and now it works fine under XP/10:

The attachment S2.JPG is no longer available

As for W98, I reinstalled it with ACPI instead of APM support.

The attachment 20250512_122042.jpg is no longer available
The attachment 20250512_122117.jpg is no longer available

It does "see" the battery support, but reads garbled data. Not too suprising, the ACPI implementation is surely way newer than what 98 expects. I'll keep 98 in APM mode, as there are some other issues in ACPI. At least there is an LED that blinks orange/red when the battery is low.

Reply 98 of 99, by adamnfs26

User metadata
Rank Newbie
Rank
Newbie

so why not open source this, id love to take on my voodoo 4s and make one my own , or sell a kit with just the fpga needed to make one.. or sell em for a resonalbe price ?

otehr wise ill just build a normal retro 3Dfx pc and all this work was for nothing

sdz wrote on 2024-05-30, 15:28:
MXM3.0/3.1 TYPE A VSA-100 video card, for finally making a laptop with 3dfx graphics. I'll document it here as I think it will […]
Show full quote

MXM3.0/3.1 TYPE A VSA-100 video card, for finally making a laptop with 3dfx graphics. I'll document it here as I think it will be quite interesting, it's not that straightforward shoving a VSA-100 into a laptop.

The attachment S1.jpg is no longer available
The attachment S2.jpg is no longer available
The attachment S3A.png is no longer available

The PCBs arrived yesterday, and they look great:

The attachment S4.jpg is no longer available
The attachment S6.jpg is no longer available

Reply 99 of 99, by Spitz

User metadata
Rank Member
Rank
Member

@sdz M-M-M-MONSTER great job! Is there anything I can support You with?

Well... I miss 80/90s ... End of story