Zelda: Ocarina of Time
While you should still leave a fairly large chunk of F's at the end of the ROM, tt's worth noting that all data from 0x03600000 onward in the OoT Debug ROM is garbage data from Pokemon Stadium 2.
The Legend of Zelda: Ocarina of Time is a game that is at the hearts of many people, countless hours of research has been put in by talented people from all across the globe in order to reverse engineer the game, find glitches and secrets. This page will be dedicated to advanced Zelda hacking rather than the standard simple ram editing stuff because we feel that other information sources already describe the basics very well. Zelda knowledge is scattered all over the internet, to avoid recopying everything here please refer to the existing information section.
- TODO: link the spreadsheets, forums, deathbasket site, anything else i forgot about
Zelda Resource Extractor
Utility of Time
Utility of Time is a tool developed by cooliscool that allows users to view and edit Zelda: Ocarina of Time and Majora's Mask object (.zobj) files, map files (.zmap), visually place and change actors (NPCs in most cases, Link as well) in the loaded room, save them, and inject back into the respective ROM, and much more. The older versions can edit vertices (and change collision information). The most recent versions can emulate the combiners and view hierarchies and animations, although vertices can no longer be edited. It emulates ~90% of the F3DEX2 microcode.
[magicstone.de/dzd/random/ZSaten2-POC.rar ZSaten] is a tool capable of displaying actors and object models within a Zelda: Ocarina of Time - Master Quest Debug ROM, complete with animation where applicable. Just like OZMAV2, ZSaten uses libbadRDP for interpreting and rendering Display Lists, and libMISAKA for its OZMAV2-style console interface.
[ Discussion topic.]
Hylian Toolbox is a compact tool for OoT and MM that allows for the creation of custom hierarchies, animations, matrices, and maps. It is the only tool that is capable of creating custom hierarchies and mapping vertices from one limb to another. It is also the only tool that can set collision information based on groups and create hierarchies. However, the ports aren't compatible on actual hardware (running through an EverDrive 64) due to utilizing Model2N64 which doesn't properly convert microcode.
With that, I link to here for Model2F3DEX2.
SceneNavi is a level editor for The Legend of Zelda: Ocarina of Time and Majora's Mask for the N64 written in C#, using .NET 4 and OpenTK. It is compatible with any uncompressed ROM of the game, ex. the Master Quest Debug ROM; other versions need to be decompressed to 64MB using ZDEC or a similar tool. Working with individual scene and room files, as opposed to editing inside the ROM, is also supported, given a supported ROM has been loaded beforehand.
Zelda Edit Zelda edit It is capable of patching up common issues with the stock ROM, can replace actors in several levels, edit certain environmental variables, and position actors in the level to your liking. Works with the Ocarina of Time Debug ROM. It requires .NET Framework (at least version 2.0).
- En_Anim  - An actor written to load any animation.
- En_AnimVar  - A fork of the above actor, uses variables.
- en_vase  - The simplest actor in OoT, re-written in C to test nOVL and to document functions.
- En_Bird  - The simplest animated actor in OoT, re-written for the same reason as En_Vase.
When compiling binaries for use as an overlay, you must add the switch -G 0 to prevent it from putting symbols in the small data section, as $gp relative relocations are obviously unimplemented. When linking a binary into an ELF file that is to be converted to an overlay, you must remember to retain all the relocation information with the flag --emit-relocs.
zovldis is a disassembler for the dynamic MIPS binaries found in the Nintendo 64 Zeldas. It creates an assembly output file which can be built to create a 1:1 copy of the input overlay. It is the opposite of nOVL - it takes an overlay and disassembles it to an assembly file, which, combined with a proper makefile, produces an identical actor as the one which was disassembled. This makes hacking existing actors much more convenient. An example of actor modification using this approach is seen here (video)
SharpOcarina is a scene development tool for The Legend of Zelda: Ocarina of Time (and possibly Majora's Mask).
 is an OpenGL-based level editor for Zelda: Ocarina of Time and Majora's Mask. It is capable of editing ex. room and scene actor placements, waypoint placements and room Display Lists, among other things.
xdaniels collection of old tools (including ozmav2)
Potentially useful for future projects. Serves as a good reference point (like badrdp)!
Map Porter (OoT to MM)
Link to both spinout and Flotonic's tools.
Zelda Actor Placement 2
[DEAD LINK DEAD LINK] "This is THE tool for beginners! Seems almost impossible how it works, but it modifies the game while you are playing. Read the Simple Example of how to use.htm in the docs sub folder, and you will be placing actors in no time flat! If you only download one of these tools, make it this one!" There is also a MM version floating around on the web. I'm sure it can be found by asking around.
Zelda Level Editor 2
ZLE2 "works the same as ZAP2, only with landscaping. Far from complete it does included tools that allow you to EDIT IN ROM TEXTURES!!! Several additional tools can modify anything from the start screen, to Icons, Actors textures, and even Level Titles."
SM64 to Z64 is a CLI tool to convert areas from Super Mario 64 to areas in Zelda 64. It works by translating the display lists, collision, and (to an extent) NPC/actor data from SM64's format to Zelda 64's format. Older versions relied upon [the freeware] collision_fixer.exe from JSA's ZLE, which hindered cross-platform-ness, and forced system() to be called. The latest versions, however, calculate collision normals without collision_fixer.exe. A helpful usage guide.
libobj is a library written by spinout for manipulating wavefront obj data. It can read and write obj files and their material (mtl) files, as well as write output in N64 F3DEX2, and Zelda 64 collision. There is also an experimental viewer bundled with libobj.
ZAO-ADD is for adding actors and objects.
Assembly Level Hacking Information
TODO: link raycast here
TODO: link twisted corridor here
TODO: link lee's debug rom intro fix here