
The impossible port: Super Mario 64 on the Game Boy Advance
A software developer’s working on a port of Super Mario 64 for the Game Boy Advance in his spare time. The motivation behind this seemingly impossible endeavour? To prove it really can be done.
Super Mario 64 is a milestone in gaming history. In 1996, the revolutionary platformer succeeded in translating the classic jump 'n' run gameplay of 2D Mario games into the third dimension. Its intuitive controls in 3D space and beautiful 3D graphics left Nintendo lovers’ jaws on the floor.

Source: Nintendo
Software developer Joshua Barretto has made it his mission to port the legendary 3D game to the Game Boy Advance (GBA). All on a system with no dedicated 3D hardware, lacking the necessary computing power to display the game’s complex landscapes and character models.
When Joshua announced the project, the GBA developer scene initially reacted with comments like «you’re crazy, it’s impossible». Now, he’s keen to prove that this impossible endeavour can somehow be done.
I spoke to Joshua about his motivation, the port’s technical background and his future plans for the project.
The early prototype made quite the splash
Now almost 30 years old, Joshua’s been a Nintendo fan for a long time. In the early noughties, he was the proud owner of one of Nintendo’s iconic purple handhelds. Back then, he wished he could play Super Mario 64 on his GBA. Joshua recalls: «I even naively considered starting a petition for Nintendo to make a port.» Some twenty years later, Joshua’s made his dream of bringing Super Mario 64 to the GBA a reality.
On 8 May 2024, he published the first video of his Super Mario 64 for the GBA project on his YouTube channel. It shows the starting area of the game, complete with Peach’s castle and garden. There’s a little red triangle running and jumping around the place. The prototype runs at a low frame rate, with textures and geometry distorting the empty landscape into abstract works of art at the slightest movement. But the prototype works – including its collision and physics system.
The video spread quickly through the retro and GBA developer scene. Notably, the very scene that advised him against taking on the «impossible» project. Joshua was undeterred. In fact, the developers’ scepticism spurred him on: «I love suggesting and disproving hypotheses.»
Constant progress
For the next updates, Joshua concentrated on the character model and technical optimisations. The abstract triangle purporting to be Mario was no more. In his place, there was a «real» Mario bounding through the pixelated landscape (even if he hadn’t been animated yet, so was stuck exclusively in a T-pose). You could also explore the inside of Peach’s castle and the first level of the game. What’s more, the game ran considerably more smoothly. Joshua managed to get certain scenes in the game up to 30 FPS.
Joshua uses the programming language Rust for the project. He wrote the entire code from scratch, so, strictly speaking, the game isn’t a port – it’s a remake developed from scratch for the GBA. That said, given the technical limitations of the hardware, the term «demake» is more fitting.
According to Joshua, it’s incredibly difficult to develop such a complex 3D game from scratch for the GBA without a foundation. The hardware has numerous limitations that Joshua has to programme around. Plus, the GBA doesn’t support floating point numbers in its calculation logic, only whole numbers. The handheld doesn’t have any dedicated 3D hardware either, so everything has to be rendered pixel by pixel. This was also the case with games like Doom and Quake:
The low amount of RAM (32 KB fast memory, 256 KB slow memory) and the system’s weak computing power also cause problems: «The GBA is easily several thousand times slower than a current mid-range laptop.»
Joshua owes his wealth of expertise in GBA hardware to various pioneers in the GBA development scene: «I want to thank projects like OpenLara and people like 3DSage for showing the world what’s possible on the GBA with what we know today.»

Source: Shutterstock
Despite these obstacles, Joshua managed to make significant progress within a very short space of time. Almost a month after the project was launched, Mario was already running around the game world with real animations. The plumber had also re-learnt part of his moveset from the original game, including dives, forward and backward somersaults, long jumps and triple jumps. It looked a lot like the «real» game. And thanks to a number of background optimisations, the framerate was a good deal higher and more stable.
Current status and future plans
In the latest update, Joshua’s worked on some additional content. The game now features collectable stars and functioning doors that transport Mario to different levels. Mario’s also learnt extra moves (ground pound, wall sliding and wall jumping) and moves much more naturally through the game environment thanks to smoother animations and a better camera.
Joshua, however, isn’t quite satisfied yet: «The next step will be adding more complex elements such as opponents. But I’ll need to wait and see whether there’s room in the performance budget for them.»
Joshua’s still hard at work in the background, optimising the game in order to be able to incorporate further elements. The current Mario model consists of just 134 triangles, while the original on the N64 had a hefty 764 triangles. Joshua assures me that the current version of the game really does run on original GBA hardware: «It looks even better on the GBA because the LCD has a ghosting effect that makes consecutive frames blend together. The whole thing’s smoother as a result.»

Source: Joshua Barretto
Joshua’s intention, however, isn’t to replicate the complete Super Mario 64 game with all its levels and functions: «My goal is to prove that, in principle, it can be done.» If he’s successful, he could imagine writing a completely new 3D game for the GBA using the foundation that’s been laid: «I’m a big fan of open-world games, and I think that a large open world on the GBA would be an impressive demonstration of what the console can really do when pushed to its limits.»
Joshua’s especially keen on voxel engines, so he could envision working on a Minecraft demake for the GBA next. He’s already gained experience with open game worlds with voxel graphics. For some time now, he’s been working on the open-world RPG Veloren, which you can download for free on Windows, Mac and Linux.

Source: Joshua Barretto
It’s unlikely that Joshua will ever release his Super Mario 64 project: «Nintendo’s very protective of its intellectual property, so I can’t distribute anything that includes Nintendo assets. What I will do is clean up the source code and publish it so that other people can learn from it or compile the game to play it themselves.»
46 people like this article


My love of video games was unleashed at the tender age of five by the original Gameboy. Over the years, it's grown in leaps and bounds.