Add yar (Yaz0 ARchives) support to build system (#1255)

* extract_archives.py

* autogenerated xmls

* build OK

* cleanup

* Use symbols in gItemIcons

* change how archives are generated

* makeyar in C

* Rename segments

* rename .archive.o to .yar.o

* Explanation at the top of programs

* fix progress calculation

* Ignore archives in progress script

* merge

* Update tools/buildtools/makeyar.c

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* Update tools/buildtools/makeyar.c

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* Update tools/buildtools/makeyar.c

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* Update tools/buildtools/makeyar.c

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

---------

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>
This commit is contained in:
Anghelo Carvajal 2023-06-18 18:13:57 -04:00 committed by GitHub
parent 0a55ca0b40
commit a5cc630cef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
28 changed files with 1196 additions and 280 deletions

View File

@ -117,6 +117,7 @@ MKLDSCRIPT := tools/buildtools/mkldscript
YAZ0 := tools/buildtools/yaz0
ZAPD := tools/ZAPD/ZAPD.out
FADO := tools/fado/fado.elf
MAKEYAR := tools/buildtools/makeyar
OPTFLAGS := -O2 -g3
ASFLAGS := -march=vr4300 -32 -Iinclude
@ -184,9 +185,11 @@ C_FILES := $(foreach dir,$(SRC_DIRS) $(ASSET_BIN_DIRS_C_FILES),$(wildcard
S_FILES := $(shell grep -F "build/asm" spec | sed 's/.*build\/// ; s/\.o\".*/.s/') \
$(shell grep -F "build/data" spec | sed 's/.*build\/// ; s/\.o\".*/.s/')
BASEROM_FILES := $(shell grep -F "build/baserom" spec | sed 's/.*build\/// ; s/\.o\".*//')
ARCHIVES_O := $(shell grep -F ".yar.o" spec | sed 's/.*include "// ; s/\.o\".*/.o/')
O_FILES := $(foreach f,$(S_FILES:.s=.o),build/$f) \
$(foreach f,$(C_FILES:.c=.o),build/$f) \
$(foreach f,$(BASEROM_FILES),build/$f.o)
$(foreach f,$(BASEROM_FILES),build/$f.o) \
$(ARCHIVES_O)
OVL_RELOC_FILES := $(shell $(CPP) $(CPPFLAGS) $(SPEC) | grep -o '[^"]*_reloc.o' )
@ -303,6 +306,7 @@ setup:
$(MAKE) -C tools
python3 tools/fixbaserom.py
python3 tools/extract_baserom.py
python3 tools/decompress_yars.py
assets:
python3 extract_assets.py -j $(N_THREADS)
@ -344,6 +348,10 @@ build/assets/%.o: assets/%.c
$(OBJCOPY_BIN)
$(RM_MDEBUG)
build/assets/archives/%.yar.o: build/assets/archives/%.o
$(MAKEYAR) $< $(@:.yar.o=.yar.bin) $(@:.yar.o=.symbols.o)
$(OBJCOPY) -I binary -O elf32-big $(@:.yar.o=.yar.bin) $@
build/baserom/%.o: baserom/%
$(OBJCOPY) -I binary -O elf32-big $< $@
@ -392,3 +400,6 @@ build/assets/%.jpg.inc.c: assets/%.jpg
$(ZAPD) bren -eh -i $< -o $@
-include $(DEP_FILES)
# Print target for debugging
print-% : ; $(info $* is a $(flavor $*) variable set to [$($*)]) @true

View File

@ -0,0 +1,18 @@
<Root>
<File Name="icon_item_24_static_yar.unarchive" Segment="9">
<Blob Name="icon_item_24_static_yar_Blob_000000" Size="0x0900" Offset="0x0" />
<Blob Name="icon_item_24_static_yar_Blob_000900" Size="0x0900" Offset="0x900" />
<Blob Name="icon_item_24_static_yar_Blob_001200" Size="0x0900" Offset="0x1200" />
<Blob Name="icon_item_24_static_yar_Blob_001B00" Size="0x0900" Offset="0x1B00" />
<Blob Name="icon_item_24_static_yar_Blob_002400" Size="0x0900" Offset="0x2400" />
<Blob Name="icon_item_24_static_yar_Blob_002D00" Size="0x0900" Offset="0x2D00" />
<Blob Name="icon_item_24_static_yar_Blob_003600" Size="0x0900" Offset="0x3600" />
<Blob Name="icon_item_24_static_yar_Blob_003F00" Size="0x0900" Offset="0x3F00" />
<Blob Name="icon_item_24_static_yar_Blob_004800" Size="0x0900" Offset="0x4800" />
<Blob Name="icon_item_24_static_yar_Blob_005100" Size="0x0900" Offset="0x5100" />
<Blob Name="icon_item_24_static_yar_Blob_005A00" Size="0x0900" Offset="0x5A00" />
<Blob Name="icon_item_24_static_yar_Blob_006300" Size="0x0900" Offset="0x6300" />
<Blob Name="icon_item_24_static_yar_Blob_006C00" Size="0x0900" Offset="0x6C00" />
<Blob Name="icon_item_24_static_yar_Blob_007500" Size="0x0200" Offset="0x7500" />
</File>
</Root>

View File

@ -0,0 +1,194 @@
<Root>
<File Name="icon_item_static_yar.unarchive" Segment="8">
<Blob Name="icon_item_static_yar_Blob_000000" Size="0x1000" Offset="0x0" />
<Blob Name="icon_item_static_yar_Blob_001000" Size="0x1000" Offset="0x1000" />
<Blob Name="icon_item_static_yar_Blob_002000" Size="0x1000" Offset="0x2000" />
<Blob Name="icon_item_static_yar_Blob_003000" Size="0x1000" Offset="0x3000" />
<Blob Name="icon_item_static_yar_Blob_004000" Size="0x1000" Offset="0x4000" />
<Blob Name="icon_item_static_yar_Blob_005000" Size="0x1000" Offset="0x5000" />
<Blob Name="icon_item_static_yar_Blob_006000" Size="0x1000" Offset="0x6000" />
<Blob Name="icon_item_static_yar_Blob_007000" Size="0x1000" Offset="0x7000" />
<Blob Name="icon_item_static_yar_Blob_008000" Size="0x1000" Offset="0x8000" />
<Blob Name="icon_item_static_yar_Blob_009000" Size="0x1000" Offset="0x9000" />
<Blob Name="icon_item_static_yar_Blob_00A000" Size="0x1000" Offset="0xA000" />
<Blob Name="icon_item_static_yar_Blob_00B000" Size="0x1000" Offset="0xB000" />
<Blob Name="icon_item_static_yar_Blob_00C000" Size="0x1000" Offset="0xC000" />
<Blob Name="icon_item_static_yar_Blob_00D000" Size="0x1000" Offset="0xD000" />
<Blob Name="icon_item_static_yar_Blob_00E000" Size="0x1000" Offset="0xE000" />
<Blob Name="icon_item_static_yar_Blob_00F000" Size="0x1000" Offset="0xF000" />
<Blob Name="icon_item_static_yar_Blob_010000" Size="0x1000" Offset="0x10000" />
<Blob Name="icon_item_static_yar_Blob_011000" Size="0x1000" Offset="0x11000" />
<Blob Name="icon_item_static_yar_Blob_012000" Size="0x1000" Offset="0x12000" />
<Blob Name="icon_item_static_yar_Blob_013000" Size="0x1000" Offset="0x13000" />
<Blob Name="icon_item_static_yar_Blob_014000" Size="0x1000" Offset="0x14000" />
<Blob Name="icon_item_static_yar_Blob_015000" Size="0x1000" Offset="0x15000" />
<Blob Name="icon_item_static_yar_Blob_016000" Size="0x1000" Offset="0x16000" />
<Blob Name="icon_item_static_yar_Blob_017000" Size="0x1000" Offset="0x17000" />
<Blob Name="icon_item_static_yar_Blob_018000" Size="0x1000" Offset="0x18000" />
<Blob Name="icon_item_static_yar_Blob_019000" Size="0x1000" Offset="0x19000" />
<Blob Name="icon_item_static_yar_Blob_01A000" Size="0x1000" Offset="0x1A000" />
<Blob Name="icon_item_static_yar_Blob_01B000" Size="0x1000" Offset="0x1B000" />
<Blob Name="icon_item_static_yar_Blob_01C000" Size="0x1000" Offset="0x1C000" />
<Blob Name="icon_item_static_yar_Blob_01D000" Size="0x1000" Offset="0x1D000" />
<Blob Name="icon_item_static_yar_Blob_01E000" Size="0x1000" Offset="0x1E000" />
<Blob Name="icon_item_static_yar_Blob_01F000" Size="0x1000" Offset="0x1F000" />
<Blob Name="icon_item_static_yar_Blob_020000" Size="0x1000" Offset="0x20000" />
<Blob Name="icon_item_static_yar_Blob_021000" Size="0x1000" Offset="0x21000" />
<Blob Name="icon_item_static_yar_Blob_022000" Size="0x1000" Offset="0x22000" />
<Blob Name="icon_item_static_yar_Blob_023000" Size="0x1000" Offset="0x23000" />
<Blob Name="icon_item_static_yar_Blob_024000" Size="0x1000" Offset="0x24000" />
<Blob Name="icon_item_static_yar_Blob_025000" Size="0x1000" Offset="0x25000" />
<Blob Name="icon_item_static_yar_Blob_026000" Size="0x1000" Offset="0x26000" />
<Blob Name="icon_item_static_yar_Blob_027000" Size="0x1000" Offset="0x27000" />
<Blob Name="icon_item_static_yar_Blob_028000" Size="0x1000" Offset="0x28000" />
<Blob Name="icon_item_static_yar_Blob_029000" Size="0x1000" Offset="0x29000" />
<Blob Name="icon_item_static_yar_Blob_02A000" Size="0x1000" Offset="0x2A000" />
<Blob Name="icon_item_static_yar_Blob_02B000" Size="0x1000" Offset="0x2B000" />
<Blob Name="icon_item_static_yar_Blob_02C000" Size="0x1000" Offset="0x2C000" />
<Blob Name="icon_item_static_yar_Blob_02D000" Size="0x1000" Offset="0x2D000" />
<Blob Name="icon_item_static_yar_Blob_02E000" Size="0x1000" Offset="0x2E000" />
<Blob Name="icon_item_static_yar_Blob_02F000" Size="0x1000" Offset="0x2F000" />
<Blob Name="icon_item_static_yar_Blob_030000" Size="0x1000" Offset="0x30000" />
<Blob Name="icon_item_static_yar_Blob_031000" Size="0x1000" Offset="0x31000" />
<Blob Name="icon_item_static_yar_Blob_032000" Size="0x1000" Offset="0x32000" />
<Blob Name="icon_item_static_yar_Blob_033000" Size="0x1000" Offset="0x33000" />
<Blob Name="icon_item_static_yar_Blob_034000" Size="0x1000" Offset="0x34000" />
<Blob Name="icon_item_static_yar_Blob_035000" Size="0x1000" Offset="0x35000" />
<Blob Name="icon_item_static_yar_Blob_036000" Size="0x1000" Offset="0x36000" />
<Blob Name="icon_item_static_yar_Blob_037000" Size="0x1000" Offset="0x37000" />
<Blob Name="icon_item_static_yar_Blob_038000" Size="0x1000" Offset="0x38000" />
<Blob Name="icon_item_static_yar_Blob_039000" Size="0x1000" Offset="0x39000" />
<Blob Name="icon_item_static_yar_Blob_03A000" Size="0x1000" Offset="0x3A000" />
<Blob Name="icon_item_static_yar_Blob_03B000" Size="0x1000" Offset="0x3B000" />
<Blob Name="icon_item_static_yar_Blob_03C000" Size="0x1000" Offset="0x3C000" />
<Blob Name="icon_item_static_yar_Blob_03D000" Size="0x1000" Offset="0x3D000" />
<Blob Name="icon_item_static_yar_Blob_03E000" Size="0x1000" Offset="0x3E000" />
<Blob Name="icon_item_static_yar_Blob_03F000" Size="0x1000" Offset="0x3F000" />
<Blob Name="icon_item_static_yar_Blob_040000" Size="0x1000" Offset="0x40000" />
<Blob Name="icon_item_static_yar_Blob_041000" Size="0x1000" Offset="0x41000" />
<Blob Name="icon_item_static_yar_Blob_042000" Size="0x1000" Offset="0x42000" />
<Blob Name="icon_item_static_yar_Blob_043000" Size="0x1000" Offset="0x43000" />
<Blob Name="icon_item_static_yar_Blob_044000" Size="0x1000" Offset="0x44000" />
<Blob Name="icon_item_static_yar_Blob_045000" Size="0x1000" Offset="0x45000" />
<Blob Name="icon_item_static_yar_Blob_046000" Size="0x1000" Offset="0x46000" />
<Blob Name="icon_item_static_yar_Blob_047000" Size="0x1000" Offset="0x47000" />
<Blob Name="icon_item_static_yar_Blob_048000" Size="0x1000" Offset="0x48000" />
<Blob Name="icon_item_static_yar_Blob_049000" Size="0x1000" Offset="0x49000" />
<Blob Name="icon_item_static_yar_Blob_04A000" Size="0x1000" Offset="0x4A000" />
<Blob Name="icon_item_static_yar_Blob_04B000" Size="0x1000" Offset="0x4B000" />
<Blob Name="icon_item_static_yar_Blob_04C000" Size="0x1000" Offset="0x4C000" />
<Blob Name="icon_item_static_yar_Blob_04D000" Size="0x1000" Offset="0x4D000" />
<Blob Name="icon_item_static_yar_Blob_04E000" Size="0x1000" Offset="0x4E000" />
<Blob Name="icon_item_static_yar_Blob_04F000" Size="0x1000" Offset="0x4F000" />
<Blob Name="icon_item_static_yar_Blob_050000" Size="0x1000" Offset="0x50000" />
<Blob Name="icon_item_static_yar_Blob_051000" Size="0x1000" Offset="0x51000" />
<Blob Name="icon_item_static_yar_Blob_052000" Size="0x1000" Offset="0x52000" />
<Blob Name="icon_item_static_yar_Blob_053000" Size="0x1000" Offset="0x53000" />
<Blob Name="icon_item_static_yar_Blob_054000" Size="0x1000" Offset="0x54000" />
<Blob Name="icon_item_static_yar_Blob_055000" Size="0x1000" Offset="0x55000" />
<Blob Name="icon_item_static_yar_Blob_056000" Size="0x1000" Offset="0x56000" />
<Blob Name="icon_item_static_yar_Blob_057000" Size="0x1000" Offset="0x57000" />
<Blob Name="icon_item_static_yar_Blob_058000" Size="0x1000" Offset="0x58000" />
<Blob Name="icon_item_static_yar_Blob_059000" Size="0x1000" Offset="0x59000" />
<Blob Name="icon_item_static_yar_Blob_05A000" Size="0x1000" Offset="0x5A000" />
<Blob Name="icon_item_static_yar_Blob_05B000" Size="0x1000" Offset="0x5B000" />
<Blob Name="icon_item_static_yar_Blob_05C000" Size="0x1000" Offset="0x5C000" />
<Blob Name="icon_item_static_yar_Blob_05D000" Size="0x1000" Offset="0x5D000" />
<Blob Name="icon_item_static_yar_Blob_05E000" Size="0x1000" Offset="0x5E000" />
<Blob Name="icon_item_static_yar_Blob_05F000" Size="0x1000" Offset="0x5F000" />
<Blob Name="icon_item_static_yar_Blob_060000" Size="0x1000" Offset="0x60000" />
<Blob Name="icon_item_static_yar_Blob_061000" Size="0x1000" Offset="0x61000" />
<Blob Name="icon_item_static_yar_Blob_062000" Size="0x0180" Offset="0x62000" />
<Blob Name="icon_item_static_yar_Blob_062180" Size="0x0900" Offset="0x62180" />
<Blob Name="icon_item_static_yar_Blob_062A80" Size="0x0900" Offset="0x62A80" />
<Blob Name="icon_item_static_yar_Blob_063380" Size="0x0900" Offset="0x63380" />
<Blob Name="icon_item_static_yar_Blob_063C80" Size="0x0480" Offset="0x63C80" />
<Blob Name="icon_item_static_yar_Blob_064100" Size="0x0240" Offset="0x64100" />
<Blob Name="icon_item_static_yar_Blob_064340" Size="0x0100" Offset="0x64340" />
<Blob Name="icon_item_static_yar_Blob_064440" Size="0x0A00" Offset="0x64440" />
<Blob Name="icon_item_static_yar_Blob_064E40" Size="0x0A00" Offset="0x64E40" />
<Blob Name="icon_item_static_yar_Blob_065840" Size="0x0A00" Offset="0x65840" />
<Blob Name="icon_item_static_yar_Blob_066240" Size="0x0A00" Offset="0x66240" />
<Blob Name="icon_item_static_yar_Blob_066C40" Size="0x0A00" Offset="0x66C40" />
<Blob Name="icon_item_static_yar_Blob_067640" Size="0x0A00" Offset="0x67640" />
<Blob Name="icon_item_static_yar_Blob_068040" Size="0x0A00" Offset="0x68040" />
<Blob Name="icon_item_static_yar_Blob_068A40" Size="0x0A00" Offset="0x68A40" />
<Blob Name="icon_item_static_yar_Blob_069440" Size="0x0A00" Offset="0x69440" />
<Blob Name="icon_item_static_yar_Blob_069E40" Size="0x0A00" Offset="0x69E40" />
<Blob Name="icon_item_static_yar_Blob_06A840" Size="0x0A00" Offset="0x6A840" />
<Blob Name="icon_item_static_yar_Blob_06B240" Size="0x0A00" Offset="0x6B240" />
<Blob Name="icon_item_static_yar_Blob_06BC40" Size="0x0A00" Offset="0x6BC40" />
<Blob Name="icon_item_static_yar_Blob_06C640" Size="0x0A00" Offset="0x6C640" />
<Blob Name="icon_item_static_yar_Blob_06D040" Size="0x0A00" Offset="0x6D040" />
<Blob Name="icon_item_static_yar_Blob_06DA40" Size="0x0A00" Offset="0x6DA40" />
<Blob Name="icon_item_static_yar_Blob_06E440" Size="0x0A00" Offset="0x6E440" />
<Blob Name="icon_item_static_yar_Blob_06EE40" Size="0x0A00" Offset="0x6EE40" />
<Blob Name="icon_item_static_yar_Blob_06F840" Size="0x0A00" Offset="0x6F840" />
<Blob Name="icon_item_static_yar_Blob_070240" Size="0x0A00" Offset="0x70240" />
<Blob Name="icon_item_static_yar_Blob_070C40" Size="0x0A00" Offset="0x70C40" />
<Blob Name="icon_item_static_yar_Blob_071640" Size="0x0A00" Offset="0x71640" />
<Blob Name="icon_item_static_yar_Blob_072040" Size="0x0A00" Offset="0x72040" />
<Blob Name="icon_item_static_yar_Blob_072A40" Size="0x0A00" Offset="0x72A40" />
<Blob Name="icon_item_static_yar_Blob_073440" Size="0x0A00" Offset="0x73440" />
<Blob Name="icon_item_static_yar_Blob_073E40" Size="0x0A00" Offset="0x73E40" />
<Blob Name="icon_item_static_yar_Blob_074840" Size="0x0A00" Offset="0x74840" />
<Blob Name="icon_item_static_yar_Blob_075240" Size="0x0A00" Offset="0x75240" />
<Blob Name="icon_item_static_yar_Blob_075C40" Size="0x0A00" Offset="0x75C40" />
<Blob Name="icon_item_static_yar_Blob_076640" Size="0x0A00" Offset="0x76640" />
<Blob Name="icon_item_static_yar_Blob_077040" Size="0x0A00" Offset="0x77040" />
<Blob Name="icon_item_static_yar_Blob_077A40" Size="0x0A00" Offset="0x77A40" />
<Blob Name="icon_item_static_yar_Blob_078440" Size="0x0A00" Offset="0x78440" />
<Blob Name="icon_item_static_yar_Blob_078E40" Size="0x0A00" Offset="0x78E40" />
<Blob Name="icon_item_static_yar_Blob_079840" Size="0x0A00" Offset="0x79840" />
<Blob Name="icon_item_static_yar_Blob_07A240" Size="0x0A00" Offset="0x7A240" />
<Blob Name="icon_item_static_yar_Blob_07AC40" Size="0x0A00" Offset="0x7AC40" />
<Blob Name="icon_item_static_yar_Blob_07B640" Size="0x0A00" Offset="0x7B640" />
<Blob Name="icon_item_static_yar_Blob_07C040" Size="0x0A00" Offset="0x7C040" />
<Blob Name="icon_item_static_yar_Blob_07CA40" Size="0x0A00" Offset="0x7CA40" />
<Blob Name="icon_item_static_yar_Blob_07D440" Size="0x0A00" Offset="0x7D440" />
<Blob Name="icon_item_static_yar_Blob_07DE40" Size="0x0A00" Offset="0x7DE40" />
<Blob Name="icon_item_static_yar_Blob_07E840" Size="0x0A00" Offset="0x7E840" />
<Blob Name="icon_item_static_yar_Blob_07F240" Size="0x0A00" Offset="0x7F240" />
<Blob Name="icon_item_static_yar_Blob_07FC40" Size="0x0A00" Offset="0x7FC40" />
<Blob Name="icon_item_static_yar_Blob_080640" Size="0x0A00" Offset="0x80640" />
<Blob Name="icon_item_static_yar_Blob_081040" Size="0x0A00" Offset="0x81040" />
<Blob Name="icon_item_static_yar_Blob_081A40" Size="0x0A00" Offset="0x81A40" />
<Blob Name="icon_item_static_yar_Blob_082440" Size="0x0A00" Offset="0x82440" />
<Blob Name="icon_item_static_yar_Blob_082E40" Size="0x0A00" Offset="0x82E40" />
<Blob Name="icon_item_static_yar_Blob_083840" Size="0x0A00" Offset="0x83840" />
<Blob Name="icon_item_static_yar_Blob_084240" Size="0x0A00" Offset="0x84240" />
<Blob Name="icon_item_static_yar_Blob_084C40" Size="0x0A00" Offset="0x84C40" />
<Blob Name="icon_item_static_yar_Blob_085640" Size="0x0A00" Offset="0x85640" />
<Blob Name="icon_item_static_yar_Blob_086040" Size="0x0A00" Offset="0x86040" />
<Blob Name="icon_item_static_yar_Blob_086A40" Size="0x0A00" Offset="0x86A40" />
<Blob Name="icon_item_static_yar_Blob_087440" Size="0x0A00" Offset="0x87440" />
<Blob Name="icon_item_static_yar_Blob_087E40" Size="0x0A00" Offset="0x87E40" />
<Blob Name="icon_item_static_yar_Blob_088840" Size="0x0A00" Offset="0x88840" />
<Blob Name="icon_item_static_yar_Blob_089240" Size="0x0A00" Offset="0x89240" />
<Blob Name="icon_item_static_yar_Blob_089C40" Size="0x0A00" Offset="0x89C40" />
<Blob Name="icon_item_static_yar_Blob_08A640" Size="0x0A00" Offset="0x8A640" />
<Blob Name="icon_item_static_yar_Blob_08B040" Size="0x0A00" Offset="0x8B040" />
<Blob Name="icon_item_static_yar_Blob_08BA40" Size="0x0A00" Offset="0x8BA40" />
<Blob Name="icon_item_static_yar_Blob_08C440" Size="0x0A00" Offset="0x8C440" />
<Blob Name="icon_item_static_yar_Blob_08CE40" Size="0x0A00" Offset="0x8CE40" />
<Blob Name="icon_item_static_yar_Blob_08D840" Size="0x0A00" Offset="0x8D840" />
<Blob Name="icon_item_static_yar_Blob_08E240" Size="0x0A00" Offset="0x8E240" />
<Blob Name="icon_item_static_yar_Blob_08EC40" Size="0x0A00" Offset="0x8EC40" />
<Blob Name="icon_item_static_yar_Blob_08F640" Size="0x0A00" Offset="0x8F640" />
<Blob Name="icon_item_static_yar_Blob_090040" Size="0x0A00" Offset="0x90040" />
<Blob Name="icon_item_static_yar_Blob_090A40" Size="0x0A00" Offset="0x90A40" />
<Blob Name="icon_item_static_yar_Blob_091440" Size="0x0A00" Offset="0x91440" />
<Blob Name="icon_item_static_yar_Blob_091E40" Size="0x0A00" Offset="0x91E40" />
<Blob Name="icon_item_static_yar_Blob_092840" Size="0x0A00" Offset="0x92840" />
<Blob Name="icon_item_static_yar_Blob_093240" Size="0x0A00" Offset="0x93240" />
<Blob Name="icon_item_static_yar_Blob_093C40" Size="0x0180" Offset="0x93C40" />
<Blob Name="icon_item_static_yar_Blob_093DC0" Size="0x0180" Offset="0x93DC0" />
<Blob Name="icon_item_static_yar_Blob_093F40" Size="0x0300" Offset="0x93F40" />
<Blob Name="icon_item_static_yar_Blob_094240" Size="0x06C0" Offset="0x94240" />
<Blob Name="icon_item_static_yar_Blob_094900" Size="0x06C0" Offset="0x94900" />
<Blob Name="icon_item_static_yar_Blob_094FC0" Size="0x0300" Offset="0x94FC0" />
<Blob Name="icon_item_static_yar_Blob_0952C0" Size="0x0300" Offset="0x952C0" />
<Blob Name="icon_item_static_yar_Blob_0955C0" Size="0x0500" Offset="0x955C0" />
<Blob Name="icon_item_static_yar_Blob_095AC0" Size="0x0400" Offset="0x95AC0" />
</File>
</Root>

View File

@ -0,0 +1,124 @@
<Root>
<File Name="item_name_static.unarchive">
<Blob Name="item_name_static_Blob_000000" Size="0x0400" Offset="0x0" />
<Blob Name="item_name_static_Blob_000400" Size="0x0400" Offset="0x400" />
<Blob Name="item_name_static_Blob_000800" Size="0x0400" Offset="0x800" />
<Blob Name="item_name_static_Blob_000C00" Size="0x0400" Offset="0xC00" />
<Blob Name="item_name_static_Blob_001000" Size="0x0400" Offset="0x1000" />
<Blob Name="item_name_static_Blob_001400" Size="0x0400" Offset="0x1400" />
<Blob Name="item_name_static_Blob_001800" Size="0x0400" Offset="0x1800" />
<Blob Name="item_name_static_Blob_001C00" Size="0x0400" Offset="0x1C00" />
<Blob Name="item_name_static_Blob_002000" Size="0x0400" Offset="0x2000" />
<Blob Name="item_name_static_Blob_002400" Size="0x0400" Offset="0x2400" />
<Blob Name="item_name_static_Blob_002800" Size="0x0400" Offset="0x2800" />
<Blob Name="item_name_static_Blob_002C00" Size="0x0400" Offset="0x2C00" />
<Blob Name="item_name_static_Blob_003000" Size="0x0400" Offset="0x3000" />
<Blob Name="item_name_static_Blob_003400" Size="0x0400" Offset="0x3400" />
<Blob Name="item_name_static_Blob_003800" Size="0x0400" Offset="0x3800" />
<Blob Name="item_name_static_Blob_003C00" Size="0x0400" Offset="0x3C00" />
<Blob Name="item_name_static_Blob_004000" Size="0x0400" Offset="0x4000" />
<Blob Name="item_name_static_Blob_004400" Size="0x0400" Offset="0x4400" />
<Blob Name="item_name_static_Blob_004800" Size="0x0400" Offset="0x4800" />
<Blob Name="item_name_static_Blob_004C00" Size="0x0400" Offset="0x4C00" />
<Blob Name="item_name_static_Blob_005000" Size="0x0400" Offset="0x5000" />
<Blob Name="item_name_static_Blob_005400" Size="0x0400" Offset="0x5400" />
<Blob Name="item_name_static_Blob_005800" Size="0x0400" Offset="0x5800" />
<Blob Name="item_name_static_Blob_005C00" Size="0x0400" Offset="0x5C00" />
<Blob Name="item_name_static_Blob_006000" Size="0x0400" Offset="0x6000" />
<Blob Name="item_name_static_Blob_006400" Size="0x0400" Offset="0x6400" />
<Blob Name="item_name_static_Blob_006800" Size="0x0400" Offset="0x6800" />
<Blob Name="item_name_static_Blob_006C00" Size="0x0400" Offset="0x6C00" />
<Blob Name="item_name_static_Blob_007000" Size="0x0400" Offset="0x7000" />
<Blob Name="item_name_static_Blob_007400" Size="0x0400" Offset="0x7400" />
<Blob Name="item_name_static_Blob_007800" Size="0x0400" Offset="0x7800" />
<Blob Name="item_name_static_Blob_007C00" Size="0x0400" Offset="0x7C00" />
<Blob Name="item_name_static_Blob_008000" Size="0x0400" Offset="0x8000" />
<Blob Name="item_name_static_Blob_008400" Size="0x0400" Offset="0x8400" />
<Blob Name="item_name_static_Blob_008800" Size="0x0400" Offset="0x8800" />
<Blob Name="item_name_static_Blob_008C00" Size="0x0400" Offset="0x8C00" />
<Blob Name="item_name_static_Blob_009000" Size="0x0400" Offset="0x9000" />
<Blob Name="item_name_static_Blob_009400" Size="0x0400" Offset="0x9400" />
<Blob Name="item_name_static_Blob_009800" Size="0x0400" Offset="0x9800" />
<Blob Name="item_name_static_Blob_009C00" Size="0x0400" Offset="0x9C00" />
<Blob Name="item_name_static_Blob_00A000" Size="0x0400" Offset="0xA000" />
<Blob Name="item_name_static_Blob_00A400" Size="0x0400" Offset="0xA400" />
<Blob Name="item_name_static_Blob_00A800" Size="0x0400" Offset="0xA800" />
<Blob Name="item_name_static_Blob_00AC00" Size="0x0400" Offset="0xAC00" />
<Blob Name="item_name_static_Blob_00B000" Size="0x0400" Offset="0xB000" />
<Blob Name="item_name_static_Blob_00B400" Size="0x0400" Offset="0xB400" />
<Blob Name="item_name_static_Blob_00B800" Size="0x0400" Offset="0xB800" />
<Blob Name="item_name_static_Blob_00BC00" Size="0x0400" Offset="0xBC00" />
<Blob Name="item_name_static_Blob_00C000" Size="0x0400" Offset="0xC000" />
<Blob Name="item_name_static_Blob_00C400" Size="0x0400" Offset="0xC400" />
<Blob Name="item_name_static_Blob_00C800" Size="0x0400" Offset="0xC800" />
<Blob Name="item_name_static_Blob_00CC00" Size="0x0400" Offset="0xCC00" />
<Blob Name="item_name_static_Blob_00D000" Size="0x0400" Offset="0xD000" />
<Blob Name="item_name_static_Blob_00D400" Size="0x0400" Offset="0xD400" />
<Blob Name="item_name_static_Blob_00D800" Size="0x0400" Offset="0xD800" />
<Blob Name="item_name_static_Blob_00DC00" Size="0x0400" Offset="0xDC00" />
<Blob Name="item_name_static_Blob_00E000" Size="0x0400" Offset="0xE000" />
<Blob Name="item_name_static_Blob_00E400" Size="0x0400" Offset="0xE400" />
<Blob Name="item_name_static_Blob_00E800" Size="0x0400" Offset="0xE800" />
<Blob Name="item_name_static_Blob_00EC00" Size="0x0400" Offset="0xEC00" />
<Blob Name="item_name_static_Blob_00F000" Size="0x0400" Offset="0xF000" />
<Blob Name="item_name_static_Blob_00F400" Size="0x0400" Offset="0xF400" />
<Blob Name="item_name_static_Blob_00F800" Size="0x0400" Offset="0xF800" />
<Blob Name="item_name_static_Blob_00FC00" Size="0x0400" Offset="0xFC00" />
<Blob Name="item_name_static_Blob_010000" Size="0x0400" Offset="0x10000" />
<Blob Name="item_name_static_Blob_010400" Size="0x0400" Offset="0x10400" />
<Blob Name="item_name_static_Blob_010800" Size="0x0400" Offset="0x10800" />
<Blob Name="item_name_static_Blob_010C00" Size="0x0400" Offset="0x10C00" />
<Blob Name="item_name_static_Blob_011000" Size="0x0400" Offset="0x11000" />
<Blob Name="item_name_static_Blob_011400" Size="0x0400" Offset="0x11400" />
<Blob Name="item_name_static_Blob_011800" Size="0x0400" Offset="0x11800" />
<Blob Name="item_name_static_Blob_011C00" Size="0x0400" Offset="0x11C00" />
<Blob Name="item_name_static_Blob_012000" Size="0x0400" Offset="0x12000" />
<Blob Name="item_name_static_Blob_012400" Size="0x0400" Offset="0x12400" />
<Blob Name="item_name_static_Blob_012800" Size="0x0400" Offset="0x12800" />
<Blob Name="item_name_static_Blob_012C00" Size="0x0400" Offset="0x12C00" />
<Blob Name="item_name_static_Blob_013000" Size="0x0400" Offset="0x13000" />
<Blob Name="item_name_static_Blob_013400" Size="0x0400" Offset="0x13400" />
<Blob Name="item_name_static_Blob_013800" Size="0x0400" Offset="0x13800" />
<Blob Name="item_name_static_Blob_013C00" Size="0x0400" Offset="0x13C00" />
<Blob Name="item_name_static_Blob_014000" Size="0x0400" Offset="0x14000" />
<Blob Name="item_name_static_Blob_014400" Size="0x0400" Offset="0x14400" />
<Blob Name="item_name_static_Blob_014800" Size="0x0400" Offset="0x14800" />
<Blob Name="item_name_static_Blob_014C00" Size="0x0400" Offset="0x14C00" />
<Blob Name="item_name_static_Blob_015000" Size="0x0400" Offset="0x15000" />
<Blob Name="item_name_static_Blob_015400" Size="0x0400" Offset="0x15400" />
<Blob Name="item_name_static_Blob_015800" Size="0x0400" Offset="0x15800" />
<Blob Name="item_name_static_Blob_015C00" Size="0x0400" Offset="0x15C00" />
<Blob Name="item_name_static_Blob_016000" Size="0x0400" Offset="0x16000" />
<Blob Name="item_name_static_Blob_016400" Size="0x0400" Offset="0x16400" />
<Blob Name="item_name_static_Blob_016800" Size="0x0400" Offset="0x16800" />
<Blob Name="item_name_static_Blob_016C00" Size="0x0400" Offset="0x16C00" />
<Blob Name="item_name_static_Blob_017000" Size="0x0400" Offset="0x17000" />
<Blob Name="item_name_static_Blob_017400" Size="0x0400" Offset="0x17400" />
<Blob Name="item_name_static_Blob_017800" Size="0x0400" Offset="0x17800" />
<Blob Name="item_name_static_Blob_017C00" Size="0x0400" Offset="0x17C00" />
<Blob Name="item_name_static_Blob_018000" Size="0x0400" Offset="0x18000" />
<Blob Name="item_name_static_Blob_018400" Size="0x0400" Offset="0x18400" />
<Blob Name="item_name_static_Blob_018800" Size="0x0400" Offset="0x18800" />
<Blob Name="item_name_static_Blob_018C00" Size="0x0400" Offset="0x18C00" />
<Blob Name="item_name_static_Blob_019000" Size="0x0400" Offset="0x19000" />
<Blob Name="item_name_static_Blob_019400" Size="0x0400" Offset="0x19400" />
<Blob Name="item_name_static_Blob_019800" Size="0x0400" Offset="0x19800" />
<Blob Name="item_name_static_Blob_019C00" Size="0x0400" Offset="0x19C00" />
<Blob Name="item_name_static_Blob_01A000" Size="0x0400" Offset="0x1A000" />
<Blob Name="item_name_static_Blob_01A400" Size="0x0400" Offset="0x1A400" />
<Blob Name="item_name_static_Blob_01A800" Size="0x0400" Offset="0x1A800" />
<Blob Name="item_name_static_Blob_01AC00" Size="0x0400" Offset="0x1AC00" />
<Blob Name="item_name_static_Blob_01B000" Size="0x0400" Offset="0x1B000" />
<Blob Name="item_name_static_Blob_01B400" Size="0x0400" Offset="0x1B400" />
<Blob Name="item_name_static_Blob_01B800" Size="0x0400" Offset="0x1B800" />
<Blob Name="item_name_static_Blob_01BC00" Size="0x0400" Offset="0x1BC00" />
<Blob Name="item_name_static_Blob_01C000" Size="0x0400" Offset="0x1C000" />
<Blob Name="item_name_static_Blob_01C400" Size="0x0400" Offset="0x1C400" />
<Blob Name="item_name_static_Blob_01C800" Size="0x0400" Offset="0x1C800" />
<Blob Name="item_name_static_Blob_01CC00" Size="0x0400" Offset="0x1CC00" />
<Blob Name="item_name_static_Blob_01D000" Size="0x0400" Offset="0x1D000" />
<Blob Name="item_name_static_Blob_01D400" Size="0x0400" Offset="0x1D400" />
<Blob Name="item_name_static_Blob_01D800" Size="0x0400" Offset="0x1D800" />
<Blob Name="item_name_static_Blob_01DC00" Size="0x0400" Offset="0x1DC00" />
</File>
</Root>

View File

@ -0,0 +1,102 @@
<Root>
<File Name="map_grand_static.unarchive">
<Blob Name="map_grand_static_Blob_000000" Size="0x0FF0" Offset="0x0" />
<Blob Name="map_grand_static_Blob_000FF0" Size="0x0FF0" Offset="0xFF0" />
<Blob Name="map_grand_static_Blob_001FE0" Size="0x0FF0" Offset="0x1FE0" />
<Blob Name="map_grand_static_Blob_002FD0" Size="0x0FF0" Offset="0x2FD0" />
<Blob Name="map_grand_static_Blob_003FC0" Size="0x0FF0" Offset="0x3FC0" />
<Blob Name="map_grand_static_Blob_004FB0" Size="0x0B40" Offset="0x4FB0" />
<Blob Name="map_grand_static_Blob_005AF0" Size="0x0FF0" Offset="0x5AF0" />
<Blob Name="map_grand_static_Blob_006AE0" Size="0x0FF0" Offset="0x6AE0" />
<Blob Name="map_grand_static_Blob_007AD0" Size="0x0FF0" Offset="0x7AD0" />
<Blob Name="map_grand_static_Blob_008AC0" Size="0x0FF0" Offset="0x8AC0" />
<Blob Name="map_grand_static_Blob_009AB0" Size="0x0420" Offset="0x9AB0" />
<Blob Name="map_grand_static_Blob_009ED0" Size="0x0FF0" Offset="0x9ED0" />
<Blob Name="map_grand_static_Blob_00AEC0" Size="0x0450" Offset="0xAEC0" />
<Blob Name="map_grand_static_Blob_00B310" Size="0x07A0" Offset="0xB310" />
<Blob Name="map_grand_static_Blob_00BAB0" Size="0x0FF0" Offset="0xBAB0" />
<Blob Name="map_grand_static_Blob_00CAA0" Size="0x0FF0" Offset="0xCAA0" />
<Blob Name="map_grand_static_Blob_00DA90" Size="0x0FF0" Offset="0xDA90" />
<Blob Name="map_grand_static_Blob_00EA80" Size="0x0780" Offset="0xEA80" />
<Blob Name="map_grand_static_Blob_00F200" Size="0x0800" Offset="0xF200" />
<Blob Name="map_grand_static_Blob_00FA00" Size="0x0850" Offset="0xFA00" />
<Blob Name="map_grand_static_Blob_010250" Size="0x0510" Offset="0x10250" />
<Blob Name="map_grand_static_Blob_010760" Size="0x0710" Offset="0x10760" />
<Blob Name="map_grand_static_Blob_010E70" Size="0x0AE0" Offset="0x10E70" />
<Blob Name="map_grand_static_Blob_011950" Size="0x0660" Offset="0x11950" />
<Blob Name="map_grand_static_Blob_011FB0" Size="0x0C60" Offset="0x11FB0" />
<Blob Name="map_grand_static_Blob_012C10" Size="0x0E10" Offset="0x12C10" />
<Blob Name="map_grand_static_Blob_013A20" Size="0x03E0" Offset="0x13A20" />
<Blob Name="map_grand_static_Blob_013E00" Size="0x05A0" Offset="0x13E00" />
<Blob Name="map_grand_static_Blob_0143A0" Size="0x0820" Offset="0x143A0" />
<Blob Name="map_grand_static_Blob_014BC0" Size="0x0440" Offset="0x14BC0" />
<Blob Name="map_grand_static_Blob_015000" Size="0x0590" Offset="0x15000" />
<Blob Name="map_grand_static_Blob_015590" Size="0x05A0" Offset="0x15590" />
<Blob Name="map_grand_static_Blob_015B30" Size="0x07A0" Offset="0x15B30" />
<Blob Name="map_grand_static_Blob_0162D0" Size="0x07A0" Offset="0x162D0" />
<Blob Name="map_grand_static_Blob_016A70" Size="0x0DF0" Offset="0x16A70" />
<Blob Name="map_grand_static_Blob_017860" Size="0x0850" Offset="0x17860" />
<Blob Name="map_grand_static_Blob_0180B0" Size="0x09C0" Offset="0x180B0" />
<Blob Name="map_grand_static_Blob_018A70" Size="0x0880" Offset="0x18A70" />
<Blob Name="map_grand_static_Blob_0192F0" Size="0x0660" Offset="0x192F0" />
<Blob Name="map_grand_static_Blob_019950" Size="0x0360" Offset="0x19950" />
<Blob Name="map_grand_static_Blob_019CB0" Size="0x0260" Offset="0x19CB0" />
<Blob Name="map_grand_static_Blob_019F10" Size="0x0960" Offset="0x19F10" />
<Blob Name="map_grand_static_Blob_01A870" Size="0x0350" Offset="0x1A870" />
<Blob Name="map_grand_static_Blob_01ABC0" Size="0x09B0" Offset="0x1ABC0" />
<Blob Name="map_grand_static_Blob_01B570" Size="0x0980" Offset="0x1B570" />
<Blob Name="map_grand_static_Blob_01BEF0" Size="0x0FF0" Offset="0x1BEF0" />
<Blob Name="map_grand_static_Blob_01CEE0" Size="0x0B20" Offset="0x1CEE0" />
<Blob Name="map_grand_static_Blob_01DA00" Size="0x0DA0" Offset="0x1DA00" />
<Blob Name="map_grand_static_Blob_01E7A0" Size="0x0820" Offset="0x1E7A0" />
<Blob Name="map_grand_static_Blob_01EFC0" Size="0x03E0" Offset="0x1EFC0" />
<Blob Name="map_grand_static_Blob_01F3A0" Size="0x0980" Offset="0x1F3A0" />
<Blob Name="map_grand_static_Blob_01FD20" Size="0x0960" Offset="0x1FD20" />
<Blob Name="map_grand_static_Blob_020680" Size="0x0760" Offset="0x20680" />
<Blob Name="map_grand_static_Blob_020DE0" Size="0x0960" Offset="0x20DE0" />
<Blob Name="map_grand_static_Blob_021740" Size="0x01D0" Offset="0x21740" />
<Blob Name="map_grand_static_Blob_021910" Size="0x0630" Offset="0x21910" />
<Blob Name="map_grand_static_Blob_021F40" Size="0x0680" Offset="0x21F40" />
<Blob Name="map_grand_static_Blob_0225C0" Size="0x07D0" Offset="0x225C0" />
<Blob Name="map_grand_static_Blob_022D90" Size="0x0870" Offset="0x22D90" />
<Blob Name="map_grand_static_Blob_023600" Size="0x0E60" Offset="0x23600" />
<Blob Name="map_grand_static_Blob_024460" Size="0x0710" Offset="0x24460" />
<Blob Name="map_grand_static_Blob_024B70" Size="0x0620" Offset="0x24B70" />
<Blob Name="map_grand_static_Blob_025190" Size="0x0620" Offset="0x25190" />
<Blob Name="map_grand_static_Blob_0257B0" Size="0x0680" Offset="0x257B0" />
<Blob Name="map_grand_static_Blob_025E30" Size="0x0620" Offset="0x25E30" />
<Blob Name="map_grand_static_Blob_026450" Size="0x0210" Offset="0x26450" />
<Blob Name="map_grand_static_Blob_026660" Size="0x04B0" Offset="0x26660" />
<Blob Name="map_grand_static_Blob_026B10" Size="0x0680" Offset="0x26B10" />
<Blob Name="map_grand_static_Blob_027190" Size="0x0350" Offset="0x27190" />
<Blob Name="map_grand_static_Blob_0274E0" Size="0x0660" Offset="0x274E0" />
<Blob Name="map_grand_static_Blob_027B40" Size="0x0350" Offset="0x27B40" />
<Blob Name="map_grand_static_Blob_027E90" Size="0x0500" Offset="0x27E90" />
<Blob Name="map_grand_static_Blob_028390" Size="0x06A0" Offset="0x28390" />
<Blob Name="map_grand_static_Blob_028A30" Size="0x05E0" Offset="0x28A30" />
<Blob Name="map_grand_static_Blob_029010" Size="0x0680" Offset="0x29010" />
<Blob Name="map_grand_static_Blob_029690" Size="0x0480" Offset="0x29690" />
<Blob Name="map_grand_static_Blob_029B10" Size="0x0AE0" Offset="0x29B10" />
<Blob Name="map_grand_static_Blob_02A5F0" Size="0x02D0" Offset="0x2A5F0" />
<Blob Name="map_grand_static_Blob_02A8C0" Size="0x0B90" Offset="0x2A8C0" />
<Blob Name="map_grand_static_Blob_02B450" Size="0x0DA0" Offset="0x2B450" />
<Blob Name="map_grand_static_Blob_02C1F0" Size="0x08C0" Offset="0x2C1F0" />
<Blob Name="map_grand_static_Blob_02CAB0" Size="0x0A30" Offset="0x2CAB0" />
<Blob Name="map_grand_static_Blob_02D4E0" Size="0x0130" Offset="0x2D4E0" />
<Blob Name="map_grand_static_Blob_02D610" Size="0x0C30" Offset="0x2D610" />
<Blob Name="map_grand_static_Blob_02E240" Size="0x08A0" Offset="0x2E240" />
<Blob Name="map_grand_static_Blob_02EAE0" Size="0x0F50" Offset="0x2EAE0" />
<Blob Name="map_grand_static_Blob_02FA30" Size="0x09B0" Offset="0x2FA30" />
<Blob Name="map_grand_static_Blob_0303E0" Size="0x07B0" Offset="0x303E0" />
<Blob Name="map_grand_static_Blob_030B90" Size="0x0960" Offset="0x30B90" />
<Blob Name="map_grand_static_Blob_0314F0" Size="0x0740" Offset="0x314F0" />
<Blob Name="map_grand_static_Blob_031C30" Size="0x0A00" Offset="0x31C30" />
<Blob Name="map_grand_static_Blob_032630" Size="0x0640" Offset="0x32630" />
<Blob Name="map_grand_static_Blob_032C70" Size="0x0A30" Offset="0x32C70" />
<Blob Name="map_grand_static_Blob_0336A0" Size="0x03D0" Offset="0x336A0" />
<Blob Name="map_grand_static_Blob_033A70" Size="0x0D00" Offset="0x33A70" />
<Blob Name="map_grand_static_Blob_034770" Size="0x0440" Offset="0x34770" />
<Blob Name="map_grand_static_Blob_034BB0" Size="0x03A0" Offset="0x34BB0" />
<Blob Name="map_grand_static_Blob_034F50" Size="0x0960" Offset="0x34F50" />
</File>
</Root>

View File

@ -0,0 +1,62 @@
<Root>
<File Name="map_i_static.unarchive">
<Blob Name="map_i_static_Blob_000000" Size="0x0FF0" Offset="0x0" />
<Blob Name="map_i_static_Blob_000FF0" Size="0x0FF0" Offset="0xFF0" />
<Blob Name="map_i_static_Blob_001FE0" Size="0x0FF0" Offset="0x1FE0" />
<Blob Name="map_i_static_Blob_002FD0" Size="0x0FF0" Offset="0x2FD0" />
<Blob Name="map_i_static_Blob_003FC0" Size="0x0FF0" Offset="0x3FC0" />
<Blob Name="map_i_static_Blob_004FB0" Size="0x01D0" Offset="0x4FB0" />
<Blob Name="map_i_static_Blob_005180" Size="0x01B0" Offset="0x5180" />
<Blob Name="map_i_static_Blob_005330" Size="0x01E0" Offset="0x5330" />
<Blob Name="map_i_static_Blob_005510" Size="0x0100" Offset="0x5510" />
<Blob Name="map_i_static_Blob_005610" Size="0x0060" Offset="0x5610" />
<Blob Name="map_i_static_Blob_005670" Size="0x01B0" Offset="0x5670" />
<Blob Name="map_i_static_Blob_005820" Size="0x0070" Offset="0x5820" />
<Blob Name="map_i_static_Blob_005890" Size="0x0130" Offset="0x5890" />
<Blob Name="map_i_static_Blob_0059C0" Size="0x01A0" Offset="0x59C0" />
<Blob Name="map_i_static_Blob_005B60" Size="0x0100" Offset="0x5B60" />
<Blob Name="map_i_static_Blob_005C60" Size="0x01B0" Offset="0x5C60" />
<Blob Name="map_i_static_Blob_005E10" Size="0x0120" Offset="0x5E10" />
<Blob Name="map_i_static_Blob_005F30" Size="0x0120" Offset="0x5F30" />
<Blob Name="map_i_static_Blob_006050" Size="0x0260" Offset="0x6050" />
<Blob Name="map_i_static_Blob_0062B0" Size="0x0150" Offset="0x62B0" />
<Blob Name="map_i_static_Blob_006400" Size="0x0220" Offset="0x6400" />
<Blob Name="map_i_static_Blob_006620" Size="0x0300" Offset="0x6620" />
<Blob Name="map_i_static_Blob_006920" Size="0x0110" Offset="0x6920" />
<Blob Name="map_i_static_Blob_006A30" Size="0x0110" Offset="0x6A30" />
<Blob Name="map_i_static_Blob_006B40" Size="0x0150" Offset="0x6B40" />
<Blob Name="map_i_static_Blob_006C90" Size="0x0120" Offset="0x6C90" />
<Blob Name="map_i_static_Blob_006DB0" Size="0x00C0" Offset="0x6DB0" />
<Blob Name="map_i_static_Blob_006E70" Size="0x00D0" Offset="0x6E70" />
<Blob Name="map_i_static_Blob_006F40" Size="0x0230" Offset="0x6F40" />
<Blob Name="map_i_static_Blob_007170" Size="0x00A0" Offset="0x7170" />
<Blob Name="map_i_static_Blob_007210" Size="0x01C0" Offset="0x7210" />
<Blob Name="map_i_static_Blob_0073D0" Size="0x0100" Offset="0x73D0" />
<Blob Name="map_i_static_Blob_0074D0" Size="0x0180" Offset="0x74D0" />
<Blob Name="map_i_static_Blob_007650" Size="0x0150" Offset="0x7650" />
<Blob Name="map_i_static_Blob_0077A0" Size="0x00B0" Offset="0x77A0" />
<Blob Name="map_i_static_Blob_007850" Size="0x0050" Offset="0x7850" />
<Blob Name="map_i_static_Blob_0078A0" Size="0x0040" Offset="0x78A0" />
<Blob Name="map_i_static_Blob_0078E0" Size="0x0170" Offset="0x78E0" />
<Blob Name="map_i_static_Blob_007A50" Size="0x0080" Offset="0x7A50" />
<Blob Name="map_i_static_Blob_007AD0" Size="0x0090" Offset="0x7AD0" />
<Blob Name="map_i_static_Blob_007B60" Size="0x00C0" Offset="0x7B60" />
<Blob Name="map_i_static_Blob_007C20" Size="0x0080" Offset="0x7C20" />
<Blob Name="map_i_static_Blob_007CA0" Size="0x00F0" Offset="0x7CA0" />
<Blob Name="map_i_static_Blob_007D90" Size="0x0110" Offset="0x7D90" />
<Blob Name="map_i_static_Blob_007EA0" Size="0x0100" Offset="0x7EA0" />
<Blob Name="map_i_static_Blob_007FA0" Size="0x0050" Offset="0x7FA0" />
<Blob Name="map_i_static_Blob_007FF0" Size="0x0090" Offset="0x7FF0" />
<Blob Name="map_i_static_Blob_008080" Size="0x0110" Offset="0x8080" />
<Blob Name="map_i_static_Blob_008190" Size="0x0060" Offset="0x8190" />
<Blob Name="map_i_static_Blob_0081F0" Size="0x0110" Offset="0x81F0" />
<Blob Name="map_i_static_Blob_008300" Size="0x0060" Offset="0x8300" />
<Blob Name="map_i_static_Blob_008360" Size="0x0090" Offset="0x8360" />
<Blob Name="map_i_static_Blob_0083F0" Size="0x0110" Offset="0x83F0" />
<Blob Name="map_i_static_Blob_008500" Size="0x00F0" Offset="0x8500" />
<Blob Name="map_i_static_Blob_0085F0" Size="0x0090" Offset="0x85F0" />
<Blob Name="map_i_static_Blob_008680" Size="0x0080" Offset="0x8680" />
<Blob Name="map_i_static_Blob_008700" Size="0x00F0" Offset="0x8700" />
<Blob Name="map_i_static_Blob_0087F0" Size="0x0050" Offset="0x87F0" />
</File>
</Root>

View File

@ -0,0 +1,20 @@
<Root>
<File Name="map_name_static.unarchive">
<Blob Name="map_name_static_Blob_000000" Size="0x0400" Offset="0x0" />
<Blob Name="map_name_static_Blob_000400" Size="0x0400" Offset="0x400" />
<Blob Name="map_name_static_Blob_000800" Size="0x0400" Offset="0x800" />
<Blob Name="map_name_static_Blob_000C00" Size="0x0400" Offset="0xC00" />
<Blob Name="map_name_static_Blob_001000" Size="0x0400" Offset="0x1000" />
<Blob Name="map_name_static_Blob_001400" Size="0x0400" Offset="0x1400" />
<Blob Name="map_name_static_Blob_001800" Size="0x0400" Offset="0x1800" />
<Blob Name="map_name_static_Blob_001C00" Size="0x0400" Offset="0x1C00" />
<Blob Name="map_name_static_Blob_002000" Size="0x0400" Offset="0x2000" />
<Blob Name="map_name_static_Blob_002400" Size="0x0400" Offset="0x2400" />
<Blob Name="map_name_static_Blob_002800" Size="0x0400" Offset="0x2800" />
<Blob Name="map_name_static_Blob_002C00" Size="0x0400" Offset="0x2C00" />
<Blob Name="map_name_static_Blob_003000" Size="0x0400" Offset="0x3000" />
<Blob Name="map_name_static_Blob_003400" Size="0x0400" Offset="0x3400" />
<Blob Name="map_name_static_Blob_003800" Size="0x0400" Offset="0x3800" />
<Blob Name="map_name_static_Blob_003C00" Size="0x0400" Offset="0x3C00" />
</File>
</Root>

View File

@ -0,0 +1,28 @@
<Root>
<File Name="schedule_dma_static_yar.unarchive" Segment="7">
<Blob Name="schedule_dma_static_yar_Blob_000000" Size="0x0800" Offset="0x0" />
<Blob Name="schedule_dma_static_yar_Blob_000800" Size="0x0800" Offset="0x800" />
<Blob Name="schedule_dma_static_yar_Blob_001000" Size="0x0800" Offset="0x1000" />
<Blob Name="schedule_dma_static_yar_Blob_001800" Size="0x0800" Offset="0x1800" />
<Blob Name="schedule_dma_static_yar_Blob_002000" Size="0x0800" Offset="0x2000" />
<Blob Name="schedule_dma_static_yar_Blob_002800" Size="0x0800" Offset="0x2800" />
<Blob Name="schedule_dma_static_yar_Blob_003000" Size="0x0800" Offset="0x3000" />
<Blob Name="schedule_dma_static_yar_Blob_003800" Size="0x0800" Offset="0x3800" />
<Blob Name="schedule_dma_static_yar_Blob_004000" Size="0x0800" Offset="0x4000" />
<Blob Name="schedule_dma_static_yar_Blob_004800" Size="0x0800" Offset="0x4800" />
<Blob Name="schedule_dma_static_yar_Blob_005000" Size="0x0800" Offset="0x5000" />
<Blob Name="schedule_dma_static_yar_Blob_005800" Size="0x0800" Offset="0x5800" />
<Blob Name="schedule_dma_static_yar_Blob_006000" Size="0x0800" Offset="0x6000" />
<Blob Name="schedule_dma_static_yar_Blob_006800" Size="0x0800" Offset="0x6800" />
<Blob Name="schedule_dma_static_yar_Blob_007000" Size="0x0800" Offset="0x7000" />
<Blob Name="schedule_dma_static_yar_Blob_007800" Size="0x0800" Offset="0x7800" />
<Blob Name="schedule_dma_static_yar_Blob_008000" Size="0x0800" Offset="0x8000" />
<Blob Name="schedule_dma_static_yar_Blob_008800" Size="0x0800" Offset="0x8800" />
<Blob Name="schedule_dma_static_yar_Blob_009000" Size="0x0800" Offset="0x9000" />
<Blob Name="schedule_dma_static_yar_Blob_009800" Size="0x0800" Offset="0x9800" />
<Blob Name="schedule_dma_static_yar_Blob_00A000" Size="0x0800" Offset="0xA000" />
<Blob Name="schedule_dma_static_yar_Blob_00A800" Size="0x0400" Offset="0xA800" />
<Blob Name="schedule_dma_static_yar_Blob_00AC00" Size="0x02A0" Offset="0xAC00" />
<Blob Name="schedule_dma_static_yar_Blob_00AEA0" Size="0x0380" Offset="0xAEA0" />
</File>
</Root>

View File

@ -52,12 +52,12 @@ DECLARE_ROM_SEGMENT(map_i_static)
DECLARE_ROM_SEGMENT(map_grand_static)
DECLARE_ROM_SEGMENT(item_name_static)
DECLARE_ROM_SEGMENT(map_name_static)
DECLARE_ROM_SEGMENT(icon_item_static_test)
DECLARE_ROM_SEGMENT(icon_item_static_old)
DECLARE_ROM_SEGMENT(icon_item_24_static_test)
DECLARE_ROM_SEGMENT(icon_item_24_static_old)
DECLARE_ROM_SEGMENT(schedule_dma_static_test)
DECLARE_ROM_SEGMENT(schedule_dma_static_old)
DECLARE_ROM_SEGMENT(icon_item_static_yar)
DECLARE_ROM_SEGMENT(icon_item_static_syms)
DECLARE_ROM_SEGMENT(icon_item_24_static_yar)
DECLARE_ROM_SEGMENT(icon_item_24_static_syms)
DECLARE_ROM_SEGMENT(schedule_dma_static_yar)
DECLARE_ROM_SEGMENT(schedule_dma_static_syms)
DECLARE_ROM_SEGMENT(schedule_static)
DECLARE_ROM_SEGMENT(story_static)
DECLARE_ROM_SEGMENT(do_action_static)

View File

@ -9,23 +9,23 @@
* - Argument 4: Message id for the event meeting this person
* - Argument 5: WeekEventFlag for the event meeting this person
*/
/* 0x00 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_BOMBERS, D_07009800, 0x21DD, BOMBERS_NOTEBOOK_EVENT_MET_BOMBERS, 0x2147, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_BOMBERS)
/* 0x01 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_ANJU, D_07000000, 0x21CA, BOMBERS_NOTEBOOK_EVENT_MET_ANJU, 0x2134, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ANJU)
/* 0x02 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_KAFEI, D_07000800, 0x21CB, BOMBERS_NOTEBOOK_EVENT_MET_KAFEI, 0x2135, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_KAFEI)
/* 0x03 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_CURIOSITY_SHOP_MAN, D_07001000, 0x21CC, BOMBERS_NOTEBOOK_EVENT_MET_CURIOSITY_SHOP_MAN, 0x2136, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_CURIOSITY_SHOP_MAN)
/* 0x04 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_BOMB_SHOP_LADY, D_07001800, 0x21CD, BOMBERS_NOTEBOOK_EVENT_MET_BOMB_SHOP_LADY, 0x2137, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_BOMB_SHOP_LADY)
/* 0x05 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_ROMANI, D_07002000, 0x21CE, BOMBERS_NOTEBOOK_EVENT_MET_ROMANI, 0x2138, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ROMANI)
/* 0x06 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_CREMIA, D_07002800, 0x21CF, BOMBERS_NOTEBOOK_EVENT_MET_CREMIA, 0x2139, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_CREMIA)
/* 0x07 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_MAYOR_DOTOUR, D_07003000, 0x21D0, BOMBERS_NOTEBOOK_EVENT_MET_MAYOR_DOTOUR, 0x213A, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_MAYOR_DOTOUR)
/* 0x08 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_MADAME_AROMA, D_07003800, 0x21D1, BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA, 0x213B, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA)
/* 0x09 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_TOTO, D_07004000, 0x21D2, BOMBERS_NOTEBOOK_EVENT_MET_TOTO, 0x213C, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_TOTO)
/* 0x0A */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_GORMAN, D_07004800, 0x21D3, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN, 0x213D, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GORMAN)
/* 0x0B */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_POSTMAN, D_07005000, 0x21D4, BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN, 0x213E, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN)
/* 0x0C */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_ROSA_SISTERS, D_07005800, 0x21D5, BOMBERS_NOTEBOOK_EVENT_MET_ROSA_SISTERS, 0x213F, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ROSA_SISTERS)
/* 0x0D */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_TOILET_HAND, D_07006000, 0x21D6, BOMBERS_NOTEBOOK_EVENT_MET_TOLIET_HAND, 0x2140, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_TOILET_HAND)
/* 0x0E */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_ANJUS_GRANDMOTHER, D_07006800, 0x21D7, BOMBERS_NOTEBOOK_EVENT_MET_ANJUS_GRANDMOTHER, 0x2141, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ANJUS_GRANDMOTHER)
/* 0x0F */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_KAMARO, D_07007000, 0x21D8, BOMBERS_NOTEBOOK_EVENT_MET_KAMARO, 0x2142, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_KAMARO)
/* 0x10 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_GROG, D_07007800, 0x21D9, BOMBERS_NOTEBOOK_EVENT_MET_GROG, 0x2143, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GROG)
/* 0x11 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_GORMAN_BROTHERS, D_07008000, 0x21DA, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS, 0x2144, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS)
/* 0x12 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_SHIRO, D_07008800, 0x21DB, BOMBERS_NOTEBOOK_EVENT_MET_SHIRO, 0x2145, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_SHIRO)
/* 0x13 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_GURU_GURU, D_07009000, 0x21DC, BOMBERS_NOTEBOOK_EVENT_MET_GURU_GURU, 0x2146, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GURU_GURU)
/* 0x00 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_BOMBERS, schedule_dma_static_yar_Blob_009800, 0x21DD, BOMBERS_NOTEBOOK_EVENT_MET_BOMBERS, 0x2147, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_BOMBERS)
/* 0x01 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_ANJU, schedule_dma_static_yar_Blob_000000, 0x21CA, BOMBERS_NOTEBOOK_EVENT_MET_ANJU, 0x2134, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ANJU)
/* 0x02 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_KAFEI, schedule_dma_static_yar_Blob_000800, 0x21CB, BOMBERS_NOTEBOOK_EVENT_MET_KAFEI, 0x2135, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_KAFEI)
/* 0x03 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_CURIOSITY_SHOP_MAN, schedule_dma_static_yar_Blob_001000, 0x21CC, BOMBERS_NOTEBOOK_EVENT_MET_CURIOSITY_SHOP_MAN, 0x2136, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_CURIOSITY_SHOP_MAN)
/* 0x04 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_BOMB_SHOP_LADY, schedule_dma_static_yar_Blob_001800, 0x21CD, BOMBERS_NOTEBOOK_EVENT_MET_BOMB_SHOP_LADY, 0x2137, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_BOMB_SHOP_LADY)
/* 0x05 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_ROMANI, schedule_dma_static_yar_Blob_002000, 0x21CE, BOMBERS_NOTEBOOK_EVENT_MET_ROMANI, 0x2138, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ROMANI)
/* 0x06 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_CREMIA, schedule_dma_static_yar_Blob_002800, 0x21CF, BOMBERS_NOTEBOOK_EVENT_MET_CREMIA, 0x2139, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_CREMIA)
/* 0x07 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_MAYOR_DOTOUR, schedule_dma_static_yar_Blob_003000, 0x21D0, BOMBERS_NOTEBOOK_EVENT_MET_MAYOR_DOTOUR, 0x213A, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_MAYOR_DOTOUR)
/* 0x08 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_MADAME_AROMA, schedule_dma_static_yar_Blob_003800, 0x21D1, BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA, 0x213B, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA)
/* 0x09 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_TOTO, schedule_dma_static_yar_Blob_004000, 0x21D2, BOMBERS_NOTEBOOK_EVENT_MET_TOTO, 0x213C, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_TOTO)
/* 0x0A */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_GORMAN, schedule_dma_static_yar_Blob_004800, 0x21D3, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN, 0x213D, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GORMAN)
/* 0x0B */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_POSTMAN, schedule_dma_static_yar_Blob_005000, 0x21D4, BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN, 0x213E, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN)
/* 0x0C */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_ROSA_SISTERS, schedule_dma_static_yar_Blob_005800, 0x21D5, BOMBERS_NOTEBOOK_EVENT_MET_ROSA_SISTERS, 0x213F, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ROSA_SISTERS)
/* 0x0D */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_TOILET_HAND, schedule_dma_static_yar_Blob_006000, 0x21D6, BOMBERS_NOTEBOOK_EVENT_MET_TOLIET_HAND, 0x2140, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_TOILET_HAND)
/* 0x0E */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_ANJUS_GRANDMOTHER, schedule_dma_static_yar_Blob_006800, 0x21D7, BOMBERS_NOTEBOOK_EVENT_MET_ANJUS_GRANDMOTHER, 0x2141, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ANJUS_GRANDMOTHER)
/* 0x0F */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_KAMARO, schedule_dma_static_yar_Blob_007000, 0x21D8, BOMBERS_NOTEBOOK_EVENT_MET_KAMARO, 0x2142, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_KAMARO)
/* 0x10 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_GROG, schedule_dma_static_yar_Blob_007800, 0x21D9, BOMBERS_NOTEBOOK_EVENT_MET_GROG, 0x2143, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GROG)
/* 0x11 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_GORMAN_BROTHERS, schedule_dma_static_yar_Blob_008000, 0x21DA, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS, 0x2144, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS)
/* 0x12 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_SHIRO, schedule_dma_static_yar_Blob_008800, 0x21DB, BOMBERS_NOTEBOOK_EVENT_MET_SHIRO, 0x2145, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_SHIRO)
/* 0x13 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_GURU_GURU, schedule_dma_static_yar_Blob_009000, 0x21DC, BOMBERS_NOTEBOOK_EVENT_MET_GURU_GURU, 0x2146, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GURU_GURU)

38
spec
View File

@ -276,15 +276,17 @@ beginseg
endseg
beginseg
name "icon_item_static_old"
name "icon_item_static_syms"
romalign 0x1000
include "build/baserom/icon_item_static_old.o"
include "build/assets/archives/icon_item_static/icon_item_static_yar.symbols.o"
number 8
endseg
beginseg
name "icon_item_24_static_old"
name "icon_item_24_static_syms"
romalign 0x1000
include "build/baserom/icon_item_24_static_old.o"
include "build/assets/archives/icon_item_24_static/icon_item_24_static_yar.symbols.o"
number 9
endseg
beginseg
@ -329,43 +331,47 @@ endseg
beginseg
name "map_i_static"
include "build/baserom/map_i_static.o"
include "build/assets/archives/map_i_static/map_i_static.yar.o"
endseg
beginseg
name "map_grand_static"
include "build/baserom/map_grand_static.o"
include "build/assets/archives/map_grand_static/map_grand_static.yar.o"
endseg
beginseg
name "item_name_static"
include "build/baserom/item_name_static.o"
include "build/assets/archives/item_name_static/item_name_static.yar.o"
endseg
beginseg
name "map_name_static"
include "build/baserom/map_name_static.o"
include "build/assets/archives/map_name_static/map_name_static.yar.o"
endseg
beginseg
name "icon_item_static_test"
include "build/baserom/icon_item_static_test.o"
name "icon_item_static_yar"
include "build/assets/archives/icon_item_static/icon_item_static_yar.yar.o"
number 8
endseg
beginseg
name "icon_item_24_static_test"
include "build/baserom/icon_item_24_static_test.o"
name "icon_item_24_static_yar"
include "build/assets/archives/icon_item_24_static/icon_item_24_static_yar.yar.o"
number 9
endseg
beginseg
name "schedule_dma_static_old"
include "build/baserom/schedule_dma_static_old.o"
name "schedule_dma_static_syms"
include "build/assets/archives/schedule_dma_static/schedule_dma_static_yar.symbols.o"
number 7
endseg
beginseg
name "schedule_dma_static_test"
name "schedule_dma_static_yar"
increment 0x1000
include "build/baserom/schedule_dma_static_test.o"
include "build/assets/archives/schedule_dma_static/schedule_dma_static_yar.yar.o"
number 7
endseg
beginseg

View File

@ -1,5 +1,7 @@
#include "global.h"
#include "interface/parameter_static/parameter_static.h"
#include "archives/icon_item_static/icon_item_static_yar.h"
#include "archives/icon_item_24_static/icon_item_24_static_yar.h"
// Bit Flag array in which gBitFlags[n] is (1 << n)
u32 gBitFlags[] = {
@ -95,139 +97,138 @@ u32 gGsFlagsShift[] = {
24,
};
// TODO: use symbols for these icon textures once textures are properly in C
TexturePtr gItemIcons[] = {
0x08000000, // ITEM_OCARINA
0x08001000, // ITEM_BOW
0x08002000, // ITEM_ARROW_FIRE
0x08003000, // ITEM_ARROW_ICE
0x08004000, // ITEM_ARROW_LIGHT
0x08005000, // ITEM_OCARINA_FAIRY
0x08006000, // ITEM_BOMB
0x08007000, // ITEM_BOMBCHU
0x08008000, // ITEM_STICK
0x08009000, // ITEM_NUT
0x0800A000, // ITEM_MAGIC_BEANS
0x0800B000, // ITEM_SLINGSHOT
0x0800C000, // ITEM_POWDER_KEG
0x0800D000, // ITEM_PICTO_BOX
0x0800E000, // ITEM_LENS
0x0800F000, // ITEM_HOOKSHOT
0x08010000, // ITEM_SWORD_GREAT_FAIRY
0x08011000, // ITEM_LONGSHOT
0x08012000, // ITEM_BOTTLE
0x08013000, // ITEM_POTION_RED
0x08014000, // ITEM_POTION_GREEN
0x08015000, // ITEM_POTION_BLUE
0x08016000, // ITEM_FAIRY
0x08017000, // ITEM_DEKU_PRINCESS
0x08018000, // ITEM_MILK_BOTTLE
0x08019000, // ITEM_MILK_HALF
0x0801A000, // ITEM_FISH
0x0801B000, // ITEM_BUG
0x0801C000, // ITEM_BLUE_FIRE
0x0801D000, // ITEM_POE
0x0801E000, // ITEM_BIG_POE
0x0801F000, // ITEM_SPRING_WATER
0x08020000, // ITEM_HOT_SPRING_WATER
0x08021000, // ITEM_ZORA_EGG
0x08022000, // ITEM_GOLD_DUST
0x08023000, // ITEM_MUSHROOM
0x08024000, // ITEM_SEAHORSE
0x08025000, // ITEM_CHATEAU
0x08026000, // ITEM_HYLIAN_LOACH
0x08027000, // ITEM_OBABA_DRINK
0x08028000, // ITEM_MOON_TEAR
0x08029000, // ITEM_DEED_LAND
0x0802A000, // ITEM_DEED_SWAMP
0x0802B000, // ITEM_DEED_MOUNTAIN
0x0802C000, // ITEM_DEED_OCEAN
0x0802D000, // ITEM_ROOM_KEY
0x0802E000, // ITEM_LETTER_MAMA
0x0802F000, // ITEM_LETTER_TO_KAFEI
0x08030000, // ITEM_PENDANT_OF_MEMORIES
0x08031000, // ITEM_TINGLE_MAP
0x08032000, // ITEM_MASK_DEKU
0x08033000, // ITEM_MASK_GORON
0x08034000, // ITEM_MASK_ZORA
0x08035000, // ITEM_MASK_FIERCE_DEITY
0x08036000, // ITEM_MASK_TRUTH
0x08037000, // ITEM_MASK_KAFEIS_MASK
0x08038000, // ITEM_MASK_ALL_NIGHT
0x08039000, // ITEM_MASK_BUNNY
0x0803A000, // ITEM_MASK_KEATON
0x0803B000, // ITEM_MASK_GARO
0x0803C000, // ITEM_MASK_ROMANI
0x0803D000, // ITEM_MASK_CIRCUS_LEADER
0x0803E000, // ITEM_MASK_POSTMAN
0x0803F000, // ITEM_MASK_COUPLE
0x08040000, // ITEM_MASK_GREAT_FAIRY
0x08041000, // ITEM_MASK_GIBDO
0x08042000, // ITEM_MASK_DON_GERO
0x08043000, // ITEM_MASK_KAMARO
0x08044000, // ITEM_MASK_CAPTAIN
0x08045000, // ITEM_MASK_STONE
0x08046000, // ITEM_MASK_BREMEN
0x08047000, // ITEM_MASK_BLAST
0x08048000, // ITEM_MASK_SCENTS
0x08049000, // ITEM_MASK_GIANT
0x0804A000, // ITEM_BOW_ARROW_FIRE
0x0804B000, // ITEM_BOW_ARROW_ICE
0x0804C000, // ITEM_BOW_ARROW_LIGHT
0x0804D000, // ITEM_SWORD_KOKIRI
0x0804E000, // ITEM_SWORD_RAZOR
0x0804F000, // ITEM_SWORD_GILDED
0x08050000, // ITEM_SWORD_DEITY
0x08051000, // ITEM_SHIELD_HERO
0x08052000, // ITEM_SHIELD_MIRROR
0x08053000, // ITEM_QUIVER_30
0x08054000, // ITEM_QUIVER_40
0x08055000, // ITEM_QUIVER_50
0x08056000, // ITEM_BOMB_BAG_20
0x08057000, // ITEM_BOMB_BAG_30
0x08058000, // ITEM_BOMB_BAG_40
0x08059000, // ITEM_WALLET_DEFAULT
0x0805A000, // ITEM_WALLET_ADULT
0x0805B000, // ITEM_WALLET_GIANT
0x0805C000, // ITEM_FISHING_ROD
0x0805D000, // ITEM_REMAINS_ODOLWA
0x0805E000, // ITEM_REMAINS_GOHT
0x0805F000, // ITEM_REMAINS_GYORG
0x08060000, // ITEM_REMAINS_TWINMOLD
0x08062000, // ITEM_SONG_SONATA
0x08062000, // ITEM_SONG_LULLABY
0x08062000, // ITEM_SONG_NOVA
0x08062000, // ITEM_SONG_ELEGY
0x08062000, // ITEM_SONG_OATH
0x08062000, // ITEM_SONG_SARIA
0x08062000, // ITEM_SONG_TIME
0x08062000, // ITEM_SONG_HEALING
0x08062000, // ITEM_SONG_EPONA
0x08062000, // ITEM_SONG_SOARING
0x08062000, // ITEM_SONG_STORMS
0x08062000, // ITEM_SONG_SUN
0x08061000, // ITEM_BOMBERS_NOTEBOOK
0x09000000, // ITEM_SKULL_TOKEN
0x09000900, // ITEM_HEART_CONTAINER
0x09001200, // ITEM_HEART_PIECE
0x08062000, //
0x08062000, //
0x08062000, // ITEM_SONG_LULLABY_INTRO
0x09003600, // ITEM_KEY_BOSS
0x09004800, // ITEM_COMPASS
0x09003F00, // ITEM_DUNGEON_MAP
0x09005100, // ITEM_STRAY_FAIRIES
0x09005A00, // ITEM_KEY_SMALL
0x09006300, // ITEM_MAGIC_SMALL
0x09006C00, // ITEM_MAGIC_LARGE
0x08062180, // ITEM_HEART_PIECE_2
0x08062A80, // ITEM_INVALID_1
0x08063380, // ITEM_INVALID_2
gOcarinaCUpTex, // ITEM_INVALID_3
gOcarinaCDownTex, // ITEM_INVALID_4
gOcarinaCLeftTex, // ITEM_INVALID_5
gOcarinaCRightTex, // ITEM_INVALID_6
gOcarinaATex, // ITEM_INVALID_7
icon_item_static_yar_Blob_000000, // ITEM_OCARINA
icon_item_static_yar_Blob_001000, // ITEM_BOW
icon_item_static_yar_Blob_002000, // ITEM_ARROW_FIRE
icon_item_static_yar_Blob_003000, // ITEM_ARROW_ICE
icon_item_static_yar_Blob_004000, // ITEM_ARROW_LIGHT
icon_item_static_yar_Blob_005000, // ITEM_OCARINA_FAIRY
icon_item_static_yar_Blob_006000, // ITEM_BOMB
icon_item_static_yar_Blob_007000, // ITEM_BOMBCHU
icon_item_static_yar_Blob_008000, // ITEM_STICK
icon_item_static_yar_Blob_009000, // ITEM_NUT
icon_item_static_yar_Blob_00A000, // ITEM_MAGIC_BEANS
icon_item_static_yar_Blob_00B000, // ITEM_SLINGSHOT
icon_item_static_yar_Blob_00C000, // ITEM_POWDER_KEG
icon_item_static_yar_Blob_00D000, // ITEM_PICTO_BOX
icon_item_static_yar_Blob_00E000, // ITEM_LENS
icon_item_static_yar_Blob_00F000, // ITEM_HOOKSHOT
icon_item_static_yar_Blob_010000, // ITEM_SWORD_GREAT_FAIRY
icon_item_static_yar_Blob_011000, // ITEM_LONGSHOT
icon_item_static_yar_Blob_012000, // ITEM_BOTTLE
icon_item_static_yar_Blob_013000, // ITEM_POTION_RED
icon_item_static_yar_Blob_014000, // ITEM_POTION_GREEN
icon_item_static_yar_Blob_015000, // ITEM_POTION_BLUE
icon_item_static_yar_Blob_016000, // ITEM_FAIRY
icon_item_static_yar_Blob_017000, // ITEM_DEKU_PRINCESS
icon_item_static_yar_Blob_018000, // ITEM_MILK_BOTTLE
icon_item_static_yar_Blob_019000, // ITEM_MILK_HALF
icon_item_static_yar_Blob_01A000, // ITEM_FISH
icon_item_static_yar_Blob_01B000, // ITEM_BUG
icon_item_static_yar_Blob_01C000, // ITEM_BLUE_FIRE
icon_item_static_yar_Blob_01D000, // ITEM_POE
icon_item_static_yar_Blob_01E000, // ITEM_BIG_POE
icon_item_static_yar_Blob_01F000, // ITEM_SPRING_WATER
icon_item_static_yar_Blob_020000, // ITEM_HOT_SPRING_WATER
icon_item_static_yar_Blob_021000, // ITEM_ZORA_EGG
icon_item_static_yar_Blob_022000, // ITEM_GOLD_DUST
icon_item_static_yar_Blob_023000, // ITEM_MUSHROOM
icon_item_static_yar_Blob_024000, // ITEM_SEAHORSE
icon_item_static_yar_Blob_025000, // ITEM_CHATEAU
icon_item_static_yar_Blob_026000, // ITEM_HYLIAN_LOACH
icon_item_static_yar_Blob_027000, // ITEM_OBABA_DRINK
icon_item_static_yar_Blob_028000, // ITEM_MOON_TEAR
icon_item_static_yar_Blob_029000, // ITEM_DEED_LAND
icon_item_static_yar_Blob_02A000, // ITEM_DEED_SWAMP
icon_item_static_yar_Blob_02B000, // ITEM_DEED_MOUNTAIN
icon_item_static_yar_Blob_02C000, // ITEM_DEED_OCEAN
icon_item_static_yar_Blob_02D000, // ITEM_ROOM_KEY
icon_item_static_yar_Blob_02E000, // ITEM_LETTER_MAMA
icon_item_static_yar_Blob_02F000, // ITEM_LETTER_TO_KAFEI
icon_item_static_yar_Blob_030000, // ITEM_PENDANT_OF_MEMORIES
icon_item_static_yar_Blob_031000, // ITEM_TINGLE_MAP
icon_item_static_yar_Blob_032000, // ITEM_MASK_DEKU
icon_item_static_yar_Blob_033000, // ITEM_MASK_GORON
icon_item_static_yar_Blob_034000, // ITEM_MASK_ZORA
icon_item_static_yar_Blob_035000, // ITEM_MASK_FIERCE_DEITY
icon_item_static_yar_Blob_036000, // ITEM_MASK_TRUTH
icon_item_static_yar_Blob_037000, // ITEM_MASK_KAFEIS_MASK
icon_item_static_yar_Blob_038000, // ITEM_MASK_ALL_NIGHT
icon_item_static_yar_Blob_039000, // ITEM_MASK_BUNNY
icon_item_static_yar_Blob_03A000, // ITEM_MASK_KEATON
icon_item_static_yar_Blob_03B000, // ITEM_MASK_GARO
icon_item_static_yar_Blob_03C000, // ITEM_MASK_ROMANI
icon_item_static_yar_Blob_03D000, // ITEM_MASK_CIRCUS_LEADER
icon_item_static_yar_Blob_03E000, // ITEM_MASK_POSTMAN
icon_item_static_yar_Blob_03F000, // ITEM_MASK_COUPLE
icon_item_static_yar_Blob_040000, // ITEM_MASK_GREAT_FAIRY
icon_item_static_yar_Blob_041000, // ITEM_MASK_GIBDO
icon_item_static_yar_Blob_042000, // ITEM_MASK_DON_GERO
icon_item_static_yar_Blob_043000, // ITEM_MASK_KAMARO
icon_item_static_yar_Blob_044000, // ITEM_MASK_CAPTAIN
icon_item_static_yar_Blob_045000, // ITEM_MASK_STONE
icon_item_static_yar_Blob_046000, // ITEM_MASK_BREMEN
icon_item_static_yar_Blob_047000, // ITEM_MASK_BLAST
icon_item_static_yar_Blob_048000, // ITEM_MASK_SCENTS
icon_item_static_yar_Blob_049000, // ITEM_MASK_GIANT
icon_item_static_yar_Blob_04A000, // ITEM_BOW_ARROW_FIRE
icon_item_static_yar_Blob_04B000, // ITEM_BOW_ARROW_ICE
icon_item_static_yar_Blob_04C000, // ITEM_BOW_ARROW_LIGHT
icon_item_static_yar_Blob_04D000, // ITEM_SWORD_KOKIRI
icon_item_static_yar_Blob_04E000, // ITEM_SWORD_RAZOR
icon_item_static_yar_Blob_04F000, // ITEM_SWORD_GILDED
icon_item_static_yar_Blob_050000, // ITEM_SWORD_DEITY
icon_item_static_yar_Blob_051000, // ITEM_SHIELD_HERO
icon_item_static_yar_Blob_052000, // ITEM_SHIELD_MIRROR
icon_item_static_yar_Blob_053000, // ITEM_QUIVER_30
icon_item_static_yar_Blob_054000, // ITEM_QUIVER_40
icon_item_static_yar_Blob_055000, // ITEM_QUIVER_50
icon_item_static_yar_Blob_056000, // ITEM_BOMB_BAG_20
icon_item_static_yar_Blob_057000, // ITEM_BOMB_BAG_30
icon_item_static_yar_Blob_058000, // ITEM_BOMB_BAG_40
icon_item_static_yar_Blob_059000, // ITEM_WALLET_DEFAULT
icon_item_static_yar_Blob_05A000, // ITEM_WALLET_ADULT
icon_item_static_yar_Blob_05B000, // ITEM_WALLET_GIANT
icon_item_static_yar_Blob_05C000, // ITEM_FISHING_ROD
icon_item_static_yar_Blob_05D000, // ITEM_REMAINS_ODOLWA
icon_item_static_yar_Blob_05E000, // ITEM_REMAINS_GOHT
icon_item_static_yar_Blob_05F000, // ITEM_REMAINS_GYORG
icon_item_static_yar_Blob_060000, // ITEM_REMAINS_TWINMOLD
icon_item_static_yar_Blob_062000, // ITEM_SONG_SONATA
icon_item_static_yar_Blob_062000, // ITEM_SONG_LULLABY
icon_item_static_yar_Blob_062000, // ITEM_SONG_NOVA
icon_item_static_yar_Blob_062000, // ITEM_SONG_ELEGY
icon_item_static_yar_Blob_062000, // ITEM_SONG_OATH
icon_item_static_yar_Blob_062000, // ITEM_SONG_SARIA
icon_item_static_yar_Blob_062000, // ITEM_SONG_TIME
icon_item_static_yar_Blob_062000, // ITEM_SONG_HEALING
icon_item_static_yar_Blob_062000, // ITEM_SONG_EPONA
icon_item_static_yar_Blob_062000, // ITEM_SONG_SOARING
icon_item_static_yar_Blob_062000, // ITEM_SONG_STORMS
icon_item_static_yar_Blob_062000, // ITEM_SONG_SUN
icon_item_static_yar_Blob_061000, // ITEM_BOMBERS_NOTEBOOK
icon_item_24_static_yar_Blob_000000, // ITEM_SKULL_TOKEN
icon_item_24_static_yar_Blob_000900, // ITEM_HEART_CONTAINER
icon_item_24_static_yar_Blob_001200, // ITEM_HEART_PIECE
icon_item_static_yar_Blob_062000, //
icon_item_static_yar_Blob_062000, //
icon_item_static_yar_Blob_062000, // ITEM_SONG_LULLABY_INTRO
icon_item_24_static_yar_Blob_003600, // ITEM_KEY_BOSS
icon_item_24_static_yar_Blob_004800, // ITEM_COMPASS
icon_item_24_static_yar_Blob_003F00, // ITEM_DUNGEON_MAP
icon_item_24_static_yar_Blob_005100, // ITEM_STRAY_FAIRIES
icon_item_24_static_yar_Blob_005A00, // ITEM_KEY_SMALL
icon_item_24_static_yar_Blob_006300, // ITEM_MAGIC_SMALL
icon_item_24_static_yar_Blob_006C00, // ITEM_MAGIC_LARGE
icon_item_static_yar_Blob_062180, // ITEM_HEART_PIECE_2
icon_item_static_yar_Blob_062A80, // ITEM_INVALID_1
icon_item_static_yar_Blob_063380, // ITEM_INVALID_2
gOcarinaCUpTex, // ITEM_INVALID_3
gOcarinaCDownTex, // ITEM_INVALID_4
gOcarinaCLeftTex, // ITEM_INVALID_5
gOcarinaCRightTex, // ITEM_INVALID_6
gOcarinaATex, // ITEM_INVALID_7
};
// Used to map item IDs to inventory slots

View File

@ -1,31 +1,7 @@
#include "global.h"
#include "z64bombers_notebook.h"
#include "interface/schedule_static/schedule_static.h"
// TODO: Needs YAZ0
// Segment 0x07 schedule_dma_static_test
extern TexturePtr D_07000000;
extern TexturePtr D_07000800;
extern TexturePtr D_07001000;
extern TexturePtr D_07001800;
extern TexturePtr D_07002000;
extern TexturePtr D_07002800;
extern TexturePtr D_07003000;
extern TexturePtr D_07003800;
extern TexturePtr D_07004000;
extern TexturePtr D_07004800;
extern TexturePtr D_07005000;
extern TexturePtr D_07005800;
extern TexturePtr D_07006000;
extern TexturePtr D_07006800;
extern TexturePtr D_07007000;
extern TexturePtr D_07007800;
extern TexturePtr D_07008000;
extern TexturePtr D_07008800;
extern TexturePtr D_07009000;
extern TexturePtr D_07009800;
extern TexturePtr D_0700AC00;
extern TexturePtr D_0700AEA0;
#include "archives/schedule_dma_static/schedule_dma_static_yar.h"
#define BOMBERS_NOTEBOOK_ENTRY_SIZE 3
#define BOMBERS_NOTEBOOK_ENTRY_MAX 10
@ -395,8 +371,8 @@ void BombersNotebook_DrawColumns(Gfx** gfxP) {
TexturePtr sBombersNotebookEventIconTextures[] = {
gBombersNotebookEntryIconExclamationPointTex,
&D_0700AC00,
&D_0700AEA0,
schedule_dma_static_yar_Blob_00AC00,
schedule_dma_static_yar_Blob_00AEA0,
};
s16 sBombersNotebookEntryIconColors[][3] = {
{ 255, 255, 0 },
@ -1163,8 +1139,8 @@ void BombersNotebook_Update(PlayState* play, BombersNotebook* this, Input* input
s32 stickAdjY = input->rel.stick_y;
s32 cursorEntryScan;
this->scheduleDmaSegmentStart = SEGMENT_ROM_START(schedule_dma_static_test);
this->scheduleDmaSegmentSize = SEGMENT_ROM_SIZE(schedule_dma_static_old);
this->scheduleDmaSegmentStart = SEGMENT_ROM_START(schedule_dma_static_yar);
this->scheduleDmaSegmentSize = SEGMENT_ROM_SIZE(schedule_dma_static_syms);
this->scheduleSegmentStart = SEGMENT_ROM_START(schedule_static);
this->scheduleSegmentSize = SEGMENT_ROM_SIZE(schedule_static);

View File

@ -2857,8 +2857,8 @@ void KaleidoScope_Update(PlayState* play) {
pauseCtx->roll = -314.0f;
pauseCtx->iconItemSegment = (void*)ALIGN16((uintptr_t)play->objectCtx.spaceStart);
size0 = SEGMENT_ROM_SIZE(icon_item_static_old);
CmpDma_LoadAllFiles((uintptr_t)SEGMENT_ROM_START(icon_item_static_test), pauseCtx->iconItemSegment, size0);
size0 = SEGMENT_ROM_SIZE(icon_item_static_syms);
CmpDma_LoadAllFiles((uintptr_t)SEGMENT_ROM_START(icon_item_static_yar), pauseCtx->iconItemSegment, size0);
gSegments[0x08] = VIRTUAL_TO_PHYSICAL(pauseCtx->iconItemSegment);
@ -2869,8 +2869,8 @@ void KaleidoScope_Update(PlayState* play) {
}
pauseCtx->iconItem24Segment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItemSegment + size0);
size1 = SEGMENT_ROM_SIZE(icon_item_24_static_old);
CmpDma_LoadAllFiles((uintptr_t)SEGMENT_ROM_START(icon_item_24_static_test), pauseCtx->iconItem24Segment,
size1 = SEGMENT_ROM_SIZE(icon_item_24_static_syms);
CmpDma_LoadAllFiles((uintptr_t)SEGMENT_ROM_START(icon_item_24_static_yar), pauseCtx->iconItem24Segment,
size1);
pauseCtx->iconItemAltSegment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItem24Segment + size1);
@ -3184,12 +3184,12 @@ void KaleidoScope_Update(PlayState* play) {
pauseCtx->iconItemSegment =
(void*)(((uintptr_t)play->objectCtx.spaceStart + 0x30) & ~0x3F); // Messed up ALIGN64
size0 = SEGMENT_ROM_SIZE(icon_item_static_old);
CmpDma_LoadAllFiles(SEGMENT_ROM_START(icon_item_static_test), pauseCtx->iconItemSegment, size0);
size0 = SEGMENT_ROM_SIZE(icon_item_static_syms);
CmpDma_LoadAllFiles(SEGMENT_ROM_START(icon_item_static_yar), pauseCtx->iconItemSegment, size0);
pauseCtx->iconItem24Segment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItemSegment + size0);
size1 = SEGMENT_ROM_SIZE(icon_item_24_static_old);
CmpDma_LoadAllFiles(SEGMENT_ROM_START(icon_item_24_static_test), pauseCtx->iconItem24Segment, size1);
size1 = SEGMENT_ROM_SIZE(icon_item_24_static_syms);
CmpDma_LoadAllFiles(SEGMENT_ROM_START(icon_item_24_static_yar), pauseCtx->iconItem24Segment, size1);
pauseCtx->iconItemAltSegment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItem24Segment + size1);
size2 = SEGMENT_ROM_SIZE(icon_item_gameover_static);
@ -3432,8 +3432,8 @@ void KaleidoScope_Update(PlayState* play) {
sPauseCursorRightX = 155;
pauseCtx->iconItemSegment = (void*)ALIGN16((uintptr_t)play->objectCtx.spaceStart);
size0 = SEGMENT_ROM_SIZE(icon_item_static_old);
CmpDma_LoadAllFiles(SEGMENT_ROM_START(icon_item_static_test), pauseCtx->iconItemSegment, size0);
size0 = SEGMENT_ROM_SIZE(icon_item_static_syms);
CmpDma_LoadAllFiles(SEGMENT_ROM_START(icon_item_static_yar), pauseCtx->iconItemSegment, size0);
pauseCtx->iconItemAltSegment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItemSegment + size0);
sInDungeonScene = false;

View File

@ -5,3 +5,4 @@ makeromfs
mkldscript
reloc_prereq
yaz0
makeyar

View File

@ -1,6 +1,5 @@
CC := gcc
CFLAGS := -Wall -Wextra -pedantic -std=c99 -g -O2
PROGRAMS := elf2rom makeromfs mkldscript reloc_prereq yaz0
CFLAGS := -Wall -Wextra -Wpedantic -std=c99 -g -Os
PROGRAMS := elf2rom makeromfs mkldscript reloc_prereq yaz0 makeyar
ifeq ($(shell command -v clang >/dev/null 2>&1; echo $$?),0)
CC := clang
@ -8,15 +7,6 @@ else
CC := gcc
endif
LLD ?= 0
ifeq ($(shell command -v ld.lld >/dev/null 2>&1; echo $$?),0)
LLD := 1
endif
ifneq ($(LLD),0)
CFLAGS += -fuse-ld=lld
endif
all: $(PROGRAMS)
clean:
@ -27,6 +17,7 @@ makeromfs_SOURCES := makeromfs.c n64chksum.c util.c
mkldscript_SOURCES := mkldscript.c spec.c util.c
reloc_prereq_SOURCES := reloc_prereq.c spec.c util.c
yaz0_SOURCES := yaz0tool.c yaz0.c util.c
makeyar_SOURCES := makeyar.c elf32.c yaz0.c util.c
define COMPILE =
$(1): $($1_SOURCES)

View File

@ -138,6 +138,7 @@ bool elf32_get_section(struct Elf32* e, struct Elf32_Section* sec, int secnum) {
sec->flags = e->read32(sechdr + 0x08);
sec->addr = e->read32(sechdr + 0x0C);
sec->offset = e->read32(sechdr + 0x10);
sec->size = e->read32(sechdr + 0x14);
sec->addralign = e->read32(sechdr + 0x20);
sec->entsize = e->read32(sechdr + 0x24);
return true;
@ -162,5 +163,8 @@ bool elf32_get_symbol(struct Elf32* e, struct Elf32_Symbol* sym, int symnum) {
sym->name = strings + e->read32(symtab + symnum * 0x10);
sym->value = e->read32(symtab + symnum * 0x10 + 4);
sym->size = e->read32(symtab + symnum * 0x10 + 8);
sym->st_type = symtab[symnum * 0x10 + 0xC] & 0xF;
sym->shndx = e->read16(symtab + symnum * 0x10 + 0xE);
return true;
}

View File

@ -3,6 +3,7 @@
#include <stddef.h>
#include <stdint.h>
#include <stdbool.h>
enum {
ELF_MACHINE_NONE = 0,
@ -52,14 +53,31 @@ struct Elf32_Section {
uint32_t type;
uint32_t flags;
uint32_t addr;
uint32_t size;
uint32_t offset;
uint32_t addralign;
uint32_t entsize;
};
#define SHN_UNDEF 0
#define SHN_ABS 0xFFF1
#define SHN_COMMON 0xFFF2
#define STT_NOTYPE 0
#define STT_OBJECT 1
#define STT_FUNC 2
#define STT_SECTION 3
#define STT_FILE 4
#define STT_COMMON 5
#define STT_TLS 6
#define STT_NUM 7
struct Elf32_Symbol {
const char* name;
uint32_t value;
uint32_t size;
uint8_t st_type;
uint16_t shndx;
};
bool elf32_init(struct Elf32* e, const void* data, size_t size);

267
tools/buildtools/makeyar.c Normal file
View File

@ -0,0 +1,267 @@
/* SPDX-FileCopyrightText: © 2023 ZeldaRET */
/* SPDX-License-Identifier: MIT */
/**
* Program to generate compressed yar (Yaz0 ARchive) files.
*
* The program expects an .o elf file and outputs a raw yar binary file and a
* "symbols" elf.
*
* A yar file consists of multiple Yaz0 files compressed individually. The
* archive begins with a header of non-fixed size, which describes the
* location of each individual Yaz0 block within the archive itself. This
* header is followed by each Yaz0 file.
*
* The first word (a 4 byte group) of the header indicates the size in bytes of
* the header itself (also describes the offset of the first Yaz0 block). The
* rest of the header consists of words describing the offsets of each Yaz0
* block relative to the end of the header, because the first Yaz0
* block is omitted from the offsets in the header.
*
* Each Yaz0 block is 0xFF-padded to a multiple of 0x10 in size.
*
* The entire archive is 0-padded to a multiple of 0x10 in size.
*
* The program works by compressing each .data symbol in the input elf file as
* its own Yaz0 compressed file, appending them in order for the generated
* archive. Other elf sections are ignored for the resulting yar file.
*
* The program also outputs an elf file that's identical to the elf input,
* but with its .data section zero'ed out completely. This "symbols" elf can be
* used for referencing each symbol as the whole file were completely
* uncompressed.
*/
#include <stdbool.h>
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include "elf32.h"
#include "yaz0.h"
#include "util.h"
typedef struct Bytearray {
uint8_t *bytes;
size_t size;
} Bytearray;
typedef struct SymbolList {
struct Elf32_Symbol *symbols;
size_t size; // allocated size
size_t len; // elements in the list
} SymbolList;
typedef struct DataSection {
Bytearray data;
uint32_t dataOffset;
SymbolList symbols;
} DataSection;
void Bytearray_Init(Bytearray *bytearr, const uint8_t *bytes, size_t size) {
bytearr->bytes = malloc(size);
if (bytearr->bytes == NULL) {
util_fatal_error("memory error");
}
memcpy(bytearr->bytes, bytes, size);
bytearr->size = size;
}
void Bytearray_InitValue(Bytearray *bytearr, uint8_t val, size_t count) {
bytearr->bytes = malloc(count * sizeof(uint8_t));
if (bytearr->bytes == NULL) {
util_fatal_error("memory error");
}
memset(bytearr->bytes, val, count);
bytearr->size = count;
}
void Bytearray_ExtendValue(Bytearray *bytearr, uint8_t val, size_t count) {
size_t newSize = bytearr->size + count;
bytearr->bytes = realloc(bytearr->bytes, newSize);
if (bytearr->bytes == NULL) {
util_fatal_error("memory error");
}
memset(&bytearr->bytes[bytearr->size], val, count);
bytearr->size = newSize;
}
void Bytearray_Extend(Bytearray *bytearr, const uint8_t *bytes, size_t size) {
size_t newSize = bytearr->size + size;
bytearr->bytes = realloc(bytearr->bytes, newSize);
if (bytearr->bytes == NULL) {
util_fatal_error("memory error");
}
memcpy(&bytearr->bytes[bytearr->size], bytes, size);
bytearr->size = newSize;
}
void Bytearray_Destroy(Bytearray *bytearr) {
free(bytearr->bytes);
}
void SymbolList_Init(SymbolList *list, size_t initialAmount) {
list->symbols = malloc(initialAmount * sizeof(struct Elf32_Symbol));
if (list->symbols == NULL) {
util_fatal_error("memory error");
}
list->size = initialAmount;
list->len = 0;
}
void SymbolList_Destroy(SymbolList *list) {
free(list->symbols);
}
void DataSection_FromElf(DataSection *dst, const Bytearray *elfBytes){
struct Elf32 elf;
size_t i;
int symIndex;
size_t dataShndx = 0;
if (!elf32_init(&elf, elfBytes->bytes, elfBytes->size) || (elf.machine != ELF_MACHINE_MIPS)) {
util_fatal_error("not a valid 32-bit MIPS ELF file");
}
for (i = 0; i < elf.shnum; i++) {
struct Elf32_Section sec;
if (!elf32_get_section(&elf, &sec, i)) {
util_fatal_error("invalid or corrupt ELF file");
}
if (strcmp(sec.name, ".data") == 0) {
dst->dataOffset = sec.offset;
Bytearray_Init(&dst->data, &elfBytes->bytes[sec.offset], sec.size);
dataShndx = i;
break;
}
}
SymbolList_Init(&dst->symbols, elf.numsymbols);
for (symIndex = 0; symIndex < elf.numsymbols; symIndex++) {
struct Elf32_Symbol sym;
if (!elf32_get_symbol(&elf, &sym, symIndex)) {
util_fatal_error("invalid or corrupt ELF file");
}
if (sym.shndx != dataShndx) {
continue;
}
if (sym.st_type != STT_OBJECT) {
continue;
}
dst->symbols.symbols[dst->symbols.len++] = sym;
}
}
void DataSection_Destroy(DataSection *dataSect) {
Bytearray_Destroy(&dataSect->data);
SymbolList_Destroy(&dataSect->symbols);
}
#define ALIGN16(val) (((val) + 0xF) & ~0xF)
void createArchive(Bytearray *archive, const DataSection *dataSect) {
uint32_t firstEntryOffset = (dataSect->symbols.len + 1) * sizeof(uint32_t);
size_t i;
size_t offset;
// Fill with zeroes until the compressed data start
Bytearray_InitValue(archive, 0, firstEntryOffset);
util_write_uint32_be(&archive->bytes[0], firstEntryOffset);
offset = firstEntryOffset;
for (i = 0; i < dataSect->symbols.len; i++) {
const struct Elf32_Symbol *sym = &dataSect->symbols.symbols[i];
size_t uncompressedSize = sym->size;
uint8_t *output = malloc(uncompressedSize * sizeof(uint8_t)); // assume compressed shouldn't be bigger than uncompressed
size_t compressedSize;
output[0] = 'Y';
output[1] = 'a';
output[2] = 'z';
output[3] = '0';
util_write_uint32_be(&output[4], uncompressedSize);
memset(&output[8], 0, 8);
compressedSize = 0x10;
assert(sym->value + uncompressedSize <= dataSect->data.size);
compressedSize += yaz0_encode(&dataSect->data.bytes[sym->value], &output[0x10], uncompressedSize);
// Pad to 0x10
while (compressedSize % 0x10 != 0) {
output[compressedSize++] = 0xFF;
}
Bytearray_Extend(archive, output, compressedSize);
if (i > 0) {
util_write_uint32_be(&archive->bytes[i * sizeof(uint32_t)], offset - firstEntryOffset);
}
offset += compressedSize;
free(output);
}
util_write_uint32_be(&archive->bytes[i * sizeof(uint32_t)], offset - firstEntryOffset);
if (archive->size % 16 != 0) {
size_t extraPad = ALIGN16(archive->size) - archive->size;
Bytearray_ExtendValue(archive, 0, extraPad);
}
}
int main(int argc, char *argv[]) {
const char *inPath;
const char *binPath;
const char *symPath;
Bytearray elfBytes;
DataSection dataSect;
Bytearray archive;
if (argc != 4) {
fprintf(stderr, "%s in_file out_bin out_sym\n", argv[0]);
exit(1);
}
inPath = argv[1];
binPath = argv[2];
symPath = argv[3];
elfBytes.bytes = util_read_whole_file(inPath, &elfBytes.size);
DataSection_FromElf(&dataSect, &elfBytes);
createArchive(&archive, &dataSect);
// Write the compressed archive file as a raw binary
util_write_whole_file(binPath, archive.bytes, archive.size);
// Zero out data
memset(&elfBytes.bytes[dataSect.dataOffset], 0, dataSect.data.size);
util_write_whole_file(symPath, elfBytes.bytes, elfBytes.size);
Bytearray_Destroy(&archive);
DataSection_Destroy(&dataSect);
Bytearray_Destroy(&elfBytes);
return 0;
}

View File

@ -1,8 +1,6 @@
#ifndef YAZ0_H
#define YAZ0_H
int yaz0_encode2(uint8_t* src, uint8_t* dest, int uncompressedSize);
void yaz0_decode(uint8_t* src, uint8_t* dst, int uncompressedSize);
int yaz0_encode(uint8_t* src, uint8_t* dest, int srcSize);

115
tools/decompress_yars.py Executable file
View File

@ -0,0 +1,115 @@
#!/usr/bin/env python3
# SPDX-FileCopyrightText: © 2023 ZeldaRET
# SPDX-License-Identifier: MIT
# yar (Yaz0 ARchive) decompressor
#
# This program decompresses every raw yar binary file listed in
# `tools/filelists/{version}/archives.csv` to a corresponding
# `baserom/{file}.unarchive` raw file.
#
# It works by decompressing every Yaz0 block and appending them one by one into
# a new raw binary file so it can be processed normally by other tools.
from __future__ import annotations
import argparse
import dataclasses
import libyaz0
from pathlib import Path
import struct
PRINT_XML = False
@dataclasses.dataclass
class ArchiveMeta:
start: int
end: int
def readFileAsBytearray(filepath: Path) -> bytearray:
with filepath.open(mode="rb") as f:
return bytearray(f.read())
def readBytesAsWord(array_of_bytes: bytearray, offset: int) -> int:
return struct.unpack_from(f">I", array_of_bytes, offset)[0]
def getOffsetsList(archiveBytes: bytearray) -> list[ArchiveMeta]:
archivesOffsets: list[ArchiveMeta] = []
firstEntryOffset = readBytesAsWord(archiveBytes, 0)
firstEntrySize = readBytesAsWord(archiveBytes, 4)
archivesOffsets.append(ArchiveMeta(firstEntryOffset, firstEntryOffset + firstEntrySize))
offset = 4
while offset < firstEntryOffset - 4:
entry = readBytesAsWord(archiveBytes, offset)
nextEntry = readBytesAsWord(archiveBytes, offset + 4)
entryStart = entry + firstEntryOffset
entryEnd = nextEntry + firstEntryOffset
archivesOffsets.append(ArchiveMeta(entryStart, entryEnd))
offset += 4
return archivesOffsets
def extractArchive(archivePath: Path, outPath: Path):
archiveBytes = readFileAsBytearray(archivePath)
if readBytesAsWord(archiveBytes, 0) == 0:
# Empty file, ignore it
return
print(f"Extracting '{archivePath}' -> '{outPath}'")
archivesOffsets = getOffsetsList(archiveBytes)
if PRINT_XML:
print('<Root>')
print(f' <File Name="{outPath.stem}">')
with outPath.open("wb") as out:
currentOffset = 0
for meta in archivesOffsets:
decompressedBytes = libyaz0.decompress(archiveBytes[meta.start:meta.end])
decompressedSize = len(decompressedBytes)
out.write(decompressedBytes)
if PRINT_XML:
print(f' <Blob Name="{archivePath.stem}_Blob_{currentOffset:06X}" Size="0x{decompressedSize:04X}" Offset="0x{currentOffset:X}" />')
currentOffset += decompressedSize
if PRINT_XML:
print(f' </File>')
print('</Root>')
def main():
parser = argparse.ArgumentParser(description="MM archives extractor")
parser.add_argument("-v", "--version", help="version to process", default="mm.us.rev1")
parser.add_argument("--xml", help="Generate xml to stdout", action="store_true")
args = parser.parse_args()
global PRINT_XML
PRINT_XML = args.xml
archivesCsvPath = Path(f"tools/filelists/{args.version}/archives.csv")
with archivesCsvPath.open() as f:
for line in f:
archiveName = line.strip().split(",")[1]
archivePath = Path(f"baserom/{archiveName}")
extractedPath = Path(str(archivePath) + ".unarchive")
extractArchive(archivePath, extractedPath)
if __name__ == "__main__":
main()

View File

@ -7,8 +7,8 @@
'Audiotable',
'kanji',
'link_animetion',
'icon_item_static_old',
'icon_item_24_static_old',
'icon_item_static_syms',
'icon_item_24_static_syms',
'icon_item_field_static',
'icon_item_dungeon_static',
'icon_item_gameover_static',
@ -18,10 +18,10 @@
'map_grand_static',
'item_name_static',
'map_name_static',
'icon_item_static_test',
'icon_item_24_static_test',
'schedule_dma_static_old',
'schedule_dma_static_test',
'icon_item_static_yar',
'icon_item_24_static_yar',
'schedule_dma_static_syms',
'schedule_dma_static_yar',
'schedule_static',
'story_static',
'do_action_static',

View File

@ -14,8 +14,8 @@ FILE_NAMES = [
'Audiotable',
'kanji',
'link_animetion',
'icon_item_static_old',
'icon_item_24_static_old',
'icon_item_static_syms',
'icon_item_24_static_syms',
'icon_item_field_static',
'icon_item_dungeon_static',
'icon_item_gameover_static',
@ -25,10 +25,10 @@ FILE_NAMES = [
'map_grand_static',
'item_name_static',
'map_name_static',
'icon_item_static_test',
'icon_item_24_static_test',
'schedule_dma_static_old',
'schedule_dma_static_test',
'icon_item_static_yar',
'icon_item_24_static_yar',
'schedule_dma_static_syms',
'schedule_dma_static_yar',
'schedule_static',
'story_static',
'do_action_static',

View File

@ -6,8 +6,8 @@
5,Audiotable
6,kanji
7,link_animetion
8,icon_item_static_old
9,icon_item_24_static_old
8,icon_item_static_syms
9,icon_item_24_static_syms
10,icon_item_field_static
11,icon_item_dungeon_static
12,icon_item_gameover_static
@ -17,10 +17,10 @@
16,map_grand_static
17,item_name_static
18,map_name_static
19,icon_item_static_test
20,icon_item_24_static_test
21,schedule_dma_static_old
22,schedule_dma_static_test
19,icon_item_static_yar
20,icon_item_24_static_yar
21,schedule_dma_static_syms
22,schedule_dma_static_yar
23,schedule_static
24,story_static
25,do_action_static

1 0 makerom
6 5 Audiotable
7 6 kanji
8 7 link_animetion
9 8 icon_item_static_old icon_item_static_syms
10 9 icon_item_24_static_old icon_item_24_static_syms
11 10 icon_item_field_static
12 11 icon_item_dungeon_static
13 12 icon_item_gameover_static
17 16 map_grand_static
18 17 item_name_static
19 18 map_name_static
20 19 icon_item_static_test icon_item_static_yar
21 20 icon_item_24_static_test icon_item_24_static_yar
22 21 schedule_dma_static_old schedule_dma_static_syms
23 22 schedule_dma_static_test schedule_dma_static_yar
24 23 schedule_static
25 24 story_static
26 25 do_action_static

View File

@ -2,6 +2,6 @@
16,map_grand_static
17,item_name_static
18,map_name_static
19,icon_item_static_test
20,icon_item_24_static_test
22,schedule_dma_static_test
19,icon_item_static_yar
20,icon_item_24_static_yar
22,schedule_dma_static_yar

1 15 map_i_static
2 16 map_grand_static
3 17 item_name_static
4 18 map_name_static
5 19 icon_item_static_test icon_item_static_yar
6 20 icon_item_24_static_test icon_item_24_static_yar
7 22 schedule_dma_static_test schedule_dma_static_yar

View File

@ -1,3 +1,3 @@
8,icon_item_static_old
9,icon_item_24_static_old
21,schedule_dma_static_old
8,icon_item_static_syms
9,icon_item_24_static_syms
21,schedule_dma_static_syms

1 8 icon_item_static_old icon_item_static_syms
2 9 icon_item_24_static_old icon_item_24_static_syms
3 21 schedule_dma_static_old schedule_dma_static_syms

View File

@ -136,7 +136,6 @@ if not args.matching:
# The order of this list should not change to prevent breaking the graph of the website
# New stuff shall be appended at the end of the list
assetsCategories = [
"archives",
"audio",
"interface",
"misc",
@ -148,6 +147,11 @@ assetsCategories = [
]
assetsTracker = dict()
# Assets that we don't have a proper way of tracking right now
ignoredAssets = {
"archives",
}
# Manual fixer for files that would be counted in wrong categories
# "filename": "correctSection"
fileSectionFixer = {
@ -203,12 +207,12 @@ for line in map_file:
file_size = int(line_split[2], 16)
obj_file = line_split[3].strip()
objFileSplit = obj_file.split("/")
objFileName = objFileSplit[-1].split(".o")[0]
fileData = {"name": obj_file, "vram": obj_vram, "size": file_size, "section": section, "symbols": []}
mapFileList.append(fileData)
if (section == ".text"):
objFileName = objFileSplit[-1].split(".o")[0]
srcCat = obj_file.split("/")[2]
if srcCat in srcCategoriesFixer:
srcCat = srcCategoriesFixer[srcCat]
@ -229,6 +233,8 @@ for line in map_file:
assetCat = obj_file.split("/")[2]
if assetCat in assetsTracker:
assetsTracker[assetCat]["currentSize"] += file_size
elif assetCat in ignoredAssets:
pass
else:
eprint(f"Found file '{obj_file}' in unknown asset category '{assetCat}'")
eprint("I'll ignore this for now, but please fix it!")

View File

@ -1098,32 +1098,6 @@ D_06000B70 = 0x06000B70;
D_06000D60 = 0x06000D60;
// segment 0x07
D_07000000 = 0x07000000;
D_07000800 = 0x07000800;
D_07001000 = 0x07001000;
D_07001800 = 0x07001800;
D_07002000 = 0x07002000;
D_07002800 = 0x07002800;
D_07003000 = 0x07003000;
D_07003800 = 0x07003800;
D_07004000 = 0x07004000;
D_07004800 = 0x07004800;
D_07005000 = 0x07005000;
D_07005800 = 0x07005800;
D_07006000 = 0x07006000;
D_07006800 = 0x07006800;
D_07007000 = 0x07007000;
D_07007800 = 0x07007800;
D_07008000 = 0x07008000;
D_07008800 = 0x07008800;
D_07009000 = 0x07009000;
D_07009800 = 0x07009800;
D_0700AC00 = 0x0700AC00;
D_0700AEA0 = 0x0700AEA0;
// segment 0x08
D_08000000 = 0x08000000;