<< Newer Article #219 Older >>

Midway Zeus Progress

So I've been spending a good amount of time reverse engineering the Zeus chip's behavior. Thanks goes out to the folks who offered to loan me a Mortal Kombat 4 board. So far I haven't had to hack into it yet, but as I delve into some of the more esoteric behaviors of the chip, I suspect I will need to eventually. The board I've been loaned has at least been very helpful to understand what things are supposed to look like.

In the past few days I've finally figured a number of things out....

First off, textures now appear to be correct in most cases. It turns out there are a bunch of subtleties in the texture handling, including per-quad offsets, independent U and V coordinate scaling, ignoring the low address bit, determining when to make things transparent, etc. Getting these basics figured out means that the games are now respectable looking.

I knew Invasion ran on the same hardware as Mortal Kombat 4, but the way it handles models, textures, and interrupts was quite different. I think I've finally reconciled most of it, so the game boots, coins up, and plays, though there are still a bunch of models missing and glitches to figure out. I also need to hook up the light guns so you can actually try playing.

Even better, Mortal Kombat 4 is mostly playable, at slow speeds (no serious optimizations yet). Lots of glitches remain, but it fundamentally works, which is pretty thrilling given where I was a couple months ago.

As I've been figuring stuff out, I've been adding to the rapidly expanding Midway Zeus wiki page. This is pretty much a brain dump of how I understand the chip to work, and writing it down has helped me deduce a bunch of stuff.

Yet there are still a bunch more things to figure out, such as alpha blending effects, lighting, missing bits of models, extra vectors and matrices I don't understand, crashes, weird results, etc.

But in the meantime, enjoy some WIP screenshots of Mortal Kombat 4 and Invasion running in MAME.