<< Newer Article #135 Older >>

If it ain’t broke…

And yet another long period of radio silence comes to an end.

In the past few months, I've been busy "fixing" things that didn't appear to be broken (i.e., the memory system). And putting it all back together again so that thousands of games that used to work still do. Ah, what fun.

But I'm not finished yet (don't worry, MESS devs, you can relax)!

I've never been quite happy with how the Voodoo emulation code ended up. It's a pretty big system to emulate, and in order to get things working quickly, I took several shortcuts. I ignored a few features (detail textures, trilinear filtering, alpha buffers), simplified the math (using floating point, even though the original works in fixed point), cheated on the PCI interface (did not fully emulate the FIFOs), and faked the timing (completely ignored it, that is). This was expedient toward getting the first games up and running, but now it's time to go back and do it right.

So I'm rewriting everything from scratch.

Fortunately, I'm mostly done. I still have to add fogging, fix a few precision issues with far-away textures, and correct a few other glitches before it's ready. But the code is much simpler and better organized, and operates more closely to the original. Which brings up another point: I recently acquired a Voodoo 2 card for my "oldie" PC (thanks, Tim!), which I'm using to verify some of the behaviors. Although I won't claim perfect pixel accuracy, this new version should be much closer.

The new Voodoo will be in in time for 0.102u2, but Voodoo 2 emulation is completely busted at the moment and will have to be brought up to the new system afterwards. One step at a time....