Super Mario 64 ROM hack Last Impact is the sequel we never got

It's rare for a game to hold up so well that we still love playing it 20 years later. It's even rarer for a game to be so good that players are still modding it and creating levels for it. Doom is the shining example, but in the ROM hack community, there's another obvious choice: Super Mario 64.

Leaping around the Mushroom Kingdom still feels great, and even the blocky, low-res environments have aged gracefully thanks to their bold lines and bright colours. SM64 was Nintendo at its best, and 3D platformers have spent the last two decades trying to recapture its sublimity. The PC, sadly, has missed out on most of those contenders, like Ratchet & Clank and Banjo-Kazooie. Through the power of emulation, ROM hackers have rejuvenated the games of yesteryear, injecting new levels, new stories, and new life into the games we grew up with.

Kaze Emanuar has spent the last three years doing exactly that for Super Mario 64. From his Donkey Kong-64-inspired total conversion to his 3D take on Super Mario Run, Kaze is one of the most prominent hackers in the SM64 scene. His latest hack, Last Impact, is his most ambitious project yet. The product of more than 12 months and 4000 hours, Last Impact transforms SM64 into an entirely new experience, with 15 levels, 130 stars, and plenty of tricks up its sleeve. I've spent a few hours triple-jumping my way through it, and while it might not knock Miyamoto off his throne, it certainly makes a good go of it.

Mushroom Kingdom 2.0

Last Impact didn't make the best first impression. Stepping out of Peach's Castle into a fully refurbished Mushroom Kingdom, my first task was to save Peach from two Piranha Plants trapping her under a pagoda. Simple enough, except thanks to the new enemies’ wonky collision detection, I ended up dying twice trying to jump on the plants' heads. Mario himself wasn't making things any easier. His movement was stiff and belabored, reminding me that oh, right, the Mario of SM64 is a heavy dude. Unlike the lithe Lara Crofts and nimble assassins I've gotten used to in recent years, the portly plumber can be quite cumbersome to control. Even his later incarnations in Sunshine and Galaxy put more of a spring into his step. 

At least it didn't take long for me to get my Mario legs back. Leaping into the first level, a breezy valley filled with hallucinogenic cotton balls, I was soon racking up stars like I was seven again, a stupid grin plastered across my face. My smile began to slip as I butted heads with SM64's greatest enemy: its atrocious camera. Boy, I'd forgotten how finicky the damn thing was. Panning in 90-degree increments, alternating between zoom levels of too-close and too-far, constantly getting hung up on level geometry—it's tough to go back to. 

Worse, where SM64 would often switch to a fixed camera angle in cramped environments to avoid clipping through walls, Last Impact makes no such concession. One of the more egregious examples: when I was trying to climb a twisting set of narrow ramps, the camera gladly pointed itself at support columns, the sky, the underside of the floor—anywhere but at Mario. I lost count of the times I died climbing that thing to enemies I couldn't even see.

Thankfully, most levels account for the hostile camera by embracing the great outdoors. You've got the mandatory fire and ice world, a sun-baked beach overseen by a towering lighthouse, and my personal favorite: Super Sweet Sugarland, a level built out of donuts, marshmallows, cookies, and all manner of decadent candy. Waves of chocolate icing crash down the sides of a giant marble cake, sweeping you into the abyss if you're not moving fast enough. Find your old pal Yoshi, though, and you can hitch a ride on its back, gobbling up loose candy to provide ammunition for an egg-throwing special attack.

Yoshi is far from the only new trick Last Impact adds to Mario's toolset. Numerous power-ups from later Mario games have been retrofitted surprisingly well: the Fire Flower turns Mario into a walking flamethrower, while the F.L.U.D.D. serves as a watery jetpack. They're not quite 1:1 translations—Bee Mario cannot cling to honeycomb, for example—but they help distinguish Last Impact from the typical level-pack SM64 ROM hack.

When it comes to levels, Last Impact nails the sense of wonder in exploring a virtual space. Like SM64, there are plenty of hidden areas to uncover, with secret stars tucked away in alcoves only a perfectly-aimed wall-jump can reach, and bonus levels blocked by obstacles only the right power-up can overcome. My favorite moment involved climbing the back of an enormous stone snake as it wound its way up a ruined tower, jumping back and forth between it and the crumbling architecture while making sure never to look down. 

Just getting around the levels feels satisfying, too. The route to each star flows smoothly from one jump to the next, encouraging you to race through at full tilt for the sheer thrill of it. The Bowser stages in particular excel at this, offering multiple paths full of moving platforms and disappearing bridges that constantly drive you forward. And if you're shooting for a speedrun, there are plenty of shortcuts begging to be taken—provided you can pull off their almost frame-perfect timing.

Along with the new abilities and levels comes a horde of fresh enemies. Comet-hurling robots patrol a lunar space base. Giant spiders crawl through crystal caves. Fuzzy cotton balls float through the sky, causing Mario to trip out and see the world through a Daft-Punk lens if they touch him. 

Of course, the staples of SM64 are all here, too: Bowser battles, red-coin challenges, the wildly inaccurate Bob-omb cannons. The difficulty level, however, has been ramped up quite significantly. Instead of 8 segments of health, Mario only has 6, and falling foul of enemies or hazards hurts a lot more than it did in SM64; two hits from anything is usually enough to take you down. The level design doesn't pull any punches either. Bottomless pits and lava floors punish every misstep, while narrow platforms demand precision jumping SM64 reserved for only its toughest stars. I'm not going to lie: I saw the Game Over screen a half-dozen times in just the few hours I played.

Not all those deaths were my fault. I slammed into more than a few invisible walls as I was leaping about, plummeting into the void thanks to some funky collision detection. Surfaces that looked climbable proved otherwise, sending me skidding into the path of an angry Electro-Koopa. Ledges refused to be grabbed, enemies phased through my attacks, walls clipped me out of bounds and forced me to quit the entire level, losing precious progress. In moments like these, I could feel Last Impact's ambition grinding up against SM64's 20-year-old limitations.

It's within those limitations that Last Impact both soars and stumbles. Wind back the clock to 1997, and I could see it being the Majora's Mask to SM64's Ocarina of Time, pushing the engine as far as it will go before it starts pushing back. In 2016, though, Last Impact feels burdened by its heritage. Why didn't Kaze opt for a more versatile framework, whether it be Sunshine or Galaxy—both of which have robust rom hacking communities—or a ground-up build of his own 3D platformer in Unity? There was only one way to find out, so I got in touch with Kaze and asked him myself.

Programming like it’s 1996 

"I actually didn't care much for what was originally in SM64," Kaze told me over email. "The main reason I created the ROM hack in this engine is the way Mario's movement and the camera works in here. I love the complexity and the accuracy you can use with these physics... If you know how they work." Kaze pointed me to this video of a particularly talented SM64 speedrunner to illustrate his point. 

While researching Kaze’s previous work, I discovered a curious fact: that he built all his ROM hacks in assembly language, a low-level programming language rarely used these days. Coding in assembly is a laborious task, especially compared to modern languages, so I had to ask him: why had he chosen it?

"Coding in any high level language would just not be enjoyable to me," he explained. "I hate not being in control of what my code does and having to google stuff online instead of actually solving problems with logic." Digging deeper, Kaze revealed that he had written all 92,000 lines of Last Impact's ASM code by hand, eschewing the tools many ROM hackers use to convert languages like C to assembly for them. "If you have a problem with C code, you open google and see what to do to make the compiler work. But if you have a problem with ASM code, you open a debugger and use your brain - it actually puts YOU in control and not a compiler."

That control comes at a cost, one that I encountered in the form of invisible walls and unpredictable collision detection. I raised these bugs with Kaze, and while he lamented that he hadn't caught them all during testing, he also noted that they were inevitable given the way SM64's engine works. Collision errors have to be programmed around manually, and he doesn't have the vast resources of Nintendo at his disposal. Engine limitations were responsible for the frustrating camera, too. The locked camera I yearned for is far harder to program than the freely-rotating one, and it would have prevented players from exploring wherever they wanted. With numerous Easter eggs hidden in Last Impact's nooks and crannies, Kaze opted for the free camera to ensure players could find them all.

Thinking back on all my Game Overs, I asked Kaze what had motivated him to dial up the difficulty in Last Impact. "It's almost impossible to die of health loss in the original game," he replied, "so I decided to limit [Mario's] health to make health loss a threat. His breath is shortened in here, because it just fit the design of my water levels better." 

I couldn’t let Kaze go without mentioning one aspect of Last Impact that really struck a chord with me: its music. The tunes sound like they came from the B-side of SM64's soundtrack, both familiar and fresh at the same time. I asked Kaze how he had created them, and he explained how SM64 stores its music in a format similar to MIDI, with each audio track assigned an instrument from SM64's built-in library. By converting a regular MIDI to SM64's format, it will play the tune using SM64's string and percussion samples, creating new music that still feels in keeping with the original game. Kaze took advantage of this by porting music from other Nintendo properties like Zelda and Kirby, producing catchy tunes that differ enough from their originals to avoid feeling derivative.

Looking to the future, Kaze already has big things planned. "I was thinking of making another ROM hack with more Mario-esque visuals that would play like a mixture of Paper Mario, Ocarina of Time and Mario 64. It would be a platformer set in a huge, open world with multiple unlockable characters and badges, that you need to fulfill a bunch of different quests or to beat dungeons. The dungeons would mostly build on platforming, but also on puzzles to a small part."

Kaze's ambition is infectious, and after speaking with him, I'm even more impressed by what he was able to achieve with Last Impact. At the same, I can't help but feel it's a game bound by 20-year-old technology. Last Impact is the Super Mario 64 sequel we never got, and that's both its greatest triumph and its biggest burden.