Extending the demo: Super Magnetic Neo (Dreamcast)
Taking control of a non-interactive demo disc
Super Magnetic Neo is a 3D platformer for the Dreamcast from Genki. The gimmick is that your character has magnetic abilities. You’re meant to activate the “North” magnetic field to interact with some obstacles and enemies, and to activate the “South” field for others.
Japanese Dreamcast owners got an early preview of Super Magnetic Niu Niu: the Super Magnetic Niu Niu Promotion Disc was published in late 1999. It advertises itself as a non-interactive demo. And indeed, when you start it up, you see a movie followed by auto demos of the first few stages.
As is often the case, it’s possible to modify the auto demo to make it playable. Furthermore, the disc doesn’t just have a few stages; it’s based on a full build of the game. It’s from 1999-10-29, several weeks before the final version (from 1999-12-13).
You can get a patch that lets you explore this prototype from SegaXtreme. Below are details on what’s notable in this version of the game and how the patch works.
Prototype differences
Some things are disabled for the prototype – the code for pausing is present, but it’s not hooked up. The HUD is missing as well.
Other things are unfinished. For example, the Game Over is broken. The graphics don’t load, and if you press Continue, nothing happens.
Some of the levels are incomplete, like the challenge stage below. It’s supposed to let you travel upward, but the necessary magnets aren’t present:
It’s impossible to make it to the fourth boss encounter, because the last zip line is missing. Notice also that the textures for the platform look like Lego in the prototype demo, but they’re solid colors in the final release:
Other stages have minor alterations, like the final boss’s — in the prototype demo it has an electric fence keeping you in the arena. In the final game it’s an iron gate:
There are lots of other changes, too! Is there a Super Magnetic Neo fandom? Invite me to your Discord; I’ll help document them all…
Technical details
The function at 8c01a8c0 initializes the game engine before auto demo starts. It’s got logic that looks like this pseudo-Python:
system_flags_8c37d330 = 0x1000000
demo_index = (demo_index + 1) & 3
lives_count_8c37d33c = 0
world_id_8c37d334 = demo_table_8c0a4b14[demo_index][0]
stage_id_8c37d336 = demo_table_8c0a4b14[demo_index][1]That is, it:
Sets a bit on a 4-byte flag field.
Advances the auto demo index (wrapping around to 0 after 3).
Gives Neo zero lives.
Reads from a table that defines which world and stage to load for each auto demo.
The flag field determines whether Neo is under the control of player inputs or the scripted auto demo inputs.
By nullifying the write to that field, we can control Neo:
8c01a91e nop # Don't write to the flag fieldThat lets us play the four stages used for the auto demos. But because the demo index wraps around, they repeat after that. Two more null operations fix this:
8c01a92c nop # Don't AND with 0x03
8c01ab66 nop # Don't wrap around to 0x00The next issue is the table of world and stage values. My original plan was to copy all of the values from the final version into it, thus making everything playable. But I ran out of space – immediately following the table in memory is a function that’s needed to make the title screen work.
My very hack-y fix was to make the game skip the title screen. The value at 8c369104 controls which screen is active. This patch skips the title screen’s ID and uses the auto demo’s ID instead:
8c018146 mov 0xa,r13 # Load 0xa into r13Now the title screen code is unused, meaning it can be overwritten with more stage data.
One more fix: since the continue screen is broken (see above), I got rid of the “lose a life” logic. Now you’ll never run out:
8c067aaa nop # Don't subtract lives
8c01a992 nop # Don't reset the life countWith those changes, you can play a pretty good chunk of the game! Completing a stage takes you directly to the next one, rather than to the hub world. With memory editing you can skip ahead by setting 8c3690f7 to 0x01.
Outro
If you’re interested in video game prototypes and efforts to preserve them, check out the Hidden Palace Podcast. I host the latest episode, which covers a canceled Genesis game; scene releases; and the excitement that surrounded 2019’s “Sonic Month.”
For previous explorations in demo disc liberation, see my archive here on Substack. And to get new retro game reverse engineering articles every week, subscribe to the newsletter version of Rings of Saturn:








