1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-06-08 09:31:52 +00:00

Set up multiversion assets with ZAPD and match gc-eu (#1967)

* Add ZAPD hack to deal with extracted/VERSION/ in include paths

* Extract assets to extracted/VERSION

* Add ZAPD flags to override virtual address / start offset / end offset

* Configure offsets for code and overlay assets

* Reorganize ZAPD configs

* Match gc-eu-mq

* Match gc-eu

* Remove old asset dirs during distclean

* Revert "Remove old asset dirs during distclean"

This reverts commit fc8027a75f.

* make zapd addresses globals int64_t so they can store uint32_t addresses and -1

* slight cleanup extract_assets.py

* git subrepo pull --force tools/ZAPD

subrepo:
  subdir:   "tools/ZAPD"
  merged:   "0285e11f0"
upstream:
  origin:   "https://github.com/zeldaret/ZAPD.git"
  branch:   "master"
  commit:   "0285e11f0"
git-subrepo:
  version:  "0.4.6"
  origin:   "git@github.com:ingydotnet/git-subrepo.git"
  commit:   "110b9eb"

---------

Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com>
This commit is contained in:
cadmic 2024-06-24 06:22:39 -07:00 committed by GitHub
parent b2d80568b9
commit 9def6f4d0d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
92 changed files with 4911 additions and 487 deletions

View file

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

7
assets/.gitignore vendored
View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

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

5
spec
View file

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

View file

@ -1,7 +1,7 @@
#include "file_select.h" #include "file_select.h"
#include "terminal.h" #include "terminal.h"
#include "assets/textures/title_static/title_static.h" #include "assets/textures/title_static/title_static.h"
#include "assets/overlays/ovl_File_Choose/ovl_file_choose.h" #include "assets/overlays/ovl_file_choose/ovl_file_choose.h"
static s16 D_808124C0[] = { static s16 D_808124C0[] = {
0x0002, 0x0003, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0001, 0x0002, 0x0000, 0x0001, 0x0002, 0x0003, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0001, 0x0002, 0x0000, 0x0001,

View file

@ -1,6 +1,6 @@
#include "file_select.h" #include "file_select.h"
#include "assets/overlays/ovl_File_Choose/ovl_file_choose.c" #include "assets/overlays/ovl_file_choose/ovl_file_choose.c"
s16 D_808123F0[] = { s16 D_808123F0[] = {
0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016,

View file

@ -6,7 +6,7 @@
[subrepo] [subrepo]
remote = https://github.com/zeldaret/ZAPD.git remote = https://github.com/zeldaret/ZAPD.git
branch = master branch = master
commit = 1300a4f36584627aa784cbc252d1c8ecd7b40e68 commit = 0285e11f0a5937f60db023bfe5db273f2223fcf4
parent = 4522ee2cae12b2d23b7ef0134f24f7c3e26935f0 parent = afd82230e1bd6e043eabe613f5b31f6e96f0f88c
method = merge method = merge
cmdver = 0.4.6 cmdver = 0.4.6

View file

@ -119,9 +119,14 @@ ZAPD also accepts the following list of extra parameters:
- This behaviour can be overridden per asset using `Static=` in the respective XML node. - This behaviour can be overridden per asset using `Static=` in the respective XML node.
- `--cs-float` : How cutscene floats should be extracted. - `--cs-float` : How cutscene floats should be extracted.
- Valid values: - Valid values:
- `hex` - `hex`: `0x42280000`
- `float` - `float`: `42.0f`
- `both` - `both`: `CS_FLOAT(0x42280000, 42.0f)`
- `hex-commented-left`: `/* 42.0f */ 0x42280000`
- `hex-commented-right`: `0x42280000 /* 42.0f */`
- `--base-address ADDRESS`: Override base virtual address for input files.
- `--start-offset OFFSET`: Override start offset for input files.
- `--end-offset OFFSET`: Override end offset for input files.
- `-W...`: warning flags, see below - `-W...`: warning flags, see below
Additionally, you can pass the flag `--version` to see the current ZAPD version. If that flag is passed, ZAPD will ignore any other parameter passed. Additionally, you can pass the flag `--version` to see the current ZAPD version. If that flag is passed, ZAPD will ignore any other parameter passed.

View file

@ -21,6 +21,8 @@ enum class CsFloatType
HexOnly, HexOnly,
FloatOnly, FloatOnly,
HexAndFloat, HexAndFloat,
HexAndCommentedFloatLeft,
HexAndCommentedFloatRight,
}; };
class Globals class Globals
@ -39,6 +41,9 @@ public:
fs::path baseRomPath, inputPath, outputPath, sourceOutputPath, cfgPath; fs::path baseRomPath, inputPath, outputPath, sourceOutputPath, cfgPath;
TextureType texType; TextureType texType;
CsFloatType floatType = CsFloatType::FloatOnly; CsFloatType floatType = CsFloatType::FloatOnly;
int64_t baseAddress = -1;
int64_t startOffset = -1;
int64_t endOffset = -1;
ZGame game; ZGame game;
GameConfig cfg; GameConfig cfg;
bool verboseUnaccounted = false; bool verboseUnaccounted = false;

View file

@ -37,6 +37,9 @@ void Arg_EnableGCCCompat(int& i, char* argv[]);
void Arg_ForceStatic(int& i, char* argv[]); void Arg_ForceStatic(int& i, char* argv[]);
void Arg_ForceUnaccountedStatic(int& i, char* argv[]); void Arg_ForceUnaccountedStatic(int& i, char* argv[]);
void Arg_CsFloatMode(int& i, char* argv[]); void Arg_CsFloatMode(int& i, char* argv[]);
void Arg_BaseAddress(int& i, char* argv[]);
void Arg_StartOffset(int& i, char* argv[]);
void Arg_EndOffset(int& i, char* argv[]);
int main(int argc, char* argv[]); int main(int argc, char* argv[]);
@ -254,6 +257,9 @@ void ParseArgs(int& argc, char* argv[])
{"-us", &Arg_ForceUnaccountedStatic}, {"-us", &Arg_ForceUnaccountedStatic},
{"--unaccounted-static", &Arg_ForceUnaccountedStatic}, {"--unaccounted-static", &Arg_ForceUnaccountedStatic},
{"--cs-float", &Arg_CsFloatMode}, {"--cs-float", &Arg_CsFloatMode},
{"--base-address", &Arg_BaseAddress},
{"--start-offset", &Arg_StartOffset},
{"--end-offset", &Arg_EndOffset},
}; };
for (int32_t i = 2; i < argc; i++) for (int32_t i = 2; i < argc; i++)
@ -409,17 +415,47 @@ void Arg_CsFloatMode([[maybe_unused]] int& i, [[maybe_unused]] char* argv[])
{ {
Globals::Instance->floatType = CsFloatType::HexAndFloat; Globals::Instance->floatType = CsFloatType::HexAndFloat;
} }
else if (std::strcmp(argv[i], "hex-commented-left") == 0)
{
Globals::Instance->floatType = CsFloatType::HexAndCommentedFloatLeft;
}
else if (std::strcmp(argv[i], "hex-commented-right") == 0)
{
Globals::Instance->floatType = CsFloatType::HexAndCommentedFloatRight;
}
else else
{ {
Globals::Instance->floatType = CsFloatType::FloatOnly; Globals::Instance->floatType = CsFloatType::FloatOnly;
HANDLE_WARNING( HANDLE_WARNING(
WarningType::Always, "Invalid CS Float Type", WarningType::Always, "Invalid CS Float Type",
StringHelper::Sprintf("Invalid CS float type entered. Expected \"hex\", \"float\", or " StringHelper::Sprintf("Invalid CS float type entered. Expected \"hex\", \"float\", "
"\"both\". Got %s.\n Defaulting to \"float\".", "\"both\", \"hex-commented-left\" or \"hex-commented-right\". "
"Got %s.\n Defaulting to \"float\".",
argv[i])); argv[i]));
} }
} }
uint32_t ParseU32Hex(char* str)
{
static_assert(sizeof(uint32_t) <= sizeof(unsigned long));
return (uint32_t)std::stoul(str, nullptr, 16);
}
void Arg_BaseAddress(int& i, char* argv[])
{
Globals::Instance->baseAddress = ParseU32Hex(argv[++i]);
}
void Arg_StartOffset(int& i, char* argv[])
{
Globals::Instance->startOffset = ParseU32Hex(argv[++i]);
}
void Arg_EndOffset(int& i, char* argv[])
{
Globals::Instance->endOffset = ParseU32Hex(argv[++i]);
}
int HandleExtract(ZFileMode fileMode, ExporterSet* exporterSet) int HandleExtract(ZFileMode fileMode, ExporterSet* exporterSet)
{ {
bool procFileModeSuccess = false; bool procFileModeSuccess = false;

View file

@ -375,33 +375,22 @@ ZResourceType ZCutscene::GetResourceType() const
std::string ZCutscene::GetCsEncodedFloat(float f, CsFloatType type, bool useSciNotation) std::string ZCutscene::GetCsEncodedFloat(float f, CsFloatType type, bool useSciNotation)
{ {
uint32_t i;
std::memcpy(&i, &f, sizeof(i));
switch (type) switch (type)
{ {
default: default:
// This default case will NEVER be reached, but GCC still gives a warning. // This default case will NEVER be reached, but GCC still gives a warning.
case CsFloatType::HexOnly: case CsFloatType::HexOnly:
{
uint32_t i;
std::memcpy(&i, &f, sizeof(i));
return StringHelper::Sprintf("0x%08X", i); return StringHelper::Sprintf("0x%08X", i);
}
case CsFloatType::FloatOnly: case CsFloatType::FloatOnly:
{ return StringHelper::Sprintf(useSciNotation ? "%.8ef" : "%ff", f);
if (useSciNotation)
{
return StringHelper::Sprintf("%.8ef", f);
}
return StringHelper::Sprintf("%ff", f);
}
case CsFloatType::HexAndFloat: case CsFloatType::HexAndFloat:
{ return StringHelper::Sprintf(useSciNotation ? "CS_FLOAT(0x%08X, %.8ef)" : "CS_FLOAT(0x%08X, %ff)", i, f);
uint32_t i; case CsFloatType::HexAndCommentedFloatLeft:
std::memcpy(&i, &f, sizeof(i)); return StringHelper::Sprintf(useSciNotation ? "/* %.8ef */ 0x%08X" : "/* %ff */ 0x%08X", f, i);
if (useSciNotation) case CsFloatType::HexAndCommentedFloatRight:
{ return StringHelper::Sprintf(useSciNotation ? "0x%08X /* %.8ef */" : "0x%08X /* %ff */", i, f);
return StringHelper::Sprintf("CS_FLOAT(0x%08X, %.8ef)", i, f);
}
return StringHelper::Sprintf("CS_FLOAT(0x%08X, %ff)", i, f);
}
} }
} }

View file

@ -120,6 +120,9 @@ void ZFile::ParseXML(tinyxml2::XMLElement* reader, const std::string& filename)
if (reader->Attribute("BaseAddress") != nullptr) if (reader->Attribute("BaseAddress") != nullptr)
baseAddress = StringHelper::StrToL(reader->Attribute("BaseAddress"), 16); baseAddress = StringHelper::StrToL(reader->Attribute("BaseAddress"), 16);
if (mode == ZFileMode::Extract && Globals::Instance->baseAddress != -1)
baseAddress = Globals::Instance->baseAddress;
if (reader->Attribute("RangeStart") != nullptr) if (reader->Attribute("RangeStart") != nullptr)
rangeStart = StringHelper::StrToL(reader->Attribute("RangeStart"), 16); rangeStart = StringHelper::StrToL(reader->Attribute("RangeStart"), 16);
@ -197,6 +200,9 @@ void ZFile::ParseXML(tinyxml2::XMLElement* reader, const std::string& filename)
} }
rawData = File::ReadAllBytes((basePath / name).string()); rawData = File::ReadAllBytes((basePath / name).string());
if (mode == ZFileMode::Extract && Globals::Instance->startOffset != -1 && Globals::Instance->endOffset != -1)
rawData = std::vector<uint8_t>(rawData.begin() + Globals::Instance->startOffset,
rawData.begin() + Globals::Instance->endOffset);
if (reader->Attribute("RangeEnd") == nullptr) if (reader->Attribute("RangeEnd") == nullptr)
rangeEnd = rawData.size(); rangeEnd = rawData.size();
@ -585,6 +591,12 @@ Declaration* ZFile::AddDeclarationIncludeArray(offset_t address, std::string& in
includePath = "assets/" + StringHelper::Split(includePath, "assets/extracted/")[1]; includePath = "assets/" + StringHelper::Split(includePath, "assets/extracted/")[1];
if (StringHelper::StartsWith(includePath, "assets/custom/")) if (StringHelper::StartsWith(includePath, "assets/custom/"))
includePath = "assets/" + StringHelper::Split(includePath, "assets/custom/")[1]; includePath = "assets/" + StringHelper::Split(includePath, "assets/custom/")[1];
// Hack for OOT: don't prefix include paths with extracted/VERSION/
if (StringHelper::StartsWith(includePath, "extracted/")) {
std::vector<std::string> parts = StringHelper::Split(includePath, "/");
parts.erase(parts.begin(), parts.begin() + 2);
includePath = StringHelper::Join(parts, "/");
}
Declaration* decl = GetDeclaration(address); Declaration* decl = GetDeclaration(address);
if (decl == nullptr) if (decl == nullptr)
@ -621,6 +633,12 @@ Declaration* ZFile::AddDeclarationIncludeArray(offset_t address, std::string& in
includePath = "assets/" + StringHelper::Split(includePath, "assets/extracted/")[1]; includePath = "assets/" + StringHelper::Split(includePath, "assets/extracted/")[1];
if (StringHelper::StartsWith(includePath, "assets/custom/")) if (StringHelper::StartsWith(includePath, "assets/custom/"))
includePath = "assets/" + StringHelper::Split(includePath, "assets/custom/")[1]; includePath = "assets/" + StringHelper::Split(includePath, "assets/custom/")[1];
// Hack for OOT: don't prefix include paths with extracted/VERSION/
if (StringHelper::StartsWith(includePath, "extracted/")) {
std::vector<std::string> parts = StringHelper::Split(includePath, "/");
parts.erase(parts.begin(), parts.begin() + 2);
includePath = StringHelper::Join(parts, "/");
}
Declaration* decl = GetDeclaration(address); Declaration* decl = GetDeclaration(address);
if (decl == nullptr) if (decl == nullptr)

View file

@ -30,6 +30,21 @@ public:
return result; return result;
} }
static std::string Join(const std::vector<std::string> parts, const std::string& delimiter)
{
std::string result;
for (size_t i = 0; i < parts.size(); i++)
{
result += parts[i];
if (i != parts.size() - 1)
result += delimiter;
}
return result;
}
static std::string Strip(std::string s, const std::string& delimiter) static std::string Strip(std::string s, const std::string& delimiter)
{ {
size_t pos = 0; size_t pos = 0;

View file

@ -1,9 +0,0 @@
<Root>
<SymbolMap File="SymbolMap_OoTMqDbg.txt"/>
<ActorList File="ActorList_OoTMqDbg.txt"/>
<ObjectList File="ObjectList_OoTMqDbg.txt"/>
<EntranceList File="EntranceList_OoTMqDbg.txt"/>
<SpecialEntranceList File="SpecialEntranceList_OoTMqDbg.txt"/>
<EnumData File="EnumData.xml"/>
<ExternalXMLFolder Path="assets/xml/"/>
</Root>

View file

@ -1 +0,0 @@
8012DB20 gMtxClear

View file

@ -0,0 +1,9 @@
<Root>
<SymbolMap File="SymbolMap.txt"/>
<ActorList File="../ActorList.txt"/>
<ObjectList File="../ObjectList.txt"/>
<EntranceList File="../EntranceList.txt"/>
<SpecialEntranceList File="../SpecialEntranceList.txt"/>
<EnumData File="../EnumData.xml"/>
<ExternalXMLFolder Path="assets/xml/"/>
</Root>

View file

@ -0,0 +1,2 @@
8012DB20 gMtxClear
80A8E610 sShadowTex

View file

@ -0,0 +1,9 @@
<Root>
<SymbolMap File="SymbolMap.txt"/>
<ActorList File="../ActorList.txt"/>
<ObjectList File="../ObjectList.txt"/>
<EntranceList File="../EntranceList.txt"/>
<SpecialEntranceList File="../SpecialEntranceList.txt"/>
<EnumData File="../EnumData.xml"/>
<ExternalXMLFolder Path="assets/xml/"/>
</Root>

View file

@ -0,0 +1,2 @@
800FBC00 gMtxClear
80A72FA0 sShadowTex

View file

@ -0,0 +1,9 @@
<Root>
<SymbolMap File="SymbolMap.txt"/>
<ActorList File="../ActorList.txt"/>
<ObjectList File="../ObjectList.txt"/>
<EntranceList File="../EntranceList.txt"/>
<SpecialEntranceList File="../SpecialEntranceList.txt"/>
<EnumData File="../EnumData.xml"/>
<ExternalXMLFolder Path="assets/xml/"/>
</Root>

View file

@ -0,0 +1,2 @@
800FBC20 gMtxClear
80A73020 sShadowTex

View file

@ -18,18 +18,30 @@ PROJECT_ROOT = Path(__file__).parent.parent
@dataclasses.dataclass @dataclasses.dataclass
class VersionConfig: class VersionConfig:
# Version name
version: str
# ROM offset to start of DMA table # ROM offset to start of DMA table
dmadata_start: int dmadata_start: int
# DMA segment information, in ROM order # DMA segment information, in ROM order
dmadata_segments: OrderedDict[str, SegmentInfo] dmadata_segments: OrderedDict[str, SegmentInfo]
# Addresses of important variables needed for asset extraction # Addresses of important variables needed for asset extraction
variables: Dict[str, int] variables: dict[str, int]
# Assets to extract
assets: list[AssetConfig]
@dataclasses.dataclass @dataclasses.dataclass
class SegmentInfo: class SegmentInfo:
name: str name: str
vram: int | None vram: Optional[int]
@dataclasses.dataclass
class AssetConfig:
name: str
xml_path: Path
start_offset: Optional[int]
end_offset: Optional[int]
def load_dmadata_segments(version: str) -> OrderedDict[str, SegmentInfo]: def load_dmadata_segments(version: str) -> OrderedDict[str, SegmentInfo]:
@ -46,8 +58,19 @@ def load_dmadata_segments(version: str) -> OrderedDict[str, SegmentInfo]:
def load_version_config(version: str) -> VersionConfig: def load_version_config(version: str) -> VersionConfig:
with open(PROJECT_ROOT / f"baseroms/{version}/config.yml", "r") as f: with open(PROJECT_ROOT / f"baseroms/{version}/config.yml", "r") as f:
config = yaml.load(f, Loader=yaml.Loader) config = yaml.load(f, Loader=yaml.Loader)
assets = []
for asset in config["assets"]:
name = asset["name"]
xml_path = Path(asset["xml_path"])
start_offset = asset.get("start_offset", None)
end_offset = asset.get("end_offset", None)
assets.append(AssetConfig(name, xml_path, start_offset, end_offset))
return VersionConfig( return VersionConfig(
version=version,
dmadata_start=config["dmadata_start"], dmadata_start=config["dmadata_start"],
dmadata_segments=load_dmadata_segments(version), dmadata_segments=load_dmadata_segments(version),
variables=config["variables"], variables=config["variables"],
assets=assets,
) )