The Legend of Zelda: Ocarina of Time (oot-dc)
The Legend of Zelda: Ocarina of Time
Sobre el proyecto
The Legend of Zelda: Ocarina of Time es un videojuego de acción-aventura de 1998 desarrollado por la filial Nintendo EAD y publicado por Nintendo para la consola Nintendo 64. Fue lanzado en Japón el 21 de noviembre de 1998, mientras que a Norteamérica llegó dos días después, el 23 de noviembre, y en Europa se estrenó el 11 de diciembre de ese mismo año. Para el caso de Sudamérica, fue presentado en Chile el 23 de noviembre de 1998 en un evento especial para periodistas.
12 versiones de The Legend of Zelda: Ocarina of Time
Estás viendo: The Legend of Zelda: Ocarina of Time (oot-dc)
The Legend of Zelda: Ocarina of Time (oot-dc)github.com/jnmartin84/oot-dc
Ocarina of Time (GameCube) Decompilationgithub.com/zeldaret/oot-gc
Ocarina of Time (PC, ray traced)github.com/JonB-Dev/oot-recompiled
The Legend of Zelda: Ocarina of Timegithub.com/zeldaret/oot
oot vr · Android (gibranfelix)github.com/gibranfelix/oot-vr
Ship of Harkiniangithub.com/HarbourMasters/Shipwright
Ship of Harkinian (Android)github.com/linkzenic/Shipwright-Android
Ship of Harkinian (PS4)github.com/alechurri/shipofharkinian-ps4
Shipwright Androidgithub.com/please-be-nice/Shipwright-android
Shipwright Android (Outdated)github.com/Waterdish/Shipwright-Android
The Legend of Zelda: Ocarina of Time (Wii Virtual Console)github.com/zeldaret/oot-vcInformación oficial del proyecto
Ocarina of Time for Dreamcast
AI Disclosure
The original author of the port, Bruce, used various LLMs to: bootstrap this port, create the filesystem interface and produce the PowerVR fast3d interpreter it uses. I have since used LLMs to replace the software audio mixing, rework the build system and update the documentation to accurately reflect those updates. I am not the original author of this project, I have just offered to clean it up for him and present it for people to do what they see fit with it.
What is it
A native Sega Dreamcast port of The Legend of Zelda: Ocarina of Time, built from the ZeldaRET decompilation. The game code is compiled for the SH4 with KallistiOS; the N64's RSP/RDP graphics are replaced by a display-list interpreter that draws on the PowerVR, and the game's music and sound effects are played through the AICA's hardware voices.
The whole build runs with your host and Dreamcast toolchain. There is no N64 build step and no MIPS toolchain: the layout metadata the port needs is derived from the ROM.
No game data is included. You need your own copy of the game. Only the
GameCube Master Quest debug ROM (gc-eu-mq-dbg) is supported at the moment.
Requirements
- KallistiOS 2.2 or newer, with the
sh4zamlibrary installed fromkos-ports - clang or gcc, libxml2 headers, python3
- GNU make 3.82 or newer (macOS:
brew install makeand usegmake) - mkdcdisc, only for making
.cdidisc images
Building
# once: python deps (scipy is required for the audio transcode)
python3 -m venv .venv && .venv/bin/pip install -U pip -r requirements.txt
# your ROM (.z64, .n64 or .v64 all work)
cp /path/to/your/rom.z64 baseroms/gc-eu-mq-dbg/baserom.z64
source /opt/toolchains/dc/kos/environ.sh
make -f Makefile.dc extract # decompress the ROM, extract assets, generate build inputs (~30s)
make -f Makefile.dc assets # compile the asset segments for the Dreamcast (a few minutes)
make -j $(nproc) -f Makefile.dc # build zelda.elf
extract builds the handful of host tools it needs with your C compiler the
first time it runs. Makefile.dc has no dependency tracking, so run
make -f Makefile.dc clean after editing source files.
The result is zelda.elf plus the runtime asset files in assets_dc/.
Running
The game looks for assets_dc/ on /pc (dcload's host filesystem) first and
then on /cd, so the same zelda.elf runs either way.
Over dcload, from the repository root so /pc/assets_dc/ resolves:
sudo dc-tool-ip -t <dreamcast-ip> -x zelda.elf -c ./
From a disc image (needs mkdcdisc on your PATH):
make -f Makefile.dc cdi # oot.cdi: padded, for burning to CD-R
make -f Makefile.dc cdi-ode # oot-ode.cdi: unpadded, for ODEs
Both images contain zelda.elf as the boot binary, assets_dc/ and
ocarina.ico. make -f Makefile.dc clean-disc removes them.
Saving
Saves go to the first VMU found, as one file oot.rec (66 blocks) with the
ocarina icon. Without a VMU the game still runs and saves last for the
session only. A VMU inserted after boot is picked up on the next save.
Options
| variable | default | effect |
|---|---|---|
DEBUG_FEATURES | 0 | 1 builds the debug version (map select on boot, debug camera, on-screen debug text) |
LTO | 1 | 0 disables link-time optimisation |
DC_VERSION | gc-eu-mq-dbg | ROM version directory under baseroms/ |
Example: make -f Makefile.dc DEBUG_FEATURES=1.
Layout
src/dreamcast/,src/linux/: the Dreamcast and port platform layer (renderer, file loading, audio glue)src/audio/internal/aica_synth.c,tools/aica/: the AICA audio driver and its build-time sample transcoderpc_tools/: the host-only build pipeline (dc_extract.py,dc_meta.py,dc_assets.py)Makefile.dc: the Dreamcast build- everything else (
src/,include/,assets/,spec/,tools/) is the decompilation, trimmed to what this build uses
Credits
This port would not exist without the work of the ZeldaRET team and contributors on the Ocarina of Time decompilation. See the upstream repository for the decompilation project itself, its documentation and its contributors.