Zelda: Ocarina of Time

From en64 wiki
Jump to: navigation, search

While you should still leave a fairly large chunk of F's at the end of the ROM, it's worth noting that all data from 0x03600000 onward in the OoT Debug ROM is garbage data from Pokemon Stadium 2.

Introduction

Just putting this video here since it's hidden, and most learn best with visually seeing people mod and display list porting is in high demand in those parts.

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.

On-site Information

Link's animations
Documentation on expanding graph_alloc function
wareya's notes on lighting normals
Ocarina of Time Raycasting Information
ovl_title fun

External Information

Utilities

.Blank tools

ndec -- Decompressor for OoT and MM
zelda64dec -- another
In-game Ocarina of Time Terminal
A Zelda level viewer


Decompressors
Zoinkity's take

Zelda Resource Extractor
Download


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.

  • Tutorials

Changing Items and People, Editing landscape and Items, Collision editing


ZSaten
[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.]
Example.


Hylian Toolbox
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.

  • Tutorials

Custom enemy, Importing a custom map, Transition actors, How to manually port display lists between files, Import custom display lists


SceneNavi
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).


nOvl
nOVL is a tool which converts MIPS elf binaries to Zelda 64 overlays. Few actors have been (re)written using mips-gcc + nOVL, but there are a few:

  • En_Anim [1] - An actor written to load any animation.
  • En_AnimVar [2] - A fork of the above actor, uses variables.
  • en_vase [3] - The simplest actor in OoT, re-written in C to test nOVL and to document functions.
  • En_Bird [4] - The simplest animated actor in OoT, re-written for the same reason as En_Vase.

nOvl Windows executable (i686)

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
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
SharpOcarina is a scene development tool for The Legend of Zelda: Ocarina of Time (and possibly Majora's Mask).


SayakaGL
[5] 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.
Discussion Topic
Tutorial


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.

  • Tutorials

Changing Actor Variables, Changing Objects/Groups, Moving Actors Real-Time


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."


SM64toZ64
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
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.


Collision-Fixer
Download


ZAO-ADD
ZAO-ADD is for adding actors and objects.


Spinout's tools (various tools such as animation and hierarchy parser for both OoT and MM)
[6]
[7]