Super Metroid runs natively on the Game Boy Advance at 60fps, with no emulator involved
A new port compiles the SNES game's decompiled C for the GBA's ARM CPU. You build the cartridge from your own ROM, and a few effects had to be approximated.
AI-drafted from 4 sources. This story was written with AI from the outside reporting listed under Sources, and checked by automated tools before it went up. The originals have the full detail.
Super Metroid now runs on the Game Boy Advance as native code. Nick Desaulniers published version 0.1 of the port on 26 October, and a GBAtemp post shared it on 31 October. The README says every room runs at 60 frames per second on the GBA's 16.8 MHz CPU, a chip it says has no time to spare for an emulator.
How it works
The heavy lifting came first, from the snesrev/sm project, which rewrote the whole game as C and checks that code against the original frame by frame. Desaulniers compiles the game's logic for the GBA's ARM7TDMI and writes new code only where the game meets the hardware, meaning picture, sound, controls and memory.
The progress report walks through how that went. SNES layers become GBA tiled backgrounds, Mode 7 becomes the GBA's affine background, and the mid-screen register tricks the game relies on become a stream of writes copied in before each line. The SNES sound driver runs on the GBA's CPU, with a mixer standing in for the sound chip. The toolchain is clang and lld, with no devkitARM or vendor SDK.
What is different on a GBA
The screen is the big one. The GBA shows 240x160 against the SNES's 256x224, so gameplay is a 1:1 crop that follows Samus vertically, while the title screen, menus and pause screen are squashed to fit. The controls follow Zero Mission and Fusion: A jumps, B shoots, L aims diagonally, R readies missiles and Samus always runs. Holding R and pressing Select cycles through the other items she has found.
Where it falls short
The 60fps claim is measured and comes with small print. As of 25 October all 255 rooms held 60fps when timed, and boss fights averaged 59.7. Kraid's worst second drops to 53, and pausing, a game over and the start of the escapes fall to around 40 for a second while scenes load. Doors are close to the original, with a median of 107 frames against 105.
Some effects are approximations. The GBA cannot subtract colours, so darkened rooms are not quite right, and bosses come out pale under the fog layer because the GBA blends all sprites where the SNES blends only some. The report also admits to an 8-bit hiss the SNES never had.
Getting it running
The repository holds none of Nintendo's code or data, so you need your own Japan/USA Super Metroid ROM. The release has three files, and one Python script combines the engine with your ROM into a cartridge of about 5.2 MB. That plays in mGBA or another GBA emulator, or on a flash cartridge such as an EverDrive or EZ-Flash. The port is under the decompilation's MIT licence.
The report says the job took six days and about 150 commits, from a black screen to the whole game, and the credits list Claude Opus 5.5 as co-author of every commit. The repository also carries a porting guide, written for agents and people, for anyone who wants to try the same thing with another SNES game.
Sources
- Super Metroid for the Game Boy Advance (GitHub)
- Release v0.1 (GitHub)
- Super Metroid GBA Progress Report: October 2026 (GitHub)
- Super Metroid (SNES) for GBA decomp port by nickdesaulniers (GBAtemp)
Image: Image: nickdesaulniers/sm