Skip to content
Draft

CC0 oot #2780

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
164 commits
Select commit Hold shift + click to select a range
83a47b4
CC0 oot: apply rewritten history result on top of historical history
Dragorn421 Jul 30, 2026
c353448
remove reverse-compatibility typedefs for curve skeletons
Dragorn421 Jul 30, 2026
dee72e2
rm z_viszbuf reference
Dragorn421 Jul 30, 2026
f9832f1
format
Dragorn421 Jul 30, 2026
176c609
z_demo_effect undef syms cleanup
Dragorn421 Jul 30, 2026
314be9c
z_en_ge3 undef syms cleanup
Dragorn421 Jul 30, 2026
ed02b2c
z_obj_tsubo undef syms cleanup
Dragorn421 Jul 30, 2026
a2464d0
z_en_test undef syms cleanup
Dragorn421 Jul 30, 2026
e6dbfff
z_en_karebaba undef syms cleanup
Dragorn421 Jul 30, 2026
b3f8ada
z_en_wf undef syms cleanup
Dragorn421 Jul 30, 2026
a28f025
soften trivial diffs
Dragorn421 Jul 30, 2026
f2cbc74
make animation_curve.h
Dragorn421 Jul 30, 2026
24c8d28
extract n64dd data
Dragorn421 Jul 30, 2026
7f90971
rm n64dd.bss.s
Dragorn421 Jul 30, 2026
d02904d
memory_utils.h
Dragorn421 Jul 30, 2026
8020cb7
make vis.h
Dragorn421 Jul 30, 2026
5f08f82
remove -j from make -C tools
Dragorn421 Jul 30, 2026
20b37b7
fix warnings
Dragorn421 Jul 30, 2026
9655cda
format
Dragorn421 Jul 30, 2026
9da31cb
colliders cleanup: sJntSphInit, sJntSphElementsInit
Dragorn421 Jul 30, 2026
4aa19f9
reextract colliders
Dragorn421 Jul 30, 2026
94793bb
colliders cleanup: sCylinderInit
Dragorn421 Jul 30, 2026
cbd4530
colliders cleanup: sColliderQuadInit
Dragorn421 Jul 30, 2026
bf4f7fd
colliders cleanup: ColliderJntSph collider; ColliderJntSphElement col…
Dragorn421 Jul 30, 2026
112bf1f
colliders cleanup: ColliderCylinder collider;
Dragorn421 Jul 30, 2026
7f61383
SkelAnime skelAnime;
Dragorn421 Jul 30, 2026
f4b706d
Vec3s {jointTable,morphTable}[N];
Dragorn421 Jul 30, 2026
7151e70
reextract and name damage tables
Dragorn421 Jul 30, 2026
946a1b5
InitChainEntry sInitChain[]
Dragorn421 Jul 30, 2026
dbe95af
cleanup CollisionCheckInfoInit* data
Dragorn421 Jul 30, 2026
c501dc6
use names for atFlags, acFlags
Dragorn421 Jul 30, 2026
711a7ba
z_en_tp.c cleanup
Dragorn421 Jul 30, 2026
30c3075
EnTp: use unk_ and pad_
Dragorn421 Jul 30, 2026
82424f3
z_en_wf.c cleanup
Dragorn421 Jul 30, 2026
e8a1e51
EnWf eye textures
Dragorn421 Jul 30, 2026
d2c58da
enwf {joint,morph}Table
Dragorn421 Jul 30, 2026
64bbdea
EnWf: use unk_ and pad_
Dragorn421 Jul 30, 2026
89d9c2f
fixup
Dragorn421 Jul 30, 2026
131067f
doc kanji_tex
Dragorn421 Jul 30, 2026
eedbbab
fixup
Dragorn421 Jul 30, 2026
a6e6495
wip EnFish docs
Dragorn421 Jul 30, 2026
235368f
fixup
Dragorn421 Jul 30, 2026
adf9d34
finish doc EnFish
Dragorn421 Jul 31, 2026
b658b85
Merge remote-tracking branch 'upstream/main' into oot_cc0_PR
Dragorn421 Jul 31, 2026
1fbeb15
doc z_memory_utils.c
Dragorn421 Jul 31, 2026
87be8a6
vismono improvements
Dragorn421 Jul 31, 2026
54a83e6
doc VisCvg
Dragorn421 Jul 31, 2026
54fed58
doc VisZBuffer
Dragorn421 Jul 31, 2026
81907fc
common VisParams substruct
Dragorn421 Jul 31, 2026
784696a
EnTp and object_tp docs
Dragorn421 Jul 31, 2026
bdfd041
fixups
Dragorn421 Jul 31, 2026
63dcad0
doc EnWf, object_wf
Dragorn421 Aug 1, 2026
57eb309
fixup
Dragorn421 Aug 1, 2026
39c5ab1
further libleo cleanup
Dragorn421 Aug 1, 2026
57702c2
further n64dd/libleo cleanup
Dragorn421 Aug 1, 2026
fb746bc
MemCopy: The memory regions must not overlap.
Dragorn421 Aug 1, 2026
1fe6576
further vis docs
Dragorn421 Aug 1, 2026
267311f
compress n64dd segment
Dragorn421 Aug 1, 2026
e8812e9
reorganize libleo files
Dragorn421 Aug 1, 2026
d8d47a2
cleanup version checks
Dragorn421 Aug 1, 2026
8900fd2
n64dd cleanup
Dragorn421 Aug 1, 2026
fcf68f8
n64dd_error_textures.xml
Dragorn421 Aug 1, 2026
f97d56a
libleo/n64dd fixes/cleanup
Dragorn421 Aug 2, 2026
09c8107
document object_zf
Dragorn421 Aug 2, 2026
3162690
wip EnZf docs
Dragorn421 Aug 3, 2026
12330d7
Merge remote-tracking branch 'upstream/main' into oot_cc0_PR
Dragorn421 Aug 3, 2026
f93f974
format z_en_zf.c
Dragorn421 Aug 3, 2026
05fda04
wip EnZf docs
Dragorn421 Aug 4, 2026
9ca4124
wip EnZf docs
Dragorn421 Aug 4, 2026
77e3d18
finish up EnZf docs
Dragorn421 Aug 5, 2026
db9c3d4
Merge branch 'main' into oot_cc0_PR
Dragorn421 Aug 5, 2026
353a5f4
remove outdated place_title_cards.xml comment
Dragorn421 Aug 5, 2026
c3ae857
rm unused assets/xml/textures/link_animetion.xml
Dragorn421 Aug 5, 2026
c818cf7
Merge branch 'main' into oot_cc0_PR
Dragorn421 Aug 5, 2026
b29bf86
fixups
Dragorn421 Aug 6, 2026
8666b2c
wip bowling actors docs
Dragorn421 Aug 6, 2026
bf43eae
wip bowling actors docs
Dragorn421 Aug 7, 2026
1ca4aee
finish bowling actors docs
Dragorn421 Aug 7, 2026
5fb2d1b
some more static
Dragorn421 Aug 7, 2026
6641aa2
bowling fixups
Dragorn421 Aug 7, 2026
9071984
doc bari
Dragorn421 Aug 8, 2026
7531c9b
name biri anims (by usage, Z64Utils cant preview them)
Dragorn421 Aug 8, 2026
620cf25
fixup bari/biri mixup
Dragorn421 Aug 8, 2026
b1c2625
doc bari
Dragorn421 Aug 8, 2026
27c516d
ENZF_TYPE_LIZALFOS_PAIRED_ -> ENZF_TYPE_LIZALFOS_PAIRED_MINIBOSS_
Dragorn421 Aug 8, 2026
2b5a1ce
doc BgDyYoseizo
Dragorn421 Aug 8, 2026
30fb0db
misc. cleanup
Dragorn421 Aug 8, 2026
e6bcfa9
fixup ok
Dragorn421 Aug 8, 2026
094587b
more fixups
Dragorn421 Aug 8, 2026
852eef9
doc dekubaba
Dragorn421 Aug 8, 2026
ebce5c0
partial docs for BgSpot08Iceblock
Dragorn421 Aug 8, 2026
e81e73d
doc EnFirefly
Dragorn421 Aug 9, 2026
cbb10c8
bodyType -> bodyElementalType
Dragorn421 Aug 9, 2026
c580d91
some cleanup, mostly remaining unsymbolized segment addresses
Dragorn421 Aug 10, 2026
9bf8b6b
more assets docs
Dragorn421 Aug 11, 2026
22673e0
doc object_skb
Dragorn421 Aug 11, 2026
6f8854b
format
Dragorn421 Aug 11, 2026
3121f63
BgHakaHuta docs
Dragorn421 Aug 11, 2026
a5d573e
doc BgTokiHikari
Dragorn421 Aug 12, 2026
6b450c2
z_en_jj_cutscene_data.inc.c
Dragorn421 Aug 12, 2026
f2f3632
en_jj docs
Dragorn421 Aug 12, 2026
04c0a45
en_ge3 docs
Dragorn421 Aug 12, 2026
abac436
en_ge2 docs
Dragorn421 Aug 12, 2026
193ed21
en_ge1 docs
Dragorn421 Aug 12, 2026
6bef9da
split docker instructions from readme and update Dockerfile
Dragorn421 Aug 12, 2026
e26bb37
EnFish actionFunc typedef
Dragorn421 Aug 16, 2026
7ec6ced
EnFish move variable assigns into decls
Dragorn421 Aug 16, 2026
e2d4898
BgDyYoseizo small cleanup
Dragorn421 Aug 16, 2026
b6a773f
EnBili cleanup
Dragorn421 Aug 16, 2026
460d44b
EnVali cleanup
Dragorn421 Aug 16, 2026
e158034
add FbFilterType enum
Dragorn421 Aug 16, 2026
ecd0e47
format and bss
Dragorn421 Aug 16, 2026
35c2910
bss
Dragorn421 Aug 16, 2026
a5f594d
EnDekubabaActionFunc
Dragorn421 Aug 16, 2026
748e8e7
EnWfActionFunc
Dragorn421 Aug 16, 2026
1a3e783
EnWf cleanup
Dragorn421 Aug 16, 2026
40bcddb
EnDekubaba cleanup
Dragorn421 Aug 16, 2026
07bdb1e
EnZf cleanup
Dragorn421 Aug 16, 2026
54ae826
EnTp cleanup
Dragorn421 Aug 16, 2026
3e47017
cleanup
Dragorn421 Aug 16, 2026
a093030
cleanup
Dragorn421 Aug 16, 2026
720395a
Merge branch 'main' into oot_cc0_PR
Dragorn421 Aug 16, 2026
9fb5881
cleanup EnFirefly
Dragorn421 Aug 16, 2026
98ea1c6
bowling things cleanup
Dragorn421 Aug 16, 2026
f0cdc81
cleanup
Dragorn421 Aug 16, 2026
1a4d964
biri cleanup
Dragorn421 Aug 16, 2026
2f50586
bari cleanup
Dragorn421 Aug 16, 2026
c79a316
Merge remote-tracking branch 'upstream/main' into oot_cc0_PR
Dragorn421 Aug 29, 2026
c5b061b
biri: merge var ini with decl
Dragorn421 Aug 29, 2026
58203a8
bari cleanup
Dragorn421 Aug 29, 2026
905523c
bgdyyoseizo comment on D_80875440
Dragorn421 Aug 29, 2026
d255b36
dekubaba: more cleanup
Dragorn421 Aug 29, 2026
0452b58
keese cleanup
Dragorn421 Aug 29, 2026
0f838b9
use ITEM00_ enum in Item_DropCollectible
Dragorn421 Aug 29, 2026
12473c9
dekubaba more cleanup
Dragorn421 Aug 29, 2026
24601dd
gfxP
Dragorn421 Aug 29, 2026
5e46858
Merge branch 'main' into oot_cc0_PR
Dragorn421 Aug 30, 2026
96009ca
Merge branch 'main' into oot_cc0_PR
Dragorn421 Aug 31, 2026
576ce35
regconvert regs
Dragorn421 Aug 31, 2026
fce9217
vt codes
Dragorn421 Aug 31, 2026
571e5d1
vt codes in EnDns
Dragorn421 Aug 31, 2026
4b681a9
Merge branch 'main' into oot_cc0_PR
Dragorn421 Sep 18, 2026
33872fd
bss
Dragorn421 Sep 18, 2026
965ca8e
Merge branch 'main' into oot_cc0_PR
Dragorn421 Sep 24, 2026
4b110d3
Merge branch 'main' into oot_cc0_PR
Dragorn421 Sep 24, 2026
0455f64
UNUSED fixup
Dragorn421 Sep 24, 2026
401ac24
enwf review
Dragorn421 Sep 27, 2026
d886892
Merge branch 'main' into oot_cc0_PR
Dragorn421 Sep 30, 2026
1eaef45
EnGe1 review
Dragorn421 Oct 1, 2026
30b9e6c
ge2 review
Dragorn421 Oct 1, 2026
eadfe17
Merge remote-tracking branch 'upstream/main' into oot_cc0_PR
Dragorn421 Oct 11, 2026
20a5fba
nb review
Dragorn421 Oct 11, 2026
84b13f1
EnSkb review
Dragorn421 Oct 11, 2026
965e6ba
BgHakaTrap review
Dragorn421 Oct 11, 2026
b259996
EnDns review
Dragorn421 Oct 11, 2026
6c7c30e
EnGe3 review (part 1)
Dragorn421 Oct 11, 2026
785e285
EnJj review
Dragorn421 Oct 11, 2026
81f2ff0
tools/spec review
Dragorn421 Oct 12, 2026
d99f934
finish object_geldb docs
Dragorn421 Oct 12, 2026
e6466f8
EnMd review
Dragorn421 Oct 12, 2026
025833b
EnKusa review
Dragorn421 Oct 12, 2026
616f413
ge3/geldb review
Dragorn421 Oct 12, 2026
d1ecc4d
EnMd review
Dragorn421 Oct 12, 2026
92e617e
Merge remote-tracking branch 'upstream/main' into oot_cc0_PR
Dragorn421 Oct 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
30 changes: 16 additions & 14 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,26 +1,28 @@
FROM ubuntu:24.04 AS build

FROM ubuntu:24.04
ENV TZ=UTC
ENV LANG=C.UTF-8
ENV N64_GCCPREFIX=/opt/libdragon

ADD https://github.com/DragonMinded/libdragon/releases/download/toolchain-continuous-prerelease/gcc-toolchain-mips64-x86_64.deb gcc-toolchain-mips64-x86_64.deb

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && \
apt-get update && \
apt-get install -y \
binutils-mips-linux-gnu \
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt-get update
RUN apt-get install -y \
build-essential \
python3 \
python3-pip \
python3-venv \
git \
curl \
clang-tidy \
clang-format \
&& \
apt-get clean && \
rm -rf /var/lib/apt/lists/*

clang-tidy-14 \
clang-format-14
RUN apt-get install -y ./gcc-toolchain-mips64-x86_64.deb
RUN apt-get clean
RUN rm -rf /var/lib/apt/lists/*

RUN mkdir /oot
WORKDIR /oot

RUN git config --global --add safe.directory /oot

CMD make -j $(nproc) setup && make -j $(nproc) && tail -f /dev/null
CMD ["/bin/sh", "-c", \
"echo 'usage:\n docker run --rm --mount type=bind,source=\"$(pwd)\",destination=/oot oot make -j$(nproc) setup\n docker run --rm --mount type=bind,source=\"$(pwd)\",destination=/oot oot make -j$(nproc)'"]
2 changes: 1 addition & 1 deletion Doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ SHORT_NAMES = NO
# description.)
# The default value is: NO.

JAVADOC_AUTOBRIEF = YES
JAVADOC_AUTOBRIEF = NO

# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
# line (until the first dot) of a Qt-style comment as the brief description. If
Expand Down
32 changes: 11 additions & 21 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ COMPILER ?= ido
# gc-jp-ce GameCube Japan (Collector's Edition disc)
# ique-cn iQue Player (Simplified Chinese)
VERSION ?= gc-eu-mq-dbg
# Number of threads to extract and compress with.
# Number of threads to extract assets and compress with.
N_THREADS ?= $(shell nproc)
# If DEBUG_OBJECTS is 1, produce additional debugging files such as objdump output or raw binaries for assets
DEBUG_OBJECTS ?= 0
Expand Down Expand Up @@ -400,7 +400,7 @@ SFCFLAGS := --matching

# Extra debugging steps
ifeq ($(DEBUG_OBJECTS),1)
OBJDUMP_CMD = @$(OBJDUMP) $(OBJDUMP_FLAGS) $@ > $(@:.o=.s)
OBJDUMP_CMD = @$(OBJDUMP) -d $@ > $(@:.o=.s)
OBJCOPY_CMD = @$(OBJCOPY) -O binary $@ $(@:.o=.bin)
else
OBJDUMP_CMD = @:
Expand Down Expand Up @@ -454,8 +454,6 @@ else
CC_CHECK = @:
endif

OBJDUMP_FLAGS := -d -r -z -Mreg-names=32

#### Files ####

# ROM image
Expand Down Expand Up @@ -611,13 +609,13 @@ else
SEGMENT_FILES :=
OVL_SEGMENT_FILES :=
endif
OVL_RELOC_FILES := $(OVL_SEGMENT_FILES:.plf=.reloc.o)
RELOC_O_FILES := $(OVL_SEGMENT_FILES:.plf=.reloc.o)

O_FILES := $(shell $(CPP) $(CPPFLAGS) -I. $(SPEC) | $(BUILD_DIR_REPLACE) | sed -n -E 's/^[ \t]*include[ \t]*"([a-zA-Z0-9/_.-]+\.o)"/\1/p')
MAKEROM_O_FILES := $(BUILD_DIR)/src/makerom/rom_header.o $(BUILD_DIR)/src/makerom/ipl3.o $(BUILD_DIR)/src/makerom/entry.o

# Automatic dependency files
DEP_FILES := $(O_FILES:.o=.d) $(O_FILES:.o=.asmproc.d) $(OVL_RELOC_FILES:.o=.d) $(BUILD_DIR)/spec.d $(MAKEROM_O_FILES:.o=.d)
DEP_FILES := $(O_FILES:.o=.d) $(O_FILES:.o=.asmproc.d) $(RELOC_O_FILES:.o=.d) $(BUILD_DIR)/spec.d $(MAKEROM_O_FILES:.o=.d)

$(BUILD_DIR)/src/boot/build.o: CPP_DEFINES += -DBUILD_CREATOR="\"$(BUILD_CREATOR)\"" -DBUILD_DATE="\"$(BUILD_DATE)\"" -DBUILD_TIME="\"$(BUILD_TIME)\""

Expand Down Expand Up @@ -689,7 +687,7 @@ $(BUILD_DIR)/src/libc/%.o: CFLAGS := $(EGCS_CFLAGS) -mno-abicalls
$(BUILD_DIR)/src/libc/%.o: CCASFLAGS := $(EGCS_CCASFLAGS)
$(BUILD_DIR)/src/libc/%.o: OPTFLAGS := -O1
$(BUILD_DIR)/src/libc/%.o: MIPS_VERSION :=
$(BUILD_DIR)/src/libc/memmove.o: MIPS_VERSION := -mips2
$(BUILD_DIR)/src/libc/code_801068B0.o: MIPS_VERSION := -mips2
else ifeq ($(DEBUG_FEATURES),1)
$(BUILD_DIR)/src/libc/%.o: OPTFLAGS := -g
$(BUILD_DIR)/src/libc/%.o: ASOPTFLAGS := -g
Expand Down Expand Up @@ -884,13 +882,13 @@ disasm:
$(RM) -r $(EXPECTED_DIR)
VERSION=$(VERSION) DISASM_BASEROM=$(BASEROM_DIR)/baserom-decompressed.z64 DISASM_DIR=$(EXPECTED_DIR) PYTHON=$(PYTHON) AS_CMD='$(AS) $(ASFLAGS)' LD=$(LD) ./tools/disasm/do_disasm.sh

resources: $(ASSET_FILES_OUT)
run: $(ROM)
ifeq ($(N64_EMULATOR),)
$(error Emulator path not set. Set N64_EMULATOR in the Makefile or define it as an environment variable)
endif
$(N64_EMULATOR) $<


.PHONY: all rom compress clean assetclean distclean venv setup disasm run
.DEFAULT_GOAL := rom

Expand All @@ -915,7 +913,7 @@ $(ROMC): $(ROM) $(ELF) $(BUILD_DIR)/compress_ranges.txt

LDFLAGS := -T $(LDSCRIPT) -T $(BUILD_DIR)/linker_scripts/makerom.ld -T $(BUILD_DIR)/undefined_syms.txt --emit-relocs -Map $(MAP)

$(ELF): $(TEXTURE_FILES_OUT) $(ASSET_FILES_OUT) $(SEGMENT_FILES) $(OVL_RELOC_FILES) $(LDSCRIPT) $(MAKEROM_O_FILES) \
$(ELF): $(TEXTURE_FILES_OUT) $(ASSET_FILES_OUT) $(SEGMENT_FILES) $(RELOC_O_FILES) $(LDSCRIPT) $(MAKEROM_O_FILES) \
$(BUILD_DIR)/linker_scripts/makerom.ld $(BUILD_DIR)/undefined_syms.txt \
$(SAMPLEBANK_O_FILES) $(SOUNDFONT_O_FILES) $(SEQUENCE_O_FILES) \
$(BUILD_DIR)/assets/audio/sequence_font_table.o $(BUILD_DIR)/assets/audio/audiobank_padding.o
Expand All @@ -924,17 +922,9 @@ $(ELF): $(TEXTURE_FILES_OUT) $(ASSET_FILES_OUT) $(SEGMENT_FILES) $(OVL_RELOC_FIL
$(BUILD_DIR)/linker_scripts/makerom.ld: linker_scripts/makerom.ld
$(CPP) -I include $(CPPFLAGS) $< > $@

## Order-only prerequisites
# These ensure e.g. the O_FILES are built before the OVL_RELOC_FILES.
# The intermediate phony targets avoid quadratically-many dependencies between the targets and prerequisites.

o_files: $(O_FILES)
$(OVL_RELOC_FILES): | o_files

asset_files: $(TEXTURE_FILES_OUT) $(ASSET_FILES_OUT)
$(O_FILES): | asset_files

.PHONY: o_files asset_files
$(RELOC_O_FILES): | o_files
.PHONY: o_files

$(BUILD_DIR)/spec: $(SPEC) $(SPEC_INCLUDES)
$(CPP) $(CPPFLAGS) -MD -MP -MF $@.d -MT $@ -I. $< | $(BUILD_DIR_REPLACE) > $@
Expand All @@ -956,13 +946,13 @@ $(SEGMENTS_DIR)/%.reloc.o: $(SEGMENTS_DIR)/%.plf
$(AS) $(ASFLAGS) $(@:.o=.s) -o $@

$(BUILD_DIR)/undefined_syms.txt: undefined_syms.txt
$(CPP) $(CPPFLAGS) $< > $@
$(CPP) $(CPPFLAGS) $< > $(BUILD_DIR)/undefined_syms.txt

$(BUILD_DIR)/baserom/%.o: $(EXTRACTED_DIR)/baserom/%
$(OBJCOPY) -I binary -O $(LD_OFORMAT) $< $@

$(BUILD_DIR)/data/%.o: data/%.s
$(CPP) $(CPPFLAGS) -MD -MP -MF $(@:.o=.d) -MT $@ -Iinclude $< | $(AS) $(ASFLAGS) -o $@
$(CPP) $(CPPFLAGS) -MD -MP -MF $(@:.o=.d) -MT $@ -Iinclude $< | iconv --from UTF-8 --to EUC-JP | $(AS) $(ASFLAGS) -o $@

ifeq ($(PLATFORM),IQUE)
NES_CHARMAP := assets/text/charmap.chn.txt
Expand Down
56 changes: 27 additions & 29 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ the codebase can drastically change at any time. Also note that some parts of th
'shiftable' yet, so modifying them could be difficult at this point.
```

This is a WIP **decompilation** of ***The Legend of Zelda: Ocarina of Time***. The purpose of the project is to recreate a source code base for the game from scratch, using information found inside the game along with static and/or dynamic analysis. **It is not producing a PC port.** For more information you can get in touch with the team on our [Discord server][discord].
This is a WIP decompilation of The Legend of Zelda: Ocarina of Time.
The purpose of the project is to recreate a source code base for the game from scratch, using information found inside the game along with static and/or dynamic analysis.

It builds the following versions:

Expand Down Expand Up @@ -56,24 +57,37 @@ The default version is `gc-eu-mq-dbg`, i.e. the GameCube Europe/PAL Master Quest

## Installation

We recommend using WSL on Windows, or native Linux, which the rest of this readme describes. We currently have instructions for

* [Windows](#Windows), with and without WSL
* [macOS](docs/BUILDING_MACOS.md)
* [Linux](#Linux-Native-or-under-WSL--VM), natively or using WSL / VM
* [Docker](docs/BUILDING_DOCKER.md)

(These will also depend on the Linux instructions.)
Some of these may also be out of date or unmaintained; usually our contributors use WSL, Linux, and macOS, so these instructions should be up to date.

### Windows

For Windows 10 or 11, install WSL and a distribution by following this
[WSL Installation Guide](https://learn.microsoft.com/en-us/windows/wsl/install).
We recommend using Ubuntu as the Linux distribution.
We recommend using Debian or Ubuntu Linux distributions.

For older versions of Windows, install a Linux VM or refer to [Docker](docs/building/docker.md) instructions.

### macOS

For macOS, use homebrew to install the following dependencies:

For older versions of Windows, install a Linux VM or refer to [Docker](docs/BUILDING_DOCKER.md) instructions.
* coreutils
* make
* python3
* md5sha1sum
* libiconv

You can install them with the following commands:

```bash
brew update
brew install coreutils make python3 md5sha1sum libiconv
```

You'll also need to [build and install mips-linux-binutils](docs/BUILDING_BINUTILS_MACOS.md).

Going forward in this guide, please use `gmake` whenever you encounter a `make` command.
The `make` that comes with macOS behaves differently than GNU make and is incompatible with this project.

You should now be able to continue from [step 2](#2-clone-the-repository) of the Linux instructions.

### Linux (Native or under WSL / VM)

Expand Down Expand Up @@ -110,21 +124,12 @@ If you are using GCC as the compiler for Ocarina of Time, you will also need the

#### 2. Clone the repository

**N.B.** If using WSL, we strongly encourage you to clone into WSL's Linux filesystem using Linux's `git`.
Cloning into the Windows filesystem will result in much slower read/write speeds, and often causes issues when Windows copies the files with the wrong line endings, which the compiler IDO cannot handle correctly.

Clone `https://github.com/zeldaret/oot.git` where you wish to have the project, with a command such as:

```bash
git clone https://github.com/zeldaret/oot.git
```

This will copy the GitHub repository contents into a new folder in the current directory called `oot`. Change into this directory before doing anything else:

```bash
cd oot
```

#### 3. Prepare a base ROM

First, pick the version of the game you want to build.
Expand Down Expand Up @@ -180,13 +185,6 @@ md5sum: WARNING: 1 computed checksum did NOT match

This means that the built ROM isn't the same as the base one, so something went wrong or some part of the code doesn't match.

**NOTE:** to speed up the build, you can either:

* pass `-jN` to `make setup` and `make`, where N is the number of threads to use in the build. The generally-accepted wisdom is to use the number of virtual cores your computer has.
* pass `-j` to `make setup` and `make`, to use as many threads as possible, but beware that this can use too much memory on lower-end systems.

Both of these have the disadvantage that the ordering of the terminal output is scrambled, so for debugging it is best to stick to one thread (i.e. not pass `-j` or `-jN`).

## Changing build options

By default, if you don't specify a version to build with `VERSION=<the-version>` in the make commands, the `gc-eu-mq-dbg` version is used.
Expand Down
30 changes: 0 additions & 30 deletions assets/objects/object_triforce_spot/object_triforce_spot.c

This file was deleted.

24 changes: 0 additions & 24 deletions assets/objects/object_triforce_spot/object_triforce_spot.h

This file was deleted.

1 change: 0 additions & 1 deletion assets/xml/objects/gameplay_keep.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
<Array Name="gLinkPauseAdultShieldJointTable" Count="24" Offset="0x2280">
<Vector Type="s16" Dimensions="3"/>
</Array>

<PlayerAnimation Name="gPlayerAnim_clink_demo_DDbox_open" Offset="0x2310"/>
<PlayerAnimation Name="gPlayerAnim_clink_demo_Tbox_open" Offset="0x2318"/>
<PlayerAnimation Name="gPlayerAnim_clink_demo_atozusari" Offset="0x2320"/>
Expand Down
6 changes: 3 additions & 3 deletions assets/xml/objects/object_efc_crystal_light.xml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<Root>
<File Name="object_efc_crystal_light" Segment="6">
<Texture Name="gCrystalLightTex" Format="i4" Width="64" Height="64" Offset="0x0000"/>
<Array Name="gCrystalLightVtx" Count="24" Offset="0x800">
<Texture Name="object_efc_crystal_light_000000_Tex" Format="i4" Width="64" Height="64" Offset="0x0"/>
<Array Name="object_efc_crystal_light_000800_Vtx" Count="24" Offset="0x800">
<Vtx/>
</Array>
<DList Name="gCrystalLightDL" Offset="0x0980"/>
<DList Name="object_efc_crystal_light_000980_DL" Offset="0x980"/>
</File>
</Root>
8 changes: 4 additions & 4 deletions assets/xml/objects/object_efc_fire_ball.xml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
<Root>
<File Name="object_efc_fire_ball" Segment="6">
<Array Name="gCreationFireBallVtx" Count="4" Offset="0x0">
<Array Name="object_efc_fire_ball_000000_Vtx" Count="4" Offset="0x0">
<Vtx/>
</Array>
<DList Name="gCreationFireBallDL" Offset="0x0040"/>
<Texture Name="gCreationFireBallMaskTex" Format="i8" Width="32" Height="32" Offset="0x0100"/>
<Texture Name="gCreationFireBallFlameEffectTex" Format="i8" Width="32" Height="64" Offset="0x0500"/>
<DList Name="object_efc_fire_ball_000040_DL" Offset="0x40"/>
<Texture Name="object_efc_fire_ball_000100_Tex" Format="i8" Width="32" Height="32" Offset="0x100"/>
<Texture Name="object_efc_fire_ball_000500_Tex" Format="i8" Width="32" Height="64" Offset="0x500"/>
</File>
</Root>
6 changes: 3 additions & 3 deletions assets/xml/objects/object_efc_lgt_shower.xml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<Root>
<File Name="object_efc_lgt_shower" Segment="6">
<Texture Name="gEnliveningLightTex" Format="i8" Width="64" Height="64" Offset="0x0000"/>
<Array Name="gEnliveningLightVtx" Count="29" Offset="0x1000">
<Texture Name="object_efc_lgt_shower_000000_Tex" Format="i8" Width="64" Height="64" Offset="0x0"/>
<Array Name="object_efc_lgt_shower_001000_Vtx" Count="29" Offset="0x1000">
<Vtx/>
</Array>
<DList Name="gEnliveningLightDL" Offset="0x11D0"/>
<DList Name="object_efc_lgt_shower_0011D0_DL" Offset="0x11D0"/>
</File>
</Root>
14 changes: 7 additions & 7 deletions assets/xml/objects/object_efc_tw.xml
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
<Root>
<File Name="object_efc_tw" Segment="6">

<Skeleton Name="gTimeWarpSkel" Type="Curve" LimbType="Curve" Offset="0x12E8"/>
<CurveAnimation Name="gTimeWarpAnim" SkelOffset="0x12E8" Offset="0x0050"/>

<Array Name="gTimeWarpVtx" Count="21" Offset="0x0060">
<CurveAnimation Name="object_efc_tw_000050_Anim" SkelOffset="0x12E8" Offset="0x50"/> <!-- timewarpTransformUpdateIndex -->
<Array Name="object_efc_tw_000060_Vtx" Count="21" Offset="0x60">
<Vtx/>
</Array>
<DList Name="gTimeWarpDL" Offset="0x01B0"/>
<Texture Name="gTimeWarpTex" Format="i8" Width="64" Height="64" Offset="0x02C8"/>
<DList Name="object_efc_tw_0001B0_DL" Offset="0x1B0"/>
<Texture Name="object_efc_tw_0002C8_Tex" Format="i8" Width="64" Height="64" Offset="0x2C8"/>
<Limb Name="object_efc_tw_0012C8_Limb" LimbType="Curve" Offset="0x12C8"/>
<Limb Name="object_efc_tw_0012D4_Limb" LimbType="Curve" Offset="0x12D4"/>
<Skeleton Name="object_efc_tw_0012E8_Skel" Type="Curve" LimbType="Curve" Offset="0x12E8"/> <!-- timewarpLimbList -->
</File>
</Root>
Loading
Loading