As previously mentioned, I’ve been taking a look at the 32X unit for the Megadrive, with a view to emulating it for MESS.
It’s got to the stage where a couple of games boot (mainly those which don’t really push the hardware, I haven’t emulated the DREQ DMA / FIFO etc.)
However, I’ve also stumbled upon what appears to be a major issues. The MAME framework is too fundamentally flawed to actually emulate these things properly. Kolibri, one of the games that does boot requires very tight syncronization of the CPUs. Other non-MAME emulators appear to do 32X and SegaCD emulation by single-stepping the CPUs, thus giving near perfect syncronization, at no cost. In MAME this has a huge cost, to the point where forcing all the CPUs to run in single-step causes the entire thing to run at sub 5fps on a top-end Core2. Even just syncing on Command buffer reads / writes takes the framerate down to 50% during cutscenes, and kills performance on other games that don’t really need it as tight, but make frequent reads / writes.
There are a number of reasons for this, but none of which I can really work around. This leaves me with a situation where it’s not really clear what I can do. From what I’m told SegaCD requires even tighter sync than 32X, so getting a good level of compatibility is looking near on impossible. From what I gather the ‘issue’ isn’t even something which can be fixed in MAME as it stems from the very generic (and flexible) timer system, and the way it switches CPU & timer contexts. This isn’t a problem for dedicated emulators, as they can be coded around the emulation needs of very specific pieces of hardware.
Here are some pretty screenshots from some games that do boot (no 32x sound at the moment) but as far as progress goes, this project is starting to look doomed. This doesn’t really bode well for the future of MESS in general either, as console games tend to abuse hardware far more than their arcade counterparts.
Doom




Kolibri




Pitfall
