1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-07-12 10:54:44 +00:00

Merge commit 'd8f2e9abc6' into doc_pause_menu

This commit is contained in:
Dragorn421 2024-08-01 21:29:41 +02:00
commit 1a5eb5cd92
No known key found for this signature in database
GPG key ID: 381AEBAF3D429335
146 changed files with 5405 additions and 860 deletions

View file

@ -15,10 +15,11 @@ ORIG_COMPILER := 0
# If COMPILER is "gcc", compile with GCC instead of IDO. # If COMPILER is "gcc", compile with GCC instead of IDO.
COMPILER := ido COMPILER := ido
# Target game version. Currently the following versions are supported: # Target game version. Currently the following versions are supported:
# gc-eu GameCube Europe/PAL
# gc-eu-mq GameCube Europe/PAL Master Quest # gc-eu-mq GameCube Europe/PAL Master Quest
# gc-eu-mq-dbg GameCube Europe/PAL Master Quest Debug (default) # gc-eu-mq-dbg GameCube Europe/PAL Master Quest Debug (default)
# The following versions are work-in-progress and not yet matching: # The following versions are work-in-progress and not yet matching:
# gc-eu GameCube Europe/PAL # (none currently)
VERSION := gc-eu-mq-dbg VERSION := gc-eu-mq-dbg
# Number of threads to extract and compress with # Number of threads to extract and compress with
N_THREADS := $(shell nproc) N_THREADS := $(shell nproc)
@ -53,7 +54,6 @@ endif
# Version-specific settings # Version-specific settings
ifeq ($(VERSION),gc-eu) ifeq ($(VERSION),gc-eu)
DEBUG := 0 DEBUG := 0
COMPARE := 0
else ifeq ($(VERSION),gc-eu-mq) else ifeq ($(VERSION),gc-eu-mq)
DEBUG := 0 DEBUG := 0
CPP_DEFINES += -DOOT_MQ CPP_DEFINES += -DOOT_MQ
@ -211,11 +211,12 @@ else
SRC_DIRS := $(shell find src -type d) SRC_DIRS := $(shell find src -type d)
endif endif
ASSET_BIN_DIRS := $(shell find assets/* -type d -not -path "assets/xml*" -not -path "assets/text") # create extracted directories
ASSET_FILES_XML := $(foreach dir,$(ASSET_BIN_DIRS),$(wildcard $(dir)/*.xml)) $(shell mkdir -p $(EXTRACTED_DIR) $(EXTRACTED_DIR)/assets $(EXTRACTED_DIR)/text)
ASSET_BIN_DIRS := $(shell find $(EXTRACTED_DIR)/assets -type d)
ASSET_FILES_BIN := $(foreach dir,$(ASSET_BIN_DIRS),$(wildcard $(dir)/*.bin)) ASSET_FILES_BIN := $(foreach dir,$(ASSET_BIN_DIRS),$(wildcard $(dir)/*.bin))
ASSET_FILES_OUT := $(foreach f,$(ASSET_FILES_XML:.xml=.c),$f) \ ASSET_FILES_OUT := $(foreach f,$(ASSET_FILES_BIN:.bin=.bin.inc.c),$(f:$(EXTRACTED_DIR)/%=$(BUILD_DIR)/%)) \
$(foreach f,$(ASSET_FILES_BIN:.bin=.bin.inc.c),$(BUILD_DIR)/$f) \
$(foreach f,$(wildcard assets/text/*.c),$(BUILD_DIR)/$(f:.c=.o)) $(foreach f,$(wildcard assets/text/*.c),$(BUILD_DIR)/$(f:.c=.o))
UNDECOMPILED_DATA_DIRS := $(shell find data -type d) UNDECOMPILED_DATA_DIRS := $(shell find data -type d)
@ -223,10 +224,12 @@ UNDECOMPILED_DATA_DIRS := $(shell find data -type d)
BASEROM_BIN_FILES := $(wildcard $(EXTRACTED_DIR)/baserom/*) BASEROM_BIN_FILES := $(wildcard $(EXTRACTED_DIR)/baserom/*)
# source files # source files
C_FILES := $(filter-out %.inc.c,$(foreach dir,$(SRC_DIRS) $(ASSET_BIN_DIRS),$(wildcard $(dir)/*.c))) SRC_C_FILES := $(filter-out %.inc.c,$(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c)))
ASSET_C_FILES := $(filter-out %.inc.c,$(foreach dir,$(ASSET_BIN_DIRS),$(wildcard $(dir)/*.c)))
S_FILES := $(foreach dir,$(SRC_DIRS) $(UNDECOMPILED_DATA_DIRS),$(wildcard $(dir)/*.s)) S_FILES := $(foreach dir,$(SRC_DIRS) $(UNDECOMPILED_DATA_DIRS),$(wildcard $(dir)/*.s))
O_FILES := $(foreach f,$(S_FILES:.s=.o),$(BUILD_DIR)/$f) \ O_FILES := $(foreach f,$(S_FILES:.s=.o),$(BUILD_DIR)/$f) \
$(foreach f,$(C_FILES:.c=.o),$(BUILD_DIR)/$f) \ $(foreach f,$(SRC_C_FILES:.c=.o),$(BUILD_DIR)/$f) \
$(foreach f,$(ASSET_C_FILES:.c=.o),$(f:$(EXTRACTED_DIR)/%=$(BUILD_DIR)/%)) \
$(foreach f,$(BASEROM_BIN_FILES),$(BUILD_DIR)/baserom/$(notdir $f).o) $(foreach f,$(BASEROM_BIN_FILES),$(BUILD_DIR)/baserom/$(notdir $f).o)
OVL_RELOC_FILES := $(shell $(CPP) $(CPPFLAGS) $(SPEC) | $(SPEC_REPLACE_VARS) | grep -o '[^"]*_reloc.o' ) OVL_RELOC_FILES := $(shell $(CPP) $(CPPFLAGS) $(SPEC) | $(SPEC_REPLACE_VARS) | grep -o '[^"]*_reloc.o' )
@ -238,11 +241,11 @@ DEP_FILES := $(O_FILES:.o=.asmproc.d) $(OVL_RELOC_FILES:.o=.d)
TEXTURE_FILES_PNG := $(foreach dir,$(ASSET_BIN_DIRS),$(wildcard $(dir)/*.png)) TEXTURE_FILES_PNG := $(foreach dir,$(ASSET_BIN_DIRS),$(wildcard $(dir)/*.png))
TEXTURE_FILES_JPG := $(foreach dir,$(ASSET_BIN_DIRS),$(wildcard $(dir)/*.jpg)) TEXTURE_FILES_JPG := $(foreach dir,$(ASSET_BIN_DIRS),$(wildcard $(dir)/*.jpg))
TEXTURE_FILES_OUT := $(foreach f,$(TEXTURE_FILES_PNG:.png=.inc.c),$(BUILD_DIR)/$f) \ TEXTURE_FILES_OUT := $(foreach f,$(TEXTURE_FILES_PNG:.png=.inc.c),$(f:$(EXTRACTED_DIR)/%=$(BUILD_DIR)/%)) \
$(foreach f,$(TEXTURE_FILES_JPG:.jpg=.jpg.inc.c),$(BUILD_DIR)/$f) \ $(foreach f,$(TEXTURE_FILES_JPG:.jpg=.jpg.inc.c),$(f:$(EXTRACTED_DIR)/%=$(BUILD_DIR)/%))
# create build directories # create build directories
$(shell mkdir -p $(BUILD_DIR)/baserom $(EXTRACTED_DIR)/text $(BUILD_DIR)/assets/text $(foreach dir,$(SRC_DIRS) $(UNDECOMPILED_DATA_DIRS) $(ASSET_BIN_DIRS),$(BUILD_DIR)/$(dir))) $(shell mkdir -p $(BUILD_DIR)/baserom $(BUILD_DIR)/assets/text $(foreach dir,$(SRC_DIRS) $(UNDECOMPILED_DATA_DIRS),$(BUILD_DIR)/$(dir)) $(foreach dir,$(ASSET_BIN_DIRS),$(dir:$(EXTRACTED_DIR)/%=$(BUILD_DIR)/%)))
ifeq ($(COMPILER),ido) ifeq ($(COMPILER),ido)
$(BUILD_DIR)/src/boot/stackcheck.o: OPTFLAGS := -O2 $(BUILD_DIR)/src/boot/stackcheck.o: OPTFLAGS := -O2
@ -356,12 +359,9 @@ clean:
$(RM) -r $(BUILD_DIR) $(RM) -r $(BUILD_DIR)
assetclean: assetclean:
$(RM) -r $(ASSET_BIN_DIRS)
$(RM) -r $(EXTRACTED_DIR) $(RM) -r $(EXTRACTED_DIR)
$(RM) -r $(BUILD_DIR)/assets
$(RM) -r .extracted-assets.json
distclean: assetclean distclean:
$(RM) -r extracted/ $(RM) -r extracted/
$(RM) -r build/ $(RM) -r build/
$(MAKE) -C tools distclean $(MAKE) -C tools distclean
@ -378,10 +378,7 @@ setup: venv
$(PYTHON) tools/decompress_baserom.py $(VERSION) $(PYTHON) tools/decompress_baserom.py $(VERSION)
$(PYTHON) tools/extract_baserom.py $(BASEROM_DIR)/baserom-decompressed.z64 --oot-version $(VERSION) -o $(EXTRACTED_DIR)/baserom $(PYTHON) tools/extract_baserom.py $(BASEROM_DIR)/baserom-decompressed.z64 --oot-version $(VERSION) -o $(EXTRACTED_DIR)/baserom
$(PYTHON) tools/msgdis.py --oot-version $(VERSION) --text-out $(EXTRACTED_DIR)/text/message_data.h --staff-text-out $(EXTRACTED_DIR)/text/message_data_staff.h $(PYTHON) tools/msgdis.py --oot-version $(VERSION) --text-out $(EXTRACTED_DIR)/text/message_data.h --staff-text-out $(EXTRACTED_DIR)/text/message_data_staff.h
# TODO: for now, we only extract assets from the Debug ROM $(PYTHON) extract_assets.py -v $(VERSION) -j$(N_THREADS)
ifeq ($(VERSION),gc-eu-mq-dbg)
$(PYTHON) extract_assets.py -j$(N_THREADS)
endif
disasm: disasm:
$(RM) -r $(EXPECTED_DIR) $(RM) -r $(EXPECTED_DIR)
@ -447,7 +444,11 @@ $(BUILD_DIR)/assets/text/nes_message_data_static.o: $(BUILD_DIR)/assets/text/mes
$(BUILD_DIR)/assets/text/staff_message_data_static.o: $(BUILD_DIR)/assets/text/message_data_staff.enc.h $(BUILD_DIR)/assets/text/staff_message_data_static.o: $(BUILD_DIR)/assets/text/message_data_staff.enc.h
$(BUILD_DIR)/src/code/z_message_PAL.o: $(BUILD_DIR)/assets/text/message_data.enc.h $(BUILD_DIR)/assets/text/message_data_staff.enc.h $(BUILD_DIR)/src/code/z_message_PAL.o: $(BUILD_DIR)/assets/text/message_data.enc.h $(BUILD_DIR)/assets/text/message_data_staff.enc.h
$(BUILD_DIR)/assets/%.o: assets/%.c $(BUILD_DIR)/assets/text/%.o: assets/text/%.c
$(CC) -c $(CFLAGS) $(MIPS_VERSION) $(OPTFLAGS) -o $@ $<
$(OBJCOPY) -O binary $@ $@.bin
$(BUILD_DIR)/assets/%.o: $(EXTRACTED_DIR)/assets/%.c
$(CC) -c $(CFLAGS) $(MIPS_VERSION) $(OPTFLAGS) -o $@ $< $(CC) -c $(CFLAGS) $(MIPS_VERSION) $(OPTFLAGS) -o $@ $<
$(OBJCOPY) -O binary $@ $@.bin $(OBJCOPY) -O binary $@ $@.bin
@ -498,13 +499,13 @@ $(BUILD_DIR)/src/overlays/%_reloc.o: $(BUILD_DIR)/$(SPEC)
$(FADO) $$(tools/reloc_prereq $< $(notdir $*)) -n $(notdir $*) -o $(@:.o=.s) -M $(@:.o=.d) $(FADO) $$(tools/reloc_prereq $< $(notdir $*)) -n $(notdir $*) -o $(@:.o=.s) -M $(@:.o=.d)
$(AS) $(ASFLAGS) $(@:.o=.s) -o $@ $(AS) $(ASFLAGS) $(@:.o=.s) -o $@
$(BUILD_DIR)/%.inc.c: %.png $(BUILD_DIR)/assets/%.inc.c: $(EXTRACTED_DIR)/assets/%.png
$(ZAPD) btex -eh -tt $(subst .,,$(suffix $*)) -i $< -o $@ $(ZAPD) btex -eh -tt $(subst .,,$(suffix $*)) -i $< -o $@
$(BUILD_DIR)/assets/%.bin.inc.c: assets/%.bin $(BUILD_DIR)/assets/%.bin.inc.c: $(EXTRACTED_DIR)/assets/%.bin
$(ZAPD) bblb -eh -i $< -o $@ $(ZAPD) bblb -eh -i $< -o $@
$(BUILD_DIR)/assets/%.jpg.inc.c: assets/%.jpg $(BUILD_DIR)/assets/%.jpg.inc.c: $(EXTRACTED_DIR)/assets/%.jpg
$(ZAPD) bren -eh -i $< -o $@ $(ZAPD) bren -eh -i $< -o $@
-include $(DEP_FILES) -include $(DEP_FILES)

7
assets/.gitignore vendored
View file

@ -1,7 +0,0 @@
*.bin
*.c
*.h
!text/*.[ch]
*.cfg
*.vtx.inc
*.dlist.inc

View file

@ -1,13 +1,13 @@
<Root> <Root>
<File Name="code" OutName="z_fbdemo_circle" RangeStart="0x10ED48" RangeEnd="0x10FF68"> <File Name="code" OutName="z_fbdemo_circle">
<Texture Name="sTransCircleNormalTex" OutName="trans_circle_normal" Format="i8" Width="16" Height="64" Offset="0x10ED48"/> <Texture Name="sTransCircleNormalTex" OutName="trans_circle_normal" Format="i8" Width="16" Height="64" Offset="0x0"/>
<Texture Name="sTransCircleWaveTex" OutName="trans_circle_wave" Format="i8" Width="16" Height="64" Offset="0x10F148"/> <Texture Name="sTransCircleWaveTex" OutName="trans_circle_wave" Format="i8" Width="16" Height="64" Offset="0x400"/>
<Texture Name="sTransCircleRippleTex" OutName="trans_circle_ripple" Format="i8" Width="16" Height="64" Offset="0x10F548"/> <Texture Name="sTransCircleRippleTex" OutName="trans_circle_ripple" Format="i8" Width="16" Height="64" Offset="0x800"/>
<Texture Name="sTransCircleStarburstTex" OutName="trans_circle_starburst" Format="i8" Width="16" Height="64" Offset="0x10F948"/> <Texture Name="sTransCircleStarburstTex" OutName="trans_circle_starburst" Format="i8" Width="16" Height="64" Offset="0xC00"/>
<Array Name="sTransCircleVtx" Count="34" Offset="0x10FD48"> <Array Name="sTransCircleVtx" Count="34" Offset="0x1000">
<Vtx/> <Vtx/>
</Array> </Array>
<!-- ZAPD isn't finding symbols correctly, instead finding them much later in `code`--> <!-- ZAPD isn't finding symbols correctly, instead finding them much later in `code`-->
<!--<DList Name="sTransCircleDL" Offset="0x10FF68"/>--> <!--<DList Name="sTransCircleDL" Offset="0x1220"/>-->
</File> </File>
</Root> </Root>

View file

@ -1,7 +1,7 @@
<Root> <Root>
<File Name="code" OutName="z_fbdemo_triforce" RangeStart="0x10E1D0" RangeEnd="0x10E2A0"> <File Name="code" OutName="z_fbdemo_triforce">
<DList Name="sTransTriforceDL" Offset="0x10E1D0"/> <DList Name="sTransTriforceDL" Offset="0x0"/>
<Array Name="sTransTriforceVtx" Count="10" Offset="0x10E200"> <Array Name="sTransTriforceVtx" Count="10" Offset="0x30">
<Vtx/> <Vtx/>
</Array> </Array>
</File> </File>

View file

@ -1,10 +1,10 @@
<Root> <Root>
<File Name="code" OutName="z_fbdemo_wipe1" RangeStart="0x10E2A0" RangeEnd="0x10EC30"> <File Name="code" OutName="z_fbdemo_wipe1">
<Array Name="sTransWipeVtx" Count="25" Offset="0x10E2A0"> <Array Name="sTransWipeVtx" Count="25" Offset="0x0">
<Vtx/> <Vtx/>
</Array> </Array>
<Texture Name="sTransWipeTex" OutName="trans_wipe" Format="i4" Width="64" Height="64" Offset="0x10E430"/> <Texture Name="sTransWipeTex" OutName="trans_wipe" Format="i4" Width="64" Height="64" Offset="0x190"/>
<!-- ZAPD isn't finding symbols correctly, instead finding them much later in `code`--> <!-- ZAPD isn't finding symbols correctly, instead finding them much later in `code`-->
<!-- <DList Name="sTransWipeDL" Offset="0x10EC30"/> --> <!-- <DList Name="sTransWipeDL" Offset="0x990"/> -->
</File> </File>
</Root> </Root>

View file

@ -1,23 +1,21 @@
<Root> <Root>
<File Name="object_mag" Segment="6"> <File Name="object_mag" Segment="6">
<Texture Name="gTitleZeldaShieldLogoMQTex" OutName="title_zelda_shield_logo_mq" Format="rgba32" Width="160" Height="160" Offset="0x0"/> <Texture Name="gTitleZeldaShieldLogoTex" OutName="title_zelda_shield_logo" Format="rgba32" Width="160" Height="160" Offset="0x0"/>
<Texture Name="gTitleCopyright19982002Tex" OutName="title_copyright_19982002" Format="ia8" Width="160" Height="16" Offset="0x19000"/> <Texture Name="gTitleCopyright19982002Tex" OutName="title_copyright_19982002" Format="ia8" Width="160" Height="16" Offset="0x19000"/>
<Texture Name="gTitleCopyright19982003Tex" OutName="title_copyright_19982003" Format="ia8" Width="160" Height="16" Offset="0x19A00"/> <Texture Name="gTitleCopyright19982003Tex" OutName="title_copyright_19982003" Format="ia8" Width="160" Height="16" Offset="0x19A00"/>
<Texture Name="gTitleMasterQuestSubtitleTex" OutName="title_master_quest_subtitle" Format="rgba32" Width="128" Height="32" Offset="0x1A400"/> <Texture Name="gTitleDiskTex" OutName="title_disk" Format="ia8" Width="48" Height="16" Offset="0x1A400"/>
<Texture Name="gTitleEffectMask00Tex" OutName="title_effect_mask_0_0" Format="i4" Width="64" Height="64" Offset="0x20000"/> <Texture Name="gTitleEffectMask00Tex" OutName="title_effect_mask_0_0" Format="i4" Width="64" Height="64" Offset="0x1A700"/>
<Texture Name="gTitleEffectMask01Tex" OutName="title_effect_mask_0_1" Format="i4" Width="64" Height="64" Offset="0x20800"/> <Texture Name="gTitleEffectMask01Tex" OutName="title_effect_mask_0_1" Format="i4" Width="64" Height="64" Offset="0x1AF00"/>
<Texture Name="gTitleEffectMask02Tex" OutName="title_effect_mask_0_2" Format="i4" Width="64" Height="64" Offset="0x21000"/> <Texture Name="gTitleEffectMask02Tex" OutName="title_effect_mask_0_2" Format="i4" Width="64" Height="64" Offset="0x1B700"/>
<Texture Name="gTitleEffectMask10Tex" OutName="title_effect_mask_1_0" Format="i4" Width="64" Height="64" Offset="0x21800"/> <Texture Name="gTitleEffectMask10Tex" OutName="title_effect_mask_1_0" Format="i4" Width="64" Height="64" Offset="0x1BF00"/>
<Texture Name="gTitleEffectMask11Tex" OutName="title_effect_mask_1_1" Format="i4" Width="64" Height="64" Offset="0x22000"/> <Texture Name="gTitleEffectMask11Tex" OutName="title_effect_mask_1_1" Format="i4" Width="64" Height="64" Offset="0x1C700"/>
<Texture Name="gTitleEffectMask12Tex" OutName="title_effect_mask_1_2" Format="i4" Width="64" Height="64" Offset="0x22800"/> <Texture Name="gTitleEffectMask12Tex" OutName="title_effect_mask_1_2" Format="i4" Width="64" Height="64" Offset="0x1CF00"/>
<Texture Name="gTitleEffectMask20Tex" OutName="title_effect_mask_2_0" Format="i4" Width="64" Height="64" Offset="0x23000"/> <Texture Name="gTitleEffectMask20Tex" OutName="title_effect_mask_2_0" Format="i4" Width="64" Height="64" Offset="0x1D700"/>
<Texture Name="gTitleEffectMask21Tex" OutName="title_effect_mask_2_1" Format="i4" Width="64" Height="64" Offset="0x23800"/> <Texture Name="gTitleEffectMask21Tex" OutName="title_effect_mask_2_1" Format="i4" Width="64" Height="64" Offset="0x1DF00"/>
<Texture Name="gTitleEffectMask22Tex" OutName="title_effect_mask_2_2" Format="i4" Width="64" Height="64" Offset="0x24000"/> <Texture Name="gTitleEffectMask22Tex" OutName="title_effect_mask_2_2" Format="i4" Width="64" Height="64" Offset="0x1E700"/>
<Texture Name="gTitleFlameEffectTex" OutName="title_flame_effect" Format="i8" Width="32" Height="32" Offset="0x24800"/> <Texture Name="gTitleFlameEffectTex" OutName="title_flame_effect" Format="i8" Width="32" Height="32" Offset="0x1EF00"/>
<Texture Name="gTitleTheLegendOfTextTex" OutName="title_the_legend_of_text" Format="i8" Width="72" Height="8" Offset="0x24C00"/> <Texture Name="gTitleTheLegendOfTextTex" OutName="title_the_legend_of_text" Format="i8" Width="72" Height="8" Offset="0x1F300"/>
<Texture Name="gTitleOcarinaOfTimeTMTextTex" OutName="title_ocarina_of_time_tm_text" Format="i8" Width="96" Height="8" Offset="0x24E40"/> <Texture Name="gTitleOcarinaOfTimeTMTextTex" OutName="title_ocarina_of_time_tm_text" Format="i8" Width="96" Height="8" Offset="0x1F540"/>
<Texture Name="gTitleUraLogoTex" OutName="title_ura_logo" Format="rgba32" Width="40" Height="40" Offset="0x1E400"/> <Texture Name="gTitleTitleJPNTex" OutName="title_title_jpn" Format="i8" Width="128" Height="16" Offset="0x1F840"/>
<Texture Name="gTitleDiskTex" OutName="title_disk" Format="ia8" Width="48" Height="16" Offset="0x1FD00"/>
<Texture Name="gTitleTitleJPNTex" OutName="title_title_jpn" Format="i8" Width="128" Height="16" Offset="0x25140"/>
</File> </File>
</Root> </Root>

View file

@ -0,0 +1,23 @@
<Root>
<File Name="object_mag" Segment="6">
<Texture Name="gTitleZeldaShieldLogoTex" OutName="title_zelda_shield_logo" Format="rgba32" Width="160" Height="160" Offset="0x0"/>
<Texture Name="gTitleCopyright19982002Tex" OutName="title_copyright_19982002" Format="ia8" Width="160" Height="16" Offset="0x19000"/>
<Texture Name="gTitleCopyright19982003Tex" OutName="title_copyright_19982003" Format="ia8" Width="160" Height="16" Offset="0x19A00"/>
<Texture Name="gTitleMasterQuestSubtitleTex" OutName="title_master_quest_subtitle" Format="rgba32" Width="128" Height="32" Offset="0x1A400"/>
<Texture Name="gTitleEffectMask00Tex" OutName="title_effect_mask_0_0" Format="i4" Width="64" Height="64" Offset="0x20000"/>
<Texture Name="gTitleEffectMask01Tex" OutName="title_effect_mask_0_1" Format="i4" Width="64" Height="64" Offset="0x20800"/>
<Texture Name="gTitleEffectMask02Tex" OutName="title_effect_mask_0_2" Format="i4" Width="64" Height="64" Offset="0x21000"/>
<Texture Name="gTitleEffectMask10Tex" OutName="title_effect_mask_1_0" Format="i4" Width="64" Height="64" Offset="0x21800"/>
<Texture Name="gTitleEffectMask11Tex" OutName="title_effect_mask_1_1" Format="i4" Width="64" Height="64" Offset="0x22000"/>
<Texture Name="gTitleEffectMask12Tex" OutName="title_effect_mask_1_2" Format="i4" Width="64" Height="64" Offset="0x22800"/>
<Texture Name="gTitleEffectMask20Tex" OutName="title_effect_mask_2_0" Format="i4" Width="64" Height="64" Offset="0x23000"/>
<Texture Name="gTitleEffectMask21Tex" OutName="title_effect_mask_2_1" Format="i4" Width="64" Height="64" Offset="0x23800"/>
<Texture Name="gTitleEffectMask22Tex" OutName="title_effect_mask_2_2" Format="i4" Width="64" Height="64" Offset="0x24000"/>
<Texture Name="gTitleFlameEffectTex" OutName="title_flame_effect" Format="i8" Width="32" Height="32" Offset="0x24800"/>
<Texture Name="gTitleTheLegendOfTextTex" OutName="title_the_legend_of_text" Format="i8" Width="72" Height="8" Offset="0x24C00"/>
<Texture Name="gTitleOcarinaOfTimeTMTextTex" OutName="title_ocarina_of_time_tm_text" Format="i8" Width="96" Height="8" Offset="0x24E40"/>
<Texture Name="gTitleUraLogoTex" OutName="title_ura_logo" Format="rgba32" Width="40" Height="40" Offset="0x1E400"/>
<Texture Name="gTitleDiskTex" OutName="title_disk" Format="ia8" Width="48" Height="16" Offset="0x1FD00"/>
<Texture Name="gTitleTitleJPNTex" OutName="title_title_jpn" Format="i8" Width="128" Height="16" Offset="0x25140"/>
</File>
</Root>

View file

@ -1,11 +1,11 @@
<Root> <Root>
<File Name="ovl_Arrow_Fire" BaseAddress="0x80865d10" RangeStart="0x9D0" RangeEnd="0x1DF0"> <File Name="ovl_Arrow_Fire">
<Texture Name="s1Tex" OutName="fire_tex_1" Format="i8" Width="32" Height="64" Offset="0x9D0" Static="On"/> <Texture Name="s1Tex" OutName="fire_tex_1" Format="i8" Width="32" Height="64" Offset="0x0" Static="On"/>
<Texture Name="s2Tex" OutName="fire_tex_2" Format="i8" Width="32" Height="64" Offset="0x11D0" Static="On"/> <Texture Name="s2Tex" OutName="fire_tex_2" Format="i8" Width="32" Height="64" Offset="0x800" Static="On"/>
<Array Name="sVtx" Count="43" Offset="0x19D0" Static="On"> <Array Name="sVtx" Count="43" Offset="0x1000" Static="On">
<Vtx/> <Vtx/>
</Array> </Array>
<DList Name="sMaterialDL" Offset="0x1C80" Static="On"/> <DList Name="sMaterialDL" Offset="0x12B0" Static="On"/>
<DList Name="sModelDL" Offset="0x1D30" Static="On"/> <DList Name="sModelDL" Offset="0x1360" Static="On"/>
</File> </File>
</Root> </Root>

View file

@ -1,11 +1,11 @@
<Root> <Root>
<File Name="ovl_Arrow_Ice" BaseAddress="0x80867cd0" RangeStart="0x9F0" RangeEnd="0x1E10"> <File Name="ovl_Arrow_Ice">
<Texture Name="s1Tex" OutName="ice_tex_1" Format="i8" Width="32" Height="64" Offset="0x9F0" Static="On"/> <Texture Name="s1Tex" OutName="ice_tex_1" Format="i8" Width="32" Height="64" Offset="0x0" Static="On"/>
<Texture Name="s2Tex" OutName="ice_tex_2" Format="i8" Width="32" Height="64" Offset="0x11F0" Static="On"/> <Texture Name="s2Tex" OutName="ice_tex_2" Format="i8" Width="32" Height="64" Offset="0x800" Static="On"/>
<Array Name="sVtx" Count="43" Offset="0x19F0" Static="On"> <Array Name="sVtx" Count="43" Offset="0x1000" Static="On">
<Vtx/> <Vtx/>
</Array> </Array>
<DList Name="sMaterialDL" Offset="0x1CA0" Static="On"/> <DList Name="sMaterialDL" Offset="0x12B0" Static="On"/>
<DList Name="sModelDL" Offset="0x1D50" Static="On"/> <DList Name="sModelDL" Offset="0x1360" Static="On"/>
</File> </File>
</Root> </Root>

View file

@ -1,11 +1,11 @@
<Root> <Root>
<File Name="ovl_Arrow_Light" BaseAddress="0x80869cb0" RangeStart="0xA00" RangeEnd="0x1E20"> <File Name="ovl_Arrow_Light">
<Texture Name="s1Tex" OutName="light_tex_1" Format="i8" Width="32" Height="64" Offset="0xA00" Static="On"/> <Texture Name="s1Tex" OutName="light_tex_1" Format="i8" Width="32" Height="64" Offset="0x0" Static="On"/>
<Texture Name="s2Tex" OutName="light_tex_2" Format="i8" Width="32" Height="64" Offset="0x1200" Static="On"/> <Texture Name="s2Tex" OutName="light_tex_2" Format="i8" Width="32" Height="64" Offset="0x800" Static="On"/>
<Array Name="sVtx" Count="43" Offset="0x1A00" Static="On"> <Array Name="sVtx" Count="43" Offset="0x1000" Static="On">
<Vtx/> <Vtx/>
</Array> </Array>
<DList Name="sMaterialDL" Offset="0x1CB0" Static="On"/> <DList Name="sMaterialDL" Offset="0x12B0" Static="On"/>
<DList Name="sModelDL" Offset="0x1D60" Static="On"/> <DList Name="sModelDL" Offset="0x1360" Static="On"/>
</File> </File>
</Root> </Root>

View file

@ -1,29 +1,29 @@
<Root> <Root>
<File Name="ovl_Bg_Ganon_Otyuka" BaseAddress="0x80875920" RangeStart="0x11C0" RangeEnd="0x259C"> <File Name="ovl_Bg_Ganon_Otyuka">
<Texture Name="sPlatformTex" OutName="platform_tex" Format="rgba16" Width="32" Height="32" Offset="0x11C0"/> <Texture Name="sPlatformTex" OutName="platform_tex" Format="rgba16" Width="32" Height="32" Offset="0x0"/>
<Array Name="sPlatformTopVtx" Count="4" Offset="0x19C8"> <Array Name="sPlatformTopVtx" Count="4" Offset="0x808">
<Vtx/> <Vtx/>
</Array> </Array>
<DList Name="sPlatformMaterialDL" Offset="0x1A08"/> <DList Name="sPlatformMaterialDL" Offset="0x848"/>
<DList Name="sPlatformTopDL" Offset="0x1A90"/> <DList Name="sPlatformTopDL" Offset="0x8D0"/>
<Array Name="sPlatformBottomVtx" Count="4" Offset="0x1AA8"> <Array Name="sPlatformBottomVtx" Count="4" Offset="0x8E8">
<Vtx/> <Vtx/>
</Array> </Array>
<DList Name="sPlatformBottomDL" Offset="0x1AE8"/> <DList Name="sPlatformBottomDL" Offset="0x928"/>
<Array Name="sPlatformSideVtx" Count="4" Offset="0x01B00"> <Array Name="sPlatformSideVtx" Count="4" Offset="0x940">
<Vtx/> <Vtx/>
</Array> </Array>
<DList Name="sPlatformSideDL" Offset="0x1B40"/> <DList Name="sPlatformSideDL" Offset="0x980"/>
<Texture Name="sFlashTex" OutName="flash_tex" Format="i8" Width="32" Height="64" Offset="0x1B58"/> <Texture Name="sFlashTex" OutName="flash_tex" Format="i8" Width="32" Height="64" Offset="0x998"/>
<Array Name="sFlashVtx" Count="8" Offset="0x2358"> <Array Name="sFlashVtx" Count="8" Offset="0x1198">
<Vtx/> <Vtx/>
</Array> </Array>
<DList Name="sFlashDL" Offset="0x23D8"/> <DList Name="sFlashDL" Offset="0x1218"/>
<Collision Name="sCol" Offset="0x2570"/> <Collision Name="sCol" Offset="0x13B0"/>
</File> </File>
</Root> </Root>

View file

@ -1,10 +1,10 @@
<Root> <Root>
<File Name="ovl_Bg_Jya_Cobra" BaseAddress="0x808958f0" RangeStart="0x1980" RangeEnd="0x19F8"> <File Name="ovl_Bg_Jya_Cobra">
<Array Name="sShadowVtx" Count="4" Offset="0x1980"> <Array Name="sShadowVtx" Count="4" Offset="0x0">
<Vtx/> <Vtx/>
</Array> </Array>
<DList Name="sShadowDL" Offset="0x19C0"/> <DList Name="sShadowDL" Offset="0x40"/>
</File> </File>
</Root> </Root>

View file

@ -1,6 +1,6 @@
<Root> <Root>
<File Name="ovl_Boss_Dodongo" BaseAddress="0x808C1190" RangeStart="0x6238" RangeEnd="0x9238"> <File Name="ovl_Boss_Dodongo">
<Texture Name="sLavaFloorLavaTex" OutName="lava_floor_lava" Format="rgba16" Width="64" Height="64" Offset="0x6238"/> <Texture Name="sLavaFloorLavaTex" OutName="lava_floor_lava" Format="rgba16" Width="64" Height="64" Offset="0x0"/>
<Texture Name="sLavaFloorRockTex" OutName="lava_floor_rock" Format="rgba16" Width="32" Height="64" Offset="0x8238"/> <Texture Name="sLavaFloorRockTex" OutName="lava_floor_rock" Format="rgba16" Width="32" Height="64" Offset="0x2000"/>
</File> </File>
</Root> </Root>

View file

@ -1,53 +1,53 @@
<Root> <Root>
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="assets/objects/gameplay_keep/"/> <ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="assets/objects/gameplay_keep/"/>
<File Name="ovl_Boss_Ganon" BaseAddress="0x808D6870" RangeStart="0xE6B8" RangeEnd="0x211D8"> <File Name="ovl_Boss_Ganon">
<Texture Name="gGanondorfLightning1Tex" OutName="lightning_1" Format="i8" Width="32" Height="96" Offset="0x11600" Static="Off"/> <Texture Name="gGanondorfLightning1Tex" OutName="lightning_1" Format="i8" Width="32" Height="96" Offset="0x2F48" Static="Off"/>
<Texture Name="gGanondorfLightning2Tex" OutName="lightning_2" Format="i8" Width="32" Height="96" Offset="0x12200" Static="Off"/> <Texture Name="gGanondorfLightning2Tex" OutName="lightning_2" Format="i8" Width="32" Height="96" Offset="0x3B48" Static="Off"/>
<Texture Name="gGanondorfLightning3Tex" OutName="lightning_3" Format="i8" Width="32" Height="96" Offset="0x12E00" Static="Off"/> <Texture Name="gGanondorfLightning3Tex" OutName="lightning_3" Format="i8" Width="32" Height="96" Offset="0x4748" Static="Off"/>
<Texture Name="gGanondorfLightning4Tex" OutName="lightning_4" Format="i8" Width="32" Height="96" Offset="0x13A00" Static="Off"/> <Texture Name="gGanondorfLightning4Tex" OutName="lightning_4" Format="i8" Width="32" Height="96" Offset="0x5348" Static="Off"/>
<Texture Name="gGanondorfLightning5Tex" OutName="lightning_5" Format="i8" Width="32" Height="96" Offset="0x14600" Static="Off"/> <Texture Name="gGanondorfLightning5Tex" OutName="lightning_5" Format="i8" Width="32" Height="96" Offset="0x5F48" Static="Off"/>
<Texture Name="gGanondorfLightning6Tex" OutName="lightning_6" Format="i8" Width="32" Height="96" Offset="0x15200" Static="Off"/> <Texture Name="gGanondorfLightning6Tex" OutName="lightning_6" Format="i8" Width="32" Height="96" Offset="0x6B48" Static="Off"/>
<Texture Name="gGanondorfLightning7Tex" OutName="lightning_7" Format="i8" Width="32" Height="96" Offset="0x15E00" Static="Off"/> <Texture Name="gGanondorfLightning7Tex" OutName="lightning_7" Format="i8" Width="32" Height="96" Offset="0x7748" Static="Off"/>
<Texture Name="gGanondorfLightning8Tex" OutName="lightning_8" Format="i8" Width="32" Height="96" Offset="0x16A00" Static="Off"/> <Texture Name="gGanondorfLightning8Tex" OutName="lightning_8" Format="i8" Width="32" Height="96" Offset="0x8348" Static="Off"/>
<Texture Name="gGanondorfLightning9Tex" OutName="lightning_9" Format="i8" Width="32" Height="96" Offset="0x17600" Static="Off"/> <Texture Name="gGanondorfLightning9Tex" OutName="lightning_9" Format="i8" Width="32" Height="96" Offset="0x8F48" Static="Off"/>
<Texture Name="gGanondorfLightning10Tex" OutName="lightning_10" Format="i8" Width="32" Height="96" Offset="0x18200" Static="Off"/> <Texture Name="gGanondorfLightning10Tex" OutName="lightning_10" Format="i8" Width="32" Height="96" Offset="0x9B48" Static="Off"/>
<Texture Name="gGanondorfLightning11Tex" OutName="lightning_11" Format="i8" Width="32" Height="96" Offset="0x18E00" Static="Off"/> <Texture Name="gGanondorfLightning11Tex" OutName="lightning_11" Format="i8" Width="32" Height="96" Offset="0xA748" Static="Off"/>
<Texture Name="gGanondorfLightning12Tex" OutName="lightning_12" Format="i8" Width="32" Height="96" Offset="0x19A00" Static="Off"/> <Texture Name="gGanondorfLightning12Tex" OutName="lightning_12" Format="i8" Width="32" Height="96" Offset="0xB348" Static="Off"/>
<Texture Name="gGanondorfWindowShatterTemplateTex" OutName="window_shatter_template" Format="i8" Width="32" Height="64" Offset="0xFD38" Static="Off"/> <Texture Name="gGanondorfWindowShatterTemplateTex" OutName="window_shatter_template" Format="i8" Width="32" Height="64" Offset="0x1680" Static="Off"/>
<DList Name="gGanondorfLightStreak1DL" Offset="0x1FCF0" Static="Off"/> <DList Name="gGanondorfLightStreak1DL" Offset="0x11638" Static="Off"/>
<DList Name="gGanondorfLightStreak2DL" Offset="0x1FD28" Static="Off"/> <DList Name="gGanondorfLightStreak2DL" Offset="0x11670" Static="Off"/>
<DList Name="gGanondorfLightStreak3DL" Offset="0x1FD60" Static="Off"/> <DList Name="gGanondorfLightStreak3DL" Offset="0x116A8" Static="Off"/>
<DList Name="gGanondorfLightStreak4DL" Offset="0x1FD98" Static="Off"/> <DList Name="gGanondorfLightStreak4DL" Offset="0x116E0" Static="Off"/>
<DList Name="gGanondorfLightStreak5DL" Offset="0x1FDD0" Static="Off"/> <DList Name="gGanondorfLightStreak5DL" Offset="0x11718" Static="Off"/>
<DList Name="gGanondorfLightStreak6DL" Offset="0x1FE08" Static="Off"/> <DList Name="gGanondorfLightStreak6DL" Offset="0x11750" Static="Off"/>
<DList Name="gGanondorfLightStreak7DL" Offset="0x1FE40" Static="Off"/> <DList Name="gGanondorfLightStreak7DL" Offset="0x11788" Static="Off"/>
<DList Name="gGanondorfLightStreak8DL" Offset="0x1FE78" Static="Off"/> <DList Name="gGanondorfLightStreak8DL" Offset="0x117C0" Static="Off"/>
<DList Name="gGanondorfLightStreak9DL" Offset="0x1FEB0" Static="Off"/> <DList Name="gGanondorfLightStreak9DL" Offset="0x117F8" Static="Off"/>
<DList Name="gGanondorfLightStreak10DL" Offset="0x1FEE8" Static="Off"/> <DList Name="gGanondorfLightStreak10DL" Offset="0x11830" Static="Off"/>
<DList Name="gGanondorfLightStreak11DL" Offset="0x1FF20" Static="Off"/> <DList Name="gGanondorfLightStreak11DL" Offset="0x11868" Static="Off"/>
<DList Name="gGanondorfLightStreak12DL" Offset="0x1FF58" Static="Off"/> <DList Name="gGanondorfLightStreak12DL" Offset="0x118A0" Static="Off"/>
<DList Name="gGanondorfShadowSetupDL" Offset="0xE6F8" Static="Off"/> <DList Name="gGanondorfShadowSetupDL" Offset="0x40" Static="Off"/>
<DList Name="gGanondorfShadowModelDL" Offset="0xE718" Static="Off"/> <DList Name="gGanondorfShadowModelDL" Offset="0x60" Static="Off"/>
<DList Name="gGanondorfTriforceDL" Offset="0xF788" Static="Off"/> <DList Name="gGanondorfTriforceDL" Offset="0x10D0" Static="Off"/>
<DList Name="gGanondorfWindowShardMaterialDL" Offset="0xFC78" Static="Off"/> <DList Name="gGanondorfWindowShardMaterialDL" Offset="0x15C0" Static="Off"/>
<DList Name="gGanondorfWindowShardModelDL" Offset="0xFD20" Static="Off"/> <DList Name="gGanondorfWindowShardModelDL" Offset="0x1668" Static="Off"/>
<DList Name="gGanondorfLightBallMaterialDL" Offset="0x11578" Static="Off"/> <DList Name="gGanondorfLightBallMaterialDL" Offset="0x2EC0" Static="Off"/>
<DList Name="gGanondorfSquareDL" Offset="0x115E8" Static="Off"/> <DList Name="gGanondorfSquareDL" Offset="0x2F30" Static="Off"/>
<DList Name="gGanondorfLightningDL" Offset="0x1A640" Static="Off"/> <DList Name="gGanondorfLightningDL" Offset="0xBF88" Static="Off"/>
<DList Name="gGanondorfUnusedDL" Offset="0x1A6F0" Static="Off"/> <DList Name="gGanondorfUnusedDL" Offset="0xC038" Static="Off"/>
<DList Name="gGanondorfLightRayTriDL" Offset="0x1A768" Static="Off"/> <DList Name="gGanondorfLightRayTriDL" Offset="0xC0B0" Static="Off"/>
<DList Name="gGanondorfLightFlecksDL" Offset="0x1C1C0" Static="Off"/> <DList Name="gGanondorfLightFlecksDL" Offset="0xDB08" Static="Off"/>
<DList Name="gGanondorfBigMagicBGCircleDL" Offset="0x1C2B0" Static="Off"/> <DList Name="gGanondorfBigMagicBGCircleDL" Offset="0xDBF8" Static="Off"/>
<DList Name="gGanondorfDotDL" Offset="0x1C358" Static="Off"/> <DList Name="gGanondorfDotDL" Offset="0xDCA0" Static="Off"/>
<DList Name="gGanondorfShockwaveDL" Offset="0x1CDC0" Static="Off"/> <DList Name="gGanondorfShockwaveDL" Offset="0xE708" Static="Off"/>
<DList Name="gGanondorfImpactDarkDL" Offset="0x1DC58" Static="Off"/> <DList Name="gGanondorfImpactDarkDL" Offset="0xF5A0" Static="Off"/>
<DList Name="gGanondorfImpactLightDL" Offset="0x1DD70" Static="Off"/> <DList Name="gGanondorfImpactLightDL" Offset="0xF6B8" Static="Off"/>
<DList Name="gGanondorfShockGlowDL" Offset="0x1EEC8" Static="Off"/> <DList Name="gGanondorfShockGlowDL" Offset="0x10810" Static="Off"/>
<DList Name="gGanondorfLightCoreDL" Offset="0x20228" Static="Off"/> <DList Name="gGanondorfLightCoreDL" Offset="0x11B70" Static="Off"/>
<DList Name="gGanondorfShockDL" Offset="0x202F0" Static="Off"/> <DList Name="gGanondorfShockDL" Offset="0x11C38" Static="Off"/>
<DList Name="gGanondorfVortexDL" Offset="0x210D0" Static="Off"/> <DList Name="gGanondorfVortexDL" Offset="0x12A18" Static="Off"/>
</File> </File>
</Root> </Root>

View file

@ -1,29 +1,29 @@
<Root> <Root>
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="assets/objects/gameplay_keep/"/> <ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="assets/objects/gameplay_keep/"/>
<File Name="ovl_Boss_Ganon2" BaseAddress="0x808FCF40" RangeStart="0xA2C8" RangeEnd="0x10778"> <File Name="ovl_Boss_Ganon2">
<Texture Name="gGanonLightOrbTex" OutName="ganon_light_orb" Format="i8" Width="64" Height="64" Offset="0xA2C8"/> <Texture Name="gGanonLightOrbTex" OutName="ganon_light_orb" Format="i8" Width="64" Height="64" Offset="0x0"/>
<DList Name="gGanonLightOrbMaterialDL" Offset="0xB308"/> <DList Name="gGanonLightOrbMaterialDL" Offset="0x1040"/>
<DList Name="gGanonLightOrbModelDL" Offset="0xB378"/> <DList Name="gGanonLightOrbModelDL" Offset="0x10B0"/>
<DList Name="gGanonShadowMaterialDL" Offset="0xB3D0"/> <DList Name="gGanonShadowMaterialDL" Offset="0x1108"/>
<DList Name="gGanonShadowModelDL" Offset="0xB3F0"/> <DList Name="gGanonShadowModelDL" Offset="0x1128"/>
<Texture Name="gGanonSwordTrailTex" OutName="ganon_sword_trail" Format="i8" Width="32" Height="32" Offset="0xB420"/> <Texture Name="gGanonSwordTrailTex" OutName="ganon_sword_trail" Format="i8" Width="32" Height="32" Offset="0x1158"/>
<Texture Name="gGanonSwordTrailMaskTex" OutName="ganon_sword_trail_mask" Format="i4" Width="32" Height="32" Offset="0xB820"/> <Texture Name="gGanonSwordTrailMaskTex" OutName="ganon_sword_trail_mask" Format="i4" Width="32" Height="32" Offset="0x1558"/>
<Array Name="gGanonSwordTrailVtx" Count="22" Offset="0xBA20"> <Array Name="gGanonSwordTrailVtx" Count="22" Offset="0x1758">
<Vtx/> <Vtx/>
</Array> </Array>
<DList Name="gGanonSwordTrailDL" Offset="0xBB80"/> <DList Name="gGanonSwordTrailDL" Offset="0x18B8"/>
<Texture Name="gGanonTriforceTex" OutName="ganon_triforce" Format="i8" Width="64" Height="64" Offset="0xBC98"/> <Texture Name="gGanonTriforceTex" OutName="ganon_triforce" Format="i8" Width="64" Height="64" Offset="0x19D0"/>
<DList Name="gGanonTriforceDL" Offset="0xCCD8"/> <DList Name="gGanonTriforceDL" Offset="0x2A10"/>
<Texture Name="gGanonLightningTex" OutName="ganon_lightning" Format="i4" Width="32" Height="160" Offset="0xCD58"/> <Texture Name="gGanonLightningTex" OutName="ganon_lightning" Format="i4" Width="32" Height="160" Offset="0x2A90"/>
<DList Name="gGanonLightningDL" Offset="0xD798"/> <!-- Original name might be "efc_fg2_thunder1_modelT" --> <DList Name="gGanonLightningDL" Offset="0x34D0"/> <!-- Original name might be "efc_fg2_thunder1_modelT" -->
<Texture Name="gGanonFireRingTex" OutName="ganon_fire_ring" Format="i8" Width="32" Height="64" Offset="0xD820"/> <Texture Name="gGanonFireRingTex" OutName="ganon_fire_ring" Format="i8" Width="32" Height="64" Offset="0x3558"/>
<DList Name="gGanonFireRingDL" Offset="0xE1C0"/> <!-- Original name is "ganon_fire_modelT" --> <DList Name="gGanonFireRingDL" Offset="0x3EF8"/> <!-- Original name is "ganon_fire_modelT" -->
<Texture Name="gGanonZeldaMagicTex" OutName="ganon_zelda_magic" Format="i8" Width="32" Height="64" Offset="0xE2E0"/> <Texture Name="gGanonZeldaMagicTex" OutName="ganon_zelda_magic" Format="i8" Width="32" Height="64" Offset="0x4018"/>
<DList Name="gGanonZeldaMagicDL" Offset="0xEC40"/> <!-- Original name is "efc_ganon2_hadou_modelT" ("wave motion; undulation; surge") --> <DList Name="gGanonZeldaMagicDL" Offset="0x4978"/> <!-- Original name is "efc_ganon2_hadou_modelT" ("wave motion; undulation; surge") -->
<Texture Name="gGanonMasterSwordShadowTex" OutName="ganon_master_sword_shadow" Format="i8" Width="32" Height="32" Offset="0xED48"/> <Texture Name="gGanonMasterSwordShadowTex" OutName="ganon_master_sword_shadow" Format="i8" Width="32" Height="32" Offset="0x4A80"/>
<DList Name="gGanonMasterSwordShadowDL" Offset="0xF188"/> <!-- Original name is "master_sword_shadow_model" --> <DList Name="gGanonMasterSwordShadowDL" Offset="0x4EC0"/> <!-- Original name is "master_sword_shadow_model" -->
<Texture Name="gGanonMasterSwordPommelTex" OutName="ganon_master_sword_pommel" Format="rgba16" Width="16" Height="16" Offset="0xF208"/> <Texture Name="gGanonMasterSwordPommelTex" OutName="ganon_master_sword_pommel" Format="rgba16" Width="16" Height="16" Offset="0x4F40"/>
<Texture Name="gGanonMasterSwordGuardTex" OutName="ganon_master_sword_guard" Format="rgba16" Width="32" Height="32" Offset="0xF408"/> <Texture Name="gGanonMasterSwordGuardTex" OutName="ganon_master_sword_guard" Format="rgba16" Width="32" Height="32" Offset="0x5140"/>
<DList Name="gGanonMasterSwordDL" Offset="0x103A8"/> <!-- Original name is "master_gn2_swordB_model" --> <DList Name="gGanonMasterSwordDL" Offset="0x60E0"/> <!-- Original name is "master_gn2_swordB_model" -->
</File> </File>
</Root> </Root>

View file

@ -1,8 +1,8 @@
<Root> <Root>
<File Name="ovl_Boss_Sst" BaseAddress="0x8092C5D0" RangeStart="0xA3C0" RangeEnd="0xAD70"> <File Name="ovl_Boss_Sst">
<DList Name="sBodyStaticDList" Offset="0xA3C0"/> <DList Name="sBodyStaticDList" Offset="0x0"/>
<DList Name="sHandTrailDList" Offset="0xA3D8"/> <DList Name="sHandTrailDList" Offset="0x18"/>
<DList Name="sIntroVanishDList" Offset="0xA838"/> <DList Name="sIntroVanishDList" Offset="0x478"/>
<DList Name="sShadowDList" Offset="0xACF0"/> <DList Name="sShadowDList" Offset="0x930"/>
</File> </File>
</Root> </Root>

View file

@ -1,8 +1,8 @@
<Root> <Root>
<File Name="ovl_Demo_Shd" BaseAddress="0x80991230" RangeStart="0x450" RangeEnd="0x23D0"> <File Name="ovl_Demo_Shd">
<DList Name="D_809932D0" Offset="0x20A0"/> <DList Name="D_809932D0" Offset="0x1C50"/>
<DList Name="D_80993390" Offset="0x2160"/> <DList Name="D_80993390" Offset="0x1D10"/>
<DList Name="D_809934B8" Offset="0x2288"/> <DList Name="D_809934B8" Offset="0x1E38"/>
</File> </File>
</Root> </Root>

View file

@ -1,9 +1,9 @@
<Root> <Root>
<File Name="ovl_Effect_Ss_Fhg_Flash" BaseAddress="0x809A4660" RangeStart="0xA60" RangeEnd="0xF18"> <File Name="ovl_Effect_Ss_Fhg_Flash">
<Array Name="sShockVtx" Count="4" Offset="0xA60"> <Array Name="sShockVtx" Count="4" Offset="0x0">
<Vtx/> <Vtx/>
</Array> </Array>
<DList Name="sShockDL" Offset="0xAA0"/> <DList Name="sShockDL" Offset="0x40"/>
<Texture Name="sShockTex" OutName="shock" Format="i8" Width="32" Height="32" Offset="0xB18"/> <Texture Name="sShockTex" OutName="shock" Format="i8" Width="32" Height="32" Offset="0xB8"/>
</File> </File>
</Root> </Root>

View file

@ -1,16 +1,16 @@
<Root> <Root>
<File Name="ovl_Elf_Msg" BaseAddress="0x809ACB20" RangeStart="0x758" RangeEnd="0x9D8"> <File Name="ovl_Elf_Msg">
<DList Name="D_809AD278" Offset="0x758"/> <DList Name="D_809AD278" Offset="0x0"/>
<Array Name="sCylinderVtx" Count="16" Offset="0x798"> <Array Name="sCylinderVtx" Count="16" Offset="0x40">
<Vtx/> <Vtx/>
</Array> </Array>
<DList Name="sCylinderDL" Offset="0x898"/> <DList Name="sCylinderDL" Offset="0x140"/>
<Array Name="sCubeVtx" Count="8" Offset="0x918"> <Array Name="sCubeVtx" Count="8" Offset="0x1C0">
<Vtx/> <Vtx/>
</Array> </Array>
<DList Name="sCubeDL" Offset="0x998"/> <DList Name="sCubeDL" Offset="0x240"/>
</File> </File>
</Root> </Root>

View file

@ -1,11 +1,11 @@
<Root> <Root>
<File Name="ovl_Elf_Msg2" BaseAddress="0x809AD700" RangeStart="0x538" RangeEnd="0x638"> <File Name="ovl_Elf_Msg2">
<DList Name="D_809ADC38" Offset="0x538"/> <DList Name="D_809ADC38" Offset="0x0"/>
<Array Name="sCubeVtx" Count="8" Offset="0x578"> <Array Name="sCubeVtx" Count="8" Offset="0x40">
<Vtx/> <Vtx/>
</Array> </Array>
<DList Name="sCubeDL" Offset="0x5F8"/> <DList Name="sCubeDL" Offset="0xC0"/>
</File> </File>
</Root> </Root>

View file

@ -1,7 +1,7 @@
<Root> <Root>
<File Name="ovl_En_Bili" BaseAddress="0x809BF8A0" RangeStart="0x1E50" RangeEnd="0x1E70"> <File Name="ovl_En_Bili">
<DList Name="D_809C16F0" Offset="0x1E50"/> <DList Name="D_809C16F0" Offset="0x0"/>
<DList Name="D_809C1700" Offset="0x1E60"/> <DList Name="D_809C1700" Offset="0x10"/>
</File> </File>
</Root> </Root>

View file

@ -1,14 +1,14 @@
<Root> <Root>
<File Name="ovl_En_Clear_Tag" BaseAddress="0x809D35B0" RangeStart="0x26F0" RangeEnd="0x89F0"> <File Name="ovl_En_Clear_Tag">
<DList Name="gArwingDL" Offset="0x26F0"/> <DList Name="gArwingDL" Offset="0x0"/>
<DList Name="gArwingLaserDL" Offset="0x6388"/> <DList Name="gArwingLaserDL" Offset="0x3C98"/>
<DList Name="gArwingBackfireDL" Offset="0x6688"/> <DList Name="gArwingBackfireDL" Offset="0x3F98"/>
<DList Name="gArwingDebrisEffectMaterialDL" Offset="0x6A38"/> <DList Name="gArwingDebrisEffectMaterialDL" Offset="0x4348"/>
<DList Name="gArwingDebrisEffectDL" Offset="0x6AB8"/> <DList Name="gArwingDebrisEffectDL" Offset="0x43C8"/>
<DList Name="gArwingFireEffectMaterialDL" Offset="0x7100"/> <DList Name="gArwingFireEffectMaterialDL" Offset="0x4A10"/>
<DList Name="gArwingFireEffectDL" Offset="0x71A8"/> <DList Name="gArwingFireEffectDL" Offset="0x4AB8"/>
<DList Name="gArwingFlashEffectDL" Offset="0x8208"/> <DList Name="gArwingFlashEffectDL" Offset="0x5B18"/>
<DList Name="gArwingFlashEffectGroundDL" Offset="0x84B8"/> <DList Name="gArwingFlashEffectGroundDL" Offset="0x5DC8"/>
<DList Name="gArwingShadowDL" Offset="0x8970"/> <DList Name="gArwingShadowDL" Offset="0x6280"/>
</File> </File>
</Root> </Root>

View file

@ -1,21 +1,21 @@
<Root> <Root>
<File Name="ovl_En_Ganon_Mant" BaseAddress="0x80A23D60" RangeStart="0x1218" RangeEnd="0x4118"> <File Name="ovl_En_Ganon_Mant">
<Texture Name="gMantTex" OutName="mant" Format="rgba16" Width="32" Height="64" Offset="0x1218"/> <Texture Name="gMantTex" OutName="mant" Format="rgba16" Width="32" Height="64" Offset="0x0"/>
<Texture Name="gMantUnusedTex" OutName="mant_unused" Format="rgba16" Width="32" Height="32" Offset="0x2218"/> <Texture Name="gMantUnusedTex" OutName="mant_unused" Format="rgba16" Width="32" Height="32" Offset="0x1000"/>
<Array Name="gMant1Vtx" Count="144" Offset="0x2A18"> <Array Name="gMant1Vtx" Count="144" Offset="0x1800">
<Vtx/> <Vtx/>
</Array> </Array>
<DList Name="gMantMaterialDL" Offset="0x3318"/> <DList Name="gMantMaterialDL" Offset="0x2100"/>
<!-- ! @bug gMantUnusedTex is 32x32 not 32x64, however this dlist is unused --> <!-- ! @bug gMantUnusedTex is 32x32 not 32x64, however this dlist is unused -->
<DList Name="gMantUnusedMaterialDL" Offset="0x3370"/> <DList Name="gMantUnusedMaterialDL" Offset="0x2158"/>
<DList Name="gMantDL" Offset="0x33C8"/> <DList Name="gMantDL" Offset="0x21B0"/>
<Array Name="gMant2Vtx" Count="144" Offset="0x3818"> <Array Name="gMant2Vtx" Count="144" Offset="0x2600">
<Vtx/> <Vtx/>
</Array> </Array>
</File> </File>

View file

@ -1,19 +1,19 @@
<Root> <Root>
<File Name="ovl_En_Ganon_Organ" BaseAddress="0x80A28000" RangeStart="0x3E0" RangeEnd="0x6F70"> <File Name="ovl_En_Ganon_Organ">
<Texture Name="sRoomCarpetTex" OutName="room_carpet" Format="rgba16" Width="64" Height="16" Offset="0x3E8"/> <Texture Name="sRoomCarpetTex" OutName="room_carpet" Format="rgba16" Width="64" Height="16" Offset="0x0"/>
<Texture Name="sRoomOrganPipeTex" OutName="room_organ_pipe" Format="i4" Width="16" Height="64" Offset="0xBE8"/> <Texture Name="sRoomOrganPipeTex" OutName="room_organ_pipe" Format="i4" Width="16" Height="64" Offset="0x800"/>
<Texture Name="sRoomOrganCorbelsTex" OutName="room_organ_corbels" Format="i4" Width="16" Height="16" Offset="0xDE8"/> <Texture Name="sRoomOrganCorbelsTex" OutName="room_organ_corbels" Format="i4" Width="16" Height="16" Offset="0xA00"/>
<Texture Name="sRoomOrganGrillTex" OutName="room_organ_grill" Format="rgba16" Width="16" Height="16" Offset="0xE68"/> <Texture Name="sRoomOrganGrillTex" OutName="room_organ_grill" Format="rgba16" Width="16" Height="16" Offset="0xA80"/>
<Texture Name="sRoomCrestFriezeTex" OutName="room_crest_frieze" Format="i4" Width="32" Height="32" Offset="0x1068"/> <Texture Name="sRoomCrestFriezeTex" OutName="room_crest_frieze" Format="i4" Width="32" Height="32" Offset="0xC80"/>
<Texture Name="sRoomColumnFriezeAndCanopyTex" OutName="room_column_frieze_and_canopy" Format="i4" Width="16" Height="16" Offset="0x1268"/> <Texture Name="sRoomColumnFriezeAndCanopyTex" OutName="room_column_frieze_and_canopy" Format="i4" Width="16" Height="16" Offset="0xE80"/>
<Texture Name="sRoomColumnMetalEdgingTex" OutName="room_metal_edging" Format="rgba16" Width="16" Height="16" Offset="0x12E8"/> <Texture Name="sRoomColumnMetalEdgingTex" OutName="room_metal_edging" Format="rgba16" Width="16" Height="16" Offset="0xF00"/>
<Texture Name="sRoomStatueWingTex" OutName="room_statue_wing" Format="rgba16" Width="16" Height="16" Offset="0x14E8"/> <Texture Name="sRoomStatueWingTex" OutName="room_statue_wing" Format="rgba16" Width="16" Height="16" Offset="0x1100"/>
<Texture Name="sRoomPillarTex" OutName="room_pillar" Format="i8" Width="8" Height="32" Offset="0x16E8"/> <Texture Name="sRoomPillarTex" OutName="room_pillar" Format="i8" Width="8" Height="32" Offset="0x1300"/>
<Texture Name="sRoomOrganKeyboardTex" OutName="room_organ_keyboard" Format="rgba16" Width="32" Height="8" Offset="0x17E8"/> <Texture Name="sRoomOrganKeyboardTex" OutName="room_organ_keyboard" Format="rgba16" Width="32" Height="8" Offset="0x1400"/>
<Texture Name="sRoomOrganKeyEndTex" OutName="room_organ_key_end" Format="rgba16" Width="4" Height="8" Offset="0x19E8"/> <Texture Name="sRoomOrganKeyEndTex" OutName="room_organ_key_end" Format="rgba16" Width="4" Height="8" Offset="0x1600"/>
<Texture Name="sRoomStepTex" OutName="room_step" Format="i4" Width="16" Height="16" Offset="0x1A28"/> <Texture Name="sRoomStepTex" OutName="room_step" Format="i4" Width="16" Height="16" Offset="0x1640"/>
<DList Name="sRoomOrganAndFloorDL" Offset="0x4CA8"/> <DList Name="sRoomOrganAndFloorDL" Offset="0x48C0"/>
<DList Name="sRoomStatuesDL" Offset="0x6AB0"/> <DList Name="sRoomStatuesDL" Offset="0x66C8"/>
</File> </File>
</Root> </Root>

View file

@ -1,8 +1,8 @@
<Root> <Root>
<File Name="ovl_En_Holl" BaseAddress="0x80A58C10" RangeStart="0xE78" RangeEnd="0xEE0"> <File Name="ovl_En_Holl">
<Array Name="sPlaneVtx" Count="4" Offset="0xE78"> <Array Name="sPlaneVtx" Count="4" Offset="0x0">
<Vtx/> <Vtx/>
</Array> </Array>
<DList Name="sPlaneDL" Offset="0xEB8"/> <DList Name="sPlaneDL" Offset="0x40"/>
</File> </File>
</Root> </Root>

View file

@ -1,38 +1,38 @@
<Root> <Root>
<File Name="ovl_En_Jsjutan" BaseAddress="0x80A897A0" RangeStart="0x12F8" RangeEnd="0x4C88"> <File Name="ovl_En_Jsjutan">
<!-- D_80A8AA98. Carpet texture. --> <!-- D_80A8AA98. Carpet texture. -->
<Texture Name="sCarpetTex" OutName="carpet" Format="rgba16" Width="32" Height="64" Offset="0x12F8"/> <Texture Name="sCarpetTex" OutName="carpet" Format="rgba16" Width="32" Height="64" Offset="0x0"/>
<!-- D_80A8BA98. Carpet's shadow vertices. Same vertex type as sShadowEvenVtx. Used when gameplayFrames is odd. --> <!-- D_80A8BA98. Carpet's shadow vertices. Same vertex type as sShadowEvenVtx. Used when gameplayFrames is odd. -->
<Array Name="gShadowOddVtx" Count="144" Offset="0x22F8"> <Array Name="gShadowOddVtx" Count="144" Offset="0x1000">
<Vtx/> <Vtx/>
</Array> </Array>
<!-- D_80A8C398. Carpet's shadow vertices. Same vertex type as gShadowOddVtx. Used when gameplayFrames is even. --> <!-- D_80A8C398. Carpet's shadow vertices. Same vertex type as gShadowOddVtx. Used when gameplayFrames is even. -->
<Array Name="sShadowEvenVtx" Count="144" Offset="0x2BF8"> <Array Name="sShadowEvenVtx" Count="144" Offset="0x1900">
<Vtx/> <Vtx/>
</Array> </Array>
<!-- D_80A8CC98. Carpet vertices. Same vertex type as sCarpetEvenVtx. Used when gameplayFrames is odd. --> <!-- D_80A8CC98. Carpet vertices. Same vertex type as sCarpetEvenVtx. Used when gameplayFrames is odd. -->
<Array Name="sCarpetOddVtx" Count="144" Offset="0x34F8"> <Array Name="sCarpetOddVtx" Count="144" Offset="0x2200">
<Vtx/> <Vtx/>
</Array> </Array>
<!-- D_80A8E610. Variable declared in `.bss` of EnJsjutan. Used by sShadowMaterialDL --> <!-- D_80A8E610. Variable declared in `.bss` of EnJsjutan. Used by sShadowMaterialDL -->
<Symbol Name="sShadowTex" Type="u8" TypeSize="1" Count="0x800" Offset="0x4E70"/> <Symbol Name="sShadowTex" Type="u8" TypeSize="1" Count="0x800" Offset="0x3B78"/>
<!-- D_80A8D598. Draws the carpet's texture. --> <!-- D_80A8D598. Draws the carpet's texture. -->
<DList Name="sCarpetMaterialDL" Offset="0x3DF8"/> <DList Name="sCarpetMaterialDL" Offset="0x2B00"/>
<!-- D_80A8D618. Draws the carpet's shadow texture. --> <!-- D_80A8D618. Draws the carpet's shadow texture. -->
<DList Name="sShadowMaterialDL" Offset="0x3E78"/> <DList Name="sShadowMaterialDL" Offset="0x2B80"/>
<!-- D_80A8D688. Draws vertices in segment 0x0C. --> <!-- D_80A8D688. Draws vertices in segment 0x0C. -->
<DList Name="sModelDL" Offset="0x3EE8"/> <DList Name="sModelDL" Offset="0x2BF0"/>
<!-- D_80A8DAB8. Carpet vertices. Same vertex type as sCarpetOddVtx. Used when gameplayFrames is even. --> <!-- D_80A8DAB8. Carpet vertices. Same vertex type as sCarpetOddVtx. Used when gameplayFrames is even. -->
<Array Name="sCarpetEvenVtx" Count="144" Offset="0x4318"> <Array Name="sCarpetEvenVtx" Count="144" Offset="0x3020">
<Vtx/> <Vtx/>
</Array> </Array>
<!-- D_80A8E400 --> <!-- D_80A8E400 -->
<Collision Name="sCol" Offset="0x4C60"/> <Collision Name="sCol" Offset="0x3968"/>
</File> </File>
</Root> </Root>

View file

@ -1,8 +1,8 @@
<Root> <Root>
<File Name="ovl_En_Kanban" BaseAddress="0x80A91FA0" RangeStart="0x2F80" RangeEnd="0x3040"> <File Name="ovl_En_Kanban">
<Array Name="sShadowVtx" Count="4" Offset="0x2F80"> <Array Name="sShadowVtx" Count="4" Offset="0x0">
<Vtx/> <Vtx/>
</Array> </Array>
<DList Name="sShadowDL" Offset="0x2FC0"/> <DList Name="sShadowDL" Offset="0x40"/>
</File> </File>
</Root> </Root>

View file

@ -1,9 +1,9 @@
<Root> <Root>
<File Name="ovl_En_Sda" BaseAddress="0x80AF8E20" RangeStart="0x1578" RangeEnd="0x1608"> <File Name="ovl_En_Sda">
<Array Name="D_80AFA398" Count="4" Offset="0x1578"> <Array Name="D_80AFA398" Count="4" Offset="0x0">
<Vtx/> <Vtx/>
</Array> </Array>
<DList Name="D_80AFA3D8" Offset="0x15B8"/> <DList Name="D_80AFA3D8" Offset="0x40"/>
<DList Name="D_80AFA3F8" Offset="0x15D8"/> <DList Name="D_80AFA3F8" Offset="0x60"/>
</File> </File>
</Root> </Root>

View file

@ -1,8 +1,8 @@
<Root> <Root>
<File Name="ovl_En_Ssh" BaseAddress="0x80B02270" RangeStart="0x2150" RangeEnd="0x21E0"> <File Name="ovl_En_Ssh">
<Array Name="D_80B043C0" Count="4" Offset="0x2150"> <Array Name="D_80B043C0" Count="4" Offset="0x0">
<Vtx/> <Vtx/>
</Array> </Array>
<DList Name="D_80B04400" Offset="0x2190"/> <DList Name="D_80B04400" Offset="0x40"/>
</File> </File>
</Root> </Root>

View file

@ -1,8 +1,8 @@
<Root> <Root>
<File Name="ovl_En_St" BaseAddress="0x80B04890" RangeStart="0x26B0" RangeEnd="0x2740"> <File Name="ovl_En_St">
<Array Name="sSkulltulaUnusedVtx" Count="4" Offset="0x26B0"> <Array Name="sSkulltulaUnusedVtx" Count="4" Offset="0x0">
<Vtx/> <Vtx/>
</Array> </Array>
<DList Name="sSkulltulaUnusedDL" Offset="0x26F0"/> <DList Name="sSkulltulaUnusedDL" Offset="0x40"/>
</File> </File>
</Root> </Root>

View file

@ -1,15 +1,15 @@
<Root> <Root>
<File Name="ovl_En_Sth" BaseAddress="0x80B07540" RangeStart="0xEF0" RangeEnd="0x3EC4"> <File Name="ovl_En_Sth">
<Texture Name="sNoseTex" OutName="nose" Format="rgba16" Width="8" Height="8" Offset="0xEF0"/> <Texture Name="sNoseTex" OutName="nose" Format="rgba16" Width="8" Height="8" Offset="0x0"/>
<Texture Name="sHair1Tex" OutName="hair_1" Format="rgba16" Width="8" Height="16" Offset="0xF70"/> <Texture Name="sHair1Tex" OutName="hair_1" Format="rgba16" Width="8" Height="16" Offset="0x80"/>
<Texture Name="sEar1Tex" OutName="ear_1" Format="rgba16" Width="8" Height="8" Offset="0x1070"/> <Texture Name="sEar1Tex" OutName="ear_1" Format="rgba16" Width="8" Height="8" Offset="0x180"/>
<Texture Name="sEyeTex" OutName="eye" Format="rgba16" Width="32" Height="32" Offset="0x10F0"/> <Texture Name="sEyeTex" OutName="eye" Format="rgba16" Width="32" Height="32" Offset="0x200"/>
<Texture Name="sMouthTex" OutName="mouth" Format="rgba16" Width="32" Height="16" Offset="0x18F0"/> <Texture Name="sMouthTex" OutName="mouth" Format="rgba16" Width="32" Height="16" Offset="0xA00"/>
<Texture Name="sEar2Tex" OutName="ear_2" Format="rgba16" Width="8" Height="8" Offset="0x1CF0"/> <Texture Name="sEar2Tex" OutName="ear_2" Format="rgba16" Width="8" Height="8" Offset="0xE00"/>
<Texture Name="sHair2Tex" OutName="hair_2" Format="rgba16" Width="8" Height="16" Offset="0x1D70"/> <Texture Name="sHair2Tex" OutName="hair_2" Format="rgba16" Width="8" Height="16" Offset="0xE80"/>
<DList Name="D_80B0A050" Offset="0x2B10"/> <DList Name="D_80B0A050" Offset="0x1C20"/>
<DList Name="D_80B0A3C0" Offset="0x2E80"/> <DList Name="D_80B0A3C0" Offset="0x1F90"/>
<Animation Name="sChildDanceAnim" Offset="0x3620"/> <Animation Name="sChildDanceAnim" Offset="0x2730"/>
<Animation Name="sParentDanceAnim" Offset="0x3EB4"/> <Animation Name="sParentDanceAnim" Offset="0x2FC4"/>
</File> </File>
</Root> </Root>

View file

@ -1,17 +1,17 @@
<Root> <Root>
<File Name="ovl_End_Title" BaseAddress="0x80B65720" RangeStart="0x780" RangeEnd="0x4128"> <File Name="ovl_End_Title">
<Texture Name="sTheLegendOfZeldaTex" OutName="the_legend_of_zelda" Format="ia8" Width="120" Height="24" Offset="0x780"/> <Texture Name="sTheLegendOfZeldaTex" OutName="the_legend_of_zelda" Format="ia8" Width="120" Height="24" Offset="0x0"/>
<Texture Name="sOcarinaOfTimeTex" OutName="ocarina_of_time" Format="ia8" Width="112" Height="16" Offset="0x12C0"/> <Texture Name="sOcarinaOfTimeTex" OutName="ocarina_of_time" Format="ia8" Width="112" Height="16" Offset="0xB40"/>
<Texture Name="sTheEndTex" OutName="the_end" Format="ia8" Width="80" Height="24" Offset="0x19C0"/> <Texture Name="sTheEndTex" OutName="the_end" Format="ia8" Width="80" Height="24" Offset="0x1240"/>
<Texture Name="sNintendoLeftTex" OutName="nintendo_left" Format="ia8" Width="64" Height="48" Offset="0x2140"/> <Texture Name="sNintendoLeftTex" OutName="nintendo_left" Format="ia8" Width="64" Height="48" Offset="0x19C0"/>
<Texture Name="sNintendoRightTex" OutName="nintendo_right" Format="ia8" Width="64" Height="48" Offset="0x2D40"/> <Texture Name="sNintendoRightTex" OutName="nintendo_right" Format="ia8" Width="64" Height="48" Offset="0x25C0"/>
<Texture Name="sPresentedByTex" OutName="presented_by" Format="ia8" Width="96" Height="16" Offset="0x3940"/> <Texture Name="sPresentedByTex" OutName="presented_by" Format="ia8" Width="96" Height="16" Offset="0x31C0"/>
<Array Name="sTriforceVtx" Count="6" Offset="0x3F40"> <Array Name="sTriforceVtx" Count="6" Offset="0x37C0">
<Vtx/> <Vtx/>
</Array> </Array>
<DList Name="sTriforceDL" Offset="0x3FA0"/> <DList Name="sTriforceDL" Offset="0x3820"/>
<DList Name="sPresentedByNintendoDL" Offset="0x4000"/> <DList Name="sPresentedByNintendoDL" Offset="0x3880"/>
</File> </File>
</Root> </Root>

View file

@ -1,28 +0,0 @@
<Root>
<File Name="ovl_file_choose" BaseAddress="0x80803D40" RangeStart="0xDE70" RangeEnd="0xE6B0">
<Array Name="D_80811BB0" Count="24" Offset="0xDE70" Static="Off">
<Vtx/>
</Array>
<Array Name="D_80811D30" Count="16" Offset="0xDFF0" Static="Off">
<Vtx/>
</Array>
<Array Name="D_80811E30" Count="16" Offset="0xE0F0" Static="Off">
<Vtx/>
</Array>
<Array Name="D_80811F30" Count="32" Offset="0xE1F0" Static="Off">
<Vtx/>
</Array>
<Array Name="D_80812130" Count="32" Offset="0xE3F0" Static="Off">
<Vtx/>
</Array>
<Array Name="gOptionsDividerTopVtx" Count="4" Offset="0xE5F0" Static="Off">
<Vtx/>
</Array>
<Array Name="gOptionsDividerMiddleVtx" Count="4" Offset="0xE630" Static="Off">
<Vtx/>
</Array>
<Array Name="gOptionsDividerBottomVtx" Count="4" Offset="0xE670" Static="Off">
<Vtx/>
</Array>
</File>
</Root>

View file

@ -1,13 +1,13 @@
<Root> <Root>
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="assets/objects/gameplay_keep/"/> <ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="assets/objects/gameplay_keep/"/>
<File Name="ovl_Magic_Dark" BaseAddress="0x80B873D0" RangeStart="0xD10" RangeEnd="0x1740"> <File Name="ovl_Magic_Dark">
<Texture Name="sDiamondTex" OutName="diamond_texture" Format="i8" Width="32" Height="64" Offset="0xD10"/> <Texture Name="sDiamondTex" OutName="diamond_texture" Format="i8" Width="32" Height="64" Offset="0x0"/>
<Array Name="sDiamondVtx" Count="20" Offset="0x1510"> <Array Name="sDiamondVtx" Count="20" Offset="0x800">
<Vtx/> <Vtx/>
</Array> </Array>
<DList Name="sDiamondMaterialDL" Offset="0x1650"/> <DList Name="sDiamondMaterialDL" Offset="0x940"/>
<DList Name="sDiamondModelDL" Offset="0x1700"/> <DList Name="sDiamondModelDL" Offset="0x9F0"/>
</File> </File>
</Root> </Root>

View file

@ -1,10 +1,10 @@
<Root> <Root>
<File Name="ovl_Magic_Fire" BaseAddress="0x80B88D70" RangeStart="0xB90" RangeEnd="0x21E0"> <File Name="ovl_Magic_Fire">
<Texture Name="sTex" OutName="dins_fire" Format="i8" Width="64" Height="64" Offset="0xB90"/> <Texture Name="sTex" OutName="dins_fire" Format="i8" Width="64" Height="64" Offset="0x0"/>
<Array Name="sSphereVtx" Count="76" Offset="0x1B90"> <Array Name="sSphereVtx" Count="76" Offset="0x1000">
<Vtx/> <Vtx/>
</Array> </Array>
<DList Name="sMaterialDL" Offset="0x2050"/> <DList Name="sMaterialDL" Offset="0x14C0"/>
<DList Name="sModelDL" Offset="0x2078"/> <DList Name="sModelDL" Offset="0x14E8"/>
</File> </File>
</Root> </Root>

View file

@ -1,15 +1,15 @@
<Root> <Root>
<File Name="ovl_Magic_Wind" BaseAddress="0x80B8B100" RangeStart="0x780" RangeEnd="0x1C98"> <File Name="ovl_Magic_Wind">
<Skeleton Name="sSkel" Type="Curve" LimbType="Curve" Offset="0x1C90"/> <Skeleton Name="sSkel" Type="Curve" LimbType="Curve" Offset="0x1510"/>
<CurveAnimation Name="sAnim" SkelOffset="0x1C90" Offset="0x1C50"/> <CurveAnimation Name="sAnim" SkelOffset="0x1510" Offset="0x14D0"/>
<Limb Name="sRootLimb" LimbType="Curve" Offset="0x1C60"/> <Limb Name="sRootLimb" LimbType="Curve" Offset="0x14E0"/>
<Limb Name="sInnerCylinderLimb" LimbType="Curve" Offset="0x1C6C"/> <Limb Name="sInnerCylinderLimb" LimbType="Curve" Offset="0x14EC"/>
<Limb Name="sOuterCylinderLimb" LimbType="Curve" Offset="0x1C78"/> <Limb Name="sOuterCylinderLimb" LimbType="Curve" Offset="0x14F8"/>
<Array Name="sCylinderVtx" Count="36" Offset="0x780"> <Array Name="sCylinderVtx" Count="36" Offset="0x0">
<Vtx/> <Vtx/>
</Array> </Array>
<Texture Name="sTex" OutName="magic_wind" Format="i8" Width="64" Height="64" Offset="0x9C0"/> <Texture Name="sTex" OutName="magic_wind" Format="i8" Width="64" Height="64" Offset="0x240"/>
<DList Name="sInnerCylinderDL" Offset="0x19C0"/> <DList Name="sInnerCylinderDL" Offset="0x1240"/>
<DList Name="sOuterCylinderDL" Offset="0x1AC8"/> <DList Name="sOuterCylinderDL" Offset="0x1348"/>
</File> </File>
</Root> </Root>

View file

@ -1,10 +1,10 @@
<Root> <Root>
<File Name="ovl_Oceff_Spot" BaseAddress="0x80BA6070" RangeStart="0x7F0" RangeEnd="0xEC8"> <File Name="ovl_Oceff_Spot">
<Texture Name="sTex" OutName="sun_song_effect" Format="i8" Width="32" Height="32" Offset="0x7F0"/> <Texture Name="sTex" OutName="sun_song_effect" Format="i8" Width="32" Height="32" Offset="0x0"/>
<Array Name="sCylinderVtx" Count="27" Offset="0xBF0"> <Array Name="sCylinderVtx" Count="27" Offset="0x400">
<Vtx/> <Vtx/>
</Array> </Array>
<DList Name="sCylinderMaterialDL" Offset="0xDA0"/> <DList Name="sCylinderMaterialDL" Offset="0x5B0"/>
<DList Name="sCylinderModelDL" Offset="0xE38"/> <DList Name="sCylinderModelDL" Offset="0x648"/>
</File> </File>
</Root> </Root>

View file

@ -1,12 +1,12 @@
<Root> <Root>
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="assets/objects/gameplay_keep/"/> <ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="assets/objects/gameplay_keep/"/>
<File Name="ovl_Oceff_Storm" BaseAddress="0x80BA70E0" RangeStart="0x7B0" RangeEnd="0x1B40"> <File Name="ovl_Oceff_Storm">
<Texture Name="sTex" OutName="song_of_storms_effect" Format="i8" Width="64" Height="64" Offset="0x7B0"/> <Texture Name="sTex" OutName="song_of_storms_effect" Format="i8" Width="64" Height="64" Offset="0x0"/>
<DList Name="sMaterialDL" Offset="0x17B0"/> <DList Name="sMaterialDL" Offset="0x1000"/>
<Array Name="sCylinderVtx" Count="27" Offset="0x1858"> <Array Name="sCylinderVtx" Count="27" Offset="0x10A8">
<Vtx/> <Vtx/>
</Array> </Array>
<DList Name="sCylinderMaterialDL" Offset="0x1A08"/> <DList Name="sCylinderMaterialDL" Offset="0x1258"/>
<DList Name="sCylinderModelDL" Offset="0x1AB0"/> <DList Name="sCylinderModelDL" Offset="0x1300"/>
</File> </File>
</Root> </Root>

View file

@ -1,10 +1,10 @@
<Root> <Root>
<File Name="ovl_Oceff_Wipe" BaseAddress="0x80BA8D90" RangeStart="0x550" RangeEnd="0xD10"> <File Name="ovl_Oceff_Wipe">
<Texture Name="sTex" OutName="oceff" Format="i8" Width="32" Height="32" Offset="0x550"/> <Texture Name="sTex" OutName="oceff" Format="i8" Width="32" Height="32" Offset="0x0"/>
<Array Name="sFrustumVtx" Count="40" Offset="0x950"> <Array Name="sFrustumVtx" Count="40" Offset="0x400">
<Vtx/> <Vtx/>
</Array> </Array>
<DList Name="sMaterialDL" Offset="0xBD0"/> <DList Name="sMaterialDL" Offset="0x680"/>
<DList Name="sFrustumDL" Offset="0xC58"/> <DList Name="sFrustumDL" Offset="0x708"/>
</File> </File>
</Root> </Root>

View file

@ -1,11 +1,11 @@
<Root> <Root>
<File Name="ovl_Oceff_Wipe2" BaseAddress="0x80BA9BB0" RangeStart="0x480" RangeEnd="0x16E8"> <File Name="ovl_Oceff_Wipe2">
<Texture Name="s1Tex" OutName="eponas_song_effect_1" Format="i4" Width="64" Height="64" Offset="0x480"/> <Texture Name="s1Tex" OutName="eponas_song_effect_1" Format="i4" Width="64" Height="64" Offset="0x0"/>
<Texture Name="s2Tex" OutName="eponas_song_effect_2" Format="i4" Width="64" Height="64" Offset="0xC80"/> <Texture Name="s2Tex" OutName="eponas_song_effect_2" Format="i4" Width="64" Height="64" Offset="0x800"/>
<Array Name="sFrustumVtx" Count="22" Offset="0x1480"> <Array Name="sFrustumVtx" Count="22" Offset="0x1000">
<Vtx/> <Vtx/>
</Array> </Array>
<DList Name="sMaterialDL" Offset="0x15E0"/> <DList Name="sMaterialDL" Offset="0x1160"/>
<DList Name="sFrustumDL" Offset="0x1688"/> <DList Name="sFrustumDL" Offset="0x1208"/>
</File> </File>
</Root> </Root>

View file

@ -1,10 +1,10 @@
<Root> <Root>
<File Name="ovl_Oceff_Wipe3" BaseAddress="0x80BAB3F0" RangeStart="0x480" RangeEnd="0x16C8"> <File Name="ovl_Oceff_Wipe3">
<Texture Name="sTex" OutName="saria_song_effect" Format="i8" Width="64" Height="64" Offset="0x480"/> <Texture Name="sTex" OutName="saria_song_effect" Format="i8" Width="64" Height="64" Offset="0x0"/>
<Array Name="sFrustumVtx" Count="22" Offset="0x1480"> <Array Name="sFrustumVtx" Count="22" Offset="0x1000">
<Vtx/> <Vtx/>
</Array> </Array>
<DList Name="sMaterialDL" Offset="0x15E0"/> <DList Name="sMaterialDL" Offset="0x1160"/>
<DList Name="sFrustumDL" Offset="0x1668"/> <DList Name="sFrustumDL" Offset="0x11E8"/>
</File> </File>
</Root> </Root>

View file

@ -1,12 +1,12 @@
<Root> <Root>
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="assets/objects/gameplay_keep/"/> <ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="assets/objects/gameplay_keep/"/>
<File Name="ovl_Oceff_Wipe4" BaseAddress="0x80BACC10" RangeStart="0x460" RangeEnd="0xF48"> <File Name="ovl_Oceff_Wipe4">
<Texture Name="sTex" OutName="scarecrow_song_effect" Format="i8" Width="32" Height="64" Offset="0x460"/> <Texture Name="sTex" OutName="scarecrow_song_effect" Format="i8" Width="32" Height="64" Offset="0x0"/>
<Array Name="sFrustumVtx" Count="22" Offset="0xC60"> <Array Name="sFrustumVtx" Count="22" Offset="0x800">
<Vtx/> <Vtx/>
</Array> </Array>
<DList Name="sMaterialDL" Offset="0xDC0"/> <DList Name="sMaterialDL" Offset="0x960"/>
<DList Name="sUnusedMaterialDL" Offset="0xE28"/> <DList Name="sUnusedMaterialDL" Offset="0x9C8"/>
<DList Name="sMaterial2DL" Offset="0xE90"/> <DList Name="sMaterial2DL" Offset="0xA30"/>
</File> </File>
</Root> </Root>

View file

@ -0,0 +1,28 @@
<Root>
<File Name="ovl_file_choose">
<Array Name="D_80811BB0" Count="24" Offset="0x0" Static="Off">
<Vtx/>
</Array>
<Array Name="D_80811D30" Count="16" Offset="0x180" Static="Off">
<Vtx/>
</Array>
<Array Name="D_80811E30" Count="16" Offset="0x280" Static="Off">
<Vtx/>
</Array>
<Array Name="D_80811F30" Count="32" Offset="0x380" Static="Off">
<Vtx/>
</Array>
<Array Name="D_80812130" Count="32" Offset="0x580" Static="Off">
<Vtx/>
</Array>
<Array Name="gOptionsDividerTopVtx" Count="4" Offset="0x780" Static="Off">
<Vtx/>
</Array>
<Array Name="gOptionsDividerMiddleVtx" Count="4" Offset="0x7C0" Static="Off">
<Vtx/>
</Array>
<Array Name="gOptionsDividerBottomVtx" Count="4" Offset="0x800" Static="Off">
<Vtx/>
</Array>
</File>
</Root>

View file

@ -0,0 +1,76 @@
<Root>
<File Name="Bmori1_scene" Segment="2">
<Texture Name="gForestTempleDayEntranceTex" OutName="day_entrance" Format="ia16" Width="8" Height="128" Offset="0x14D90"/>
<Texture Name="gForestTempleNightEntranceTex" OutName="night_entrance" Format="ia16" Width="8" Height="128" Offset="0x14590"/>
<Scene Name="Bmori1_scene" Offset="0x0"/>
</File>
<File Name="Bmori1_room_0" Segment="3">
<Room Name="Bmori1_room_0" Offset="0x0"/>
</File>
<File Name="Bmori1_room_1" Segment="3">
<Room Name="Bmori1_room_1" Offset="0x0"/>
</File>
<File Name="Bmori1_room_2" Segment="3">
<Room Name="Bmori1_room_2" Offset="0x0"/>
</File>
<File Name="Bmori1_room_3" Segment="3">
<Room Name="Bmori1_room_3" Offset="0x0"/>
</File>
<File Name="Bmori1_room_4" Segment="3">
<Room Name="Bmori1_room_4" Offset="0x0"/>
</File>
<File Name="Bmori1_room_5" Segment="3">
<Room Name="Bmori1_room_5" Offset="0x0"/>
</File>
<File Name="Bmori1_room_6" Segment="3">
<Room Name="Bmori1_room_6" Offset="0x0"/>
</File>
<File Name="Bmori1_room_7" Segment="3">
<Room Name="Bmori1_room_7" Offset="0x0"/>
</File>
<File Name="Bmori1_room_8" Segment="3">
<Room Name="Bmori1_room_8" Offset="0x0"/>
</File>
<File Name="Bmori1_room_9" Segment="3">
<Room Name="Bmori1_room_9" Offset="0x0"/>
</File>
<File Name="Bmori1_room_10" Segment="3">
<Room Name="Bmori1_room_10" Offset="0x0"/>
</File>
<File Name="Bmori1_room_11" Segment="3">
<Room Name="Bmori1_room_11" Offset="0x0"/>
</File>
<File Name="Bmori1_room_12" Segment="3">
<Room Name="Bmori1_room_12" Offset="0x0"/>
</File>
<File Name="Bmori1_room_13" Segment="3">
<Room Name="Bmori1_room_13" Offset="0x0"/>
</File>
<File Name="Bmori1_room_14" Segment="3">
<Room Name="Bmori1_room_14" Offset="0x0"/>
</File>
<File Name="Bmori1_room_15" Segment="3">
<Room Name="Bmori1_room_15" Offset="0x0"/>
</File>
<File Name="Bmori1_room_16" Segment="3">
<Room Name="Bmori1_room_16" Offset="0x0"/>
</File>
<File Name="Bmori1_room_17" Segment="3">
<Room Name="Bmori1_room_17" Offset="0x0"/>
</File>
<File Name="Bmori1_room_18" Segment="3">
<Room Name="Bmori1_room_18" Offset="0x0"/>
</File>
<File Name="Bmori1_room_19" Segment="3">
<Room Name="Bmori1_room_19" Offset="0x0"/>
</File>
<File Name="Bmori1_room_20" Segment="3">
<Room Name="Bmori1_room_20" Offset="0x0"/>
</File>
<File Name="Bmori1_room_21" Segment="3">
<Room Name="Bmori1_room_21" Offset="0x0"/>
</File>
<File Name="Bmori1_room_22" Segment="3">
<Room Name="Bmori1_room_22" Offset="0x0"/>
</File>
</Root>

View file

@ -1,6 +1,6 @@
<Root> <Root>
<File Name="HAKAdanCH_scene" Segment="2"> <File Name="HAKAdanCH_scene" Segment="2">
<Path Name="HAKAdanCH_scenePathList_000248" Offset="0x0248" NumPaths="2"/> <Path Name="HAKAdanCH_scenePathList_000220" Offset="0x0220" NumPaths="1"/>
<Scene Name="HAKAdanCH_scene" Offset="0x0"/> <Scene Name="HAKAdanCH_scene" Offset="0x0"/>
</File> </File>
<File Name="HAKAdanCH_room_0" Segment="3"> <File Name="HAKAdanCH_room_0" Segment="3">

View file

@ -0,0 +1,27 @@
<Root>
<File Name="HAKAdanCH_scene" Segment="2">
<Path Name="HAKAdanCH_scenePathList_000248" Offset="0x0248" NumPaths="2"/>
<Scene Name="HAKAdanCH_scene" Offset="0x0"/>
</File>
<File Name="HAKAdanCH_room_0" Segment="3">
<Room Name="HAKAdanCH_room_0" Offset="0x0"/>
</File>
<File Name="HAKAdanCH_room_1" Segment="3">
<Room Name="HAKAdanCH_room_1" Offset="0x0"/>
</File>
<File Name="HAKAdanCH_room_2" Segment="3">
<Room Name="HAKAdanCH_room_2" Offset="0x0"/>
</File>
<File Name="HAKAdanCH_room_3" Segment="3">
<Room Name="HAKAdanCH_room_3" Offset="0x0"/>
</File>
<File Name="HAKAdanCH_room_4" Segment="3">
<Room Name="HAKAdanCH_room_4" Offset="0x0"/>
</File>
<File Name="HAKAdanCH_room_5" Segment="3">
<Room Name="HAKAdanCH_room_5" Offset="0x0"/>
</File>
<File Name="HAKAdanCH_room_6" Segment="3">
<Room Name="HAKAdanCH_room_6" Offset="0x0"/>
</File>
</Root>

View file

@ -0,0 +1,74 @@
<Root>
<File Name="HAKAdan_scene" Segment="2">
<Scene Name="HAKAdan_scene" Offset="0x0"/>
</File>
<File Name="HAKAdan_room_0" Segment="3">
<Room Name="HAKAdan_room_0" Offset="0x0"/>
</File>
<File Name="HAKAdan_room_1" Segment="3">
<Room Name="HAKAdan_room_1" Offset="0x0"/>
</File>
<File Name="HAKAdan_room_2" Segment="3">
<Room Name="HAKAdan_room_2" Offset="0x0"/>
</File>
<File Name="HAKAdan_room_3" Segment="3">
<Room Name="HAKAdan_room_3" Offset="0x0"/>
</File>
<File Name="HAKAdan_room_4" Segment="3">
<Room Name="HAKAdan_room_4" Offset="0x0"/>
</File>
<File Name="HAKAdan_room_5" Segment="3">
<Room Name="HAKAdan_room_5" Offset="0x0"/>
</File>
<File Name="HAKAdan_room_6" Segment="3">
<Room Name="HAKAdan_room_6" Offset="0x0"/>
</File>
<File Name="HAKAdan_room_7" Segment="3">
<Room Name="HAKAdan_room_7" Offset="0x0"/>
</File>
<File Name="HAKAdan_room_8" Segment="3">
<Room Name="HAKAdan_room_8" Offset="0x0"/>
</File>
<File Name="HAKAdan_room_9" Segment="3">
<Room Name="HAKAdan_room_9" Offset="0x0"/>
</File>
<File Name="HAKAdan_room_10" Segment="3">
<Room Name="HAKAdan_room_10" Offset="0x0"/>
</File>
<File Name="HAKAdan_room_11" Segment="3">
<Room Name="HAKAdan_room_11" Offset="0x0"/>
</File>
<File Name="HAKAdan_room_12" Segment="3">
<Room Name="HAKAdan_room_12" Offset="0x0"/>
</File>
<File Name="HAKAdan_room_13" Segment="3">
<Room Name="HAKAdan_room_13" Offset="0x0"/>
</File>
<File Name="HAKAdan_room_14" Segment="3">
<Room Name="HAKAdan_room_14" Offset="0x0"/>
</File>
<File Name="HAKAdan_room_15" Segment="3">
<Room Name="HAKAdan_room_15" Offset="0x0"/>
</File>
<File Name="HAKAdan_room_16" Segment="3">
<Room Name="HAKAdan_room_16" Offset="0x0"/>
</File>
<File Name="HAKAdan_room_17" Segment="3">
<Room Name="HAKAdan_room_17" Offset="0x0"/>
</File>
<File Name="HAKAdan_room_18" Segment="3">
<Room Name="HAKAdan_room_18" Offset="0x0"/>
</File>
<File Name="HAKAdan_room_19" Segment="3">
<Room Name="HAKAdan_room_19" Offset="0x0"/>
</File>
<File Name="HAKAdan_room_20" Segment="3">
<Room Name="HAKAdan_room_20" Offset="0x0"/>
</File>
<File Name="HAKAdan_room_21" Segment="3">
<Room Name="HAKAdan_room_21" Offset="0x0"/>
</File>
<File Name="HAKAdan_room_22" Segment="3">
<Room Name="HAKAdan_room_22" Offset="0x0"/>
</File>
</Root>

View file

@ -1,6 +1,6 @@
<Root> <Root>
<File Name="HIDAN_scene" Segment="2"> <File Name="HIDAN_scene" Segment="2">
<Path Name="HIDAN_scenePathList_000440" Offset="0x0440" NumPaths="4"/> <Path Name="HIDAN_scenePathList_000558" Offset="0x0558" NumPaths="19"/>
<Scene Name="HIDAN_scene" Offset="0x0"/> <Scene Name="HIDAN_scene" Offset="0x0"/>
</File> </File>
<File Name="HIDAN_room_0" Segment="3"> <File Name="HIDAN_room_0" Segment="3">

View file

@ -0,0 +1,87 @@
<Root>
<File Name="HIDAN_scene" Segment="2">
<Path Name="HIDAN_scenePathList_000440" Offset="0x0440" NumPaths="4"/>
<Scene Name="HIDAN_scene" Offset="0x0"/>
</File>
<File Name="HIDAN_room_0" Segment="3">
<Room Name="HIDAN_room_0" Offset="0x0"/>
</File>
<File Name="HIDAN_room_1" Segment="3">
<Room Name="HIDAN_room_1" Offset="0x0"/>
</File>
<File Name="HIDAN_room_2" Segment="3">
<Room Name="HIDAN_room_2" Offset="0x0"/>
</File>
<File Name="HIDAN_room_3" Segment="3">
<Room Name="HIDAN_room_3" Offset="0x0"/>
</File>
<File Name="HIDAN_room_4" Segment="3">
<Room Name="HIDAN_room_4" Offset="0x0"/>
</File>
<File Name="HIDAN_room_5" Segment="3">
<Room Name="HIDAN_room_5" Offset="0x0"/>
</File>
<File Name="HIDAN_room_6" Segment="3">
<Room Name="HIDAN_room_6" Offset="0x0"/>
</File>
<File Name="HIDAN_room_7" Segment="3">
<Room Name="HIDAN_room_7" Offset="0x0"/>
</File>
<File Name="HIDAN_room_8" Segment="3">
<Room Name="HIDAN_room_8" Offset="0x0"/>
</File>
<File Name="HIDAN_room_9" Segment="3">
<Room Name="HIDAN_room_9" Offset="0x0"/>
</File>
<File Name="HIDAN_room_10" Segment="3">
<Room Name="HIDAN_room_10" Offset="0x0"/>
</File>
<File Name="HIDAN_room_11" Segment="3">
<Room Name="HIDAN_room_11" Offset="0x0"/>
</File>
<File Name="HIDAN_room_12" Segment="3">
<Room Name="HIDAN_room_12" Offset="0x0"/>
</File>
<File Name="HIDAN_room_13" Segment="3">
<Room Name="HIDAN_room_13" Offset="0x0"/>
</File>
<File Name="HIDAN_room_14" Segment="3">
<Room Name="HIDAN_room_14" Offset="0x0"/>
</File>
<File Name="HIDAN_room_15" Segment="3">
<Room Name="HIDAN_room_15" Offset="0x0"/>
</File>
<File Name="HIDAN_room_16" Segment="3">
<Room Name="HIDAN_room_16" Offset="0x0"/>
</File>
<File Name="HIDAN_room_17" Segment="3">
<Room Name="HIDAN_room_17" Offset="0x0"/>
</File>
<File Name="HIDAN_room_18" Segment="3">
<Room Name="HIDAN_room_18" Offset="0x0"/>
</File>
<File Name="HIDAN_room_19" Segment="3">
<Room Name="HIDAN_room_19" Offset="0x0"/>
</File>
<File Name="HIDAN_room_20" Segment="3">
<Room Name="HIDAN_room_20" Offset="0x0"/>
</File>
<File Name="HIDAN_room_21" Segment="3">
<Room Name="HIDAN_room_21" Offset="0x0"/>
</File>
<File Name="HIDAN_room_22" Segment="3">
<Room Name="HIDAN_room_22" Offset="0x0"/>
</File>
<File Name="HIDAN_room_23" Segment="3">
<Room Name="HIDAN_room_23" Offset="0x0"/>
</File>
<File Name="HIDAN_room_24" Segment="3">
<Room Name="HIDAN_room_24" Offset="0x0"/>
</File>
<File Name="HIDAN_room_25" Segment="3">
<Room Name="HIDAN_room_25" Offset="0x0"/>
</File>
<File Name="HIDAN_room_26" Segment="3">
<Room Name="HIDAN_room_26" Offset="0x0"/>
</File>
</Root>

View file

@ -1,8 +1,8 @@
<Root> <Root>
<File Name="MIZUsin_scene" Segment="2"> <File Name="MIZUsin_scene" Segment="2">
<Path Name="MIZUsin_scenePathList_000384" Offset="0x0384" NumPaths="2"/> <Path Name="MIZUsin_scenePathList_000424" Offset="0x0424" NumPaths="7"/>
<Texture Name="gWaterTempleDayEntranceTex" OutName="day_entrance" Format="ia16" Width="8" Height="64" Offset="0x14C30"/> <Texture Name="gWaterTempleDayEntranceTex" OutName="day_entrance" Format="ia16" Width="8" Height="64" Offset="0x14CF0"/>
<Texture Name="gWaterTempleNightEntranceTex" OutName="night_entrance" Format="ia16" Width="8" Height="64" Offset="0x15830"/> <Texture Name="gWaterTempleNightEntranceTex" OutName="night_entrance" Format="ia16" Width="8" Height="64" Offset="0x158F0"/>
<Scene Name="MIZUsin_scene" Offset="0x0"/> <Scene Name="MIZUsin_scene" Offset="0x0"/>
</File> </File>
<File Name="MIZUsin_room_0" Segment="3"> <File Name="MIZUsin_room_0" Segment="3">

View file

@ -0,0 +1,77 @@
<Root>
<File Name="MIZUsin_scene" Segment="2">
<Path Name="MIZUsin_scenePathList_000384" Offset="0x0384" NumPaths="2"/>
<Texture Name="gWaterTempleDayEntranceTex" OutName="day_entrance" Format="ia16" Width="8" Height="64" Offset="0x14C30"/>
<Texture Name="gWaterTempleNightEntranceTex" OutName="night_entrance" Format="ia16" Width="8" Height="64" Offset="0x15830"/>
<Scene Name="MIZUsin_scene" Offset="0x0"/>
</File>
<File Name="MIZUsin_room_0" Segment="3">
<Room Name="MIZUsin_room_0" Offset="0x0"/>
</File>
<File Name="MIZUsin_room_1" Segment="3">
<Room Name="MIZUsin_room_1" Offset="0x0"/>
</File>
<File Name="MIZUsin_room_2" Segment="3">
<Room Name="MIZUsin_room_2" Offset="0x0"/>
</File>
<File Name="MIZUsin_room_3" Segment="3">
<Room Name="MIZUsin_room_3" Offset="0x0"/>
</File>
<File Name="MIZUsin_room_4" Segment="3">
<Room Name="MIZUsin_room_4" Offset="0x0"/>
</File>
<File Name="MIZUsin_room_5" Segment="3">
<Room Name="MIZUsin_room_5" Offset="0x0"/>
</File>
<File Name="MIZUsin_room_6" Segment="3">
<Room Name="MIZUsin_room_6" Offset="0x0"/>
</File>
<File Name="MIZUsin_room_7" Segment="3">
<Room Name="MIZUsin_room_7" Offset="0x0"/>
</File>
<File Name="MIZUsin_room_8" Segment="3">
<Room Name="MIZUsin_room_8" Offset="0x0"/>
</File>
<File Name="MIZUsin_room_9" Segment="3">
<Room Name="MIZUsin_room_9" Offset="0x0"/>
</File>
<File Name="MIZUsin_room_10" Segment="3">
<Room Name="MIZUsin_room_10" Offset="0x0"/>
</File>
<File Name="MIZUsin_room_11" Segment="3">
<Room Name="MIZUsin_room_11" Offset="0x0"/>
</File>
<File Name="MIZUsin_room_12" Segment="3">
<Room Name="MIZUsin_room_12" Offset="0x0"/>
</File>
<File Name="MIZUsin_room_13" Segment="3">
<Room Name="MIZUsin_room_13" Offset="0x0"/>
</File>
<File Name="MIZUsin_room_14" Segment="3">
<Room Name="MIZUsin_room_14" Offset="0x0"/>
</File>
<File Name="MIZUsin_room_15" Segment="3">
<Room Name="MIZUsin_room_15" Offset="0x0"/>
</File>
<File Name="MIZUsin_room_16" Segment="3">
<Room Name="MIZUsin_room_16" Offset="0x0"/>
</File>
<File Name="MIZUsin_room_17" Segment="3">
<Room Name="MIZUsin_room_17" Offset="0x0"/>
</File>
<File Name="MIZUsin_room_18" Segment="3">
<Room Name="MIZUsin_room_18" Offset="0x0"/>
</File>
<File Name="MIZUsin_room_19" Segment="3">
<Room Name="MIZUsin_room_19" Offset="0x0"/>
</File>
<File Name="MIZUsin_room_20" Segment="3">
<Room Name="MIZUsin_room_20" Offset="0x0"/>
</File>
<File Name="MIZUsin_room_21" Segment="3">
<Room Name="MIZUsin_room_21" Offset="0x0"/>
</File>
<File Name="MIZUsin_room_22" Segment="3">
<Room Name="MIZUsin_room_22" Offset="0x0"/>
</File>
</Root>

View file

@ -1,6 +1,6 @@
<Root> <Root>
<File Name="bdan_scene" Segment="2"> <File Name="bdan_scene" Segment="2">
<Cutscene Name="gJabuJabuIntroCs" Offset="0x15600"/> <Cutscene Name="gJabuJabuIntroCs" Offset="0x155E0"/>
<Scene Name="bdan_scene" Offset="0x0"/> <Scene Name="bdan_scene" Offset="0x0"/>
</File> </File>
<File Name="bdan_room_0" Segment="3"> <File Name="bdan_room_0" Segment="3">

View file

@ -0,0 +1,54 @@
<Root>
<File Name="bdan_scene" Segment="2">
<Cutscene Name="gJabuJabuIntroCs" Offset="0x15600"/>
<Scene Name="bdan_scene" Offset="0x0"/>
</File>
<File Name="bdan_room_0" Segment="3">
<Room Name="bdan_room_0" Offset="0x0"/>
</File>
<File Name="bdan_room_1" Segment="3">
<Room Name="bdan_room_1" Offset="0x0"/>
</File>
<File Name="bdan_room_2" Segment="3">
<Room Name="bdan_room_2" Offset="0x0"/>
</File>
<File Name="bdan_room_3" Segment="3">
<Room Name="bdan_room_3" Offset="0x0"/>
</File>
<File Name="bdan_room_4" Segment="3">
<Room Name="bdan_room_4" Offset="0x0"/>
</File>
<File Name="bdan_room_5" Segment="3">
<Room Name="bdan_room_5" Offset="0x0"/>
</File>
<File Name="bdan_room_6" Segment="3">
<Room Name="bdan_room_6" Offset="0x0"/>
</File>
<File Name="bdan_room_7" Segment="3">
<Room Name="bdan_room_7" Offset="0x0"/>
</File>
<File Name="bdan_room_8" Segment="3">
<Room Name="bdan_room_8" Offset="0x0"/>
</File>
<File Name="bdan_room_9" Segment="3">
<Room Name="bdan_room_9" Offset="0x0"/>
</File>
<File Name="bdan_room_10" Segment="3">
<Room Name="bdan_room_10" Offset="0x0"/>
</File>
<File Name="bdan_room_11" Segment="3">
<Room Name="bdan_room_11" Offset="0x0"/>
</File>
<File Name="bdan_room_12" Segment="3">
<Room Name="bdan_room_12" Offset="0x0"/>
</File>
<File Name="bdan_room_13" Segment="3">
<Room Name="bdan_room_13" Offset="0x0"/>
</File>
<File Name="bdan_room_14" Segment="3">
<Room Name="bdan_room_14" Offset="0x0"/>
</File>
<File Name="bdan_room_15" Segment="3">
<Room Name="bdan_room_15" Offset="0x0"/>
</File>
</Root>

View file

@ -0,0 +1,70 @@
<Root>
<File Name="ddan_scene" Segment="2">
<Texture Name="gDCDayEntranceTex" OutName="day_entrance" Format="ci8" Width="32" Height="64" Offset="0x12378" TlutOffset="0x11D70"/>
<Texture Name="gDCNightEntranceTex" OutName="night_entrance" Format="ci8" Width="32" Height="64" Offset="0x13378" TlutOffset="0x11D70"/>
<!-- These textures are used in room 0 with a TLUT at 0x11290 in room 0, and in room 3 with a TLUT at 0x008630 in room 3 (those two TLUTs are identical, but duplicated) -->
<Texture Name="gDCLavaFloor1Tex" OutName="lava_floor_1" Format="ci8" Width="32" Height="32" Offset="0x11F78" ExternalTlut="ddan_room_0" ExternalTlutOffset="0x11290"/>
<Texture Name="gDCLavaFloor2Tex" OutName="lava_floor_2" Format="ci8" Width="32" Height="32" Offset="0x14778" ExternalTlut="ddan_room_0" ExternalTlutOffset="0x11290"/>
<Texture Name="gDCLavaFloor3Tex" OutName="lava_floor_3" Format="ci8" Width="32" Height="32" Offset="0x14378" ExternalTlut="ddan_room_0" ExternalTlutOffset="0x11290"/>
<Texture Name="gDCLavaFloor4Tex" OutName="lava_floor_4" Format="ci8" Width="32" Height="32" Offset="0x13F78" ExternalTlut="ddan_room_0" ExternalTlutOffset="0x11290"/>
<Texture Name="gDCLavaFloor5Tex" OutName="lava_floor_5" Format="ci8" Width="32" Height="32" Offset="0x14B78" ExternalTlut="ddan_room_0" ExternalTlutOffset="0x11290"/>
<Texture Name="gDCLavaFloor6Tex" OutName="lava_floor_6" Format="ci8" Width="32" Height="32" Offset="0x13B78" ExternalTlut="ddan_room_0" ExternalTlutOffset="0x11290"/>
<Texture Name="gDCLavaFloor7Tex" OutName="lava_floor_7" Format="ci8" Width="32" Height="32" Offset="0x12F78" ExternalTlut="ddan_room_0" ExternalTlutOffset="0x11290"/>
<Texture Name="gDCLavaFloor8Tex" OutName="lava_floor_8" Format="ci8" Width="32" Height="32" Offset="0x12B78" ExternalTlut="ddan_room_0" ExternalTlutOffset="0x11290"/>
<Cutscene Name="gDcOpeningCs" Offset="0x14F80"/>
<Scene Name="ddan_scene" Offset="0x0"/>
</File>
<File Name="ddan_room_0" Segment="3">
<Room Name="ddan_room_0" Offset="0x0"/>
</File>
<File Name="ddan_room_1" Segment="3">
<Room Name="ddan_room_1" Offset="0x0"/>
</File>
<File Name="ddan_room_2" Segment="3">
<Room Name="ddan_room_2" Offset="0x0"/>
</File>
<File Name="ddan_room_3" Segment="3">
<Room Name="ddan_room_3" Offset="0x0"/>
</File>
<File Name="ddan_room_4" Segment="3">
<Room Name="ddan_room_4" Offset="0x0"/>
</File>
<File Name="ddan_room_5" Segment="3">
<Room Name="ddan_room_5" Offset="0x0"/>
</File>
<File Name="ddan_room_6" Segment="3">
<Room Name="ddan_room_6" Offset="0x0"/>
</File>
<File Name="ddan_room_7" Segment="3">
<Room Name="ddan_room_7" Offset="0x0"/>
</File>
<File Name="ddan_room_8" Segment="3">
<Room Name="ddan_room_8" Offset="0x0"/>
</File>
<File Name="ddan_room_9" Segment="3">
<Room Name="ddan_room_9" Offset="0x0"/>
</File>
<File Name="ddan_room_10" Segment="3">
<Room Name="ddan_room_10" Offset="0x0"/>
</File>
<File Name="ddan_room_11" Segment="3">
<Room Name="ddan_room_11" Offset="0x0"/>
</File>
<File Name="ddan_room_12" Segment="3">
<Room Name="ddan_room_12" Offset="0x0"/>
</File>
<File Name="ddan_room_13" Segment="3">
<Room Name="ddan_room_13" Offset="0x0"/>
</File>
<File Name="ddan_room_14" Segment="3">
<Room Name="ddan_room_14" Offset="0x0"/>
</File>
<File Name="ddan_room_15" Segment="3">
<Room Name="ddan_room_15" Offset="0x0"/>
</File>
<File Name="ddan_room_16" Segment="3">
<Room Name="ddan_room_16" Offset="0x0"/>
</File>
</Root>

View file

@ -1,22 +1,22 @@
<Root> <Root>
<File Name="ganontika_scene" Segment="2"> <File Name="ganontika_scene" Segment="2">
<Cutscene Name="gForestTrialSageCs" Offset="0x19EE0"/> <Cutscene Name="gForestTrialSageCs" Offset="0x19ED0"/>
<Cutscene Name="gWaterTrialSageCs" Offset="0x1A8E0"/> <Cutscene Name="gWaterTrialSageCs" Offset="0x1A8D0"/>
<Cutscene Name="gShadowTrialSageCs" Offset="0x1B2B0"/> <Cutscene Name="gShadowTrialSageCs" Offset="0x1B2A0"/>
<Cutscene Name="gFireTrialSageCs" Offset="0x1BC80"/> <Cutscene Name="gFireTrialSageCs" Offset="0x1BC70"/>
<Cutscene Name="gLightTrialSageCs" Offset="0x1C6B0"/> <Cutscene Name="gLightTrialSageCs" Offset="0x1C6A0"/>
<Cutscene Name="gSpiritTrialSageCs" Offset="0x1D080"/> <Cutscene Name="gSpiritTrialSageCs" Offset="0x1D070"/>
<Cutscene Name="gTowerBarrierCs" Offset="0x1DA50"/> <Cutscene Name="gTowerBarrierCs" Offset="0x1DA40"/>
<Cutscene Name="gLightBarrierCs" Offset="0x1DF90"/> <Cutscene Name="gLightBarrierCs" Offset="0x1DF80"/>
<Cutscene Name="gFireBarrierCs" Offset="0x1E3E0"/> <Cutscene Name="gFireBarrierCs" Offset="0x1E3D0"/>
<Cutscene Name="gForestBarrierCs" Offset="0x1E790"/> <Cutscene Name="gForestBarrierCs" Offset="0x1E780"/>
<Cutscene Name="gSpiritBarrierCs" Offset="0x1EB40"/> <Cutscene Name="gSpiritBarrierCs" Offset="0x1EB30"/>
<Cutscene Name="gWaterBarrierCs" Offset="0x1EF70"/> <Cutscene Name="gWaterBarrierCs" Offset="0x1EF60"/>
<Cutscene Name="gShadowBarrierCs" Offset="0x21380"/> <Cutscene Name="gShadowBarrierCs" Offset="0x21370"/>
<Path Name="ganontika_scenePathList_000668" Offset="0x0668" NumPaths="6"/> <Path Name="ganontika_scenePathList_000674" Offset="0x0674" NumPaths="3"/>
<Scene Name="ganontika_scene" Offset="0x0"/> <Scene Name="ganontika_scene" Offset="0x0"/>
</File> </File>
<File Name="ganontika_room_0" Segment="3"> <File Name="ganontika_room_0" Segment="3">

View file

@ -0,0 +1,82 @@
<Root>
<File Name="ganontika_scene" Segment="2">
<Cutscene Name="gForestTrialSageCs" Offset="0x19EE0"/>
<Cutscene Name="gWaterTrialSageCs" Offset="0x1A8E0"/>
<Cutscene Name="gShadowTrialSageCs" Offset="0x1B2B0"/>
<Cutscene Name="gFireTrialSageCs" Offset="0x1BC80"/>
<Cutscene Name="gLightTrialSageCs" Offset="0x1C6B0"/>
<Cutscene Name="gSpiritTrialSageCs" Offset="0x1D080"/>
<Cutscene Name="gTowerBarrierCs" Offset="0x1DA50"/>
<Cutscene Name="gLightBarrierCs" Offset="0x1DF90"/>
<Cutscene Name="gFireBarrierCs" Offset="0x1E3E0"/>
<Cutscene Name="gForestBarrierCs" Offset="0x1E790"/>
<Cutscene Name="gSpiritBarrierCs" Offset="0x1EB40"/>
<Cutscene Name="gWaterBarrierCs" Offset="0x1EF70"/>
<Cutscene Name="gShadowBarrierCs" Offset="0x21380"/>
<Path Name="ganontika_scenePathList_000668" Offset="0x0668" NumPaths="6"/>
<Scene Name="ganontika_scene" Offset="0x0"/>
</File>
<File Name="ganontika_room_0" Segment="3">
<Room Name="ganontika_room_0" Offset="0x0"/>
</File>
<File Name="ganontika_room_1" Segment="3">
<Room Name="ganontika_room_1" Offset="0x0"/>
</File>
<File Name="ganontika_room_2" Segment="3">
<Room Name="ganontika_room_2" Offset="0x0"/>
</File>
<File Name="ganontika_room_3" Segment="3">
<Room Name="ganontika_room_3" Offset="0x0"/>
</File>
<File Name="ganontika_room_4" Segment="3">
<Room Name="ganontika_room_4" Offset="0x0"/>
</File>
<File Name="ganontika_room_5" Segment="3">
<Room Name="ganontika_room_5" Offset="0x0"/>
</File>
<File Name="ganontika_room_6" Segment="3">
<Room Name="ganontika_room_6" Offset="0x0"/>
</File>
<File Name="ganontika_room_7" Segment="3">
<Room Name="ganontika_room_7" Offset="0x0"/>
</File>
<File Name="ganontika_room_8" Segment="3">
<Room Name="ganontika_room_8" Offset="0x0"/>
</File>
<File Name="ganontika_room_9" Segment="3">
<Room Name="ganontika_room_9" Offset="0x0"/>
</File>
<File Name="ganontika_room_10" Segment="3">
<Room Name="ganontika_room_10" Offset="0x0"/>
</File>
<File Name="ganontika_room_11" Segment="3">
<Room Name="ganontika_room_11" Offset="0x0"/>
</File>
<File Name="ganontika_room_12" Segment="3">
<Room Name="ganontika_room_12" Offset="0x0"/>
</File>
<File Name="ganontika_room_13" Segment="3">
<Room Name="ganontika_room_13" Offset="0x0"/>
</File>
<File Name="ganontika_room_14" Segment="3">
<Room Name="ganontika_room_14" Offset="0x0"/>
</File>
<File Name="ganontika_room_15" Segment="3">
<Room Name="ganontika_room_15" Offset="0x0"/>
</File>
<File Name="ganontika_room_16" Segment="3">
<Room Name="ganontika_room_16" Offset="0x0"/>
</File>
<File Name="ganontika_room_17" Segment="3">
<Room Name="ganontika_room_17" Offset="0x0"/>
</File>
<File Name="ganontika_room_18" Segment="3">
<Room Name="ganontika_room_18" Offset="0x0"/>
</File>
<File Name="ganontika_room_19" Segment="3">
<Room Name="ganontika_room_19" Offset="0x0"/>
</File>
</Root>

View file

@ -1,9 +1,8 @@
<Root> <Root>
<File Name="ice_doukutu_scene" Segment="2"> <File Name="ice_doukutu_scene" Segment="2">
<Path Name="ice_doukutu_scenePathList_000304" Offset="0x0304" NumPaths="5"/> <Cutscene Name="gIceCavernSerenadeCs" Offset="0x250"/>
<Cutscene Name="gIceCavernSerenadeCs" Offset="0x330"/> <Texture Name="gIceCavernNightEntranceTex" OutName="night_entrance" Format="ia16" Width="64" Height="4" Offset="0xF7F0"/>
<Texture Name="gIceCavernNightEntranceTex" OutName="night_entrance" Format="ia16" Width="64" Height="4" Offset="0xF8C0"/> <Texture Name="gIceCavernDayEntranceTex" OutName="day_entrance" Format="ia16" Width="64" Height="4" Offset="0xF9F0"/>
<Texture Name="gIceCavernDayEntranceTex" OutName="day_entrance" Format="ia16" Width="64" Height="4" Offset="0xFAC0"/>
<Scene Name="ice_doukutu_scene" Offset="0x0"/> <Scene Name="ice_doukutu_scene" Offset="0x0"/>
</File> </File>
<File Name="ice_doukutu_room_0" Segment="3"> <File Name="ice_doukutu_room_0" Segment="3">

View file

@ -0,0 +1,45 @@
<Root>
<File Name="ice_doukutu_scene" Segment="2">
<Path Name="ice_doukutu_scenePathList_000304" Offset="0x0304" NumPaths="5"/>
<Cutscene Name="gIceCavernSerenadeCs" Offset="0x330"/>
<Texture Name="gIceCavernNightEntranceTex" OutName="night_entrance" Format="ia16" Width="64" Height="4" Offset="0xF8C0"/>
<Texture Name="gIceCavernDayEntranceTex" OutName="day_entrance" Format="ia16" Width="64" Height="4" Offset="0xFAC0"/>
<Scene Name="ice_doukutu_scene" Offset="0x0"/>
</File>
<File Name="ice_doukutu_room_0" Segment="3">
<Room Name="ice_doukutu_room_0" Offset="0x0"/>
</File>
<File Name="ice_doukutu_room_1" Segment="3">
<Room Name="ice_doukutu_room_1" Offset="0x0"/>
</File>
<File Name="ice_doukutu_room_2" Segment="3">
<Room Name="ice_doukutu_room_2" Offset="0x0"/>
</File>
<File Name="ice_doukutu_room_3" Segment="3">
<Room Name="ice_doukutu_room_3" Offset="0x0"/>
</File>
<File Name="ice_doukutu_room_4" Segment="3">
<Room Name="ice_doukutu_room_4" Offset="0x0"/>
</File>
<File Name="ice_doukutu_room_5" Segment="3">
<Room Name="ice_doukutu_room_5" Offset="0x0"/>
</File>
<File Name="ice_doukutu_room_6" Segment="3">
<Room Name="ice_doukutu_room_6" Offset="0x0"/>
</File>
<File Name="ice_doukutu_room_7" Segment="3">
<Room Name="ice_doukutu_room_7" Offset="0x0"/>
</File>
<File Name="ice_doukutu_room_8" Segment="3">
<Room Name="ice_doukutu_room_8" Offset="0x0"/>
</File>
<File Name="ice_doukutu_room_9" Segment="3">
<Room Name="ice_doukutu_room_9" Offset="0x0"/>
</File>
<File Name="ice_doukutu_room_10" Segment="3">
<Room Name="ice_doukutu_room_10" Offset="0x0"/>
</File>
<File Name="ice_doukutu_room_11" Segment="3">
<Room Name="ice_doukutu_room_11" Offset="0x0"/>
</File>
</Root>

View file

@ -1,11 +1,11 @@
<Root> <Root>
<File Name="jyasinzou_scene" Segment="2"> <File Name="jyasinzou_scene" Segment="2">
<Path Name="jyasinzou_scenePathList_00049C" Offset="0x049C" NumPaths="5"/> <Path Name="jyasinzou_scenePathList_0004C0" Offset="0x04C0" NumPaths="6"/>
<Texture Name="gSpiritTempleDayEntranceTex" OutName="day_entrance" Format="ia16" Width="8" Height="128" Offset="0x18920"/> <Texture Name="gSpiritTempleDayEntranceTex" OutName="day_entrance" Format="ia16" Width="8" Height="128" Offset="0x18940"/>
<Texture Name="gSpiritTempleNightEntranceTex" OutName="night_entrance" Format="ia16" Width="8" Height="128" Offset="0x18020"/> <Texture Name="gSpiritTempleNightEntranceTex" OutName="night_entrance" Format="ia16" Width="8" Height="128" Offset="0x18040"/>
<Scene Name="jyasinzou_scene" Offset="0x0"/> <Scene Name="jyasinzou_scene" Offset="0x0"/>
<Scene Name="jyasinzou_scene_unused1" Offset="0x17200"/> <Scene Name="jyasinzou_scene_unused1" Offset="0x17220"/>
<Scene Name="jyasinzou_scene_unused2" Offset="0x176F0"/> <Scene Name="jyasinzou_scene_unused2" Offset="0x17710"/>
</File> </File>
<File Name="jyasinzou_room_0" Segment="3"> <File Name="jyasinzou_room_0" Segment="3">
<Room Name="jyasinzou_room_0" Offset="0x0"/> <Room Name="jyasinzou_room_0" Offset="0x0"/>

View file

@ -0,0 +1,97 @@
<Root>
<File Name="jyasinzou_scene" Segment="2">
<Path Name="jyasinzou_scenePathList_00049C" Offset="0x049C" NumPaths="5"/>
<Texture Name="gSpiritTempleDayEntranceTex" OutName="day_entrance" Format="ia16" Width="8" Height="128" Offset="0x18920"/>
<Texture Name="gSpiritTempleNightEntranceTex" OutName="night_entrance" Format="ia16" Width="8" Height="128" Offset="0x18020"/>
<Scene Name="jyasinzou_scene" Offset="0x0"/>
<Scene Name="jyasinzou_scene_unused1" Offset="0x17200"/>
<Scene Name="jyasinzou_scene_unused2" Offset="0x176F0"/>
</File>
<File Name="jyasinzou_room_0" Segment="3">
<Room Name="jyasinzou_room_0" Offset="0x0"/>
</File>
<File Name="jyasinzou_room_1" Segment="3">
<Room Name="jyasinzou_room_1" Offset="0x0"/>
</File>
<File Name="jyasinzou_room_2" Segment="3">
<Room Name="jyasinzou_room_2" Offset="0x0"/>
</File>
<File Name="jyasinzou_room_3" Segment="3">
<Room Name="jyasinzou_room_3" Offset="0x0"/>
</File>
<File Name="jyasinzou_room_4" Segment="3">
<Room Name="jyasinzou_room_4" Offset="0x0"/>
</File>
<File Name="jyasinzou_room_5" Segment="3">
<Room Name="jyasinzou_room_5" Offset="0x0"/>
</File>
<File Name="jyasinzou_room_6" Segment="3">
<Room Name="jyasinzou_room_6" Offset="0x0"/>
</File>
<File Name="jyasinzou_room_7" Segment="3">
<Room Name="jyasinzou_room_7" Offset="0x0"/>
</File>
<File Name="jyasinzou_room_8" Segment="3">
<Room Name="jyasinzou_room_8" Offset="0x0"/>
</File>
<File Name="jyasinzou_room_9" Segment="3">
<Room Name="jyasinzou_room_9" Offset="0x0"/>
</File>
<File Name="jyasinzou_room_10" Segment="3">
<Room Name="jyasinzou_room_10" Offset="0x0"/>
</File>
<File Name="jyasinzou_room_11" Segment="3">
<Room Name="jyasinzou_room_11" Offset="0x0"/>
</File>
<File Name="jyasinzou_room_12" Segment="3">
<Room Name="jyasinzou_room_12" Offset="0x0"/>
</File>
<File Name="jyasinzou_room_13" Segment="3">
<Room Name="jyasinzou_room_13" Offset="0x0"/>
</File>
<File Name="jyasinzou_room_14" Segment="3">
<Room Name="jyasinzou_room_14" Offset="0x0"/>
</File>
<File Name="jyasinzou_room_15" Segment="3">
<Room Name="jyasinzou_room_15" Offset="0x0"/>
</File>
<File Name="jyasinzou_room_16" Segment="3">
<Room Name="jyasinzou_room_16" Offset="0x0"/>
</File>
<File Name="jyasinzou_room_17" Segment="3">
<Room Name="jyasinzou_room_17" Offset="0x0"/>
</File>
<File Name="jyasinzou_room_18" Segment="3">
<Room Name="jyasinzou_room_18" Offset="0x0"/>
</File>
<File Name="jyasinzou_room_19" Segment="3">
<Room Name="jyasinzou_room_19" Offset="0x0"/>
</File>
<File Name="jyasinzou_room_20" Segment="3">
<Room Name="jyasinzou_room_20" Offset="0x0"/>
</File>
<File Name="jyasinzou_room_21" Segment="3">
<Room Name="jyasinzou_room_21" Offset="0x0"/>
</File>
<File Name="jyasinzou_room_22" Segment="3">
<Room Name="jyasinzou_room_22" Offset="0x0"/>
</File>
<File Name="jyasinzou_room_23" Segment="3">
<Room Name="jyasinzou_room_23" Offset="0x0"/>
</File>
<File Name="jyasinzou_room_24" Segment="3">
<Room Name="jyasinzou_room_24" Offset="0x0"/>
</File>
<File Name="jyasinzou_room_25" Segment="3">
<Room Name="jyasinzou_room_25" Offset="0x0"/>
</File>
<File Name="jyasinzou_room_26" Segment="3">
<Room Name="jyasinzou_room_26" Offset="0x0"/>
</File>
<File Name="jyasinzou_room_27" Segment="3">
<Room Name="jyasinzou_room_27" Offset="0x0"/>
</File>
<File Name="jyasinzou_room_28" Segment="3">
<Room Name="jyasinzou_room_28" Offset="0x0"/>
</File>
</Root>

View file

@ -1,7 +1,7 @@
<Root> <Root>
<File Name="men_scene" Segment="2"> <File Name="men_scene" Segment="2">
<Texture Name="gGTGDayEntranceTex" OutName="day_entrance" Format="ia16" Width="8" Height="128" Offset="0xF8C0"/> <Texture Name="gGTGDayEntranceTex" OutName="day_entrance" Format="ia16" Width="8" Height="128" Offset="0xF930"/>
<Texture Name="gGTGNightEntranceTex" OutName="night_entrance" Format="ia16" Width="8" Height="128" Offset="0x100C0"/> <Texture Name="gGTGNightEntranceTex" OutName="night_entrance" Format="ia16" Width="8" Height="128" Offset="0x10130"/>
<Scene Name="men_scene" Offset="0x0"/> <Scene Name="men_scene" Offset="0x0"/>
</File> </File>
<File Name="men_room_0" Segment="3"> <File Name="men_room_0" Segment="3">

View file

@ -0,0 +1,42 @@
<Root>
<File Name="men_scene" Segment="2">
<Texture Name="gGTGDayEntranceTex" OutName="day_entrance" Format="ia16" Width="8" Height="128" Offset="0xF8C0"/>
<Texture Name="gGTGNightEntranceTex" OutName="night_entrance" Format="ia16" Width="8" Height="128" Offset="0x100C0"/>
<Scene Name="men_scene" Offset="0x0"/>
</File>
<File Name="men_room_0" Segment="3">
<DList Name="gMenDL_008118" Offset="0x8118"/>
<DList Name="gMenDL_00FF78" Offset="0xFF78"/>
<Room Name="men_room_0" Offset="0x0"/>
</File>
<File Name="men_room_1" Segment="3">
<Room Name="men_room_1" Offset="0x0"/>
</File>
<File Name="men_room_2" Segment="3">
<Room Name="men_room_2" Offset="0x0"/>
</File>
<File Name="men_room_3" Segment="3">
<Room Name="men_room_3" Offset="0x0"/>
</File>
<File Name="men_room_4" Segment="3">
<Room Name="men_room_4" Offset="0x0"/>
</File>
<File Name="men_room_5" Segment="3">
<Room Name="men_room_5" Offset="0x0"/>
</File>
<File Name="men_room_6" Segment="3">
<Room Name="men_room_6" Offset="0x0"/>
</File>
<File Name="men_room_7" Segment="3">
<Room Name="men_room_7" Offset="0x0"/>
</File>
<File Name="men_room_8" Segment="3">
<Room Name="men_room_8" Offset="0x0"/>
</File>
<File Name="men_room_9" Segment="3">
<Room Name="men_room_9" Offset="0x0"/>
</File>
<File Name="men_room_10" Segment="3">
<Room Name="men_room_10" Offset="0x0"/>
</File>
</Root>

View file

@ -1,8 +1,8 @@
<Root> <Root>
<File Name="ydan_scene" Segment="2"> <File Name="ydan_scene" Segment="2">
<Cutscene Name="gDekuTreeIntroCs" Offset="0xB650"/> <Cutscene Name="gDekuTreeIntroCs" Offset="0xB640"/>
<Texture Name="gYdanTex_00BA18" Format="rgba16" Width="32" Height="64" Offset="0xBA18"/> <Texture Name="gYdanTex_00BA18" Format="rgba16" Width="32" Height="64" Offset="0xBA08"/>
<Texture Name="gYdanTex_00CA18" Format="rgba16" Width="32" Height="64" Offset="0xCA18"/> <Texture Name="gYdanTex_00CA18" Format="rgba16" Width="32" Height="64" Offset="0xCA08"/>
<Scene Name="ydan_scene" Offset="0x0"/> <Scene Name="ydan_scene" Offset="0x0"/>
</File> </File>

View file

@ -0,0 +1,45 @@
<Root>
<File Name="ydan_scene" Segment="2">
<Cutscene Name="gDekuTreeIntroCs" Offset="0xB650"/>
<Texture Name="gYdanTex_00BA18" Format="rgba16" Width="32" Height="64" Offset="0xBA18"/>
<Texture Name="gYdanTex_00CA18" Format="rgba16" Width="32" Height="64" Offset="0xCA18"/>
<Scene Name="ydan_scene" Offset="0x0"/>
</File>
<File Name="ydan_room_0" Segment="3">
<Room Name="ydan_room_0" Offset="0x0"/>
</File>
<File Name="ydan_room_1" Segment="3">
<Room Name="ydan_room_1" Offset="0x0"/>
</File>
<File Name="ydan_room_2" Segment="3">
<Room Name="ydan_room_2" Offset="0x0"/>
</File>
<File Name="ydan_room_3" Segment="3">
<Room Name="ydan_room_3" Offset="0x0"/>
</File>
<File Name="ydan_room_4" Segment="3">
<Room Name="ydan_room_4" Offset="0x0"/>
</File>
<File Name="ydan_room_5" Segment="3">
<Room Name="ydan_room_5" Offset="0x0"/>
</File>
<File Name="ydan_room_6" Segment="3">
<Room Name="ydan_room_6" Offset="0x0"/>
</File>
<File Name="ydan_room_7" Segment="3">
<Room Name="ydan_room_7" Offset="0x0"/>
</File>
<File Name="ydan_room_8" Segment="3">
<Room Name="ydan_room_8" Offset="0x0"/>
</File>
<File Name="ydan_room_9" Segment="3">
<Room Name="ydan_room_9" Offset="0x0"/>
</File>
<File Name="ydan_room_10" Segment="3">
<Room Name="ydan_room_10" Offset="0x0"/>
</File>
<File Name="ydan_room_11" Segment="3">
<Room Name="ydan_room_11" Offset="0x0"/>
</File>
</Root>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -8,8 +8,7 @@ import time
import multiprocessing import multiprocessing
from pathlib import Path from pathlib import Path
from tools import version_config
EXTRACTED_ASSETS_NAMEFILE = ".extracted-assets.json"
def SignalHandler(sig, frame): def SignalHandler(sig, frame):
@ -17,20 +16,33 @@ def SignalHandler(sig, frame):
mainAbort.set() mainAbort.set()
# Don't exit immediately to update the extracted assets file. # Don't exit immediately to update the extracted assets file.
def ExtractFile(xmlPath, outputPath, outputSourcePath): def ExtractFile(assetConfig: version_config.AssetConfig, outputPath: Path, outputSourcePath: Path):
xmlPath = assetConfig.xml_path
version = globalVersionConfig.version
if globalAbort.is_set(): if globalAbort.is_set():
# Don't extract if another file wasn't extracted properly. # Don't extract if another file wasn't extracted properly.
return return
zapdPath = Path("tools") / "ZAPD" / "ZAPD.out" zapdPath = Path("tools") / "ZAPD" / "ZAPD.out"
configPath = Path("tools") / "ZAPDConfigs" / "MqDbg" / "Config.xml" configPath = Path("tools") / "ZAPDConfigs" / version / "Config.xml"
Path(outputPath).mkdir(parents=True, exist_ok=True) outputPath.mkdir(parents=True, exist_ok=True)
Path(outputSourcePath).mkdir(parents=True, exist_ok=True) outputSourcePath.mkdir(parents=True, exist_ok=True)
execStr = f"{zapdPath} e -eh -i {xmlPath} -b extracted/gc-eu-mq-dbg/baserom -o {outputPath} -osf {outputSourcePath} -gsf 1 -rconf {configPath} --cs-float both {ZAPDArgs}" execStr = f"{zapdPath} e -eh -i {xmlPath} -b extracted/{version}/baserom -o {outputPath} -osf {outputSourcePath} -gsf 1 -rconf {configPath} --cs-float both {ZAPDArgs}"
if "overlays" in xmlPath: if "code" in xmlPath.parts or "overlays" in xmlPath.parts:
assert assetConfig.start_offset is not None
assert assetConfig.end_offset is not None
execStr += f" --start-offset 0x{assetConfig.start_offset:X}"
execStr += f" --end-offset 0x{assetConfig.end_offset:X}"
if "overlays" in xmlPath.parts:
overlayName = xmlPath.stem
baseAddress = globalVersionConfig.dmadata_segments[overlayName].vram + assetConfig.start_offset
execStr += f" --base-address 0x{baseAddress:X}"
execStr += " --static" execStr += " --static"
if globalUnaccounted: if globalUnaccounted:
@ -45,35 +57,39 @@ def ExtractFile(xmlPath, outputPath, outputSourcePath):
print("Aborting...", file=os.sys.stderr) print("Aborting...", file=os.sys.stderr)
print("\n") print("\n")
def ExtractFunc(fullPath): def ExtractFunc(assetConfig: version_config.AssetConfig):
*pathList, xmlName = fullPath.split(os.sep) objectName = assetConfig.name
objectName = os.path.splitext(xmlName)[0] xml_path = assetConfig.xml_path
xml_path_str = str(xml_path)
outPath = os.path.join("assets", *pathList[2:], objectName) version = globalVersionConfig.version
outPath = Path("extracted") / version / "assets" / objectName
outSourcePath = outPath outSourcePath = outPath
if fullPath in globalExtractedAssetsTracker: if xml_path_str in globalExtractedAssetsTracker:
timestamp = globalExtractedAssetsTracker[fullPath]["timestamp"] timestamp = globalExtractedAssetsTracker[xml_path_str]["timestamp"]
modificationTime = int(os.path.getmtime(fullPath)) modificationTime = int(os.path.getmtime(xml_path))
if modificationTime < timestamp: if modificationTime < timestamp:
# XML has not been modified since last extraction. # XML has not been modified since last extraction.
return return
currentTimeStamp = int(time.time()) currentTimeStamp = int(time.time())
ExtractFile(fullPath, outPath, outSourcePath) ExtractFile(assetConfig, outPath, outSourcePath)
if not globalAbort.is_set(): if not globalAbort.is_set():
# Only update timestamp on succesful extractions # Only update timestamp on succesful extractions
if fullPath not in globalExtractedAssetsTracker: if xml_path_str not in globalExtractedAssetsTracker:
globalExtractedAssetsTracker[fullPath] = globalManager.dict() globalExtractedAssetsTracker[xml_path_str] = globalManager.dict()
globalExtractedAssetsTracker[fullPath]["timestamp"] = currentTimeStamp globalExtractedAssetsTracker[xml_path_str]["timestamp"] = currentTimeStamp
def initializeWorker(abort, unaccounted: bool, extractedAssetsTracker: dict, manager): def initializeWorker(versionConfig: version_config.VersionConfig, abort, unaccounted: bool, extractedAssetsTracker: dict, manager):
global globalVersionConfig
global globalAbort global globalAbort
global globalUnaccounted global globalUnaccounted
global globalExtractedAssetsTracker global globalExtractedAssetsTracker
global globalManager global globalManager
globalVersionConfig = versionConfig
globalAbort = abort globalAbort = abort
globalUnaccounted = unaccounted globalUnaccounted = unaccounted
globalExtractedAssetsTracker = extractedAssetsTracker globalExtractedAssetsTracker = extractedAssetsTracker
@ -95,13 +111,17 @@ def processZAPDArgs(argsZ):
def main(): def main():
parser = argparse.ArgumentParser(description="baserom asset extractor") parser = argparse.ArgumentParser(description="baserom asset extractor")
parser.add_argument("-s", "--single", help="asset path relative to assets/, e.g. objects/gameplay_keep") parser.add_argument("-v", "--oot-version", dest="oot_version", help="OOT game version", default="gc-eu-mq-dbg")
parser.add_argument("-s", "--single", help="Extract a single asset by name, e.g. objects/gameplay_keep")
parser.add_argument("-f", "--force", help="Force the extraction of every xml instead of checking the touched ones (overwriting current files).", action="store_true") parser.add_argument("-f", "--force", help="Force the extraction of every xml instead of checking the touched ones (overwriting current files).", action="store_true")
parser.add_argument("-j", "--jobs", help="Number of cpu cores to extract with.") parser.add_argument("-j", "--jobs", help="Number of cpu cores to extract with.")
parser.add_argument("-u", "--unaccounted", help="Enables ZAPD unaccounted detector warning system.", action="store_true") parser.add_argument("-u", "--unaccounted", help="Enables ZAPD unaccounted detector warning system.", action="store_true")
parser.add_argument("-Z", help="Pass the argument on to ZAPD, e.g. `-ZWunaccounted` to warn about unaccounted blocks in XMLs. Each argument should be passed separately, *without* the leading dash.", metavar="ZAPD_ARG", action="append") parser.add_argument("-Z", help="Pass the argument on to ZAPD, e.g. `-ZWunaccounted` to warn about unaccounted blocks in XMLs. Each argument should be passed separately, *without* the leading dash.", metavar="ZAPD_ARG", action="append")
args = parser.parse_args() args = parser.parse_args()
version: str = args.oot_version
versionConfig = version_config.load_version_config(version)
global ZAPDArgs global ZAPDArgs
ZAPDArgs = processZAPDArgs(args.Z) if args.Z else "" ZAPDArgs = processZAPDArgs(args.Z) if args.Z else ""
@ -110,31 +130,30 @@ def main():
manager = multiprocessing.Manager() manager = multiprocessing.Manager()
signal.signal(signal.SIGINT, SignalHandler) signal.signal(signal.SIGINT, SignalHandler)
extraction_times_p = Path("extracted") / version / "assets_extraction_times.json"
extractedAssetsTracker = manager.dict() extractedAssetsTracker = manager.dict()
if os.path.exists(EXTRACTED_ASSETS_NAMEFILE) and not args.force: if extraction_times_p.exists() and not args.force:
with open(EXTRACTED_ASSETS_NAMEFILE, encoding='utf-8') as f: with extraction_times_p.open(encoding='utf-8') as f:
extractedAssetsTracker.update(json.load(f, object_hook=manager.dict)) extractedAssetsTracker.update(json.load(f, object_hook=manager.dict))
asset_path = args.single singleAssetName = args.single
if asset_path is not None: if singleAssetName is not None:
fullPath = os.path.join("assets", "xml", asset_path + ".xml") assetConfig = None
if not os.path.exists(fullPath): for asset in versionConfig.assets:
print(f"Error. File {fullPath} does not exist.", file=os.sys.stderr) if asset.name == singleAssetName:
assetConfig = asset
break
else:
print(f"Error. Asset {singleAssetName} not found in config.", file=os.sys.stderr)
exit(1) exit(1)
initializeWorker(mainAbort, args.unaccounted, extractedAssetsTracker, manager) initializeWorker(versionConfig, mainAbort, args.unaccounted, extractedAssetsTracker, manager)
# Always extract if -s is used. # Always extract if -s is used.
fullPath = assetConfig.xml_path
if fullPath in extractedAssetsTracker: if fullPath in extractedAssetsTracker:
del extractedAssetsTracker[fullPath] del extractedAssetsTracker[fullPath]
ExtractFunc(fullPath) ExtractFunc(assetConfig)
else: else:
xmlFiles = []
for currentPath, _, files in os.walk(os.path.join("assets", "xml")):
for file in files:
fullPath = os.path.join(currentPath, file)
if file.endswith(".xml"):
xmlFiles.append(fullPath)
class CannotMultiprocessError(Exception): class CannotMultiprocessError(Exception):
pass pass
@ -147,17 +166,17 @@ def main():
mp_context = multiprocessing.get_context("fork") mp_context = multiprocessing.get_context("fork")
except ValueError as e: except ValueError as e:
raise CannotMultiprocessError() from e raise CannotMultiprocessError() from e
with mp_context.Pool(numCores, initializer=initializeWorker, initargs=(mainAbort, args.unaccounted, extractedAssetsTracker, manager)) as p: with mp_context.Pool(numCores, initializer=initializeWorker, initargs=(versionConfig, mainAbort, args.unaccounted, extractedAssetsTracker, manager)) as p:
p.map(ExtractFunc, xmlFiles) p.map(ExtractFunc, versionConfig.assets)
except (multiprocessing.ProcessError, TypeError, CannotMultiprocessError): except (multiprocessing.ProcessError, TypeError, CannotMultiprocessError):
print("Warning: Multiprocessing exception ocurred.", file=os.sys.stderr) print("Warning: Multiprocessing exception ocurred.", file=os.sys.stderr)
print("Disabling mutliprocessing.", file=os.sys.stderr) print("Disabling mutliprocessing.", file=os.sys.stderr)
initializeWorker(mainAbort, args.unaccounted, extractedAssetsTracker, manager) initializeWorker(versionConfig, mainAbort, args.unaccounted, extractedAssetsTracker, manager)
for singlePath in xmlFiles: for assetConfig in versionConfig.assets:
ExtractFunc(singlePath) ExtractFunc(assetConfig)
with open(EXTRACTED_ASSETS_NAMEFILE, 'w', encoding='utf-8') as f: with extraction_times_p.open('w', encoding='utf-8') as f:
serializableDict = dict() serializableDict = dict()
for xml, data in extractedAssetsTracker.items(): for xml, data in extractedAssetsTracker.items():
serializableDict[xml] = dict(data) serializableDict[xml] = dict(data)

View file

@ -428,7 +428,7 @@ typedef enum {
/** /**
* Unmute all sequence players * Unmute all sequence players
* *
* @param restartNotes (s32) if set to 1, then notes with the `MUTE_BEHAVIOR_STOP_SAMPLES` flag set * @param restartNotes (s32) if set to 1, then notes with the `MUTE_BEHAVIOR_STOP_SAMPLES` flag set
* are marked as finished for all seqPlayers * are marked as finished for all seqPlayers
*/ */
#define AUDIOCMD_GLOBAL_UNMUTE(restartNotes) \ #define AUDIOCMD_GLOBAL_UNMUTE(restartNotes) \

View file

@ -10,7 +10,7 @@ typedef struct {
} Color_RGBA8; } Color_RGBA8;
// only use when necessary for alignment purposes // only use when necessary for alignment purposes
typedef union { typedef union Color_RGBA8_u32 {
struct { struct {
u8 r, g, b, a; u8 r, g, b, a;
}; };

View file

@ -757,9 +757,7 @@ void Cutscene_HandleConditionalTriggers(PlayState* play);
void Cutscene_SetScript(PlayState* play, void* script); void Cutscene_SetScript(PlayState* play, void* script);
void* MemCpy(void* dest, const void* src, s32 len); void* MemCpy(void* dest, const void* src, s32 len);
void GetItem_Draw(PlayState* play, s16 drawId); void GetItem_Draw(PlayState* play, s16 drawId);
void SfxSource_InitAll(PlayState* play);
void SfxSource_UpdateAll(PlayState* play);
void SfxSource_PlaySfxAtFixedWorldPos(PlayState* play, Vec3f* worldPos, s32 duration, u16 sfxId);
u16 QuestHint_GetSariaTextId(PlayState* play); u16 QuestHint_GetSariaTextId(PlayState* play);
u16 QuestHint_GetNaviTextId(PlayState* play); u16 QuestHint_GetNaviTextId(PlayState* play);
u16 MaskReaction_GetTextId(PlayState* play, u32 maskReactionSet); u16 MaskReaction_GetTextId(PlayState* play, u32 maskReactionSet);
@ -932,8 +930,7 @@ void Interface_Update(PlayState* play);
Path* Path_GetByIndex(PlayState* play, s16 index, s16 max); Path* Path_GetByIndex(PlayState* play, s16 index, s16 max);
f32 Path_OrientAndGetDistSq(Actor* actor, Path* path, s16 waypoint, s16* yaw); f32 Path_OrientAndGetDistSq(Actor* actor, Path* path, s16 waypoint, s16* yaw);
void Path_CopyLastPoint(Path* path, Vec3f* dest); void Path_CopyLastPoint(Path* path, Vec3f* dest);
void FrameAdvance_Init(FrameAdvanceContext* frameAdvCtx);
s32 FrameAdvance_Update(FrameAdvanceContext* frameAdvCtx, Input* input);
void Player_SetBootData(PlayState* play, Player* this); void Player_SetBootData(PlayState* play, Player* this);
int Player_InBlockingCsMode(PlayState* play, Player* this); int Player_InBlockingCsMode(PlayState* play, Player* this);
int Player_InCsMode(PlayState* play); int Player_InCsMode(PlayState* play);
@ -1204,37 +1201,7 @@ void KaleidoScopeCall_Init(PlayState* play);
void KaleidoScopeCall_Destroy(PlayState* play); void KaleidoScopeCall_Destroy(PlayState* play);
void KaleidoScopeCall_Update(PlayState* play); void KaleidoScopeCall_Update(PlayState* play);
void KaleidoScopeCall_Draw(PlayState* play); void KaleidoScopeCall_Draw(PlayState* play);
void Play_SetViewpoint(PlayState* this, s16 viewpoint);
s32 Play_CheckViewpoint(PlayState* this, s16 viewpoint);
void Play_SetShopBrowsingViewpoint(PlayState* this);
Gfx* Play_SetFog(PlayState* this, Gfx* gfx);
void Play_Destroy(GameState* thisx);
void Play_Init(GameState* thisx);
void Play_Main(GameState* thisx);
int Play_InCsMode(PlayState* this);
f32 func_800BFCB8(PlayState* this, MtxF* mf, Vec3f* pos);
void* Play_LoadFile(PlayState* this, RomFile* file);
void Play_GetScreenPos(PlayState* this, Vec3f* src, Vec3f* dest);
s16 Play_CreateSubCamera(PlayState* this);
s16 Play_GetActiveCamId(PlayState* this);
s16 Play_ChangeCameraStatus(PlayState* this, s16 camId, s16 status);
void Play_ClearCamera(PlayState* this, s16 camId);
void Play_ClearAllSubCameras(PlayState* this);
Camera* Play_GetCamera(PlayState* this, s16 camId);
s32 Play_SetCameraAtEye(PlayState* this, s16 camId, Vec3f* at, Vec3f* eye);
s32 Play_SetCameraAtEyeUp(PlayState* this, s16 camId, Vec3f* at, Vec3f* eye, Vec3f* up);
s32 Play_SetCameraFov(PlayState* this, s16 camId, f32 fov);
s32 Play_SetCameraRoll(PlayState* this, s16 camId, s16 roll);
void Play_CopyCamera(PlayState* this, s16 destCamId, s16 srcCamId);
s32 Play_InitCameraDataUsingPlayer(PlayState* this, s16 camId, Player* player, s16 setting);
s32 Play_RequestCameraSetting(PlayState* this, s16 camId, s16 setting);
void Play_ReturnToMainCam(PlayState* this, s16 camId, s16 duration);
void Play_SaveSceneFlags(PlayState* this);
void Play_SetupRespawnPoint(PlayState* this, s32 respawnMode, s32 playerParams);
void Play_TriggerVoidOut(PlayState* this);
void Play_TriggerRespawn(PlayState* this);
int Play_CamIsNotFixed(PlayState* this);
int FrameAdvance_IsEnabled(PlayState* this);
s32 func_800C0D34(PlayState* this, Actor* actor, s16* yaw); s32 func_800C0D34(PlayState* this, Actor* actor, s16* yaw);
s32 func_800C0DB4(PlayState* this, Vec3f* pos); s32 func_800C0DB4(PlayState* this, Vec3f* pos);
void PreRender_SetValuesSave(PreRender* this, u32 width, u32 height, void* fbuf, void* zbuf, void* cvg); void PreRender_SetValuesSave(PreRender* this, u32 width, u32 height, void* fbuf, void* zbuf, void* cvg);
@ -1777,9 +1744,7 @@ u8 Message_GetState(MessageContext* msgCtx);
void Message_Draw(PlayState* play); void Message_Draw(PlayState* play);
void Message_Update(PlayState* play); void Message_Update(PlayState* play);
void Message_SetTables(void); void Message_SetTables(void);
void GameOver_Init(PlayState* play);
void GameOver_FadeInLights(PlayState* play);
void GameOver_Update(PlayState* play);
void Interface_Destroy(PlayState* play); void Interface_Destroy(PlayState* play);
void Interface_Init(PlayState* play); void Interface_Init(PlayState* play);
void Message_Init(PlayState* play); void Message_Init(PlayState* play);

View file

@ -30,10 +30,6 @@
#define RGBA8(r, g, b, a) ((((r) & 0xFF) << 24) | (((g) & 0xFF) << 16) | (((b) & 0xFF) << 8) | (((a) & 0xFF) << 0)) #define RGBA8(r, g, b, a) ((((r) & 0xFF) << 24) | (((g) & 0xFF) << 16) | (((b) & 0xFF) << 8) | (((a) & 0xFF) << 0))
#define GET_PLAYER(play) ((Player*)(play)->actorCtx.actorLists[ACTORCAT_PLAYER].head)
#define GET_ACTIVE_CAM(play) ((play)->cameraPtrs[(play)->activeCamId])
#define LINK_IS_ADULT (gSaveContext.save.linkAge == LINK_AGE_ADULT) #define LINK_IS_ADULT (gSaveContext.save.linkAge == LINK_AGE_ADULT)
#define LINK_IS_CHILD (gSaveContext.save.linkAge == LINK_AGE_CHILD) #define LINK_IS_CHILD (gSaveContext.save.linkAge == LINK_AGE_CHILD)

View file

@ -10,7 +10,7 @@ typedef enum {
CONT_PAK_OTHER CONT_PAK_OTHER
} ControllerPakType; } ControllerPakType;
typedef struct { typedef struct Input {
/* 0x00 */ OSContPad cur; /* 0x00 */ OSContPad cur;
/* 0x06 */ OSContPad prev; /* 0x06 */ OSContPad prev;
/* 0x0C */ OSContPad press; // X/Y store delta from last frame /* 0x0C */ OSContPad press; // X/Y store delta from last frame

View file

@ -98,7 +98,7 @@ extern u64 gMojiFontTex[]; // original name: "font_ff"
extern KaleidoMgrOverlay gKaleidoMgrOverlayTable[KALEIDO_OVL_MAX]; extern KaleidoMgrOverlay gKaleidoMgrOverlayTable[KALEIDO_OVL_MAX];
extern KaleidoMgrOverlay* gKaleidoMgrCurOvl; extern KaleidoMgrOverlay* gKaleidoMgrCurOvl;
extern u8 gBossMarkState; extern u8 gBossMarkState;
extern void* gDebugCutsceneScript;
extern s32 gScreenWidth; extern s32 gScreenWidth;
extern s32 gScreenHeight; extern s32 gScreenHeight;
extern Mtx gMtxClear; extern Mtx gMtxClear;
@ -197,10 +197,7 @@ extern MapData* gMapData;
extern f32 gBossMarkScale; extern f32 gBossMarkScale;
extern u32 D_8016139C; extern u32 D_8016139C;
extern PauseMapMarksData* gLoadedPauseMarkDataTable; extern PauseMapMarksData* gLoadedPauseMarkDataTable;
extern TransitionTile gTransitionTile;
extern s32 gTransitionTileState;
extern VisMono gPlayVisMono;
extern Color_RGBA8_u32 gVisMonoColor;
extern PreNmiBuff* gAppNmiBufferPtr; extern PreNmiBuff* gAppNmiBufferPtr;
extern uintptr_t gSegments[NUM_SEGMENTS]; extern uintptr_t gSegments[NUM_SEGMENTS];
extern Scheduler gScheduler; extern Scheduler gScheduler;

View file

@ -20,6 +20,7 @@
#include "z64curve.h" #include "z64curve.h"
#include "z64scene.h" #include "z64scene.h"
#include "z64effect.h" #include "z64effect.h"
#include "z64game_over.h"
#include "z64item.h" #include "z64item.h"
#include "z64animation.h" #include "z64animation.h"
#include "z64animation_legacy.h" #include "z64animation_legacy.h"
@ -28,11 +29,13 @@
#include "z64map_mark.h" #include "z64map_mark.h"
#include "z64message.h" #include "z64message.h"
#include "z64pause.h" #include "z64pause.h"
#include "z64play.h"
#include "z64skin.h" #include "z64skin.h"
#include "z64game.h" #include "z64game.h"
#include "z64transition.h" #include "z64transition.h"
#include "z64transition_instances.h" #include "z64transition_instances.h"
#include "z64interface.h" #include "z64interface.h"
#include "z64sfx_source.h"
#include "z64skybox.h" #include "z64skybox.h"
#include "z64sram.h" #include "z64sram.h"
#include "z64view.h" #include "z64view.h"
@ -104,90 +107,6 @@
// NOTE: Once we start supporting other builds, this can be changed with an ifdef // NOTE: Once we start supporting other builds, this can be changed with an ifdef
#define REGION_NATIVE REGION_EU #define REGION_NATIVE REGION_EU
typedef struct {
/* 0x00 */ u8 seqId;
/* 0x01 */ u8 natureAmbienceId;
} SequenceContext; // size = 0x2
typedef struct {
/* 0x00 */ s32 enabled;
/* 0x04 */ s32 timer;
} FrameAdvanceContext; // size = 0x8
typedef struct {
/* 0x00 */ Vec3f pos;
/* 0x0C */ f32 unk_0C; // radius?
/* 0x10 */ Color_RGB8 color;
} TargetContextEntry; // size = 0x14
typedef struct {
/* 0x00 */ Vec3f naviRefPos; // possibly wrong
/* 0x0C */ Vec3f targetCenterPos;
/* 0x18 */ Color_RGBAf naviInner;
/* 0x28 */ Color_RGBAf naviOuter;
/* 0x38 */ Actor* arrowPointedActor;
/* 0x3C */ Actor* targetedActor;
/* 0x40 */ f32 unk_40;
/* 0x44 */ f32 unk_44;
/* 0x48 */ s16 unk_48;
/* 0x4A */ u8 activeCategory;
/* 0x4B */ u8 unk_4B;
/* 0x4C */ s8 unk_4C;
/* 0x4D */ char unk_4D[0x03];
/* 0x50 */ TargetContextEntry arr_50[3];
/* 0x8C */ Actor* unk_8C;
/* 0x90 */ Actor* bgmEnemy; // The nearest enemy to player with the right flags that will trigger NA_BGM_ENEMY
/* 0x94 */ Actor* unk_94;
} TargetContext; // size = 0x98
typedef struct {
/* 0x00 */ void* texture;
/* 0x04 */ s16 x;
/* 0x06 */ s16 y;
/* 0x08 */ u8 width;
/* 0x09 */ u8 height;
/* 0x0A */ u8 durationTimer; // how long the title card appears for before fading
/* 0x0B */ u8 delayTimer; // how long the title card waits to appear
/* 0x0C */ s16 alpha;
/* 0x0E */ s16 intensity;
} TitleCardContext; // size = 0x10
typedef struct {
/* 0x00 */ s32 length; // number of actors loaded of this category
/* 0x04 */ Actor* head; // pointer to head of the linked list of this category (most recent actor added)
} ActorListEntry; // size = 0x08
typedef struct {
/* 0x0000 */ u8 freezeFlashTimer;
/* 0x0001 */ char unk_01[0x01];
/* 0x0002 */ u8 unk_02;
/* 0x0003 */ u8 lensActive;
/* 0x0004 */ char unk_04[0x04];
/* 0x0008 */ u8 total; // total number of actors loaded
/* 0x000C */ ActorListEntry actorLists[ACTORCAT_MAX];
/* 0x006C */ TargetContext targetCtx;
struct {
/* 0x0104 */ u32 swch;
/* 0x0108 */ u32 tempSwch;
/* 0x010C */ u32 unk0;
/* 0x0110 */ u32 unk1;
/* 0x0114 */ u32 chest;
/* 0x0118 */ u32 clear;
/* 0x011C */ u32 tempClear;
/* 0x0120 */ u32 collect;
/* 0x0124 */ u32 tempCollect;
} flags;
/* 0x0128 */ TitleCardContext titleCtx;
/* 0x0138 */ char unk_138[0x04];
/* 0x013C */ void* absoluteSpace; // Space used to allocate actor overlays with alloc type ACTOROVL_ALLOC_ABSOLUTE
} ActorContext; // size = 0x140
typedef struct {
/* 0x00 */ u16 countdown;
/* 0x04 */ Vec3f worldPos;
/* 0x10 */ Vec3f projectedPos;
} SfxSource; // size = 0x1C
typedef struct { typedef struct {
/* 0x00 */ void* loadedRamAddr; /* 0x00 */ void* loadedRamAddr;
/* 0x04 */ RomFile file; /* 0x04 */ RomFile file;
@ -203,86 +122,11 @@ typedef enum {
/* 2 */ KALEIDO_OVL_MAX /* 2 */ KALEIDO_OVL_MAX
} KaleidoOverlayType; } KaleidoOverlayType;
typedef enum {
/* 00 */ GAMEOVER_INACTIVE,
/* 01 */ GAMEOVER_DEATH_START,
/* 02 */ GAMEOVER_DEATH_WAIT_GROUND, // wait for link to fall and hit the ground
/* 03 */ GAMEOVER_DEATH_DELAY_MENU, // wait for 1 second before showing the game over menu
/* 04 */ GAMEOVER_DEATH_MENU, // do nothing while kaleidoscope handles the game over menu
/* 20 */ GAMEOVER_REVIVE_START = 20,
/* 21 */ GAMEOVER_REVIVE_RUMBLE,
/* 22 */ GAMEOVER_REVIVE_WAIT_GROUND, // wait for link to fall and hit the ground
/* 23 */ GAMEOVER_REVIVE_WAIT_FAIRY, // wait for the fairy to rise all the way up out of links body
/* 24 */ GAMEOVER_REVIVE_FADE_OUT // fade out the game over lights as link is revived and gets back up
} GameOverState;
typedef struct {
/* 0x00 */ u16 state;
} GameOverContext; // size = 0x2
typedef enum { typedef enum {
/* 0 */ LENS_MODE_SHOW_ACTORS, // lens actors are invisible by default, and shown by using lens (for example, invisible enemies) /* 0 */ LENS_MODE_SHOW_ACTORS, // lens actors are invisible by default, and shown by using lens (for example, invisible enemies)
/* 1 */ LENS_MODE_HIDE_ACTORS // lens actors are visible by default, and hidden by using lens (for example, fake walls) /* 1 */ LENS_MODE_HIDE_ACTORS // lens actors are visible by default, and hidden by using lens (for example, fake walls)
} LensMode; } LensMode;
typedef enum {
/* 0 */ ROOM_BEHAVIOR_TYPE1_0,
/* 1 */ ROOM_BEHAVIOR_TYPE1_1,
/* 2 */ ROOM_BEHAVIOR_TYPE1_2,
/* 3 */ ROOM_BEHAVIOR_TYPE1_3, // unused
/* 4 */ ROOM_BEHAVIOR_TYPE1_4, // unused
/* 5 */ ROOM_BEHAVIOR_TYPE1_5
} RoomBehaviorType1;
typedef enum {
/* 0 */ ROOM_BEHAVIOR_TYPE2_0,
/* 1 */ ROOM_BEHAVIOR_TYPE2_1,
/* 2 */ ROOM_BEHAVIOR_TYPE2_2,
/* 3 */ ROOM_BEHAVIOR_TYPE2_3,
/* 4 */ ROOM_BEHAVIOR_TYPE2_4,
/* 5 */ ROOM_BEHAVIOR_TYPE2_5,
/* 6 */ ROOM_BEHAVIOR_TYPE2_6
} RoomBehaviorType2;
typedef struct {
/* 0x00 */ s8 num;
/* 0x01 */ u8 unk_01;
/* 0x02 */ u8 behaviorType2;
/* 0x03 */ u8 behaviorType1;
/* 0x04 */ s8 echo;
/* 0x05 */ u8 lensMode;
/* 0x08 */ RoomShape* roomShape; // original name: "ground_shape"
/* 0x0C */ void* segment;
/* 0x10 */ char unk_10[0x4];
} Room; // size = 0x14
typedef struct {
/* 0x00 */ Room curRoom;
/* 0x14 */ Room prevRoom;
/* 0x28 */ void* bufPtrs[2];
/* 0x30 */ u8 unk_30;
/* 0x31 */ s8 status;
/* 0x34 */ void* unk_34;
/* 0x38 */ DmaRequest dmaRequest;
/* 0x58 */ OSMesgQueue loadQueue;
/* 0x70 */ OSMesg loadMsg;
/* 0x74 */ s16 unk_74[2]; // context-specific data used by the current scene draw config
} RoomContext; // size = 0x78
#define SAC_ENABLE (1 << 0)
typedef struct {
/* 0x000 */ s16 colATCount;
/* 0x002 */ u16 sacFlags;
/* 0x004 */ Collider* colAT[COLLISION_CHECK_AT_MAX];
/* 0x0CC */ s32 colACCount;
/* 0x0D0 */ Collider* colAC[COLLISION_CHECK_AC_MAX];
/* 0x1C0 */ s32 colOCCount;
/* 0x1C4 */ Collider* colOC[COLLISION_CHECK_OC_MAX];
/* 0x28C */ s32 colLineCount;
/* 0x290 */ OcLine* colLine[COLLISION_CHECK_OC_LINE_MAX];
} CollisionCheckContext; // size = 0x29C
typedef struct { typedef struct {
/* 0x00 */ GameState state; /* 0x00 */ GameState state;
} SetupState; // size = 0xA4 } SetupState; // size = 0xA4
@ -339,18 +183,13 @@ typedef struct {
/* 0x00A8 */ View view; /* 0x00A8 */ View view;
} SampleState; // size = 0x1D0 } SampleState; // size = 0x1D0
typedef struct { typedef struct QuestHintCmd {
/* 0x00 */ u8 byte0; /* 0x00 */ u8 byte0;
/* 0x01 */ u8 byte1; /* 0x01 */ u8 byte1;
/* 0x02 */ u8 byte2; /* 0x02 */ u8 byte2;
/* 0x03 */ u8 byte3; /* 0x03 */ u8 byte3;
} QuestHintCmd; // size = 0x4 } QuestHintCmd; // size = 0x4
typedef struct {
/* 0x00 */ u8 numActors;
/* 0x04 */ TransitionActorEntry* list;
} TransitionActorContext; // size = 0x8
typedef enum { typedef enum {
/* 0 */ PAUSE_BG_PRERENDER_OFF, // Inactive, do nothing. /* 0 */ PAUSE_BG_PRERENDER_OFF, // Inactive, do nothing.
/* 1 */ PAUSE_BG_PRERENDER_SETUP, // The current frame is only drawn for the purpose of serving as the pause background. /* 1 */ PAUSE_BG_PRERENDER_SETUP, // The current frame is only drawn for the purpose of serving as the pause background.
@ -366,87 +205,6 @@ typedef enum {
/* 3 */ TRANS_TILE_READY // The transition is ready, so will update and draw each frame /* 3 */ TRANS_TILE_READY // The transition is ready, so will update and draw each frame
} TransitionTileState; } TransitionTileState;
typedef struct PlayState {
/* 0x00000 */ GameState state;
/* 0x000A4 */ s16 sceneId;
/* 0x000A6 */ u8 sceneDrawConfig;
/* 0x000A7 */ char unk_A7[0x9];
/* 0x000B0 */ void* sceneSegment;
/* 0x000B8 */ View view;
/* 0x001E0 */ Camera mainCamera;
/* 0x0034C */ Camera subCameras[NUM_CAMS - CAM_ID_SUB_FIRST];
/* 0x00790 */ Camera* cameraPtrs[NUM_CAMS];
/* 0x007A0 */ s16 activeCamId;
/* 0x007A2 */ s16 nextCamId;
/* 0x007A4 */ SequenceContext sequenceCtx;
/* 0x007A8 */ LightContext lightCtx;
/* 0x007B8 */ FrameAdvanceContext frameAdvCtx;
/* 0x007C0 */ CollisionContext colCtx;
/* 0x01C24 */ ActorContext actorCtx;
/* 0x01D64 */ CutsceneContext csCtx; // "demo_play"
/* 0x01DB4 */ SfxSource sfxSources[16];
/* 0x01F74 */ SramContext sramCtx;
/* 0x01F78 */ SkyboxContext skyboxCtx;
/* 0x020D8 */ MessageContext msgCtx; // "message"
/* 0x104F0 */ InterfaceContext interfaceCtx; // "parameter"
/* 0x10760 */ PauseContext pauseCtx;
/* 0x10A20 */ GameOverContext gameOverCtx;
/* 0x10A24 */ EnvironmentContext envCtx;
/* 0x10B20 */ AnimTaskQueue animTaskQueue;
/* 0x117A4 */ ObjectContext objectCtx;
/* 0x11CBC */ RoomContext roomCtx;
/* 0x11D34 */ TransitionActorContext transiActorCtx;
/* 0x11D3C */ void (*playerInit)(Player* player, struct PlayState* play, FlexSkeletonHeader* skelHeader);
/* 0x11D40 */ void (*playerUpdate)(Player* player, struct PlayState* play, Input* input);
/* 0x11D44 */ int (*isPlayerDroppingFish)(struct PlayState* play);
/* 0x11D48 */ s32 (*startPlayerFishing)(struct PlayState* play);
/* 0x11D4C */ s32 (*grabPlayer)(struct PlayState* play, Player* player);
/* 0x11D50 */ s32 (*tryPlayerCsAction)(struct PlayState* play, Actor* actor, s32 csAction);
/* 0x11D54 */ void (*func_11D54)(Player* player, struct PlayState* play);
/* 0x11D58 */ s32 (*damagePlayer)(struct PlayState* play, s32 damage);
/* 0x11D5C */ void (*talkWithPlayer)(struct PlayState* play, Actor* actor);
/* 0x11D60 */ MtxF viewProjectionMtxF;
/* 0x11DA0 */ MtxF billboardMtxF;
/* 0x11DE0 */ Mtx* billboardMtx;
/* 0x11DE4 */ u32 gameplayFrames;
/* 0x11DE8 */ u8 linkAgeOnLoad;
/* 0x11DE9 */ u8 haltAllActors;
/* 0x11DEA */ u8 spawn;
/* 0x11DEB */ u8 numActorEntries;
/* 0x11DEC */ u8 numRooms;
/* 0x11DF0 */ RomFile* roomList;
/* 0x11DF4 */ ActorEntry* playerEntry;
/* 0x11DF8 */ ActorEntry* actorEntryList;
/* 0x11DFC */ void* unk_11DFC;
/* 0x11E00 */ Spawn* spawnList;
/* 0x11E04 */ s16* exitList;
/* 0x11E08 */ Path* pathList;
/* 0x11E0C */ QuestHintCmd* naviQuestHints;
/* 0x11E10 */ void* specialEffects;
/* 0x11E14 */ u8 skyboxId;
/* 0x11E15 */ s8 transitionTrigger; // "fade_direction"
/* 0x11E16 */ s16 unk_11E16;
/* 0x11E18 */ s16 bgCoverAlpha;
/* 0x11E1A */ s16 nextEntranceIndex;
/* 0x11E1C */ char unk_11E1C[0x40];
/* 0x11E5C */ s8 shootingGalleryStatus;
/* 0x11E5D */ s8 bombchuBowlingStatus; // "bombchu_game_flag"
/* 0x11E5E */ u8 transitionType;
/* 0x11E60 */ CollisionCheckContext colChkCtx;
/* 0x120FC */ u16 cutsceneFlags[20];
/* 0x12124 */ PreRender pauseBgPreRender;
/* 0x12174 */ char unk_12174[0x53];
/* 0x121C7 */ s8 unk_121C7;
/* 0x121C8 */ TransitionContext transitionCtx;
/* 0x12418 */ char unk_12418[0x3];
/* 0x1241B */ u8 transitionMode; // "fbdemo_wipe_modem"
/* 0x1241C */ TransitionFade transitionFadeFlash; // Transition fade instance which flashes screen, see R_TRANS_FADE_FLASH_ALPHA_STEP
/* 0x12428 */ char unk_12428[0x3];
/* 0x1242B */ u8 viewpoint; // toggleable camera setting by shops or player. Is also equal to the bgCamIndex + 1
/* 0x1242C */ SceneTableEntry* loadedScene;
/* 0x12430 */ char unk_12430[0xE8];
} PlayState; // size = 0x12518
typedef struct { typedef struct {
/* 0x0000 */ GameState state; /* 0x0000 */ GameState state;
/* 0x00A8 */ View view; /* 0x00A8 */ View view;

View file

@ -574,6 +574,76 @@ typedef enum {
/* 0xFF */ NAVI_ENEMY_NONE = 0xFF /* 0xFF */ NAVI_ENEMY_NONE = 0xFF
} NaviEnemy; } NaviEnemy;
typedef struct TargetContextEntry {
/* 0x00 */ Vec3f pos;
/* 0x0C */ f32 unk_0C; // radius?
/* 0x10 */ Color_RGB8 color;
} TargetContextEntry; // size = 0x14
typedef struct TargetContext {
/* 0x00 */ Vec3f naviRefPos; // possibly wrong
/* 0x0C */ Vec3f targetCenterPos;
/* 0x18 */ Color_RGBAf naviInner;
/* 0x28 */ Color_RGBAf naviOuter;
/* 0x38 */ Actor* arrowPointedActor;
/* 0x3C */ Actor* targetedActor;
/* 0x40 */ f32 unk_40;
/* 0x44 */ f32 unk_44;
/* 0x48 */ s16 unk_48;
/* 0x4A */ u8 activeCategory;
/* 0x4B */ u8 unk_4B;
/* 0x4C */ s8 unk_4C;
/* 0x4D */ char unk_4D[0x03];
/* 0x50 */ TargetContextEntry arr_50[3];
/* 0x8C */ Actor* unk_8C;
/* 0x90 */ Actor* bgmEnemy; // The nearest enemy to player with the right flags that will trigger NA_BGM_ENEMY
/* 0x94 */ Actor* unk_94;
} TargetContext; // size = 0x98
typedef struct TitleCardContext {
/* 0x00 */ void* texture;
/* 0x04 */ s16 x;
/* 0x06 */ s16 y;
/* 0x08 */ u8 width;
/* 0x09 */ u8 height;
/* 0x0A */ u8 durationTimer; // how long the title card appears for before fading
/* 0x0B */ u8 delayTimer; // how long the title card waits to appear
/* 0x0C */ s16 alpha;
/* 0x0E */ s16 intensity;
} TitleCardContext; // size = 0x10
typedef struct ActorListEntry {
/* 0x00 */ s32 length; // number of actors loaded of this category
/* 0x04 */ Actor* head; // pointer to head of the linked list of this category (most recent actor added)
} ActorListEntry; // size = 0x08
typedef struct ActorContextSceneFlags {
/* 0x00 */ u32 swch;
/* 0x04 */ u32 tempSwch;
/* 0x08 */ u32 unk0;
/* 0x0C */ u32 unk1;
/* 0x10 */ u32 chest;
/* 0x14 */ u32 clear;
/* 0x18 */ u32 tempClear;
/* 0x1C */ u32 collect;
/* 0x20 */ u32 tempCollect;
} ActorContextSceneFlags; // size = 0x24
typedef struct ActorContext {
/* 0x000 */ u8 freezeFlashTimer;
/* 0x001 */ char unk_01[0x01];
/* 0x002 */ u8 unk_02;
/* 0x003 */ u8 lensActive;
/* 0x004 */ char unk_04[0x04];
/* 0x008 */ u8 total; // total number of actors loaded
/* 0x00C */ ActorListEntry actorLists[ACTORCAT_MAX];
/* 0x06C */ TargetContext targetCtx;
/* 0x104 */ ActorContextSceneFlags flags;
/* 0x128 */ TitleCardContext titleCtx;
/* 0x138 */ char unk_138[0x04];
/* 0x13C */ void* absoluteSpace; // Space used to allocate actor overlays with alloc type ACTOROVL_ALLOC_ABSOLUTE
} ActorContext; // size = 0x140
#define TRANSITION_ACTOR_PARAMS_INDEX_SHIFT 10 #define TRANSITION_ACTOR_PARAMS_INDEX_SHIFT 10
#define GET_TRANSITION_ACTOR_INDEX(actor) ((u16)(actor)->params >> TRANSITION_ACTOR_PARAMS_INDEX_SHIFT) #define GET_TRANSITION_ACTOR_INDEX(actor) ((u16)(actor)->params >> TRANSITION_ACTOR_PARAMS_INDEX_SHIFT)

View file

@ -88,7 +88,7 @@ typedef enum {
/* 1 */ ANIMTAPER_ACCEL /* 1 */ ANIMTAPER_ACCEL
} AnimationTapers; } AnimationTapers;
// This flag seems like it was intended to be paired with `ANIM_FLAG_UPDATE_Y` to control // This flag seems like it was intended to be paired with `ANIM_FLAG_UPDATE_Y` to control
// XZ movement based on the current animation. // XZ movement based on the current animation.
// However, this flag is not checked by the Skelanime system. XZ movement will always occur // However, this flag is not checked by the Skelanime system. XZ movement will always occur
// regardless of the current state of this flag, as long as the "Actor Move" Anim Task is in use. // regardless of the current state of this flag, as long as the "Actor Move" Anim Task is in use.
@ -102,16 +102,16 @@ typedef enum {
#define ANIM_FLAG_UPDATE_Y (1 << 1) #define ANIM_FLAG_UPDATE_Y (1 << 1)
// (player-only) Related to scaling an animation from/to child/adult // (player-only) Related to scaling an animation from/to child/adult
#define ANIM_FLAG_PLAYER_2 (1 << 2) #define ANIM_FLAG_PLAYER_2 (1 << 2)
// (player-only) Call AnimTaskQueue_AddActorMove // (player-only) Call AnimTaskQueue_AddActorMove
#define ANIM_FLAG_PLAYER_SETMOVE (1 << 3) #define ANIM_FLAG_PLAYER_SETMOVE (1 << 3)
// //
#define ANIM_FLAG_NO_MOVE (1 << 4) #define ANIM_FLAG_NO_MOVE (1 << 4)
// (player-only) // (player-only)
#define ANIM_FLAG_PLAYER_7 (1 << 7) #define ANIM_FLAG_PLAYER_7 (1 << 7)
typedef struct SkelAnime { typedef struct SkelAnime {
/* 0x00 */ u8 limbCount; // Number of limbs in the skeleton /* 0x00 */ u8 limbCount; // Number of limbs in the skeleton

View file

@ -306,6 +306,18 @@ typedef struct {
/* 0x18 */ u16 ocFlags; /* 0x18 */ u16 ocFlags;
} OcLine; // size = 0x1C } OcLine; // size = 0x1C
typedef struct CollisionCheckContext {
/* 0x000 */ s16 colATCount;
/* 0x002 */ u16 sacFlags;
/* 0x004 */ Collider* colAT[COLLISION_CHECK_AT_MAX];
/* 0x0CC */ s32 colACCount;
/* 0x0D0 */ Collider* colAC[COLLISION_CHECK_AC_MAX];
/* 0x1C0 */ s32 colOCCount;
/* 0x1C4 */ Collider* colOC[COLLISION_CHECK_OC_MAX];
/* 0x28C */ s32 colLineCount;
/* 0x290 */ OcLine* colLine[COLLISION_CHECK_OC_LINE_MAX];
} CollisionCheckContext; // size = 0x29C
/* /*
* Collider properties, for all shapes * Collider properties, for all shapes
*/ */

View file

@ -0,0 +1,19 @@
#ifndef Z64FRAME_ADVANCE_H
#define Z64FRAME_ADVANCE_H
#include "ultra64.h"
struct Input;
struct PlayState;
typedef struct {
/* 0x0 */ s32 enabled;
/* 0x4 */ s32 timer;
} FrameAdvanceContext; // size = 0x8
void FrameAdvance_Init(FrameAdvanceContext* frameAdvCtx);
s32 FrameAdvance_Update(FrameAdvanceContext* frameAdvCtx, struct Input* input);
int FrameAdvance_IsEnabled(struct PlayState* this);
#endif

29
include/z64game_over.h Normal file
View file

@ -0,0 +1,29 @@
#ifndef Z64GAME_OVER_H
#define Z64GAME_OVER_H
#include "ultra64.h"
struct PlayState;
typedef enum GameOverState {
/* 00 */ GAMEOVER_INACTIVE,
/* 01 */ GAMEOVER_DEATH_START,
/* 02 */ GAMEOVER_DEATH_WAIT_GROUND, // wait for link to fall and hit the ground
/* 03 */ GAMEOVER_DEATH_DELAY_MENU, // wait for 1 second before showing the game over menu
/* 04 */ GAMEOVER_DEATH_MENU, // do nothing while kaleidoscope handles the game over menu
/* 20 */ GAMEOVER_REVIVE_START = 20,
/* 21 */ GAMEOVER_REVIVE_RUMBLE,
/* 22 */ GAMEOVER_REVIVE_WAIT_GROUND, // wait for link to fall and hit the ground
/* 23 */ GAMEOVER_REVIVE_WAIT_FAIRY, // wait for the fairy to rise all the way up out of links body
/* 24 */ GAMEOVER_REVIVE_FADE_OUT // fade out the game over lights as link is revived and gets back up
} GameOverState;
typedef struct GameOverContext {
/* 0x00 */ u16 state;
} GameOverContext; // size = 0x2
void GameOver_Init(struct PlayState* play);
void GameOver_FadeInLights(struct PlayState* play);
void GameOver_Update(struct PlayState* play);
#endif

161
include/z64play.h Normal file
View file

@ -0,0 +1,161 @@
#ifndef Z64PLAY_H
#define Z64PLAY_H
#include "ultra64.h"
#include "prerender.h"
#include "z64actor.h"
#include "z64bgcheck.h"
#include "z64camera.h"
#include "z64cutscene.h"
#include "z64environment.h"
#include "z64frame_advance.h"
#include "z64game.h"
#include "z64game_over.h"
#include "z64interface.h"
#include "z64light.h"
#include "z64message.h"
#include "z64object.h"
#include "z64pause.h"
#include "z64scene.h"
#include "z64sfx_source.h"
#include "z64skybox.h"
#include "z64sram.h"
#include "z64transition.h"
#include "z64view.h"
union Color_RGBA8_u32;
struct QuestHintCmd;
struct VisMono;
typedef struct SceneSequences {
/* 0x00 */ u8 seqId;
/* 0x01 */ u8 natureAmbienceId;
} SceneSequences; // size = 0x2
typedef struct PlayState {
/* 0x00000 */ GameState state;
/* 0x000A4 */ s16 sceneId;
/* 0x000A6 */ u8 sceneDrawConfig;
/* 0x000A7 */ char unk_A7[0x9];
/* 0x000B0 */ void* sceneSegment;
/* 0x000B8 */ View view;
/* 0x001E0 */ Camera mainCamera;
/* 0x0034C */ Camera subCameras[NUM_CAMS - CAM_ID_SUB_FIRST];
/* 0x00790 */ Camera* cameraPtrs[NUM_CAMS];
/* 0x007A0 */ s16 activeCamId;
/* 0x007A2 */ s16 nextCamId;
/* 0x007A4 */ SceneSequences sceneSequences;
/* 0x007A8 */ LightContext lightCtx;
/* 0x007B8 */ FrameAdvanceContext frameAdvCtx;
/* 0x007C0 */ CollisionContext colCtx;
/* 0x01C24 */ ActorContext actorCtx;
/* 0x01D64 */ CutsceneContext csCtx; // "demo_play"
/* 0x01DB4 */ SfxSource sfxSources[SFX_SOURCE_COUNT];
/* 0x01F74 */ SramContext sramCtx;
/* 0x01F78 */ SkyboxContext skyboxCtx;
/* 0x020D8 */ MessageContext msgCtx; // "message"
/* 0x104F0 */ InterfaceContext interfaceCtx; // "parameter"
/* 0x10760 */ PauseContext pauseCtx;
/* 0x10A20 */ GameOverContext gameOverCtx;
/* 0x10A24 */ EnvironmentContext envCtx;
/* 0x10B20 */ AnimTaskQueue animTaskQueue;
/* 0x117A4 */ ObjectContext objectCtx;
/* 0x11CBC */ RoomContext roomCtx;
/* 0x11D34 */ TransitionActorContext transiActorCtx;
/* 0x11D3C */ void (*playerInit)(Player* player, struct PlayState* play, FlexSkeletonHeader* skelHeader);
/* 0x11D40 */ void (*playerUpdate)(Player* player, struct PlayState* play, Input* input);
/* 0x11D44 */ int (*isPlayerDroppingFish)(struct PlayState* play);
/* 0x11D48 */ s32 (*startPlayerFishing)(struct PlayState* play);
/* 0x11D4C */ s32 (*grabPlayer)(struct PlayState* play, Player* player);
/* 0x11D50 */ s32 (*tryPlayerCsAction)(struct PlayState* play, Actor* actor, s32 csAction);
/* 0x11D54 */ void (*func_11D54)(Player* player, struct PlayState* play);
/* 0x11D58 */ s32 (*damagePlayer)(struct PlayState* play, s32 damage);
/* 0x11D5C */ void (*talkWithPlayer)(struct PlayState* play, Actor* actor);
/* 0x11D60 */ MtxF viewProjectionMtxF;
/* 0x11DA0 */ MtxF billboardMtxF;
/* 0x11DE0 */ Mtx* billboardMtx;
/* 0x11DE4 */ u32 gameplayFrames;
/* 0x11DE8 */ u8 linkAgeOnLoad;
/* 0x11DE9 */ u8 haltAllActors;
/* 0x11DEA */ u8 spawn;
/* 0x11DEB */ u8 numActorEntries;
/* 0x11DEC */ u8 numRooms;
/* 0x11DF0 */ RomFile* roomList;
/* 0x11DF4 */ ActorEntry* playerEntry;
/* 0x11DF8 */ ActorEntry* actorEntryList;
/* 0x11DFC */ void* unk_11DFC;
/* 0x11E00 */ Spawn* spawnList;
/* 0x11E04 */ s16* exitList;
/* 0x11E08 */ Path* pathList;
/* 0x11E0C */ struct QuestHintCmd* naviQuestHints;
/* 0x11E10 */ void* specialEffects;
/* 0x11E14 */ u8 skyboxId;
/* 0x11E15 */ s8 transitionTrigger; // "fade_direction"
/* 0x11E16 */ s16 unk_11E16;
/* 0x11E18 */ s16 bgCoverAlpha;
/* 0x11E1A */ s16 nextEntranceIndex;
/* 0x11E1C */ char unk_11E1C[0x40];
/* 0x11E5C */ s8 shootingGalleryStatus;
/* 0x11E5D */ s8 bombchuBowlingStatus; // "bombchu_game_flag"
/* 0x11E5E */ u8 transitionType;
/* 0x11E60 */ CollisionCheckContext colChkCtx;
/* 0x120FC */ u16 cutsceneFlags[20];
/* 0x12124 */ PreRender pauseBgPreRender;
/* 0x12174 */ char unk_12174[0x53];
/* 0x121C7 */ s8 unk_121C7;
/* 0x121C8 */ TransitionContext transitionCtx;
/* 0x12418 */ char unk_12418[0x3];
/* 0x1241B */ u8 transitionMode; // "fbdemo_wipe_modem"
/* 0x1241C */ TransitionFade transitionFadeFlash; // Transition fade instance which flashes screen, see R_TRANS_FADE_FLASH_ALPHA_STEP
/* 0x12428 */ char unk_12428[0x3];
/* 0x1242B */ u8 viewpoint; // toggleable camera setting by shops or player. Is also equal to the bgCamIndex + 1
/* 0x1242C */ SceneTableEntry* loadedScene;
/* 0x12430 */ char unk_12430[0xE8];
} PlayState; // size = 0x12518
#define GET_ACTIVE_CAM(play) ((play)->cameraPtrs[(play)->activeCamId])
#define GET_PLAYER(play) ((Player*)(play)->actorCtx.actorLists[ACTORCAT_PLAYER].head)
void Play_SetViewpoint(PlayState* this, s16 viewpoint);
s32 Play_CheckViewpoint(PlayState* this, s16 viewpoint);
void Play_SetShopBrowsingViewpoint(PlayState* this);
Gfx* Play_SetFog(PlayState* this, Gfx* gfx);
void Play_Destroy(GameState* thisx);
void Play_Init(GameState* thisx);
void Play_Main(GameState* thisx);
int Play_InCsMode(PlayState* this);
f32 func_800BFCB8(PlayState* this, MtxF* mf, Vec3f* pos);
void* Play_LoadFile(PlayState* this, RomFile* file);
void Play_GetScreenPos(PlayState* this, Vec3f* src, Vec3f* dest);
s16 Play_CreateSubCamera(PlayState* this);
s16 Play_GetActiveCamId(PlayState* this);
s16 Play_ChangeCameraStatus(PlayState* this, s16 camId, s16 status);
void Play_ClearCamera(PlayState* this, s16 camId);
void Play_ClearAllSubCameras(PlayState* this);
Camera* Play_GetCamera(PlayState* this, s16 camId);
s32 Play_SetCameraAtEye(PlayState* this, s16 camId, Vec3f* at, Vec3f* eye);
s32 Play_SetCameraAtEyeUp(PlayState* this, s16 camId, Vec3f* at, Vec3f* eye, Vec3f* up);
s32 Play_SetCameraFov(PlayState* this, s16 camId, f32 fov);
s32 Play_SetCameraRoll(PlayState* this, s16 camId, s16 roll);
void Play_CopyCamera(PlayState* this, s16 destCamId, s16 srcCamId);
s32 Play_InitCameraDataUsingPlayer(PlayState* this, s16 camId, Player* player, s16 setting);
s32 Play_RequestCameraSetting(PlayState* this, s16 camId, s16 setting);
void Play_ReturnToMainCam(PlayState* this, s16 camId, s16 duration);
void Play_SaveSceneFlags(PlayState* this);
void Play_SetupRespawnPoint(PlayState* this, s32 respawnMode, s32 playerParams);
void Play_TriggerVoidOut(PlayState* this);
void Play_TriggerRespawn(PlayState* this);
int Play_CamIsNotFixed(PlayState* this);
#if OOT_DEBUG
extern void* gDebugCutsceneScript;
#endif
extern TransitionTile gTransitionTile;
extern s32 gTransitionTileState;
extern struct VisMono gPlayVisMono;
extern union Color_RGBA8_u32 gVisMonoColor;
#endif

View file

@ -786,7 +786,7 @@ typedef struct Player {
/* 0x0450 */ Vec3f unk_450; /* 0x0450 */ Vec3f unk_450;
/* 0x045C */ Vec3f unk_45C; /* 0x045C */ Vec3f unk_45C;
/* 0x0468 */ char unk_468[0x002]; /* 0x0468 */ char unk_468[0x002];
/* 0x046A */ union { /* 0x046A */ union {
s16 haltActorsDuringCsAction; // If true, halt actors belonging to certain categories during a `csAction` s16 haltActorsDuringCsAction; // If true, halt actors belonging to certain categories during a `csAction`
s16 slidingDoorBgCamIndex; // `BgCamIndex` used during a sliding door cutscene s16 slidingDoorBgCamIndex; // `BgCamIndex` used during a sliding door cutscene
} cv; // "Cutscene Variable": context dependent variable that has different meanings depending on what function is called } cv; // "Cutscene Variable": context dependent variable that has different meanings depending on what function is called
@ -848,11 +848,11 @@ typedef struct Player {
/* 0x0847 */ s8 controlStickSpinAngles[4]; // Stores a modified version of the control stick angle for the last 4 frames. Used for checking spins. /* 0x0847 */ s8 controlStickSpinAngles[4]; // Stores a modified version of the control stick angle for the last 4 frames. Used for checking spins.
/* 0x084B */ s8 controlStickDirections[4]; // Stores the control stick direction (relative to shape yaw) for the last 4 frames. See `PlayerStickDirection`. /* 0x084B */ s8 controlStickDirections[4]; // Stores the control stick direction (relative to shape yaw) for the last 4 frames. See `PlayerStickDirection`.
/* 0x084F */ union { /* 0x084F */ union {
s8 actionVar1; s8 actionVar1;
} av1; // "Action Variable 1": context dependent variable that has different meanings depending on what action is currently running } av1; // "Action Variable 1": context dependent variable that has different meanings depending on what action is currently running
/* 0x0850 */ union { /* 0x0850 */ union {
s16 actionVar2; s16 actionVar2;
} av2; // "Action Variable 2": context dependent variable that has different meanings depending on what action is currently running } av2; // "Action Variable 2": context dependent variable that has different meanings depending on what action is currently running

View file

@ -33,6 +33,11 @@ typedef struct {
/* 0x0E */ s16 params; /* 0x0E */ s16 params;
} TransitionActorEntry; // size = 0x10 } TransitionActorEntry; // size = 0x10
typedef struct TransitionActorContext {
/* 0x00 */ u8 numActors;
/* 0x04 */ TransitionActorEntry* list;
} TransitionActorContext; // size = 0x8
typedef struct { typedef struct {
/* 0x00 */ u8 playerEntryIndex; /* 0x00 */ u8 playerEntryIndex;
/* 0x01 */ u8 room; /* 0x01 */ u8 room;
@ -139,6 +144,50 @@ typedef union {
RoomShapeCullable cullable; RoomShapeCullable cullable;
} RoomShape; // "Ground Shape" } RoomShape; // "Ground Shape"
typedef enum RoomBehaviorType1 {
/* 0 */ ROOM_BEHAVIOR_TYPE1_0,
/* 1 */ ROOM_BEHAVIOR_TYPE1_1,
/* 2 */ ROOM_BEHAVIOR_TYPE1_2,
/* 3 */ ROOM_BEHAVIOR_TYPE1_3, // unused
/* 4 */ ROOM_BEHAVIOR_TYPE1_4, // unused
/* 5 */ ROOM_BEHAVIOR_TYPE1_5
} RoomBehaviorType1;
typedef enum RoomBehaviorType2 {
/* 0 */ ROOM_BEHAVIOR_TYPE2_0,
/* 1 */ ROOM_BEHAVIOR_TYPE2_1,
/* 2 */ ROOM_BEHAVIOR_TYPE2_2,
/* 3 */ ROOM_BEHAVIOR_TYPE2_3,
/* 4 */ ROOM_BEHAVIOR_TYPE2_4,
/* 5 */ ROOM_BEHAVIOR_TYPE2_5,
/* 6 */ ROOM_BEHAVIOR_TYPE2_6
} RoomBehaviorType2;
typedef struct Room {
/* 0x00 */ s8 num;
/* 0x01 */ u8 unk_01;
/* 0x02 */ u8 behaviorType2;
/* 0x03 */ u8 behaviorType1;
/* 0x04 */ s8 echo;
/* 0x05 */ u8 lensMode;
/* 0x08 */ RoomShape* roomShape; // original name: "ground_shape"
/* 0x0C */ void* segment;
/* 0x10 */ char unk_10[0x4];
} Room; // size = 0x14
typedef struct RoomContext {
/* 0x00 */ Room curRoom;
/* 0x14 */ Room prevRoom;
/* 0x28 */ void* bufPtrs[2];
/* 0x30 */ u8 unk_30;
/* 0x31 */ s8 status;
/* 0x34 */ void* unk_34;
/* 0x38 */ DmaRequest dmaRequest;
/* 0x58 */ OSMesgQueue loadQueue;
/* 0x70 */ OSMesg loadMsg;
/* 0x74 */ s16 unk_74[2]; // context-specific data used by the current scene draw config
} RoomContext; // size = 0x78
#define ROOM_DRAW_OPA (1 << 0) #define ROOM_DRAW_OPA (1 << 0)
#define ROOM_DRAW_XLU (1 << 1) #define ROOM_DRAW_XLU (1 << 1)

21
include/z64sfx_source.h Normal file
View file

@ -0,0 +1,21 @@
#ifndef Z64SFX_SOURCE_H
#define Z64SFX_SOURCE_H
#include "ultra64.h"
#include "z64math.h"
struct PlayState;
typedef struct SfxSource {
/* 0x00 */ u16 countdown;
/* 0x04 */ Vec3f worldPos;
/* 0x10 */ Vec3f projectedPos;
} SfxSource; // size = 0x1C
#define SFX_SOURCE_COUNT 16
void SfxSource_InitAll(struct PlayState* play);
void SfxSource_UpdateAll(struct PlayState* play);
void SfxSource_PlaySfxAtFixedWorldPos(struct PlayState* play, Vec3f* worldPos, s32 duration, u16 sfxId);
#endif

View file

@ -88,7 +88,7 @@ typedef struct {
/* 0x060 */ Mtx lookAt; /* 0x060 */ Mtx lookAt;
/* 0x0A0 */ void* texture; /* 0x0A0 */ void* texture;
/* 0x0A8 */ Mtx modelView[2][3]; /* 0x0A8 */ Mtx modelView[2][3];
} TransitionCircle; // size = 0x228; } TransitionCircle; // size = 0x228
typedef struct { typedef struct {
/* 0x000 */ Color_RGBA8_u32 color; /* 0x000 */ Color_RGBA8_u32 color;
@ -99,6 +99,6 @@ typedef struct {
/* 0x018 */ Mtx projection; /* 0x018 */ Mtx projection;
/* 0x058 */ s32 frame; /* 0x058 */ s32 frame;
/* 0x060 */ Mtx modelView[2][3]; /* 0x060 */ Mtx modelView[2][3];
} TransitionTriforce; // size = 0x1E0; } TransitionTriforce; // size = 0x1E0
#endif #endif

View file

@ -55,7 +55,7 @@ void VisCvg_Draw(VisCvg* this, Gfx** gfxP);
// Only one type // Only one type
typedef struct { typedef struct VisMono {
/* 0x00 */ Vis vis; /* 0x00 */ Vis vis;
/* 0x10 */ u16* tlut; /* 0x10 */ u16* tlut;
/* 0x14 */ Gfx* dList; /* 0x14 */ Gfx* dList;

5
spec
View file

@ -256,12 +256,7 @@ endseg
beginseg beginseg
name "nes_font_static" name "nes_font_static"
romalign 0x1000 romalign 0x1000
#if OOT_DEBUG
include "$(BUILD_DIR)/assets/textures/nes_font_static/nes_font_static.o" include "$(BUILD_DIR)/assets/textures/nes_font_static/nes_font_static.o"
#else
// TODO: Remove this hack once assets are extracted from gc-eu-mq
include "$(BUILD_DIR)/baserom/nes_font_static.o"
#endif
number 10 number 10
endseg endseg

View file

@ -659,11 +659,12 @@ void PreRender_AntiAliasFilter(PreRender* this, s32 x, s32 y) {
} }
} }
// The background color is determined by averaging the penultimate minimum and maximum pixels, and subtracting the // The background color is determined by adding the penultimate minimum and maximum pixels, and subtracting the
// ForeGround color: // ForeGround color:
// BackGround = (pMax + pMin) - (ForeGround) * 2 // BackGround = (pMax + pMin) - ForeGround
// OutputColor = cvg * ForeGround + (1.0 - cvg) * BackGround // OutputColor = cvg * ForeGround + (1.0 - cvg) * BackGround
// = ForeGround + (1.0 - cvg) * (BackGround - ForeGround)
invCvg = 7 - buffCvg[7]; invCvg = 7 - buffCvg[7];
outR = buffR[7] + ((s32)(invCvg * (pmaxR + pminR - (buffR[7] * 2)) + 4) >> 3); outR = buffR[7] + ((s32)(invCvg * (pmaxR + pminR - (buffR[7] * 2)) + 4) >> 3);
outG = buffG[7] + ((s32)(invCvg * (pmaxG + pminG - (buffG[7] * 2)) + 4) >> 3); outG = buffG[7] + ((s32)(invCvg * (pmaxG + pminG - (buffG[7] * 2)) + 4) >> 3);

View file

@ -35,7 +35,7 @@
* - End Screen * - End Screen
* This page informs you that there are no more pages to display. * This page informs you that there are no more pages to display.
* *
* To navigate the pages, START and A may be used to advance to the next page, and L toggles whether to * To navigate the pages, DPad-Right or A may be used to advance to the next page, and L toggles whether to
* automatically scroll to the next page after some time has passed. * automatically scroll to the next page after some time has passed.
* DPad-Up may be pressed to enable sending fault pages over osSyncPrintf as well as displaying them on-screen. * DPad-Up may be pressed to enable sending fault pages over osSyncPrintf as well as displaying them on-screen.
* DPad-Down disables sending fault pages over osSyncPrintf. * DPad-Down disables sending fault pages over osSyncPrintf.
@ -911,6 +911,8 @@ void Fault_DrawMemDump(uintptr_t pc, uintptr_t sp, uintptr_t cLeftJump, uintptr_
} while (input->press.button == 0); } while (input->press.button == 0);
// Move to next page // Move to next page
//! @bug DPad-Right does not move to the next page, unlike when on any other page
// START moving to the next page is unique to this page.
if (CHECK_BTN_ALL(input->press.button, BTN_START) || CHECK_BTN_ALL(input->cur.button, BTN_A)) { if (CHECK_BTN_ALL(input->press.button, BTN_START) || CHECK_BTN_ALL(input->cur.button, BTN_A)) {
return; return;
} }

View file

@ -462,6 +462,7 @@ void Graph_ThreadEntry(void* arg0) {
if (gameState == NULL) { if (gameState == NULL) {
#if OOT_DEBUG #if OOT_DEBUG
char faultMsg[0x50]; char faultMsg[0x50];
PRINTF("確保失敗\n"); // "Failure to secure" PRINTF("確保失敗\n"); // "Failure to secure"
sprintf(faultMsg, "CLASS SIZE= %d bytes", size); sprintf(faultMsg, "CLASS SIZE= %d bytes", size);

View file

@ -6,7 +6,7 @@
// For retail BSS ordering, the block number of D_8015BD7C // For retail BSS ordering, the block number of D_8015BD7C
// must be between 88 and 123 inclusive. // must be between 88 and 123 inclusive.
#pragma increment_block_number 30 #pragma increment_block_number 26
s16 Camera_RequestSettingImpl(Camera* camera, s16 requestedSetting, s16 flags); s16 Camera_RequestSettingImpl(Camera* camera, s16 requestedSetting, s16 flags);
s32 Camera_RequestModeImpl(Camera* camera, s16 requestedMode, u8 forceModeChange); s32 Camera_RequestModeImpl(Camera* camera, s16 requestedMode, u8 forceModeChange);

View file

@ -1,5 +1,8 @@
#include "global.h" #include "global.h"
#include "terminal.h" #include "terminal.h"
#include "z64frame_advance.h"
#include "overlays/effects/ovl_Effect_Ss_HitMark/z_eff_ss_hitmark.h" #include "overlays/effects/ovl_Effect_Ss_HitMark/z_eff_ss_hitmark.h"
typedef s32 (*ColChkResetFunc)(PlayState*, Collider*); typedef s32 (*ColChkResetFunc)(PlayState*, Collider*);
@ -7,6 +10,8 @@ typedef void (*ColChkApplyFunc)(PlayState*, CollisionCheckContext*, Collider*);
typedef void (*ColChkVsFunc)(PlayState*, CollisionCheckContext*, Collider*, Collider*); typedef void (*ColChkVsFunc)(PlayState*, CollisionCheckContext*, Collider*, Collider*);
typedef s32 (*ColChkLineFunc)(PlayState*, CollisionCheckContext*, Collider*, Vec3f*, Vec3f*); typedef s32 (*ColChkLineFunc)(PlayState*, CollisionCheckContext*, Collider*, Vec3f*, Vec3f*);
#define SAC_ENABLE (1 << 0)
// For retail BSS ordering, the block number of sparkInit in CollisionCheck_BlueBlood // For retail BSS ordering, the block number of sparkInit in CollisionCheck_BlueBlood
// must be between 183 and 255 inclusive. // must be between 183 and 255 inclusive.
#pragma increment_block_number 50 #pragma increment_block_number 50
@ -2358,10 +2363,6 @@ void CollisionCheck_ATTrisVsACTris(PlayState* play, CollisionCheckContext* colCh
} }
} }
#if OOT_DEBUG
static s8 sBssDummy7;
#endif
void CollisionCheck_ATTrisVsACQuad(PlayState* play, CollisionCheckContext* colChkCtx, Collider* atCol, void CollisionCheck_ATTrisVsACQuad(PlayState* play, CollisionCheckContext* colChkCtx, Collider* atCol,
Collider* acCol) { Collider* acCol) {
static Vec3f hitPos; static Vec3f hitPos;

View file

@ -115,7 +115,7 @@ void* sUnusedEntranceCsList[] = {
gDekuTreeIntroCs, gJabuJabuIntroCs, gDcOpeningCs, gMinuetCs, gIceCavernSerenadeCs, gTowerBarrierCs, gDekuTreeIntroCs, gJabuJabuIntroCs, gDcOpeningCs, gMinuetCs, gIceCavernSerenadeCs, gTowerBarrierCs,
}; };
#pragma increment_block_number 254 #pragma increment_block_number 248
// Stores the frame the relevant cam data was last applied on // Stores the frame the relevant cam data was last applied on
u16 gCamAtSplinePointsAppliedFrame; u16 gCamAtSplinePointsAppliedFrame;
@ -2229,11 +2229,15 @@ void CutsceneHandler_RunScript(PlayState* play, CutsceneContext* csCtx) {
csCtx->curFrame++; csCtx->curFrame++;
if (OOT_DEBUG && R_USE_DEBUG_CUTSCENE) { #if OOT_DEBUG
if (R_USE_DEBUG_CUTSCENE) {
Cutscene_ProcessScript(play, csCtx, gDebugCutsceneScript); Cutscene_ProcessScript(play, csCtx, gDebugCutsceneScript);
} else { } else {
Cutscene_ProcessScript(play, csCtx, play->csCtx.script); Cutscene_ProcessScript(play, csCtx, play->csCtx.script);
} }
#else
Cutscene_ProcessScript(play, csCtx, play->csCtx.script);
#endif
} }
} }

View file

@ -1,5 +1,7 @@
#include "global.h" #include "global.h"
#include "z64frame_advance.h"
EffectContext sEffectContext; EffectContext sEffectContext;
EffectInfo sEffectInfoTable[] = { EffectInfo sEffectInfoTable[] = {

View file

@ -1,6 +1,8 @@
#include "global.h" #include "global.h"
#include "terminal.h" #include "terminal.h"
#include "z64frame_advance.h"
EffectSsInfo sEffectSsInfo = { 0 }; // "EffectSS2Info" EffectSsInfo sEffectSsInfo = { 0 }; // "EffectSS2Info"
void EffectSs_InitInfo(PlayState* play, s32 tableSize) { void EffectSs_InitInfo(PlayState* play, s32 tableSize) {

View file

@ -1,4 +1,9 @@
#include "global.h" #include "z64frame_advance.h"
#include "stdbool.h"
#include "padmgr.h"
#include "macros.h"
void FrameAdvance_Init(FrameAdvanceContext* frameAdvCtx) { void FrameAdvance_Init(FrameAdvanceContext* frameAdvCtx) {
frameAdvCtx->timer = 0; frameAdvCtx->timer = 0;

View file

@ -1,3 +1,5 @@
#include "z64game_over.h"
#include "global.h" #include "global.h"
void GameOver_Init(PlayState* play) { void GameOver_Init(PlayState* play) {

View file

@ -1,13 +1,16 @@
#include "global.h" #include "global.h"
#include "ultra64.h" #include "ultra64.h"
#include "terminal.h" #include "terminal.h"
#include "z64frame_advance.h"
#include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/gameplay_keep/gameplay_keep.h"
#include "assets/objects/gameplay_field_keep/gameplay_field_keep.h" #include "assets/objects/gameplay_field_keep/gameplay_field_keep.h"
// For retail BSS ordering, the block number of sLensFlareUnused must be lower // For retail BSS ordering, the block number of sLensFlareUnused must be lower
// than the extern variables declared in the header (e.g. gLightningStrike) // than the extern variables declared in the header (e.g. gLightningStrike)
// while the block number of sNGameOverLightNode must be higher. // while the block number of sNGameOverLightNode must be higher.
#pragma increment_block_number 78 #pragma increment_block_number 70
typedef enum { typedef enum {
/* 0x00 */ LIGHTNING_BOLT_START, /* 0x00 */ LIGHTNING_BOLT_START,
@ -2069,30 +2072,30 @@ void Environment_PlaySceneSequence(PlayState* play) {
SEQCMD_PLAY_SEQUENCE(SEQ_PLAYER_BGM_MAIN, 0, 0, ((void)0, gSaveContext.forcedSeqId)); SEQCMD_PLAY_SEQUENCE(SEQ_PLAYER_BGM_MAIN, 0, 0, ((void)0, gSaveContext.forcedSeqId));
} }
gSaveContext.forcedSeqId = NA_BGM_GENERAL_SFX; gSaveContext.forcedSeqId = NA_BGM_GENERAL_SFX;
} else if (play->sequenceCtx.seqId == NA_BGM_NO_MUSIC) { } else if (play->sceneSequences.seqId == NA_BGM_NO_MUSIC) {
if (play->sequenceCtx.natureAmbienceId == NATURE_ID_NONE) { if (play->sceneSequences.natureAmbienceId == NATURE_ID_NONE) {
return; return;
} }
if (((void)0, gSaveContext.natureAmbienceId) != play->sequenceCtx.natureAmbienceId) { if (((void)0, gSaveContext.natureAmbienceId) != play->sceneSequences.natureAmbienceId) {
Audio_PlayNatureAmbienceSequence(play->sequenceCtx.natureAmbienceId); Audio_PlayNatureAmbienceSequence(play->sceneSequences.natureAmbienceId);
} }
} else if (play->sequenceCtx.natureAmbienceId == NATURE_ID_NONE) { } else if (play->sceneSequences.natureAmbienceId == NATURE_ID_NONE) {
// "BGM Configuration" // "BGM Configuration"
PRINTF("\n\n\nBGM設定game_play->sound_info.BGM=[%d] old_bgm=[%d]\n\n", play->sequenceCtx.seqId, PRINTF("\n\n\nBGM設定game_play->sound_info.BGM=[%d] old_bgm=[%d]\n\n", play->sceneSequences.seqId,
((void)0, gSaveContext.seqId)); ((void)0, gSaveContext.seqId));
if (((void)0, gSaveContext.seqId) != play->sequenceCtx.seqId) { if (((void)0, gSaveContext.seqId) != play->sceneSequences.seqId) {
Audio_PlaySceneSequence(play->sequenceCtx.seqId); Audio_PlaySceneSequence(play->sceneSequences.seqId);
} }
} else if (((void)0, gSaveContext.save.dayTime) >= CLOCK_TIME(7, 0) && } else if (((void)0, gSaveContext.save.dayTime) >= CLOCK_TIME(7, 0) &&
((void)0, gSaveContext.save.dayTime) <= CLOCK_TIME(17, 10)) { ((void)0, gSaveContext.save.dayTime) <= CLOCK_TIME(17, 10)) {
if (((void)0, gSaveContext.seqId) != play->sequenceCtx.seqId) { if (((void)0, gSaveContext.seqId) != play->sceneSequences.seqId) {
Audio_PlaySceneSequence(play->sequenceCtx.seqId); Audio_PlaySceneSequence(play->sceneSequences.seqId);
} }
play->envCtx.timeSeqState = TIMESEQ_FADE_DAY_BGM; play->envCtx.timeSeqState = TIMESEQ_FADE_DAY_BGM;
} else { } else {
if (((void)0, gSaveContext.natureAmbienceId) != play->sequenceCtx.natureAmbienceId) { if (((void)0, gSaveContext.natureAmbienceId) != play->sceneSequences.natureAmbienceId) {
Audio_PlayNatureAmbienceSequence(play->sequenceCtx.natureAmbienceId); Audio_PlayNatureAmbienceSequence(play->sceneSequences.natureAmbienceId);
} }
if (((void)0, gSaveContext.save.dayTime) > CLOCK_TIME(17, 10) && if (((void)0, gSaveContext.save.dayTime) > CLOCK_TIME(17, 10) &&
@ -2108,8 +2111,8 @@ void Environment_PlaySceneSequence(PlayState* play) {
PRINTF("\n-----------------\n", ((void)0, gSaveContext.forcedSeqId)); PRINTF("\n-----------------\n", ((void)0, gSaveContext.forcedSeqId));
PRINTF("\n 強制BGM=[%d]", ((void)0, gSaveContext.forcedSeqId)); // "Forced BGM" PRINTF("\n 強制BGM=[%d]", ((void)0, gSaveContext.forcedSeqId)); // "Forced BGM"
PRINTF("\n =[%d]", play->sequenceCtx.seqId); PRINTF("\n =[%d]", play->sceneSequences.seqId);
PRINTF("\n エンブ=[%d]", play->sequenceCtx.natureAmbienceId); PRINTF("\n エンブ=[%d]", play->sceneSequences.natureAmbienceId);
PRINTF("\n status=[%d]", play->envCtx.timeSeqState); PRINTF("\n status=[%d]", play->envCtx.timeSeqState);
Audio_SetEnvReverb(play->roomCtx.curRoom.echo); Audio_SetEnvReverb(play->roomCtx.curRoom.echo);
@ -2123,7 +2126,7 @@ void Environment_PlayTimeBasedSequence(PlayState* play) {
if (play->envCtx.precipitation[PRECIP_RAIN_MAX] == 0 && play->envCtx.precipitation[PRECIP_SOS_MAX] == 0) { if (play->envCtx.precipitation[PRECIP_RAIN_MAX] == 0 && play->envCtx.precipitation[PRECIP_SOS_MAX] == 0) {
PRINTF("\n\n\nNa_StartMorinigBgm\n\n"); PRINTF("\n\n\nNa_StartMorinigBgm\n\n");
Audio_PlayMorningSceneSequence(play->sequenceCtx.seqId); Audio_PlayMorningSceneSequence(play->sceneSequences.seqId);
} }
play->envCtx.timeSeqState++; play->envCtx.timeSeqState++;
@ -2149,7 +2152,7 @@ void Environment_PlayTimeBasedSequence(PlayState* play) {
case TIMESEQ_EARLY_NIGHT_CRITTERS: case TIMESEQ_EARLY_NIGHT_CRITTERS:
if (play->envCtx.precipitation[PRECIP_RAIN_MAX] == 0 && play->envCtx.precipitation[PRECIP_SOS_MAX] == 0) { if (play->envCtx.precipitation[PRECIP_RAIN_MAX] == 0 && play->envCtx.precipitation[PRECIP_SOS_MAX] == 0) {
Audio_PlayNatureAmbienceSequence(play->sequenceCtx.natureAmbienceId); Audio_PlayNatureAmbienceSequence(play->sceneSequences.natureAmbienceId);
Audio_SetNatureAmbienceChannelIO(NATURE_CHANNEL_CRITTER_0, CHANNEL_IO_PORT_1, 1); Audio_SetNatureAmbienceChannelIO(NATURE_CHANNEL_CRITTER_0, CHANNEL_IO_PORT_1, 1);
} }
@ -2586,10 +2589,10 @@ s32 Environment_IsForcedSequenceDisabled(void) {
} }
void Environment_PlayStormNatureAmbience(PlayState* play) { void Environment_PlayStormNatureAmbience(PlayState* play) {
if (play->sequenceCtx.natureAmbienceId == NATURE_ID_NONE) { if (play->sceneSequences.natureAmbienceId == NATURE_ID_NONE) {
Audio_PlayNatureAmbienceSequence(NATURE_ID_MARKET_NIGHT); Audio_PlayNatureAmbienceSequence(NATURE_ID_MARKET_NIGHT);
} else { } else {
Audio_PlayNatureAmbienceSequence(play->sequenceCtx.natureAmbienceId); Audio_PlayNatureAmbienceSequence(play->sceneSequences.natureAmbienceId);
} }
Audio_SetNatureAmbienceChannelIO(NATURE_CHANNEL_RAIN, CHANNEL_IO_PORT_1, 1); Audio_SetNatureAmbienceChannelIO(NATURE_CHANNEL_RAIN, CHANNEL_IO_PORT_1, 1);

View file

@ -2,6 +2,8 @@
#include "quake.h" #include "quake.h"
#include "terminal.h" #include "terminal.h"
#include "z64frame_advance.h"
#if OOT_DEBUG #if OOT_DEBUG
void* gDebugCutsceneScript = NULL; void* gDebugCutsceneScript = NULL;
UNK_TYPE D_8012D1F4 = 0; // unused UNK_TYPE D_8012D1F4 = 0; // unused
@ -451,8 +453,8 @@ void Play_Init(GameState* thisx) {
Interface_SetSceneRestrictions(this); Interface_SetSceneRestrictions(this);
Environment_PlaySceneSequence(this); Environment_PlaySceneSequence(this);
gSaveContext.seqId = this->sequenceCtx.seqId; gSaveContext.seqId = this->sceneSequences.seqId;
gSaveContext.natureAmbienceId = this->sequenceCtx.natureAmbienceId; gSaveContext.natureAmbienceId = this->sceneSequences.natureAmbienceId;
func_8002DF18(this, GET_PLAYER(this)); func_8002DF18(this, GET_PLAYER(this));
AnimTaskQueue_Update(this, &this->animTaskQueue); AnimTaskQueue_Update(this, &this->animTaskQueue);
gSaveContext.respawnFlag = 0; gSaveContext.respawnFlag = 0;

View file

@ -1785,7 +1785,7 @@ void Player_DrawPauseImpl(PlayState* play, void* gameplayKeep, void* linkObject,
// Note: the viewport x and y values are overwritten below, before usage // Note: the viewport x and y values are overwritten below, before usage
static Vp viewport = { (PAUSE_EQUIP_PLAYER_WIDTH / 2) << 2, (PAUSE_EQUIP_PLAYER_HEIGHT / 2) << 2, G_MAXZ / 2, 0, static Vp viewport = { (PAUSE_EQUIP_PLAYER_WIDTH / 2) << 2, (PAUSE_EQUIP_PLAYER_HEIGHT / 2) << 2, G_MAXZ / 2, 0,
(PAUSE_EQUIP_PLAYER_WIDTH / 2) << 2, (PAUSE_EQUIP_PLAYER_HEIGHT / 2) << 2, G_MAXZ / 2, 0 }; (PAUSE_EQUIP_PLAYER_WIDTH / 2) << 2, (PAUSE_EQUIP_PLAYER_HEIGHT / 2) << 2, G_MAXZ / 2, 0 };
static Lights1 lights1 = gdSPDefLights1(80, 80, 80, 255, 255, 255, 84, 84, 172); static Lights1 lights1 = gdSPDefLights1(80, 80, 80, 255, 255, 255, 84, 84, -84);
static Vec3f lightDir = { 89.8f, 0.0f, 89.8f }; static Vec3f lightDir = { 89.8f, 0.0f, 89.8f };
u8 playerSwordAndShield[2]; u8 playerSwordAndShield[2];
Gfx* opaRef; Gfx* opaRef;

Some files were not shown because too many files have changed in this diff Show more