OoT: Recompiled OoT: Recompiled, home

Static recompilation for Windows

The 1998 original, compiled to run on your machine.

Not an emulator. The machine code in your own cartridge ROM is translated into a native Windows executable and rendered on Direct3D 12 at your display's refresh rate.

Game clock
20 Hz
Presented at
Up to 240 Hz
Widescreen
Up to 21:9
Resolution
Matches your display
Lighting
Ray tracing
Lighting
Ambient occlusion

An AI assistant wrote much of the recompilation app's code. The planning, review, decisions, debugging and most of the testing are mine. More on how the recompilation app was built.

Emulator, decompilation, recompilation

Three ways to play it on a PC. This is the third.

An emulator imitates the console while the game runs. A decompilation port rebuilds the game from source code people rewrote by hand. OoT: Recompiled is neither of those: it is a recompilation, and only a recompilation, a PC port that translates the cartridge's own machine code ahead of time and compiles it into a native recompilation app. The other two are separate projects by other people, each very good at what it does, set beside it here so the differences are plain, and then comes what recompiling brings.

Other projects: Project64, Mupen64Plus, ares and more

An emulator

What runs
The cartridge's machine code, carried out by an imitation of the console's processor as the game reaches it.
While you play
The emulator imitates the processor, the graphics chip and the sound chip together, every frame.
Changing it
From outside the game: graphics plugins for resolution, texture packs, and patches or cheat codes.
Strong at
Almost any cartridge, on almost any computer, and true save states that copy the whole console.
Worth knowing
Imitating the hardware takes some of your computer's work, and enhancements come from outside the game, through plugins and patches.
From the cartridge to your screen
  1. Your ROM
  2. An imitation of the console
  3. Your screen

Other projects, such as Ship of Harkinian

A decompilation port

What runs
C source the community rewrote by hand, function by function, until it rebuilt the cartridge exactly, compiled for the PC.
While you play
A native recompilation app, with the game's art and sound read from an archive unpacked from your ROM.
Changing it
For programmers, anything: the source is readable C, so any part of the game can be rewritten.
Strong at
Mods, randomizers and a long list of enhancements, on several operating systems, from every NTSC and PAL version of the game.
Worth knowing
A port begins once a game's decompilation is finished, which takes years of careful work by many people.
From the cartridge to your screen
  1. Your ROM
  2. Unpacked into an archive
  3. Rewritten source, compiled
  4. Your screen

This recompilation app, OoT: Recompiled

A static recompilation

What runs
The cartridge's own machine code, translated into C ahead of time and compiled into a native recompilation app: 13,343 functions.
While you play
The game's code runs natively. Its drawing goes to RT64 on Direct3D 12, and its sound code was translated the same way.
Changing it
By replacing whole functions: 80 are rewritten in C as patches, and the rest run exactly as translated.
Strong at
Ray traced lighting made for this game, with dust that shows only in the light; the cartridge's own logic and timing, running natively; and closing anywhere to pick up exactly there.
Worth knowing
For now, Windows only and one ROM version (NTSC-U 1.0), with both on the roadmap; and full save states: a saved moment keeps your progress and where Link stands, and only what was moving starts over.
From the cartridge to your screen
  1. The cartridge's code, translated once
  2. A native Windows recompilation app
  3. Your ROM, read in place
  4. Your screen A frame from this recompilation app: riding along a fence in Hyrule Field, the horse's shadow on the track

Why recompile

What you get by playing it this way.

The emulator and the decompilation port each do things well, and their screens say what. Here is what this one brings, all of it built in and working out of the box. Recompiling still owes the community decompilation: it supplies the names and boundaries of the game's functions.

A frame from this recompilation app: the altar in a stone hall, with ray traced lighting and the OoT Reloaded texture pack

Lighting made for this game

Ray traced lighting drawn from the game's own frames: soft shadows from the sun, the game's torches and fairies throwing real shadows, daylight through the Temple of Time's windows, and dust that shows only where light falls, carried by the wind outdoors. Every part has its own switch, so you can have as much of it or as little as you like.

Photo mode, built in

Freeze the moment and move the camera anywhere around it, with every setting still live on the frozen frame. It has its own controls, which only act while it is on, and it can hide the HUD for a clean picture.

Video recording, built in

Record straight to an MP4 in your Videos folder, at up to 4K and sixty frames a second whatever size the window is, with the game's sound or without it, and your voice from a microphone you choose if you want it. Pause and carry on in the same file, and a crash still leaves a file that plays.

Screenshots, and the same frame twice

One key saves the picture as a PNG. From the Debugging menu, a comparison shot holds one frame and takes it twice, as the console drew it and with your settings, which is how every pair on this site was made.

A HUD of your own

Let the HUD fade when nothing needs it, always, or at the press of a button, to a dimmer, grayer HUD or out of sight, and tick what brings it back. Each part can stay shown or fade, and take its own size from half to twice the original, and the whole HUD can sit at the window's edges or at distances you choose.

Texture packs, dropped in

Put OoT Reloaded's single file in the Texture packs folder and choose it on one row; a Texture detail row reads it at a quarter, a half or its full size.

Controllers that just work

PlayStation and Xbox pads work without extra software. Every input is rebound by pressing it, and each pad keeps its own bindings, rumble and deadzone.

The cartridge's own code, not a rewrite

What runs is the game's original machine code, translated by a program rather than rebuilt by hand, so its logic, its timing and its quirks are the cartridge's own. The 80 functions it changes are replaced whole, and everything else runs exactly as translated.

Close it anywhere, come back to that moment

Save on quit and Resume on start pick the game up exactly where you closed it, F6 saves a moment whenever you like, and an autosave keeps one on a timer. Every moment is listed with a picture of where you were.

Signed, installed and kept current

One signed setup file installs it, adds it to the Start menu and to Windows' installed apps, and, if you allow it, fetches each new version in the background and installs it the next time it opens.

What it does

What it does that the cartridge could not.

Lighting is traced, not painted on

The renderer traces light through the very frame the game hands it: soft shadows from the sun, darkening where surfaces meet, and the game's own torches and fairies lighting the ground and walls around them and throwing real shadows of whatever stands in the way. Bounced light, reflections on water, and the sun's haze in the air as well. Every part is its own switch in a Lighting menu, and the picture changes as you move the row.

Kokiri Forest with ray traced lighting and the OoT Reloaded texture pack: the cliff's long shadow across the grass, bark on the great trunk, and fireflies in the air
Riding across an open field at midday

It runs at your display's refresh rate

The game updates twenty times a second and always will. Every transform it draws is tagged, and the renderer interpolates between those updates, so the picture moves at 60, 120 or 240 while the game keeps its original timing.

Game clock
20 Hz, unchanged
Presented at
60, 120, 240 Hz
Renderer
RT64, Direct3D 12
Input
SDL2, plug in at any time

One scene, three shapes

The view widens instead of stretching.

The same room at the ratio the cartridge was drawn for, at sixteen by nine, and wider still. The game draws what was always out there.

Widescreen shows more, rather than stretching

The view is widened inside the game's own 3D code rather than stretched afterward, so you see more of the room instead of a distorted version of the same slice. Rooms drawn over a fixed backdrop are held at the original ratio automatically.

A drained lake under a cliff, with a tower at the right edge
The field of view from above at 4:3, 16:9 and 21:9. The view widens to the sides and keeps its height.
4:3
The original framing
16:9
Most monitors and TVs
21:9
The widest it supports
  • Rendered by RT64 on Direct3D 12

    Native resolution up to whatever your monitor is, multisampling, downsampling, and a render distance you can spend as far as your card will carry it.

  • Every button can be rebound

    Pads through SDL with hot plug and rumble, rebinding by pressing the thing you want, and per device profiles that persist. The right stick turns the camera wherever the game's own camera is free to turn, looks and aims in first person, and rides the horse.

  • Close it, and pick up exactly where you left off

    Turn on Save on quit and Resume on start, and closing the recompilation app keeps the game exactly as it stands. The next time it opens it goes straight back to that moment, past the title and the file select, with nothing to save or load by hand. F6 saves a moment whenever you like, F9 goes back to the newest, and an autosave keeps one on a timer. A moment keeps everything the game would have saved, opened chests and pressed switches included, and where Link stands and faces; only what was moving, like enemies and platforms, starts over.

Seeing it

The same moment, before and after.

One frame of the game, held still and photographed twice by the recompilation app: once with the original look, the console's own 320 by 240 at four by three, and once with ray traced lighting at high settings and the OoT Reloaded texture pack. Both come with the one download: the original look is a few rows in the settings, and you can go back to it whenever you like. Drag across the picture to wipe between them.

Open the gallery
Kakariko Village, as the console drew it, at 320 by 240 and four by three Captured on version 0.4.0
Kakariko Village Every wall throws its shadow across the grass.

Freeze the moment, keep the camera

Photo mode

Photo mode stops everything in the scene, the way photo modes in modern games do, and leaves the camera free. Move it anywhere around the frozen moment, change the settings while it holds, and take the screenshot you want. Turn Photo mode on in the settings, then press F10, or any key or button you bind to it, to freeze the game, and press it again to carry on.

It has its own controls: a Photo mode section in the controls screen, for the keyboard and every pad, that only does anything while photo mode is on, so it never gets in the way of play. One of them hides the HUD, the hearts, the buttons, the rupees and the map, for a clean picture, and it comes back when photo mode ends.

The chamber of the sword, as the console drew it, at 320 by 240 and four by three Captured on version 0.4.0
The chamber of the sword Dust hangs in the beam over the pedestal, lit only where the light falls.

Dust in the light

Dust you only see where the light falls.

With the traced lighting on, dust hangs in the air and shows only where light reaches it, in the color of whatever is lighting it: a torch, Navi, the sun through a window, the moon over a field. Indoors it drifts. Outdoors a wind carries it, in gusts that rise, hold and die away, from one direction or from a different one each time. Drag across the picture to wipe between them.

Video recording

Record straight to an MP4.

The recompilation app records your play as an MP4, straight into your Videos folder: the game's own sound, and your voice too if you want it, in a file that is ready the moment you stop. Keep a run, or cut a montage from it.

The Video mode row

Reliable
Records in pieces, so even a crash leaves a file you can watch. A few video editors cannot open files made this way.
Compatible
Records in one piece and saves the moment you stop. If the recording is cut off partway, the file is lost.

Texture packs

Higher resolution textures, from OoT Reloaded.

OoT Reloaded, by GhostlyDark and the artists named in its readme

The recompilation app can replace the game's own textures with a texture pack. OoT Reloaded, by GhostlyDark and the artists named in its readme, has a version made for RT64, the renderer this recompilation app is built on, so it works here too. All credit for it is theirs. It is not included and never hosted here: download its rt64 version from GhostlyDark's own releases page.

Use the single file pack: it performs best. The rt64 version downloads in parts, and the first part opens with 7-Zip; inside is one .rtz file. Put that file in the Texture packs folder as it is, rather than unpacking it into a folder, then choose it on the Texture pack row, and raise Texture detail from Quarter once the game runs well.

.rtz The single file pack, recommended: it performs best
Made by
GhostlyDark and the artists in its readme
Version
The rt64 one, made for RT64
Comes as
Parts that open with 7-Zip
Use
The single .rtz file inside, as it is
One frame of the game: texture detail at the pack's full size
Texture detail at the pack's full size

Controllers

Controllers work as they are.

Plug in a DualSense, a DualShock 4 or an Xbox pad and play. The recompilation app opens it itself, rumble included, so there is nothing to install first and nothing sitting between the pad and the game.

A mapper such as DS4Windows or Steam Input hands the recompilation app a different pad and keeps the real one. Turn it off, or exclude this recompilation app in it, and the touchpad and rumble come straight through.

  • PlayStation controllers work without extra software

    A DualSense or DualShock 4 is read directly. The touchpad click opens the menu, the Share button does too, and rumble works out of the box.

  • Xbox controllers, and anything else SDL recognizes

    Hundreds of pads by name, with hot plug: connect one while the game runs and it is bound the next frame. Rumble where the pad has it.

  • Bindings are remembered for each controller

    Bind by pressing the thing you want. Two bindings per input, a profile for each pad that persists, and a pad SDL does not recognize still binds by its own buttons.

What it needs

It needs your own copy of the game.

Nothing of the game ships with this recompilation app and nothing ever will. The launcher asks for your own ROM, checks its hash before it parses a single byte, and leaves the file exactly where you keep it. Which ROM it takes, and why, is in the FAQ; the install guide goes from the download to the first frame.

Windows
10 or 11, 64 bit
Graphics
Direct3D 12, Shader Model 6
Processor
x86-64 with SSE4.1
Your own ROM
NTSC-U 1.0
Verified by
A SHA-1 checksum, before anything is read
Stored
Read from wherever you keep it

Why you need your own ROM

I am not legally able to provide the game, so no ROM comes with this recompilation app and none ever will. Finding your own copy is up to you. What this recompilation does is take the ROM you bring and run the game from it: the game's own code, translated to run natively on your machine, with its art, sound and text read from your file every time it starts.

Download

Two builds, both signed.

For now, one version of the game

Right now the only supported ROM is the NTSC-U 1.0 version. Any other version is refused when you choose it, with a message saying which version it is not. Support for the later NTSC revisions and for PAL is planned.

Other versions on the roadmap
Signed by
Azure Trusted Signing
Installs to
Your AppData folder
Updates
Replaces itself in place
Price
Free

Releases

Every build that has shipped.

Each version stays where it was published, so an older build is always a download away. The current one is the build the installer updates to.

  1. Reading the releases…

Free. Your own ROM of the game is required and is not provided. Not affiliated with, endorsed by, or connected to the original publisher.