1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-07-12 19:04:38 +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.
COMPILER := ido
# 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-dbg GameCube Europe/PAL Master Quest Debug (default)
# The following versions are work-in-progress and not yet matching:
# gc-eu GameCube Europe/PAL
# (none currently)
VERSION := gc-eu-mq-dbg
# Number of threads to extract and compress with
N_THREADS := $(shell nproc)
@ -53,7 +54,6 @@ endif
# Version-specific settings
ifeq ($(VERSION),gc-eu)
DEBUG := 0
COMPARE := 0
else ifeq ($(VERSION),gc-eu-mq)
DEBUG := 0
CPP_DEFINES += -DOOT_MQ
@ -211,11 +211,12 @@ else
SRC_DIRS := $(shell find src -type d)
endif
ASSET_BIN_DIRS := $(shell find assets/* -type d -not -path "assets/xml*" -not -path "assets/text")
ASSET_FILES_XML := $(foreach dir,$(ASSET_BIN_DIRS),$(wildcard $(dir)/*.xml))
# create extracted directories
$(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_OUT := $(foreach f,$(ASSET_FILES_XML:.xml=.c),$f) \
$(foreach f,$(ASSET_FILES_BIN:.bin=.bin.inc.c),$(BUILD_DIR)/$f) \
ASSET_FILES_OUT := $(foreach f,$(ASSET_FILES_BIN:.bin=.bin.inc.c),$(f:$(EXTRACTED_DIR)/%=$(BUILD_DIR)/%)) \
$(foreach f,$(wildcard assets/text/*.c),$(BUILD_DIR)/$(f:.c=.o))
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/*)
# 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))
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)
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_JPG := $(foreach dir,$(ASSET_BIN_DIRS),$(wildcard $(dir)/*.jpg))
TEXTURE_FILES_OUT := $(foreach f,$(TEXTURE_FILES_PNG:.png=.inc.c),$(BUILD_DIR)/$f) \
$(foreach f,$(TEXTURE_FILES_JPG:.jpg=.jpg.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),$(f:$(EXTRACTED_DIR)/%=$(BUILD_DIR)/%))
# 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)
$(BUILD_DIR)/src/boot/stackcheck.o: OPTFLAGS := -O2
@ -356,12 +359,9 @@ clean:
$(RM) -r $(BUILD_DIR)
assetclean:
$(RM) -r $(ASSET_BIN_DIRS)
$(RM) -r $(EXTRACTED_DIR)
$(RM) -r $(BUILD_DIR)/assets
$(RM) -r .extracted-assets.json
distclean: assetclean
distclean:
$(RM) -r extracted/
$(RM) -r build/
$(MAKE) -C tools distclean
@ -378,10 +378,7 @@ setup: venv
$(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/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
ifeq ($(VERSION),gc-eu-mq-dbg)
$(PYTHON) extract_assets.py -j$(N_THREADS)
endif
$(PYTHON) extract_assets.py -v $(VERSION) -j$(N_THREADS)
disasm:
$(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)/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 $@ $<
$(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)
$(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 $@
$(BUILD_DIR)/assets/%.bin.inc.c: assets/%.bin
$(BUILD_DIR)/assets/%.bin.inc.c: $(EXTRACTED_DIR)/assets/%.bin
$(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 $@
-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>
<File Name="code" OutName="z_fbdemo_circle" RangeStart="0x10ED48" RangeEnd="0x10FF68">
<Texture Name="sTransCircleNormalTex" OutName="trans_circle_normal" Format="i8" Width="16" Height="64" Offset="0x10ED48"/>
<Texture Name="sTransCircleWaveTex" OutName="trans_circle_wave" Format="i8" Width="16" Height="64" Offset="0x10F148"/>
<Texture Name="sTransCircleRippleTex" OutName="trans_circle_ripple" Format="i8" Width="16" Height="64" Offset="0x10F548"/>
<Texture Name="sTransCircleStarburstTex" OutName="trans_circle_starburst" Format="i8" Width="16" Height="64" Offset="0x10F948"/>
<Array Name="sTransCircleVtx" Count="34" Offset="0x10FD48">
<File Name="code" OutName="z_fbdemo_circle">
<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="0x400"/>
<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="0xC00"/>
<Array Name="sTransCircleVtx" Count="34" Offset="0x1000">
<Vtx/>
</Array>
<!-- ZAPD isn't finding symbols correctly, instead finding them much later in `code`-->
<!--<DList Name="sTransCircleDL" Offset="0x10FF68"/>-->
<!--<DList Name="sTransCircleDL" Offset="0x1220"/>-->
</File>
</Root>

View file

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

View file

@ -1,10 +1,10 @@
<Root>
<File Name="code" OutName="z_fbdemo_wipe1" RangeStart="0x10E2A0" RangeEnd="0x10EC30">
<Array Name="sTransWipeVtx" Count="25" Offset="0x10E2A0">
<File Name="code" OutName="z_fbdemo_wipe1">
<Array Name="sTransWipeVtx" Count="25" Offset="0x0">
<Vtx/>
</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`-->
<!-- <DList Name="sTransWipeDL" Offset="0x10EC30"/> -->
<!-- <DList Name="sTransWipeDL" Offset="0x990"/> -->
</File>
</Root>

View file

@ -1,23 +1,21 @@
<Root>
<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="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"/>
<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="0x1A700"/>
<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="0x1B700"/>
<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="0x1C700"/>
<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="0x1D700"/>
<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="0x1E700"/>
<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="0x1F300"/>
<Texture Name="gTitleOcarinaOfTimeTMTextTex" OutName="title_ocarina_of_time_tm_text" Format="i8" Width="96" Height="8" Offset="0x1F540"/>
<Texture Name="gTitleTitleJPNTex" OutName="title_title_jpn" Format="i8" Width="128" Height="16" Offset="0x1F840"/>
</File>
</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>
<File Name="ovl_Arrow_Fire" BaseAddress="0x80865d10" RangeStart="0x9D0" RangeEnd="0x1DF0">
<Texture Name="s1Tex" OutName="fire_tex_1" Format="i8" Width="32" Height="64" Offset="0x9D0" Static="On"/>
<Texture Name="s2Tex" OutName="fire_tex_2" Format="i8" Width="32" Height="64" Offset="0x11D0" Static="On"/>
<Array Name="sVtx" Count="43" Offset="0x19D0" Static="On">
<File Name="ovl_Arrow_Fire">
<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="0x800" Static="On"/>
<Array Name="sVtx" Count="43" Offset="0x1000" Static="On">
<Vtx/>
</Array>
<DList Name="sMaterialDL" Offset="0x1C80" Static="On"/>
<DList Name="sModelDL" Offset="0x1D30" Static="On"/>
<DList Name="sMaterialDL" Offset="0x12B0" Static="On"/>
<DList Name="sModelDL" Offset="0x1360" Static="On"/>
</File>
</Root>

View file

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

View file

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

View file

@ -1,29 +1,29 @@
<Root>
<File Name="ovl_Bg_Ganon_Otyuka" BaseAddress="0x80875920" RangeStart="0x11C0" RangeEnd="0x259C">
<Texture Name="sPlatformTex" OutName="platform_tex" Format="rgba16" Width="32" Height="32" Offset="0x11C0"/>
<File Name="ovl_Bg_Ganon_Otyuka">
<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/>
</Array>
<DList Name="sPlatformMaterialDL" Offset="0x1A08"/>
<DList Name="sPlatformTopDL" Offset="0x1A90"/>
<DList Name="sPlatformMaterialDL" Offset="0x848"/>
<DList Name="sPlatformTopDL" Offset="0x8D0"/>
<Array Name="sPlatformBottomVtx" Count="4" Offset="0x1AA8">
<Array Name="sPlatformBottomVtx" Count="4" Offset="0x8E8">
<Vtx/>
</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/>
</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"/>
<Array Name="sFlashVtx" Count="8" Offset="0x2358">
<Texture Name="sFlashTex" OutName="flash_tex" Format="i8" Width="32" Height="64" Offset="0x998"/>
<Array Name="sFlashVtx" Count="8" Offset="0x1198">
<Vtx/>
</Array>
<DList Name="sFlashDL" Offset="0x23D8"/>
<DList Name="sFlashDL" Offset="0x1218"/>
<Collision Name="sCol" Offset="0x2570"/>
<Collision Name="sCol" Offset="0x13B0"/>
</File>
</Root>

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,8 +1,8 @@
<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_80993390" Offset="0x2160"/>
<DList Name="D_809934B8" Offset="0x2288"/>
<DList Name="D_809932D0" Offset="0x1C50"/>
<DList Name="D_80993390" Offset="0x1D10"/>
<DList Name="D_809934B8" Offset="0x1E38"/>
</File>
</Root>

View file

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

View file

@ -1,16 +1,16 @@
<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/>
</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/>
</Array>
<DList Name="sCubeDL" Offset="0x998"/>
<DList Name="sCubeDL" Offset="0x240"/>
</File>
</Root>

View file

@ -1,11 +1,11 @@
<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/>
</Array>
<DList Name="sCubeDL" Offset="0x5F8"/>
<DList Name="sCubeDL" Offset="0xC0"/>
</File>
</Root>

View file

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

View file

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

View file

@ -1,21 +1,21 @@
<Root>
<File Name="ovl_En_Ganon_Mant" BaseAddress="0x80A23D60" RangeStart="0x1218" RangeEnd="0x4118">
<Texture Name="gMantTex" OutName="mant" Format="rgba16" Width="32" Height="64" Offset="0x1218"/>
<File Name="ovl_En_Ganon_Mant">
<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/>
</Array>
<DList Name="gMantMaterialDL" Offset="0x3318"/>
<DList Name="gMantMaterialDL" Offset="0x2100"/>
<!-- ! @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/>
</Array>
</File>

View file

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

View file

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

View file

@ -1,38 +1,38 @@
<Root>
<File Name="ovl_En_Jsjutan" BaseAddress="0x80A897A0" RangeStart="0x12F8" RangeEnd="0x4C88">
<File Name="ovl_En_Jsjutan">
<!-- 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. -->
<Array Name="gShadowOddVtx" Count="144" Offset="0x22F8">
<Array Name="gShadowOddVtx" Count="144" Offset="0x1000">
<Vtx/>
</Array>
<!-- 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/>
</Array>
<!-- 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/>
</Array>
<!-- 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. -->
<DList Name="sCarpetMaterialDL" Offset="0x3DF8"/>
<DList Name="sCarpetMaterialDL" Offset="0x2B00"/>
<!-- 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. -->
<DList Name="sModelDL" Offset="0x3EE8"/>
<DList Name="sModelDL" Offset="0x2BF0"/>
<!-- 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/>
</Array>
<!-- D_80A8E400 -->
<Collision Name="sCol" Offset="0x4C60"/>
<Collision Name="sCol" Offset="0x3968"/>
</File>
</Root>

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,17 +1,17 @@
<Root>
<File Name="ovl_End_Title" BaseAddress="0x80B65720" RangeStart="0x780" RangeEnd="0x4128">
<Texture Name="sTheLegendOfZeldaTex" OutName="the_legend_of_zelda" Format="ia8" Width="120" Height="24" Offset="0x780"/>
<Texture Name="sOcarinaOfTimeTex" OutName="ocarina_of_time" Format="ia8" Width="112" Height="16" Offset="0x12C0"/>
<Texture Name="sTheEndTex" OutName="the_end" Format="ia8" Width="80" Height="24" Offset="0x19C0"/>
<Texture Name="sNintendoLeftTex" OutName="nintendo_left" Format="ia8" Width="64" Height="48" Offset="0x2140"/>
<Texture Name="sNintendoRightTex" OutName="nintendo_right" Format="ia8" Width="64" Height="48" Offset="0x2D40"/>
<Texture Name="sPresentedByTex" OutName="presented_by" Format="ia8" Width="96" Height="16" Offset="0x3940"/>
<File Name="ovl_End_Title">
<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="0xB40"/>
<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="0x19C0"/>
<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="0x31C0"/>
<Array Name="sTriforceVtx" Count="6" Offset="0x3F40">
<Array Name="sTriforceVtx" Count="6" Offset="0x37C0">
<Vtx/>
</Array>
<DList Name="sTriforceDL" Offset="0x3FA0"/>
<DList Name="sTriforceDL" Offset="0x3820"/>
<DList Name="sPresentedByNintendoDL" Offset="0x4000"/>
<DList Name="sPresentedByNintendoDL" Offset="0x3880"/>
</File>
</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>
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="assets/objects/gameplay_keep/"/>
<File Name="ovl_Magic_Dark" BaseAddress="0x80B873D0" RangeStart="0xD10" RangeEnd="0x1740">
<Texture Name="sDiamondTex" OutName="diamond_texture" Format="i8" Width="32" Height="64" Offset="0xD10"/>
<File Name="ovl_Magic_Dark">
<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/>
</Array>
<DList Name="sDiamondMaterialDL" Offset="0x1650"/>
<DList Name="sDiamondModelDL" Offset="0x1700"/>
<DList Name="sDiamondMaterialDL" Offset="0x940"/>
<DList Name="sDiamondModelDL" Offset="0x9F0"/>
</File>
</Root>

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,12 +1,12 @@
<Root>
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="assets/objects/gameplay_keep/"/>
<File Name="ovl_Oceff_Wipe4" BaseAddress="0x80BACC10" RangeStart="0x460" RangeEnd="0xF48">
<Texture Name="sTex" OutName="scarecrow_song_effect" Format="i8" Width="32" Height="64" Offset="0x460"/>
<Array Name="sFrustumVtx" Count="22" Offset="0xC60">
<File Name="ovl_Oceff_Wipe4">
<Texture Name="sTex" OutName="scarecrow_song_effect" Format="i8" Width="32" Height="64" Offset="0x0"/>
<Array Name="sFrustumVtx" Count="22" Offset="0x800">
<Vtx/>
</Array>
<DList Name="sMaterialDL" Offset="0xDC0"/>
<DList Name="sUnusedMaterialDL" Offset="0xE28"/>
<DList Name="sMaterial2DL" Offset="0xE90"/>
<DList Name="sMaterialDL" Offset="0x960"/>
<DList Name="sUnusedMaterialDL" Offset="0x9C8"/>
<DList Name="sMaterial2DL" Offset="0xA30"/>
</File>
</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>
<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"/>
</File>
<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>
<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"/>
</File>
<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>
<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"/>
<Path Name="MIZUsin_scenePathList_000424" Offset="0x0424" NumPaths="7"/>
<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="0x158F0"/>
<Scene Name="MIZUsin_scene" Offset="0x0"/>
</File>
<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>
<File Name="bdan_scene" Segment="2">
<Cutscene Name="gJabuJabuIntroCs" Offset="0x15600"/>
<Cutscene Name="gJabuJabuIntroCs" Offset="0x155E0"/>
<Scene Name="bdan_scene" Offset="0x0"/>
</File>
<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>
<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="gForestTrialSageCs" Offset="0x19ED0"/>
<Cutscene Name="gWaterTrialSageCs" Offset="0x1A8D0"/>
<Cutscene Name="gShadowTrialSageCs" Offset="0x1B2A0"/>
<Cutscene Name="gFireTrialSageCs" Offset="0x1BC70"/>
<Cutscene Name="gLightTrialSageCs" Offset="0x1C6A0"/>
<Cutscene Name="gSpiritTrialSageCs" Offset="0x1D070"/>
<Cutscene Name="gTowerBarrierCs" Offset="0x1DA50"/>
<Cutscene Name="gTowerBarrierCs" Offset="0x1DA40"/>
<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"/>
<Cutscene Name="gLightBarrierCs" Offset="0x1DF80"/>
<Cutscene Name="gFireBarrierCs" Offset="0x1E3D0"/>
<Cutscene Name="gForestBarrierCs" Offset="0x1E780"/>
<Cutscene Name="gSpiritBarrierCs" Offset="0x1EB30"/>
<Cutscene Name="gWaterBarrierCs" Offset="0x1EF60"/>
<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"/>
</File>
<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>
<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"/>
<Cutscene Name="gIceCavernSerenadeCs" Offset="0x250"/>
<Texture Name="gIceCavernNightEntranceTex" OutName="night_entrance" Format="ia16" Width="64" Height="4" Offset="0xF7F0"/>
<Texture Name="gIceCavernDayEntranceTex" OutName="day_entrance" Format="ia16" Width="64" Height="4" Offset="0xF9F0"/>
<Scene Name="ice_doukutu_scene" Offset="0x0"/>
</File>
<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>
<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"/>
<Path Name="jyasinzou_scenePathList_0004C0" Offset="0x04C0" NumPaths="6"/>
<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="0x18040"/>
<Scene Name="jyasinzou_scene" Offset="0x0"/>
<Scene Name="jyasinzou_scene_unused1" Offset="0x17200"/>
<Scene Name="jyasinzou_scene_unused2" Offset="0x176F0"/>
<Scene Name="jyasinzou_scene_unused1" Offset="0x17220"/>
<Scene Name="jyasinzou_scene_unused2" Offset="0x17710"/>
</File>
<File Name="jyasinzou_room_0" Segment="3">
<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>
<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"/>
<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="0x10130"/>
<Scene Name="men_scene" Offset="0x0"/>
</File>
<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>
<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"/>
<Cutscene Name="gDekuTreeIntroCs" Offset="0xB640"/>
<Texture Name="gYdanTex_00BA18" Format="rgba16" Width="32" Height="64" Offset="0xBA08"/>
<Texture Name="gYdanTex_00CA18" Format="rgba16" Width="32" Height="64" Offset="0xCA08"/>
<Scene Name="ydan_scene" Offset="0x0"/>
</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
from pathlib import Path
EXTRACTED_ASSETS_NAMEFILE = ".extracted-assets.json"
from tools import version_config
def SignalHandler(sig, frame):
@ -17,20 +16,33 @@ def SignalHandler(sig, frame):
mainAbort.set()
# 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():
# Don't extract if another file wasn't extracted properly.
return
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)
Path(outputSourcePath).mkdir(parents=True, exist_ok=True)
outputPath.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"
if globalUnaccounted:
@ -45,35 +57,39 @@ def ExtractFile(xmlPath, outputPath, outputSourcePath):
print("Aborting...", file=os.sys.stderr)
print("\n")
def ExtractFunc(fullPath):
*pathList, xmlName = fullPath.split(os.sep)
objectName = os.path.splitext(xmlName)[0]
def ExtractFunc(assetConfig: version_config.AssetConfig):
objectName = assetConfig.name
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
if fullPath in globalExtractedAssetsTracker:
timestamp = globalExtractedAssetsTracker[fullPath]["timestamp"]
modificationTime = int(os.path.getmtime(fullPath))
if xml_path_str in globalExtractedAssetsTracker:
timestamp = globalExtractedAssetsTracker[xml_path_str]["timestamp"]
modificationTime = int(os.path.getmtime(xml_path))
if modificationTime < timestamp:
# XML has not been modified since last extraction.
return
currentTimeStamp = int(time.time())
ExtractFile(fullPath, outPath, outSourcePath)
ExtractFile(assetConfig, outPath, outSourcePath)
if not globalAbort.is_set():
# Only update timestamp on succesful extractions
if fullPath not in globalExtractedAssetsTracker:
globalExtractedAssetsTracker[fullPath] = globalManager.dict()
globalExtractedAssetsTracker[fullPath]["timestamp"] = currentTimeStamp
if xml_path_str not in globalExtractedAssetsTracker:
globalExtractedAssetsTracker[xml_path_str] = globalManager.dict()
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 globalUnaccounted
global globalExtractedAssetsTracker
global globalManager
globalVersionConfig = versionConfig
globalAbort = abort
globalUnaccounted = unaccounted
globalExtractedAssetsTracker = extractedAssetsTracker
@ -95,13 +111,17 @@ def processZAPDArgs(argsZ):
def main():
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("-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("-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()
version: str = args.oot_version
versionConfig = version_config.load_version_config(version)
global ZAPDArgs
ZAPDArgs = processZAPDArgs(args.Z) if args.Z else ""
@ -110,31 +130,30 @@ def main():
manager = multiprocessing.Manager()
signal.signal(signal.SIGINT, SignalHandler)
extraction_times_p = Path("extracted") / version / "assets_extraction_times.json"
extractedAssetsTracker = manager.dict()
if os.path.exists(EXTRACTED_ASSETS_NAMEFILE) and not args.force:
with open(EXTRACTED_ASSETS_NAMEFILE, encoding='utf-8') as f:
if extraction_times_p.exists() and not args.force:
with extraction_times_p.open(encoding='utf-8') as f:
extractedAssetsTracker.update(json.load(f, object_hook=manager.dict))
asset_path = args.single
if asset_path is not None:
fullPath = os.path.join("assets", "xml", asset_path + ".xml")
if not os.path.exists(fullPath):
print(f"Error. File {fullPath} does not exist.", file=os.sys.stderr)
singleAssetName = args.single
if singleAssetName is not None:
assetConfig = None
for asset in versionConfig.assets:
if asset.name == singleAssetName:
assetConfig = asset
break
else:
print(f"Error. Asset {singleAssetName} not found in config.", file=os.sys.stderr)
exit(1)
initializeWorker(mainAbort, args.unaccounted, extractedAssetsTracker, manager)
initializeWorker(versionConfig, mainAbort, args.unaccounted, extractedAssetsTracker, manager)
# Always extract if -s is used.
fullPath = assetConfig.xml_path
if fullPath in extractedAssetsTracker:
del extractedAssetsTracker[fullPath]
ExtractFunc(fullPath)
ExtractFunc(assetConfig)
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):
pass
@ -147,17 +166,17 @@ def main():
mp_context = multiprocessing.get_context("fork")
except ValueError as e:
raise CannotMultiprocessError() from e
with mp_context.Pool(numCores, initializer=initializeWorker, initargs=(mainAbort, args.unaccounted, extractedAssetsTracker, manager)) as p:
p.map(ExtractFunc, xmlFiles)
with mp_context.Pool(numCores, initializer=initializeWorker, initargs=(versionConfig, mainAbort, args.unaccounted, extractedAssetsTracker, manager)) as p:
p.map(ExtractFunc, versionConfig.assets)
except (multiprocessing.ProcessError, TypeError, CannotMultiprocessError):
print("Warning: Multiprocessing exception ocurred.", file=os.sys.stderr)
print("Disabling mutliprocessing.", file=os.sys.stderr)
initializeWorker(mainAbort, args.unaccounted, extractedAssetsTracker, manager)
for singlePath in xmlFiles:
ExtractFunc(singlePath)
initializeWorker(versionConfig, mainAbort, args.unaccounted, extractedAssetsTracker, manager)
for assetConfig in versionConfig.assets:
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()
for xml, data in extractedAssetsTracker.items():
serializableDict[xml] = dict(data)

View file

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

View file

@ -757,9 +757,7 @@ void Cutscene_HandleConditionalTriggers(PlayState* play);
void Cutscene_SetScript(PlayState* play, void* script);
void* MemCpy(void* dest, const void* src, s32 len);
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_GetNaviTextId(PlayState* play);
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);
f32 Path_OrientAndGetDistSq(Actor* actor, Path* path, s16 waypoint, s16* yaw);
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);
int Player_InBlockingCsMode(PlayState* play, Player* this);
int Player_InCsMode(PlayState* play);
@ -1204,37 +1201,7 @@ void KaleidoScopeCall_Init(PlayState* play);
void KaleidoScopeCall_Destroy(PlayState* play);
void KaleidoScopeCall_Update(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_800C0DB4(PlayState* this, Vec3f* pos);
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_Update(PlayState* play);
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_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 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_CHILD (gSaveContext.save.linkAge == LINK_AGE_CHILD)

View file

@ -10,7 +10,7 @@ typedef enum {
CONT_PAK_OTHER
} ControllerPakType;
typedef struct {
typedef struct Input {
/* 0x00 */ OSContPad cur;
/* 0x06 */ OSContPad prev;
/* 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* gKaleidoMgrCurOvl;
extern u8 gBossMarkState;
extern void* gDebugCutsceneScript;
extern s32 gScreenWidth;
extern s32 gScreenHeight;
extern Mtx gMtxClear;
@ -197,10 +197,7 @@ extern MapData* gMapData;
extern f32 gBossMarkScale;
extern u32 D_8016139C;
extern PauseMapMarksData* gLoadedPauseMarkDataTable;
extern TransitionTile gTransitionTile;
extern s32 gTransitionTileState;
extern VisMono gPlayVisMono;
extern Color_RGBA8_u32 gVisMonoColor;
extern PreNmiBuff* gAppNmiBufferPtr;
extern uintptr_t gSegments[NUM_SEGMENTS];
extern Scheduler gScheduler;

View file

@ -20,6 +20,7 @@
#include "z64curve.h"
#include "z64scene.h"
#include "z64effect.h"
#include "z64game_over.h"
#include "z64item.h"
#include "z64animation.h"
#include "z64animation_legacy.h"
@ -28,11 +29,13 @@
#include "z64map_mark.h"
#include "z64message.h"
#include "z64pause.h"
#include "z64play.h"
#include "z64skin.h"
#include "z64game.h"
#include "z64transition.h"
#include "z64transition_instances.h"
#include "z64interface.h"
#include "z64sfx_source.h"
#include "z64skybox.h"
#include "z64sram.h"
#include "z64view.h"
@ -104,90 +107,6 @@
// NOTE: Once we start supporting other builds, this can be changed with an ifdef
#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 {
/* 0x00 */ void* loadedRamAddr;
/* 0x04 */ RomFile file;
@ -203,86 +122,11 @@ typedef enum {
/* 2 */ KALEIDO_OVL_MAX
} 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 {
/* 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)
} 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 {
/* 0x00 */ GameState state;
} SetupState; // size = 0xA4
@ -339,18 +183,13 @@ typedef struct {
/* 0x00A8 */ View view;
} SampleState; // size = 0x1D0
typedef struct {
typedef struct QuestHintCmd {
/* 0x00 */ u8 byte0;
/* 0x01 */ u8 byte1;
/* 0x02 */ u8 byte2;
/* 0x03 */ u8 byte3;
} QuestHintCmd; // size = 0x4
typedef struct {
/* 0x00 */ u8 numActors;
/* 0x04 */ TransitionActorEntry* list;
} TransitionActorContext; // size = 0x8
typedef enum {
/* 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.
@ -366,87 +205,6 @@ typedef enum {
/* 3 */ TRANS_TILE_READY // The transition is ready, so will update and draw each frame
} 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 {
/* 0x0000 */ GameState state;
/* 0x00A8 */ View view;

View file

@ -574,6 +574,76 @@ typedef enum {
/* 0xFF */ NAVI_ENEMY_NONE = 0xFF
} 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 GET_TRANSITION_ACTOR_INDEX(actor) ((u16)(actor)->params >> TRANSITION_ACTOR_PARAMS_INDEX_SHIFT)

View file

@ -306,6 +306,18 @@ typedef struct {
/* 0x18 */ u16 ocFlags;
} 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
*/

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

@ -33,6 +33,11 @@ typedef struct {
/* 0x0E */ s16 params;
} TransitionActorEntry; // size = 0x10
typedef struct TransitionActorContext {
/* 0x00 */ u8 numActors;
/* 0x04 */ TransitionActorEntry* list;
} TransitionActorContext; // size = 0x8
typedef struct {
/* 0x00 */ u8 playerEntryIndex;
/* 0x01 */ u8 room;
@ -139,6 +144,50 @@ typedef union {
RoomShapeCullable cullable;
} 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_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;
/* 0x0A0 */ void* texture;
/* 0x0A8 */ Mtx modelView[2][3];
} TransitionCircle; // size = 0x228;
} TransitionCircle; // size = 0x228
typedef struct {
/* 0x000 */ Color_RGBA8_u32 color;
@ -99,6 +99,6 @@ typedef struct {
/* 0x018 */ Mtx projection;
/* 0x058 */ s32 frame;
/* 0x060 */ Mtx modelView[2][3];
} TransitionTriforce; // size = 0x1E0;
} TransitionTriforce; // size = 0x1E0
#endif

View file

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

5
spec
View file

@ -256,12 +256,7 @@ endseg
beginseg
name "nes_font_static"
romalign 0x1000
#if OOT_DEBUG
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
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:
// BackGround = (pMax + pMin) - (ForeGround) * 2
// BackGround = (pMax + pMin) - ForeGround
// OutputColor = cvg * ForeGround + (1.0 - cvg) * BackGround
// = ForeGround + (1.0 - cvg) * (BackGround - ForeGround)
invCvg = 7 - buffCvg[7];
outR = buffR[7] + ((s32)(invCvg * (pmaxR + pminR - (buffR[7] * 2)) + 4) >> 3);
outG = buffG[7] + ((s32)(invCvg * (pmaxG + pminG - (buffG[7] * 2)) + 4) >> 3);

View file

@ -35,7 +35,7 @@
* - End Screen
* 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.
* 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.
@ -911,6 +911,8 @@ void Fault_DrawMemDump(uintptr_t pc, uintptr_t sp, uintptr_t cLeftJump, uintptr_
} while (input->press.button == 0);
// 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)) {
return;
}

View file

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

View file

@ -6,7 +6,7 @@
// For retail BSS ordering, the block number of D_8015BD7C
// 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);
s32 Camera_RequestModeImpl(Camera* camera, s16 requestedMode, u8 forceModeChange);

View file

@ -1,5 +1,8 @@
#include "global.h"
#include "terminal.h"
#include "z64frame_advance.h"
#include "overlays/effects/ovl_Effect_Ss_HitMark/z_eff_ss_hitmark.h"
typedef s32 (*ColChkResetFunc)(PlayState*, Collider*);
@ -7,6 +10,8 @@ typedef void (*ColChkApplyFunc)(PlayState*, CollisionCheckContext*, Collider*);
typedef void (*ColChkVsFunc)(PlayState*, CollisionCheckContext*, Collider*, Collider*);
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
// must be between 183 and 255 inclusive.
#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,
Collider* acCol) {
static Vec3f hitPos;

View file

@ -115,7 +115,7 @@ void* sUnusedEntranceCsList[] = {
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
u16 gCamAtSplinePointsAppliedFrame;
@ -2229,11 +2229,15 @@ void CutsceneHandler_RunScript(PlayState* play, CutsceneContext* csCtx) {
csCtx->curFrame++;
if (OOT_DEBUG && R_USE_DEBUG_CUTSCENE) {
#if OOT_DEBUG
if (R_USE_DEBUG_CUTSCENE) {
Cutscene_ProcessScript(play, csCtx, gDebugCutsceneScript);
} else {
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 "z64frame_advance.h"
EffectContext sEffectContext;
EffectInfo sEffectInfoTable[] = {

View file

@ -1,6 +1,8 @@
#include "global.h"
#include "terminal.h"
#include "z64frame_advance.h"
EffectSsInfo sEffectSsInfo = { 0 }; // "EffectSS2Info"
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) {
frameAdvCtx->timer = 0;

View file

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

View file

@ -1,13 +1,16 @@
#include "global.h"
#include "ultra64.h"
#include "terminal.h"
#include "z64frame_advance.h"
#include "assets/objects/gameplay_keep/gameplay_keep.h"
#include "assets/objects/gameplay_field_keep/gameplay_field_keep.h"
// For retail BSS ordering, the block number of sLensFlareUnused must be lower
// than the extern variables declared in the header (e.g. gLightningStrike)
// while the block number of sNGameOverLightNode must be higher.
#pragma increment_block_number 78
#pragma increment_block_number 70
typedef enum {
/* 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));
}
gSaveContext.forcedSeqId = NA_BGM_GENERAL_SFX;
} else if (play->sequenceCtx.seqId == NA_BGM_NO_MUSIC) {
if (play->sequenceCtx.natureAmbienceId == NATURE_ID_NONE) {
} else if (play->sceneSequences.seqId == NA_BGM_NO_MUSIC) {
if (play->sceneSequences.natureAmbienceId == NATURE_ID_NONE) {
return;
}
if (((void)0, gSaveContext.natureAmbienceId) != play->sequenceCtx.natureAmbienceId) {
Audio_PlayNatureAmbienceSequence(play->sequenceCtx.natureAmbienceId);
if (((void)0, gSaveContext.natureAmbienceId) != play->sceneSequences.natureAmbienceId) {
Audio_PlayNatureAmbienceSequence(play->sceneSequences.natureAmbienceId);
}
} else if (play->sequenceCtx.natureAmbienceId == NATURE_ID_NONE) {
} else if (play->sceneSequences.natureAmbienceId == NATURE_ID_NONE) {
// "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));
if (((void)0, gSaveContext.seqId) != play->sequenceCtx.seqId) {
Audio_PlaySceneSequence(play->sequenceCtx.seqId);
if (((void)0, gSaveContext.seqId) != play->sceneSequences.seqId) {
Audio_PlaySceneSequence(play->sceneSequences.seqId);
}
} else if (((void)0, gSaveContext.save.dayTime) >= CLOCK_TIME(7, 0) &&
((void)0, gSaveContext.save.dayTime) <= CLOCK_TIME(17, 10)) {
if (((void)0, gSaveContext.seqId) != play->sequenceCtx.seqId) {
Audio_PlaySceneSequence(play->sequenceCtx.seqId);
if (((void)0, gSaveContext.seqId) != play->sceneSequences.seqId) {
Audio_PlaySceneSequence(play->sceneSequences.seqId);
}
play->envCtx.timeSeqState = TIMESEQ_FADE_DAY_BGM;
} else {
if (((void)0, gSaveContext.natureAmbienceId) != play->sequenceCtx.natureAmbienceId) {
Audio_PlayNatureAmbienceSequence(play->sequenceCtx.natureAmbienceId);
if (((void)0, gSaveContext.natureAmbienceId) != play->sceneSequences.natureAmbienceId) {
Audio_PlayNatureAmbienceSequence(play->sceneSequences.natureAmbienceId);
}
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 強制BGM=[%d]", ((void)0, gSaveContext.forcedSeqId)); // "Forced BGM"
PRINTF("\n =[%d]", play->sequenceCtx.seqId);
PRINTF("\n エンブ=[%d]", play->sequenceCtx.natureAmbienceId);
PRINTF("\n =[%d]", play->sceneSequences.seqId);
PRINTF("\n エンブ=[%d]", play->sceneSequences.natureAmbienceId);
PRINTF("\n status=[%d]", play->envCtx.timeSeqState);
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) {
PRINTF("\n\n\nNa_StartMorinigBgm\n\n");
Audio_PlayMorningSceneSequence(play->sequenceCtx.seqId);
Audio_PlayMorningSceneSequence(play->sceneSequences.seqId);
}
play->envCtx.timeSeqState++;
@ -2149,7 +2152,7 @@ void Environment_PlayTimeBasedSequence(PlayState* play) {
case TIMESEQ_EARLY_NIGHT_CRITTERS:
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);
}
@ -2586,10 +2589,10 @@ s32 Environment_IsForcedSequenceDisabled(void) {
}
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);
} else {
Audio_PlayNatureAmbienceSequence(play->sequenceCtx.natureAmbienceId);
Audio_PlayNatureAmbienceSequence(play->sceneSequences.natureAmbienceId);
}
Audio_SetNatureAmbienceChannelIO(NATURE_CHANNEL_RAIN, CHANNEL_IO_PORT_1, 1);

View file

@ -2,6 +2,8 @@
#include "quake.h"
#include "terminal.h"
#include "z64frame_advance.h"
#if OOT_DEBUG
void* gDebugCutsceneScript = NULL;
UNK_TYPE D_8012D1F4 = 0; // unused
@ -451,8 +453,8 @@ void Play_Init(GameState* thisx) {
Interface_SetSceneRestrictions(this);
Environment_PlaySceneSequence(this);
gSaveContext.seqId = this->sequenceCtx.seqId;
gSaveContext.natureAmbienceId = this->sequenceCtx.natureAmbienceId;
gSaveContext.seqId = this->sceneSequences.seqId;
gSaveContext.natureAmbienceId = this->sceneSequences.natureAmbienceId;
func_8002DF18(this, GET_PLAYER(this));
AnimTaskQueue_Update(this, &this->animTaskQueue);
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
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 };
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 };
u8 playerSwordAndShield[2];
Gfx* opaRef;

View file

@ -409,8 +409,8 @@ BAD_RETURN(s32) Scene_CommandUndefined9(PlayState* play, SceneCmd* cmd) {
}
BAD_RETURN(s32) Scene_CommandSoundSettings(PlayState* play, SceneCmd* cmd) {
play->sequenceCtx.seqId = cmd->soundSettings.seqId;
play->sequenceCtx.natureAmbienceId = cmd->soundSettings.natureAmbienceId;
play->sceneSequences.seqId = cmd->soundSettings.seqId;
play->sceneSequences.natureAmbienceId = cmd->soundSettings.natureAmbienceId;
if (gSaveContext.seqId == (u8)NA_BGM_DISABLED) {
SEQCMD_RESET_AUDIO_HEAP(0, cmd->soundSettings.specId);

View file

@ -1,6 +1,8 @@
#include "global.h"
#include "quake.h"
#include "z64frame_advance.h"
#include "assets/scenes/indoors/miharigoya/miharigoya_scene.h"
#include "assets/scenes/indoors/souko/souko_scene.h"

View file

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

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