N64Recomp-XGitHub
IN DEVELOPMENTOpen source · 0.1.0-dev

N64 games.Native on Xbox.

N64Recomp-X recompiles your own ROM into a real Xbox program, built for its Pentium III, drawn on its NV2A, played through its AC97. Not an emulator. Drop in a ROM, and in about a minute it's ready for your Xbox.

View on GitHub Download SOON

Bring your own ROM · Windows, macOS & Linux · MIT licensed

TechProGabe Presents✕ N64Recomp-X 0.1.0-dev
Now starting
Super Mario 64
NSME · USA · 1.08 MB · built into this XBE SHA-1 verified
Loading codestep 3 of 4
Video: 720p 16:9Hold L R for 480iHold BACK for settings
LIVEThe loading screen every game gets on the console
games build from the ROM alone
245/246
present frames in the library sweep
163
widescreen output, every game
720p
from ROM to Xbox-ready folder
1–3min
HOW IT WORKS

Not an emulator.
A recompiler.

An emulator pretends to be an N64 one instruction at a time, and a 733 MHz Xbox struggles to keep up. N64Recomp-X translates the whole game ahead of time into native code, then swaps the N64's operating system, graphics and audio for code written for the Xbox itself.

  1. ROMYour ROMYour own cartridge dump, read where it sits. Never uploaded.
  2. RECOMPRecompileN64Recomp turns the game’s MIPS code into C, function by function.
  3. COMPILECompileLLVM builds that C for the Xbox’s Pentium III.
  4. XBELinkJoined to the runtime: the N64’s OS, graphics, audio and saves, rewritten for Xbox.
  5. XBOXPlayOne folder. Copy it over, start default.xbe.
MIPSfrom your ROM
addiu  sp, sp, -0x18sw     ra, 0x14(sp)jal    osCreateThreadlui    a0, 0x8033
CN64Recomp
ctx->r29 = ADD32(ctx->r29, -0x18);MEM_W(0x14, ctx->r29) = ctx->r31;ctx->r4 = S32(0x8033 << 16);osCreateThread_recomp(rdram, ctx);
x86Pentium III
add   dword [esi+0xE8], -0x18mov   eax, [esi+0xF8]mov   ecx, [esi+0xE8]mov   [ebx+ecx+0x14], eaxmov   dword [esi+0x20], 0x80330000call  osCreateThread_recomp

Illustrative. The real output is the whole game: thousands of functions, compiled once on your computer.

Native speed

No interpreter loop in the way. The game's code runs as Pentium III code, at the game's own frame rate.

From the ROM alone

No decompilation and no per-game files. It finds the game's code, segments and libultra calls by itself.

Drawn on Xbox hardware

Display lists rendered on the NV2A, audio mixed through the AC97, up to 720p and widescreen.

THREE STEPS

Drop. Build.
Play on your Xbox.

One small app for Windows, macOS and Linux. No toolchain to set up, no config files, no per-game patches to hunt down.

Prefer a terminal?

The app drives n64rx, a command-line tool that does the same job. doctor checks your setup and can install the toolchain for you.

$ n64rx doctor
$ n64rx info  "Super Mario 64 (USA).z64"
$ n64rx build "Super Mario 64 (USA).z64"
$ n64rx deploy "out/Super Mario 64" --ftp 192.168.1.42
COMPATIBILITY

Real hardware,
or it doesn't count.

Every game has a tier, and only a run on a real Xbox moves a game up. Emulator results don't count. The list grows with every console session.

GOLD4

Fully working

Played start to finish on a real Xbox. Picture, sound, saves, controls and frame rate right.

SILVER5

Playable

Played on a real Xbox. Known bugs, none that stop the game.

EXPERIMENTAL∞

Everything else

May boot, run partly, or not at all. Only a console run moves a game up.

  • NSME

    Super Mario 64

    29.9 fps, works perfectly

    GOLD
  • NALE

    Super Smash Bros.

    Perfect at 59.9 fps

    GOLD
  • NPWE

    Pilotwings 64

    Sound, EEPROM saves, 53–59 fps

    GOLD
  • NDYE

    Diddy Kong Racing

    Works perfectly

    GOLD
  • NKTE

    Mario Kart 64

    Races at 29.9 fps, Controller Pak

    SILVER
  • NGEE

    GoldenEye 007

    Works very well, 59.5 fps menus

    SILVER
  • NBKE

    Banjo-Kazooie

    Plays at ~30 fps

    SILVER
  • CZLE

    Ocarina of Time

    Plays at its own 20 fps

    SILVER
  • ND4E

    Castlevania: Legacy of Darkness

    Playable, texture issues

    SILVER
  • CLBE

    Mario Party

    Board fix staged

    EXPERIMENTAL
  • NPFE

    Pokémon Snap

    Runs the Beach course

    EXPERIMENTAL
  • NZSE

    Majora's Mask

    Boot fix staged

    EXPERIMENTAL
  • NK4E

    Kirby 64

    Title screen right

    EXPERIMENTAL
  • NM8E

    Mario Tennis

    Matches play

    EXPERIMENTAL
  • NJFE

    Jet Force Gemini

    Menus draw

    EXPERIMENTAL
  • NFXE

    Star Fox 64

    Through its intro

    EXPERIMENTAL
  • NPDE

    Perfect Dark

    Past its boot

    EXPERIMENTAL
  • NMQE

    Paper Mario

    Past copy protection

    EXPERIMENTAL
THE WHOLE LIBRARY

245 of 246 games build from the ROM alone.

Each square is one game from the latest library sweep. 163 already put frames on screen in an emulator; the console decides the rest.

Full list
  • Gold 4
  • Silver 5
  • Shows frames (emulator) 154
  • Builds 82
  • Not yet 1
ON THE XBOX

Feels like it
shipped on Xbox.

Every game gets the same port: a loading screen, HD output, a settings menu over the paused game, and a way home from anywhere.

Up to 720p and widescreen

Every game, not just the famous ones. 480i, 480p or 720p, 4:3 or a true 16:9 that shows more of the world.

A way home from anywhere

  • L+R+BACK+BLACKBack to the dashboard, anywhere
  • L+R+BACK+WHITERestart the game, anywhere
  • L+RHeld while it loads: safe 480i video

Saves and Paks

Game saves and Controller Paks live on the Xbox hard disk. Rumble Pak support, set per controller port.

Stock 64 MB console

Built for an unmodified 733 MHz, 64 MB Xbox that can run homebrew. Timing follows the video signal, so faster CPUs only add headroom.

One file per game

Your ROM lives inside default.xbe and is checked by SHA-1 every time it starts. Copy it, FTP it, or burn the ISO.

BRING YOUR OWN ROM

Nothing leaves your machine
except what you send to your Xbox.

  • Your ROM stays yours

    Read where it sits, built on your machine. The tool uploads nothing to anyone.

  • No game ships here

    No game code, data or built XBE is ever published by this project.

  • Only to your Xbox

    Send to Xbox copies the game folder to your console over your own network.

FAQ

Questions, answered.

Is this an emulator?

No. It is static recompilation: the game’s MIPS code is translated to C and compiled for the Xbox’s Pentium III once, on your computer. The N64’s operating system, graphics and audio are replaced by code written for the Xbox. What runs on the console is a native program.

What Xbox do I need?

An original Xbox (2001) that can run homebrew, softmodded or modchipped. A stock 64 MB console is the target; no RAM or CPU upgrade is needed.

Where do the games come from?

From you. N64Recomp-X includes no game code or data. You supply a ROM dumped from a cartridge you own, the build happens on your computer, and your ROM ends up inside the game’s default.xbe, checked by SHA-1 at every start.

Which games work?

Four games are Gold and five are Silver on real hardware today, and 245 of a 246-game library already build from the ROM alone. Every game has a tier, and only a console run moves a game up. The full list is in docs/compat.md.

When can I download it?

It is in active development and not released yet. You can run it from a checkout today (see the README). Packaged apps for Windows, macOS and Linux arrive with the first release. Star the repo to hear about it first.

Is it free?

Yes. MIT licensed and open source. It builds on N64Recomp, nxdk and LLVM, and shares its platform layer with Melee-X, OpenCrossing-Xbox and Wings64-X.

How can I help?

Reports from real consoles matter most, because they are what move games up a tier. Code, testing and game packs are welcome on GitHub.

More in the README on GitHub

Put the 64
in your Xbox.

Open source, free, and moving fast. Star the repo to follow along and be first to know when the app ships.