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
92 changed files with 4911 additions and 487 deletions
+24 -23
View File
@@ -15,10 +15,11 @@ ORIG_COMPILER := 0
# If COMPILER is "gcc", compile with GCC instead of IDO.
COMPILER := ido
# Target game version. Currently the following versions are supported:
# gc-eu GameCube Europe/PAL
# gc-eu-mq GameCube Europe/PAL Master Quest
# gc-eu-mq-dbg GameCube Europe/PAL Master Quest Debug (default)
# The following versions are work-in-progress and not yet matching:
# gc-eu GameCube Europe/PAL
# (none currently)
VERSION := gc-eu-mq-dbg
# Number of threads to extract and compress with
N_THREADS := $(shell nproc)
@@ -53,7 +54,6 @@ endif
# Version-specific settings
ifeq ($(VERSION),gc-eu)
DEBUG := 0
COMPARE := 0
else ifeq ($(VERSION),gc-eu-mq)
DEBUG := 0
CPP_DEFINES += -DOOT_MQ
@@ -211,11 +211,12 @@ else
SRC_DIRS := $(shell find src -type d)
endif
ASSET_BIN_DIRS := $(shell find assets/* -type d -not -path "assets/xml*" -not -path "assets/text")
ASSET_FILES_XML := $(foreach dir,$(ASSET_BIN_DIRS),$(wildcard $(dir)/*.xml))
# create extracted directories
$(shell mkdir -p $(EXTRACTED_DIR) $(EXTRACTED_DIR)/assets $(EXTRACTED_DIR)/text)
ASSET_BIN_DIRS := $(shell find $(EXTRACTED_DIR)/assets -type d)
ASSET_FILES_BIN := $(foreach dir,$(ASSET_BIN_DIRS),$(wildcard $(dir)/*.bin))
ASSET_FILES_OUT := $(foreach f,$(ASSET_FILES_XML:.xml=.c),$f) \
$(foreach f,$(ASSET_FILES_BIN:.bin=.bin.inc.c),$(BUILD_DIR)/$f) \
ASSET_FILES_OUT := $(foreach f,$(ASSET_FILES_BIN:.bin=.bin.inc.c),$(f:$(EXTRACTED_DIR)/%=$(BUILD_DIR)/%)) \
$(foreach f,$(wildcard assets/text/*.c),$(BUILD_DIR)/$(f:.c=.o))
UNDECOMPILED_DATA_DIRS := $(shell find data -type d)
@@ -223,10 +224,12 @@ UNDECOMPILED_DATA_DIRS := $(shell find data -type d)
BASEROM_BIN_FILES := $(wildcard $(EXTRACTED_DIR)/baserom/*)
# source files
C_FILES := $(filter-out %.inc.c,$(foreach dir,$(SRC_DIRS) $(ASSET_BIN_DIRS),$(wildcard $(dir)/*.c)))
SRC_C_FILES := $(filter-out %.inc.c,$(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c)))
ASSET_C_FILES := $(filter-out %.inc.c,$(foreach dir,$(ASSET_BIN_DIRS),$(wildcard $(dir)/*.c)))
S_FILES := $(foreach dir,$(SRC_DIRS) $(UNDECOMPILED_DATA_DIRS),$(wildcard $(dir)/*.s))
O_FILES := $(foreach f,$(S_FILES:.s=.o),$(BUILD_DIR)/$f) \
$(foreach f,$(C_FILES:.c=.o),$(BUILD_DIR)/$f) \
$(foreach f,$(SRC_C_FILES:.c=.o),$(BUILD_DIR)/$f) \
$(foreach f,$(ASSET_C_FILES:.c=.o),$(f:$(EXTRACTED_DIR)/%=$(BUILD_DIR)/%)) \
$(foreach f,$(BASEROM_BIN_FILES),$(BUILD_DIR)/baserom/$(notdir $f).o)
OVL_RELOC_FILES := $(shell $(CPP) $(CPPFLAGS) $(SPEC) | $(SPEC_REPLACE_VARS) | grep -o '[^"]*_reloc.o' )
@@ -238,11 +241,11 @@ DEP_FILES := $(O_FILES:.o=.asmproc.d) $(OVL_RELOC_FILES:.o=.d)
TEXTURE_FILES_PNG := $(foreach dir,$(ASSET_BIN_DIRS),$(wildcard $(dir)/*.png))
TEXTURE_FILES_JPG := $(foreach dir,$(ASSET_BIN_DIRS),$(wildcard $(dir)/*.jpg))
TEXTURE_FILES_OUT := $(foreach f,$(TEXTURE_FILES_PNG:.png=.inc.c),$(BUILD_DIR)/$f) \
$(foreach f,$(TEXTURE_FILES_JPG:.jpg=.jpg.inc.c),$(BUILD_DIR)/$f) \
TEXTURE_FILES_OUT := $(foreach f,$(TEXTURE_FILES_PNG:.png=.inc.c),$(f:$(EXTRACTED_DIR)/%=$(BUILD_DIR)/%)) \
$(foreach f,$(TEXTURE_FILES_JPG:.jpg=.jpg.inc.c),$(f:$(EXTRACTED_DIR)/%=$(BUILD_DIR)/%))
# create build directories
$(shell mkdir -p $(BUILD_DIR)/baserom $(EXTRACTED_DIR)/text $(BUILD_DIR)/assets/text $(foreach dir,$(SRC_DIRS) $(UNDECOMPILED_DATA_DIRS) $(ASSET_BIN_DIRS),$(BUILD_DIR)/$(dir)))
$(shell mkdir -p $(BUILD_DIR)/baserom $(BUILD_DIR)/assets/text $(foreach dir,$(SRC_DIRS) $(UNDECOMPILED_DATA_DIRS),$(BUILD_DIR)/$(dir)) $(foreach dir,$(ASSET_BIN_DIRS),$(dir:$(EXTRACTED_DIR)/%=$(BUILD_DIR)/%)))
ifeq ($(COMPILER),ido)
$(BUILD_DIR)/src/boot/stackcheck.o: OPTFLAGS := -O2
@@ -356,12 +359,9 @@ clean:
$(RM) -r $(BUILD_DIR)
assetclean:
$(RM) -r $(ASSET_BIN_DIRS)
$(RM) -r $(EXTRACTED_DIR)
$(RM) -r $(BUILD_DIR)/assets
$(RM) -r .extracted-assets.json
distclean: assetclean
distclean:
$(RM) -r extracted/
$(RM) -r build/
$(MAKE) -C tools distclean
@@ -378,10 +378,7 @@ setup: venv
$(PYTHON) tools/decompress_baserom.py $(VERSION)
$(PYTHON) tools/extract_baserom.py $(BASEROM_DIR)/baserom-decompressed.z64 --oot-version $(VERSION) -o $(EXTRACTED_DIR)/baserom
$(PYTHON) tools/msgdis.py --oot-version $(VERSION) --text-out $(EXTRACTED_DIR)/text/message_data.h --staff-text-out $(EXTRACTED_DIR)/text/message_data_staff.h
# TODO: for now, we only extract assets from the Debug ROM
ifeq ($(VERSION),gc-eu-mq-dbg)
$(PYTHON) extract_assets.py -j$(N_THREADS)
endif
$(PYTHON) extract_assets.py -v $(VERSION) -j$(N_THREADS)
disasm:
$(RM) -r $(EXPECTED_DIR)
@@ -447,7 +444,11 @@ $(BUILD_DIR)/assets/text/nes_message_data_static.o: $(BUILD_DIR)/assets/text/mes
$(BUILD_DIR)/assets/text/staff_message_data_static.o: $(BUILD_DIR)/assets/text/message_data_staff.enc.h
$(BUILD_DIR)/src/code/z_message_PAL.o: $(BUILD_DIR)/assets/text/message_data.enc.h $(BUILD_DIR)/assets/text/message_data_staff.enc.h
$(BUILD_DIR)/assets/%.o: assets/%.c
$(BUILD_DIR)/assets/text/%.o: assets/text/%.c
$(CC) -c $(CFLAGS) $(MIPS_VERSION) $(OPTFLAGS) -o $@ $<
$(OBJCOPY) -O binary $@ $@.bin
$(BUILD_DIR)/assets/%.o: $(EXTRACTED_DIR)/assets/%.c
$(CC) -c $(CFLAGS) $(MIPS_VERSION) $(OPTFLAGS) -o $@ $<
$(OBJCOPY) -O binary $@ $@.bin
@@ -498,13 +499,13 @@ $(BUILD_DIR)/src/overlays/%_reloc.o: $(BUILD_DIR)/$(SPEC)
$(FADO) $$(tools/reloc_prereq $< $(notdir $*)) -n $(notdir $*) -o $(@:.o=.s) -M $(@:.o=.d)
$(AS) $(ASFLAGS) $(@:.o=.s) -o $@
$(BUILD_DIR)/%.inc.c: %.png
$(BUILD_DIR)/assets/%.inc.c: $(EXTRACTED_DIR)/assets/%.png
$(ZAPD) btex -eh -tt $(subst .,,$(suffix $*)) -i $< -o $@
$(BUILD_DIR)/assets/%.bin.inc.c: assets/%.bin
$(BUILD_DIR)/assets/%.bin.inc.c: $(EXTRACTED_DIR)/assets/%.bin
$(ZAPD) bblb -eh -i $< -o $@
$(BUILD_DIR)/assets/%.jpg.inc.c: assets/%.jpg
$(BUILD_DIR)/assets/%.jpg.inc.c: $(EXTRACTED_DIR)/assets/%.jpg
$(ZAPD) bren -eh -i $< -o $@
-include $(DEP_FILES)
-7
View File
@@ -1,7 +0,0 @@
*.bin
*.c
*.h
!text/*.[ch]
*.cfg
*.vtx.inc
*.dlist.inc
+7 -7
View File
@@ -1,13 +1,13 @@
<Root>
<File Name="code" OutName="z_fbdemo_circle" RangeStart="0x10ED48" RangeEnd="0x10FF68">
<Texture Name="sTransCircleNormalTex" OutName="trans_circle_normal" Format="i8" Width="16" Height="64" Offset="0x10ED48"/>
<Texture Name="sTransCircleWaveTex" OutName="trans_circle_wave" Format="i8" Width="16" Height="64" Offset="0x10F148"/>
<Texture Name="sTransCircleRippleTex" OutName="trans_circle_ripple" Format="i8" Width="16" Height="64" Offset="0x10F548"/>
<Texture Name="sTransCircleStarburstTex" OutName="trans_circle_starburst" Format="i8" Width="16" Height="64" Offset="0x10F948"/>
<Array Name="sTransCircleVtx" Count="34" Offset="0x10FD48">
<File Name="code" OutName="z_fbdemo_circle">
<Texture Name="sTransCircleNormalTex" OutName="trans_circle_normal" Format="i8" Width="16" Height="64" Offset="0x0"/>
<Texture Name="sTransCircleWaveTex" OutName="trans_circle_wave" Format="i8" Width="16" Height="64" Offset="0x400"/>
<Texture Name="sTransCircleRippleTex" OutName="trans_circle_ripple" Format="i8" Width="16" Height="64" Offset="0x800"/>
<Texture Name="sTransCircleStarburstTex" OutName="trans_circle_starburst" Format="i8" Width="16" Height="64" Offset="0xC00"/>
<Array Name="sTransCircleVtx" Count="34" Offset="0x1000">
<Vtx/>
</Array>
<!-- ZAPD isn't finding symbols correctly, instead finding them much later in `code`-->
<!--<DList Name="sTransCircleDL" Offset="0x10FF68"/>-->
<!--<DList Name="sTransCircleDL" Offset="0x1220"/>-->
</File>
</Root>
+3 -3
View File
@@ -1,7 +1,7 @@
<Root>
<File Name="code" OutName="z_fbdemo_triforce" RangeStart="0x10E1D0" RangeEnd="0x10E2A0">
<DList Name="sTransTriforceDL" Offset="0x10E1D0"/>
<Array Name="sTransTriforceVtx" Count="10" Offset="0x10E200">
<File Name="code" OutName="z_fbdemo_triforce">
<DList Name="sTransTriforceDL" Offset="0x0"/>
<Array Name="sTransTriforceVtx" Count="10" Offset="0x30">
<Vtx/>
</Array>
</File>
+4 -4
View File
@@ -1,10 +1,10 @@
<Root>
<File Name="code" OutName="z_fbdemo_wipe1" RangeStart="0x10E2A0" RangeEnd="0x10EC30">
<Array Name="sTransWipeVtx" Count="25" Offset="0x10E2A0">
<File Name="code" OutName="z_fbdemo_wipe1">
<Array Name="sTransWipeVtx" Count="25" Offset="0x0">
<Vtx/>
</Array>
<Texture Name="sTransWipeTex" OutName="trans_wipe" Format="i4" Width="64" Height="64" Offset="0x10E430"/>
<Texture Name="sTransWipeTex" OutName="trans_wipe" Format="i4" Width="64" Height="64" Offset="0x190"/>
<!-- ZAPD isn't finding symbols correctly, instead finding them much later in `code`-->
<!-- <DList Name="sTransWipeDL" Offset="0x10EC30"/> -->
<!-- <DList Name="sTransWipeDL" Offset="0x990"/> -->
</File>
</Root>
+14 -16
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="gTitleCopyright19982002Tex" OutName="title_copyright_19982002" Format="ia8" Width="160" Height="16" Offset="0x19000"/>
<Texture Name="gTitleCopyright19982003Tex" OutName="title_copyright_19982003" Format="ia8" Width="160" Height="16" Offset="0x19A00"/>
<Texture Name="gTitleMasterQuestSubtitleTex" OutName="title_master_quest_subtitle" Format="rgba32" Width="128" Height="32" Offset="0x1A400"/>
<Texture Name="gTitleEffectMask00Tex" OutName="title_effect_mask_0_0" Format="i4" Width="64" Height="64" Offset="0x20000"/>
<Texture Name="gTitleEffectMask01Tex" OutName="title_effect_mask_0_1" Format="i4" Width="64" Height="64" Offset="0x20800"/>
<Texture Name="gTitleEffectMask02Tex" OutName="title_effect_mask_0_2" Format="i4" Width="64" Height="64" Offset="0x21000"/>
<Texture Name="gTitleEffectMask10Tex" OutName="title_effect_mask_1_0" Format="i4" Width="64" Height="64" Offset="0x21800"/>
<Texture Name="gTitleEffectMask11Tex" OutName="title_effect_mask_1_1" Format="i4" Width="64" Height="64" Offset="0x22000"/>
<Texture Name="gTitleEffectMask12Tex" OutName="title_effect_mask_1_2" Format="i4" Width="64" Height="64" Offset="0x22800"/>
<Texture Name="gTitleEffectMask20Tex" OutName="title_effect_mask_2_0" Format="i4" Width="64" Height="64" Offset="0x23000"/>
<Texture Name="gTitleEffectMask21Tex" OutName="title_effect_mask_2_1" Format="i4" Width="64" Height="64" Offset="0x23800"/>
<Texture Name="gTitleEffectMask22Tex" OutName="title_effect_mask_2_2" Format="i4" Width="64" Height="64" Offset="0x24000"/>
<Texture Name="gTitleFlameEffectTex" OutName="title_flame_effect" Format="i8" Width="32" Height="32" Offset="0x24800"/>
<Texture Name="gTitleTheLegendOfTextTex" OutName="title_the_legend_of_text" Format="i8" Width="72" Height="8" Offset="0x24C00"/>
<Texture Name="gTitleOcarinaOfTimeTMTextTex" OutName="title_ocarina_of_time_tm_text" Format="i8" Width="96" Height="8" Offset="0x24E40"/>
<Texture Name="gTitleUraLogoTex" OutName="title_ura_logo" Format="rgba32" Width="40" Height="40" Offset="0x1E400"/>
<Texture Name="gTitleDiskTex" OutName="title_disk" Format="ia8" Width="48" Height="16" Offset="0x1FD00"/>
<Texture Name="gTitleTitleJPNTex" OutName="title_title_jpn" Format="i8" Width="128" Height="16" Offset="0x25140"/>
<Texture Name="gTitleDiskTex" OutName="title_disk" Format="ia8" Width="48" Height="16" Offset="0x1A400"/>
<Texture Name="gTitleEffectMask00Tex" OutName="title_effect_mask_0_0" Format="i4" Width="64" Height="64" Offset="0x1A700"/>
<Texture Name="gTitleEffectMask01Tex" OutName="title_effect_mask_0_1" Format="i4" Width="64" Height="64" Offset="0x1AF00"/>
<Texture Name="gTitleEffectMask02Tex" OutName="title_effect_mask_0_2" Format="i4" Width="64" Height="64" Offset="0x1B700"/>
<Texture Name="gTitleEffectMask10Tex" OutName="title_effect_mask_1_0" Format="i4" Width="64" Height="64" Offset="0x1BF00"/>
<Texture Name="gTitleEffectMask11Tex" OutName="title_effect_mask_1_1" Format="i4" Width="64" Height="64" Offset="0x1C700"/>
<Texture Name="gTitleEffectMask12Tex" OutName="title_effect_mask_1_2" Format="i4" Width="64" Height="64" Offset="0x1CF00"/>
<Texture Name="gTitleEffectMask20Tex" OutName="title_effect_mask_2_0" Format="i4" Width="64" Height="64" Offset="0x1D700"/>
<Texture Name="gTitleEffectMask21Tex" OutName="title_effect_mask_2_1" Format="i4" Width="64" Height="64" Offset="0x1DF00"/>
<Texture Name="gTitleEffectMask22Tex" OutName="title_effect_mask_2_2" Format="i4" Width="64" Height="64" Offset="0x1E700"/>
<Texture Name="gTitleFlameEffectTex" OutName="title_flame_effect" Format="i8" Width="32" Height="32" Offset="0x1EF00"/>
<Texture Name="gTitleTheLegendOfTextTex" OutName="title_the_legend_of_text" Format="i8" Width="72" Height="8" Offset="0x1F300"/>
<Texture Name="gTitleOcarinaOfTimeTMTextTex" OutName="title_ocarina_of_time_tm_text" Format="i8" Width="96" Height="8" Offset="0x1F540"/>
<Texture Name="gTitleTitleJPNTex" OutName="title_title_jpn" Format="i8" Width="128" Height="16" Offset="0x1F840"/>
</File>
</Root>
+23
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>
+6 -6
View File
@@ -1,11 +1,11 @@
<Root>
<File Name="ovl_Arrow_Fire" BaseAddress="0x80865d10" RangeStart="0x9D0" RangeEnd="0x1DF0">
<Texture Name="s1Tex" OutName="fire_tex_1" Format="i8" Width="32" Height="64" Offset="0x9D0" Static="On"/>
<Texture Name="s2Tex" OutName="fire_tex_2" Format="i8" Width="32" Height="64" Offset="0x11D0" Static="On"/>
<Array Name="sVtx" Count="43" Offset="0x19D0" Static="On">
<File Name="ovl_Arrow_Fire">
<Texture Name="s1Tex" OutName="fire_tex_1" Format="i8" Width="32" Height="64" Offset="0x0" Static="On"/>
<Texture Name="s2Tex" OutName="fire_tex_2" Format="i8" Width="32" Height="64" Offset="0x800" Static="On"/>
<Array Name="sVtx" Count="43" Offset="0x1000" Static="On">
<Vtx/>
</Array>
<DList Name="sMaterialDL" Offset="0x1C80" Static="On"/>
<DList Name="sModelDL" Offset="0x1D30" Static="On"/>
<DList Name="sMaterialDL" Offset="0x12B0" Static="On"/>
<DList Name="sModelDL" Offset="0x1360" Static="On"/>
</File>
</Root>
+6 -6
View File
@@ -1,11 +1,11 @@
<Root>
<File Name="ovl_Arrow_Ice" BaseAddress="0x80867cd0" RangeStart="0x9F0" RangeEnd="0x1E10">
<Texture Name="s1Tex" OutName="ice_tex_1" Format="i8" Width="32" Height="64" Offset="0x9F0" Static="On"/>
<Texture Name="s2Tex" OutName="ice_tex_2" Format="i8" Width="32" Height="64" Offset="0x11F0" Static="On"/>
<Array Name="sVtx" Count="43" Offset="0x19F0" Static="On">
<File Name="ovl_Arrow_Ice">
<Texture Name="s1Tex" OutName="ice_tex_1" Format="i8" Width="32" Height="64" Offset="0x0" Static="On"/>
<Texture Name="s2Tex" OutName="ice_tex_2" Format="i8" Width="32" Height="64" Offset="0x800" Static="On"/>
<Array Name="sVtx" Count="43" Offset="0x1000" Static="On">
<Vtx/>
</Array>
<DList Name="sMaterialDL" Offset="0x1CA0" Static="On"/>
<DList Name="sModelDL" Offset="0x1D50" Static="On"/>
<DList Name="sMaterialDL" Offset="0x12B0" Static="On"/>
<DList Name="sModelDL" Offset="0x1360" Static="On"/>
</File>
</Root>
+6 -6
View File
@@ -1,11 +1,11 @@
<Root>
<File Name="ovl_Arrow_Light" BaseAddress="0x80869cb0" RangeStart="0xA00" RangeEnd="0x1E20">
<Texture Name="s1Tex" OutName="light_tex_1" Format="i8" Width="32" Height="64" Offset="0xA00" Static="On"/>
<Texture Name="s2Tex" OutName="light_tex_2" Format="i8" Width="32" Height="64" Offset="0x1200" Static="On"/>
<Array Name="sVtx" Count="43" Offset="0x1A00" Static="On">
<File Name="ovl_Arrow_Light">
<Texture Name="s1Tex" OutName="light_tex_1" Format="i8" Width="32" Height="64" Offset="0x0" Static="On"/>
<Texture Name="s2Tex" OutName="light_tex_2" Format="i8" Width="32" Height="64" Offset="0x800" Static="On"/>
<Array Name="sVtx" Count="43" Offset="0x1000" Static="On">
<Vtx/>
</Array>
<DList Name="sMaterialDL" Offset="0x1CB0" Static="On"/>
<DList Name="sModelDL" Offset="0x1D60" Static="On"/>
<DList Name="sMaterialDL" Offset="0x12B0" Static="On"/>
<DList Name="sModelDL" Offset="0x1360" Static="On"/>
</File>
</Root>
+13 -13
View File
@@ -1,29 +1,29 @@
<Root>
<File Name="ovl_Bg_Ganon_Otyuka" BaseAddress="0x80875920" RangeStart="0x11C0" RangeEnd="0x259C">
<Texture Name="sPlatformTex" OutName="platform_tex" Format="rgba16" Width="32" Height="32" Offset="0x11C0"/>
<File Name="ovl_Bg_Ganon_Otyuka">
<Texture Name="sPlatformTex" OutName="platform_tex" Format="rgba16" Width="32" Height="32" Offset="0x0"/>
<Array Name="sPlatformTopVtx" Count="4" Offset="0x19C8">
<Array Name="sPlatformTopVtx" Count="4" Offset="0x808">
<Vtx/>
</Array>
<DList Name="sPlatformMaterialDL" Offset="0x1A08"/>
<DList Name="sPlatformTopDL" Offset="0x1A90"/>
<DList Name="sPlatformMaterialDL" Offset="0x848"/>
<DList Name="sPlatformTopDL" Offset="0x8D0"/>
<Array Name="sPlatformBottomVtx" Count="4" Offset="0x1AA8">
<Array Name="sPlatformBottomVtx" Count="4" Offset="0x8E8">
<Vtx/>
</Array>
<DList Name="sPlatformBottomDL" Offset="0x1AE8"/>
<DList Name="sPlatformBottomDL" Offset="0x928"/>
<Array Name="sPlatformSideVtx" Count="4" Offset="0x01B00">
<Array Name="sPlatformSideVtx" Count="4" Offset="0x940">
<Vtx/>
</Array>
<DList Name="sPlatformSideDL" Offset="0x1B40"/>
<DList Name="sPlatformSideDL" Offset="0x980"/>
<Texture Name="sFlashTex" OutName="flash_tex" Format="i8" Width="32" Height="64" Offset="0x1B58"/>
<Array Name="sFlashVtx" Count="8" Offset="0x2358">
<Texture Name="sFlashTex" OutName="flash_tex" Format="i8" Width="32" Height="64" Offset="0x998"/>
<Array Name="sFlashVtx" Count="8" Offset="0x1198">
<Vtx/>
</Array>
<DList Name="sFlashDL" Offset="0x23D8"/>
<DList Name="sFlashDL" Offset="0x1218"/>
<Collision Name="sCol" Offset="0x2570"/>
<Collision Name="sCol" Offset="0x13B0"/>
</File>
</Root>
+3 -3
View File
@@ -1,10 +1,10 @@
<Root>
<File Name="ovl_Bg_Jya_Cobra" BaseAddress="0x808958f0" RangeStart="0x1980" RangeEnd="0x19F8">
<Array Name="sShadowVtx" Count="4" Offset="0x1980">
<File Name="ovl_Bg_Jya_Cobra">
<Array Name="sShadowVtx" Count="4" Offset="0x0">
<Vtx/>
</Array>
<DList Name="sShadowDL" Offset="0x19C0"/>
<DList Name="sShadowDL" Offset="0x40"/>
</File>
</Root>
+3 -3
View File
@@ -1,6 +1,6 @@
<Root>
<File Name="ovl_Boss_Dodongo" BaseAddress="0x808C1190" RangeStart="0x6238" RangeEnd="0x9238">
<Texture Name="sLavaFloorLavaTex" OutName="lava_floor_lava" Format="rgba16" Width="64" Height="64" Offset="0x6238"/>
<Texture Name="sLavaFloorRockTex" OutName="lava_floor_rock" Format="rgba16" Width="32" Height="64" Offset="0x8238"/>
<File Name="ovl_Boss_Dodongo">
<Texture Name="sLavaFloorLavaTex" OutName="lava_floor_lava" Format="rgba16" Width="64" Height="64" Offset="0x0"/>
<Texture Name="sLavaFloorRockTex" OutName="lava_floor_rock" Format="rgba16" Width="32" Height="64" Offset="0x2000"/>
</File>
</Root>
+46 -46
View File
@@ -1,53 +1,53 @@
<Root>
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="assets/objects/gameplay_keep/"/>
<File Name="ovl_Boss_Ganon" BaseAddress="0x808D6870" RangeStart="0xE6B8" RangeEnd="0x211D8">
<Texture Name="gGanondorfLightning1Tex" OutName="lightning_1" Format="i8" Width="32" Height="96" Offset="0x11600" Static="Off"/>
<Texture Name="gGanondorfLightning2Tex" OutName="lightning_2" Format="i8" Width="32" Height="96" Offset="0x12200" Static="Off"/>
<Texture Name="gGanondorfLightning3Tex" OutName="lightning_3" Format="i8" Width="32" Height="96" Offset="0x12E00" Static="Off"/>
<Texture Name="gGanondorfLightning4Tex" OutName="lightning_4" Format="i8" Width="32" Height="96" Offset="0x13A00" Static="Off"/>
<Texture Name="gGanondorfLightning5Tex" OutName="lightning_5" Format="i8" Width="32" Height="96" Offset="0x14600" Static="Off"/>
<Texture Name="gGanondorfLightning6Tex" OutName="lightning_6" Format="i8" Width="32" Height="96" Offset="0x15200" Static="Off"/>
<Texture Name="gGanondorfLightning7Tex" OutName="lightning_7" Format="i8" Width="32" Height="96" Offset="0x15E00" Static="Off"/>
<Texture Name="gGanondorfLightning8Tex" OutName="lightning_8" Format="i8" Width="32" Height="96" Offset="0x16A00" Static="Off"/>
<Texture Name="gGanondorfLightning9Tex" OutName="lightning_9" Format="i8" Width="32" Height="96" Offset="0x17600" Static="Off"/>
<Texture Name="gGanondorfLightning10Tex" OutName="lightning_10" Format="i8" Width="32" Height="96" Offset="0x18200" Static="Off"/>
<Texture Name="gGanondorfLightning11Tex" OutName="lightning_11" Format="i8" Width="32" Height="96" Offset="0x18E00" Static="Off"/>
<Texture Name="gGanondorfLightning12Tex" OutName="lightning_12" Format="i8" Width="32" Height="96" Offset="0x19A00" Static="Off"/>
<File Name="ovl_Boss_Ganon">
<Texture Name="gGanondorfLightning1Tex" OutName="lightning_1" Format="i8" Width="32" Height="96" Offset="0x2F48" Static="Off"/>
<Texture Name="gGanondorfLightning2Tex" OutName="lightning_2" Format="i8" Width="32" Height="96" Offset="0x3B48" Static="Off"/>
<Texture Name="gGanondorfLightning3Tex" OutName="lightning_3" Format="i8" Width="32" Height="96" Offset="0x4748" Static="Off"/>
<Texture Name="gGanondorfLightning4Tex" OutName="lightning_4" Format="i8" Width="32" Height="96" Offset="0x5348" Static="Off"/>
<Texture Name="gGanondorfLightning5Tex" OutName="lightning_5" Format="i8" Width="32" Height="96" Offset="0x5F48" Static="Off"/>
<Texture Name="gGanondorfLightning6Tex" OutName="lightning_6" Format="i8" Width="32" Height="96" Offset="0x6B48" Static="Off"/>
<Texture Name="gGanondorfLightning7Tex" OutName="lightning_7" Format="i8" Width="32" Height="96" Offset="0x7748" Static="Off"/>
<Texture Name="gGanondorfLightning8Tex" OutName="lightning_8" Format="i8" Width="32" Height="96" Offset="0x8348" Static="Off"/>
<Texture Name="gGanondorfLightning9Tex" OutName="lightning_9" Format="i8" Width="32" Height="96" Offset="0x8F48" Static="Off"/>
<Texture Name="gGanondorfLightning10Tex" OutName="lightning_10" Format="i8" Width="32" Height="96" Offset="0x9B48" Static="Off"/>
<Texture Name="gGanondorfLightning11Tex" OutName="lightning_11" Format="i8" Width="32" Height="96" Offset="0xA748" Static="Off"/>
<Texture Name="gGanondorfLightning12Tex" OutName="lightning_12" Format="i8" Width="32" Height="96" Offset="0xB348" Static="Off"/>
<Texture Name="gGanondorfWindowShatterTemplateTex" OutName="window_shatter_template" Format="i8" Width="32" Height="64" Offset="0xFD38" Static="Off"/>
<Texture Name="gGanondorfWindowShatterTemplateTex" OutName="window_shatter_template" Format="i8" Width="32" Height="64" Offset="0x1680" Static="Off"/>
<DList Name="gGanondorfLightStreak1DL" Offset="0x1FCF0" Static="Off"/>
<DList Name="gGanondorfLightStreak2DL" Offset="0x1FD28" Static="Off"/>
<DList Name="gGanondorfLightStreak3DL" Offset="0x1FD60" Static="Off"/>
<DList Name="gGanondorfLightStreak4DL" Offset="0x1FD98" Static="Off"/>
<DList Name="gGanondorfLightStreak5DL" Offset="0x1FDD0" Static="Off"/>
<DList Name="gGanondorfLightStreak6DL" Offset="0x1FE08" Static="Off"/>
<DList Name="gGanondorfLightStreak7DL" Offset="0x1FE40" Static="Off"/>
<DList Name="gGanondorfLightStreak8DL" Offset="0x1FE78" Static="Off"/>
<DList Name="gGanondorfLightStreak9DL" Offset="0x1FEB0" Static="Off"/>
<DList Name="gGanondorfLightStreak10DL" Offset="0x1FEE8" Static="Off"/>
<DList Name="gGanondorfLightStreak11DL" Offset="0x1FF20" Static="Off"/>
<DList Name="gGanondorfLightStreak12DL" Offset="0x1FF58" Static="Off"/>
<DList Name="gGanondorfLightStreak1DL" Offset="0x11638" Static="Off"/>
<DList Name="gGanondorfLightStreak2DL" Offset="0x11670" Static="Off"/>
<DList Name="gGanondorfLightStreak3DL" Offset="0x116A8" Static="Off"/>
<DList Name="gGanondorfLightStreak4DL" Offset="0x116E0" Static="Off"/>
<DList Name="gGanondorfLightStreak5DL" Offset="0x11718" Static="Off"/>
<DList Name="gGanondorfLightStreak6DL" Offset="0x11750" Static="Off"/>
<DList Name="gGanondorfLightStreak7DL" Offset="0x11788" Static="Off"/>
<DList Name="gGanondorfLightStreak8DL" Offset="0x117C0" Static="Off"/>
<DList Name="gGanondorfLightStreak9DL" Offset="0x117F8" Static="Off"/>
<DList Name="gGanondorfLightStreak10DL" Offset="0x11830" Static="Off"/>
<DList Name="gGanondorfLightStreak11DL" Offset="0x11868" Static="Off"/>
<DList Name="gGanondorfLightStreak12DL" Offset="0x118A0" Static="Off"/>
<DList Name="gGanondorfShadowSetupDL" Offset="0xE6F8" Static="Off"/>
<DList Name="gGanondorfShadowModelDL" Offset="0xE718" Static="Off"/>
<DList Name="gGanondorfTriforceDL" Offset="0xF788" Static="Off"/>
<DList Name="gGanondorfWindowShardMaterialDL" Offset="0xFC78" Static="Off"/>
<DList Name="gGanondorfWindowShardModelDL" Offset="0xFD20" Static="Off"/>
<DList Name="gGanondorfLightBallMaterialDL" Offset="0x11578" Static="Off"/>
<DList Name="gGanondorfSquareDL" Offset="0x115E8" Static="Off"/>
<DList Name="gGanondorfLightningDL" Offset="0x1A640" Static="Off"/>
<DList Name="gGanondorfUnusedDL" Offset="0x1A6F0" Static="Off"/>
<DList Name="gGanondorfLightRayTriDL" Offset="0x1A768" Static="Off"/>
<DList Name="gGanondorfLightFlecksDL" Offset="0x1C1C0" Static="Off"/>
<DList Name="gGanondorfBigMagicBGCircleDL" Offset="0x1C2B0" Static="Off"/>
<DList Name="gGanondorfDotDL" Offset="0x1C358" Static="Off"/>
<DList Name="gGanondorfShockwaveDL" Offset="0x1CDC0" Static="Off"/>
<DList Name="gGanondorfImpactDarkDL" Offset="0x1DC58" Static="Off"/>
<DList Name="gGanondorfImpactLightDL" Offset="0x1DD70" Static="Off"/>
<DList Name="gGanondorfShockGlowDL" Offset="0x1EEC8" Static="Off"/>
<DList Name="gGanondorfLightCoreDL" Offset="0x20228" Static="Off"/>
<DList Name="gGanondorfShockDL" Offset="0x202F0" Static="Off"/>
<DList Name="gGanondorfVortexDL" Offset="0x210D0" Static="Off"/>
<DList Name="gGanondorfShadowSetupDL" Offset="0x40" Static="Off"/>
<DList Name="gGanondorfShadowModelDL" Offset="0x60" Static="Off"/>
<DList Name="gGanondorfTriforceDL" Offset="0x10D0" Static="Off"/>
<DList Name="gGanondorfWindowShardMaterialDL" Offset="0x15C0" Static="Off"/>
<DList Name="gGanondorfWindowShardModelDL" Offset="0x1668" Static="Off"/>
<DList Name="gGanondorfLightBallMaterialDL" Offset="0x2EC0" Static="Off"/>
<DList Name="gGanondorfSquareDL" Offset="0x2F30" Static="Off"/>
<DList Name="gGanondorfLightningDL" Offset="0xBF88" Static="Off"/>
<DList Name="gGanondorfUnusedDL" Offset="0xC038" Static="Off"/>
<DList Name="gGanondorfLightRayTriDL" Offset="0xC0B0" Static="Off"/>
<DList Name="gGanondorfLightFlecksDL" Offset="0xDB08" Static="Off"/>
<DList Name="gGanondorfBigMagicBGCircleDL" Offset="0xDBF8" Static="Off"/>
<DList Name="gGanondorfDotDL" Offset="0xDCA0" Static="Off"/>
<DList Name="gGanondorfShockwaveDL" Offset="0xE708" Static="Off"/>
<DList Name="gGanondorfImpactDarkDL" Offset="0xF5A0" Static="Off"/>
<DList Name="gGanondorfImpactLightDL" Offset="0xF6B8" Static="Off"/>
<DList Name="gGanondorfShockGlowDL" Offset="0x10810" Static="Off"/>
<DList Name="gGanondorfLightCoreDL" Offset="0x11B70" Static="Off"/>
<DList Name="gGanondorfShockDL" Offset="0x11C38" Static="Off"/>
<DList Name="gGanondorfVortexDL" Offset="0x12A18" Static="Off"/>
</File>
</Root>
+23 -23
View File
@@ -1,29 +1,29 @@
<Root>
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="assets/objects/gameplay_keep/"/>
<File Name="ovl_Boss_Ganon2" BaseAddress="0x808FCF40" RangeStart="0xA2C8" RangeEnd="0x10778">
<Texture Name="gGanonLightOrbTex" OutName="ganon_light_orb" Format="i8" Width="64" Height="64" Offset="0xA2C8"/>
<DList Name="gGanonLightOrbMaterialDL" Offset="0xB308"/>
<DList Name="gGanonLightOrbModelDL" Offset="0xB378"/>
<DList Name="gGanonShadowMaterialDL" Offset="0xB3D0"/>
<DList Name="gGanonShadowModelDL" Offset="0xB3F0"/>
<Texture Name="gGanonSwordTrailTex" OutName="ganon_sword_trail" Format="i8" Width="32" Height="32" Offset="0xB420"/>
<Texture Name="gGanonSwordTrailMaskTex" OutName="ganon_sword_trail_mask" Format="i4" Width="32" Height="32" Offset="0xB820"/>
<Array Name="gGanonSwordTrailVtx" Count="22" Offset="0xBA20">
<File Name="ovl_Boss_Ganon2">
<Texture Name="gGanonLightOrbTex" OutName="ganon_light_orb" Format="i8" Width="64" Height="64" Offset="0x0"/>
<DList Name="gGanonLightOrbMaterialDL" Offset="0x1040"/>
<DList Name="gGanonLightOrbModelDL" Offset="0x10B0"/>
<DList Name="gGanonShadowMaterialDL" Offset="0x1108"/>
<DList Name="gGanonShadowModelDL" Offset="0x1128"/>
<Texture Name="gGanonSwordTrailTex" OutName="ganon_sword_trail" Format="i8" Width="32" Height="32" Offset="0x1158"/>
<Texture Name="gGanonSwordTrailMaskTex" OutName="ganon_sword_trail_mask" Format="i4" Width="32" Height="32" Offset="0x1558"/>
<Array Name="gGanonSwordTrailVtx" Count="22" Offset="0x1758">
<Vtx/>
</Array>
<DList Name="gGanonSwordTrailDL" Offset="0xBB80"/>
<Texture Name="gGanonTriforceTex" OutName="ganon_triforce" Format="i8" Width="64" Height="64" Offset="0xBC98"/>
<DList Name="gGanonTriforceDL" Offset="0xCCD8"/>
<Texture Name="gGanonLightningTex" OutName="ganon_lightning" Format="i4" Width="32" Height="160" Offset="0xCD58"/>
<DList Name="gGanonLightningDL" Offset="0xD798"/> <!-- Original name might be "efc_fg2_thunder1_modelT" -->
<Texture Name="gGanonFireRingTex" OutName="ganon_fire_ring" Format="i8" Width="32" Height="64" Offset="0xD820"/>
<DList Name="gGanonFireRingDL" Offset="0xE1C0"/> <!-- Original name is "ganon_fire_modelT" -->
<Texture Name="gGanonZeldaMagicTex" OutName="ganon_zelda_magic" Format="i8" Width="32" Height="64" Offset="0xE2E0"/>
<DList Name="gGanonZeldaMagicDL" Offset="0xEC40"/> <!-- Original name is "efc_ganon2_hadou_modelT" ("wave motion; undulation; surge") -->
<Texture Name="gGanonMasterSwordShadowTex" OutName="ganon_master_sword_shadow" Format="i8" Width="32" Height="32" Offset="0xED48"/>
<DList Name="gGanonMasterSwordShadowDL" Offset="0xF188"/> <!-- Original name is "master_sword_shadow_model" -->
<Texture Name="gGanonMasterSwordPommelTex" OutName="ganon_master_sword_pommel" Format="rgba16" Width="16" Height="16" Offset="0xF208"/>
<Texture Name="gGanonMasterSwordGuardTex" OutName="ganon_master_sword_guard" Format="rgba16" Width="32" Height="32" Offset="0xF408"/>
<DList Name="gGanonMasterSwordDL" Offset="0x103A8"/> <!-- Original name is "master_gn2_swordB_model" -->
<DList Name="gGanonSwordTrailDL" Offset="0x18B8"/>
<Texture Name="gGanonTriforceTex" OutName="ganon_triforce" Format="i8" Width="64" Height="64" Offset="0x19D0"/>
<DList Name="gGanonTriforceDL" Offset="0x2A10"/>
<Texture Name="gGanonLightningTex" OutName="ganon_lightning" Format="i4" Width="32" Height="160" Offset="0x2A90"/>
<DList Name="gGanonLightningDL" Offset="0x34D0"/> <!-- Original name might be "efc_fg2_thunder1_modelT" -->
<Texture Name="gGanonFireRingTex" OutName="ganon_fire_ring" Format="i8" Width="32" Height="64" Offset="0x3558"/>
<DList Name="gGanonFireRingDL" Offset="0x3EF8"/> <!-- Original name is "ganon_fire_modelT" -->
<Texture Name="gGanonZeldaMagicTex" OutName="ganon_zelda_magic" Format="i8" Width="32" Height="64" Offset="0x4018"/>
<DList Name="gGanonZeldaMagicDL" Offset="0x4978"/> <!-- Original name is "efc_ganon2_hadou_modelT" ("wave motion; undulation; surge") -->
<Texture Name="gGanonMasterSwordShadowTex" OutName="ganon_master_sword_shadow" Format="i8" Width="32" Height="32" Offset="0x4A80"/>
<DList Name="gGanonMasterSwordShadowDL" Offset="0x4EC0"/> <!-- Original name is "master_sword_shadow_model" -->
<Texture Name="gGanonMasterSwordPommelTex" OutName="ganon_master_sword_pommel" Format="rgba16" Width="16" Height="16" Offset="0x4F40"/>
<Texture Name="gGanonMasterSwordGuardTex" OutName="ganon_master_sword_guard" Format="rgba16" Width="32" Height="32" Offset="0x5140"/>
<DList Name="gGanonMasterSwordDL" Offset="0x60E0"/> <!-- Original name is "master_gn2_swordB_model" -->
</File>
</Root>
+5 -5
View File
@@ -1,8 +1,8 @@
<Root>
<File Name="ovl_Boss_Sst" BaseAddress="0x8092C5D0" RangeStart="0xA3C0" RangeEnd="0xAD70">
<DList Name="sBodyStaticDList" Offset="0xA3C0"/>
<DList Name="sHandTrailDList" Offset="0xA3D8"/>
<DList Name="sIntroVanishDList" Offset="0xA838"/>
<DList Name="sShadowDList" Offset="0xACF0"/>
<File Name="ovl_Boss_Sst">
<DList Name="sBodyStaticDList" Offset="0x0"/>
<DList Name="sHandTrailDList" Offset="0x18"/>
<DList Name="sIntroVanishDList" Offset="0x478"/>
<DList Name="sShadowDList" Offset="0x930"/>
</File>
</Root>
+4 -4
View File
@@ -1,8 +1,8 @@
<Root>
<File Name="ovl_Demo_Shd" BaseAddress="0x80991230" RangeStart="0x450" RangeEnd="0x23D0">
<File Name="ovl_Demo_Shd">
<DList Name="D_809932D0" Offset="0x20A0"/>
<DList Name="D_80993390" Offset="0x2160"/>
<DList Name="D_809934B8" Offset="0x2288"/>
<DList Name="D_809932D0" Offset="0x1C50"/>
<DList Name="D_80993390" Offset="0x1D10"/>
<DList Name="D_809934B8" Offset="0x1E38"/>
</File>
</Root>
@@ -1,9 +1,9 @@
<Root>
<File Name="ovl_Effect_Ss_Fhg_Flash" BaseAddress="0x809A4660" RangeStart="0xA60" RangeEnd="0xF18">
<Array Name="sShockVtx" Count="4" Offset="0xA60">
<File Name="ovl_Effect_Ss_Fhg_Flash">
<Array Name="sShockVtx" Count="4" Offset="0x0">
<Vtx/>
</Array>
<DList Name="sShockDL" Offset="0xAA0"/>
<Texture Name="sShockTex" OutName="shock" Format="i8" Width="32" Height="32" Offset="0xB18"/>
<DList Name="sShockDL" Offset="0x40"/>
<Texture Name="sShockTex" OutName="shock" Format="i8" Width="32" Height="32" Offset="0xB8"/>
</File>
</Root>
+6 -6
View File
@@ -1,16 +1,16 @@
<Root>
<File Name="ovl_Elf_Msg" BaseAddress="0x809ACB20" RangeStart="0x758" RangeEnd="0x9D8">
<File Name="ovl_Elf_Msg">
<DList Name="D_809AD278" Offset="0x758"/>
<DList Name="D_809AD278" Offset="0x0"/>
<Array Name="sCylinderVtx" Count="16" Offset="0x798">
<Array Name="sCylinderVtx" Count="16" Offset="0x40">
<Vtx/>
</Array>
<DList Name="sCylinderDL" Offset="0x898"/>
<DList Name="sCylinderDL" Offset="0x140"/>
<Array Name="sCubeVtx" Count="8" Offset="0x918">
<Array Name="sCubeVtx" Count="8" Offset="0x1C0">
<Vtx/>
</Array>
<DList Name="sCubeDL" Offset="0x998"/>
<DList Name="sCubeDL" Offset="0x240"/>
</File>
</Root>
+4 -4
View File
@@ -1,11 +1,11 @@
<Root>
<File Name="ovl_Elf_Msg2" BaseAddress="0x809AD700" RangeStart="0x538" RangeEnd="0x638">
<File Name="ovl_Elf_Msg2">
<DList Name="D_809ADC38" Offset="0x538"/>
<DList Name="D_809ADC38" Offset="0x0"/>
<Array Name="sCubeVtx" Count="8" Offset="0x578">
<Array Name="sCubeVtx" Count="8" Offset="0x40">
<Vtx/>
</Array>
<DList Name="sCubeDL" Offset="0x5F8"/>
<DList Name="sCubeDL" Offset="0xC0"/>
</File>
</Root>
+3 -3
View File
@@ -1,7 +1,7 @@
<Root>
<File Name="ovl_En_Bili" BaseAddress="0x809BF8A0" RangeStart="0x1E50" RangeEnd="0x1E70">
<DList Name="D_809C16F0" Offset="0x1E50"/>
<DList Name="D_809C1700" Offset="0x1E60"/>
<File Name="ovl_En_Bili">
<DList Name="D_809C16F0" Offset="0x0"/>
<DList Name="D_809C1700" Offset="0x10"/>
</File>
</Root>
+11 -11
View File
@@ -1,14 +1,14 @@
<Root>
<File Name="ovl_En_Clear_Tag" BaseAddress="0x809D35B0" RangeStart="0x26F0" RangeEnd="0x89F0">
<DList Name="gArwingDL" Offset="0x26F0"/>
<DList Name="gArwingLaserDL" Offset="0x6388"/>
<DList Name="gArwingBackfireDL" Offset="0x6688"/>
<DList Name="gArwingDebrisEffectMaterialDL" Offset="0x6A38"/>
<DList Name="gArwingDebrisEffectDL" Offset="0x6AB8"/>
<DList Name="gArwingFireEffectMaterialDL" Offset="0x7100"/>
<DList Name="gArwingFireEffectDL" Offset="0x71A8"/>
<DList Name="gArwingFlashEffectDL" Offset="0x8208"/>
<DList Name="gArwingFlashEffectGroundDL" Offset="0x84B8"/>
<DList Name="gArwingShadowDL" Offset="0x8970"/>
<File Name="ovl_En_Clear_Tag">
<DList Name="gArwingDL" Offset="0x0"/>
<DList Name="gArwingLaserDL" Offset="0x3C98"/>
<DList Name="gArwingBackfireDL" Offset="0x3F98"/>
<DList Name="gArwingDebrisEffectMaterialDL" Offset="0x4348"/>
<DList Name="gArwingDebrisEffectDL" Offset="0x43C8"/>
<DList Name="gArwingFireEffectMaterialDL" Offset="0x4A10"/>
<DList Name="gArwingFireEffectDL" Offset="0x4AB8"/>
<DList Name="gArwingFlashEffectDL" Offset="0x5B18"/>
<DList Name="gArwingFlashEffectGroundDL" Offset="0x5DC8"/>
<DList Name="gArwingShadowDL" Offset="0x6280"/>
</File>
</Root>
+8 -8
View File
@@ -1,21 +1,21 @@
<Root>
<File Name="ovl_En_Ganon_Mant" BaseAddress="0x80A23D60" RangeStart="0x1218" RangeEnd="0x4118">
<Texture Name="gMantTex" OutName="mant" Format="rgba16" Width="32" Height="64" Offset="0x1218"/>
<File Name="ovl_En_Ganon_Mant">
<Texture Name="gMantTex" OutName="mant" Format="rgba16" Width="32" Height="64" Offset="0x0"/>
<Texture Name="gMantUnusedTex" OutName="mant_unused" Format="rgba16" Width="32" Height="32" Offset="0x2218"/>
<Texture Name="gMantUnusedTex" OutName="mant_unused" Format="rgba16" Width="32" Height="32" Offset="0x1000"/>
<Array Name="gMant1Vtx" Count="144" Offset="0x2A18">
<Array Name="gMant1Vtx" Count="144" Offset="0x1800">
<Vtx/>
</Array>
<DList Name="gMantMaterialDL" Offset="0x3318"/>
<DList Name="gMantMaterialDL" Offset="0x2100"/>
<!-- ! @bug gMantUnusedTex is 32x32 not 32x64, however this dlist is unused -->
<DList Name="gMantUnusedMaterialDL" Offset="0x3370"/>
<DList Name="gMantUnusedMaterialDL" Offset="0x2158"/>
<DList Name="gMantDL" Offset="0x33C8"/>
<DList Name="gMantDL" Offset="0x21B0"/>
<Array Name="gMant2Vtx" Count="144" Offset="0x3818">
<Array Name="gMant2Vtx" Count="144" Offset="0x2600">
<Vtx/>
</Array>
</File>
+15 -15
View File
@@ -1,19 +1,19 @@
<Root>
<File Name="ovl_En_Ganon_Organ" BaseAddress="0x80A28000" RangeStart="0x3E0" RangeEnd="0x6F70">
<Texture Name="sRoomCarpetTex" OutName="room_carpet" Format="rgba16" Width="64" Height="16" Offset="0x3E8"/>
<Texture Name="sRoomOrganPipeTex" OutName="room_organ_pipe" Format="i4" Width="16" Height="64" Offset="0xBE8"/>
<Texture Name="sRoomOrganCorbelsTex" OutName="room_organ_corbels" Format="i4" Width="16" Height="16" Offset="0xDE8"/>
<Texture Name="sRoomOrganGrillTex" OutName="room_organ_grill" Format="rgba16" Width="16" Height="16" Offset="0xE68"/>
<Texture Name="sRoomCrestFriezeTex" OutName="room_crest_frieze" Format="i4" Width="32" Height="32" Offset="0x1068"/>
<Texture Name="sRoomColumnFriezeAndCanopyTex" OutName="room_column_frieze_and_canopy" Format="i4" Width="16" Height="16" Offset="0x1268"/>
<Texture Name="sRoomColumnMetalEdgingTex" OutName="room_metal_edging" Format="rgba16" Width="16" Height="16" Offset="0x12E8"/>
<Texture Name="sRoomStatueWingTex" OutName="room_statue_wing" Format="rgba16" Width="16" Height="16" Offset="0x14E8"/>
<Texture Name="sRoomPillarTex" OutName="room_pillar" Format="i8" Width="8" Height="32" Offset="0x16E8"/>
<Texture Name="sRoomOrganKeyboardTex" OutName="room_organ_keyboard" Format="rgba16" Width="32" Height="8" Offset="0x17E8"/>
<Texture Name="sRoomOrganKeyEndTex" OutName="room_organ_key_end" Format="rgba16" Width="4" Height="8" Offset="0x19E8"/>
<Texture Name="sRoomStepTex" OutName="room_step" Format="i4" Width="16" Height="16" Offset="0x1A28"/>
<File Name="ovl_En_Ganon_Organ">
<Texture Name="sRoomCarpetTex" OutName="room_carpet" Format="rgba16" Width="64" Height="16" Offset="0x0"/>
<Texture Name="sRoomOrganPipeTex" OutName="room_organ_pipe" Format="i4" Width="16" Height="64" Offset="0x800"/>
<Texture Name="sRoomOrganCorbelsTex" OutName="room_organ_corbels" Format="i4" Width="16" Height="16" Offset="0xA00"/>
<Texture Name="sRoomOrganGrillTex" OutName="room_organ_grill" Format="rgba16" Width="16" Height="16" Offset="0xA80"/>
<Texture Name="sRoomCrestFriezeTex" OutName="room_crest_frieze" Format="i4" Width="32" Height="32" Offset="0xC80"/>
<Texture Name="sRoomColumnFriezeAndCanopyTex" OutName="room_column_frieze_and_canopy" Format="i4" Width="16" Height="16" Offset="0xE80"/>
<Texture Name="sRoomColumnMetalEdgingTex" OutName="room_metal_edging" Format="rgba16" Width="16" Height="16" Offset="0xF00"/>
<Texture Name="sRoomStatueWingTex" OutName="room_statue_wing" Format="rgba16" Width="16" Height="16" Offset="0x1100"/>
<Texture Name="sRoomPillarTex" OutName="room_pillar" Format="i8" Width="8" Height="32" Offset="0x1300"/>
<Texture Name="sRoomOrganKeyboardTex" OutName="room_organ_keyboard" Format="rgba16" Width="32" Height="8" Offset="0x1400"/>
<Texture Name="sRoomOrganKeyEndTex" OutName="room_organ_key_end" Format="rgba16" Width="4" Height="8" Offset="0x1600"/>
<Texture Name="sRoomStepTex" OutName="room_step" Format="i4" Width="16" Height="16" Offset="0x1640"/>
<DList Name="sRoomOrganAndFloorDL" Offset="0x4CA8"/>
<DList Name="sRoomStatuesDL" Offset="0x6AB0"/>
<DList Name="sRoomOrganAndFloorDL" Offset="0x48C0"/>
<DList Name="sRoomStatuesDL" Offset="0x66C8"/>
</File>
</Root>
+3 -3
View File
@@ -1,8 +1,8 @@
<Root>
<File Name="ovl_En_Holl" BaseAddress="0x80A58C10" RangeStart="0xE78" RangeEnd="0xEE0">
<Array Name="sPlaneVtx" Count="4" Offset="0xE78">
<File Name="ovl_En_Holl">
<Array Name="sPlaneVtx" Count="4" Offset="0x0">
<Vtx/>
</Array>
<DList Name="sPlaneDL" Offset="0xEB8"/>
<DList Name="sPlaneDL" Offset="0x40"/>
</File>
</Root>
+11 -11
View File
@@ -1,38 +1,38 @@
<Root>
<File Name="ovl_En_Jsjutan" BaseAddress="0x80A897A0" RangeStart="0x12F8" RangeEnd="0x4C88">
<File Name="ovl_En_Jsjutan">
<!-- D_80A8AA98. Carpet texture. -->
<Texture Name="sCarpetTex" OutName="carpet" Format="rgba16" Width="32" Height="64" Offset="0x12F8"/>
<Texture Name="sCarpetTex" OutName="carpet" Format="rgba16" Width="32" Height="64" Offset="0x0"/>
<!-- D_80A8BA98. Carpet's shadow vertices. Same vertex type as sShadowEvenVtx. Used when gameplayFrames is odd. -->
<Array Name="gShadowOddVtx" Count="144" Offset="0x22F8">
<Array Name="gShadowOddVtx" Count="144" Offset="0x1000">
<Vtx/>
</Array>
<!-- D_80A8C398. Carpet's shadow vertices. Same vertex type as gShadowOddVtx. Used when gameplayFrames is even. -->
<Array Name="sShadowEvenVtx" Count="144" Offset="0x2BF8">
<Array Name="sShadowEvenVtx" Count="144" Offset="0x1900">
<Vtx/>
</Array>
<!-- D_80A8CC98. Carpet vertices. Same vertex type as sCarpetEvenVtx. Used when gameplayFrames is odd. -->
<Array Name="sCarpetOddVtx" Count="144" Offset="0x34F8">
<Array Name="sCarpetOddVtx" Count="144" Offset="0x2200">
<Vtx/>
</Array>
<!-- D_80A8E610. Variable declared in `.bss` of EnJsjutan. Used by sShadowMaterialDL -->
<Symbol Name="sShadowTex" Type="u8" TypeSize="1" Count="0x800" Offset="0x4E70"/>
<Symbol Name="sShadowTex" Type="u8" TypeSize="1" Count="0x800" Offset="0x3B78"/>
<!-- D_80A8D598. Draws the carpet's texture. -->
<DList Name="sCarpetMaterialDL" Offset="0x3DF8"/>
<DList Name="sCarpetMaterialDL" Offset="0x2B00"/>
<!-- D_80A8D618. Draws the carpet's shadow texture. -->
<DList Name="sShadowMaterialDL" Offset="0x3E78"/>
<DList Name="sShadowMaterialDL" Offset="0x2B80"/>
<!-- D_80A8D688. Draws vertices in segment 0x0C. -->
<DList Name="sModelDL" Offset="0x3EE8"/>
<DList Name="sModelDL" Offset="0x2BF0"/>
<!-- D_80A8DAB8. Carpet vertices. Same vertex type as sCarpetOddVtx. Used when gameplayFrames is even. -->
<Array Name="sCarpetEvenVtx" Count="144" Offset="0x4318">
<Array Name="sCarpetEvenVtx" Count="144" Offset="0x3020">
<Vtx/>
</Array>
<!-- D_80A8E400 -->
<Collision Name="sCol" Offset="0x4C60"/>
<Collision Name="sCol" Offset="0x3968"/>
</File>
</Root>
+3 -3
View File
@@ -1,8 +1,8 @@
<Root>
<File Name="ovl_En_Kanban" BaseAddress="0x80A91FA0" RangeStart="0x2F80" RangeEnd="0x3040">
<Array Name="sShadowVtx" Count="4" Offset="0x2F80">
<File Name="ovl_En_Kanban">
<Array Name="sShadowVtx" Count="4" Offset="0x0">
<Vtx/>
</Array>
<DList Name="sShadowDL" Offset="0x2FC0"/>
<DList Name="sShadowDL" Offset="0x40"/>
</File>
</Root>
+4 -4
View File
@@ -1,9 +1,9 @@
<Root>
<File Name="ovl_En_Sda" BaseAddress="0x80AF8E20" RangeStart="0x1578" RangeEnd="0x1608">
<Array Name="D_80AFA398" Count="4" Offset="0x1578">
<File Name="ovl_En_Sda">
<Array Name="D_80AFA398" Count="4" Offset="0x0">
<Vtx/>
</Array>
<DList Name="D_80AFA3D8" Offset="0x15B8"/>
<DList Name="D_80AFA3F8" Offset="0x15D8"/>
<DList Name="D_80AFA3D8" Offset="0x40"/>
<DList Name="D_80AFA3F8" Offset="0x60"/>
</File>
</Root>
+3 -3
View File
@@ -1,8 +1,8 @@
<Root>
<File Name="ovl_En_Ssh" BaseAddress="0x80B02270" RangeStart="0x2150" RangeEnd="0x21E0">
<Array Name="D_80B043C0" Count="4" Offset="0x2150">
<File Name="ovl_En_Ssh">
<Array Name="D_80B043C0" Count="4" Offset="0x0">
<Vtx/>
</Array>
<DList Name="D_80B04400" Offset="0x2190"/>
<DList Name="D_80B04400" Offset="0x40"/>
</File>
</Root>
+3 -3
View File
@@ -1,8 +1,8 @@
<Root>
<File Name="ovl_En_St" BaseAddress="0x80B04890" RangeStart="0x26B0" RangeEnd="0x2740">
<Array Name="sSkulltulaUnusedVtx" Count="4" Offset="0x26B0">
<File Name="ovl_En_St">
<Array Name="sSkulltulaUnusedVtx" Count="4" Offset="0x0">
<Vtx/>
</Array>
<DList Name="sSkulltulaUnusedDL" Offset="0x26F0"/>
<DList Name="sSkulltulaUnusedDL" Offset="0x40"/>
</File>
</Root>
+12 -12
View File
@@ -1,15 +1,15 @@
<Root>
<File Name="ovl_En_Sth" BaseAddress="0x80B07540" RangeStart="0xEF0" RangeEnd="0x3EC4">
<Texture Name="sNoseTex" OutName="nose" Format="rgba16" Width="8" Height="8" Offset="0xEF0"/>
<Texture Name="sHair1Tex" OutName="hair_1" Format="rgba16" Width="8" Height="16" Offset="0xF70"/>
<Texture Name="sEar1Tex" OutName="ear_1" Format="rgba16" Width="8" Height="8" Offset="0x1070"/>
<Texture Name="sEyeTex" OutName="eye" Format="rgba16" Width="32" Height="32" Offset="0x10F0"/>
<Texture Name="sMouthTex" OutName="mouth" Format="rgba16" Width="32" Height="16" Offset="0x18F0"/>
<Texture Name="sEar2Tex" OutName="ear_2" Format="rgba16" Width="8" Height="8" Offset="0x1CF0"/>
<Texture Name="sHair2Tex" OutName="hair_2" Format="rgba16" Width="8" Height="16" Offset="0x1D70"/>
<DList Name="D_80B0A050" Offset="0x2B10"/>
<DList Name="D_80B0A3C0" Offset="0x2E80"/>
<Animation Name="sChildDanceAnim" Offset="0x3620"/>
<Animation Name="sParentDanceAnim" Offset="0x3EB4"/>
<File Name="ovl_En_Sth">
<Texture Name="sNoseTex" OutName="nose" Format="rgba16" Width="8" Height="8" Offset="0x0"/>
<Texture Name="sHair1Tex" OutName="hair_1" Format="rgba16" Width="8" Height="16" Offset="0x80"/>
<Texture Name="sEar1Tex" OutName="ear_1" Format="rgba16" Width="8" Height="8" Offset="0x180"/>
<Texture Name="sEyeTex" OutName="eye" Format="rgba16" Width="32" Height="32" Offset="0x200"/>
<Texture Name="sMouthTex" OutName="mouth" Format="rgba16" Width="32" Height="16" Offset="0xA00"/>
<Texture Name="sEar2Tex" OutName="ear_2" Format="rgba16" Width="8" Height="8" Offset="0xE00"/>
<Texture Name="sHair2Tex" OutName="hair_2" Format="rgba16" Width="8" Height="16" Offset="0xE80"/>
<DList Name="D_80B0A050" Offset="0x1C20"/>
<DList Name="D_80B0A3C0" Offset="0x1F90"/>
<Animation Name="sChildDanceAnim" Offset="0x2730"/>
<Animation Name="sParentDanceAnim" Offset="0x2FC4"/>
</File>
</Root>
+10 -10
View File
@@ -1,17 +1,17 @@
<Root>
<File Name="ovl_End_Title" BaseAddress="0x80B65720" RangeStart="0x780" RangeEnd="0x4128">
<Texture Name="sTheLegendOfZeldaTex" OutName="the_legend_of_zelda" Format="ia8" Width="120" Height="24" Offset="0x780"/>
<Texture Name="sOcarinaOfTimeTex" OutName="ocarina_of_time" Format="ia8" Width="112" Height="16" Offset="0x12C0"/>
<Texture Name="sTheEndTex" OutName="the_end" Format="ia8" Width="80" Height="24" Offset="0x19C0"/>
<Texture Name="sNintendoLeftTex" OutName="nintendo_left" Format="ia8" Width="64" Height="48" Offset="0x2140"/>
<Texture Name="sNintendoRightTex" OutName="nintendo_right" Format="ia8" Width="64" Height="48" Offset="0x2D40"/>
<Texture Name="sPresentedByTex" OutName="presented_by" Format="ia8" Width="96" Height="16" Offset="0x3940"/>
<File Name="ovl_End_Title">
<Texture Name="sTheLegendOfZeldaTex" OutName="the_legend_of_zelda" Format="ia8" Width="120" Height="24" Offset="0x0"/>
<Texture Name="sOcarinaOfTimeTex" OutName="ocarina_of_time" Format="ia8" Width="112" Height="16" Offset="0xB40"/>
<Texture Name="sTheEndTex" OutName="the_end" Format="ia8" Width="80" Height="24" Offset="0x1240"/>
<Texture Name="sNintendoLeftTex" OutName="nintendo_left" Format="ia8" Width="64" Height="48" Offset="0x19C0"/>
<Texture Name="sNintendoRightTex" OutName="nintendo_right" Format="ia8" Width="64" Height="48" Offset="0x25C0"/>
<Texture Name="sPresentedByTex" OutName="presented_by" Format="ia8" Width="96" Height="16" Offset="0x31C0"/>
<Array Name="sTriforceVtx" Count="6" Offset="0x3F40">
<Array Name="sTriforceVtx" Count="6" Offset="0x37C0">
<Vtx/>
</Array>
<DList Name="sTriforceDL" Offset="0x3FA0"/>
<DList Name="sTriforceDL" Offset="0x3820"/>
<DList Name="sPresentedByNintendoDL" Offset="0x4000"/>
<DList Name="sPresentedByNintendoDL" Offset="0x3880"/>
</File>
</Root>
-28
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>
+5 -5
View File
@@ -1,13 +1,13 @@
<Root>
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="assets/objects/gameplay_keep/"/>
<File Name="ovl_Magic_Dark" BaseAddress="0x80B873D0" RangeStart="0xD10" RangeEnd="0x1740">
<Texture Name="sDiamondTex" OutName="diamond_texture" Format="i8" Width="32" Height="64" Offset="0xD10"/>
<File Name="ovl_Magic_Dark">
<Texture Name="sDiamondTex" OutName="diamond_texture" Format="i8" Width="32" Height="64" Offset="0x0"/>
<Array Name="sDiamondVtx" Count="20" Offset="0x1510">
<Array Name="sDiamondVtx" Count="20" Offset="0x800">
<Vtx/>
</Array>
<DList Name="sDiamondMaterialDL" Offset="0x1650"/>
<DList Name="sDiamondModelDL" Offset="0x1700"/>
<DList Name="sDiamondMaterialDL" Offset="0x940"/>
<DList Name="sDiamondModelDL" Offset="0x9F0"/>
</File>
</Root>
+5 -5
View File
@@ -1,10 +1,10 @@
<Root>
<File Name="ovl_Magic_Fire" BaseAddress="0x80B88D70" RangeStart="0xB90" RangeEnd="0x21E0">
<Texture Name="sTex" OutName="dins_fire" Format="i8" Width="64" Height="64" Offset="0xB90"/>
<Array Name="sSphereVtx" Count="76" Offset="0x1B90">
<File Name="ovl_Magic_Fire">
<Texture Name="sTex" OutName="dins_fire" Format="i8" Width="64" Height="64" Offset="0x0"/>
<Array Name="sSphereVtx" Count="76" Offset="0x1000">
<Vtx/>
</Array>
<DList Name="sMaterialDL" Offset="0x2050"/>
<DList Name="sModelDL" Offset="0x2078"/>
<DList Name="sMaterialDL" Offset="0x14C0"/>
<DList Name="sModelDL" Offset="0x14E8"/>
</File>
</Root>
+10 -10
View File
@@ -1,15 +1,15 @@
<Root>
<File Name="ovl_Magic_Wind" BaseAddress="0x80B8B100" RangeStart="0x780" RangeEnd="0x1C98">
<Skeleton Name="sSkel" Type="Curve" LimbType="Curve" Offset="0x1C90"/>
<CurveAnimation Name="sAnim" SkelOffset="0x1C90" Offset="0x1C50"/>
<Limb Name="sRootLimb" LimbType="Curve" Offset="0x1C60"/>
<Limb Name="sInnerCylinderLimb" LimbType="Curve" Offset="0x1C6C"/>
<Limb Name="sOuterCylinderLimb" LimbType="Curve" Offset="0x1C78"/>
<Array Name="sCylinderVtx" Count="36" Offset="0x780">
<File Name="ovl_Magic_Wind">
<Skeleton Name="sSkel" Type="Curve" LimbType="Curve" Offset="0x1510"/>
<CurveAnimation Name="sAnim" SkelOffset="0x1510" Offset="0x14D0"/>
<Limb Name="sRootLimb" LimbType="Curve" Offset="0x14E0"/>
<Limb Name="sInnerCylinderLimb" LimbType="Curve" Offset="0x14EC"/>
<Limb Name="sOuterCylinderLimb" LimbType="Curve" Offset="0x14F8"/>
<Array Name="sCylinderVtx" Count="36" Offset="0x0">
<Vtx/>
</Array>
<Texture Name="sTex" OutName="magic_wind" Format="i8" Width="64" Height="64" Offset="0x9C0"/>
<DList Name="sInnerCylinderDL" Offset="0x19C0"/>
<DList Name="sOuterCylinderDL" Offset="0x1AC8"/>
<Texture Name="sTex" OutName="magic_wind" Format="i8" Width="64" Height="64" Offset="0x240"/>
<DList Name="sInnerCylinderDL" Offset="0x1240"/>
<DList Name="sOuterCylinderDL" Offset="0x1348"/>
</File>
</Root>
+5 -5
View File
@@ -1,10 +1,10 @@
<Root>
<File Name="ovl_Oceff_Spot" BaseAddress="0x80BA6070" RangeStart="0x7F0" RangeEnd="0xEC8">
<Texture Name="sTex" OutName="sun_song_effect" Format="i8" Width="32" Height="32" Offset="0x7F0"/>
<Array Name="sCylinderVtx" Count="27" Offset="0xBF0">
<File Name="ovl_Oceff_Spot">
<Texture Name="sTex" OutName="sun_song_effect" Format="i8" Width="32" Height="32" Offset="0x0"/>
<Array Name="sCylinderVtx" Count="27" Offset="0x400">
<Vtx/>
</Array>
<DList Name="sCylinderMaterialDL" Offset="0xDA0"/>
<DList Name="sCylinderModelDL" Offset="0xE38"/>
<DList Name="sCylinderMaterialDL" Offset="0x5B0"/>
<DList Name="sCylinderModelDL" Offset="0x648"/>
</File>
</Root>
+6 -6
View File
@@ -1,12 +1,12 @@
<Root>
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="assets/objects/gameplay_keep/"/>
<File Name="ovl_Oceff_Storm" BaseAddress="0x80BA70E0" RangeStart="0x7B0" RangeEnd="0x1B40">
<Texture Name="sTex" OutName="song_of_storms_effect" Format="i8" Width="64" Height="64" Offset="0x7B0"/>
<DList Name="sMaterialDL" Offset="0x17B0"/>
<Array Name="sCylinderVtx" Count="27" Offset="0x1858">
<File Name="ovl_Oceff_Storm">
<Texture Name="sTex" OutName="song_of_storms_effect" Format="i8" Width="64" Height="64" Offset="0x0"/>
<DList Name="sMaterialDL" Offset="0x1000"/>
<Array Name="sCylinderVtx" Count="27" Offset="0x10A8">
<Vtx/>
</Array>
<DList Name="sCylinderMaterialDL" Offset="0x1A08"/>
<DList Name="sCylinderModelDL" Offset="0x1AB0"/>
<DList Name="sCylinderMaterialDL" Offset="0x1258"/>
<DList Name="sCylinderModelDL" Offset="0x1300"/>
</File>
</Root>
+5 -5
View File
@@ -1,10 +1,10 @@
<Root>
<File Name="ovl_Oceff_Wipe" BaseAddress="0x80BA8D90" RangeStart="0x550" RangeEnd="0xD10">
<Texture Name="sTex" OutName="oceff" Format="i8" Width="32" Height="32" Offset="0x550"/>
<Array Name="sFrustumVtx" Count="40" Offset="0x950">
<File Name="ovl_Oceff_Wipe">
<Texture Name="sTex" OutName="oceff" Format="i8" Width="32" Height="32" Offset="0x0"/>
<Array Name="sFrustumVtx" Count="40" Offset="0x400">
<Vtx/>
</Array>
<DList Name="sMaterialDL" Offset="0xBD0"/>
<DList Name="sFrustumDL" Offset="0xC58"/>
<DList Name="sMaterialDL" Offset="0x680"/>
<DList Name="sFrustumDL" Offset="0x708"/>
</File>
</Root>
+6 -6
View File
@@ -1,11 +1,11 @@
<Root>
<File Name="ovl_Oceff_Wipe2" BaseAddress="0x80BA9BB0" RangeStart="0x480" RangeEnd="0x16E8">
<Texture Name="s1Tex" OutName="eponas_song_effect_1" Format="i4" Width="64" Height="64" Offset="0x480"/>
<Texture Name="s2Tex" OutName="eponas_song_effect_2" Format="i4" Width="64" Height="64" Offset="0xC80"/>
<Array Name="sFrustumVtx" Count="22" Offset="0x1480">
<File Name="ovl_Oceff_Wipe2">
<Texture Name="s1Tex" OutName="eponas_song_effect_1" Format="i4" Width="64" Height="64" Offset="0x0"/>
<Texture Name="s2Tex" OutName="eponas_song_effect_2" Format="i4" Width="64" Height="64" Offset="0x800"/>
<Array Name="sFrustumVtx" Count="22" Offset="0x1000">
<Vtx/>
</Array>
<DList Name="sMaterialDL" Offset="0x15E0"/>
<DList Name="sFrustumDL" Offset="0x1688"/>
<DList Name="sMaterialDL" Offset="0x1160"/>
<DList Name="sFrustumDL" Offset="0x1208"/>
</File>
</Root>
+5 -5
View File
@@ -1,10 +1,10 @@
<Root>
<File Name="ovl_Oceff_Wipe3" BaseAddress="0x80BAB3F0" RangeStart="0x480" RangeEnd="0x16C8">
<Texture Name="sTex" OutName="saria_song_effect" Format="i8" Width="64" Height="64" Offset="0x480"/>
<Array Name="sFrustumVtx" Count="22" Offset="0x1480">
<File Name="ovl_Oceff_Wipe3">
<Texture Name="sTex" OutName="saria_song_effect" Format="i8" Width="64" Height="64" Offset="0x0"/>
<Array Name="sFrustumVtx" Count="22" Offset="0x1000">
<Vtx/>
</Array>
<DList Name="sMaterialDL" Offset="0x15E0"/>
<DList Name="sFrustumDL" Offset="0x1668"/>
<DList Name="sMaterialDL" Offset="0x1160"/>
<DList Name="sFrustumDL" Offset="0x11E8"/>
</File>
</Root>
+6 -6
View File
@@ -1,12 +1,12 @@
<Root>
<ExternalFile XmlPath="objects/gameplay_keep.xml" OutPath="assets/objects/gameplay_keep/"/>
<File Name="ovl_Oceff_Wipe4" BaseAddress="0x80BACC10" RangeStart="0x460" RangeEnd="0xF48">
<Texture Name="sTex" OutName="scarecrow_song_effect" Format="i8" Width="32" Height="64" Offset="0x460"/>
<Array Name="sFrustumVtx" Count="22" Offset="0xC60">
<File Name="ovl_Oceff_Wipe4">
<Texture Name="sTex" OutName="scarecrow_song_effect" Format="i8" Width="32" Height="64" Offset="0x0"/>
<Array Name="sFrustumVtx" Count="22" Offset="0x800">
<Vtx/>
</Array>
<DList Name="sMaterialDL" Offset="0xDC0"/>
<DList Name="sUnusedMaterialDL" Offset="0xE28"/>
<DList Name="sMaterial2DL" Offset="0xE90"/>
<DList Name="sMaterialDL" Offset="0x960"/>
<DList Name="sUnusedMaterialDL" Offset="0x9C8"/>
<DList Name="sMaterial2DL" Offset="0xA30"/>
</File>
</Root>
+28
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>
+76
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>
+1 -1
View File
@@ -1,6 +1,6 @@
<Root>
<File Name="HAKAdanCH_scene" Segment="2">
<Path Name="HAKAdanCH_scenePathList_000248" Offset="0x0248" NumPaths="2"/>
<Path Name="HAKAdanCH_scenePathList_000220" Offset="0x0220" NumPaths="1"/>
<Scene Name="HAKAdanCH_scene" Offset="0x0"/>
</File>
<File Name="HAKAdanCH_room_0" Segment="3">
@@ -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>
+74
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>
+1 -1
View File
@@ -1,6 +1,6 @@
<Root>
<File Name="HIDAN_scene" Segment="2">
<Path Name="HIDAN_scenePathList_000440" Offset="0x0440" NumPaths="4"/>
<Path Name="HIDAN_scenePathList_000558" Offset="0x0558" NumPaths="19"/>
<Scene Name="HIDAN_scene" Offset="0x0"/>
</File>
<File Name="HIDAN_room_0" Segment="3">
+87
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>
+3 -3
View File
@@ -1,8 +1,8 @@
<Root>
<File Name="MIZUsin_scene" Segment="2">
<Path Name="MIZUsin_scenePathList_000384" Offset="0x0384" NumPaths="2"/>
<Texture Name="gWaterTempleDayEntranceTex" OutName="day_entrance" Format="ia16" Width="8" Height="64" Offset="0x14C30"/>
<Texture Name="gWaterTempleNightEntranceTex" OutName="night_entrance" Format="ia16" Width="8" Height="64" Offset="0x15830"/>
<Path Name="MIZUsin_scenePathList_000424" Offset="0x0424" NumPaths="7"/>
<Texture Name="gWaterTempleDayEntranceTex" OutName="day_entrance" Format="ia16" Width="8" Height="64" Offset="0x14CF0"/>
<Texture Name="gWaterTempleNightEntranceTex" OutName="night_entrance" Format="ia16" Width="8" Height="64" Offset="0x158F0"/>
<Scene Name="MIZUsin_scene" Offset="0x0"/>
</File>
<File Name="MIZUsin_room_0" Segment="3">
+77
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>
+1 -1
View File
@@ -1,6 +1,6 @@
<Root>
<File Name="bdan_scene" Segment="2">
<Cutscene Name="gJabuJabuIntroCs" Offset="0x15600"/>
<Cutscene Name="gJabuJabuIntroCs" Offset="0x155E0"/>
<Scene Name="bdan_scene" Offset="0x0"/>
</File>
<File Name="bdan_room_0" Segment="3">
+54
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>
+70
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>
+14 -14
View File
@@ -1,22 +1,22 @@
<Root>
<File Name="ganontika_scene" Segment="2">
<Cutscene Name="gForestTrialSageCs" Offset="0x19EE0"/>
<Cutscene Name="gWaterTrialSageCs" Offset="0x1A8E0"/>
<Cutscene Name="gShadowTrialSageCs" Offset="0x1B2B0"/>
<Cutscene Name="gFireTrialSageCs" Offset="0x1BC80"/>
<Cutscene Name="gLightTrialSageCs" Offset="0x1C6B0"/>
<Cutscene Name="gSpiritTrialSageCs" Offset="0x1D080"/>
<Cutscene Name="gForestTrialSageCs" Offset="0x19ED0"/>
<Cutscene Name="gWaterTrialSageCs" Offset="0x1A8D0"/>
<Cutscene Name="gShadowTrialSageCs" Offset="0x1B2A0"/>
<Cutscene Name="gFireTrialSageCs" Offset="0x1BC70"/>
<Cutscene Name="gLightTrialSageCs" Offset="0x1C6A0"/>
<Cutscene Name="gSpiritTrialSageCs" Offset="0x1D070"/>
<Cutscene Name="gTowerBarrierCs" Offset="0x1DA50"/>
<Cutscene Name="gTowerBarrierCs" Offset="0x1DA40"/>
<Cutscene Name="gLightBarrierCs" Offset="0x1DF90"/>
<Cutscene Name="gFireBarrierCs" Offset="0x1E3E0"/>
<Cutscene Name="gForestBarrierCs" Offset="0x1E790"/>
<Cutscene Name="gSpiritBarrierCs" Offset="0x1EB40"/>
<Cutscene Name="gWaterBarrierCs" Offset="0x1EF70"/>
<Cutscene Name="gShadowBarrierCs" Offset="0x21380"/>
<Cutscene Name="gLightBarrierCs" Offset="0x1DF80"/>
<Cutscene Name="gFireBarrierCs" Offset="0x1E3D0"/>
<Cutscene Name="gForestBarrierCs" Offset="0x1E780"/>
<Cutscene Name="gSpiritBarrierCs" Offset="0x1EB30"/>
<Cutscene Name="gWaterBarrierCs" Offset="0x1EF60"/>
<Cutscene Name="gShadowBarrierCs" Offset="0x21370"/>
<Path Name="ganontika_scenePathList_000668" Offset="0x0668" NumPaths="6"/>
<Path Name="ganontika_scenePathList_000674" Offset="0x0674" NumPaths="3"/>
<Scene Name="ganontika_scene" Offset="0x0"/>
</File>
<File Name="ganontika_room_0" Segment="3">
@@ -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>
+3 -4
View File
@@ -1,9 +1,8 @@
<Root>
<File Name="ice_doukutu_scene" Segment="2">
<Path Name="ice_doukutu_scenePathList_000304" Offset="0x0304" NumPaths="5"/>
<Cutscene Name="gIceCavernSerenadeCs" Offset="0x330"/>
<Texture Name="gIceCavernNightEntranceTex" OutName="night_entrance" Format="ia16" Width="64" Height="4" Offset="0xF8C0"/>
<Texture Name="gIceCavernDayEntranceTex" OutName="day_entrance" Format="ia16" Width="64" Height="4" Offset="0xFAC0"/>
<Cutscene Name="gIceCavernSerenadeCs" Offset="0x250"/>
<Texture Name="gIceCavernNightEntranceTex" OutName="night_entrance" Format="ia16" Width="64" Height="4" Offset="0xF7F0"/>
<Texture Name="gIceCavernDayEntranceTex" OutName="day_entrance" Format="ia16" Width="64" Height="4" Offset="0xF9F0"/>
<Scene Name="ice_doukutu_scene" Offset="0x0"/>
</File>
<File Name="ice_doukutu_room_0" Segment="3">
@@ -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>
+5 -5
View File
@@ -1,11 +1,11 @@
<Root>
<File Name="jyasinzou_scene" Segment="2">
<Path Name="jyasinzou_scenePathList_00049C" Offset="0x049C" NumPaths="5"/>
<Texture Name="gSpiritTempleDayEntranceTex" OutName="day_entrance" Format="ia16" Width="8" Height="128" Offset="0x18920"/>
<Texture Name="gSpiritTempleNightEntranceTex" OutName="night_entrance" Format="ia16" Width="8" Height="128" Offset="0x18020"/>
<Path Name="jyasinzou_scenePathList_0004C0" Offset="0x04C0" NumPaths="6"/>
<Texture Name="gSpiritTempleDayEntranceTex" OutName="day_entrance" Format="ia16" Width="8" Height="128" Offset="0x18940"/>
<Texture Name="gSpiritTempleNightEntranceTex" OutName="night_entrance" Format="ia16" Width="8" Height="128" Offset="0x18040"/>
<Scene Name="jyasinzou_scene" Offset="0x0"/>
<Scene Name="jyasinzou_scene_unused1" Offset="0x17200"/>
<Scene Name="jyasinzou_scene_unused2" Offset="0x176F0"/>
<Scene Name="jyasinzou_scene_unused1" Offset="0x17220"/>
<Scene Name="jyasinzou_scene_unused2" Offset="0x17710"/>
</File>
<File Name="jyasinzou_room_0" Segment="3">
<Room Name="jyasinzou_room_0" Offset="0x0"/>
@@ -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>
+2 -2
View File
@@ -1,7 +1,7 @@
<Root>
<File Name="men_scene" Segment="2">
<Texture Name="gGTGDayEntranceTex" OutName="day_entrance" Format="ia16" Width="8" Height="128" Offset="0xF8C0"/>
<Texture Name="gGTGNightEntranceTex" OutName="night_entrance" Format="ia16" Width="8" Height="128" Offset="0x100C0"/>
<Texture Name="gGTGDayEntranceTex" OutName="day_entrance" Format="ia16" Width="8" Height="128" Offset="0xF930"/>
<Texture Name="gGTGNightEntranceTex" OutName="night_entrance" Format="ia16" Width="8" Height="128" Offset="0x10130"/>
<Scene Name="men_scene" Offset="0x0"/>
</File>
<File Name="men_room_0" Segment="3">
+42
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>
+3 -3
View File
@@ -1,8 +1,8 @@
<Root>
<File Name="ydan_scene" Segment="2">
<Cutscene Name="gDekuTreeIntroCs" Offset="0xB650"/>
<Texture Name="gYdanTex_00BA18" Format="rgba16" Width="32" Height="64" Offset="0xBA18"/>
<Texture Name="gYdanTex_00CA18" Format="rgba16" Width="32" Height="64" Offset="0xCA18"/>
<Cutscene Name="gDekuTreeIntroCs" Offset="0xB640"/>
<Texture Name="gYdanTex_00BA18" Format="rgba16" Width="32" Height="64" Offset="0xBA08"/>
<Texture Name="gYdanTex_00CA18" Format="rgba16" Width="32" Height="64" Offset="0xCA08"/>
<Scene Name="ydan_scene" Offset="0x0"/>
</File>
+45
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
+62 -43
View File
@@ -8,8 +8,7 @@ import time
import multiprocessing
from pathlib import Path
EXTRACTED_ASSETS_NAMEFILE = ".extracted-assets.json"
from tools import version_config
def SignalHandler(sig, frame):
@@ -17,20 +16,33 @@ def SignalHandler(sig, frame):
mainAbort.set()
# Don't exit immediately to update the extracted assets file.
def ExtractFile(xmlPath, outputPath, outputSourcePath):
def ExtractFile(assetConfig: version_config.AssetConfig, outputPath: Path, outputSourcePath: Path):
xmlPath = assetConfig.xml_path
version = globalVersionConfig.version
if globalAbort.is_set():
# Don't extract if another file wasn't extracted properly.
return
zapdPath = Path("tools") / "ZAPD" / "ZAPD.out"
configPath = Path("tools") / "ZAPDConfigs" / "MqDbg" / "Config.xml"
configPath = Path("tools") / "ZAPDConfigs" / version / "Config.xml"
Path(outputPath).mkdir(parents=True, exist_ok=True)
Path(outputSourcePath).mkdir(parents=True, exist_ok=True)
outputPath.mkdir(parents=True, exist_ok=True)
outputSourcePath.mkdir(parents=True, exist_ok=True)
execStr = f"{zapdPath} e -eh -i {xmlPath} -b extracted/gc-eu-mq-dbg/baserom -o {outputPath} -osf {outputSourcePath} -gsf 1 -rconf {configPath} --cs-float both {ZAPDArgs}"
execStr = f"{zapdPath} e -eh -i {xmlPath} -b extracted/{version}/baserom -o {outputPath} -osf {outputSourcePath} -gsf 1 -rconf {configPath} --cs-float both {ZAPDArgs}"
if "overlays" in xmlPath:
if "code" in xmlPath.parts or "overlays" in xmlPath.parts:
assert assetConfig.start_offset is not None
assert assetConfig.end_offset is not None
execStr += f" --start-offset 0x{assetConfig.start_offset:X}"
execStr += f" --end-offset 0x{assetConfig.end_offset:X}"
if "overlays" in xmlPath.parts:
overlayName = xmlPath.stem
baseAddress = globalVersionConfig.dmadata_segments[overlayName].vram + assetConfig.start_offset
execStr += f" --base-address 0x{baseAddress:X}"
execStr += " --static"
if globalUnaccounted:
@@ -45,35 +57,39 @@ def ExtractFile(xmlPath, outputPath, outputSourcePath):
print("Aborting...", file=os.sys.stderr)
print("\n")
def ExtractFunc(fullPath):
*pathList, xmlName = fullPath.split(os.sep)
objectName = os.path.splitext(xmlName)[0]
def ExtractFunc(assetConfig: version_config.AssetConfig):
objectName = assetConfig.name
xml_path = assetConfig.xml_path
xml_path_str = str(xml_path)
outPath = os.path.join("assets", *pathList[2:], objectName)
version = globalVersionConfig.version
outPath = Path("extracted") / version / "assets" / objectName
outSourcePath = outPath
if fullPath in globalExtractedAssetsTracker:
timestamp = globalExtractedAssetsTracker[fullPath]["timestamp"]
modificationTime = int(os.path.getmtime(fullPath))
if xml_path_str in globalExtractedAssetsTracker:
timestamp = globalExtractedAssetsTracker[xml_path_str]["timestamp"]
modificationTime = int(os.path.getmtime(xml_path))
if modificationTime < timestamp:
# XML has not been modified since last extraction.
return
currentTimeStamp = int(time.time())
ExtractFile(fullPath, outPath, outSourcePath)
ExtractFile(assetConfig, outPath, outSourcePath)
if not globalAbort.is_set():
# Only update timestamp on succesful extractions
if fullPath not in globalExtractedAssetsTracker:
globalExtractedAssetsTracker[fullPath] = globalManager.dict()
globalExtractedAssetsTracker[fullPath]["timestamp"] = currentTimeStamp
if xml_path_str not in globalExtractedAssetsTracker:
globalExtractedAssetsTracker[xml_path_str] = globalManager.dict()
globalExtractedAssetsTracker[xml_path_str]["timestamp"] = currentTimeStamp
def initializeWorker(abort, unaccounted: bool, extractedAssetsTracker: dict, manager):
def initializeWorker(versionConfig: version_config.VersionConfig, abort, unaccounted: bool, extractedAssetsTracker: dict, manager):
global globalVersionConfig
global globalAbort
global globalUnaccounted
global globalExtractedAssetsTracker
global globalManager
globalVersionConfig = versionConfig
globalAbort = abort
globalUnaccounted = unaccounted
globalExtractedAssetsTracker = extractedAssetsTracker
@@ -95,13 +111,17 @@ def processZAPDArgs(argsZ):
def main():
parser = argparse.ArgumentParser(description="baserom asset extractor")
parser.add_argument("-s", "--single", help="asset path relative to assets/, e.g. objects/gameplay_keep")
parser.add_argument("-v", "--oot-version", dest="oot_version", help="OOT game version", default="gc-eu-mq-dbg")
parser.add_argument("-s", "--single", help="Extract a single asset by name, e.g. objects/gameplay_keep")
parser.add_argument("-f", "--force", help="Force the extraction of every xml instead of checking the touched ones (overwriting current files).", action="store_true")
parser.add_argument("-j", "--jobs", help="Number of cpu cores to extract with.")
parser.add_argument("-u", "--unaccounted", help="Enables ZAPD unaccounted detector warning system.", action="store_true")
parser.add_argument("-Z", help="Pass the argument on to ZAPD, e.g. `-ZWunaccounted` to warn about unaccounted blocks in XMLs. Each argument should be passed separately, *without* the leading dash.", metavar="ZAPD_ARG", action="append")
args = parser.parse_args()
version: str = args.oot_version
versionConfig = version_config.load_version_config(version)
global ZAPDArgs
ZAPDArgs = processZAPDArgs(args.Z) if args.Z else ""
@@ -110,31 +130,30 @@ def main():
manager = multiprocessing.Manager()
signal.signal(signal.SIGINT, SignalHandler)
extraction_times_p = Path("extracted") / version / "assets_extraction_times.json"
extractedAssetsTracker = manager.dict()
if os.path.exists(EXTRACTED_ASSETS_NAMEFILE) and not args.force:
with open(EXTRACTED_ASSETS_NAMEFILE, encoding='utf-8') as f:
if extraction_times_p.exists() and not args.force:
with extraction_times_p.open(encoding='utf-8') as f:
extractedAssetsTracker.update(json.load(f, object_hook=manager.dict))
asset_path = args.single
if asset_path is not None:
fullPath = os.path.join("assets", "xml", asset_path + ".xml")
if not os.path.exists(fullPath):
print(f"Error. File {fullPath} does not exist.", file=os.sys.stderr)
singleAssetName = args.single
if singleAssetName is not None:
assetConfig = None
for asset in versionConfig.assets:
if asset.name == singleAssetName:
assetConfig = asset
break
else:
print(f"Error. Asset {singleAssetName} not found in config.", file=os.sys.stderr)
exit(1)
initializeWorker(mainAbort, args.unaccounted, extractedAssetsTracker, manager)
initializeWorker(versionConfig, mainAbort, args.unaccounted, extractedAssetsTracker, manager)
# Always extract if -s is used.
fullPath = assetConfig.xml_path
if fullPath in extractedAssetsTracker:
del extractedAssetsTracker[fullPath]
ExtractFunc(fullPath)
ExtractFunc(assetConfig)
else:
xmlFiles = []
for currentPath, _, files in os.walk(os.path.join("assets", "xml")):
for file in files:
fullPath = os.path.join(currentPath, file)
if file.endswith(".xml"):
xmlFiles.append(fullPath)
class CannotMultiprocessError(Exception):
pass
@@ -147,17 +166,17 @@ def main():
mp_context = multiprocessing.get_context("fork")
except ValueError as e:
raise CannotMultiprocessError() from e
with mp_context.Pool(numCores, initializer=initializeWorker, initargs=(mainAbort, args.unaccounted, extractedAssetsTracker, manager)) as p:
p.map(ExtractFunc, xmlFiles)
with mp_context.Pool(numCores, initializer=initializeWorker, initargs=(versionConfig, mainAbort, args.unaccounted, extractedAssetsTracker, manager)) as p:
p.map(ExtractFunc, versionConfig.assets)
except (multiprocessing.ProcessError, TypeError, CannotMultiprocessError):
print("Warning: Multiprocessing exception ocurred.", file=os.sys.stderr)
print("Disabling mutliprocessing.", file=os.sys.stderr)
initializeWorker(mainAbort, args.unaccounted, extractedAssetsTracker, manager)
for singlePath in xmlFiles:
ExtractFunc(singlePath)
initializeWorker(versionConfig, mainAbort, args.unaccounted, extractedAssetsTracker, manager)
for assetConfig in versionConfig.assets:
ExtractFunc(assetConfig)
with open(EXTRACTED_ASSETS_NAMEFILE, 'w', encoding='utf-8') as f:
with extraction_times_p.open('w', encoding='utf-8') as f:
serializableDict = dict()
for xml, data in extractedAssetsTracker.items():
serializableDict[xml] = dict(data)
-5
View File
@@ -256,12 +256,7 @@ endseg
beginseg
name "nes_font_static"
romalign 0x1000
#if OOT_DEBUG
include "$(BUILD_DIR)/assets/textures/nes_font_static/nes_font_static.o"
#else
// TODO: Remove this hack once assets are extracted from gc-eu-mq
include "$(BUILD_DIR)/baserom/nes_font_static.o"
#endif
number 10
endseg
@@ -1,7 +1,7 @@
#include "file_select.h"
#include "terminal.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[] = {
0x0002, 0x0003, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0002, 0x0001, 0x0002, 0x0000, 0x0001,
@@ -1,6 +1,6 @@
#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[] = {
0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016,
+2 -2
View File
@@ -6,7 +6,7 @@
[subrepo]
remote = https://github.com/zeldaret/ZAPD.git
branch = master
commit = 1300a4f36584627aa784cbc252d1c8ecd7b40e68
parent = 4522ee2cae12b2d23b7ef0134f24f7c3e26935f0
commit = 0285e11f0a5937f60db023bfe5db273f2223fcf4
parent = afd82230e1bd6e043eabe613f5b31f6e96f0f88c
method = merge
cmdver = 0.4.6
+8 -3
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.
- `--cs-float` : How cutscene floats should be extracted.
- Valid values:
- `hex`
- `float`
- `both`
- `hex`: `0x42280000`
- `float`: `42.0f`
- `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
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.
+5
View File
@@ -21,6 +21,8 @@ enum class CsFloatType
HexOnly,
FloatOnly,
HexAndFloat,
HexAndCommentedFloatLeft,
HexAndCommentedFloatRight,
};
class Globals
@@ -39,6 +41,9 @@ public:
fs::path baseRomPath, inputPath, outputPath, sourceOutputPath, cfgPath;
TextureType texType;
CsFloatType floatType = CsFloatType::FloatOnly;
int64_t baseAddress = -1;
int64_t startOffset = -1;
int64_t endOffset = -1;
ZGame game;
GameConfig cfg;
bool verboseUnaccounted = false;
+46 -10
View File
@@ -37,11 +37,14 @@ void Arg_EnableGCCCompat(int& i, char* argv[]);
void Arg_ForceStatic(int& i, char* argv[]);
void Arg_ForceUnaccountedStatic(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[]);
bool Parse(const fs::path& xmlFilePath, const fs::path& basePath, const fs::path& outPath,
ZFileMode fileMode);
ZFileMode fileMode);
void ParseArgs(int& argc, char* argv[]);
@@ -115,7 +118,7 @@ int main(int argc, char* argv[])
returnCode = HandleExtract(fileMode, exporterSet);
else if (fileMode == ZFileMode::BuildTexture)
BuildAssetTexture(Globals::Instance->inputPath, Globals::Instance->texType,
Globals::Instance->outputPath);
Globals::Instance->outputPath);
else if (fileMode == ZFileMode::BuildBackground)
BuildAssetBackground(Globals::Instance->inputPath, Globals::Instance->outputPath);
else if (fileMode == ZFileMode::BuildBlob)
@@ -126,7 +129,7 @@ int main(int argc, char* argv[])
}
bool Parse(const fs::path& xmlFilePath, const fs::path& basePath, const fs::path& outPath,
ZFileMode fileMode)
ZFileMode fileMode)
{
tinyxml2::XMLDocument doc;
tinyxml2::XMLError eResult = doc.LoadFile(xmlFilePath.string().c_str());
@@ -135,7 +138,7 @@ bool Parse(const fs::path& xmlFilePath, const fs::path& basePath, const fs::path
{
// TODO: use XMLDocument::ErrorIDToName to get more specific error messages here
HANDLE_ERROR(WarningType::InvalidXML,
StringHelper::Sprintf("invalid XML file: '%s'", xmlFilePath.c_str()), "");
StringHelper::Sprintf("invalid XML file: '%s'", xmlFilePath.c_str()), "");
return false;
}
@@ -150,7 +153,7 @@ bool Parse(const fs::path& xmlFilePath, const fs::path& basePath, const fs::path
}
for (tinyxml2::XMLElement* child = root->FirstChildElement(); child != NULL;
child = child->NextSiblingElement())
child = child->NextSiblingElement())
{
if (std::string_view(child->Name()) == "File")
{
@@ -254,6 +257,9 @@ void ParseArgs(int& argc, char* argv[])
{"-us", &Arg_ForceUnaccountedStatic},
{"--unaccounted-static", &Arg_ForceUnaccountedStatic},
{"--cs-float", &Arg_CsFloatMode},
{"--base-address", &Arg_BaseAddress},
{"--start-offset", &Arg_StartOffset},
{"--end-offset", &Arg_EndOffset},
};
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;
}
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
{
Globals::Instance->floatType = CsFloatType::FloatOnly;
HANDLE_WARNING(
WarningType::Always, "Invalid CS Float Type",
StringHelper::Sprintf("Invalid CS float type entered. Expected \"hex\", \"float\", or "
"\"both\". Got %s.\n Defaulting to \"float\".",
argv[i]));
StringHelper::Sprintf("Invalid CS float type entered. Expected \"hex\", \"float\", "
"\"both\", \"hex-commented-left\" or \"hex-commented-right\". "
"Got %s.\n Defaulting to \"float\".",
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)
{
bool procFileModeSuccess = false;
@@ -440,14 +476,14 @@ int HandleExtract(ZFileMode fileMode, ExporterSet* exporterSet)
printf("Parsing external file from config: '%s'\n", externalXmlFilePath.c_str());
parseSuccessful = Parse(externalXmlFilePath, Globals::Instance->baseRomPath,
extFile.outPath, ZFileMode::ExternalFile);
extFile.outPath, ZFileMode::ExternalFile);
if (!parseSuccessful)
return 1;
}
parseSuccessful = Parse(Globals::Instance->inputPath, Globals::Instance->baseRomPath,
Globals::Instance->outputPath, fileMode);
Globals::Instance->outputPath, fileMode);
if (!parseSuccessful)
return 1;
}
+9 -20
View File
@@ -375,33 +375,22 @@ ZResourceType ZCutscene::GetResourceType() const
std::string ZCutscene::GetCsEncodedFloat(float f, CsFloatType type, bool useSciNotation)
{
uint32_t i;
std::memcpy(&i, &f, sizeof(i));
switch (type)
{
default:
// This default case will NEVER be reached, but GCC still gives a warning.
case CsFloatType::HexOnly:
{
uint32_t i;
std::memcpy(&i, &f, sizeof(i));
return StringHelper::Sprintf("0x%08X", i);
}
case CsFloatType::FloatOnly:
{
if (useSciNotation)
{
return StringHelper::Sprintf("%.8ef", f);
}
return StringHelper::Sprintf("%ff", f);
}
return StringHelper::Sprintf(useSciNotation ? "%.8ef" : "%ff", f);
case CsFloatType::HexAndFloat:
{
uint32_t i;
std::memcpy(&i, &f, sizeof(i));
if (useSciNotation)
{
return StringHelper::Sprintf("CS_FLOAT(0x%08X, %.8ef)", i, f);
}
return StringHelper::Sprintf("CS_FLOAT(0x%08X, %ff)", i, f);
}
return StringHelper::Sprintf(useSciNotation ? "CS_FLOAT(0x%08X, %.8ef)" : "CS_FLOAT(0x%08X, %ff)", i, f);
case CsFloatType::HexAndCommentedFloatLeft:
return StringHelper::Sprintf(useSciNotation ? "/* %.8ef */ 0x%08X" : "/* %ff */ 0x%08X", f, i);
case CsFloatType::HexAndCommentedFloatRight:
return StringHelper::Sprintf(useSciNotation ? "0x%08X /* %.8ef */" : "0x%08X /* %ff */", i, f);
}
}
+18
View File
@@ -120,6 +120,9 @@ void ZFile::ParseXML(tinyxml2::XMLElement* reader, const std::string& filename)
if (reader->Attribute("BaseAddress") != nullptr)
baseAddress = StringHelper::StrToL(reader->Attribute("BaseAddress"), 16);
if (mode == ZFileMode::Extract && Globals::Instance->baseAddress != -1)
baseAddress = Globals::Instance->baseAddress;
if (reader->Attribute("RangeStart") != nullptr)
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());
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)
rangeEnd = rawData.size();
@@ -585,6 +591,12 @@ Declaration* ZFile::AddDeclarationIncludeArray(offset_t address, std::string& in
includePath = "assets/" + StringHelper::Split(includePath, "assets/extracted/")[1];
if (StringHelper::StartsWith(includePath, "assets/custom/"))
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);
if (decl == nullptr)
@@ -621,6 +633,12 @@ Declaration* ZFile::AddDeclarationIncludeArray(offset_t address, std::string& in
includePath = "assets/" + StringHelper::Split(includePath, "assets/extracted/")[1];
if (StringHelper::StartsWith(includePath, "assets/custom/"))
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);
if (decl == nullptr)
+15
View File
@@ -30,6 +30,21 @@ public:
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)
{
size_t pos = 0;
-9
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>
@@ -1 +0,0 @@
8012DB20 gMtxClear
@@ -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>
@@ -0,0 +1,2 @@
8012DB20 gMtxClear
80A8E610 sShadowTex
+9
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>
+2
View File
@@ -0,0 +1,2 @@
800FBC00 gMtxClear
80A72FA0 sShadowTex
+9
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>
+2
View File
@@ -0,0 +1,2 @@
800FBC20 gMtxClear
80A73020 sShadowTex
+25 -2
View File
@@ -18,18 +18,30 @@ PROJECT_ROOT = Path(__file__).parent.parent
@dataclasses.dataclass
class VersionConfig:
# Version name
version: str
# ROM offset to start of DMA table
dmadata_start: int
# DMA segment information, in ROM order
dmadata_segments: OrderedDict[str, SegmentInfo]
# Addresses of important variables needed for asset extraction
variables: Dict[str, int]
variables: dict[str, int]
# Assets to extract
assets: list[AssetConfig]
@dataclasses.dataclass
class SegmentInfo:
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]:
@@ -46,8 +58,19 @@ def load_dmadata_segments(version: str) -> OrderedDict[str, SegmentInfo]:
def load_version_config(version: str) -> VersionConfig:
with open(PROJECT_ROOT / f"baseroms/{version}/config.yml", "r") as f:
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(
version=version,
dmadata_start=config["dmadata_start"],
dmadata_segments=load_dmadata_segments(version),
variables=config["variables"],
assets=assets,
)