The whole getting-x-running-on-y thing is fun, but a lot of those challenges (getting Doom running on a lawnmower, etc.) seem kinda arbitrary. I mean, who’s going to actually play Doom on their lawnmower?* The idea of getting Super Mario 64 running on the original SNES, though, has a certain charm, not least because there’s a persistent rumor that Nintendo itself tried and failed to do this back in the day.
That hasn’t deterred a YouTuber by the name of Tobias Friedly, whose channel is called Game of Tobi, and who recently posted a video where he showed off a work-in-progress version of what he’s calling Super Mario FX—a nod to the rumored original project.
As one might deduce from the fact that Nintendo itself apparently gave up on the idea, this represents a heck of a technical challenge. The “64” in the name of the Nintendo 64 (and, indeed, of Super Mario 64) comes from the fact that the console used a 64-bit CPU. That CPU ran at 93.75 MHz, and operated in parallel with a dedicated coprocessor designed to handle the console’s sound and graphics output. The SNES, by contrast, was a 16-bit machine, running on an ancient 3.58 MHz CPU.
The N64’s 4 MB of unified RAM is oodles more than the SNES’s 256 KB, and the N64 is miles ahead of its predecessor in basically every other area you can think of. All of this is to say that—as one might expect from a machine that represented a two-generation step-up in architecture—the N64 runs rings around the SNES. So how on earth do you get a game like Super Mario 64 on a slow console that completely lacks any such 3D capability, being designed instead to run 2D, sprite-based titles?
Well, you don’t—not directly, anyway. Friedly’s Super Mario FX isn’t a direct port of Super Mario 64 because, for the reasons already discussed, that idea seems like a non-starter. Instead, Friedly simply wrote his own custom engine and then used that engine to run his rebuilt Super Mario 64’s levels, using the actual Super Mario 64 game assets to populate his creation.
But wait, how do you write a 3D engine for a CPU that runs at 3.75 MHz? Even Doom wasn’t fully 3D, and its minimum requirements were a 386 processor and 4MB of RAM. (And, trust me, it ran like poop on my 386 SX, which had a clock speed of 16 MHz; a 386 DX, at 40 MHz, was better, but really you wanted the recommended 486.)
Well, again, you don’t. Given that the SNES was a 16-bit console being released into a market already looking to 32-bit architectures and beyond, Nintendo clearly knew that the console would suffer from technological debt. One way it aimed to mitigate this problem was by designing it to make use of what it called enhancement chips. These were chips that could expand on the SNES’s basic hardware, and could take advantage of the console’s use of cartridges by being shipped with the games that required them.
One such chip was the Super FX, which was basically a coprocessor that allowed the console to produce rudimentary polygon-based 3D graphics without placing all the load on the console’s creaking CPU. You might argue that making use of this chip is kinda cheating, but legend has it the Super FX was originally designed to ship with a 3D Mario game for the SNES—it was even codenamed both “MARIO” and “Super Mario FX” while in development.
With that in mind, it seems fair to use it for this project. And wonder of wonders, Friedly’s Super Mario FX looks pretty playable. Friedly explains in the video that it’s not the Super FX’s performance that’s proved the biggest hurdle—instead, it’s the limitation on level and texture sizes, especially the former, which requires that levels be no larger than 2 MB. Still, it’s recognizably Super Mario 64, and that feels like an achievement in itself. Friedly plans to release the project when it’s done, so follow his channel if you’re interested in a piece of the action.
* Apologies to anyone currently playing Doom on a lawnmower; we intended no offense.