Old Mega Drive things

Published on 2019-jan-17

I was reading a thread about SNES gurus on the NesDev forum and seeing people discuss about old timers got me thinking about how I've been around for much longer than it seems and how I seem to remember some stuff a lot of people have forgotten (granted, my memory is flaky so I also tend to screw up a lot).

Tripping into legacy cruft

You may be aware of the ROM padding article in this site, there's a reason behind it.

Some time ago last year I was talking to Drag00n (the Second Dimension guy) and he casually mentions that somebody reported some edge case bug with the SWITCH instruction that seemed to show up or go away depending on the surrounding code. Being the distraction machine I am, I end up interrupting whatever he was doing in order to figure out what was going on. Whatever.

Anyway, I convince him to load the ROM (expecting this to be a pain to figure out), and he says that Fusion just showed a blank screen and that the titlebar was garbled… and wait a minute, but the ROM header is right? And it was ASCII, so not an encoding issue. The game can't set the titlebar (Fusion takes it directly from the ROM header), so garbled text means that Fusion for some reason didn't load the ROM properly.

And then it hit me: Fusion ignores the file extension and tries to autodetect instead. If the ROM is not padded and the stars align just right, Fusion will misdetect it for being in SMD format (Super Magic Drive dump), which is split into blocks and interleaved and of course will result in a completely wrong ROM. This isn't unique to Fusion, I recall some flashcart loader having the same issue long ago. The easiest way to work around this is, of course, padding the ROM to a reasonable size.

I bet some of you are confused now: new people to the scene probably don't even know what SMD is, and older people will wonder why the heck would anybody use SMD these days. Thing is, Fusion had been around for long enough that SMD dumps were still relevant when it first came out, hence why those files are supported. Newer emulators indeed don't bother with it usually, but many people still use Fusion, so this issue still pops up every so often.

I only spotted this quickly because I had met this issue many years ago, otherwise it'd have been probably dismissed as something impossible to debug and just give up because any change would make it go away.

6MB ROM limit in Fusion

A much less known thing is that Fusion supports ROMs up to 6MB in size… from what I recall when talking with Steve Snake at least. He mentioned that for some reason emulators were supporting 6MB, but he had forgotten why. This was in the context of me using the Sega mapper to make a Sonic 3D hack larger than 4MB (since the ROM barely had any space left).

The only released game using the mapper was Super Street Fighter II, and that one is 5MB (and indeed, that's the maximum Regen supports). What's going on?

I'm going to take a wild guess here, but I think the issue may have been Sonic & Knuckles. See, the lock-on mechanism wasn't properly documented until recently, and while it's emulated nowadays, back then the common way to do lock-on was to literally append the locked-on ROM to Sonic & Knuckles. If you tried to do this with the largest games, the resulting file would be 6MB. Some emulators statically allocate the memory upfront and may blindly load the entire file as-is, so by making the limit 6MB they could ensure the merged ROMs worked (even if 2MB went ignored).

Other stuff

Part of the reason why I made this site is because there's some obscure stuff I know (like how the Mega Anser accessories work) that I don't want to get lost. Which is probably also why so far articles have been leaning towards the obscure stuff instead of the more basic things like sprites or scrolling (I really need to get more serious about that…).

Another example of stuff mostly forgotten is a few test ROMs from SOA's hardware R&D department (in large part because they aren't in no-intro…). A couple of them are for testing the Activator (and turns out there was an Activator command that had gone undocumented until not long ago), there's also a ROM for testing a "head mounted display" which presumably is the only trace left of the Sega VR (I can confirm there's something there, I need to finish looking into it), eventually I'll try to document both of those in this site. Game Toshokan has support for yet another peripheral in the modem port, albeit it's dummied out in the released version (as Game Toshokan shows an error message if there isn't a modem there, otherwise the code seems intact). Also buried in the Sega documentation is a mention of a "RAM disk", although sadly the only thing we have left from it is its peripheral ID (14 aka %1110).

There's probably more stuff to talk about, I'll try to get around it when I get time. A lot of stuff only comes back again after something unrelated happens to bring back the topic. You never know what may show up next!