diff --git a/Makefile b/Makefile
index aa243111c..9532de1ed 100644
--- a/Makefile
+++ b/Makefile
@@ -591,7 +591,7 @@ $(shell mkdir -p $(foreach dir, \
endif
$(BUILD_DIR)/src/boot/build.o: CPP_DEFINES += -DBUILD_CREATOR="\"$(BUILD_CREATOR)\"" -DBUILD_DATE="\"$(BUILD_DATE)\"" -DBUILD_TIME="\"$(BUILD_TIME)\""
-$(BUILD_DIR)/src/audio/lib/seqplayer.o: CPP_DEFINES += -DMML_VERSION=MML_VERSION_OOT
+$(BUILD_DIR)/src/audio/internal/seqplayer.o: CPP_DEFINES += -DMML_VERSION=MML_VERSION_OOT
ifeq ($(COMPILER),gcc)
# Note that if adding additional assets directories for modding reasons these flags must also be used there
@@ -707,9 +707,9 @@ setup: venv
$(V)$(PYTHON) tools/decompress_baserom.py $(VERSION)
$(call print_no_args,Decompressing baserom: Done!)
$(V)$(PYTHON) tools/extract_baserom.py $(BASEROM_DIR)/baserom-decompressed.z64 $(EXTRACTED_DIR)/baserom -v $(VERSION)
+ $(V)$(PYTHON) -m tools.assets.extract $(EXTRACTED_DIR)/baserom $(EXTRACTED_DIR) -v $(VERSION) -j$(N_THREADS)
$(V)$(PYTHON) tools/extract_incbins.py $(EXTRACTED_DIR)/baserom $(EXTRACTED_DIR)/incbin -v $(VERSION)
$(V)$(PYTHON) tools/extract_text.py $(EXTRACTED_DIR)/baserom $(EXTRACTED_DIR)/text -v $(VERSION)
- $(V)$(PYTHON) tools/extract_assets.py $(EXTRACTED_DIR)/baserom $(EXTRACTED_DIR)/assets -v $(VERSION) -j$(N_THREADS)
$(V)$(PYTHON) tools/extract_audio.py -b $(EXTRACTED_DIR)/baserom -o $(EXTRACTED_DIR) -v $(VERSION) --read-xml
$(call print_no_args,Extracting files: Done!)
@@ -918,7 +918,7 @@ $(BUILD_DIR)/src/%.o: src/%.c
$(V)$(POSTPROCESS_OBJ) $@
$(V)$(OBJDUMP_CMD)
-$(BUILD_DIR)/src/audio/session_init.o: src/audio/session_init.c $(BUILD_DIR)/assets/audio/soundfont_sizes.h $(BUILD_DIR)/assets/audio/sequence_sizes.h
+$(BUILD_DIR)/src/audio/game/session_init.o: src/audio/game/session_init.c $(BUILD_DIR)/assets/audio/soundfont_sizes.h $(BUILD_DIR)/assets/audio/sequence_sizes.h
$(call print_two_args,Compiling:,$<,$@)
$(V)$(CC_CHECK) $< -o $@
$(V)$(CC) -c $(CFLAGS) $(MIPS_VERSION) $(OPTFLAGS) -o $(@:.o=.tmp) $<
@@ -938,21 +938,25 @@ $(BUILD_DIR)/src/overlays/%_reloc.o: $(BUILD_DIR)/spec
$(V)$(POSTPROCESS_OBJ) $(@:.o=.s)
$(V)$(AS) $(ASFLAGS) $(@:.o=.s) -o $@
-$(BUILD_DIR)/assets/%.inc.c: assets/%.png
- $(V)$(N64TEXCONV) $(subst .,,$(suffix $*)) "$(findstring u32,$(subst .,,$(suffix $(basename $*))))" $< $@ $(@:.inc.c=.pal.inc.c)
+# Assets from assets/
-$(BUILD_DIR)/assets/%.inc.c: $(EXTRACTED_DIR)/assets/%.png
- $(V)$(N64TEXCONV) $(subst .,,$(suffix $*)) "$(findstring u32,$(subst .,,$(suffix $(basename $*))))" $< $@ $(@:.inc.c=.pal.inc.c)
+$(BUILD_DIR)/assets/%.inc.c: assets/%.png
+ $(V)tools/assets/build_from_png/build_from_png $< $(dir $@) assets/$(dir $*) $(wildcard $(EXTRACTED_DIR)/assets/$(dir $*))
$(BUILD_DIR)/assets/%.bin.inc.c: assets/%.bin
$(V)$(BIN2C) -t 1 $< $@
-$(BUILD_DIR)/assets/%.bin.inc.c: $(EXTRACTED_DIR)/assets/%.bin
- $(V)$(BIN2C) -t 1 $< $@
-
$(BUILD_DIR)/assets/%.jpg.inc.c: assets/%.jpg
$(V)$(N64TEXCONV) JFIF "" $< $@
+# Assets from extracted/
+
+$(BUILD_DIR)/assets/%.inc.c: $(EXTRACTED_DIR)/assets/%.png
+ $(V)tools/assets/build_from_png/build_from_png $< $(dir $@) $(wildcard assets/$(dir $*)) $(EXTRACTED_DIR)/assets/$(dir $*)
+
+$(BUILD_DIR)/assets/%.bin.inc.c: $(EXTRACTED_DIR)/assets/%.bin
+ $(V)$(BIN2C) -t 1 $< $@
+
$(BUILD_DIR)/assets/%.jpg.inc.c: $(EXTRACTED_DIR)/assets/%.jpg
$(V)$(N64TEXCONV) JFIF "" $< $@
@@ -1046,7 +1050,7 @@ $(BUILD_DIR)/assets/audio/soundfonts/%.c $(BUILD_DIR)/assets/audio/soundfonts/%.
-include $(SOUNDFONT_DEP_FILES)
$(BUILD_DIR)/assets/audio/soundfonts/%.o: $(BUILD_DIR)/assets/audio/soundfonts/%.c $(BUILD_DIR)/assets/audio/soundfonts/%.name
- $(CC_CHECK) -I include/audio $< -o $@
+ $(V)$(CPP) $(MIPS_BUILTIN_DEFS) $(CPPFLAGS) -x assembler-with-cpp $(INC) -I include/audio -MD -MF $(@:.o=.d) -MT $@ $< -o /dev/null
# compile c to unlinked object
$(V)$(CC) -c $(CFLAGS) $(MIPS_VERSION) $(OPTFLAGS) -I include/audio -o $(@:.o=.tmp) $<
# partial link
diff --git a/assets/audio/sequences/seq_0.prg.seq b/assets/audio/sequences/seq_0.prg.seq
index 252711429..b5f8a2906 100644
--- a/assets/audio/sequences/seq_0.prg.seq
+++ b/assets/audio/sequences/seq_0.prg.seq
@@ -3022,10 +3022,10 @@ LAYER_140B:
/* 0x1411 [0xCC 0x00 ] */ ldi 0
/* 0x1413 [0x76 ] */ stio IO_PORT_6
CHAN_1414:
-/* 0x1414 [0xCB 0x14 0x2D ] */ ldseq UNK_142D
+/* 0x1414 [0xCB 0x14 0x2D ] */ ldseq ARRAY_142D
/* 0x1417 [0xC7 0x00 0x14 0x5B ] */ stseq 0, LAYER_145A + STSEQ_TRANSPOSITION
/* 0x141B [0x66 ] */ ldio IO_PORT_6
-/* 0x141C [0xCB 0x14 0x31 ] */ ldseq UNK_1431
+/* 0x141C [0xCB 0x14 0x31 ] */ ldseq ARRAY_1431
/* 0x141F [0xC7 0x00 0x14 0x56 ] */ stseq 0, LAYER_1455 + STSEQ_NOTEDV_DELAY_HI
/* 0x1423 [0xCC 0x18 ] */ ldi 24
/* 0x1425 [0x71 ] */ stio IO_PORT_1
@@ -3033,14 +3033,14 @@ CHAN_1414:
/* 0x1429 [0x89 0x14 0x35 ] */ ldlayer 1, LAYER_1435
/* 0x142C [0xFF ] */ end
-UNK_142D:
- .byte 0x00, 0x04, 0x08, 0x00
+.array ARRAY_142D
+ .byte 0, 4, 8, 0
-UNK_1431:
+.array ARRAY_1431
#if !OOT_PAL_N64
- .byte 0x60, 0x30, 0x18, 0x60
+ .byte 96, 48, 24, 96
#else
- .byte 0x73, 0x3A, 0x1D, 0x60
+ .byte 115, 58, 29, 96
#endif
.layer LAYER_1435
@@ -3943,15 +3943,15 @@ LAYER_1B5C:
CHAN_1BA1:
/* 0x1BA1 [0x66 ] */ ldio IO_PORT_6
/* 0x1BA2 [0xC9 0x03 ] */ and 3
-/* 0x1BA4 [0xCB 0x1B 0xB6 ] */ ldseq UNK_1BB6
+/* 0x1BA4 [0xCB 0x1B 0xB6 ] */ ldseq ARRAY_1BB6
/* 0x1BA7 [0xC7 0x00 0x1B 0xE7 ] */ stseq 0, LAYER_1BE6 + STSEQ_LDELAY
/* 0x1BAB [0xC7 0x08 0x1B 0xB0 ] */ stseq 8, STSEQ_HERE + STSEQ_LDI_IMM
/* 0x1BAF [0xCC 0x30 ] */ ldi 48
/* 0x1BB1 [0xFC 0x00 0x48 ] */ call CHAN_0048
/* 0x1BB4 [0xF4 0xEB ] */ rjump CHAN_1BA1
-UNK_1BB6:
- .byte 0x20, 0x0E, 0x05, 0x20
+.array ARRAY_1BB6
+ .byte 32, 14, 5, 32
.layer LAYER_1BBA
/* 0x1BBA [0xC2 0x30 ] */ transpose 48
@@ -4031,16 +4031,16 @@ CHAN_1C3B:
/* 0x1C3B [0x63 ] */ ldio IO_PORT_3
/* 0x1C3C [0xC9 0xF0 ] */ and 240
/* 0x1C3E [0xF3 0x0E ] */ rbeqz CHAN_1C4E
-/* 0x1C40 [0xCE 0x00 0x00 ] */ ldptr SEQ_0000
+/* 0x1C40 [0xCE 0x00 0x00 ] */ ldptri 0
/* 0x1C43 [0xCF 0x1C 0x80 ] */ stptrtoseq ENVELOPE_1C7A + STSEQ_ENVELOPE_POINT(3)
-/* 0x1C46 [0xCE 0x7F 0xBC ] */ ldptr SEQ_0_END + 0x1538
+/* 0x1C46 [0xCE 0x7F 0xBC ] */ ldptri 32700
/* 0x1C49 [0xCF 0x1C 0x8C ] */ stptrtoseq ENVELOPE_1C86 + STSEQ_ENVELOPE_POINT(3)
/* 0x1C4C [0xF4 0x0C ] */ rjump CHAN_1C5A
CHAN_1C4E:
-/* 0x1C4E [0xCE 0x00 0x00 ] */ ldptr SEQ_0000
+/* 0x1C4E [0xCE 0x00 0x00 ] */ ldptri 0
/* 0x1C51 [0xCF 0x1C 0x8C ] */ stptrtoseq ENVELOPE_1C86 + STSEQ_ENVELOPE_POINT(3)
-/* 0x1C54 [0xCE 0x7F 0xBC ] */ ldptr SEQ_0_END + 0x1538
+/* 0x1C54 [0xCE 0x7F 0xBC ] */ ldptri 32700
/* 0x1C57 [0xCF 0x1C 0x80 ] */ stptrtoseq ENVELOPE_1C7A + STSEQ_ENVELOPE_POINT(3)
CHAN_1C5A:
/* 0x1C5A [0xCC 0x01 ] */ ldi 1
@@ -7056,9 +7056,9 @@ CHAN_2F7D:
/* 0x2F85 [0xB8 0x02 ] */ rand 2
/* 0x2F87 [0xC7 0x2F 0x2F 0xAC ] */ stseq 47, LAYER_2FAB + STSEQ_TRANSPOSITION
/* 0x2F8B [0xBD 0x00 0x6A 0x00 0x96] */ randptr 106, 150
-/* 0x2F90 [0xCF 0x2F 0xB6 ] */ stptrtoseq UNK_2FB6
+/* 0x2F90 [0xCF 0x2F 0xB6 ] */ stptrtoseq BUF_2FB6
/* 0x2F93 [0xCC 0x01 ] */ ldi 1
-/* 0x2F95 [0xCB 0x2F 0xB6 ] */ ldseq UNK_2FB6
+/* 0x2F95 [0xCB 0x2F 0xB6 ] */ ldseq BUF_2FB6
/* 0x2F98 [0xC7 0x00 0x2F 0xA0 ] */ stseq 0, CHAN_2F9F + STSEQ_LDI_IMM
/* 0x2F9C [0x88 0x2F 0xAB ] */ ldlayer 0, LAYER_2FAB
CHAN_2F9F:
@@ -7077,8 +7077,8 @@ CHAN_2F9F:
/* 0x2FB2 [0xC0 0xFD 0x00 ] */ ldelay 32000
/* 0x2FB5 [0xFF ] */ end
-UNK_2FB6:
- .half 0x0000
+BUF_2FB6:
+ .half 0
.channel CHAN_2FB8
/* 0x2FB8 [0x88 0x2F 0xBF ] */ ldlayer 0, LAYER_2FBF
@@ -12265,9 +12265,9 @@ LAYER_53FD:
.channel CHAN_5403
/* 0x5403 [0xC1 0x7E ] */ instr FONTANY_INSTR_SFX
/* 0x5405 [0x64 ] */ ldio IO_PORT_SFX_INDEX_LOBITS
-/* 0x5406 [0xC8 0xB0 ] */ sub 176
+/* 0x5406 [0xC8 0xB0 ] */ sub NA_SE_EN_TWINROBA_LAUGH & 0xFF
/* 0x5408 [0xC7 0x00 0x54 0x17 ] */ stseq (ASEQ_OP_LAYER_NOTEDVG | PITCH_A0), LAYER_5417 + STSEQ_NOTEDVG_OPCODE_PITCH
-/* 0x540C [0xCB 0x54 0x1C ] */ ldseq UNK_541C
+/* 0x540C [0xCB 0x54 0x1C ] */ ldseq ARRAY_541C
/* 0x540F [0xC7 0x00 0x54 0x19 ] */ stseq 0, LAYER_5417 + STSEQ_NOTEDVG_DELAY_LO
/* 0x5413 [0x88 0x54 0x17 ] */ ldlayer 0, LAYER_5417
/* 0x5416 [0xFF ] */ end
@@ -12276,10 +12276,10 @@ LAYER_53FD:
/* 0x5417 [0x00 0x00 0x64 0x00 ] */ notedvg PITCH_A0, 0, 100, 0
/* 0x541B [0xFF ] */ end
-UNK_541C:
- .byte 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
- .byte 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
- .byte 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.array ARRAY_541C
+ .byte 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100
+ .byte 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100
+ .byte 100, 100, 100, 100, 100, 100, 100
.channel CHAN_5443
/* 0x5443 [0x88 0x42 0x20 ] */ ldlayer 0, LAYER_4220
@@ -13861,11 +13861,11 @@ CHAN_5EE2:
/* 0x5EF7 [0x71 ] */ stio IO_PORT_1
/* 0x5EF8 [0x67 ] */ ldio IO_PORT_7
/* 0x5EF9 [0xC9 0x07 ] */ and 7
-/* 0x5EFB [0xCB 0x5F 0x30 ] */ ldseq UNK_5F30
+/* 0x5EFB [0xCB 0x5F 0x30 ] */ ldseq ARRAY_5F30
/* 0x5EFE [0xC7 0x00 0x5F 0x0D ] */ stseq 0, CHAN_5F0C + STSEQ_INSTR
/* 0x5F02 [0x67 ] */ ldio IO_PORT_7
/* 0x5F03 [0xC9 0x07 ] */ and 7
-/* 0x5F05 [0xCB 0x5F 0x38 ] */ ldseq UNK_5F38
+/* 0x5F05 [0xCB 0x5F 0x38 ] */ ldseq ARRAY_5F38
/* 0x5F08 [0xC7 0x00 0x5F 0x2E ] */ stseq 0, LAYER_5F2B + STSEQ_NOTEDV_VELOCITY
CHAN_5F0C:
/* 0x5F0C [0xC1 0x34 ] */ instr SF0_INST_52
@@ -13894,11 +13894,18 @@ LAYER_5F2B:
/* 0x5F2B [0x67 0x81 0xE0 0x7F ] */ notedv PITCH_C4, 480, 127
/* 0x5F2F [0xFF ] */ end
-UNK_5F30:
- .byte 0x34, 0x55, 0x56, 0x59, 0x53, 0x52, 0x34, 0x34
+.array ARRAY_5F30
+ .byte SF0_INST_52
+ .byte SF0_INST_85
+ .byte SF0_INST_86
+ .byte SF0_INST_89
+ .byte SF0_INST_83
+ .byte SF0_INST_82
+ .byte SF0_INST_52
+ .byte SF0_INST_52
-UNK_5F38:
- .byte 0x73, 0x73, 0x64, 0x73, 0x64, 0x73, 0x73, 0x73
+.array ARRAY_5F38
+ .byte 115, 115, 100, 115, 100, 115, 115, 115
.channel CHAN_5F40
/* 0x5F40 [0xCC 0x81 ] */ ldi 129
@@ -14044,11 +14051,11 @@ CHAN_6116:
/* 0x6116 [0x3E 0x06 ] */ stcio 14, IO_PORT_6
/* 0x6118 [0x3F 0x06 ] */ stcio 15, IO_PORT_6
CHAN_611A:
-/* 0x611A [0xCB 0x61 0x6D ] */ ldseq UNK_616D
-/* 0x611D [0xC7 0x40 0x61 0x2D ] */ stseq (ASEQ_OP_LAYER_NOTEDV | PITCH_A0), LAYER_612D + STSEQ_NOTEDV_OPCODE_PITCH
+/* 0x611A [0xCB 0x61 0x6D ] */ ldseq ARRAY_616D
+/* 0x611D [0xC7 0x40 0x61 0x2D ] */ stseq (ASEQ_OP_LAYER_NOTEDV | SF0_EFFECT_0), LAYER_612D + STSEQ_NOTEDV_OPCODE_PITCH
/* 0x6121 [0x66 ] */ ldio IO_PORT_6
CHAN_6122:
-/* 0x6122 [0xCB 0x61 0x71 ] */ ldseq UNK_6171
+/* 0x6122 [0xCB 0x61 0x71 ] */ ldseq ARRAY_6171
CHAN_6125:
/* 0x6125 [0xC7 0x00 0x61 0x2F ] */ stseq 0, LAYER_612D + STSEQ_NOTEDV_VELOCITY_2
/* 0x6129 [0x88 0x61 0x2D ] */ ldlayer 0, LAYER_612D
@@ -14080,7 +14087,7 @@ CHAN_613E:
// Reads the byte at (PTR + 0) into TR (the note)
/* 0x6147 [0xB6 ] */ dyntblv
// Store ASEQ_OP_LAYER_NOTEDV + TR into the pitch
-/* 0x6148 [0xC7 0x40 0x61 0x2D ] */ stseq (ASEQ_OP_LAYER_NOTEDV | PITCH_A0), LAYER_612D + STSEQ_NOTEDV_OPCODE_PITCH
+/* 0x6148 [0xC7 0x40 0x61 0x2D ] */ stseq (ASEQ_OP_LAYER_NOTEDV | SF0_EFFECT_0), LAYER_612D + STSEQ_NOTEDV_OPCODE_PITCH
// Load 1 into TR
/* 0x614C [0xCC 0x01 ] */ ldi 1
// Reads the byte at (PTR + 1) into TR (the velocity)
@@ -14096,23 +14103,26 @@ CHAN_6151:
/* 0x615B [0xF4 0xBD ] */ rjump CHAN_611A
.channel CHAN_615D
-/* 0x615D [0xCE 0x61 0x6D ] */ ldptr UNK_616D
+/* 0x615D [0xCE 0x61 0x6D ] */ ldptr ARRAY_616D
/* 0x6160 [0xCF 0x61 0x1B ] */ stptrtoseq CHAN_611A + STSEQ_PTR_LDSEQ
-/* 0x6163 [0xCE 0x61 0x71 ] */ ldptr UNK_6171
+/* 0x6163 [0xCE 0x61 0x71 ] */ ldptr ARRAY_6171
/* 0x6166 [0xCF 0x61 0x23 ] */ stptrtoseq CHAN_6122 + STSEQ_PTR_LDSEQ
/* 0x6169 [0xCC 0x04 ] */ ldi 4
/* 0x616B [0xF4 0x85 ] */ rjump CHAN_60F2
-UNK_616D:
- .byte 0x00, 0x01, 0x02, 0x03
+.array ARRAY_616D
+ .byte SF0_EFFECT_0
+ .byte SF0_EFFECT_1
+ .byte SF0_EFFECT_2
+ .byte SF0_EFFECT_3
-UNK_6171:
- .byte 0x69, 0x69, 0x69, 0x69
+.array ARRAY_6171
+ .byte 105, 105, 105, 105
.channel CHAN_6175
-/* 0x6175 [0xCE 0x61 0x97 ] */ ldptr UNK_6197
+/* 0x6175 [0xCE 0x61 0x97 ] */ ldptr ARRAY_6197
/* 0x6178 [0xCF 0x61 0x1B ] */ stptrtoseq CHAN_611A + STSEQ_PTR_LDSEQ
-/* 0x617B [0xCE 0x61 0x99 ] */ ldptr UNK_6199
+/* 0x617B [0xCE 0x61 0x99 ] */ ldptr ARRAY_6199
/* 0x617E [0xCF 0x61 0x23 ] */ stptrtoseq CHAN_6122 + STSEQ_PTR_LDSEQ
/* 0x6181 [0xB8 0x02 ] */ rand 2
/* 0x6183 [0xF4 0xAF ] */ rjump CHAN_6134
@@ -14132,16 +14142,17 @@ CHAN_618C:
CHAN_6196:
/* 0x6196 [0x76 ] */ stio IO_PORT_6
-UNK_6197:
- .byte 0x04, 0x05
+.array ARRAY_6197
+ .byte SF0_EFFECT_4
+ .byte SF0_EFFECT_5
-UNK_6199:
- .byte 0x6E, 0x6E
+.array ARRAY_6199
+ .byte 110, 110
.channel CHAN_619B
-/* 0x619B [0xCE 0x61 0xBD ] */ ldptr UNK_61BD
+/* 0x619B [0xCE 0x61 0xBD ] */ ldptr ARRAY_61BD
/* 0x619E [0xCF 0x61 0x1B ] */ stptrtoseq CHAN_611A + STSEQ_PTR_LDSEQ
-/* 0x61A1 [0xCE 0x61 0xBF ] */ ldptr UNK_61BF
+/* 0x61A1 [0xCE 0x61 0xBF ] */ ldptr ARRAY_61BF
/* 0x61A4 [0xCF 0x61 0x23 ] */ stptrtoseq CHAN_6122 + STSEQ_PTR_LDSEQ
/* 0x61A7 [0xB8 0x02 ] */ rand 2
/* 0x61A9 [0xF4 0x89 ] */ rjump CHAN_6134
@@ -14161,109 +14172,119 @@ CHAN_61B2:
CHAN_61BC:
/* 0x61BC [0x76 ] */ stio IO_PORT_6
-UNK_61BD:
- .byte 0x15, 0x16
+.array ARRAY_61BD
+ .byte SF0_EFFECT_21
+ .byte SF0_EFFECT_22
-UNK_61BF:
- .byte 0x69, 0x69
+.array ARRAY_61BF
+ .byte 105, 105
.channel CHAN_61C1
-/* 0x61C1 [0xCE 0x61 0xD1 ] */ ldptr UNK_61D1
+/* 0x61C1 [0xCE 0x61 0xD1 ] */ ldptr ARRAY_61D1
/* 0x61C4 [0xCF 0x61 0x1B ] */ stptrtoseq CHAN_611A + STSEQ_PTR_LDSEQ
-/* 0x61C7 [0xCE 0x61 0xD3 ] */ ldptr UNK_61D3
+/* 0x61C7 [0xCE 0x61 0xD3 ] */ ldptr ARRAY_61D3
/* 0x61CA [0xCF 0x61 0x23 ] */ stptrtoseq CHAN_6122 + STSEQ_PTR_LDSEQ
/* 0x61CD [0xCC 0x00 ] */ ldi 0
/* 0x61CF [0xF4 0x80 ] */ rjump CHAN_6151
-UNK_61D1:
- .byte 0x06, 0x19
+.array ARRAY_61D1
+ .byte SF0_EFFECT_6
+ .byte SF0_EFFECT_25
-UNK_61D3:
- .byte 0x5F, 0x69
+.array ARRAY_61D3
+ .byte 95, 105
.channel CHAN_61D5
-/* 0x61D5 [0xCE 0x61 0xE6 ] */ ldptr UNK_61E6
+/* 0x61D5 [0xCE 0x61 0xE6 ] */ ldptr ARRAY_61E6
/* 0x61D8 [0xCF 0x61 0x1B ] */ stptrtoseq CHAN_611A + STSEQ_PTR_LDSEQ
-/* 0x61DB [0xCE 0x61 0xE8 ] */ ldptr UNK_61E8
+/* 0x61DB [0xCE 0x61 0xE8 ] */ ldptr ARRAY_61E8
/* 0x61DE [0xCF 0x61 0x23 ] */ stptrtoseq CHAN_6122 + STSEQ_PTR_LDSEQ
/* 0x61E1 [0xB8 0x02 ] */ rand 2
/* 0x61E3 [0xFB 0x61 0x34 ] */ jump CHAN_6134
-UNK_61E6:
- .byte 0x07, 0x08
+.array ARRAY_61E6
+ .byte SF0_EFFECT_7
+ .byte SF0_EFFECT_8
-UNK_61E8:
- .byte 0x48, 0x50
+.array ARRAY_61E8
+ .byte 72, 80
.channel CHAN_61EA
-/* 0x61EA [0xCE 0x61 0xFB ] */ ldptr UNK_61FB
+/* 0x61EA [0xCE 0x61 0xFB ] */ ldptr ARRAY_61FB
/* 0x61ED [0xCF 0x61 0x1B ] */ stptrtoseq CHAN_611A + STSEQ_PTR_LDSEQ
-/* 0x61F0 [0xCE 0x61 0xFE ] */ ldptr UNK_61FE
+/* 0x61F0 [0xCE 0x61 0xFE ] */ ldptr ARRAY_61FE
/* 0x61F3 [0xCF 0x61 0x23 ] */ stptrtoseq CHAN_6122 + STSEQ_PTR_LDSEQ
/* 0x61F6 [0xCC 0x03 ] */ ldi 3
/* 0x61F8 [0xFB 0x60 0xF2 ] */ jump CHAN_60F2
-UNK_61FB:
- .byte 0x09, 0x0A, 0x0B
+.array ARRAY_61FB
+ .byte SF0_EFFECT_9
+ .byte SF0_EFFECT_10
+ .byte SF0_EFFECT_11
-UNK_61FE:
- .byte 0x75, 0x75, 0x75
+.array ARRAY_61FE
+ .byte 117, 117, 117
.channel CHAN_6201
-/* 0x6201 [0xCE 0x62 0x12 ] */ ldptr UNK_6212
+/* 0x6201 [0xCE 0x62 0x12 ] */ ldptr ARRAY_6212
/* 0x6204 [0xCF 0x61 0x1B ] */ stptrtoseq CHAN_611A + STSEQ_PTR_LDSEQ
-/* 0x6207 [0xCE 0x62 0x15 ] */ ldptr UNK_6215
+/* 0x6207 [0xCE 0x62 0x15 ] */ ldptr ARRAY_6215
/* 0x620A [0xCF 0x61 0x23 ] */ stptrtoseq CHAN_6122 + STSEQ_PTR_LDSEQ
/* 0x620D [0xCC 0x03 ] */ ldi 3
/* 0x620F [0xFB 0x60 0xF2 ] */ jump CHAN_60F2
-UNK_6212:
- .byte 0x0C, 0x0D, 0x0E
+.array ARRAY_6212
+ .byte SF0_EFFECT_12
+ .byte SF0_EFFECT_13
+ .byte SF0_EFFECT_14
-UNK_6215:
- .byte 0x71, 0x71, 0x71
+.array ARRAY_6215
+ .byte 113, 113, 113
.channel CHAN_6218
-/* 0x6218 [0xCE 0x62 0x29 ] */ ldptr UNK_6229
+/* 0x6218 [0xCE 0x62 0x29 ] */ ldptr ARRAY_6229
/* 0x621B [0xCF 0x61 0x1B ] */ stptrtoseq CHAN_611A + STSEQ_PTR_LDSEQ
-/* 0x621E [0xCE 0x62 0x2B ] */ ldptr UNK_622B
+/* 0x621E [0xCE 0x62 0x2B ] */ ldptr ARRAY_622B
/* 0x6221 [0xCF 0x61 0x23 ] */ stptrtoseq CHAN_6122 + STSEQ_PTR_LDSEQ
/* 0x6224 [0xB8 0x02 ] */ rand 2
/* 0x6226 [0xFB 0x61 0x34 ] */ jump CHAN_6134
-UNK_6229:
- .byte 0x11, 0x12
+.array ARRAY_6229
+ .byte SF0_EFFECT_17
+ .byte SF0_EFFECT_18
-UNK_622B:
- .byte 0x64, 0x64
+.array ARRAY_622B
+ .byte 100, 100
.channel CHAN_622D
-/* 0x622D [0xCE 0x62 0x3E ] */ ldptr UNK_623E
+/* 0x622D [0xCE 0x62 0x3E ] */ ldptr ARRAY_623E
/* 0x6230 [0xCF 0x61 0x1B ] */ stptrtoseq CHAN_611A + STSEQ_PTR_LDSEQ
-/* 0x6233 [0xCE 0x62 0x40 ] */ ldptr UNK_6240
+/* 0x6233 [0xCE 0x62 0x40 ] */ ldptr ARRAY_6240
/* 0x6236 [0xCF 0x61 0x23 ] */ stptrtoseq CHAN_6122 + STSEQ_PTR_LDSEQ
/* 0x6239 [0xB8 0x02 ] */ rand 2
/* 0x623B [0xFB 0x61 0x34 ] */ jump CHAN_6134
-UNK_623E:
- .byte 0x0F, 0x10
+.array ARRAY_623E
+ .byte SF0_EFFECT_15
+ .byte SF0_EFFECT_16
-UNK_6240:
- .byte 0x6E, 0x6E
+.array ARRAY_6240
+ .byte 110, 110
.channel CHAN_6242
-/* 0x6242 [0xCE 0x62 0x53 ] */ ldptr UNK_6253
+/* 0x6242 [0xCE 0x62 0x53 ] */ ldptr ARRAY_6253
/* 0x6245 [0xCF 0x61 0x1B ] */ stptrtoseq CHAN_611A + STSEQ_PTR_LDSEQ
-/* 0x6248 [0xCE 0x62 0x55 ] */ ldptr UNK_6255
+/* 0x6248 [0xCE 0x62 0x55 ] */ ldptr ARRAY_6255
/* 0x624B [0xCF 0x61 0x23 ] */ stptrtoseq CHAN_6122 + STSEQ_PTR_LDSEQ
/* 0x624E [0xB8 0x02 ] */ rand 2
/* 0x6250 [0xFB 0x61 0x34 ] */ jump CHAN_6134
-UNK_6253:
- .byte 0x13, 0x17
+.array ARRAY_6253
+ .byte SF0_EFFECT_19
+ .byte SF0_EFFECT_23
-UNK_6255:
- .byte 0x5A, 0x5A
+.array ARRAY_6255
+ .byte 90, 90
.channel CHAN_6257
/* 0x6257 [0x88 0x62 0x5B ] */ ldlayer 0, LAYER_625B
@@ -14285,18 +14306,19 @@ UNK_6255:
/* 0x626E [0xFF ] */ end
.channel CHAN_626F
-/* 0x626F [0xCE 0x62 0x80 ] */ ldptr UNK_6280
+/* 0x626F [0xCE 0x62 0x80 ] */ ldptr ARRAY_6280
/* 0x6272 [0xCF 0x61 0x1B ] */ stptrtoseq CHAN_611A + STSEQ_PTR_LDSEQ
-/* 0x6275 [0xCE 0x62 0x82 ] */ ldptr UNK_6282
+/* 0x6275 [0xCE 0x62 0x82 ] */ ldptr ARRAY_6282
/* 0x6278 [0xCF 0x61 0x23 ] */ stptrtoseq CHAN_6122 + STSEQ_PTR_LDSEQ
/* 0x627B [0xB8 0x02 ] */ rand 2
/* 0x627D [0xFB 0x61 0x34 ] */ jump CHAN_6134
-UNK_6280:
- .byte 0x0F, 0x10
+.array ARRAY_6280
+ .byte SF0_EFFECT_15
+ .byte SF0_EFFECT_16
-UNK_6282:
- .byte 0x69, 0x69
+.array ARRAY_6282
+ .byte 105, 105
.channel CHAN_6284
/* 0x6284 [0xFB 0x61 0xEA ] */ jump CHAN_61EA
@@ -14343,37 +14365,40 @@ UNK_6282:
/* 0x62C5 [0xFF ] */ end
.channel CHAN_62C6
-/* 0x62C6 [0xCE 0x62 0xCC ] */ ldptr UNK_62CC
+/* 0x62C6 [0xCE 0x62 0xCC ] */ ldptr ARRAY_62CC
/* 0x62C9 [0xFB 0x61 0x3E ] */ jump CHAN_613E
-UNK_62CC:
- .byte 0x00, 0x64
+.array ARRAY_62CC
+ .byte SF0_EFFECT_0
+ .byte 100
.channel CHAN_62CE
/* 0x62CE [0x66 ] */ ldio IO_PORT_6
/* 0x62CF [0xC8 0xFF ] */ sub 255
/* 0x62D1 [0x76 ] */ stio IO_PORT_6
/* 0x62D2 [0xC9 0x01 ] */ and 1
-/* 0x62D4 [0xCB 0x62 0xE8 ] */ ldseq UNK_62E8
-/* 0x62D7 [0xC7 0x40 0x64 0xBF ] */ stseq (ASEQ_OP_LAYER_NOTEDV | PITCH_A0), LAYER_64BF + STSEQ_NOTEDV_OPCODE_PITCH
+/* 0x62D4 [0xCB 0x62 0xE8 ] */ ldseq ARRAY_62E8
+/* 0x62D7 [0xC7 0x40 0x64 0xBF ] */ stseq (ASEQ_OP_LAYER_NOTEDV | SF0_EFFECT_0), LAYER_64BF + STSEQ_NOTEDV_OPCODE_PITCH
/* 0x62DB [0xB8 0x02 ] */ rand 2
-/* 0x62DD [0xCB 0x62 0xEA ] */ ldseq UNK_62EA
+/* 0x62DD [0xCB 0x62 0xEA ] */ ldseq ARRAY_62EA
/* 0x62E0 [0xC7 0x00 0x64 0xC1 ] */ stseq 0, LAYER_64BF + STSEQ_NOTEDV_VELOCITY_2
/* 0x62E4 [0x88 0x64 0xBF ] */ ldlayer 0, LAYER_64BF
/* 0x62E7 [0xFF ] */ end
-UNK_62E8:
- .byte 0x1A, 0x1B
+.array ARRAY_62E8
+ .byte SF0_EFFECT_26
+ .byte SF0_EFFECT_27
-UNK_62EA:
- .byte 0x50, 0x55
+.array ARRAY_62EA
+ .byte 80, 85
.channel CHAN_62EC
-/* 0x62EC [0xCE 0x62 0xF2 ] */ ldptr UNK_62F2
+/* 0x62EC [0xCE 0x62 0xF2 ] */ ldptr ARRAY_62F2
/* 0x62EF [0xFB 0x61 0x3E ] */ jump CHAN_613E
-UNK_62F2:
- .byte 0x05, 0x6E
+.array ARRAY_62F2
+ .byte SF0_EFFECT_5
+ .byte 110
.channel CHAN_62F4
/* 0x62F4 [0x88 0x62 0xF8 ] */ ldlayer 0, LAYER_62F8
@@ -14385,72 +14410,82 @@ UNK_62F2:
/* 0x62FD [0xFF ] */ end
.channel CHAN_62FE
-/* 0x62FE [0xCE 0x63 0x04 ] */ ldptr UNK_6304
+/* 0x62FE [0xCE 0x63 0x04 ] */ ldptr ARRAY_6304
/* 0x6301 [0xFB 0x61 0x3E ] */ jump CHAN_613E
-UNK_6304:
- .byte 0x04, 0x5F
+.array ARRAY_6304
+ .byte SF0_EFFECT_4
+ .byte 95
.channel CHAN_6306
-/* 0x6306 [0xCE 0x63 0x0C ] */ ldptr UNK_630C
+/* 0x6306 [0xCE 0x63 0x0C ] */ ldptr ARRAY_630C
/* 0x6309 [0xFB 0x61 0x3E ] */ jump CHAN_613E
-UNK_630C:
- .byte 0x07, 0x52
+.array ARRAY_630C
+ .byte SF0_EFFECT_7
+ .byte 82
.channel CHAN_630E
-/* 0x630E [0xCE 0x63 0x14 ] */ ldptr UNK_6314
+/* 0x630E [0xCE 0x63 0x14 ] */ ldptr ARRAY_6314
/* 0x6311 [0xFB 0x61 0x3E ] */ jump CHAN_613E
-UNK_6314:
- .byte 0x06, 0x5F
+.array ARRAY_6314
+ .byte SF0_EFFECT_6
+ .byte 95
.channel CHAN_6316
-/* 0x6316 [0xCE 0x63 0x1C ] */ ldptr UNK_631C
+/* 0x6316 [0xCE 0x63 0x1C ] */ ldptr ARRAY_631C
/* 0x6319 [0xFB 0x61 0x3E ] */ jump CHAN_613E
-UNK_631C:
- .byte 0x18, 0x6E
+.array ARRAY_631C
+ .byte SF0_EFFECT_24
+ .byte 110
.channel CHAN_631E
-/* 0x631E [0xCE 0x63 0x24 ] */ ldptr UNK_6324
+/* 0x631E [0xCE 0x63 0x24 ] */ ldptr ARRAY_6324
/* 0x6321 [0xFB 0x61 0x3E ] */ jump CHAN_613E
-UNK_6324:
- .byte 0x3C, 0x64
+.array ARRAY_6324
+ .byte SF0_EFFECT_60
+ .byte 100
.channel CHAN_6326
-/* 0x6326 [0xCE 0x63 0x2C ] */ ldptr UNK_632C
+/* 0x6326 [0xCE 0x63 0x2C ] */ ldptr ARRAY_632C
/* 0x6329 [0xFB 0x61 0x3E ] */ jump CHAN_613E
-UNK_632C:
- .byte 0x3D, 0x6E
+.array ARRAY_632C
+ .byte SF0_EFFECT_61
+ .byte 110
.channel CHAN_632E
-/* 0x632E [0xCE 0x63 0x34 ] */ ldptr UNK_6334
+/* 0x632E [0xCE 0x63 0x34 ] */ ldptr ARRAY_6334
/* 0x6331 [0xFB 0x61 0x3E ] */ jump CHAN_613E
-UNK_6334:
- .byte 0x0D, 0x71
+.array ARRAY_6334
+ .byte SF0_EFFECT_13
+ .byte 113
.channel CHAN_6336
-/* 0x6336 [0xCE 0x63 0x47 ] */ ldptr UNK_6347
+/* 0x6336 [0xCE 0x63 0x47 ] */ ldptr ARRAY_6347
/* 0x6339 [0xCF 0x61 0x1B ] */ stptrtoseq CHAN_611A + STSEQ_PTR_LDSEQ
-/* 0x633C [0xCE 0x63 0x4B ] */ ldptr UNK_634B
+/* 0x633C [0xCE 0x63 0x4B ] */ ldptr ARRAY_634B
/* 0x633F [0xCF 0x61 0x23 ] */ stptrtoseq CHAN_6122 + STSEQ_PTR_LDSEQ
/* 0x6342 [0xCC 0x04 ] */ ldi 4
/* 0x6344 [0xFB 0x60 0xF2 ] */ jump CHAN_60F2
-UNK_6347:
- .byte 0x1C, 0x1D, 0x1E, 0x1F
+.array ARRAY_6347
+ .byte SF0_EFFECT_28
+ .byte SF0_EFFECT_29
+ .byte SF0_EFFECT_30
+ .byte SF0_EFFECT_31
-UNK_634B:
- .byte 0x6E, 0x6E, 0x6E, 0x6E
+.array ARRAY_634B
+ .byte 110, 110, 110, 110
.channel CHAN_634F
-/* 0x634F [0xCE 0x63 0x72 ] */ ldptr UNK_6372
+/* 0x634F [0xCE 0x63 0x72 ] */ ldptr ARRAY_6372
/* 0x6352 [0xCF 0x61 0x1B ] */ stptrtoseq CHAN_611A + STSEQ_PTR_LDSEQ
-/* 0x6355 [0xCE 0x63 0x74 ] */ ldptr UNK_6374
+/* 0x6355 [0xCE 0x63 0x74 ] */ ldptr ARRAY_6374
/* 0x6358 [0xCF 0x61 0x23 ] */ stptrtoseq CHAN_6122 + STSEQ_PTR_LDSEQ
/* 0x635B [0xB8 0x02 ] */ rand 2
/* 0x635D [0xFB 0x61 0x34 ] */ jump CHAN_6134
@@ -14470,21 +14505,22 @@ CHAN_6367:
CHAN_6371:
/* 0x6371 [0x76 ] */ stio IO_PORT_6
-UNK_6372:
- .byte 0x20, 0x21
+.array ARRAY_6372
+ .byte SF0_EFFECT_32
+ .byte SF0_EFFECT_33
-UNK_6374:
- .byte 0x6E, 0x6E
+.array ARRAY_6374
+ .byte 110, 110
.channel CHAN_6376
/* 0x6376 [0x66 ] */ ldio IO_PORT_6
/* 0x6377 [0xC8 0xFF ] */ sub 255
/* 0x6379 [0x76 ] */ stio IO_PORT_6
/* 0x637A [0xC9 0x01 ] */ and 1
-/* 0x637C [0xCB 0x63 0x96 ] */ ldseq UNK_6396
-/* 0x637F [0xC7 0x40 0x63 0x90 ] */ stseq (ASEQ_OP_LAYER_NOTEDV | PITCH_A0), LAYER_6390 + STSEQ_NOTEDV_OPCODE_PITCH
+/* 0x637C [0xCB 0x63 0x96 ] */ ldseq ARRAY_6396
+/* 0x637F [0xC7 0x40 0x63 0x90 ] */ stseq (ASEQ_OP_LAYER_NOTEDV | SF0_EFFECT_0), LAYER_6390 + STSEQ_NOTEDV_OPCODE_PITCH
/* 0x6383 [0xB8 0x02 ] */ rand 2
-/* 0x6385 [0xCB 0x63 0x98 ] */ ldseq UNK_6398
+/* 0x6385 [0xCB 0x63 0x98 ] */ ldseq ARRAY_6398
/* 0x6388 [0xC7 0x00 0x63 0x92 ] */ stseq 0, LAYER_6390 + STSEQ_NOTEDV_VELOCITY_2
/* 0x638C [0x88 0x63 0x90 ] */ ldlayer 0, LAYER_6390
/* 0x638F [0xFF ] */ end
@@ -14494,95 +14530,104 @@ UNK_6374:
/* 0x6393 [0xC0 0x30 ] */ ldelay 48
/* 0x6395 [0xFF ] */ end
-UNK_6396:
- .byte 0x22, 0x32
+.array ARRAY_6396
+ .byte SF0_EFFECT_34
+ .byte SF0_EFFECT_50
-UNK_6398:
- .byte 0x64, 0x64
+.array ARRAY_6398
+ .byte 100, 100
.channel CHAN_639A
-/* 0x639A [0xCE 0x63 0xAB ] */ ldptr UNK_63AB
+/* 0x639A [0xCE 0x63 0xAB ] */ ldptr ARRAY_63AB
/* 0x639D [0xCF 0x61 0x1B ] */ stptrtoseq CHAN_611A + STSEQ_PTR_LDSEQ
-/* 0x63A0 [0xCE 0x63 0xAD ] */ ldptr UNK_63AD
+/* 0x63A0 [0xCE 0x63 0xAD ] */ ldptr ARRAY_63AD
/* 0x63A3 [0xCF 0x61 0x23 ] */ stptrtoseq CHAN_6122 + STSEQ_PTR_LDSEQ
/* 0x63A6 [0xB8 0x02 ] */ rand 2
/* 0x63A8 [0xFB 0x61 0x34 ] */ jump CHAN_6134
-UNK_63AB:
- .byte 0x23, 0x24
+.array ARRAY_63AB
+ .byte SF0_EFFECT_35
+ .byte SF0_EFFECT_36
-UNK_63AD:
- .byte 0x5A, 0x46
+.array ARRAY_63AD
+ .byte 90, 70
.channel CHAN_63AF
-/* 0x63AF [0xCE 0x63 0xC0 ] */ ldptr UNK_63C0
+/* 0x63AF [0xCE 0x63 0xC0 ] */ ldptr ARRAY_63C0
/* 0x63B2 [0xCF 0x61 0x1B ] */ stptrtoseq CHAN_611A + STSEQ_PTR_LDSEQ
-/* 0x63B5 [0xCE 0x63 0xC3 ] */ ldptr UNK_63C3
+/* 0x63B5 [0xCE 0x63 0xC3 ] */ ldptr ARRAY_63C3
/* 0x63B8 [0xCF 0x61 0x23 ] */ stptrtoseq CHAN_6122 + STSEQ_PTR_LDSEQ
/* 0x63BB [0xCC 0x03 ] */ ldi 3
/* 0x63BD [0xFB 0x60 0xF2 ] */ jump CHAN_60F2
-UNK_63C0:
- .byte 0x25, 0x26, 0x27
+.array ARRAY_63C0
+ .byte SF0_EFFECT_37
+ .byte SF0_EFFECT_38
+ .byte SF0_EFFECT_39
-UNK_63C3:
- .byte 0x6E, 0x6E, 0x6E
+.array ARRAY_63C3
+ .byte 110, 110, 110
.channel CHAN_63C6
-/* 0x63C6 [0xCE 0x63 0xD7 ] */ ldptr UNK_63D7
+/* 0x63C6 [0xCE 0x63 0xD7 ] */ ldptr ARRAY_63D7
/* 0x63C9 [0xCF 0x61 0x1B ] */ stptrtoseq CHAN_611A + STSEQ_PTR_LDSEQ
-/* 0x63CC [0xCE 0x63 0xDA ] */ ldptr UNK_63DA
+/* 0x63CC [0xCE 0x63 0xDA ] */ ldptr ARRAY_63DA
/* 0x63CF [0xCF 0x61 0x23 ] */ stptrtoseq CHAN_6122 + STSEQ_PTR_LDSEQ
/* 0x63D2 [0xCC 0x03 ] */ ldi 3
/* 0x63D4 [0xFB 0x60 0xF2 ] */ jump CHAN_60F2
-UNK_63D7:
- .byte 0x28, 0x29, 0x2A
+.array ARRAY_63D7
+ .byte SF0_EFFECT_40
+ .byte SF0_EFFECT_41
+ .byte SF0_EFFECT_42
-UNK_63DA:
- .byte 0x6E, 0x6E, 0x6E
+.array ARRAY_63DA
+ .byte 110, 110, 110
.channel CHAN_63DD
-/* 0x63DD [0xCE 0x63 0xEE ] */ ldptr UNK_63EE
+/* 0x63DD [0xCE 0x63 0xEE ] */ ldptr ARRAY_63EE
/* 0x63E0 [0xCF 0x61 0x1B ] */ stptrtoseq CHAN_611A + STSEQ_PTR_LDSEQ
-/* 0x63E3 [0xCE 0x63 0xF0 ] */ ldptr UNK_63F0
+/* 0x63E3 [0xCE 0x63 0xF0 ] */ ldptr ARRAY_63F0
/* 0x63E6 [0xCF 0x61 0x23 ] */ stptrtoseq CHAN_6122 + STSEQ_PTR_LDSEQ
/* 0x63E9 [0xB8 0x02 ] */ rand 2
/* 0x63EB [0xFB 0x61 0x34 ] */ jump CHAN_6134
-UNK_63EE:
- .byte 0x2D, 0x2E
+.array ARRAY_63EE
+ .byte SF0_EFFECT_45
+ .byte SF0_EFFECT_46
-UNK_63F0:
- .byte 0x64, 0x64
+.array ARRAY_63F0
+ .byte 100, 100
.channel CHAN_63F2
-/* 0x63F2 [0xCE 0x64 0x03 ] */ ldptr UNK_6403
+/* 0x63F2 [0xCE 0x64 0x03 ] */ ldptr ARRAY_6403
/* 0x63F5 [0xCF 0x61 0x1B ] */ stptrtoseq CHAN_611A + STSEQ_PTR_LDSEQ
-/* 0x63F8 [0xCE 0x64 0x05 ] */ ldptr UNK_6405
+/* 0x63F8 [0xCE 0x64 0x05 ] */ ldptr ARRAY_6405
/* 0x63FB [0xCF 0x61 0x23 ] */ stptrtoseq CHAN_6122 + STSEQ_PTR_LDSEQ
/* 0x63FE [0xB8 0x02 ] */ rand 2
/* 0x6400 [0xFB 0x61 0x34 ] */ jump CHAN_6134
-UNK_6403:
- .byte 0x2B, 0x2C
+.array ARRAY_6403
+ .byte SF0_EFFECT_43
+ .byte SF0_EFFECT_44
-UNK_6405:
- .byte 0x64, 0x64
+.array ARRAY_6405
+ .byte 100, 100
.channel CHAN_6407
-/* 0x6407 [0xCE 0x64 0x18 ] */ ldptr UNK_6418
+/* 0x6407 [0xCE 0x64 0x18 ] */ ldptr ARRAY_6418
/* 0x640A [0xCF 0x61 0x1B ] */ stptrtoseq CHAN_611A + STSEQ_PTR_LDSEQ
-/* 0x640D [0xCE 0x64 0x1A ] */ ldptr UNK_641A
+/* 0x640D [0xCE 0x64 0x1A ] */ ldptr ARRAY_641A
/* 0x6410 [0xCF 0x61 0x23 ] */ stptrtoseq CHAN_6122 + STSEQ_PTR_LDSEQ
/* 0x6413 [0xB8 0x02 ] */ rand 2
/* 0x6415 [0xFB 0x61 0x34 ] */ jump CHAN_6134
-UNK_6418:
- .byte 0x2F, 0x30
+.array ARRAY_6418
+ .byte SF0_EFFECT_47
+ .byte SF0_EFFECT_48
-UNK_641A:
- .byte 0x55, 0x55
+.array ARRAY_641A
+ .byte 85, 85
.channel CHAN_641C
/* 0x641C [0x88 0x64 0x20 ] */ ldlayer 0, LAYER_6420
@@ -14604,25 +14649,27 @@ UNK_641A:
/* 0x6433 [0xFF ] */ end
.channel CHAN_6434
-/* 0x6434 [0xCE 0x64 0x45 ] */ ldptr UNK_6445
+/* 0x6434 [0xCE 0x64 0x45 ] */ ldptr ARRAY_6445
/* 0x6437 [0xCF 0x61 0x1B ] */ stptrtoseq CHAN_611A + STSEQ_PTR_LDSEQ
-/* 0x643A [0xCE 0x64 0x47 ] */ ldptr UNK_6447
+/* 0x643A [0xCE 0x64 0x47 ] */ ldptr ARRAY_6447
/* 0x643D [0xCF 0x61 0x23 ] */ stptrtoseq CHAN_6122 + STSEQ_PTR_LDSEQ
/* 0x6440 [0xB8 0x02 ] */ rand 2
/* 0x6442 [0xFB 0x61 0x34 ] */ jump CHAN_6134
-UNK_6445:
- .byte 0x2B, 0x2C
+.array ARRAY_6445
+ .byte SF0_EFFECT_43
+ .byte SF0_EFFECT_44
-UNK_6447:
- .byte 0x64, 0x64
+.array ARRAY_6447
+ .byte 100, 100
.channel CHAN_6449
-/* 0x6449 [0xCE 0x64 0x4F ] */ ldptr UNK_644F
+/* 0x6449 [0xCE 0x64 0x4F ] */ ldptr ARRAY_644F
/* 0x644C [0xFB 0x61 0x3E ] */ jump CHAN_613E
-UNK_644F:
- .byte 0x14, 0x64
+.array ARRAY_644F
+ .byte SF0_EFFECT_20
+ .byte 100
.channel CHAN_6451
/* 0x6451 [0x88 0x64 0x55 ] */ ldlayer 0, LAYER_6455
@@ -14667,11 +14714,12 @@ UNK_644F:
/* 0x6492 [0xFF ] */ end
.channel CHAN_6493
-/* 0x6493 [0xCE 0x64 0x99 ] */ ldptr UNK_6499
+/* 0x6493 [0xCE 0x64 0x99 ] */ ldptr ARRAY_6499
/* 0x6496 [0xFB 0x61 0x3E ] */ jump CHAN_613E
-UNK_6499:
- .byte 0x1C, 0x64
+.array ARRAY_6499
+ .byte SF0_EFFECT_28
+ .byte 100
.channel CHAN_649B
/* 0x649B [0x88 0x64 0x9F ] */ ldlayer 0, LAYER_649F
@@ -14687,10 +14735,10 @@ UNK_6499:
/* 0x64A6 [0xC8 0xFF ] */ sub 255
/* 0x64A8 [0x76 ] */ stio IO_PORT_6
/* 0x64A9 [0xC9 0x01 ] */ and 1
-/* 0x64AB [0xCB 0x64 0xC5 ] */ ldseq UNK_64C5
-/* 0x64AE [0xC7 0x40 0x64 0xBF ] */ stseq (ASEQ_OP_LAYER_NOTEDV | PITCH_A0), LAYER_64BF + STSEQ_NOTEDV_OPCODE_PITCH
+/* 0x64AB [0xCB 0x64 0xC5 ] */ ldseq ARRAY_64C5
+/* 0x64AE [0xC7 0x40 0x64 0xBF ] */ stseq (ASEQ_OP_LAYER_NOTEDV | SF0_EFFECT_0), LAYER_64BF + STSEQ_NOTEDV_OPCODE_PITCH
/* 0x64B2 [0xB8 0x02 ] */ rand 2
-/* 0x64B4 [0xCB 0x64 0xC7 ] */ ldseq UNK_64C7
+/* 0x64B4 [0xCB 0x64 0xC7 ] */ ldseq ARRAY_64C7
/* 0x64B7 [0xC7 0x00 0x64 0xC1 ] */ stseq 0, LAYER_64BF + STSEQ_NOTEDV_VELOCITY_2
/* 0x64BB [0x88 0x64 0xBF ] */ ldlayer 0, LAYER_64BF
/* 0x64BE [0xFF ] */ end
@@ -14700,18 +14748,20 @@ UNK_6499:
/* 0x64C2 [0xC0 0x30 ] */ ldelay 48
/* 0x64C4 [0xFF ] */ end
-UNK_64C5:
- .byte 0x35, 0x36
+.array ARRAY_64C5
+ .byte SF0_EFFECT_53
+ .byte SF0_EFFECT_54
-UNK_64C7:
- .byte 0x50, 0x50
+.array ARRAY_64C7
+ .byte 80, 80
.channel CHAN_64C9
-/* 0x64C9 [0xCE 0x64 0xCF ] */ ldptr UNK_64CF
+/* 0x64C9 [0xCE 0x64 0xCF ] */ ldptr ARRAY_64CF
/* 0x64CC [0xFB 0x61 0x3E ] */ jump CHAN_613E
-UNK_64CF:
- .byte 0x21, 0x6E
+.array ARRAY_64CF
+ .byte SF0_EFFECT_33
+ .byte 110
.channel CHAN_64D1
/* 0x64D1 [0x88 0x64 0xD5 ] */ ldlayer 0, LAYER_64D5
@@ -14723,53 +14773,60 @@ UNK_64CF:
/* 0x64DA [0xFF ] */ end
.channel CHAN_64DB
-/* 0x64DB [0xCE 0x64 0xE1 ] */ ldptr UNK_64E1
+/* 0x64DB [0xCE 0x64 0xE1 ] */ ldptr ARRAY_64E1
/* 0x64DE [0xFB 0x61 0x3E ] */ jump CHAN_613E
-UNK_64E1:
- .byte 0x20, 0x5F
+.array ARRAY_64E1
+ .byte SF0_EFFECT_32
+ .byte 95
.channel CHAN_64E3
-/* 0x64E3 [0xCE 0x64 0xE9 ] */ ldptr UNK_64E9
+/* 0x64E3 [0xCE 0x64 0xE9 ] */ ldptr ARRAY_64E9
/* 0x64E6 [0xFB 0x61 0x3E ] */ jump CHAN_613E
-UNK_64E9:
- .byte 0x23, 0x5A
+.array ARRAY_64E9
+ .byte SF0_EFFECT_35
+ .byte 90
.channel CHAN_64EB
-/* 0x64EB [0xCE 0x64 0xF1 ] */ ldptr UNK_64F1
+/* 0x64EB [0xCE 0x64 0xF1 ] */ ldptr ARRAY_64F1
/* 0x64EE [0xFB 0x61 0x3E ] */ jump CHAN_613E
-UNK_64F1:
- .byte 0x22, 0x64
+.array ARRAY_64F1
+ .byte SF0_EFFECT_34
+ .byte 100
.channel CHAN_64F3
-/* 0x64F3 [0xCE 0x64 0xF9 ] */ ldptr UNK_64F9
+/* 0x64F3 [0xCE 0x64 0xF9 ] */ ldptr ARRAY_64F9
/* 0x64F6 [0xFB 0x61 0x3E ] */ jump CHAN_613E
-UNK_64F9:
- .byte 0x31, 0x73
+.array ARRAY_64F9
+ .byte SF0_EFFECT_49
+ .byte 115
.channel CHAN_64FB
-/* 0x64FB [0xCE 0x65 0x01 ] */ ldptr UNK_6501
+/* 0x64FB [0xCE 0x65 0x01 ] */ ldptr ARRAY_6501
/* 0x64FE [0xFB 0x61 0x3E ] */ jump CHAN_613E
-UNK_6501:
- .byte 0x3E, 0x64
+.array ARRAY_6501
+ .byte SF0_EFFECT_62
+ .byte 100
.channel CHAN_6503
-/* 0x6503 [0xCE 0x65 0x09 ] */ ldptr UNK_6509
+/* 0x6503 [0xCE 0x65 0x09 ] */ ldptr ARRAY_6509
/* 0x6506 [0xFB 0x61 0x3E ] */ jump CHAN_613E
-UNK_6509:
- .byte 0x3F, 0x6E
+.array ARRAY_6509
+ .byte SF0_EFFECT_63
+ .byte 110
.channel CHAN_650B
-/* 0x650B [0xCE 0x65 0x11 ] */ ldptr UNK_6511
+/* 0x650B [0xCE 0x65 0x11 ] */ ldptr ARRAY_6511
/* 0x650E [0xFB 0x61 0x3E ] */ jump CHAN_613E
-UNK_6511:
- .byte 0x2C, 0x64
+.array ARRAY_6511
+ .byte SF0_EFFECT_44
+ .byte 100
.channel CHAN_6513
/* 0x6513 [0xCC 0x20 ] */ ldi 32
@@ -14784,9 +14841,9 @@ UNK_6511:
.channel CHAN_6520
/* 0x6520 [0x64 ] */ ldio IO_PORT_SFX_INDEX_LOBITS
-/* 0x6521 [0xC8 0x50 ] */ sub 80
+/* 0x6521 [0xC8 0x50 ] */ sub NA_SE_VO_TA_SLEEP & 0xFF
/* 0x6523 [0xC7 0x19 0x65 0x36 ] */ stseq (ASEQ_OP_LAYER_NOTEDVG | PITCH_BF2), LAYER_6536 + STSEQ_NOTEDVG_OPCODE_PITCH
-/* 0x6527 [0xCB 0x65 0x3B ] */ ldseq UNK_653B
+/* 0x6527 [0xCB 0x65 0x3B ] */ ldseq ARRAY_653B
/* 0x652A [0xC7 0x00 0x65 0x38 ] */ stseq 0, LAYER_6536 + STSEQ_NOTEDVG_DELAY_LO
/* 0x652E [0x88 0x65 0x34 ] */ ldlayer 0, LAYER_6534
/* 0x6531 [0xDC 0x60 ] */ panweight 96
@@ -14798,16 +14855,16 @@ LAYER_6536:
/* 0x6536 [0x21 0x00 0x64 0x00 ] */ notedvg PITCH_GF3, 0, 100, 0
/* 0x653A [0xFF ] */ end
-UNK_653B:
- .byte 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x6E, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
- .byte 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
- .byte 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x6E
+.array ARRAY_653B
+ .byte 100, 100, 100, 100, 100, 100, 100, 100, 110, 100, 100, 100, 100, 100, 100, 100
+ .byte 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100
+ .byte 100, 100, 100, 100, 100, 100, 110
.channel CHAN_6562
/* 0x6562 [0x64 ] */ ldio IO_PORT_SFX_INDEX_LOBITS
-/* 0x6563 [0xC8 0x77 ] */ sub 119
+/* 0x6563 [0xC8 0x77 ] */ sub NA_SE_VO_Z1_OPENDOOR & 0xFF
/* 0x6565 [0xC7 0x00 0x65 0x76 ] */ stseq (ASEQ_OP_LAYER_NOTEDVG | PITCH_A0), LAYER_6576 + STSEQ_NOTEDVG_OPCODE_PITCH
-/* 0x6569 [0xCB 0x65 0x7B ] */ ldseq UNK_657B
+/* 0x6569 [0xCB 0x65 0x7B ] */ ldseq ARRAY_657B
/* 0x656C [0xC7 0x00 0x65 0x78 ] */ stseq 0, LAYER_6576 + STSEQ_NOTEDVG_DELAY_LO
/* 0x6570 [0x88 0x65 0x74 ] */ ldlayer 0, LAYER_6574
/* 0x6573 [0xFF ] */ end
@@ -14818,16 +14875,16 @@ LAYER_6576:
/* 0x6576 [0x00 0x00 0x64 0x00 ] */ notedvg PITCH_A0, 0, 100, 0
/* 0x657A [0xFF ] */ end
-UNK_657B:
- .byte 0x64, 0x64, 0x64, 0x64, 0x64, 0x64
+.array ARRAY_657B
+ .byte 100, 100, 100, 100, 100, 100
.channel CHAN_6581
/* 0x6581 [0xCC 0x20 ] */ ldi 32
/* 0x6583 [0x71 ] */ stio IO_PORT_1
/* 0x6584 [0x89 0x65 0x98 ] */ ldlayer 1, LAYER_6598
-/* 0x6587 [0xCE 0x65 0xA7 ] */ ldptr UNK_65A7
+/* 0x6587 [0xCE 0x65 0xA7 ] */ ldptr ARRAY_65A7
/* 0x658A [0xCF 0x61 0x1B ] */ stptrtoseq CHAN_611A + STSEQ_PTR_LDSEQ
-/* 0x658D [0xCE 0x65 0xAA ] */ ldptr UNK_65AA
+/* 0x658D [0xCE 0x65 0xAA ] */ ldptr ARRAY_65AA
/* 0x6590 [0xCF 0x61 0x23 ] */ stptrtoseq CHAN_6122 + STSEQ_PTR_LDSEQ
/* 0x6593 [0xCC 0x03 ] */ ldi 3
/* 0x6595 [0xFB 0x60 0xF2 ] */ jump CHAN_60F2
@@ -14840,11 +14897,13 @@ UNK_657B:
/* 0x65A3 [0x78 0x30 0x41 ] */ notedv PITCH_F5, 48, 65
/* 0x65A6 [0xFF ] */ end
-UNK_65A7:
- .byte 0x39, 0x3A, 0x3B
+.array ARRAY_65A7
+ .byte SF0_EFFECT_57
+ .byte SF0_EFFECT_58
+ .byte SF0_EFFECT_59
-UNK_65AA:
- .byte 0x64, 0x5F, 0x69
+.array ARRAY_65AA
+ .byte 100, 95, 105
.balign 16
diff --git a/assets/objects/object_link_boy/object_link_boy.c b/assets/objects/object_link_boy/object_link_boy.c
new file mode 100644
index 000000000..276e6b2b3
--- /dev/null
+++ b/assets/objects/object_link_boy/object_link_boy.c
@@ -0,0 +1,1314 @@
+#include "object_link_boy.h"
+#include "assets/objects/gameplay_keep/gameplay_keep.h"
+
+#include "array_count.h"
+#include "gfx.h"
+#include "z64player.h"
+
+// Eyes textures
+
+u64 gLinkAdultEyesOpenTex[TEX_LEN(u64, LINK_ADULT_EYES_TEX_WIDTH, LINK_ADULT_EYES_TEX_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultEyesOpenTex.ci8.tlut_gLinkAdultHeadTLUT.inc.c"
+};
+
+u64 gLinkAdultEyesHalfTex[TEX_LEN(u64, LINK_ADULT_EYES_TEX_WIDTH, LINK_ADULT_EYES_TEX_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultEyesHalfTex.ci8.tlut_gLinkAdultHeadTLUT.inc.c"
+};
+
+u64 gLinkAdultEyesClosedfTex[TEX_LEN(u64, LINK_ADULT_EYES_TEX_WIDTH, LINK_ADULT_EYES_TEX_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultEyesClosedfTex.ci8.tlut_gLinkAdultHeadTLUT.inc.c"
+};
+
+u64 gLinkAdultEyesRightTex[TEX_LEN(u64, LINK_ADULT_EYES_TEX_WIDTH, LINK_ADULT_EYES_TEX_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultEyesRightTex.ci8.tlut_gLinkAdultHeadTLUT.inc.c"
+};
+
+u64 gLinkAdultEyesLeftTex[TEX_LEN(u64, LINK_ADULT_EYES_TEX_WIDTH, LINK_ADULT_EYES_TEX_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultEyesLeftTex.ci8.tlut_gLinkAdultHeadTLUT.inc.c"
+};
+
+u64 gLinkAdultEyesWideTex[TEX_LEN(u64, LINK_ADULT_EYES_TEX_WIDTH, LINK_ADULT_EYES_TEX_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultEyesWideTex.ci8.tlut_gLinkAdultHeadTLUT.inc.c"
+};
+
+u64 gLinkAdultEyesDownTex[TEX_LEN(u64, LINK_ADULT_EYES_TEX_WIDTH, LINK_ADULT_EYES_TEX_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultEyesDownTex.ci8.tlut_gLinkAdultHeadTLUT.inc.c"
+};
+
+u64 gLinkAdultEyesWincingTex[TEX_LEN(u64, LINK_ADULT_EYES_TEX_WIDTH, LINK_ADULT_EYES_TEX_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultEyesWincingTex.ci8.tlut_gLinkAdultHeadTLUT.inc.c"
+};
+
+// Mouth textures
+
+u64 gLinkAdultMouthClosedTex[TEX_LEN(u64, LINK_ADULT_MOUTH_TEX_WIDTH, LINK_ADULT_MOUTH_TEX_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultMouthClosedTex.ci8.tlut_gLinkAdultHeadTLUT.inc.c"
+};
+
+u64 gLinkAdultMouthHalfTex[TEX_LEN(u64, LINK_ADULT_MOUTH_TEX_WIDTH, LINK_ADULT_MOUTH_TEX_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultMouthHalfTex.ci8.tlut_gLinkAdultHeadTLUT.inc.c"
+};
+
+u64 gLinkAdultMouthOpenTex[TEX_LEN(u64, LINK_ADULT_MOUTH_TEX_WIDTH, LINK_ADULT_MOUTH_TEX_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultMouthOpenTex.ci8.tlut_gLinkAdultHeadTLUT.inc.c"
+};
+
+u64 gLinkAdultMouthSmileTex[TEX_LEN(u64, LINK_ADULT_MOUTH_TEX_WIDTH, LINK_ADULT_MOUTH_TEX_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultMouthSmileTex.ci8.tlut_gLinkAdultHeadTLUT.inc.c"
+};
+
+// Textures
+
+#define gLinkAdultEarTex_WIDTH 16
+#define gLinkAdultEarTex_HEIGHT 16
+u64 gLinkAdultEarTex[TEX_LEN(u64, gLinkAdultEarTex_WIDTH, gLinkAdultEarTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultEarTex.ci8.tlut_gLinkAdultHeadTLUT.inc.c"
+};
+
+#define gLinkAdultNoseTex_WIDTH 16
+#define gLinkAdultNoseTex_HEIGHT 16
+u64 gLinkAdultNoseTex[TEX_LEN(u64, gLinkAdultNoseTex_WIDTH, gLinkAdultNoseTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultNoseTex.ci8.tlut_gLinkAdultHeadTLUT.inc.c"
+};
+
+#define gLinkAdultNose2Tex_WIDTH 16
+#define gLinkAdultNose2Tex_HEIGHT 16
+u64 gLinkAdultNose2Tex[TEX_LEN(u64, gLinkAdultNose2Tex_WIDTH, gLinkAdultNose2Tex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultNose2Tex.ci8.tlut_gLinkAdultHeadTLUT.inc.c"
+};
+
+#define gLinkAdultUnusedHandTex_WIDTH 16
+#define gLinkAdultUnusedHandTex_HEIGHT 16
+u64 gLinkAdultUnusedHandTex[TEX_LEN(u64, gLinkAdultUnusedHandTex_WIDTH, gLinkAdultUnusedHandTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultUnusedHandTex.ci8.tlut_gLinkAdultHeadTLUT.inc.c"
+};
+
+u64 gLinkAdultTLUT1[] = {
+#include "assets/objects/object_link_boy/gLinkAdultBootFarTex.tlut.rgba16.inc.c"
+};
+
+#define gLinkAdultBootFarTex_WIDTH 16
+#define gLinkAdultBootFarTex_HEIGHT 32
+u64 gLinkAdultBootFarTex[TEX_LEN(u64, gLinkAdultBootFarTex_WIDTH, gLinkAdultBootFarTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultBootFarTex.ci8.inc.c"
+};
+
+u64 gLinkAdultTLUT2[] = {
+#include "assets/objects/object_link_boy/gLinkAdultTLUT2.tlut.rgba16.inc.c"
+};
+
+u64 gLinkAdultTLUT3[] = {
+#include "assets/objects/object_link_boy/gLinkAdultTLUT3.tlut.rgba16.inc.c"
+};
+
+u8 gLinkAdult_5AB0_Blob[] = {
+#include "assets/objects/object_link_boy/gLinkAdult_5AB0_Blob.bin.inc.c"
+};
+
+u64 gLinkAdultHeadTLUT[] = {
+#include "assets/objects/object_link_boy/gLinkAdultHeadTLUT.tlut.rgba16.inc.c"
+};
+
+u64 gLinkAdultTlut_005E00[] = {
+#include "assets/objects/object_link_boy/gLinkAdultTlut_005E00.tlut.rgba16.inc.c"
+};
+
+#define gLinkAdultBootTex_WIDTH 16
+#define gLinkAdultBootTex_HEIGHT 16
+u64 gLinkAdultBootTex[TEX_LEN(u64, gLinkAdultBootTex_WIDTH, gLinkAdultBootTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultBootTex.ci8.tlut_gLinkAdultTLUT2.inc.c"
+};
+
+#define gLinkAdultLegTex_WIDTH 16
+#define gLinkAdultLegTex_HEIGHT 32
+u64 gLinkAdultLegTex[TEX_LEN(u64, gLinkAdultLegTex_WIDTH, gLinkAdultLegTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultLegTex.ci8.tlut_gLinkAdultTLUT3.inc.c"
+};
+
+#define gLinkAdultBoot2Tex_WIDTH 16
+#define gLinkAdultBoot2Tex_HEIGHT 32
+u64 gLinkAdultBoot2Tex[TEX_LEN(u64, gLinkAdultBoot2Tex_WIDTH, gLinkAdultBoot2Tex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultBoot2Tex.ci8.tlut_gLinkAdultTLUT2.inc.c"
+};
+
+#define gLinkAdultBootBuckleTex_WIDTH 32
+#define gLinkAdultBootBuckleTex_HEIGHT 16
+u64 gLinkAdultBootBuckleTex[TEX_LEN(u64, gLinkAdultBootBuckleTex_WIDTH, gLinkAdultBootBuckleTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultBootBuckleTex.ci8.tlut_gLinkAdultTLUT2.inc.c"
+};
+
+#define gLinkAdultSkirtAndHatTex_WIDTH 32
+#define gLinkAdultSkirtAndHatTex_HEIGHT 32
+u64 gLinkAdultSkirtAndHatTex[TEX_LEN(u64, gLinkAdultSkirtAndHatTex_WIDTH, gLinkAdultSkirtAndHatTex_HEIGHT, 16)] = {
+#include "assets/objects/object_link_boy/gLinkAdultSkirtAndHatTex.rgba16.inc.c"
+};
+
+#define gLinkAdultBeltTex_WIDTH 8
+#define gLinkAdultBeltTex_HEIGHT 16
+u64 gLinkAdultBeltTex[TEX_LEN(u64, gLinkAdultBeltTex_WIDTH, gLinkAdultBeltTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultBeltTex.ci8.tlut_gLinkAdultTLUT2.inc.c"
+};
+
+#define gLinkAdultBeltClaspTex_WIDTH 32
+#define gLinkAdultBeltClaspTex_HEIGHT 16
+u64 gLinkAdultBeltClaspTex[TEX_LEN(u64, gLinkAdultBeltClaspTex_WIDTH, gLinkAdultBeltClaspTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultBeltClaspTex.ci8.tlut_gLinkAdultTLUT2.inc.c"
+};
+
+#define gLinkAdultEarringTex_WIDTH 32
+#define gLinkAdultEarringTex_HEIGHT 32
+u64 gLinkAdultEarringTex[TEX_LEN(u64, gLinkAdultEarringTex_WIDTH, gLinkAdultEarringTex_HEIGHT, 16)] = {
+#include "assets/objects/object_link_boy/gLinkAdultEarringTex.ia16.inc.c"
+};
+
+#define gLinkAdultNeckTex_WIDTH 16
+#define gLinkAdultNeckTex_HEIGHT 32
+u64 gLinkAdultNeckTex[TEX_LEN(u64, gLinkAdultNeckTex_WIDTH, gLinkAdultNeckTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultNeckTex.ci8.tlut_gLinkAdultTLUT3.inc.c"
+};
+
+#define gLinkAdultUnusedGauntlet1Tex_WIDTH 16
+#define gLinkAdultUnusedGauntlet1Tex_HEIGHT 32
+u64 gLinkAdultUnusedGauntlet1Tex[TEX_LEN(u64, gLinkAdultUnusedGauntlet1Tex_WIDTH, gLinkAdultUnusedGauntlet1Tex_HEIGHT,
+ 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultUnusedGauntlet1Tex.ci8.tlut_gLinkAdultTLUT2.inc.c"
+};
+
+#define gLinkAdultUnusedGauntlet2Tex_WIDTH 16
+#define gLinkAdultUnusedGauntlet2Tex_HEIGHT 32
+u64 gLinkAdultUnusedGauntlet2Tex[TEX_LEN(u64, gLinkAdultUnusedGauntlet2Tex_WIDTH, gLinkAdultUnusedGauntlet2Tex_HEIGHT,
+ 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultUnusedGauntlet2Tex.ci8.tlut_gLinkAdultTLUT2.inc.c"
+};
+
+#define gLinkAdultArmGauntletTex_WIDTH 32
+#define gLinkAdultArmGauntletTex_HEIGHT 32
+u64 gLinkAdultArmGauntletTex[TEX_LEN(u64, gLinkAdultArmGauntletTex_WIDTH, gLinkAdultArmGauntletTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultArmGauntletTex.ci8.tlut_gLinkAdultTLUT2.inc.c"
+};
+
+#define gLinkAdultUnusedSheathTex_WIDTH 32
+#define gLinkAdultUnusedSheathTex_HEIGHT 64
+u64 gLinkAdultUnusedSheathTex[TEX_LEN(u64, gLinkAdultUnusedSheathTex_WIDTH, gLinkAdultUnusedSheathTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultUnusedSheathTex.ci8.tlut_gLinkAdultTlut_005E00.inc.c"
+};
+
+#define gLinkAdultUnusedSheathBandTex_WIDTH 32
+#define gLinkAdultUnusedSheathBandTex_HEIGHT 16
+u64 gLinkAdultUnusedSheathBandTex[TEX_LEN(u64, gLinkAdultUnusedSheathBandTex_WIDTH,
+ gLinkAdultUnusedSheathBandTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultUnusedSheathBandTex.ci8.tlut_gLinkAdultTlut_005E00.inc.c"
+};
+
+#define gLinkAdultUnusedSwordPommelTex_WIDTH 16
+#define gLinkAdultUnusedSwordPommelTex_HEIGHT 16
+u64 gLinkAdultUnusedSwordPommelTex[TEX_LEN(u64, gLinkAdultUnusedSwordPommelTex_WIDTH,
+ gLinkAdultUnusedSwordPommelTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultUnusedSwordPommelTex.ci8.tlut_gLinkAdultTlut_005E00.inc.c"
+};
+
+#define gLinkAdultUnusedSwordGuardTex_WIDTH 32
+#define gLinkAdultUnusedSwordGuardTex_HEIGHT 32
+u64 gLinkAdultUnusedSwordGuardTex[TEX_LEN(u64, gLinkAdultUnusedSwordGuardTex_WIDTH,
+ gLinkAdultUnusedSwordGuardTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultUnusedSwordGuardTex.ci8.tlut_gLinkAdultTlut_005E00.inc.c"
+};
+
+#define gLinkAdultUnusedSwordEmblemTex_WIDTH 16
+#define gLinkAdultUnusedSwordEmblemTex_HEIGHT 16
+u64 gLinkAdultUnusedSwordEmblemTex[TEX_LEN(u64, gLinkAdultUnusedSwordEmblemTex_WIDTH,
+ gLinkAdultUnusedSwordEmblemTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultUnusedSwordEmblemTex.ci8.tlut_gLinkAdultTlut_005E00.inc.c"
+};
+
+#define gLinkAdultTunicTex_WIDTH 16
+#define gLinkAdultTunicTex_HEIGHT 32
+u64 gLinkAdultTunicTex[TEX_LEN(u64, gLinkAdultTunicTex_WIDTH, gLinkAdultTunicTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultTunicTex.ci8.tlut_gLinkAdultTLUT3.inc.c"
+};
+
+#define gLinkAdultCollarTex_WIDTH 16
+#define gLinkAdultCollarTex_HEIGHT 32
+u64 gLinkAdultCollarTex[TEX_LEN(u64, gLinkAdultCollarTex_WIDTH, gLinkAdultCollarTex_HEIGHT, 16)] = {
+#include "assets/objects/object_link_boy/gLinkAdultCollarTex.rgba16.inc.c"
+};
+
+#define gLinkAdultGauntletPlate1Tex_WIDTH 16
+#define gLinkAdultGauntletPlate1Tex_HEIGHT 32
+u64 gLinkAdultGauntletPlate1Tex[TEX_LEN(u64, gLinkAdultGauntletPlate1Tex_WIDTH, gLinkAdultGauntletPlate1Tex_HEIGHT,
+ 16)] = {
+#include "assets/objects/object_link_boy/gLinkAdultGauntletPlate1Tex.rgba16.inc.c"
+};
+
+#define gLinkAdultGauntletPlate2Tex_WIDTH 32
+#define gLinkAdultGauntletPlate2Tex_HEIGHT 32
+u64 gLinkAdultGauntletPlate2Tex[TEX_LEN(u64, gLinkAdultGauntletPlate2Tex_WIDTH, gLinkAdultGauntletPlate2Tex_HEIGHT,
+ 16)] = {
+#include "assets/objects/object_link_boy/gLinkAdultGauntletPlate2Tex.rgba16.inc.c"
+};
+
+#define gLinkAdultHoverBootsHeelTex_WIDTH 16
+#define gLinkAdultHoverBootsHeelTex_HEIGHT 8
+u64 gLinkAdultHoverBootsHeelTex[TEX_LEN(u64, gLinkAdultHoverBootsHeelTex_WIDTH, gLinkAdultHoverBootsHeelTex_HEIGHT,
+ 16)] = {
+#include "assets/objects/object_link_boy/gLinkAdultHoverBootsHeelTex.rgba16.inc.c"
+};
+
+#define gLinkAdultHoverBootsJetTex_WIDTH 32
+#define gLinkAdultHoverBootsJetTex_HEIGHT 32
+u64 gLinkAdultHoverBootsJetTex[TEX_LEN(u64, gLinkAdultHoverBootsJetTex_WIDTH, gLinkAdultHoverBootsJetTex_HEIGHT,
+ 16)] = {
+#include "assets/objects/object_link_boy/gLinkAdultHoverBootsJetTex.rgba16.inc.c"
+};
+
+#define gLinkAdultHoverBootsFeatherTex_WIDTH 32
+#define gLinkAdultHoverBootsFeatherTex_HEIGHT 16
+u64 gLinkAdultHoverBootsFeatherTex[TEX_LEN(u64, gLinkAdultHoverBootsFeatherTex_WIDTH,
+ gLinkAdultHoverBootsFeatherTex_HEIGHT, 16)] = {
+#include "assets/objects/object_link_boy/gLinkAdultHoverBootsFeatherTex.rgba16.inc.c"
+};
+
+#define gLinkAdultMirrorShieldLowerDesignTex_WIDTH 32
+#define gLinkAdultMirrorShieldLowerDesignTex_HEIGHT 64
+u64 gLinkAdultMirrorShieldLowerDesignTex[TEX_LEN(u64, gLinkAdultMirrorShieldLowerDesignTex_WIDTH,
+ gLinkAdultMirrorShieldLowerDesignTex_HEIGHT, 16)] = {
+#include "assets/objects/object_link_boy/gLinkAdultMirrorShieldLowerDesignTex.ia16.inc.c"
+};
+
+#define gLinkAdultMirrorShieldUpperDesignTex_WIDTH 64
+#define gLinkAdultMirrorShieldUpperDesignTex_HEIGHT 32
+u64 gLinkAdultMirrorShieldUpperDesignTex[TEX_LEN(u64, gLinkAdultMirrorShieldUpperDesignTex_WIDTH,
+ gLinkAdultMirrorShieldUpperDesignTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultMirrorShieldUpperDesignTex.ia8.inc.c"
+};
+
+#define gLinkAdultHookshotMetalTex_WIDTH 8
+#define gLinkAdultHookshotMetalTex_HEIGHT 8
+u64 gLinkAdultHookshotMetalTex[TEX_LEN(u64, gLinkAdultHookshotMetalTex_WIDTH, gLinkAdultHookshotMetalTex_HEIGHT,
+ 16)] = {
+#include "assets/objects/object_link_boy/gLinkAdultHookshotMetalTex.rgba16.inc.c"
+};
+
+#define gLinkAdultBowBodyTex_WIDTH 8
+#define gLinkAdultBowBodyTex_HEIGHT 8
+u64 gLinkAdultBowBodyTex[TEX_LEN(u64, gLinkAdultBowBodyTex_WIDTH, gLinkAdultBowBodyTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultBowBodyTex.i8.inc.c"
+};
+
+u64 gLinkAdultTLUT4[] = {
+#include "assets/objects/object_link_boy/gLinkAdultTLUT4.tlut.rgba16.inc.c"
+};
+
+u8 gLinkAdult_CD40_Blob[] = {
+#include "assets/objects/object_link_boy/gLinkAdult_CD40_Blob.bin.inc.c"
+};
+
+u64 gLinkAdultTLUT5[] = {
+#include "assets/objects/object_link_boy/gLinkAdultTLUT5.tlut.rgba16.inc.c"
+};
+
+u8 gLinkAdult_CF48_Blob[] = {
+#include "assets/objects/object_link_boy/gLinkAdult_CF48_Blob.bin.inc.c"
+};
+
+u64 gLinkAdultTLUT6[] = {
+#include "assets/objects/object_link_boy/gLinkAdultTLUT6.tlut.rgba16.inc.c"
+};
+
+u8 gLinkAdult_D070_Blob[] = {
+#include "assets/objects/object_link_boy/gLinkAdult_D070_Blob.bin.inc.c"
+};
+
+u64 gLinkAdultTLUT7[] = {
+#include "assets/objects/object_link_boy/gLinkAdultArmOutSleeveTex.tlut.rgba16.inc.c"
+};
+
+#define gLinkAdultSwordPommelTex_WIDTH 16
+#define gLinkAdultSwordPommelTex_HEIGHT 16
+u64 gLinkAdultSwordPommelTex[TEX_LEN(u64, gLinkAdultSwordPommelTex_WIDTH, gLinkAdultSwordPommelTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultSwordPommelTex.ci8.tlut_gLinkAdultTLUT4.inc.c"
+};
+
+#define gLinkAdultIronBootTex_WIDTH 16
+#define gLinkAdultIronBootTex_HEIGHT 16
+u64 gLinkAdultIronBootTex[TEX_LEN(u64, gLinkAdultIronBootTex_WIDTH, gLinkAdultIronBootTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultIronBootTex.ci8.tlut_gLinkAdultTLUT4.inc.c"
+};
+
+#define gLinkAdultDefaultGauntlet1Tex_WIDTH 16
+#define gLinkAdultDefaultGauntlet1Tex_HEIGHT 32
+u64 gLinkAdultDefaultGauntlet1Tex[TEX_LEN(u64, gLinkAdultDefaultGauntlet1Tex_WIDTH,
+ gLinkAdultDefaultGauntlet1Tex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultDefaultGauntlet1Tex.ci8.tlut_gLinkAdultTLUT5.inc.c"
+};
+
+#define gLinkAdultShieldHandleTex_WIDTH 8
+#define gLinkAdultShieldHandleTex_HEIGHT 16
+u64 gLinkAdultShieldHandleTex[TEX_LEN(u64, gLinkAdultShieldHandleTex_WIDTH, gLinkAdultShieldHandleTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultShieldHandleTex.ci8.tlut_gLinkAdultTLUT5.inc.c"
+};
+
+#define gLinkAdultDefaultGauntlet2Tex_WIDTH 16
+#define gLinkAdultDefaultGauntlet2Tex_HEIGHT 32
+u64 gLinkAdultDefaultGauntlet2Tex[TEX_LEN(u64, gLinkAdultDefaultGauntlet2Tex_WIDTH,
+ gLinkAdultDefaultGauntlet2Tex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultDefaultGauntlet2Tex.ci8.tlut_gLinkAdultTLUT5.inc.c"
+};
+
+#define gLinkAdultHandTex_WIDTH 16
+#define gLinkAdultHandTex_HEIGHT 16
+u64 gLinkAdultHandTex[TEX_LEN(u64, gLinkAdultHandTex_WIDTH, gLinkAdultHandTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultHandTex.ci8.tlut_gLinkAdultTLUT6.inc.c"
+};
+
+#define gLinkAdultClosedHandThumbTex_WIDTH 16
+#define gLinkAdultClosedHandThumbTex_HEIGHT 16
+u64 gLinkAdultClosedHandThumbTex[TEX_LEN(u64, gLinkAdultClosedHandThumbTex_WIDTH, gLinkAdultClosedHandThumbTex_HEIGHT,
+ 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultClosedHandThumbTex.ci8.tlut_gLinkAdultTLUT6.inc.c"
+};
+
+#define gLinkAdultHylianShieldBackTex_WIDTH 16
+#define gLinkAdultHylianShieldBackTex_HEIGHT 32
+u64 gLinkAdultHylianShieldBackTex[TEX_LEN(u64, gLinkAdultHylianShieldBackTex_WIDTH,
+ gLinkAdultHylianShieldBackTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultHylianShieldBackTex.ci8.tlut_gLinkAdultTLUT4.inc.c"
+};
+
+#define gLinkAdultClosedHandSideTex_WIDTH 16
+#define gLinkAdultClosedHandSideTex_HEIGHT 16
+u64 gLinkAdultClosedHandSideTex[TEX_LEN(u64, gLinkAdultClosedHandSideTex_WIDTH, gLinkAdultClosedHandSideTex_HEIGHT,
+ 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultClosedHandSideTex.ci8.tlut_gLinkAdultTLUT6.inc.c"
+};
+
+#define gLinkAdultSheathTex_WIDTH 32
+#define gLinkAdultSheathTex_HEIGHT 32
+u64 gLinkAdultSheathTex[TEX_LEN(u64, gLinkAdultSheathTex_WIDTH, gLinkAdultSheathTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultSheathTex.ci8.tlut_gLinkAdultTLUT4.inc.c"
+};
+
+#define gLinkAdultArmOutUpperGauntletTex_WIDTH 32
+#define gLinkAdultArmOutUpperGauntletTex_HEIGHT 32
+u64 gLinkAdultArmOutUpperGauntletTex[TEX_LEN(u64, gLinkAdultArmOutUpperGauntletTex_WIDTH,
+ gLinkAdultArmOutUpperGauntletTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultArmOutUpperGauntletTex.ci8.tlut_gLinkAdultTLUT5.inc.c"
+};
+
+#define gLinkAdultSwordGuardTex_WIDTH 32
+#define gLinkAdultSwordGuardTex_HEIGHT 32
+u64 gLinkAdultSwordGuardTex[TEX_LEN(u64, gLinkAdultSwordGuardTex_WIDTH, gLinkAdultSwordGuardTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultSwordGuardTex.ci8.tlut_gLinkAdultTLUT4.inc.c"
+};
+
+#define gLinkAdultSheathBandTex_WIDTH 32
+#define gLinkAdultSheathBandTex_HEIGHT 16
+u64 gLinkAdultSheathBandTex[TEX_LEN(u64, gLinkAdultSheathBandTex_WIDTH, gLinkAdultSheathBandTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultSheathBandTex.ci8.tlut_gLinkAdultTLUT4.inc.c"
+};
+
+#define gLinkAdultSwordEmblemTex_WIDTH 16
+#define gLinkAdultSwordEmblemTex_HEIGHT 16
+u64 gLinkAdultSwordEmblemTex[TEX_LEN(u64, gLinkAdultSwordEmblemTex_WIDTH, gLinkAdultSwordEmblemTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultSwordEmblemTex.ci8.tlut_gLinkAdultTLUT4.inc.c"
+};
+
+#define gLinkAdultHookshotHandleTex_WIDTH 16
+#define gLinkAdultHookshotHandleTex_HEIGHT 8
+u64 gLinkAdultHookshotHandleTex[TEX_LEN(u64, gLinkAdultHookshotHandleTex_WIDTH, gLinkAdultHookshotHandleTex_HEIGHT,
+ 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultHookshotHandleTex.ci8.tlut_gLinkAdultTLUT5.inc.c"
+};
+
+#define gLinkAdultHookshotDesignTex_WIDTH 16
+#define gLinkAdultHookshotDesignTex_HEIGHT 32
+u64 gLinkAdultHookshotDesignTex[TEX_LEN(u64, gLinkAdultHookshotDesignTex_WIDTH, gLinkAdultHookshotDesignTex_HEIGHT,
+ 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultHookshotDesignTex.ci8.tlut_gLinkAdultTLUT4.inc.c"
+};
+
+#define gLinkAdultArmOutSleeveTex_WIDTH 16
+#define gLinkAdultArmOutSleeveTex_HEIGHT 32
+u64 gLinkAdultArmOutSleeveTex[TEX_LEN(u64, gLinkAdultArmOutSleeveTex_WIDTH, gLinkAdultArmOutSleeveTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultArmOutSleeveTex.ci8.inc.c"
+};
+
+// Various vertices and DLs
+
+Vtx gLinkAdultHylianShieldSwordAndSheathNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultHylianShieldSwordAndSheathNearVtx.inc.c"
+};
+
+Vtx gLinkAdultHylianShieldAndSheathNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultHylianShieldAndSheathNearVtx.inc.c"
+};
+
+Vtx gLinkAdultMirrorShieldSwordAndSheathNearVtx1[] = {
+#include "assets/objects/object_link_boy/gLinkAdultMirrorShieldSwordAndSheathNearVtx1.inc.c"
+};
+
+Vtx gLinkAdultMirrorShieldAndSheathNearVtx1[] = {
+#include "assets/objects/object_link_boy/gLinkAdultMirrorShieldAndSheathNearVtx1.inc.c"
+};
+
+Vtx gLinkAdultLeftHandNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftHandNearVtx.inc.c"
+};
+
+Vtx gLinkAdultLeftHandClosedNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftHandClosedNearVtx.inc.c"
+};
+
+Vtx gLinkAdultLeftHandHoldingMasterSwordNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftHandHoldingMasterSwordNearVtx.inc.c"
+};
+
+Vtx gLinkAdultRightHandNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandNearVtx.inc.c"
+};
+
+Vtx gLinkAdultRightHandClosedNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandClosedNearVtx.inc.c"
+};
+
+Vtx gLinkAdultRightHandHoldingHylianShieldNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandHoldingHylianShieldNearVtx.inc.c"
+};
+
+Vtx gLinkAdultRightHandHoldingBowNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandHoldingBowNearVtx.inc.c"
+};
+
+Vtx gLinkAdultMasterSwordAndSheathNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultMasterSwordAndSheathNearVtx.inc.c"
+};
+
+Vtx gLinkAdultLeftHandHoldingHammerNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftHandHoldingHammerNearVtx.inc.c"
+};
+
+Vtx gLinkAdultLeftHandHoldingBgsNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftHandHoldingBgsNearVtx.inc.c"
+};
+
+Vtx gLinkAdultHandHoldingBrokenGiantsKnifeVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultHandHoldingBrokenGiantsKnifeVtx.inc.c"
+};
+
+Vtx gLinkAdultRightHandHoldingMirrorShieldNearVtx1[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandHoldingMirrorShieldNearVtx1.inc.c"
+};
+
+Vtx gLinkAdultRightHandHoldingOotNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandHoldingOotNearVtx.inc.c"
+};
+
+Vtx gLinkAdultSheathNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultSheathNearVtx.inc.c"
+};
+
+Vtx gLinkAdultLeftHandOutNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftHandOutNearVtx.inc.c"
+};
+
+Vtx gLinkAdultRightHandHoldingHookshotNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandHoldingHookshotNearVtx.inc.c"
+};
+
+Vtx gLinkAdultLeftGauntletPlate1Vtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftGauntletPlate1Vtx.inc.c"
+};
+
+Vtx gLinkAdultLeftGauntletPlate2Vtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftGauntletPlate2Vtx.inc.c"
+};
+
+Vtx gLinkAdultLeftGauntletPlate3Vtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftGauntletPlate3Vtx.inc.c"
+};
+
+Vtx gLinkAdultRightGauntletPlate1Vtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightGauntletPlate1Vtx.inc.c"
+};
+
+Vtx gLinkAdultRightGauntletPlate2Vtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightGauntletPlate2Vtx.inc.c"
+};
+
+Vtx gLinkAdultRightGauntletPlate3Vtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightGauntletPlate3Vtx.inc.c"
+};
+
+Vtx gLinkAdultLeftIronBootVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftIronBootVtx.inc.c"
+};
+
+Vtx gLinkAdultRightIronBootVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightIronBootVtx.inc.c"
+};
+
+Vtx gLinkAdultLeftHoverBootVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftHoverBootVtx.inc.c"
+};
+
+Vtx gLinkAdultRightHoverBootVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHoverBootVtx.inc.c"
+};
+
+Vtx gLinkAdultHylianShieldSwordAndSheathFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultHylianShieldSwordAndSheathFarVtx.inc.c"
+};
+
+Vtx gLinkAdultHylianShieldAndSheathFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultHylianShieldAndSheathFarVtx.inc.c"
+};
+
+Vtx gLinkAdultMirrorShieldSwordAndSheathFarVtx1[] = {
+#include "assets/objects/object_link_boy/gLinkAdultMirrorShieldSwordAndSheathFarVtx1.inc.c"
+};
+
+Vtx gLinkAdultMirrorShieldAndSheathFarVtx1[] = {
+#include "assets/objects/object_link_boy/gLinkAdultMirrorShieldAndSheathFarVtx1.inc.c"
+};
+
+Vtx gLinkAdultLeftHandFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftHandFarVtx.inc.c"
+};
+
+Vtx gLinkAdultLeftHandClosedFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftHandClosedFarVtx.inc.c"
+};
+
+Vtx gLinkAdultLeftHandHoldingMasterSwordFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftHandHoldingMasterSwordFarVtx.inc.c"
+};
+
+Vtx gLinkAdultRightHandFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandFarVtx.inc.c"
+};
+
+Vtx gLinkAdultRightHandClosedFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandClosedFarVtx.inc.c"
+};
+
+Vtx gLinkAdultRightHandHoldingHylianShieldFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandHoldingHylianShieldFarVtx.inc.c"
+};
+
+Vtx gLinkAdultRightHandHoldingBowFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandHoldingBowFarVtx.inc.c"
+};
+
+Vtx gLinkAdultMasterSwordAndSheathFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultMasterSwordAndSheathFarVtx.inc.c"
+};
+
+Vtx gLinkAdultSheathFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultSheathFarVtx.inc.c"
+};
+
+Vtx gLinkAdultLeftHandHoldingHammerFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftHandHoldingHammerFarVtx.inc.c"
+};
+
+Vtx gLinkAdultLeftHandHoldingBgsFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftHandHoldingBgsFarVtx.inc.c"
+};
+
+Vtx gLinkAdultRightHandHoldingMirrorShieldFarVtx1[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandHoldingMirrorShieldFarVtx1.inc.c"
+};
+
+Vtx gLinkAdultRightHandHoldingOotFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandHoldingOotFarVtx.inc.c"
+};
+
+Vtx gLinkAdultHandHoldingBrokenGiantsKnifeFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultHandHoldingBrokenGiantsKnifeFarVtx.inc.c"
+};
+
+Vtx gLinkAdultHandHoldingBottleVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultHandHoldingBottleVtx.inc.c"
+};
+
+Vtx gLinkAdultRightArmOutNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightArmOutNearVtx.inc.c"
+};
+
+Vtx gLinkAdultRightHandOutNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandOutNearVtx.inc.c"
+};
+
+Vtx gLinkAdultLeftArmOutNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftArmOutNearVtx.inc.c"
+};
+
+Vtx gLinkAdultRightHandHoldingBowFirstPersonVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandHoldingBowFirstPersonVtx.inc.c"
+};
+
+Vtx gLinkAdultRightHandHoldingHookshotFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandHoldingHookshotFarVtx.inc.c"
+};
+
+Vtx gLinkAdultMirrorShieldSwordAndSheathNearVtx2[] = {
+#include "assets/objects/object_link_boy/gLinkAdultMirrorShieldSwordAndSheathNearVtx2.inc.c"
+};
+
+Vtx gLinkAdultMirrorShieldAndSheathNearVtx2[] = {
+#include "assets/objects/object_link_boy/gLinkAdultMirrorShieldAndSheathNearVtx2.inc.c"
+};
+
+Vtx gLinkAdultRightHandHoldingMirrorShieldNearVtx2[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandHoldingMirrorShieldNearVtx2.inc.c"
+};
+
+Vtx gLinkAdultBottleVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultBottleVtx.inc.c"
+};
+
+Vtx gLinkAdultMirrorShieldSwordAndSheathFarVtx2[] = {
+#include "assets/objects/object_link_boy/gLinkAdultMirrorShieldSwordAndSheathFarVtx2.inc.c"
+};
+
+Vtx gLinkAdultMirrorShieldAndSheathFarVtx2[] = {
+#include "assets/objects/object_link_boy/gLinkAdultMirrorShieldAndSheathFarVtx2.inc.c"
+};
+
+Vtx gLinkAdultRightHandHoldingMirrorShieldFarVtx2[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandHoldingMirrorShieldFarVtx2.inc.c"
+};
+
+Gfx gLinkAdultHylianShieldSwordAndSheathNearDL[127] = {
+#include "assets/objects/object_link_boy/gLinkAdultHylianShieldSwordAndSheathNearDL.inc.c"
+};
+
+Gfx gLinkAdultHylianShieldAndSheathNearDL[105] = {
+#include "assets/objects/object_link_boy/gLinkAdultHylianShieldAndSheathNearDL.inc.c"
+};
+
+Gfx gLinkAdultMirrorShieldSwordAndSheathNearDL[159] = {
+#include "assets/objects/object_link_boy/gLinkAdultMirrorShieldSwordAndSheathNearDL.inc.c"
+};
+
+Gfx gLinkAdultMirrorShieldAndSheathNearDL[127] = {
+#include "assets/objects/object_link_boy/gLinkAdultMirrorShieldAndSheathNearDL.inc.c"
+};
+
+Gfx gLinkAdultLeftHandNearDL[72] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftHandNearDL.inc.c"
+};
+
+Gfx gLinkAdultLeftHandClosedNearDL[82] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftHandClosedNearDL.inc.c"
+};
+
+Gfx gLinkAdultLeftHandHoldingMasterSwordNearDL[164] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftHandHoldingMasterSwordNearDL.inc.c"
+};
+
+Gfx gLinkAdultRightHandNearDL[73] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandNearDL.inc.c"
+};
+
+Gfx gLinkAdultRightHandClosedNearDL[82] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandClosedNearDL.inc.c"
+};
+
+Gfx gLinkAdultRightHandHoldingHylianShieldNearDL[135] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandHoldingHylianShieldNearDL.inc.c"
+};
+
+Gfx gLinkAdultRightHandHoldingBowNearDL[119] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandHoldingBowNearDL.inc.c"
+};
+
+Gfx gLinkAdultMasterSwordAndSheathNearDL[80] = {
+#include "assets/objects/object_link_boy/gLinkAdultMasterSwordAndSheathNearDL.inc.c"
+};
+
+Gfx gLinkAdultLeftHandHoldingHammerNearDL[157] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftHandHoldingHammerNearDL.inc.c"
+};
+
+Gfx gLinkAdultLeftHandHoldingBgsNearDL[145] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftHandHoldingBgsNearDL.inc.c"
+};
+
+Gfx gLinkAdultHandHoldingBrokenGiantsKnifeDL[142] = {
+#include "assets/objects/object_link_boy/gLinkAdultHandHoldingBrokenGiantsKnifeDL.inc.c"
+};
+
+Gfx gLinkAdultRightHandHoldingMirrorShieldNearDL[155] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandHoldingMirrorShieldNearDL.inc.c"
+};
+
+Gfx gLinkAdultRightHandHoldingOotNearDL[104] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandHoldingOotNearDL.inc.c"
+};
+
+Gfx gLinkAdultSheathNearDL[48] = {
+#include "assets/objects/object_link_boy/gLinkAdultSheathNearDL.inc.c"
+};
+
+Gfx gLinkAdultLeftHandOutNearDL[67] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftHandOutNearDL.inc.c"
+};
+
+Gfx gLinkAdultRightHandHoldingHookshotNearDL[149] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandHoldingHookshotNearDL.inc.c"
+};
+
+Gfx gLinkAdultLeftGauntletPlate1DL[24] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftGauntletPlate1DL.inc.c"
+};
+
+Gfx gLinkAdultLeftGauntletPlate2DL[44] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftGauntletPlate2DL.inc.c"
+};
+
+Gfx gLinkAdultLeftGauntletPlate3DL[44] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftGauntletPlate3DL.inc.c"
+};
+
+Gfx gLinkAdultRightGauntletPlate1DL[24] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightGauntletPlate1DL.inc.c"
+};
+
+Gfx gLinkAdultRightGauntletPlate2DL[44] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightGauntletPlate2DL.inc.c"
+};
+
+Gfx gLinkAdultRightGauntletPlate3DL[44] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightGauntletPlate3DL.inc.c"
+};
+
+Gfx gLinkAdultLeftIronBootDL[41] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftIronBootDL.inc.c"
+};
+
+Gfx gLinkAdultRightIronBootDL[41] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightIronBootDL.inc.c"
+};
+
+Gfx gLinkAdultLeftHoverBootDL[65] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftHoverBootDL.inc.c"
+};
+
+Gfx gLinkAdultRightHoverBootDL[65] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHoverBootDL.inc.c"
+};
+
+Gfx gLinkAdultHylianShieldSwordAndSheathFarDL[96] = {
+#include "assets/objects/object_link_boy/gLinkAdultHylianShieldSwordAndSheathFarDL.inc.c"
+};
+
+Gfx gLinkAdultHylianShieldAndSheathFarDL[71] = {
+#include "assets/objects/object_link_boy/gLinkAdultHylianShieldAndSheathFarDL.inc.c"
+};
+
+Gfx gLinkAdultMirrorShieldSwordAndSheathFarDL[132] = {
+#include "assets/objects/object_link_boy/gLinkAdultMirrorShieldSwordAndSheathFarDL.inc.c"
+};
+
+Gfx gLinkAdultMirrorShieldAndSheathFarDL[105] = {
+#include "assets/objects/object_link_boy/gLinkAdultMirrorShieldAndSheathFarDL.inc.c"
+};
+
+Gfx gLinkAdultLeftHandFarDL[51] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftHandFarDL.inc.c"
+};
+
+Gfx gLinkAdultLeftHandClosedFarDL[81] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftHandClosedFarDL.inc.c"
+};
+
+Gfx gLinkAdultLeftHandHoldingMasterSwordFarDL[144] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftHandHoldingMasterSwordFarDL.inc.c"
+};
+
+Gfx gLinkAdultRightHandFarDL[51] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandFarDL.inc.c"
+};
+
+Gfx gLinkAdultRightHandClosedFarDL[81] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandClosedFarDL.inc.c"
+};
+
+Gfx gLinkAdultRightHandHoldingHylianShieldFarDL[78] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandHoldingHylianShieldFarDL.inc.c"
+};
+
+Gfx gLinkAdultRightHandHoldingBowFarDL[111] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandHoldingBowFarDL.inc.c"
+};
+
+Gfx gLinkAdultMasterSwordAndSheathFarDL[74] = {
+#include "assets/objects/object_link_boy/gLinkAdultMasterSwordAndSheathFarDL.inc.c"
+};
+
+Gfx gLinkAdultSheathFarDL[39] = {
+#include "assets/objects/object_link_boy/gLinkAdultSheathFarDL.inc.c"
+};
+
+Gfx gLinkAdultLeftHandHoldingHammerFarDL[134] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftHandHoldingHammerFarDL.inc.c"
+};
+
+Gfx gLinkAdultLeftHandHoldingBgsFarDL[145] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftHandHoldingBgsFarDL.inc.c"
+};
+
+Gfx gLinkAdultRightHandHoldingMirrorShieldFarDL[131] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandHoldingMirrorShieldFarDL.inc.c"
+};
+
+Gfx gLinkAdultRightHandHoldingOotFarDL[82] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandHoldingOotFarDL.inc.c"
+};
+
+Gfx gLinkAdultHandHoldingBrokenGiantsKnifeFarDL[131] = {
+#include "assets/objects/object_link_boy/gLinkAdultHandHoldingBrokenGiantsKnifeFarDL.inc.c"
+};
+
+Gfx gLinkAdultHandHoldingBottleDL[99] = {
+#include "assets/objects/object_link_boy/gLinkAdultHandHoldingBottleDL.inc.c"
+};
+
+Gfx gLinkAdultRightArmOutNearDL[97] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightArmOutNearDL.inc.c"
+};
+
+Gfx gLinkAdultRightHandOutNearDL[112] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandOutNearDL.inc.c"
+};
+
+Gfx gLinkAdultLeftArmOutNearDL[85] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftArmOutNearDL.inc.c"
+};
+
+Gfx gLinkAdultRightHandHoldingBowFirstPersonDL[158] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandHoldingBowFirstPersonDL.inc.c"
+};
+
+Gfx gLinkAdultRightHandHoldingHookshotFarDL[196] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandHoldingHookshotFarDL.inc.c"
+};
+
+Gfx gLinkAdultBottleDL[35] = {
+#include "assets/objects/object_link_boy/gLinkAdultBottleDL.inc.c"
+};
+
+// Hookshot, bow, broken giant's knife
+
+Vtx gLinkAdultHookshotChainVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultHookshotChainVtx.inc.c"
+};
+
+#define gLinkAdultHookshotChainTex_WIDTH 16
+#define gLinkAdultHookshotChainTex_HEIGHT 32
+u64 gLinkAdultHookshotChainTex[TEX_LEN(u64, gLinkAdultHookshotChainTex_WIDTH, gLinkAdultHookshotChainTex_HEIGHT, 16)];
+
+Gfx gLinkAdultHookshotChainDL[23] = {
+#include "assets/objects/object_link_boy/gLinkAdultHookshotChainDL.inc.c"
+};
+
+Vtx gLinkAdultBowStringVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultBowStringVtx.inc.c"
+};
+
+Gfx gLinkAdultBowStringDL[12] = {
+#include "assets/objects/object_link_boy/gLinkAdultBowStringDL.inc.c"
+};
+
+Vtx gLinkAdultHookshotTipVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultHookshotTipVtx.inc.c"
+};
+
+Gfx gLinkAdultHookshotTipDL[22] = {
+#include "assets/objects/object_link_boy/gLinkAdultHookshotTipDL.inc.c"
+};
+
+u64 gLinkAdultHookshotChainTex[TEX_LEN(u64, gLinkAdultHookshotChainTex_WIDTH, gLinkAdultHookshotChainTex_HEIGHT,
+ 16)] = {
+#include "assets/objects/object_link_boy/gLinkAdultHookshotChainTex.rgba16.inc.c"
+};
+
+Vtx gLinkAdultBrokenGiantsKnifeBladeVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultBrokenGiantsKnifeBladeVtx.inc.c"
+};
+
+Gfx gLinkAdultBrokenGiantsKnifeBladeDL[28] = {
+#include "assets/objects/object_link_boy/gLinkAdultBrokenGiantsKnifeBladeDL.inc.c"
+};
+
+// Hookshot reticle
+
+#define gLinkAdultHookshotReticleTex_WIDTH 64
+#define gLinkAdultHookshotReticleTex_HEIGHT 64
+u64 gLinkAdultHookshotReticleTex[TEX_LEN(u64, gLinkAdultHookshotReticleTex_WIDTH, gLinkAdultHookshotReticleTex_HEIGHT,
+ 8)] = {
+#include "assets/objects/object_link_boy/gLinkAdultHookshotReticleTex.i8.inc.c"
+};
+
+Vtx gLinkAdultHookshotReticleVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultHookshotReticleVtx.inc.c"
+};
+
+Gfx gLinkAdultHookshotReticleDL[13] = {
+#include "assets/objects/object_link_boy/gLinkAdultHookshotReticleDL.inc.c"
+};
+
+// Far skeleton vertices and DLs
+
+Vtx gLinkAdultRightFootFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightFootFarVtx.inc.c"
+};
+
+Vtx gLinkAdultRightLegFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightLegFarVtx.inc.c"
+};
+
+Vtx gLinkAdultRightThighFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightThighFarVtx.inc.c"
+};
+
+Vtx gLinkAdultLeftFootFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftFootFarVtx.inc.c"
+};
+
+Vtx gLinkAdultLeftLegFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftLegFarVtx.inc.c"
+};
+
+Vtx gLinkAdultLeftThighFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftThighFarVtx.inc.c"
+};
+
+Vtx gLinkAdultWaistFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultWaistFarVtx.inc.c"
+};
+
+Vtx gLinkAdultHatFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultHatFarVtx.inc.c"
+};
+
+Vtx gLinkAdultHeadFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultHeadFarVtx.inc.c"
+};
+
+Vtx gLinkAdultVtx_02E120[] = {
+#include "assets/objects/object_link_boy/gLinkAdultVtx_02E120.inc.c"
+};
+
+Vtx gLinkAdultLeftArmFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftArmFarVtx.inc.c"
+};
+
+Vtx gLinkAdultLeftShoulderFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftShoulderFarVtx.inc.c"
+};
+
+Vtx gLinkAdultVtx_02E7E0[] = {
+#include "assets/objects/object_link_boy/gLinkAdultVtx_02E7E0.inc.c"
+};
+
+Vtx gLinkAdultRightArmFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightArmFarVtx.inc.c"
+};
+
+Vtx gLinkAdultRightShoulderFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightShoulderFarVtx.inc.c"
+};
+
+Vtx gLinkAdultTorsoFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultTorsoFarVtx.inc.c"
+};
+
+Vtx gLinkAdultCollarFarVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultCollarFarVtx.inc.c"
+};
+
+Gfx gLinkAdultWaistFarDL[78] = {
+#include "assets/objects/object_link_boy/gLinkAdultWaistFarDL.inc.c"
+};
+
+Gfx gLinkAdultRightThighFarDL[67] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightThighFarDL.inc.c"
+};
+
+Gfx gLinkAdultRightLegFarDL[57] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightLegFarDL.inc.c"
+};
+
+Gfx gLinkAdultRightFootFarDL[36] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightFootFarDL.inc.c"
+};
+
+Gfx gLinkAdultLeftThighFarDL[68] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftThighFarDL.inc.c"
+};
+
+Gfx gLinkAdultLeftLegFarDL[57] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftLegFarDL.inc.c"
+};
+
+Gfx gLinkAdultLeftFootFarDL[36] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftFootFarDL.inc.c"
+};
+
+Gfx gLinkAdultCollarFarDL[21] = {
+#include "assets/objects/object_link_boy/gLinkAdultCollarFarDL.inc.c"
+};
+
+Gfx gLinkAdultTorsoFarDL[54] = {
+#include "assets/objects/object_link_boy/gLinkAdultTorsoFarDL.inc.c"
+};
+
+Gfx gLinkAdultHeadFarDL[182] = {
+#include "assets/objects/object_link_boy/gLinkAdultHeadFarDL.inc.c"
+};
+
+Gfx gLinkAdultHatFarDL[30] = {
+#include "assets/objects/object_link_boy/gLinkAdultHatFarDL.inc.c"
+};
+
+Gfx gLinkAdultRightShoulderFarDL[53] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightShoulderFarDL.inc.c"
+};
+
+Gfx gLinkAdultRightArmFarDL[86] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightArmFarDL.inc.c"
+};
+
+Gfx gLinkAdultLeftShoulderFarDL[53] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftShoulderFarDL.inc.c"
+};
+
+Gfx gLinkAdultLeftArmFarDL[86] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftArmFarDL.inc.c"
+};
+
+// Near skeleton vertices and DLs
+
+Vtx gLinkAdultRightFootNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightFootNearVtx.inc.c"
+};
+
+Vtx gLinkAdultRightLegNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightLegNearVtx.inc.c"
+};
+
+Vtx gLinkAdultRightThighNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightThighNearVtx.inc.c"
+};
+
+Vtx gLinkAdultLeftFootNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftFootNearVtx.inc.c"
+};
+
+Vtx gLinkAdultLeftLegNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftLegNearVtx.inc.c"
+};
+
+Vtx gLinkAdultLeftThighNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftThighNearVtx.inc.c"
+};
+
+Vtx gLinkAdultWaistNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultWaistNearVtx.inc.c"
+};
+
+Vtx gLinkAdultHatNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultHatNearVtx.inc.c"
+};
+
+Vtx gLinkAdultHeadNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultHeadNearVtx.inc.c"
+};
+
+Vtx gLinkAdultVtx_033760[] = {
+#include "assets/objects/object_link_boy/gLinkAdultVtx_033760.inc.c"
+};
+
+Vtx gLinkAdultLeftArmNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftArmNearVtx.inc.c"
+};
+
+Vtx gLinkAdultLeftShoulderNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftShoulderNearVtx.inc.c"
+};
+
+Vtx gLinkAdultVtx_0340A0[] = {
+#include "assets/objects/object_link_boy/gLinkAdultVtx_0340A0.inc.c"
+};
+
+Vtx gLinkAdultRightArmNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightArmNearVtx.inc.c"
+};
+
+Vtx gLinkAdultRightShoulderNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightShoulderNearVtx.inc.c"
+};
+
+Vtx gLinkAdultTorsoNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultTorsoNearVtx.inc.c"
+};
+
+Vtx gLinkAdultCollarNearVtx[] = {
+#include "assets/objects/object_link_boy/gLinkAdultCollarNearVtx.inc.c"
+};
+
+Gfx gLinkAdultWaistNearDL[105] = {
+#include "assets/objects/object_link_boy/gLinkAdultWaistNearDL.inc.c"
+};
+
+Gfx gLinkAdultRightThighNearDL[71] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightThighNearDL.inc.c"
+};
+
+Gfx gLinkAdultRightLegNearDL[86] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightLegNearDL.inc.c"
+};
+
+Gfx gLinkAdultRightFootNearDL[43] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightFootNearDL.inc.c"
+};
+
+Gfx gLinkAdultLeftThighNearDL[71] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftThighNearDL.inc.c"
+};
+
+Gfx gLinkAdultLeftLegNearDL[86] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftLegNearDL.inc.c"
+};
+
+Gfx gLinkAdultLeftFootNearDL[43] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftFootNearDL.inc.c"
+};
+
+Gfx gLinkAdultCollarNearDL[24] = {
+#include "assets/objects/object_link_boy/gLinkAdultCollarNearDL.inc.c"
+};
+
+Gfx gLinkAdultTorsoNearDL[70] = {
+#include "assets/objects/object_link_boy/gLinkAdultTorsoNearDL.inc.c"
+};
+
+Gfx gLinkAdultHeadNearDL[233] = {
+#include "assets/objects/object_link_boy/gLinkAdultHeadNearDL.inc.c"
+};
+
+Gfx gLinkAdultHatNearDL[37] = {
+#include "assets/objects/object_link_boy/gLinkAdultHatNearDL.inc.c"
+};
+
+Gfx gLinkAdultRightShoulderNearDL[56] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightShoulderNearDL.inc.c"
+};
+
+Gfx gLinkAdultRightArmNearDL[63] = {
+#include "assets/objects/object_link_boy/gLinkAdultRightArmNearDL.inc.c"
+};
+
+Gfx gLinkAdultLeftShoulderNearDL[57] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftShoulderNearDL.inc.c"
+};
+
+Gfx gLinkAdultLeftArmNearDL[79] = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftArmNearDL.inc.c"
+};
+
+// Skeleton
+
+LodLimb gLinkAdultRootLimb = {
+#include "assets/objects/object_link_boy/gLinkAdultRootLimb.inc.c"
+};
+
+LodLimb gLinkAdultWaistLimb = {
+#include "assets/objects/object_link_boy/gLinkAdultWaistLimb.inc.c"
+};
+
+LodLimb gLinkAdultLowerControlLimb = {
+#include "assets/objects/object_link_boy/gLinkAdultLowerControlLimb.inc.c"
+};
+
+LodLimb gLinkAdultRightThighLimb = {
+#include "assets/objects/object_link_boy/gLinkAdultRightThighLimb.inc.c"
+};
+
+LodLimb gLinkAdultRightLegLimb = {
+#include "assets/objects/object_link_boy/gLinkAdultRightLegLimb.inc.c"
+};
+
+LodLimb gLinkAdultRightFootLimb = {
+#include "assets/objects/object_link_boy/gLinkAdultRightFootLimb.inc.c"
+};
+
+LodLimb gLinkAdultLeftThighLimb = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftThighLimb.inc.c"
+};
+
+LodLimb gLinkAdultLeftLegLimb = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftLegLimb.inc.c"
+};
+
+LodLimb gLinkAdultLeftFootLimb = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftFootLimb.inc.c"
+};
+
+LodLimb gLinkAdultUpperControlLimb = {
+#include "assets/objects/object_link_boy/gLinkAdultUpperControlLimb.inc.c"
+};
+
+LodLimb gLinkAdultHeadLimb = {
+#include "assets/objects/object_link_boy/gLinkAdultHeadLimb.inc.c"
+};
+
+LodLimb gLinkAdultHatLimb = {
+#include "assets/objects/object_link_boy/gLinkAdultHatLimb.inc.c"
+};
+
+LodLimb gLinkAdultCollarLimb = {
+#include "assets/objects/object_link_boy/gLinkAdultCollarLimb.inc.c"
+};
+
+LodLimb gLinkAdultLeftShoulderLimb = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftShoulderLimb.inc.c"
+};
+
+LodLimb gLinkAdultLeftArmLimb = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftArmLimb.inc.c"
+};
+
+LodLimb gLinkAdultLeftHandLimb = {
+#include "assets/objects/object_link_boy/gLinkAdultLeftHandLimb.inc.c"
+};
+
+LodLimb gLinkAdultRightShoulderLimb = {
+#include "assets/objects/object_link_boy/gLinkAdultRightShoulderLimb.inc.c"
+};
+
+LodLimb gLinkAdultRightArmLimb = {
+#include "assets/objects/object_link_boy/gLinkAdultRightArmLimb.inc.c"
+};
+
+LodLimb gLinkAdultRightHandLimb = {
+#include "assets/objects/object_link_boy/gLinkAdultRightHandLimb.inc.c"
+};
+
+LodLimb gLinkAdultSwordAndSheathLimb = {
+#include "assets/objects/object_link_boy/gLinkAdultSwordAndSheathLimb.inc.c"
+};
+
+LodLimb gLinkTorsoLimb = {
+#include "assets/objects/object_link_boy/gLinkTorsoLimb.inc.c"
+};
+
+void* gLinkAdultLimbs[] = {
+#include "assets/objects/object_link_boy/gLinkAdultLimbs.inc.c"
+};
+
+FlexSkeletonHeader gLinkAdultSkel = {
+#include "assets/objects/object_link_boy/gLinkAdultSkel.inc.c"
+};
diff --git a/assets/objects/object_link_boy/object_link_boy.h b/assets/objects/object_link_boy/object_link_boy.h
new file mode 100644
index 000000000..8fadf3292
--- /dev/null
+++ b/assets/objects/object_link_boy/object_link_boy.h
@@ -0,0 +1,94 @@
+#ifndef OBJECT_LINK_BOY_H
+#define OBJECT_LINK_BOY_H
+
+#include "ultra64.h"
+#include "tex_len.h"
+#include "z64animation.h"
+
+#define LINK_ADULT_EYES_TEX_WIDTH 64
+#define LINK_ADULT_EYES_TEX_HEIGHT 32
+extern u64 gLinkAdultEyesOpenTex[TEX_LEN(u64, LINK_ADULT_EYES_TEX_WIDTH, LINK_ADULT_EYES_TEX_HEIGHT, 8)];
+extern u64 gLinkAdultEyesHalfTex[TEX_LEN(u64, LINK_ADULT_EYES_TEX_WIDTH, LINK_ADULT_EYES_TEX_HEIGHT, 8)];
+extern u64 gLinkAdultEyesClosedfTex[TEX_LEN(u64, LINK_ADULT_EYES_TEX_WIDTH, LINK_ADULT_EYES_TEX_HEIGHT, 8)];
+extern u64 gLinkAdultEyesRightTex[TEX_LEN(u64, LINK_ADULT_EYES_TEX_WIDTH, LINK_ADULT_EYES_TEX_HEIGHT, 8)];
+extern u64 gLinkAdultEyesLeftTex[TEX_LEN(u64, LINK_ADULT_EYES_TEX_WIDTH, LINK_ADULT_EYES_TEX_HEIGHT, 8)];
+extern u64 gLinkAdultEyesWideTex[TEX_LEN(u64, LINK_ADULT_EYES_TEX_WIDTH, LINK_ADULT_EYES_TEX_HEIGHT, 8)];
+extern u64 gLinkAdultEyesDownTex[TEX_LEN(u64, LINK_ADULT_EYES_TEX_WIDTH, LINK_ADULT_EYES_TEX_HEIGHT, 8)];
+extern u64 gLinkAdultEyesWincingTex[TEX_LEN(u64, LINK_ADULT_EYES_TEX_WIDTH, LINK_ADULT_EYES_TEX_HEIGHT, 8)];
+
+#define LINK_ADULT_MOUTH_TEX_WIDTH 32
+#define LINK_ADULT_MOUTH_TEX_HEIGHT 32
+extern u64 gLinkAdultMouthClosedTex[TEX_LEN(u64, LINK_ADULT_MOUTH_TEX_WIDTH, LINK_ADULT_MOUTH_TEX_HEIGHT, 8)];
+extern u64 gLinkAdultMouthHalfTex[TEX_LEN(u64, LINK_ADULT_MOUTH_TEX_WIDTH, LINK_ADULT_MOUTH_TEX_HEIGHT, 8)];
+extern u64 gLinkAdultMouthOpenTex[TEX_LEN(u64, LINK_ADULT_MOUTH_TEX_WIDTH, LINK_ADULT_MOUTH_TEX_HEIGHT, 8)];
+extern u64 gLinkAdultMouthSmileTex[TEX_LEN(u64, LINK_ADULT_MOUTH_TEX_WIDTH, LINK_ADULT_MOUTH_TEX_HEIGHT, 8)];
+
+extern Gfx gLinkAdultHylianShieldSwordAndSheathNearDL[127];
+extern Gfx gLinkAdultHylianShieldAndSheathNearDL[105];
+extern Gfx gLinkAdultMirrorShieldSwordAndSheathNearDL[159];
+extern Gfx gLinkAdultMirrorShieldAndSheathNearDL[127];
+extern Gfx gLinkAdultLeftHandNearDL[72];
+extern Gfx gLinkAdultLeftHandClosedNearDL[82];
+extern Gfx gLinkAdultLeftHandHoldingMasterSwordNearDL[164];
+extern Gfx gLinkAdultRightHandNearDL[73];
+extern Gfx gLinkAdultRightHandClosedNearDL[82];
+extern Gfx gLinkAdultRightHandHoldingHylianShieldNearDL[135];
+extern Gfx gLinkAdultRightHandHoldingBowNearDL[119];
+extern Gfx gLinkAdultMasterSwordAndSheathNearDL[80];
+extern Gfx gLinkAdultLeftHandHoldingHammerNearDL[157];
+extern Gfx gLinkAdultLeftHandHoldingBgsNearDL[145];
+extern Gfx gLinkAdultHandHoldingBrokenGiantsKnifeDL[142];
+extern Gfx gLinkAdultRightHandHoldingMirrorShieldNearDL[155];
+extern Gfx gLinkAdultRightHandHoldingOotNearDL[104];
+extern Gfx gLinkAdultSheathNearDL[48];
+extern Gfx gLinkAdultLeftHandOutNearDL[67];
+extern Gfx gLinkAdultRightHandHoldingHookshotNearDL[149];
+extern Gfx gLinkAdultLeftGauntletPlate1DL[24];
+extern Gfx gLinkAdultLeftGauntletPlate2DL[44];
+extern Gfx gLinkAdultLeftGauntletPlate3DL[44];
+extern Gfx gLinkAdultRightGauntletPlate1DL[24];
+extern Gfx gLinkAdultRightGauntletPlate2DL[44];
+extern Gfx gLinkAdultRightGauntletPlate3DL[44];
+extern Gfx gLinkAdultLeftIronBootDL[41];
+extern Gfx gLinkAdultRightIronBootDL[41];
+extern Gfx gLinkAdultLeftHoverBootDL[65];
+extern Gfx gLinkAdultRightHoverBootDL[65];
+extern Gfx gLinkAdultHylianShieldSwordAndSheathFarDL[96];
+extern Gfx gLinkAdultHylianShieldAndSheathFarDL[71];
+extern Gfx gLinkAdultMirrorShieldSwordAndSheathFarDL[132];
+extern Gfx gLinkAdultMirrorShieldAndSheathFarDL[105];
+extern Gfx gLinkAdultLeftHandFarDL[51];
+extern Gfx gLinkAdultLeftHandClosedFarDL[81];
+extern Gfx gLinkAdultLeftHandHoldingMasterSwordFarDL[144];
+extern Gfx gLinkAdultRightHandFarDL[51];
+extern Gfx gLinkAdultRightHandClosedFarDL[81];
+extern Gfx gLinkAdultRightHandHoldingHylianShieldFarDL[78];
+extern Gfx gLinkAdultRightHandHoldingBowFarDL[111];
+extern Gfx gLinkAdultMasterSwordAndSheathFarDL[74];
+extern Gfx gLinkAdultSheathFarDL[39];
+extern Gfx gLinkAdultLeftHandHoldingHammerFarDL[134];
+extern Gfx gLinkAdultLeftHandHoldingBgsFarDL[145];
+extern Gfx gLinkAdultRightHandHoldingMirrorShieldFarDL[131];
+extern Gfx gLinkAdultRightHandHoldingOotFarDL[82];
+extern Gfx gLinkAdultHandHoldingBrokenGiantsKnifeFarDL[131];
+extern Gfx gLinkAdultHandHoldingBottleDL[99];
+extern Gfx gLinkAdultRightArmOutNearDL[97];
+extern Gfx gLinkAdultRightHandOutNearDL[112];
+extern Gfx gLinkAdultLeftArmOutNearDL[85];
+extern Gfx gLinkAdultRightHandHoldingBowFirstPersonDL[158];
+extern Gfx gLinkAdultRightHandHoldingHookshotFarDL[196];
+extern Gfx gLinkAdultBottleDL[35];
+extern Gfx gLinkAdultHookshotChainDL[23];
+extern Gfx gLinkAdultBowStringDL[12];
+extern Gfx gLinkAdultHookshotTipDL[22];
+extern Gfx gLinkAdultBrokenGiantsKnifeBladeDL[28];
+extern Gfx gLinkAdultHookshotReticleDL[13];
+
+extern Gfx gLinkAdultWaistFarDL[78];
+
+extern Gfx gLinkAdultWaistNearDL[105];
+extern Gfx gLinkAdultRightShoulderNearDL[56];
+
+extern FlexSkeletonHeader gLinkAdultSkel;
+
+#endif
diff --git a/assets/objects/object_link_child/object_link_child.c b/assets/objects/object_link_child/object_link_child.c
new file mode 100644
index 000000000..035cbedb3
--- /dev/null
+++ b/assets/objects/object_link_child/object_link_child.c
@@ -0,0 +1,1195 @@
+#include "object_link_child.h"
+#include "assets/objects/gameplay_keep/gameplay_keep.h"
+
+#include "array_count.h"
+#include "gfx.h"
+#include "z64player.h"
+
+// Eyes textures
+
+u64 gLinkChildEyesOpenTex[TEX_LEN(u64, LINK_CHILD_EYES_TEX_WIDTH, LINK_CHILD_EYES_TEX_HEIGHT, 8)] = {
+#include "assets/objects/object_link_child/gLinkChildEyesOpenTex.ci8.tlut_gLinkChildSkinTLUT.inc.c"
+};
+
+u64 gLinkChildEyesHalfTex[TEX_LEN(u64, LINK_CHILD_EYES_TEX_WIDTH, LINK_CHILD_EYES_TEX_HEIGHT, 8)] = {
+#include "assets/objects/object_link_child/gLinkChildEyesHalfTex.ci8.tlut_gLinkChildSkinTLUT.inc.c"
+};
+
+u64 gLinkChildEyesClosedfTex[TEX_LEN(u64, LINK_CHILD_EYES_TEX_WIDTH, LINK_CHILD_EYES_TEX_HEIGHT, 8)] = {
+#include "assets/objects/object_link_child/gLinkChildEyesClosedfTex.ci8.tlut_gLinkChildSkinTLUT.inc.c"
+};
+
+u64 gLinkChildEyesLeftTex[TEX_LEN(u64, LINK_CHILD_EYES_TEX_WIDTH, LINK_CHILD_EYES_TEX_HEIGHT, 8)] = {
+#include "assets/objects/object_link_child/gLinkChildEyesLeftTex.ci8.tlut_gLinkChildSkinTLUT.inc.c"
+};
+
+u64 gLinkChildEyesRightTex[TEX_LEN(u64, LINK_CHILD_EYES_TEX_WIDTH, LINK_CHILD_EYES_TEX_HEIGHT, 8)] = {
+#include "assets/objects/object_link_child/gLinkChildEyesRightTex.ci8.tlut_gLinkChildSkinTLUT.inc.c"
+};
+
+u64 gLinkChildEyesWideTex[TEX_LEN(u64, LINK_CHILD_EYES_TEX_WIDTH, LINK_CHILD_EYES_TEX_HEIGHT, 8)] = {
+#include "assets/objects/object_link_child/gLinkChildEyesWideTex.ci8.tlut_gLinkChildSkinTLUT.inc.c"
+};
+
+u64 gLinkChildEyesDownTex[TEX_LEN(u64, LINK_CHILD_EYES_TEX_WIDTH, LINK_CHILD_EYES_TEX_HEIGHT, 8)] = {
+#include "assets/objects/object_link_child/gLinkChildEyesDownTex.ci8.tlut_gLinkChildSkinTLUT.inc.c"
+};
+
+u64 gLinkChildEyesWincingTex[TEX_LEN(u64, LINK_CHILD_EYES_TEX_WIDTH, LINK_CHILD_EYES_TEX_HEIGHT, 8)] = {
+#include "assets/objects/object_link_child/gLinkChildEyesWincingTex.ci8.tlut_gLinkChildSkinTLUT.inc.c"
+};
+
+// Mouth textures
+
+u64 gLinkChildMouthClosedTex[TEX_LEN(u64, LINK_CHILD_MOUTH_TEX_WIDTH, LINK_CHILD_MOUTH_TEX_HEIGHT, 8)] = {
+#include "assets/objects/object_link_child/gLinkChildMouthClosedTex.ci8.tlut_gLinkChildSkinTLUT.inc.c"
+};
+
+u64 gLinkChildMouthHalfTex[TEX_LEN(u64, LINK_CHILD_MOUTH_TEX_WIDTH, LINK_CHILD_MOUTH_TEX_HEIGHT, 8)] = {
+#include "assets/objects/object_link_child/gLinkChildMouthHalfTex.ci8.tlut_gLinkChildSkinTLUT.inc.c"
+};
+
+u64 gLinkChildMouthOpenTex[TEX_LEN(u64, LINK_CHILD_MOUTH_TEX_WIDTH, LINK_CHILD_MOUTH_TEX_HEIGHT, 8)] = {
+#include "assets/objects/object_link_child/gLinkChildMouthOpenTex.ci8.tlut_gLinkChildSkinTLUT.inc.c"
+};
+
+u64 gLinkChildMouthSmileTex[TEX_LEN(u64, LINK_CHILD_MOUTH_TEX_WIDTH, LINK_CHILD_MOUTH_TEX_HEIGHT, 8)] = {
+#include "assets/objects/object_link_child/gLinkChildMouthSmileTex.ci8.tlut_gLinkChildSkinTLUT.inc.c"
+};
+
+// Textures
+
+#define gLinkChildNoseTex_WIDTH 16
+#define gLinkChildNoseTex_HEIGHT 16
+u64 gLinkChildNoseTex[TEX_LEN(u64, gLinkChildNoseTex_WIDTH, gLinkChildNoseTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_child/gLinkChildNoseTex.ci8.tlut_gLinkChildSkinTLUT.inc.c"
+};
+
+#define gLinkChildUnusedHandTex_WIDTH 16
+#define gLinkChildUnusedHandTex_HEIGHT 16
+u64 gLinkChildUnusedHandTex[TEX_LEN(u64, gLinkChildUnusedHandTex_WIDTH, gLinkChildUnusedHandTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_child/gLinkChildUnusedHandTex.ci8.tlut_gLinkChildSkinTLUT.inc.c"
+};
+
+#define gLinkChildEarTex_WIDTH 16
+#define gLinkChildEarTex_HEIGHT 16
+u64 gLinkChildEarTex[TEX_LEN(u64, gLinkChildEarTex_WIDTH, gLinkChildEarTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_child/gLinkChildEarTex.ci8.tlut_gLinkChildSkinTLUT.inc.c"
+};
+
+u64 gLinkChildBeltTLUT[] = {
+#include "assets/objects/object_link_child/gLinkChildBeltTLUT.tlut.rgba16.inc.c"
+};
+
+u64 gLinkChildSkinTLUT[] = {
+#include "assets/objects/object_link_child/gLinkChildSkinTLUT.tlut.rgba16.inc.c"
+};
+
+u64 gLinkChildUnusedTLUT[] = {
+#include "assets/objects/object_link_child/gLinkChildUnused1Tex.tlut.rgba16.inc.c"
+};
+
+#define gLinkChildUnused1Tex_WIDTH 16
+#define gLinkChildUnused1Tex_HEIGHT 16
+u64 gLinkChildUnused1Tex[TEX_LEN(u64, gLinkChildUnused1Tex_WIDTH, gLinkChildUnused1Tex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_child/gLinkChildUnused1Tex.ci8.inc.c"
+};
+
+#define gLinkChildUnused2Tex_WIDTH 32
+#define gLinkChildUnused2Tex_HEIGHT 16
+u64 gLinkChildUnused2Tex[TEX_LEN(u64, gLinkChildUnused2Tex_WIDTH, gLinkChildUnused2Tex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_child/gLinkChildUnused2Tex.ci8.tlut_gLinkChildBeltTLUT.inc.c"
+};
+
+#define gLinkChildLowerBootTex_WIDTH 32
+#define gLinkChildLowerBootTex_HEIGHT 32
+u64 gLinkChildLowerBootTex[TEX_LEN(u64, gLinkChildLowerBootTex_WIDTH, gLinkChildLowerBootTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_child/gLinkChildLowerBootTex.ci8.tlut_gLinkChildBeltTLUT.inc.c"
+};
+
+#define gLinkChildBootTex_WIDTH 32
+#define gLinkChildBootTex_HEIGHT 32
+u64 gLinkChildBootTex[TEX_LEN(u64, gLinkChildBootTex_WIDTH, gLinkChildBootTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_child/gLinkChildBootTex.ci8.tlut_gLinkChildBeltTLUT.inc.c"
+};
+
+#define gLinkChildWaistTex_WIDTH 32
+#define gLinkChildWaistTex_HEIGHT 32
+u64 gLinkChildWaistTex[TEX_LEN(u64, gLinkChildWaistTex_WIDTH, gLinkChildWaistTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_child/gLinkChildWaistTex.i8.inc.c"
+};
+
+#define gLinkChildBeltTex_WIDTH 8
+#define gLinkChildBeltTex_HEIGHT 16
+u64 gLinkChildBeltTex[TEX_LEN(u64, gLinkChildBeltTex_WIDTH, gLinkChildBeltTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_child/gLinkChildBeltTex.ci8.tlut_gLinkChildBeltTLUT.inc.c"
+};
+
+#define gLinkChildBeltClaspTex_WIDTH 32
+#define gLinkChildBeltClaspTex_HEIGHT 16
+u64 gLinkChildBeltClaspTex[TEX_LEN(u64, gLinkChildBeltClaspTex_WIDTH, gLinkChildBeltClaspTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_child/gLinkChildBeltClaspTex.ci8.tlut_gLinkChildBeltTLUT.inc.c"
+};
+
+// Deku stick
+
+Vtx gLinkChildLinkDekuStickVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildLinkDekuStickVtx.inc.c"
+};
+
+Gfx gLinkChildLinkDekuStickDL[41] = {
+#include "assets/objects/object_link_child/gLinkChildLinkDekuStickDL.inc.c"
+};
+
+// Textures
+
+#define gLinkChildFairyOcarinaTex_WIDTH 32
+#define gLinkChildFairyOcarinaTex_HEIGHT 16
+u64 gLinkChildFairyOcarinaTex[TEX_LEN(u64, gLinkChildFairyOcarinaTex_WIDTH, gLinkChildFairyOcarinaTex_HEIGHT, 16)] = {
+#include "assets/objects/object_link_child/gLinkChildFairyOcarinaTex.rgba16.inc.c"
+};
+
+#define gLinkChildGoronBraceletTex_WIDTH 8
+#define gLinkChildGoronBraceletTex_HEIGHT 8
+u64 gLinkChildGoronBraceletTex[TEX_LEN(u64, gLinkChildGoronBraceletTex_WIDTH, gLinkChildGoronBraceletTex_HEIGHT,
+ 16)] = {
+#include "assets/objects/object_link_child/gLinkChildGoronBraceletTex.rgba16.inc.c"
+};
+
+#define gLinkChildGoronSymbolTex_WIDTH 16
+#define gLinkChildGoronSymbolTex_HEIGHT 32
+u64 gLinkChildGoronSymbolTex[TEX_LEN(u64, gLinkChildGoronSymbolTex_WIDTH, gLinkChildGoronSymbolTex_HEIGHT, 16)] = {
+#include "assets/objects/object_link_child/gLinkChildGoronSymbolTex.ia16.inc.c"
+};
+
+#define gLinkChildDekuShieldBackTex_WIDTH 32
+#define gLinkChildDekuShieldBackTex_HEIGHT 32
+u64 gLinkChildDekuShieldBackTex[TEX_LEN(u64, gLinkChildDekuShieldBackTex_WIDTH, gLinkChildDekuShieldBackTex_HEIGHT,
+ 16)] = {
+#include "assets/objects/object_link_child/gLinkChildDekuShieldBackTex.rgba16.inc.c"
+};
+
+#define gLinkChildDekuShieldFrontTex_WIDTH 32
+#define gLinkChildDekuShieldFrontTex_HEIGHT 64
+u64 gLinkChildDekuShieldFrontTex[TEX_LEN(u64, gLinkChildDekuShieldFrontTex_WIDTH, gLinkChildDekuShieldFrontTex_HEIGHT,
+ 16)] = {
+#include "assets/objects/object_link_child/gLinkChildDekuShieldFrontTex.rgba16.inc.c"
+};
+
+#define gLinkChildHylianShieldBackTex_WIDTH 16
+#define gLinkChildHylianShieldBackTex_HEIGHT 32
+u64 gLinkChildHylianShieldBackTex[TEX_LEN(u64, gLinkChildHylianShieldBackTex_WIDTH,
+ gLinkChildHylianShieldBackTex_HEIGHT, 16)] = {
+#include "assets/objects/object_link_child/gLinkChildHylianShieldBackTex.rgba16.inc.c"
+};
+
+#define gLinkChildSlingshotTex_WIDTH 16
+#define gLinkChildSlingshotTex_HEIGHT 32
+u64 gLinkChildSlingshotTex[TEX_LEN(u64, gLinkChildSlingshotTex_WIDTH, gLinkChildSlingshotTex_HEIGHT, 16)] = {
+#include "assets/objects/object_link_child/gLinkChildSlingshotTex.rgba16.inc.c"
+};
+
+#define gLinkChildSlingshotSeedTex_WIDTH 32
+#define gLinkChildSlingshotSeedTex_HEIGHT 32
+u64 gLinkChildSlingshotSeedTex[TEX_LEN(u64, gLinkChildSlingshotSeedTex_WIDTH, gLinkChildSlingshotSeedTex_HEIGHT,
+ 16)] = {
+#include "assets/objects/object_link_child/gLinkChildSlingshotSeedTex.rgba16.inc.c"
+};
+
+u64 gLinkChildHandTLUT[] = {
+#include "assets/objects/object_link_child/gLinkChildHandTex.tlut.rgba16.inc.c"
+};
+
+u64 gLinkChildSwordsTLUT[] = {
+#include "assets/objects/object_link_child/gLinkChildSwordsTLUT.tlut.rgba16.inc.c"
+};
+
+u8 gLinkChild_A110_Blob[] = {
+#include "assets/objects/object_link_child/gLinkChild_A110_Blob.bin.inc.c"
+};
+
+u64 gLinkChildSwordTLUT[] = {
+#include "assets/objects/object_link_child/gLinkChildSwordJewelTex.tlut.rgba16.inc.c"
+};
+
+#define gLinkChildHandTex_WIDTH 16
+#define gLinkChildHandTex_HEIGHT 16
+u64 gLinkChildHandTex[TEX_LEN(u64, gLinkChildHandTex_WIDTH, gLinkChildHandTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_child/gLinkChildHandTex.ci8.inc.c"
+};
+
+#define gLinkChildKokiriSwordSheathTex_WIDTH 16
+#define gLinkChildKokiriSwordSheathTex_HEIGHT 16
+u64 gLinkChildKokiriSwordSheathTex[TEX_LEN(u64, gLinkChildKokiriSwordSheathTex_WIDTH,
+ gLinkChildKokiriSwordSheathTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_child/gLinkChildKokiriSwordSheathTex.ci8.tlut_gLinkChildSwordsTLUT.inc.c"
+};
+
+#define gLinkChildSwordJewelTex_WIDTH 32
+#define gLinkChildSwordJewelTex_HEIGHT 16
+u64 gLinkChildSwordJewelTex[TEX_LEN(u64, gLinkChildSwordJewelTex_WIDTH, gLinkChildSwordJewelTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_child/gLinkChildSwordJewelTex.ci8.inc.c"
+};
+
+#define gLinkChildMasterSwordPommelTex_WIDTH 16
+#define gLinkChildMasterSwordPommelTex_HEIGHT 16
+u64 gLinkChildMasterSwordPommelTex[TEX_LEN(u64, gLinkChildMasterSwordPommelTex_WIDTH,
+ gLinkChildMasterSwordPommelTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_child/gLinkChildMasterSwordPommelTex.ci8.tlut_gLinkChildSwordsTLUT.inc.c"
+};
+
+#define gLinkChildMasterSwordGuardTex_WIDTH 32
+#define gLinkChildMasterSwordGuardTex_HEIGHT 32
+u64 gLinkChildMasterSwordGuardTex[TEX_LEN(u64, gLinkChildMasterSwordGuardTex_WIDTH,
+ gLinkChildMasterSwordGuardTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_child/gLinkChildMasterSwordGuardTex.ci8.tlut_gLinkChildSwordsTLUT.inc.c"
+};
+
+#define gLinkChildMasterSwordEmblemTex_WIDTH 16
+#define gLinkChildMasterSwordEmblemTex_HEIGHT 16
+u64 gLinkChildMasterSwordEmblemTex[TEX_LEN(u64, gLinkChildMasterSwordEmblemTex_WIDTH,
+ gLinkChildMasterSwordEmblemTex_HEIGHT, 8)] = {
+#include "assets/objects/object_link_child/gLinkChildMasterSwordEmblemTex.ci8.tlut_gLinkChildSwordsTLUT.inc.c"
+};
+
+// Various vertices and DLs
+
+Vtx gLinkChildLeftHandNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildLeftHandNearVtx.inc.c"
+};
+
+Vtx gLinkChildLeftFistNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildLeftFistNearVtx.inc.c"
+};
+
+Vtx gLinkChildLeftFistAndKokiriSwordNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildLeftFistAndKokiriSwordNearVtx.inc.c"
+};
+
+Vtx gLinkChildRightHandNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildRightHandNearVtx.inc.c"
+};
+
+Vtx gLinkChildRightHandClosedNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildRightHandClosedNearVtx.inc.c"
+};
+
+Vtx gLinkChildRightFistAndDekuShieldNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildRightFistAndDekuShieldNearVtx.inc.c"
+};
+
+Vtx gLinkChildLeftFistAndBoomerangNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildLeftFistAndBoomerangNearVtx.inc.c"
+};
+
+Vtx gLinkChildHylianShieldSwordAndSheathNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildHylianShieldSwordAndSheathNearVtx.inc.c"
+};
+
+Vtx gLinkChildHylianShieldAndSheathNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildHylianShieldAndSheathNearVtx.inc.c"
+};
+
+Vtx gLinkChildDekuShieldSwordAndSheathNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildDekuShieldSwordAndSheathNearVtx.inc.c"
+};
+
+Vtx gLinkChildDekuShieldAndSheathNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildDekuShieldAndSheathNearVtx.inc.c"
+};
+
+Vtx gLinkChildSwordAndSheathNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildSwordAndSheathNearVtx.inc.c"
+};
+
+Vtx gLinkChildSheathNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildSheathNearVtx.inc.c"
+};
+
+Vtx gLinkChildLeftHandHoldingMasterSwordVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildLeftHandHoldingMasterSwordVtx.inc.c"
+};
+
+Vtx gLinkChildRightHandAndOotNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildRightHandAndOotNearVtx.inc.c"
+};
+
+Vtx gLinkChildRightHandHoldingFairyOcarinaNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildRightHandHoldingFairyOcarinaNearVtx.inc.c"
+};
+
+Vtx gLinkChildRightHandHoldingSlingshotNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildRightHandHoldingSlingshotNearVtx.inc.c"
+};
+
+Vtx gLinkChildLeftHandUpNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildLeftHandUpNearVtx.inc.c"
+};
+
+Vtx gLinkChildGoronBraceletVtx1[] = {
+#include "assets/objects/object_link_child/gLinkChildGoronBraceletVtx1.inc.c"
+};
+
+Vtx gLinkChildLeftHandFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildLeftHandFarVtx.inc.c"
+};
+
+Vtx gLinkChildLeftFistFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildLeftFistFarVtx.inc.c"
+};
+
+Vtx gLinkChildRightHandFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildRightHandFarVtx.inc.c"
+};
+
+Vtx gLinkChildRightHandClosedFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildRightHandClosedFarVtx.inc.c"
+};
+
+Vtx gLinkChildRightFistAndDekuShieldFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildRightFistAndDekuShieldFarVtx.inc.c"
+};
+
+Vtx gLinkChildLeftFistAndBoomerangFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildLeftFistAndBoomerangFarVtx.inc.c"
+};
+
+Vtx gLinkChildHylianShieldSwordAndSheathFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildHylianShieldSwordAndSheathFarVtx.inc.c"
+};
+
+Vtx gLinkChildHylianShieldAndSheathFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildHylianShieldAndSheathFarVtx.inc.c"
+};
+
+Vtx gLinkChildDekuShieldSwordAndSheathFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildDekuShieldSwordAndSheathFarVtx.inc.c"
+};
+
+Vtx gLinkChildDekuShieldAndSheathFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildDekuShieldAndSheathFarVtx.inc.c"
+};
+
+Vtx gLinkChildSwordAndSheathFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildSwordAndSheathFarVtx.inc.c"
+};
+
+Vtx gLinkChildSheathFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildSheathFarVtx.inc.c"
+};
+
+Vtx gLinkChildLeftFistAndKokiriSwordFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildLeftFistAndKokiriSwordFarVtx.inc.c"
+};
+
+Vtx gLinkChildRightHandHoldingOOTFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildRightHandHoldingOOTFarVtx.inc.c"
+};
+
+Vtx gLinkChildRightHandHoldingFairyOcarinaFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildRightHandHoldingFairyOcarinaFarVtx.inc.c"
+};
+
+Vtx gLinkChildRightHandHoldingSlingshotFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildRightHandHoldingSlingshotFarVtx.inc.c"
+};
+
+Vtx gLinkChildLeftHandUpFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildLeftHandUpFarVtx.inc.c"
+};
+
+Vtx gLinkChildRightArmStretchedSlingshotVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildRightArmStretchedSlingshotVtx.inc.c"
+};
+
+Vtx gLinkChildBottleVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildBottleVtx.inc.c"
+};
+
+Vtx gLinkChildGoronBraceletVtx2[] = {
+#include "assets/objects/object_link_child/gLinkChildGoronBraceletVtx2.inc.c"
+};
+
+Vtx gLinkChildDL_18580_Vtx[] = {
+#include "assets/objects/object_link_child/gLinkChildDL_18580_Vtx.inc.c"
+};
+
+Vtx gLinkChildBottle2Vtx[] = {
+#include "assets/objects/object_link_child/gLinkChildBottle2Vtx.inc.c"
+};
+
+Gfx gLinkChildLeftHandNearDL[45] = {
+#include "assets/objects/object_link_child/gLinkChildLeftHandNearDL.inc.c"
+};
+
+Gfx gLinkChildLeftFistNearDL[36] = {
+#include "assets/objects/object_link_child/gLinkChildLeftFistNearDL.inc.c"
+};
+
+Gfx gLinkChildLeftFistAndKokiriSwordNearDL[81] = {
+#include "assets/objects/object_link_child/gLinkChildLeftFistAndKokiriSwordNearDL.inc.c"
+};
+
+Gfx gLinkChildRightHandNearDL[44] = {
+#include "assets/objects/object_link_child/gLinkChildRightHandNearDL.inc.c"
+};
+
+Gfx gLinkChildRightHandClosedNearDL[36] = {
+#include "assets/objects/object_link_child/gLinkChildRightHandClosedNearDL.inc.c"
+};
+
+Gfx gLinkChildRightFistAndDekuShieldNearDL[68] = {
+#include "assets/objects/object_link_child/gLinkChildRightFistAndDekuShieldNearDL.inc.c"
+};
+
+Gfx gLinkChildLeftFistAndBoomerangNearDL[73] = {
+#include "assets/objects/object_link_child/gLinkChildLeftFistAndBoomerangNearDL.inc.c"
+};
+
+Gfx gLinkChildHylianShieldSwordAndSheathNearDL[83] = {
+#include "assets/objects/object_link_child/gLinkChildHylianShieldSwordAndSheathNearDL.inc.c"
+};
+
+Gfx gLinkChildHylianShieldAndSheathNearDL[69] = {
+#include "assets/objects/object_link_child/gLinkChildHylianShieldAndSheathNearDL.inc.c"
+};
+
+Gfx gLinkChildDekuShieldSwordAndSheathNearDL[85] = {
+#include "assets/objects/object_link_child/gLinkChildDekuShieldSwordAndSheathNearDL.inc.c"
+};
+
+Gfx gLinkChildDekuShieldAndSheathNearDL[71] = {
+#include "assets/objects/object_link_child/gLinkChildDekuShieldAndSheathNearDL.inc.c"
+};
+
+Gfx gLinkChildSwordAndSheathNearDL[56] = {
+#include "assets/objects/object_link_child/gLinkChildSwordAndSheathNearDL.inc.c"
+};
+
+Gfx gLinkChildSheathNearDL[39] = {
+#include "assets/objects/object_link_child/gLinkChildSheathNearDL.inc.c"
+};
+
+Gfx gLinkChildLeftHandHoldingMasterSwordDL[131] = {
+#include "assets/objects/object_link_child/gLinkChildLeftHandHoldingMasterSwordDL.inc.c"
+};
+
+Gfx gLinkChildRightHandAndOotNearDL[74] = {
+#include "assets/objects/object_link_child/gLinkChildRightHandAndOotNearDL.inc.c"
+};
+
+Gfx gLinkChildRightHandHoldingFairyOcarinaNearDL[73] = {
+#include "assets/objects/object_link_child/gLinkChildRightHandHoldingFairyOcarinaNearDL.inc.c"
+};
+
+Gfx gLinkChildRightHandHoldingSlingshotNearDL[60] = {
+#include "assets/objects/object_link_child/gLinkChildRightHandHoldingSlingshotNearDL.inc.c"
+};
+
+Gfx gLinkChildLeftHandUpNearDL[41] = {
+#include "assets/objects/object_link_child/gLinkChildLeftHandUpNearDL.inc.c"
+};
+
+Gfx gLinkChildGoronBraceletDL[45] = {
+#include "assets/objects/object_link_child/gLinkChildGoronBraceletDL.inc.c"
+};
+
+Gfx gLinkChildLeftHandFarDL[40] = {
+#include "assets/objects/object_link_child/gLinkChildLeftHandFarDL.inc.c"
+};
+
+Gfx gLinkChildLeftFistFarDL[36] = {
+#include "assets/objects/object_link_child/gLinkChildLeftFistFarDL.inc.c"
+};
+
+Gfx gLinkChildRightHandFarDL[40] = {
+#include "assets/objects/object_link_child/gLinkChildRightHandFarDL.inc.c"
+};
+
+Gfx gLinkChildRightHandClosedFarDL[36] = {
+#include "assets/objects/object_link_child/gLinkChildRightHandClosedFarDL.inc.c"
+};
+
+Gfx gLinkChildRightFistAndDekuShieldFarDL[57] = {
+#include "assets/objects/object_link_child/gLinkChildRightFistAndDekuShieldFarDL.inc.c"
+};
+
+Gfx gLinkChildLeftFistAndBoomerangFarDL[50] = {
+#include "assets/objects/object_link_child/gLinkChildLeftFistAndBoomerangFarDL.inc.c"
+};
+
+Gfx gLinkChildHylianShieldSwordAndSheathFarDL[76] = {
+#include "assets/objects/object_link_child/gLinkChildHylianShieldSwordAndSheathFarDL.inc.c"
+};
+
+Gfx gLinkChildHylianShieldAndSheathFarDL[62] = {
+#include "assets/objects/object_link_child/gLinkChildHylianShieldAndSheathFarDL.inc.c"
+};
+
+Gfx gLinkChildDekuShieldSwordAndSheathFarDL[77] = {
+#include "assets/objects/object_link_child/gLinkChildDekuShieldSwordAndSheathFarDL.inc.c"
+};
+
+Gfx gLinkChildDekuShieldAndSheathFarDL[66] = {
+#include "assets/objects/object_link_child/gLinkChildDekuShieldAndSheathFarDL.inc.c"
+};
+
+Gfx gLinkChildSwordAndSheathFarDL[52] = {
+#include "assets/objects/object_link_child/gLinkChildSwordAndSheathFarDL.inc.c"
+};
+
+Gfx gLinkChildSheathFarDL[38] = {
+#include "assets/objects/object_link_child/gLinkChildSheathFarDL.inc.c"
+};
+
+Gfx gLinkChildLeftFistAndKokiriSwordFarDL[78] = {
+#include "assets/objects/object_link_child/gLinkChildLeftFistAndKokiriSwordFarDL.inc.c"
+};
+
+Gfx gLinkChildRightHandHoldingOOTFarDL[74] = {
+#include "assets/objects/object_link_child/gLinkChildRightHandHoldingOOTFarDL.inc.c"
+};
+
+Gfx gLinkChildRightHandHoldingFairyOcarinaFarDL[73] = {
+#include "assets/objects/object_link_child/gLinkChildRightHandHoldingFairyOcarinaFarDL.inc.c"
+};
+
+Gfx gLinkChildRightHandHoldingSlingshotFarDL[57] = {
+#include "assets/objects/object_link_child/gLinkChildRightHandHoldingSlingshotFarDL.inc.c"
+};
+
+Gfx gLinkChildLeftHandUpFarDL[41] = {
+#include "assets/objects/object_link_child/gLinkChildLeftHandUpFarDL.inc.c"
+};
+
+Gfx gLinkChildRightArmStretchedSlingshotDL[134] = {
+#include "assets/objects/object_link_child/gLinkChildRightArmStretchedSlingshotDL.inc.c"
+};
+
+Gfx gLinkChildBottleDL[33] = {
+#include "assets/objects/object_link_child/gLinkChildBottleDL.inc.c"
+};
+
+Gfx gLinkChildDL_18580[25] = {
+#include "assets/objects/object_link_child/gLinkChildDL_18580.inc.c"
+};
+
+Gfx gLinkChildBottle2DL[34] = {
+#include "assets/objects/object_link_child/gLinkChildBottle2DL.inc.c"
+};
+
+// Far skeleton vertices and DLs
+
+Vtx gLinkChildRightFootFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildRightFootFarVtx.inc.c"
+};
+
+Vtx gLinkChildRightShinFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildRightShinFarVtx.inc.c"
+};
+
+Vtx gLinkChildRightThighFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildRightThighFarVtx.inc.c"
+};
+
+Vtx gLinkChildLeftFootFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildLeftFootFarVtx.inc.c"
+};
+
+Vtx gLinkChildLeftShinFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildLeftShinFarVtx.inc.c"
+};
+
+Vtx gLinkChildLeftThighFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildLeftThighFarVtx.inc.c"
+};
+
+Vtx gLinkChildWaistFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildWaistFarVtx.inc.c"
+};
+
+Vtx gLinkChildHatFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildHatFarVtx.inc.c"
+};
+
+Vtx gLinkChildHeadFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildHeadFarVtx.inc.c"
+};
+
+Vtx gLinkChildCollarFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildCollarFarVtx.inc.c"
+};
+
+Vtx gLinkChildVtx_019E08[] = {
+#include "assets/objects/object_link_child/gLinkChildVtx_019E08.inc.c"
+};
+
+Vtx gLinkChildLeftForearmFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildLeftForearmFarVtx.inc.c"
+};
+
+Vtx gLinkChildLeftShoulderFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildLeftShoulderFarVtx.inc.c"
+};
+
+Vtx gLinkChildVtx_01A428[] = {
+#include "assets/objects/object_link_child/gLinkChildVtx_01A428.inc.c"
+};
+
+Vtx gLinkChildRightForearmFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildRightForearmFarVtx.inc.c"
+};
+
+Vtx gLinkChildRightShoulderFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildRightShoulderFarVtx.inc.c"
+};
+
+Vtx gLinkChildVtx_01AA98[] = {
+#include "assets/objects/object_link_child/gLinkChildVtx_01AA98.inc.c"
+};
+
+Vtx gLinkChildTorsoFarVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildTorsoFarVtx.inc.c"
+};
+
+Gfx gLinkChildWaistFarDL[70] = {
+#include "assets/objects/object_link_child/gLinkChildWaistFarDL.inc.c"
+};
+
+Gfx gLinkChildRightThighFarDL[56] = {
+#include "assets/objects/object_link_child/gLinkChildRightThighFarDL.inc.c"
+};
+
+Gfx gLinkChildRightShinFarDL[75] = {
+#include "assets/objects/object_link_child/gLinkChildRightShinFarDL.inc.c"
+};
+
+Gfx gLinkChildRightFootFarDL[37] = {
+#include "assets/objects/object_link_child/gLinkChildRightFootFarDL.inc.c"
+};
+
+Gfx gLinkChildLeftThighFarDL[56] = {
+#include "assets/objects/object_link_child/gLinkChildLeftThighFarDL.inc.c"
+};
+
+Gfx gLinkChildLeftShinFarDL[75] = {
+#include "assets/objects/object_link_child/gLinkChildLeftShinFarDL.inc.c"
+};
+
+Gfx gLinkChildLeftFootFarDL[37] = {
+#include "assets/objects/object_link_child/gLinkChildLeftFootFarDL.inc.c"
+};
+
+Gfx gLinkChildCollarFarDL[12] = {
+#include "assets/objects/object_link_child/gLinkChildCollarFarDL.inc.c"
+};
+
+Gfx gLinkChildTorsoFarDL[57] = {
+#include "assets/objects/object_link_child/gLinkChildTorsoFarDL.inc.c"
+};
+
+Gfx gLinkChildHeadFarDL[161] = {
+#include "assets/objects/object_link_child/gLinkChildHeadFarDL.inc.c"
+};
+
+Gfx gLinkChildHatFarDL[30] = {
+#include "assets/objects/object_link_child/gLinkChildHatFarDL.inc.c"
+};
+
+Gfx gLinkChildRightShoulderFarDL[56] = {
+#include "assets/objects/object_link_child/gLinkChildRightShoulderFarDL.inc.c"
+};
+
+Gfx gLinkChildRightForearmFarDL[38] = {
+#include "assets/objects/object_link_child/gLinkChildRightForearmFarDL.inc.c"
+};
+
+Gfx gLinkChildLeftShoulderFarDL[56] = {
+#include "assets/objects/object_link_child/gLinkChildLeftShoulderFarDL.inc.c"
+};
+
+Gfx gLinkChildLeftForearmFarDL[38] = {
+#include "assets/objects/object_link_child/gLinkChildLeftForearmFarDL.inc.c"
+};
+
+// Near skeleton vertices and DLs
+
+Vtx gLinkChildRightFootNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildRightFootNearVtx.inc.c"
+};
+
+Vtx gLinkChildRightShinNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildRightShinNearVtx.inc.c"
+};
+
+Vtx gLinkChildRightThighNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildRightThighNearVtx.inc.c"
+};
+
+Vtx gLinkChildLeftFootNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildLeftFootNearVtx.inc.c"
+};
+
+Vtx gLinkChildLeftShinNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildLeftShinNearVtx.inc.c"
+};
+
+Vtx gLinkChildLeftThighNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildLeftThighNearVtx.inc.c"
+};
+
+Vtx gLinkChildWaistNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildWaistNearVtx.inc.c"
+};
+
+Vtx gLinkChildHatNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildHatNearVtx.inc.c"
+};
+
+Vtx gLinkChildHeadNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildHeadNearVtx.inc.c"
+};
+
+Vtx gLinkChildCollarNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildCollarNearVtx.inc.c"
+};
+
+Vtx gLinkChildVtx_01EB38[] = {
+#include "assets/objects/object_link_child/gLinkChildVtx_01EB38.inc.c"
+};
+
+Vtx gLinkChildLeftForearmNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildLeftForearmNearVtx.inc.c"
+};
+
+Vtx gLinkChildLeftShoulderNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildLeftShoulderNearVtx.inc.c"
+};
+
+Vtx gLinkChildVtx_01F2B8[] = {
+#include "assets/objects/object_link_child/gLinkChildVtx_01F2B8.inc.c"
+};
+
+Vtx gLinkChildRightForearmNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildRightForearmNearVtx.inc.c"
+};
+
+Vtx gLinkChildRightShoulderNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildRightShoulderNearVtx.inc.c"
+};
+
+Vtx gLinkChildVtx_01FA28[] = {
+#include "assets/objects/object_link_child/gLinkChildVtx_01FA28.inc.c"
+};
+
+Vtx gLinkChildTorsoNearVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildTorsoNearVtx.inc.c"
+};
+
+Gfx gLinkChildWaistNearDL[73] = {
+#include "assets/objects/object_link_child/gLinkChildWaistNearDL.inc.c"
+};
+
+Gfx gLinkChildRightThighNearDL[63] = {
+#include "assets/objects/object_link_child/gLinkChildRightThighNearDL.inc.c"
+};
+
+Gfx gLinkChildRightShinNearDL[82] = {
+#include "assets/objects/object_link_child/gLinkChildRightShinNearDL.inc.c"
+};
+
+Gfx gLinkChildRightFootNearDL[44] = {
+#include "assets/objects/object_link_child/gLinkChildRightFootNearDL.inc.c"
+};
+
+Gfx gLinkChildLeftThighNearDL[63] = {
+#include "assets/objects/object_link_child/gLinkChildLeftThighNearDL.inc.c"
+};
+
+Gfx gLinkChildLeftShinNearDL[82] = {
+#include "assets/objects/object_link_child/gLinkChildLeftShinNearDL.inc.c"
+};
+
+Gfx gLinkChildLeftFootNearDL[44] = {
+#include "assets/objects/object_link_child/gLinkChildLeftFootNearDL.inc.c"
+};
+
+Gfx gLinkChildCollarNearDL[14] = {
+#include "assets/objects/object_link_child/gLinkChildCollarNearDL.inc.c"
+};
+
+Gfx gLinkChildTorsoNearDL[70] = {
+#include "assets/objects/object_link_child/gLinkChildTorsoNearDL.inc.c"
+};
+
+Gfx gLinkChildHeadNearDL[202] = {
+#include "assets/objects/object_link_child/gLinkChildHeadNearDL.inc.c"
+};
+
+Gfx gLinkChildHatNearDL[39] = {
+#include "assets/objects/object_link_child/gLinkChildHatNearDL.inc.c"
+};
+
+Gfx gLinkChildRightShoulderNearDL[58] = {
+#include "assets/objects/object_link_child/gLinkChildRightShoulderNearDL.inc.c"
+};
+
+Gfx gLinkChildRightForearmNearDL[44] = {
+#include "assets/objects/object_link_child/gLinkChildRightForearmNearDL.inc.c"
+};
+
+Gfx gLinkChildLeftShoulderNearDL[58] = {
+#include "assets/objects/object_link_child/gLinkChildLeftShoulderNearDL.inc.c"
+};
+
+Gfx gLinkChildLeftForearmNearDL[44] = {
+#include "assets/objects/object_link_child/gLinkChildLeftForearmNearDL.inc.c"
+};
+
+// Slingshot string
+
+Vtx gLinkChildSlingshotStringVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildSlingshotStringVtx.inc.c"
+};
+
+Gfx gLinkChildSlingshotStringDL[12] = {
+#include "assets/objects/object_link_child/gLinkChildSlingshotStringDL.inc.c"
+};
+
+// Deku shield
+
+Vtx gLinkChildDekuShieldVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildDekuShieldVtx.inc.c"
+};
+
+Gfx gLinkChildDekuShieldDL[42] = {
+#include "assets/objects/object_link_child/gLinkChildDekuShieldDL.inc.c"
+};
+
+Mtx gLinkChildDekuShieldMtx =
+#include "assets/objects/object_link_child/gLinkChildDekuShieldMtx.inc.c"
+ ;
+
+Gfx gLinkChildDekuShieldWithMatrixDL[3] = {
+#include "assets/objects/object_link_child/gLinkChildDekuShieldWithMatrixDL.inc.c"
+};
+
+// Masks
+
+#define gLinkChildSpookyMaskTex_WIDTH 32
+#define gLinkChildSpookyMaskTex_HEIGHT 64
+u64 gLinkChildSpookyMaskTex[TEX_LEN(u64, gLinkChildSpookyMaskTex_WIDTH, gLinkChildSpookyMaskTex_HEIGHT, 16)] = {
+#include "assets/objects/object_link_child/gLinkChildSpookyMaskTex.ia16.inc.c"
+};
+
+#define gLinkChildKeatonMaskEyeBrowTex_WIDTH 32
+#define gLinkChildKeatonMaskEyeBrowTex_HEIGHT 16
+u64 gLinkChildKeatonMaskEyeBrowTex[TEX_LEN(u64, gLinkChildKeatonMaskEyeBrowTex_WIDTH,
+ gLinkChildKeatonMaskEyeBrowTex_HEIGHT, 16)] = {
+#include "assets/objects/object_link_child/gLinkChildKeatonMaskEyeBrowTex.rgba16.inc.c"
+};
+
+#define gLinkChildKeatonMaskEarTex_WIDTH 8
+#define gLinkChildKeatonMaskEarTex_HEIGHT 8
+u64 gLinkChildKeatonMaskEarTex[TEX_LEN(u64, gLinkChildKeatonMaskEarTex_WIDTH, gLinkChildKeatonMaskEarTex_HEIGHT,
+ 16)] = {
+#include "assets/objects/object_link_child/gLinkChildKeatonMaskEarTex.rgba16.inc.c"
+};
+
+#define gLinkChildSkullMaskEyeTex_WIDTH 16
+#define gLinkChildSkullMaskEyeTex_HEIGHT 16
+u64 gLinkChildSkullMaskEyeTex[TEX_LEN(u64, gLinkChildSkullMaskEyeTex_WIDTH, gLinkChildSkullMaskEyeTex_HEIGHT, 16)] = {
+#include "assets/objects/object_link_child/gLinkChildSkullMaskEyeTex.rgba16.inc.c"
+};
+
+#define gLinkChildMaskOfTruthTex_WIDTH 32
+#define gLinkChildMaskOfTruthTex_HEIGHT 64
+u64 gLinkChildMaskOfTruthTex[TEX_LEN(u64, gLinkChildMaskOfTruthTex_WIDTH, gLinkChildMaskOfTruthTex_HEIGHT, 16)] = {
+#include "assets/objects/object_link_child/gLinkChildMaskOfTruthTex.rgba16.inc.c"
+};
+
+#define gLinkChildMaskOfTruthCurveTex_WIDTH 16
+#define gLinkChildMaskOfTruthCurveTex_HEIGHT 32
+u64 gLinkChildMaskOfTruthCurveTex[TEX_LEN(u64, gLinkChildMaskOfTruthCurveTex_WIDTH,
+ gLinkChildMaskOfTruthCurveTex_HEIGHT, 16)] = {
+#include "assets/objects/object_link_child/gLinkChildMaskOfTruthCurveTex.rgba16.inc.c"
+};
+
+#define gLinkChildGoronMaskMouthTex_WIDTH 64
+#define gLinkChildGoronMaskMouthTex_HEIGHT 32
+u64 gLinkChildGoronMaskMouthTex[TEX_LEN(u64, gLinkChildGoronMaskMouthTex_WIDTH, gLinkChildGoronMaskMouthTex_HEIGHT,
+ 16)] = {
+#include "assets/objects/object_link_child/gLinkChildGoronMaskMouthTex.rgba16.inc.c"
+};
+
+#define gLinkChildGoronMaskEyeTex_WIDTH 32
+#define gLinkChildGoronMaskEyeTex_HEIGHT 32
+u64 gLinkChildGoronMaskEyeTex[TEX_LEN(u64, gLinkChildGoronMaskEyeTex_WIDTH, gLinkChildGoronMaskEyeTex_HEIGHT, 16)] = {
+#include "assets/objects/object_link_child/gLinkChildGoronMaskEyeTex.rgba16.inc.c"
+};
+
+#define gLinkChildGoronMaskNoseTex_WIDTH 8
+#define gLinkChildGoronMaskNoseTex_HEIGHT 8
+u64 gLinkChildGoronMaskNoseTex[TEX_LEN(u64, gLinkChildGoronMaskNoseTex_WIDTH, gLinkChildGoronMaskNoseTex_HEIGHT,
+ 16)] = {
+#include "assets/objects/object_link_child/gLinkChildGoronMaskNoseTex.rgba16.inc.c"
+};
+
+#define gLinkChildGoronMaskHairTex_WIDTH 16
+#define gLinkChildGoronMaskHairTex_HEIGHT 16
+u64 gLinkChildGoronMaskHairTex[TEX_LEN(u64, gLinkChildGoronMaskHairTex_WIDTH, gLinkChildGoronMaskHairTex_HEIGHT,
+ 16)] = {
+#include "assets/objects/object_link_child/gLinkChildGoronMaskHairTex.rgba16.inc.c"
+};
+
+#define gLinkChildSkullMaskTeethTex_WIDTH 8
+#define gLinkChildSkullMaskTeethTex_HEIGHT 8
+u64 gLinkChildSkullMaskTeethTex[TEX_LEN(u64, gLinkChildSkullMaskTeethTex_WIDTH, gLinkChildSkullMaskTeethTex_HEIGHT,
+ 16)] = {
+#include "assets/objects/object_link_child/gLinkChildSkullMaskTeethTex.rgba16.inc.c"
+};
+
+#define gLinkChildGoronMaskEarTex_WIDTH 8
+#define gLinkChildGoronMaskEarTex_HEIGHT 8
+u64 gLinkChildGoronMaskEarTex[TEX_LEN(u64, gLinkChildGoronMaskEarTex_WIDTH, gLinkChildGoronMaskEarTex_HEIGHT, 16)] = {
+#include "assets/objects/object_link_child/gLinkChildGoronMaskEarTex.rgba16.inc.c"
+};
+
+#define gLinkChildZoraMaskEyeBoarderTex_WIDTH 8
+#define gLinkChildZoraMaskEyeBoarderTex_HEIGHT 8
+u64 gLinkChildZoraMaskEyeBoarderTex[TEX_LEN(u64, gLinkChildZoraMaskEyeBoarderTex_WIDTH,
+ gLinkChildZoraMaskEyeBoarderTex_HEIGHT, 16)] = {
+#include "assets/objects/object_link_child/gLinkChildZoraMaskEyeBoarderTex.rgba16.inc.c"
+};
+
+#define gLinkChildZoraMaskEarTex_WIDTH 32
+#define gLinkChildZoraMaskEarTex_HEIGHT 32
+u64 gLinkChildZoraMaskEarTex[TEX_LEN(u64, gLinkChildZoraMaskEarTex_WIDTH, gLinkChildZoraMaskEarTex_HEIGHT, 16)] = {
+#include "assets/objects/object_link_child/gLinkChildZoraMaskEarTex.rgba16.inc.c"
+};
+
+#define gLinkChildSkullMaskNoseTex_WIDTH 8
+#define gLinkChildSkullMaskNoseTex_HEIGHT 8
+u64 gLinkChildSkullMaskNoseTex[TEX_LEN(u64, gLinkChildSkullMaskNoseTex_WIDTH, gLinkChildSkullMaskNoseTex_HEIGHT,
+ 16)] = {
+#include "assets/objects/object_link_child/gLinkChildSkullMaskNoseTex.rgba16.inc.c"
+};
+
+#define gLinkChildZoraMaskEyeTex_WIDTH 32
+#define gLinkChildZoraMaskEyeTex_HEIGHT 32
+u64 gLinkChildZoraMaskEyeTex[TEX_LEN(u64, gLinkChildZoraMaskEyeTex_WIDTH, gLinkChildZoraMaskEyeTex_HEIGHT, 16)] = {
+#include "assets/objects/object_link_child/gLinkChildZoraMaskEyeTex.rgba16.inc.c"
+};
+
+#define gLinkChildZoraMaskMouthTex_WIDTH 32
+#define gLinkChildZoraMaskMouthTex_HEIGHT 32
+u64 gLinkChildZoraMaskMouthTex[TEX_LEN(u64, gLinkChildZoraMaskMouthTex_WIDTH, gLinkChildZoraMaskMouthTex_HEIGHT,
+ 16)] = {
+#include "assets/objects/object_link_child/gLinkChildZoraMaskMouthTex.rgba16.inc.c"
+};
+
+#define gLinkChildGerudoMaskEyeTex_WIDTH 32
+#define gLinkChildGerudoMaskEyeTex_HEIGHT 32
+u64 gLinkChildGerudoMaskEyeTex[TEX_LEN(u64, gLinkChildGerudoMaskEyeTex_WIDTH, gLinkChildGerudoMaskEyeTex_HEIGHT,
+ 16)] = {
+#include "assets/objects/object_link_child/gLinkChildGerudoMaskEyeTex.rgba16.inc.c"
+};
+
+#define gLinkChildGerudoMaskMouthTex_WIDTH 16
+#define gLinkChildGerudoMaskMouthTex_HEIGHT 16
+u64 gLinkChildGerudoMaskMouthTex[TEX_LEN(u64, gLinkChildGerudoMaskMouthTex_WIDTH, gLinkChildGerudoMaskMouthTex_HEIGHT,
+ 16)] = {
+#include "assets/objects/object_link_child/gLinkChildGerudoMaskMouthTex.rgba16.inc.c"
+};
+
+#define gLinkChildGerudoMaskHairTex_WIDTH 16
+#define gLinkChildGerudoMaskHairTex_HEIGHT 16
+u64 gLinkChildGerudoMaskHairTex[TEX_LEN(u64, gLinkChildGerudoMaskHairTex_WIDTH, gLinkChildGerudoMaskHairTex_HEIGHT,
+ 16)] = {
+#include "assets/objects/object_link_child/gLinkChildGerudoMaskHairTex.rgba16.inc.c"
+};
+
+#define gLinkChildGerudoMaskNoseTex_WIDTH 8
+#define gLinkChildGerudoMaskNoseTex_HEIGHT 8
+u64 gLinkChildGerudoMaskNoseTex[TEX_LEN(u64, gLinkChildGerudoMaskNoseTex_WIDTH, gLinkChildGerudoMaskNoseTex_HEIGHT,
+ 16)] = {
+#include "assets/objects/object_link_child/gLinkChildGerudoMaskNoseTex.rgba16.inc.c"
+};
+
+Vtx gLinkChildSkullMaskVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildSkullMaskVtx.inc.c"
+};
+
+Vtx gLinkChildSpookyMaskVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildSpookyMaskVtx.inc.c"
+};
+
+Vtx gLinkChildKeatonMaskVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildKeatonMaskVtx.inc.c"
+};
+
+Vtx gLinkChildMaskOfTruthVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildMaskOfTruthVtx.inc.c"
+};
+
+Vtx gLinkChildGoronMaskVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildGoronMaskVtx.inc.c"
+};
+
+Vtx gLinkChildZoraMaskVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildZoraMaskVtx.inc.c"
+};
+
+Vtx gLinkChildGerudoMaskVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildGerudoMaskVtx.inc.c"
+};
+
+Gfx gLinkChildSkullMaskDL[70] = {
+#include "assets/objects/object_link_child/gLinkChildSkullMaskDL.inc.c"
+};
+
+Gfx gLinkChildSpookyMaskDL[30] = {
+#include "assets/objects/object_link_child/gLinkChildSpookyMaskDL.inc.c"
+};
+
+Gfx gLinkChildKeatonMaskDL[50] = {
+#include "assets/objects/object_link_child/gLinkChildKeatonMaskDL.inc.c"
+};
+
+Gfx gLinkChildMaskOfTruthDL[44] = {
+#include "assets/objects/object_link_child/gLinkChildMaskOfTruthDL.inc.c"
+};
+
+Gfx gLinkChildGoronMaskDL[70] = {
+#include "assets/objects/object_link_child/gLinkChildGoronMaskDL.inc.c"
+};
+
+Gfx gLinkChildZoraMaskDL[65] = {
+#include "assets/objects/object_link_child/gLinkChildZoraMaskDL.inc.c"
+};
+
+Gfx gLinkChildGerudoMaskDL[84] = {
+#include "assets/objects/object_link_child/gLinkChildGerudoMaskDL.inc.c"
+};
+
+// Bunny hood
+
+#define gLinkChildBunnyHoodEyeTex_WIDTH 16
+#define gLinkChildBunnyHoodEyeTex_HEIGHT 16
+u64 gLinkChildBunnyHoodEyeTex[TEX_LEN(u64, gLinkChildBunnyHoodEyeTex_WIDTH, gLinkChildBunnyHoodEyeTex_HEIGHT, 16)] = {
+#include "assets/objects/object_link_child/gLinkChildBunnyHoodEyeTex.rgba16.inc.c"
+};
+
+#define gLinkChildBunnyHoodTex_WIDTH 16
+#define gLinkChildBunnyHoodTex_HEIGHT 32
+u64 gLinkChildBunnyHoodTex[TEX_LEN(u64, gLinkChildBunnyHoodTex_WIDTH, gLinkChildBunnyHoodTex_HEIGHT, 16)] = {
+#include "assets/objects/object_link_child/gLinkChildBunnyHoodTex.rgba16.inc.c"
+};
+
+#define gLinkChildBunnyHoodEarTex_WIDTH 16
+#define gLinkChildBunnyHoodEarTex_HEIGHT 32
+u64 gLinkChildBunnyHoodEarTex[TEX_LEN(u64, gLinkChildBunnyHoodEarTex_WIDTH, gLinkChildBunnyHoodEarTex_HEIGHT, 16)] = {
+#include "assets/objects/object_link_child/gLinkChildBunnyHoodEarTex.rgba16.inc.c"
+};
+
+Vtx gLinkChildBunnyHoodVtx[] = {
+#include "assets/objects/object_link_child/gLinkChildBunnyHoodVtx.inc.c"
+};
+
+Gfx gLinkChildBunnyHoodDL[114] = {
+#include "assets/objects/object_link_child/gLinkChildBunnyHoodDL.inc.c"
+};
+
+// Skeleton
+
+LodLimb gLinkChildRootLimb = {
+#include "assets/objects/object_link_child/gLinkChildRootLimb.inc.c"
+};
+
+LodLimb gLinkChildWaistLimb = {
+#include "assets/objects/object_link_child/gLinkChildWaistLimb.inc.c"
+};
+
+LodLimb gLinkChildLowerControlLimb = {
+#include "assets/objects/object_link_child/gLinkChildLowerControlLimb.inc.c"
+};
+
+LodLimb gLinkChildRightThighLimb = {
+#include "assets/objects/object_link_child/gLinkChildRightThighLimb.inc.c"
+};
+
+LodLimb gLinkChildRightShinLimb = {
+#include "assets/objects/object_link_child/gLinkChildRightShinLimb.inc.c"
+};
+
+LodLimb gLinkChildRightFootLimb = {
+#include "assets/objects/object_link_child/gLinkChildRightFootLimb.inc.c"
+};
+
+LodLimb gLinkChildLeftThighLimb = {
+#include "assets/objects/object_link_child/gLinkChildLeftThighLimb.inc.c"
+};
+
+LodLimb gLinkChildLeftShinLimb = {
+#include "assets/objects/object_link_child/gLinkChildLeftShinLimb.inc.c"
+};
+
+LodLimb gLinkChildLeftFootLimb = {
+#include "assets/objects/object_link_child/gLinkChildLeftFootLimb.inc.c"
+};
+
+LodLimb gLinkChildUpperControlLimb = {
+#include "assets/objects/object_link_child/gLinkChildUpperControlLimb.inc.c"
+};
+
+LodLimb gLinkChildHeadLimb = {
+#include "assets/objects/object_link_child/gLinkChildHeadLimb.inc.c"
+};
+
+LodLimb gLinkChildHatLimb = {
+#include "assets/objects/object_link_child/gLinkChildHatLimb.inc.c"
+};
+
+LodLimb gLinkChildCollarLimb = {
+#include "assets/objects/object_link_child/gLinkChildCollarLimb.inc.c"
+};
+
+LodLimb gLinkChildLeftshoulderLimb = {
+#include "assets/objects/object_link_child/gLinkChildLeftshoulderLimb.inc.c"
+};
+
+LodLimb gLinkChildLeftForearmLimb = {
+#include "assets/objects/object_link_child/gLinkChildLeftForearmLimb.inc.c"
+};
+
+LodLimb gLinkChildLeftHandLimb = {
+#include "assets/objects/object_link_child/gLinkChildLeftHandLimb.inc.c"
+};
+
+LodLimb gLinkChildRightshoulderLimb = {
+#include "assets/objects/object_link_child/gLinkChildRightshoulderLimb.inc.c"
+};
+
+LodLimb gLinkChildRightForearmLimb = {
+#include "assets/objects/object_link_child/gLinkChildRightForearmLimb.inc.c"
+};
+
+LodLimb gLinkChildRightHandLimb = {
+#include "assets/objects/object_link_child/gLinkChildRightHandLimb.inc.c"
+};
+
+LodLimb gLinkChildSwordAndSheathLimb = {
+#include "assets/objects/object_link_child/gLinkChildSwordAndSheathLimb.inc.c"
+};
+
+LodLimb gLinkChildTorsoLimb = {
+#include "assets/objects/object_link_child/gLinkChildTorsoLimb.inc.c"
+};
+
+void* gLinkChildLimbs[] = {
+#include "assets/objects/object_link_child/gLinkChildLimbs.inc.c"
+};
+
+FlexSkeletonHeader gLinkChildSkel = {
+#include "assets/objects/object_link_child/gLinkChildSkel.inc.c"
+};
diff --git a/assets/objects/object_link_child/object_link_child.h b/assets/objects/object_link_child/object_link_child.h
new file mode 100644
index 000000000..7efc57680
--- /dev/null
+++ b/assets/objects/object_link_child/object_link_child.h
@@ -0,0 +1,87 @@
+#ifndef OBJECT_LINK_CHILD_H
+#define OBJECT_LINK_CHILD_H
+
+#include "ultra64.h"
+#include "tex_len.h"
+#include "z64animation.h"
+
+#define LINK_CHILD_EYES_TEX_WIDTH 64
+#define LINK_CHILD_EYES_TEX_HEIGHT 32
+extern u64 gLinkChildEyesOpenTex[TEX_LEN(u64, LINK_CHILD_EYES_TEX_WIDTH, LINK_CHILD_EYES_TEX_HEIGHT, 8)];
+extern u64 gLinkChildEyesHalfTex[TEX_LEN(u64, LINK_CHILD_EYES_TEX_WIDTH, LINK_CHILD_EYES_TEX_HEIGHT, 8)];
+extern u64 gLinkChildEyesClosedfTex[TEX_LEN(u64, LINK_CHILD_EYES_TEX_WIDTH, LINK_CHILD_EYES_TEX_HEIGHT, 8)];
+extern u64 gLinkChildEyesLeftTex[TEX_LEN(u64, LINK_CHILD_EYES_TEX_WIDTH, LINK_CHILD_EYES_TEX_HEIGHT, 8)];
+extern u64 gLinkChildEyesRightTex[TEX_LEN(u64, LINK_CHILD_EYES_TEX_WIDTH, LINK_CHILD_EYES_TEX_HEIGHT, 8)];
+extern u64 gLinkChildEyesWideTex[TEX_LEN(u64, LINK_CHILD_EYES_TEX_WIDTH, LINK_CHILD_EYES_TEX_HEIGHT, 8)];
+extern u64 gLinkChildEyesDownTex[TEX_LEN(u64, LINK_CHILD_EYES_TEX_WIDTH, LINK_CHILD_EYES_TEX_HEIGHT, 8)];
+extern u64 gLinkChildEyesWincingTex[TEX_LEN(u64, LINK_CHILD_EYES_TEX_WIDTH, LINK_CHILD_EYES_TEX_HEIGHT, 8)];
+
+#define LINK_CHILD_MOUTH_TEX_WIDTH 32
+#define LINK_CHILD_MOUTH_TEX_HEIGHT 32
+extern u64 gLinkChildMouthClosedTex[TEX_LEN(u64, LINK_CHILD_MOUTH_TEX_WIDTH, LINK_CHILD_MOUTH_TEX_HEIGHT, 8)];
+extern u64 gLinkChildMouthHalfTex[TEX_LEN(u64, LINK_CHILD_MOUTH_TEX_WIDTH, LINK_CHILD_MOUTH_TEX_HEIGHT, 8)];
+extern u64 gLinkChildMouthOpenTex[TEX_LEN(u64, LINK_CHILD_MOUTH_TEX_WIDTH, LINK_CHILD_MOUTH_TEX_HEIGHT, 8)];
+extern u64 gLinkChildMouthSmileTex[TEX_LEN(u64, LINK_CHILD_MOUTH_TEX_WIDTH, LINK_CHILD_MOUTH_TEX_HEIGHT, 8)];
+
+extern Gfx gLinkChildLinkDekuStickDL[41];
+
+extern Gfx gLinkChildLeftHandNearDL[45];
+extern Gfx gLinkChildLeftFistNearDL[36];
+extern Gfx gLinkChildLeftFistAndKokiriSwordNearDL[81];
+extern Gfx gLinkChildRightHandNearDL[44];
+extern Gfx gLinkChildRightHandClosedNearDL[36];
+extern Gfx gLinkChildRightFistAndDekuShieldNearDL[68];
+extern Gfx gLinkChildLeftFistAndBoomerangNearDL[73];
+extern Gfx gLinkChildHylianShieldSwordAndSheathNearDL[83];
+extern Gfx gLinkChildHylianShieldAndSheathNearDL[69];
+extern Gfx gLinkChildDekuShieldSwordAndSheathNearDL[85];
+extern Gfx gLinkChildDekuShieldAndSheathNearDL[71];
+extern Gfx gLinkChildSwordAndSheathNearDL[56];
+extern Gfx gLinkChildSheathNearDL[39];
+extern Gfx gLinkChildLeftHandHoldingMasterSwordDL[131];
+extern Gfx gLinkChildRightHandAndOotNearDL[74];
+extern Gfx gLinkChildRightHandHoldingFairyOcarinaNearDL[73];
+extern Gfx gLinkChildRightHandHoldingSlingshotNearDL[60];
+extern Gfx gLinkChildLeftHandUpNearDL[41];
+extern Gfx gLinkChildGoronBraceletDL[45];
+extern Gfx gLinkChildLeftHandFarDL[40];
+extern Gfx gLinkChildLeftFistFarDL[36];
+extern Gfx gLinkChildRightHandFarDL[40];
+extern Gfx gLinkChildRightHandClosedFarDL[36];
+extern Gfx gLinkChildRightFistAndDekuShieldFarDL[57];
+extern Gfx gLinkChildLeftFistAndBoomerangFarDL[50];
+extern Gfx gLinkChildHylianShieldSwordAndSheathFarDL[76];
+extern Gfx gLinkChildHylianShieldAndSheathFarDL[62];
+extern Gfx gLinkChildDekuShieldSwordAndSheathFarDL[77];
+extern Gfx gLinkChildDekuShieldAndSheathFarDL[66];
+extern Gfx gLinkChildSwordAndSheathFarDL[52];
+extern Gfx gLinkChildSheathFarDL[38];
+extern Gfx gLinkChildLeftFistAndKokiriSwordFarDL[78];
+extern Gfx gLinkChildRightHandHoldingOOTFarDL[74];
+extern Gfx gLinkChildRightHandHoldingFairyOcarinaFarDL[73];
+extern Gfx gLinkChildRightHandHoldingSlingshotFarDL[57];
+extern Gfx gLinkChildRightArmStretchedSlingshotDL[134];
+extern Gfx gLinkChildBottleDL[33];
+
+extern Gfx gLinkChildWaistFarDL[70];
+
+extern Gfx gLinkChildWaistNearDL[73];
+extern Gfx gLinkChildRightShoulderNearDL[58];
+
+extern Gfx gLinkChildSlingshotStringDL[12];
+
+extern Gfx gLinkChildDekuShieldDL[42];
+extern Gfx gLinkChildDekuShieldWithMatrixDL[3];
+
+extern Gfx gLinkChildSkullMaskDL[70];
+extern Gfx gLinkChildSpookyMaskDL[30];
+extern Gfx gLinkChildKeatonMaskDL[50];
+extern Gfx gLinkChildMaskOfTruthDL[44];
+extern Gfx gLinkChildGoronMaskDL[70];
+extern Gfx gLinkChildZoraMaskDL[65];
+extern Gfx gLinkChildGerudoMaskDL[84];
+extern Gfx gLinkChildBunnyHoodDL[114];
+
+extern FlexSkeletonHeader gLinkChildSkel;
+
+#endif
diff --git a/assets/textures/icon_item_24_static/icon_item_24_static.c b/assets/textures/icon_item_24_static/icon_item_24_static.c
new file mode 100644
index 000000000..5afa6764c
--- /dev/null
+++ b/assets/textures/icon_item_24_static/icon_item_24_static.c
@@ -0,0 +1,81 @@
+#include "icon_item_24_static.h"
+
+u64 gQuestIconMedallionForestTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_24_static/gQuestIconMedallionForestTex.rgba32.inc.c"
+};
+
+u64 gQuestIconMedallionFireTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_24_static/gQuestIconMedallionFireTex.rgba32.inc.c"
+};
+
+u64 gQuestIconMedallionWaterTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_24_static/gQuestIconMedallionWaterTex.rgba32.inc.c"
+};
+
+u64 gQuestIconMedallionSpiritTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_24_static/gQuestIconMedallionSpiritTex.rgba32.inc.c"
+};
+
+u64 gQuestIconMedallionShadowTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_24_static/gQuestIconMedallionShadowTex.rgba32.inc.c"
+};
+
+u64 gQuestIconMedallionLightTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_24_static/gQuestIconMedallionLightTex.rgba32.inc.c"
+};
+
+u64 gQuestIconKokiriEmeraldTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_24_static/gQuestIconKokiriEmeraldTex.rgba32.inc.c"
+};
+
+u64 gQuestIconGoronRubyTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_24_static/gQuestIconGoronRubyTex.rgba32.inc.c"
+};
+
+u64 gQuestIconZoraSapphireTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_24_static/gQuestIconZoraSapphireTex.rgba32.inc.c"
+};
+
+u64 gQuestIconStoneOfAgonyTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_24_static/gQuestIconStoneOfAgonyTex.rgba32.inc.c"
+};
+
+u64 gQuestIconGerudosCardTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_24_static/gQuestIconGerudosCardTex.rgba32.inc.c"
+};
+
+u64 gQuestIconGoldSkulltulaTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_24_static/gQuestIconGoldSkulltulaTex.rgba32.inc.c"
+};
+
+u64 gQuestIconHeartContainerTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_24_static/gQuestIconHeartContainerTex.rgba32.inc.c"
+};
+
+u64 gQuestIconHeartPieceTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_24_static/gQuestIconHeartPieceTex.rgba32.inc.c"
+};
+
+u64 gQuestIconDungeonBossKeyTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_24_static/gQuestIconDungeonBossKeyTex.rgba32.inc.c"
+};
+
+u64 gQuestIconDungeonCompassTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_24_static/gQuestIconDungeonCompassTex.rgba32.inc.c"
+};
+
+u64 gQuestIconDungeonMapTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_24_static/gQuestIconDungeonMapTex.rgba32.inc.c"
+};
+
+u64 gQuestIconSmallKeyTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_24_static/gQuestIconSmallKeyTex.rgba32.inc.c"
+};
+
+u64 gQuestIconMagicJarSmallTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_24_static/gQuestIconMagicJarSmallTex.rgba32.inc.c"
+};
+
+u64 gQuestIconMagicJarBigTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_24_static/gQuestIconMagicJarBigTex.rgba32.inc.c"
+};
diff --git a/assets/textures/icon_item_24_static/icon_item_24_static.h b/assets/textures/icon_item_24_static/icon_item_24_static.h
new file mode 100644
index 000000000..dbfa9c40e
--- /dev/null
+++ b/assets/textures/icon_item_24_static/icon_item_24_static.h
@@ -0,0 +1,29 @@
+#ifndef ICON_ITEM_24_STATIC_H
+#define ICON_ITEM_24_STATIC_H
+
+#include "ultra64.h"
+#include "tex_len.h"
+#include "z64interface.h"
+
+extern u64 gQuestIconMedallionForestTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)];
+extern u64 gQuestIconMedallionFireTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)];
+extern u64 gQuestIconMedallionWaterTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)];
+extern u64 gQuestIconMedallionSpiritTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)];
+extern u64 gQuestIconMedallionShadowTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)];
+extern u64 gQuestIconMedallionLightTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)];
+extern u64 gQuestIconKokiriEmeraldTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)];
+extern u64 gQuestIconGoronRubyTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)];
+extern u64 gQuestIconZoraSapphireTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)];
+extern u64 gQuestIconStoneOfAgonyTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)];
+extern u64 gQuestIconGerudosCardTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)];
+extern u64 gQuestIconGoldSkulltulaTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)];
+extern u64 gQuestIconHeartContainerTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)];
+extern u64 gQuestIconHeartPieceTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)];
+extern u64 gQuestIconDungeonBossKeyTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)];
+extern u64 gQuestIconDungeonCompassTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)];
+extern u64 gQuestIconDungeonMapTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)];
+extern u64 gQuestIconSmallKeyTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)];
+extern u64 gQuestIconMagicJarSmallTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)];
+extern u64 gQuestIconMagicJarBigTex[TEX_LEN(u64, QUEST_ICON_WIDTH, QUEST_ICON_HEIGHT, 32)];
+
+#endif
diff --git a/assets/textures/icon_item_fra_static/icon_item_fra_static.c b/assets/textures/icon_item_fra_static/icon_item_fra_static.c
new file mode 100644
index 000000000..80dae50a8
--- /dev/null
+++ b/assets/textures/icon_item_fra_static/icon_item_fra_static.c
@@ -0,0 +1,135 @@
+#include "icon_item_fra_static.h"
+
+u64 gPauseDekuTitleFRATex[TEX_LEN(u64, gPauseDekuTitleFRATex_WIDTH, gPauseDekuTitleFRATex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseDekuTitleFRATex.ia8.inc.c"
+};
+
+u64 gPauseDodongoTitleFRATex[TEX_LEN(u64, gPauseDodongoTitleFRATex_WIDTH, gPauseDodongoTitleFRATex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseDodongoTitleFRATex.ia8.inc.c"
+};
+
+u64 gPauseJabuTitleFRATex[TEX_LEN(u64, gPauseJabuTitleFRATex_WIDTH, gPauseJabuTitleFRATex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseJabuTitleFRATex.ia8.inc.c"
+};
+
+u64 gPauseForestTitleFRATex[TEX_LEN(u64, gPauseForestTitleFRATex_WIDTH, gPauseForestTitleFRATex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseForestTitleFRATex.ia8.inc.c"
+};
+
+u64 gPauseFireTitleFRATex[TEX_LEN(u64, gPauseFireTitleFRATex_WIDTH, gPauseFireTitleFRATex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseFireTitleFRATex.ia8.inc.c"
+};
+
+u64 gPauseWaterTitleFRATex[TEX_LEN(u64, gPauseWaterTitleFRATex_WIDTH, gPauseWaterTitleFRATex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseWaterTitleFRATex.ia8.inc.c"
+};
+
+u64 gPauseSpiritTitleFRATex[TEX_LEN(u64, gPauseSpiritTitleFRATex_WIDTH, gPauseSpiritTitleFRATex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseSpiritTitleFRATex.ia8.inc.c"
+};
+
+u64 gPauseShadowTitleFRATex[TEX_LEN(u64, gPauseShadowTitleFRATex_WIDTH, gPauseShadowTitleFRATex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseShadowTitleFRATex.ia8.inc.c"
+};
+
+u64 gPauseBotWTitleFRATex[TEX_LEN(u64, gPauseBotWTitleFRATex_WIDTH, gPauseBotWTitleFRATex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseBotWTitleFRATex.ia8.inc.c"
+};
+
+u64 gPauseIceCavernTitleFRATex[TEX_LEN(u64, gPauseIceCavernTitleFRATex_WIDTH, gPauseIceCavernTitleFRATex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseIceCavernTitleFRATex.ia8.inc.c"
+};
+
+u64 gPauseToEquipFRATex[TEX_LEN(u64, gPauseToEquipFRATex_WIDTH, gPauseToEquipFRATex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseToEquipFRATex.ia8.inc.c"
+};
+
+u64 gPauseToDecideFRATex[TEX_LEN(u64, gPauseToDecideFRATex_WIDTH, gPauseToDecideFRATex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseToDecideFRATex.ia8.inc.c"
+};
+
+u64 gPauseToPlayMelodyFRATex[TEX_LEN(u64, gPauseToPlayMelodyFRATex_WIDTH, gPauseToPlayMelodyFRATex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseToPlayMelodyFRATex.ia8.inc.c"
+};
+
+u64 gPauseToSelectItemFRATex[TEX_LEN(u64, gPauseToSelectItemFRATex_WIDTH, gPauseToSelectItemFRATex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseToSelectItemFRATex.ia8.inc.c"
+};
+
+u64 gPauseToMapFRATex[TEX_LEN(u64, gPauseToMapFRATex_WIDTH, gPauseToMapFRATex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseToMapFRATex.ia8.inc.c"
+};
+
+u64 gPauseToQuestStatusFRATex[TEX_LEN(u64, gPauseToQuestStatusFRATex_WIDTH, gPauseToQuestStatusFRATex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseToQuestStatusFRATex.ia8.inc.c"
+};
+
+u64 gPauseToEquipmentFRATex[TEX_LEN(u64, gPauseToEquipmentFRATex_WIDTH, gPauseToEquipmentFRATex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseToEquipmentFRATex.ia8.inc.c"
+};
+
+u64 gPauseSavePromptFRATex[TEX_LEN(u64, gPauseSavePromptFRATex_WIDTH, gPauseSavePromptFRATex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseSavePromptFRATex.ia8.inc.c"
+};
+
+u64 gPauseSaveConfirmationFRATex[TEX_LEN(u64, gPauseSaveConfirmationFRATex_WIDTH, gPauseSaveConfirmationFRATex_HEIGHT,
+ 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseSaveConfirmationFRATex.ia8.inc.c"
+};
+
+u64 gPauseYesFRATex[TEX_LEN(u64, gPauseYesFRATex_WIDTH, gPauseYesFRATex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseYesFRATex.ia8.inc.c"
+};
+
+u64 gPauseNoFRATex[TEX_LEN(u64, gPauseNoFRATex_WIDTH, gPauseNoFRATex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseNoFRATex.ia8.inc.c"
+};
+
+u64 gPauseCurrentPositionFRATex[TEX_LEN(u64, gPauseCurrentPositionFRATex_WIDTH, gPauseCurrentPositionFRATex_HEIGHT,
+ 4)] = {
+#include "assets/textures/icon_item_fra_static/gPauseCurrentPositionFRATex.i4.inc.c"
+};
+
+u64 gPauseEquipment00FRATex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseEquipment00FRATex.ia8.inc.c"
+};
+
+u64 gPauseEquipment10FRATex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseEquipment10FRATex.ia8.inc.c"
+};
+
+u64 gPauseEquipment20FRATex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseEquipment20FRATex.ia8.inc.c"
+};
+
+u64 gPauseSelectItem00FRATex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseSelectItem00FRATex.ia8.inc.c"
+};
+
+u64 gPauseSelectItem10FRATex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseSelectItem10FRATex.ia8.inc.c"
+};
+
+u64 gPauseSelectItem20FRATex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseSelectItem20FRATex.ia8.inc.c"
+};
+
+u64 gPauseMap10FRATex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseMap10FRATex.ia8.inc.c"
+};
+
+u64 gPauseQuestStatus10FRATex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseQuestStatus10FRATex.ia8.inc.c"
+};
+
+u64 gPauseSave00FRATex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseSave00FRATex.ia8.inc.c"
+};
+
+u64 gPauseSave10FRATex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseSave10FRATex.ia8.inc.c"
+};
+
+u64 gPauseSave20FRATex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_fra_static/gPauseSave20FRATex.ia8.inc.c"
+};
diff --git a/assets/textures/icon_item_fra_static/icon_item_fra_static.h b/assets/textures/icon_item_fra_static/icon_item_fra_static.h
new file mode 100644
index 000000000..2a7152a41
--- /dev/null
+++ b/assets/textures/icon_item_fra_static/icon_item_fra_static.h
@@ -0,0 +1,87 @@
+#ifndef ICON_ITEM_FRA_STATIC_H
+#define ICON_ITEM_FRA_STATIC_H
+
+#include "ultra64.h"
+#include "tex_len.h"
+#include "src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.h"
+
+#define gPauseDekuTitleFRATex_WIDTH 96
+#define gPauseDekuTitleFRATex_HEIGHT 16
+extern u64 gPauseDekuTitleFRATex[TEX_LEN(u64, gPauseDekuTitleFRATex_WIDTH, gPauseDekuTitleFRATex_HEIGHT, 8)];
+#define gPauseDodongoTitleFRATex_WIDTH 96
+#define gPauseDodongoTitleFRATex_HEIGHT 16
+extern u64 gPauseDodongoTitleFRATex[TEX_LEN(u64, gPauseDodongoTitleFRATex_WIDTH, gPauseDodongoTitleFRATex_HEIGHT, 8)];
+#define gPauseJabuTitleFRATex_WIDTH 96
+#define gPauseJabuTitleFRATex_HEIGHT 16
+extern u64 gPauseJabuTitleFRATex[TEX_LEN(u64, gPauseJabuTitleFRATex_WIDTH, gPauseJabuTitleFRATex_HEIGHT, 8)];
+#define gPauseForestTitleFRATex_WIDTH 96
+#define gPauseForestTitleFRATex_HEIGHT 16
+extern u64 gPauseForestTitleFRATex[TEX_LEN(u64, gPauseForestTitleFRATex_WIDTH, gPauseForestTitleFRATex_HEIGHT, 8)];
+#define gPauseFireTitleFRATex_WIDTH 96
+#define gPauseFireTitleFRATex_HEIGHT 16
+extern u64 gPauseFireTitleFRATex[TEX_LEN(u64, gPauseFireTitleFRATex_WIDTH, gPauseFireTitleFRATex_HEIGHT, 8)];
+#define gPauseWaterTitleFRATex_WIDTH 96
+#define gPauseWaterTitleFRATex_HEIGHT 16
+extern u64 gPauseWaterTitleFRATex[TEX_LEN(u64, gPauseWaterTitleFRATex_WIDTH, gPauseWaterTitleFRATex_HEIGHT, 8)];
+#define gPauseSpiritTitleFRATex_WIDTH 96
+#define gPauseSpiritTitleFRATex_HEIGHT 16
+extern u64 gPauseSpiritTitleFRATex[TEX_LEN(u64, gPauseSpiritTitleFRATex_WIDTH, gPauseSpiritTitleFRATex_HEIGHT, 8)];
+#define gPauseShadowTitleFRATex_WIDTH 96
+#define gPauseShadowTitleFRATex_HEIGHT 16
+extern u64 gPauseShadowTitleFRATex[TEX_LEN(u64, gPauseShadowTitleFRATex_WIDTH, gPauseShadowTitleFRATex_HEIGHT, 8)];
+#define gPauseBotWTitleFRATex_WIDTH 96
+#define gPauseBotWTitleFRATex_HEIGHT 16
+extern u64 gPauseBotWTitleFRATex[TEX_LEN(u64, gPauseBotWTitleFRATex_WIDTH, gPauseBotWTitleFRATex_HEIGHT, 8)];
+#define gPauseIceCavernTitleFRATex_WIDTH 96
+#define gPauseIceCavernTitleFRATex_HEIGHT 16
+extern u64 gPauseIceCavernTitleFRATex[TEX_LEN(u64, gPauseIceCavernTitleFRATex_WIDTH, gPauseIceCavernTitleFRATex_HEIGHT, 8)];
+#define gPauseToEquipFRATex_WIDTH 80
+#define gPauseToEquipFRATex_HEIGHT 16
+extern u64 gPauseToEquipFRATex[TEX_LEN(u64, gPauseToEquipFRATex_WIDTH, gPauseToEquipFRATex_HEIGHT, 8)];
+#define gPauseToDecideFRATex_WIDTH 72
+#define gPauseToDecideFRATex_HEIGHT 16
+extern u64 gPauseToDecideFRATex[TEX_LEN(u64, gPauseToDecideFRATex_WIDTH, gPauseToDecideFRATex_HEIGHT, 8)];
+#define gPauseToPlayMelodyFRATex_WIDTH 112
+#define gPauseToPlayMelodyFRATex_HEIGHT 16
+extern u64 gPauseToPlayMelodyFRATex[TEX_LEN(u64, gPauseToPlayMelodyFRATex_WIDTH, gPauseToPlayMelodyFRATex_HEIGHT, 8)];
+#define gPauseToSelectItemFRATex_WIDTH 128
+#define gPauseToSelectItemFRATex_HEIGHT 16
+extern u64 gPauseToSelectItemFRATex[TEX_LEN(u64, gPauseToSelectItemFRATex_WIDTH, gPauseToSelectItemFRATex_HEIGHT, 8)];
+#define gPauseToMapFRATex_WIDTH 128
+#define gPauseToMapFRATex_HEIGHT 16
+extern u64 gPauseToMapFRATex[TEX_LEN(u64, gPauseToMapFRATex_WIDTH, gPauseToMapFRATex_HEIGHT, 8)];
+#define gPauseToQuestStatusFRATex_WIDTH 128
+#define gPauseToQuestStatusFRATex_HEIGHT 16
+extern u64 gPauseToQuestStatusFRATex[TEX_LEN(u64, gPauseToQuestStatusFRATex_WIDTH, gPauseToQuestStatusFRATex_HEIGHT, 8)];
+#define gPauseToEquipmentFRATex_WIDTH 128
+#define gPauseToEquipmentFRATex_HEIGHT 16
+extern u64 gPauseToEquipmentFRATex[TEX_LEN(u64, gPauseToEquipmentFRATex_WIDTH, gPauseToEquipmentFRATex_HEIGHT, 8)];
+#define gPauseSavePromptFRATex_WIDTH 152
+#define gPauseSavePromptFRATex_HEIGHT 16
+extern u64 gPauseSavePromptFRATex[TEX_LEN(u64, gPauseSavePromptFRATex_WIDTH, gPauseSavePromptFRATex_HEIGHT, 8)];
+#define gPauseSaveConfirmationFRATex_WIDTH 152
+#define gPauseSaveConfirmationFRATex_HEIGHT 16
+extern u64 gPauseSaveConfirmationFRATex[TEX_LEN(u64, gPauseSaveConfirmationFRATex_WIDTH, gPauseSaveConfirmationFRATex_HEIGHT, 8)];
+#define gPauseYesFRATex_WIDTH 48
+#define gPauseYesFRATex_HEIGHT 16
+extern u64 gPauseYesFRATex[TEX_LEN(u64, gPauseYesFRATex_WIDTH, gPauseYesFRATex_HEIGHT, 8)];
+#define gPauseNoFRATex_WIDTH 48
+#define gPauseNoFRATex_HEIGHT 16
+extern u64 gPauseNoFRATex[TEX_LEN(u64, gPauseNoFRATex_WIDTH, gPauseNoFRATex_HEIGHT, 8)];
+#define gPauseCurrentPositionFRATex_WIDTH 64
+#define gPauseCurrentPositionFRATex_HEIGHT 8
+extern u64 gPauseCurrentPositionFRATex[TEX_LEN(u64, gPauseCurrentPositionFRATex_WIDTH, gPauseCurrentPositionFRATex_HEIGHT, 4)];
+
+extern u64 gPauseEquipment00FRATex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseEquipment10FRATex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseEquipment20FRATex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSelectItem00FRATex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSelectItem10FRATex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSelectItem20FRATex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseMap10FRATex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseQuestStatus10FRATex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSave00FRATex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSave10FRATex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSave20FRATex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+
+#endif
diff --git a/assets/textures/icon_item_ger_static/icon_item_ger_static.c b/assets/textures/icon_item_ger_static/icon_item_ger_static.c
new file mode 100644
index 000000000..379f7f681
--- /dev/null
+++ b/assets/textures/icon_item_ger_static/icon_item_ger_static.c
@@ -0,0 +1,131 @@
+#include "icon_item_ger_static.h"
+
+u64 gPauseDekuTitleGERTex[TEX_LEN(u64, gPauseDekuTitleGERTex_WIDTH, gPauseDekuTitleGERTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseDekuTitleGERTex.ia8.inc.c"
+};
+
+u64 gPauseDodongoTitleGERTex[TEX_LEN(u64, gPauseDodongoTitleGERTex_WIDTH, gPauseDodongoTitleGERTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseDodongoTitleGERTex.ia8.inc.c"
+};
+
+u64 gPauseJabuTitleGERTex[TEX_LEN(u64, gPauseJabuTitleGERTex_WIDTH, gPauseJabuTitleGERTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseJabuTitleGERTex.ia8.inc.c"
+};
+
+u64 gPauseForestTitleGERTex[TEX_LEN(u64, gPauseForestTitleGERTex_WIDTH, gPauseForestTitleGERTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseForestTitleGERTex.ia8.inc.c"
+};
+
+u64 gPauseFireTitleGERTex[TEX_LEN(u64, gPauseFireTitleGERTex_WIDTH, gPauseFireTitleGERTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseFireTitleGERTex.ia8.inc.c"
+};
+
+u64 gPauseWaterTitleGERTex[TEX_LEN(u64, gPauseWaterTitleGERTex_WIDTH, gPauseWaterTitleGERTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseWaterTitleGERTex.ia8.inc.c"
+};
+
+u64 gPauseSpiritTitleGERTex[TEX_LEN(u64, gPauseSpiritTitleGERTex_WIDTH, gPauseSpiritTitleGERTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseSpiritTitleGERTex.ia8.inc.c"
+};
+
+u64 gPauseShadowTitleGERTex[TEX_LEN(u64, gPauseShadowTitleGERTex_WIDTH, gPauseShadowTitleGERTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseShadowTitleGERTex.ia8.inc.c"
+};
+
+u64 gPauseBotWTitleGERTex[TEX_LEN(u64, gPauseBotWTitleGERTex_WIDTH, gPauseBotWTitleGERTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseBotWTitleGERTex.ia8.inc.c"
+};
+
+u64 gPauseIceCavernTitleGERTex[TEX_LEN(u64, gPauseIceCavernTitleGERTex_WIDTH, gPauseIceCavernTitleGERTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseIceCavernTitleGERTex.ia8.inc.c"
+};
+
+u64 gPauseToEquipGERTex[TEX_LEN(u64, gPauseToEquipGERTex_WIDTH, gPauseToEquipGERTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseToEquipGERTex.ia8.inc.c"
+};
+
+u64 gPauseToDecideGERTex[TEX_LEN(u64, gPauseToDecideGERTex_WIDTH, gPauseToDecideGERTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseToDecideGERTex.ia8.inc.c"
+};
+
+u64 gPauseToPlayMelodyGERTex[TEX_LEN(u64, gPauseToPlayMelodyGERTex_WIDTH, gPauseToPlayMelodyGERTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseToPlayMelodyGERTex.ia8.inc.c"
+};
+
+u64 gPauseToSelectItemGERTex[TEX_LEN(u64, gPauseToSelectItemGERTex_WIDTH, gPauseToSelectItemGERTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseToSelectItemGERTex.ia8.inc.c"
+};
+
+u64 gPauseToMapGERTex[TEX_LEN(u64, gPauseToMapGERTex_WIDTH, gPauseToMapGERTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseToMapGERTex.ia8.inc.c"
+};
+
+u64 gPauseToQuestStatusGERTex[TEX_LEN(u64, gPauseToQuestStatusGERTex_WIDTH, gPauseToQuestStatusGERTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseToQuestStatusGERTex.ia8.inc.c"
+};
+
+u64 gPauseToEquipmentGERTex[TEX_LEN(u64, gPauseToEquipmentGERTex_WIDTH, gPauseToEquipmentGERTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseToEquipmentGERTex.ia8.inc.c"
+};
+
+u64 gPauseSavePromptGERTex[TEX_LEN(u64, gPauseSavePromptGERTex_WIDTH, gPauseSavePromptGERTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseSavePromptGERTex.ia8.inc.c"
+};
+
+u64 gPauseSaveConfirmationGERTex[TEX_LEN(u64, gPauseSaveConfirmationGERTex_WIDTH, gPauseSaveConfirmationGERTex_HEIGHT,
+ 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseSaveConfirmationGERTex.ia8.inc.c"
+};
+
+u64 gPauseYesGERTex[TEX_LEN(u64, gPauseYesGERTex_WIDTH, gPauseYesGERTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseYesGERTex.ia8.inc.c"
+};
+
+u64 gPauseNoGERTex[TEX_LEN(u64, gPauseNoGERTex_WIDTH, gPauseNoGERTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseNoGERTex.ia8.inc.c"
+};
+
+u64 gPauseCurrentPositionGERTex[TEX_LEN(u64, gPauseCurrentPositionGERTex_WIDTH, gPauseCurrentPositionGERTex_HEIGHT,
+ 4)] = {
+#include "assets/textures/icon_item_ger_static/gPauseCurrentPositionGERTex.i4.inc.c"
+};
+
+u64 gPauseEquipment00GERTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseEquipment00GERTex.ia8.inc.c"
+};
+
+u64 gPauseEquipment10GERTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseEquipment10GERTex.ia8.inc.c"
+};
+
+u64 gPauseEquipment20GERTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseEquipment20GERTex.ia8.inc.c"
+};
+
+u64 gPauseSelectItem00GERTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseSelectItem00GERTex.ia8.inc.c"
+};
+
+u64 gPauseSelectItem10GERTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseSelectItem10GERTex.ia8.inc.c"
+};
+
+u64 gPauseSelectItem20GERTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseSelectItem20GERTex.ia8.inc.c"
+};
+
+u64 gPauseMap10GERTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseMap10GERTex.ia8.inc.c"
+};
+
+u64 gPauseQuestStatus10GERTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseQuestStatus10GERTex.ia8.inc.c"
+};
+
+u64 gPauseSave10GERTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseSave10GERTex.ia8.inc.c"
+};
+
+u64 gPauseSave20GERTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_ger_static/gPauseSave20GERTex.ia8.inc.c"
+};
diff --git a/assets/textures/icon_item_ger_static/icon_item_ger_static.h b/assets/textures/icon_item_ger_static/icon_item_ger_static.h
new file mode 100644
index 000000000..bd69237b9
--- /dev/null
+++ b/assets/textures/icon_item_ger_static/icon_item_ger_static.h
@@ -0,0 +1,86 @@
+#ifndef ICON_ITEM_GER_STATIC_H
+#define ICON_ITEM_GER_STATIC_H
+
+#include "ultra64.h"
+#include "tex_len.h"
+#include "src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.h"
+
+#define gPauseDekuTitleGERTex_WIDTH 96
+#define gPauseDekuTitleGERTex_HEIGHT 16
+extern u64 gPauseDekuTitleGERTex[TEX_LEN(u64, gPauseDekuTitleGERTex_WIDTH, gPauseDekuTitleGERTex_HEIGHT, 8)];
+#define gPauseDodongoTitleGERTex_WIDTH 96
+#define gPauseDodongoTitleGERTex_HEIGHT 16
+extern u64 gPauseDodongoTitleGERTex[TEX_LEN(u64, gPauseDodongoTitleGERTex_WIDTH, gPauseDodongoTitleGERTex_HEIGHT, 8)];
+#define gPauseJabuTitleGERTex_WIDTH 96
+#define gPauseJabuTitleGERTex_HEIGHT 16
+extern u64 gPauseJabuTitleGERTex[TEX_LEN(u64, gPauseJabuTitleGERTex_WIDTH, gPauseJabuTitleGERTex_HEIGHT, 8)];
+#define gPauseForestTitleGERTex_WIDTH 96
+#define gPauseForestTitleGERTex_HEIGHT 16
+extern u64 gPauseForestTitleGERTex[TEX_LEN(u64, gPauseForestTitleGERTex_WIDTH, gPauseForestTitleGERTex_HEIGHT, 8)];
+#define gPauseFireTitleGERTex_WIDTH 96
+#define gPauseFireTitleGERTex_HEIGHT 16
+extern u64 gPauseFireTitleGERTex[TEX_LEN(u64, gPauseFireTitleGERTex_WIDTH, gPauseFireTitleGERTex_HEIGHT, 8)];
+#define gPauseWaterTitleGERTex_WIDTH 96
+#define gPauseWaterTitleGERTex_HEIGHT 16
+extern u64 gPauseWaterTitleGERTex[TEX_LEN(u64, gPauseWaterTitleGERTex_WIDTH, gPauseWaterTitleGERTex_HEIGHT, 8)];
+#define gPauseSpiritTitleGERTex_WIDTH 96
+#define gPauseSpiritTitleGERTex_HEIGHT 16
+extern u64 gPauseSpiritTitleGERTex[TEX_LEN(u64, gPauseSpiritTitleGERTex_WIDTH, gPauseSpiritTitleGERTex_HEIGHT, 8)];
+#define gPauseShadowTitleGERTex_WIDTH 96
+#define gPauseShadowTitleGERTex_HEIGHT 16
+extern u64 gPauseShadowTitleGERTex[TEX_LEN(u64, gPauseShadowTitleGERTex_WIDTH, gPauseShadowTitleGERTex_HEIGHT, 8)];
+#define gPauseBotWTitleGERTex_WIDTH 96
+#define gPauseBotWTitleGERTex_HEIGHT 16
+extern u64 gPauseBotWTitleGERTex[TEX_LEN(u64, gPauseBotWTitleGERTex_WIDTH, gPauseBotWTitleGERTex_HEIGHT, 8)];
+#define gPauseIceCavernTitleGERTex_WIDTH 96
+#define gPauseIceCavernTitleGERTex_HEIGHT 16
+extern u64 gPauseIceCavernTitleGERTex[TEX_LEN(u64, gPauseIceCavernTitleGERTex_WIDTH, gPauseIceCavernTitleGERTex_HEIGHT, 8)];
+#define gPauseToEquipGERTex_WIDTH 88
+#define gPauseToEquipGERTex_HEIGHT 16
+extern u64 gPauseToEquipGERTex[TEX_LEN(u64, gPauseToEquipGERTex_WIDTH, gPauseToEquipGERTex_HEIGHT, 8)];
+#define gPauseToDecideGERTex_WIDTH 88
+#define gPauseToDecideGERTex_HEIGHT 16
+extern u64 gPauseToDecideGERTex[TEX_LEN(u64, gPauseToDecideGERTex_WIDTH, gPauseToDecideGERTex_HEIGHT, 8)];
+#define gPauseToPlayMelodyGERTex_WIDTH 104
+#define gPauseToPlayMelodyGERTex_HEIGHT 16
+extern u64 gPauseToPlayMelodyGERTex[TEX_LEN(u64, gPauseToPlayMelodyGERTex_WIDTH, gPauseToPlayMelodyGERTex_HEIGHT, 8)];
+#define gPauseToSelectItemGERTex_WIDTH 128
+#define gPauseToSelectItemGERTex_HEIGHT 16
+extern u64 gPauseToSelectItemGERTex[TEX_LEN(u64, gPauseToSelectItemGERTex_WIDTH, gPauseToSelectItemGERTex_HEIGHT, 8)];
+#define gPauseToMapGERTex_WIDTH 128
+#define gPauseToMapGERTex_HEIGHT 16
+extern u64 gPauseToMapGERTex[TEX_LEN(u64, gPauseToMapGERTex_WIDTH, gPauseToMapGERTex_HEIGHT, 8)];
+#define gPauseToQuestStatusGERTex_WIDTH 128
+#define gPauseToQuestStatusGERTex_HEIGHT 16
+extern u64 gPauseToQuestStatusGERTex[TEX_LEN(u64, gPauseToQuestStatusGERTex_WIDTH, gPauseToQuestStatusGERTex_HEIGHT, 8)];
+#define gPauseToEquipmentGERTex_WIDTH 128
+#define gPauseToEquipmentGERTex_HEIGHT 16
+extern u64 gPauseToEquipmentGERTex[TEX_LEN(u64, gPauseToEquipmentGERTex_WIDTH, gPauseToEquipmentGERTex_HEIGHT, 8)];
+#define gPauseSavePromptGERTex_WIDTH 152
+#define gPauseSavePromptGERTex_HEIGHT 16
+extern u64 gPauseSavePromptGERTex[TEX_LEN(u64, gPauseSavePromptGERTex_WIDTH, gPauseSavePromptGERTex_HEIGHT, 8)];
+#define gPauseSaveConfirmationGERTex_WIDTH 152
+#define gPauseSaveConfirmationGERTex_HEIGHT 16
+extern u64 gPauseSaveConfirmationGERTex[TEX_LEN(u64, gPauseSaveConfirmationGERTex_WIDTH, gPauseSaveConfirmationGERTex_HEIGHT, 8)];
+#define gPauseYesGERTex_WIDTH 48
+#define gPauseYesGERTex_HEIGHT 16
+extern u64 gPauseYesGERTex[TEX_LEN(u64, gPauseYesGERTex_WIDTH, gPauseYesGERTex_HEIGHT, 8)];
+#define gPauseNoGERTex_WIDTH 48
+#define gPauseNoGERTex_HEIGHT 16
+extern u64 gPauseNoGERTex[TEX_LEN(u64, gPauseNoGERTex_WIDTH, gPauseNoGERTex_HEIGHT, 8)];
+#define gPauseCurrentPositionGERTex_WIDTH 64
+#define gPauseCurrentPositionGERTex_HEIGHT 8
+extern u64 gPauseCurrentPositionGERTex[TEX_LEN(u64, gPauseCurrentPositionGERTex_WIDTH, gPauseCurrentPositionGERTex_HEIGHT, 4)];
+
+extern u64 gPauseEquipment00GERTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseEquipment10GERTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseEquipment20GERTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSelectItem00GERTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSelectItem10GERTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSelectItem20GERTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseMap10GERTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseQuestStatus10GERTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSave10GERTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSave20GERTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+
+#endif
diff --git a/assets/textures/icon_item_jpn_static/icon_item_jpn_static.c b/assets/textures/icon_item_jpn_static/icon_item_jpn_static.c
new file mode 100644
index 000000000..92d56b072
--- /dev/null
+++ b/assets/textures/icon_item_jpn_static/icon_item_jpn_static.c
@@ -0,0 +1,127 @@
+#include "icon_item_jpn_static.h"
+
+u64 gPauseDekuTitleJPNTex[TEX_LEN(u64, gPauseDekuTitleJPNTex_WIDTH, gPauseDekuTitleJPNTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseDekuTitleJPNTex.ia8.inc.c"
+};
+
+u64 gPauseDodongoTitleJPNTex[TEX_LEN(u64, gPauseDodongoTitleJPNTex_WIDTH, gPauseDodongoTitleJPNTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseDodongoTitleJPNTex.ia8.inc.c"
+};
+
+u64 gPauseJabuTitleJPNTex[TEX_LEN(u64, gPauseJabuTitleJPNTex_WIDTH, gPauseJabuTitleJPNTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseJabuTitleJPNTex.ia8.inc.c"
+};
+
+u64 gPauseForestTitleJPNTex[TEX_LEN(u64, gPauseForestTitleJPNTex_WIDTH, gPauseForestTitleJPNTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseForestTitleJPNTex.ia8.inc.c"
+};
+
+u64 gPauseFireTitleJPNTex[TEX_LEN(u64, gPauseFireTitleJPNTex_WIDTH, gPauseFireTitleJPNTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseFireTitleJPNTex.ia8.inc.c"
+};
+
+u64 gPauseWaterTitleJPNTex[TEX_LEN(u64, gPauseWaterTitleJPNTex_WIDTH, gPauseWaterTitleJPNTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseWaterTitleJPNTex.ia8.inc.c"
+};
+
+u64 gPauseSpiritTitleJPNTex[TEX_LEN(u64, gPauseSpiritTitleJPNTex_WIDTH, gPauseSpiritTitleJPNTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseSpiritTitleJPNTex.ia8.inc.c"
+};
+
+u64 gPauseShadowTitleJPNTex[TEX_LEN(u64, gPauseShadowTitleJPNTex_WIDTH, gPauseShadowTitleJPNTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseShadowTitleJPNTex.ia8.inc.c"
+};
+
+u64 gPauseBotWTitleJPNTex[TEX_LEN(u64, gPauseBotWTitleJPNTex_WIDTH, gPauseBotWTitleJPNTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseBotWTitleJPNTex.ia8.inc.c"
+};
+
+u64 gPauseIceCavernTitleJPNTex[TEX_LEN(u64, gPauseIceCavernTitleJPNTex_WIDTH, gPauseIceCavernTitleJPNTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseIceCavernTitleJPNTex.ia8.inc.c"
+};
+
+u64 gPauseToEquipJPNTex[TEX_LEN(u64, gPauseToEquipJPNTex_WIDTH, gPauseToEquipJPNTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseToEquipJPNTex.ia8.inc.c"
+};
+
+u64 gPauseToDecideJPNTex[TEX_LEN(u64, gPauseToDecideJPNTex_WIDTH, gPauseToDecideJPNTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseToDecideJPNTex.ia8.inc.c"
+};
+
+u64 gPauseToPlayMelodyJPNTex[TEX_LEN(u64, gPauseToPlayMelodyJPNTex_WIDTH, gPauseToPlayMelodyJPNTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseToPlayMelodyJPNTex.ia8.inc.c"
+};
+
+u64 gPauseToSelectItemJPNTex[TEX_LEN(u64, gPauseToSelectItemJPNTex_WIDTH, gPauseToSelectItemJPNTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseToSelectItemJPNTex.ia8.inc.c"
+};
+
+u64 gPauseToMapJPNTex[TEX_LEN(u64, gPauseToMapJPNTex_WIDTH, gPauseToMapJPNTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseToMapJPNTex.ia8.inc.c"
+};
+
+u64 gPauseToQuestStatusJPNTex[TEX_LEN(u64, gPauseToQuestStatusJPNTex_WIDTH, gPauseToQuestStatusJPNTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseToQuestStatusJPNTex.ia8.inc.c"
+};
+
+u64 gPauseToEquipmentJPNTex[TEX_LEN(u64, gPauseToEquipmentJPNTex_WIDTH, gPauseToEquipmentJPNTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseToEquipmentJPNTex.ia8.inc.c"
+};
+
+u64 gPauseSavePromptJPNTex[TEX_LEN(u64, gPauseSavePromptJPNTex_WIDTH, gPauseSavePromptJPNTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseSavePromptJPNTex.ia8.inc.c"
+};
+
+u64 gPauseSaveConfirmationJPNTex[TEX_LEN(u64, gPauseSaveConfirmationJPNTex_WIDTH, gPauseSaveConfirmationJPNTex_HEIGHT,
+ 8)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseSaveConfirmationJPNTex.ia8.inc.c"
+};
+
+u64 gPauseYesJPNTex[TEX_LEN(u64, gPauseYesJPNTex_WIDTH, gPauseYesJPNTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseYesJPNTex.ia8.inc.c"
+};
+
+u64 gPauseNoJPNTex[TEX_LEN(u64, gPauseNoJPNTex_WIDTH, gPauseNoJPNTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseNoJPNTex.ia8.inc.c"
+};
+
+u64 gPauseCurrentPositionJPNTex[TEX_LEN(u64, gPauseCurrentPositionJPNTex_WIDTH, gPauseCurrentPositionJPNTex_HEIGHT,
+ 4)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseCurrentPositionJPNTex.i4.inc.c"
+};
+
+u64 gPauseEquipment10JPNTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseEquipment10JPNTex.ia8.inc.c"
+};
+
+u64 gPauseSelectItem00JPNTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseSelectItem00JPNTex.ia8.inc.c"
+};
+
+u64 gPauseSelectItem10JPNTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseSelectItem10JPNTex.ia8.inc.c"
+};
+
+u64 gPauseSelectItem20JPNTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseSelectItem20JPNTex.ia8.inc.c"
+};
+
+u64 gPauseMap10JPNTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseMap10JPNTex.ia8.inc.c"
+};
+
+u64 gPauseQuestStatus00JPNTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseQuestStatus00JPNTex.ia8.inc.c"
+};
+
+u64 gPauseQuestStatus10JPNTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseQuestStatus10JPNTex.ia8.inc.c"
+};
+
+u64 gPauseQuestStatus20JPNTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseQuestStatus20JPNTex.ia8.inc.c"
+};
+
+u64 gPauseSave10JPNTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_jpn_static/gPauseSave10JPNTex.ia8.inc.c"
+};
diff --git a/assets/textures/icon_item_jpn_static/icon_item_jpn_static.h b/assets/textures/icon_item_jpn_static/icon_item_jpn_static.h
new file mode 100644
index 000000000..bd21c0a74
--- /dev/null
+++ b/assets/textures/icon_item_jpn_static/icon_item_jpn_static.h
@@ -0,0 +1,85 @@
+#ifndef ICON_ITEM_JPN_STATIC_H
+#define ICON_ITEM_JPN_STATIC_H
+
+#include "ultra64.h"
+#include "tex_len.h"
+#include "src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.h"
+
+#define gPauseDekuTitleJPNTex_WIDTH 96
+#define gPauseDekuTitleJPNTex_HEIGHT 16
+extern u64 gPauseDekuTitleJPNTex[TEX_LEN(u64, gPauseDekuTitleJPNTex_WIDTH, gPauseDekuTitleJPNTex_HEIGHT, 8)];
+#define gPauseDodongoTitleJPNTex_WIDTH 96
+#define gPauseDodongoTitleJPNTex_HEIGHT 16
+extern u64 gPauseDodongoTitleJPNTex[TEX_LEN(u64, gPauseDodongoTitleJPNTex_WIDTH, gPauseDodongoTitleJPNTex_HEIGHT, 8)];
+#define gPauseJabuTitleJPNTex_WIDTH 96
+#define gPauseJabuTitleJPNTex_HEIGHT 16
+extern u64 gPauseJabuTitleJPNTex[TEX_LEN(u64, gPauseJabuTitleJPNTex_WIDTH, gPauseJabuTitleJPNTex_HEIGHT, 8)];
+#define gPauseForestTitleJPNTex_WIDTH 96
+#define gPauseForestTitleJPNTex_HEIGHT 16
+extern u64 gPauseForestTitleJPNTex[TEX_LEN(u64, gPauseForestTitleJPNTex_WIDTH, gPauseForestTitleJPNTex_HEIGHT, 8)];
+#define gPauseFireTitleJPNTex_WIDTH 96
+#define gPauseFireTitleJPNTex_HEIGHT 16
+extern u64 gPauseFireTitleJPNTex[TEX_LEN(u64, gPauseFireTitleJPNTex_WIDTH, gPauseFireTitleJPNTex_HEIGHT, 8)];
+#define gPauseWaterTitleJPNTex_WIDTH 96
+#define gPauseWaterTitleJPNTex_HEIGHT 16
+extern u64 gPauseWaterTitleJPNTex[TEX_LEN(u64, gPauseWaterTitleJPNTex_WIDTH, gPauseWaterTitleJPNTex_HEIGHT, 8)];
+#define gPauseSpiritTitleJPNTex_WIDTH 96
+#define gPauseSpiritTitleJPNTex_HEIGHT 16
+extern u64 gPauseSpiritTitleJPNTex[TEX_LEN(u64, gPauseSpiritTitleJPNTex_WIDTH, gPauseSpiritTitleJPNTex_HEIGHT, 8)];
+#define gPauseShadowTitleJPNTex_WIDTH 96
+#define gPauseShadowTitleJPNTex_HEIGHT 16
+extern u64 gPauseShadowTitleJPNTex[TEX_LEN(u64, gPauseShadowTitleJPNTex_WIDTH, gPauseShadowTitleJPNTex_HEIGHT, 8)];
+#define gPauseBotWTitleJPNTex_WIDTH 96
+#define gPauseBotWTitleJPNTex_HEIGHT 16
+extern u64 gPauseBotWTitleJPNTex[TEX_LEN(u64, gPauseBotWTitleJPNTex_WIDTH, gPauseBotWTitleJPNTex_HEIGHT, 8)];
+#define gPauseIceCavernTitleJPNTex_WIDTH 96
+#define gPauseIceCavernTitleJPNTex_HEIGHT 16
+extern u64 gPauseIceCavernTitleJPNTex[TEX_LEN(u64, gPauseIceCavernTitleJPNTex_WIDTH, gPauseIceCavernTitleJPNTex_HEIGHT, 8)];
+#define gPauseToEquipJPNTex_WIDTH 56
+#define gPauseToEquipJPNTex_HEIGHT 16
+extern u64 gPauseToEquipJPNTex[TEX_LEN(u64, gPauseToEquipJPNTex_WIDTH, gPauseToEquipJPNTex_HEIGHT, 8)];
+#define gPauseToDecideJPNTex_WIDTH 48
+#define gPauseToDecideJPNTex_HEIGHT 16
+extern u64 gPauseToDecideJPNTex[TEX_LEN(u64, gPauseToDecideJPNTex_WIDTH, gPauseToDecideJPNTex_HEIGHT, 8)];
+#define gPauseToPlayMelodyJPNTex_WIDTH 96
+#define gPauseToPlayMelodyJPNTex_HEIGHT 16
+extern u64 gPauseToPlayMelodyJPNTex[TEX_LEN(u64, gPauseToPlayMelodyJPNTex_WIDTH, gPauseToPlayMelodyJPNTex_HEIGHT, 8)];
+#define gPauseToSelectItemJPNTex_WIDTH 128
+#define gPauseToSelectItemJPNTex_HEIGHT 16
+extern u64 gPauseToSelectItemJPNTex[TEX_LEN(u64, gPauseToSelectItemJPNTex_WIDTH, gPauseToSelectItemJPNTex_HEIGHT, 8)];
+#define gPauseToMapJPNTex_WIDTH 128
+#define gPauseToMapJPNTex_HEIGHT 16
+extern u64 gPauseToMapJPNTex[TEX_LEN(u64, gPauseToMapJPNTex_WIDTH, gPauseToMapJPNTex_HEIGHT, 8)];
+#define gPauseToQuestStatusJPNTex_WIDTH 128
+#define gPauseToQuestStatusJPNTex_HEIGHT 16
+extern u64 gPauseToQuestStatusJPNTex[TEX_LEN(u64, gPauseToQuestStatusJPNTex_WIDTH, gPauseToQuestStatusJPNTex_HEIGHT, 8)];
+#define gPauseToEquipmentJPNTex_WIDTH 128
+#define gPauseToEquipmentJPNTex_HEIGHT 16
+extern u64 gPauseToEquipmentJPNTex[TEX_LEN(u64, gPauseToEquipmentJPNTex_WIDTH, gPauseToEquipmentJPNTex_HEIGHT, 8)];
+#define gPauseSavePromptJPNTex_WIDTH 152
+#define gPauseSavePromptJPNTex_HEIGHT 16
+extern u64 gPauseSavePromptJPNTex[TEX_LEN(u64, gPauseSavePromptJPNTex_WIDTH, gPauseSavePromptJPNTex_HEIGHT, 8)];
+#define gPauseSaveConfirmationJPNTex_WIDTH 152
+#define gPauseSaveConfirmationJPNTex_HEIGHT 16
+extern u64 gPauseSaveConfirmationJPNTex[TEX_LEN(u64, gPauseSaveConfirmationJPNTex_WIDTH, gPauseSaveConfirmationJPNTex_HEIGHT, 8)];
+#define gPauseYesJPNTex_WIDTH 48
+#define gPauseYesJPNTex_HEIGHT 16
+extern u64 gPauseYesJPNTex[TEX_LEN(u64, gPauseYesJPNTex_WIDTH, gPauseYesJPNTex_HEIGHT, 8)];
+#define gPauseNoJPNTex_WIDTH 48
+#define gPauseNoJPNTex_HEIGHT 16
+extern u64 gPauseNoJPNTex[TEX_LEN(u64, gPauseNoJPNTex_WIDTH, gPauseNoJPNTex_HEIGHT, 8)];
+#define gPauseCurrentPositionJPNTex_WIDTH 64
+#define gPauseCurrentPositionJPNTex_HEIGHT 8
+extern u64 gPauseCurrentPositionJPNTex[TEX_LEN(u64, gPauseCurrentPositionJPNTex_WIDTH, gPauseCurrentPositionJPNTex_HEIGHT, 4)];
+
+extern u64 gPauseEquipment10JPNTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSelectItem00JPNTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSelectItem10JPNTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSelectItem20JPNTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseMap10JPNTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseQuestStatus00JPNTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseQuestStatus10JPNTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseQuestStatus20JPNTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSave10JPNTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+
+#endif
diff --git a/assets/textures/icon_item_nes_static/icon_item_nes_static.c b/assets/textures/icon_item_nes_static/icon_item_nes_static.c
new file mode 100644
index 000000000..5e84c6916
--- /dev/null
+++ b/assets/textures/icon_item_nes_static/icon_item_nes_static.c
@@ -0,0 +1,127 @@
+#include "icon_item_nes_static.h"
+
+u64 gPauseDekuTitleENGTex[TEX_LEN(u64, gPauseDekuTitleENGTex_WIDTH, gPauseDekuTitleENGTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_nes_static/gPauseDekuTitleENGTex.ia8.inc.c"
+};
+
+u64 gPauseDodongoTitleENGTex[TEX_LEN(u64, gPauseDodongoTitleENGTex_WIDTH, gPauseDodongoTitleENGTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_nes_static/gPauseDodongoTitleENGTex.ia8.inc.c"
+};
+
+u64 gPauseJabuTitleENGTex[TEX_LEN(u64, gPauseJabuTitleENGTex_WIDTH, gPauseJabuTitleENGTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_nes_static/gPauseJabuTitleENGTex.ia8.inc.c"
+};
+
+u64 gPauseForestTitleENGTex[TEX_LEN(u64, gPauseForestTitleENGTex_WIDTH, gPauseForestTitleENGTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_nes_static/gPauseForestTitleENGTex.ia8.inc.c"
+};
+
+u64 gPauseFireTitleENGTex[TEX_LEN(u64, gPauseFireTitleENGTex_WIDTH, gPauseFireTitleENGTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_nes_static/gPauseFireTitleENGTex.ia8.inc.c"
+};
+
+u64 gPauseWaterTitleENGTex[TEX_LEN(u64, gPauseWaterTitleENGTex_WIDTH, gPauseWaterTitleENGTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_nes_static/gPauseWaterTitleENGTex.ia8.inc.c"
+};
+
+u64 gPauseSpiritTitleENGTex[TEX_LEN(u64, gPauseSpiritTitleENGTex_WIDTH, gPauseSpiritTitleENGTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_nes_static/gPauseSpiritTitleENGTex.ia8.inc.c"
+};
+
+u64 gPauseShadowTitleENGTex[TEX_LEN(u64, gPauseShadowTitleENGTex_WIDTH, gPauseShadowTitleENGTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_nes_static/gPauseShadowTitleENGTex.ia8.inc.c"
+};
+
+u64 gPauseBotWTitleENGTex[TEX_LEN(u64, gPauseBotWTitleENGTex_WIDTH, gPauseBotWTitleENGTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_nes_static/gPauseBotWTitleENGTex.ia8.inc.c"
+};
+
+u64 gPauseIceCavernTitleENGTex[TEX_LEN(u64, gPauseIceCavernTitleENGTex_WIDTH, gPauseIceCavernTitleENGTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_nes_static/gPauseIceCavernTitleENGTex.ia8.inc.c"
+};
+
+u64 gPauseToEquipENGTex[TEX_LEN(u64, gPauseToEquipENGTex_WIDTH, gPauseToEquipENGTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_nes_static/gPauseToEquipENGTex.ia8.inc.c"
+};
+
+u64 gPauseToDecideENGTex[TEX_LEN(u64, gPauseToDecideENGTex_WIDTH, gPauseToDecideENGTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_nes_static/gPauseToDecideENGTex.ia8.inc.c"
+};
+
+u64 gPauseToPlayMelodyENGTex[TEX_LEN(u64, gPauseToPlayMelodyENGTex_WIDTH, gPauseToPlayMelodyENGTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_nes_static/gPauseToPlayMelodyENGTex.ia8.inc.c"
+};
+
+u64 gPauseToSelectItemENGTex[TEX_LEN(u64, gPauseToSelectItemENGTex_WIDTH, gPauseToSelectItemENGTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_nes_static/gPauseToSelectItemENGTex.ia8.inc.c"
+};
+
+u64 gPauseToMapENGTex[TEX_LEN(u64, gPauseToMapENGTex_WIDTH, gPauseToMapENGTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_nes_static/gPauseToMapENGTex.ia8.inc.c"
+};
+
+u64 gPauseToQuestStatusENGTex[TEX_LEN(u64, gPauseToQuestStatusENGTex_WIDTH, gPauseToQuestStatusENGTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_nes_static/gPauseToQuestStatusENGTex.ia8.inc.c"
+};
+
+u64 gPauseToEquipmentENGTex[TEX_LEN(u64, gPauseToEquipmentENGTex_WIDTH, gPauseToEquipmentENGTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_nes_static/gPauseToEquipmentENGTex.ia8.inc.c"
+};
+
+u64 gPauseSavePromptENGTex[TEX_LEN(u64, gPauseSavePromptENGTex_WIDTH, gPauseSavePromptENGTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_nes_static/gPauseSavePromptENGTex.ia8.inc.c"
+};
+
+u64 gPauseSaveConfirmationENGTex[TEX_LEN(u64, gPauseSaveConfirmationENGTex_WIDTH, gPauseSaveConfirmationENGTex_HEIGHT,
+ 8)] = {
+#include "assets/textures/icon_item_nes_static/gPauseSaveConfirmationENGTex.ia8.inc.c"
+};
+
+u64 gPauseYesENGTex[TEX_LEN(u64, gPauseYesENGTex_WIDTH, gPauseYesENGTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_nes_static/gPauseYesENGTex.ia8.inc.c"
+};
+
+u64 gPauseNoENGTex[TEX_LEN(u64, gPauseNoENGTex_WIDTH, gPauseNoENGTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_nes_static/gPauseNoENGTex.ia8.inc.c"
+};
+
+u64 gPauseCurrentPositionENGTex[TEX_LEN(u64, gPauseCurrentPositionENGTex_WIDTH, gPauseCurrentPositionENGTex_HEIGHT,
+ 4)] = {
+#include "assets/textures/icon_item_nes_static/gPauseCurrentPositionENGTex.i4.inc.c"
+};
+
+u64 gPauseEquipment10ENGTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_nes_static/gPauseEquipment10ENGTex.ia8.inc.c"
+};
+
+u64 gPauseSelectItem00ENGTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_nes_static/gPauseSelectItem00ENGTex.ia8.inc.c"
+};
+
+u64 gPauseSelectItem10ENGTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_nes_static/gPauseSelectItem10ENGTex.ia8.inc.c"
+};
+
+u64 gPauseSelectItem20ENGTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_nes_static/gPauseSelectItem20ENGTex.ia8.inc.c"
+};
+
+u64 gPauseMap10ENGTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_nes_static/gPauseMap10ENGTex.ia8.inc.c"
+};
+
+u64 gPauseQuestStatus00ENGTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_nes_static/gPauseQuestStatus00ENGTex.ia8.inc.c"
+};
+
+u64 gPauseQuestStatus10ENGTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_nes_static/gPauseQuestStatus10ENGTex.ia8.inc.c"
+};
+
+u64 gPauseQuestStatus20ENGTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_nes_static/gPauseQuestStatus20ENGTex.ia8.inc.c"
+};
+
+u64 gPauseSave10ENGTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_nes_static/gPauseSave10ENGTex.ia8.inc.c"
+};
diff --git a/assets/textures/icon_item_nes_static/icon_item_nes_static.h b/assets/textures/icon_item_nes_static/icon_item_nes_static.h
new file mode 100644
index 000000000..007bebf3b
--- /dev/null
+++ b/assets/textures/icon_item_nes_static/icon_item_nes_static.h
@@ -0,0 +1,85 @@
+#ifndef ICON_ITEM_NES_STATIC_H
+#define ICON_ITEM_NES_STATIC_H
+
+#include "ultra64.h"
+#include "tex_len.h"
+#include "src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.h"
+
+#define gPauseDekuTitleENGTex_WIDTH 96
+#define gPauseDekuTitleENGTex_HEIGHT 16
+extern u64 gPauseDekuTitleENGTex[TEX_LEN(u64, gPauseDekuTitleENGTex_WIDTH, gPauseDekuTitleENGTex_HEIGHT, 8)];
+#define gPauseDodongoTitleENGTex_WIDTH 96
+#define gPauseDodongoTitleENGTex_HEIGHT 16
+extern u64 gPauseDodongoTitleENGTex[TEX_LEN(u64, gPauseDodongoTitleENGTex_WIDTH, gPauseDodongoTitleENGTex_HEIGHT, 8)];
+#define gPauseJabuTitleENGTex_WIDTH 96
+#define gPauseJabuTitleENGTex_HEIGHT 16
+extern u64 gPauseJabuTitleENGTex[TEX_LEN(u64, gPauseJabuTitleENGTex_WIDTH, gPauseJabuTitleENGTex_HEIGHT, 8)];
+#define gPauseForestTitleENGTex_WIDTH 96
+#define gPauseForestTitleENGTex_HEIGHT 16
+extern u64 gPauseForestTitleENGTex[TEX_LEN(u64, gPauseForestTitleENGTex_WIDTH, gPauseForestTitleENGTex_HEIGHT, 8)];
+#define gPauseFireTitleENGTex_WIDTH 96
+#define gPauseFireTitleENGTex_HEIGHT 16
+extern u64 gPauseFireTitleENGTex[TEX_LEN(u64, gPauseFireTitleENGTex_WIDTH, gPauseFireTitleENGTex_HEIGHT, 8)];
+#define gPauseWaterTitleENGTex_WIDTH 96
+#define gPauseWaterTitleENGTex_HEIGHT 16
+extern u64 gPauseWaterTitleENGTex[TEX_LEN(u64, gPauseWaterTitleENGTex_WIDTH, gPauseWaterTitleENGTex_HEIGHT, 8)];
+#define gPauseSpiritTitleENGTex_WIDTH 96
+#define gPauseSpiritTitleENGTex_HEIGHT 16
+extern u64 gPauseSpiritTitleENGTex[TEX_LEN(u64, gPauseSpiritTitleENGTex_WIDTH, gPauseSpiritTitleENGTex_HEIGHT, 8)];
+#define gPauseShadowTitleENGTex_WIDTH 96
+#define gPauseShadowTitleENGTex_HEIGHT 16
+extern u64 gPauseShadowTitleENGTex[TEX_LEN(u64, gPauseShadowTitleENGTex_WIDTH, gPauseShadowTitleENGTex_HEIGHT, 8)];
+#define gPauseBotWTitleENGTex_WIDTH 96
+#define gPauseBotWTitleENGTex_HEIGHT 16
+extern u64 gPauseBotWTitleENGTex[TEX_LEN(u64, gPauseBotWTitleENGTex_WIDTH, gPauseBotWTitleENGTex_HEIGHT, 8)];
+#define gPauseIceCavernTitleENGTex_WIDTH 96
+#define gPauseIceCavernTitleENGTex_HEIGHT 16
+extern u64 gPauseIceCavernTitleENGTex[TEX_LEN(u64, gPauseIceCavernTitleENGTex_WIDTH, gPauseIceCavernTitleENGTex_HEIGHT, 8)];
+#define gPauseToEquipENGTex_WIDTH 56
+#define gPauseToEquipENGTex_HEIGHT 16
+extern u64 gPauseToEquipENGTex[TEX_LEN(u64, gPauseToEquipENGTex_WIDTH, gPauseToEquipENGTex_HEIGHT, 8)];
+#define gPauseToDecideENGTex_WIDTH 64
+#define gPauseToDecideENGTex_HEIGHT 16
+extern u64 gPauseToDecideENGTex[TEX_LEN(u64, gPauseToDecideENGTex_WIDTH, gPauseToDecideENGTex_HEIGHT, 8)];
+#define gPauseToPlayMelodyENGTex_WIDTH 80
+#define gPauseToPlayMelodyENGTex_HEIGHT 16
+extern u64 gPauseToPlayMelodyENGTex[TEX_LEN(u64, gPauseToPlayMelodyENGTex_WIDTH, gPauseToPlayMelodyENGTex_HEIGHT, 8)];
+#define gPauseToSelectItemENGTex_WIDTH 128
+#define gPauseToSelectItemENGTex_HEIGHT 16
+extern u64 gPauseToSelectItemENGTex[TEX_LEN(u64, gPauseToSelectItemENGTex_WIDTH, gPauseToSelectItemENGTex_HEIGHT, 8)];
+#define gPauseToMapENGTex_WIDTH 128
+#define gPauseToMapENGTex_HEIGHT 16
+extern u64 gPauseToMapENGTex[TEX_LEN(u64, gPauseToMapENGTex_WIDTH, gPauseToMapENGTex_HEIGHT, 8)];
+#define gPauseToQuestStatusENGTex_WIDTH 128
+#define gPauseToQuestStatusENGTex_HEIGHT 16
+extern u64 gPauseToQuestStatusENGTex[TEX_LEN(u64, gPauseToQuestStatusENGTex_WIDTH, gPauseToQuestStatusENGTex_HEIGHT, 8)];
+#define gPauseToEquipmentENGTex_WIDTH 128
+#define gPauseToEquipmentENGTex_HEIGHT 16
+extern u64 gPauseToEquipmentENGTex[TEX_LEN(u64, gPauseToEquipmentENGTex_WIDTH, gPauseToEquipmentENGTex_HEIGHT, 8)];
+#define gPauseSavePromptENGTex_WIDTH 152
+#define gPauseSavePromptENGTex_HEIGHT 16
+extern u64 gPauseSavePromptENGTex[TEX_LEN(u64, gPauseSavePromptENGTex_WIDTH, gPauseSavePromptENGTex_HEIGHT, 8)];
+#define gPauseSaveConfirmationENGTex_WIDTH 152
+#define gPauseSaveConfirmationENGTex_HEIGHT 16
+extern u64 gPauseSaveConfirmationENGTex[TEX_LEN(u64, gPauseSaveConfirmationENGTex_WIDTH, gPauseSaveConfirmationENGTex_HEIGHT, 8)];
+#define gPauseYesENGTex_WIDTH 48
+#define gPauseYesENGTex_HEIGHT 16
+extern u64 gPauseYesENGTex[TEX_LEN(u64, gPauseYesENGTex_WIDTH, gPauseYesENGTex_HEIGHT, 8)];
+#define gPauseNoENGTex_WIDTH 48
+#define gPauseNoENGTex_HEIGHT 16
+extern u64 gPauseNoENGTex[TEX_LEN(u64, gPauseNoENGTex_WIDTH, gPauseNoENGTex_HEIGHT, 8)];
+#define gPauseCurrentPositionENGTex_WIDTH 64
+#define gPauseCurrentPositionENGTex_HEIGHT 8
+extern u64 gPauseCurrentPositionENGTex[TEX_LEN(u64, gPauseCurrentPositionENGTex_WIDTH, gPauseCurrentPositionENGTex_HEIGHT, 4)];
+
+extern u64 gPauseEquipment10ENGTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSelectItem00ENGTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSelectItem10ENGTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSelectItem20ENGTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseMap10ENGTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseQuestStatus00ENGTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseQuestStatus10ENGTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseQuestStatus20ENGTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSave10ENGTex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+
+#endif
diff --git a/assets/textures/icon_item_static/icon_item_static.c b/assets/textures/icon_item_static/icon_item_static.c
new file mode 100644
index 000000000..2adb277eb
--- /dev/null
+++ b/assets/textures/icon_item_static/icon_item_static.c
@@ -0,0 +1,781 @@
+#include "icon_item_static.h"
+
+// Item icons textures
+
+u64 gItemIconDekuStickTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconDekuStickTex.rgba32.inc.c"
+};
+
+u64 gItemIconDekuNutTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconDekuNutTex.rgba32.inc.c"
+};
+
+u64 gItemIconBombTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBombTex.rgba32.inc.c"
+};
+
+u64 gItemIconBowTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBowTex.rgba32.inc.c"
+};
+
+u64 gItemIconArrowFireTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconArrowFireTex.rgba32.inc.c"
+};
+
+u64 gItemIconDinsFireTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconDinsFireTex.rgba32.inc.c"
+};
+
+u64 gItemIconSlingshotTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconSlingshotTex.rgba32.inc.c"
+};
+
+u64 gItemIconOcarinaFairyTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconOcarinaFairyTex.rgba32.inc.c"
+};
+
+u64 gItemIconOcarinaOfTimeTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconOcarinaOfTimeTex.rgba32.inc.c"
+};
+
+u64 gItemIconBombchuTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBombchuTex.rgba32.inc.c"
+};
+
+u64 gItemIconHookshotTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconHookshotTex.rgba32.inc.c"
+};
+
+u64 gItemIconLongshotTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconLongshotTex.rgba32.inc.c"
+};
+
+u64 gItemIconArrowIceTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconArrowIceTex.rgba32.inc.c"
+};
+
+u64 gItemIconFaroresWindTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconFaroresWindTex.rgba32.inc.c"
+};
+
+u64 gItemIconBoomerangTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBoomerangTex.rgba32.inc.c"
+};
+
+u64 gItemIconLensOfTruthTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconLensOfTruthTex.rgba32.inc.c"
+};
+
+u64 gItemIconMagicBeanTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconMagicBeanTex.rgba32.inc.c"
+};
+
+u64 gItemIconHammerTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconHammerTex.rgba32.inc.c"
+};
+
+u64 gItemIconArrowLightTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconArrowLightTex.rgba32.inc.c"
+};
+
+u64 gItemIconNayrusLoveTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconNayrusLoveTex.rgba32.inc.c"
+};
+
+u64 gItemIconBottleEmptyTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBottleEmptyTex.rgba32.inc.c"
+};
+
+u64 gItemIconBottlePotionRedTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBottlePotionRedTex.rgba32.inc.c"
+};
+
+u64 gItemIconBottlePotionGreenTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBottlePotionGreenTex.rgba32.inc.c"
+};
+
+u64 gItemIconBottlePotionBlueTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBottlePotionBlueTex.rgba32.inc.c"
+};
+
+u64 gItemIconBottleFairyTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBottleFairyTex.rgba32.inc.c"
+};
+
+u64 gItemIconBottleFishTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBottleFishTex.rgba32.inc.c"
+};
+
+u64 gItemIconBottleMilkFullTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBottleMilkFullTex.rgba32.inc.c"
+};
+
+u64 gItemIconBottleRutosLetterTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBottleRutosLetterTex.rgba32.inc.c"
+};
+
+u64 gItemIconBottleBlueFireTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBottleBlueFireTex.rgba32.inc.c"
+};
+
+u64 gItemIconBottleBugTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBottleBugTex.rgba32.inc.c"
+};
+
+u64 gItemIconBottleBigPoeTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBottleBigPoeTex.rgba32.inc.c"
+};
+
+u64 gItemIconBottleMilkHalfTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBottleMilkHalfTex.rgba32.inc.c"
+};
+
+u64 gItemIconBottlePoeTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBottlePoeTex.rgba32.inc.c"
+};
+
+u64 gItemIconWeirdEggTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconWeirdEggTex.rgba32.inc.c"
+};
+
+u64 gItemIconChickenTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconChickenTex.rgba32.inc.c"
+};
+
+u64 gItemIconZeldasLetterTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconZeldasLetterTex.rgba32.inc.c"
+};
+
+u64 gItemIconMaskKeatonTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconMaskKeatonTex.rgba32.inc.c"
+};
+
+u64 gItemIconMaskSkullTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconMaskSkullTex.rgba32.inc.c"
+};
+
+u64 gItemIconMaskSpookyTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconMaskSpookyTex.rgba32.inc.c"
+};
+
+u64 gItemIconMaskBunnyHoodTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconMaskBunnyHoodTex.rgba32.inc.c"
+};
+
+u64 gItemIconMaskGoronTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconMaskGoronTex.rgba32.inc.c"
+};
+
+u64 gItemIconMaskZoraTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconMaskZoraTex.rgba32.inc.c"
+};
+
+u64 gItemIconMaskGerudoTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconMaskGerudoTex.rgba32.inc.c"
+};
+
+u64 gItemIconMaskTruthTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconMaskTruthTex.rgba32.inc.c"
+};
+
+u64 gItemIconSoldOutTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconSoldOutTex.rgba32.inc.c"
+};
+
+u64 gItemIconPocketEggTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconPocketEggTex.rgba32.inc.c"
+};
+
+u64 gItemIconPocketCuccoTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconPocketCuccoTex.rgba32.inc.c"
+};
+
+u64 gItemIconCojiroTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconCojiroTex.rgba32.inc.c"
+};
+
+u64 gItemIconOddMushroomTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconOddMushroomTex.rgba32.inc.c"
+};
+
+u64 gItemIconOddPotionTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconOddPotionTex.rgba32.inc.c"
+};
+
+u64 gItemIconPoachersSawTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconPoachersSawTex.rgba32.inc.c"
+};
+
+u64 gItemIconBrokenGoronsSwordTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBrokenGoronsSwordTex.rgba32.inc.c"
+};
+
+u64 gItemIconPrescriptionTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconPrescriptionTex.rgba32.inc.c"
+};
+
+u64 gItemIconEyeballFrogTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconEyeballFrogTex.rgba32.inc.c"
+};
+
+u64 gItemIconEyeDropsTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconEyeDropsTex.rgba32.inc.c"
+};
+
+u64 gItemIconClaimCheckTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconClaimCheckTex.rgba32.inc.c"
+};
+
+u64 gItemIconBowFireTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBowFireTex.rgba32.inc.c"
+};
+
+u64 gItemIconBowIceTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBowIceTex.rgba32.inc.c"
+};
+
+u64 gItemIconBowLightTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBowLightTex.rgba32.inc.c"
+};
+
+u64 gItemIconSwordKokiriTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconSwordKokiriTex.rgba32.inc.c"
+};
+
+u64 gItemIconSwordMasterTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconSwordMasterTex.rgba32.inc.c"
+};
+
+u64 gItemIconSwordBiggoronTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconSwordBiggoronTex.rgba32.inc.c"
+};
+
+u64 gItemIconShieldDekuTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconShieldDekuTex.rgba32.inc.c"
+};
+
+u64 gItemIconShieldHylianTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconShieldHylianTex.rgba32.inc.c"
+};
+
+u64 gItemIconShieldMirrorTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconShieldMirrorTex.rgba32.inc.c"
+};
+
+u64 gItemIconTunicKokiriTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconTunicKokiriTex.rgba32.inc.c"
+};
+
+u64 gItemIconTunicGoronTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconTunicGoronTex.rgba32.inc.c"
+};
+
+u64 gItemIconTunicZoraTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconTunicZoraTex.rgba32.inc.c"
+};
+
+u64 gItemIconBootsKokiriTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBootsKokiriTex.rgba32.inc.c"
+};
+
+u64 gItemIconBootsIronTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBootsIronTex.rgba32.inc.c"
+};
+
+u64 gItemIconBootsHoverTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBootsHoverTex.rgba32.inc.c"
+};
+
+u64 gItemIconBulletBag30Tex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBulletBag30Tex.rgba32.inc.c"
+};
+
+u64 gItemIconBulletBag40Tex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBulletBag40Tex.rgba32.inc.c"
+};
+
+u64 gItemIconBulletBag50Tex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBulletBag50Tex.rgba32.inc.c"
+};
+
+u64 gItemIconQuiver30Tex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconQuiver30Tex.rgba32.inc.c"
+};
+
+u64 gItemIconQuiver40Tex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconQuiver40Tex.rgba32.inc.c"
+};
+
+u64 gItemIconQuiver50Tex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconQuiver50Tex.rgba32.inc.c"
+};
+
+u64 gItemIconBombBag20Tex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBombBag20Tex.rgba32.inc.c"
+};
+
+u64 gItemIconBombBag30Tex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBombBag30Tex.rgba32.inc.c"
+};
+
+u64 gItemIconBombBag40Tex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBombBag40Tex.rgba32.inc.c"
+};
+
+u64 gItemIconGoronsBraceletTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconGoronsBraceletTex.rgba32.inc.c"
+};
+
+u64 gItemIconSilverGauntletsTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconSilverGauntletsTex.rgba32.inc.c"
+};
+
+u64 gItemIconGoldenGauntletsTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconGoldenGauntletsTex.rgba32.inc.c"
+};
+
+u64 gItemIconScaleSilverTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconScaleSilverTex.rgba32.inc.c"
+};
+
+u64 gItemIconScaleGoldenTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconScaleGoldenTex.rgba32.inc.c"
+};
+
+u64 gItemIconBrokenGiantsKnifeTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconBrokenGiantsKnifeTex.rgba32.inc.c"
+};
+
+u64 gItemIconAdultsWalletTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconAdultsWalletTex.rgba32.inc.c"
+};
+
+u64 gItemIconGiantsWalletTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconGiantsWalletTex.rgba32.inc.c"
+};
+
+u64 gItemIconDekuSeedsTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconDekuSeedsTex.rgba32.inc.c"
+};
+
+u64 gItemIconFishingPoleTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)] = {
+#include "assets/textures/icon_item_static/gItemIconFishingPoleTex.rgba32.inc.c"
+};
+
+// Heart piece icons textures
+
+u64 gHeartPieceIcon1Tex[TEX_LEN(u64, HEART_PIECE_ICON_TEX_WIDTH, HEART_PIECE_ICON_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gHeartPieceIcon1Tex.ia8.inc.c"
+};
+
+u64 gHeartPieceIcon2Tex[TEX_LEN(u64, HEART_PIECE_ICON_TEX_WIDTH, HEART_PIECE_ICON_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gHeartPieceIcon2Tex.ia8.inc.c"
+};
+
+u64 gHeartPieceIcon3Tex[TEX_LEN(u64, HEART_PIECE_ICON_TEX_WIDTH, HEART_PIECE_ICON_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gHeartPieceIcon3Tex.ia8.inc.c"
+};
+
+// Pause menu cursor textures
+
+#define gPausePromptCursorTex_WIDTH 48
+#define gPausePromptCursorTex_HEIGHT 48
+u64 gPausePromptCursorTex[TEX_LEN(u64, gPausePromptCursorTex_WIDTH, gPausePromptCursorTex_HEIGHT, 4)] = {
+#include "assets/textures/icon_item_static/gPausePromptCursorTex.i4.inc.c"
+};
+
+#define gPauseUnusedCursorTex_WIDTH 24
+#define gPauseUnusedCursorTex_HEIGHT 24
+u64 gPauseUnusedCursorTex[TEX_LEN(u64, gPauseUnusedCursorTex_WIDTH, gPauseUnusedCursorTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseUnusedCursorTex.i8.inc.c"
+};
+
+u64 gPauseMenuCursorTopLeftTex[TEX_LEN(u64, PAUSE_MENU_CURSOR_CORNER_TEX_WIDTH, PAUSE_MENU_CURSOR_CORNER_TEX_HEIGHT,
+ 4)] = {
+#include "assets/textures/icon_item_static/gPauseMenuCursorTopLeftTex.ia4.inc.c"
+};
+
+u64 gPauseMenuCursorTopRightTex[TEX_LEN(u64, PAUSE_MENU_CURSOR_CORNER_TEX_WIDTH, PAUSE_MENU_CURSOR_CORNER_TEX_HEIGHT,
+ 4)] = {
+#include "assets/textures/icon_item_static/gPauseMenuCursorTopRightTex.ia4.inc.c"
+};
+
+u64 gPauseMenuCursorBottomLeftTex[TEX_LEN(u64, PAUSE_MENU_CURSOR_CORNER_TEX_WIDTH, PAUSE_MENU_CURSOR_CORNER_TEX_HEIGHT,
+ 4)] = {
+#include "assets/textures/icon_item_static/gPauseMenuCursorBottomLeftTex.ia4.inc.c"
+};
+
+u64 gPauseMenuCursorBottomRightTex[TEX_LEN(u64, PAUSE_MENU_CURSOR_CORNER_TEX_WIDTH, PAUSE_MENU_CURSOR_CORNER_TEX_HEIGHT,
+ 4)] = {
+#include "assets/textures/icon_item_static/gPauseMenuCursorBottomRightTex.ia4.inc.c"
+};
+
+// Pause menu pages background textures
+
+u64 gPauseEquipment00Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseEquipment00Tex.ia8.inc.c"
+};
+
+u64 gPauseEquipment20Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseEquipment20Tex.ia8.inc.c"
+};
+
+u64 gPauseMap00Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseMap00Tex.ia8.inc.c"
+};
+
+u64 gPauseMap20Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseMap20Tex.ia8.inc.c"
+};
+
+#if OOT_PAL
+u64 gPauseQuestStatus00Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseQuestStatus00Tex.ia8.inc.c"
+};
+
+u64 gPauseQuestStatus20Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseQuestStatus20Tex.ia8.inc.c"
+};
+#endif
+
+u64 gPauseSave00Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseSave00Tex.ia8.inc.c"
+};
+
+u64 gPauseSave20Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseSave20Tex.ia8.inc.c"
+};
+
+u64 gPauseEquipment01Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseEquipment01Tex.ia8.inc.c"
+};
+
+u64 gPauseEquipment11Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseEquipment11Tex.ia8.inc.c"
+};
+
+u64 gPauseEquipment21Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseEquipment21Tex.ia8.inc.c"
+};
+
+u64 gPauseSelectItem01Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseSelectItem01Tex.ia8.inc.c"
+};
+
+u64 gPauseSelectItem11Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseSelectItem11Tex.ia8.inc.c"
+};
+
+u64 gPauseSelectItem21Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseSelectItem21Tex.ia8.inc.c"
+};
+
+u64 gPauseMap01Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseMap01Tex.ia8.inc.c"
+};
+
+u64 gPauseMap11Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseMap11Tex.ia8.inc.c"
+};
+
+u64 gPauseMap21Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseMap21Tex.ia8.inc.c"
+};
+
+u64 gPauseQuestStatus01Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseQuestStatus01Tex.ia8.inc.c"
+};
+
+u64 gPauseQuestStatus11Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseQuestStatus11Tex.ia8.inc.c"
+};
+
+u64 gPauseQuestStatus21Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseQuestStatus21Tex.ia8.inc.c"
+};
+
+u64 gPauseSave01Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseSave01Tex.ia8.inc.c"
+};
+
+u64 gPauseSave11Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseSave11Tex.ia8.inc.c"
+};
+
+u64 gPauseSave21Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseSave21Tex.ia8.inc.c"
+};
+
+u64 gPauseEquipment02Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseEquipment02Tex.ia8.inc.c"
+};
+
+u64 gPauseEquipment12Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseEquipment12Tex.ia8.inc.c"
+};
+
+u64 gPauseEquipment22Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseEquipment22Tex.ia8.inc.c"
+};
+
+u64 gPauseSelectItem02Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseSelectItem02Tex.ia8.inc.c"
+};
+
+u64 gPauseSelectItem12Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseSelectItem12Tex.ia8.inc.c"
+};
+
+u64 gPauseSelectItem22Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseSelectItem22Tex.ia8.inc.c"
+};
+
+u64 gPauseMap02Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseMap02Tex.ia8.inc.c"
+};
+
+u64 gPauseMap12Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseMap12Tex.ia8.inc.c"
+};
+
+u64 gPauseMap22Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseMap22Tex.ia8.inc.c"
+};
+
+u64 gPauseQuestStatus02Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseQuestStatus02Tex.ia8.inc.c"
+};
+
+u64 gPauseQuestStatus12Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseQuestStatus12Tex.ia8.inc.c"
+};
+
+u64 gPauseQuestStatus22Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseQuestStatus22Tex.ia8.inc.c"
+};
+
+u64 gPauseSave02Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseSave02Tex.ia8.inc.c"
+};
+
+u64 gPauseSave12Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseSave12Tex.ia8.inc.c"
+};
+
+u64 gPauseSave22Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseSave22Tex.ia8.inc.c"
+};
+
+u64 gPauseEquipment03Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseEquipment03Tex.ia8.inc.c"
+};
+
+u64 gPauseEquipment13Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseEquipment13Tex.ia8.inc.c"
+};
+
+u64 gPauseEquipment23Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseEquipment23Tex.ia8.inc.c"
+};
+
+u64 gPauseSelectItem03Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseSelectItem03Tex.ia8.inc.c"
+};
+
+u64 gPauseSelectItem13Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseSelectItem13Tex.ia8.inc.c"
+};
+
+u64 gPauseSelectItem23Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseSelectItem23Tex.ia8.inc.c"
+};
+
+u64 gPauseMap03Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseMap03Tex.ia8.inc.c"
+};
+
+u64 gPauseMap13Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseMap13Tex.ia8.inc.c"
+};
+
+u64 gPauseMap23Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseMap23Tex.ia8.inc.c"
+};
+
+u64 gPauseQuestStatus03Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseQuestStatus03Tex.ia8.inc.c"
+};
+
+u64 gPauseQuestStatus13Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseQuestStatus13Tex.ia8.inc.c"
+};
+
+u64 gPauseQuestStatus23Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseQuestStatus23Tex.ia8.inc.c"
+};
+
+u64 gPauseSave03Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseSave03Tex.ia8.inc.c"
+};
+
+u64 gPauseSave13Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseSave13Tex.ia8.inc.c"
+};
+
+u64 gPauseSave23Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseSave23Tex.ia8.inc.c"
+};
+
+u64 gPauseEquipment04Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseEquipment04Tex.ia8.inc.c"
+};
+
+u64 gPauseEquipment14Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseEquipment14Tex.ia8.inc.c"
+};
+
+u64 gPauseEquipment24Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseEquipment24Tex.ia8.inc.c"
+};
+
+u64 gPauseSelectItem04Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseSelectItem04Tex.ia8.inc.c"
+};
+
+u64 gPauseSelectItem14Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseSelectItem14Tex.ia8.inc.c"
+};
+
+u64 gPauseSelectItem24Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseSelectItem24Tex.ia8.inc.c"
+};
+
+u64 gPauseMap04Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseMap04Tex.ia8.inc.c"
+};
+
+u64 gPauseMap14Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseMap14Tex.ia8.inc.c"
+};
+
+u64 gPauseMap24Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseMap24Tex.ia8.inc.c"
+};
+
+u64 gPauseQuestStatus04Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseQuestStatus04Tex.ia8.inc.c"
+};
+
+u64 gPauseQuestStatus14Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseQuestStatus14Tex.ia8.inc.c"
+};
+
+u64 gPauseQuestStatus24Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseQuestStatus24Tex.ia8.inc.c"
+};
+
+u64 gPauseSave04Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseSave04Tex.ia8.inc.c"
+};
+
+u64 gPauseSave14Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseSave14Tex.ia8.inc.c"
+};
+
+u64 gPauseSave24Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseSave24Tex.ia8.inc.c"
+};
+
+u64 gPauseGameOver10Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gPauseGameOver10Tex.ia8.inc.c"
+};
+
+// Various textures and DLs
+
+#define gABtnSymbolTex_WIDTH 24
+#define gABtnSymbolTex_HEIGHT 16
+u64 gABtnSymbolTex[TEX_LEN(u64, gABtnSymbolTex_WIDTH, gABtnSymbolTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gABtnSymbolTex.ia8.inc.c"
+};
+
+#define gBBtnSymbolTex_WIDTH 24
+#define gBBtnSymbolTex_HEIGHT 16
+u64 gBBtnSymbolTex[TEX_LEN(u64, gBBtnSymbolTex_WIDTH, gBBtnSymbolTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gBBtnSymbolTex.ia8.inc.c"
+};
+
+#define gCBtnSymbolsTex_WIDTH 48
+#define gCBtnSymbolsTex_HEIGHT 16
+u64 gCBtnSymbolsTex[TEX_LEN(u64, gCBtnSymbolsTex_WIDTH, gCBtnSymbolsTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gCBtnSymbolsTex.ia8.inc.c"
+};
+
+#define gNamePanelLeftTex_WIDTH 72
+#define gNamePanelLeftTex_HEIGHT 24
+u64 gNamePanelLeftTex[TEX_LEN(u64, gNamePanelLeftTex_WIDTH, gNamePanelLeftTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gNamePanelLeftTex.ia8.inc.c"
+};
+
+#define gNamePanelRightTex_WIDTH 72
+#define gNamePanelRightTex_HEIGHT 24
+u64 gNamePanelRightTex[TEX_LEN(u64, gNamePanelRightTex_WIDTH, gNamePanelRightTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gNamePanelRightTex.ia8.inc.c"
+};
+
+#define gLButtonTex_WIDTH 24
+#define gLButtonTex_HEIGHT 32
+u64 gLButtonTex[TEX_LEN(u64, gLButtonTex_WIDTH, gLButtonTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gLButtonTex.ia8.inc.c"
+};
+
+#define gRButtonTex_WIDTH 24
+#define gRButtonTex_HEIGHT 32
+u64 gRButtonTex[TEX_LEN(u64, gRButtonTex_WIDTH, gRButtonTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gRButtonTex.ia8.inc.c"
+};
+
+#define gUnknownJPNTex_WIDTH 80
+#define gUnknownJPNTex_HEIGHT 16
+u64 gUnknownJPNTex[TEX_LEN(u64, gUnknownJPNTex_WIDTH, gUnknownJPNTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gUnknownJPNTex.ia8.inc.c"
+};
+
+u64 gSongNoteTex[TEX_LEN(u64, gSongNoteTex_WIDTH, gSongNoteTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gSongNoteTex.ia8.inc.c"
+};
+
+u64 gMagicArrowEquipEffectTex[TEX_LEN(u64, gMagicArrowEquipEffectTex_WIDTH, gMagicArrowEquipEffectTex_HEIGHT, 8)] = {
+#include "assets/textures/icon_item_static/gMagicArrowEquipEffectTex.ia8.inc.c"
+};
+
+Gfx gItemNamePanelDL[18] = {
+#include "assets/textures/icon_item_static/gItemNamePanelDL.inc.c"
+};
+
+Gfx gLButtonIconDL[10] = {
+#include "assets/textures/icon_item_static/gLButtonIconDL.inc.c"
+};
+
+Gfx gRButtonIconDL[10] = {
+#include "assets/textures/icon_item_static/gRButtonIconDL.inc.c"
+};
+
+Gfx gCButtonIconsDL[11] = {
+#include "assets/textures/icon_item_static/gCButtonIconsDL.inc.c"
+};
+
+Gfx gAButtonIconDL[11] = {
+#include "assets/textures/icon_item_static/gAButtonIconDL.inc.c"
+};
+
+Gfx gBButtonIconDL[11] = {
+#include "assets/textures/icon_item_static/gBButtonIconDL.inc.c"
+};
+
+Gfx gPromptCursorLeftDL[10] = {
+#include "assets/textures/icon_item_static/gPromptCursorLeftDL.inc.c"
+};
+
+Gfx gPromptCursorRightDL[10] = {
+#include "assets/textures/icon_item_static/gPromptCursorRightDL.inc.c"
+};
diff --git a/assets/textures/icon_item_static/icon_item_static.h b/assets/textures/icon_item_static/icon_item_static.h
new file mode 100644
index 000000000..74c837280
--- /dev/null
+++ b/assets/textures/icon_item_static/icon_item_static.h
@@ -0,0 +1,204 @@
+#ifndef ICON_ITEM_STATIC_H
+#define ICON_ITEM_STATIC_H
+
+#include "ultra64.h"
+#include "src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.h"
+#include "tex_len.h"
+#include "versions.h"
+#include "z64interface.h"
+
+extern u64 gItemIconDekuStickTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconDekuNutTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBombTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBowTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconArrowFireTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconDinsFireTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconSlingshotTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconOcarinaFairyTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconOcarinaOfTimeTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBombchuTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconHookshotTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconLongshotTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconArrowIceTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconFaroresWindTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBoomerangTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconLensOfTruthTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconMagicBeanTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconHammerTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconArrowLightTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconNayrusLoveTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBottleEmptyTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBottlePotionRedTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBottlePotionGreenTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBottlePotionBlueTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBottleFairyTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBottleFishTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBottleMilkFullTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBottleRutosLetterTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBottleBlueFireTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBottleBugTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBottleBigPoeTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBottleMilkHalfTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBottlePoeTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconWeirdEggTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconChickenTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconZeldasLetterTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconMaskKeatonTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconMaskSkullTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconMaskSpookyTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconMaskBunnyHoodTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconMaskGoronTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconMaskZoraTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconMaskGerudoTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconMaskTruthTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconSoldOutTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconPocketEggTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconPocketCuccoTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconCojiroTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconOddMushroomTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconOddPotionTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconPoachersSawTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBrokenGoronsSwordTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconPrescriptionTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconEyeballFrogTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconEyeDropsTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconClaimCheckTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBowFireTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBowIceTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBowLightTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconSwordKokiriTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconSwordMasterTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconSwordBiggoronTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconShieldDekuTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconShieldHylianTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconShieldMirrorTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconTunicKokiriTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconTunicGoronTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconTunicZoraTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBootsKokiriTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBootsIronTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBootsHoverTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBulletBag30Tex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBulletBag40Tex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBulletBag50Tex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconQuiver30Tex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconQuiver40Tex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconQuiver50Tex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBombBag20Tex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBombBag30Tex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBombBag40Tex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconGoronsBraceletTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconSilverGauntletsTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconGoldenGauntletsTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconScaleSilverTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconScaleGoldenTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconBrokenGiantsKnifeTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconAdultsWalletTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconGiantsWalletTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconDekuSeedsTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+extern u64 gItemIconFishingPoleTex[TEX_LEN(u64, ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 32)];
+
+#define HEART_PIECE_ICON_TEX_WIDTH 48
+#define HEART_PIECE_ICON_TEX_HEIGHT 48
+extern u64 gHeartPieceIcon1Tex[TEX_LEN(u64, HEART_PIECE_ICON_TEX_WIDTH, HEART_PIECE_ICON_TEX_HEIGHT, 8)];
+extern u64 gHeartPieceIcon2Tex[TEX_LEN(u64, HEART_PIECE_ICON_TEX_WIDTH, HEART_PIECE_ICON_TEX_HEIGHT, 8)];
+extern u64 gHeartPieceIcon3Tex[TEX_LEN(u64, HEART_PIECE_ICON_TEX_WIDTH, HEART_PIECE_ICON_TEX_HEIGHT, 8)];
+
+#define PAUSE_MENU_CURSOR_CORNER_TEX_SIZE 16
+#define PAUSE_MENU_CURSOR_CORNER_TEX_WIDTH PAUSE_MENU_CURSOR_CORNER_TEX_SIZE
+#define PAUSE_MENU_CURSOR_CORNER_TEX_HEIGHT PAUSE_MENU_CURSOR_CORNER_TEX_SIZE
+extern u64 gPauseMenuCursorTopLeftTex[TEX_LEN(u64, PAUSE_MENU_CURSOR_CORNER_TEX_WIDTH, PAUSE_MENU_CURSOR_CORNER_TEX_HEIGHT, 4)];
+extern u64 gPauseMenuCursorTopRightTex[TEX_LEN(u64, PAUSE_MENU_CURSOR_CORNER_TEX_WIDTH, PAUSE_MENU_CURSOR_CORNER_TEX_HEIGHT, 4)];
+extern u64 gPauseMenuCursorBottomLeftTex[TEX_LEN(u64, PAUSE_MENU_CURSOR_CORNER_TEX_WIDTH, PAUSE_MENU_CURSOR_CORNER_TEX_HEIGHT, 4)];
+extern u64 gPauseMenuCursorBottomRightTex[TEX_LEN(u64, PAUSE_MENU_CURSOR_CORNER_TEX_WIDTH, PAUSE_MENU_CURSOR_CORNER_TEX_HEIGHT, 4)];
+
+extern u64 gPauseEquipment00Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseEquipment20Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseMap00Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseMap20Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+#if OOT_PAL
+extern u64 gPauseQuestStatus00Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseQuestStatus20Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+#endif
+extern u64 gPauseSave00Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSave20Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseEquipment01Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseEquipment11Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseEquipment21Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSelectItem01Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSelectItem11Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSelectItem21Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseMap01Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseMap11Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseMap21Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseQuestStatus01Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseQuestStatus11Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseQuestStatus21Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSave01Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSave11Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSave21Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseEquipment02Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseEquipment12Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseEquipment22Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSelectItem02Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSelectItem12Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSelectItem22Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseMap02Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseMap12Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseMap22Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseQuestStatus02Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseQuestStatus12Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseQuestStatus22Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSave02Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSave12Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSave22Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseEquipment03Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseEquipment13Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseEquipment23Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSelectItem03Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSelectItem13Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSelectItem23Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseMap03Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseMap13Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseMap23Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseQuestStatus03Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseQuestStatus13Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseQuestStatus23Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSave03Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSave13Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSave23Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseEquipment04Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseEquipment14Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseEquipment24Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSelectItem04Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSelectItem14Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSelectItem24Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseMap04Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseMap14Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseMap24Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseQuestStatus04Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseQuestStatus14Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseQuestStatus24Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSave04Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSave14Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseSave24Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+extern u64 gPauseGameOver10Tex[TEX_LEN(u64, PAGE_BG_QUAD_TEX_WIDTH, PAGE_BG_QUAD_TEX_HEIGHT, 8)];
+
+#define gSongNoteTex_WIDTH 16
+#define gSongNoteTex_HEIGHT 24
+extern u64 gSongNoteTex[TEX_LEN(u64, gSongNoteTex_WIDTH, gSongNoteTex_HEIGHT, 8)];
+
+#define gMagicArrowEquipEffectTex_SIZE 32
+#define gMagicArrowEquipEffectTex_WIDTH gMagicArrowEquipEffectTex_SIZE
+#define gMagicArrowEquipEffectTex_HEIGHT gMagicArrowEquipEffectTex_SIZE
+extern u64 gMagicArrowEquipEffectTex[TEX_LEN(u64, gMagicArrowEquipEffectTex_WIDTH, gMagicArrowEquipEffectTex_HEIGHT, 8)];
+
+extern Gfx gItemNamePanelDL[18];
+extern Gfx gLButtonIconDL[10];
+extern Gfx gRButtonIconDL[10];
+extern Gfx gCButtonIconsDL[11];
+extern Gfx gAButtonIconDL[11];
+extern Gfx gPromptCursorLeftDL[10];
+extern Gfx gPromptCursorRightDL[10];
+
+#endif
diff --git a/assets/textures/item_name_static/item_name_static.c b/assets/textures/item_name_static/item_name_static.c
new file mode 100644
index 000000000..30443f4aa
--- /dev/null
+++ b/assets/textures/item_name_static/item_name_static.c
@@ -0,0 +1,1985 @@
+#include "item_name_static.h"
+
+#if OOT_NTSC
+
+// Japanese
+
+u64 gDekuStickItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gDekuStickItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gDekuNutItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gDekuNutItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gBombItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBombItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gFairyBowItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFairyBowItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gFireArrowItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFireArrowItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gDinsFireItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gDinsFireItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gFairySlingshotItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFairySlingshotItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gFairyOcarinaItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFairyOcarinaItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gOcarinaOfTimeItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gOcarinaOfTimeItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gBombchuItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBombchuItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gHookshotItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gHookshotItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gLongshotItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gLongshotItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gIceArrowItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gIceArrowItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gFaroresWindItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFaroresWindItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gBoomerangItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBoomerangItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gLensItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gLensItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gMagicBeansItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gMagicBeansItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gMegatonHammerItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gMegatonHammerItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gLightArrowItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gLightArrowItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gNayrusLoveItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gNayrusLoveItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gEmptyBottleItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gEmptyBottleItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gRedPotionItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gRedPotionItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gGreenPotionItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGreenPotionItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gBluePotionItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBluePotionItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gBottledFairyItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBottledFairyItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gFishItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFishItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gFullMilkItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFullMilkItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gRutosLetterItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gRutosLetterItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gBlueFireItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBlueFireItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gBugItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBugItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gBigPoeItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBigPoeItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gHalfMilkItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gHalfMilkItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gPoeItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gPoeItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gWeirdEggItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gWeirdEggItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gCuccoItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gCuccoItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gZeldasLetterItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gZeldasLetterItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gKeatonMaskItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gKeatonMaskItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gSkullMaskItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSkullMaskItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gSpookyMaskItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSpookyMaskItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gBunnyHoodItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBunnyHoodItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gGoronMaskItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGoronMaskItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gZoraMaskItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gZoraMaskItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gGerudoMaskItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGerudoMaskItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gMaskofTruthItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gMaskofTruthItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gSOLDOUTItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSOLDOUTItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gPocketEggItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gPocketEggItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gPocketCuccoItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gPocketCuccoItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gCojiroItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gCojiroItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gOddMushroomItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gOddMushroomItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gOddPotionItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gOddPotionItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gPoachersSawItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gPoachersSawItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gBrokenGoronsSwordItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBrokenGoronsSwordItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gPrescriptionItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gPrescriptionItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gEyeBallFrogItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gEyeBallFrogItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gEyeDropsItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gEyeDropsItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gClaimCheckItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gClaimCheckItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gUnusedWindMedallionItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedWindMedallionItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gUnusedFireMedallionItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedFireMedallionItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gUnusedIceMedallionItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedIceMedallionItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gKokiriSwordItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gKokiriSwordItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gMasterSwordItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gMasterSwordItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gGiantsKnifeItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGiantsKnifeItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gDekuShieldItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gDekuShieldItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gHylianShieldItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gHylianShieldItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gMirrorShieldItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gMirrorShieldItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gKokiriTunicItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gKokiriTunicItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gGoronTunicItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGoronTunicItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gZoraTunicItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gZoraTunicItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gKokiriBootsItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gKokiriBootsItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gIronBootsItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gIronBootsItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gHoverBootsItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gHoverBootsItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gBulletBag30ItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBulletBag30ItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gBulletBag40ItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBulletBag40ItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gBulletBag50ItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBulletBag50ItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gQuiver30ItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gQuiver30ItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gQuiver40ItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gQuiver40ItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gQuiver50ItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gQuiver50ItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gBombBag20ItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBombBag20ItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gBombBag30ItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBombBag30ItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gBombBag40ItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBombBag40ItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gGoronsBraceletItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGoronsBraceletItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gSilverGauntletsItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSilverGauntletsItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gGoldenGauntletsItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGoldenGauntletsItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gSilverScaleItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSilverScaleItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gGoldenScaleItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGoldenScaleItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gBrokenGiantsKnifeItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBrokenGiantsKnifeItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gUnusedBossKeyItemName1JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedBossKeyItemName1JPNTex.ia4.inc.c"
+};
+
+u64 gUnusedBossKeyItemName2JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedBossKeyItemName2JPNTex.ia4.inc.c"
+};
+
+u64 gUnusedBossKeyItemName3JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedBossKeyItemName3JPNTex.ia4.inc.c"
+};
+
+u64 gUnusedBossKeyItemName4JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedBossKeyItemName4JPNTex.ia4.inc.c"
+};
+
+u64 gMinuetOfForestItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gMinuetOfForestItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gBoleroOfFireItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBoleroOfFireItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gSerenadeOfWaterItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSerenadeOfWaterItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gRequiemOfSpiritItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gRequiemOfSpiritItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gNocturneOfShadowItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gNocturneOfShadowItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gPreludeOfLightItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gPreludeOfLightItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gZeldasLullabyItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gZeldasLullabyItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gEponasSongItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gEponasSongItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gSariasSongItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSariasSongItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gSunsSongItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSunsSongItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gSongOfTimeItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSongOfTimeItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gSongOfStormsItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSongOfStormsItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gForestMedallionItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gForestMedallionItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gFireMedallionItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFireMedallionItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gWaterMedallionItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gWaterMedallionItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gSpiritMedallionItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSpiritMedallionItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gShadowMedallionItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gShadowMedallionItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gLightMedallionItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gLightMedallionItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gKokiriEmeraldItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gKokiriEmeraldItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gGoronsRubyItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGoronsRubyItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gZorasSapphireItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gZorasSapphireItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gStoneofAgonyItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gStoneofAgonyItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gGerudosCardItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGerudosCardItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gGoldSkulltulaItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGoldSkulltulaItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gPieceOfHeartItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gPieceOfHeartItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gUnusedPieceOfHeartItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedPieceOfHeartItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gUnusedBigKeyItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedBigKeyItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gCompassItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gCompassItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gDungeonMapItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gDungeonMapItemNameJPNTex.ia4.inc.c"
+};
+
+u64 gUnusedBossKeyItemName5JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedBossKeyItemName5JPNTex.ia4.inc.c"
+};
+
+u64 gUnusedBossKeyItemName6JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedBossKeyItemName6JPNTex.ia4.inc.c"
+};
+
+u64 gUnusedBossKeyItemName7JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedBossKeyItemName7JPNTex.ia4.inc.c"
+};
+
+u64 gBiggoronsSwordItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBiggoronsSwordItemNameJPNTex.ia4.inc.c"
+};
+
+#endif
+
+// English
+
+u64 gDekuStickItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gDekuStickItemNameENGTex.ia4.inc.c"
+};
+
+u64 gDekuNutItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gDekuNutItemNameENGTex.ia4.inc.c"
+};
+
+u64 gBombItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBombItemNameENGTex.ia4.inc.c"
+};
+
+u64 gFairyBowItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFairyBowItemNameENGTex.ia4.inc.c"
+};
+
+u64 gFireArrowItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFireArrowItemNameENGTex.ia4.inc.c"
+};
+
+u64 gDinsFireItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gDinsFireItemNameENGTex.ia4.inc.c"
+};
+
+u64 gFairySlingshotItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFairySlingshotItemNameENGTex.ia4.inc.c"
+};
+
+u64 gFairyOcarinaItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFairyOcarinaItemNameENGTex.ia4.inc.c"
+};
+
+u64 gOcarinaOfTimeItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gOcarinaOfTimeItemNameENGTex.ia4.inc.c"
+};
+
+u64 gBombchuItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBombchuItemNameENGTex.ia4.inc.c"
+};
+
+u64 gHookshotItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gHookshotItemNameENGTex.ia4.inc.c"
+};
+
+u64 gLongshotItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gLongshotItemNameENGTex.ia4.inc.c"
+};
+
+u64 gIceArrowItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gIceArrowItemNameENGTex.ia4.inc.c"
+};
+
+u64 gFaroresWindItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFaroresWindItemNameENGTex.ia4.inc.c"
+};
+
+u64 gBoomerangItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBoomerangItemNameENGTex.ia4.inc.c"
+};
+
+u64 gLensItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gLensItemNameENGTex.ia4.inc.c"
+};
+
+u64 gMagicBeansItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gMagicBeansItemNameENGTex.ia4.inc.c"
+};
+
+u64 gMegatonHammerItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gMegatonHammerItemNameENGTex.ia4.inc.c"
+};
+
+u64 gLightArrowItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gLightArrowItemNameENGTex.ia4.inc.c"
+};
+
+u64 gNayrusLoveItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gNayrusLoveItemNameENGTex.ia4.inc.c"
+};
+
+u64 gEmptyBottleItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gEmptyBottleItemNameENGTex.ia4.inc.c"
+};
+
+u64 gRedPotionItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gRedPotionItemNameENGTex.ia4.inc.c"
+};
+
+u64 gGreenPotionItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGreenPotionItemNameENGTex.ia4.inc.c"
+};
+
+u64 gBluePotionItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBluePotionItemNameENGTex.ia4.inc.c"
+};
+
+u64 gBottledFairyItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBottledFairyItemNameENGTex.ia4.inc.c"
+};
+
+u64 gFishItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFishItemNameENGTex.ia4.inc.c"
+};
+
+u64 gFullMilkItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFullMilkItemNameENGTex.ia4.inc.c"
+};
+
+u64 gRutosLetterItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gRutosLetterItemNameENGTex.ia4.inc.c"
+};
+
+u64 gBlueFireItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBlueFireItemNameENGTex.ia4.inc.c"
+};
+
+u64 gBugItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBugItemNameENGTex.ia4.inc.c"
+};
+
+u64 gBigPoeItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBigPoeItemNameENGTex.ia4.inc.c"
+};
+
+u64 gHalfMilkItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gHalfMilkItemNameENGTex.ia4.inc.c"
+};
+
+u64 gPoeItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gPoeItemNameENGTex.ia4.inc.c"
+};
+
+u64 gWeirdEggItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gWeirdEggItemNameENGTex.ia4.inc.c"
+};
+
+u64 gCuccoItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gCuccoItemNameENGTex.ia4.inc.c"
+};
+
+u64 gZeldasLetterItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gZeldasLetterItemNameENGTex.ia4.inc.c"
+};
+
+u64 gKeatonMaskItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gKeatonMaskItemNameENGTex.ia4.inc.c"
+};
+
+u64 gSkullMaskItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSkullMaskItemNameENGTex.ia4.inc.c"
+};
+
+u64 gSpookyMaskItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSpookyMaskItemNameENGTex.ia4.inc.c"
+};
+
+u64 gBunnyHoodItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBunnyHoodItemNameENGTex.ia4.inc.c"
+};
+
+u64 gGoronMaskItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGoronMaskItemNameENGTex.ia4.inc.c"
+};
+
+u64 gZoraMaskItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gZoraMaskItemNameENGTex.ia4.inc.c"
+};
+
+u64 gGerudoMaskItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGerudoMaskItemNameENGTex.ia4.inc.c"
+};
+
+u64 gMaskofTruthItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gMaskofTruthItemNameENGTex.ia4.inc.c"
+};
+
+u64 gSOLDOUTItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSOLDOUTItemNameENGTex.ia4.inc.c"
+};
+
+u64 gPocketEggItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gPocketEggItemNameENGTex.ia4.inc.c"
+};
+
+u64 gPocketCuccoItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gPocketCuccoItemNameENGTex.ia4.inc.c"
+};
+
+u64 gCojiroItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gCojiroItemNameENGTex.ia4.inc.c"
+};
+
+u64 gOddMushroomItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gOddMushroomItemNameENGTex.ia4.inc.c"
+};
+
+u64 gOddPotionItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gOddPotionItemNameENGTex.ia4.inc.c"
+};
+
+u64 gPoachersSawItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gPoachersSawItemNameENGTex.ia4.inc.c"
+};
+
+u64 gBrokenGoronsSwordItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBrokenGoronsSwordItemNameENGTex.ia4.inc.c"
+};
+
+u64 gPrescriptionItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gPrescriptionItemNameENGTex.ia4.inc.c"
+};
+
+u64 gEyeBallFrogItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gEyeBallFrogItemNameENGTex.ia4.inc.c"
+};
+
+u64 gEyeDropsItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gEyeDropsItemNameENGTex.ia4.inc.c"
+};
+
+u64 gClaimCheckItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gClaimCheckItemNameENGTex.ia4.inc.c"
+};
+
+u64 gUnusedWindMedallionItemName1JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedWindMedallionItemName1JPNTex.ia4.inc.c"
+};
+
+u64 gUnusedFireMedallionItemName1JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedFireMedallionItemName1JPNTex.ia4.inc.c"
+};
+
+u64 gUnusedIceMedallionItemName1JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedIceMedallionItemName1JPNTex.ia4.inc.c"
+};
+
+u64 gKokiriSwordItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gKokiriSwordItemNameENGTex.ia4.inc.c"
+};
+
+u64 gMasterSwordItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gMasterSwordItemNameENGTex.ia4.inc.c"
+};
+
+u64 gGiantsKnifeItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGiantsKnifeItemNameENGTex.ia4.inc.c"
+};
+
+u64 gDekuShieldItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gDekuShieldItemNameENGTex.ia4.inc.c"
+};
+
+u64 gHylianShieldItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gHylianShieldItemNameENGTex.ia4.inc.c"
+};
+
+u64 gMirrorShieldItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gMirrorShieldItemNameENGTex.ia4.inc.c"
+};
+
+u64 gKokiriTunicItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gKokiriTunicItemNameENGTex.ia4.inc.c"
+};
+
+u64 gGoronTunicItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGoronTunicItemNameENGTex.ia4.inc.c"
+};
+
+u64 gZoraTunicItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gZoraTunicItemNameENGTex.ia4.inc.c"
+};
+
+u64 gKokiriBootsItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gKokiriBootsItemNameENGTex.ia4.inc.c"
+};
+
+u64 gIronBootsItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gIronBootsItemNameENGTex.ia4.inc.c"
+};
+
+u64 gHoverBootsItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gHoverBootsItemNameENGTex.ia4.inc.c"
+};
+
+u64 gBulletBag30ItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBulletBag30ItemNameENGTex.ia4.inc.c"
+};
+
+u64 gBulletBag40ItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBulletBag40ItemNameENGTex.ia4.inc.c"
+};
+
+u64 gBulletBag50ItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBulletBag50ItemNameENGTex.ia4.inc.c"
+};
+
+u64 gQuiver30ItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gQuiver30ItemNameENGTex.ia4.inc.c"
+};
+
+u64 gQuiver40ItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gQuiver40ItemNameENGTex.ia4.inc.c"
+};
+
+u64 gQuiver50ItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gQuiver50ItemNameENGTex.ia4.inc.c"
+};
+
+u64 gBombBag20ItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBombBag20ItemNameENGTex.ia4.inc.c"
+};
+
+u64 gBombBag30ItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBombBag30ItemNameENGTex.ia4.inc.c"
+};
+
+u64 gBombBag40ItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBombBag40ItemNameENGTex.ia4.inc.c"
+};
+
+u64 gGoronsBraceletItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGoronsBraceletItemNameENGTex.ia4.inc.c"
+};
+
+u64 gSilverGauntletsItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSilverGauntletsItemNameENGTex.ia4.inc.c"
+};
+
+u64 gGoldenGauntletsItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGoldenGauntletsItemNameENGTex.ia4.inc.c"
+};
+
+u64 gSilverScaleItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSilverScaleItemNameENGTex.ia4.inc.c"
+};
+
+u64 gGoldenScaleItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGoldenScaleItemNameENGTex.ia4.inc.c"
+};
+
+u64 gBrokenGiantsKnifeItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBrokenGiantsKnifeItemNameENGTex.ia4.inc.c"
+};
+
+u64 gUnusedBossKeyItemName11JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedBossKeyItemName11JPNTex.ia4.inc.c"
+};
+
+u64 gUnusedBossKeyItemName21JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedBossKeyItemName21JPNTex.ia4.inc.c"
+};
+
+u64 gUnusedBossKeyItemName31JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedBossKeyItemName31JPNTex.ia4.inc.c"
+};
+
+u64 gUnusedBossKeyItemName41JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedBossKeyItemName41JPNTex.ia4.inc.c"
+};
+
+u64 gMinuetOfForestItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gMinuetOfForestItemNameENGTex.ia4.inc.c"
+};
+
+u64 gBoleroOfFireItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBoleroOfFireItemNameENGTex.ia4.inc.c"
+};
+
+u64 gSerenadeOfWaterItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSerenadeOfWaterItemNameENGTex.ia4.inc.c"
+};
+
+u64 gRequiemOfSpiritItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gRequiemOfSpiritItemNameENGTex.ia4.inc.c"
+};
+
+u64 gNocturneOfShadowItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gNocturneOfShadowItemNameENGTex.ia4.inc.c"
+};
+
+u64 gPreludeOfLightItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gPreludeOfLightItemNameENGTex.ia4.inc.c"
+};
+
+u64 gZeldasLullabyItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gZeldasLullabyItemNameENGTex.ia4.inc.c"
+};
+
+u64 gEponasSongItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gEponasSongItemNameENGTex.ia4.inc.c"
+};
+
+u64 gSariasSongItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSariasSongItemNameENGTex.ia4.inc.c"
+};
+
+u64 gSunsSongItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSunsSongItemNameENGTex.ia4.inc.c"
+};
+
+u64 gSongOfTimeItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSongOfTimeItemNameENGTex.ia4.inc.c"
+};
+
+u64 gSongOfStormsItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSongOfStormsItemNameENGTex.ia4.inc.c"
+};
+
+u64 gForestMedallionItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gForestMedallionItemNameENGTex.ia4.inc.c"
+};
+
+u64 gFireMedallionItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFireMedallionItemNameENGTex.ia4.inc.c"
+};
+
+u64 gWaterMedallionItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gWaterMedallionItemNameENGTex.ia4.inc.c"
+};
+
+u64 gSpiritMedallionItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSpiritMedallionItemNameENGTex.ia4.inc.c"
+};
+
+u64 gShadowMedallionItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gShadowMedallionItemNameENGTex.ia4.inc.c"
+};
+
+u64 gLightMedallionItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gLightMedallionItemNameENGTex.ia4.inc.c"
+};
+
+u64 gKokiriEmeraldItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gKokiriEmeraldItemNameENGTex.ia4.inc.c"
+};
+
+u64 gGoronsRubyItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGoronsRubyItemNameENGTex.ia4.inc.c"
+};
+
+u64 gZorasSapphireItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gZorasSapphireItemNameENGTex.ia4.inc.c"
+};
+
+u64 gStoneofAgonyItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gStoneofAgonyItemNameENGTex.ia4.inc.c"
+};
+
+u64 gGerudosCardItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGerudosCardItemNameENGTex.ia4.inc.c"
+};
+
+u64 gGoldSkulltulaItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGoldSkulltulaItemNameENGTex.ia4.inc.c"
+};
+
+u64 gPieceOfHeartItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gPieceOfHeartItemNameENGTex.ia4.inc.c"
+};
+
+u64 gUnusedPieceOfHeartItemName1JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedPieceOfHeartItemName1JPNTex.ia4.inc.c"
+};
+
+u64 gUnusedBigKeyItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedBigKeyItemNameENGTex.ia4.inc.c"
+};
+
+u64 gCompassItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gCompassItemNameENGTex.ia4.inc.c"
+};
+
+u64 gDungeonMapItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gDungeonMapItemNameENGTex.ia4.inc.c"
+};
+
+u64 gUnusedBossKeyItemName51JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedBossKeyItemName51JPNTex.ia4.inc.c"
+};
+
+u64 gUnusedBossKeyItemName61JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedBossKeyItemName61JPNTex.ia4.inc.c"
+};
+
+u64 gUnusedBossKeyItemName71JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedBossKeyItemName71JPNTex.ia4.inc.c"
+};
+
+u64 gBiggoronsSwordItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBiggoronsSwordItemNameENGTex.ia4.inc.c"
+};
+
+#if OOT_PAL
+
+// German
+
+u64 gDekuStickItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gDekuStickItemNameGERTex.ia4.inc.c"
+};
+
+u64 gDekuNutItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gDekuNutItemNameGERTex.ia4.inc.c"
+};
+
+u64 gBombItemNameItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBombItemNameItemNameGERTex.ia4.inc.c"
+};
+
+u64 gFairyBowItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFairyBowItemNameGERTex.ia4.inc.c"
+};
+
+u64 gFireArrowItemNameUnk2GERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFireArrowItemNameUnk2GERTex.ia4.inc.c"
+};
+
+u64 gDinsFireItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gDinsFireItemNameGERTex.ia4.inc.c"
+};
+
+u64 gFairySlingshotItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFairySlingshotItemNameGERTex.ia4.inc.c"
+};
+
+u64 gFairyOcarinaItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFairyOcarinaItemNameGERTex.ia4.inc.c"
+};
+
+u64 gOcarinaOfTimeItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gOcarinaOfTimeItemNameGERTex.ia4.inc.c"
+};
+
+u64 gBombchuItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBombchuItemNameGERTex.ia4.inc.c"
+};
+
+u64 gHookshotItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gHookshotItemNameGERTex.ia4.inc.c"
+};
+
+u64 gLongshotItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gLongshotItemNameGERTex.ia4.inc.c"
+};
+
+u64 gIceArrowItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gIceArrowItemNameGERTex.ia4.inc.c"
+};
+
+u64 gFaroresWindItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFaroresWindItemNameGERTex.ia4.inc.c"
+};
+
+u64 gBoomerangItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBoomerangItemNameGERTex.ia4.inc.c"
+};
+
+u64 gLensItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gLensItemNameGERTex.ia4.inc.c"
+};
+
+u64 gMagicBeansItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gMagicBeansItemNameGERTex.ia4.inc.c"
+};
+
+u64 gMegatonHammerItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gMegatonHammerItemNameGERTex.ia4.inc.c"
+};
+
+u64 gLightArrowItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gLightArrowItemNameGERTex.ia4.inc.c"
+};
+
+u64 gNayrusLoveItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gNayrusLoveItemNameGERTex.ia4.inc.c"
+};
+
+u64 gEmptyBottleItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gEmptyBottleItemNameGERTex.ia4.inc.c"
+};
+
+u64 gRedPotionItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gRedPotionItemNameGERTex.ia4.inc.c"
+};
+
+u64 gGreenPotionItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGreenPotionItemNameGERTex.ia4.inc.c"
+};
+
+u64 gBluePotionItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBluePotionItemNameGERTex.ia4.inc.c"
+};
+
+u64 gBottledFairyItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBottledFairyItemNameGERTex.ia4.inc.c"
+};
+
+u64 gFishItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFishItemNameGERTex.ia4.inc.c"
+};
+
+u64 gFullMilkItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFullMilkItemNameGERTex.ia4.inc.c"
+};
+
+u64 gRutosLetterItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gRutosLetterItemNameGERTex.ia4.inc.c"
+};
+
+u64 gBlueFireItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBlueFireItemNameGERTex.ia4.inc.c"
+};
+
+u64 gBugItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBugItemNameGERTex.ia4.inc.c"
+};
+
+u64 gBigPoeItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBigPoeItemNameGERTex.ia4.inc.c"
+};
+
+u64 gHalfMilkItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gHalfMilkItemNameGERTex.ia4.inc.c"
+};
+
+u64 gPoeItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gPoeItemNameGERTex.ia4.inc.c"
+};
+
+u64 gWeirdEggItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gWeirdEggItemNameGERTex.ia4.inc.c"
+};
+
+u64 gCuccoItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gCuccoItemNameGERTex.ia4.inc.c"
+};
+
+u64 gZeldasLetterItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gZeldasLetterItemNameGERTex.ia4.inc.c"
+};
+
+u64 gKeatonMaskItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gKeatonMaskItemNameGERTex.ia4.inc.c"
+};
+
+u64 gSkullMaskItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSkullMaskItemNameGERTex.ia4.inc.c"
+};
+
+u64 gSpookyMaskItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSpookyMaskItemNameGERTex.ia4.inc.c"
+};
+
+u64 gBunnyHoodItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBunnyHoodItemNameGERTex.ia4.inc.c"
+};
+
+u64 gGoronMaskItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGoronMaskItemNameGERTex.ia4.inc.c"
+};
+
+u64 gZoraMaskItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gZoraMaskItemNameGERTex.ia4.inc.c"
+};
+
+u64 gGerudoMaskItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGerudoMaskItemNameGERTex.ia4.inc.c"
+};
+
+u64 gMaskofTruthItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gMaskofTruthItemNameGERTex.ia4.inc.c"
+};
+
+u64 gSOLDOUTItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSOLDOUTItemNameGERTex.ia4.inc.c"
+};
+
+u64 gPocketEggItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gPocketEggItemNameGERTex.ia4.inc.c"
+};
+
+u64 gPocketCuccoItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gPocketCuccoItemNameGERTex.ia4.inc.c"
+};
+
+u64 gCojiroItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gCojiroItemNameGERTex.ia4.inc.c"
+};
+
+u64 gOddMushroomItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gOddMushroomItemNameGERTex.ia4.inc.c"
+};
+
+u64 gOddPotionItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gOddPotionItemNameGERTex.ia4.inc.c"
+};
+
+u64 gPoachersSawItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gPoachersSawItemNameGERTex.ia4.inc.c"
+};
+
+u64 gBrokenGoronsSwordItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBrokenGoronsSwordItemNameGERTex.ia4.inc.c"
+};
+
+u64 gPrescriptionItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gPrescriptionItemNameGERTex.ia4.inc.c"
+};
+
+u64 gEyeBallFrogItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gEyeBallFrogItemNameGERTex.ia4.inc.c"
+};
+
+u64 gEyeDropsItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gEyeDropsItemNameGERTex.ia4.inc.c"
+};
+
+u64 gClaimCheckItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gClaimCheckItemNameGERTex.ia4.inc.c"
+};
+
+u64 gUnusedWindMedallionItemName2JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedWindMedallionItemName2JPNTex.ia4.inc.c"
+};
+
+u64 gUnusedFireMedallionItemName2JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedFireMedallionItemName2JPNTex.ia4.inc.c"
+};
+
+u64 gUnusedIceMedallionItemName2JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedIceMedallionItemName2JPNTex.ia4.inc.c"
+};
+
+u64 gKokiriSwordItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gKokiriSwordItemNameGERTex.ia4.inc.c"
+};
+
+u64 gMasterSwordItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gMasterSwordItemNameGERTex.ia4.inc.c"
+};
+
+u64 gGiantsKnifeItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGiantsKnifeItemNameGERTex.ia4.inc.c"
+};
+
+u64 gDekuShieldItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gDekuShieldItemNameGERTex.ia4.inc.c"
+};
+
+u64 gHylianShieldItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gHylianShieldItemNameGERTex.ia4.inc.c"
+};
+
+u64 gMirrorShieldItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gMirrorShieldItemNameGERTex.ia4.inc.c"
+};
+
+u64 gKokiriTunicItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gKokiriTunicItemNameGERTex.ia4.inc.c"
+};
+
+u64 gGoronTunicItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGoronTunicItemNameGERTex.ia4.inc.c"
+};
+
+u64 gZoraTunicItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gZoraTunicItemNameGERTex.ia4.inc.c"
+};
+
+u64 gKokiriBootsItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gKokiriBootsItemNameGERTex.ia4.inc.c"
+};
+
+u64 gIronBootsItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gIronBootsItemNameGERTex.ia4.inc.c"
+};
+
+u64 gHoverBootsItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gHoverBootsItemNameGERTex.ia4.inc.c"
+};
+
+u64 gBulletBag30ItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBulletBag30ItemNameGERTex.ia4.inc.c"
+};
+
+u64 gBulletBag40ItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBulletBag40ItemNameGERTex.ia4.inc.c"
+};
+
+u64 gBulletBag50ItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBulletBag50ItemNameGERTex.ia4.inc.c"
+};
+
+u64 gQuiver30ItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gQuiver30ItemNameGERTex.ia4.inc.c"
+};
+
+u64 gQuiver40ItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gQuiver40ItemNameGERTex.ia4.inc.c"
+};
+
+u64 gQuiver50ItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gQuiver50ItemNameGERTex.ia4.inc.c"
+};
+
+u64 gBombBag20ItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBombBag20ItemNameGERTex.ia4.inc.c"
+};
+
+u64 gBombBag30ItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBombBag30ItemNameGERTex.ia4.inc.c"
+};
+
+u64 gBombBag40ItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBombBag40ItemNameGERTex.ia4.inc.c"
+};
+
+u64 gGoronsBraceletItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGoronsBraceletItemNameGERTex.ia4.inc.c"
+};
+
+u64 gSilverGauntletsItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSilverGauntletsItemNameGERTex.ia4.inc.c"
+};
+
+u64 gGoldenGauntletsItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGoldenGauntletsItemNameGERTex.ia4.inc.c"
+};
+
+u64 gSilverScaleItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSilverScaleItemNameGERTex.ia4.inc.c"
+};
+
+u64 gGoldenScaleItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGoldenScaleItemNameGERTex.ia4.inc.c"
+};
+
+u64 gBrokenGiantsKnifeItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBrokenGiantsKnifeItemNameGERTex.ia4.inc.c"
+};
+
+u64 gUnusedBossKeyItemName12JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedBossKeyItemName12JPNTex.ia4.inc.c"
+};
+
+u64 gUnusedBossKeyItemName22JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedBossKeyItemName22JPNTex.ia4.inc.c"
+};
+
+u64 gUnusedBossKeyItemName32JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedBossKeyItemName32JPNTex.ia4.inc.c"
+};
+
+u64 gUnusedBossKeyItemName42JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedBossKeyItemName42JPNTex.ia4.inc.c"
+};
+
+u64 gMinuetOfForestItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gMinuetOfForestItemNameGERTex.ia4.inc.c"
+};
+
+u64 gBoleroOfFireItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBoleroOfFireItemNameGERTex.ia4.inc.c"
+};
+
+u64 gSerenadeOfWaterItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSerenadeOfWaterItemNameGERTex.ia4.inc.c"
+};
+
+u64 gRequiemOfSpiritItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gRequiemOfSpiritItemNameGERTex.ia4.inc.c"
+};
+
+u64 gNocturneOfShadowItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gNocturneOfShadowItemNameGERTex.ia4.inc.c"
+};
+
+u64 gPreludeOfLightItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gPreludeOfLightItemNameGERTex.ia4.inc.c"
+};
+
+u64 gZeldasLullabyItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gZeldasLullabyItemNameGERTex.ia4.inc.c"
+};
+
+u64 gEponasSongItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gEponasSongItemNameGERTex.ia4.inc.c"
+};
+
+u64 gSariasSongItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSariasSongItemNameGERTex.ia4.inc.c"
+};
+
+u64 gSunsSongItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSunsSongItemNameGERTex.ia4.inc.c"
+};
+
+u64 gSongOfTimeItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSongOfTimeItemNameGERTex.ia4.inc.c"
+};
+
+u64 gSongOfStormsItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSongOfStormsItemNameGERTex.ia4.inc.c"
+};
+
+u64 gForestMedallionItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gForestMedallionItemNameGERTex.ia4.inc.c"
+};
+
+u64 gFireMedallionItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFireMedallionItemNameGERTex.ia4.inc.c"
+};
+
+u64 gWaterMedallionItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gWaterMedallionItemNameGERTex.ia4.inc.c"
+};
+
+u64 gSpiritMedallionItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSpiritMedallionItemNameGERTex.ia4.inc.c"
+};
+
+u64 gShadowMedallionItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gShadowMedallionItemNameGERTex.ia4.inc.c"
+};
+
+u64 gLightMedallionItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gLightMedallionItemNameGERTex.ia4.inc.c"
+};
+
+u64 gKokiriEmeraldItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gKokiriEmeraldItemNameGERTex.ia4.inc.c"
+};
+
+u64 gGoronsRubyItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGoronsRubyItemNameGERTex.ia4.inc.c"
+};
+
+u64 gZorasSapphireItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gZorasSapphireItemNameGERTex.ia4.inc.c"
+};
+
+u64 gStoneofAgonyItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gStoneofAgonyItemNameGERTex.ia4.inc.c"
+};
+
+u64 gGerudosCardItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGerudosCardItemNameGERTex.ia4.inc.c"
+};
+
+u64 gGoldSkulltulaItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGoldSkulltulaItemNameGERTex.ia4.inc.c"
+};
+
+u64 gHeartContainerItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gHeartContainerItemNameGERTex.ia4.inc.c"
+};
+
+u64 gUnusedPieceOfHeartItemName2JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedPieceOfHeartItemName2JPNTex.ia4.inc.c"
+};
+
+u64 gBigKeyItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBigKeyItemNameGERTex.ia4.inc.c"
+};
+
+u64 gCompassItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gCompassItemNameGERTex.ia4.inc.c"
+};
+
+u64 gDungeonMapItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gDungeonMapItemNameGERTex.ia4.inc.c"
+};
+
+u64 gUnusedBossKeyItemName52JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedBossKeyItemName52JPNTex.ia4.inc.c"
+};
+
+u64 gUnusedBossKeyItemName62JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedBossKeyItemName62JPNTex.ia4.inc.c"
+};
+
+u64 gUnusedBossKeyItemName72JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedBossKeyItemName72JPNTex.ia4.inc.c"
+};
+
+u64 gBiggoronsSwordItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBiggoronsSwordItemNameGERTex.ia4.inc.c"
+};
+
+// French
+
+u64 gDekuStickItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gDekuStickItemNameFRATex.ia4.inc.c"
+};
+
+u64 gDekuNutItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gDekuNutItemNameFRATex.ia4.inc.c"
+};
+
+u64 gBombItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBombItemNameFRATex.ia4.inc.c"
+};
+
+u64 gFairyBowItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFairyBowItemNameFRATex.ia4.inc.c"
+};
+
+u64 gFireArrowItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFireArrowItemNameFRATex.ia4.inc.c"
+};
+
+u64 gDinsFireItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gDinsFireItemNameFRATex.ia4.inc.c"
+};
+
+u64 gFairySlingshotItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFairySlingshotItemNameFRATex.ia4.inc.c"
+};
+
+u64 gFairyOcarinaItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFairyOcarinaItemNameFRATex.ia4.inc.c"
+};
+
+u64 gOcarinaOfTimeItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gOcarinaOfTimeItemNameFRATex.ia4.inc.c"
+};
+
+u64 gBombchuItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBombchuItemNameFRATex.ia4.inc.c"
+};
+
+u64 gHookshotItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gHookshotItemNameFRATex.ia4.inc.c"
+};
+
+u64 gLongshotItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gLongshotItemNameFRATex.ia4.inc.c"
+};
+
+u64 gIceArrowItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gIceArrowItemNameFRATex.ia4.inc.c"
+};
+
+u64 gFaroresWindItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFaroresWindItemNameFRATex.ia4.inc.c"
+};
+
+u64 gBoomerangItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBoomerangItemNameFRATex.ia4.inc.c"
+};
+
+u64 gLensItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gLensItemNameFRATex.ia4.inc.c"
+};
+
+u64 gMagicBeansItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gMagicBeansItemNameFRATex.ia4.inc.c"
+};
+
+u64 gMegatonHammerItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gMegatonHammerItemNameFRATex.ia4.inc.c"
+};
+
+u64 gLightArrowItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gLightArrowItemNameFRATex.ia4.inc.c"
+};
+
+u64 gNayrusLoveItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gNayrusLoveItemNameFRATex.ia4.inc.c"
+};
+
+u64 gEmptyBottleItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gEmptyBottleItemNameFRATex.ia4.inc.c"
+};
+
+u64 gRedPotionItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gRedPotionItemNameFRATex.ia4.inc.c"
+};
+
+u64 gGreenPotionItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGreenPotionItemNameFRATex.ia4.inc.c"
+};
+
+u64 gBluePotionItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBluePotionItemNameFRATex.ia4.inc.c"
+};
+
+u64 gBottledFairyItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBottledFairyItemNameFRATex.ia4.inc.c"
+};
+
+u64 gFishItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFishItemNameFRATex.ia4.inc.c"
+};
+
+u64 gFullMilkItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFullMilkItemNameFRATex.ia4.inc.c"
+};
+
+u64 gRutosLetterItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gRutosLetterItemNameFRATex.ia4.inc.c"
+};
+
+u64 gBlueFireItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBlueFireItemNameFRATex.ia4.inc.c"
+};
+
+u64 gBugItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBugItemNameFRATex.ia4.inc.c"
+};
+
+u64 gBigPoeItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBigPoeItemNameFRATex.ia4.inc.c"
+};
+
+u64 gHalfMilkItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gHalfMilkItemNameFRATex.ia4.inc.c"
+};
+
+u64 gPoeItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gPoeItemNameFRATex.ia4.inc.c"
+};
+
+u64 gWeirdEggItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gWeirdEggItemNameFRATex.ia4.inc.c"
+};
+
+u64 gCuccoItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gCuccoItemNameFRATex.ia4.inc.c"
+};
+
+u64 gZeldasLetterItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gZeldasLetterItemNameFRATex.ia4.inc.c"
+};
+
+u64 gKeatonMaskItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gKeatonMaskItemNameFRATex.ia4.inc.c"
+};
+
+u64 gSkullMaskItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSkullMaskItemNameFRATex.ia4.inc.c"
+};
+
+u64 gSpookyMaskItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSpookyMaskItemNameFRATex.ia4.inc.c"
+};
+
+u64 gBunnyHoodItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBunnyHoodItemNameFRATex.ia4.inc.c"
+};
+
+u64 gGoronMaskItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGoronMaskItemNameFRATex.ia4.inc.c"
+};
+
+u64 gZoraMaskItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gZoraMaskItemNameFRATex.ia4.inc.c"
+};
+
+u64 gGerudoMaskItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGerudoMaskItemNameFRATex.ia4.inc.c"
+};
+
+u64 gMaskofTruthItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gMaskofTruthItemNameFRATex.ia4.inc.c"
+};
+
+u64 gSOLDOUTItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSOLDOUTItemNameFRATex.ia4.inc.c"
+};
+
+u64 gPocketEggItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gPocketEggItemNameFRATex.ia4.inc.c"
+};
+
+u64 gPocketCuccoItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gPocketCuccoItemNameFRATex.ia4.inc.c"
+};
+
+u64 gCojiroItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gCojiroItemNameFRATex.ia4.inc.c"
+};
+
+u64 gOddMushroomItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gOddMushroomItemNameFRATex.ia4.inc.c"
+};
+
+u64 gOddPotionItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gOddPotionItemNameFRATex.ia4.inc.c"
+};
+
+u64 gPoachersSawItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gPoachersSawItemNameFRATex.ia4.inc.c"
+};
+
+u64 gBrokenGoronsSwordItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBrokenGoronsSwordItemNameFRATex.ia4.inc.c"
+};
+
+u64 gPrescriptionItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gPrescriptionItemNameFRATex.ia4.inc.c"
+};
+
+u64 gEyeBallFrogItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gEyeBallFrogItemNameFRATex.ia4.inc.c"
+};
+
+u64 gEyeDropsItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gEyeDropsItemNameFRATex.ia4.inc.c"
+};
+
+u64 gClaimCheckItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gClaimCheckItemNameFRATex.ia4.inc.c"
+};
+
+u64 gUnusedWindMedallionItemName3JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedWindMedallionItemName3JPNTex.ia4.inc.c"
+};
+
+u64 gUnusedFireMedallionItemName3JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedFireMedallionItemName3JPNTex.ia4.inc.c"
+};
+
+u64 gUnusedIceMedallionItemName3JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedIceMedallionItemName3JPNTex.ia4.inc.c"
+};
+
+u64 gKokiriSwordItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gKokiriSwordItemNameFRATex.ia4.inc.c"
+};
+
+u64 gMasterSwordItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gMasterSwordItemNameFRATex.ia4.inc.c"
+};
+
+u64 gGiantsKnifeItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGiantsKnifeItemNameFRATex.ia4.inc.c"
+};
+
+u64 gDekuShieldItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gDekuShieldItemNameFRATex.ia4.inc.c"
+};
+
+u64 gHylianShieldItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gHylianShieldItemNameFRATex.ia4.inc.c"
+};
+
+u64 gMirrorShieldItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gMirrorShieldItemNameFRATex.ia4.inc.c"
+};
+
+u64 gKokiriTunicItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gKokiriTunicItemNameFRATex.ia4.inc.c"
+};
+
+u64 gGoronTunicItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGoronTunicItemNameFRATex.ia4.inc.c"
+};
+
+u64 gZoraTunicItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gZoraTunicItemNameFRATex.ia4.inc.c"
+};
+
+u64 gKokiriBootsItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gKokiriBootsItemNameFRATex.ia4.inc.c"
+};
+
+u64 gIronBootsItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gIronBootsItemNameFRATex.ia4.inc.c"
+};
+
+u64 gHoverBootsItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gHoverBootsItemNameFRATex.ia4.inc.c"
+};
+
+u64 gBulletBag30ItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBulletBag30ItemNameFRATex.ia4.inc.c"
+};
+
+u64 gBulletBag40ItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBulletBag40ItemNameFRATex.ia4.inc.c"
+};
+
+u64 gBulletBag50ItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBulletBag50ItemNameFRATex.ia4.inc.c"
+};
+
+u64 gQuiver30ItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gQuiver30ItemNameFRATex.ia4.inc.c"
+};
+
+u64 gQuiver40ItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gQuiver40ItemNameFRATex.ia4.inc.c"
+};
+
+u64 gQuiver50ItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gQuiver50ItemNameFRATex.ia4.inc.c"
+};
+
+u64 gBombBag20ItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBombBag20ItemNameFRATex.ia4.inc.c"
+};
+
+u64 gBombBag30ItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBombBag30ItemNameFRATex.ia4.inc.c"
+};
+
+u64 gBombBag40ItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBombBag40ItemNameFRATex.ia4.inc.c"
+};
+
+u64 gGoronsBraceletItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGoronsBraceletItemNameFRATex.ia4.inc.c"
+};
+
+u64 gSilverGauntletsItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSilverGauntletsItemNameFRATex.ia4.inc.c"
+};
+
+u64 gGoldenGauntletsItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGoldenGauntletsItemNameFRATex.ia4.inc.c"
+};
+
+u64 gSilverScaleItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSilverScaleItemNameFRATex.ia4.inc.c"
+};
+
+u64 gGoldenScaleItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGoldenScaleItemNameFRATex.ia4.inc.c"
+};
+
+u64 gBrokenGiantsKnifeItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBrokenGiantsKnifeItemNameFRATex.ia4.inc.c"
+};
+
+u64 gUnusedBossKeyItemName13JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedBossKeyItemName13JPNTex.ia4.inc.c"
+};
+
+u64 gUnusedBossKeyItemName23JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedBossKeyItemName23JPNTex.ia4.inc.c"
+};
+
+u64 gUnusedBossKeyItemName33JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedBossKeyItemName33JPNTex.ia4.inc.c"
+};
+
+u64 gUnusedBossKeyItemName43JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedBossKeyItemName43JPNTex.ia4.inc.c"
+};
+
+u64 gMinuetOfForestItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gMinuetOfForestItemNameFRATex.ia4.inc.c"
+};
+
+u64 gBoleroOfFireItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBoleroOfFireItemNameFRATex.ia4.inc.c"
+};
+
+u64 gSerenadeOfWaterItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSerenadeOfWaterItemNameFRATex.ia4.inc.c"
+};
+
+u64 gRequiemOfSpiritItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gRequiemOfSpiritItemNameFRATex.ia4.inc.c"
+};
+
+u64 gNocturneOfShadowItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gNocturneOfShadowItemNameFRATex.ia4.inc.c"
+};
+
+u64 gPreludeOfLightItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gPreludeOfLightItemNameFRATex.ia4.inc.c"
+};
+
+u64 gZeldasLullabyItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gZeldasLullabyItemNameFRATex.ia4.inc.c"
+};
+
+u64 gEponasSongItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gEponasSongItemNameFRATex.ia4.inc.c"
+};
+
+u64 gSariasSongItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSariasSongItemNameFRATex.ia4.inc.c"
+};
+
+u64 gSunsSongItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSunsSongItemNameFRATex.ia4.inc.c"
+};
+
+u64 gSongOfTimeItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSongOfTimeItemNameFRATex.ia4.inc.c"
+};
+
+u64 gSongOfStormsItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSongOfStormsItemNameFRATex.ia4.inc.c"
+};
+
+u64 gForestMedallionItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gForestMedallionItemNameFRATex.ia4.inc.c"
+};
+
+u64 gFireMedallionItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gFireMedallionItemNameFRATex.ia4.inc.c"
+};
+
+u64 gWaterMedallionItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gWaterMedallionItemNameFRATex.ia4.inc.c"
+};
+
+u64 gSpiritMedallionItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gSpiritMedallionItemNameFRATex.ia4.inc.c"
+};
+
+u64 gShadowMedallionItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gShadowMedallionItemNameFRATex.ia4.inc.c"
+};
+
+u64 gLightMedallionItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gLightMedallionItemNameFRATex.ia4.inc.c"
+};
+
+u64 gKokiriEmeraldItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gKokiriEmeraldItemNameFRATex.ia4.inc.c"
+};
+
+u64 gGoronsRubyItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGoronsRubyItemNameFRATex.ia4.inc.c"
+};
+
+u64 gZorasSapphireItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gZorasSapphireItemNameFRATex.ia4.inc.c"
+};
+
+u64 gStoneofAgonyItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gStoneofAgonyItemNameFRATex.ia4.inc.c"
+};
+
+u64 gGerudosCardItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGerudosCardItemNameFRATex.ia4.inc.c"
+};
+
+u64 gGoldSkulltulaItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gGoldSkulltulaItemNameFRATex.ia4.inc.c"
+};
+
+u64 gHeartContainerItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gHeartContainerItemNameFRATex.ia4.inc.c"
+};
+
+u64 gUnusedPieceOfHeartItemName3JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedPieceOfHeartItemName3JPNTex.ia4.inc.c"
+};
+
+u64 gBossKeyItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBossKeyItemNameFRATex.ia4.inc.c"
+};
+
+u64 gCompassItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gCompassItemNameFRATex.ia4.inc.c"
+};
+
+u64 gDungeonMapItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gDungeonMapItemNameFRATex.ia4.inc.c"
+};
+
+u64 gUnusedBossKeyItemName53JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedBossKeyItemName53JPNTex.ia4.inc.c"
+};
+
+u64 gUnusedBossKeyItemName63JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedBossKeyItemName63JPNTex.ia4.inc.c"
+};
+
+u64 gUnusedBossKeyItemName73JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gUnusedBossKeyItemName73JPNTex.ia4.inc.c"
+};
+
+u64 gBiggoronsSwordItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)] = {
+#include "assets/textures/item_name_static/gBiggoronsSwordItemNameFRATex.ia4.inc.c"
+};
+
+#endif
diff --git a/assets/textures/item_name_static/item_name_static.h b/assets/textures/item_name_static/item_name_static.h
new file mode 100644
index 000000000..7a4c6cf7b
--- /dev/null
+++ b/assets/textures/item_name_static/item_name_static.h
@@ -0,0 +1,513 @@
+#ifndef ITEM_NAME_STATIC_H
+#define ITEM_NAME_STATIC_H
+
+#include "ultra64.h"
+#include "tex_len.h"
+#include "versions.h"
+#include "z64item.h"
+
+#if OOT_NTSC
+
+extern u64 gDekuStickItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gDekuNutItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBombItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFairyBowItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFireArrowItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gDinsFireItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFairySlingshotItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFairyOcarinaItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gOcarinaOfTimeItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBombchuItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gHookshotItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gLongshotItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gIceArrowItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFaroresWindItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBoomerangItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gLensItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gMagicBeansItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gMegatonHammerItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gLightArrowItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gNayrusLoveItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gEmptyBottleItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gRedPotionItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGreenPotionItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBluePotionItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBottledFairyItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFishItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFullMilkItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gRutosLetterItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBlueFireItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBugItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBigPoeItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gHalfMilkItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gPoeItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gWeirdEggItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gCuccoItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gZeldasLetterItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gKeatonMaskItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSkullMaskItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSpookyMaskItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBunnyHoodItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGoronMaskItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gZoraMaskItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGerudoMaskItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gMaskofTruthItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSOLDOUTItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gPocketEggItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gPocketCuccoItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gCojiroItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gOddMushroomItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gOddPotionItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gPoachersSawItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBrokenGoronsSwordItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gPrescriptionItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gEyeBallFrogItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gEyeDropsItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gClaimCheckItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedWindMedallionItemName1JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedFireMedallionItemName1JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedIceMedallionItemName1JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gKokiriSwordItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gMasterSwordItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGiantsKnifeItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gDekuShieldItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gHylianShieldItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gMirrorShieldItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gKokiriTunicItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGoronTunicItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gZoraTunicItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gKokiriBootsItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gIronBootsItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gHoverBootsItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBulletBag30ItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBulletBag40ItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBulletBag50ItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gQuiver30ItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gQuiver40ItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gQuiver50ItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBombBag20ItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBombBag30ItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBombBag40ItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGoronsBraceletItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSilverGauntletsItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGoldenGauntletsItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSilverScaleItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGoldenScaleItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBrokenGiantsKnifeItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedBossKeyItemName1JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedBossKeyItemName2JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedBossKeyItemName3JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedBossKeyItemName4JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gMinuetOfForestItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBoleroOfFireItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSerenadeOfWaterItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gRequiemOfSpiritItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gNocturneOfShadowItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gPreludeOfLightItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gZeldasLullabyItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gEponasSongItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSariasSongItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSunsSongItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSongOfTimeItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSongOfStormsItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gForestMedallionItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFireMedallionItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gWaterMedallionItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSpiritMedallionItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gShadowMedallionItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gLightMedallionItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gKokiriEmeraldItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGoronsRubyItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gZorasSapphireItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gStoneofAgonyItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGerudosCardItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGoldSkulltulaItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gPieceOfHeartItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedPieceOfHeartItemName1JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedBigKeyItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gCompassItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gDungeonMapItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedBossKeyItemName5JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedBossKeyItemName6JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedBossKeyItemName7JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBiggoronsSwordItemNameJPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+
+#endif
+
+extern u64 gDekuStickItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gDekuNutItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBombItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFairyBowItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFireArrowItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gDinsFireItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFairySlingshotItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFairyOcarinaItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gOcarinaOfTimeItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBombchuItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gHookshotItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gLongshotItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gIceArrowItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFaroresWindItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBoomerangItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gLensItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gMagicBeansItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gMegatonHammerItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gLightArrowItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gNayrusLoveItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gEmptyBottleItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gRedPotionItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGreenPotionItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBluePotionItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBottledFairyItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFishItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFullMilkItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gRutosLetterItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBlueFireItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBugItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBigPoeItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gHalfMilkItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gPoeItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gWeirdEggItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gCuccoItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gZeldasLetterItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gKeatonMaskItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSkullMaskItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSpookyMaskItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBunnyHoodItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGoronMaskItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gZoraMaskItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGerudoMaskItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gMaskofTruthItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSOLDOUTItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gPocketEggItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gPocketCuccoItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gCojiroItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gOddMushroomItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gOddPotionItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gPoachersSawItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBrokenGoronsSwordItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gPrescriptionItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gEyeBallFrogItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gEyeDropsItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gClaimCheckItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedWindMedallionItemName1JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedFireMedallionItemName1JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedIceMedallionItemName1JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gKokiriSwordItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gMasterSwordItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGiantsKnifeItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gDekuShieldItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gHylianShieldItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gMirrorShieldItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gKokiriTunicItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGoronTunicItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gZoraTunicItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gKokiriBootsItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gIronBootsItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gHoverBootsItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBulletBag30ItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBulletBag40ItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBulletBag50ItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gQuiver30ItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gQuiver40ItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gQuiver50ItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBombBag20ItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBombBag30ItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBombBag40ItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGoronsBraceletItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSilverGauntletsItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGoldenGauntletsItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSilverScaleItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGoldenScaleItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBrokenGiantsKnifeItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedBossKeyItemName1JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedBossKeyItemName2JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedBossKeyItemName3JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedBossKeyItemName4JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gMinuetOfForestItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBoleroOfFireItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSerenadeOfWaterItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gRequiemOfSpiritItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gNocturneOfShadowItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gPreludeOfLightItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gZeldasLullabyItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gEponasSongItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSariasSongItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSunsSongItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSongOfTimeItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSongOfStormsItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gForestMedallionItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFireMedallionItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gWaterMedallionItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSpiritMedallionItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gShadowMedallionItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gLightMedallionItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gKokiriEmeraldItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGoronsRubyItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gZorasSapphireItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gStoneofAgonyItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGerudosCardItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGoldSkulltulaItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gPieceOfHeartItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedPieceOfHeartItemName1JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedBigKeyItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gCompassItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gDungeonMapItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedBossKeyItemName5JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedBossKeyItemName6JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedBossKeyItemName7JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBiggoronsSwordItemNameENGTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+
+#if OOT_PAL
+
+extern u64 gDekuStickItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gDekuNutItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBombItemNameItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFairyBowItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFireArrowItemNameUnk2GERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gDinsFireItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFairySlingshotItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFairyOcarinaItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gOcarinaOfTimeItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBombchuItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gHookshotItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gLongshotItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gIceArrowItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFaroresWindItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBoomerangItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gLensItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gMagicBeansItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gMegatonHammerItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gLightArrowItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gNayrusLoveItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gEmptyBottleItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gRedPotionItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGreenPotionItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBluePotionItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBottledFairyItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFishItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFullMilkItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gRutosLetterItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBlueFireItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBugItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBigPoeItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gHalfMilkItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gPoeItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gWeirdEggItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gCuccoItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gZeldasLetterItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gKeatonMaskItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSkullMaskItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSpookyMaskItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBunnyHoodItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGoronMaskItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gZoraMaskItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGerudoMaskItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gMaskofTruthItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSOLDOUTItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gPocketEggItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gPocketCuccoItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gCojiroItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gOddMushroomItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gOddPotionItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gPoachersSawItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBrokenGoronsSwordItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gPrescriptionItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gEyeBallFrogItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gEyeDropsItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gClaimCheckItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedWindMedallionItemName2JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedFireMedallionItemName2JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedIceMedallionItemName2JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gKokiriSwordItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gMasterSwordItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGiantsKnifeItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gDekuShieldItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gHylianShieldItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gMirrorShieldItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gKokiriTunicItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGoronTunicItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gZoraTunicItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gKokiriBootsItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gIronBootsItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gHoverBootsItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBulletBag30ItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBulletBag40ItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBulletBag50ItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gQuiver30ItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gQuiver40ItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gQuiver50ItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBombBag20ItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBombBag30ItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBombBag40ItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGoronsBraceletItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSilverGauntletsItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGoldenGauntletsItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSilverScaleItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGoldenScaleItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBrokenGiantsKnifeItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedBossKeyItemName8JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedBossKeyItemName9JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedBossKeyItemName10JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedBossKeyItemName11JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gMinuetOfForestItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBoleroOfFireItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSerenadeOfWaterItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gRequiemOfSpiritItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gNocturneOfShadowItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gPreludeOfLightItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gZeldasLullabyItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gEponasSongItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSariasSongItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSunsSongItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSongOfTimeItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSongOfStormsItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gForestMedallionItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFireMedallionItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gWaterMedallionItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSpiritMedallionItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gShadowMedallionItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gLightMedallionItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gKokiriEmeraldItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGoronsRubyItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gZorasSapphireItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gStoneofAgonyItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGerudosCardItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGoldSkulltulaItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gHeartContainerItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedPieceOfHeartItemName2JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBigKeyItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gCompassItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gDungeonMapItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedBossKeyItemName12JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedBossKeyItemName13JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedBossKeyItemName14JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBiggoronsSwordItemNameGERTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+
+extern u64 gDekuStickItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gDekuNutItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBombItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFairyBowItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFireArrowItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gDinsFireItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFairySlingshotItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFairyOcarinaItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gOcarinaOfTimeItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBombchuItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gHookshotItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gLongshotItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gIceArrowItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFaroresWindItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBoomerangItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gLensItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gMagicBeansItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gMegatonHammerItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gLightArrowItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gNayrusLoveItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gEmptyBottleItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gRedPotionItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGreenPotionItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBluePotionItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBottledFairyItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFishItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFullMilkItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gRutosLetterItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBlueFireItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBugItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBigPoeItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gHalfMilkItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gPoeItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gWeirdEggItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gCuccoItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gZeldasLetterItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gKeatonMaskItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSkullMaskItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSpookyMaskItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBunnyHoodItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGoronMaskItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gZoraMaskItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGerudoMaskItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gMaskofTruthItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSOLDOUTItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gPocketEggItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gPocketCuccoItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gCojiroItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gOddMushroomItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gOddPotionItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gPoachersSawItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBrokenGoronsSwordItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gPrescriptionItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gEyeBallFrogItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gEyeDropsItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gClaimCheckItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedWindMedallionItemName3JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedFireMedallionItemName3JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedIceMedallionItemName3JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gKokiriSwordItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gMasterSwordItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGiantsKnifeItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gDekuShieldItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gHylianShieldItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gMirrorShieldItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gKokiriTunicItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGoronTunicItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gZoraTunicItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gKokiriBootsItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gIronBootsItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gHoverBootsItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBulletBag30ItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBulletBag40ItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBulletBag50ItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gQuiver30ItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gQuiver40ItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gQuiver50ItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBombBag20ItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBombBag30ItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBombBag40ItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGoronsBraceletItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSilverGauntletsItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGoldenGauntletsItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSilverScaleItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGoldenScaleItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBrokenGiantsKnifeItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedBossKeyItemName15JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedBossKeyItemName16JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedBossKeyItemName17JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedBossKeyItemName18JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gMinuetOfForestItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBoleroOfFireItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSerenadeOfWaterItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gRequiemOfSpiritItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gNocturneOfShadowItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gPreludeOfLightItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gZeldasLullabyItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gEponasSongItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSariasSongItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSunsSongItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSongOfTimeItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSongOfStormsItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gForestMedallionItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gFireMedallionItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gWaterMedallionItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gSpiritMedallionItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gShadowMedallionItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gLightMedallionItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gKokiriEmeraldItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGoronsRubyItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gZorasSapphireItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gStoneofAgonyItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGerudosCardItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gGoldSkulltulaItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gHeartContainerItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedPieceOfHeartItemName3JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBossKeyItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gCompassItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gDungeonMapItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedBossKeyItemName19JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedBossKeyItemName20JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gUnusedBossKeyItemName21JPNTex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+extern u64 gBiggoronsSwordItemNameFRATex[TEX_LEN(u64, ITEM_NAME_TEX_WIDTH, ITEM_NAME_TEX_HEIGHT, 4)];
+
+#endif
+
+#endif
diff --git a/assets/xml/code/fbdemo_circle.xml b/assets/xml/code/fbdemo_circle.xml
index 530506369..618c74331 100644
--- a/assets/xml/code/fbdemo_circle.xml
+++ b/assets/xml/code/fbdemo_circle.xml
@@ -7,7 +7,6 @@
-
-
+
diff --git a/assets/xml/code/fbdemo_wipe1.xml b/assets/xml/code/fbdemo_wipe1.xml
index 74f129776..87f7e47b6 100644
--- a/assets/xml/code/fbdemo_wipe1.xml
+++ b/assets/xml/code/fbdemo_wipe1.xml
@@ -4,7 +4,6 @@
-
-
+
diff --git a/assets/xml/objects/gameplay_dangeon_keep.xml b/assets/xml/objects/gameplay_dangeon_keep.xml
index 2670b752d..4dcfa922b 100644
--- a/assets/xml/objects/gameplay_dangeon_keep.xml
+++ b/assets/xml/objects/gameplay_dangeon_keep.xml
@@ -1,36 +1,108 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -46,7 +118,13 @@
+
+
+
+
+
+
diff --git a/assets/xml/objects/gameplay_keep.xml b/assets/xml/objects/gameplay_keep.xml
index 008497601..2555cf68d 100644
--- a/assets/xml/objects/gameplay_keep.xml
+++ b/assets/xml/objects/gameplay_keep.xml
@@ -1,5 +1,5 @@
-
+
@@ -709,10 +709,10 @@
-
+
diff --git a/assets/xml/objects/gameplay_keep_pal.xml b/assets/xml/objects/gameplay_keep_pal.xml
index c7485d73f..90bf296c8 100644
--- a/assets/xml/objects/gameplay_keep_pal.xml
+++ b/assets/xml/objects/gameplay_keep_pal.xml
@@ -1,5 +1,5 @@
-
+
@@ -697,16 +697,16 @@
-
-
+
+
-
+
@@ -841,9 +841,9 @@
-
+
@@ -898,8 +898,8 @@
-
+
diff --git a/assets/xml/objects/object_Bb.xml b/assets/xml/objects/object_Bb.xml
index 5d04bde45..b65f7f6b6 100644
--- a/assets/xml/objects/object_Bb.xml
+++ b/assets/xml/objects/object_Bb.xml
@@ -3,6 +3,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_b_heart.xml b/assets/xml/objects/object_b_heart.xml
index 00f7cd677..dc4e7fa4c 100644
--- a/assets/xml/objects/object_b_heart.xml
+++ b/assets/xml/objects/object_b_heart.xml
@@ -1,5 +1,11 @@
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_bdoor.xml b/assets/xml/objects/object_bdoor.xml
index e926ae40b..e15f0f629 100644
--- a/assets/xml/objects/object_bdoor.xml
+++ b/assets/xml/objects/object_bdoor.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/assets/xml/objects/object_bigokuta.xml b/assets/xml/objects/object_bigokuta.xml
index 1c7d39e31..9c77261ca 100644
--- a/assets/xml/objects/object_bigokuta.xml
+++ b/assets/xml/objects/object_bigokuta.xml
@@ -5,6 +5,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_bombiwa.xml b/assets/xml/objects/object_bombiwa.xml
index 26ab6b4f3..0f3f5a7e4 100644
--- a/assets/xml/objects/object_bombiwa.xml
+++ b/assets/xml/objects/object_bombiwa.xml
@@ -2,6 +2,9 @@
+
+
+
diff --git a/assets/xml/objects/object_brob.xml b/assets/xml/objects/object_brob.xml
index bef5bbc55..ad8e61d3b 100644
--- a/assets/xml/objects/object_brob.xml
+++ b/assets/xml/objects/object_brob.xml
@@ -1,6 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_bwall.xml b/assets/xml/objects/object_bwall.xml
index d4f43ddc1..e0bdea1b4 100644
--- a/assets/xml/objects/object_bwall.xml
+++ b/assets/xml/objects/object_bwall.xml
@@ -1,5 +1,8 @@
+
+
+
diff --git a/assets/xml/objects/object_bxa.xml b/assets/xml/objects/object_bxa.xml
index fb78c117e..f1ad934e2 100644
--- a/assets/xml/objects/object_bxa.xml
+++ b/assets/xml/objects/object_bxa.xml
@@ -1,9 +1,18 @@
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_d_elevator.xml b/assets/xml/objects/object_d_elevator.xml
index 6be59c154..d2761b4f5 100644
--- a/assets/xml/objects/object_d_elevator.xml
+++ b/assets/xml/objects/object_d_elevator.xml
@@ -1,5 +1,8 @@
+
+
+
diff --git a/assets/xml/objects/object_d_lift.xml b/assets/xml/objects/object_d_lift.xml
index 291238519..8c226f30f 100644
--- a/assets/xml/objects/object_d_lift.xml
+++ b/assets/xml/objects/object_d_lift.xml
@@ -1,5 +1,8 @@
+
+
+
diff --git a/assets/xml/objects/object_daiku.xml b/assets/xml/objects/object_daiku.xml
index 1524c7a26..c2c538e1b 100644
--- a/assets/xml/objects/object_daiku.xml
+++ b/assets/xml/objects/object_daiku.xml
@@ -16,6 +16,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_dekujr.xml b/assets/xml/objects/object_dekujr.xml
index e906bf61c..7f4e70681 100644
--- a/assets/xml/objects/object_dekujr.xml
+++ b/assets/xml/objects/object_dekujr.xml
@@ -7,6 +7,12 @@
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_demo_6k.xml b/assets/xml/objects/object_demo_6k.xml
index 73058d5e4..9cb598a2e 100644
--- a/assets/xml/objects/object_demo_6k.xml
+++ b/assets/xml/objects/object_demo_6k.xml
@@ -1,8 +1,15 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_demo_kekkai.xml b/assets/xml/objects/object_demo_kekkai.xml
index 1b9c9b402..8b7b739c6 100644
--- a/assets/xml/objects/object_demo_kekkai.xml
+++ b/assets/xml/objects/object_demo_kekkai.xml
@@ -1,4 +1,5 @@
+
diff --git a/assets/xml/objects/object_dh.xml b/assets/xml/objects/object_dh.xml
index 7a52d7dbe..0e8d7fc7e 100644
--- a/assets/xml/objects/object_dh.xml
+++ b/assets/xml/objects/object_dh.xml
@@ -1,5 +1,14 @@
+
+
+
+
+
+
+
+
+
@@ -22,6 +31,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -52,6 +103,9 @@
+
+
+
diff --git a/assets/xml/objects/object_dodojr.xml b/assets/xml/objects/object_dodojr.xml
index 4dfd7d6e4..1938fc574 100644
--- a/assets/xml/objects/object_dodojr.xml
+++ b/assets/xml/objects/object_dodojr.xml
@@ -5,6 +5,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_dog.xml b/assets/xml/objects/object_dog.xml
index ef00442b6..7b3298244 100644
--- a/assets/xml/objects/object_dog.xml
+++ b/assets/xml/objects/object_dog.xml
@@ -14,6 +14,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_door_killer.xml b/assets/xml/objects/object_door_killer.xml
index fbee0e5f7..7f8d8f186 100644
--- a/assets/xml/objects/object_door_killer.xml
+++ b/assets/xml/objects/object_door_killer.xml
@@ -1,5 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -8,9 +32,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_ds2.xml b/assets/xml/objects/object_ds2.xml
index 683bcc68d..9c61ea4d2 100644
--- a/assets/xml/objects/object_ds2.xml
+++ b/assets/xml/objects/object_ds2.xml
@@ -1,6 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_efc_crystal_light.xml b/assets/xml/objects/object_efc_crystal_light.xml
index 9215b6a39..6ff4a830e 100644
--- a/assets/xml/objects/object_efc_crystal_light.xml
+++ b/assets/xml/objects/object_efc_crystal_light.xml
@@ -1,6 +1,9 @@
+
+
+
diff --git a/assets/xml/objects/object_efc_erupc.xml b/assets/xml/objects/object_efc_erupc.xml
index 800d9535f..14d28438b 100644
--- a/assets/xml/objects/object_efc_erupc.xml
+++ b/assets/xml/objects/object_efc_erupc.xml
@@ -1,10 +1,20 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_efc_fire_ball.xml b/assets/xml/objects/object_efc_fire_ball.xml
index 2fc65b16f..645a95f4c 100644
--- a/assets/xml/objects/object_efc_fire_ball.xml
+++ b/assets/xml/objects/object_efc_fire_ball.xml
@@ -1,5 +1,8 @@
+
+
+
diff --git a/assets/xml/objects/object_efc_lgt_shower.xml b/assets/xml/objects/object_efc_lgt_shower.xml
index 67ef5ce7e..c4e54e774 100644
--- a/assets/xml/objects/object_efc_lgt_shower.xml
+++ b/assets/xml/objects/object_efc_lgt_shower.xml
@@ -1,6 +1,9 @@
+
+
+
diff --git a/assets/xml/objects/object_efc_star_field.xml b/assets/xml/objects/object_efc_star_field.xml
index 00b47c460..66782689c 100644
--- a/assets/xml/objects/object_efc_star_field.xml
+++ b/assets/xml/objects/object_efc_star_field.xml
@@ -1,7 +1,13 @@
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_fa.xml b/assets/xml/objects/object_fa.xml
index 2f1bf9a5e..5b802e67a 100644
--- a/assets/xml/objects/object_fa.xml
+++ b/assets/xml/objects/object_fa.xml
@@ -10,6 +10,9 @@
+
+
+
diff --git a/assets/xml/objects/object_fire.xml b/assets/xml/objects/object_fire.xml
index 49bf620cb..aef28a61a 100644
--- a/assets/xml/objects/object_fire.xml
+++ b/assets/xml/objects/object_fire.xml
@@ -1,5 +1,8 @@
+
+
+
diff --git a/assets/xml/objects/object_fish.xml b/assets/xml/objects/object_fish.xml
index f5ad4f6da..2ce27bac3 100644
--- a/assets/xml/objects/object_fish.xml
+++ b/assets/xml/objects/object_fish.xml
@@ -1,4 +1,5 @@
+
diff --git a/assets/xml/objects/object_fr.xml b/assets/xml/objects/object_fr.xml
index 25ee2ad42..19675d84f 100644
--- a/assets/xml/objects/object_fr.xml
+++ b/assets/xml/objects/object_fr.xml
@@ -15,6 +15,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_fz.xml b/assets/xml/objects/object_fz.xml
index dad6fec5c..bbed88b10 100644
--- a/assets/xml/objects/object_fz.xml
+++ b/assets/xml/objects/object_fz.xml
@@ -1,4 +1,5 @@
+
diff --git a/assets/xml/objects/object_ganon_objects.xml b/assets/xml/objects/object_ganon_objects.xml
index 5e32610ff..dc2cfdb40 100644
--- a/assets/xml/objects/object_ganon_objects.xml
+++ b/assets/xml/objects/object_ganon_objects.xml
@@ -1,5 +1,8 @@
+
+
+
diff --git a/assets/xml/objects/object_geff.xml b/assets/xml/objects/object_geff.xml
index f0667743b..6a42a89a5 100644
--- a/assets/xml/objects/object_geff.xml
+++ b/assets/xml/objects/object_geff.xml
@@ -2,6 +2,9 @@
+
+
+
diff --git a/assets/xml/objects/object_gi_arrow.xml b/assets/xml/objects/object_gi_arrow.xml
index 4b58787a9..e04135100 100644
--- a/assets/xml/objects/object_gi_arrow.xml
+++ b/assets/xml/objects/object_gi_arrow.xml
@@ -1,7 +1,17 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_arrowcase.xml b/assets/xml/objects/object_gi_arrowcase.xml
index 267b0a734..7939423ba 100644
--- a/assets/xml/objects/object_gi_arrowcase.xml
+++ b/assets/xml/objects/object_gi_arrowcase.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_bean.xml b/assets/xml/objects/object_gi_bean.xml
index e74247816..6a2f1e7a7 100644
--- a/assets/xml/objects/object_gi_bean.xml
+++ b/assets/xml/objects/object_gi_bean.xml
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/assets/xml/objects/object_gi_bomb_1.xml b/assets/xml/objects/object_gi_bomb_1.xml
index bae86c11d..396d09f5d 100644
--- a/assets/xml/objects/object_gi_bomb_1.xml
+++ b/assets/xml/objects/object_gi_bomb_1.xml
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/assets/xml/objects/object_gi_bomb_2.xml b/assets/xml/objects/object_gi_bomb_2.xml
index 1400c4a4d..78df12996 100644
--- a/assets/xml/objects/object_gi_bomb_2.xml
+++ b/assets/xml/objects/object_gi_bomb_2.xml
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/assets/xml/objects/object_gi_bombpouch.xml b/assets/xml/objects/object_gi_bombpouch.xml
index 07134748c..710981645 100644
--- a/assets/xml/objects/object_gi_bombpouch.xml
+++ b/assets/xml/objects/object_gi_bombpouch.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_boomerang.xml b/assets/xml/objects/object_gi_boomerang.xml
index 3c1a0fe7f..bf20bb342 100644
--- a/assets/xml/objects/object_gi_boomerang.xml
+++ b/assets/xml/objects/object_gi_boomerang.xml
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/assets/xml/objects/object_gi_boots_2.xml b/assets/xml/objects/object_gi_boots_2.xml
index 8e9cd1028..026e9a482 100644
--- a/assets/xml/objects/object_gi_boots_2.xml
+++ b/assets/xml/objects/object_gi_boots_2.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_bosskey.xml b/assets/xml/objects/object_gi_bosskey.xml
index e5e4bc86c..cd5ae9209 100644
--- a/assets/xml/objects/object_gi_bosskey.xml
+++ b/assets/xml/objects/object_gi_bosskey.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_bottle.xml b/assets/xml/objects/object_gi_bottle.xml
index 3b0884a03..22bece4f0 100644
--- a/assets/xml/objects/object_gi_bottle.xml
+++ b/assets/xml/objects/object_gi_bottle.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_bottle_letter.xml b/assets/xml/objects/object_gi_bottle_letter.xml
index 443219caf..209d053f8 100644
--- a/assets/xml/objects/object_gi_bottle_letter.xml
+++ b/assets/xml/objects/object_gi_bottle_letter.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_bow.xml b/assets/xml/objects/object_gi_bow.xml
index 946e9c496..ebf7a9555 100644
--- a/assets/xml/objects/object_gi_bow.xml
+++ b/assets/xml/objects/object_gi_bow.xml
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/assets/xml/objects/object_gi_bracelet.xml b/assets/xml/objects/object_gi_bracelet.xml
index 5a0b62a60..c0d9c7f85 100644
--- a/assets/xml/objects/object_gi_bracelet.xml
+++ b/assets/xml/objects/object_gi_bracelet.xml
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/assets/xml/objects/object_gi_brokensword.xml b/assets/xml/objects/object_gi_brokensword.xml
index 408741ac5..e99b487a8 100644
--- a/assets/xml/objects/object_gi_brokensword.xml
+++ b/assets/xml/objects/object_gi_brokensword.xml
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/assets/xml/objects/object_gi_butterfly.xml b/assets/xml/objects/object_gi_butterfly.xml
index 76ac70609..23487544e 100644
--- a/assets/xml/objects/object_gi_butterfly.xml
+++ b/assets/xml/objects/object_gi_butterfly.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_clothes.xml b/assets/xml/objects/object_gi_clothes.xml
index 2a10dce11..32550cfc8 100644
--- a/assets/xml/objects/object_gi_clothes.xml
+++ b/assets/xml/objects/object_gi_clothes.xml
@@ -1,5 +1,11 @@
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_coin.xml b/assets/xml/objects/object_gi_coin.xml
index 22e29f255..e69e1dcd9 100644
--- a/assets/xml/objects/object_gi_coin.xml
+++ b/assets/xml/objects/object_gi_coin.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_compass.xml b/assets/xml/objects/object_gi_compass.xml
index 076229b11..748597c65 100644
--- a/assets/xml/objects/object_gi_compass.xml
+++ b/assets/xml/objects/object_gi_compass.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_dekupouch.xml b/assets/xml/objects/object_gi_dekupouch.xml
index 3d6d95d98..f51d885c0 100644
--- a/assets/xml/objects/object_gi_dekupouch.xml
+++ b/assets/xml/objects/object_gi_dekupouch.xml
@@ -1,5 +1,15 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_egg.xml b/assets/xml/objects/object_gi_egg.xml
index 2b2e2847d..967b128a4 100644
--- a/assets/xml/objects/object_gi_egg.xml
+++ b/assets/xml/objects/object_gi_egg.xml
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/assets/xml/objects/object_gi_eye_lotion.xml b/assets/xml/objects/object_gi_eye_lotion.xml
index 5128c5f6f..46cadb117 100644
--- a/assets/xml/objects/object_gi_eye_lotion.xml
+++ b/assets/xml/objects/object_gi_eye_lotion.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_fire.xml b/assets/xml/objects/object_gi_fire.xml
index a57fba6e8..ddeafaaf4 100644
--- a/assets/xml/objects/object_gi_fire.xml
+++ b/assets/xml/objects/object_gi_fire.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_fish.xml b/assets/xml/objects/object_gi_fish.xml
index edb39dc29..e5def6ebb 100644
--- a/assets/xml/objects/object_gi_fish.xml
+++ b/assets/xml/objects/object_gi_fish.xml
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/assets/xml/objects/object_gi_frog.xml b/assets/xml/objects/object_gi_frog.xml
index f180fd267..503f08c41 100644
--- a/assets/xml/objects/object_gi_frog.xml
+++ b/assets/xml/objects/object_gi_frog.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_gerudo.xml b/assets/xml/objects/object_gi_gerudo.xml
index 3be8d3462..ac80cdd2f 100644
--- a/assets/xml/objects/object_gi_gerudo.xml
+++ b/assets/xml/objects/object_gi_gerudo.xml
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/assets/xml/objects/object_gi_gerudomask.xml b/assets/xml/objects/object_gi_gerudomask.xml
index b53bf24af..3b42e2ee2 100644
--- a/assets/xml/objects/object_gi_gerudomask.xml
+++ b/assets/xml/objects/object_gi_gerudomask.xml
@@ -1,5 +1,8 @@
+
+
+
diff --git a/assets/xml/objects/object_gi_ghost.xml b/assets/xml/objects/object_gi_ghost.xml
index 186f4c74b..30a0edf1e 100644
--- a/assets/xml/objects/object_gi_ghost.xml
+++ b/assets/xml/objects/object_gi_ghost.xml
@@ -1,5 +1,15 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_glasses.xml b/assets/xml/objects/object_gi_glasses.xml
index 63d32ab5a..f6cb98184 100644
--- a/assets/xml/objects/object_gi_glasses.xml
+++ b/assets/xml/objects/object_gi_glasses.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_gloves.xml b/assets/xml/objects/object_gi_gloves.xml
index 1b4282dca..09976d11e 100644
--- a/assets/xml/objects/object_gi_gloves.xml
+++ b/assets/xml/objects/object_gi_gloves.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_goddess.xml b/assets/xml/objects/object_gi_goddess.xml
index 50cbdd891..cd693a5f4 100644
--- a/assets/xml/objects/object_gi_goddess.xml
+++ b/assets/xml/objects/object_gi_goddess.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_golonmask.xml b/assets/xml/objects/object_gi_golonmask.xml
index 98f53f1c2..ac8d86669 100644
--- a/assets/xml/objects/object_gi_golonmask.xml
+++ b/assets/xml/objects/object_gi_golonmask.xml
@@ -1,5 +1,8 @@
+
+
+
diff --git a/assets/xml/objects/object_gi_grass.xml b/assets/xml/objects/object_gi_grass.xml
index ae7834201..9ee748272 100644
--- a/assets/xml/objects/object_gi_grass.xml
+++ b/assets/xml/objects/object_gi_grass.xml
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/assets/xml/objects/object_gi_hammer.xml b/assets/xml/objects/object_gi_hammer.xml
index feb5c8659..70f0a17c2 100644
--- a/assets/xml/objects/object_gi_hammer.xml
+++ b/assets/xml/objects/object_gi_hammer.xml
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/assets/xml/objects/object_gi_heart.xml b/assets/xml/objects/object_gi_heart.xml
index 48e78b1b5..0a8dfee2b 100644
--- a/assets/xml/objects/object_gi_heart.xml
+++ b/assets/xml/objects/object_gi_heart.xml
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/assets/xml/objects/object_gi_hearts.xml b/assets/xml/objects/object_gi_hearts.xml
index d2e763e63..aaa87d00f 100644
--- a/assets/xml/objects/object_gi_hearts.xml
+++ b/assets/xml/objects/object_gi_hearts.xml
@@ -1,5 +1,15 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_hookshot.xml b/assets/xml/objects/object_gi_hookshot.xml
index a6b3b0fda..1d43f927e 100644
--- a/assets/xml/objects/object_gi_hookshot.xml
+++ b/assets/xml/objects/object_gi_hookshot.xml
@@ -1,6 +1,13 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_hoverboots.xml b/assets/xml/objects/object_gi_hoverboots.xml
index c4a67877b..5b3bf0c80 100644
--- a/assets/xml/objects/object_gi_hoverboots.xml
+++ b/assets/xml/objects/object_gi_hoverboots.xml
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/assets/xml/objects/object_gi_insect.xml b/assets/xml/objects/object_gi_insect.xml
index 7af5b5b3b..8eb59b9c1 100644
--- a/assets/xml/objects/object_gi_insect.xml
+++ b/assets/xml/objects/object_gi_insect.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_jewel.xml b/assets/xml/objects/object_gi_jewel.xml
index e83c65116..012fc8351 100644
--- a/assets/xml/objects/object_gi_jewel.xml
+++ b/assets/xml/objects/object_gi_jewel.xml
@@ -1,14 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_key.xml b/assets/xml/objects/object_gi_key.xml
index a37d45a71..874cd6e69 100644
--- a/assets/xml/objects/object_gi_key.xml
+++ b/assets/xml/objects/object_gi_key.xml
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/assets/xml/objects/object_gi_ki_tan_mask.xml b/assets/xml/objects/object_gi_ki_tan_mask.xml
index f66535af3..ad6763bb9 100644
--- a/assets/xml/objects/object_gi_ki_tan_mask.xml
+++ b/assets/xml/objects/object_gi_ki_tan_mask.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_letter.xml b/assets/xml/objects/object_gi_letter.xml
index 167a7ff5d..d6acdf820 100644
--- a/assets/xml/objects/object_gi_letter.xml
+++ b/assets/xml/objects/object_gi_letter.xml
@@ -1,5 +1,11 @@
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_liquid.xml b/assets/xml/objects/object_gi_liquid.xml
index 5eeeca0fd..27ef25b0b 100644
--- a/assets/xml/objects/object_gi_liquid.xml
+++ b/assets/xml/objects/object_gi_liquid.xml
@@ -1,5 +1,15 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_longsword.xml b/assets/xml/objects/object_gi_longsword.xml
index 7161e42e3..dc7773c69 100644
--- a/assets/xml/objects/object_gi_longsword.xml
+++ b/assets/xml/objects/object_gi_longsword.xml
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/assets/xml/objects/object_gi_m_arrow.xml b/assets/xml/objects/object_gi_m_arrow.xml
index 0fd659ae9..a9a6cb7f3 100644
--- a/assets/xml/objects/object_gi_m_arrow.xml
+++ b/assets/xml/objects/object_gi_m_arrow.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_magicpot.xml b/assets/xml/objects/object_gi_magicpot.xml
index 7623e6353..3dc92c16a 100644
--- a/assets/xml/objects/object_gi_magicpot.xml
+++ b/assets/xml/objects/object_gi_magicpot.xml
@@ -1,6 +1,13 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_map.xml b/assets/xml/objects/object_gi_map.xml
index 8887dd22c..b88e6de85 100644
--- a/assets/xml/objects/object_gi_map.xml
+++ b/assets/xml/objects/object_gi_map.xml
@@ -1,6 +1,13 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_medal.xml b/assets/xml/objects/object_gi_medal.xml
index d2cb6191d..7fafeb5d5 100644
--- a/assets/xml/objects/object_gi_medal.xml
+++ b/assets/xml/objects/object_gi_medal.xml
@@ -1,23 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_melody.xml b/assets/xml/objects/object_gi_melody.xml
index b01fca953..31dc495bd 100644
--- a/assets/xml/objects/object_gi_melody.xml
+++ b/assets/xml/objects/object_gi_melody.xml
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/assets/xml/objects/object_gi_milk.xml b/assets/xml/objects/object_gi_milk.xml
index 00b9530d9..a1904f7f1 100644
--- a/assets/xml/objects/object_gi_milk.xml
+++ b/assets/xml/objects/object_gi_milk.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_mushroom.xml b/assets/xml/objects/object_gi_mushroom.xml
index 5b19bca74..0933f2158 100644
--- a/assets/xml/objects/object_gi_mushroom.xml
+++ b/assets/xml/objects/object_gi_mushroom.xml
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/assets/xml/objects/object_gi_niwatori.xml b/assets/xml/objects/object_gi_niwatori.xml
index 713cc1ce5..9bea0dbba 100644
--- a/assets/xml/objects/object_gi_niwatori.xml
+++ b/assets/xml/objects/object_gi_niwatori.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_nuts.xml b/assets/xml/objects/object_gi_nuts.xml
index 5508fe856..590c78d7d 100644
--- a/assets/xml/objects/object_gi_nuts.xml
+++ b/assets/xml/objects/object_gi_nuts.xml
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/assets/xml/objects/object_gi_ocarina.xml b/assets/xml/objects/object_gi_ocarina.xml
index 7693cc122..4e85cc04e 100644
--- a/assets/xml/objects/object_gi_ocarina.xml
+++ b/assets/xml/objects/object_gi_ocarina.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_ocarina_0.xml b/assets/xml/objects/object_gi_ocarina_0.xml
index 336d33894..7ec13c466 100644
--- a/assets/xml/objects/object_gi_ocarina_0.xml
+++ b/assets/xml/objects/object_gi_ocarina_0.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_pachinko.xml b/assets/xml/objects/object_gi_pachinko.xml
index 5f808baf9..bc8872d68 100644
--- a/assets/xml/objects/object_gi_pachinko.xml
+++ b/assets/xml/objects/object_gi_pachinko.xml
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/assets/xml/objects/object_gi_powder.xml b/assets/xml/objects/object_gi_powder.xml
index fb7dc0155..b49593cb1 100644
--- a/assets/xml/objects/object_gi_powder.xml
+++ b/assets/xml/objects/object_gi_powder.xml
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/assets/xml/objects/object_gi_prescription.xml b/assets/xml/objects/object_gi_prescription.xml
index 081de301c..619252faf 100644
--- a/assets/xml/objects/object_gi_prescription.xml
+++ b/assets/xml/objects/object_gi_prescription.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_purse.xml b/assets/xml/objects/object_gi_purse.xml
index 3034942ff..c896b47de 100644
--- a/assets/xml/objects/object_gi_purse.xml
+++ b/assets/xml/objects/object_gi_purse.xml
@@ -1,5 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_rabit_mask.xml b/assets/xml/objects/object_gi_rabit_mask.xml
index 75f855550..64e82b888 100644
--- a/assets/xml/objects/object_gi_rabit_mask.xml
+++ b/assets/xml/objects/object_gi_rabit_mask.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_redead_mask.xml b/assets/xml/objects/object_gi_redead_mask.xml
index 7de08487f..2168b23e9 100644
--- a/assets/xml/objects/object_gi_redead_mask.xml
+++ b/assets/xml/objects/object_gi_redead_mask.xml
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/assets/xml/objects/object_gi_rupy.xml b/assets/xml/objects/object_gi_rupy.xml
index 0a1af96d0..0305ae68b 100644
--- a/assets/xml/objects/object_gi_rupy.xml
+++ b/assets/xml/objects/object_gi_rupy.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_saw.xml b/assets/xml/objects/object_gi_saw.xml
index dcc038b7c..3fb4cb8d3 100644
--- a/assets/xml/objects/object_gi_saw.xml
+++ b/assets/xml/objects/object_gi_saw.xml
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/assets/xml/objects/object_gi_scale.xml b/assets/xml/objects/object_gi_scale.xml
index 1cf5de5b9..dd9200dc9 100644
--- a/assets/xml/objects/object_gi_scale.xml
+++ b/assets/xml/objects/object_gi_scale.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_seed.xml b/assets/xml/objects/object_gi_seed.xml
index 82c15c82d..88c224f24 100644
--- a/assets/xml/objects/object_gi_seed.xml
+++ b/assets/xml/objects/object_gi_seed.xml
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/assets/xml/objects/object_gi_shield_1.xml b/assets/xml/objects/object_gi_shield_1.xml
index 2e9369569..5fa12c7cc 100644
--- a/assets/xml/objects/object_gi_shield_1.xml
+++ b/assets/xml/objects/object_gi_shield_1.xml
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/assets/xml/objects/object_gi_shield_2.xml b/assets/xml/objects/object_gi_shield_2.xml
index 176ae025f..6c1f983b1 100644
--- a/assets/xml/objects/object_gi_shield_2.xml
+++ b/assets/xml/objects/object_gi_shield_2.xml
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/assets/xml/objects/object_gi_shield_3.xml b/assets/xml/objects/object_gi_shield_3.xml
index 250bf7fea..2ff34c2f2 100644
--- a/assets/xml/objects/object_gi_shield_3.xml
+++ b/assets/xml/objects/object_gi_shield_3.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_skj_mask.xml b/assets/xml/objects/object_gi_skj_mask.xml
index e6c90f76f..7405e6622 100644
--- a/assets/xml/objects/object_gi_skj_mask.xml
+++ b/assets/xml/objects/object_gi_skj_mask.xml
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/assets/xml/objects/object_gi_soldout.xml b/assets/xml/objects/object_gi_soldout.xml
index ae3f4685f..517750ee9 100644
--- a/assets/xml/objects/object_gi_soldout.xml
+++ b/assets/xml/objects/object_gi_soldout.xml
@@ -1,5 +1,8 @@
+
+
+
diff --git a/assets/xml/objects/object_gi_soul.xml b/assets/xml/objects/object_gi_soul.xml
index 76ffc5685..1487b5704 100644
--- a/assets/xml/objects/object_gi_soul.xml
+++ b/assets/xml/objects/object_gi_soul.xml
@@ -1,5 +1,15 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_stick.xml b/assets/xml/objects/object_gi_stick.xml
index fed89f465..3da363f7c 100644
--- a/assets/xml/objects/object_gi_stick.xml
+++ b/assets/xml/objects/object_gi_stick.xml
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/assets/xml/objects/object_gi_sutaru.xml b/assets/xml/objects/object_gi_sutaru.xml
index a2606afbe..5217cf300 100644
--- a/assets/xml/objects/object_gi_sutaru.xml
+++ b/assets/xml/objects/object_gi_sutaru.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_sword_1.xml b/assets/xml/objects/object_gi_sword_1.xml
index e1119abca..fcf855022 100644
--- a/assets/xml/objects/object_gi_sword_1.xml
+++ b/assets/xml/objects/object_gi_sword_1.xml
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/assets/xml/objects/object_gi_ticketstone.xml b/assets/xml/objects/object_gi_ticketstone.xml
index 0fa37fe11..cebc99a75 100644
--- a/assets/xml/objects/object_gi_ticketstone.xml
+++ b/assets/xml/objects/object_gi_ticketstone.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_truth_mask.xml b/assets/xml/objects/object_gi_truth_mask.xml
index f28c7cbca..fbeab76d3 100644
--- a/assets/xml/objects/object_gi_truth_mask.xml
+++ b/assets/xml/objects/object_gi_truth_mask.xml
@@ -1,5 +1,12 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gi_zoramask.xml b/assets/xml/objects/object_gi_zoramask.xml
index 096fdeedf..06bca2737 100644
--- a/assets/xml/objects/object_gi_zoramask.xml
+++ b/assets/xml/objects/object_gi_zoramask.xml
@@ -1,5 +1,8 @@
+
+
+
diff --git a/assets/xml/objects/object_gnd_magic.xml b/assets/xml/objects/object_gnd_magic.xml
index a88d419d7..f8bc83dcd 100644
--- a/assets/xml/objects/object_gnd_magic.xml
+++ b/assets/xml/objects/object_gnd_magic.xml
@@ -2,6 +2,9 @@
+
+
+
diff --git a/assets/xml/objects/object_god_lgt.xml b/assets/xml/objects/object_god_lgt.xml
index 60df9e469..d8f1e9227 100644
--- a/assets/xml/objects/object_god_lgt.xml
+++ b/assets/xml/objects/object_god_lgt.xml
@@ -1,9 +1,16 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_gs.xml b/assets/xml/objects/object_gs.xml
index 145be1665..de69d2571 100644
--- a/assets/xml/objects/object_gs.xml
+++ b/assets/xml/objects/object_gs.xml
@@ -1,6 +1,9 @@
+
+
+
diff --git a/assets/xml/objects/object_haka_objects.xml b/assets/xml/objects/object_haka_objects.xml
index 3ca6d27c0..e0961ec59 100644
--- a/assets/xml/objects/object_haka_objects.xml
+++ b/assets/xml/objects/object_haka_objects.xml
@@ -1,55 +1,148 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_hs.xml b/assets/xml/objects/object_hs.xml
index cf5d06e1a..3a3dfb46f 100644
--- a/assets/xml/objects/object_hs.xml
+++ b/assets/xml/objects/object_hs.xml
@@ -3,6 +3,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_ingate.xml b/assets/xml/objects/object_ingate.xml
index e6be42beb..e68c2d091 100644
--- a/assets/xml/objects/object_ingate.xml
+++ b/assets/xml/objects/object_ingate.xml
@@ -1,6 +1,9 @@
+
+
+
diff --git a/assets/xml/objects/object_jya_door.xml b/assets/xml/objects/object_jya_door.xml
index 60a7b3788..25d15dd5d 100644
--- a/assets/xml/objects/object_jya_door.xml
+++ b/assets/xml/objects/object_jya_door.xml
@@ -1,6 +1,12 @@
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_ka.xml b/assets/xml/objects/object_ka.xml
index eb952732b..9c7ae1317 100644
--- a/assets/xml/objects/object_ka.xml
+++ b/assets/xml/objects/object_ka.xml
@@ -1,6 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_kanban.xml b/assets/xml/objects/object_kanban.xml
index 9ffc7a2ce..f85916447 100644
--- a/assets/xml/objects/object_kanban.xml
+++ b/assets/xml/objects/object_kanban.xml
@@ -1,5 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -12,6 +46,9 @@
+
+
+
diff --git a/assets/xml/objects/object_kingdodongo_pal.xml b/assets/xml/objects/object_kingdodongo_pal.xml
index a0790a6db..e32358420 100644
--- a/assets/xml/objects/object_kingdodongo_pal.xml
+++ b/assets/xml/objects/object_kingdodongo_pal.xml
@@ -10,6 +10,9 @@
+
+
+
@@ -17,25 +20,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -102,6 +165,9 @@
+
+
+
@@ -111,8 +177,17 @@
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_kusa.xml b/assets/xml/objects/object_kusa.xml
index 67291a554..b6bb8fcd0 100644
--- a/assets/xml/objects/object_kusa.xml
+++ b/assets/xml/objects/object_kusa.xml
@@ -1,6 +1,13 @@
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_kz.xml b/assets/xml/objects/object_kz.xml
index 1077c824c..8c744985b 100644
--- a/assets/xml/objects/object_kz.xml
+++ b/assets/xml/objects/object_kz.xml
@@ -18,6 +18,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_light_ring.xml b/assets/xml/objects/object_light_ring.xml
index babe7d2aa..877aa3408 100644
--- a/assets/xml/objects/object_light_ring.xml
+++ b/assets/xml/objects/object_light_ring.xml
@@ -1,5 +1,8 @@
+
+
+
diff --git a/assets/xml/objects/object_lightbox.xml b/assets/xml/objects/object_lightbox.xml
index c67059b89..47fd57dfb 100644
--- a/assets/xml/objects/object_lightbox.xml
+++ b/assets/xml/objects/object_lightbox.xml
@@ -1,12 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_lightswitch.xml b/assets/xml/objects/object_lightswitch.xml
index cfd5dcfb4..9caeb59b1 100644
--- a/assets/xml/objects/object_lightswitch.xml
+++ b/assets/xml/objects/object_lightswitch.xml
@@ -1,6 +1,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_link_boy.xml b/assets/xml/objects/object_link_boy.xml
index 77254f555..b51e779cc 100644
--- a/assets/xml/objects/object_link_boy.xml
+++ b/assets/xml/objects/object_link_boy.xml
@@ -1,136 +1,350 @@
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -161,25 +375,73 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -199,25 +461,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -232,8 +527,8 @@
-
-
+
+
diff --git a/assets/xml/objects/object_link_child.xml b/assets/xml/objects/object_link_child.xml
index 36baf5aa6..9e1c1e573 100644
--- a/assets/xml/objects/object_link_child.xml
+++ b/assets/xml/objects/object_link_child.xml
@@ -1,122 +1,371 @@
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -181,6 +430,7 @@
+
diff --git a/assets/xml/objects/object_medal.xml b/assets/xml/objects/object_medal.xml
index eeb433c40..2ab2e87fa 100644
--- a/assets/xml/objects/object_medal.xml
+++ b/assets/xml/objects/object_medal.xml
@@ -1,10 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_mjin.xml b/assets/xml/objects/object_mjin.xml
index daf9b0541..278495677 100644
--- a/assets/xml/objects/object_mjin.xml
+++ b/assets/xml/objects/object_mjin.xml
@@ -1,5 +1,8 @@
+
+
+
diff --git a/assets/xml/objects/object_mjin_oka.xml b/assets/xml/objects/object_mjin_oka.xml
index 0f823b923..8da3481c7 100644
--- a/assets/xml/objects/object_mjin_oka.xml
+++ b/assets/xml/objects/object_mjin_oka.xml
@@ -1,5 +1,8 @@
+
+
+
diff --git a/assets/xml/objects/object_mk.xml b/assets/xml/objects/object_mk.xml
index 0b4aaae8a..8ae1bd395 100644
--- a/assets/xml/objects/object_mk.xml
+++ b/assets/xml/objects/object_mk.xml
@@ -4,6 +4,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_mori_hineri1.xml b/assets/xml/objects/object_mori_hineri1.xml
index a2033a6f9..d99fa0759 100644
--- a/assets/xml/objects/object_mori_hineri1.xml
+++ b/assets/xml/objects/object_mori_hineri1.xml
@@ -1,6 +1,9 @@
-
+
+
+
+
diff --git a/assets/xml/objects/object_mori_hineri1a.xml b/assets/xml/objects/object_mori_hineri1a.xml
index d7e348904..941c53fc4 100644
--- a/assets/xml/objects/object_mori_hineri1a.xml
+++ b/assets/xml/objects/object_mori_hineri1a.xml
@@ -1,6 +1,9 @@
-
+
+
+
+
diff --git a/assets/xml/objects/object_mori_hineri2.xml b/assets/xml/objects/object_mori_hineri2.xml
index 9f1c892af..8f44a82af 100644
--- a/assets/xml/objects/object_mori_hineri2.xml
+++ b/assets/xml/objects/object_mori_hineri2.xml
@@ -1,6 +1,9 @@
-
+
+
+
+
diff --git a/assets/xml/objects/object_mori_hineri2a.xml b/assets/xml/objects/object_mori_hineri2a.xml
index 6fd681856..52dd3a091 100644
--- a/assets/xml/objects/object_mori_hineri2a.xml
+++ b/assets/xml/objects/object_mori_hineri2a.xml
@@ -1,6 +1,9 @@
-
+
+
+
+
diff --git a/assets/xml/objects/object_mori_objects.xml b/assets/xml/objects/object_mori_objects.xml
index aa24a38d7..1844cf6f6 100644
--- a/assets/xml/objects/object_mori_objects.xml
+++ b/assets/xml/objects/object_mori_objects.xml
@@ -1,5 +1,5 @@
-
+
diff --git a/assets/xml/objects/object_mu.xml b/assets/xml/objects/object_mu.xml
index 7251ff721..ac4aeb084 100644
--- a/assets/xml/objects/object_mu.xml
+++ b/assets/xml/objects/object_mu.xml
@@ -12,6 +12,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -54,6 +93,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_nwc.xml b/assets/xml/objects/object_nwc.xml
index 96ffa3238..abe2be092 100644
--- a/assets/xml/objects/object_nwc.xml
+++ b/assets/xml/objects/object_nwc.xml
@@ -1,4 +1,5 @@
+
diff --git a/assets/xml/objects/object_ny.xml b/assets/xml/objects/object_ny.xml
index e2e8187ff..0b94903b1 100644
--- a/assets/xml/objects/object_ny.xml
+++ b/assets/xml/objects/object_ny.xml
@@ -1,10 +1,20 @@
+
+
+
+
+
+
+
+
+
+
-
-
+
+
diff --git a/assets/xml/objects/object_oA1.xml b/assets/xml/objects/object_oA1.xml
index 1d665f101..192a19b5a 100644
--- a/assets/xml/objects/object_oA1.xml
+++ b/assets/xml/objects/object_oA1.xml
@@ -39,6 +39,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_oA10.xml b/assets/xml/objects/object_oA10.xml
index 65d080834..ae234bf69 100644
--- a/assets/xml/objects/object_oA10.xml
+++ b/assets/xml/objects/object_oA10.xml
@@ -39,6 +39,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_oA11.xml b/assets/xml/objects/object_oA11.xml
index 92ae474b6..c1e0efe19 100644
--- a/assets/xml/objects/object_oA11.xml
+++ b/assets/xml/objects/object_oA11.xml
@@ -51,6 +51,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_oA2.xml b/assets/xml/objects/object_oA2.xml
index ffdcd7989..81c97bed8 100644
--- a/assets/xml/objects/object_oA2.xml
+++ b/assets/xml/objects/object_oA2.xml
@@ -39,20 +39,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_oA3.xml b/assets/xml/objects/object_oA3.xml
index 176ad0931..7abe8dd47 100644
--- a/assets/xml/objects/object_oA3.xml
+++ b/assets/xml/objects/object_oA3.xml
@@ -1,6 +1,9 @@
+
+
+
diff --git a/assets/xml/objects/object_oA4.xml b/assets/xml/objects/object_oA4.xml
index dcdbbfff9..e883f3bcf 100644
--- a/assets/xml/objects/object_oA4.xml
+++ b/assets/xml/objects/object_oA4.xml
@@ -39,6 +39,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_oA5.xml b/assets/xml/objects/object_oA5.xml
index 55072176d..14a6b19e2 100644
--- a/assets/xml/objects/object_oA5.xml
+++ b/assets/xml/objects/object_oA5.xml
@@ -39,20 +39,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_oA6.xml b/assets/xml/objects/object_oA6.xml
index c17a51088..72db514fc 100644
--- a/assets/xml/objects/object_oA6.xml
+++ b/assets/xml/objects/object_oA6.xml
@@ -39,6 +39,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_oA7.xml b/assets/xml/objects/object_oA7.xml
index 52c68f639..083f5f3ce 100644
--- a/assets/xml/objects/object_oA7.xml
+++ b/assets/xml/objects/object_oA7.xml
@@ -39,20 +39,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_oA8.xml b/assets/xml/objects/object_oA8.xml
index 8ed2d3df5..884797e6d 100644
--- a/assets/xml/objects/object_oA8.xml
+++ b/assets/xml/objects/object_oA8.xml
@@ -39,6 +39,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_oA9.xml b/assets/xml/objects/object_oA9.xml
index d5c16abfc..464e8c91b 100644
--- a/assets/xml/objects/object_oA9.xml
+++ b/assets/xml/objects/object_oA9.xml
@@ -1,5 +1,8 @@
+
+
+
diff --git a/assets/xml/objects/object_oB1.xml b/assets/xml/objects/object_oB1.xml
index 2f50c967b..9115a2b95 100644
--- a/assets/xml/objects/object_oB1.xml
+++ b/assets/xml/objects/object_oB1.xml
@@ -39,20 +39,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_oB2.xml b/assets/xml/objects/object_oB2.xml
index 230783cea..eb56eae40 100644
--- a/assets/xml/objects/object_oB2.xml
+++ b/assets/xml/objects/object_oB2.xml
@@ -54,6 +54,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_oB3.xml b/assets/xml/objects/object_oB3.xml
index 1c42ddacc..396c34170 100644
--- a/assets/xml/objects/object_oB3.xml
+++ b/assets/xml/objects/object_oB3.xml
@@ -39,6 +39,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_oB4.xml b/assets/xml/objects/object_oB4.xml
index 2924c9e75..6cdff038e 100644
--- a/assets/xml/objects/object_oB4.xml
+++ b/assets/xml/objects/object_oB4.xml
@@ -39,6 +39,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_oE1.xml b/assets/xml/objects/object_oE1.xml
index 5b3234893..e3e8374dd 100644
--- a/assets/xml/objects/object_oE1.xml
+++ b/assets/xml/objects/object_oE1.xml
@@ -39,6 +39,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_oE10.xml b/assets/xml/objects/object_oE10.xml
index 04ce91437..7e2717e54 100644
--- a/assets/xml/objects/object_oE10.xml
+++ b/assets/xml/objects/object_oE10.xml
@@ -1,5 +1,8 @@
+
+
+
diff --git a/assets/xml/objects/object_oE11.xml b/assets/xml/objects/object_oE11.xml
index 26ff739cd..64b9ad265 100644
--- a/assets/xml/objects/object_oE11.xml
+++ b/assets/xml/objects/object_oE11.xml
@@ -1,5 +1,8 @@
+
+
+
diff --git a/assets/xml/objects/object_oE12.xml b/assets/xml/objects/object_oE12.xml
index 4b89954e0..e50044808 100644
--- a/assets/xml/objects/object_oE12.xml
+++ b/assets/xml/objects/object_oE12.xml
@@ -1,5 +1,8 @@
+
+
+
diff --git a/assets/xml/objects/object_oE1s.xml b/assets/xml/objects/object_oE1s.xml
index faf6ab734..d9a419e5f 100644
--- a/assets/xml/objects/object_oE1s.xml
+++ b/assets/xml/objects/object_oE1s.xml
@@ -31,6 +31,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_oE2.xml b/assets/xml/objects/object_oE2.xml
index ea3ba91fc..714060fd6 100644
--- a/assets/xml/objects/object_oE2.xml
+++ b/assets/xml/objects/object_oE2.xml
@@ -39,6 +39,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_oE3.xml b/assets/xml/objects/object_oE3.xml
index 4a6cb3d92..b61b850fb 100644
--- a/assets/xml/objects/object_oE3.xml
+++ b/assets/xml/objects/object_oE3.xml
@@ -39,6 +39,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_oE4.xml b/assets/xml/objects/object_oE4.xml
index ae48d2ade..e353bfb9c 100644
--- a/assets/xml/objects/object_oE4.xml
+++ b/assets/xml/objects/object_oE4.xml
@@ -39,6 +39,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_oE4s.xml b/assets/xml/objects/object_oE4s.xml
index 584019568..1f1b33dcf 100644
--- a/assets/xml/objects/object_oE4s.xml
+++ b/assets/xml/objects/object_oE4s.xml
@@ -27,6 +27,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_oE5.xml b/assets/xml/objects/object_oE5.xml
index c05917dc9..89e9947ad 100644
--- a/assets/xml/objects/object_oE5.xml
+++ b/assets/xml/objects/object_oE5.xml
@@ -39,6 +39,30 @@
-->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_oE6.xml b/assets/xml/objects/object_oE6.xml
index d253130af..019797be8 100644
--- a/assets/xml/objects/object_oE6.xml
+++ b/assets/xml/objects/object_oE6.xml
@@ -1,5 +1,8 @@
+
+
+
diff --git a/assets/xml/objects/object_oE7.xml b/assets/xml/objects/object_oE7.xml
index 2b6b5cf31..bdf32d3b6 100644
--- a/assets/xml/objects/object_oE7.xml
+++ b/assets/xml/objects/object_oE7.xml
@@ -1,5 +1,8 @@
+
+
+
diff --git a/assets/xml/objects/object_oE8.xml b/assets/xml/objects/object_oE8.xml
index 8b1333fa9..d14c141bf 100644
--- a/assets/xml/objects/object_oE8.xml
+++ b/assets/xml/objects/object_oE8.xml
@@ -1,5 +1,8 @@
+
+
+
diff --git a/assets/xml/objects/object_oE9.xml b/assets/xml/objects/object_oE9.xml
index e43cee426..f8c4fa1e7 100644
--- a/assets/xml/objects/object_oE9.xml
+++ b/assets/xml/objects/object_oE9.xml
@@ -1,5 +1,8 @@
+
+
+
diff --git a/assets/xml/objects/object_oF1s.xml b/assets/xml/objects/object_oF1s.xml
index fe41dde63..26491d565 100644
--- a/assets/xml/objects/object_oF1s.xml
+++ b/assets/xml/objects/object_oF1s.xml
@@ -38,6 +38,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_ossan.xml b/assets/xml/objects/object_ossan.xml
index 7e51c33bc..c0d80ad0b 100644
--- a/assets/xml/objects/object_ossan.xml
+++ b/assets/xml/objects/object_ossan.xml
@@ -4,12 +4,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_ouke_haka.xml b/assets/xml/objects/object_ouke_haka.xml
index 11da9b26e..49dc2a4af 100644
--- a/assets/xml/objects/object_ouke_haka.xml
+++ b/assets/xml/objects/object_ouke_haka.xml
@@ -1,5 +1,8 @@
+
+
+
diff --git a/assets/xml/objects/object_owl.xml b/assets/xml/objects/object_owl.xml
index 24be37898..4ea200667 100644
--- a/assets/xml/objects/object_owl.xml
+++ b/assets/xml/objects/object_owl.xml
@@ -61,7 +61,7 @@
-
+
diff --git a/assets/xml/objects/object_po_composer.xml b/assets/xml/objects/object_po_composer.xml
index 2ab8d64d8..17c04fd18 100644
--- a/assets/xml/objects/object_po_composer.xml
+++ b/assets/xml/objects/object_po_composer.xml
@@ -1,4 +1,5 @@
+
diff --git a/assets/xml/objects/object_po_field.xml b/assets/xml/objects/object_po_field.xml
index 10b402e2c..43e1066e3 100644
--- a/assets/xml/objects/object_po_field.xml
+++ b/assets/xml/objects/object_po_field.xml
@@ -1,4 +1,5 @@
+
diff --git a/assets/xml/objects/object_poh.xml b/assets/xml/objects/object_poh.xml
index 009d0fca3..33517945e 100644
--- a/assets/xml/objects/object_poh.xml
+++ b/assets/xml/objects/object_poh.xml
@@ -1,4 +1,5 @@
+
diff --git a/assets/xml/objects/object_ps.xml b/assets/xml/objects/object_ps.xml
index 043e232d6..98f548db1 100644
--- a/assets/xml/objects/object_ps.xml
+++ b/assets/xml/objects/object_ps.xml
@@ -1,4 +1,5 @@
+
diff --git a/assets/xml/objects/object_reeba.xml b/assets/xml/objects/object_reeba.xml
index 32c697bd9..474e4edc5 100644
--- a/assets/xml/objects/object_reeba.xml
+++ b/assets/xml/objects/object_reeba.xml
@@ -4,21 +4,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_rl.xml b/assets/xml/objects/object_rl.xml
index 8453935b1..e9a26ef2f 100644
--- a/assets/xml/objects/object_rl.xml
+++ b/assets/xml/objects/object_rl.xml
@@ -3,6 +3,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -20,6 +44,9 @@
+
+
+
diff --git a/assets/xml/objects/object_rr.xml b/assets/xml/objects/object_rr.xml
index 98726b14b..4d95b2da3 100644
--- a/assets/xml/objects/object_rr.xml
+++ b/assets/xml/objects/object_rr.xml
@@ -1,5 +1,8 @@
+
+
+
diff --git a/assets/xml/objects/object_rs.xml b/assets/xml/objects/object_rs.xml
index a5f753659..64832b127 100644
--- a/assets/xml/objects/object_rs.xml
+++ b/assets/xml/objects/object_rs.xml
@@ -2,6 +2,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_sb.xml b/assets/xml/objects/object_sb.xml
index 3adf2c17e..7ba041f18 100644
--- a/assets/xml/objects/object_sb.xml
+++ b/assets/xml/objects/object_sb.xml
@@ -1,4 +1,5 @@
+
@@ -14,6 +15,12 @@
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_shop_dungen.xml b/assets/xml/objects/object_shop_dungen.xml
index 027207402..baf9b9b44 100644
--- a/assets/xml/objects/object_shop_dungen.xml
+++ b/assets/xml/objects/object_shop_dungen.xml
@@ -1,9 +1,15 @@
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_siofuki.xml b/assets/xml/objects/object_siofuki.xml
index a23240a72..0a758500c 100644
--- a/assets/xml/objects/object_siofuki.xml
+++ b/assets/xml/objects/object_siofuki.xml
@@ -1,6 +1,10 @@
+
+
+
+
diff --git a/assets/xml/objects/object_spot03_object.xml b/assets/xml/objects/object_spot03_object.xml
index f182e7d99..c844a4510 100644
--- a/assets/xml/objects/object_spot03_object.xml
+++ b/assets/xml/objects/object_spot03_object.xml
@@ -11,6 +11,9 @@
+
+
+
diff --git a/assets/xml/objects/object_spot05_objects.xml b/assets/xml/objects/object_spot05_objects.xml
index 6e7079149..dcca34043 100644
--- a/assets/xml/objects/object_spot05_objects.xml
+++ b/assets/xml/objects/object_spot05_objects.xml
@@ -1,9 +1,15 @@
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_spot07_object.xml b/assets/xml/objects/object_spot07_object.xml
index 5bc2bfb6b..6f0263173 100644
--- a/assets/xml/objects/object_spot07_object.xml
+++ b/assets/xml/objects/object_spot07_object.xml
@@ -1,14 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_spot11_obj.xml b/assets/xml/objects/object_spot11_obj.xml
index 257298f7c..ba1c4784f 100644
--- a/assets/xml/objects/object_spot11_obj.xml
+++ b/assets/xml/objects/object_spot11_obj.xml
@@ -1,8 +1,14 @@
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_spot17_obj.xml b/assets/xml/objects/object_spot17_obj.xml
index 73a4ca520..364ee9b9e 100644
--- a/assets/xml/objects/object_spot17_obj.xml
+++ b/assets/xml/objects/object_spot17_obj.xml
@@ -2,9 +2,18 @@
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_ssh.xml b/assets/xml/objects/object_ssh.xml
index 6283f8e9f..3f50161d9 100644
--- a/assets/xml/objects/object_ssh.xml
+++ b/assets/xml/objects/object_ssh.xml
@@ -12,6 +12,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_sst.xml b/assets/xml/objects/object_sst.xml
index c142c50f4..66cf6c8e0 100644
--- a/assets/xml/objects/object_sst.xml
+++ b/assets/xml/objects/object_sst.xml
@@ -1,4 +1,5 @@
+
diff --git a/assets/xml/objects/object_sst_pal.xml b/assets/xml/objects/object_sst_pal.xml
index 9a9199b58..138a32032 100644
--- a/assets/xml/objects/object_sst_pal.xml
+++ b/assets/xml/objects/object_sst_pal.xml
@@ -1,4 +1,5 @@
+
diff --git a/assets/xml/objects/object_st.xml b/assets/xml/objects/object_st.xml
index 9556f081d..e374b4cb4 100644
--- a/assets/xml/objects/object_st.xml
+++ b/assets/xml/objects/object_st.xml
@@ -1,4 +1,5 @@
+
diff --git a/assets/xml/objects/object_stream.xml b/assets/xml/objects/object_stream.xml
index 59b0838e4..e8710781c 100644
--- a/assets/xml/objects/object_stream.xml
+++ b/assets/xml/objects/object_stream.xml
@@ -1,6 +1,10 @@
+
+
+
+
diff --git a/assets/xml/objects/object_syokudai.xml b/assets/xml/objects/object_syokudai.xml
index 11af7e9a3..a34d4adc6 100644
--- a/assets/xml/objects/object_syokudai.xml
+++ b/assets/xml/objects/object_syokudai.xml
@@ -1,8 +1,17 @@
-
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_tite.xml b/assets/xml/objects/object_tite.xml
index 1be65c495..4474dab20 100644
--- a/assets/xml/objects/object_tite.xml
+++ b/assets/xml/objects/object_tite.xml
@@ -17,6 +17,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_toki_objects.xml b/assets/xml/objects/object_toki_objects.xml
index 3cada31f8..7534d44d1 100644
--- a/assets/xml/objects/object_toki_objects.xml
+++ b/assets/xml/objects/object_toki_objects.xml
@@ -1,11 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -15,12 +28,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_toryo.xml b/assets/xml/objects/object_toryo.xml
index 73f3dcb1e..9bd5b0971 100644
--- a/assets/xml/objects/object_toryo.xml
+++ b/assets/xml/objects/object_toryo.xml
@@ -16,6 +16,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_tr.xml b/assets/xml/objects/object_tr.xml
index 827b85bfe..f365b9726 100644
--- a/assets/xml/objects/object_tr.xml
+++ b/assets/xml/objects/object_tr.xml
@@ -51,6 +51,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -125,6 +152,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_trap.xml b/assets/xml/objects/object_trap.xml
index 56195cf41..1f8f4b531 100644
--- a/assets/xml/objects/object_trap.xml
+++ b/assets/xml/objects/object_trap.xml
@@ -1,4 +1,5 @@
+
diff --git a/assets/xml/objects/object_triforce_spot.xml b/assets/xml/objects/object_triforce_spot.xml
index a9d52dd96..40f936d3c 100644
--- a/assets/xml/objects/object_triforce_spot.xml
+++ b/assets/xml/objects/object_triforce_spot.xml
@@ -1,9 +1,11 @@
-
+
+
+
+
-
diff --git a/assets/xml/objects/object_ts.xml b/assets/xml/objects/object_ts.xml
index 567277bc3..ce99c27e0 100644
--- a/assets/xml/objects/object_ts.xml
+++ b/assets/xml/objects/object_ts.xml
@@ -11,6 +11,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_tsubo.xml b/assets/xml/objects/object_tsubo.xml
index ee2c5e184..bdfd9070a 100644
--- a/assets/xml/objects/object_tsubo.xml
+++ b/assets/xml/objects/object_tsubo.xml
@@ -3,7 +3,13 @@
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_umajump.xml b/assets/xml/objects/object_umajump.xml
index 2ee4ade46..1d205b7a4 100644
--- a/assets/xml/objects/object_umajump.xml
+++ b/assets/xml/objects/object_umajump.xml
@@ -2,6 +2,9 @@
+
+
+
diff --git a/assets/xml/objects/object_wf.xml b/assets/xml/objects/object_wf.xml
index d5d70639d..c97207cf0 100644
--- a/assets/xml/objects/object_wf.xml
+++ b/assets/xml/objects/object_wf.xml
@@ -7,6 +7,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -25,6 +67,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -64,6 +121,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -90,6 +189,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_wood02.xml b/assets/xml/objects/object_wood02.xml
index bdcc2d2e3..a79fe654d 100644
--- a/assets/xml/objects/object_wood02.xml
+++ b/assets/xml/objects/object_wood02.xml
@@ -1,11 +1,26 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -18,16 +33,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_yabusame_point.xml b/assets/xml/objects/object_yabusame_point.xml
index bed9e8a60..5a06a44e6 100644
--- a/assets/xml/objects/object_yabusame_point.xml
+++ b/assets/xml/objects/object_yabusame_point.xml
@@ -3,6 +3,9 @@
+
+
+
diff --git a/assets/xml/objects/object_ydan_objects.xml b/assets/xml/objects/object_ydan_objects.xml
index baf7ca4c9..70174a1e7 100644
--- a/assets/xml/objects/object_ydan_objects.xml
+++ b/assets/xml/objects/object_ydan_objects.xml
@@ -1,4 +1,5 @@
+
diff --git a/assets/xml/objects/object_zf.xml b/assets/xml/objects/object_zf.xml
index 7f20eb786..a537b9ff8 100644
--- a/assets/xml/objects/object_zf.xml
+++ b/assets/xml/objects/object_zf.xml
@@ -1,4 +1,5 @@
+
@@ -10,6 +11,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -98,27 +159,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/xml/objects/object_zg.xml b/assets/xml/objects/object_zg.xml
index 79005516c..d0f301390 100644
--- a/assets/xml/objects/object_zg.xml
+++ b/assets/xml/objects/object_zg.xml
@@ -2,6 +2,9 @@
+
+
+
diff --git a/assets/xml/objects/object_zo.xml b/assets/xml/objects/object_zo.xml
index 77465760e..8872cc4c9 100644
--- a/assets/xml/objects/object_zo.xml
+++ b/assets/xml/objects/object_zo.xml
@@ -1,4 +1,5 @@
+
diff --git a/assets/xml/overlays/ovl_Boss_Ganon.xml b/assets/xml/overlays/ovl_Boss_Ganon.xml
index a6ed9c66e..d09648d8d 100644
--- a/assets/xml/overlays/ovl_Boss_Ganon.xml
+++ b/assets/xml/overlays/ovl_Boss_Ganon.xml
@@ -1,4 +1,5 @@
+
diff --git a/assets/xml/overlays/ovl_Boss_Ganon2.xml b/assets/xml/overlays/ovl_Boss_Ganon2.xml
index 00f985786..b922003df 100644
--- a/assets/xml/overlays/ovl_Boss_Ganon2.xml
+++ b/assets/xml/overlays/ovl_Boss_Ganon2.xml
@@ -1,4 +1,5 @@
+
diff --git a/assets/xml/overlays/ovl_En_Jsjutan.xml b/assets/xml/overlays/ovl_En_Jsjutan.xml
index b3b012b1f..13bbd8219 100644
--- a/assets/xml/overlays/ovl_En_Jsjutan.xml
+++ b/assets/xml/overlays/ovl_En_Jsjutan.xml
@@ -16,9 +16,6 @@
-
-
-
diff --git a/assets/xml/overlays/ovl_Magic_Dark.xml b/assets/xml/overlays/ovl_Magic_Dark.xml
index 965d140db..37165cebc 100644
--- a/assets/xml/overlays/ovl_Magic_Dark.xml
+++ b/assets/xml/overlays/ovl_Magic_Dark.xml
@@ -1,4 +1,5 @@
+
diff --git a/assets/xml/overlays/ovl_Oceff_Storm.xml b/assets/xml/overlays/ovl_Oceff_Storm.xml
index 385f56dbf..d9e1f7e65 100644
--- a/assets/xml/overlays/ovl_Oceff_Storm.xml
+++ b/assets/xml/overlays/ovl_Oceff_Storm.xml
@@ -1,4 +1,5 @@
+
diff --git a/assets/xml/overlays/ovl_Oceff_Wipe4.xml b/assets/xml/overlays/ovl_Oceff_Wipe4.xml
index 6446beedb..a4ec2c5de 100644
--- a/assets/xml/overlays/ovl_Oceff_Wipe4.xml
+++ b/assets/xml/overlays/ovl_Oceff_Wipe4.xml
@@ -1,4 +1,5 @@
+
diff --git a/assets/xml/scenes/dungeons/MIZUsin.xml b/assets/xml/scenes/dungeons/MIZUsin.xml
index e48f534d8..12a124cf0 100644
--- a/assets/xml/scenes/dungeons/MIZUsin.xml
+++ b/assets/xml/scenes/dungeons/MIZUsin.xml
@@ -7,6 +7,7 @@
+
diff --git a/assets/xml/scenes/dungeons/MIZUsin_mq.xml b/assets/xml/scenes/dungeons/MIZUsin_mq.xml
index bd0e260ac..cbbe48287 100644
--- a/assets/xml/scenes/dungeons/MIZUsin_mq.xml
+++ b/assets/xml/scenes/dungeons/MIZUsin_mq.xml
@@ -7,6 +7,7 @@
+
diff --git a/assets/xml/scenes/dungeons/ddan.xml b/assets/xml/scenes/dungeons/ddan.xml
index d78f8dabe..295f65173 100644
--- a/assets/xml/scenes/dungeons/ddan.xml
+++ b/assets/xml/scenes/dungeons/ddan.xml
@@ -19,6 +19,7 @@
+
diff --git a/assets/xml/scenes/dungeons/ddan_mq.xml b/assets/xml/scenes/dungeons/ddan_mq.xml
index d78f8dabe..295f65173 100644
--- a/assets/xml/scenes/dungeons/ddan_mq.xml
+++ b/assets/xml/scenes/dungeons/ddan_mq.xml
@@ -19,6 +19,7 @@
+
diff --git a/assets/xml/textures/item_name_static.xml b/assets/xml/textures/item_name_static.xml
index 0740038d9..0e2d76947 100644
--- a/assets/xml/textures/item_name_static.xml
+++ b/assets/xml/textures/item_name_static.xml
@@ -56,9 +56,9 @@
-
-
-
+
+
+
@@ -115,7 +115,7 @@
-
+
@@ -123,11 +123,12 @@
+
-
+
-
+
@@ -179,9 +180,9 @@
-
-
-
+
+
+
@@ -209,10 +210,10 @@
-
-
-
-
+
+
+
+
@@ -237,14 +238,14 @@
-
-
-
+
+
+
-
-
-
+
+
+
diff --git a/assets/xml/textures/item_name_static_pal.xml b/assets/xml/textures/item_name_static_pal.xml
index adf66fcb9..321c890a9 100644
--- a/assets/xml/textures/item_name_static_pal.xml
+++ b/assets/xml/textures/item_name_static_pal.xml
@@ -86,10 +86,10 @@
-
-
-
-
+
+
+
+
@@ -119,10 +119,11 @@
-
-
-
+
+
+
+
@@ -209,10 +210,10 @@
-
-
-
-
+
+
+
+
@@ -242,10 +243,11 @@
-
-
-
+
+
+
+
@@ -332,10 +334,10 @@
-
-
-
-
+
+
+
+
@@ -365,9 +367,9 @@
-
-
-
+
+
+
diff --git a/baseroms/gc-eu-mq-dbg/config.yml b/baseroms/gc-eu-mq-dbg/config.yml
index 44bbdae42..e45702806 100644
--- a/baseroms/gc-eu-mq-dbg/config.yml
+++ b/baseroms/gc-eu-mq-dbg/config.yml
@@ -64,7 +64,7 @@ assets:
- name: code/fbdemo_circle
xml_path: assets/xml/code/fbdemo_circle.xml
start_offset: 0x10ED48
- end_offset: 0x10FF68
+ end_offset: 0x110038
- name: code/fbdemo_triforce
xml_path: assets/xml/code/fbdemo_triforce.xml
start_offset: 0x10E1D0
@@ -72,7 +72,7 @@ assets:
- name: code/fbdemo_wipe1
xml_path: assets/xml/code/fbdemo_wipe1.xml
start_offset: 0x10E2A0
- end_offset: 0x10EC30
+ end_offset: 0x10ED28
- name: misc/link_animetion
xml_path: assets/xml/misc/link_animetion.xml
- name: misc/z_select_static
diff --git a/baseroms/gc-eu-mq/config.yml b/baseroms/gc-eu-mq/config.yml
index e42e48c75..0093015d7 100644
--- a/baseroms/gc-eu-mq/config.yml
+++ b/baseroms/gc-eu-mq/config.yml
@@ -56,7 +56,7 @@ assets:
- name: code/fbdemo_circle
xml_path: assets/xml/code/fbdemo_circle.xml
start_offset: 0xE90A8
- end_offset: 0xEA2C8
+ end_offset: 0xEA398
- name: code/fbdemo_triforce
xml_path: assets/xml/code/fbdemo_triforce.xml
start_offset: 0xE8530
@@ -64,7 +64,7 @@ assets:
- name: code/fbdemo_wipe1
xml_path: assets/xml/code/fbdemo_wipe1.xml
start_offset: 0xE8600
- end_offset: 0xE8F90
+ end_offset: 0xE9088
- name: misc/link_animetion
xml_path: assets/xml/misc/link_animetion.xml
- name: misc/z_select_static
diff --git a/baseroms/gc-eu/config.yml b/baseroms/gc-eu/config.yml
index b6471875f..9aef9891f 100644
--- a/baseroms/gc-eu/config.yml
+++ b/baseroms/gc-eu/config.yml
@@ -56,7 +56,7 @@ assets:
- name: code/fbdemo_circle
xml_path: assets/xml/code/fbdemo_circle.xml
start_offset: 0xE90C8
- end_offset: 0xEA2E8
+ end_offset: 0xEA3B8
- name: code/fbdemo_triforce
xml_path: assets/xml/code/fbdemo_triforce.xml
start_offset: 0xE8550
@@ -64,7 +64,7 @@ assets:
- name: code/fbdemo_wipe1
xml_path: assets/xml/code/fbdemo_wipe1.xml
start_offset: 0xE8620
- end_offset: 0xE8FB0
+ end_offset: 0xE90A8
- name: misc/link_animetion
xml_path: assets/xml/misc/link_animetion.xml
- name: misc/z_select_static
diff --git a/baseroms/gc-jp-ce/config.yml b/baseroms/gc-jp-ce/config.yml
index a4592544f..f3c0541a6 100644
--- a/baseroms/gc-jp-ce/config.yml
+++ b/baseroms/gc-jp-ce/config.yml
@@ -55,7 +55,7 @@ assets:
- name: code/fbdemo_circle
xml_path: assets/xml/code/fbdemo_circle.xml
start_offset: 0xEB768
- end_offset: 0xEC988
+ end_offset: 0xECA58
- name: code/fbdemo_triforce
xml_path: assets/xml/code/fbdemo_triforce.xml
start_offset: 0xEABF0
@@ -63,7 +63,7 @@ assets:
- name: code/fbdemo_wipe1
xml_path: assets/xml/code/fbdemo_wipe1.xml
start_offset: 0xEACC0
- end_offset: 0xEB650
+ end_offset: 0xEB748
- name: misc/link_animetion
xml_path: assets/xml/misc/link_animetion.xml
- name: misc/z_select_static
diff --git a/baseroms/gc-jp-mq/config.yml b/baseroms/gc-jp-mq/config.yml
index 597e2cff6..41d1721f3 100644
--- a/baseroms/gc-jp-mq/config.yml
+++ b/baseroms/gc-jp-mq/config.yml
@@ -55,7 +55,7 @@ assets:
- name: code/fbdemo_circle
xml_path: assets/xml/code/fbdemo_circle.xml
start_offset: 0xEB768
- end_offset: 0xEC988
+ end_offset: 0xECA58
- name: code/fbdemo_triforce
xml_path: assets/xml/code/fbdemo_triforce.xml
start_offset: 0xEABF0
@@ -63,7 +63,7 @@ assets:
- name: code/fbdemo_wipe1
xml_path: assets/xml/code/fbdemo_wipe1.xml
start_offset: 0xEACC0
- end_offset: 0xEB650
+ end_offset: 0xEB748
- name: misc/link_animetion
xml_path: assets/xml/misc/link_animetion.xml
- name: misc/z_select_static
diff --git a/baseroms/gc-jp/config.yml b/baseroms/gc-jp/config.yml
index 582fd894e..73285664c 100644
--- a/baseroms/gc-jp/config.yml
+++ b/baseroms/gc-jp/config.yml
@@ -55,7 +55,7 @@ assets:
- name: code/fbdemo_circle
xml_path: assets/xml/code/fbdemo_circle.xml
start_offset: 0xEB788
- end_offset: 0xEC9A8
+ end_offset: 0xECA78
- name: code/fbdemo_triforce
xml_path: assets/xml/code/fbdemo_triforce.xml
start_offset: 0xEAC10
@@ -63,7 +63,7 @@ assets:
- name: code/fbdemo_wipe1
xml_path: assets/xml/code/fbdemo_wipe1.xml
start_offset: 0xEACE0
- end_offset: 0xEB670
+ end_offset: 0xEB768
- name: misc/link_animetion
xml_path: assets/xml/misc/link_animetion.xml
- name: misc/z_select_static
diff --git a/baseroms/gc-us-mq/config.yml b/baseroms/gc-us-mq/config.yml
index 691aaa1ff..1057e49b2 100644
--- a/baseroms/gc-us-mq/config.yml
+++ b/baseroms/gc-us-mq/config.yml
@@ -55,7 +55,7 @@ assets:
- name: code/fbdemo_circle
xml_path: assets/xml/code/fbdemo_circle.xml
start_offset: 0xEB748
- end_offset: 0xEC968
+ end_offset: 0xECA38
- name: code/fbdemo_triforce
xml_path: assets/xml/code/fbdemo_triforce.xml
start_offset: 0xEABD0
@@ -63,7 +63,7 @@ assets:
- name: code/fbdemo_wipe1
xml_path: assets/xml/code/fbdemo_wipe1.xml
start_offset: 0xEACA0
- end_offset: 0xEB630
+ end_offset: 0xEB728
- name: misc/link_animetion
xml_path: assets/xml/misc/link_animetion.xml
- name: misc/z_select_static
diff --git a/baseroms/gc-us/config.yml b/baseroms/gc-us/config.yml
index 9a64c8464..620d55063 100644
--- a/baseroms/gc-us/config.yml
+++ b/baseroms/gc-us/config.yml
@@ -55,7 +55,7 @@ assets:
- name: code/fbdemo_circle
xml_path: assets/xml/code/fbdemo_circle.xml
start_offset: 0xEB768
- end_offset: 0xEC988
+ end_offset: 0xECA58
- name: code/fbdemo_triforce
xml_path: assets/xml/code/fbdemo_triforce.xml
start_offset: 0xEABF0
@@ -63,7 +63,7 @@ assets:
- name: code/fbdemo_wipe1
xml_path: assets/xml/code/fbdemo_wipe1.xml
start_offset: 0xEACC0
- end_offset: 0xEB650
+ end_offset: 0xEB748
- name: misc/link_animetion
xml_path: assets/xml/misc/link_animetion.xml
- name: misc/z_select_static
diff --git a/baseroms/hackeroot-mq/config.yml b/baseroms/hackeroot-mq/config.yml
index 44bbdae42..e45702806 100644
--- a/baseroms/hackeroot-mq/config.yml
+++ b/baseroms/hackeroot-mq/config.yml
@@ -64,7 +64,7 @@ assets:
- name: code/fbdemo_circle
xml_path: assets/xml/code/fbdemo_circle.xml
start_offset: 0x10ED48
- end_offset: 0x10FF68
+ end_offset: 0x110038
- name: code/fbdemo_triforce
xml_path: assets/xml/code/fbdemo_triforce.xml
start_offset: 0x10E1D0
@@ -72,7 +72,7 @@ assets:
- name: code/fbdemo_wipe1
xml_path: assets/xml/code/fbdemo_wipe1.xml
start_offset: 0x10E2A0
- end_offset: 0x10EC30
+ end_offset: 0x10ED28
- name: misc/link_animetion
xml_path: assets/xml/misc/link_animetion.xml
- name: misc/z_select_static
diff --git a/baseroms/ique-cn/config.yml b/baseroms/ique-cn/config.yml
index af570e0f0..6236b0cf5 100644
--- a/baseroms/ique-cn/config.yml
+++ b/baseroms/ique-cn/config.yml
@@ -55,7 +55,7 @@ assets:
- name: code/fbdemo_circle
xml_path: assets/xml/code/fbdemo_circle.xml
start_offset: 0xEBD88
- end_offset: 0xECFA8
+ end_offset: 0xED078
- name: code/fbdemo_triforce
xml_path: assets/xml/code/fbdemo_triforce.xml
start_offset: 0xEB210
@@ -63,7 +63,7 @@ assets:
- name: code/fbdemo_wipe1
xml_path: assets/xml/code/fbdemo_wipe1.xml
start_offset: 0xEB2E0
- end_offset: 0xEBC70
+ end_offset: 0xEBD68
- name: misc/link_animetion
xml_path: assets/xml/misc/link_animetion.xml
- name: misc/z_select_static
diff --git a/baseroms/ntsc-1.0/config.yml b/baseroms/ntsc-1.0/config.yml
index 667845d38..948bbd179 100644
--- a/baseroms/ntsc-1.0/config.yml
+++ b/baseroms/ntsc-1.0/config.yml
@@ -58,7 +58,7 @@ assets:
- name: code/fbdemo_circle
xml_path: assets/xml/code/fbdemo_circle.xml
start_offset: 0xEC0A8
- end_offset: 0xED2C8
+ end_offset: 0xED398
- name: code/fbdemo_triforce
xml_path: assets/xml/code/fbdemo_triforce.xml
start_offset: 0xEB530
@@ -66,7 +66,7 @@ assets:
- name: code/fbdemo_wipe1
xml_path: assets/xml/code/fbdemo_wipe1.xml
start_offset: 0xEB600
- end_offset: 0xEBF90
+ end_offset: 0xEC088
- name: n64dd/error_textures
xml_path: assets/xml/n64dd/error_textures.xml
start_offset: 0xC160
diff --git a/baseroms/ntsc-1.1/config.yml b/baseroms/ntsc-1.1/config.yml
index 66e74a17a..2317ae2da 100644
--- a/baseroms/ntsc-1.1/config.yml
+++ b/baseroms/ntsc-1.1/config.yml
@@ -58,7 +58,7 @@ assets:
- name: code/fbdemo_circle
xml_path: assets/xml/code/fbdemo_circle.xml
start_offset: 0xEC268
- end_offset: 0xED488
+ end_offset: 0xED558
- name: code/fbdemo_triforce
xml_path: assets/xml/code/fbdemo_triforce.xml
start_offset: 0xEB6F0
@@ -66,7 +66,7 @@ assets:
- name: code/fbdemo_wipe1
xml_path: assets/xml/code/fbdemo_wipe1.xml
start_offset: 0xEB7C0
- end_offset: 0xEC150
+ end_offset: 0xEC248
- name: n64dd/error_textures
xml_path: assets/xml/n64dd/error_textures.xml
start_offset: 0xC140
diff --git a/baseroms/ntsc-1.2/config.yml b/baseroms/ntsc-1.2/config.yml
index 4b3b33db4..6fc7896db 100644
--- a/baseroms/ntsc-1.2/config.yml
+++ b/baseroms/ntsc-1.2/config.yml
@@ -58,7 +58,7 @@ assets:
- name: code/fbdemo_circle
xml_path: assets/xml/code/fbdemo_circle.xml
start_offset: 0xEC0B8
- end_offset: 0xED2D8
+ end_offset: 0xED3A8
- name: code/fbdemo_triforce
xml_path: assets/xml/code/fbdemo_triforce.xml
start_offset: 0xEB540
@@ -66,7 +66,7 @@ assets:
- name: code/fbdemo_wipe1
xml_path: assets/xml/code/fbdemo_wipe1.xml
start_offset: 0xEB610
- end_offset: 0xEBFA0
+ end_offset: 0xEC098
- name: n64dd/error_textures
xml_path: assets/xml/n64dd/error_textures.xml
start_offset: 0xC120
diff --git a/baseroms/pal-1.0/config.yml b/baseroms/pal-1.0/config.yml
index 782e4ce15..37ffb7500 100644
--- a/baseroms/pal-1.0/config.yml
+++ b/baseroms/pal-1.0/config.yml
@@ -64,7 +64,7 @@ assets:
- name: code/fbdemo_circle
xml_path: assets/xml/code/fbdemo_circle.xml
start_offset: 0xE99C8
- end_offset: 0xEABE8
+ end_offset: 0xEACB8
- name: code/fbdemo_triforce
xml_path: assets/xml/code/fbdemo_triforce.xml
start_offset: 0xE8E50
@@ -72,7 +72,7 @@ assets:
- name: code/fbdemo_wipe1
xml_path: assets/xml/code/fbdemo_wipe1.xml
start_offset: 0xE8F20
- end_offset: 0xE98B0
+ end_offset: 0xE99A8
- name: n64dd/error_textures
xml_path: assets/xml/n64dd/error_textures.xml
start_offset: 0xC0E0
diff --git a/baseroms/pal-1.1/config.yml b/baseroms/pal-1.1/config.yml
index c7f278dfe..45bf82b87 100644
--- a/baseroms/pal-1.1/config.yml
+++ b/baseroms/pal-1.1/config.yml
@@ -64,7 +64,7 @@ assets:
- name: code/fbdemo_circle
xml_path: assets/xml/code/fbdemo_circle.xml
start_offset: 0xE9A08
- end_offset: 0xEAC28
+ end_offset: 0xEACF8
- name: code/fbdemo_triforce
xml_path: assets/xml/code/fbdemo_triforce.xml
start_offset: 0xE8E90
@@ -72,7 +72,7 @@ assets:
- name: code/fbdemo_wipe1
xml_path: assets/xml/code/fbdemo_wipe1.xml
start_offset: 0xE8F60
- end_offset: 0xE98F0
+ end_offset: 0xE99E8
- name: n64dd/error_textures
xml_path: assets/xml/n64dd/error_textures.xml
start_offset: 0xC0E0
diff --git a/docs/assets/extraction.md b/docs/assets/extraction.md
new file mode 100644
index 000000000..a4c342db3
--- /dev/null
+++ b/docs/assets/extraction.md
@@ -0,0 +1,18 @@
+Assets are not committed to the repo; instead, they are extracted from the ROM files as part of `make setup`.
+
+Assets are extracted to `extracted/VERSION/assets` (for example `extracted/ntsc-1.0/assets` for the `ntsc-1.0` version), based on the descriptions stored in xml files in `assets/xml/`.
+
+For details on the xml files contents, see [the assets xml specification file](../../tools/assets/descriptor/spec.md).
+
+The extraction tool can use [rich](https://github.com/Textualize/rich) if installed to make output prettier.
+If you are looking at output or errors from during extraction, consider installing rich for a better experience: `.venv/bin/python3 -m pip install rich`
+
+To run the extraction outside of `make setup`, use `./tools/extract_assets.sh VERSION`.
+- Pass `-f` to force extraction: otherwise only assets for which xmls were modified will be extracted.
+- Pass `-j` to use multiprocessing, making extraction quicker. Note that this makes for less readable errors if any error happens.
+- Pass `-s name` to extract assets using baserom file `name`.
+- Pass `-r -s 'name.*'` to extract assets using baserom files whose name match regular expression `name.*`.
+
+There currently are various hacks in place in the extraction tool source code to make extraction of some corner cases possible, or to silence extraction warnings.
+Some of these hacks check for the name of resources, so renaming a few specific resources may need updating the extraction tool's source too.
+The plan is to eventually remove those hardcoded checks from the source and use a `HackMode` attribute in the xmls to trigger the hacks code paths.
diff --git a/docs/assets/images.md b/docs/assets/images.md
new file mode 100644
index 000000000..e35e16201
--- /dev/null
+++ b/docs/assets/images.md
@@ -0,0 +1,72 @@
+# Images
+
+Images in the rom are in N64 image formats.
+On extraction, they are converted to png and written to `extracted/VERSION/`.
+On build, they are converted back to N64 formats and written as C arrays to `.inc.c` files in `build/VERSION/`.
+
+The build system will also pick up images in `assets/`, allowing modders to add or even [replace](#replacing-images) images.
+
+PNG files have suffixes indicating how they are to be converted. For example, a `gDekuStickTex.i8.png` file will be converted to `i8`.
+
+The valid formats are `rgba32`, `rgba16`, `i4`, `i8`, `ia4`, `ia8`, `ia16`, `ci4` and `ci8`.
+
+An optional suffix can be used to indicate the element type of the C array written out, for example `.u32` in `gHylianMan1ShirtTex.i8.u32.png`. The valid array element types are `u64` and `u32`. If omitted, the element type defaults to `u64`. `u32` is only used for unaligned textures.
+
+The tool implementing png->n64 conversion is [build_from_png](../../tools/assets/build_from_png/build_from_png.c), using [n64texconv](../../tools/assets/n64texconv/) as its backbone.
+
+# Replacing images
+
+The contents of `extracted/` are meant to hold the baserom assets and should not be modified. Instead, replacing an image can be done by creating a png file at the same relative path under `assets/` as the image to replace.
+
+For example, replacing `gLinkHairTex` (`extracted/VERSION/assets/objects/gameplay_keep/gLinkHairTex.rgba16.png`) with the texture for `gHylianMan1BeardedEyeOpenTex` (`extracted/VERSION/assets/objects/object_ahg/gHylianMan1BeardedEyeOpenTex.ci8.tlut_gHylianMan1TLUT_u32.u32.png`):
+
+```sh
+# for VERSION=gc-eu-mq-dbg
+
+mkdir -p assets/objects/gameplay_keep/
+cp \
+ extracted/gc-eu-mq-dbg/assets/objects/object_ahg/gHylianMan1BeardedEyeOpenTex.ci8.tlut_gHylianMan1TLUT_u32.u32.png \
+ assets/objects/gameplay_keep/gLinkHairTex.rgba16.png
+
+# Cause make to rebuild gameplay_keep, where gLinkHairTex is
+touch extracted/gc-eu-mq-dbg/assets/objects/gameplay_keep/gameplay_keep.c
+
+make VERSION=gc-eu-mq-dbg
+```
+
+# CI images
+
+CI (Color Indexed) images also have a palette or TLUT (Texture Look-Up Table).
+
+PNG images to be converted to CI formats may have a `.tlut_gNameTLUT[_]` suffix indicating the name and element type (optional, defaults to u64) of the TLUT `gNameTLUT.tlut.rgba16[.].inc.c` file to write the palette to.
+
+If this suffix is omitted, the TLUT will be written to a `gNameTex.tlut.rgba16.inc.c` file named after the CI image.
+
+For example without the `.tlut_` suffix, `gGanonHairFringeTex.ci8.png`:
+
+- extracted to `extracted/VERSION/assets/objects/object_ganon2/gGanonHairFringeTex.ci8.png`
+- texture written to `build/VERSION/assets/objects/object_ganon2/gGanonHairFringeTex.ci8.inc.c`
+- palette written to `build/VERSION/assets/objects/object_ganon2/gGanonHairFringeTex.tlut.rgba16.inc.c`
+
+For example with the `.tlut_` suffix, `gCowNoseTex.ci8.tlut_gCowTLUT.png`:
+
+- extracted to `extracted/gc-eu-mq-dbg/assets/objects/object_cow/gCowNoseTex.ci8.tlut_gCowTLUT.png`
+- texture written to `build/gc-eu-mq-dbg/assets/objects/object_cow/gCowNoseTex.ci8.tlut_gCowTLUT.inc.c`
+- palette written to `build/gc-eu-mq-dbg/assets/objects/object_cow/gCowTLUT.tlut.rgba16.bin`
+
+CI images with a `.tlut_` suffix have a shared palette: there are several CI images using the same palette.
+The build system (`build_from_png`) will find images sharing the same palette by looking at the `.tlut_` suffixes of png files in the same folder and in the corresponding `assets/` folder.
+
+In the matching case of shared palettes, all png files have the same palette, which is written out.
+Otherwise the images are automatically co-quantized and the resulting images and palette are written out.
+
+Note the N64 supports CI images with IA16 palettes instead of RGBA16 palettes, but OoT doesn't have such textures.
+For simplicity, CI images with IA16 palettes are not supported in the build system, and all CI images are assumed to use RGBA16 palettes.
+
+# Skybox textures
+
+Skybox textures, located in (`extracted/VERSION/`)`assets/textures/skyboxes`, are ci8 images with the additional specificity of being limited to a palette of 128 colors that can be loaded as either the first or last 128 colors of a 256-colors palette, depending on the skybox.
+
+The build system identifies such textures with the additional "sub-format" suffix `.split_lo` or `.split_hi` right after the `.ci8` suffix. `split_lo` corresponds to textures where the half palette is mapped to the lower half, and `split_hi` to the higher half.
+
+Like for regular ci images, images are automatically converted, quantized and written within those restrictions by the build system.
diff --git a/format.py b/format.py
index fc25a2087..2e72cc6dd 100755
--- a/format.py
+++ b/format.py
@@ -157,12 +157,22 @@ def format_files(src_files: List[str], extra_files: List[str], nb_jobs: int):
def list_files_to_format():
- files = glob.glob("src/**/*.c", recursive=True)
+ files = (
+ glob.glob("src/**/*.c", recursive=True)
+ + glob.glob("assets/**/*.c", recursive=True)
+ )
extra_files = (
glob.glob("assets/**/*.xml", recursive=True)
+ glob.glob("include/**/*.h", recursive=True)
+ glob.glob("src/**/*.h", recursive=True)
+ + glob.glob("assets/**/*.h", recursive=True)
)
+
+ # Do not format assets/text/ files
+ for assets_text_f in glob.glob("assets/text/**/*.c", recursive=True):
+ if assets_text_f in files:
+ files.remove(assets_text_f)
+
return files, extra_files
diff --git a/include/attributes.h b/include/attributes.h
index 3276c8432..acfaf3edc 100644
--- a/include/attributes.h
+++ b/include/attributes.h
@@ -1,8 +1,6 @@
#ifndef ATTRIBUTES_H
#define ATTRIBUTES_H
-#include "versions.h"
-
#if !defined(__GNUC__) && !defined(__attribute__)
#define __attribute__(x)
#endif
diff --git a/include/audio/aseq.h b/include/audio/aseq.h
index ce14abfa2..99df3248f 100644
--- a/include/audio/aseq.h
+++ b/include/audio/aseq.h
@@ -741,6 +741,7 @@ _RESET_SECTION
/* Write the sequence name into a special .note.name section */
.pushsection .note.name, "", @note
.asciz "\name"
+ .balign 4
.popsection
/* Reset section and write start symbol. */
@@ -826,7 +827,7 @@ _RESET_SECTION
.macro _wr_s16 value
/* Ensure the provided arg value fits in 16 bits (signed) */
_check_arg_bitwidth_s \value, 16
- _wr16 \value
+ _wr16 \value & 0xFFFF
.endm
.macro _wr_u16 value
@@ -1847,7 +1848,7 @@ $reladdr\@:
.endm
/**
- * ptraddi
+ * ptraddi
*
* Like ptradd but for immediates instead of labels
*
@@ -1855,7 +1856,7 @@ $reladdr\@:
*/
.macro ptraddi value
_wr_cmd_id ptradd, ,ASEQ_OP_CHAN_PTRADD,,,,,,, 0, 0
- _wr_u16 \value
+ _wr_s16 \value
.endm
/**
diff --git a/include/audio/soundfont_file.h b/include/audio/soundfont_file.h
index 3f320a6e5..945642977 100644
--- a/include/audio/soundfont_file.h
+++ b/include/audio/soundfont_file.h
@@ -1,7 +1,7 @@
#ifndef SOUNDFONT_FILE_H
#define SOUNDFONT_FILE_H
-#include "libc/stdbool.h"
+#include "stdbool.h"
#include "alignment.h"
#include "attributes.h"
#include "z64audio.h"
diff --git a/include/debug_opening_state.h b/include/debug_opening_state.h
index a9a24b560..936bf1179 100644
--- a/include/debug_opening_state.h
+++ b/include/debug_opening_state.h
@@ -6,6 +6,7 @@
#include "z64view.h"
#include "z64skybox.h"
#include "z64environment.h"
+#include "color.h"
#if IS_DEBUG_BOOT_ENABLED
diff --git a/include/face_change.h b/include/face_change.h
index 5a0c8d856..b61264181 100644
--- a/include/face_change.h
+++ b/include/face_change.h
@@ -1,6 +1,8 @@
#ifndef FACE_CHANGE_H
#define FACE_CHANGE_H
+#include "ultra64.h"
+
typedef struct FaceChange {
/* 0x00 */ s16 face;
/* 0x02 */ s16 timer;
diff --git a/include/gfx.h b/include/gfx.h
index 7ff6f3e05..e3d85dc23 100644
--- a/include/gfx.h
+++ b/include/gfx.h
@@ -3,6 +3,7 @@
#include "ultra64.h"
#include "ultra64/gbi.h"
+#include "alignment.h"
#include "sched.h"
#include "thga.h"
#include "config.h"
diff --git a/include/inflate.h b/include/inflate.h
index f26f7e496..6da7255f5 100644
--- a/include/inflate.h
+++ b/include/inflate.h
@@ -1,8 +1,8 @@
#ifndef INFLATE_H
#define INFLATE_H
-#include "libc/stddef.h"
-#include "libc/stdint.h"
+#include "stddef.h"
+#include "stdint.h"
#include "ultra64.h"
void gzip_decompress(uintptr_t romStart, u8* dst, size_t size);
diff --git a/include/is_debug.h b/include/is_debug.h
index e5f03bb78..18125dc16 100644
--- a/include/is_debug.h
+++ b/include/is_debug.h
@@ -1,7 +1,7 @@
#ifndef IS_DEBUG_H
#define IS_DEBUG_H
-#include "libc/stddef.h"
+#include "stddef.h"
#include "attributes.h"
#if DEBUG_FEATURES
diff --git a/include/libc64/sprintf.h b/include/libc64/sprintf.h
index 485f938f5..55e10045e 100644
--- a/include/libc64/sprintf.h
+++ b/include/libc64/sprintf.h
@@ -1,8 +1,6 @@
#ifndef LIBC64_SPRINTF_H
#define LIBC64_SPRINTF_H
-#include "ultra64.h"
-
#include "stdarg.h"
int vsprintf(char* dst, const char* fmt, va_list args);
diff --git a/include/padmgr.h b/include/padmgr.h
index b419ae4ab..c477b0d79 100644
--- a/include/padmgr.h
+++ b/include/padmgr.h
@@ -4,7 +4,6 @@
#include "ultra64.h"
#include "libu64/pad.h"
#include "irqmgr.h"
-#include "versions.h"
typedef enum ControllerPakType {
CONT_PAK_NONE,
diff --git a/include/romfile.h b/include/romfile.h
index 49b5f202d..31edd72f3 100644
--- a/include/romfile.h
+++ b/include/romfile.h
@@ -1,7 +1,7 @@
#ifndef ROMFILE_H
#define ROMFILE_H
-#include "ultra64.h"
+#include "stdint.h"
typedef struct RomFile {
/* 0x00 */ uintptr_t vromStart;
diff --git a/include/sfx.h b/include/sfx.h
index ebadc7808..917bb464a 100644
--- a/include/sfx.h
+++ b/include/sfx.h
@@ -4,7 +4,7 @@
#include "ultra64.h"
#include "versions.h"
#include "z64math.h"
-#include "libc/assert.h"
+#include "assert.h"
#define MAX_CHANNELS_PER_BANK 3
diff --git a/include/tex_len.h b/include/tex_len.h
new file mode 100644
index 000000000..f6e54a82d
--- /dev/null
+++ b/include/tex_len.h
@@ -0,0 +1,14 @@
+#ifndef TEX_LEN_H
+#define TEX_LEN_H
+
+/**
+ * Compute a length for an array holding a texture.
+ * `type` is the array's element type.
+ * `width`, `height` are the texture dimensions.
+ * `bpp` is the texture's pixel size, in bits per pixels.
+ * The calculation computes the size of the texture in bits `width * height * bpp`,
+ * then divides by 8 to get the size in bytes, then divides by the element type size.
+ */
+#define TEX_LEN(type, width, height, bpp) ((width) * (height) * (bpp) / 8 / sizeof(type))
+
+#endif
diff --git a/include/tha.h b/include/tha.h
index 941321b82..6a40db54c 100644
--- a/include/tha.h
+++ b/include/tha.h
@@ -2,7 +2,6 @@
#define THA_H
#include "ultra64.h"
-#include "alignment.h"
typedef struct TwoHeadArena {
/* 0x00 */ size_t size;
diff --git a/include/translation.h b/include/translation.h
index 658332670..506b7a5b6 100644
--- a/include/translation.h
+++ b/include/translation.h
@@ -11,6 +11,6 @@
* Note: This translation macro exists for quality of life purposes.
* The original game would not have had a macro like this.
*/
-#define T(jp, en) jp
+#define T(jp, en) en
#endif
diff --git a/include/ultra64.h b/include/ultra64.h
index 4a8696a84..c7607ac92 100644
--- a/include/ultra64.h
+++ b/include/ultra64.h
@@ -1,14 +1,14 @@
#ifndef ULTRA64_H
#define ULTRA64_H
-#include "libc/assert.h"
-#include "libc/math.h"
-#include "libc/stdarg.h"
-#include "libc/stdbool.h"
-#include "libc/stddef.h"
-#include "libc/stdint.h"
-#include "libc/stdlib.h"
-#include "libc/string.h"
+#include "assert.h"
+#include "math.h"
+#include "stdarg.h"
+#include "stdbool.h"
+#include "stddef.h"
+#include "stdint.h"
+#include "stdlib.h"
+#include "string.h"
#include "ultra64/ultratypes.h"
#include "unk.h"
diff --git a/include/yaz0.h b/include/yaz0.h
index 52f5ba951..b42c8e3ff 100644
--- a/include/yaz0.h
+++ b/include/yaz0.h
@@ -1,8 +1,8 @@
#ifndef YAZ0_H
#define YAZ0_H
-#include "libc/stddef.h"
-#include "libc/stdint.h"
+#include "stddef.h"
+#include "stdint.h"
#include "ultra64.h"
void Yaz0_Decompress(uintptr_t romStart, u8* dst, size_t size);
diff --git a/include/z64.h b/include/z64.h
deleted file mode 100644
index bb2518e6e..000000000
--- a/include/z64.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef Z64_H
-#define Z64_H
-
-// TODO: This file still exists ONLY to provide neccesary headers to extracted assets.
-// After assets are modified to include the headers they need directly, delete this file.
-
-#include "array_count.h"
-#include "gfx.h"
-#include "sequence.h"
-#include "sys_matrix.h"
-#include "ultra64.h"
-#include "z64play.h"
-#include "z64animation.h"
-#include "z64animation_legacy.h"
-#include "z64curve.h"
-#include "z64skin.h"
-#include "z64player.h"
-#include "z64ocarina.h"
-
-#endif
diff --git a/include/z64actor.h b/include/z64actor.h
index 27da674e4..10c27bf20 100644
--- a/include/z64actor.h
+++ b/include/z64actor.h
@@ -2,7 +2,6 @@
#define Z64ACTOR_H
#include "color.h"
-#include "romfile.h"
#include "z64actor_profile.h"
#include "z64animation.h"
#include "z64math.h"
diff --git a/include/z64bgcheck.h b/include/z64bgcheck.h
index 521a97aa2..490a3d337 100644
--- a/include/z64bgcheck.h
+++ b/include/z64bgcheck.h
@@ -215,7 +215,7 @@ typedef enum ConveyorSpeed {
} ConveyorSpeed;
#define CONVEYOR_DIRECTION_TO_BINANG(conveyorDirection) ((conveyorDirection) * (0x10000 / 64))
-#define CONVEYOR_DIRECTION_FROM_BINANG(conveyorDirectionBinang) ((conveyorDirectionBinang) * (64 / 0x10000))
+#define CONVEYOR_DIRECTION_FROM_BINANG(conveyorDirectionBinang) ((conveyorDirectionBinang) / (0x10000 / 64))
#define SURFACETYPE0(bgCamIndex, exitIndex, floorType, unk18, wallType, floorProperty, isSoft, isHorseBlocked) \
((((bgCamIndex) & 0xFF) << 0) | \
diff --git a/include/z64curve.h b/include/z64curve.h
index 8fb83242b..3ca0eac13 100644
--- a/include/z64curve.h
+++ b/include/z64curve.h
@@ -1,8 +1,7 @@
#ifndef Z64_CURVE_H
#define Z64_CURVE_H
-#include "ultra64/ultratypes.h"
-#include "z64math.h"
+#include "ultra64.h"
struct PlayState;
struct Actor;
diff --git a/include/z64draw.h b/include/z64draw.h
index 51250ed8c..95c5aa234 100644
--- a/include/z64draw.h
+++ b/include/z64draw.h
@@ -5,6 +5,6 @@
struct PlayState;
-void GetItem_Draw(struct PlayState* play, s16 drawId);
+void GetItem_Draw(struct PlayState* play, s16 giDrawId);
#endif
diff --git a/include/z64game.h b/include/z64game.h
index 9beb81ba7..e5a26305c 100644
--- a/include/z64game.h
+++ b/include/z64game.h
@@ -5,7 +5,6 @@
#include "ultra64/ultratypes.h"
#include "libu64/pad.h"
#include "gamealloc.h"
-#include "romfile.h"
#include "tha.h"
#include "config.h"
diff --git a/include/z64light.h b/include/z64light.h
index cb666ff75..ff6f732e1 100644
--- a/include/z64light.h
+++ b/include/z64light.h
@@ -4,7 +4,6 @@
#include "ultra64.h"
#include "ultra64/gbi.h"
#include "z64math.h"
-#include "color.h"
struct GraphicsContext;
struct PlayState;
diff --git a/include/z64pause.h b/include/z64pause.h
index 9f2ecb9d4..4af0512bf 100644
--- a/include/z64pause.h
+++ b/include/z64pause.h
@@ -52,6 +52,8 @@ typedef enum PauseMenuPage {
#define PAUSE_EQUIP_PLAYER_WIDTH 64
#define PAUSE_EQUIP_PLAYER_HEIGHT 112
+#define PAUSE_EQUIP_PLAYER_FRAG_HEIGHT (TMEM_SIZE / (PAUSE_EQUIP_PLAYER_WIDTH * G_IM_SIZ_16b_BYTES))
+#define PAUSE_EQUIP_PLAYER_FRAG_NUM (((PAUSE_EQUIP_PLAYER_HEIGHT - 1) / PAUSE_EQUIP_PLAYER_FRAG_HEIGHT) + 1)
#define PAUSE_EQUIP_BUFFER_SIZE sizeof(u16[PAUSE_EQUIP_PLAYER_HEIGHT][PAUSE_EQUIP_PLAYER_WIDTH])
#define PAUSE_PLAYER_SEGMENT_GAMEPLAY_KEEP_BUFFER_SIZE 0x5000
@@ -79,12 +81,19 @@ typedef enum PauseState {
/* 19 */ PAUSE_STATE_RESUME_GAMEPLAY // Handles returning to normal gameplay once the pause menu is visually closed
} PauseState;
+typedef enum PauseDebugState {
+ /* 0 */ PAUSE_DEBUG_STATE_CLOSED,
+ /* 1 */ PAUSE_DEBUG_STATE_INVENTORY_EDITOR_OPENING,
+ /* 2 */ PAUSE_DEBUG_STATE_INVENTORY_EDITOR_OPEN,
+ /* 3 */ PAUSE_DEBUG_STATE_FLAG_SET_OPEN
+} PauseDebugState;
+
#define IS_PAUSE_STATE_GAMEOVER(pauseCtx) \
(((pauseCtx)->state >= PAUSE_STATE_GAME_OVER_START) && ((pauseCtx)->state <= PAUSE_STATE_GAME_OVER_FINISH))
-#if ENABLE_INV_EDITOR || ENABLE_EVENT_EDITOR
+#if IS_INV_EDITOR_ENABLED || IS_EVENT_EDITOR_ENABLED
#define IS_PAUSED(pauseCtx) \
- (((pauseCtx)->state != PAUSE_STATE_OFF) || ((pauseCtx)->debugState != 0))
+ (((pauseCtx)->state != PAUSE_STATE_OFF) || ((pauseCtx)->debugState != PAUSE_DEBUG_STATE_CLOSED))
#else
#define IS_PAUSED(pauseCtx) \
((pauseCtx)->state != PAUSE_STATE_OFF)
@@ -99,7 +108,7 @@ typedef enum PauseMainState {
/* 4 */ PAUSE_MAIN_STATE_SONG_PROMPT_INIT, // Start the prompt for the player to play the song.
/* 5 */ PAUSE_MAIN_STATE_SONG_PROMPT, // Waiting for the player to play the song.
/* 6 */ PAUSE_MAIN_STATE_SONG_PROMPT_DONE, // The song prompt is done, the player either played the song successfully or made a mistake.
- /* 7 */ PAUSE_MAIN_STATE_7,
+ /* 7 */ PAUSE_MAIN_STATE_EQUIP_CHANGED,
/* 8 */ PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG, // Like PAUSE_MAIN_STATE_IDLE, but the quest page is active and the cursor is positioned on a song.
/* 9 */ PAUSE_MAIN_STATE_SONG_PLAYBACK_START // Start playing the song back to the player.
} PauseMainState;
diff --git a/include/z64player.h b/include/z64player.h
index 25ddc939e..733565de3 100644
--- a/include/z64player.h
+++ b/include/z64player.h
@@ -270,18 +270,17 @@ typedef enum PlayerDoorType {
/* 3 */ PLAYER_DOORTYPE_FAKE
} PlayerDoorType;
-typedef enum PlayerFacePart {
- /* 0 */ PLAYER_FACEPART_EYES,
- /* 1 */ PLAYER_FACEPART_MOUTH,
- /* 2 */ PLAYER_FACEPART_MAX
-} PlayerFacePart;
+typedef struct PlayerFaceIndices {
+ /* 0x0 */ u8 eyeIndex;
+ /* 0x1 */ u8 mouthIndex;
+} PlayerFaceIndices; // size = 0x2
typedef enum PlayerEyes {
/* 0 */ PLAYER_EYES_OPEN,
/* 1 */ PLAYER_EYES_HALF,
/* 2 */ PLAYER_EYES_CLOSED,
- /* 3 */ PLAYER_EYES_LEFT,
- /* 4 */ PLAYER_EYES_RIGHT,
+ /* 3 */ PLAYER_EYES_RIGHT,
+ /* 4 */ PLAYER_EYES_LEFT,
/* 5 */ PLAYER_EYES_WIDE,
/* 6 */ PLAYER_EYES_DOWN,
/* 7 */ PLAYER_EYES_WINCING,
@@ -303,12 +302,12 @@ typedef enum PlayerFace {
/* 3 */ PLAYER_FACE_NEUTRAL_2, // same as `PLAYER_FACE_NEUTRAL`
/* 4 */ PLAYER_FACE_NEUTRAL_BLINKING_HALF_2, // same as `PLAYER_FACE_NEUTRAL_BLINKING_HALF`
/* 5 */ PLAYER_FACE_NEUTRAL_BLINKING_CLOSED_2, // same as `PLAYER_FACE_NEUTRAL_BLINKING_CLOSED`
- /* 6 */ PLAYER_FACE_LOOK_RIGHT, // eyes looking right and mouth closed
+ /* 6 */ PLAYER_FACE_LOOK_LEFT, // eyes looking left and mouth closed
/* 7 */ PLAYER_FACE_SURPRISED, // wide eyes and grimacing mouth
/* 8 */ PLAYER_FACE_HURT, // eyes wincing in pain and mouth open
/* 9 */ PLAYER_FACE_GASP, // eyes and mouth open
- /* 10 */ PLAYER_FACE_LOOK_LEFT, // eyes looking left and mouth closed
- /* 11 */ PLAYER_FACE_LOOK_RIGHT_2, // duplicate of `PLAYER_FACE_LOOK_RIGHT`
+ /* 10 */ PLAYER_FACE_LOOK_RIGHT, // eyes looking right and mouth closed
+ /* 11 */ PLAYER_FACE_LOOK_LEFT_2, // duplicate of `PLAYER_FACE_LOOK_LEFT`
/* 12 */ PLAYER_FACE_EYES_CLOSED_MOUTH_OPEN, // eyes closed and mouth open
/* 13 */ PLAYER_FACE_OPENING, // eyes and mouth both halfway open
/* 14 */ PLAYER_FACE_EYES_AND_MOUTH_OPEN, // eyes and mouth open
diff --git a/include/z64skybox.h b/include/z64skybox.h
index 2d7bb2923..2fe11d827 100644
--- a/include/z64skybox.h
+++ b/include/z64skybox.h
@@ -4,8 +4,8 @@
#include "ultra64/ultratypes.h"
#include "ultra64/gbi.h"
+#include "romfile.h"
#include "z64math.h"
-#include "z64dma.h" // for RomFile
struct GameState;
struct GraphicsContext;
diff --git a/include/z64ss_sram.h b/include/z64ss_sram.h
index ffd628239..416844626 100644
--- a/include/z64ss_sram.h
+++ b/include/z64ss_sram.h
@@ -1,7 +1,7 @@
#ifndef Z64SS_SRAM_H
#define Z64SS_SRAM_H
-#include "libc/stddef.h"
+#include "stddef.h"
#include "ultra64/ultratypes.h"
void SsSram_Init(s32 addr, u8 handleType, u8 handleDomain, u8 handleLatency, u8 handlePageSize, u8 handleRelDuration,
diff --git a/include/z64transition.h b/include/z64transition.h
index d46683d2b..f867aed09 100644
--- a/include/z64transition.h
+++ b/include/z64transition.h
@@ -2,7 +2,7 @@
#define Z64TRANSITION_H
#include "ultra64/ultratypes.h"
-#include "ultra64/gbi.h" // for Gfx
+#include "ultra64/gbi.h"
#include "transition_circle.h"
#include "transition_fade.h"
#include "transition_triforce.h"
diff --git a/include/z_lib.h b/include/z_lib.h
index 248ccc686..40bb63c6d 100644
--- a/include/z_lib.h
+++ b/include/z_lib.h
@@ -1,7 +1,7 @@
#ifndef Z_LIB_H
#define Z_LIB_H
-#include "libc/stddef.h"
+#include "stddef.h"
#include "libu64/pad.h"
#include "z64math.h"
#include "color.h"
diff --git a/include/z_locale.h b/include/z_locale.h
index 7afcb33db..5be416e82 100644
--- a/include/z_locale.h
+++ b/include/z_locale.h
@@ -2,7 +2,6 @@
#define Z_LOCALE_H
#include "ultra64/ultratypes.h"
-#include "region.h"
extern s32 gCurrentRegion;
diff --git a/requirements.txt b/requirements.txt
index e510f0d93..f9601633c 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -2,6 +2,7 @@
crunch64>=0.5.1,<1.0.0
ipl3checksum>=1.2.0,<2.0.0
pyyaml>=6.0.1,<7.0.0
+pygfxd>=1.0.3,<2.0.0
# asm-differ
argcomplete
diff --git a/spec/spec b/spec/spec
index 1ccc3ad34..b5d3cc23b 100644
--- a/spec/spec
+++ b/spec/spec
@@ -684,31 +684,30 @@ beginseg
#if OOT_VERSION < NTSC_1_1 || !PLATFORM_N64
pad_text
#endif
- include "$(BUILD_DIR)/src/audio/lib/data.o"
- include "$(BUILD_DIR)/src/audio/lib/synthesis.o"
- include "$(BUILD_DIR)/src/audio/lib/heap.o"
- include "$(BUILD_DIR)/src/audio/lib/load.o"
- include "$(BUILD_DIR)/src/audio/lib/thread.o"
- include "$(BUILD_DIR)/src/audio/lib/dcache.o"
- include "$(BUILD_DIR)/src/audio/lib/aisetnextbuf.o"
+ include "$(BUILD_DIR)/src/audio/internal/data.o"
+ include "$(BUILD_DIR)/src/audio/internal/synthesis.o"
+ include "$(BUILD_DIR)/src/audio/internal/heap.o"
+ include "$(BUILD_DIR)/src/audio/internal/load.o"
+ include "$(BUILD_DIR)/src/audio/internal/thread.o"
+ include "$(BUILD_DIR)/src/audio/internal/os.o"
#if OOT_PAL_N64
pad_text
pad_text
pad_text
#endif
- include "$(BUILD_DIR)/src/audio/lib/playback.o"
- include "$(BUILD_DIR)/src/audio/lib/effects.o"
- include "$(BUILD_DIR)/src/audio/lib/seqplayer.o"
- include "$(BUILD_DIR)/src/audio/general.o"
+ include "$(BUILD_DIR)/src/audio/internal/playback.o"
+ include "$(BUILD_DIR)/src/audio/internal/effects.o"
+ include "$(BUILD_DIR)/src/audio/internal/seqplayer.o"
+ include "$(BUILD_DIR)/src/audio/game/general.o"
#if !PLATFORM_N64 && !DEBUG_FEATURES
pad_text
#endif
- include "$(BUILD_DIR)/src/audio/sfx_params.o"
- include "$(BUILD_DIR)/src/audio/sfx.o"
- include "$(BUILD_DIR)/src/audio/sequence.o"
- include "$(BUILD_DIR)/src/audio/data.o"
- include "$(BUILD_DIR)/src/audio/session_config.o"
- include "$(BUILD_DIR)/src/audio/session_init.o"
+ include "$(BUILD_DIR)/src/audio/game/sfx_params.o"
+ include "$(BUILD_DIR)/src/audio/game/sfx.o"
+ include "$(BUILD_DIR)/src/audio/game/sequence.o"
+ include "$(BUILD_DIR)/src/audio/game/data.o"
+ include "$(BUILD_DIR)/src/audio/game/session_config.o"
+ include "$(BUILD_DIR)/src/audio/game/session_init.o"
// libu64
#if PLATFORM_N64
diff --git a/src/audio/data.c b/src/audio/game/data.c
similarity index 100%
rename from src/audio/data.c
rename to src/audio/game/data.c
diff --git a/src/audio/debug.inc.c b/src/audio/game/debug.inc.c
similarity index 100%
rename from src/audio/debug.inc.c
rename to src/audio/game/debug.inc.c
diff --git a/src/audio/general.c b/src/audio/game/general.c
similarity index 100%
rename from src/audio/general.c
rename to src/audio/game/general.c
diff --git a/src/audio/sequence.c b/src/audio/game/sequence.c
similarity index 100%
rename from src/audio/sequence.c
rename to src/audio/game/sequence.c
diff --git a/src/audio/session_config.c b/src/audio/game/session_config.c
similarity index 100%
rename from src/audio/session_config.c
rename to src/audio/game/session_config.c
diff --git a/src/audio/session_init.c b/src/audio/game/session_init.c
similarity index 97%
rename from src/audio/session_init.c
rename to src/audio/game/session_init.c
index 3c3d9c4ae..b8bc1924c 100644
--- a/src/audio/session_init.c
+++ b/src/audio/game/session_init.c
@@ -1,3 +1,4 @@
+#include "alignment.h"
#include "array_count.h"
#include "buffers.h"
#include "z64audio.h"
diff --git a/src/audio/sfx.c b/src/audio/game/sfx.c
similarity index 100%
rename from src/audio/sfx.c
rename to src/audio/game/sfx.c
diff --git a/src/audio/sfx_params.c b/src/audio/game/sfx_params.c
similarity index 100%
rename from src/audio/sfx_params.c
rename to src/audio/game/sfx_params.c
diff --git a/src/audio/lib/data.c b/src/audio/internal/data.c
similarity index 100%
rename from src/audio/lib/data.c
rename to src/audio/internal/data.c
diff --git a/src/audio/lib/effects.c b/src/audio/internal/effects.c
similarity index 100%
rename from src/audio/lib/effects.c
rename to src/audio/internal/effects.c
diff --git a/src/audio/lib/heap.c b/src/audio/internal/heap.c
similarity index 100%
rename from src/audio/lib/heap.c
rename to src/audio/internal/heap.c
diff --git a/src/audio/lib/load.c b/src/audio/internal/load.c
similarity index 95%
rename from src/audio/lib/load.c
rename to src/audio/internal/load.c
index ebd968ae9..91c25fabf 100644
--- a/src/audio/lib/load.c
+++ b/src/audio/internal/load.c
@@ -1,3 +1,8 @@
+/**
+ * Original Filename: system.c
+ */
+
+#include "alignment.h"
#include "array_count.h"
#include "attributes.h"
#include "buffers.h"
@@ -77,6 +82,9 @@ void* sUnusedHandler = NULL;
s32 gAudioContextInitialized = false;
+/**
+ * original name: Nas_WaveDmaFrameWork
+ */
void AudioLoad_DecreaseSampleDmaTtls(void) {
u32 i;
@@ -109,6 +117,9 @@ void AudioLoad_DecreaseSampleDmaTtls(void) {
gAudioCtx.unused2628 = 0;
}
+/**
+ * original name:Nas_WaveDmaCallBack
+ */
void* AudioLoad_DmaSampleData(u32 devAddr, u32 size, s32 arg2, u8* dmaIndexRef, s32 medium) {
s32 pad1;
SampleDma* dma;
@@ -203,6 +214,9 @@ void* AudioLoad_DmaSampleData(u32 devAddr, u32 size, s32 arg2, u8* dmaIndexRef,
return (devAddr - dmaDevAddr) + dma->ramAddr;
}
+/**
+ * original name: Nas_WaveDmaNew
+ */
void AudioLoad_InitSampleDmaBuffers(s32 numNotes) {
SampleDma* dma;
s32 i;
@@ -272,6 +286,9 @@ void AudioLoad_InitSampleDmaBuffers(s32 numNotes) {
gAudioCtx.sampleDmaReuseQueue2WrPos = gAudioCtx.sampleDmaCount - gAudioCtx.sampleDmaListSize1;
}
+/**
+ * original name: Nas_CheckIDbank
+ */
s32 AudioLoad_IsFontLoadComplete(s32 fontId) {
if (fontId == 0xFF) {
return true;
@@ -284,6 +301,9 @@ s32 AudioLoad_IsFontLoadComplete(s32 fontId) {
}
}
+/**
+ * original name: Nas_CheckIDseq
+ */
s32 AudioLoad_IsSeqLoadComplete(s32 seqId) {
if (seqId == 0xFF) {
return true;
@@ -296,6 +316,9 @@ s32 AudioLoad_IsSeqLoadComplete(s32 seqId) {
}
}
+/**
+ * original name: Nas_CheckIDwave
+ */
s32 AudioLoad_IsSampleLoadComplete(s32 sampleBankId) {
if (sampleBankId == 0xFF) {
return true;
@@ -309,18 +332,27 @@ s32 AudioLoad_IsSampleLoadComplete(s32 sampleBankId) {
}
}
+/**
+ * original name: Nas_WriteIDbank
+ */
void AudioLoad_SetFontLoadStatus(s32 fontId, s32 loadStatus) {
if ((fontId != 0xFF) && (gAudioCtx.fontLoadStatus[fontId] != LOAD_STATUS_PERMANENTLY_LOADED)) {
gAudioCtx.fontLoadStatus[fontId] = loadStatus;
}
}
+/**
+ * original name: Nas_WriteIDseq
+ */
void AudioLoad_SetSeqLoadStatus(s32 seqId, s32 loadStatus) {
if ((seqId != 0xFF) && (gAudioCtx.seqLoadStatus[seqId] != LOAD_STATUS_PERMANENTLY_LOADED)) {
gAudioCtx.seqLoadStatus[seqId] = loadStatus;
}
}
+/**
+ * original name: Nas_WriteIDwave
+ */
void AudioLoad_SetSampleFontLoadStatusAndApplyCaches(s32 sampleBankId, s32 loadStatus) {
if (sampleBankId != 0xFF) {
if (gAudioCtx.sampleFontLoadStatus[sampleBankId] != LOAD_STATUS_PERMANENTLY_LOADED) {
@@ -334,12 +366,18 @@ void AudioLoad_SetSampleFontLoadStatusAndApplyCaches(s32 sampleBankId, s32 loadS
}
}
+/**
+ * original name: Nas_WriteIDwaveOnly
+ */
void AudioLoad_SetSampleFontLoadStatus(s32 sampleBankId, s32 loadStatus) {
if ((sampleBankId != 0xFF) && (gAudioCtx.sampleFontLoadStatus[sampleBankId] != LOAD_STATUS_PERMANENTLY_LOADED)) {
gAudioCtx.sampleFontLoadStatus[sampleBankId] = loadStatus;
}
}
+/**
+ * original name: Nas_BankHeaderInit
+ */
void AudioLoad_InitTable(AudioTable* table, u32 romAddr, u16 unkMediumParam) {
s32 i;
@@ -353,6 +391,9 @@ void AudioLoad_InitTable(AudioTable* table, u32 romAddr, u16 unkMediumParam) {
}
}
+/**
+ * original name: Nas_PreLoadBank
+ */
SoundFontData* AudioLoad_SyncLoadSeqFonts(s32 seqId, u32* outDefaultFontId) {
s32 pad[2];
s32 index;
@@ -379,6 +420,9 @@ SoundFontData* AudioLoad_SyncLoadSeqFonts(s32 seqId, u32* outDefaultFontId) {
return fontData;
}
+/**
+ * original name: Nas_PreLoadSeq
+ */
void AudioLoad_SyncLoadSeqParts(s32 seqId, s32 arg1) {
s32 pad;
u32 defaultFontId;
@@ -393,6 +437,9 @@ void AudioLoad_SyncLoadSeqParts(s32 seqId, s32 arg1) {
}
}
+/**
+ * original name: __Nas_LoadVoice_Inner
+ */
s32 AudioLoad_SyncLoadSample(Sample* sample, s32 fontId) {
void* sampleAddr;
@@ -417,6 +464,9 @@ s32 AudioLoad_SyncLoadSample(Sample* sample, s32 fontId) {
//! @bug Missing return, but the return value is never used so it's fine.
}
+/**
+ * original name: Nas_LoadVoice
+ */
s32 AudioLoad_SyncLoadInstrument(s32 fontId, s32 instId, s32 drumId) {
if (instId < 0x7F) {
Instrument* instrument = Audio_GetInstrumentInner(fontId, instId);
@@ -443,24 +493,39 @@ s32 AudioLoad_SyncLoadInstrument(s32 fontId, s32 instId, s32 drumId) {
}
}
+/**
+ * original name: Nas_PreLoad_BG
+ */
void AudioLoad_AsyncLoad(s32 tableType, s32 id, s32 nChunks, s32 retData, OSMesgQueue* retQueue) {
if (AudioLoad_AsyncLoadInner(tableType, id, nChunks, retData, retQueue) == NULL) {
osSendMesg(retQueue, (OSMesg)0xFFFFFFFF, OS_MESG_NOBLOCK);
}
}
+/**
+ * original name: Nas_PreLoadSeq_BG
+ */
void AudioLoad_AsyncLoadSeq(s32 seqId, s32 arg1, s32 retData, OSMesgQueue* retQueue) {
AudioLoad_AsyncLoad(SEQUENCE_TABLE, seqId, 0, retData, retQueue);
}
+/**
+ * original name: Nas_PreLoadWave_BG
+ */
void AudioLoad_AsyncLoadSampleBank(s32 sampleBankId, s32 arg1, s32 retData, OSMesgQueue* retQueue) {
AudioLoad_AsyncLoad(SAMPLE_TABLE, sampleBankId, 0, retData, retQueue);
}
+/**
+ * original name: Nas_PreLoadBank_BG
+ */
void AudioLoad_AsyncLoadFont(s32 fontId, s32 arg1, s32 retData, OSMesgQueue* retQueue) {
AudioLoad_AsyncLoad(FONT_TABLE, fontId, 0, retData, retQueue);
}
+/**
+ * original name: Nas_SeqToBank
+ */
u8* AudioLoad_GetFontsForSequence(s32 seqId, u32* outNumFonts) {
s32 index = ((u16*)gAudioCtx.sequenceFontTable)[seqId];
@@ -471,6 +536,9 @@ u8* AudioLoad_GetFontsForSequence(s32 seqId, u32* outNumFonts) {
return &gAudioCtx.sequenceFontTable[index];
}
+/**
+ * original name: Nas_FlushBank
+ */
void AudioLoad_DiscardSeqFonts(s32 seqId) {
s32 fontId;
s32 index = ((u16*)gAudioCtx.sequenceFontTable)[seqId];
@@ -486,6 +554,9 @@ void AudioLoad_DiscardSeqFonts(s32 seqId) {
}
}
+/**
+ * original name: __Kill_Bank
+ */
void AudioLoad_DiscardFont(s32 fontId) {
u32 i;
AudioCache* pool = &gAudioCtx.fontCache;
@@ -507,6 +578,9 @@ void AudioLoad_DiscardFont(s32 fontId) {
AudioHeap_DiscardFont(fontId);
}
+/**
+ * original name: Nas_StartMySeq
+ */
s32 AudioLoad_SyncInitSeqPlayer(s32 playerIdx, s32 seqId, s32 arg2) {
if (gAudioCtx.resetTimer != 0) {
return 0;
@@ -520,6 +594,9 @@ s32 AudioLoad_SyncInitSeqPlayer(s32 playerIdx, s32 seqId, s32 arg2) {
//! The callers of this function do not use the return value, so it's fine.
}
+/**
+ * original name: Nas_StartSeq_Skip
+ */
s32 AudioLoad_SyncInitSeqPlayerSkipTicks(s32 playerIdx, s32 seqId, s32 skipTicks) {
if (gAudioCtx.resetTimer != 0) {
return 0;
@@ -530,6 +607,9 @@ s32 AudioLoad_SyncInitSeqPlayerSkipTicks(s32 playerIdx, s32 seqId, s32 skipTicks
//! @bug Missing return, see comment in AudioLoad_SyncInitSeqPlayer above.
}
+/**
+ * original name: __Nas_StartSeq
+ */
s32 AudioLoad_SyncInitSeqPlayerInternal(s32 playerIdx, s32 seqId, s32 arg2) {
SequencePlayer* seqPlayer = &gAudioCtx.seqPlayers[playerIdx];
u8* seqData;
@@ -572,6 +652,9 @@ s32 AudioLoad_SyncInitSeqPlayerInternal(s32 playerIdx, s32 seqId, s32 arg2) {
//! @bug missing return (but the return value is not used so it's not UB)
}
+/**
+ * original name: __Load_Seq
+ */
u8* AudioLoad_SyncLoadSeq(s32 seqId) {
s32 pad;
s32 didAllocate;
@@ -583,10 +666,16 @@ u8* AudioLoad_SyncLoadSeq(s32 seqId) {
return AudioLoad_SyncLoad(SEQUENCE_TABLE, seqId, &didAllocate);
}
+/**
+ * original name: __Load_Wave_Check
+ */
u32 AudioLoad_GetSampleBank(u32 sampleBankId, u32* outMedium) {
return AudioLoad_TrySyncLoadSampleBank(sampleBankId, outMedium, true);
}
+/**
+ * original name: __Load_Wave
+ */
u32 AudioLoad_TrySyncLoadSampleBank(u32 sampleBankId, u32* outMedium, s32 noLoad) {
void* ramAddr;
AudioTable* sampleBankTable;
@@ -619,6 +708,9 @@ u32 AudioLoad_TrySyncLoadSampleBank(u32 sampleBankId, u32* outMedium, s32 noLoad
return sampleBankTable->entries[realTableId].romAddr;
}
+/**
+ * original name: __Load_Ctrl
+ */
SoundFontData* AudioLoad_SyncLoadFont(u32 fontId) {
SoundFontData* fontData;
s32 sampleBankId1;
@@ -658,6 +750,9 @@ SoundFontData* AudioLoad_SyncLoadFont(u32 fontId) {
return fontData;
}
+/**
+ * original name: __Load_Bank
+ */
void* AudioLoad_SyncLoad(u32 tableType, u32 id, s32* didAllocate) {
u32 size;
AudioTable* table;
@@ -742,6 +837,9 @@ void* AudioLoad_SyncLoad(u32 tableType, u32 id, s32* didAllocate) {
return ramAddr;
}
+/**
+ * original name: __Link_BankNum
+ */
u32 AudioLoad_GetRealTableIndex(s32 tableType, u32 id) {
AudioTable* table = AudioLoad_GetLoadTable(tableType);
@@ -752,6 +850,9 @@ u32 AudioLoad_GetRealTableIndex(s32 tableType, u32 id) {
return id;
}
+/**
+ * original name: __Check_Cache
+ */
void* AudioLoad_SearchCaches(s32 tableType, s32 id) {
void* ramAddr;
@@ -768,6 +869,10 @@ void* AudioLoad_SearchCaches(s32 tableType, s32 id) {
return NULL;
}
+/**
+ * Animal Crossing's equivalent to this function is __Get_ArcHeader.
+ * This name must be new, because ARC files are GameCube speicifc.
+ */
AudioTable* AudioLoad_GetLoadTable(s32 tableType) {
AudioTable* table;
@@ -793,7 +898,9 @@ AudioTable* AudioLoad_GetLoadTable(s32 tableType) {
/**
* Read and extract information from soundFont binary loaded into ram.
- * Also relocate offsets into pointers within this loaded soundFont
+ * Also relocate offsets into pointers within this loaded soundFont.
+ *
+ * original name: Nas_BankOfsToAddr_Inner
*
* @param fontId index of font being processed
* @param fontDataStartAddr ram address of raw soundfont binary loaded into cache
@@ -923,6 +1030,9 @@ void AudioLoad_RelocateFont(s32 fontId, SoundFontData* fontDataStartAddr, Sample
gAudioCtx.soundFontList[fontId].instruments = (Instrument**)(fontData + 2);
}
+/**
+ * original name: Nas_FastCopy
+ */
void AudioLoad_SyncDma(u32 devAddr, u8* ramAddr, u32 size, s32 medium) {
OSMesgQueue* msgQueue = &gAudioCtx.syncDmaQueue;
OSIoMesg* ioMesg = &gAudioCtx.syncDmaIoMesg;
@@ -947,9 +1057,15 @@ void AudioLoad_SyncDma(u32 devAddr, u8* ramAddr, u32 size, s32 medium) {
}
}
+/**
+ * original name: Nas_FastDiskCopy
+ */
void AudioLoad_SyncDmaUnkMedium(u32 devAddr, u8* addr, u32 size, s32 unkMediumParam) {
}
+/**
+ * original name: Nas_StartDma
+ */
s32 AudioLoad_Dma(OSIoMesg* mesg, u32 priority, s32 direction, u32 devAddr, void* ramAddr, u32 size,
OSMesgQueue* reqQueue, s32 medium, const char* dmaFuncType) {
OSPiHandle* handle;
@@ -987,15 +1103,24 @@ s32 AudioLoad_Dma(OSIoMesg* mesg, u32 priority, s32 direction, u32 devAddr, void
return 0;
}
+/**
+ * original name: __OfsToLbaOfs
+ */
void AudioLoad_Unused1(void) {
}
+/**
+ * original name: EmemLoad
+ */
void AudioLoad_SyncLoadSimple(u32 tableType, u32 fontId) {
s32 didAllocate;
AudioLoad_SyncLoad(tableType, fontId, &didAllocate);
}
+/**
+ * original name: __Load_Bank_BG
+ */
void* AudioLoad_AsyncLoadInner(s32 tableType, s32 id, s32 nChunks, s32 retData, OSMesgQueue* retQueue) {
u32 size;
AudioTable* table;
@@ -1102,20 +1227,32 @@ void* AudioLoad_AsyncLoadInner(s32 tableType, s32 id, s32 nChunks, s32 retData,
return ramAddr;
}
+/**
+ * original name: Nas_BgDmaFrameWork
+ */
void AudioLoad_ProcessLoads(s32 resetStatus) {
AudioLoad_ProcessSlowLoads(resetStatus);
AudioLoad_ProcessSamplePreloads(resetStatus);
AudioLoad_ProcessAsyncLoads(resetStatus);
}
+/**
+ * original name: Nas_SetRomHandler
+ */
void AudioLoad_SetDmaHandler(DmaHandler callback) {
sDmaHandler = callback;
}
+/**
+ * original name: Nas_SetRomHandler
+ */
void AudioLoad_SetUnusedHandler(void* callback) {
sUnusedHandler = callback;
}
+/**
+ * original name: __SetVlute
+ */
void AudioLoad_InitSoundFont(s32 fontId) {
SoundFont* font = &gAudioCtx.soundFontList[fontId];
AudioTableEntry* entry = &gAudioCtx.soundFontTable->entries[fontId];
@@ -1127,6 +1264,9 @@ void AudioLoad_InitSoundFont(s32 fontId) {
font->numSfx = entry->shortData3;
}
+/**
+ * original name: Nas_InitAudio
+ */
void AudioLoad_Init(void* heap, u32 heapSize) {
s32 pad[18];
s32 numFonts;
@@ -1262,11 +1402,17 @@ void AudioLoad_Init(void* heap, u32 heapSize) {
osSendMesg(gAudioCtx.taskStartQueueP, (OSMesg)gAudioCtx.totalTaskCount, OS_MESG_NOBLOCK);
}
+/**
+ * original name: LpsInit
+ */
void AudioLoad_InitSlowLoads(void) {
gAudioCtx.slowLoads[0].state = SLOW_LOAD_STATE_WAITING;
gAudioCtx.slowLoads[1].state = SLOW_LOAD_STATE_WAITING;
}
+/**
+ * original name: VoiceLoad
+ */
s32 AudioLoad_SlowLoadSample(s32 fontId, s32 instId, s8* status) {
Sample* sample;
AudioSlowLoad* slowLoad;
@@ -1317,6 +1463,9 @@ s32 AudioLoad_SlowLoadSample(s32 fontId, s32 instId, s8* status) {
return 0;
}
+/**
+ * original name: __GetWaveTable
+ */
Sample* AudioLoad_GetFontSample(s32 fontId, s32 instId) {
Sample* sample;
@@ -1348,6 +1497,9 @@ Sample* AudioLoad_GetFontSample(s32 fontId, s32 instId) {
void AudioLoad_Unused2(void) {
}
+/**
+ * original name: __SwapLoadLps
+ */
void AudioLoad_FinishSlowLoad(AudioSlowLoad* slowLoad) {
Sample* sample;
@@ -1365,6 +1517,9 @@ void AudioLoad_FinishSlowLoad(AudioSlowLoad* slowLoad) {
sample->medium = MEDIUM_RAM;
}
+/**
+ * original name: LpsDma
+ */
void AudioLoad_ProcessSlowLoads(s32 resetStatus) {
AudioSlowLoad* slowLoad;
s32 i;
@@ -1414,6 +1569,9 @@ void AudioLoad_ProcessSlowLoads(s32 resetStatus) {
}
}
+/**
+ * original name: __Nas_SlowCopy
+ */
void AudioLoad_DmaSlowCopy(AudioSlowLoad* slowLoad, s32 size) {
Audio_InvalDCache(slowLoad->curRamAddr, size);
osCreateMesgQueue(&slowLoad->msgQueue, &slowLoad->msg, 1);
@@ -1421,9 +1579,15 @@ void AudioLoad_DmaSlowCopy(AudioSlowLoad* slowLoad, s32 size) {
&slowLoad->msgQueue, slowLoad->medium, "SLOWCOPY");
}
+/**
+ * original name: __Nas_SlowDiskCopy
+ */
void AudioLoad_DmaSlowCopyUnkMedium(s32 devAddr, u8* ramAddr, s32 size, s32 arg3) {
}
+/**
+ * original name: SeqLoad
+ */
s32 AudioLoad_SlowLoadSeq(s32 seqId, u8* ramAddr, s8* status) {
AudioSlowLoad* slowLoad;
AudioTable* seqTable;
@@ -1461,6 +1625,9 @@ s32 AudioLoad_SlowLoadSeq(s32 seqId, u8* ramAddr, s8* status) {
return 0;
}
+/**
+ * original name: Nas_BgCopyInit
+ */
void AudioLoad_InitAsyncLoads(void) {
s32 i;
@@ -1469,6 +1636,9 @@ void AudioLoad_InitAsyncLoads(void) {
}
}
+/**
+ * original name: Nas_BgCopyDisk
+ */
AudioAsyncLoad* AudioLoad_StartAsyncLoadUnkMedium(s32 unkMediumParam, u32 devAddr, void* ramAddr, s32 size, s32 medium,
s32 nChunks, OSMesgQueue* retQueue, s32 retMsg) {
AudioAsyncLoad* asyncLoad;
@@ -1484,6 +1654,9 @@ AudioAsyncLoad* AudioLoad_StartAsyncLoadUnkMedium(s32 unkMediumParam, u32 devAdd
return asyncLoad;
}
+/**
+ * original name: Nas_BgCopyReq
+ */
AudioAsyncLoad* AudioLoad_StartAsyncLoad(u32 devAddr, void* ramAddr, u32 size, s32 medium, s32 nChunks,
OSMesgQueue* retQueue, s32 retMsg) {
AudioAsyncLoad* asyncLoad;
@@ -1526,6 +1699,9 @@ AudioAsyncLoad* AudioLoad_StartAsyncLoad(u32 devAddr, void* ramAddr, u32 size, s
return asyncLoad;
}
+/**
+ * original name: Nas_BgCopyMain
+ */
void AudioLoad_ProcessAsyncLoads(s32 resetStatus) {
AudioAsyncLoad* asyncLoad;
s32 i;
@@ -1560,9 +1736,15 @@ void AudioLoad_ProcessAsyncLoads(s32 resetStatus) {
}
}
+/**
+ * original name: __BgCopyDisk
+ */
void AudioLoad_ProcessAsyncLoadUnkMedium(AudioAsyncLoad* asyncLoad, s32 resetStatus) {
}
+/**
+ * original name: __BgCopyFinishProcess
+ */
void AudioLoad_FinishAsyncLoad(AudioAsyncLoad* asyncLoad) {
u32 retMsg = asyncLoad->retMsg;
u32 fontId;
@@ -1603,6 +1785,9 @@ void AudioLoad_FinishAsyncLoad(AudioAsyncLoad* asyncLoad) {
osSendMesg(asyncLoad->retQueue, doneMsg, OS_MESG_NOBLOCK);
}
+/**
+ * original name: __BgCopySub
+ */
void AudioLoad_ProcessAsyncLoad(AudioAsyncLoad* asyncLoad, s32 resetStatus) {
AudioTable* sampleBankTable = gAudioCtx.sampleBankTable;
@@ -1651,6 +1836,9 @@ void AudioLoad_ProcessAsyncLoad(AudioAsyncLoad* asyncLoad, s32 resetStatus) {
asyncLoad->curRamAddr += asyncLoad->chunkSize;
}
+/**
+ * original name: __Nas_BgCopy
+ */
void AudioLoad_AsyncDma(AudioAsyncLoad* asyncLoad, u32 size) {
size = ALIGN16(size);
Audio_InvalDCache(asyncLoad->curRamAddr, size);
@@ -1659,6 +1847,9 @@ void AudioLoad_AsyncDma(AudioAsyncLoad* asyncLoad, u32 size) {
&asyncLoad->msgQueue, asyncLoad->medium, "BGCOPY");
}
+/**
+ * original name: __Nas_BgDiskCopy
+ */
void AudioLoad_AsyncDmaUnkMedium(u32 devAddr, void* ramAddr, u32 size, s16 arg3) {
}
@@ -1668,6 +1859,8 @@ void AudioLoad_AsyncDmaUnkMedium(u32 devAddr, void* ramAddr, u32 size, s16 arg3)
* TunedSample contains metadata on a sample used by a particular instrument/drum/sfx
* Also relocate offsets into pointers within this loaded TunedSample
*
+ * original name: __WaveTouch
+ *
* @param fontId index of font being processed
* @param fontData ram address of raw soundfont binary loaded into cache
* @param sampleBankReloc information on the sampleBank containing raw audio samples
@@ -1724,6 +1917,8 @@ void AudioLoad_RelocateSample(TunedSample* tunedSample, SoundFontData* fontData,
}
/**
+ * original name: Nas_BankOfsToAddr
+ *
* @param fontId index of font being processed
* @param fontData ram address of raw soundfont binary loaded into cache
* @param sampleBankReloc information on the sampleBank containing raw audio samples
@@ -1831,6 +2026,9 @@ void AudioLoad_RelocateFontAndPreloadSamples(s32 fontId, SoundFontData* fontData
}
}
+/**
+ * original name: Nas_CheckBgWave
+ */
s32 AudioLoad_ProcessSamplePreloads(s32 resetStatus) {
Sample* sample;
AudioPreloadReq* preload;
@@ -1893,6 +2091,9 @@ s32 AudioLoad_ProcessSamplePreloads(s32 resetStatus) {
return true;
}
+/**
+ * original name: __AddList
+ */
s32 AudioLoad_AddToSampleSet(Sample* sample, s32 numSamples, Sample** sampleSet) {
s32 i;
@@ -1910,6 +2111,9 @@ s32 AudioLoad_AddToSampleSet(Sample* sample, s32 numSamples, Sample** sampleSet)
return numSamples;
}
+/**
+ * original name: MakeWaveList
+ */
s32 AudioLoad_GetSamplesForFont(s32 fontId, Sample** sampleSet) {
s32 i;
s32 numSamples = 0;
@@ -1943,6 +2147,9 @@ s32 AudioLoad_GetSamplesForFont(s32 fontId, Sample** sampleSet) {
return numSamples;
}
+/**
+ * original name: __Reload
+ */
void AudioLoad_AddUsedSample(TunedSample* tunedSample) {
Sample* sample = tunedSample->sample;
@@ -1951,6 +2158,9 @@ void AudioLoad_AddUsedSample(TunedSample* tunedSample) {
}
}
+/**
+ * original name: WaveReload
+ */
void AudioLoad_PreloadSamplesForFont(s32 fontId, s32 async, SampleBankRelocInfo* sampleBankReloc) {
s32 numDrums;
s32 numInstruments;
@@ -2086,6 +2296,9 @@ void AudioLoad_PreloadSamplesForFont(s32 fontId, s32 async, SampleBankRelocInfo*
}
}
+/**
+ * original name: EmemReload
+ */
void AudioLoad_LoadPermanentSamples(void) {
s32 pad;
u32 fontId;
@@ -2118,15 +2331,27 @@ void AudioLoad_LoadPermanentSamples(void) {
}
}
+/**
+ * original name: __ExtDiskFinishCheck
+ */
void AudioLoad_Unused3(void) {
}
+/**
+ * original name: __ExtDiskInit
+ */
void AudioLoad_Unused4(void) {
}
+/**
+ * original name: __ExtDiskLoad
+ */
void AudioLoad_Unused5(void) {
}
+/**
+ * original name: MK_load
+ */
void AudioLoad_ScriptLoad(s32 tableType, s32 id, s8* status) {
static u32 sLoadIndex = 0;
@@ -2138,6 +2363,9 @@ void AudioLoad_ScriptLoad(s32 tableType, s32 id, s8* status) {
}
}
+/**
+ * original name: MK_FrameWork
+ */
void AudioLoad_ProcessScriptLoads(void) {
u32 temp;
u32 sp20;
@@ -2152,6 +2380,9 @@ void AudioLoad_ProcessScriptLoads(void) {
}
}
+/**
+ * original name: MK_Init
+ */
void AudioLoad_InitScriptLoads(void) {
osCreateMesgQueue(&sScriptLoadQueue, sScriptLoadMsgBuf, ARRAY_COUNT(sScriptLoadMsgBuf));
}
diff --git a/src/audio/lib/aisetnextbuf.c b/src/audio/internal/os.c
similarity index 84%
rename from src/audio/lib/aisetnextbuf.c
rename to src/audio/internal/os.c
index bb6b0f0b7..4bbb0d2fd 100644
--- a/src/audio/lib/aisetnextbuf.c
+++ b/src/audio/internal/os.c
@@ -1,4 +1,23 @@
+/**
+ * Original Filename: os.c
+ */
+
#include "ultra64.h"
+#include "z64audio.h"
+
+void Audio_InvalDCache(void* buf, s32 size) {
+ OSIntMask prevMask = osSetIntMask(OS_IM_NONE);
+
+ osInvalDCache(buf, size);
+ osSetIntMask(prevMask);
+}
+
+void Audio_WritebackDCache(void* buf, s32 size) {
+ OSIntMask prevMask = osSetIntMask(OS_IM_NONE);
+
+ osWritebackDCache(buf, size);
+ osSetIntMask(prevMask);
+}
/**
* Submits an audio buffer to be consumed by the Audio DAC. The audio interface can queue a second DMA while another
diff --git a/src/audio/lib/playback.c b/src/audio/internal/playback.c
similarity index 100%
rename from src/audio/lib/playback.c
rename to src/audio/internal/playback.c
diff --git a/src/audio/lib/seqplayer.c b/src/audio/internal/seqplayer.c
similarity index 98%
rename from src/audio/lib/seqplayer.c
rename to src/audio/internal/seqplayer.c
index c43ae4848..1d6fb7c0a 100644
--- a/src/audio/lib/seqplayer.c
+++ b/src/audio/internal/seqplayer.c
@@ -1,5 +1,6 @@
/**
* @file audio_seqplayer.c
+ * original name: track.c
*
* Manages audio sequence players, interprets and executes sequence instructions used to write .seq files
*
@@ -163,6 +164,8 @@ u8 sSeqInstructionArgsTable[] = {
* Read and return the argument from the sequence script for a control flow instruction.
* Control flow instructions (>= ASEQ_OP_CONTROL_FLOW_FIRST) can only have 0 or 1 args.
* @return the argument value for a control flow instruction, or 0 if there is no argument
+ *
+ * original name: Convert_Com
*/
u16 AudioSeq_GetScriptControlFlowArgument(SeqScriptState* state, u8 cmd) {
u8 highBits = sSeqInstructionArgsTable[cmd - 0xB0];
@@ -184,6 +187,8 @@ u16 AudioSeq_GetScriptControlFlowArgument(SeqScriptState* state, u8 cmd) {
/**
* Read and execute the control flow sequence instructions
* @return number of frames until next instruction. -1 signals termination
+ *
+ * original name: Common_Com
*/
s32 AudioSeq_HandleScriptFlowControl(SequencePlayer* seqPlayer, SeqScriptState* state, s32 cmd, s32 cmdArg) {
switch (cmd) {
@@ -255,6 +260,9 @@ s32 AudioSeq_HandleScriptFlowControl(SequencePlayer* seqPlayer, SeqScriptState*
return 0;
}
+/**
+ * original name: Nas_InitSubTrack
+ */
void AudioSeq_InitSequenceChannel(SequenceChannel* channel) {
s32 i;
@@ -310,6 +318,9 @@ void AudioSeq_InitSequenceChannel(SequenceChannel* channel) {
Audio_InitNoteLists(&channel->notePool);
}
+/**
+ * original name: Nas_EntryNoteTrack
+ */
s32 AudioSeq_SeqChannelSetLayer(SequenceChannel* channel, s32 layerIndex) {
SequenceLayer* layer;
s32 pad;
@@ -357,6 +368,9 @@ s32 AudioSeq_SeqChannelSetLayer(SequenceChannel* channel, s32 layerIndex) {
return 0;
}
+/**
+ * original name: Nas_ReleaseNoteTrack
+ */
void AudioSeq_SeqLayerDisable(SequenceLayer* layer) {
if (layer != NULL) {
if (layer->channel != &gAudioCtx.sequenceChannelNone && layer->channel->seqPlayer->finished == 1) {
@@ -369,6 +383,9 @@ void AudioSeq_SeqLayerDisable(SequenceLayer* layer) {
}
}
+/**
+ * original name: Nas_CloseNoteTrack
+ */
void AudioSeq_SeqLayerFree(SequenceChannel* channel, s32 layerIndex) {
SequenceLayer* layer = channel->layers[layerIndex];
@@ -379,6 +396,9 @@ void AudioSeq_SeqLayerFree(SequenceChannel* channel, s32 layerIndex) {
}
}
+/**
+ * original name: Nas_ReleaseSubTrack
+ */
void AudioSeq_SequenceChannelDisable(SequenceChannel* channel) {
s32 i;
@@ -391,6 +411,9 @@ void AudioSeq_SequenceChannelDisable(SequenceChannel* channel) {
channel->finished = true;
}
+/**
+ * original name: Nas_AllocSub
+ */
void AudioSeq_SequencePlayerSetupChannels(SequencePlayer* seqPlayer, u16 channelBits) {
SequenceChannel* channel;
s32 i;
@@ -406,6 +429,9 @@ void AudioSeq_SequencePlayerSetupChannels(SequencePlayer* seqPlayer, u16 channel
}
}
+/**
+ * original name: Nas_DeAllocSub
+ */
void AudioSeq_SequencePlayerDisableChannels(SequencePlayer* seqPlayer, u16 channelBitsUnused) {
SequenceChannel* channel;
s32 i;
@@ -418,6 +444,9 @@ void AudioSeq_SequencePlayerDisableChannels(SequencePlayer* seqPlayer, u16 chann
}
}
+/**
+ * original name: Nas_OpenSub
+ */
void AudioSeq_SequenceChannelEnable(SequencePlayer* seqPlayer, u8 channelIndex, void* script) {
SequenceChannel* channel = seqPlayer->channels[channelIndex];
s32 i;
@@ -435,11 +464,17 @@ void AudioSeq_SequenceChannelEnable(SequencePlayer* seqPlayer, u8 channelIndex,
}
}
+/**
+ * original name: Nas_ReleaseGroup_Force
+ */
void AudioSeq_SequencePlayerDisableAsFinished(SequencePlayer* seqPlayer) {
seqPlayer->finished = true;
AudioSeq_SequencePlayerDisable(seqPlayer);
}
+/**
+ * original name: Nas_ReleaseGroup
+ */
void AudioSeq_SequencePlayerDisable(SequencePlayer* seqPlayer) {
s32 finished = 0;
@@ -478,6 +513,9 @@ void AudioSeq_SequencePlayerDisable(SequencePlayer* seqPlayer) {
}
}
+/**
+ * original name: Nas_AddList
+ */
void AudioSeq_AudioListPushBack(AudioListItem* list, AudioListItem* item) {
if (item->prev == NULL) {
list->prev->next = item;
@@ -489,6 +527,9 @@ void AudioSeq_AudioListPushBack(AudioListItem* list, AudioListItem* item) {
}
}
+/**
+ * original name: Nas_GetList
+ */
void* AudioSeq_AudioListPopBack(AudioListItem* list) {
AudioListItem* item = list->prev;
@@ -504,6 +545,9 @@ void* AudioSeq_AudioListPopBack(AudioListItem* list) {
return item->u.value;
}
+/**
+ * original name: Nas_InitNoteList
+ */
void AudioSeq_InitLayerFreelist(void) {
s32 i;
@@ -519,10 +563,16 @@ void AudioSeq_InitLayerFreelist(void) {
}
}
+/**
+ * original name: Nas_ReadByteData
+ */
u8 AudioSeq_ScriptReadU8(SeqScriptState* state) {
return *(state->pc++);
}
+/**
+ * original name: Nas_ReadWordData
+ */
s16 AudioSeq_ScriptReadS16(SeqScriptState* state) {
s16 ret = *(state->pc++) << 8;
@@ -530,6 +580,9 @@ s16 AudioSeq_ScriptReadS16(SeqScriptState* state) {
return ret;
}
+/**
+ * original name: Nas_ReadLengthData
+ */
u16 AudioSeq_ScriptReadCompressedU16(SeqScriptState* state) {
u16 ret = *(state->pc++);
@@ -540,6 +593,9 @@ u16 AudioSeq_ScriptReadCompressedU16(SeqScriptState* state) {
return ret;
}
+/**
+ * original name: Nas_NoteSeq
+ */
void AudioSeq_SeqLayerProcessScript(SequenceLayer* layer) {
s32 cmd;
@@ -581,6 +637,9 @@ void AudioSeq_SeqLayerProcessScript(SequenceLayer* layer) {
}
}
+/**
+ * original name: __Stop_Note
+ */
void AudioSeq_SeqLayerProcessScriptStep1(SequenceLayer* layer) {
if (!layer->continuousNotes) {
Audio_SeqLayerNoteDecay(layer);
@@ -595,6 +654,9 @@ void AudioSeq_SeqLayerProcessScriptStep1(SequenceLayer* layer) {
layer->notePropertiesNeedInit = true;
}
+/**
+ * original name: __SetChannel
+ */
s32 AudioSeq_SeqLayerProcessScriptStep5(SequenceLayer* layer, s32 sameTunedSample) {
Note* note;
@@ -633,6 +695,9 @@ s32 AudioSeq_SeqLayerProcessScriptStep5(SequenceLayer* layer, s32 sameTunedSampl
return 0;
}
+/**
+ * original name: __Command_Seq
+ */
s32 AudioSeq_SeqLayerProcessScriptStep2(SequenceLayer* layer) {
SequenceChannel* channel = layer->channel;
SeqScriptState* state = &layer->scriptState;
@@ -789,6 +854,9 @@ s32 AudioSeq_SeqLayerProcessScriptStep2(SequenceLayer* layer) {
}
}
+/**
+ * original name: __SetVoice
+ */
s32 AudioSeq_SeqLayerProcessScriptStep4(SequenceLayer* layer, s32 cmd) {
s32 sameTunedSample = true;
s32 instOrWave;
@@ -997,6 +1065,9 @@ s32 AudioSeq_SeqLayerProcessScriptStep4(SequenceLayer* layer, s32 cmd) {
return sameTunedSample;
}
+/**
+ * original name: __SetNote
+ */
s32 AudioSeq_SeqLayerProcessScriptStep3(SequenceLayer* layer, s32 cmd) {
SeqScriptState* state = &layer->scriptState;
u16 delay;
@@ -1110,6 +1181,9 @@ s32 AudioSeq_SeqLayerProcessScriptStep3(SequenceLayer* layer, s32 cmd) {
return cmd;
}
+/**
+ * original name: Nas_PriorityChanger
+ */
void AudioSeq_SetChannelPriorities(SequenceChannel* channel, u8 priority) {
if ((priority & 0xF) != 0) {
channel->notePriority = priority & 0xF;
@@ -1121,6 +1195,9 @@ void AudioSeq_SetChannelPriorities(SequenceChannel* channel, u8 priority) {
}
}
+/**
+ * original name: Nas_ProgramChanger
+ */
u8 AudioSeq_GetInstrument(SequenceChannel* channel, u8 instId, Instrument** instOut, AdsrSettings* adsr) {
Instrument* inst = Audio_GetInstrumentInner(channel->fontId, instId);
@@ -1140,6 +1217,9 @@ u8 AudioSeq_GetInstrument(SequenceChannel* channel, u8 instId, Instrument** inst
return instId;
}
+/**
+ * original name: Nas_SubVoiceSet
+ */
void AudioSeq_SetInstrument(SequenceChannel* channel, u8 instId) {
if (instId >= 0x80) {
// Synthetic Waves
@@ -1165,10 +1245,16 @@ void AudioSeq_SetInstrument(SequenceChannel* channel, u8 instId) {
channel->hasInstrument = true;
}
+/**
+ * original name: Nas_SubVolumeSet
+ */
void AudioSeq_SequenceChannelSetVolume(SequenceChannel* channel, u8 volume) {
channel->volume = (s32)volume / 127.0f;
}
+/**
+ * original name: Nas_SubSeq
+ */
void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) {
s32 i;
u8* data;
@@ -1728,6 +1814,9 @@ exit_loop:
}
}
+/**
+ * original name: Nas_GroupSeq
+ */
void AudioSeq_SequencePlayerProcessSequence(SequencePlayer* seqPlayer) {
u8 cmd;
u8 cmdLowBits;
@@ -2055,6 +2144,9 @@ void AudioSeq_SequencePlayerProcessSequence(SequencePlayer* seqPlayer) {
}
}
+/**
+ * original name: Nas_MySeqMain
+ */
void AudioSeq_ProcessSequences(s32 arg0) {
SequencePlayer* seqPlayer;
u32 i;
@@ -2072,6 +2164,9 @@ void AudioSeq_ProcessSequences(s32 arg0) {
Audio_ProcessNotes();
}
+/**
+ * original name: Nas_SeqSkip
+ */
void AudioSeq_SkipForwardSequence(SequencePlayer* seqPlayer) {
while (seqPlayer->skipTicks > 0) {
AudioSeq_SequencePlayerProcessSequence(seqPlayer);
@@ -2080,6 +2175,9 @@ void AudioSeq_SkipForwardSequence(SequencePlayer* seqPlayer) {
}
}
+/**
+ * original name: Nas_InitMySeq
+ */
void AudioSeq_ResetSequencePlayer(SequencePlayer* seqPlayer) {
s32 i;
@@ -2107,6 +2205,9 @@ void AudioSeq_ResetSequencePlayer(SequencePlayer* seqPlayer) {
}
}
+/**
+ * original name: Nas_AssignSubTrack
+ */
void AudioSeq_InitSequencePlayerChannels(s32 playerIdx) {
SequenceChannel* channel;
SequencePlayer* seqPlayer = &gAudioCtx.seqPlayers[playerIdx];
@@ -2129,6 +2230,9 @@ void AudioSeq_InitSequencePlayerChannels(s32 playerIdx) {
}
}
+/**
+ * original name: __InitGroup
+ */
void AudioSeq_InitSequencePlayer(SequencePlayer* seqPlayer) {
s32 i;
s32 j;
@@ -2154,6 +2258,9 @@ void AudioSeq_InitSequencePlayer(SequencePlayer* seqPlayer) {
AudioSeq_ResetSequencePlayer(seqPlayer);
}
+/**
+ * original name: Nas_InitPlayer
+ */
void AudioSeq_InitSequencePlayers(void) {
s32 i;
diff --git a/src/audio/lib/synthesis.c b/src/audio/internal/synthesis.c
similarity index 100%
rename from src/audio/lib/synthesis.c
rename to src/audio/internal/synthesis.c
diff --git a/src/audio/lib/thread.c b/src/audio/internal/thread.c
similarity index 95%
rename from src/audio/lib/thread.c
rename to src/audio/internal/thread.c
index b47efa326..2e2d0630e 100644
--- a/src/audio/lib/thread.c
+++ b/src/audio/internal/thread.c
@@ -1,3 +1,7 @@
+/**
+ * Original Filename: sub_sys.c
+ */
+
#include "array_count.h"
#include "audiothread_cmd.h"
#include "ultra64.h"
@@ -27,6 +31,8 @@ static AudioTask* sWaitingAudioTask = NULL;
/**
* This is Audio_Update for the audio thread
+ *
+ * original name: CreateAudioTask (note: function is heavily modified in Animal Crossing)
*/
AudioTask* AudioThread_UpdateImpl(void) {
#if OOT_VERSION < PAL_1_0 || !PLATFORM_N64
@@ -200,6 +206,9 @@ AudioTask* AudioThread_UpdateImpl(void) {
}
}
+/**
+ * original name: Nap_AudioSysProcess
+ */
void AudioThread_ProcessGlobalCmd(AudioCmd* cmd) {
s32 i;
s32 pad[3];
@@ -325,6 +334,9 @@ void AudioThread_ProcessGlobalCmd(AudioCmd* cmd) {
}
}
+/**
+ * original name: __Nas_GroupFadeOut
+ */
void AudioThread_SetFadeOutTimer(s32 seqPlayerIndex, s32 fadeTimer) {
SequencePlayer* seqPlayer = &gAudioCtx.seqPlayers[seqPlayerIndex];
@@ -337,6 +349,9 @@ void AudioThread_SetFadeOutTimer(s32 seqPlayerIndex, s32 fadeTimer) {
seqPlayer->fadeTimer = fadeTimer;
}
+/**
+ * original name: __Nas_GroupFadeIn
+ */
void AudioThread_SetFadeInTimer(s32 seqPlayerIndex, s32 fadeTimer) {
SequencePlayer* seqPlayer;
@@ -350,6 +365,9 @@ void AudioThread_SetFadeInTimer(s32 seqPlayerIndex, s32 fadeTimer) {
}
}
+/**
+ * original name: Nap_AudioPortInit
+ */
void AudioThread_InitMesgQueuesImpl(void) {
gAudioCtx.threadCmdWritePos = 0;
gAudioCtx.threadCmdReadPos = 0;
@@ -365,6 +383,9 @@ void AudioThread_InitMesgQueuesImpl(void) {
osCreateMesgQueue(gAudioCtx.audioResetQueueP, gAudioCtx.audioResetMsgBuf, ARRAY_COUNT(gAudioCtx.audioResetMsgBuf));
}
+/**
+ * original name: Nap_PortSet
+ */
void AudioThread_QueueCmd(u32 opArgs, void** data) {
AudioCmd* cmd = &gAudioCtx.threadCmdBuf[gAudioCtx.threadCmdWritePos & 0xFF];
@@ -378,26 +399,41 @@ void AudioThread_QueueCmd(u32 opArgs, void** data) {
}
}
+/**
+ * original name: Nap_SetF32
+ */
void AudioThread_QueueCmdF32(u32 opArgs, f32 data) {
AudioThread_QueueCmd(opArgs, (void**)&data);
}
+/**
+ * original name: Nap_SetS32
+ */
void AudioThread_QueueCmdS32(u32 opArgs, s32 data) {
AudioThread_QueueCmd(opArgs, (void**)&data);
}
+/**
+ * original name: Nap_SetS8
+ */
void AudioThread_QueueCmdS8(u32 opArgs, s8 data) {
u32 uData = data << 0x18;
AudioThread_QueueCmd(opArgs, (void**)&uData);
}
+/**
+ * original name: Nap_SetU16
+ */
void AudioThread_QueueCmdU16(u32 opArgs, u16 data) {
u32 uData = data << 0x10;
AudioThread_QueueCmd(opArgs, (void**)&uData);
}
+/**
+ * original name: Nap_SendStart
+ */
s32 AudioThread_ScheduleProcessCmds(void) {
static s32 D_801304E8 = 0;
s32 ret;
@@ -419,11 +455,17 @@ s32 AudioThread_ScheduleProcessCmds(void) {
return ret;
}
+/**
+ * original name: Nap_FlushPort
+ */
void AudioThread_ResetCmdQueue(void) {
gAudioCtx.threadCmdQueueFinished = false;
gAudioCtx.threadCmdReadPos = gAudioCtx.threadCmdWritePos;
}
+/**
+ * original name: Nap_Process1Command
+ */
void AudioThread_ProcessCmd(AudioCmd* cmd) {
SequencePlayer* seqPlayer;
u16 threadCmdChannelMask;
@@ -461,6 +503,9 @@ void AudioThread_ProcessCmd(AudioCmd* cmd) {
}
}
+/**
+ * original name: Nap_AudioPortProcess
+ */
void AudioThread_ProcessCmds(u32 msg) {
static u8 sCurCmdRdPos = 0;
AudioCmd* cmd;
@@ -508,6 +553,9 @@ void Audio_GetSampleBankIdsOfFont(s32 fontId, u32* sampleBankId1, u32* sampleBan
*sampleBankId2 = gAudioCtx.soundFontList[fontId].sampleBankId2;
}
+/**
+ * original name: Nap_CheckSpecChange
+ */
s32 func_800E5EDC(void) {
s32 pad;
s32 specId;
@@ -521,6 +569,9 @@ s32 func_800E5EDC(void) {
}
}
+/**
+ * original name: __ClearSpecChangeQ
+ */
void func_800E5F34(void) {
// macro?
// clang-format off
@@ -528,6 +579,9 @@ void func_800E5F34(void) {
// clang-format on
}
+/**
+ * original name: Nap_StartSpecChange
+ */
s32 AudioThread_ResetAudioHeap(s32 specId) {
s32 resetStatus;
OSMesg msg;
@@ -553,6 +607,9 @@ s32 AudioThread_ResetAudioHeap(s32 specId) {
return AudioThread_ScheduleProcessCmds();
}
+/**
+ * original name: Nap_StartReset
+ */
void AudioThread_PreNMIInternal(void) {
gAudioCtx.resetTimer = 1;
if (gAudioContextInitialized) {
@@ -561,6 +618,9 @@ void AudioThread_PreNMIInternal(void) {
}
}
+/**
+ * original name: Nap_ReadSubPort
+ */
s8 AudioThread_GetChannelIO(s32 seqPlayerIndex, s32 channelIndex, s32 ioPort) {
SequencePlayer* seqPlayer = &gAudioCtx.seqPlayers[seqPlayerIndex];
SequenceChannel* channel;
@@ -573,6 +633,9 @@ s8 AudioThread_GetChannelIO(s32 seqPlayerIndex, s32 channelIndex, s32 ioPort) {
}
}
+/**
+ * original name: Nap_ReadGrpPort
+ */
s8 AudioThread_GetSeqPlayerIO(s32 seqPlayerIndex, s32 ioPort) {
return gAudioCtx.seqPlayers[seqPlayerIndex].seqScriptIO[ioPort];
}
@@ -585,6 +648,9 @@ void AudioThread_ResetExternalPool(void) {
gAudioCtx.externalPool.startRamAddr = NULL;
}
+/**
+ * original name: __SetGrpParam
+ */
void AudioThread_ProcessSeqPlayerCmd(SequencePlayer* seqPlayer, AudioCmd* cmd) {
f32 fadeVolume;
@@ -665,6 +731,9 @@ void AudioThread_ProcessSeqPlayerCmd(SequencePlayer* seqPlayer, AudioCmd* cmd) {
}
}
+/**
+ * original name: __SetSubParam
+ */
void AudioThread_ProcessChannelCmd(SequenceChannel* channel, AudioCmd* cmd) {
switch (cmd->op) {
case AUDIOCMD_OP_CHANNEL_SET_VOL_SCALE:
@@ -771,6 +840,9 @@ void AudioThread_Noop2Cmd(u32 arg0, s32 arg1) {
AUDIOCMD_GLOBAL_NOOP_2(0, 0, arg1, arg0);
}
+/**
+ * original name: Nap_WaitVsync
+ */
void AudioThread_WaitForAudioTask(void) {
osRecvMesg(gAudioCtx.taskStartQueueP, NULL, OS_MESG_NOBLOCK);
osRecvMesg(gAudioCtx.taskStartQueueP, NULL, OS_MESG_BLOCK);
@@ -824,6 +896,9 @@ void func_800E66A0(void) {
func_800E66C0(2);
}
+/**
+ * original name: Nap_SilenceCheck_Inner
+ */
s32 func_800E66C0(s32 flags) {
s32 phi_v1;
NotePlaybackState* playbackState;
@@ -860,6 +935,9 @@ s32 func_800E66C0(s32 flags) {
return phi_v1;
}
+/**
+ * original name: Nap_GetRandom
+ */
u32 AudioThread_NextRandom(void) {
static u32 sAudioRandom = 0x12345678;
@@ -869,6 +947,9 @@ u32 AudioThread_NextRandom(void) {
return sAudioRandom;
}
+/**
+ * original name: Nas_InitGAudio
+ */
void AudioThread_InitMesgQueues(void) {
AudioThread_InitMesgQueuesImpl();
}
diff --git a/src/audio/lib/dcache.c b/src/audio/lib/dcache.c
deleted file mode 100644
index 5c50a6997..000000000
--- a/src/audio/lib/dcache.c
+++ /dev/null
@@ -1,16 +0,0 @@
-#include "ultra64.h"
-#include "z64audio.h"
-
-void Audio_InvalDCache(void* buf, s32 size) {
- OSIntMask prevMask = osSetIntMask(OS_IM_NONE);
-
- osInvalDCache(buf, size);
- osSetIntMask(prevMask);
-}
-
-void Audio_WritebackDCache(void* buf, s32 size) {
- OSIntMask prevMask = osSetIntMask(OS_IM_NONE);
-
- osWritebackDCache(buf, size);
- osSetIntMask(prevMask);
-}
diff --git a/src/boot/inflate.c b/src/boot/inflate.c
index 391ce0368..d9fc7c3f8 100644
--- a/src/boot/inflate.c
+++ b/src/boot/inflate.c
@@ -98,8 +98,8 @@
#include "inflate.h"
#include "ultra64/ultratypes.h"
-#include "libc/stddef.h"
-#include "libc/stdint.h"
+#include "stddef.h"
+#include "stdint.h"
#include "alignment.h"
#include "attributes.h"
#include "z64dma.h"
diff --git a/src/boot/is_debug.c b/src/boot/is_debug.c
index 6d6311885..185ee77c6 100644
--- a/src/boot/is_debug.c
+++ b/src/boot/is_debug.c
@@ -1,6 +1,7 @@
#include "is_debug.h"
#include "ultra64.h"
+#include "versions.h"
typedef struct ISVDbg {
/* 0x00 */ u32 magic; // "IS64"
diff --git a/src/boot/z_std_dma.c b/src/boot/z_std_dma.c
index e0d1d4ca9..63cfc52b5 100644
--- a/src/boot/z_std_dma.c
+++ b/src/boot/z_std_dma.c
@@ -46,8 +46,8 @@
#include "z64dma.h"
#include "z64thread.h"
-#pragma increment_block_number "gc-eu:0 gc-eu-mq:0 gc-jp:0 gc-jp-ce:0 gc-jp-mq:0 gc-us:0 gc-us-mq:0 ntsc-1.2:66" \
- "pal-1.0:64 pal-1.1:64"
+#pragma increment_block_number "gc-eu:0 gc-eu-mq:0 gc-jp:0 gc-jp-ce:0 gc-jp-mq:0 gc-us:0 gc-us-mq:0 ntsc-1.2:82" \
+ "pal-1.0:80 pal-1.1:80"
StackEntry sDmaMgrStackInfo;
OSMesgQueue sDmaMgrMsgQueue;
diff --git a/src/code/TwoHeadArena.c b/src/code/TwoHeadArena.c
index 490304a47..23ef69a91 100644
--- a/src/code/TwoHeadArena.c
+++ b/src/code/TwoHeadArena.c
@@ -10,6 +10,7 @@
* with identical lifetime.
*/
#include "tha.h"
+#include "alignment.h"
void* THA_GetHead(TwoHeadArena* tha) {
return tha->head;
diff --git a/src/code/flg_set.c b/src/code/flg_set.c
index 661578811..de24fa31f 100644
--- a/src/code/flg_set.c
+++ b/src/code/flg_set.c
@@ -185,7 +185,7 @@ void FlagSet_Update(PlayState* play) {
}
if (CHECK_BTN_ALL(input->press.button, BTN_L)) {
- play->pauseCtx.debugState = 0;
+ play->pauseCtx.debugState = PAUSE_DEBUG_STATE_CLOSED;
}
CLOSE_DISPS(gfxCtx, "../flg_set.c", 241);
diff --git a/src/code/game.c b/src/code/game.c
index 2577a4856..896bb7b6e 100644
--- a/src/code/game.c
+++ b/src/code/game.c
@@ -494,7 +494,7 @@ void GameState_Init(GameState* gameState, GameStateFunc init, GraphicsContext* g
gameState->running = 1;
startTime = osGetTime();
- // Thse assignments must be written this way for matching and to avoid a warning due to casting a pointer to an
+ // These assignments must be written this way for matching and to avoid a warning due to casting a pointer to an
// integer without a cast. This assigns init = NULL and size = 0.
gameState->size = (u32)(gameState->init = NULL);
diff --git a/src/code/gfxalloc.c b/src/code/gfxalloc.c
index 9e2fe9bb9..3b4d72f05 100644
--- a/src/code/gfxalloc.c
+++ b/src/code/gfxalloc.c
@@ -1,4 +1,5 @@
-#include "gfx.h"
+#include "gfxalloc.h"
+#include "alignment.h"
Gfx* Gfx_Open(Gfx* gfx) {
return gfx + 1;
diff --git a/src/code/main.c b/src/code/main.c
index 2ece2e66c..a9e3815a1 100644
--- a/src/code/main.c
+++ b/src/code/main.c
@@ -46,7 +46,7 @@ extern struct IrqMgr gIrqMgr;
#include "debug.h"
#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \
- "ique-cn:0 ntsc-1.0:34 ntsc-1.1:34 ntsc-1.2:34 pal-1.0:32 pal-1.1:32"
+ "ique-cn:0 ntsc-1.0:51 ntsc-1.1:51 ntsc-1.2:51 pal-1.0:49 pal-1.1:49"
extern u8 _buffersSegmentEnd[];
diff --git a/src/code/z_actor.c b/src/code/z_actor.c
index 57ad7798c..291f2c556 100644
--- a/src/code/z_actor.c
+++ b/src/code/z_actor.c
@@ -37,7 +37,7 @@
#include "assets/objects/gameplay_dangeon_keep/gameplay_dangeon_keep.h"
#include "assets/objects/object_bdoor/object_bdoor.h"
-#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:0 gc-jp-ce:0 gc-jp-mq:0 gc-us:0 gc-us-mq:0 ntsc-1.0:128" \
+#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:0 gc-jp-ce:0 gc-jp-mq:0 gc-us:0 gc-us-mq:0 ntsc-1.0:0" \
"ntsc-1.1:0 ntsc-1.2:0 pal-1.0:0 pal-1.1:0"
CollisionPoly* sCurCeilingPoly;
diff --git a/src/code/z_bgcheck.c b/src/code/z_bgcheck.c
index d1d52bec1..b7ae44ba0 100644
--- a/src/code/z_bgcheck.c
+++ b/src/code/z_bgcheck.c
@@ -14,7 +14,7 @@
#include "z64player.h"
#include "z64skin_matrix.h"
-#pragma increment_block_number "ntsc-1.0:152 ntsc-1.1:152 ntsc-1.2:152"
+#pragma increment_block_number "ntsc-1.0:144 ntsc-1.1:144 ntsc-1.2:144"
u16 DynaSSNodeList_GetNextNodeIdx(DynaSSNodeList* nodeList);
void BgCheck_GetStaticLookupIndicesFromPos(CollisionContext* colCtx, Vec3f* pos, Vec3i* sector);
diff --git a/src/code/z_camera.c b/src/code/z_camera.c
index 17fe2e7f6..15b8183ab 100644
--- a/src/code/z_camera.c
+++ b/src/code/z_camera.c
@@ -3659,7 +3659,7 @@ s32 Camera_KeepOn3(Camera* camera) {
}
#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \
- "ique-cn:128 ntsc-1.0:86 ntsc-1.1:86 ntsc-1.2:86 pal-1.0:86 pal-1.1:86"
+ "ique-cn:128 ntsc-1.0:83 ntsc-1.1:83 ntsc-1.2:83 pal-1.0:83 pal-1.1:83"
s32 Camera_KeepOn4(Camera* camera) {
static Vec3f D_8015BD50;
diff --git a/src/code/z_common_data.c b/src/code/z_common_data.c
index 31aa766ed..8de6bc828 100644
--- a/src/code/z_common_data.c
+++ b/src/code/z_common_data.c
@@ -7,7 +7,7 @@
#include "z64save.h"
#include "z64transition.h"
-#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq:192" \
+#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \
"ntsc-1.0:0 ntsc-1.1:0 ntsc-1.2:0 pal-1.0:0 pal-1.1:0"
ALIGNED(16) SaveContext gSaveContext;
diff --git a/src/code/z_draw.c b/src/code/z_draw.c
index 9e0dd236e..4cb14f017 100644
--- a/src/code/z_draw.c
+++ b/src/code/z_draw.c
@@ -84,32 +84,32 @@
#include "assets/objects/object_st/object_st.h"
// "Get Item" Model Draw Functions
-void GetItem_DrawMaskOrBombchu(PlayState* play, s16 drawId);
-void GetItem_DrawSoldOut(PlayState* play, s16 drawId);
-void GetItem_DrawBlueFire(PlayState* play, s16 drawId);
-void GetItem_DrawPoes(PlayState* play, s16 drawId);
-void GetItem_DrawFairy(PlayState* play, s16 drawId);
-void GetItem_DrawMirrorShield(PlayState* play, s16 drawId);
-void GetItem_DrawSkullToken(PlayState* play, s16 drawId);
-void GetItem_DrawEggOrMedallion(PlayState* play, s16 drawId);
-void GetItem_DrawCompass(PlayState* play, s16 drawId);
-void GetItem_DrawPotion(PlayState* play, s16 drawId);
-void GetItem_DrawGoronSword(PlayState* play, s16 drawId);
-void GetItem_DrawDekuNuts(PlayState* play, s16 drawId);
-void GetItem_DrawRecoveryHeart(PlayState* play, s16 drawId);
-void GetItem_DrawFish(PlayState* play, s16 drawId);
-void GetItem_DrawOpa0(PlayState* play, s16 drawId);
-void GetItem_DrawOpa0Xlu1(PlayState* play, s16 drawId);
-void GetItem_DrawXlu01(PlayState* play, s16 drawId);
-void GetItem_DrawOpa10Xlu2(PlayState* play, s16 drawId);
-void GetItem_DrawMagicArrow(PlayState* play, s16 drawId);
-void GetItem_DrawMagicSpell(PlayState* play, s16 drawId);
-void GetItem_DrawOpa1023(PlayState* play, s16 drawId);
-void GetItem_DrawOpa10Xlu32(PlayState* play, s16 drawId);
-void GetItem_DrawSmallRupee(PlayState* play, s16 drawId);
-void GetItem_DrawScale(PlayState* play, s16 drawId);
-void GetItem_DrawBulletBag(PlayState* play, s16 drawId);
-void GetItem_DrawWallet(PlayState* play, s16 drawId);
+void GetItem_DrawMaskOrBombchu(PlayState* play, s16 giDrawId);
+void GetItem_DrawSoldOut(PlayState* play, s16 giDrawId);
+void GetItem_DrawBlueFire(PlayState* play, s16 giDrawId);
+void GetItem_DrawPoes(PlayState* play, s16 giDrawId);
+void GetItem_DrawFairy(PlayState* play, s16 giDrawId);
+void GetItem_DrawMirrorShield(PlayState* play, s16 giDrawId);
+void GetItem_DrawSkullToken(PlayState* play, s16 giDrawId);
+void GetItem_DrawEggOrMedallion(PlayState* play, s16 giDrawId);
+void GetItem_DrawCompass(PlayState* play, s16 giDrawId);
+void GetItem_DrawPotion(PlayState* play, s16 giDrawId);
+void GetItem_DrawGoronSword(PlayState* play, s16 giDrawId);
+void GetItem_DrawDekuNuts(PlayState* play, s16 giDrawId);
+void GetItem_DrawRecoveryHeart(PlayState* play, s16 giDrawId);
+void GetItem_DrawFish(PlayState* play, s16 giDrawId);
+void GetItem_DrawOpa0(PlayState* play, s16 giDrawId);
+void GetItem_DrawOpa0Xlu1(PlayState* play, s16 giDrawId);
+void GetItem_DrawXlu01(PlayState* play, s16 giDrawId);
+void GetItem_DrawOpa10Xlu2(PlayState* play, s16 giDrawId);
+void GetItem_DrawMagicArrow(PlayState* play, s16 giDrawId);
+void GetItem_DrawMagicSpell(PlayState* play, s16 giDrawId);
+void GetItem_DrawOpa1023(PlayState* play, s16 giDrawId);
+void GetItem_DrawOpa10Xlu32(PlayState* play, s16 giDrawId);
+void GetItem_DrawSmallRupee(PlayState* play, s16 giDrawId);
+void GetItem_DrawScale(PlayState* play, s16 giDrawId);
+void GetItem_DrawBulletBag(PlayState* play, s16 giDrawId);
+void GetItem_DrawWallet(PlayState* play, s16 giDrawId);
typedef struct DrawItemTableEntry {
/* 0x00 */ void (*drawFunc)(PlayState*, s16);
@@ -117,260 +117,260 @@ typedef struct DrawItemTableEntry {
} DrawItemTableEntry; // size = 0x24
DrawItemTableEntry sDrawItemTable[] = {
- // bottle, OBJECT_GI_BOTTLE
+ // GID_BOTTLE_EMPTY
{ GetItem_DrawOpa0Xlu1, { gGiBottleStopperDL, gGiBottleDL } },
- // small key, OBJECT_GI_KEY
+ // GID_SMALL_KEY
{ GetItem_DrawOpa0, { gGiSmallKeyDL } },
- // minuet of forest, OBJECT_GI_MELODY
+ // GID_SONG_MINUET
{ GetItem_DrawXlu01, { gGiMinuetColorDL, gGiSongNoteDL } },
- // bolero of fire, OBJECT_GI_MELODY
+ // GID_SONG_BOLERO
{ GetItem_DrawXlu01, { gGiBoleroColorDL, gGiSongNoteDL } },
- // serenade of water, OBJECT_GI_MELODY
+ // GID_SONG_SERENADE
{ GetItem_DrawXlu01, { gGiSerenadeColorDL, gGiSongNoteDL } },
- // requiem of spirit, OBJECT_GI_MELODY
+ // GID_SONG_REQUIEM
{ GetItem_DrawXlu01, { gGiRequiemColorDL, gGiSongNoteDL } },
- // nocturne of shadow, OBJECT_GI_MELODY
+ // GID_SONG_NOCTURNE
{ GetItem_DrawXlu01, { gGiNocturneColorDL, gGiSongNoteDL } },
- // prelude of light, OBJECT_GI_MELODY
+ // GID_SONG_PRELUDE
{ GetItem_DrawXlu01, { gGiPreludeColorDL, gGiSongNoteDL } },
- // recovery heart, OBJECT_GI_HEART
+ // GID_RECOVERY_HEART
{ GetItem_DrawRecoveryHeart, { gGiRecoveryHeartDL } },
- // boss key, OBJECT_GI_BOSSKEY
+ // GID_BOSS_KEY
{ GetItem_DrawOpa0Xlu1, { gGiBossKeyDL, gGiBossKeyGemDL } },
- // compass, OBJECT_GI_COMPASS
+ // GID_COMPASS
{ GetItem_DrawCompass, { gGiCompassDL, gGiCompassGlassDL } },
- // forest medallion, OBJECT_GI_MEDAL
+ // GID_MEDALLION_FOREST
{ GetItem_DrawEggOrMedallion, { gGiForestMedallionFaceDL, gGiMedallionDL } },
- // fire medallion, OBJECT_GI_MEDAL
+ // GID_MEDALLION_FIRE
{ GetItem_DrawEggOrMedallion, { gGiFireMedallionFaceDL, gGiMedallionDL } },
- // water medallion, OBJECT_GI_MEDAL
+ // GID_MEDALLION_WATER
{ GetItem_DrawEggOrMedallion, { gGiWaterMedallionFaceDL, gGiMedallionDL } },
- // spirit medallion, OBJECT_GI_MEDAL
+ // GID_MEDALLION_SPIRIT
{ GetItem_DrawEggOrMedallion, { gGiSpiritMedallionFaceDL, gGiMedallionDL } },
- // shadow medallion, OBJECT_GI_MEDAL
+ // GID_MEDALLION_SHADOW
{ GetItem_DrawEggOrMedallion, { gGiShadowMedallionFaceDL, gGiMedallionDL } },
- // light medallion, OBJECT_GI_MEDAL
+ // GID_MEDALLION_LIGHT
{ GetItem_DrawEggOrMedallion, { gGiLightMedallionFaceDL, gGiMedallionDL } },
- // deku nuts, OBJECT_GI_NUTS
+ // GID_DEKU_NUTS
{ GetItem_DrawDekuNuts, { gGiNutDL } },
- // heart container, OBJECT_GI_HEARTS
+ // GID_HEART_CONTAINER
{ GetItem_DrawXlu01, { gGiHeartBorderDL, gGiHeartContainerDL } },
- // heart piece, OBJECT_GI_HEARTS
+ // GID_HEART_PIECE
{ GetItem_DrawXlu01, { gGiHeartBorderDL, gGiHeartPieceDL } },
- // quiver 30, OBJECT_GI_ARROWCASE
+ // GID_QUIVER_30
{ GetItem_DrawOpa1023, { gGiQuiverInnerDL, gGiQuiver30InnerColorDL, gGiQuiver30OuterColorDL, gGiQuiverOuterDL } },
- // quiver 40, OBJECT_GI_ARROWCASE
+ // GID_QUIVER_40
{ GetItem_DrawOpa1023, { gGiQuiverInnerDL, gGiQuiver40InnerColorDL, gGiQuiver40OuterColorDL, gGiQuiverOuterDL } },
- // quiver 50, OBJECT_GI_ARROWCASE
+ // GID_QUIVER_50
{ GetItem_DrawOpa1023, { gGiQuiverInnerDL, gGiQuiver50InnerColorDL, gGiQuiver50OuterColorDL, gGiQuiverOuterDL } },
- // bomb bag 20, OBJECT_GI_BOMBPOUCH
+ // GID_BOMB_BAG_20
{ GetItem_DrawOpa1023, { gGiBombBagDL, gGiBombBag20BagColorDL, gGiBombBag20RingColorDL, gGiBombBagRingDL } },
- // bomb bag 30, OBJECT_GI_BOMBPOUCH
+ // GID_BOMB_BAG_30
{ GetItem_DrawOpa1023, { gGiBombBagDL, gGiBombBag30BagColorDL, gGiBombBag30RingColorDL, gGiBombBagRingDL } },
- // bomb bag 40, OBJECT_GI_BOMBPOUCH
+ // GID_BOMB_BAG_40
{ GetItem_DrawOpa1023, { gGiBombBagDL, gGiBombBag40BagColorDL, gGiBombBag40RingColorDL, gGiBombBagRingDL } },
- // stick, OBJECT_GI_STICK
+ // GID_DEKU_STICK
{ GetItem_DrawOpa0, { gGiStickDL } },
- // dungeon map, OBJECT_GI_MAP
+ // GID_DUNGEON_MAP
{ GetItem_DrawOpa0, { gGiDungeonMapDL } },
- // deku shield, OBJECT_GI_SHIELD_1
+ // GID_SHIELD_DEKU
{ GetItem_DrawOpa0, { gGiDekuShieldDL } },
- // small magic jar, OBJECT_GI_MAGICPOT
+ // GID_MAGIC_JAR_SMALL
{ GetItem_DrawOpa0, { gGiMagicJarSmallDL } },
- // large magic jar, OBJECT_GI_MAGICPOT
+ // GID_MAGIC_JAR_LARGE
{ GetItem_DrawOpa0, { gGiMagicJarLargeDL } },
- // bombs, OBJECT_GI_BOMB_1
+ // GID_BOMB
{ GetItem_DrawOpa0, { gGiBombDL } },
- // stone of agony, OBJECT_GI_MAP
+ // GID_STONE_OF_AGONY
{ GetItem_DrawOpa0, { gGiStoneOfAgonyDL } },
- // adult's wallet, OBJECT_GI_PURSE
+ // GID_WALLET_ADULT
{ GetItem_DrawWallet,
{ gGiWalletDL, gGiAdultWalletColorDL, gGiAdultWalletRupeeOuterColorDL, gGiWalletRupeeOuterDL,
gGiAdultWalletStringColorDL, gGiWalletStringDL, gGiAdultWalletRupeeInnerColorDL, gGiWalletRupeeInnerDL } },
- // giant's wallet, OBJECT_GI_PURSE
+ // GID_WALLET_GIANT
{ GetItem_DrawWallet,
{ gGiWalletDL, gGiGiantsWalletColorDL, gGiGiantsWalletRupeeOuterColorDL, gGiWalletRupeeOuterDL,
gGiGiantsWalletStringColorDL, gGiWalletStringDL, gGiGiantsWalletRupeeInnerColorDL, gGiWalletRupeeInnerDL } },
- // gerudo card, OBJECT_GI_GERUDO
+ // GID_GERUDOS_CARD
{ GetItem_DrawOpa0, { gGiGerudoCardDL } },
- // arrows (small), OBJECT_GI_ARROW
+ // GID_ARROWS_5
{ GetItem_DrawOpa0, { gGiArrowSmallDL } },
- // arrows (medium), OBJECT_GI_ARROW
+ // GID_ARROWS_10
{ GetItem_DrawOpa0, { gGiArrowMediumDL } },
- // arrows (large), OBJECT_GI_ARROW
+ // GID_ARROWS_30
{ GetItem_DrawOpa0, { gGiArrowLargeDL } },
- // bombchus, OBJECT_GI_BOMB_2
+ // GID_BOMBCHU
{ GetItem_DrawMaskOrBombchu, { gGiBombchuDL } },
- // egg, OBJECT_GI_EGG
+ // GID_EGG
{ GetItem_DrawEggOrMedallion, { gGiEggMaterialDL, gGiEggDL } },
- // silver scale, OBJECT_GI_SCALE
+ // GID_SCALE_SILVER
{ GetItem_DrawScale, { gGiScaleWaterDL, gGiSilverScaleWaterColorDL, gGiSilverScaleColorDL, gGiScaleDL } },
- // gold scale, OBJECT_GI_SCALE
+ // GID_SCALE_GOLDEN
{ GetItem_DrawScale, { gGiScaleWaterDL, gGiGoldenScaleWaterColorDL, gGiGoldenScaleColorDL, gGiScaleDL } },
- // hylian shield, OBJECT_GI_SHIELD_2
+ // GID_SHIELD_HYLIAN
{ GetItem_DrawOpa0, { gGiHylianShieldDL } },
- // hookshot, OBJECT_GI_HOOKSHOT
+ // GID_HOOKSHOT
{ GetItem_DrawOpa0, { gGiHookshotDL } },
- // longshot, OBJECT_GI_HOOKSHOT
+ // GID_LONGSHOT
{ GetItem_DrawOpa0, { gGiLongshotDL } },
- // ocarina of time, OBJECT_GI_OCARINA
+ // GID_OCARINA_OF_TIME
{ GetItem_DrawOpa0Xlu1, { gGiOcarinaTimeDL, gGiOcarinaTimeHolesDL } },
- // milk, OBJECT_GI_MILK
+ // GID_BOTTLE_MILK_FULL
{ GetItem_DrawOpa0Xlu1, { gGiMilkBottleContentsDL, gGiMilkBottleDL } },
- // keaton mask, OBJECT_GI_KI_TAN_MASK
+ // GID_MASK_KEATON
{ GetItem_DrawOpa0Xlu1, { gGiKeatonMaskDL, gGiKeatonMaskEyesDL } },
- // spooky mask, OBJECT_GI_REDEAD_MASK
+ // GID_MASK_SPOOKY
{ GetItem_DrawOpa0, { gGiSpookyMaskDL } },
- // slingshot, OBJECT_GI_PACHINKO
+ // GID_SLINGSHOT
{ GetItem_DrawOpa0, { gGiSlingshotDL } },
- // boomerang, OBJECT_GI_BOOMERANG
+ // GID_BOOMERANG
{ GetItem_DrawOpa0, { gGiBoomerangDL } },
- // bow, OBJECT_GI_BOW
+ // GID_BOW
{ GetItem_DrawOpa0, { gGiBowDL } },
- // lens, OBJECT_GI_GLASSES
+ // GID_LENS_OF_TRUTH
{ GetItem_DrawOpa0Xlu1, { gGiLensDL, gGiLensGlassDL } },
- // green potion, OBJECT_GI_LIQUID
+ // GID_BOTTLE_POTION_GREEN
{ GetItem_DrawPotion,
{ gGiPotionPotDL, gGiGreenPotColorDL, gGiGreenLiquidColorDL, gGiPotionLiquidDL, gGiGreenPatternColorDL,
gGiPotionPatternDL } },
- // red potion, OBJECT_GI_LIQUID
+ // GID_BOTTLE_POTION_RED
{ GetItem_DrawPotion,
{ gGiPotionPotDL, gGiRedPotColorDL, gGiRedLiquidColorDL, gGiPotionLiquidDL, gGiRedPatternColorDL,
gGiPotionPatternDL } },
- // blue potion, OBJECT_GI_LIQUID
+ // GID_BOTTLE_POTION_BLUE
{ GetItem_DrawPotion,
{ gGiPotionPotDL, gGiBluePotColorDL, gGiBlueLiquidColorDL, gGiPotionLiquidDL, gGiBluePatternColorDL,
gGiPotionPatternDL } },
- // mirror shield, OBJECT_GI_SHIELD_3
+ // GID_SHIELD_MIRROR
{ GetItem_DrawMirrorShield, { gGiMirrorShieldDL, gGiMirrorShieldSymbolDL } },
- // zelda's letter, OBJECT_GI_LETTER
+ // GID_ZELDAS_LETTER
{ GetItem_DrawOpa0Xlu1, { gGiLetterDL, gGiLetterWritingDL } },
- // goron tunic, OBJECT_GI_CLOTHES
+ // GID_TUNIC_GORON
{ GetItem_DrawOpa1023, { gGiTunicCollarDL, gGiGoronCollarColorDL, gGiGoronTunicColorDL, gGiTunicDL } },
- // zora tunic, OBJECT_GI_CLOTHES
+ // GID_TUNIC_ZORA
{ GetItem_DrawOpa1023, { gGiTunicCollarDL, gGiZoraCollarColorDL, gGiZoraTunicColorDL, gGiTunicDL } },
- // beans, OBJECT_GI_BEAN
+ // GID_MAGIC_BEAN
{ GetItem_DrawOpa0, { gGiBeanDL } },
- // fish, OBJECT_GI_FISH
+ // GID_FISH
{ GetItem_DrawFish, { gGiFishDL } },
- // saw, OBJECT_GI_SAW
+ // GID_POACHERS_SAW
{ GetItem_DrawOpa0, { gGiSawDL } },
- // hammer, OBJECT_GI_HAMMER
+ // GID_HAMMER
{ GetItem_DrawOpa0, { gGiHammerDL } },
- // grass, OBJECT_GI_GRASS
+ // GID_GRASS
{ GetItem_DrawOpa0, { gGiGrassDL } },
- // biggorons sword, OBJECT_GI_LONGSWORD
+ // GID_SWORD_BIGGORON
{ GetItem_DrawGoronSword, { gGiBiggoronSwordDL } },
- // chicken, OBJECT_GI_NIWATORI
+ // GID_CUCCO
{ GetItem_DrawOpa10Xlu2, { gGiChickenDL, gGiChickenColorDL, gGiChickenEyesDL } },
- // ruto's letter, OBJECT_GI_BOTTLE_LETTER
+ // GID_BOTTLE_RUTOS_LETTER
{ GetItem_DrawOpa0Xlu1, { gGiLetterBottleContentsDL, gGiLetterBottleDL } },
- // fairy ocarina, OBJECT_GI_OCARINA_0
+ // GID_OCARINA_FAIRY
{ GetItem_DrawOpa0Xlu1, { gGiOcarinaFairyDL, gGiOcarinaFairyHolesDL } },
- // iron boots, OBJECT_GI_BOOTS_2
+ // GID_BOOTS_IRON
{ GetItem_DrawOpa0Xlu1, { gGiIronBootsDL, gGiIronBootsRivetsDL } },
- // seeds, OBJECT_GI_SEED
+ // GID_DEKU_SEEDS
{ GetItem_DrawOpa0, { gGiSeedDL } },
- // silver gauntlets, OBJECT_GI_GLOVES
+ // GID_SILVER_GAUNTLETS
{ GetItem_DrawOpa10Xlu32,
{ gGiGauntletsDL, gGiSilverGauntletsColorDL, gGiGauntletsPlateDL, gGiSilverGauntletsPlateColorDL } },
- // golden gauntlets, OBJECT_GI_GLOVES
+ // GID_GOLD_GAUNTLETS
{ GetItem_DrawOpa10Xlu32,
{ gGiGauntletsDL, gGiGoldenGauntletsColorDL, gGiGauntletsPlateDL, gGiGoldenGauntletsPlateColorDL } },
- // yellow n coin, OBJECT_GI_COIN
+ // GID_NCOIN_YELLOW
{ GetItem_DrawOpa10Xlu2, { gGiCoinDL, gGiYellowCoinColorDL, gGiNDL } },
- // red n coin, OBJECT_GI_COIN
+ // GID_NCOIN_RED
{ GetItem_DrawOpa10Xlu2, { gGiCoinDL, gGiRedCoinColorDL, gGiNDL } },
- // green n coin, OBJECT_GI_COIN
+ // GID_NCOIN_GREEN
{ GetItem_DrawOpa10Xlu2, { gGiCoinDL, gGiGreenCoinColorDL, gGiNDL } },
- // blue n coin, OBJECT_GI_COIN
+ // GID_NCOIN_BLUE
{ GetItem_DrawOpa10Xlu2, { gGiCoinDL, gGiBlueCoinColorDL, gGiNDL } },
- // skull mask, OBJECT_GI_SKJ_MASK
+ // GID_MASK_SKULL
{ GetItem_DrawOpa0, { gGiSkullMaskDL } },
- // bunny hood OBJECT_GI_RABIT_MASK
+ // GID_MASK_BUNNY_HOOD
{ GetItem_DrawOpa0Xlu1, { gGiBunnyHoodDL, gGiBunnyHoodEyesDL } },
- // mask of truth, OBJECT_GI_TRUTH_MASK
+ // GID_MASK_TRUTH
{ GetItem_DrawOpa0Xlu1, { gGiMaskOfTruthDL, gGiMaskOfTruthAccentsDL } },
- // eyedrops, OBJECT_GI_EYE_LOTION
+ // GID_EYE_DROPS
{ GetItem_DrawOpa0Xlu1, { gGiEyeDropsCapDL, gGiEyeDropsBottleDL } },
- // odd potion, OBJECT_GI_POWDER
+ // GID_ODD_POTION
{ GetItem_DrawOpa0, { gGiOddPotionDL } },
- // odd mushroom, OBJECT_GI_MUSHROOM
+ // GID_ODD_MUSHROOM
{ GetItem_DrawOpa0, { gGiOddMushroomDL } },
- // claim check, OBJECT_GI_TICKETSTONE
+ // GID_CLAIM_CHECK
{ GetItem_DrawOpa0Xlu1, { gGiClaimCheckDL, gGiClaimCheckWritingDL } },
- // broken goron's sword, OBJECT_GI_BROKENSWORD
+ // GID_BROKEN_GORONS_SWORD
{ GetItem_DrawGoronSword, { gGiBrokenGoronSwordDL } },
- // prescription, OBJECT_GI_PRESCRIPTION
+ // GID_PRESCRIPTION
{ GetItem_DrawOpa0Xlu1, { gGiPrescriptionDL, gGiPrescriptionWritingDL } },
- // goron bracelet, OBJECT_GI_BRACELET
+ // GID_GORONS_BRACELET
{ GetItem_DrawOpa0, { gGiGoronBraceletDL } },
- // sold out, OBJECT_GI_SOLDOUT
+ // GID_SOLDOUT
{ GetItem_DrawSoldOut, { gGiSoldOutDL } },
- // frog, OBJECT_GI_FROG
+ // GID_EYEBALL_FROG
{ GetItem_DrawOpa0Xlu1, { gGiFrogDL, gGiFrogEyesDL } },
- // goron mask, OBJECT_GI_GOLONMASK
+ // GID_MASK_GORON
{ GetItem_DrawMaskOrBombchu, { gGiGoronMaskDL } },
- // zora mask, OBJECT_GI_ZORAMASK
+ // GID_MASK_ZORA
{ GetItem_DrawMaskOrBombchu, { gGiZoraMaskDL } },
- // gerudo mask, OBJECT_GI_GERUDOMASK
+ // GID_MASK_GERUDO
{ GetItem_DrawMaskOrBombchu, { gGiGerudoMaskDL } },
- // cojiro, OBJECT_GI_NIWATORI
+ // GID_COJIRO
{ GetItem_DrawOpa10Xlu2, { gGiChickenDL, gGiCojiroColorDL, gGiChickenEyesDL } },
- // hover boots, OBJECT_GI_HOVERBOOTS
+ // GID_BOOTS_HOVER
{ GetItem_DrawOpa0, { gGiHoverBootsDL } },
- // fire arrows, OBJECT_GI_M_ARROW
+ // GID_ARROW_FIRE
{ GetItem_DrawMagicArrow, { gGiMagicArrowDL, gGiFireArrowColorDL, gGiArrowMagicDL } },
- // ice arrows, OBJECT_GI_M_ARROW
+ // GID_ARROW_ICE
{ GetItem_DrawMagicArrow, { gGiMagicArrowDL, gGiIceArrowColorDL, gGiArrowMagicDL } },
- // light arrows, OBJECT_GI_M_ARROW
+ // GID_ARROW_LIGHT
{ GetItem_DrawMagicArrow, { gGiMagicArrowDL, gGiLightArrowColorDL, gGiArrowMagicDL } },
- // skulltula token, OBJECT_GI_SUTARU
+ // GID_SKULL_TOKEN
{ GetItem_DrawSkullToken, { gGiSkulltulaTokenDL, gGiSkulltulaTokenFlameDL } },
- // din's fire, OBJECT_GI_GODDESS
+ // GID_DINS_FIRE
{ GetItem_DrawMagicSpell, { gGiMagicSpellDiamondDL, gGiDinsFireColorDL, gGiMagicSpellOrbDL } },
- // farore's wind, OBJECT_GI_GODDESS
+ // GID_FARORES_WIND
{ GetItem_DrawMagicSpell, { gGiMagicSpellDiamondDL, gGiFaroresWindColorDL, gGiMagicSpellOrbDL } },
- // nayru's Love, OBJECT_GI_GODDESS
+ // GID_NAYRUS_LOVE
{ GetItem_DrawMagicSpell, { gGiMagicSpellDiamondDL, gGiNayrusLoveColorDL, gGiMagicSpellOrbDL } },
- // blue fire, OBJECT_GI_FIRE
+ // GID_BLUE_FIRE
{ GetItem_DrawBlueFire, { gGiBlueFireChamberstickDL, gGiBlueFireFlameDL } },
- // bugs, OBJECT_GI_INSECT
+ // GID_BUG
{ GetItem_DrawOpa0Xlu1, { gGiBugsContainerDL, gGiBugsGlassDL } },
- // butterfly, OBJECT_GI_BUTTERFLY
+ // GID_BUTTERFLY
{ GetItem_DrawOpa0Xlu1, { gGiButterflyContainerDL, gGiButterflyGlassDL } },
- // poe, OBJECT_GI_GHOST
+ // GID_POE
{ GetItem_DrawPoes,
{ gGiGhostContainerLidDL, gGiGhostContainerGlassDL, gGiGhostContainerContentsDL, gGiPoeColorDL } },
- // fairy, OBJECT_GI_SOUL
+ // GID_FAIRY
{ GetItem_DrawFairy, { gGiFairyContainerBaseCapDL, gGiFairyContainerGlassDL, gGiFairyContainerContentsDL } },
- // bullet bag 40, OBJECT_GI_DEKUPOUCH
+ // GID_BULLET_BAG
{ GetItem_DrawBulletBag,
{ gGiBulletBagDL, gGiBulletBagColorDL, gGiBulletBagStringDL, gGiBulletBagStringColorDL, gGiBulletBagWritingDL } },
- // green rupee, OBJECT_GI_RUPY
+ // GID_RUPEE_GREEN
{ GetItem_DrawSmallRupee,
{ gGiRupeeInnerDL, gGiGreenRupeeInnerColorDL, gGiRupeeOuterDL, gGiGreenRupeeOuterColorDL } },
- // blue rupee, OBJECT_GI_RUPY
+ // GID_RUPEE_BLUE
{ GetItem_DrawSmallRupee,
{ gGiRupeeInnerDL, gGiBlueRupeeInnerColorDL, gGiRupeeOuterDL, gGiBlueRupeeOuterColorDL } },
- // red rupee, OBJECT_GI_RUPY
+ // GID_RUPEE_RED
{ GetItem_DrawSmallRupee, { gGiRupeeInnerDL, gGiRedRupeeInnerColorDL, gGiRupeeOuterDL, gGiRedRupeeOuterColorDL } },
- // big poe, OBJECT_GI_GHOST
+ // GID_BIG_POE
{ GetItem_DrawPoes,
{ gGiGhostContainerLidDL, gGiGhostContainerGlassDL, gGiGhostContainerContentsDL, gGiBigPoeColorDL } },
- // purple rupee, OBJECT_GI_RUPY
+ // GID_RUPEE_PURPLE
{ GetItem_DrawOpa10Xlu32,
{ gGiRupeeInnerDL, gGiPurpleRupeeInnerColorDL, gGiRupeeOuterDL, gGiPurpleRupeeOuterColorDL } },
- // gold rupee, OBJECT_GI_RUPY
+ // GID_RUPEE_GOLD
{ GetItem_DrawOpa10Xlu32,
{ gGiRupeeInnerDL, gGiGoldRupeeInnerColorDL, gGiRupeeOuterDL, gGiGoldRupeeOuterColorDL } },
- // bullet bag 50, OBJECT_GI_DEKUPOUCH
+ // GID_BULLET_BAG_50
{ GetItem_DrawBulletBag,
{ gGiBulletBagDL, gGiBulletBag50ColorDL, gGiBulletBagStringDL, gGiBulletBag50StringColorDL,
gGiBulletBagWritingDL } },
- // kokiri sword, OBJECT_GI_SWORD_1
+ // GID_SWORD_KOKIRI
{ GetItem_DrawOpa0, { gGiKokiriSwordDL } },
- // gold skulltula token, OBJECT_ST
+ // GID_SKULL_TOKEN_2
{ GetItem_DrawSkullToken, { gSkulltulaTokenDL, gSkulltulaTokenFlameDL } },
};
@@ -378,44 +378,44 @@ DrawItemTableEntry sDrawItemTable[] = {
* Draw "Get Item" Model
* Calls the corresponding draw function for the given draw ID
*/
-void GetItem_Draw(PlayState* play, s16 drawId) {
- sDrawItemTable[drawId].drawFunc(play, drawId);
+void GetItem_Draw(PlayState* play, s16 giDrawId) {
+ sDrawItemTable[giDrawId].drawFunc(play, giDrawId);
}
// All remaining functions in this file are draw functions referenced in the table and called by the function above
-void GetItem_DrawMaskOrBombchu(PlayState* play, s16 drawId) {
+void GetItem_DrawMaskOrBombchu(PlayState* play, s16 giDrawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx, "../z_draw.c", 556);
Gfx_SetupDL_26Opa(play->state.gfxCtx);
MATRIX_FINALIZE_AND_LOAD(POLY_OPA_DISP++, play->state.gfxCtx, "../z_draw.c", 560);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[0]);
CLOSE_DISPS(play->state.gfxCtx, "../z_draw.c", 565);
}
-void GetItem_DrawSoldOut(PlayState* play, s16 drawId) {
+void GetItem_DrawSoldOut(PlayState* play, s16 giDrawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx, "../z_draw.c", 572);
POLY_XLU_DISP = Gfx_SetupDL(POLY_XLU_DISP, SETUPDL_5);
MATRIX_FINALIZE_AND_LOAD(POLY_XLU_DISP++, play->state.gfxCtx, "../z_draw.c", 576);
- gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[0]);
+ gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[giDrawId].dlists[0]);
CLOSE_DISPS(play->state.gfxCtx, "../z_draw.c", 581);
}
-void GetItem_DrawBlueFire(PlayState* play, s16 drawId) {
+void GetItem_DrawBlueFire(PlayState* play, s16 giDrawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx, "../z_draw.c", 588);
Gfx_SetupDL_25Opa(play->state.gfxCtx);
MATRIX_FINALIZE_AND_LOAD(POLY_OPA_DISP++, play->state.gfxCtx, "../z_draw.c", 592);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[0]);
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
gSPSegment(POLY_XLU_DISP++, 0x08,
@@ -426,24 +426,24 @@ void GetItem_DrawBlueFire(PlayState* play, s16 drawId) {
Matrix_Translate(-8.0f, -2.0f, 0.0f, MTXMODE_APPLY);
Matrix_ReplaceRotation(&play->billboardMtxF);
MATRIX_FINALIZE_AND_LOAD(POLY_XLU_DISP++, play->state.gfxCtx, "../z_draw.c", 615);
- gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[1]);
+ gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[giDrawId].dlists[1]);
Matrix_Pop();
CLOSE_DISPS(play->state.gfxCtx, "../z_draw.c", 621);
}
-void GetItem_DrawPoes(PlayState* play, s16 drawId) {
+void GetItem_DrawPoes(PlayState* play, s16 giDrawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx, "../z_draw.c", 628);
Gfx_SetupDL_25Opa(play->state.gfxCtx);
MATRIX_FINALIZE_AND_LOAD(POLY_OPA_DISP++, play->state.gfxCtx, "../z_draw.c", 632);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[0]);
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
MATRIX_FINALIZE_AND_LOAD(POLY_XLU_DISP++, play->state.gfxCtx, "../z_draw.c", 641);
- gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[1]);
+ gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[giDrawId].dlists[1]);
gSPSegment(POLY_XLU_DISP++, 0x08,
Gfx_TwoTexScroll(play->state.gfxCtx, G_TX_RENDERTILE, 0 * (play->state.frames * 0),
0 * (play->state.frames * 0), 16, 32, 1, 1 * (play->state.frames * 1),
@@ -451,25 +451,25 @@ void GetItem_DrawPoes(PlayState* play, s16 drawId) {
Matrix_Push();
Matrix_ReplaceRotation(&play->billboardMtxF);
MATRIX_FINALIZE_AND_LOAD(POLY_XLU_DISP++, play->state.gfxCtx, "../z_draw.c", 656);
- gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[3]);
- gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[2]);
+ gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[giDrawId].dlists[3]);
+ gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[giDrawId].dlists[2]);
Matrix_Pop();
CLOSE_DISPS(play->state.gfxCtx, "../z_draw.c", 663);
}
-void GetItem_DrawFairy(PlayState* play, s16 drawId) {
+void GetItem_DrawFairy(PlayState* play, s16 giDrawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx, "../z_draw.c", 670);
Gfx_SetupDL_25Opa(play->state.gfxCtx);
MATRIX_FINALIZE_AND_LOAD(POLY_OPA_DISP++, play->state.gfxCtx, "../z_draw.c", 674);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[0]);
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
MATRIX_FINALIZE_AND_LOAD(POLY_XLU_DISP++, play->state.gfxCtx, "../z_draw.c", 683);
- gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[1]);
+ gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[giDrawId].dlists[1]);
gSPSegment(POLY_XLU_DISP++, 0x08,
Gfx_TwoTexScroll(play->state.gfxCtx, G_TX_RENDERTILE, 0 * (play->state.frames * 0),
0 * (play->state.frames * 0), 32, 32, 1, 1 * (play->state.frames * 1),
@@ -477,13 +477,13 @@ void GetItem_DrawFairy(PlayState* play, s16 drawId) {
Matrix_Push();
Matrix_ReplaceRotation(&play->billboardMtxF);
MATRIX_FINALIZE_AND_LOAD(POLY_XLU_DISP++, play->state.gfxCtx, "../z_draw.c", 698);
- gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[2]);
+ gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[giDrawId].dlists[2]);
Matrix_Pop();
CLOSE_DISPS(play->state.gfxCtx, "../z_draw.c", 704);
}
-void GetItem_DrawMirrorShield(PlayState* play, s16 drawId) {
+void GetItem_DrawMirrorShield(PlayState* play, s16 giDrawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx, "../z_draw.c", 712);
@@ -494,23 +494,23 @@ void GetItem_DrawMirrorShield(PlayState* play, s16 drawId) {
1 * (play->state.frames * 2) % 256, 64, 64, 1, 0 * (play->state.frames * 0) % 128,
1 * (play->state.frames * 1) % 128, 32, 32));
MATRIX_FINALIZE_AND_LOAD(POLY_OPA_DISP++, play->state.gfxCtx, "../z_draw.c", 723);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[0]);
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
MATRIX_FINALIZE_AND_LOAD(POLY_XLU_DISP++, play->state.gfxCtx, "../z_draw.c", 730);
- gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[1]);
+ gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[giDrawId].dlists[1]);
CLOSE_DISPS(play->state.gfxCtx, "../z_draw.c", 735);
}
-void GetItem_DrawSkullToken(PlayState* play, s16 drawId) {
+void GetItem_DrawSkullToken(PlayState* play, s16 giDrawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx, "../z_draw.c", 742);
Gfx_SetupDL_25Opa(play->state.gfxCtx);
MATRIX_FINALIZE_AND_LOAD(POLY_OPA_DISP++, play->state.gfxCtx, "../z_draw.c", 746);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[0]);
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
gSPSegment(POLY_XLU_DISP++, 0x08,
@@ -518,13 +518,13 @@ void GetItem_DrawSkullToken(PlayState* play, s16 drawId) {
1 * -(play->state.frames * 5), 32, 32, 1, 0 * (play->state.frames * 0),
0 * (play->state.frames * 0), 32, 64));
MATRIX_FINALIZE_AND_LOAD(POLY_XLU_DISP++, play->state.gfxCtx, "../z_draw.c", 760);
- gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[1]);
+ gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[giDrawId].dlists[1]);
CLOSE_DISPS(play->state.gfxCtx, "../z_draw.c", 765);
}
-void GetItem_DrawEggOrMedallion(PlayState* play, s16 drawId) {
- DrawItemTableEntry* entry = &sDrawItemTable[drawId];
+void GetItem_DrawEggOrMedallion(PlayState* play, s16 giDrawId) {
+ DrawItemTableEntry* entry = &sDrawItemTable[giDrawId];
OPEN_DISPS(play->state.gfxCtx, "../z_draw.c", 772);
@@ -536,23 +536,23 @@ void GetItem_DrawEggOrMedallion(PlayState* play, s16 drawId) {
CLOSE_DISPS(play->state.gfxCtx, "../z_draw.c", 783);
}
-void GetItem_DrawCompass(PlayState* play, s16 drawId) {
+void GetItem_DrawCompass(PlayState* play, s16 giDrawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx, "../z_draw.c", 811);
Gfx_SetupDL_25Opa(play->state.gfxCtx);
MATRIX_FINALIZE_AND_LOAD(POLY_OPA_DISP++, play->state.gfxCtx, "../z_draw.c", 815);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[0]);
POLY_XLU_DISP = Gfx_SetupDL(POLY_XLU_DISP, SETUPDL_5);
MATRIX_FINALIZE_AND_LOAD(POLY_XLU_DISP++, play->state.gfxCtx, "../z_draw.c", 822);
- gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[1]);
+ gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[giDrawId].dlists[1]);
CLOSE_DISPS(play->state.gfxCtx, "../z_draw.c", 827);
}
-void GetItem_DrawPotion(PlayState* play, s16 drawId) {
+void GetItem_DrawPotion(PlayState* play, s16 giDrawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx, "../z_draw.c", 834);
@@ -563,20 +563,20 @@ void GetItem_DrawPotion(PlayState* play, s16 drawId) {
1 * (play->state.frames * 1), 32, 32, 1, -1 * (play->state.frames * 1),
1 * (play->state.frames * 1), 32, 32));
MATRIX_FINALIZE_AND_LOAD(POLY_OPA_DISP++, play->state.gfxCtx, "../z_draw.c", 845);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[1]);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[2]);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[3]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[1]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[0]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[2]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[3]);
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
MATRIX_FINALIZE_AND_LOAD(POLY_XLU_DISP++, play->state.gfxCtx, "../z_draw.c", 855);
- gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[4]);
- gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[5]);
+ gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[giDrawId].dlists[4]);
+ gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[giDrawId].dlists[5]);
CLOSE_DISPS(play->state.gfxCtx, "../z_draw.c", 861);
}
-void GetItem_DrawGoronSword(PlayState* play, s16 drawId) {
+void GetItem_DrawGoronSword(PlayState* play, s16 giDrawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx, "../z_draw.c", 868);
@@ -587,12 +587,12 @@ void GetItem_DrawGoronSword(PlayState* play, s16 drawId) {
0 * (play->state.frames * 1), 32, 32, 1, 0 * (play->state.frames * 1),
0 * (play->state.frames * 1), 32, 32));
MATRIX_FINALIZE_AND_LOAD(POLY_OPA_DISP++, play->state.gfxCtx, "../z_draw.c", 878);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[0]);
CLOSE_DISPS(play->state.gfxCtx, "../z_draw.c", 883);
}
-void GetItem_DrawDekuNuts(PlayState* play, s16 drawId) {
+void GetItem_DrawDekuNuts(PlayState* play, s16 giDrawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx, "../z_draw.c", 890);
@@ -603,12 +603,12 @@ void GetItem_DrawDekuNuts(PlayState* play, s16 drawId) {
1 * (play->state.frames * 6), 32, 32, 1, 1 * (play->state.frames * 6),
1 * (play->state.frames * 6), 32, 32));
MATRIX_FINALIZE_AND_LOAD(POLY_OPA_DISP++, play->state.gfxCtx, "../z_draw.c", 901);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[0]);
CLOSE_DISPS(play->state.gfxCtx, "../z_draw.c", 906);
}
-void GetItem_DrawRecoveryHeart(PlayState* play, s16 drawId) {
+void GetItem_DrawRecoveryHeart(PlayState* play, s16 giDrawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx, "../z_draw.c", 913);
@@ -619,12 +619,12 @@ void GetItem_DrawRecoveryHeart(PlayState* play, s16 drawId) {
1 * -(play->state.frames * 3), 32, 32, 1, 0 * (play->state.frames * 1),
1 * -(play->state.frames * 2), 32, 32));
MATRIX_FINALIZE_AND_LOAD(POLY_XLU_DISP++, play->state.gfxCtx, "../z_draw.c", 924);
- gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[0]);
+ gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[giDrawId].dlists[0]);
CLOSE_DISPS(play->state.gfxCtx, "../z_draw.c", 929);
}
-void GetItem_DrawFish(PlayState* play, s16 drawId) {
+void GetItem_DrawFish(PlayState* play, s16 giDrawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx, "../z_draw.c", 936);
@@ -635,41 +635,41 @@ void GetItem_DrawFish(PlayState* play, s16 drawId) {
1 * (play->state.frames * 1), 32, 32, 1, 0 * (play->state.frames * 0),
1 * (play->state.frames * 1), 32, 32));
MATRIX_FINALIZE_AND_LOAD(POLY_XLU_DISP++, play->state.gfxCtx, "../z_draw.c", 947);
- gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[0]);
+ gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[giDrawId].dlists[0]);
CLOSE_DISPS(play->state.gfxCtx, "../z_draw.c", 952);
}
-void GetItem_DrawOpa0(PlayState* play, s16 drawId) {
+void GetItem_DrawOpa0(PlayState* play, s16 giDrawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx, "../z_draw.c", 959);
Gfx_SetupDL_25Opa(play->state.gfxCtx);
MATRIX_FINALIZE_AND_LOAD(POLY_OPA_DISP++, play->state.gfxCtx, "../z_draw.c", 963);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[0]);
CLOSE_DISPS(play->state.gfxCtx, "../z_draw.c", 968);
}
-void GetItem_DrawOpa0Xlu1(PlayState* play, s16 drawId) {
+void GetItem_DrawOpa0Xlu1(PlayState* play, s16 giDrawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx, "../z_draw.c", 975);
Gfx_SetupDL_25Opa(play->state.gfxCtx);
MATRIX_FINALIZE_AND_LOAD(POLY_OPA_DISP++, play->state.gfxCtx, "../z_draw.c", 979);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[0]);
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
MATRIX_FINALIZE_AND_LOAD(POLY_XLU_DISP++, play->state.gfxCtx, "../z_draw.c", 986);
- gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[1]);
+ gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[giDrawId].dlists[1]);
CLOSE_DISPS(play->state.gfxCtx, "../z_draw.c", 991);
}
-void GetItem_DrawXlu01(PlayState* play, s16 drawId) {
- DrawItemTableEntry* entry = &sDrawItemTable[drawId];
+void GetItem_DrawXlu01(PlayState* play, s16 giDrawId) {
+ DrawItemTableEntry* entry = &sDrawItemTable[giDrawId];
OPEN_DISPS(play->state.gfxCtx, "../z_draw.c", 998);
@@ -681,41 +681,41 @@ void GetItem_DrawXlu01(PlayState* play, s16 drawId) {
CLOSE_DISPS(play->state.gfxCtx, "../z_draw.c", 1008);
}
-void GetItem_DrawOpa10Xlu2(PlayState* play, s16 drawId) {
+void GetItem_DrawOpa10Xlu2(PlayState* play, s16 giDrawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx, "../z_draw.c", 1015);
Gfx_SetupDL_25Opa(play->state.gfxCtx);
MATRIX_FINALIZE_AND_LOAD(POLY_OPA_DISP++, play->state.gfxCtx, "../z_draw.c", 1019);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[1]);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[1]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[0]);
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
MATRIX_FINALIZE_AND_LOAD(POLY_XLU_DISP++, play->state.gfxCtx, "../z_draw.c", 1027);
- gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[2]);
+ gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[giDrawId].dlists[2]);
CLOSE_DISPS(play->state.gfxCtx, "../z_draw.c", 1032);
}
-void GetItem_DrawMagicArrow(PlayState* play, s16 drawId) {
+void GetItem_DrawMagicArrow(PlayState* play, s16 giDrawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx, "../z_draw.c", 1039);
Gfx_SetupDL_25Opa(play->state.gfxCtx);
MATRIX_FINALIZE_AND_LOAD(POLY_OPA_DISP++, play->state.gfxCtx, "../z_draw.c", 1043);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[0]);
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
MATRIX_FINALIZE_AND_LOAD(POLY_XLU_DISP++, play->state.gfxCtx, "../z_draw.c", 1050);
- gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[1]);
- gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[2]);
+ gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[giDrawId].dlists[1]);
+ gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[giDrawId].dlists[2]);
CLOSE_DISPS(play->state.gfxCtx, "../z_draw.c", 1056);
}
-void GetItem_DrawMagicSpell(PlayState* play, s16 drawId) {
+void GetItem_DrawMagicSpell(PlayState* play, s16 giDrawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx, "../z_draw.c", 1063);
@@ -726,47 +726,47 @@ void GetItem_DrawMagicSpell(PlayState* play, s16 drawId) {
1 * -(play->state.frames * 6), 32, 32, 1, 1 * (play->state.frames * 1),
-1 * (play->state.frames * 2), 32, 32));
MATRIX_FINALIZE_AND_LOAD(POLY_XLU_DISP++, play->state.gfxCtx, "../z_draw.c", 1074);
- gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[0]);
- gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[1]);
- gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[2]);
+ gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[giDrawId].dlists[0]);
+ gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[giDrawId].dlists[1]);
+ gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[giDrawId].dlists[2]);
CLOSE_DISPS(play->state.gfxCtx, "../z_draw.c", 1081);
}
-void GetItem_DrawOpa1023(PlayState* play, s16 drawId) {
+void GetItem_DrawOpa1023(PlayState* play, s16 giDrawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx, "../z_draw.c", 1088);
Gfx_SetupDL_25Opa(play->state.gfxCtx);
MATRIX_FINALIZE_AND_LOAD(POLY_OPA_DISP++, play->state.gfxCtx, "../z_draw.c", 1092);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[1]);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[2]);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[3]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[1]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[0]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[2]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[3]);
CLOSE_DISPS(play->state.gfxCtx, "../z_draw.c", 1100);
}
-void GetItem_DrawOpa10Xlu32(PlayState* play, s16 drawId) {
+void GetItem_DrawOpa10Xlu32(PlayState* play, s16 giDrawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx, "../z_draw.c", 1108);
Gfx_SetupDL_25Opa(play->state.gfxCtx);
MATRIX_FINALIZE_AND_LOAD(POLY_OPA_DISP++, play->state.gfxCtx, "../z_draw.c", 1112);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[1]);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[1]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[0]);
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
MATRIX_FINALIZE_AND_LOAD(POLY_XLU_DISP++, play->state.gfxCtx, "../z_draw.c", 1120);
- gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[3]);
- gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[2]);
+ gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[giDrawId].dlists[3]);
+ gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[giDrawId].dlists[2]);
CLOSE_DISPS(play->state.gfxCtx, "../z_draw.c", 1126);
}
-void GetItem_DrawSmallRupee(PlayState* play, s16 drawId) {
+void GetItem_DrawSmallRupee(PlayState* play, s16 giDrawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx, "../z_draw.c", 1133);
@@ -775,18 +775,18 @@ void GetItem_DrawSmallRupee(PlayState* play, s16 drawId) {
Gfx_SetupDL_25Opa(play->state.gfxCtx);
MATRIX_FINALIZE_AND_LOAD(POLY_OPA_DISP++, play->state.gfxCtx, "../z_draw.c", 1140);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[1]);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[1]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[0]);
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
MATRIX_FINALIZE_AND_LOAD(POLY_XLU_DISP++, play->state.gfxCtx, "../z_draw.c", 1148);
- gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[3]);
- gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[2]);
+ gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[giDrawId].dlists[3]);
+ gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[giDrawId].dlists[2]);
CLOSE_DISPS(play->state.gfxCtx, "../z_draw.c", 1154);
}
-void GetItem_DrawScale(PlayState* play, s16 drawId) {
+void GetItem_DrawScale(PlayState* play, s16 giDrawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx, "../z_draw.c", 1162);
@@ -797,16 +797,16 @@ void GetItem_DrawScale(PlayState* play, s16 drawId) {
-1 * (play->state.frames * 2), 64, 64, 1, 1 * (play->state.frames * 4),
1 * -(play->state.frames * 4), 32, 32));
MATRIX_FINALIZE_AND_LOAD(POLY_XLU_DISP++, play->state.gfxCtx, "../z_draw.c", 1173);
- gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[2]);
- gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[3]);
- gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[1]);
- gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[drawId].dlists[0]);
+ gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[giDrawId].dlists[2]);
+ gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[giDrawId].dlists[3]);
+ gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[giDrawId].dlists[1]);
+ gSPDisplayList(POLY_XLU_DISP++, sDrawItemTable[giDrawId].dlists[0]);
CLOSE_DISPS(play->state.gfxCtx, "../z_draw.c", 1181);
}
-void GetItem_DrawBulletBag(PlayState* play, s16 drawId) {
- DrawItemTableEntry* entry = &sDrawItemTable[drawId];
+void GetItem_DrawBulletBag(PlayState* play, s16 giDrawId) {
+ DrawItemTableEntry* entry = &sDrawItemTable[giDrawId];
OPEN_DISPS(play->state.gfxCtx, "../z_draw.c", 1188);
@@ -824,21 +824,21 @@ void GetItem_DrawBulletBag(PlayState* play, s16 drawId) {
CLOSE_DISPS(play->state.gfxCtx, "../z_draw.c", 1207);
}
-void GetItem_DrawWallet(PlayState* play, s16 drawId) {
+void GetItem_DrawWallet(PlayState* play, s16 giDrawId) {
s32 pad;
OPEN_DISPS(play->state.gfxCtx, "../z_draw.c", 1214);
Gfx_SetupDL_25Opa(play->state.gfxCtx);
MATRIX_FINALIZE_AND_LOAD(POLY_OPA_DISP++, play->state.gfxCtx, "../z_draw.c", 1218);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[1]);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[0]);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[2]);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[3]);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[4]);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[5]);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[6]);
- gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].dlists[7]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[1]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[0]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[2]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[3]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[4]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[5]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[6]);
+ gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[giDrawId].dlists[7]);
CLOSE_DISPS(play->state.gfxCtx, "../z_draw.c", 1230);
}
diff --git a/src/code/z_eff_blure.c b/src/code/z_eff_blure.c
index 614cfa5b5..6e2023b67 100644
--- a/src/code/z_eff_blure.c
+++ b/src/code/z_eff_blure.c
@@ -9,7 +9,6 @@
#include "z64effect.h"
#include "z64skin_matrix.h"
-#include "z64.h" // required for gameplay keep, the header doesnt include any external dependencies
#include "assets/objects/gameplay_keep/gameplay_keep.h"
void EffectBlure_AddVertex(EffectBlure* this, Vec3f* p1, Vec3f* p2) {
diff --git a/src/code/z_fbdemo_circle.c b/src/code/z_fbdemo_circle.c
index dba041b01..b1b18f2f2 100644
--- a/src/code/z_fbdemo_circle.c
+++ b/src/code/z_fbdemo_circle.c
@@ -4,6 +4,7 @@
#include "gfx.h"
#include "sfx.h"
#include "widescreen.h"
+#include "z64transition.h"
typedef enum TransitionCircleDirection {
/* 0 */ TRANS_CIRCLE_DIR_IN,
@@ -15,34 +16,7 @@ Gfx sTransCircleEmptyDL[] = {
gsSPEndDisplayList(),
};
-#include "assets/code/fbdemo_circle/z_fbdemo_circle.c"
-
-Gfx sTransCircleDL[] = {
- gsDPPipeSync(),
- gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
- G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH),
- gsSPSetGeometryMode(G_SHADE | G_SHADING_SMOOTH),
- gsDPSetOtherMode(G_AD_DISABLE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE |
- G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE,
- G_AC_NONE | G_ZS_PIXEL | G_RM_XLU_SURF | G_RM_XLU_SURF2),
- gsDPSetCombineMode(G_CC_BLENDPEDECALA, G_CC_BLENDPEDECALA),
- gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
- gsDPLoadTextureBlock(0x08000000, G_IM_FMT_I, G_IM_SIZ_8b, 16, 64, 0, G_TX_NOMIRROR | G_TX_WRAP,
- G_TX_NOMIRROR | G_TX_CLAMP, 4, 6, G_TX_NOLOD, G_TX_NOLOD),
- gsSPDisplayList(0x09000000),
- gsSPVertex(sTransCircleVtx, 32, 0),
- gsSP2Triangles(0, 1, 2, 0, 1, 3, 4, 0),
- gsSP2Triangles(3, 5, 6, 0, 5, 7, 8, 0),
- gsSP2Triangles(7, 9, 10, 0, 9, 11, 12, 0),
- gsSP2Triangles(11, 13, 14, 0, 13, 15, 16, 0),
- gsSP2Triangles(15, 17, 18, 0, 17, 19, 20, 0),
- gsSP2Triangles(19, 21, 22, 0, 21, 23, 24, 0),
- gsSP2Triangles(23, 25, 26, 0, 25, 27, 28, 0),
- gsSP1Triangle(27, 29, 30, 0),
- gsSPVertex(&sTransCircleVtx[31], 3, 0),
- gsSP1Triangle(0, 1, 2, 0),
- gsSPEndDisplayList(),
-};
+#include "assets/code/fbdemo_circle/code.c"
void TransitionCircle_Start(void* thisx) {
TransitionCircle* this = (TransitionCircle*)thisx;
diff --git a/src/code/z_fbdemo_triforce.c b/src/code/z_fbdemo_triforce.c
index d844644a2..6624a4373 100644
--- a/src/code/z_fbdemo_triforce.c
+++ b/src/code/z_fbdemo_triforce.c
@@ -1,8 +1,10 @@
#include "transition_triforce.h"
#include "printf.h"
+#include "z64math.h"
+#include "z64transition_instances.h"
-#include "assets/code/fbdemo_triforce/z_fbdemo_triforce.c"
+#include "assets/code/fbdemo_triforce/code.c"
void TransitionTriforce_Start(void* thisx) {
TransitionTriforce* this = (TransitionTriforce*)thisx;
diff --git a/src/code/z_fbdemo_wipe1.c b/src/code/z_fbdemo_wipe1.c
index 346aa6d59..968573c98 100644
--- a/src/code/z_fbdemo_wipe1.c
+++ b/src/code/z_fbdemo_wipe1.c
@@ -10,35 +10,7 @@ typedef enum TransitionWipeDirection {
/* 1 */ TRANS_WIPE_DIR_OUT
} TransitionWipeDirection;
-#include "assets/code/fbdemo_wipe1/z_fbdemo_wipe1.c"
-
-Gfx sTransWipeDL[] = {
- gsDPPipeSync(),
- gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
- G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH),
- gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH),
- gsDPSetOtherMode(G_AD_DISABLE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE |
- G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_1PRIMITIVE,
- G_AC_NONE | G_ZS_PRIM | G_RM_PASS | G_RM_AA_ZB_TEX_EDGE2),
- gsDPSetCombineLERP(TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0, TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0, COMBINED, 0,
- PRIMITIVE, 0, COMBINED, 0, PRIMITIVE, 0),
- gsDPSetPrimDepth(0, 0),
- gsDPLoadTextureBlock_4b(sTransWipeTex, G_IM_FMT_I, 64, 64, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_MIRROR | G_TX_WRAP, 6,
- 6, 11, G_TX_NOLOD),
- gsDPLoadMultiBlock_4b(sTransWipeTex, 0x0100, 1, G_IM_FMT_I, 64, 64, 0, G_TX_NOMIRROR | G_TX_WRAP,
- G_TX_MIRROR | G_TX_WRAP, 6, 6, 11, 1),
- gsDPSetTextureLUT(G_TT_NONE),
- gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
- gsSPDisplayList(0x08000000),
- gsSPVertex(sTransWipeVtx, 25, 0),
- gsSP2Triangles(0, 1, 2, 0, 1, 3, 4, 0),
- gsSP2Triangles(5, 6, 7, 0, 6, 8, 9, 0),
- gsSP2Triangles(8, 10, 11, 0, 10, 12, 13, 0),
- gsSP2Triangles(12, 14, 15, 0, 14, 16, 17, 0),
- gsSP2Triangles(16, 18, 19, 0, 18, 20, 21, 0),
- gsSP2Triangles(20, 22, 23, 0, 22, 0, 24, 0),
- gsSPEndDisplayList(),
-};
+#include "assets/code/fbdemo_wipe1/code.c"
// unused.
Gfx sTransWipeSyncDL[] = {
diff --git a/src/code/z_kaleido_scope_call.c b/src/code/z_kaleido_scope_call.c
index 2707db826..1e225eb67 100644
--- a/src/code/z_kaleido_scope_call.c
+++ b/src/code/z_kaleido_scope_call.c
@@ -1,4 +1,4 @@
-#pragma increment_block_number "gc-eu:80 gc-eu-mq:80 gc-jp:80 gc-jp-ce:80 gc-jp-mq:80 gc-us:80 gc-us-mq:80 ique-cn:80" \
+#pragma increment_block_number "gc-eu:80 gc-eu-mq:80 gc-jp:80 gc-jp-ce:80 gc-jp-mq:80 gc-us:80 gc-us-mq:80 ique-cn:64" \
"ntsc-1.0:96 ntsc-1.1:96 ntsc-1.2:96 pal-1.0:96 pal-1.1:96"
#include "libu64/debug.h"
diff --git a/src/code/z_kaleido_setup.c b/src/code/z_kaleido_setup.c
index d1ddd021c..dc176e406 100644
--- a/src/code/z_kaleido_setup.c
+++ b/src/code/z_kaleido_setup.c
@@ -79,7 +79,7 @@ void KaleidoSetup_Update(PlayState* play) {
if (CHECK_BTN_ALL(input->cur.button, BTN_L) && CHECK_BTN_ALL(input->press.button, BTN_CUP)) {
if (IS_EVENT_EDITOR_ENABLED && BREG(0)) {
- pauseCtx->debugState = 3;
+ pauseCtx->debugState = PAUSE_DEBUG_STATE_FLAG_SET_OPEN;
}
} else if (CHECK_BTN_ALL(input->press.button, BTN_START)) {
// The start button was pressed, pause
@@ -134,7 +134,7 @@ void KaleidoSetup_Init(PlayState* play) {
PauseContext* pauseCtx = &play->pauseCtx;
pauseCtx->state = PAUSE_STATE_OFF;
- pauseCtx->debugState = 0;
+ pauseCtx->debugState = PAUSE_DEBUG_STATE_CLOSED;
pauseCtx->eye.x = pauseCtx->eye.y = 0.0f;
pauseCtx->eye.z = 64.0f;
@@ -160,8 +160,8 @@ void KaleidoSetup_Init(PlayState* play) {
pauseCtx->cursorY[PAUSE_MAP] = 0;
pauseCtx->cursorX[PAUSE_QUEST] = 0;
pauseCtx->cursorY[PAUSE_QUEST] = 0;
- pauseCtx->cursorX[PAUSE_EQUIP] = 1;
- pauseCtx->cursorY[PAUSE_EQUIP] = 0;
+ pauseCtx->cursorX[PAUSE_EQUIP] = EQUIP_VALUE_SWORD_KOKIRI;
+ pauseCtx->cursorY[PAUSE_EQUIP] = EQUIP_TYPE_SWORD;
pauseCtx->cursorItem[PAUSE_ITEM] = PAUSE_ITEM_NONE;
pauseCtx->cursorItem[PAUSE_MAP] = VREG(30) + 3;
diff --git a/src/code/z_kankyo.c b/src/code/z_kankyo.c
index 4813df34c..fc6170873 100644
--- a/src/code/z_kankyo.c
+++ b/src/code/z_kankyo.c
@@ -1,5 +1,5 @@
-#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq:192" \
- "ique-cn:192 ntsc-1.0:192 ntsc-1.1:192 ntsc-1.2:192 pal-1.0:192 pal-1.1:192"
+#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \
+ "ique-cn:128 ntsc-1.0:192 ntsc-1.1:192 ntsc-1.2:192 pal-1.0:192 pal-1.1:192"
#include "libc64/qrand.h"
#include "libu64/gfxprint.h"
@@ -238,8 +238,8 @@ s16 sLightningFlashAlpha;
s16 sSunDepthTestX;
s16 sSunDepthTestY;
-#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq:192" \
- "ique-cn:160 ntsc-1.0:192 ntsc-1.1:192 ntsc-1.2:192 pal-1.0:192 pal-1.1:192"
+#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \
+ "ique-cn:128 ntsc-1.0:128 ntsc-1.1:128 ntsc-1.2:128 pal-1.0:192 pal-1.1:192"
LightNode* sNGameOverLightNode;
LightInfo sNGameOverLightInfo;
@@ -1436,7 +1436,7 @@ void Environment_DrawSunAndMoon(PlayState* play) {
G_AC_NONE | G_ZS_PIXEL | G_RM_FOG_PRIM_A | G_RM_XLU_SURF2),
gsDPLoadTextureBlock(gMoonTex, G_IM_FMT_IA, G_IM_SIZ_8b, 64, 64, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD),
- gsSPVertex(gameplay_keepVtx_038F70, 4, 0),
+ gsSPVertex(gMoonDL_04038F70_Vtx, 4, 0),
gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0),
gsSPEndDisplayList(),
};
diff --git a/src/code/z_message.c b/src/code/z_message.c
index 206253c7f..3b6d94122 100644
--- a/src/code/z_message.c
+++ b/src/code/z_message.c
@@ -28,7 +28,7 @@
#include "assets/textures/parameter_static/parameter_static.h"
#pragma increment_block_number "gc-eu:0 gc-eu-mq:0 gc-jp:0 gc-jp-ce:0 gc-jp-mq:0 gc-us:0 gc-us-mq:0 ntsc-1.0:32" \
- "ntsc-1.1:32 ntsc-1.2:32 pal-1.0:128 pal-1.1:128"
+ "ntsc-1.1:32 ntsc-1.2:32 pal-1.0:0 pal-1.1:0"
#if !PLATFORM_IQUE
#define MSG_BUF_DECODED (msgCtx->msgBufDecoded)
diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c
index a21a83b39..e66aa089b 100644
--- a/src/code/z_parameter.c
+++ b/src/code/z_parameter.c
@@ -30,6 +30,8 @@
#include "assets/textures/do_action_static/do_action_static.h"
#include "assets/textures/icon_item_static/icon_item_static.h"
+#pragma increment_block_number "gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128"
+
typedef struct RestrictionFlags {
/* 0x00 */ u8 sceneId;
/* 0x01 */ u8 flags1;
@@ -3546,8 +3548,8 @@ void func_8008A994(InterfaceContext* interfaceCtx) {
View_ApplyOrthoToOverlay(&interfaceCtx->view);
}
-#if DEBUG_FEATURES && (ENABLE_INV_EDITOR || ENABLE_EVENT_EDITOR)
-#define CAN_DRAW_INTERFACE (pauseCtx->debugState == 0)
+#if IS_INV_EDITOR_ENABLED || IS_EVENT_EDITOR_ENABLED
+#define CAN_DRAW_INTERFACE (pauseCtx->debugState == PAUSE_DEBUG_STATE_CLOSED)
#else
#define CAN_DRAW_INTERFACE true
#endif
@@ -3875,7 +3877,8 @@ void Interface_Draw(PlayState* play) {
}
gSPVertex(OVERLAY_DISP++, &pauseCtx->cursorVtx[PAUSE_CURSOR_QUAD_4 * 4], 4, 0);
- gDPLoadTextureBlock(OVERLAY_DISP++, gMagicArrowEquipEffectTex, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, 0,
+ gDPLoadTextureBlock(OVERLAY_DISP++, gMagicArrowEquipEffectTex, G_IM_FMT_IA, G_IM_SIZ_8b,
+ gMagicArrowEquipEffectTex_WIDTH, gMagicArrowEquipEffectTex_HEIGHT, 0,
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK,
G_TX_NOLOD, G_TX_NOLOD);
}
@@ -4413,7 +4416,7 @@ void Interface_Draw(PlayState* play) {
}
#if IS_EVENT_EDITOR_ENABLED
- if (pauseCtx->debugState == 3) {
+ if (pauseCtx->debugState == PAUSE_DEBUG_STATE_FLAG_SET_OPEN) {
FlagSet_Update(play);
}
#endif
diff --git a/src/code/z_player_lib.c b/src/code/z_player_lib.c
index 7800b5655..4bcd3d1a2 100644
--- a/src/code/z_player_lib.c
+++ b/src/code/z_player_lib.c
@@ -18,8 +18,8 @@
#include "assets/objects/object_link_child/object_link_child.h"
#include "config.h"
-#pragma increment_block_number "gc-eu:0 gc-eu-mq:0 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \
- "pal-1.0:0 pal-1.1:0"
+#pragma increment_block_number "gc-eu:0 gc-eu-mq:0 gc-jp:0 gc-jp-ce:0 gc-jp-mq:0 gc-us:0 gc-us-mq:0 pal-1.0:0" \
+ "pal-1.1:0"
typedef struct BowSlingshotStringData {
/* 0x00 */ Gfx* dList;
@@ -975,7 +975,7 @@ s32 Player_GetEnvironmentalHazard(PlayState* play) {
return envHazard + 1;
}
-u8 sPlayerFaces[PLAYER_FACE_MAX][PLAYER_FACEPART_MAX] = {
+PlayerFaceIndices sPlayerFaces[PLAYER_FACE_MAX] = {
// The first 6 faces defined must be default blinking faces. See relevant code in `Player_UpdateCommon`.
{ PLAYER_EYES_OPEN, PLAYER_MOUTH_CLOSED }, // PLAYER_FACE_NEUTRAL
{ PLAYER_EYES_HALF, PLAYER_MOUTH_CLOSED }, // PLAYER_FACE_NEUTRAL_BLINKING_HALF
@@ -989,12 +989,12 @@ u8 sPlayerFaces[PLAYER_FACE_MAX][PLAYER_FACEPART_MAX] = {
{ PLAYER_EYES_CLOSED, PLAYER_MOUTH_CLOSED }, // PLAYER_FACE_NEUTRAL_BLINKING_CLOSED_2
// The rest of these faces go unused. Face data encoded within animations handles all other faces.
- { PLAYER_EYES_RIGHT, PLAYER_MOUTH_CLOSED }, // PLAYER_FACE_LOOK_RIGHT
+ { PLAYER_EYES_LEFT, PLAYER_MOUTH_CLOSED }, // PLAYER_FACE_LOOK_LEFT
{ PLAYER_EYES_WIDE, PLAYER_MOUTH_HALF }, // PLAYER_FACE_SURPRISED
{ PLAYER_EYES_WINCING, PLAYER_MOUTH_OPEN }, // PLAYER_FACE_HURT
{ PLAYER_EYES_OPEN, PLAYER_MOUTH_OPEN }, // PLAYER_FACE_GASP
- { PLAYER_EYES_LEFT, PLAYER_MOUTH_CLOSED }, // PLAYER_FACE_LOOK_LEFT
- { PLAYER_EYES_RIGHT, PLAYER_MOUTH_CLOSED }, // PLAYER_FACE_LOOK_RIGHT_2
+ { PLAYER_EYES_RIGHT, PLAYER_MOUTH_CLOSED }, // PLAYER_FACE_LOOK_RIGHT
+ { PLAYER_EYES_LEFT, PLAYER_MOUTH_CLOSED }, // PLAYER_FACE_LOOK_LEFT_2
{ PLAYER_EYES_CLOSED, PLAYER_MOUTH_OPEN }, // PLAYER_FACE_EYES_CLOSED_MOUTH_OPEN
{ PLAYER_EYES_HALF, PLAYER_MOUTH_HALF }, // PLAYER_FACE_OPENING
{ PLAYER_EYES_OPEN, PLAYER_MOUTH_OPEN }, // PLAYER_FACE_EYES_AND_MOUTH_OPEN
@@ -1012,8 +1012,8 @@ void* sEyeTextures[PLAYER_EYES_MAX] = {
gLinkAdultEyesOpenTex, // PLAYER_EYES_OPEN
gLinkAdultEyesHalfTex, // PLAYER_EYES_HALF
gLinkAdultEyesClosedfTex, // PLAYER_EYES_CLOSED
- gLinkAdultEyesLeftTex, // PLAYER_EYES_LEFT
gLinkAdultEyesRightTex, // PLAYER_EYES_RIGHT
+ gLinkAdultEyesLeftTex, // PLAYER_EYES_LEFT
gLinkAdultEyesWideTex, // PLAYER_EYES_WIDE
gLinkAdultEyesDownTex, // PLAYER_EYES_DOWN
gLinkAdultEyesWincingTex, // PLAYER_EYES_WINCING
@@ -1032,8 +1032,8 @@ void* sEyeTextures[][PLAYER_EYES_MAX] = {
gLinkAdultEyesOpenTex, // PLAYER_EYES_OPEN
gLinkAdultEyesHalfTex, // PLAYER_EYES_HALF
gLinkAdultEyesClosedfTex, // PLAYER_EYES_CLOSED
- gLinkAdultEyesLeftTex, // PLAYER_EYES_LEFT
gLinkAdultEyesRightTex, // PLAYER_EYES_RIGHT
+ gLinkAdultEyesLeftTex, // PLAYER_EYES_LEFT
gLinkAdultEyesWideTex, // PLAYER_EYES_WIDE
gLinkAdultEyesDownTex, // PLAYER_EYES_DOWN
gLinkAdultEyesWincingTex, // PLAYER_EYES_WINCING
@@ -1042,8 +1042,14 @@ void* sEyeTextures[][PLAYER_EYES_MAX] = {
gLinkChildEyesOpenTex, // PLAYER_EYES_OPEN
gLinkChildEyesHalfTex, // PLAYER_EYES_HALF
gLinkChildEyesClosedfTex, // PLAYER_EYES_CLOSED
- gLinkChildEyesLeftTex, // PLAYER_EYES_LEFT
- gLinkChildEyesRightTex, // PLAYER_EYES_RIGHT
+ /*
+ Note `PLAYER_EYES_RIGHT` corresponds to the "left" eyes texture, and vice-versa with the "right" eyes textures.
+ This is because on the textures Link appears to look left/right as if facing outwards the screen,
+ but the image is mirrored by the child Link model's UVs, reversing the direction actually looked in,
+ which results in-game in the correct eyes direction.
+ */
+ gLinkChildEyesLeftTex, // PLAYER_EYES_RIGHT
+ gLinkChildEyesRightTex, // PLAYER_EYES_LEFT
gLinkChildEyesWideTex, // PLAYER_EYES_WIDE
gLinkChildEyesDownTex, // PLAYER_EYES_DOWN
gLinkChildEyesWincingTex, // PLAYER_EYES_WINCING
@@ -1098,7 +1104,7 @@ void Player_DrawImpl(PlayState* play, void** skeleton, Vec3s* jointTable, s32 dL
// If the eyes index provided by the animation is negative, use the value provided by the `face` argument instead
if (eyesIndex < 0) {
- eyesIndex = sPlayerFaces[face][PLAYER_FACEPART_EYES];
+ eyesIndex = sPlayerFaces[face].eyeIndex;
}
#ifndef AVOID_UB
@@ -1109,7 +1115,7 @@ void Player_DrawImpl(PlayState* play, void** skeleton, Vec3s* jointTable, s32 dL
// If the mouth index provided by the animation is negative, use the value provided by the `face` argument instead
if (mouthIndex < 0) {
- mouthIndex = sPlayerFaces[face][PLAYER_FACEPART_MOUTH];
+ mouthIndex = sPlayerFaces[face].mouthIndex;
}
#ifndef AVOID_UB
diff --git a/src/libleo/api/cacreateleomanager.c b/src/libleo/api/cacreateleomanager.c
index d4f6f5100..4ae1c7bd9 100644
--- a/src/libleo/api/cacreateleomanager.c
+++ b/src/libleo/api/cacreateleomanager.c
@@ -2,7 +2,7 @@
#include "ultra64/leo.h"
#include "ultra64/leoappli.h"
#include "ultra64/leodrive.h"
-#include "libc/stdint.h"
+#include "stdint.h"
#include "attributes.h"
#include "ultra64.h"
diff --git a/src/libleo/api/cjcreateleomanager.c b/src/libleo/api/cjcreateleomanager.c
index 23f9da822..1daf54ca1 100644
--- a/src/libleo/api/cjcreateleomanager.c
+++ b/src/libleo/api/cjcreateleomanager.c
@@ -2,7 +2,7 @@
#include "ultra64/leo.h"
#include "ultra64/leoappli.h"
#include "ultra64/leodrive.h"
-#include "libc/stdint.h"
+#include "stdint.h"
#include "attributes.h"
#include "ultra64.h"
diff --git a/src/libultra/audio/drvrnew.c b/src/libultra/audio/drvrnew.c
index 6b10e66b7..e549347e0 100644
--- a/src/libultra/audio/drvrnew.c
+++ b/src/libultra/audio/drvrnew.c
@@ -1,5 +1,7 @@
#include "libaudio.h"
#include "synthInternals.h"
+#include "stdbool.h"
+#include "stddef.h"
// WARNING: THE FOLLOWING CONSTANT MUST BE KEPT IN SYNC WITH SCALING IN MICROCODE!!!
#define SCALE 16384
diff --git a/src/libultra/audio/env.c b/src/libultra/audio/env.c
index 2d0027ba7..654c682ab 100644
--- a/src/libultra/audio/env.c
+++ b/src/libultra/audio/env.c
@@ -1,6 +1,7 @@
#include "libaudio.h"
#include "synthInternals.h"
-#include "libc/math.h"
+#include "stdbool.h"
+#include "stddef.h"
#include "ultra64/convert.h"
#define EQPOWER_LENGTH 128
diff --git a/src/libultra/audio/filter.c b/src/libultra/audio/filter.c
index 937ffd04c..20e5d7e60 100644
--- a/src/libultra/audio/filter.c
+++ b/src/libultra/audio/filter.c
@@ -1,5 +1,6 @@
#include "libaudio.h"
#include "synthInternals.h"
+#include "stddef.h"
void alFilterNew(ALFilter* f, ALCmdHandler h, ALSetParam s, s32 type) {
f->source = NULL;
diff --git a/src/libultra/audio/heapalloc.c b/src/libultra/audio/heapalloc.c
index 52c3605c5..708134ec2 100644
--- a/src/libultra/audio/heapalloc.c
+++ b/src/libultra/audio/heapalloc.c
@@ -1,5 +1,6 @@
#include "libaudio.h"
#include "synthInternals.h"
+#include "stddef.h"
void* alHeapDBAlloc(u8* file, s32 line, ALHeap* hp, s32 num, s32 size) {
s32 bytes;
diff --git a/src/libultra/audio/libaudio.h b/src/libultra/audio/libaudio.h
index 67f04567b..4d30b0161 100644
--- a/src/libultra/audio/libaudio.h
+++ b/src/libultra/audio/libaudio.h
@@ -1,9 +1,6 @@
#ifndef __LIB_AUDIO__
#define __LIB_AUDIO__
-#include "libc/stdbool.h"
-#include "libc/stddef.h"
-#include "libc/stdint.h"
#include "ultra64/ultratypes.h"
#include "libaudio_abi.h"
diff --git a/src/libultra/audio/load.c b/src/libultra/audio/load.c
index 86486ce3a..02be1f47c 100644
--- a/src/libultra/audio/load.c
+++ b/src/libultra/audio/load.c
@@ -1,5 +1,8 @@
#include "libaudio.h"
#include "synthInternals.h"
+#include "stdbool.h"
+#include "stddef.h"
+#include "stdint.h"
#include "ultra64/R4300.h"
#ifndef MIN
diff --git a/src/libultra/audio/resample.c b/src/libultra/audio/resample.c
index 8301d22a1..8001eb151 100644
--- a/src/libultra/audio/resample.c
+++ b/src/libultra/audio/resample.c
@@ -1,5 +1,7 @@
#include "libaudio.h"
#include "synthInternals.h"
+#include "stdbool.h"
+#include "stddef.h"
#include "ultra64/convert.h"
Acmd* alResamplePull(void* filter, s16* outp, s32 outCnt, s32 sampleOffset, Acmd* p) {
diff --git a/src/libultra/audio/reverb.c b/src/libultra/audio/reverb.c
index 453147f12..9edf3ab9a 100644
--- a/src/libultra/audio/reverb.c
+++ b/src/libultra/audio/reverb.c
@@ -1,5 +1,8 @@
#include "libaudio.h"
#include "synthInternals.h"
+#include "stdbool.h"
+#include "stddef.h"
+#include "stdint.h"
#include "ultra64/convert.h"
#define RANGE 2.0
diff --git a/src/libultra/audio/sl.c b/src/libultra/audio/sl.c
index 7f2ebe28b..ad9949d11 100644
--- a/src/libultra/audio/sl.c
+++ b/src/libultra/audio/sl.c
@@ -1,4 +1,5 @@
#include "libaudio.h"
+#include "stddef.h"
ALGlobals* alGlobals = NULL;
diff --git a/src/libultra/audio/synallocfx.c b/src/libultra/audio/synallocfx.c
index 8c530fc19..55c8267e1 100644
--- a/src/libultra/audio/synallocfx.c
+++ b/src/libultra/audio/synallocfx.c
@@ -1,3 +1,4 @@
+#include "libaudio.h"
#include "synthInternals.h"
ALFxRef* alSynAllocFX(ALSynth* s, s16 bus, ALSynConfig* c, ALHeap* hp) {
diff --git a/src/libultra/audio/syndelete.c b/src/libultra/audio/syndelete.c
index 7af0d5009..96299af32 100644
--- a/src/libultra/audio/syndelete.c
+++ b/src/libultra/audio/syndelete.c
@@ -1,4 +1,5 @@
-#include "synthInternals.h"
+#include "libaudio.h"
+#include "stddef.h"
void alSynDelete(ALSynth* drvr) {
drvr->head = NULL;
diff --git a/src/libultra/audio/synthesizer.c b/src/libultra/audio/synthesizer.c
index 62d5677ec..62c07582e 100644
--- a/src/libultra/audio/synthesizer.c
+++ b/src/libultra/audio/synthesizer.c
@@ -1,4 +1,6 @@
+#include "libaudio.h"
#include "synthInternals.h"
+#include "stddef.h"
#ifndef MIN
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
diff --git a/src/libultra/bb/sa/common.c b/src/libultra/bb/sa/common.c
index 667af02b7..a18735f4a 100644
--- a/src/libultra/bb/sa/common.c
+++ b/src/libultra/bb/sa/common.c
@@ -1,4 +1,4 @@
-#include "libc/stddef.h"
+#include "stddef.h"
int strcmp(const char* s, const char* t) {
while (*s == *t) {
diff --git a/src/n64dd/n64dd_801CA0B0.c b/src/n64dd/n64dd_801CA0B0.c
index e3ba1be18..8252def9e 100644
--- a/src/n64dd/n64dd_801CA0B0.c
+++ b/src/n64dd/n64dd_801CA0B0.c
@@ -3,6 +3,7 @@
#include "libc64/aprintf.h"
#include "attributes.h"
#include "array_count.h"
+#include "color.h"
// Draws text to framebuffer
typedef struct struct_801CA704 {
diff --git a/src/n64dd/n64dd_error_textures.c b/src/n64dd/n64dd_error_textures.c
index d115fdd6e..38b42de36 100644
--- a/src/n64dd/n64dd_error_textures.c
+++ b/src/n64dd/n64dd_error_textures.c
@@ -2,18 +2,18 @@
u64 gN64DDError41Texs[2][0x600 / sizeof(u64)] = {
{
-#include "assets/n64dd/error_textures/n64dd_error_41_jpn.i4.inc.c"
+#include "assets/n64dd/error_textures/gN64DDError41JPNTex.i4.inc.c"
},
{
-#include "assets/n64dd/error_textures/n64dd_error_41_eng.i4.inc.c"
+#include "assets/n64dd/error_textures/gN64DDError41ENGTex.i4.inc.c"
},
};
u64 gN64DDPleaseReadManualTexs[2][0x2800 / sizeof(u64)] = {
{
-#include "assets/n64dd/error_textures/n64dd_please_read_manual_jpn.i4.inc.c"
+#include "assets/n64dd/error_textures/gN64DDPleaseReadManualJPNTex.i4.inc.c"
},
{
-#include "assets/n64dd/error_textures/n64dd_please_read_manual_eng.i4.inc.c"
+#include "assets/n64dd/error_textures/gN64DDPleaseReadManualENGTex.i4.inc.c"
},
};
diff --git a/src/n64dd/z_n64dd.c b/src/n64dd/z_n64dd.c
index a8ce0674c..4b750514d 100644
--- a/src/n64dd/z_n64dd.c
+++ b/src/n64dd/z_n64dd.c
@@ -16,7 +16,7 @@
#include "z64audio.h"
#include "z64thread.h"
-#pragma increment_block_number "ntsc-1.0:0 ntsc-1.1:0 ntsc-1.2:0 pal-1.0:0 pal-1.1:0"
+#pragma increment_block_number "ntsc-1.0:64 ntsc-1.1:64 ntsc-1.2:64 pal-1.0:64 pal-1.1:64"
typedef struct struct_801D9C30 {
/* 0x000 */ s32 unk_000; // disk start
diff --git a/src/overlays/actors/ovl_Bg_Dodoago/z_bg_dodoago.c b/src/overlays/actors/ovl_Bg_Dodoago/z_bg_dodoago.c
index 3764381c1..55dd43407 100644
--- a/src/overlays/actors/ovl_Bg_Dodoago/z_bg_dodoago.c
+++ b/src/overlays/actors/ovl_Bg_Dodoago/z_bg_dodoago.c
@@ -50,7 +50,7 @@ ActorProfile Bg_Dodoago_Profile = {
/**/ BgDodoago_Draw,
};
-static ColliderCylinderInit sColCylinderInitMain = {
+static ColliderCylinderInit sMainColliderCylinderInit = {
{
COL_MATERIAL_NONE,
AT_NONE,
@@ -70,7 +70,7 @@ static ColliderCylinderInit sColCylinderInitMain = {
{ 80, 30, 80, { 0, 0, 0 } },
};
-static ColliderCylinderInit sColCylinderInitLeftRight = {
+static ColliderCylinderInit sLeftRightColliderCylinderInit = {
{
COL_MATERIAL_NONE,
AT_NONE,
@@ -146,9 +146,9 @@ void BgDodoago_Init(Actor* thisx, PlayState* play) {
Collider_InitCylinder(play, &this->mainCollider);
Collider_InitCylinder(play, &this->leftCollider);
Collider_InitCylinder(play, &this->rightCollider);
- Collider_SetCylinder(play, &this->mainCollider, &this->dyna.actor, &sColCylinderInitMain);
- Collider_SetCylinder(play, &this->leftCollider, &this->dyna.actor, &sColCylinderInitLeftRight);
- Collider_SetCylinder(play, &this->rightCollider, &this->dyna.actor, &sColCylinderInitLeftRight);
+ Collider_SetCylinder(play, &this->mainCollider, &this->dyna.actor, &sMainColliderCylinderInit);
+ Collider_SetCylinder(play, &this->leftCollider, &this->dyna.actor, &sLeftRightColliderCylinderInit);
+ Collider_SetCylinder(play, &this->rightCollider, &this->dyna.actor, &sLeftRightColliderCylinderInit);
BgDodoago_SetupAction(this, BgDodoago_WaitExplosives);
sDisableBombCatcher = false;
diff --git a/src/overlays/actors/ovl_Bg_Haka_Sgami/z_bg_haka_sgami.c b/src/overlays/actors/ovl_Bg_Haka_Sgami/z_bg_haka_sgami.c
index f11973a86..d72cb56d0 100644
--- a/src/overlays/actors/ovl_Bg_Haka_Sgami/z_bg_haka_sgami.c
+++ b/src/overlays/actors/ovl_Bg_Haka_Sgami/z_bg_haka_sgami.c
@@ -142,7 +142,7 @@ void BgHakaSgami_Init(Actor* thisx, PlayState* play) {
BgHakaSgami* this = (BgHakaSgami*)thisx;
EffectBlureInit1 blureInit;
s32 i;
- ColliderTris* colliderScythe = &this->colliderScythe;
+ ColliderTris* scytheCollider = &this->scytheCollider;
Actor_ProcessInitChain(thisx, sInitChain);
@@ -153,8 +153,8 @@ void BgHakaSgami_Init(Actor* thisx, PlayState* play) {
thisx->flags |= ACTOR_FLAG_REACT_TO_LENS;
}
- Collider_InitTris(play, colliderScythe);
- Collider_SetTris(play, colliderScythe, thisx, &sTrisInit, this->colliderScytheItems);
+ Collider_InitTris(play, scytheCollider);
+ Collider_SetTris(play, scytheCollider, thisx, &sTrisInit, this->scytheColliderElements);
Collider_InitCylinder(play, &this->scytheCenterCollider);
Collider_SetCylinder(play, &this->scytheCenterCollider, thisx, &sCylinderInit);
@@ -199,7 +199,7 @@ void BgHakaSgami_Destroy(Actor* thisx, PlayState* play) {
Effect_Delete(play, this->blureEffectIndex[0]);
Effect_Delete(play, this->blureEffectIndex[1]);
- Collider_DestroyTris(play, &this->colliderScythe);
+ Collider_DestroyTris(play, &this->scytheCollider);
Collider_DestroyCylinder(play, &this->scytheCenterCollider);
}
@@ -256,14 +256,14 @@ void BgHakaSgami_Spin(BgHakaSgami* this, PlayState* play) {
elementInit->dim.vtx[j].x * actorRotYSin;
}
- Collider_SetTrisVertices(&this->colliderScythe, i, &scytheVertices[0], &scytheVertices[1], &scytheVertices[2]);
+ Collider_SetTrisVertices(&this->scytheCollider, i, &scytheVertices[0], &scytheVertices[1], &scytheVertices[2]);
for (j = 0; j < 3; j++) {
scytheVertices[j].x = (2 * this->actor.world.pos.x) - scytheVertices[j].x;
scytheVertices[j].z = (2 * this->actor.world.pos.z) - scytheVertices[j].z;
}
- Collider_SetTrisVertices(&this->colliderScythe, (i + 2) % 4, &scytheVertices[0], &scytheVertices[1],
+ Collider_SetTrisVertices(&this->scytheCollider, (i + 2) % 4, &scytheVertices[0], &scytheVertices[1],
&scytheVertices[2]);
}
@@ -288,7 +288,7 @@ void BgHakaSgami_Spin(BgHakaSgami* this, PlayState* play) {
EffectBlure_AddVertex(Effect_GetByIndex(this->blureEffectIndex[1]), &scytheVertices[0], &scytheVertices[1]);
}
- CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderScythe.base);
+ CollisionCheck_SetAT(play, &play->colChkCtx, &this->scytheCollider.base);
CollisionCheck_SetOC(play, &play->colChkCtx, &this->scytheCenterCollider.base);
Actor_PlaySfx_Flagged(&this->actor, NA_SE_EV_ROLLCUTTER_MOTOR - SFX_FLAG);
}
diff --git a/src/overlays/actors/ovl_Bg_Haka_Sgami/z_bg_haka_sgami.h b/src/overlays/actors/ovl_Bg_Haka_Sgami/z_bg_haka_sgami.h
index 53c0b6340..a5019eb84 100644
--- a/src/overlays/actors/ovl_Bg_Haka_Sgami/z_bg_haka_sgami.h
+++ b/src/overlays/actors/ovl_Bg_Haka_Sgami/z_bg_haka_sgami.h
@@ -16,8 +16,8 @@ typedef struct BgHakaSgami {
/* 0x0152 */ s16 timer;
/* 0x0154 */ s32 blureEffectIndex[2];
/* 0x015C */ ColliderCylinder scytheCenterCollider;
- /* 0x01A8 */ ColliderTris colliderScythe;
- /* 0x01C8 */ ColliderTrisElement colliderScytheItems[4];
+ /* 0x01A8 */ ColliderTris scytheCollider;
+ /* 0x01C8 */ ColliderTrisElement scytheColliderElements[4];
} BgHakaSgami; // size = 0x0338
#endif
diff --git a/src/overlays/actors/ovl_Bg_Haka_Trap/z_bg_haka_trap.c b/src/overlays/actors/ovl_Bg_Haka_Trap/z_bg_haka_trap.c
index cf34101f5..e9ec138a8 100644
--- a/src/overlays/actors/ovl_Bg_Haka_Trap/z_bg_haka_trap.c
+++ b/src/overlays/actors/ovl_Bg_Haka_Trap/z_bg_haka_trap.c
@@ -171,8 +171,8 @@ void BgHakaTrap_Init(Actor* thisx, PlayState* play) {
CollisionHeader_GetVirtual(&object_haka_objects_Col_008D10, &colHeader);
}
- Collider_InitTris(play, &this->colliderSpikes);
- Collider_SetTris(play, &this->colliderSpikes, thisx, &sTrisInit, this->colliderSpikesItem);
+ Collider_InitTris(play, &this->spikesCollider);
+ Collider_SetTris(play, &this->spikesCollider, thisx, &sTrisInit, this->spikesColliderElements);
this->colliderCylinder.dim.radius = 18;
this->colliderCylinder.dim.height = 115;
@@ -202,7 +202,7 @@ void BgHakaTrap_Destroy(Actor* thisx, PlayState* play) {
DynaPoly_DeleteBgActor(play, &play->colCtx.dyna, this->dyna.bgId);
if ((this->dyna.actor.params == HAKA_TRAP_SPIKED_WALL) ||
(this->dyna.actor.params == HAKA_TRAP_SPIKED_WALL_2)) {
- Collider_DestroyTris(play, &this->colliderSpikes);
+ Collider_DestroyTris(play, &this->spikesCollider);
}
}
@@ -253,7 +253,7 @@ void func_808801B8(BgHakaTrap* this, PlayState* play) {
func_8087FFC0(this, play);
- if (this->colliderSpikes.base.acFlags & AC_HIT) {
+ if (this->spikesCollider.base.acFlags & AC_HIT) {
this->timer = 20;
D_80880F30 = 1;
this->actionFunc = func_808802D8;
@@ -502,7 +502,7 @@ void BgHakaTrap_Update(Actor* thisx, PlayState* play) {
CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderCylinder.base);
} else {
if (this->actionFunc == func_808801B8) {
- CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderSpikes.base);
+ CollisionCheck_SetAC(play, &play->colChkCtx, &this->spikesCollider.base);
}
CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderCylinder.base);
@@ -518,10 +518,10 @@ void func_80880D68(BgHakaTrap* this) {
Matrix_MultVec3f(&sTrisElementsInit[0].dim.vtx[0], &vec1);
Matrix_MultVec3f(&sTrisElementsInit[0].dim.vtx[1], &vec2);
Matrix_MultVec3f(&sTrisElementsInit[0].dim.vtx[2], &vec3);
- Collider_SetTrisVertices(&this->colliderSpikes, 0, &vec1, &vec2, &vec3);
+ Collider_SetTrisVertices(&this->spikesCollider, 0, &vec1, &vec2, &vec3);
Matrix_MultVec3f(&sTrisElementsInit[1].dim.vtx[2], &vec2);
- Collider_SetTrisVertices(&this->colliderSpikes, 1, &vec1, &vec3, &vec2);
+ Collider_SetTrisVertices(&this->spikesCollider, 1, &vec1, &vec3, &vec2);
}
void BgHakaTrap_Draw(Actor* thisx, PlayState* play) {
diff --git a/src/overlays/actors/ovl_Bg_Haka_Trap/z_bg_haka_trap.h b/src/overlays/actors/ovl_Bg_Haka_Trap/z_bg_haka_trap.h
index 0ef71acec..cfcceaa3e 100644
--- a/src/overlays/actors/ovl_Bg_Haka_Trap/z_bg_haka_trap.h
+++ b/src/overlays/actors/ovl_Bg_Haka_Trap/z_bg_haka_trap.h
@@ -25,8 +25,8 @@ typedef struct BgHakaTrap {
/* 0x016A */ s16 unk_16A; // used as boolean for HAKA_TRAP_GUILLOTINE_SLOW/FAST, s16 for HAKA_TRAP_SPIKED_BOX
/* 0x016C */ Vec3f unk_16C;
/* 0x0178 */ ColliderCylinder colliderCylinder;
- /* 0x01C4 */ ColliderTris colliderSpikes;
- /* 0x01E4 */ ColliderTrisElement colliderSpikesItem[2];
+ /* 0x01C4 */ ColliderTris spikesCollider;
+ /* 0x01E4 */ ColliderTrisElement spikesColliderElements[2];
} BgHakaTrap; // size = 0x029C
#endif
diff --git a/src/overlays/actors/ovl_Bg_Hidan_Rsekizou/z_bg_hidan_rsekizou.c b/src/overlays/actors/ovl_Bg_Hidan_Rsekizou/z_bg_hidan_rsekizou.c
index 9385f5dfe..b71f05203 100644
--- a/src/overlays/actors/ovl_Bg_Hidan_Rsekizou/z_bg_hidan_rsekizou.c
+++ b/src/overlays/actors/ovl_Bg_Hidan_Rsekizou/z_bg_hidan_rsekizou.c
@@ -160,7 +160,7 @@ void BgHidanRsekizou_Destroy(Actor* thisx, PlayState* play) {
void BgHidanRsekizou_Update(Actor* thisx, PlayState* play) {
BgHidanRsekizou* this = (BgHidanRsekizou*)thisx;
s32 i;
- ColliderJntSphElement* sphere;
+ ColliderJntSphElement* element;
s32 pad;
f32 yawSine;
f32 yawCosine;
@@ -180,12 +180,14 @@ void BgHidanRsekizou_Update(Actor* thisx, PlayState* play) {
yawCosine = Math_CosS(this->dyna.actor.shape.rot.y);
for (i = 0; i < ARRAY_COUNT(this->colliderElements); i++) {
- sphere = &this->collider.elements[i];
- sphere->dim.worldSphere.center.x = this->dyna.actor.home.pos.x + yawCosine * sphere->dim.modelSphere.center.x +
- yawSine * sphere->dim.modelSphere.center.z;
- sphere->dim.worldSphere.center.y = (s16)this->dyna.actor.home.pos.y + sphere->dim.modelSphere.center.y;
- sphere->dim.worldSphere.center.z = (this->dyna.actor.home.pos.z - yawSine * sphere->dim.modelSphere.center.x) +
- yawCosine * sphere->dim.modelSphere.center.z;
+ element = &this->collider.elements[i];
+ element->dim.worldSphere.center.x = this->dyna.actor.home.pos.x +
+ (yawCosine * element->dim.modelSphere.center.x) +
+ (yawSine * element->dim.modelSphere.center.z);
+ element->dim.worldSphere.center.y = (s16)this->dyna.actor.home.pos.y + element->dim.modelSphere.center.y;
+ element->dim.worldSphere.center.z = this->dyna.actor.home.pos.z -
+ (yawSine * element->dim.modelSphere.center.x) +
+ (yawCosine * element->dim.modelSphere.center.z);
}
CollisionCheck_SetAT(play, &play->colChkCtx, &this->collider.base);
diff --git a/src/overlays/actors/ovl_Bg_Jya_Ironobj/z_bg_jya_ironobj.c b/src/overlays/actors/ovl_Bg_Jya_Ironobj/z_bg_jya_ironobj.c
index cb326593a..93ca5a236 100644
--- a/src/overlays/actors/ovl_Bg_Jya_Ironobj/z_bg_jya_ironobj.c
+++ b/src/overlays/actors/ovl_Bg_Jya_Ironobj/z_bg_jya_ironobj.c
@@ -91,15 +91,15 @@ static InitChainEntry sInitChain[] = {
static CollisionHeader* sCollisionHeaders[] = { &gPillarCol, &gThroneCol };
void BgJyaIronobj_InitCylinder(BgJyaIronobj* this, PlayState* play) {
- ColliderCylinder* colCylinder = &this->colliderCylinder;
+ s32 pad;
- Collider_InitCylinder(play, colCylinder);
- Collider_SetCylinder(play, colCylinder, &this->dyna.actor, &sCylinderInit);
+ Collider_InitCylinder(play, &this->colliderCylinder);
+ Collider_SetCylinder(play, &this->colliderCylinder, &this->dyna.actor, &sCylinderInit);
if (PARAMS_GET_U(this->dyna.actor.params, 0, 1) == 1) {
this->colliderCylinder.dim.radius = 40;
this->colliderCylinder.dim.height = 100;
}
- Collider_UpdateCylinder(&this->dyna.actor, colCylinder);
+ Collider_UpdateCylinder(&this->dyna.actor, &this->colliderCylinder);
}
/*
diff --git a/src/overlays/actors/ovl_Bg_Menkuri_Eye/z_bg_menkuri_eye.c b/src/overlays/actors/ovl_Bg_Menkuri_Eye/z_bg_menkuri_eye.c
index 79102a7c1..9a53c837f 100644
--- a/src/overlays/actors/ovl_Bg_Menkuri_Eye/z_bg_menkuri_eye.c
+++ b/src/overlays/actors/ovl_Bg_Menkuri_Eye/z_bg_menkuri_eye.c
@@ -70,7 +70,7 @@ static InitChainEntry sInitChain[] = {
void BgMenkuriEye_Init(Actor* thisx, PlayState* play) {
BgMenkuriEye* this = (BgMenkuriEye*)thisx;
- ColliderJntSphElement* colliderList;
+ s32 pad;
Actor_ProcessInitChain(&this->actor, sInitChain);
Collider_InitJntSph(play, &this->collider);
@@ -78,8 +78,7 @@ void BgMenkuriEye_Init(Actor* thisx, PlayState* play) {
this->collider.elements[0].dim.worldSphere.center.x = this->actor.world.pos.x;
this->collider.elements[0].dim.worldSphere.center.y = this->actor.world.pos.y;
this->collider.elements[0].dim.worldSphere.center.z = this->actor.world.pos.z;
- colliderList = this->collider.elements;
- colliderList->dim.worldSphere.radius = colliderList->dim.modelSphere.radius;
+ this->collider.elements[0].dim.worldSphere.radius = this->collider.elements[0].dim.modelSphere.radius;
if (!Flags_GetSwitch(play, this->actor.params)) {
sNumEyesShot = 0;
}
diff --git a/src/overlays/actors/ovl_Bg_Mizu_Bwall/z_bg_mizu_bwall.c b/src/overlays/actors/ovl_Bg_Mizu_Bwall/z_bg_mizu_bwall.c
index 7dc55fbe0..672a54b44 100644
--- a/src/overlays/actors/ovl_Bg_Mizu_Bwall/z_bg_mizu_bwall.c
+++ b/src/overlays/actors/ovl_Bg_Mizu_Bwall/z_bg_mizu_bwall.c
@@ -44,7 +44,7 @@ ActorProfile Bg_Mizu_Bwall_Profile = {
/**/ BgMizuBwall_Draw,
};
-static ColliderTrisElementInit sTrisElementInitFloor[2] = {
+static ColliderTrisElementInit sTrisElementsInitFloor[2] = {
{
{
ELEM_MATERIAL_UNK0,
@@ -79,10 +79,10 @@ static ColliderTrisInit sTrisInitFloor = {
COLSHAPE_TRIS,
},
2,
- sTrisElementInitFloor,
+ sTrisElementsInitFloor,
};
-static ColliderTrisElementInit sTrisElementInitRutoWall[1] = {
+static ColliderTrisElementInit sTrisElementsInitRutoWall[1] = {
{
{
ELEM_MATERIAL_UNK0,
@@ -106,10 +106,10 @@ static ColliderTrisInit sTrisInitRutoWall = {
COLSHAPE_TRIS,
},
1,
- sTrisElementInitRutoWall,
+ sTrisElementsInitRutoWall,
};
-static ColliderTrisElementInit sTrisElementInitWall[2] = {
+static ColliderTrisElementInit sTrisElementsInitWall[2] = {
{
{
ELEM_MATERIAL_UNK0,
@@ -144,7 +144,7 @@ static ColliderTrisInit sTrisInitUnusedWall = {
COLSHAPE_TRIS,
},
2,
- sTrisElementInitWall,
+ sTrisElementsInitWall,
};
static ColliderTrisInit sTrisInitStingerWall = {
@@ -157,7 +157,7 @@ static ColliderTrisInit sTrisInitStingerWall = {
COLSHAPE_TRIS,
},
2,
- sTrisElementInitWall,
+ sTrisElementsInitWall,
};
static Gfx* sDLists[] = {
@@ -219,7 +219,7 @@ void BgMizuBwall_Init(Actor* thisx, PlayState* play) {
sin = Math_SinS(this->dyna.actor.shape.rot.y);
cos = Math_CosS(this->dyna.actor.shape.rot.y);
- for (i = 0; i < ARRAY_COUNT(sTrisElementInitFloor); i++) {
+ for (i = 0; i < ARRAY_COUNT(sTrisElementsInitFloor); i++) {
for (j = 0; j < 3; j++) {
offset.x = sTrisInitFloor.elements[i].dim.vtx[j].x;
offset.y = sTrisInitFloor.elements[i].dim.vtx[j].y;
@@ -260,7 +260,7 @@ void BgMizuBwall_Init(Actor* thisx, PlayState* play) {
sin = Math_SinS(this->dyna.actor.shape.rot.y);
cos = Math_CosS(this->dyna.actor.shape.rot.y);
- for (i = 0; i < ARRAY_COUNT(sTrisElementInitRutoWall); i++) {
+ for (i = 0; i < ARRAY_COUNT(sTrisElementsInitRutoWall); i++) {
for (j = 0; j < 3; j++) {
offset.x = sTrisInitRutoWall.elements[i].dim.vtx[j].x;
offset.y = sTrisInitRutoWall.elements[i].dim.vtx[j].y;
@@ -301,7 +301,7 @@ void BgMizuBwall_Init(Actor* thisx, PlayState* play) {
sin = Math_SinS(this->dyna.actor.shape.rot.y);
cos = Math_CosS(this->dyna.actor.shape.rot.y);
- for (i = 0; i < ARRAY_COUNT(sTrisElementInitFloor); i++) {
+ for (i = 0; i < ARRAY_COUNT(sTrisElementsInitFloor); i++) {
for (j = 0; j < 3; j++) {
//! @bug This uses the wrong set of collision triangles, causing the collider to be
//! flat to the ground instead of vertical. It should use sTrisInitUnusedWall.
@@ -344,7 +344,7 @@ void BgMizuBwall_Init(Actor* thisx, PlayState* play) {
sin = Math_SinS(this->dyna.actor.shape.rot.y);
cos = Math_CosS(this->dyna.actor.shape.rot.y);
- for (i = 0; i < ARRAY_COUNT(sTrisElementInitFloor); i++) {
+ for (i = 0; i < ARRAY_COUNT(sTrisElementsInitFloor); i++) {
for (j = 0; j < 3; j++) {
//! @bug This uses the wrong set of collision triangles, causing the collider to be
//! flat to the ground instead of vertical. It should use sTrisInitStingerWall.
@@ -387,7 +387,7 @@ void BgMizuBwall_Init(Actor* thisx, PlayState* play) {
sin = Math_SinS(this->dyna.actor.shape.rot.y);
cos = Math_CosS(this->dyna.actor.shape.rot.y);
- for (i = 0; i < ARRAY_COUNT(sTrisElementInitFloor); i++) {
+ for (i = 0; i < ARRAY_COUNT(sTrisElementsInitFloor); i++) {
for (j = 0; j < 3; j++) {
//! @bug This uses the wrong set of collision triangles, causing the collider to be
//! flat to the ground instead of vertical. It should use sTrisInitStingerWall.
diff --git a/src/overlays/actors/ovl_Bg_Mori_Elevator/z_bg_mori_elevator.c b/src/overlays/actors/ovl_Bg_Mori_Elevator/z_bg_mori_elevator.c
index 2230b86d3..028606443 100644
--- a/src/overlays/actors/ovl_Bg_Mori_Elevator/z_bg_mori_elevator.c
+++ b/src/overlays/actors/ovl_Bg_Mori_Elevator/z_bg_mori_elevator.c
@@ -218,7 +218,6 @@ void BgMoriElevator_SetPosition(BgMoriElevator* this, PlayState* play) {
this->targetY = 233.0f;
BgMoriElevator_StopMovement(this);
} else {
- // "Error:Forest Temple obj elevator Room setting is dangerous(%s %d)"
PRINTF(T("Error : 森の神殿 obj elevator 部屋設定が危険(%s %d)\n",
"Error : Forest Temple obj elevator room setting is dangerous(%s %d)\n"),
"../z_bg_mori_elevator.c", 479);
diff --git a/src/overlays/actors/ovl_Bg_Po_Event/z_bg_po_event.c b/src/overlays/actors/ovl_Bg_Po_Event/z_bg_po_event.c
index eda5a530e..2622c4320 100644
--- a/src/overlays/actors/ovl_Bg_Po_Event/z_bg_po_event.c
+++ b/src/overlays/actors/ovl_Bg_Po_Event/z_bg_po_event.c
@@ -103,7 +103,7 @@ void BgPoEvent_InitPaintings(BgPoEvent* this, PlayState* play) {
static s16 paintingPosX[] = { -1302, -866, 1421, 985 };
static s16 paintingPosY[] = { 1107, 1091 };
static s16 paintingPosZ[] = { -3384, -3252 };
- ColliderTrisElementInit* item;
+ ColliderTrisElementInit* elementInit;
Vec3f* vtxVec;
s32 i1;
s32 i2;
@@ -124,10 +124,10 @@ void BgPoEvent_InitPaintings(BgPoEvent* this, PlayState* play) {
scaleY = 1.0f;
}
for (i1 = 0; i1 < sTrisInit.count; i1++) {
- item = &sTrisInit.elements[i1];
+ elementInit = &sTrisInit.elements[i1];
if (1) {} // This section looks like a macro of some sort.
for (i2 = 0; i2 < 3; i2++) {
- vtxVec = &item->dim.vtx[i2];
+ vtxVec = &elementInit->dim.vtx[i2];
sp9C[i2].x = (vtxVec->x * coss) + (this->dyna.actor.home.pos.x + (sins * vtxVec->z));
sp9C[i2].y = (vtxVec->y * scaleY) + this->dyna.actor.home.pos.y;
sp9C[i2].z = this->dyna.actor.home.pos.z + (coss * vtxVec->z) - (vtxVec->x * sins);
diff --git a/src/overlays/actors/ovl_Bg_Ydan_Maruta/z_bg_ydan_maruta.c b/src/overlays/actors/ovl_Bg_Ydan_Maruta/z_bg_ydan_maruta.c
index becd2a11c..e33863584 100644
--- a/src/overlays/actors/ovl_Bg_Ydan_Maruta/z_bg_ydan_maruta.c
+++ b/src/overlays/actors/ovl_Bg_Ydan_Maruta/z_bg_ydan_maruta.c
@@ -89,7 +89,7 @@ void BgYdanMaruta_Init(Actor* thisx, PlayState* play) {
f32 sinRotY;
f32 cosRotY;
CollisionHeader* colHeader = NULL;
- ColliderTrisElementInit* triInit;
+ ColliderTrisElementInit* triElementInit;
Actor_ProcessInitChain(&this->dyna.actor, sInitChain);
Collider_InitTris(play, &this->collider);
@@ -99,10 +99,10 @@ void BgYdanMaruta_Init(Actor* thisx, PlayState* play) {
thisx->params = PARAMS_GET_U(thisx->params, 8, 8); // thisx is required to match here
if (this->dyna.actor.params == 0) {
- triInit = &sTrisElementsInit[0];
+ triElementInit = &sTrisElementsInit[0];
this->actionFunc = func_808BEFF4;
} else {
- triInit = &sTrisElementsInit[1];
+ triElementInit = &sTrisElementsInit[1];
DynaPolyActor_Init(&this->dyna, 0);
CollisionHeader_GetVirtual(&gDTFallingLadderCol, &colHeader);
this->dyna.bgId = DynaPoly_SetBgActor(play, &play->colCtx.dyna, thisx, colHeader);
@@ -119,16 +119,16 @@ void BgYdanMaruta_Init(Actor* thisx, PlayState* play) {
cosRotY = Math_CosS(this->dyna.actor.shape.rot.y);
for (i = 0; i < 3; i++) {
- sp4C[i].x = (triInit->dim.vtx[i].x * cosRotY) + this->dyna.actor.world.pos.x;
- sp4C[i].y = triInit->dim.vtx[i].y + this->dyna.actor.world.pos.y;
- sp4C[i].z = this->dyna.actor.world.pos.z - (triInit->dim.vtx[i].x * sinRotY);
+ sp4C[i].x = (triElementInit->dim.vtx[i].x * cosRotY) + this->dyna.actor.world.pos.x;
+ sp4C[i].y = triElementInit->dim.vtx[i].y + this->dyna.actor.world.pos.y;
+ sp4C[i].z = this->dyna.actor.world.pos.z - (triElementInit->dim.vtx[i].x * sinRotY);
}
Collider_SetTrisVertices(&this->collider, 0, &sp4C[0], &sp4C[1], &sp4C[2]);
- sp4C[1].x = (triInit->dim.vtx[2].x * cosRotY) + this->dyna.actor.world.pos.x;
- sp4C[1].y = triInit->dim.vtx[0].y + this->dyna.actor.world.pos.y;
- sp4C[1].z = this->dyna.actor.world.pos.z - (triInit->dim.vtx[2].x * sinRotY);
+ sp4C[1].x = (triElementInit->dim.vtx[2].x * cosRotY) + this->dyna.actor.world.pos.x;
+ sp4C[1].y = triElementInit->dim.vtx[0].y + this->dyna.actor.world.pos.y;
+ sp4C[1].z = this->dyna.actor.world.pos.z - (triElementInit->dim.vtx[2].x * sinRotY);
Collider_SetTrisVertices(&this->collider, 1, &sp4C[0], &sp4C[2], &sp4C[1]);
}
diff --git a/src/overlays/actors/ovl_Bg_Ydan_Sp/z_bg_ydan_sp.c b/src/overlays/actors/ovl_Bg_Ydan_Sp/z_bg_ydan_sp.c
index 0034cfb4c..d6b7fcf47 100644
--- a/src/overlays/actors/ovl_Bg_Ydan_Sp/z_bg_ydan_sp.c
+++ b/src/overlays/actors/ovl_Bg_Ydan_Sp/z_bg_ydan_sp.c
@@ -51,7 +51,7 @@ ActorProfile Bg_Ydan_Sp_Profile = {
/**/ BgYdanSp_Draw,
};
-static ColliderTrisElementInit sTrisItemsInit[2] = {
+static ColliderTrisElementInit sTrisElementsInit[2] = {
{
{
ELEM_MATERIAL_UNK0,
@@ -86,7 +86,7 @@ static ColliderTrisInit sTrisInit = {
COLSHAPE_TRIS,
},
2,
- sTrisItemsInit,
+ sTrisElementsInit,
};
static InitChainEntry sInitChain[] = {
@@ -95,11 +95,11 @@ static InitChainEntry sInitChain[] = {
void BgYdanSp_Init(Actor* thisx, PlayState* play) {
BgYdanSp* this = (BgYdanSp*)thisx;
- ColliderTrisElementInit* ti0 = &sTrisItemsInit[0];
+ ColliderTrisElementInit* triElementInit0 = &sTrisElementsInit[0];
Vec3f tri[3];
s32 i;
CollisionHeader* colHeader = NULL;
- ColliderTrisElementInit* ti1 = &sTrisItemsInit[1];
+ ColliderTrisElementInit* triElementInit1 = &sTrisElementsInit[1];
f32 cossY;
f32 sinsY;
f32 cossX;
@@ -110,22 +110,22 @@ void BgYdanSp_Init(Actor* thisx, PlayState* play) {
this->burnSwitchFlag = PARAMS_GET_U(thisx->params, 6, 6);
this->dyna.actor.params = PARAMS_GET_U(thisx->params, 12, 4);
DynaPolyActor_Init(&this->dyna, DYNA_TRANSFORM_POS);
- Collider_InitTris(play, &this->trisCollider);
- Collider_SetTris(play, &this->trisCollider, &this->dyna.actor, &sTrisInit, this->trisColliderItems);
+ Collider_InitTris(play, &this->colliderTris);
+ Collider_SetTris(play, &this->colliderTris, &this->dyna.actor, &sTrisInit, this->colliderTrisElements);
if (this->dyna.actor.params == WEB_FLOOR) {
CollisionHeader_GetVirtual(&gDTWebFloorCol, &colHeader);
this->actionFunc = BgYdanSp_FloorWebIdle;
for (i = 0; i < 3; i++) {
- tri[i].x = ti0->dim.vtx[i].x + this->dyna.actor.world.pos.x;
- tri[i].y = ti0->dim.vtx[i].y + this->dyna.actor.world.pos.y;
- tri[i].z = ti0->dim.vtx[i].z + this->dyna.actor.world.pos.z;
+ tri[i].x = triElementInit0->dim.vtx[i].x + this->dyna.actor.world.pos.x;
+ tri[i].y = triElementInit0->dim.vtx[i].y + this->dyna.actor.world.pos.y;
+ tri[i].z = triElementInit0->dim.vtx[i].z + this->dyna.actor.world.pos.z;
}
- Collider_SetTrisVertices(&this->trisCollider, 0, &tri[0], &tri[1], &tri[2]);
+ Collider_SetTrisVertices(&this->colliderTris, 0, &tri[0], &tri[1], &tri[2]);
tri[1].x = tri[0].x;
tri[1].z = tri[2].z;
- Collider_SetTrisVertices(&this->trisCollider, 1, &tri[0], &tri[2], &tri[1]);
+ Collider_SetTrisVertices(&this->colliderTris, 1, &tri[0], &tri[2], &tri[1]);
this->unk_16C = 0.0f;
} else {
CollisionHeader_GetVirtual(&gDTWebWallCol, &colHeader);
@@ -137,19 +137,21 @@ void BgYdanSp_Init(Actor* thisx, PlayState* play) {
cossX = Math_CosS(this->dyna.actor.shape.rot.x);
for (i = 0; i < 3; i++) {
- tri[i].x =
- this->dyna.actor.world.pos.x + (cossY * ti1->dim.vtx[i].x) - (sinsY * ti1->dim.vtx[i].y * nSinsX);
- tri[i].y = this->dyna.actor.world.pos.y + (ti1->dim.vtx[i].y * cossX);
- tri[i].z =
- this->dyna.actor.world.pos.z - (sinsY * ti1->dim.vtx[i].x) + (ti1->dim.vtx[i].y * cossY * nSinsX);
+ tri[i].x = this->dyna.actor.world.pos.x + (cossY * triElementInit1->dim.vtx[i].x) -
+ (sinsY * triElementInit1->dim.vtx[i].y * nSinsX);
+ tri[i].y = this->dyna.actor.world.pos.y + (triElementInit1->dim.vtx[i].y * cossX);
+ tri[i].z = this->dyna.actor.world.pos.z - (sinsY * triElementInit1->dim.vtx[i].x) +
+ (triElementInit1->dim.vtx[i].y * cossY * nSinsX);
}
- Collider_SetTrisVertices(&this->trisCollider, 0, &tri[0], &tri[1], &tri[2]);
+ Collider_SetTrisVertices(&this->colliderTris, 0, &tri[0], &tri[1], &tri[2]);
- tri[1].x = this->dyna.actor.world.pos.x + (cossY * ti1->dim.vtx[0].x) - (ti1->dim.vtx[2].y * sinsY * nSinsX);
- tri[1].y = this->dyna.actor.world.pos.y + (ti1->dim.vtx[2].y * cossX);
- tri[1].z = this->dyna.actor.world.pos.z - (sinsY * ti1->dim.vtx[0].x) + (ti1->dim.vtx[2].y * cossY * nSinsX);
- Collider_SetTrisVertices(&this->trisCollider, 1, &tri[0], &tri[2], &tri[1]);
+ tri[1].x = this->dyna.actor.world.pos.x + (cossY * triElementInit1->dim.vtx[0].x) -
+ (triElementInit1->dim.vtx[2].y * sinsY * nSinsX);
+ tri[1].y = this->dyna.actor.world.pos.y + (triElementInit1->dim.vtx[2].y * cossX);
+ tri[1].z = this->dyna.actor.world.pos.z - (sinsY * triElementInit1->dim.vtx[0].x) +
+ (triElementInit1->dim.vtx[2].y * cossY * nSinsX);
+ Collider_SetTrisVertices(&this->colliderTris, 1, &tri[0], &tri[2], &tri[1]);
}
this->dyna.bgId = DynaPoly_SetBgActor(play, &play->colCtx.dyna, &this->dyna.actor, colHeader);
this->timer = 0;
@@ -161,7 +163,7 @@ void BgYdanSp_Init(Actor* thisx, PlayState* play) {
void BgYdanSp_Destroy(Actor* thisx, PlayState* play) {
BgYdanSp* this = (BgYdanSp*)thisx;
DynaPoly_DeleteBgActor(play, &play->colCtx.dyna, this->dyna.bgId);
- Collider_DestroyTris(play, &this->trisCollider);
+ Collider_DestroyTris(play, &this->colliderTris);
}
void BgYdanSp_UpdateFloorWebCollision(BgYdanSp* this) {
@@ -298,7 +300,7 @@ void BgYdanSp_FloorWebIdle(BgYdanSp* this, PlayState* play) {
BgYdanSp_BurnWeb(this, play);
return;
}
- if (this->trisCollider.base.acFlags & AC_HIT) {
+ if (this->colliderTris.base.acFlags & AC_HIT) {
BgYdanSp_BurnWeb(this, play);
return;
}
@@ -345,7 +347,7 @@ void BgYdanSp_FloorWebIdle(BgYdanSp* this, PlayState* play) {
}
}
BgYdanSp_UpdateFloorWebCollision(this);
- CollisionCheck_SetAC(play, &play->colChkCtx, &this->trisCollider.base);
+ CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderTris.base);
}
void BgYdanSp_BurnWallWeb(BgYdanSp* this, PlayState* play) {
@@ -406,7 +408,7 @@ void BgYdanSp_WallWebIdle(BgYdanSp* this, PlayState* play) {
Vec3f sp30;
player = GET_PLAYER(play);
- if (Flags_GetSwitch(play, this->burnSwitchFlag) || (this->trisCollider.base.acFlags & AC_HIT)) {
+ if (Flags_GetSwitch(play, this->burnSwitchFlag) || (this->colliderTris.base.acFlags & AC_HIT)) {
this->dyna.actor.home.pos.y = this->dyna.actor.world.pos.y + 80.0f;
BgYdanSp_BurnWeb(this, play);
} else if (player->heldItemAction == PLAYER_IA_DEKU_STICK && player->unk_860 != 0) {
@@ -417,7 +419,7 @@ void BgYdanSp_WallWebIdle(BgYdanSp* this, PlayState* play) {
BgYdanSp_BurnWeb(this, play);
}
}
- CollisionCheck_SetAC(play, &play->colChkCtx, &this->trisCollider.base);
+ CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderTris.base);
}
void BgYdanSp_Update(Actor* thisx, PlayState* play) {
diff --git a/src/overlays/actors/ovl_Bg_Ydan_Sp/z_bg_ydan_sp.h b/src/overlays/actors/ovl_Bg_Ydan_Sp/z_bg_ydan_sp.h
index b2138e23a..467ec1838 100644
--- a/src/overlays/actors/ovl_Bg_Ydan_Sp/z_bg_ydan_sp.h
+++ b/src/overlays/actors/ovl_Bg_Ydan_Sp/z_bg_ydan_sp.h
@@ -15,8 +15,8 @@ typedef struct BgYdanSp {
/* 0x0169 */ u8 burnSwitchFlag;
/* 0x016A */ s16 timer;
/* 0x016C */ f32 unk_16C;
- /* 0x0170 */ ColliderTris trisCollider;
- /* 0x0190 */ ColliderTrisElement trisColliderItems[2];
+ /* 0x0170 */ ColliderTris colliderTris;
+ /* 0x0190 */ ColliderTrisElement colliderTrisElements[2];
} BgYdanSp; // size = 0x0248
#endif
diff --git a/src/overlays/actors/ovl_Boss_Fd/z_boss_fd.c b/src/overlays/actors/ovl_Boss_Fd/z_boss_fd.c
index 11fd0bf8d..d55c76132 100644
--- a/src/overlays/actors/ovl_Boss_Fd/z_boss_fd.c
+++ b/src/overlays/actors/ovl_Boss_Fd/z_boss_fd.c
@@ -1307,12 +1307,12 @@ void BossFd_Effects(BossFd* this, PlayState* play) {
}
void BossFd_CollisionCheck(BossFd* this, PlayState* play) {
- ColliderJntSphElement* headCollider = &this->collider.elements[0];
+ ColliderJntSphElement* headColliderElem = &this->collider.elements[0];
ColliderElement* acHitElem;
- if (headCollider->base.acElemFlags & ACELEM_HIT) {
- headCollider->base.acElemFlags &= ~ACELEM_HIT;
- acHitElem = headCollider->base.acHitElem;
+ if (headColliderElem->base.acElemFlags & ACELEM_HIT) {
+ headColliderElem->base.acElemFlags &= ~ACELEM_HIT;
+ acHitElem = headColliderElem->base.acHitElem;
this->actor.colChkInfo.health -= 2;
if (acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_ICE) {
this->actor.colChkInfo.health -= 2;
diff --git a/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.c b/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.c
index 360b7fb3f..0a84839f5 100644
--- a/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.c
+++ b/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.c
@@ -132,8 +132,8 @@ static EnGanonMant* sCape;
// TODO: There's probably a way to match BSS ordering with less padding by spreading the variables out and moving
// data around. It would be easier if we had more options for controlling BSS ordering in debug.
-#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq:192" \
- "ique-cn:192 ntsc-1.0:128 ntsc-1.1:128 ntsc-1.2:128 pal-1.0:128 pal-1.1:128"
+#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \
+ "ique-cn:128 ntsc-1.0:128 ntsc-1.1:128 ntsc-1.2:128 pal-1.0:128 pal-1.1:128"
static s32 sSeed1;
static s32 sSeed2;
diff --git a/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.c b/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.c
index c8e6e1545..c12ca1e95 100644
--- a/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.c
+++ b/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.c
@@ -26,6 +26,7 @@
#include "sfx.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64audio.h"
#include "z64effect.h"
@@ -1785,20 +1786,17 @@ void BossMo_CoreCollisionCheck(BossMo* this, PlayState* play) {
}
if (this->coreCollider.base.acFlags & AC_HIT) {
ColliderElement* acHitElem = this->coreCollider.elem.acHitElem;
- // "hit!!"
- PRINTF("Core_Damage_check 当り!!\n");
+ PRINTF(T("Core_Damage_check 当り!!\n", "Core_Damage_check hit!!\n"));
this->coreCollider.base.acFlags &= ~AC_HIT;
if ((acHitElem->atDmgInfo.dmgFlags & DMG_MAGIC_FIRE) && (this->work[MO_TENT_ACTION_STATE] == MO_CORE_ATTACK)) {
this->work[MO_TENT_ACTION_STATE] = MO_CORE_RETREAT;
}
- // "hit 2 !!"
- PRINTF("Core_Damage_check 当り 2 !!\n");
+ PRINTF(T("Core_Damage_check 当り 2 !!\n", "Core_Damage_check hit 2 !!\n"));
if ((this->work[MO_TENT_ACTION_STATE] != MO_CORE_UNDERWATER) && (this->work[MO_TENT_INVINC_TIMER] == 0)) {
u8 damage = CollisionCheck_GetSwordDamage(acHitElem->atDmgInfo.dmgFlags);
if ((damage != 0) && (this->work[MO_TENT_ACTION_STATE] < MO_CORE_ATTACK)) {
- // "sword hit !!"
- PRINTF("Core_Damage_check 剣 当り!!\n");
+ PRINTF(T("Core_Damage_check 剣 当り!!\n", "Core_Damage_check sword hit!!\n"));
this->work[MO_TENT_ACTION_STATE] = MO_CORE_STUNNED;
this->timers[0] = 25;
@@ -1868,8 +1866,7 @@ void BossMo_CoreCollisionCheck(BossMo* this, PlayState* play) {
}
}
}
- // "end !!"
- PRINTF("Core_Damage_check 終わり !!\n");
+ PRINTF(T("Core_Damage_check 終わり !!\n", "Core_Damage_check end !!\n"));
PRINTF_RST();
}
diff --git a/src/overlays/actors/ovl_Boss_Tw/z_boss_tw.c b/src/overlays/actors/ovl_Boss_Tw/z_boss_tw.c
index e2d6eeb3a..85309e6e6 100644
--- a/src/overlays/actors/ovl_Boss_Tw/z_boss_tw.c
+++ b/src/overlays/actors/ovl_Boss_Tw/z_boss_tw.c
@@ -26,8 +26,8 @@
#include "assets/objects/gameplay_keep/gameplay_keep.h"
#include "assets/objects/object_tw/object_tw.h"
-#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq:192" \
- "ique-cn:192 ntsc-1.0:192 ntsc-1.1:192 ntsc-1.2:192 pal-1.0:192 pal-1.1:192"
+#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \
+ "ique-cn:128 ntsc-1.0:128 ntsc-1.1:128 ntsc-1.2:128 pal-1.0:128 pal-1.1:128"
#define FLAGS \
(ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED | \
diff --git a/src/overlays/actors/ovl_Demo_Du/z_demo_du.c b/src/overlays/actors/ovl_Demo_Du/z_demo_du.c
index a4fba78e7..d3d275de9 100644
--- a/src/overlays/actors/ovl_Demo_Du/z_demo_du.c
+++ b/src/overlays/actors/ovl_Demo_Du/z_demo_du.c
@@ -922,8 +922,8 @@ void DemoDu_CsCredits_HandleCues(DemoDu* this, PlayState* play) {
DemoDu_CsCredits_AdvanceTo04(this);
break;
default:
- // "Demo_Du_inEnding_Check_DemoMode:There is no such operation!!!!!!!!"
- PRINTF("Demo_Du_inEnding_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
+ PRINTF(T("Demo_Du_inEnding_Check_DemoMode:そんな動作は無い!!!!!!!!\n",
+ "Demo_Du_inEnding_Check_DemoMode: There is no such action!!!!!!!!\n"));
break;
}
this->cueId = nextCueId;
diff --git a/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.c b/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.c
index 7528a2a6a..c2c86d8a0 100644
--- a/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.c
+++ b/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.c
@@ -169,7 +169,8 @@ void DemoEc_Init(Actor* thisx, PlayState* play) {
DemoEc* this = (DemoEc*)thisx;
if ((this->actor.params < 0) || (this->actor.params > 34)) {
- PRINTF(VT_FGCOL(RED) "Demo_Ec_Actor_ct:arg_dataがおかしい!!!!!!!!!!!!\n" VT_RST);
+ PRINTF(VT_FGCOL(RED) T("Demo_Ec_Actor_ct:arg_dataがおかしい!!!!!!!!!!!!\n",
+ "Demo_Ec_Actor_ct:arg_data is strange!!!!!!!!!!!!\n") VT_RST);
Actor_Kill(&this->actor);
} else {
this->updateMode = EC_UPDATE_COMMON;
@@ -702,7 +703,7 @@ Gfx* DemoEc_GetCarpenterPostLimbDList(DemoEc* this) {
case 13:
return object_daiku_DL_005880;
default:
- PRINTF(VT_FGCOL(RED) "かつらが無い!!!!!!!!!!!!!!!!\n" VT_RST);
+ PRINTF(VT_FGCOL(RED) T("かつらが無い!!!!!!!!!!!!!!!!\n", "No wig!!!!!!!!!!!!!!!!\n") VT_RST);
return NULL;
}
}
@@ -748,7 +749,7 @@ Gfx* DemoEc_GetGerudoPostLimbDList(DemoEc* this) {
case 18:
return gGerudoWhiteHairstyleSpikyDL;
default:
- PRINTF(VT_FGCOL(RED) "かつらが無い!!!!!!!!!!!!!!!!\n" VT_RST);
+ PRINTF(VT_FGCOL(RED) T("かつらが無い!!!!!!!!!!!!!!!!\n", "No wig!!!!!!!!!!!!!!!!\n") VT_RST);
return NULL;
}
}
@@ -1259,8 +1260,9 @@ void DemoEc_InitNpc(DemoEc* this, PlayState* play) {
s16 type = this->actor.params;
if (sInitFuncs[type] == NULL) {
- // "Demo_Ec_main_init: Initialization process is wrong arg_data"
- PRINTF(VT_FGCOL(RED) " Demo_Ec_main_init:初期化処理がおかしいarg_data = %d!\n" VT_RST, type);
+ PRINTF(VT_FGCOL(RED) T(" Demo_Ec_main_init:初期化処理がおかしいarg_data = %d!\n",
+ " Demo_Ec_main_init: Initialization process is wrong arg_data = %d!\n") VT_RST,
+ type);
Actor_Kill(&this->actor);
return;
}
@@ -1284,8 +1286,9 @@ void DemoEc_InitCommon(DemoEc* this, PlayState* play) {
secondaryObjectSlot = Object_GetSlot(&play->objectCtx, sp28);
if ((secondaryObjectSlot < 0) || (primaryObjectSlot < 0)) {
- // "Demo_Ec_main_bank: Bank unreadable arg_data = %d!"
- PRINTF(VT_FGCOL(RED) "Demo_Ec_main_bank:バンクを読めない arg_data = %d!\n" VT_RST, type);
+ PRINTF(VT_FGCOL(RED) T("Demo_Ec_main_bank:バンクを読めない arg_data = %d!\n",
+ "Demo_Ec_main_bank: Bank unreadable arg_data = %d!\n") VT_RST,
+ type);
Actor_Kill(&this->actor);
return;
}
diff --git a/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.c b/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.c
index d422af550..9eac9a59f 100644
--- a/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.c
+++ b/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.c
@@ -13,6 +13,7 @@
#include "sys_math.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "versions.h"
#include "z_lib.h"
#include "z64audio.h"
@@ -547,7 +548,7 @@ void DemoEffect_WaitForObject(DemoEffect* this, PlayState* play) {
this->actor.draw = this->initDrawFunc;
this->updateFunc = this->initUpdateFunc;
- PRINTF(VT_FGCOL(CYAN) " 転送終了 move_wait " VT_RST);
+ PRINTF(VT_FGCOL(CYAN) T(" 転送終了 move_wait ", " Transfer completed move_wait ") VT_RST);
}
}
@@ -705,12 +706,12 @@ void DemoEffect_InitTimeWarp(DemoEffect* this, PlayState* play) {
SkelCurve_SetAnim(&this->skelCurve, &gTimeWarpAnim, 1.0f, 59.0f, 59.0f, 0.0f);
SkelCurve_Update(play, &this->skelCurve);
this->updateFunc = DemoEffect_UpdateTimeWarpReturnFromChamberOfSages;
- PRINTF(VT_FGCOL(CYAN) " 縮むバージョン \n" VT_RST);
+ PRINTF(VT_FGCOL(CYAN) T(" 縮むバージョン \n", " Shrinking version \n") VT_RST);
} else {
SkelCurve_SetAnim(&this->skelCurve, &gTimeWarpAnim, 1.0f, 59.0f, 1.0f, 1.0f);
SkelCurve_Update(play, &this->skelCurve);
this->updateFunc = DemoEffect_UpdateTimeWarpPullMasterSword;
- PRINTF(VT_FGCOL(CYAN) " 通常 バージョン \n" VT_RST);
+ PRINTF(VT_FGCOL(CYAN) T(" 通常 バージョン \n", " Normal version \n") VT_RST);
}
}
diff --git a/src/overlays/actors/ovl_Demo_Ext/z_demo_ext.c b/src/overlays/actors/ovl_Demo_Ext/z_demo_ext.c
index 129b99d92..8720d49df 100644
--- a/src/overlays/actors/ovl_Demo_Ext/z_demo_ext.c
+++ b/src/overlays/actors/ovl_Demo_Ext/z_demo_ext.c
@@ -122,8 +122,8 @@ void DemoExt_HandleCues(DemoExt* this, PlayState* play) {
DemoExt_SetupDispellVortex(this);
break;
default:
- // "Demo_Ext_Check_DemoMode: there is no such action!"
- PRINTF("Demo_Ext_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
+ PRINTF(T("Demo_Ext_Check_DemoMode:そんな動作は無い!!!!!!!!\n",
+ "Demo_Ext_Check_DemoMode: There is no such action!!!!!!!!\n"));
break;
}
this->cueId = nextCueId;
diff --git a/src/overlays/actors/ovl_Demo_Geff/z_demo_geff.c b/src/overlays/actors/ovl_Demo_Geff/z_demo_geff.c
index 27cb963a4..5446d622f 100644
--- a/src/overlays/actors/ovl_Demo_Geff/z_demo_geff.c
+++ b/src/overlays/actors/ovl_Demo_Geff/z_demo_geff.c
@@ -72,7 +72,8 @@ void DemoGeff_Init(Actor* thisx, PlayState* play) {
DemoGeff* this = (DemoGeff*)thisx;
if (this->actor.params < 0 || this->actor.params >= 9) {
- PRINTF(VT_FGCOL(RED) "Demo_Geff_Actor_ct:arg_dataがおかしい!!!!!!!!!!!!\n" VT_RST);
+ PRINTF(VT_FGCOL(RED) T("Demo_Geff_Actor_ct:arg_dataがおかしい!!!!!!!!!!!!\n",
+ "Demo_Geff_Actor_ct:arg_data is strange!!!!!!!!!!!!\n") VT_RST);
Actor_Kill(&this->actor);
return;
}
@@ -190,7 +191,9 @@ void func_80978370(DemoGeff* this, PlayState* play) {
s16 params = this->actor.params;
DemoGeffInitFunc initFunc = sInitFuncs[params];
if (initFunc == NULL) {
- PRINTF(VT_FGCOL(RED) " Demo_Geff_main_init:初期化処理がおかしいarg_data = %d!\n" VT_RST, params);
+ PRINTF(VT_FGCOL(RED) T(" Demo_Geff_main_init:初期化処理がおかしいarg_data = %d!\n",
+ " Demo_Geff_main_init: Initialization process is wrong arg_data = %d!\n") VT_RST,
+ params);
Actor_Kill(&this->actor);
return;
}
@@ -206,7 +209,9 @@ void func_809783D4(DemoGeff* this, PlayState* play) {
s32 pad;
if (objectSlot < 0) {
- PRINTF(VT_FGCOL(RED) "Demo_Geff_main_bank:バンクを読めない arg_data = %d!\n" VT_RST, params);
+ PRINTF(VT_FGCOL(RED) T("Demo_Geff_main_bank:バンクを読めない arg_data = %d!\n",
+ "Demo_Geff_main_bank: Bank unreadable arg_data = %d!\n") VT_RST,
+ params);
Actor_Kill(thisx);
return;
}
diff --git a/src/overlays/actors/ovl_Demo_Gj/z_demo_gj.c b/src/overlays/actors/ovl_Demo_Gj/z_demo_gj.c
index 6bc60ac27..3445287f3 100644
--- a/src/overlays/actors/ovl_Demo_Gj/z_demo_gj.c
+++ b/src/overlays/actors/ovl_Demo_Gj/z_demo_gj.c
@@ -116,14 +116,14 @@ s32 DemoGj_GetType(DemoGj* this) {
return type;
}
-void DemoGj_InitCylinder(DemoGj* this, PlayState* play, ColliderCylinder* cylinder,
- ColliderCylinderInitType1* cylinderInit) {
- Collider_InitCylinder(play, cylinder);
- Collider_SetCylinderType1(play, cylinder, &this->dyna.actor, cylinderInit);
+void DemoGj_InitCylinder(DemoGj* this, PlayState* play, ColliderCylinder* collider,
+ ColliderCylinderInitType1* colliderInit) {
+ Collider_InitCylinder(play, collider);
+ Collider_SetCylinderType1(play, collider, &this->dyna.actor, colliderInit);
}
-s32 DemoGj_HitByExplosion(DemoGj* this, PlayState* play, ColliderCylinder* cylinder) {
- if (Actor_GetCollidedExplosive(play, &cylinder->base) != NULL) {
+s32 DemoGj_HitByExplosion(DemoGj* this, PlayState* play, ColliderCylinder* collider) {
+ if (Actor_GetCollidedExplosive(play, &collider->base) != NULL) {
return true;
}
return false;
@@ -239,15 +239,17 @@ s32 DemoGj_FindGanon(DemoGj* this, PlayState* play) {
if (actor->id == ACTOR_BOSS_GANON2) {
this->ganon = (BossGanon2*)actor;
- // "Demo_Gj_Search_Boss_Ganon %d: Discover Ganon !!!!"
- PRINTF("Demo_Gj_Search_Boss_Ganon %d:ガノン発見!!!!\n", this->dyna.actor.params);
+ PRINTF(T("Demo_Gj_Search_Boss_Ganon %d:ガノン発見!!!!\n",
+ "Demo_Gj_Search_Boss_Ganon %d: Ganon is discovered!!!!\n"),
+ this->dyna.actor.params);
return true;
}
actor = actor->next;
}
- // "Demo_Gj_Search_Boss_Ganon %d: I couldn't find Ganon"
- PRINTF("Demo_Gj_Search_Boss_Ganon %d:ガノン発見出来ず\n", this->dyna.actor.params);
+ PRINTF(T("Demo_Gj_Search_Boss_Ganon %d:ガノン発見出来ず\n",
+ "Demo_Gj_Search_Boss_Ganon %d: Unable to find Ganon\n"),
+ this->dyna.actor.params);
return false;
}
//! @bug Missing return value when `this->ganon` is already set. No caller uses the return value
@@ -404,8 +406,8 @@ void DemoGj_SetupRotation(DemoGj* this, PlayState* play) {
break;
default:
- // "Demo_Gj_common_Reflect : This arg_data is not supported = %d"
- PRINTF(VT_FGCOL(RED) "Demo_Gj_common_Reflect : そんなarg_dataには対応していない = %d\n" VT_RST,
+ PRINTF(VT_FGCOL(RED) T("Demo_Gj_common_Reflect : そんなarg_dataには対応していない = %d\n",
+ "Demo_Gj_common_Reflect : This arg_data is not supported = %d\n") VT_RST,
this->dyna.actor.params);
return;
}
@@ -558,8 +560,8 @@ void DemoGj_SetupMovement(DemoGj* this, PlayState* play) {
break;
default:
- // "Demo_Gj_Setup_Move_common : This arg_data is not supported = %d"
- PRINTF(VT_FGCOL(RED) "Demo_Gj_Setup_Move_common : そんなarg_dataには対応していない = %d\n" VT_RST,
+ PRINTF(VT_FGCOL(RED) T("Demo_Gj_Setup_Move_common : そんなarg_dataには対応していない = %d\n",
+ "Demo_Gj_Setup_Move_common : This arg_data is not supported = %d\n") VT_RST,
actor->params);
break;
}
@@ -1006,38 +1008,38 @@ void DemoGj_DoNothing1(DemoGj* this, PlayState* play) {
* Used by DEMOGJ_TYPE_DESTRUCTABLE_RUBBLE_1
*/
void func_8097AEE8(DemoGj* this, PlayState* play) {
- ColliderCylinder* cylinder0 = &this->colliderCylinders[0];
- ColliderCylinder* cylinder1 = &this->colliderCylinders[1];
- ColliderCylinder* cylinder2 = &this->colliderCylinders[2];
+ ColliderCylinder* collider0 = &this->colliderCylinders[0];
+ ColliderCylinder* collider1 = &this->colliderCylinders[1];
+ ColliderCylinder* collider2 = &this->colliderCylinders[2];
Vec3f* actorPos = &this->dyna.actor.world.pos;
s32 pad;
- s16 theta = this->dyna.actor.world.rot.y;
- f32 cos_theta = Math_CosS(theta);
- f32 sin_theta = Math_SinS(theta);
+ s16 yaw = this->dyna.actor.world.rot.y;
+ f32 cos = Math_CosS(yaw);
+ f32 sin = Math_SinS(yaw);
- cylinder0->dim.pos.z = actorPos->z + (20.0f * cos_theta) - (-20.0f * sin_theta);
- cylinder0->dim.pos.x = actorPos->x + (20.0f * sin_theta) + (-20.0f * cos_theta);
- cylinder0->dim.pos.y = actorPos->y;
+ collider0->dim.pos.z = actorPos->z + (20.0f * cos) - (-20.0f * sin);
+ collider0->dim.pos.x = actorPos->x + (20.0f * sin) + (-20.0f * cos);
+ collider0->dim.pos.y = actorPos->y;
- cylinder1->dim.pos.z = actorPos->z + (-20.0f * cos_theta) - (20.0f * sin_theta);
- cylinder1->dim.pos.x = actorPos->x + (-20.0f * sin_theta) + (20.0f * cos_theta);
- cylinder1->dim.pos.y = actorPos->y;
+ collider1->dim.pos.z = actorPos->z + (-20.0f * cos) - (20.0f * sin);
+ collider1->dim.pos.x = actorPos->x + (-20.0f * sin) + (20.0f * cos);
+ collider1->dim.pos.y = actorPos->y;
- cylinder2->dim.pos.z = actorPos->z + (-60.0f * cos_theta) - (60.0f * sin_theta);
- cylinder2->dim.pos.x = actorPos->x + (-60.0f * sin_theta) + (60.0f * cos_theta);
- cylinder2->dim.pos.y = actorPos->y;
+ collider2->dim.pos.z = actorPos->z + (-60.0f * cos) - (60.0f * sin);
+ collider2->dim.pos.x = actorPos->x + (-60.0f * sin) + (60.0f * cos);
+ collider2->dim.pos.y = actorPos->y;
}
void DemoGj_SetCylindersAsAC(DemoGj* this, PlayState* play) {
s32 pad[2];
- Collider* cylinder0 = &this->colliderCylinders[0].base;
- Collider* cylinder1 = &this->colliderCylinders[1].base;
- Collider* cylinder2 = &this->colliderCylinders[2].base;
+ Collider* collider0 = &this->colliderCylinders[0].base;
+ Collider* collider1 = &this->colliderCylinders[1].base;
+ Collider* collider2 = &this->colliderCylinders[2].base;
s32 pad2[3];
- CollisionCheck_SetAC(play, &play->colChkCtx, cylinder0);
- CollisionCheck_SetAC(play, &play->colChkCtx, cylinder1);
- CollisionCheck_SetAC(play, &play->colChkCtx, cylinder2);
+ CollisionCheck_SetAC(play, &play->colChkCtx, collider0);
+ CollisionCheck_SetAC(play, &play->colChkCtx, collider1);
+ CollisionCheck_SetAC(play, &play->colChkCtx, collider2);
}
void DemoGj_DirectedExplosion(DemoGj* this, PlayState* play, Vec3f* direction) {
@@ -1140,26 +1142,26 @@ void DemoGj_DoNothing2(DemoGj* this, PlayState* play) {
// Moves the ColliderCylinder's relative to the actor's position.
void func_8097B450(DemoGj* this, PlayState* play) {
- ColliderCylinder* cylinder0 = &this->colliderCylinders[0];
- ColliderCylinder* cylinder1 = &this->colliderCylinders[1];
- ColliderCylinder* cylinder2 = &this->colliderCylinders[2];
+ ColliderCylinder* collider0 = &this->colliderCylinders[0];
+ ColliderCylinder* collider1 = &this->colliderCylinders[1];
+ ColliderCylinder* collider2 = &this->colliderCylinders[2];
Vec3f* actorPos = &this->dyna.actor.world.pos;
s32 pad;
- s16 theta = this->dyna.actor.world.rot.y;
- f32 cos_theta = Math_CosS(theta);
- f32 sin_theta = Math_SinS(theta);
+ s16 yaw = this->dyna.actor.world.rot.y;
+ f32 cos = Math_CosS(yaw);
+ f32 sin = Math_SinS(yaw);
- cylinder0->dim.pos.z = actorPos->z - (35.0f * sin_theta);
- cylinder0->dim.pos.x = actorPos->x + (35.0f * cos_theta);
- cylinder0->dim.pos.y = actorPos->y;
+ collider0->dim.pos.z = actorPos->z - (35.0f * sin);
+ collider0->dim.pos.x = actorPos->x + (35.0f * cos);
+ collider0->dim.pos.y = actorPos->y;
- cylinder1->dim.pos.z = actorPos->z - (-10.0f * sin_theta);
- cylinder1->dim.pos.x = actorPos->x + (-10.0f * cos_theta);
- cylinder1->dim.pos.y = actorPos->y;
+ collider1->dim.pos.z = actorPos->z - (-10.0f * sin);
+ collider1->dim.pos.x = actorPos->x + (-10.0f * cos);
+ collider1->dim.pos.y = actorPos->y;
- cylinder2->dim.pos.z = actorPos->z - (-55.0f * sin_theta);
- cylinder2->dim.pos.x = actorPos->x + (-55.0f * cos_theta);
- cylinder2->dim.pos.y = actorPos->y;
+ collider2->dim.pos.z = actorPos->z - (-55.0f * sin);
+ collider2->dim.pos.x = actorPos->x + (-55.0f * cos);
+ collider2->dim.pos.y = actorPos->y;
}
void DemoGj_SetCylindersAsAC2(DemoGj* this, PlayState* play) {
@@ -1305,12 +1307,12 @@ void func_8097B9BC(DemoGj* this, PlayState* play) {
*/
void func_8097BA48(DemoGj* this, PlayState* play) {
Actor* thisx = &this->dyna.actor;
- ColliderCylinder* cylinder = &this->colliderCylinders[0];
+ ColliderCylinder* collider = &this->colliderCylinders[0];
s32 pad[2];
if (func_809797E4(this, 4)) {
Actor_Kill(thisx);
- } else if (DemoGj_HitByExplosion(this, play, cylinder)) {
+ } else if (DemoGj_HitByExplosion(this, play, collider)) {
Vec3f vec1 = { 0.0f, 0.0f, 0.0f };
DemoGj_DropCollectible(this, play);
@@ -1327,8 +1329,8 @@ void func_8097BA48(DemoGj* this, PlayState* play) {
Actor_Kill(thisx);
}
- Collider_UpdateCylinder(thisx, cylinder);
- CollisionCheck_SetAC(play, &play->colChkCtx, &cylinder->base);
+ Collider_UpdateCylinder(thisx, collider);
+ CollisionCheck_SetAC(play, &play->colChkCtx, &collider->base);
}
// func_8097BB78
@@ -1435,8 +1437,8 @@ void DemoGj_Init(Actor* thisx, PlayState* play) {
break;
default:
- // "Demo_Gj_Actor_ct There is no such argument!!!!!!!!!!!!!!!!!!!!!!"
- PRINTF(VT_FGCOL(RED) "Demo_Gj_Actor_ct そんな引数は無い!!!!!!!!!!!!!!!!!!!!!!\n" VT_RST);
+ PRINTF(VT_FGCOL(RED) T("Demo_Gj_Actor_ct そんな引数は無い!!!!!!!!!!!!!!!!!!!!!!\n",
+ "Demo_Gj_Actor_ct There is no such argument!!!!!!!!!!!!!!!!!!!!!!\n") VT_RST);
Actor_Kill(&this->dyna.actor);
}
}
diff --git a/src/overlays/actors/ovl_Demo_Gt/z_demo_gt.c b/src/overlays/actors/ovl_Demo_Gt/z_demo_gt.c
index 4430c9bbd..1b2815fa6 100644
--- a/src/overlays/actors/ovl_Demo_Gt/z_demo_gt.c
+++ b/src/overlays/actors/ovl_Demo_Gt/z_demo_gt.c
@@ -1773,8 +1773,8 @@ void DemoGt_Init(Actor* thisx, PlayState* play) {
func_80982054_Init24(this, play);
break;
default:
- // "Demo_Gt_Actor_ct There is no such argument !"
- PRINTF("Demo_Gt_Actor_ct そんな引数は無い!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
+ PRINTF(T("Demo_Gt_Actor_ct そんな引数は無い!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n",
+ "Demo_Gt_Actor_ct There is no such argument!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"));
Actor_Kill(&this->dyna.actor);
}
}
diff --git a/src/overlays/actors/ovl_Demo_Ik/z_demo_ik.c b/src/overlays/actors/ovl_Demo_Ik/z_demo_ik.c
index af3ddeb00..a5dff0d4a 100644
--- a/src/overlays/actors/ovl_Demo_Ik/z_demo_ik.c
+++ b/src/overlays/actors/ovl_Demo_Ik/z_demo_ik.c
@@ -244,8 +244,8 @@ void func_809839D0(DemoIk* this, PlayState* play) {
case 6:
break;
default:
- // "there is no such action"
- PRINTF("Demo_Ik_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
+ PRINTF(T("Demo_Ik_Check_DemoMode:そんな動作は無い!!!!!!!!\n",
+ "Demo_Ik_Check_DemoMode: There is no such action!!!!!!!!\n"));
}
this->cueId = nextCueId;
}
@@ -393,8 +393,8 @@ void func_80984048(DemoIk* this, PlayState* play) {
Actor_Kill(&this->actor);
break;
default:
- // "there is no such action"
- PRINTF("Demo_Ik_inFace_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
+ PRINTF(T("Demo_Ik_inFace_Check_DemoMode:そんな動作は無い!!!!!!!!\n",
+ "Demo_Ik_inFace_Check_DemoMode: There is no such action!!!!!!!!\n"));
}
this->cueId = nextCueId;
}
diff --git a/src/overlays/actors/ovl_Demo_Im/z_demo_im.c b/src/overlays/actors/ovl_Demo_Im/z_demo_im.c
index 0eef34582..508128f7b 100644
--- a/src/overlays/actors/ovl_Demo_Im/z_demo_im.c
+++ b/src/overlays/actors/ovl_Demo_Im/z_demo_im.c
@@ -647,7 +647,8 @@ void func_809861C4(DemoIm* this, PlayState* play) {
this->action = 12;
break;
default:
- PRINTF("Demo_Im_Ocarina_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
+ PRINTF(T("Demo_Im_Ocarina_Check_DemoMode:そんな動作は無い!!!!!!!!\n",
+ "Demo_Im_Ocarina_Check_DemoMode: There is no such action!!!!!!!!\n"));
}
this->cueId = nextCueId;
}
@@ -687,7 +688,8 @@ void func_809862E0(DemoIm* this, PlayState* play) {
func_80986148(this);
break;
default:
- PRINTF("Demo_Im_Ocarina_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
+ PRINTF(T("Demo_Im_Ocarina_Check_DemoMode:そんな動作は無い!!!!!!!!\n",
+ "Demo_Im_Ocarina_Check_DemoMode: There is no such action!!!!!!!!\n"));
}
this->cueId = nextCueId;
}
@@ -815,7 +817,8 @@ void func_8098680C(DemoIm* this, PlayState* play) {
Actor_Kill(&this->actor);
break;
default:
- PRINTF("Demo_Im_Spot00_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
+ PRINTF(T("Demo_Im_Spot00_Check_DemoMode:そんな動作は無い!!!!!!!!\n",
+ "Demo_Im_Spot00_Check_DemoMode: There is no such action!!!!!!!!\n"));
}
this->cueId = nextCueId;
}
@@ -1085,7 +1088,8 @@ void func_809871E8(DemoIm* this, PlayState* play) {
func_80987174(this);
break;
default:
- PRINTF("Demo_Im_inEnding_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
+ PRINTF(T("Demo_Im_inEnding_Check_DemoMode:そんな動作は無い!!!!!!!!\n",
+ "Demo_Im_inEnding_Check_DemoMode: There is no such action!!!!!!!!\n"));
}
this->cueId = nextCueId;
}
diff --git a/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.c b/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.c
index 35ffa63a3..5518ce754 100644
--- a/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.c
+++ b/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.c
@@ -22,8 +22,8 @@
#include "assets/objects/object_efc_star_field/object_efc_star_field.h"
#include "assets/objects/object_toki_objects/object_toki_objects.h"
-#pragma increment_block_number "gc-eu:0 gc-eu-mq:0 gc-jp:0 gc-jp-ce:0 gc-jp-mq:0 gc-us:0 gc-us-mq:0 ique-cn:0" \
- "ntsc-1.0:0 ntsc-1.1:0 ntsc-1.2:0 pal-1.0:0 pal-1.1:0"
+#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \
+ "ique-cn:128 ntsc-1.0:128 ntsc-1.1:128 ntsc-1.2:128 pal-1.0:0 pal-1.1:0"
#define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED)
diff --git a/src/overlays/actors/ovl_Demo_Sa/z_demo_sa.c b/src/overlays/actors/ovl_Demo_Sa/z_demo_sa.c
index 38a44165d..5831c44b0 100644
--- a/src/overlays/actors/ovl_Demo_Sa/z_demo_sa.c
+++ b/src/overlays/actors/ovl_Demo_Sa/z_demo_sa.c
@@ -592,7 +592,8 @@ void func_8098F654(DemoSa* this, PlayState* play) {
func_8098F5D0(this);
break;
default:
- PRINTF("Demo_Sa_inEnding_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
+ PRINTF(T("Demo_Sa_inEnding_Check_DemoMode:そんな動作は無い!!!!!!!!\n",
+ "Demo_Sa_inEnding_Check_DemoMode: There is no such action!!!!!!!!\n"));
}
this->cueId = nextCueId;
}
@@ -741,7 +742,8 @@ void func_8098FB68(DemoSa* this, PlayState* play) {
func_8098FAE0(this);
break;
default:
- PRINTF("Demo_Sa_inPresent_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
+ PRINTF(T("Demo_Sa_inPresent_Check_DemoMode:そんな動作は無い!!!!!!!!\n",
+ "Demo_Sa_inPresent_Check_DemoMode: There is no such action!!!!!!!!\n"));
}
this->cueId = nextCueId;
}
diff --git a/src/overlays/actors/ovl_Demo_Tre_Lgt/z_demo_tre_lgt.c b/src/overlays/actors/ovl_Demo_Tre_Lgt/z_demo_tre_lgt.c
index c1f7983ce..992417b88 100644
--- a/src/overlays/actors/ovl_Demo_Tre_Lgt/z_demo_tre_lgt.c
+++ b/src/overlays/actors/ovl_Demo_Tre_Lgt/z_demo_tre_lgt.c
@@ -5,6 +5,7 @@
#include "gfx_setupdl.h"
#include "printf.h"
#include "sfx.h"
+#include "translation.h"
#include "z64curve.h"
#include "z64play.h"
#include "z64save.h"
@@ -58,8 +59,7 @@ void DemoTreLgt_Init(Actor* thisx, PlayState* play) {
DemoTreLgt* this = (DemoTreLgt*)thisx;
if (!SkelCurve_Init(play, &this->skelCurve, &gTreasureChestCurveSkel, sAnimations[0])) {
- // "Demo_Tre_Lgt_Actor_ct (); Construct failed"
- PRINTF("Demo_Tre_Lgt_Actor_ct();コンストラクト失敗\n");
+ PRINTF(T("Demo_Tre_Lgt_Actor_ct();コンストラクト失敗\n", "Demo_Tre_Lgt_Actor_ct(); Construct failed\n"));
}
ASSERT(true, "1", "../z_demo_tre_lgt.c", UNK_LINE);
diff --git a/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c b/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c
index 79f4feca8..1ec17157c 100644
--- a/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c
+++ b/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c
@@ -9,6 +9,7 @@
#include "sequence.h"
#include "sfx.h"
#include "sys_matrix.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64light.h"
#include "z64play.h"
@@ -17,8 +18,8 @@
#include "assets/objects/object_warp1/object_warp1.h"
-#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq:192" \
- "ique-cn:192 ntsc-1.0:192 ntsc-1.1:192 ntsc-1.2:192 pal-1.0:192 pal-1.1:192"
+#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \
+ "ique-cn:128 ntsc-1.0:128 ntsc-1.1:128 ntsc-1.2:128 pal-1.0:128 pal-1.1:128"
#define FLAGS 0
@@ -509,7 +510,9 @@ void DoorWarp1_ChildWarpOut(DoorWarp1* this, PlayState* play) {
this->warpTimer++;
if (sWarpTimerTarget < this->warpTimer && gSaveContext.nextCutsceneIndex == 0xFFEF) {
- PRINTF("\n\n\nじかんがきたからおーしまい fade_direction=[%d]", play->transitionTrigger, TRANS_TRIGGER_START);
+ PRINTF(T("\n\n\nじかんがきたからおーしまい fade_direction=[%d]",
+ "\n\n\nThe time has come, so it's over. fade_direction=[%d]"),
+ play->transitionTrigger, TRANS_TRIGGER_START);
if (play->sceneId == SCENE_DODONGOS_CAVERN_BOSS) {
if (!Flags_GetEventChkInf(EVENTCHKINF_25)) {
@@ -536,7 +539,7 @@ void DoorWarp1_ChildWarpOut(DoorWarp1* this, PlayState* play) {
play->nextEntranceIndex = ENTR_ZORAS_FOUNTAIN_0;
gSaveContext.nextCutsceneIndex = 0;
}
- PRINTF("\n\n\nおわりおわり");
+ PRINTF(T("\n\n\nおわりおわり", "\n\n\nThe end The end"));
play->transitionTrigger = TRANS_TRIGGER_START;
play->transitionType = TRANS_TYPE_FADE_WHITE_SLOW;
gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE;
diff --git a/src/overlays/actors/ovl_Elf_Msg/z_elf_msg.c b/src/overlays/actors/ovl_Elf_Msg/z_elf_msg.c
index 22c96a08d..1c74a3843 100644
--- a/src/overlays/actors/ovl_Elf_Msg/z_elf_msg.c
+++ b/src/overlays/actors/ovl_Elf_Msg/z_elf_msg.c
@@ -14,6 +14,7 @@
#include "regs.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "z64play.h"
#include "z64player.h"
@@ -88,12 +89,12 @@ s32 ElfMsg_KillCheck(ElfMsg* this, PlayState* play) {
void ElfMsg_Init(Actor* thisx, PlayState* play) {
ElfMsg* this = (ElfMsg*)thisx;
- // "Conditions for Elf Tag disappearing"
- PRINTF(VT_FGCOL(CYAN) "\nエルフ タグ 消える条件 %d" VT_RST "\n", PARAMS_GET_U(thisx->params, 8, 6));
+ PRINTF(VT_FGCOL(CYAN) T("\nエルフ タグ 消える条件 %d", "\nConditions for Elf Tag disappearing %d") VT_RST "\n",
+ PARAMS_GET_U(thisx->params, 8, 6));
PRINTF(VT_FGCOL(CYAN) "\nthisx->shape.angle.sy = %d\n" VT_RST, thisx->shape.rot.y);
if (thisx->shape.rot.y >= 0x41) {
- // "Conditions for Elf Tag appearing"
- PRINTF(VT_FGCOL(CYAN) "\nエルフ タグ 出現条件 %d" VT_RST "\n", thisx->shape.rot.y - 0x41);
+ PRINTF(VT_FGCOL(CYAN) T("\nエルフ タグ 出現条件 %d", "\nConditions for Elf Tag appearing %d") VT_RST "\n",
+ thisx->shape.rot.y - 0x41);
}
if (!ElfMsg_KillCheck(this, play)) {
diff --git a/src/overlays/actors/ovl_En_Anubice/z_en_anubice.c b/src/overlays/actors/ovl_En_Anubice/z_en_anubice.c
index 5c03ab963..a37aae895 100644
--- a/src/overlays/actors/ovl_En_Anubice/z_en_anubice.c
+++ b/src/overlays/actors/ovl_En_Anubice/z_en_anubice.c
@@ -17,6 +17,7 @@
#include "sfx.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "z_en_item00.h"
#include "z_lib.h"
#include "z64effect.h"
@@ -147,8 +148,7 @@ void EnAnubice_Init(Actor* thisx, PlayState* play) {
ANUBICE_LIMB_MAX);
PRINTF("\n\n");
- // "☆☆☆☆☆ Anubis occurence ☆☆☆☆☆"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ アヌビス発生 ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ アヌビス発生 ☆☆☆☆☆ \n", "☆☆☆☆☆ Anubis occurrence ☆☆☆☆☆ \n") VT_RST);
this->actor.naviEnemyId = NAVI_ENEMY_ANUBIS;
@@ -196,9 +196,9 @@ void EnAnubice_FindFlameCircles(EnAnubice* this, PlayState* play) {
currentProp = currentProp->next;
} else {
this->flameCircles[flameCirclesFound] = (BgHidanCurtain*)currentProp;
- // "☆☆☆☆☆ How many fires? ☆☆☆☆☆"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 火は幾つ? ☆☆☆☆☆ %d\n" VT_RST, flameCirclesFound);
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ 火は幾つ? ☆☆☆☆☆ %x\n" VT_RST,
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 火は幾つ? ☆☆☆☆☆ %d\n", "☆☆☆☆☆ How many fires? ☆☆☆☆☆ %d\n") VT_RST,
+ flameCirclesFound);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ 火は幾つ? ☆☆☆☆☆ %x\n", "☆☆☆☆☆ How many fires? ☆☆☆☆☆ %x\n") VT_RST,
this->flameCircles[flameCirclesFound]);
if (flameCirclesFound < ARRAY_COUNT(this->flameCircles) - 1) {
flameCirclesFound++;
diff --git a/src/overlays/actors/ovl_En_Anubice_Tag/z_en_anubice_tag.c b/src/overlays/actors/ovl_En_Anubice_Tag/z_en_anubice_tag.c
index be6738cb0..c4ba07b38 100644
--- a/src/overlays/actors/ovl_En_Anubice_Tag/z_en_anubice_tag.c
+++ b/src/overlays/actors/ovl_En_Anubice_Tag/z_en_anubice_tag.c
@@ -10,6 +10,7 @@
#include "printf.h"
#include "regs.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64debug_display.h"
#include "z64play.h"
@@ -40,8 +41,9 @@ void EnAnubiceTag_Init(Actor* thisx, PlayState* play) {
EnAnubiceTag* this = (EnAnubiceTag*)thisx;
PRINTF("\n\n");
- // "Anubis control tag generated"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ アヌビス制御タグ発生 ☆☆☆☆☆ %d\n" VT_RST, this->actor.params);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ アヌビス制御タグ発生 ☆☆☆☆☆ %d\n", "☆☆☆☆☆ Anubis control tag generated ☆☆☆☆☆ %d\n")
+ VT_RST,
+ this->actor.params);
if (this->actor.params < -1) {
this->actor.params = 0;
diff --git a/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c b/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c
index 9000417a2..3f0f7b66a 100644
--- a/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c
+++ b/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c
@@ -46,7 +46,7 @@ ActorProfile En_Arrow_Profile = {
/**/ EnArrow_Draw,
};
-static ColliderQuadInit sColliderInit = {
+static ColliderQuadInit sColliderQuadInit = {
{
COL_MATERIAL_NONE,
AT_ON | AT_TYPE_PLAYER,
@@ -133,7 +133,7 @@ void EnArrow_Init(Actor* thisx, PlayState* play) {
}
Collider_InitQuad(play, &this->collider);
- Collider_SetQuad(play, &this->collider, &this->actor, &sColliderInit);
+ Collider_SetQuad(play, &this->collider, &this->actor, &sColliderQuadInit);
if (this->actor.params <= ARROW_NORMAL) {
this->collider.elem.atElemFlags &= ~ATELEM_SFX_MASK;
diff --git a/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c b/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c
index 1bbc6bbb7..435b0d483 100644
--- a/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c
+++ b/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c
@@ -10,6 +10,7 @@
#include "segmented_address.h"
#include "sfx.h"
#include "terminal.h"
+#include "translation.h"
#include "z64effect.h"
#include "z64play.h"
#include "z64player.h"
@@ -73,10 +74,10 @@ void EnBomBowlMan_Init(Actor* thisx, PlayState* play2) {
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 30.0f);
SkelAnime_InitFlex(play, &this->skelAnime, &gChuGirlSkel, &gChuGirlNoddingOffAnim, this->jointTable,
this->morphTable, 11);
- // "☆ Man, my shoulders hurt~ ☆"
- PRINTF(VT_FGCOL(GREEN) "☆ もー 肩こっちゃうよねぇ〜 \t\t ☆ \n" VT_RST);
- // "☆ Isn't there some sort of job that will pay better and be more relaxing? ☆ %d"
- PRINTF(VT_FGCOL(GREEN) "☆ もっとラクしてもうかるバイトないかしら? ☆ %d\n" VT_RST, play->bombchuBowlingStatus);
+ PRINTF(VT_FGCOL(GREEN) T("☆ もー 肩こっちゃうよねぇ〜 \t\t ☆ \n", "☆ Man, my shoulders hurt~ \t\t ☆ \n") VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("☆ もっとラクしてもうかるバイトないかしら? ☆ %d\n",
+ "☆ Isn't there some sort of job that will pay better and be more relaxing? ☆ %d\n") VT_RST,
+ play->bombchuBowlingStatus);
this->posCopy = this->actor.world.pos;
this->actor.shape.yOffset = -60.0f;
Actor_SetScale(&this->actor, 0.013f);
@@ -233,12 +234,12 @@ void EnBomBowlMan_RunGame(EnBomBowlMan* this, PlayState* play) {
if (BREG(3)) {
PRINTF(VT_FGCOL(RED) "☆ game_play->bomchu_game_flag ☆ %d\n" VT_RST, play->bombchuBowlingStatus);
- // "HOW'S THE FIRST WALL DOING?"
- PRINTF(VT_FGCOL(RED) "☆ 壁1の状態どう? ☆ %d\n" VT_RST, this->wallStatus[0]);
- // "HOW'S THE SECOND WALL DOING?"
- PRINTF(VT_FGCOL(RED) "☆ 壁2の状態どう? ☆ %d\n" VT_RST, this->wallStatus[1]);
- // "HOLE INFORMATION"
- PRINTF(VT_FGCOL(RED) "☆ 穴情報\t ☆ %d\n" VT_RST, this->bowlPit->status);
+ PRINTF(VT_FGCOL(RED) T("☆ 壁1の状態どう? ☆ %d\n", "☆ What's the state of wall 1? ☆ %d\n") VT_RST,
+ this->wallStatus[0]);
+ PRINTF(VT_FGCOL(RED) T("☆ 壁2の状態どう? ☆ %d\n", "☆ What's the state of wall 2? ☆ %d\n") VT_RST,
+ this->wallStatus[1]);
+ PRINTF(VT_FGCOL(RED) T("☆ 穴情報\t ☆ %d\n", "☆ Hole Information\t ☆ %d\n") VT_RST,
+ this->bowlPit->status);
PRINTF("\n\n");
}
@@ -248,15 +249,13 @@ void EnBomBowlMan_RunGame(EnBomBowlMan* this, PlayState* play) {
if ((this->wallStatus[0] != 1) && (this->wallStatus[1] != 1) && (this->bowlPit->status == 2)) {
this->gameResult = 1; // Won
this->bowlPit->status = 0;
- // "Center HIT!"
- PRINTF(VT_FGCOL(MAGENTA) "☆☆☆☆☆ 中央HIT!!!! ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(MAGENTA) T("☆☆☆☆☆ 中央HIT!!!! ☆☆☆☆☆ \n", "☆☆☆☆☆ Center HIT!!!! ☆☆☆☆☆ \n") VT_RST);
}
if ((play->bombchuBowlingStatus == -1) && (play->actorCtx.actorLists[ACTORCAT_EXPLOSIVE].length == 0) &&
(this->bowlPit->status == 0) && (this->wallStatus[0] != 1) && (this->wallStatus[1] != 1)) {
this->gameResult = 2; // Lost
- // "Bombchu lost"
- PRINTF(VT_FGCOL(MAGENTA) "☆☆☆☆☆ ボムチュウ消化 ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(MAGENTA) T("☆☆☆☆☆ ボムチュウ消化 ☆☆☆☆☆ \n", "☆☆☆☆☆ Bombchu digestion ☆☆☆☆☆ \n") VT_RST);
}
}
@@ -470,8 +469,7 @@ void EnBomBowlMan_BeginPlayGame(EnBomBowlMan* this, PlayState* play) {
BREG(2) = 0;
}
- // "Wow"
- PRINTF(VT_FGCOL(YELLOW) "☆ わー ☆ %d\n" VT_RST, play->bombchuBowlingStatus);
+ PRINTF(VT_FGCOL(YELLOW) T("☆ わー ☆ %d\n", "☆ Wow ☆ %d\n") VT_RST, play->bombchuBowlingStatus);
Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_7);
this->actionFunc = EnBomBowlMan_SetupRunGame;
}
diff --git a/src/overlays/actors/ovl_En_Bom_Bowl_Pit/z_en_bom_bowl_pit.c b/src/overlays/actors/ovl_En_Bom_Bowl_Pit/z_en_bom_bowl_pit.c
index a911548df..74d7ef529 100644
--- a/src/overlays/actors/ovl_En_Bom_Bowl_Pit/z_en_bom_bowl_pit.c
+++ b/src/overlays/actors/ovl_En_Bom_Bowl_Pit/z_en_bom_bowl_pit.c
@@ -5,6 +5,7 @@
#include "regs.h"
#include "sfx.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64play.h"
#include "z64player.h"
@@ -208,12 +209,10 @@ void EnBomBowlPit_WaitTillPrizeGiven(EnBomBowlPit* this, PlayState* play) {
void EnBomBowlPit_Reset(EnBomBowlPit* this, PlayState* play) {
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) {
- // "Normal termination"/"completion"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 正常終了 ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 正常終了 ☆☆☆☆☆ \n", "☆☆☆☆☆ Normal termination ☆☆☆☆☆ \n") VT_RST);
if (this->getItemId == GI_HEART_PIECE) {
gSaveContext.healthAccumulator = 0x140;
- // "Ah recovery!" (?)
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ あぁ回復! ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ あぁ回復! ☆☆☆☆☆ \n", "☆☆☆☆☆ Ah recovery! ☆☆☆☆☆ \n") VT_RST);
}
this->exItemDone = 0;
this->status = 2;
diff --git a/src/overlays/actors/ovl_En_Butte/z_en_butte.c b/src/overlays/actors/ovl_En_Butte/z_en_butte.c
index c206adfbf..2ec5e260f 100644
--- a/src/overlays/actors/ovl_En_Butte/z_en_butte.c
+++ b/src/overlays/actors/ovl_En_Butte/z_en_butte.c
@@ -16,6 +16,7 @@
#include "sfx.h"
#include "sys_math3d.h"
#include "sys_matrix.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64play.h"
#include "z64player.h"
@@ -50,7 +51,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[] = {
},
{ 0, { { 0, 0, 0 }, 5 }, 100 } },
};
-static ColliderJntSphInit sColliderInit = {
+static ColliderJntSphInit sColliderJntSphInit = {
{
COL_MATERIAL_NONE,
AT_NONE,
@@ -173,7 +174,7 @@ void EnButte_Init(Actor* thisx, PlayState* play) {
SkelAnime_Init(play, &this->skelAnime, &gButterflySkel, &gButterflyAnim, this->jointTable, this->morphTable, 8);
Collider_InitJntSph(play, &this->collider);
- Collider_SetJntSph(play, &this->collider, &this->actor, &sColliderInit, this->colliderElements);
+ Collider_SetJntSph(play, &this->collider, &this->actor, &sColliderJntSphInit, this->colliderElements);
this->actor.colChkInfo.mass = 0;
this->unk_25C = Rand_ZeroOne() * 0xFFFF;
this->unk_25E = Rand_ZeroOne() * 0xFFFF;
@@ -182,8 +183,8 @@ void EnButte_Init(Actor* thisx, PlayState* play) {
EnButte_SetupFlyAround(this);
this->actor.shape.rot.x -= 0x2320;
this->drawSkelAnime = true;
- // "field keep butterfly"
- PRINTF("(field keep 蝶)(%x)(arg_data 0x%04x)\n", this, this->actor.params);
+ PRINTF(T("(field keep 蝶)(%x)(arg_data 0x%04x)\n", "(field keep butterfly)(%x)(arg_data 0x%04x)\n"), this,
+ this->actor.params);
}
void EnButte_Destroy(Actor* thisx, PlayState* play2) {
diff --git a/src/overlays/actors/ovl_En_Changer/z_en_changer.c b/src/overlays/actors/ovl_En_Changer/z_en_changer.c
index 13d03d0b8..5a6761008 100644
--- a/src/overlays/actors/ovl_En_Changer/z_en_changer.c
+++ b/src/overlays/actors/ovl_En_Changer/z_en_changer.c
@@ -13,6 +13,7 @@
#include "rand.h"
#include "regs.h"
#include "terminal.h"
+#include "translation.h"
#include "z64debug_display.h"
#include "z64play.h"
#include "z64save.h"
@@ -92,14 +93,14 @@ void EnChanger_Init(Actor* thisx, PlayState* play2) {
}
PRINTF("\n\n");
- // "Treasure generation (which room is it?)"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 宝発生(部屋はどれ?) %d\n" VT_RST, play->roomCtx.curRoom.num);
- // "How is the Bit?"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ ビットは? \t %x\n" VT_RST, play->actorCtx.flags.chest);
- // "How is the Save BIT?"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ セーブBITは? %x\n" VT_RST, sTreasureFlags[minigameRoomNum]);
- // "Is it already a zombie?"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ もう、ゾンビ?\t %d\n" VT_RST, this->roomChestsOpened);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 宝発生(部屋はどれ?) %d\n", "☆☆☆☆☆ Treasure found (which room?) %d\n") VT_RST,
+ play->roomCtx.curRoom.num);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ ビットは? \t %x\n", "☆☆☆☆☆ What about bits? \t %x\n") VT_RST,
+ play->actorCtx.flags.chest);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ セーブBITは? %x\n", "☆☆☆☆☆ What is the save BIT? %x\n") VT_RST,
+ sTreasureFlags[minigameRoomNum]);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ もう、ゾンビ?\t %d\n", "☆☆☆☆☆ Already a zombie?\t %d\n") VT_RST,
+ this->roomChestsOpened);
PRINTF("\n\n");
minigameRoomNum *= 2;
@@ -120,8 +121,9 @@ void EnChanger_Init(Actor* thisx, PlayState* play2) {
0xFF;
Actor_Spawn(&play->actorCtx, play, ACTOR_ITEM_ETCETERA, 20.0f, 20.0f, -2500.0f, 0, 0, 0,
((sTreasureFlags[5] & 0x1F) << 8) + rewardParams);
- // "Central treasure instance/occurrence (GREAT)"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ 中央宝発生(GREAT) ☆☆☆☆☆ %x\n" VT_RST, rewardChestParams);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ 中央宝発生(GREAT) ☆☆☆☆☆ %x\n",
+ "☆☆☆☆☆ Central treasure occurrence (GREAT) ☆☆☆☆☆ %x\n") VT_RST,
+ rewardChestParams);
this->actionFunc = EnChanger_SetHeartPieceFlag;
return;
}
@@ -157,14 +159,15 @@ void EnChanger_Init(Actor* thisx, PlayState* play2) {
leftChestParams);
if (this->leftChest != NULL) {
- // "Left treasure generation (what does it contain?)"
- PRINTF(VT_FGCOL(MAGENTA) "☆☆☆☆☆ 左宝発生(ナニがはいってるの?) ☆☆☆☆☆ %x\n" VT_RST, leftChestParams);
- // "What is the room number?"
- PRINTF(VT_FGCOL(MAGENTA) "☆☆☆☆☆ 部屋番号は? %x\n" VT_RST, play->roomCtx.curRoom.num);
- // "What is the bit?"
- PRINTF(VT_FGCOL(MAGENTA) "☆☆☆☆☆ ビットはなぁに? %x\n" VT_RST, this->rightChestNum);
+ PRINTF(VT_FGCOL(MAGENTA) T("☆☆☆☆☆ 左宝発生(ナニがはいってるの?) ☆☆☆☆☆ %x\n",
+ "☆☆☆☆☆ Left treasure generation (what does it contain?) ☆☆☆☆☆ %x\n") VT_RST,
+ leftChestParams);
+ PRINTF(VT_FGCOL(MAGENTA) T("☆☆☆☆☆ 部屋番号は? %x\n", "☆☆☆☆☆ What is the room number? %x\n") VT_RST,
+ play->roomCtx.curRoom.num);
+ PRINTF(VT_FGCOL(MAGENTA) T("☆☆☆☆☆ ビットはなぁに? %x\n", "☆☆☆☆☆ What is the bit? %x\n") VT_RST,
+ this->rightChestNum);
// "Sukesuke-kun" (something to do with being invisible)
- PRINTF(VT_FGCOL(MAGENTA) "☆☆☆☆☆ すけすけ君? %x\n" VT_RST, rightChestItem);
+ PRINTF(VT_FGCOL(MAGENTA) T("☆☆☆☆☆ すけすけ君? %x\n", "☆☆☆☆☆ See-through guy? %x\n") VT_RST, rightChestItem);
PRINTF("\n\n");
if (this->roomChestsOpened) {
Flags_SetTreasure(play, this->leftChestNum & 0x1F);
@@ -181,14 +184,15 @@ void EnChanger_Init(Actor* thisx, PlayState* play2) {
rightChestParams);
if (this->rightChest != NULL) {
- // "Right treasure generation (what does it contain?)"
- PRINTF(VT_FGCOL(CYAN) "☆☆☆☆☆ 右宝発生(ナニがはいってるの?) ☆☆☆☆☆ %x\n" VT_RST, rightChestParams);
- // "What is the room number?"
- PRINTF(VT_FGCOL(CYAN) "☆☆☆☆☆ 部屋番号は? %d\n" VT_RST, play->roomCtx.curRoom.num);
- // "What is the bit?"
- PRINTF(VT_FGCOL(CYAN) "☆☆☆☆☆ ビットはなぁに? %x\n" VT_RST, this->leftChestNum);
+ PRINTF(VT_FGCOL(CYAN) T("☆☆☆☆☆ 右宝発生(ナニがはいってるの?) ☆☆☆☆☆ %x\n",
+ "☆☆☆☆☆ Right treasure generation (what does it contain?) ☆☆☆☆☆ %x\n") VT_RST,
+ rightChestParams);
+ PRINTF(VT_FGCOL(CYAN) T("☆☆☆☆☆ 部屋番号は? %d\n", "☆☆☆☆☆ What is the room number? %d\n") VT_RST,
+ play->roomCtx.curRoom.num);
+ PRINTF(VT_FGCOL(CYAN) T("☆☆☆☆☆ ビットはなぁに? %x\n", "☆☆☆☆☆ What is the bit? %x\n") VT_RST,
+ this->leftChestNum);
// "Sukesuke-kun" (something to do with being invisible)
- PRINTF(VT_FGCOL(CYAN) "☆☆☆☆☆ すけすけ君? %x\n" VT_RST, leftChestItem);
+ PRINTF(VT_FGCOL(CYAN) T("☆☆☆☆☆ すけすけ君? %x\n", "☆☆☆☆☆ See-through guy? %x\n") VT_RST, leftChestItem);
PRINTF("\n\n");
if (this->roomChestsOpened) {
@@ -249,8 +253,9 @@ void EnChanger_OpenChests(EnChanger* this, PlayState* play) {
} else {
unopenedChestItemType =
(s16)(this->rightChestGetItemId - GI_RUPEE_GREEN_LOSE) + EXITEM_GREEN_RUPEE_CHEST;
- // "Open right treasure (chest)"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 右宝開く ☆☆☆☆☆ %d\n" VT_RST, unopenedChestItemType);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 右宝開く ☆☆☆☆☆ %d\n", "☆☆☆☆☆ Right treasure open ☆☆☆☆☆ %d\n")
+ VT_RST,
+ unopenedChestItemType);
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_EX_ITEM, xPos, yPos, zPos, 0, 0, 0,
unopenedChestItemType);
}
@@ -267,8 +272,8 @@ void EnChanger_OpenChests(EnChanger* this, PlayState* play) {
} else {
unopenedChestItemType =
(s16)(this->leftChestGetItemId - GI_RUPEE_GREEN_LOSE) + EXITEM_GREEN_RUPEE_CHEST;
- // "Open left treasure (chest)"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 左宝開く ☆☆☆☆☆ %d\n" VT_RST, unopenedChestItemType);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 左宝開く ☆☆☆☆☆ %d\n", "☆☆☆☆☆ Left treasure open ☆☆☆☆☆ %d\n") VT_RST,
+ unopenedChestItemType);
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_EX_ITEM, xPos, yPos, zPos, 0, 0, 0,
unopenedChestItemType);
}
diff --git a/src/overlays/actors/ovl_En_Diving_Game/z_en_diving_game.c b/src/overlays/actors/ovl_En_Diving_Game/z_en_diving_game.c
index a946c33bf..8cb2f4515 100644
--- a/src/overlays/actors/ovl_En_Diving_Game/z_en_diving_game.c
+++ b/src/overlays/actors/ovl_En_Diving_Game/z_en_diving_game.c
@@ -17,6 +17,7 @@
#include "sequence.h"
#include "sfx.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64audio.h"
#include "z64effect.h"
@@ -497,8 +498,7 @@ void func_809EEA90(EnDivingGame* this, PlayState* play) {
void func_809EEAF8(EnDivingGame* this, PlayState* play) {
SkelAnime_Update(&this->skelAnime);
if (Message_GetState(&play->msgCtx) == TEXT_STATE_DONE && Message_ShouldAdvance(play)) {
- // "Successful completion"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 正常終了 ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 正常終了 ☆☆☆☆☆ \n", "☆☆☆☆☆ Normal termination ☆☆☆☆☆ \n") VT_RST);
this->allRupeesThrown = this->state = this->phase = this->unk_2A2 = this->grabbedRupeesCounter = 0;
SET_EVENTCHKINF(EVENTCHKINF_38);
this->actionFunc = func_809EDCB0;
diff --git a/src/overlays/actors/ovl_En_Dns/z_en_dns.c b/src/overlays/actors/ovl_En_Dns/z_en_dns.c
index c69063857..399f417aa 100644
--- a/src/overlays/actors/ovl_En_Dns/z_en_dns.c
+++ b/src/overlays/actors/ovl_En_Dns/z_en_dns.c
@@ -12,6 +12,7 @@
#include "printf.h"
#include "sfx.h"
#include "terminal.h"
+#include "translation.h"
#include "z_en_item00.h"
#include "z_lib.h"
#include "z64effect.h"
@@ -93,17 +94,17 @@ static u16 sStartingTextIds[] = {
#if DEBUG_FEATURES
static char* sItemDebugTxt[] = {
- "デクの実売り ", // "Deku Nuts"
- "デクの棒売り ", // "Deku Sticks"
- "ハートの欠片売り ", // "Piece of Heart"
- "デクの種売り ", // "Deku Seeds"
- "デクの盾売り ", // "Deku Shield"
- "バクダン売り ", // "Bombs"
- "矢売り ", // "Arrows"
- "赤のくすり売り ", // "Red Potion"
- "緑のくすり売り ", // "Green Potion"
- "デクの棒持てる数を増やす", // "Deku Stick Upgrade"
- "デクの実持てる数を増やす", // "Deku Nut Upgrade"
+ T("デクの実売り ", "Deku Nuts "),
+ T("デクの棒売り ", "Deku Sticks "),
+ T("ハートの欠片売り ", "Piece of Heart "),
+ T("デクの種売り ", "Deku Seeds "),
+ T("デクの盾売り ", "Deku Shield "),
+ T("バクダン売り ", "Bombs "),
+ T("矢売り ", "Arrows "),
+ T("赤のくすり売り ", "Red Potion "),
+ T("緑のくすり売り ", "Green Potion "),
+ T("デクの棒持てる数を増やす", "Deku Stick Upgrade "),
+ T("デクの実持てる数を増やす", "Deku Nut Upgrade "),
};
#endif
@@ -143,8 +144,9 @@ void EnDns_Init(Actor* thisx, PlayState* play) {
EnDns* this = (EnDns*)thisx;
if (DNS_GET_TYPE(&this->actor) < 0) {
- // "Function Error (Deku Salesman)"
- PRINTF(VT_FGCOL(RED) "引数エラー(売りナッツ)[ arg_data = %d ]" VT_RST "\n", this->actor.params);
+ PRINTF(VT_FGCOL(RED) T("引数エラー(売りナッツ)[ arg_data = %d ]",
+ "Argument error (selling nuts) [ arg_data = %d ]") VT_RST "\n",
+ this->actor.params);
Actor_Kill(&this->actor);
return;
}
@@ -154,8 +156,8 @@ void EnDns_Init(Actor* thisx, PlayState* play) {
DNS_GET_TYPE(&this->actor) = DNS_TYPE_DEKU_SEEDS_30;
}
- // "Deku Salesman"
- PRINTF(VT_FGCOL(GREEN) "◆◆◆ 売りナッツ『%s』 ◆◆◆" VT_RST "\n", sItemDebugTxt[DNS_GET_TYPE(&this->actor)]);
+ PRINTF(VT_FGCOL(GREEN) T("◆◆◆ 売りナッツ『%s』 ◆◆◆", "◆◆◆ Selling nuts『%s』 ◆◆◆") VT_RST "\n",
+ sItemDebugTxt[DNS_GET_TYPE(&this->actor)]);
Actor_ProcessInitChain(&this->actor, sInitChain);
diff --git a/src/overlays/actors/ovl_En_Dnt_Demo/z_en_dnt_demo.c b/src/overlays/actors/ovl_En_Dnt_Demo/z_en_dnt_demo.c
index eebdf53b9..c186360b2 100644
--- a/src/overlays/actors/ovl_En_Dnt_Demo/z_en_dnt_demo.c
+++ b/src/overlays/actors/ovl_En_Dnt_Demo/z_en_dnt_demo.c
@@ -17,6 +17,7 @@
#include "sequence.h"
#include "sfx.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64audio.h"
#include "z64debug_display.h"
@@ -89,8 +90,8 @@ void EnDntDemo_Init(Actor* thisx, PlayState* play2) {
s32 pad;
PRINTF("\n\n");
- // "Deku Scrub mask show start"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ デグナッツお面品評会開始 ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN)
+ T("☆☆☆☆☆ デグナッツお面品評会開始 ☆☆☆☆☆ \n", "☆☆☆☆☆ Deku Scrub mask competition start ☆☆☆☆☆ \n") VT_RST);
for (i = 0; i < 9; i++) {
this->scrubPos[i] = sScrubPos[i];
this->scrubs[i] = (EnDntNomal*)Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_EN_DNT_NOMAL,
@@ -108,8 +109,10 @@ void EnDntDemo_Init(Actor* thisx, PlayState* play2) {
this->leader = (EnDntJiji*)Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_EN_DNT_JIJI,
this->leaderPos.x, this->leaderPos.y, this->leaderPos.z, 0, 0, 0, 0);
if (this->leader != NULL) {
- // "jiji jiji jiji jiji jiji" [onomatopoeia for the scrub sound?]
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ じじじじじじじじじじい ☆☆☆☆☆ %x\n" VT_RST, this->leader);
+ // onomatopoeia for the scrub sound?
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ じじじじじじじじじじい ☆☆☆☆☆ %x\n", "☆☆☆☆☆ jiji jiji jiji jiji jiji ☆☆☆☆☆ %x\n")
+ VT_RST,
+ this->leader);
}
this->subCamId = SUB_CAM_ID_DONE;
this->actor.flags &= ~ACTOR_FLAG_ATTENTION_ENABLED;
@@ -214,15 +217,17 @@ void EnDntDemo_Judge(EnDntDemo* this, PlayState* play) {
ignore = true;
delay = 8;
reaction = DNT_SIGNAL_HIDE;
- // "Special!"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 特別! ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 特別! ☆☆☆☆☆ \n", "☆☆☆☆☆ Special! ☆☆☆☆☆ \n") VT_RST);
} else {
if (maskIdx >= PLAYER_MASK_MAX - 1) {
- // "This is dangerous!"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ ヤバいよこれ! ☆☆☆☆☆ \n" VT_RST);
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ ヤバいよこれ! ☆☆☆☆☆ \n" VT_RST);
- PRINTF(VT_FGCOL(MAGENTA) "☆☆☆☆☆ ヤバいよこれ! ☆☆☆☆☆ \n" VT_RST);
- PRINTF(VT_FGCOL(CYAN) "☆☆☆☆☆ ヤバいよこれ! ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ ヤバいよこれ! ☆☆☆☆☆ \n", "☆☆☆☆☆ This is bad! ☆☆☆☆☆ \n")
+ VT_RST);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ ヤバいよこれ! ☆☆☆☆☆ \n", "☆☆☆☆☆ This is bad! ☆☆☆☆☆ \n")
+ VT_RST);
+ PRINTF(VT_FGCOL(MAGENTA) T("☆☆☆☆☆ ヤバいよこれ! ☆☆☆☆☆ \n", "☆☆☆☆☆ This is bad! ☆☆☆☆☆ \n")
+ VT_RST);
+ PRINTF(VT_FGCOL(CYAN) T("☆☆☆☆☆ ヤバいよこれ! ☆☆☆☆☆ \n", "☆☆☆☆☆ This is bad! ☆☆☆☆☆ \n")
+ VT_RST);
maskIdx = Rand_ZeroFloat(7.99f);
}
@@ -245,17 +250,22 @@ void EnDntDemo_Judge(EnDntDemo* this, PlayState* play) {
break;
}
PRINTF("\n\n");
- // "Each index 1"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 各インデックス1 ☆☆☆☆☆ %d\n" VT_RST, rand9);
- // "Each index 2"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 各インデックス2 ☆☆☆☆☆ %d\n" VT_RST, maskIdx);
- // "Each index 3"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 各インデックス3 ☆☆☆☆☆ %d\n" VT_RST, resultIdx);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 各インデックス1 ☆☆☆☆☆ %d\n", "☆☆☆☆☆ Each index 1 ☆☆☆☆☆ %d\n")
+ VT_RST,
+ rand9);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 各インデックス2 ☆☆☆☆☆ %d\n", "☆☆☆☆☆ Each index 2 ☆☆☆☆☆ %d\n")
+ VT_RST,
+ maskIdx);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 各インデックス3 ☆☆☆☆☆ %d\n", "☆☆☆☆☆ Each index 3 ☆☆☆☆☆ %d\n")
+ VT_RST,
+ resultIdx);
PRINTF("\n");
- // "What kind of evaluation?"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ どういう評価? ☆☆☆☆☆☆ %d\n" VT_RST, reaction);
- // "What kind of action?"
- PRINTF(VT_FGCOL(MAGENTA) "☆☆☆☆☆ どういうアクション? ☆☆☆ %d\n" VT_RST, this->action);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ どういう評価? ☆☆☆☆☆☆ %d\n",
+ "☆☆☆☆☆ What kind of evaluation? ☆☆☆☆☆☆ %d\n") VT_RST,
+ reaction);
+ PRINTF(VT_FGCOL(MAGENTA) T("☆☆☆☆☆ どういうアクション? ☆☆☆ %d\n",
+ "☆☆☆☆☆ What kind of action? ☆☆☆ %d\n") VT_RST,
+ this->action);
PRINTF("\n\n");
break;
}
diff --git a/src/overlays/actors/ovl_En_Dnt_Jiji/z_en_dnt_jiji.c b/src/overlays/actors/ovl_En_Dnt_Jiji/z_en_dnt_jiji.c
index 1ece39eed..ea7fcd2c8 100644
--- a/src/overlays/actors/ovl_En_Dnt_Jiji/z_en_dnt_jiji.c
+++ b/src/overlays/actors/ovl_En_Dnt_Jiji/z_en_dnt_jiji.c
@@ -21,6 +21,7 @@
#include "sfx.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64effect.h"
#include "z64play.h"
@@ -99,8 +100,9 @@ void EnDntJiji_Init(Actor* thisx, PlayState* play) {
Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit);
this->stage = (EnDntDemo*)this->actor.parent;
PRINTF("\n\n");
- // "Deku Scrub mask show elder"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ デグナッツお面品評会長老 ☆☆☆☆☆ %x\n" VT_RST, this->stage);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ デグナッツお面品評会長老 ☆☆☆☆☆ %x\n",
+ "☆☆☆☆☆ Deku Scrub mask competition elder ☆☆☆☆☆ %x\n") VT_RST,
+ this->stage);
this->actor.flags &= ~ACTOR_FLAG_ATTENTION_ENABLED;
this->actor.colChkInfo.mass = MASS_IMMOVABLE;
this->actor.attentionRangeType = ATTENTION_RANGE_6;
@@ -292,24 +294,22 @@ void EnDntJiji_GivePrize(EnDntJiji* this, PlayState* play) {
SkelAnime_Update(&this->skelAnime);
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) {
if ((this->getItemId == GI_DEKU_NUT_UPGRADE_30) || (this->getItemId == GI_DEKU_NUT_UPGRADE_40)) {
- // "nut"
- PRINTF("実 \n");
- PRINTF("実 \n");
- PRINTF("実 \n");
- PRINTF("実 \n");
- PRINTF("実 \n");
- PRINTF("実 \n");
- PRINTF("実 \n");
- PRINTF("実 \n");
+ PRINTF(T("実 \n", "nut \n"));
+ PRINTF(T("実 \n", "nut \n"));
+ PRINTF(T("実 \n", "nut \n"));
+ PRINTF(T("実 \n", "nut \n"));
+ PRINTF(T("実 \n", "nut \n"));
+ PRINTF(T("実 \n", "nut \n"));
+ PRINTF(T("実 \n", "nut \n"));
+ PRINTF(T("実 \n", "nut \n"));
SET_ITEMGETINF(ITEMGETINF_FOREST_STAGE_NUT_UPGRADE);
} else {
- // "stick"
- PRINTF("棒 \n");
- PRINTF("棒 \n");
- PRINTF("棒 \n");
- PRINTF("棒 \n");
- PRINTF("棒 \n");
- PRINTF("棒 \n");
+ PRINTF(T("棒 \n", "stick \n"));
+ PRINTF(T("棒 \n", "stick \n"));
+ PRINTF(T("棒 \n", "stick \n"));
+ PRINTF(T("棒 \n", "stick \n"));
+ PRINTF(T("棒 \n", "stick \n"));
+ PRINTF(T("棒 \n", "stick \n"));
SET_ITEMGETINF(ITEMGETINF_FOREST_STAGE_STICK_UPGRADE);
}
this->actor.textId = 0;
@@ -392,10 +392,8 @@ void EnDntJiji_Update(Actor* thisx, PlayState* play) {
Actor_SetScale(&this->actor, 0.015f);
this->unkTimer++;
-
if (IS_ACTOR_DEBUG_ENABLED && BREG(0)) {
- // "time"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ 時間 ☆☆☆☆☆ %d\n" VT_RST, this->timer);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ 時間 ☆☆☆☆☆ %d\n", "☆☆☆☆☆ time ☆☆☆☆☆ %d\n") VT_RST, this->timer);
}
if ((this->timer > 1) && (this->timer != 0)) {
diff --git a/src/overlays/actors/ovl_En_Dnt_Nomal/z_en_dnt_nomal.c b/src/overlays/actors/ovl_En_Dnt_Nomal/z_en_dnt_nomal.c
index f5d3f0b9d..ab5a70d82 100644
--- a/src/overlays/actors/ovl_En_Dnt_Nomal/z_en_dnt_nomal.c
+++ b/src/overlays/actors/ovl_En_Dnt_Nomal/z_en_dnt_nomal.c
@@ -21,6 +21,7 @@
#include "sfx.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "versions.h"
#include "z_lib.h"
#include "z64effect.h"
@@ -149,16 +150,15 @@ void EnDntNomal_Init(Actor* thisx, PlayState* play) {
this->objectId = -1;
if (this->type == ENDNTNOMAL_TARGET) {
PRINTF("\n\n");
- // "Deku Scrub target"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ デグナッツ的当て ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ デグナッツ的当て ☆☆☆☆☆ \n", "☆☆☆☆☆ Deku Scrub target ☆☆☆☆☆ \n") VT_RST);
Collider_InitQuad(play, &this->targetColliderQuad);
Collider_SetQuad(play, &this->targetColliderQuad, &this->actor, &sTargetQuadInit);
this->actor.world.rot.y = this->actor.shape.rot.y = this->actor.yawTowardsPlayer;
this->objectId = OBJECT_HINTNUTS;
} else {
PRINTF("\n\n");
- // "Deku Scrub mask show audience"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ デグナッツお面品評会一般人 ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ デグナッツお面品評会一般人 ☆☆☆☆☆ \n",
+ "☆☆☆☆☆ Deku Scrub mask competition audience ☆☆☆☆☆ \n") VT_RST);
Collider_InitCylinder(play, &this->bodyColliderCylinder);
Collider_SetCylinder(play, &this->bodyColliderCylinder, &this->actor, &sBodyCylinderInit);
this->objectId = OBJECT_DNK;
@@ -167,10 +167,9 @@ void EnDntNomal_Init(Actor* thisx, PlayState* play) {
this->requiredObjectSlot = Object_GetSlot(&play->objectCtx, this->objectId);
if (this->requiredObjectSlot < 0) {
Actor_Kill(&this->actor);
- // "What?"
- PRINTF(VT_FGCOL(MAGENTA) " なにみの? %d\n" VT_RST "\n", this->requiredObjectSlot);
- // "Bank is funny"
- PRINTF(VT_FGCOL(CYAN) " バンクおかしいしぞ!%d\n" VT_RST "\n", this->actor.params);
+ PRINTF(VT_FGCOL(MAGENTA) T(" なにみの? %d\n", " What? %d\n") VT_RST "\n", this->requiredObjectSlot);
+ PRINTF(VT_FGCOL(CYAN) T(" バンクおかしいしぞ!%d\n", " The bank is weird! %d\n") VT_RST "\n",
+ this->actor.params);
return;
}
} else {
@@ -279,8 +278,7 @@ void EnDntNomal_TargetWait(EnDntNomal* this, PlayState* play) {
EffectSsExtra_Spawn(play, &scorePos, &scoreVel, &scoreAccel, 4, 2);
Audio_StopSfxById(NA_SE_SY_TRE_BOX_APPEAR);
Sfx_PlaySfxCentered(NA_SE_SY_TRE_BOX_APPEAR);
- // "Big hit"
- PRINTF(VT_FGCOL(CYAN) "☆☆☆☆☆ 大当り ☆☆☆☆☆ %d\n" VT_RST, this->hitCounter);
+ PRINTF(VT_FGCOL(CYAN) T("☆☆☆☆☆ 大当り ☆☆☆☆☆ %d\n", "☆☆☆☆☆ Big hit ☆☆☆☆☆ %d\n") VT_RST, this->hitCounter);
if (!LINK_IS_ADULT && !GET_ITEMGETINF(ITEMGETINF_1D)) {
this->hitCounter++;
if (this->hitCounter >= 3) {
diff --git a/src/overlays/actors/ovl_En_Dy_Extra/z_en_dy_extra.c b/src/overlays/actors/ovl_En_Dy_Extra/z_en_dy_extra.c
index d65d703e6..804e04ad8 100644
--- a/src/overlays/actors/ovl_En_Dy_Extra/z_en_dy_extra.c
+++ b/src/overlays/actors/ovl_En_Dy_Extra/z_en_dy_extra.c
@@ -13,6 +13,7 @@
#include "sfx.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64play.h"
@@ -47,8 +48,8 @@ void EnDyExtra_Init(Actor* thisx, PlayState* play) {
EnDyExtra* this = (EnDyExtra*)thisx;
PRINTF("\n\n");
- // "Big fairy effect"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ 大妖精効果 ☆☆☆☆☆ %d\n" VT_RST, this->actor.params);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ 大妖精効果 ☆☆☆☆☆ %d\n", "☆☆☆☆☆ Big fairy effect ☆☆☆☆☆ %d\n") VT_RST,
+ this->actor.params);
this->type = this->actor.params;
this->scale.x = 0.025f;
this->scale.y = 0.039f;
diff --git a/src/overlays/actors/ovl_En_Eiyer/z_en_eiyer.c b/src/overlays/actors/ovl_En_Eiyer/z_en_eiyer.c
index d60d91c22..9477eb0df 100644
--- a/src/overlays/actors/ovl_En_Eiyer/z_en_eiyer.c
+++ b/src/overlays/actors/ovl_En_Eiyer/z_en_eiyer.c
@@ -59,7 +59,7 @@ ActorProfile En_Eiyer_Profile = {
/**/ EnEiyer_Draw,
};
-static ColliderCylinderInit sColCylInit = {
+static ColliderCylinderInit sColliderCylinderInit = {
{
COL_MATERIAL_HIT0,
AT_ON | AT_TYPE_ENEMY,
@@ -135,7 +135,7 @@ void EnEiyer_Init(Actor* thisx, PlayState* play) {
ActorShape_Init(&this->actor.shape, 600.0f, ActorShadow_DrawCircle, 65.0f);
SkelAnime_Init(play, &this->skelanime, &gStingerSkel, &gStingerIdleAnim, this->jointTable, this->morphTable, 19);
Collider_InitCylinder(play, &this->collider);
- Collider_SetCylinder(play, &this->collider, &this->actor, &sColCylInit);
+ Collider_SetCylinder(play, &this->collider, &this->actor, &sColliderCylinderInit);
CollisionCheck_SetInfo(&this->actor.colChkInfo, &sDamageTable, &sColChkInfoInit);
if (this->actor.params < 3) {
@@ -282,7 +282,7 @@ void EnEiyer_SetupLand(EnEiyer* this) {
// Update BgCheck info, play sound, and spawn effect on the first frame of the land action
this->timer = -1;
this->actor.gravity = 0.0f;
- this->collider.dim.height = sColCylInit.dim.height;
+ this->collider.dim.height = sColliderCylinderInit.dim.height;
this->actionFunc = EnEiyer_Land;
}
@@ -328,7 +328,7 @@ void EnEiyer_SetupStunned(EnEiyer* this) {
this->actor.speed = 0.0f;
this->actor.velocity.y = 0.0f;
this->actor.gravity = -1.0f;
- this->collider.dim.height = sColCylInit.dim.height + 8;
+ this->collider.dim.height = sColliderCylinderInit.dim.height + 8;
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 200, COLORFILTER_BUFFLAG_OPA, 80);
this->collider.base.atFlags &= ~AT_ON;
Actor_PlaySfx(&this->actor, NA_SE_EN_GOMA_JR_FREEZE);
@@ -606,7 +606,7 @@ void EnEiyer_Stunned(EnEiyer* this, PlayState* play) {
if (this->timer == 0) {
this->actor.gravity = 0.0f;
this->actor.velocity.y = 0.0f;
- this->collider.dim.height = sColCylInit.dim.height;
+ this->collider.dim.height = sColliderCylinderInit.dim.height;
EnEiyer_SetupGlide(this);
}
}
@@ -638,7 +638,7 @@ void EnEiyer_UpdateDamage(EnEiyer* this, PlayState* play) {
Actor_PlaySfx(&this->actor, NA_SE_EN_EIER_DAMAGE);
EnEiyer_SetupHurt(this);
} else {
- this->collider.dim.height = sColCylInit.dim.height;
+ this->collider.dim.height = sColliderCylinderInit.dim.height;
EnEiyer_SetupDie(this);
}
}
diff --git a/src/overlays/actors/ovl_En_Encount2/z_en_encount2.c b/src/overlays/actors/ovl_En_Encount2/z_en_encount2.c
index 847f5d34a..c3604dd32 100644
--- a/src/overlays/actors/ovl_En_Encount2/z_en_encount2.c
+++ b/src/overlays/actors/ovl_En_Encount2/z_en_encount2.c
@@ -10,6 +10,7 @@
#include "sfx.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64play.h"
#include "z64player.h"
@@ -57,16 +58,16 @@ void EnEncount2_Init(Actor* thisx, PlayState* play) {
if (!this->isNotDeathMountain) {
PRINTF("\n\n");
- // "☆☆☆☆☆ Death Mountain Encount2 set ☆☆☆☆☆"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ デスマウンテンエンカウント2セットされました ☆☆☆☆☆ %d\n" VT_RST,
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ デスマウンテンエンカウント2セットされました ☆☆☆☆☆ %d\n",
+ "☆☆☆☆☆ Death Mountain Encount2 set ☆☆☆☆☆ %d\n") VT_RST,
this->actor.params);
if (LINK_IS_ADULT && GET_EVENTCHKINF(EVENTCHKINF_49)) { // flag for having used fire temple blue warp
Actor_Kill(thisx);
}
} else {
PRINTF("\n\n");
- // "☆☆☆☆☆ Ganon Tower Escape Encount2 set ☆☆☆☆☆"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ ガノンタワー脱出エンカウント2セットされました ☆☆☆☆☆ %d\n" VT_RST,
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ ガノンタワー脱出エンカウント2セットされました ☆☆☆☆☆ %d\n",
+ "☆☆☆☆☆ Ganon Tower Escape Encount2 set ☆☆☆☆☆ %d\n") VT_RST,
this->actor.params);
}
@@ -248,12 +249,11 @@ void EnEncount2_SpawnRocks(EnEncount2* this, PlayState* play) {
this->numSpawnedRocks++;
return;
}
- // "☆☆☆☆☆ Can't occur! ☆☆☆☆☆"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 発生できません! ☆☆☆☆☆\n" VT_RST);
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 発生できません! ☆☆☆☆☆\n" VT_RST);
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 発生できません! ☆☆☆☆☆\n" VT_RST);
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 発生できません! ☆☆☆☆☆\n" VT_RST);
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 発生できません! ☆☆☆☆☆\n\n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 発生できません! ☆☆☆☆☆\n", "☆☆☆☆☆ Can't occur! ☆☆☆☆☆\n") VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 発生できません! ☆☆☆☆☆\n", "☆☆☆☆☆ Can't occur! ☆☆☆☆☆\n") VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 発生できません! ☆☆☆☆☆\n", "☆☆☆☆☆ Can't occur! ☆☆☆☆☆\n") VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 発生できません! ☆☆☆☆☆\n", "☆☆☆☆☆ Can't occur! ☆☆☆☆☆\n") VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 発生できません! ☆☆☆☆☆\n\n", "☆☆☆☆☆ Can't occur! ☆☆☆☆☆\n\n") VT_RST);
}
}
}
diff --git a/src/overlays/actors/ovl_En_Ex_Item/z_en_ex_item.c b/src/overlays/actors/ovl_En_Ex_Item/z_en_ex_item.c
index cbbb4fa0e..e9c0d12dd 100644
--- a/src/overlays/actors/ovl_En_Ex_Item/z_en_ex_item.c
+++ b/src/overlays/actors/ovl_En_Ex_Item/z_en_ex_item.c
@@ -15,6 +15,7 @@
#include "sfx.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64draw.h"
#include "z64play.h"
@@ -69,10 +70,10 @@ void EnExItem_Init(Actor* thisx, PlayState* play) {
this->type = PARAMS_GET_U(this->actor.params, 0, 8);
this->unusedParam = PARAMS_GET_U(this->actor.params, 8, 8);
PRINTF("\n\n");
- // "What will come out?"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ なにがでるかな? ☆☆☆☆☆ %d\n" VT_RST, this->type);
- // "What will come out?"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ なにがでるかな? ☆☆☆☆☆ %d\n" VT_RST, this->unusedParam);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ なにがでるかな? ☆☆☆☆☆ %d\n", "☆☆☆☆☆ What will you get? ☆☆☆☆☆ %d\n") VT_RST,
+ this->type);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ なにがでるかな? ☆☆☆☆☆ %d\n", "☆☆☆☆☆ What will you get? ☆☆☆☆☆ %d\n") VT_RST,
+ this->unusedParam);
this->initPos = this->actor.world.pos;
this->getItemObjectId = -1;
switch (this->type) {
@@ -121,10 +122,9 @@ void EnExItem_Init(Actor* thisx, PlayState* play) {
this->actor.draw = NULL;
if (this->requiredObjectSlot < 0) {
Actor_Kill(&this->actor);
- // "What?"
- PRINTF("なにみの? %d\n", this->actor.params);
- // "bank is funny"
- PRINTF(VT_FGCOL(MAGENTA) " バンクおかしいしぞ!%d\n" VT_RST "\n", this->actor.params);
+ PRINTF(T("なにみの? %d\n", "What? %d\n"), this->actor.params);
+ PRINTF(VT_FGCOL(MAGENTA) T(" バンクおかしいしぞ!%d\n", " The bank is weird!%d\n") VT_RST "\n",
+ this->actor.params);
return;
}
this->actionFunc = EnExItem_WaitForObject;
@@ -135,12 +135,16 @@ void EnExItem_WaitForObject(EnExItem* this, PlayState* play) {
s32 onCounter;
if (Object_IsLoaded(&play->objectCtx, this->requiredObjectSlot)) {
- // "End of transfer"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 転送終了 ☆☆☆☆☆ %d\n" VT_RST, this->actor.params);
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ 転送終了 ☆☆☆☆☆ %d\n" VT_RST, this->actor.params);
- PRINTF(VT_FGCOL(BLUE) "☆☆☆☆☆ 転送終了 ☆☆☆☆☆ %d\n" VT_RST, this->actor.params);
- PRINTF(VT_FGCOL(MAGENTA) "☆☆☆☆☆ 転送終了 ☆☆☆☆☆ %d\n" VT_RST, this->actor.params);
- PRINTF(VT_FGCOL(CYAN) "☆☆☆☆☆ 転送終了 ☆☆☆☆☆ %d\n\n" VT_RST, this->actor.params);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 転送終了 ☆☆☆☆☆ %d\n", "☆☆☆☆☆ Transfer completed ☆☆☆☆☆ %d\n") VT_RST,
+ this->actor.params);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ 転送終了 ☆☆☆☆☆ %d\n", "☆☆☆☆☆ Transfer completed ☆☆☆☆☆ %d\n") VT_RST,
+ this->actor.params);
+ PRINTF(VT_FGCOL(BLUE) T("☆☆☆☆☆ 転送終了 ☆☆☆☆☆ %d\n", "☆☆☆☆☆ Transfer completed ☆☆☆☆☆ %d\n") VT_RST,
+ this->actor.params);
+ PRINTF(VT_FGCOL(MAGENTA) T("☆☆☆☆☆ 転送終了 ☆☆☆☆☆ %d\n", "☆☆☆☆☆ Transfer completed ☆☆☆☆☆ %d\n") VT_RST,
+ this->actor.params);
+ PRINTF(VT_FGCOL(CYAN) T("☆☆☆☆☆ 転送終了 ☆☆☆☆☆ %d\n\n", "☆☆☆☆☆ Transfer completed ☆☆☆☆☆ %d\n\n") VT_RST,
+ this->actor.params);
this->actor.objectSlot = this->requiredObjectSlot;
this->actor.draw = EnExItem_Draw;
this->stopRotate = false;
@@ -314,14 +318,13 @@ void EnExItem_BowlPrize(EnExItem* this, PlayState* play) {
this->actor.world.pos.z += (tmpf3 / tmpf4) * 5.0f;
}
} else {
- // "parent"
- PRINTF(VT_FGCOL(GREEN) " ☆☆☆☆☆ 母親ー? ☆☆☆☆☆ %x\n" VT_RST, this->actor.parent);
- // "Can it move?"
- PRINTF(VT_FGCOL(GREEN) " ☆☆☆☆☆ 動いてねー? ☆☆☆☆☆ %x\n" VT_RST, this->actor.parent->update);
+ PRINTF(VT_FGCOL(GREEN) T(" ☆☆☆☆☆ 母親ー? ☆☆☆☆☆ %x\n", " ☆☆☆☆☆ Mother? ☆☆☆☆☆ %x\n") VT_RST,
+ this->actor.parent);
+ PRINTF(VT_FGCOL(GREEN) T(" ☆☆☆☆☆ 動いてねー? ☆☆☆☆☆ %x\n", " ☆☆☆☆☆ Is it moving? ☆☆☆☆☆ %x\n") VT_RST,
+ this->actor.parent->update);
if ((this->actor.parent != NULL) && (this->actor.parent->update != NULL)) {
((EnBomBowlPit*)this->actor.parent)->exItemDone = 1;
- // "It can't move!"
- PRINTF(VT_FGCOL(GREEN) " ☆☆☆☆☆ さぁきえるぞ! ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T(" ☆☆☆☆☆ さぁきえるぞ! ☆☆☆☆☆ \n", " ☆☆☆☆☆ Now it's gone! ☆☆☆☆☆ \n") VT_RST);
}
Actor_Kill(&this->actor);
}
@@ -426,8 +429,7 @@ void EnExItem_TargetPrizeGive(EnExItem* this, PlayState* play) {
void EnExItem_TargetPrizeFinish(EnExItem* this, PlayState* play) {
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) {
- // "Successful completion"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 正常終了 ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 正常終了 ☆☆☆☆☆ \n", "☆☆☆☆☆ Normal termination ☆☆☆☆☆ \n") VT_RST);
SET_ITEMGETINF(ITEMGETINF_1D);
Actor_Kill(&this->actor);
}
diff --git a/src/overlays/actors/ovl_En_Ex_Ruppy/z_en_ex_ruppy.c b/src/overlays/actors/ovl_En_Ex_Ruppy/z_en_ex_ruppy.c
index e8cb44f7f..7f14d034f 100644
--- a/src/overlays/actors/ovl_En_Ex_Ruppy/z_en_ex_ruppy.c
+++ b/src/overlays/actors/ovl_En_Ex_Ruppy/z_en_ex_ruppy.c
@@ -10,6 +10,7 @@
#include "sfx.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "z_en_item00.h"
#include "z_lib.h"
#include "z64effect.h"
@@ -63,8 +64,7 @@ void EnExRuppy_Init(Actor* thisx, PlayState* play) {
s16 temp3;
this->type = this->actor.params;
- // "Index"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ インデックス ☆☆☆☆☆ %x\n" VT_RST, this->type);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ インデックス ☆☆☆☆☆ %x\n", "☆☆☆☆☆ Index ☆☆☆☆☆ %x\n") VT_RST, this->type);
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 25.0f);
switch (this->type) {
@@ -134,8 +134,7 @@ void EnExRuppy_Init(Actor* thisx, PlayState* play) {
this->colorIdx = (s16)Rand_ZeroFloat(3.99f) + 1;
}
this->actor.gravity = -3.0f;
- // "Wow Coin"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ わーなーコイン ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ わーなーコイン ☆☆☆☆☆ \n", "☆☆☆☆☆ Wow Coin ☆☆☆☆☆ \n") VT_RST);
this->actor.shape.shadowScale = 6.0f;
this->actor.shape.yOffset = 700.0f;
this->actor.flags &= ~ACTOR_FLAG_ATTENTION_ENABLED;
@@ -156,8 +155,7 @@ void EnExRuppy_Init(Actor* thisx, PlayState* play) {
break;
}
this->actor.gravity = -3.0f;
- // "Normal rupee"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ ノーマルルピー ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ ノーマルルピー ☆☆☆☆☆ \n", "☆☆☆☆☆ Normal rupee ☆☆☆☆☆ \n") VT_RST);
this->actor.shape.shadowScale = 6.0f;
this->actor.shape.yOffset = 700.0f;
this->actor.flags &= ~ACTOR_FLAG_ATTENTION_ENABLED;
@@ -342,10 +340,10 @@ void EnExRuppy_WaitToBlowUp(EnExRuppy* this, PlayState* play) {
parent->unk_226 = 1;
}
} else {
- // "That idiot! error"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ そ、そんなばかな!エラー!!!!! ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ そ、そんなばかな!エラー!!!!! ☆☆☆☆☆ \n",
+ "☆☆☆☆☆ That's stupid! Error!!!!! ☆☆☆☆☆ \n") VT_RST);
}
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ バカめ! ☆☆☆☆☆ \n" VT_RST); // "Stupid!"
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ バカめ! ☆☆☆☆☆ \n", "☆☆☆☆☆ Stupid! ☆☆☆☆☆ \n") VT_RST);
explosionScale = 100;
explosionScaleStep = 30;
if (this->type == 2) {
diff --git a/src/overlays/actors/ovl_En_Fhg_Fire/z_en_fhg_fire.c b/src/overlays/actors/ovl_En_Fhg_Fire/z_en_fhg_fire.c
index 2fdf9525d..3eeb70ecb 100644
--- a/src/overlays/actors/ovl_En_Fhg_Fire/z_en_fhg_fire.c
+++ b/src/overlays/actors/ovl_En_Fhg_Fire/z_en_fhg_fire.c
@@ -20,6 +20,7 @@
#include "segmented_address.h"
#include "sfx.h"
#include "sys_matrix.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64effect.h"
#include "z64play.h"
@@ -135,9 +136,9 @@ void EnFhgFire_Init(Actor* thisx, PlayState* play) {
this->collider.dim.height = this->actor.world.rot.x * 0.13f;
this->collider.dim.yShift = 0;
} else if (this->actor.params == FHGFIRE_SPEAR_LIGHT) {
- PRINTF("yari hikari ct 1\n"); // "light spear"
+ PRINTF(T("yari hikari ct 1\n", "spear light ct 1\n"));
EnFhgFire_SetUpdate(this, EnFhgFire_SpearLight);
- PRINTF("yari hikari ct 2\n");
+ PRINTF(T("yari hikari ct 2\n", "spear light ct 2\n"));
this->work[FHGFIRE_TIMER] = this->actor.world.rot.x;
this->work[FHGFIRE_FIRE_MODE] = this->actor.world.rot.y;
} else if ((this->actor.params == FHGFIRE_WARP_EMERGE) || (this->actor.params == FHGFIRE_WARP_RETREAT) ||
@@ -655,8 +656,7 @@ void EnFhgFire_EnergyBall(EnFhgFire* this, PlayState* play) {
this->actor.speed = 20.0f;
}
Actor_PlaySfx(&this->actor, NA_SE_EN_FANTOM_FIRE - SFX_FLAG);
- // "Why ah ah ah ah"
- PRINTF("なぜだああああああああ %d\n", this->work[FHGFIRE_VARIANCE_TIMER]);
+ PRINTF(T("なぜだああああああああ %d\n", "Whyyyyyyyy %d\n"), this->work[FHGFIRE_VARIANCE_TIMER]);
}
}
diff --git a/src/overlays/actors/ovl_En_Fire_Rock/z_en_fire_rock.c b/src/overlays/actors/ovl_En_Fire_Rock/z_en_fire_rock.c
index af392e704..569e802a5 100644
--- a/src/overlays/actors/ovl_En_Fire_Rock/z_en_fire_rock.c
+++ b/src/overlays/actors/ovl_En_Fire_Rock/z_en_fire_rock.c
@@ -10,6 +10,7 @@
#include "sfx.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64debug_display.h"
#include "z64effect.h"
@@ -100,16 +101,14 @@ void EnFireRock_Init(Actor* thisx, PlayState* play) {
switch (this->type) {
case FIRE_ROCK_CEILING_SPOT_SPAWNER:
this->actor.draw = NULL;
- // "☆☆☆☆☆ ceiling waiting rock ☆☆☆☆☆"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ 天井待ち岩 ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ 天井待ち岩 ☆☆☆☆☆ \n", "☆☆☆☆☆ ceiling waiting rock ☆☆☆☆☆ \n") VT_RST);
this->actionFunc = FireRock_WaitSpawnRocksFromCeiling;
break;
case FIRE_ROCK_ON_FLOOR:
Actor_SetScale(&this->actor, 0.03f);
Collider_InitCylinder(play, &this->collider);
Collider_SetCylinder(play, &this->collider, &this->actor, &D_80A12CCC);
- // "☆☆☆☆☆ floor rock ☆☆☆☆☆"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ 床岩 ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ 床岩 ☆☆☆☆☆ \n", "☆☆☆☆☆ floor rock ☆☆☆☆☆ \n") VT_RST);
this->collider.dim.radius = 23;
this->collider.dim.height = 37;
this->collider.dim.yShift = -10;
@@ -154,8 +153,8 @@ void EnFireRock_Init(Actor* thisx, PlayState* play) {
this->actionFunc = EnFireRock_Fall;
break;
default:
- // "☆☆☆☆☆ No such rock! ERR !!!!!! ☆☆☆☆☆"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ そんな岩はねぇ!ERR!!!!!! ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(YELLOW)
+ T("☆☆☆☆☆ そんな岩はねぇ!ERR!!!!!! ☆☆☆☆☆ \n", "☆☆☆☆☆ No such rock! ERR!!!!!! ☆☆☆☆☆ \n") VT_RST);
Actor_Kill(&this->actor);
break;
}
@@ -169,8 +168,9 @@ void EnFireRock_Destroy(Actor* thisx, PlayState* play) {
if ((spawner->actor.update != NULL) && (spawner->numSpawnedRocks > 0)) {
spawner->numSpawnedRocks--;
PRINTF("\n\n");
- // "☆☆☆☆☆ Number of spawned instances recovery ☆☆☆☆☆%d"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 発生数回復 ☆☆☆☆☆%d\n" VT_RST, spawner->numSpawnedRocks);
+ PRINTF(VT_FGCOL(GREEN)
+ T("☆☆☆☆☆ 発生数回復 ☆☆☆☆☆%d\n", "☆☆☆☆☆ Number of spawned instances recovery ☆☆☆☆☆%d\n") VT_RST,
+ spawner->numSpawnedRocks);
PRINTF("\n\n");
}
}
@@ -371,8 +371,8 @@ void EnFireRock_Update(Actor* thisx, PlayState* play) {
thisx->velocity.y = 0.0f;
thisx->speed = 0.0f;
this->actionFunc = EnFireRock_SpawnMoreBrokenPieces;
- // "☆☆☆☆☆ Shield Defense Lv1 ☆☆☆☆☆"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ シールド防御 Lv1 ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ シールド防御 Lv1 ☆☆☆☆☆ \n", "☆☆☆☆☆ Shield Defense Lv1 ☆☆☆☆☆ \n")
+ VT_RST);
return;
}
setCollision = true;
diff --git a/src/overlays/actors/ovl_En_Fish/z_en_fish.c b/src/overlays/actors/ovl_En_Fish/z_en_fish.c
index 9de3dbe4f..f5964ebae 100644
--- a/src/overlays/actors/ovl_En_Fish/z_en_fish.c
+++ b/src/overlays/actors/ovl_En_Fish/z_en_fish.c
@@ -13,6 +13,7 @@
#include "printf.h"
#include "sfx.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64item.h"
#include "z64play.h"
@@ -396,8 +397,8 @@ void EnFish_Dropped_Fall(EnFish* this, PlayState* play) {
} else if ((this->timer <= 0) && (this->actor.params == FISH_DROPPED) &&
(this->actor.floorHeight < BGCHECK_Y_MIN + 10.0f)) {
PRINTF_COLOR_WARNING();
- // "BG missing? Running Actor_delete"
- PRINTF("BG 抜け? Actor_delete します(%s %d)\n", "../z_en_sakana.c", 822);
+ PRINTF(T("BG 抜け? Actor_delete します(%s %d)\n", "BG missing? Running Actor_delete (%s %d)\n"),
+ "../z_en_sakana.c", 822);
PRINTF_RST();
Actor_Kill(&this->actor);
}
@@ -639,9 +640,9 @@ void EnFish_UpdateCutscene(EnFish* this, PlayState* play) {
if (play) {}
if (cue == NULL) {
- // "Warning : DEMO ended without dousa (action) 3 termination being called"
- PRINTF("Warning : dousa 3 消滅 が呼ばれずにデモが終了した(%s %d)(arg_data 0x%04x)\n", "../z_en_sakana.c", 1169,
- this->actor.params);
+ PRINTF(T("Warning : dousa 3 消滅 が呼ばれずにデモが終了した(%s %d)(arg_data 0x%04x)\n",
+ "Warning : Demo ended without action 3 being called (%s %d)(arg_data 0x%04x)\n"),
+ "../z_en_sakana.c", 1169, this->actor.params);
EnFish_ClearCutsceneData(this);
Actor_Kill(&this->actor);
return;
@@ -658,14 +659,13 @@ void EnFish_UpdateCutscene(EnFish* this, PlayState* play) {
EnFish_Cutscene_WiggleFlyingThroughAir(this, play);
break;
case 3:
- // "DEMO fish termination"
- PRINTF("デモ魚消滅\n");
+ PRINTF(T("デモ魚消滅\n", "Demo fish disappearance\n"));
EnFish_ClearCutsceneData(this);
Actor_Kill(&this->actor);
return;
default:
- // "Improper DEMO action"
- PRINTF("不正なデモ動作(%s %d)(arg_data 0x%04x)\n", "../z_en_sakana.c", 1200, this->actor.params);
+ PRINTF(T("不正なデモ動作(%s %d)(arg_data 0x%04x)\n", "Incorrect demo behavior (%s %d)(arg_data 0x%04x)\n"),
+ "../z_en_sakana.c", 1200, this->actor.params);
break;
}
diff --git a/src/overlays/actors/ovl_En_Floormas/z_en_floormas.c b/src/overlays/actors/ovl_En_Floormas/z_en_floormas.c
index a9d9036e9..87747933d 100644
--- a/src/overlays/actors/ovl_En_Floormas/z_en_floormas.c
+++ b/src/overlays/actors/ovl_En_Floormas/z_en_floormas.c
@@ -189,8 +189,8 @@ void EnFloormas_Init(Actor* thisx, PlayState* play2) {
void EnFloormas_Destroy(Actor* thisx, PlayState* play) {
EnFloormas* this = (EnFloormas*)thisx;
- ColliderCylinder* col = &this->collider;
- Collider_DestroyCylinder(play, col);
+
+ Collider_DestroyCylinder(play, &this->collider);
}
void EnFloormas_MakeInvulnerable(EnFloormas* this) {
diff --git a/src/overlays/actors/ovl_En_Fr/z_en_fr.c b/src/overlays/actors/ovl_En_Fr/z_en_fr.c
index 41a31fc6d..34293754a 100644
--- a/src/overlays/actors/ovl_En_Fr/z_en_fr.c
+++ b/src/overlays/actors/ovl_En_Fr/z_en_fr.c
@@ -13,6 +13,7 @@
#include "sfx.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64audio.h"
#include "z64debug_display.h"
@@ -269,8 +270,8 @@ void EnFr_Init(Actor* thisx, PlayState* play) {
} else {
if ((this->actor.params >= 6) || (this->actor.params < 0)) {
PRINTF_COLOR_ERROR();
- // "The argument is wrong!!"
- PRINTF("%s[%d] : 引数が間違っている!!(%d)\n", "../z_en_fr.c", 370, this->actor.params);
+ PRINTF(T("%s[%d] : 引数が間違っている!!(%d)\n", "%s[%d] : The argument is wrong!! (%d)\n"),
+ "../z_en_fr.c", 370, this->actor.params);
PRINTF_RST();
ASSERT(0, "0", "../z_en_fr.c", 372);
}
@@ -279,8 +280,7 @@ void EnFr_Init(Actor* thisx, PlayState* play) {
if (this->requiredObjectSlot < 0) {
Actor_Kill(&this->actor);
PRINTF_COLOR_ERROR();
- // "There is no bank!!"
- PRINTF("%s[%d] : バンクが無いよ!!\n", "../z_en_fr.c", 380);
+ PRINTF(T("%s[%d] : バンクが無いよ!!\n", "%s[%d] : There is no bank!!\n"), "../z_en_fr.c", 380);
PRINTF_RST();
ASSERT(0, "0", "../z_en_fr.c", 382);
}
@@ -1004,8 +1004,7 @@ void EnFr_Deactivate(EnFr* this, PlayState* play) {
if (frog == NULL) {
PRINTF_COLOR_ERROR();
- // "There are no frogs!?"
- PRINTF("%s[%d]カエルがいない!?\n", "../z_en_fr.c", 1604);
+ PRINTF(T("%s[%d]カエルがいない!?\n", "%s[%d] There are no frogs!?\n"), "../z_en_fr.c", 1604);
PRINTF_RST();
return;
} else if (frog->isDeactivating != true) {
@@ -1018,8 +1017,7 @@ void EnFr_Deactivate(EnFr* this, PlayState* play) {
if (frog == NULL) {
PRINTF_COLOR_ERROR();
- // "There are no frogs!?"
- PRINTF("%s[%d]カエルがいない!?\n", "../z_en_fr.c", 1618);
+ PRINTF(T("%s[%d]カエルがいない!?\n", "%s[%d] There are no frogs!?\n"), "../z_en_fr.c", 1618);
PRINTF_RST();
return;
}
diff --git a/src/overlays/actors/ovl_En_G_Switch/z_en_g_switch.c b/src/overlays/actors/ovl_En_G_Switch/z_en_g_switch.c
index fd5bb59cf..724ef10d4 100644
--- a/src/overlays/actors/ovl_En_G_Switch/z_en_g_switch.c
+++ b/src/overlays/actors/ovl_En_G_Switch/z_en_g_switch.c
@@ -19,6 +19,7 @@
#include "sfx.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "z_en_item00.h"
#include "z_lib.h"
#include "z64audio.h"
@@ -104,22 +105,21 @@ void EnGSwitch_Init(Actor* thisx, PlayState* play) {
this->type = PARAMS_GET_U(this->actor.params, 12, 4);
this->switchFlag = PARAMS_GET_U(this->actor.params, 0, 6);
this->numEffects = EN_GSWITCH_EFFECT_COUNT;
- // "index"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ インデックス ☆☆☆☆☆ %x\n" VT_RST, this->type);
- // "save"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ セーブ\t ☆☆☆☆☆ %x\n" VT_RST, this->switchFlag);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ インデックス ☆☆☆☆☆ %x\n", "☆☆☆☆☆ Index ☆☆☆☆☆ %x\n") VT_RST, this->type);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ セーブ\t ☆☆☆☆☆ %x\n", "☆☆☆☆☆ Save\t ☆☆☆☆☆ %x\n") VT_RST, this->switchFlag);
switch (this->type) {
case ENGSWITCH_SILVER_TRACKER:
PRINTF("\n\n");
- // "parent switch spawn"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 親スイッチ発生 ☆☆☆☆☆ %x\n" VT_RST, this->actor.params);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 親スイッチ発生 ☆☆☆☆☆ %x\n", "☆☆☆☆☆ Parent switch spawn ☆☆☆☆☆ %x\n") VT_RST,
+ this->actor.params);
sCollectedCount = 0;
// Ideally the following two lines would be
// this->silverCount = PARAMS_GET_U(this->actor.params, 6, 6);
this->silverCount = PARAMS_GET_NOMASK(this->actor.params, 6);
this->silverCount &= 0x3F;
- // "maximum number of checks"
- PRINTF(VT_FGCOL(MAGENTA) "☆☆☆☆☆ 最大チェック数 ☆☆☆☆☆ %d\n" VT_RST, this->silverCount);
+ PRINTF(VT_FGCOL(MAGENTA) T("☆☆☆☆☆ 最大チェック数 ☆☆☆☆☆ %d\n", "☆☆☆☆☆ Maximum number of checks ☆☆☆☆☆ %d\n")
+ VT_RST,
+ this->silverCount);
PRINTF("\n\n");
if (Flags_GetSwitch(play, this->switchFlag)) {
// This is a reference to Hokuto no Ken
@@ -131,8 +131,8 @@ void EnGSwitch_Init(Actor* thisx, PlayState* play) {
break;
case ENGSWITCH_SILVER_RUPEE:
PRINTF("\n\n");
- // "child switch spawn"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 子スイッチ発生 ☆☆☆☆☆ %x\n" VT_RST, this->actor.params);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 子スイッチ発生 ☆☆☆☆☆ %x\n", "☆☆☆☆☆ Child switch spawn ☆☆☆☆☆ %x\n") VT_RST,
+ this->actor.params);
this->colorIdx = 5;
this->numEffects = 20;
Collider_InitCylinder(play, &this->collider);
@@ -149,8 +149,8 @@ void EnGSwitch_Init(Actor* thisx, PlayState* play) {
break;
case ENGSWITCH_ARCHERY_POT:
PRINTF("\n\n");
- // "Horseback archery destructible pot"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ やぶさめぶち抜き壷 ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ やぶさめぶち抜き壷 ☆☆☆☆☆ \n",
+ "☆☆☆☆☆ Horseback archery destructible pot ☆☆☆☆☆ \n") VT_RST);
this->actor.gravity = -3.0f;
this->colorIdx = Rand_ZeroFloat(2.99f);
Collider_InitCylinder(play, &this->collider);
@@ -163,10 +163,9 @@ void EnGSwitch_Init(Actor* thisx, PlayState* play) {
this->requiredObjectSlot = Object_GetSlot(&play->objectCtx, this->objectId);
if (this->requiredObjectSlot < 0) {
Actor_Kill(&this->actor);
- // "what?"
- PRINTF(VT_FGCOL(MAGENTA) " なにみの? %d\n" VT_RST "\n", this->requiredObjectSlot);
- // "bank is funny"
- PRINTF(VT_FGCOL(CYAN) " バンクおかしいしぞ!%d\n" VT_RST "\n", this->actor.params);
+ PRINTF(VT_FGCOL(MAGENTA) T(" なにみの? %d\n", " What? %d\n") VT_RST "\n", this->requiredObjectSlot);
+ PRINTF(VT_FGCOL(CYAN) T(" バンクおかしいしぞ!%d\n", " Bank is weird! %d\n") VT_RST "\n",
+ this->actor.params);
}
this->collider.dim.radius = 24;
this->collider.dim.height = 74;
@@ -233,18 +232,18 @@ void EnGSwitch_SilverRupeeTracker(EnGSwitch* this, PlayState* play) {
if (this->noteIndex < sCollectedCount) {
if (sCollectedCount < 5) {
- // "sound?"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 音? ☆☆☆☆☆ %d\n" VT_RST, this->noteIndex);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 音? ☆☆☆☆☆ %d\n", "sound?") VT_RST, this->noteIndex);
Audio_PlaySfxTransposed(&gSfxDefaultPos, NA_SE_EV_FIVE_COUNT_LUPY, majorScale[this->noteIndex]);
this->noteIndex = sCollectedCount;
}
}
if (sCollectedCount >= this->silverCount) {
- // "It is now the end of the century."
- // This another reference to Hokuto no Ken.
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 時はまさに世紀末〜 ☆☆☆☆☆ %d\n" VT_RST, this->switchFlag);
- // "Last!"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ らすとぉ! ☆☆☆☆☆ \n" VT_RST);
+ // This is another reference to Hokuto no Ken.
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 時はまさに世紀末〜 ☆☆☆☆☆ %d\n",
+ "☆☆☆☆☆ It is now the end of the century. ☆☆☆☆☆ %d\n") VT_RST,
+ this->switchFlag);
+ PRINTF(VT_FGCOL(GREEN)
+ T("☆☆☆☆☆ らすとぉ! ☆☆☆☆☆ \n", "☆☆☆☆☆ Last! ☆☆☆☆☆ \n") VT_RST);
if ((play->sceneId == SCENE_GERUDO_TRAINING_GROUND) && (this->actor.room == 2)) {
Flags_SetTempClear(play, this->actor.room);
} else {
@@ -367,8 +366,9 @@ void EnGSwitch_GalleryRupee(EnGSwitch* this, PlayState* play) {
gallery->targetState[this->index] = ENSYATEKIHIT_HIT;
Sfx_PlaySfxCentered(NA_SE_EV_HIT_SOUND);
Sfx_PlaySfxCentered(NA_SE_SY_GET_RUPY);
- // "Yeah !"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ いぇぇーす!HIT!! ☆☆☆☆☆ %d\n" VT_RST, gallery->hitCount);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ いぇぇーす!HIT!! ☆☆☆☆☆ %d\n", "☆☆☆☆☆ Yeah! HIT!! ☆☆☆☆☆ %d\n")
+ VT_RST,
+ gallery->hitCount);
EnGSwitch_Break(this, play);
this->killTimer = 50;
this->broken = true;
diff --git a/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c b/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c
index c47c8271e..8b6d82134 100644
--- a/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c
+++ b/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c
@@ -14,6 +14,7 @@
#include "sfx.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64face_reaction.h"
#include "z64horse.h"
@@ -147,8 +148,7 @@ void EnGe1_Init(Actor* thisx, PlayState* play) {
case GE1_TYPE_VALLEY_FLOOR:
if (LINK_IS_ADULT) {
- // "Valley floor Gerudo withdrawal"
- PRINTF(VT_FGCOL(CYAN) "谷底 ゲルド 撤退 \n" VT_RST);
+ PRINTF(VT_FGCOL(CYAN) T("谷底 ゲルド 撤退 \n", "Valley floor Gerudo withdrawal \n") VT_RST);
Actor_Kill(&this->actor);
return;
}
@@ -163,8 +163,9 @@ void EnGe1_Init(Actor* thisx, PlayState* play) {
}
this->actor.attentionRangeType = ATTENTION_RANGE_3;
this->hairstyle = GE1_HAIR_BOB;
- // "Horseback archery Gerudo EVENT_INF(0) ="
- PRINTF(VT_FGCOL(CYAN) "やぶさめ ゲルド EVENT_INF(0) = %x\n" VT_RST, gSaveContext.eventInf[0]);
+ PRINTF(VT_FGCOL(CYAN)
+ T("やぶさめ ゲルド EVENT_INF(0) = %x\n", "Horseback archery Gerudo EVENT_INF(0) = %x\n") VT_RST,
+ gSaveContext.eventInf[0]);
if (GET_EVENTINF(EVENTINF_HORSES_08)) {
this->actionFunc = EnGe1_TalkAfterGame_Archery;
diff --git a/src/overlays/actors/ovl_En_Ge2/z_en_ge2.c b/src/overlays/actors/ovl_En_Ge2/z_en_ge2.c
index cae8d14bf..704ca6954 100644
--- a/src/overlays/actors/ovl_En_Ge2/z_en_ge2.c
+++ b/src/overlays/actors/ovl_En_Ge2/z_en_ge2.c
@@ -13,6 +13,7 @@
#include "sfx.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64effect.h"
#include "z64horse.h"
@@ -585,14 +586,12 @@ void EnGe2_Update(Actor* thisx, PlayState* play) {
this->actionFunc(this, play);
if (Ge2_DetectPlayerInUpdate(play, this, &this->actor.focus.pos, this->actor.shape.rot.y, this->yDetectRange)) {
- // "Discovered!"
- PRINTF(VT_FGCOL(GREEN) "発見!!!!!!!!!!!!\n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("発見!!!!!!!!!!!!\n", "Discovered!!!!!!!!!!!!\n") VT_RST);
EnGe2_SetupCapturePlayer(this, play);
}
if ((PARAMS_GET_S(this->actor.params, 0, 8) == GE2_TYPE_STATIONARY) && (this->actor.xzDistToPlayer < 100.0f)) {
- // "Discovered!"
- PRINTF(VT_FGCOL(GREEN) "発見!!!!!!!!!!!!\n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("発見!!!!!!!!!!!!\n", "Discovered!!!!!!!!!!!!\n") VT_RST);
EnGe2_SetupCapturePlayer(this, play);
}
}
diff --git a/src/overlays/actors/ovl_En_GeldB/z_en_geldb.c b/src/overlays/actors/ovl_En_GeldB/z_en_geldb.c
index 33b53f4dc..a0fea7778 100644
--- a/src/overlays/actors/ovl_En_GeldB/z_en_geldb.c
+++ b/src/overlays/actors/ovl_En_GeldB/z_en_geldb.c
@@ -99,7 +99,7 @@ ActorProfile En_GeldB_Profile = {
/**/ EnGeldB_Draw,
};
-static ColliderCylinderInit sBodyCylInit = {
+static ColliderCylinderInit sBodyCylinderInit = {
{
COL_MATERIAL_HIT5,
AT_NONE,
@@ -253,7 +253,7 @@ void EnGeldB_Init(Actor* thisx, PlayState* play) {
SkelAnime_InitFlex(play, &this->skelAnime, &gGerudoRedSkel, &gGerudoRedNeutralAnim, this->jointTable,
this->morphTable, GELDB_LIMB_MAX);
Collider_InitCylinder(play, &this->bodyCollider);
- Collider_SetCylinder(play, &this->bodyCollider, thisx, &sBodyCylInit);
+ Collider_SetCylinder(play, &this->bodyCollider, thisx, &sBodyCylinderInit);
Collider_InitTris(play, &this->blockCollider);
Collider_SetTris(play, &this->blockCollider, thisx, &sBlockTrisInit, this->blockElements);
Collider_InitQuad(play, &this->swordCollider);
diff --git a/src/overlays/actors/ovl_En_GirlA/z_en_girla.c b/src/overlays/actors/ovl_En_GirlA/z_en_girla.c
index aebb758cd..61eaa9967 100644
--- a/src/overlays/actors/ovl_En_GirlA/z_en_girla.c
+++ b/src/overlays/actors/ovl_En_GirlA/z_en_girla.c
@@ -10,6 +10,7 @@
#include "rand.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64draw.h"
#include "z64play.h"
@@ -386,12 +387,13 @@ s32 EnGirlA_TryChangeShopItem(EnGirlA* this) {
void EnGirlA_InitItem(EnGirlA* this, PlayState* play) {
s16 params = this->actor.params;
- PRINTF("%s(%2d)初期設定\n", sShopItemDescriptions[params], params);
+ PRINTF(T("%s(%2d)初期設定\n", "%s(%2d) Initial setup\n"), sShopItemDescriptions[params], params);
if ((params >= SI_MAX) && (params < 0)) {
Actor_Kill(&this->actor);
PRINTF_COLOR_ERROR();
- PRINTF("引数がおかしいよ(arg_data=%d)!!\n", this->actor.params);
+ PRINTF(T("引数がおかしいよ(arg_data=%d)!!\n", "The arguments are strange (arg_data=%d)!!\n"),
+ this->actor.params);
PRINTF_RST();
ASSERT(0, "0", "../z_en_girlA.c", 1421);
return;
@@ -402,7 +404,7 @@ void EnGirlA_InitItem(EnGirlA* this, PlayState* play) {
if (this->requiredObjectSlot < 0) {
Actor_Kill(&this->actor);
PRINTF_COLOR_ERROR();
- PRINTF("バンクが無いよ!!(%s)\n", sShopItemDescriptions[params]);
+ PRINTF(T("バンクが無いよ!!(%s)\n", "There is no bank!! (%s)\n"), sShopItemDescriptions[params]);
PRINTF_RST();
ASSERT(0, "0", "../z_en_girlA.c", 1434);
return;
@@ -417,7 +419,8 @@ void EnGirlA_Init(Actor* thisx, PlayState* play) {
EnGirlA_TryChangeShopItem(this);
EnGirlA_InitItem(this, play);
- PRINTF("%s(%2d)初期設定\n", sShopItemDescriptions[this->actor.params], this->actor.params);
+ PRINTF(T("%s(%2d)初期設定\n", "%s(%2d) Initial setup\n"), sShopItemDescriptions[this->actor.params],
+ this->actor.params);
}
void EnGirlA_Destroy(Actor* thisx, PlayState* play) {
diff --git a/src/overlays/actors/ovl_En_Gm/z_en_gm.c b/src/overlays/actors/ovl_En_Gm/z_en_gm.c
index 4b6a979b5..0c904a880 100644
--- a/src/overlays/actors/ovl_En_Gm/z_en_gm.c
+++ b/src/overlays/actors/ovl_En_Gm/z_en_gm.c
@@ -15,6 +15,7 @@
#include "segmented_address.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "z64play.h"
#include "z64player.h"
#include "z64save.h"
@@ -80,15 +81,14 @@ void EnGm_Init(Actor* thisx, PlayState* play) {
Actor_ProcessInitChain(&this->actor, sInitChain);
- // "Medi Goron"
- PRINTF(VT_FGCOL(GREEN) "%s[%d] : 中ゴロン[%d]" VT_RST "\n", "../z_en_gm.c", 133, this->actor.params);
+ PRINTF(VT_FGCOL(GREEN) T("%s[%d] : 中ゴロン[%d]", "%s[%d] : Medi Goron [%d]") VT_RST "\n", "../z_en_gm.c", 133,
+ this->actor.params);
this->gmObjectSlot = Object_GetSlot(&play->objectCtx, OBJECT_GM);
if (this->gmObjectSlot < 0) {
PRINTF_COLOR_ERROR();
- // "There is no model bank! !! (Medi Goron)"
- PRINTF("モデル バンクが無いよ!!(中ゴロン)\n");
+ PRINTF(T("モデル バンクが無いよ!!(中ゴロン)\n", "There is no model bank!! (Medi Goron)\n"));
PRINTF_RST();
ASSERT(0, "0", "../z_en_gm.c", 145);
}
diff --git a/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.c b/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.c
index 10ba10d18..dfd8130d8 100644
--- a/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.c
+++ b/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.c
@@ -17,6 +17,7 @@
#include "sys_math3d.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64effect.h"
#include "z64play.h"
@@ -268,8 +269,7 @@ s32 EnGoroiwa_GetAscendDirection(EnGoroiwa* this, PlayState* play) {
if (nextPointPos->x == currentPointPos->x && nextPointPos->z == currentPointPos->z) {
#if DEBUG_FEATURES
if (nextPointPos->y == currentPointPos->y) {
- // "Error: Invalid path data (points overlap)"
- PRINTF("Error : レールデータ不正(点が重なっている)");
+ PRINTF(T("Error : レールデータ不正(点が重なっている)", "Error : Rail data is incorrect (dots overlap)"));
PRINTF("(%s %d)(arg_data 0x%04x)\n", "../z_en_gr.c", 559, this->actor.params);
}
#endif
@@ -564,14 +564,15 @@ void EnGoroiwa_Init(Actor* thisx, PlayState* play) {
EnGoroiwa_InitCollider(this, play);
pathIdx = PARAMS_GET_U(this->actor.params, 0, 8);
if (pathIdx == 0xFF) {
- // "Error: Invalid arg_data"
- PRINTF("Error : arg_data が不正(%s %d)(arg_data 0x%04x)\n", "../z_en_gr.c", 1033, this->actor.params);
+ PRINTF(T("Error : arg_data が不正(%s %d)(arg_data 0x%04x)\n",
+ "Error : Invalid arg_data (%s %d)(arg_data 0x%04x)\n"),
+ "../z_en_gr.c", 1033, this->actor.params);
Actor_Kill(&this->actor);
return;
}
if (play->pathList[pathIdx].count < 2) {
- // "Error: Invalid Path Data"
- PRINTF("Error : レールデータ が不正(%s %d)\n", "../z_en_gr.c", 1043);
+ PRINTF(T("Error : レールデータ が不正(%s %d)\n", "Error : Rail data is invalid (%s %d)\n"), "../z_en_gr.c",
+ 1043);
Actor_Kill(&this->actor);
return;
}
@@ -585,9 +586,9 @@ void EnGoroiwa_Init(Actor* thisx, PlayState* play) {
EnGoroiwa_InitRotation(this);
EnGoroiwa_FaceNextWaypoint(this, play);
EnGoroiwa_SetupRoll(this);
- // "(Goroiwa)"
- PRINTF("(ごろ岩)(arg 0x%04x)(rail %d)(end %d)(bgc %d)(hit %d)\n", this->actor.params,
- PARAMS_GET_U(this->actor.params, 0, 8), PARAMS_GET_U(this->actor.params, 8, 2),
+ PRINTF(T("(ごろ岩)(arg 0x%04x)(rail %d)(end %d)(bgc %d)(hit %d)\n",
+ "(Goroiwa)(arg 0x%04x)(rail %d)(end %d)(bgc %d)(hit %d)\n"),
+ this->actor.params, PARAMS_GET_U(this->actor.params, 0, 8), PARAMS_GET_U(this->actor.params, 8, 2),
PARAMS_GET_U(this->actor.params, 10, 1), this->actor.home.rot.z & 1);
}
@@ -625,7 +626,7 @@ void EnGoroiwa_Roll(EnGoroiwa* this, PlayState* play) {
}
Actor_SetPlayerKnockbackLarge(play, &this->actor, 2.0f, this->actor.yawTowardsPlayer, 0.0f, 0);
PRINTF_COLOR_CYAN();
- PRINTF("Player ぶっ飛ばし\n"); // "Player knocked down"
+ PRINTF(T("Player ぶっ飛ばし\n", "Player knocked down\n"));
PRINTF_RST();
onHitSetupFuncs[PARAMS_GET_U(this->actor.params, 10, 1)](this);
Player_PlaySfx(GET_PLAYER(play), NA_SE_PL_BODY_HIT);
diff --git a/src/overlays/actors/ovl_En_Guest/z_en_guest.c b/src/overlays/actors/ovl_En_Guest/z_en_guest.c
index 474912abb..91a896632 100644
--- a/src/overlays/actors/ovl_En_Guest/z_en_guest.c
+++ b/src/overlays/actors/ovl_En_Guest/z_en_guest.c
@@ -14,6 +14,7 @@
#include "segmented_address.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64play.h"
#include "z64player.h"
@@ -71,8 +72,7 @@ void EnGuest_Init(Actor* thisx, PlayState* play) {
this->osAnimeObjectSlot = Object_GetSlot(&play->objectCtx, OBJECT_OS_ANIME);
if (this->osAnimeObjectSlot < 0) {
PRINTF_COLOR_ERROR();
- // "No such bank!!"
- PRINTF("%s[%d] : バンクが無いよ!!\n", "../z_en_guest.c", 129);
+ PRINTF(T("%s[%d] : バンクが無いよ!!\n", "%s[%d] : There is no bank!!\n"), "../z_en_guest.c", 129);
PRINTF_RST();
ASSERT(0, "0", "../z_en_guest.c", 132);
}
diff --git a/src/overlays/actors/ovl_En_Heishi1/z_en_heishi1.c b/src/overlays/actors/ovl_En_Heishi1/z_en_heishi1.c
index c5868f5e3..e69207395 100644
--- a/src/overlays/actors/ovl_En_Heishi1/z_en_heishi1.c
+++ b/src/overlays/actors/ovl_En_Heishi1/z_en_heishi1.c
@@ -17,6 +17,7 @@
#include "sfx.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64debug_display.h"
#include "z64effect.h"
@@ -97,27 +98,32 @@ void EnHeishi1_Init(Actor* thisx, PlayState* play2) {
this->animParams[i] = sAnimParamsInit[this->type][i];
}
- // "type"
- PRINTF(VT_FGCOL(GREEN) " 種類☆☆☆☆☆☆☆☆☆☆☆☆☆ %d\n" VT_RST, this->type);
- // "path data"
+ PRINTF(VT_FGCOL(GREEN) T(" 種類☆☆☆☆☆☆☆☆☆☆☆☆☆ %d\n", " type ☆☆☆☆☆☆☆☆☆☆☆☆☆ %d\n") VT_RST,
+ this->type);
PRINTF(VT_FGCOL(YELLOW) " れえるでぇたぁ☆☆☆☆☆☆☆☆ %d\n" VT_RST, this->path);
PRINTF(VT_FGCOL(MAGENTA) " anime_frame_speed ☆☆☆☆☆☆ %f\n" VT_RST, this->animSpeed);
- // "interpolation frame"
- PRINTF(VT_FGCOL(MAGENTA) " 補間フレーム☆☆☆☆☆☆☆☆☆ %f\n" VT_RST, this->animMorphFrames);
- // "targeted movement speed value between points"
- PRINTF(VT_FGCOL(MAGENTA) " point間の移動スピード目標値 ☆ %f\n" VT_RST, this->moveSpeedTarget);
- // "maximum movement speed value between points"
- PRINTF(VT_FGCOL(MAGENTA) " point間の移動スピード最大 ☆☆ %f\n" VT_RST, this->moveSpeedMax);
- // "(body) targeted turning angle speed value"
- PRINTF(VT_FGCOL(MAGENTA) " (体)反転アングルスピード目標値 %f\n" VT_RST, this->bodyTurnSpeedTarget);
- // "(body) maximum turning angle speed"
- PRINTF(VT_FGCOL(MAGENTA) " (体)反転アングルスピード最大☆ %f\n" VT_RST, this->bodyTurnSpeedMax);
- // "(head) targeted turning angle speed value"
- PRINTF(VT_FGCOL(MAGENTA) " (頭)反転アングルスピード加算値 %f\n" VT_RST, this->headTurnSpeedScale);
- // "(head) maximum turning angle speed"
- PRINTF(VT_FGCOL(MAGENTA) " (頭)反転アングルスピード最大☆ %f\n" VT_RST, this->headTurnSpeedMax);
- PRINTF(VT_FGCOL(GREEN) " 今時間 %d\n" VT_RST, ((void)0, gSaveContext.save.dayTime)); // "current time"
- PRINTF(VT_FGCOL(YELLOW) " チェック時間 %d\n" VT_RST, CLOCK_TIME(17, 30) - 1); // "check time"
+ PRINTF(VT_FGCOL(MAGENTA) T(" 補間フレーム☆☆☆☆☆☆☆☆☆ %f\n", " interpolation frame ☆☆☆☆☆☆☆☆☆ %f\n") VT_RST,
+ this->animMorphFrames);
+ PRINTF(VT_FGCOL(MAGENTA)
+ T(" point間の移動スピード目標値 ☆ %f\n", " target speed of movement between points ☆ %f\n") VT_RST,
+ this->moveSpeedTarget);
+ PRINTF(VT_FGCOL(MAGENTA)
+ T(" point間の移動スピード最大 ☆☆ %f\n", " maximum speed of movement between points ☆☆ %f\n") VT_RST,
+ this->moveSpeedMax);
+ PRINTF(VT_FGCOL(MAGENTA)
+ T(" (体)反転アングルスピード目標値 %f\n", " (body) reversing angle speed target value %f\n") VT_RST,
+ this->bodyTurnSpeedTarget);
+ PRINTF(VT_FGCOL(MAGENTA)
+ T(" (体)反転アングルスピード最大☆ %f\n", " (body) maximum turning angle speed ☆ %f\n") VT_RST,
+ this->bodyTurnSpeedMax);
+ PRINTF(VT_FGCOL(MAGENTA)
+ T(" (頭)反転アングルスピード加算値 %f\n", " (head) reverse angle speed additional value %f\n") VT_RST,
+ this->headTurnSpeedScale);
+ PRINTF(VT_FGCOL(MAGENTA)
+ T(" (頭)反転アングルスピード最大☆ %f\n", " (head) maximum turning angle speed ☆ %f\n") VT_RST,
+ this->headTurnSpeedMax);
+ PRINTF(VT_FGCOL(GREEN) T(" 今時間 %d\n", " Current time %d\n") VT_RST, ((void)0, gSaveContext.save.dayTime));
+ PRINTF(VT_FGCOL(YELLOW) T(" チェック時間 %d\n", " Check time %d\n") VT_RST, CLOCK_TIME(17, 30) - 1);
PRINTF("\n\n");
if (this->path == 3) {
@@ -389,7 +395,7 @@ void EnHeishi1_WaitNight(EnHeishi1* this, PlayState* play) {
if (this->actor.xzDistToPlayer < 100.0f) {
Message_StartTextbox(play, 0x702D, &this->actor);
Sfx_PlaySfxCentered(NA_SE_SY_FOUND);
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 発見! ☆☆☆☆☆ \n" VT_RST); // "Discovered!"
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 発見! ☆☆☆☆☆ \n", "☆☆☆☆☆ Discovered! ☆☆☆☆☆ \n") VT_RST);
Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_1);
this->actionFunc = EnHeishi1_SetupKick;
}
@@ -472,8 +478,8 @@ void EnHeishi1_Update(Actor* thisx, PlayState* play) {
// this 60 unit height check is so the player doesn't get caught when on the upper path
if (fabsf(player->actor.world.pos.y - this->actor.world.pos.y) < 60.0f) {
Sfx_PlaySfxCentered(NA_SE_SY_FOUND);
- // "Discovered!"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 発見! ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 発見! ☆☆☆☆☆ \n", "☆☆☆☆☆ Discovered! ☆☆☆☆☆ \n")
+ VT_RST);
Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_1);
sPlayerIsCaught = true;
this->actionFunc = EnHeishi1_SetupMoveToLink;
diff --git a/src/overlays/actors/ovl_En_Heishi2/z_en_heishi2.c b/src/overlays/actors/ovl_En_Heishi2/z_en_heishi2.c
index c071d40c5..f9d5999c8 100644
--- a/src/overlays/actors/ovl_En_Heishi2/z_en_heishi2.c
+++ b/src/overlays/actors/ovl_En_Heishi2/z_en_heishi2.c
@@ -16,6 +16,7 @@
#include "sfx.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64face_reaction.h"
#include "z64play.h"
@@ -153,8 +154,8 @@ void EnHeishi2_Init(Actor* thisx, PlayState* play) {
break;
case 6:
PRINTF("\n\n");
- // "Peep hole soldier!"
- PRINTF(VT_FGCOL(GREEN) " ☆☆☆☆☆ 覗き穴奥兵士ふぃ〜 ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T(" ☆☆☆☆☆ 覗き穴奥兵士ふぃ〜 ☆☆☆☆☆ \n", " ☆☆☆☆☆ Peep hole soldier ☆☆☆☆☆ \n")
+ VT_RST);
Collider_DestroyCylinder(play, collider);
this->actor.flags &= ~(ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY);
this->actionFunc = EnHeishi_DoNothing2;
@@ -163,12 +164,14 @@ void EnHeishi2_Init(Actor* thisx, PlayState* play) {
this->unk_2F0 = PARAMS_GET_U(this->actor.params, 8, 8);
PRINTF("\n\n");
- // "Soldier Set 2 Completed!"
- PRINTF(VT_FGCOL(GREEN) " ☆☆☆☆☆ 兵士2セット完了! ☆☆☆☆☆ %d\n" VT_RST, this->actor.params);
- // "Identification Completed!"
- PRINTF(VT_FGCOL(YELLOW) " ☆☆☆☆☆ 識別完了! ☆☆☆☆☆ %d\n" VT_RST, this->type);
- // "Message completed!"
- PRINTF(VT_FGCOL(MAGENTA) " ☆☆☆☆☆ メッセージ完了! ☆☆☆☆☆ %x\n\n" VT_RST,
+ PRINTF(VT_FGCOL(GREEN) T(" ☆☆☆☆☆ 兵士2セット完了! ☆☆☆☆☆ %d\n", " ☆☆☆☆☆ Soldier Set 2 Completed! ☆☆☆☆☆ %d\n")
+ VT_RST,
+ this->actor.params);
+ PRINTF(VT_FGCOL(YELLOW) T(" ☆☆☆☆☆ 識別完了! ☆☆☆☆☆ %d\n", " ☆☆☆☆☆ Identification Completed! ☆☆☆☆☆ %d\n")
+ VT_RST,
+ this->type);
+ PRINTF(VT_FGCOL(MAGENTA)
+ T(" ☆☆☆☆☆ メッセージ完了! ☆☆☆☆☆ %x\n\n", " ☆☆☆☆☆ Message completed! ☆☆☆☆☆ %x\n\n") VT_RST,
PARAMS_GET_U(this->actor.params, 8, 4));
}
}
@@ -203,41 +206,39 @@ void func_80A53278(EnHeishi2* this, PlayState* play) {
this->unk_300 = TEXT_STATE_DONE;
this->actionFunc = func_80A5475C;
} else if (GET_EVENTCHKINF(EVENTCHKINF_09) && GET_EVENTCHKINF(EVENTCHKINF_25) && GET_EVENTCHKINF(EVENTCHKINF_37)) {
- // "Get all spiritual stones!"
- PRINTF(VT_FGCOL(GREEN) " ☆☆☆☆☆ 全部の精霊石GET! ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T(" ☆☆☆☆☆ 全部の精霊石GET! ☆☆☆☆☆ \n", " ☆☆☆☆☆ All the spirit stones GET! ☆☆☆☆☆ \n")
+ VT_RST);
this->unk_300 = TEXT_STATE_DONE;
this->actor.textId = 0x7006;
this->actionFunc = func_80A5475C;
} else if (!IS_DAY) {
- // "Sleep early for children!"
- PRINTF(VT_FGCOL(YELLOW) " ☆☆☆☆☆ 子供ははやくネロ! ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(YELLOW) T(" ☆☆☆☆☆ 子供ははやくネロ! ☆☆☆☆☆ \n", " ☆☆☆☆☆ Sleep early for children! ☆☆☆☆☆ \n")
+ VT_RST);
this->unk_300 = TEXT_STATE_DONE;
this->actor.textId = 0x7002;
this->actionFunc = func_80A5475C;
} else if (this->unk_30C != 0) {
- // "Anything passes"
- PRINTF(VT_FGCOL(BLUE) " ☆☆☆☆☆ なんでも通るよ ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(BLUE) T(" ☆☆☆☆☆ なんでも通るよ ☆☆☆☆☆ \n", " ☆☆☆☆☆ Anything passes ☆☆☆☆☆ \n") VT_RST);
this->unk_300 = TEXT_STATE_DONE;
this->actor.textId = 0x7099;
this->actionFunc = func_80A5475C;
} else if (GET_EVENTCHKINF(EVENTCHKINF_RECEIVED_WEIRD_EGG)) {
if (this->unk_30E == 0) {
- // "Start under the first sleeve!"
- PRINTF(VT_FGCOL(MAGENTA) " ☆☆☆☆☆ 1回目袖の下開始! ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(MAGENTA)
+ T(" ☆☆☆☆☆ 1回目袖の下開始! ☆☆☆☆☆ \n", " ☆☆☆☆☆ Start under the first sleeve! ☆☆☆☆☆ \n") VT_RST);
this->actor.textId = 0x7071;
this->unk_30E = 1;
} else {
- // "Start under the second sleeve!"
- PRINTF(VT_FGCOL(MAGENTA) " ☆☆☆☆☆ 2回目袖の下開始! ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(MAGENTA) T(" ☆☆☆☆☆ 2回目袖の下開始! ☆☆☆☆☆ \n",
+ " ☆☆☆☆☆ Start under the second sleeve! ☆☆☆☆☆ \n") VT_RST);
this->actor.textId = 0x7072;
}
this->unk_300 = TEXT_STATE_CHOICE;
this->actionFunc = func_80A5475C;
} else {
- // "That's okay"
- PRINTF(VT_FGCOL(CYAN) " ☆☆☆☆☆ それはとおらんよぉ ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(CYAN) T(" ☆☆☆☆☆ それはとおらんよぉ ☆☆☆☆☆ \n", " ☆☆☆☆☆ That won't work ☆☆☆☆☆ \n") VT_RST);
this->unk_300 = TEXT_STATE_DONE;
this->actor.textId = 0x7029;
this->actionFunc = func_80A5475C;
@@ -310,8 +311,9 @@ void func_80A53638(EnHeishi2* this, PlayState* play) {
break;
}
}
- // "I've come!"
- PRINTF(VT_FGCOL(MAGENTA) "☆☆☆ きたきたきたぁ! ☆☆☆ %x\n" VT_RST, actor->dyna.actor.next);
+ PRINTF(VT_FGCOL(MAGENTA) T("☆☆☆ きたきたきたぁ! ☆☆☆ %x\n", "☆☆☆ It's here, it's here, it's here! ☆☆☆ %x\n")
+ VT_RST,
+ actor->dyna.actor.next);
this->actionFunc = func_80A5372C;
}
}
@@ -395,8 +397,8 @@ void func_80A5399C(EnHeishi2* this, PlayState* play) {
}
this->actionFunc = func_80A5475C;
} else {
- // "I don't know"
- PRINTF(VT_FGCOL(MAGENTA) " ☆☆☆☆☆ とおしゃしねぇちゅーの ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(MAGENTA) T(" ☆☆☆☆☆ とおしゃしねぇちゅーの ☆☆☆☆☆ \n", " ☆☆☆☆☆ There is no way out ☆☆☆☆☆ \n")
+ VT_RST);
this->actionFunc = func_80A53AD4;
}
}
@@ -477,8 +479,9 @@ void func_80A53D0C(EnHeishi2* this, PlayState* play) {
break;
}
}
- // "I've come!"
- PRINTF(VT_FGCOL(MAGENTA) "☆☆☆ きたきたきたぁ! ☆☆☆ %x\n" VT_RST, gate->dyna.actor.next);
+ PRINTF(VT_FGCOL(MAGENTA) T("☆☆☆ きたきたきたぁ! ☆☆☆ %x\n", "☆☆☆ It's here, it's here, it's here! ☆☆☆ %x\n")
+ VT_RST,
+ gate->dyna.actor.next);
this->actionFunc = func_80A53DF8;
}
}
@@ -679,8 +682,7 @@ void func_80A5455C(EnHeishi2* this, PlayState* play) {
bomb->actor.velocity.y = Rand_CenteredFloat(5.0f) + 10.0f;
}
- // "This is down!"
- PRINTF(VT_FGCOL(YELLOW) " ☆☆☆☆☆ これでダウンだ! ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(YELLOW) T(" ☆☆☆☆☆ これでダウンだ! ☆☆☆☆☆ \n", " ☆☆☆☆☆ This is down! ☆☆☆☆☆ \n") VT_RST);
this->actionFunc = func_80A546DC;
}
}
diff --git a/src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.c b/src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.c
index 354c3f305..8e03fe3e6 100644
--- a/src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.c
+++ b/src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.c
@@ -11,6 +11,7 @@
#include "printf.h"
#include "sfx.h"
#include "terminal.h"
+#include "translation.h"
#include "versions.h"
#include "z_lib.h"
#include "z64play.h"
@@ -87,8 +88,8 @@ void EnHeishi3_Init(Actor* thisx, PlayState* play) {
this->actor.attentionRangeType = ATTENTION_RANGE_6;
Collider_InitCylinder(play, &this->collider);
Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit);
- // "Castle Gate Soldier - Power Up"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 城門兵パワーアップ ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 城門兵パワーアップ ☆☆☆☆☆ \n", "☆☆☆☆☆ Castle gate soldier power-up ☆☆☆☆☆ \n")
+ VT_RST);
this->actor.gravity = -3.0f;
this->actor.focus.pos = this->actor.world.pos;
@@ -143,7 +144,7 @@ void EnHeishi3_StandSentinelInGrounds(EnHeishi3* this, PlayState* play) {
sPlayerCaught = 1;
Message_StartTextbox(play, 0x702D, &this->actor);
Sfx_PlaySfxCentered(NA_SE_SY_FOUND);
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 発見! ☆☆☆☆☆ \n" VT_RST); // "Discovered!"
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 発見! ☆☆☆☆☆ \n", "☆☆☆☆☆ Discovered! ☆☆☆☆☆ \n") VT_RST);
Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_1);
#if OOT_PAL_N64
this->actor.flags |= ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_UPDATE_CULLING_DISABLED;
@@ -174,7 +175,7 @@ void EnHeishi3_StandSentinelInCastle(EnHeishi3* this, PlayState* play) {
sPlayerCaught = 1;
Message_StartTextbox(play, 0x702D, &this->actor);
Sfx_PlaySfxCentered(NA_SE_SY_FOUND);
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 発見! ☆☆☆☆☆ \n" VT_RST); // "Discovered!"
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 発見! ☆☆☆☆☆ \n", "☆☆☆☆☆ Discovered! ☆☆☆☆☆ \n") VT_RST);
Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_1);
#if OOT_PAL_N64
this->actor.flags |= ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_UPDATE_CULLING_DISABLED;
diff --git a/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c b/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c
index eefef2079..dc23954d5 100644
--- a/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c
+++ b/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c
@@ -15,6 +15,7 @@
#include "seqcmd.h"
#include "sequence.h"
#include "sys_math3d.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64play.h"
#include "z64player.h"
@@ -319,8 +320,7 @@ void EnHorseGameCheck_FinishMalonRace(EnHorseGameCheckMalonRace* this, PlayState
play->transitionType = TRANS_TYPE_CIRCLE(TCA_STARBURST, TCC_WHITE, TCS_FAST);
play->transitionTrigger = TRANS_TRIGGER_START;
} else {
- // "not supported"
- PRINTF("En_HGC_Spot20_Ta_end():対応せず\n");
+ PRINTF(T("En_HGC_Spot20_Ta_end():対応せず\n", "En_HGC_Spot20_Ta_end(): not supported\n"));
gSaveContext.save.cutsceneIndex = 0;
play->nextEntranceIndex = ENTR_LON_LON_RANCH_0;
play->transitionType = TRANS_TYPE_CIRCLE(TCA_STARBURST, TCC_WHITE, TCS_FAST);
diff --git a/src/overlays/actors/ovl_En_Hs/z_en_hs.c b/src/overlays/actors/ovl_En_Hs/z_en_hs.c
index 935fdedd9..76281c549 100644
--- a/src/overlays/actors/ovl_En_Hs/z_en_hs.c
+++ b/src/overlays/actors/ovl_En_Hs/z_en_hs.c
@@ -12,6 +12,7 @@
#include "sfx.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64play.h"
#include "z64player.h"
@@ -85,17 +86,14 @@ void EnHs_Init(Actor* thisx, PlayState* play) {
}
if (this->actor.params == 1) {
- // "chicken shop (adult era)"
- PRINTF(VT_FGCOL(CYAN) " ヒヨコの店(大人の時) \n" VT_RST);
+ PRINTF(VT_FGCOL(CYAN) T(" ヒヨコの店(大人の時) \n", " chicken shop (adult era) \n") VT_RST);
func_80A6E3A0(this, func_80A6E9AC);
if (GET_ITEMGETINF(ITEMGETINF_30)) {
- // "chicken shop closed"
- PRINTF(VT_FGCOL(CYAN) " ヒヨコ屋閉店 \n" VT_RST);
+ PRINTF(VT_FGCOL(CYAN) T(" ヒヨコ屋閉店 \n", " chicken shop closed \n") VT_RST);
Actor_Kill(&this->actor);
}
} else {
- // "chicken shop (child era)"
- PRINTF(VT_FGCOL(CYAN) " ヒヨコの店(子人の時) \n" VT_RST);
+ PRINTF(VT_FGCOL(CYAN) T(" ヒヨコの店(子人の時) \n", " chicken shop (child era) \n") VT_RST);
func_80A6E3A0(this, func_80A6E9AC);
}
diff --git a/src/overlays/actors/ovl_En_Hy/z_en_hy.c b/src/overlays/actors/ovl_En_Hy/z_en_hy.c
index 655ebd478..8680d13aa 100644
--- a/src/overlays/actors/ovl_En_Hy/z_en_hy.c
+++ b/src/overlays/actors/ovl_En_Hy/z_en_hy.c
@@ -60,7 +60,7 @@ ActorProfile En_Hy_Profile = {
/**/ EnHy_Draw,
};
-static ColliderCylinderInit sColCylInit = {
+static ColliderCylinderInit sColliderCylinderInit = {
{
COL_MATERIAL_NONE,
AT_NONE,
@@ -1169,7 +1169,7 @@ void EnHy_WaitForObjects(EnHy* this, PlayState* play) {
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 0.0f);
gSegments[6] = OS_K0_TO_PHYSICAL(play->objectCtx.slots[this->objectSlotOsAnime].segment);
Collider_InitCylinder(play, &this->collider);
- Collider_SetCylinder(play, &this->collider, &this->actor, &sColCylInit);
+ Collider_SetCylinder(play, &this->collider, &this->actor, &sColliderCylinderInit);
EnHy_InitCollider(this);
CollisionCheck_SetInfo2(&this->actor.colChkInfo, NULL, &sColChkInfoInit);
Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, sModelInfo[ENHY_GET_TYPE(&this->actor)].animInfoIndex);
diff --git a/src/overlays/actors/ovl_En_Ice_Hono/z_en_ice_hono.c b/src/overlays/actors/ovl_En_Ice_Hono/z_en_ice_hono.c
index 8db6b38d0..b165f3464 100644
--- a/src/overlays/actors/ovl_En_Ice_Hono/z_en_ice_hono.c
+++ b/src/overlays/actors/ovl_En_Ice_Hono/z_en_ice_hono.c
@@ -13,6 +13,7 @@
#include "printf.h"
#include "sfx.h"
#include "sys_matrix.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64item.h"
#include "z64light.h"
@@ -186,7 +187,7 @@ void EnIceHono_Init(Actor* thisx, PlayState* play) {
this->lightNode = LightContext_InsertLight(play, &play->lightCtx, &this->lightInfo);
this->unk_154 = Rand_ZeroOne() * (0x1FFFF / 2.0f);
this->unk_156 = Rand_ZeroOne() * (0x1FFFF / 2.0f);
- PRINTF("(ice 炎)(arg_data 0x%04x)\n", this->actor.params); // "(ice flame)"
+ PRINTF(T("(ice 炎)(arg_data 0x%04x)\n", "(ice flame)(arg_data 0x%04x)\n"), this->actor.params);
}
}
@@ -373,7 +374,7 @@ void EnIceHono_Update(Actor* thisx, PlayState* play) {
#if DEBUG_FEATURES
if ((intensity > 0.7f) || (intensity < 0.2f)) {
- PRINTF("ありえない値(ratio = %f)\n", intensity); // "impossible value(ratio = %f)"
+ PRINTF(T("ありえない値(ratio = %f)\n", "Impossible value (ratio = %f)\n"), intensity);
}
#endif
diff --git a/src/overlays/actors/ovl_En_Ik/z_en_ik.c b/src/overlays/actors/ovl_En_Ik/z_en_ik.c
index 9b49e35f7..582455f17 100644
--- a/src/overlays/actors/ovl_En_Ik/z_en_ik.c
+++ b/src/overlays/actors/ovl_En_Ik/z_en_ik.c
@@ -228,7 +228,7 @@ void EnIk_InitImpl(Actor* thisx, PlayState* play) {
Collider_InitCylinder(play, &this->bodyCollider);
Collider_SetCylinder(play, &this->bodyCollider, thisx, &sCylinderInit);
Collider_InitTris(play, &this->shieldCollider);
- Collider_SetTris(play, &this->shieldCollider, thisx, &sTrisInit, this->shieldColliderItems);
+ Collider_SetTris(play, &this->shieldCollider, thisx, &sTrisInit, this->shieldColliderElements);
Collider_InitQuad(play, &this->axeCollider);
Collider_SetQuad(play, &this->axeCollider, thisx, &sQuadInit);
@@ -1380,7 +1380,8 @@ void EnIk_HandleCsCues(EnIk* this, PlayState* play) {
break;
default:
- PRINTF("En_Ik_inConfrontion_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
+ PRINTF(T("En_Ik_inConfrontion_Check_DemoMode:そんな動作は無い!!!!!!!!\n",
+ "En_Ik_inConfrontion_Check_DemoMode: There is no such action!!!!!!!!\n"));
}
this->cueId = nextCueId;
diff --git a/src/overlays/actors/ovl_En_Ik/z_en_ik.h b/src/overlays/actors/ovl_En_Ik/z_en_ik.h
index a0ecd34d0..9b4c16d7b 100644
--- a/src/overlays/actors/ovl_En_Ik/z_en_ik.h
+++ b/src/overlays/actors/ovl_En_Ik/z_en_ik.h
@@ -109,7 +109,7 @@ typedef struct EnIk {
/* 0x0320 */ ColliderCylinder bodyCollider;
/* 0x036C */ ColliderQuad axeCollider;
/* 0x03EC */ ColliderTris shieldCollider;
- /* 0x040C */ ColliderTrisElement shieldColliderItems[2];
+ /* 0x040C */ ColliderTrisElement shieldColliderElements[2];
/* 0x04C4 */ s32 blureIdx;
/* 0x04C8 */ s32 csAction;
/* 0x04CC */ s32 csDrawMode;
diff --git a/src/overlays/actors/ovl_En_Insect/z_en_insect.c b/src/overlays/actors/ovl_En_Insect/z_en_insect.c
index bc3640c4a..8695ba0a5 100644
--- a/src/overlays/actors/ovl_En_Insect/z_en_insect.c
+++ b/src/overlays/actors/ovl_En_Insect/z_en_insect.c
@@ -15,6 +15,7 @@
#include "sfx.h"
#include "sys_math3d.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64effect.h"
#include "z64play.h"
@@ -83,7 +84,7 @@ static ColliderJntSphElementInit sColliderElementsInit[1] = {
},
};
-static ColliderJntSphInit sColliderInit = {
+static ColliderJntSphInit sColliderJntSphInit = {
{
COL_MATERIAL_NONE,
AT_NONE,
@@ -206,7 +207,7 @@ void EnInsect_Init(Actor* thisx, PlayState* play2) {
SkelAnime_Init(play, &this->skelAnime, &gBugSkel, &gBugCrawlAnim, this->jointTable, this->morphTable, 24);
Collider_InitJntSph(play, &this->collider);
- Collider_SetJntSph(play, &this->collider, &this->actor, &sColliderInit, this->colliderElements);
+ Collider_SetJntSph(play, &this->collider, &this->actor, &sColliderJntSphInit, this->colliderElements);
this->actor.colChkInfo.mass = 30;
@@ -593,8 +594,8 @@ void EnInsect_Dropped(EnInsect* this, PlayState* play) {
} else {
if (this->insectFlags & INSECT_FLAG_FOUND_SOIL) {
PRINTF_COLOR_WARNING();
- // "warning: target Actor is NULL"
- PRINTF("warning:目標 Actor が NULL (%s %d)\n", "../z_en_mushi.c", 1046);
+ PRINTF(T("warning:目標 Actor が NULL (%s %d)\n", "warning: target Actor is NULL (%s %d)\n"),
+ "../z_en_mushi.c", 1046);
PRINTF_RST();
}
distanceSq = 40.0f;
@@ -721,8 +722,8 @@ void EnInsect_Dropped(EnInsect* this, PlayState* play) {
(this->insectFlags & INSECT_FLAG_0) && this->lifeTimer <= 0 && this->actionTimer <= 0 &&
this->actor.floorHeight < BGCHECK_Y_MIN + 10.0f) {
PRINTF_COLOR_WARNING();
- // "BG missing? To do Actor_delete"
- PRINTF("BG 抜け? Actor_delete します(%s %d)\n", "../z_en_mushi.c", 1197);
+ PRINTF(T("BG 抜け? Actor_delete します(%s %d)\n", "BG missing? To do Actor_delete (%s %d)\n"),
+ "../z_en_mushi.c", 1197);
PRINTF_RST();
Actor_Kill(&this->actor);
}
diff --git a/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c b/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c
index 5bb135cf6..4a31b37c6 100644
--- a/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c
+++ b/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c
@@ -20,6 +20,7 @@
#include "sys_matrix.h"
#include "quake.h"
#include "terminal.h"
+#include "translation.h"
#include "z_en_item00.h"
#include "z_lib.h"
#include "z64effect.h"
@@ -143,8 +144,7 @@ s32 EnIshi_SnapToFloor(EnIshi* this, PlayState* play, f32 arg2) {
return true;
} else {
PRINTF_COLOR_WARNING();
- // "Failure attaching to ground"
- PRINTF("地面に付着失敗(%s %d)\n", "../z_en_ishi.c", 388);
+ PRINTF(T("地面に付着失敗(%s %d)\n", "Failed to attach to ground (%s %d)\n"), "../z_en_ishi.c", 388);
PRINTF_RST();
return false;
}
diff --git a/src/overlays/actors/ovl_En_Jsjutan/z_en_jsjutan.c b/src/overlays/actors/ovl_En_Jsjutan/z_en_jsjutan.c
index 13ebc48f3..fce6c4ef0 100644
--- a/src/overlays/actors/ovl_En_Jsjutan/z_en_jsjutan.c
+++ b/src/overlays/actors/ovl_En_Jsjutan/z_en_jsjutan.c
@@ -38,6 +38,8 @@ ActorProfile En_Jsjutan_Profile = {
};
// Shadow texture. 32x64 I8.
+#define sShadowTex_WIDTH 32
+#define sShadowTex_HEIGHT 64
static u8 sShadowTex[0x800];
static Vec3s D_80A8EE10[0x90];
diff --git a/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c b/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c
index d2d807cd2..b94806e58 100644
--- a/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c
+++ b/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c
@@ -15,6 +15,7 @@
#include "regs.h"
#include "sfx.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64ocarina.h"
#include "z64play.h"
@@ -251,8 +252,7 @@ void func_80A8F8D0(EnKakasi* this, PlayState* play) {
Player* player = GET_PLAYER(play);
if (play->msgCtx.ocarinaMode == OCARINA_MODE_04 && play->msgCtx.msgMode == MSGMODE_NONE) {
- // "end?"
- PRINTF(VT_FGCOL(BLUE) "☆☆☆☆☆ 終り? ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(BLUE) T("☆☆☆☆☆ 終り? ☆☆☆☆☆ \n", "☆☆☆☆☆ end? ☆☆☆☆☆ \n") VT_RST);
if (this->unk_19A != 0) {
Message_CloseTextbox(play);
@@ -355,8 +355,8 @@ void EnKakasi_Draw(Actor* thisx, PlayState* play) {
if (BREG(3) != 0) {
PRINTF("\n\n");
- // "flag!"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ フラグ! ☆☆☆☆☆ %d\n" VT_RST, gSaveContext.save.info.scarecrowLongSongSet);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ フラグ! ☆☆☆☆☆ %d\n", "☆☆☆☆☆ flag! ☆☆☆☆☆ %d\n") VT_RST,
+ gSaveContext.save.info.scarecrowLongSongSet);
}
Gfx_SetupDL_25Opa(play->state.gfxCtx);
SkelAnime_DrawFlexOpa(play, this->skelanime.skeleton, this->skelanime.jointTable, this->skelanime.dListCount, NULL,
diff --git a/src/overlays/actors/ovl_En_Kakasi2/z_en_kakasi2.c b/src/overlays/actors/ovl_En_Kakasi2/z_en_kakasi2.c
index 997aa2b78..b3a536790 100644
--- a/src/overlays/actors/ovl_En_Kakasi2/z_en_kakasi2.c
+++ b/src/overlays/actors/ovl_En_Kakasi2/z_en_kakasi2.c
@@ -12,6 +12,7 @@
#include "regs.h"
#include "sfx.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64debug_display.h"
#include "z64ocarina.h"
@@ -75,8 +76,7 @@ void EnKakasi2_Init(Actor* thisx, PlayState* play) {
f32 spawnRangeXZ;
PRINTF("\n\n");
- // "Visit Umeda"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 梅田参号見参! ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 梅田参号見参! ☆☆☆☆☆ \n", "☆☆☆☆☆ Umeda Sangyo visit! ☆☆☆☆☆ \n") VT_RST);
this->switchFlag = PARAMS_GET_U(this->actor.params, 0, 6);
spawnRangeY = PARAMS_GET_U(this->actor.params, 6, 8);
@@ -88,16 +88,16 @@ void EnKakasi2_Init(Actor* thisx, PlayState* play) {
this->maxSpawnDistance.x = (spawnRangeY * 40.0f) + 40.0f;
this->maxSpawnDistance.y = (spawnRangeXZ * 40.0f) + 40.0f;
- // "Former? (Argument 0)"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ 元?(引数0) ☆☆☆☆ %f\n" VT_RST, spawnRangeY);
- // "Former? (Z angle)"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ 元?(Zアングル) ☆☆ %f\n" VT_RST, spawnRangeXZ);
- // "Correction coordinates X"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ 補正座標X ☆☆☆☆☆ %f\n" VT_RST, this->maxSpawnDistance.x);
- // "Correction coordinates Y"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ 補正座標Y ☆☆☆☆☆ %f\n" VT_RST, this->maxSpawnDistance.y);
- // "Correction coordinates Z"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ 補正座標Z ☆☆☆☆☆ %f\n" VT_RST, this->maxSpawnDistance.z);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ 元?(引数0) ☆☆☆☆ %f\n", "☆☆☆☆☆ Former? (Argument 0) ☆☆☆☆ %f\n") VT_RST,
+ spawnRangeY);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ 元?(Zアングル) ☆☆ %f\n", "☆☆☆☆☆ Former? (Z angle) ☆☆ %f\n") VT_RST,
+ spawnRangeXZ);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ 補正座標X ☆☆☆☆☆ %f\n", "☆☆☆☆☆ Correction coordinates X ☆☆☆☆☆ %f\n") VT_RST,
+ this->maxSpawnDistance.x);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ 補正座標Y ☆☆☆☆☆ %f\n", "☆☆☆☆☆ Correction coordinates Y ☆☆☆☆☆ %f\n") VT_RST,
+ this->maxSpawnDistance.y);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ 補正座標Z ☆☆☆☆☆ %f\n", "☆☆☆☆☆ Correction coordinates Z ☆☆☆☆☆ %f\n") VT_RST,
+ this->maxSpawnDistance.z);
PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ SAVE ☆☆☆☆☆ %d\n" VT_RST, this->switchFlag);
PRINTF("\n\n");
diff --git a/src/overlays/actors/ovl_En_Kakasi3/z_en_kakasi3.c b/src/overlays/actors/ovl_En_Kakasi3/z_en_kakasi3.c
index 8f4d21e36..254d4d8f4 100644
--- a/src/overlays/actors/ovl_En_Kakasi3/z_en_kakasi3.c
+++ b/src/overlays/actors/ovl_En_Kakasi3/z_en_kakasi3.c
@@ -15,6 +15,7 @@
#include "regs.h"
#include "sfx.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64ocarina.h"
#include "z64play.h"
@@ -357,8 +358,8 @@ void func_80A918E4(EnKakasi3* this, PlayState* play) {
Player* player = GET_PLAYER(play);
if (BREG(3) != 0) {
- // "No way!"
- PRINTF(VT_FGCOL(MAGENTA) "☆☆☆☆☆ まさか! ☆☆☆☆☆ %d\n" VT_RST, play->msgCtx.ocarinaMode);
+ PRINTF(VT_FGCOL(MAGENTA) T("☆☆☆☆☆ まさか! ☆☆☆☆☆ %d\n", "☆☆☆☆☆ No way! ☆☆☆☆☆ %d\n") VT_RST,
+ play->msgCtx.ocarinaMode);
}
if ((play->msgCtx.ocarinaMode == OCARINA_MODE_04 ||
(play->msgCtx.ocarinaMode >= OCARINA_MODE_05 && play->msgCtx.ocarinaMode < OCARINA_MODE_0B)) &&
@@ -377,8 +378,9 @@ void func_80A918E4(EnKakasi3* this, PlayState* play) {
play->msgCtx.ocarinaMode = OCARINA_MODE_04;
if (BREG(3) != 0) {
PRINTF("\n\n");
- // "With this, other guys are OK! That's it!"
- PRINTF(VT_FGCOL(CYAN) "☆☆☆☆☆ これで、他の奴もOK!だ! ☆☆☆☆☆ %d\n" VT_RST, play->msgCtx.ocarinaMode);
+ PRINTF(VT_FGCOL(CYAN) T("☆☆☆☆☆ これで、他の奴もOK!だ! ☆☆☆☆☆ %d\n",
+ "☆☆☆☆☆ With this, other guys are OK! That's it! ☆☆☆☆☆ %d\n") VT_RST,
+ play->msgCtx.ocarinaMode);
}
this->unk_195 = true;
Message_StartTextbox(play, 0x40A7, NULL);
@@ -425,8 +427,8 @@ void EnKakasi3_Update(Actor* thisx, PlayState* play) {
if (BREG(2) != 0) {
PRINTF("\n\n");
- // "flag!"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ フラグ! ☆☆☆☆☆ %d\n" VT_RST, gSaveContext.save.info.scarecrowSpawnSongSet);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ フラグ! ☆☆☆☆☆ %d\n", "☆☆☆☆☆ flag! ☆☆☆☆☆ %d\n") VT_RST,
+ gSaveContext.save.info.scarecrowSpawnSongSet);
}
this->unk_198++;
diff --git a/src/overlays/actors/ovl_En_Ko/z_en_ko.c b/src/overlays/actors/ovl_En_Ko/z_en_ko.c
index 6c416021d..2fa180af6 100644
--- a/src/overlays/actors/ovl_En_Ko/z_en_ko.c
+++ b/src/overlays/actors/ovl_En_Ko/z_en_ko.c
@@ -13,6 +13,7 @@
#include "sfx.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "versions.h"
#include "z_lib.h"
#include "z64face_reaction.h"
@@ -1196,8 +1197,7 @@ void func_80A99048(EnKo* this, PlayState* play) {
Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit);
CollisionCheck_SetInfo2(&this->actor.colChkInfo, NULL, &sColChkInfoInit);
if (ENKO_TYPE == ENKO_TYPE_CHILD_7) {
- // "Angle Z"
- PRINTF(VT_BGCOL(BLUE) " アングルZ->(%d)\n" VT_RST, this->actor.shape.rot.z);
+ PRINTF(VT_BGCOL(BLUE) T(" アングルZ->(%d)\n", " Angle Z->(%d)\n") VT_RST, this->actor.shape.rot.z);
if (LINK_IS_ADULT && !CHECK_QUEST_ITEM(QUEST_MEDALLION_FOREST)) {
if (this->actor.shape.rot.z != 1) {
Actor_Kill(&this->actor);
diff --git a/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c b/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c
index aa955365d..771d9377d 100644
--- a/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c
+++ b/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c
@@ -15,6 +15,7 @@
#include "rand.h"
#include "sfx.h"
#include "terminal.h"
+#include "translation.h"
#include "z_en_item00.h"
#include "z_lib.h"
#include "z64effect.h"
@@ -128,8 +129,7 @@ s32 EnKusa_SnapToFloor(EnKusa* this, PlayState* play, f32 yOffset) {
return true;
} else {
PRINTF_COLOR_WARNING();
- // "Failure attaching to ground"
- PRINTF("地面に付着失敗(%s %d)\n", "../z_en_kusa.c", 323);
+ PRINTF(T("地面に付着失敗(%s %d)\n", "Failed to attach to ground (%s %d)\n"), "../z_en_kusa.c", 323);
PRINTF_RST();
return false;
}
@@ -268,8 +268,8 @@ void EnKusa_Init(Actor* thisx, PlayState* play) {
this->requiredObjectSlot = Object_GetSlot(&play->objectCtx, sObjectIds[PARAMS_GET_U(thisx->params, 0, 2)]);
if (this->requiredObjectSlot < 0) {
- // "Bank danger!"
- PRINTF("Error : バンク危険! (arg_data 0x%04x)(%s %d)\n", thisx->params, "../z_en_kusa.c", 561);
+ PRINTF(T("Error : バンク危険! (arg_data 0x%04x)(%s %d)\n", "Error : Bank danger! (arg_data 0x%04x)(%s %d)\n"),
+ thisx->params, "../z_en_kusa.c", 561);
Actor_Kill(&this->actor);
return;
}
diff --git a/src/overlays/actors/ovl_En_Mb/z_en_mb.c b/src/overlays/actors/ovl_En_Mb/z_en_mb.c
index 485052002..a69a25f0d 100644
--- a/src/overlays/actors/ovl_En_Mb/z_en_mb.c
+++ b/src/overlays/actors/ovl_En_Mb/z_en_mb.c
@@ -126,7 +126,7 @@ static ColliderCylinderInit sBodyColliderInit = {
{ 20, 70, 0, { 0, 0, 0 } },
};
-static ColliderTrisElementInit sFrontShieldingTrisInit[2] = {
+static ColliderTrisElementInit sFrontShieldingTrisElementsInit[2] = {
{
{
ELEM_MATERIAL_UNK2,
@@ -151,7 +151,7 @@ static ColliderTrisElementInit sFrontShieldingTrisInit[2] = {
},
};
-static ColliderTrisInit sFrontShieldingInit = {
+static ColliderTrisInit sFrontShieldingTrisInit = {
{
COL_MATERIAL_METAL,
AT_NONE,
@@ -161,10 +161,10 @@ static ColliderTrisInit sFrontShieldingInit = {
COLSHAPE_TRIS,
},
2,
- sFrontShieldingTrisInit,
+ sFrontShieldingTrisElementsInit,
};
-static ColliderQuadInit sAttackColliderInit = {
+static ColliderQuadInit sAttackColliderQuadInit = {
{
COL_MATERIAL_NONE,
AT_ON | AT_TYPE_ENEMY,
@@ -284,10 +284,11 @@ void EnMb_Init(Actor* thisx, PlayState* play) {
this->actor.colChkInfo.damageTable = &sSpearMoblinDamageTable;
Collider_InitCylinder(play, &this->bodyCollider);
Collider_SetCylinder(play, &this->bodyCollider, &this->actor, &sBodyColliderInit);
- Collider_InitTris(play, &this->frontShielding);
- Collider_SetTris(play, &this->frontShielding, &this->actor, &sFrontShieldingInit, this->frontShieldingTris);
+ Collider_InitTris(play, &this->frontShieldingCollider);
+ Collider_SetTris(play, &this->frontShieldingCollider, &this->actor, &sFrontShieldingTrisInit,
+ this->frontShieldingColliderElements);
Collider_InitQuad(play, &this->attackCollider);
- Collider_SetQuad(play, &this->attackCollider, &this->actor, &sAttackColliderInit);
+ Collider_SetQuad(play, &this->attackCollider, &this->actor, &sAttackColliderQuadInit);
switch (this->actor.params) {
case ENMB_TYPE_SPEAR_GUARD:
@@ -349,7 +350,7 @@ void EnMb_Init(Actor* thisx, PlayState* play) {
void EnMb_Destroy(Actor* thisx, PlayState* play) {
EnMb* this = (EnMb*)thisx;
- Collider_DestroyTris(play, &this->frontShielding);
+ Collider_DestroyTris(play, &this->frontShieldingCollider);
Collider_DestroyCylinder(play, &this->bodyCollider);
Collider_DestroyQuad(play, &this->attackCollider);
}
@@ -1434,8 +1435,8 @@ void EnMb_ClubUpdateAttackCollider(Actor* thisx, PlayState* play) {
void EnMb_CheckColliding(EnMb* this, PlayState* play) {
Player* player = GET_PLAYER(play);
- if (this->frontShielding.base.acFlags & AC_HIT) {
- this->frontShielding.base.acFlags &= ~(AC_HIT | AC_BOUNCED);
+ if (this->frontShieldingCollider.base.acFlags & AC_HIT) {
+ this->frontShieldingCollider.base.acFlags &= ~(AC_HIT | AC_BOUNCED);
this->bodyCollider.base.acFlags &= ~AC_HIT;
} else if ((this->bodyCollider.base.acFlags & AC_HIT) && this->state >= ENMB_STATE_STUNNED) {
this->bodyCollider.base.acFlags &= ~AC_HIT;
@@ -1502,7 +1503,7 @@ void EnMb_Update(Actor* thisx, PlayState* play) {
CollisionCheck_SetAC(play, &play->colChkCtx, &this->bodyCollider.base);
}
if (this->state >= ENMB_STATE_IDLE) {
- CollisionCheck_SetAC(play, &play->colChkCtx, &this->frontShielding.base);
+ CollisionCheck_SetAC(play, &play->colChkCtx, &this->frontShieldingCollider.base);
}
if (this->attack > ENMB_ATTACK_NONE) {
CollisionCheck_SetAT(play, &play->colChkCtx, &this->attackCollider.base);
@@ -1601,9 +1602,9 @@ void EnMb_Draw(Actor* thisx, PlayState* play) {
Matrix_MultVec3f(&frontShieldingTriModel0[i], &frontShieldingTri0[i]);
Matrix_MultVec3f(&frontShieldingTriModel1[i], &frontShieldingTri1[i]);
}
- Collider_SetTrisVertices(&this->frontShielding, 0, &frontShieldingTri0[0], &frontShieldingTri0[1],
+ Collider_SetTrisVertices(&this->frontShieldingCollider, 0, &frontShieldingTri0[0], &frontShieldingTri0[1],
&frontShieldingTri0[2]);
- Collider_SetTrisVertices(&this->frontShielding, 1, &frontShieldingTri1[0], &frontShieldingTri1[1],
+ Collider_SetTrisVertices(&this->frontShieldingCollider, 1, &frontShieldingTri1[0], &frontShieldingTri1[1],
&frontShieldingTri1[2]);
}
diff --git a/src/overlays/actors/ovl_En_Mb/z_en_mb.h b/src/overlays/actors/ovl_En_Mb/z_en_mb.h
index 8c3ddc602..776e7421e 100644
--- a/src/overlays/actors/ovl_En_Mb/z_en_mb.h
+++ b/src/overlays/actors/ovl_En_Mb/z_en_mb.h
@@ -46,8 +46,8 @@ typedef struct EnMb {
/* 0x0364 */ f32 playerDetectionRange;
/* 0x0368 */ ColliderCylinder bodyCollider;
/* 0x03B4 */ ColliderQuad attackCollider; // for attacking the player
- /* 0x0434 */ ColliderTris frontShielding; // Moblins don't have shields, but this acts as one
- /* 0x0454 */ ColliderTrisElement frontShieldingTris[2];
+ /* 0x0434 */ ColliderTris frontShieldingCollider; // Moblins don't have shields, but this acts as one
+ /* 0x0454 */ ColliderTrisElement frontShieldingColliderElements[2];
} EnMb; // size = 0x050C
#endif
diff --git a/src/overlays/actors/ovl_En_Mm2/z_en_mm2.c b/src/overlays/actors/ovl_En_Mm2/z_en_mm2.c
index d2f444a19..2144294ab 100644
--- a/src/overlays/actors/ovl_En_Mm2/z_en_mm2.c
+++ b/src/overlays/actors/ovl_En_Mm2/z_en_mm2.c
@@ -14,6 +14,7 @@
#include "segmented_address.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64play.h"
#include "z64save.h"
@@ -162,7 +163,7 @@ void EnMm2_Init(Actor* thisx, PlayState* play2) {
}
if (this->actor.params == 1) {
if (!GET_INFTABLE(INFTABLE_17F) || !GET_EVENTINF(EVENTINF_MARATHON_ACTIVE)) {
- PRINTF(VT_FGCOL(CYAN) " マラソン 開始されていない \n" VT_RST "\n");
+ PRINTF(VT_FGCOL(CYAN) T(" マラソン 開始されていない \n", " Marathon not started \n") VT_RST "\n");
Actor_Kill(&this->actor);
}
}
diff --git a/src/overlays/actors/ovl_En_Nb/z_en_nb.c b/src/overlays/actors/ovl_En_Nb/z_en_nb.c
index e0d2edddf..1c937e872 100644
--- a/src/overlays/actors/ovl_En_Nb/z_en_nb.c
+++ b/src/overlays/actors/ovl_En_Nb/z_en_nb.c
@@ -140,11 +140,12 @@ void EnNb_UpdatePath(EnNb* this, PlayState* play) {
this->finalPos.z = pointPos[1].z;
this->pathYaw =
RAD_TO_BINANG(Math_FAtan2F(this->finalPos.x - this->initialPos.x, this->finalPos.z - this->initialPos.z));
- // "En_Nb_Get_path_info Rail Data Get! = %d!!!!!!!!!!!!!!"
- PRINTF("En_Nb_Get_path_info レールデータをゲットだぜ = %d!!!!!!!!!!!!!!\n", path);
+ PRINTF(T("En_Nb_Get_path_info レールデータをゲットだぜ = %d!!!!!!!!!!!!!!\n",
+ "En_Nb_Get_path_info Got the rail data = %d!!!!!!!!!!!!!!\n"),
+ path);
} else {
- // "En_Nb_Get_path_info Rail Data Doesn't Exist!!!!!!!!!!!!!!!!!!!!"
- PRINTF("En_Nb_Get_path_info レールデータが無い!!!!!!!!!!!!!!!!!!!!\n");
+ PRINTF(T("En_Nb_Get_path_info レールデータが無い!!!!!!!!!!!!!!!!!!!!\n",
+ "En_Nb_Get_path_info No rail data!!!!!!!!!!!!!!!!!!!!\n"));
}
}
@@ -695,8 +696,8 @@ void EnNb_CheckKidnapCsMode(EnNb* this, PlayState* play) {
Actor_Kill(&this->actor);
break;
default:
- // "Operation Doesn't Exist!!!!!!!!"
- PRINTF("En_Nb_Kidnap_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
+ PRINTF(T("En_Nb_Kidnap_Check_DemoMode:そんな動作は無い!!!!!!!!\n",
+ "En_Nb_Kidnap_Check_DemoMode: There is no such action!!!!!!!!\n"));
break;
}
this->cueId = nextCueId;
@@ -914,8 +915,8 @@ void EnNb_CheckConfrontationCsMode(EnNb* this, PlayState* play) {
EnNb_SetupConfrontationDestroy(this);
break;
default:
- // "En_Nb_Confrontion_Check_DemoMode: Operation doesn't exist!!!!!!!!"
- PRINTF("En_Nb_Confrontion_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
+ PRINTF(T("En_Nb_Confrontion_Check_DemoMode:そんな動作は無い!!!!!!!!\n",
+ "En_Nb_Confrontion_Check_DemoMode: There is no such action!!!!!!!!\n"));
break;
}
this->cueId = nextCueId;
@@ -1102,8 +1103,8 @@ void EnNb_CheckCreditsCsModeImpl(EnNb* this, PlayState* play) {
EnNb_SetupCreditsHeadTurn(this);
break;
default:
- // "En_Nb_inEnding_Check_DemoMode: Operation doesn't exist!!!!!!!!"
- PRINTF("En_Nb_inEnding_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
+ PRINTF(T("En_Nb_inEnding_Check_DemoMode:そんな動作は無い!!!!!!!!\n",
+ "En_Nb_inEnding_Check_DemoMode: There is no such action!!!!!!!!\n"));
break;
}
this->cueId = nextCueId;
diff --git a/src/overlays/actors/ovl_En_Niw/z_en_niw.c b/src/overlays/actors/ovl_En_Niw/z_en_niw.c
index 6be5e39db..71cc497e1 100644
--- a/src/overlays/actors/ovl_En_Niw/z_en_niw.c
+++ b/src/overlays/actors/ovl_En_Niw/z_en_niw.c
@@ -21,6 +21,7 @@
#include "sfx.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "versions.h"
#include "z_lib.h"
#include "z64effect.h"
@@ -153,7 +154,8 @@ void EnNiw_Init(Actor* thisx, PlayState* play) {
if (this->actor.params == 0xB) {
if (sLowerRiverSpawned) {
Actor_Kill(&this->actor);
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ もういてる原 Ver.1 ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(YELLOW)
+ T("☆☆☆☆☆ もういてる原 Ver.1 ☆☆☆☆☆ \n", "☆☆☆☆☆ Original is already here Ver.1 ☆☆☆☆☆ \n") VT_RST);
return;
}
sLowerRiverSpawned = true;
@@ -164,7 +166,8 @@ void EnNiw_Init(Actor* thisx, PlayState* play) {
if (this->actor.params == 0xC) {
if (sUpperRiverSpawned) {
Actor_Kill(&this->actor);
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ もういてる原 Ver.2 ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(YELLOW)
+ T("☆☆☆☆☆ もういてる原 Ver.2 ☆☆☆☆☆ \n", "☆☆☆☆☆ Original is already here Ver.2 ☆☆☆☆☆ \n") VT_RST);
return;
}
sUpperRiverSpawned = true;
@@ -181,7 +184,7 @@ void EnNiw_Init(Actor* thisx, PlayState* play) {
if (fabsf(this->actor.world.pos.x - sKakarikoPosList[i].x) < 40.0f &&
fabsf(this->actor.world.pos.z - sKakarikoPosList[i].z) < 40.0f) {
this->unk_2AA = i;
- PRINTF(VT_FGCOL(YELLOW) " 通常鶏index %d\n" VT_RST, this->unk_2AA);
+ PRINTF(VT_FGCOL(YELLOW) T(" 通常鶏index %d\n", " Normal chicken index %d\n") VT_RST, this->unk_2AA);
if (gSaveContext.save.info.infTable[INFTABLE_INDEX_199_19A_19B_19C_19D_19E_19F] &
sKakarikoFlagList[i]) {
this->actor.world.pos.x = 300.0f;
@@ -259,7 +262,8 @@ void EnNiw_Init(Actor* thisx, PlayState* play) {
break;
}
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ どんな奴? ☆☆☆☆☆ %d\n" VT_RST, this->actor.params);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ どんな奴? ☆☆☆☆☆ %d\n", "☆☆☆☆☆ What kind of guy? ☆☆☆☆☆ %d\n") VT_RST,
+ this->actor.params);
PRINTF("\n\n");
this->actionFunc = EnNiw_ResetAction;
}
@@ -386,7 +390,7 @@ void EnNiw_SpawnAttackCucco(EnNiw* this, PlayState* play) {
this->timer5 = 10;
} else {
PRINTF("\n\n");
- PRINTF(VT_FGCOL(GREEN) " ☆☆☆☆☆ 発生できず ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T(" ☆☆☆☆☆ 発生できず ☆☆☆☆☆ \n", " ☆☆☆☆☆ Cannot occur ☆☆☆☆☆ \n") VT_RST);
}
}
}
@@ -983,17 +987,21 @@ void EnNiw_Update(Actor* thisx, PlayState* play) {
f32 camResult;
s32 pad3[10];
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 上下? ☆☆☆☆☆ %f\n" VT_RST, thisx->floorHeight);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 上下? ☆☆☆☆☆ %f\n", "☆☆☆☆☆ Up and down? ☆☆☆☆☆ %f\n") VT_RST,
+ thisx->floorHeight);
cam.x = play->view.at.x - play->view.eye.x;
cam.y = play->view.at.y - play->view.eye.y;
cam.z = play->view.at.z - play->view.eye.z;
camResult = cam.y / sqrtf(SQ(cam.x) + SQ(cam.y) + SQ(cam.z));
- PRINTF(VT_FGCOL(RED) "☆☆☆☆☆ 範囲外X! ☆☆☆☆☆ %f\n" VT_RST, thisx->world.pos.x);
- PRINTF(VT_FGCOL(RED) "☆☆☆☆☆ 範囲外Y! ☆☆☆☆☆ %f\n" VT_RST, thisx->world.pos.y);
- PRINTF(VT_FGCOL(RED) "☆☆☆☆☆ 範囲外Z! ☆☆☆☆☆ %f\n" VT_RST, thisx->world.pos.z);
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ セットX! ☆☆☆☆☆ %f\n" VT_RST, thisx->home.pos.x);
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ セットY! ☆☆☆☆☆ %f\n" VT_RST, thisx->home.pos.y);
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ セットZ! ☆☆☆☆☆ %f\n" VT_RST, thisx->home.pos.z);
+ PRINTF(VT_FGCOL(RED) T("☆☆☆☆☆ 範囲外X! ☆☆☆☆☆ %f\n", "☆☆☆☆☆ X out of range! ☆☆☆☆☆ %f\n") VT_RST,
+ thisx->world.pos.x);
+ PRINTF(VT_FGCOL(RED) T("☆☆☆☆☆ 範囲外Y! ☆☆☆☆☆ %f\n", "☆☆☆☆☆ Y out of range! ☆☆☆☆☆ %f\n") VT_RST,
+ thisx->world.pos.y);
+ PRINTF(VT_FGCOL(RED) T("☆☆☆☆☆ 範囲外Z! ☆☆☆☆☆ %f\n", "☆☆☆☆☆ Z out of range! ☆☆☆☆☆ %f\n") VT_RST,
+ thisx->world.pos.z);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ セットX! ☆☆☆☆☆ %f\n", "☆☆☆☆☆ Set X! ☆☆☆☆☆ %f\n") VT_RST, thisx->home.pos.x);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ セットY! ☆☆☆☆☆ %f\n", "☆☆☆☆☆ Set Y! ☆☆☆☆☆ %f\n") VT_RST, thisx->home.pos.y);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ セットZ! ☆☆☆☆☆ %f\n", "☆☆☆☆☆ Set Z! ☆☆☆☆☆ %f\n") VT_RST, thisx->home.pos.z);
thisx->world.pos.x = thisx->home.pos.x;
thisx->world.pos.z = thisx->home.pos.z;
thisx->world.pos.y = ((thisx->home.pos.y + play->view.eye.y) + (camResult * 160.0f));
@@ -1002,9 +1010,12 @@ void EnNiw_Update(Actor* thisx, PlayState* play) {
thisx->world.pos.y = thisx->home.pos.y + 300.0f;
}
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ 修整後X! ☆☆☆☆☆ %f\n" VT_RST, thisx->world.pos.x);
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ 修整後Y! ☆☆☆☆☆ %f\n" VT_RST, thisx->world.pos.y);
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ 修整後Z! ☆☆☆☆☆ %f\n" VT_RST, thisx->world.pos.z);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ 修整後X! ☆☆☆☆☆ %f\n", "☆☆☆☆☆ X after correction! ☆☆☆☆☆ %f\n") VT_RST,
+ thisx->world.pos.x);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ 修整後Y! ☆☆☆☆☆ %f\n", "☆☆☆☆☆ Y after correction! ☆☆☆☆☆ %f\n") VT_RST,
+ thisx->world.pos.y);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ 修整後Z! ☆☆☆☆☆ %f\n", "☆☆☆☆☆ Z after correction! ☆☆☆☆☆ %f\n") VT_RST,
+ thisx->world.pos.z);
PRINTF("\n\n");
thisx->speed = 0.0f;
thisx->gravity = -2.0f;
@@ -1045,7 +1056,7 @@ void EnNiw_Update(Actor* thisx, PlayState* play) {
EffectSsGSplash_Spawn(play, &pos, NULL, NULL, 0, 400);
this->timer5 = 0;
PRINTF("\n\n");
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ ぶくぶく ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ ぶくぶく ☆☆☆☆☆ \n", "☆☆☆☆☆ Bubbling ☆☆☆☆☆ \n") VT_RST);
PRINTF("\n\n");
this->actionFunc = func_80AB6F04;
return;
diff --git a/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.c b/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.c
index 2d0050457..1ea639709 100644
--- a/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.c
+++ b/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.c
@@ -10,6 +10,7 @@
#include "segmented_address.h"
#include "sfx.h"
#include "terminal.h"
+#include "translation.h"
#include "versions.h"
#include "z_lib.h"
#include "z64face_reaction.h"
@@ -100,7 +101,8 @@ void EnNiwLady_Init(Actor* thisx, PlayState* play) {
Actor_Kill(thisx);
return;
}
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ ねぇちゃんうっふん ☆☆☆☆☆ %d\n" VT_RST, this->unk_278);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ ねぇちゃんうっふん ☆☆☆☆☆ %d\n", "☆☆☆☆☆ Neechan ugh ☆☆☆☆☆ %d\n") VT_RST,
+ this->unk_278);
PRINTF("\n\n");
this->actionFunc = func_80AB9F24;
thisx->cullingVolumeDistance = 600.0f;
@@ -228,8 +230,9 @@ void func_80ABA244(EnNiwLady* this, PlayState* play) {
gSaveContext.save.info.infTable[INFTABLE_INDEX_199_19A_19B_19C_19D_19E_19F] |=
D_80ABB3B4[currentCucco->unk_2AA];
if (BREG(1) != 0) {
- // "GET inside the chicken fence!"
- PRINTF(VT_FGCOL(GREEN) "☆ 鶏柵内GET!☆ %x\n" VT_RST, D_80ABB3B4[currentCucco->unk_2AA]);
+ PRINTF(VT_FGCOL(GREEN) T("☆ 鶏柵内GET!☆ %x\n", "☆ GET inside the chicken fence! ☆ %x\n")
+ VT_RST,
+ D_80ABB3B4[currentCucco->unk_2AA]);
}
}
this->cuccosInPen++;
@@ -267,12 +270,21 @@ void func_80ABA244(EnNiwLady* this, PlayState* play) {
}
if (Actor_TalkOfferAccepted(&this->actor, play)) {
PRINTF("\n\n");
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ ねぇちゃん選択\t ☆☆☆☆ %d\n" VT_RST, phi_s1);
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ ねぇちゃんハート ☆☆☆☆ %d\n" VT_RST, this->unk_26C);
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ ねぇちゃん保存 ☆☆☆☆ %d\n" VT_RST, this->unk_26A);
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ ねぇちゃん今\t ☆☆☆☆ %d\n" VT_RST, this->cuccosInPen);
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ this->actor.talk_message ☆☆ %x\n" VT_RST, this->actor.textId);
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ this->message_end_code ☆☆ %d\n" VT_RST, this->unk_262);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ ねぇちゃん選択\t ☆☆☆☆ %d\n", "☆☆☆☆☆ Select your sister\t ☆☆☆☆ %d\n") VT_RST,
+ phi_s1);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ ねぇちゃんハート ☆☆☆☆ %d\n", "☆☆☆☆☆ Neechan Heart ☆☆☆☆ %d\n") VT_RST,
+ this->unk_26C);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ ねぇちゃん保存 ☆☆☆☆ %d\n", "☆☆☆☆☆ Save my sister ☆☆☆☆ %d\n")
+ VT_RST,
+ this->unk_26A);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ ねぇちゃん今\t ☆☆☆☆ %d\n", "☆☆☆☆☆ Neechan now\t ☆☆☆☆ %d\n") VT_RST,
+ this->cuccosInPen);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ this->actor.talk_message ☆☆ %x\n", "☆☆☆☆☆ this->actor.talk_message ☆☆ %x\n")
+ VT_RST,
+ this->actor.textId);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ this->message_end_code ☆☆ %d\n", "☆☆☆☆☆ this->message_end_code ☆☆ %d\n")
+ VT_RST,
+ this->unk_262);
PRINTF("\n\n");
if (MaskReaction_GetTextId(play, MASK_REACTION_SET_CUCCO_LADY) == 0) {
#if OOT_VERSION >= NTSC_1_1
@@ -290,13 +302,15 @@ void func_80ABA244(EnNiwLady* this, PlayState* play) {
this->unk_26C = 1;
this->unk_262 = TEXT_STATE_EVENT;
this->unk_26A = this->cuccosInPen;
- PRINTF(VT_FGCOL(CYAN) "☆☆☆☆☆ 柵内BIT変更前 ☆☆ %x\n" VT_RST,
+ PRINTF(VT_FGCOL(CYAN) T("☆☆☆☆☆ 柵内BIT変更前 ☆☆ %x\n", "☆☆☆☆☆ Before changing the fence BIT ☆☆ %x\n")
+ VT_RST,
gSaveContext.save.info.infTable[INFTABLE_INDEX_199_19A_19B_19C_19D_19E_19F]);
gSaveContext.save.info.infTable[INFTABLE_INDEX_199_19A_19B_19C_19D_19E_19F] &=
(u16) ~(INFTABLE_MASK(INFTABLE_199) | INFTABLE_MASK(INFTABLE_19A) | INFTABLE_MASK(INFTABLE_19B) |
INFTABLE_MASK(INFTABLE_19C) | INFTABLE_MASK(INFTABLE_19D) | INFTABLE_MASK(INFTABLE_19E) |
INFTABLE_MASK(INFTABLE_19F));
- PRINTF(VT_FGCOL(CYAN) "☆☆☆☆☆ 柵内BIT変更後 ☆☆ %x\n" VT_RST,
+ PRINTF(VT_FGCOL(CYAN) T("☆☆☆☆☆ 柵内BIT変更後 ☆☆ %x\n",
+ "☆☆☆☆☆ After changing the BIT inside the fence ☆☆ %x\n") VT_RST,
gSaveContext.save.info.infTable[INFTABLE_INDEX_199_19A_19B_19C_19D_19E_19F]);
PRINTF("\n\n");
this->actionFunc = func_80ABA654;
@@ -329,8 +343,8 @@ void func_80ABA244(EnNiwLady* this, PlayState* play) {
void func_80ABA654(EnNiwLady* this, PlayState* play) {
if (this->unk_262 == Message_GetState(&play->msgCtx) && Message_ShouldAdvance(play)) {
Message_CloseTextbox(play);
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ ハート ☆☆☆☆☆ %d\n" VT_RST, this->unk_26C);
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ 爆弾 ☆☆☆☆☆ %d\n" VT_RST, this->unk_272);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ ハート ☆☆☆☆☆ %d\n", "☆☆☆☆☆ heart ☆☆☆☆☆ %d\n") VT_RST, this->unk_26C);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ 爆弾 ☆☆☆☆☆ %d\n", "☆☆☆☆☆ bomb ☆☆☆☆☆ %d\n") VT_RST, this->unk_272);
PRINTF("\n\n");
this->unk_26E = 0xB;
if (!GET_ITEMGETINF(ITEMGETINF_0C)) {
@@ -353,8 +367,7 @@ static s16 sTradeItemTextIds[] = { 0x503E, 0x503F, 0x5047, 0x5040, 0x5042, 0x504
0x5044, 0x00CF, 0x5045, 0x5042, 0x5027 };
void func_80ABA778(EnNiwLady* this, PlayState* play) {
- // "☆☆☆☆☆ Adult message check ☆☆☆☆☆"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ アダルトメッセージチェック ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ アダルトメッセージチェック ☆☆☆☆☆ \n", "☆☆☆☆☆ Adult message check ☆☆☆☆☆ \n") VT_RST);
this->unk_262 = TEXT_STATE_DONE;
this->unk_273 = 0;
if (!GET_ITEMGETINF(ITEMGETINF_2C)) {
@@ -480,7 +493,7 @@ void func_80ABAC84(EnNiwLady* this, PlayState* play) {
if ((Message_GetState(&play->msgCtx) != TEXT_STATE_DONE) || !Message_ShouldAdvance(play)) {
return;
}
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 正常終了 ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 正常終了 ☆☆☆☆☆ \n", "☆☆☆☆☆ Normal termination ☆☆☆☆☆ \n") VT_RST);
if (LINK_IS_ADULT) {
if (!GET_ITEMGETINF(ITEMGETINF_2C)) {
SET_ITEMGETINF(ITEMGETINF_2C);
@@ -496,7 +509,7 @@ void func_80ABAC84(EnNiwLady* this, PlayState* play) {
}
void func_80ABAD38(EnNiwLady* this, PlayState* play) {
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 通常メッセージチェック ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 通常メッセージチェック ☆☆☆☆☆ \n", "☆☆☆☆☆ Normal message check ☆☆☆☆☆ \n") VT_RST);
this->unk_262 = TEXT_STATE_DONE;
this->actionFunc = func_80ABAD7C;
}
diff --git a/src/overlays/actors/ovl_En_Ny/z_en_ny.c b/src/overlays/actors/ovl_En_Ny/z_en_ny.c
index d7f453751..be7fc69f0 100644
--- a/src/overlays/actors/ovl_En_Ny/z_en_ny.c
+++ b/src/overlays/actors/ovl_En_Ny/z_en_ny.c
@@ -9,6 +9,7 @@
#include "rand.h"
#include "sfx.h"
#include "sys_matrix.h"
+#include "translation.h"
#include "z_en_item00.h"
#include "z_lib.h"
#include "z64effect.h"
@@ -64,7 +65,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[1] = {
},
};
-static ColliderJntSphInit sColliderInit = {
+static ColliderJntSphInit sColliderJntSphInit = {
{
COL_MATERIAL_NONE,
AT_ON | AT_TYPE_ENEMY,
@@ -125,7 +126,7 @@ void EnNy_Init(Actor* thisx, PlayState* play) {
this->actor.colChkInfo.damageTable = &sDamageTable;
this->actor.colChkInfo.health = 2;
Collider_InitJntSph(play, &this->collider);
- Collider_SetJntSph(play, &this->collider, &this->actor, &sColliderInit, this->colliderElements);
+ Collider_SetJntSph(play, &this->collider, &this->actor, &sColliderJntSphInit, this->colliderElements);
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 20.0f);
this->unk_1CA = 0;
this->unk_1D0 = 0;
@@ -141,8 +142,7 @@ void EnNy_Init(Actor* thisx, PlayState* play) {
this->unk_1E8 = 0.0f;
this->unk_1E0 = 0.25f;
if (this->actor.params == 0) {
- // "New initials"
- PRINTF("ニュウ イニシャル[ %d ] !!\n", this->actor.params);
+ PRINTF(T("ニュウ イニシャル[ %d ] !!\n", "New init [ %d ] !!\n"), this->actor.params);
this->actor.colChkInfo.mass = 0;
this->unk_1D4 = 0;
this->unk_1D8 = 0xFF;
@@ -150,8 +150,7 @@ void EnNy_Init(Actor* thisx, PlayState* play) {
func_80ABCDBC(this);
} else {
// This mode is unused in the final game
- // "Dummy new initials"
- PRINTF("ダミーニュウ イニシャル[ %d ] !!\n", this->actor.params);
+ PRINTF(T("ダミーニュウ イニシャル[ %d ] !!\n", "Dummy new init [ %d ] !!\n"), this->actor.params);
PRINTF("En_Ny_actor_move2[ %x ] !!\n", EnNy_UpdateUnused);
this->actor.colChkInfo.mass = MASS_IMMOVABLE;
this->actor.update = EnNy_UpdateUnused;
diff --git a/src/overlays/actors/ovl_En_Okarina_Effect/z_en_okarina_effect.c b/src/overlays/actors/ovl_En_Okarina_Effect/z_en_okarina_effect.c
index b691e15ea..c774afbd3 100644
--- a/src/overlays/actors/ovl_En_Okarina_Effect/z_en_okarina_effect.c
+++ b/src/overlays/actors/ovl_En_Okarina_Effect/z_en_okarina_effect.c
@@ -10,6 +10,7 @@
#include "regs.h"
#include "sequence.h"
#include "terminal.h"
+#include "translation.h"
#include "versions.h"
#include "z64audio.h"
#include "z64cutscene_flags.h"
@@ -64,8 +65,8 @@ void EnOkarinaEffect_Init(Actor* thisx, PlayState* play) {
EnOkarinaEffect* this = (EnOkarinaEffect*)thisx;
PRINTF("\n\n");
- // "Ocarina Storm Effect"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ オカリナあらし効果ビカビカビカ〜 ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ オカリナあらし効果ビカビカビカ〜 ☆☆☆☆☆ \n",
+ "☆☆☆☆☆ Ocarina storm effect sparkle sparkle sparkle ☆☆☆☆☆ \n") VT_RST);
PRINTF("\n\n");
if (play->envCtx.precipitation[PRECIP_RAIN_CUR] != 0) {
Actor_Kill(&this->actor);
@@ -97,7 +98,7 @@ void EnOkarinaEffect_ManageStorm(EnOkarinaEffect* this, PlayState* play) {
}
PRINTF("\nthis->timer=[%d]", this->timer);
if (this->timer == 308) {
- PRINTF("\n\n\n豆よ のびろ 指定\n\n\n"); // "Let's grow some beans"
+ PRINTF(T("\n\n\n豆よ のびろ 指定\n\n\n", "\n\n\nBeans, grow!\n\n\n"));
CutsceneFlags_Set(play, 5);
}
}
diff --git a/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.c b/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.c
index 7baa464ba..d9409101b 100644
--- a/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.c
+++ b/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.c
@@ -12,6 +12,7 @@
#include "segmented_address.h"
#include "sfx.h"
#include "terminal.h"
+#include "translation.h"
#include "versions.h"
#include "z_lib.h"
#include "z64audio.h"
@@ -59,8 +60,8 @@ void EnOkarinaTag_Init(Actor* thisx, PlayState* play) {
EnOkarinaTag* this = (EnOkarinaTag*)thisx;
PRINTF("\n\n");
- // "Ocarina tag outbreak"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ オカリナタグ発生 ☆☆☆☆☆ %x\n" VT_RST, this->actor.params);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ オカリナタグ発生 ☆☆☆☆☆ %x\n", "☆☆☆☆☆ Ocarina tag occurrence ☆☆☆☆☆ %x\n") VT_RST,
+ this->actor.params);
this->actor.flags &= ~ACTOR_FLAG_ATTENTION_ENABLED;
this->type = PARAMS_GET_U(this->actor.params, 10, 6);
this->ocarinaSong = PARAMS_GET_U(this->actor.params, 6, 4);
@@ -77,18 +78,17 @@ void EnOkarinaTag_Init(Actor* thisx, PlayState* play) {
this->interactRange = this->actor.world.rot.z * 40.0f;
}
- // "Save information"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ セーブ情報\t ☆☆☆☆☆ %d\n" VT_RST, this->switchFlag);
- // "Type index"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ 種類インデックス ☆☆☆☆☆ %d\n" VT_RST, this->type);
- // "Correct answer information"
- PRINTF(VT_FGCOL(MAGENTA) "☆☆☆☆☆ 正解情報\t ☆☆☆☆☆ %d\n" VT_RST, this->ocarinaSong);
- // "Range information"
- PRINTF(VT_FGCOL(CYAN) "☆☆☆☆☆ 範囲情報\t ☆☆☆☆☆ %d\n" VT_RST, this->actor.world.rot.z);
- // "Processing range information"
- PRINTF(VT_FGCOL(CYAN) "☆☆☆☆☆ 処理範囲情報\t ☆☆☆☆☆ %f\n" VT_RST, this->interactRange);
- // "Hit?"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 当り?\t\t ☆☆☆☆☆ %d\n" VT_RST, this->unk_158);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ セーブ情報\t ☆☆☆☆☆ %d\n", "☆☆☆☆☆ Save information\t ☆☆☆☆☆ %d\n") VT_RST,
+ this->switchFlag);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ 種類インデックス ☆☆☆☆☆ %d\n", "☆☆☆☆☆ Type index ☆☆☆☆☆ %d\n") VT_RST, this->type);
+ PRINTF(VT_FGCOL(MAGENTA) T("☆☆☆☆☆ 正解情報\t ☆☆☆☆☆ %d\n", "☆☆☆☆☆ Correct answer information\t ☆☆☆☆☆ %d\n") VT_RST,
+ this->ocarinaSong);
+ PRINTF(VT_FGCOL(CYAN) T("☆☆☆☆☆ 範囲情報\t ☆☆☆☆☆ %d\n", "☆☆☆☆☆ Range information\t ☆☆☆☆☆ %d\n") VT_RST,
+ this->actor.world.rot.z);
+ PRINTF(VT_FGCOL(CYAN) T("☆☆☆☆☆ 処理範囲情報\t ☆☆☆☆☆ %f\n", "☆☆☆☆☆ Processing range information\t ☆☆☆☆☆ %f\n")
+ VT_RST,
+ this->interactRange);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 当り?\t\t ☆☆☆☆☆ %d\n", "☆☆☆☆☆ Hit?\t\t ☆☆☆☆☆ %d\n") VT_RST, this->unk_158);
PRINTF("\n\n");
if ((this->switchFlag >= 0) && (Flags_GetSwitch(play, this->switchFlag))) {
@@ -135,8 +135,8 @@ void func_80ABEF2C(EnOkarinaTag* this, PlayState* play) {
} else {
if ((this->ocarinaSong != 6) || (gSaveContext.save.info.scarecrowSpawnSongSet)) {
if (player->stateFlags2 & PLAYER_STATE2_24) {
- // "North! ! ! ! !"
- PRINTF(VT_FGCOL(RED) "☆☆☆☆☆ 北!!!!! ☆☆☆☆☆ %f\n" VT_RST, this->actor.xzDistToPlayer);
+ PRINTF(VT_FGCOL(RED) T("☆☆☆☆☆ 北!!!!! ☆☆☆☆☆ %f\n", "☆☆☆☆☆ North!!!!! ☆☆☆☆☆ %f\n") VT_RST,
+ this->actor.xzDistToPlayer);
}
if ((this->actor.xzDistToPlayer < (90.0f + this->interactRange)) &&
(fabsf(player->actor.world.pos.y - this->actor.world.pos.y) < 80.0f)) {
@@ -237,8 +237,9 @@ void func_80ABF28C(EnOkarinaTag* this, PlayState* play) {
Message_StartOcarina(play, OCARINA_ACTION_CHECK_LULLABY);
break;
default:
- // "Ocarina Invisible-kun demo start check error source"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ オカリナ透明君デモ開始チェックエラー原 ☆☆☆☆☆ %d\n" VT_RST,
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ オカリナ透明君デモ開始チェックエラー原 ☆☆☆☆☆ %d\n",
+ "☆☆☆☆☆ Ocarina Invisible-kun demo start check error source ☆☆☆☆☆ %d\n")
+ VT_RST,
this->type);
Actor_Kill(&this->actor);
break;
@@ -335,8 +336,8 @@ void func_80ABF708(EnOkarinaTag* this, PlayState* play) {
}
void func_80ABF7CC(EnOkarinaTag* this, PlayState* play) {
- // "Open sesame sesame!"
- PRINTF(VT_FGCOL(MAGENTA) "☆☆☆☆☆ 開けゴマゴマゴマ! ☆☆☆☆☆ %d\n" VT_RST, Message_GetState(&play->msgCtx));
+ PRINTF(VT_FGCOL(MAGENTA) T("☆☆☆☆☆ 開けゴマゴマゴマ! ☆☆☆☆☆ %d\n", "☆☆☆☆☆ Open gomagomagoma! ☆☆☆☆☆ %d\n") VT_RST,
+ Message_GetState(&play->msgCtx));
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_EVENT) && Message_ShouldAdvance(play)) {
Message_CloseTextbox(play);
diff --git a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c
index 7b3a04d74..7131f58bd 100644
--- a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c
+++ b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c
@@ -13,6 +13,7 @@
#include "segmented_address.h"
#include "sfx.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64play.h"
#include "z64player.h"
@@ -173,17 +174,10 @@ static s16 D_80AC8904[] = { 0x001E, 0x001F, 0x0020, 0x0021, 0x0022, 0x0023, 0x00
#if DEBUG_FEATURES
static char* sShopkeeperPrintName[] = {
- "コキリの店 ", // "Kokiri Shop"
- "薬屋 ", // "Potion Shop"
- "夜の店 ", // "Night Shop"
- "路地裏の店 ", // "Back Alley Shop"
- "盾の店 ", // "Shield Shop"
- "大人の店 ", // "Adult Shop"
- "タロンの店 ", // "Talon Shop"
- "ゾーラの店 ", // "Zora Shop"
- "ゴロン夜の店", // "Goron Night Shop"
- "インゴーの店", // "Ingo Store"
- "お面屋 ", // "Mask Shop"
+ T("コキリの店 ", "Kokiri Shop"), T("薬屋 ", "Potion Shop"), T("夜の店 ", "Night Shop"),
+ T("路地裏の店 ", "Back Alley Shop"), T("盾の店 ", "Shield Shop"), T("大人の店 ", "Adult Shop"),
+ T("タロンの店 ", "Talon Shop"), T("ゾーラの店 ", "Zora Shop"), T("ゴロン夜の店", "Goron Night Shop"),
+ T("インゴーの店", "Ingo Store"), T("お面屋 ", "Mask Shop"),
};
#endif
@@ -612,7 +606,8 @@ void EnOssan_Init(Actor* thisx, PlayState* play) {
if (this->actor.params > OSSAN_TYPE_MASK && this->actor.params < OSSAN_TYPE_KOKIRI) {
Actor_Kill(&this->actor);
PRINTF_COLOR_ERROR();
- PRINTF("引数がおかしいよ(arg_data=%d)!!\n", this->actor.params);
+ PRINTF(T("引数がおかしいよ(arg_data=%d)!!\n", "The arguments are strange (arg_data=%d)!!\n"),
+ this->actor.params);
PRINTF_RST();
ASSERT(0, "0", "../z_en_oB1.c", 1246);
return;
@@ -641,7 +636,7 @@ void EnOssan_Init(Actor* thisx, PlayState* play) {
if (this->objectSlot1 < 0) {
Actor_Kill(&this->actor);
PRINTF_COLOR_ERROR();
- PRINTF("バンクが無いよ!!(%s)\n", sShopkeeperPrintName[this->actor.params]);
+ PRINTF(T("バンクが無いよ!!(%s)\n", "There is no bank!! (%s)\n"), sShopkeeperPrintName[this->actor.params]);
PRINTF_RST();
ASSERT(0, "0", "../z_en_oB1.c", 1284);
return;
@@ -650,7 +645,8 @@ void EnOssan_Init(Actor* thisx, PlayState* play) {
if (EnOssan_TryGetObjBankIndices(this, play, objectIds) == 0) {
Actor_Kill(&this->actor);
PRINTF_COLOR_ERROR();
- PRINTF("予備バンクが無いよ!!(%s)\n", sShopkeeperPrintName[this->actor.params]);
+ PRINTF(T("予備バンクが無いよ!!(%s)\n", "There is no spare bank!! (%s)\n"),
+ sShopkeeperPrintName[this->actor.params]);
PRINTF_RST();
ASSERT(0, "0", "../z_en_oB1.c", 1295);
return;
@@ -678,8 +674,8 @@ void EnOssan_UpdateCursorPos(PlayState* play, EnOssan* this) {
void EnOssan_EndInteraction(PlayState* play, EnOssan* this) {
Player* player = GET_PLAYER(play);
- // "End of conversation!"
- PRINTF(VT_FGCOL(YELLOW) "%s[%d]:★★★ 会話終了!! ★★★" VT_RST "\n", "../z_en_oB1.c", 1337);
+ PRINTF(VT_FGCOL(YELLOW) T("%s[%d]:★★★ 会話終了!! ★★★", "%s[%d]:★★★ End of conversation!! ★★★") VT_RST "\n",
+ "../z_en_oB1.c", 1337);
YREG(31) = 0;
Actor_TalkOfferAccepted(&this->actor, play);
play->msgCtx.msgMode = MSGMODE_TEXT_CLOSING;
@@ -766,8 +762,7 @@ void EnOssan_State_Idle(EnOssan* this, PlayState* play, Player* player) {
this->headTargetRot = this->actor.yawTowardsPlayer - this->actor.shape.rot.y;
if (Actor_TalkOfferAccepted(&this->actor, play)) {
- // "Start conversation!!"
- PRINTF(VT_FGCOL(YELLOW) "★★★ 会話開始!! ★★★" VT_RST "\n");
+ PRINTF(VT_FGCOL(YELLOW) T("★★★ 会話開始!! ★★★", "★★★ Start conversation!! ★★★") VT_RST "\n");
player->stateFlags2 |= PLAYER_STATE2_29;
Play_SetShopBrowsingViewpoint(play);
EnOssan_SetStateStartShopping(play, this, false);
@@ -956,8 +951,7 @@ void EnOssan_State_StartConversation(EnOssan* this, PlayState* play, Player* pla
}
if (!EnOssan_TestEndInteraction(this, play, &play->state.input[0])) {
- // "Shop around by moving the stick left and right"
- PRINTF("「スティック左右で品物みてくれ!」\n");
+ PRINTF(T("「スティック左右で品物みてくれ!」\n", "「Shop around by moving the stick left and right!」\n"));
EnOssan_StartShopping(play, this);
}
}
@@ -2146,14 +2140,14 @@ void EnOssan_InitActionFunc(EnOssan* this, PlayState* play) {
if (this->shelves == NULL) {
PRINTF_COLOR_ERROR();
- // "Warning!! There are no shelves!!"
- PRINTF("★★★ 警告!! 棚がないよ!! ★★★\n");
+ PRINTF(T("★★★ 警告!! 棚がないよ!! ★★★\n", "★★★ Warning!! There are no shelves!! ★★★\n"));
PRINTF_RST();
return;
}
- // "Shopkeeper (params) init"
- PRINTF(VT_FGCOL(YELLOW) "◇◇◇ 店のおやじ( %d ) 初期設定 ◇◇◇" VT_RST "\n", this->actor.params);
+ PRINTF(VT_FGCOL(YELLOW) T("◇◇◇ 店のおやじ( %d ) 初期設定 ◇◇◇", "◇◇◇ Shopkeeper ( %d ) initial setting ◇◇◇")
+ VT_RST "\n",
+ this->actor.params);
this->actor.world.pos.x += sShopkeeperPositionOffsets[this->actor.params].x;
this->actor.world.pos.y += sShopkeeperPositionOffsets[this->actor.params].y;
diff --git a/src/overlays/actors/ovl_En_Po_Desert/z_en_po_desert.c b/src/overlays/actors/ovl_En_Po_Desert/z_en_po_desert.c
index 282d6249f..8110c00f3 100644
--- a/src/overlays/actors/ovl_En_Po_Desert/z_en_po_desert.c
+++ b/src/overlays/actors/ovl_En_Po_Desert/z_en_po_desert.c
@@ -43,7 +43,7 @@ ActorProfile En_Po_Desert_Profile = {
/**/ EnPoDesert_Draw,
};
-static ColliderCylinderInit sColliderInit = {
+static ColliderCylinderInit sColliderCylinderInit = {
{
COL_MATERIAL_HIT3,
AT_NONE,
@@ -76,7 +76,7 @@ void EnPoDesert_Init(Actor* thisx, PlayState* play) {
Actor_ProcessInitChain(&this->actor, sInitChain);
SkelAnime_Init(play, &this->skelAnime, &gPoeFieldSkel, &gPoeFieldFloatAnim, this->jointTable, this->morphTable, 10);
Collider_InitCylinder(play, &this->collider);
- Collider_SetCylinder(play, &this->collider, &this->actor, &sColliderInit);
+ Collider_SetCylinder(play, &this->collider, &this->actor, &sColliderCylinderInit);
this->lightColor.r = 255;
this->lightColor.g = 255;
this->lightColor.b = 210;
diff --git a/src/overlays/actors/ovl_En_Reeba/z_en_reeba.c b/src/overlays/actors/ovl_En_Reeba/z_en_reeba.c
index 438c57d11..95e198587 100644
--- a/src/overlays/actors/ovl_En_Reeba/z_en_reeba.c
+++ b/src/overlays/actors/ovl_En_Reeba/z_en_reeba.c
@@ -17,6 +17,7 @@
#include "regs.h"
#include "sfx.h"
#include "terminal.h"
+#include "translation.h"
#include "z_en_item00.h"
#include "z_lib.h"
#include "z64debug_display.h"
@@ -147,8 +148,8 @@ void EnReeba_Init(Actor* thisx, PlayState* play) {
this->scale *= 1.5f;
this->collider.dim.radius = 35;
this->collider.dim.height = 45;
- // "Reeba Boss Appears %f"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ リーバぼす登場 ☆☆☆☆☆ %f\n" VT_RST, this->scale);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ リーバぼす登場 ☆☆☆☆☆ %f\n", "☆☆☆☆☆ Reeba boss appears ☆☆☆☆☆ %f\n") VT_RST,
+ this->scale);
this->actor.colChkInfo.health = 20;
this->collider.elem.atDmgInfo.effect = 4;
this->collider.elem.atDmgInfo.damage = 16;
@@ -520,9 +521,10 @@ void EnReeba_Die(EnReeba* this, PlayState* play) {
if (spawner->killCount < 10) {
spawner->killCount++;
}
- // "How many are dead?"
PRINTF("\n\n");
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 何匹DEAD? ☆☆☆☆☆%d\n" VT_RST, spawner->killCount);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 何匹DEAD? ☆☆☆☆☆%d\n", "☆☆☆☆☆ How many are DEAD? ☆☆☆☆☆%d\n")
+ VT_RST,
+ spawner->killCount);
PRINTF("\n\n");
}
diff --git a/src/overlays/actors/ovl_En_Rr/z_en_rr.c b/src/overlays/actors/ovl_En_Rr/z_en_rr.c
index b4e136a75..ad19ebe44 100644
--- a/src/overlays/actors/ovl_En_Rr/z_en_rr.c
+++ b/src/overlays/actors/ovl_En_Rr/z_en_rr.c
@@ -16,6 +16,7 @@
#include "sfx.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "versions.h"
#include "z_en_item00.h"
#include "z_lib.h"
@@ -468,9 +469,9 @@ void EnRr_CollisionCheck(EnRr* this, PlayState* play) {
dropType++; // magic jar
FALLTHROUGH;
case RR_DMG_NORMAL:
- // "ouch"
- PRINTF(VT_FGCOL(RED) "いてっ( %d : LIFE %d : DAMAGE %d : %x )!!" VT_RST "\n", this->frameCount,
- this->actor.colChkInfo.health, this->actor.colChkInfo.damage,
+ PRINTF(VT_FGCOL(RED) T("いてっ( %d : LIFE %d : DAMAGE %d : %x )!!",
+ "ouch ( %d : LIFE %d : DAMAGE %d : %x )!!") VT_RST "\n",
+ this->frameCount, this->actor.colChkInfo.health, this->actor.colChkInfo.damage,
this->actor.colChkInfo.damageEffect);
this->stopScroll = false;
Actor_ApplyDamage(&this->actor);
@@ -532,8 +533,7 @@ void EnRr_CollisionCheck(EnRr* this, PlayState* play) {
((this->collider1.base.ocFlags1 & OC1_HIT) || (this->collider2.base.ocFlags1 & OC1_HIT))) {
this->collider1.base.ocFlags1 &= ~OC1_HIT;
this->collider2.base.ocFlags1 &= ~OC1_HIT;
- // "catch"
- PRINTF(VT_FGCOL(GREEN) "キャッチ(%d)!!" VT_RST "\n", this->frameCount);
+ PRINTF(VT_FGCOL(GREEN) T("キャッチ(%d)!!", "catch (%d)!!") VT_RST "\n", this->frameCount);
if (play->grabPlayer(play, player)) {
player->actor.parent = &this->actor;
this->stopScroll = false;
@@ -714,8 +714,7 @@ void EnRr_Death(EnRr* this, PlayState* play) {
Item_DropCollectible(play, &dropPos, ITEM00_TUNIC_ZORA);
break;
}
- // "dropped"
- PRINTF(VT_FGCOL(GREEN) "「%s」が出た!!" VT_RST "\n", sDropNames[this->dropType]);
+ PRINTF(VT_FGCOL(GREEN) T("「%s」が出た!!", "「%s」dropped!!") VT_RST "\n", sDropNames[this->dropType]);
switch (this->dropType) {
case RR_DROP_MAGIC:
Item_DropCollectible(play, &dropPos, ITEM00_MAGIC_SMALL);
diff --git a/src/overlays/actors/ovl_En_Ru1/z_en_ru1.c b/src/overlays/actors/ovl_En_Ru1/z_en_ru1.c
index 85ef77847..0e4573f90 100644
--- a/src/overlays/actors/ovl_En_Ru1/z_en_ru1.c
+++ b/src/overlays/actors/ovl_En_Ru1/z_en_ru1.c
@@ -322,8 +322,8 @@ BgBdanObjects* EnRu1_FindSwitch(PlayState* play) {
}
actorIt = actorIt->next;
}
- // "There is no stand"
- PRINTF(VT_FGCOL(RED) "お立ち台が無い!!!!!!!!!!!!!!!!!!!!!!!!!\n" VT_RST);
+ PRINTF(VT_FGCOL(RED) T("お立ち台が無い!!!!!!!!!!!!!!!!!!!!!!!!!\n", "There is no stand!!!!!!!!!!!!!!!!!!!!!!!!!\n")
+ VT_RST);
return NULL;
}
@@ -2246,11 +2246,9 @@ void func_80AEFF94(EnRu1* this, PlayState* play) {
this->roomNum1 = actorRoom;
this->roomNum3 = actorRoom;
this->roomNum2 = actorRoom;
- // "Ruto switch set"
- PRINTF("スイッチルトセット!!!!!!!!!!!!!!!!!!!!!!\n");
+ PRINTF(T("スイッチルトセット!!!!!!!!!!!!!!!!!!!!!!\n", "Ruto switch set!!!!!!!!!!!!!!!!!!!!!!\n"));
} else {
- // "Ruto switch not set"
- PRINTF("スイッチルトセットしない!!!!!!!!!!!!!!!!!!!!!!\n");
+ PRINTF(T("スイッチルトセットしない!!!!!!!!!!!!!!!!!!!!!!\n", "Ruto switch not set!!!!!!!!!!!!!!!!!!!!!!\n"));
Actor_Kill(&this->actor);
}
}
@@ -2313,8 +2311,7 @@ void EnRu1_Init(Actor* thisx, PlayState* play) {
#endif
default:
Actor_Kill(&this->actor);
- // "Relevant arge_data = %d unacceptable"
- PRINTF("該当 arge_data = %d 無し\n", func_80AEADF0(this));
+ PRINTF(T("該当 arge_data = %d 無し\n", "Relevant arge_data = %d unacceptable\n"), func_80AEADF0(this));
break;
}
}
@@ -2340,8 +2337,8 @@ s32 EnRu1_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p
EnRu1* this = (EnRu1*)thisx;
if ((this->unk_290 < 0) || (this->unk_290 > 0) || (*sPreLimbDrawFuncs[this->unk_290] == NULL)) {
- // "Neck rotation mode is improper!"
- PRINTF(VT_FGCOL(RED) "首回しモードがおかしい!!!!!!!!!!!!!!!!!!!!!!!!!\n" VT_RST);
+ PRINTF(VT_FGCOL(RED) T("首回しモードがおかしい!!!!!!!!!!!!!!!!!!!!!!!!!\n",
+ "Neck rotation mode is improper!!!!!!!!!!!!!!!!!!!!!!!!!\n") VT_RST);
} else {
sPreLimbDrawFuncs[this->unk_290](this, play, limbIndex, rot);
}
diff --git a/src/overlays/actors/ovl_En_Ru2/z_en_ru2.c b/src/overlays/actors/ovl_En_Ru2/z_en_ru2.c
index db44d32ed..b6c7405a0 100644
--- a/src/overlays/actors/ovl_En_Ru2/z_en_ru2.c
+++ b/src/overlays/actors/ovl_En_Ru2/z_en_ru2.c
@@ -703,8 +703,8 @@ void EnRu2_NextCreditsAction(EnRu2* this, PlayState* play) {
EnRu2_SetupTurnHeadDownLeftAnimation(this);
break;
default:
- // "There is no such action!"
- PRINTF("En_Ru2_inEnding_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
+ PRINTF(T("En_Ru2_inEnding_Check_DemoMode:そんな動作は無い!!!!!!!!\n",
+ "En_Ru2_inEnding_Check_DemoMode: There is no such action!!!!!!!!\n"));
break;
}
this->cueId = nextCueId;
diff --git a/src/overlays/actors/ovl_En_Sb/z_en_sb.c b/src/overlays/actors/ovl_En_Sb/z_en_sb.c
index 152f5ea75..52e3134b6 100644
--- a/src/overlays/actors/ovl_En_Sb/z_en_sb.c
+++ b/src/overlays/actors/ovl_En_Sb/z_en_sb.c
@@ -12,6 +12,7 @@
#include "rand.h"
#include "sfx.h"
#include "terminal.h"
+#include "translation.h"
#include "z_en_item00.h"
#include "z_lib.h"
#include "z64effect.h"
@@ -277,8 +278,7 @@ void EnSb_TurnAround(EnSb* this, PlayState* play) {
EnSb_SpawnBubbles(play, this);
this->bouncesLeft = 3;
EnSb_SetupLunge(this);
- // "Attack!!"
- PRINTF("アタァ〜ック!!\n");
+ PRINTF(T("アタァ〜ック!!\n", "Attack!!\n"));
}
}
@@ -322,7 +322,7 @@ void EnSb_Bounce(EnSb* this, PlayState* play) {
this->actor.speed = 0.0f;
this->timer = 1;
EnSb_SetupWaitClosed(this);
- PRINTF(VT_FGCOL(RED) "攻撃終了!!" VT_RST "\n"); // "Attack Complete!"
+ PRINTF(VT_FGCOL(RED) T("攻撃終了!!", "Attack complete!!") VT_RST "\n");
}
}
}
diff --git a/src/overlays/actors/ovl_En_Ssh/z_en_ssh.c b/src/overlays/actors/ovl_En_Ssh/z_en_ssh.c
index 43a59dce4..95abf5237 100644
--- a/src/overlays/actors/ovl_En_Ssh/z_en_ssh.c
+++ b/src/overlays/actors/ovl_En_Ssh/z_en_ssh.c
@@ -510,16 +510,16 @@ s32 EnSsh_CheckHitFront(EnSsh* this) {
}
s32 EnSsh_CheckHitBack(EnSsh* this, PlayState* play) {
- ColliderCylinder* cyl = &this->colliderCylinders[0];
+ ColliderCylinder* collider = &this->colliderCylinders[0];
s32 hit = false;
- if (cyl->base.acFlags & AC_HIT) {
- cyl->base.acFlags &= ~AC_HIT;
+ if (collider->base.acFlags & AC_HIT) {
+ collider->base.acFlags &= ~AC_HIT;
hit = true;
}
- cyl = &this->colliderCylinders[1];
- if (cyl->base.acFlags & AC_HIT) {
- cyl->base.acFlags &= ~AC_HIT;
+ collider = &this->colliderCylinders[1];
+ if (collider->base.acFlags & AC_HIT) {
+ collider->base.acFlags &= ~AC_HIT;
hit = true;
}
if (!hit) {
diff --git a/src/overlays/actors/ovl_En_St/z_en_st.c b/src/overlays/actors/ovl_En_St/z_en_st.c
index 7f8bf6497..d0e8f79ec 100644
--- a/src/overlays/actors/ovl_En_St/z_en_st.c
+++ b/src/overlays/actors/ovl_En_St/z_en_st.c
@@ -439,21 +439,21 @@ s32 EnSt_CheckHitFrontside(EnSt* this) {
}
s32 EnSt_CheckHitBackside(EnSt* this, PlayState* play) {
- ColliderCylinder* cyl = &this->colliderCylinders[0];
+ ColliderCylinder* collider = &this->colliderCylinders[0];
s32 flags = 0; // damage flags from colliders 0 and 1
s32 hit = false;
- if (cyl->base.acFlags & AC_HIT) {
- cyl->base.acFlags &= ~AC_HIT;
+ if (collider->base.acFlags & AC_HIT) {
+ collider->base.acFlags &= ~AC_HIT;
hit = true;
- flags |= cyl->elem.acHitElem->atDmgInfo.dmgFlags;
+ flags |= collider->elem.acHitElem->atDmgInfo.dmgFlags;
}
- cyl = &this->colliderCylinders[1];
- if (cyl->base.acFlags & AC_HIT) {
- cyl->base.acFlags &= ~AC_HIT;
+ collider = &this->colliderCylinders[1];
+ if (collider->base.acFlags & AC_HIT) {
+ collider->base.acFlags &= ~AC_HIT;
hit = true;
- flags |= cyl->elem.acHitElem->atDmgInfo.dmgFlags;
+ flags |= collider->elem.acHitElem->atDmgInfo.dmgFlags;
}
if (!hit) {
diff --git a/src/overlays/actors/ovl_En_Sth/z_en_sth.c b/src/overlays/actors/ovl_En_Sth/z_en_sth.c
index 9eb1679a5..58ee87f23 100644
--- a/src/overlays/actors/ovl_En_Sth/z_en_sth.c
+++ b/src/overlays/actors/ovl_En_Sth/z_en_sth.c
@@ -12,6 +12,7 @@
#include "segmented_address.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64play.h"
#include "z64save.h"
@@ -107,18 +108,17 @@ void EnSth_Init(Actor* thisx, PlayState* play) {
s32 params = this->actor.params;
s32 objectSlot;
- PRINTF(VT_FGCOL(BLUE) "金スタル屋 no = %d\n" VT_RST, params); // "Gold Skulltula Shop"
+ PRINTF(VT_FGCOL(BLUE) T("金スタル屋 no = %d\n", "Gold Skulltula Shop no = %d\n") VT_RST, params);
if (this->actor.params == 0) {
if (gSaveContext.save.info.inventory.gsTokens < 100) {
Actor_Kill(&this->actor);
- // "Gold Skulltula Shop I still can't be a human"
- PRINTF("金スタル屋 まだ 人間に戻れない \n");
+ PRINTF(T("金スタル屋 まだ 人間に戻れない \n", "Gold Skulltula Shop I still can't be a human \n"));
return;
}
} else if (gSaveContext.save.info.inventory.gsTokens < (this->actor.params * 10)) {
Actor_Kill(&this->actor);
- // "Gold Skulltula Shop I still can't be a human"
- PRINTF(VT_FGCOL(BLUE) "金スタル屋 まだ 人間に戻れない \n" VT_RST);
+ PRINTF(VT_FGCOL(BLUE) T("金スタル屋 まだ 人間に戻れない \n", "Gold Skulltula Shop I still can't be a human \n")
+ VT_RST);
return;
}
diff --git a/src/overlays/actors/ovl_En_Syateki_Itm/z_en_syateki_itm.c b/src/overlays/actors/ovl_En_Syateki_Itm/z_en_syateki_itm.c
index ec880a3bd..3e4d43dd9 100644
--- a/src/overlays/actors/ovl_En_Syateki_Itm/z_en_syateki_itm.c
+++ b/src/overlays/actors/ovl_En_Syateki_Itm/z_en_syateki_itm.c
@@ -8,6 +8,7 @@
#include "regs.h"
#include "sfx.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64debug_display.h"
#include "z64play.h"
@@ -85,8 +86,7 @@ void EnSyatekiItm_Init(Actor* thisx, PlayState* play2) {
this->man = (EnSyatekiMan*)Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_EN_SYATEKI_MAN, 140.0f,
0.0f, 255.0f, 0, -0x4000, 0, 0);
if (this->man == NULL) {
- // "Spawn error"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ エラー原 ☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ エラー原 ☆☆☆☆ \n", "☆☆☆☆☆ Spawn error ☆☆☆☆ \n") VT_RST);
Actor_Kill(&this->actor);
return;
}
@@ -94,8 +94,7 @@ void EnSyatekiItm_Init(Actor* thisx, PlayState* play2) {
this->markers[i] = (EnExRuppy*)Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_EN_EX_RUPPY,
sRupeePos[i].x, sRupeePos[i].y, sRupeePos[i].z, 0, 0, 0, 4);
if (this->markers[i] == NULL) {
- // "Second spawn error"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ エラー原セカンド ☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ エラー原セカンド ☆☆☆☆ \n", "☆☆☆☆☆ Second spawn error ☆☆☆☆ \n") VT_RST);
Actor_Kill(&this->actor);
return;
}
@@ -246,8 +245,7 @@ void EnSyatekiItm_SpawnTargets(EnSyatekiItm* this, PlayState* play) {
&play->actorCtx, &this->actor, play, ACTOR_EN_G_SWITCH, this->targetHome[i].x, this->targetHome[i].y,
this->targetHome[i].z, 0, 0, 0, (ENGSWITCH_TARGET_RUPEE << 0xC) | 0x3F);
if (this->targets[i] == NULL) {
- // "Rupee spawn error"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ ルピーでエラー原 ☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ ルピーでエラー原 ☆☆☆☆ \n", "☆☆☆☆☆ Rupee spawn error ☆☆☆☆ \n") VT_RST);
Actor_Kill(&this->actor);
return;
}
@@ -324,17 +322,16 @@ void EnSyatekiItm_EndGame(EnSyatekiItm* this, PlayState* play) {
this->actionFunc = EnSyatekiItm_Idle;
}
if (this->signal == ENSYATEKI_START) {
- // "1 frame attack and defense!"
- PRINTF(VT_FGCOL(RED) "☆☆☆☆☆ 1フレームの攻防! ☆☆☆☆ \n" VT_RST);
- PRINTF(VT_FGCOL(RED) "☆☆☆☆☆ 1フレームの攻防! ☆☆☆☆ \n" VT_RST);
- PRINTF(VT_FGCOL(RED) "☆☆☆☆☆ 1フレームの攻防! ☆☆☆☆ \n" VT_RST);
- PRINTF(VT_FGCOL(RED) "☆☆☆☆☆ 1フレームの攻防! ☆☆☆☆ \n" VT_RST);
- PRINTF(VT_FGCOL(RED) "☆☆☆☆☆ 1フレームの攻防! ☆☆☆☆ \n" VT_RST);
- PRINTF(VT_FGCOL(RED) "☆☆☆☆☆ 1フレームの攻防! ☆☆☆☆ \n" VT_RST);
- PRINTF(VT_FGCOL(RED) "☆☆☆☆☆ 1フレームの攻防! ☆☆☆☆ \n" VT_RST);
- PRINTF(VT_FGCOL(RED) "☆☆☆☆☆ 1フレームの攻防! ☆☆☆☆ \n" VT_RST);
- PRINTF(VT_FGCOL(RED) "☆☆☆☆☆ 1フレームの攻防! ☆☆☆☆ \n" VT_RST);
- PRINTF(VT_FGCOL(RED) "☆☆☆☆☆ 1フレームの攻防! ☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(RED) T("☆☆☆☆☆ 1フレームの攻防! ☆☆☆☆ \n", "☆☆☆☆☆ 1 frame attack and defense! ☆☆☆☆ \n") VT_RST);
+ PRINTF(VT_FGCOL(RED) T("☆☆☆☆☆ 1フレームの攻防! ☆☆☆☆ \n", "☆☆☆☆☆ 1 frame attack and defense! ☆☆☆☆ \n") VT_RST);
+ PRINTF(VT_FGCOL(RED) T("☆☆☆☆☆ 1フレームの攻防! ☆☆☆☆ \n", "☆☆☆☆☆ 1 frame attack and defense! ☆☆☆☆ \n") VT_RST);
+ PRINTF(VT_FGCOL(RED) T("☆☆☆☆☆ 1フレームの攻防! ☆☆☆☆ \n", "☆☆☆☆☆ 1 frame attack and defense! ☆☆☆☆ \n") VT_RST);
+ PRINTF(VT_FGCOL(RED) T("☆☆☆☆☆ 1フレームの攻防! ☆☆☆☆ \n", "☆☆☆☆☆ 1 frame attack and defense! ☆☆☆☆ \n") VT_RST);
+ PRINTF(VT_FGCOL(RED) T("☆☆☆☆☆ 1フレームの攻防! ☆☆☆☆ \n", "☆☆☆☆☆ 1 frame attack and defense! ☆☆☆☆ \n") VT_RST);
+ PRINTF(VT_FGCOL(RED) T("☆☆☆☆☆ 1フレームの攻防! ☆☆☆☆ \n", "☆☆☆☆☆ 1 frame attack and defense! ☆☆☆☆ \n") VT_RST);
+ PRINTF(VT_FGCOL(RED) T("☆☆☆☆☆ 1フレームの攻防! ☆☆☆☆ \n", "☆☆☆☆☆ 1 frame attack and defense! ☆☆☆☆ \n") VT_RST);
+ PRINTF(VT_FGCOL(RED) T("☆☆☆☆☆ 1フレームの攻防! ☆☆☆☆ \n", "☆☆☆☆☆ 1 frame attack and defense! ☆☆☆☆ \n") VT_RST);
+ PRINTF(VT_FGCOL(RED) T("☆☆☆☆☆ 1フレームの攻防! ☆☆☆☆ \n", "☆☆☆☆☆ 1 frame attack and defense! ☆☆☆☆ \n") VT_RST);
this->signal = ENSYATEKI_NONE;
this->actionFunc = EnSyatekiItm_Idle;
}
diff --git a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c
index f2744b5d5..5829aa68f 100644
--- a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c
+++ b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c
@@ -10,6 +10,7 @@
#include "seqcmd.h"
#include "sequence.h"
#include "terminal.h"
+#include "translation.h"
#include "z64play.h"
#include "z64player.h"
#include "z64save.h"
@@ -173,8 +174,8 @@ void EnSyatekiMan_Init(Actor* thisx, PlayState* play) {
EnSyatekiMan* this = (EnSyatekiMan*)thisx;
PRINTF("\n\n");
- // "Old man appeared!! Muhohohohohohohon"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 親父登場!!むほほほほほほほーん ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 親父登場!!むほほほほほほほーん ☆☆☆☆☆ \n",
+ "☆☆☆☆☆ Old man appears!! Muhohohohohohoon ☆☆☆☆☆ \n") VT_RST);
this->actor.attentionRangeType = ATTENTION_RANGE_1;
Actor_SetScale(&this->actor, 0.01f);
SkelAnime_InitFlex(play, &this->skelAnime, &gObjectOssanSkel, &gObjectOssanAnim_000338, this->jointTable,
@@ -421,8 +422,7 @@ void EnSyatekiMan_GivePrize(EnSyatekiMan* this, PlayState* play) {
void EnSyatekiMan_FinishPrize(EnSyatekiMan* this, PlayState* play) {
SkelAnime_Update(&this->skelAnime);
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) {
- // "Successful completion"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 正常終了 ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 正常終了 ☆☆☆☆☆ \n", "☆☆☆☆☆ Normal termination ☆☆☆☆☆ \n") VT_RST);
if (!LINK_IS_ADULT) {
SET_ITEMGETINF(ITEMGETINF_0D);
} else if ((this->getItemId == GI_QUIVER_40) || (this->getItemId == GI_QUIVER_50)) {
@@ -444,8 +444,7 @@ void EnSyatekiMan_RestartGame(EnSyatekiMan* this, PlayState* play) {
gallery->signal = ENSYATEKI_START;
this->gameResult = SYATEKI_RESULT_NONE;
this->actionFunc = EnSyatekiMan_WaitForGame;
- // "Let's try again! Baby!"
- PRINTF(VT_FGCOL(BLUE) "再挑戦だぜ!ベイビー!" VT_RST "\n");
+ PRINTF(VT_FGCOL(BLUE) T("再挑戦だぜ!ベイビー!", "Let's try again! Baby!") VT_RST "\n");
}
}
}
diff --git a/src/overlays/actors/ovl_En_Syateki_Niw/z_en_syateki_niw.c b/src/overlays/actors/ovl_En_Syateki_Niw/z_en_syateki_niw.c
index 970ebb32d..5eca8ac94 100644
--- a/src/overlays/actors/ovl_En_Syateki_Niw/z_en_syateki_niw.c
+++ b/src/overlays/actors/ovl_En_Syateki_Niw/z_en_syateki_niw.c
@@ -15,6 +15,7 @@
#include "sfx.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64effect.h"
#include "z64play.h"
@@ -96,13 +97,11 @@ void EnSyatekiNiw_Init(Actor* thisx, PlayState* play) {
Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit);
if (this->minigameType == SYATEKI_MINIGAME_ARCHERY) {
PRINTF("\n\n");
- // "Archery range chicken"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 射的場鶏 ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 射的場鶏 ☆☆☆☆☆ \n", "☆☆☆☆☆ Archery range chicken ☆☆☆☆☆ \n") VT_RST);
Actor_SetScale(&this->actor, 0.01f);
} else {
PRINTF("\n\n");
- // "Bomb chicken"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ ボムにわ! ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ ボムにわ! ☆☆☆☆☆ \n", "☆☆☆☆☆ Bomb chicken! ☆☆☆☆☆ \n") VT_RST);
this->actor.colChkInfo.mass = MASS_IMMOVABLE;
Actor_SetScale(&this->actor, 0.01f);
}
diff --git a/src/overlays/actors/ovl_En_Ta/z_en_ta.c b/src/overlays/actors/ovl_En_Ta/z_en_ta.c
index 68335d64b..fd4f5b91c 100644
--- a/src/overlays/actors/ovl_En_Ta/z_en_ta.c
+++ b/src/overlays/actors/ovl_En_Ta/z_en_ta.c
@@ -20,6 +20,7 @@
#include "sfx.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64audio.h"
#include "z64face_reaction.h"
@@ -176,8 +177,7 @@ void EnTa_Init(Actor* thisx, PlayState* play2) {
switch (this->actor.params) {
case ENTA_IN_KAKARIKO:
- // "Exile Talon"
- PRINTF(VT_FGCOL(CYAN) " 追放タロン \n" VT_RST);
+ PRINTF(VT_FGCOL(CYAN) T(" 追放タロン \n", " Exile Talon \n") VT_RST);
if (GET_EVENTCHKINF(EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO)) {
Actor_Kill(&this->actor);
} else if (!LINK_IS_ADULT) {
@@ -197,15 +197,14 @@ void EnTa_Init(Actor* thisx, PlayState* play2) {
break;
case ENTA_RETURNED_FROM_KAKARIKO:
- // "Return Talon"
- PRINTF(VT_FGCOL(CYAN) " 出戻りタロン \n" VT_RST);
+ PRINTF(VT_FGCOL(CYAN) T(" 出戻りタロン \n", " Return Talon \n") VT_RST);
if (!GET_EVENTCHKINF(EVENTCHKINF_TALON_RETURNED_FROM_KAKARIKO)) {
Actor_Kill(&this->actor);
} else if (!LINK_IS_ADULT) {
Actor_Kill(&this->actor);
} else if (play->sceneId == SCENE_STABLE && !IS_DAY) {
Actor_Kill(&this->actor);
- PRINTF(VT_FGCOL(CYAN) " 夜はいない \n" VT_RST);
+ PRINTF(VT_FGCOL(CYAN) T(" 夜はいない \n", " He's not here at night \n") VT_RST);
} else {
EnTa_SetupAction(this, EnTa_IdleAtRanch, EnTa_AnimRepeatCurrent);
this->eyeIndex = TALON_EYE_INDEX_OPEN;
@@ -215,8 +214,7 @@ void EnTa_Init(Actor* thisx, PlayState* play2) {
break;
default: // Child era Talon
- // "Other Talon"
- PRINTF(VT_FGCOL(CYAN) " その他のタロン \n" VT_RST);
+ PRINTF(VT_FGCOL(CYAN) T(" その他のタロン \n", " Other Talon \n") VT_RST);
if (play->sceneId == SCENE_HYRULE_CASTLE) {
if (GET_EVENTCHKINF(EVENTCHKINF_TALON_RETURNED_FROM_CASTLE)) {
Actor_Kill(&this->actor);
diff --git a/src/overlays/actors/ovl_En_Takara_Man/z_en_takara_man.c b/src/overlays/actors/ovl_En_Takara_Man/z_en_takara_man.c
index 8d51dae45..b61e51abd 100644
--- a/src/overlays/actors/ovl_En_Takara_Man/z_en_takara_man.c
+++ b/src/overlays/actors/ovl_En_Takara_Man/z_en_takara_man.c
@@ -12,6 +12,7 @@
#include "rand.h"
#include "segmented_address.h"
#include "terminal.h"
+#include "translation.h"
#include "versions.h"
#include "z64play.h"
#include "z64save.h"
@@ -56,14 +57,14 @@ void EnTakaraMan_Init(Actor* thisx, PlayState* play) {
if (sTakaraIsInitialized) {
Actor_Kill(&this->actor);
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ もういてる原 ☆☆☆☆☆ \n" VT_RST); // "Already initialized"
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ もういてる原 ☆☆☆☆☆ \n", "☆☆☆☆☆ Already initialized ☆☆☆☆☆ \n") VT_RST);
return;
}
sTakaraIsInitialized = true;
PRINTF("\n\n");
- // "Bun! %x" (needs a better translation)
- PRINTF(VT_FGCOL(MAGENTA) "☆☆☆☆☆ ばぅん! ☆☆☆☆☆ %x\n" VT_RST, play->actorCtx.flags.chest);
+ PRINTF(VT_FGCOL(MAGENTA) T("☆☆☆☆☆ ばぅん! ☆☆☆☆☆ %x\n", "☆☆☆☆☆ Bang! ☆☆☆☆☆ %x\n") VT_RST,
+ play->actorCtx.flags.chest);
play->actorCtx.flags.chest = 0;
gSaveContext.save.info.inventory.dungeonKeys[gSaveContext.mapIndex] = -1;
SkelAnime_InitFlex(play, &this->skelAnime, &object_ts_Skel_004FE0, &object_ts_Anim_000498, this->jointTable,
diff --git a/src/overlays/actors/ovl_En_Test/z_en_test.c b/src/overlays/actors/ovl_En_Test/z_en_test.c
index 61628f342..17a18d8a6 100644
--- a/src/overlays/actors/ovl_En_Test/z_en_test.c
+++ b/src/overlays/actors/ovl_En_Test/z_en_test.c
@@ -192,7 +192,7 @@ static ColliderCylinderInit sShieldColliderInit = {
{ 20, 70, -50, { 0, 0, 0 } },
};
-static ColliderQuadInit sSwordColliderInit = {
+static ColliderQuadInit sSwordColliderQuadInit = {
{
COL_MATERIAL_NONE,
AT_ON | AT_TYPE_ENEMY,
@@ -294,7 +294,7 @@ void EnTest_Init(Actor* thisx, PlayState* play) {
Collider_SetCylinder(play, &this->shieldCollider, &this->actor, &sShieldColliderInit);
Collider_InitQuad(play, &this->swordCollider);
- Collider_SetQuad(play, &this->swordCollider, &this->actor, &sSwordColliderInit);
+ Collider_SetQuad(play, &this->swordCollider, &this->actor, &sSwordColliderQuadInit);
this->actor.colChkInfo.mass = MASS_HEAVY;
this->actor.colChkInfo.health = 10;
diff --git a/src/overlays/actors/ovl_En_Tite/z_en_tite.c b/src/overlays/actors/ovl_En_Tite/z_en_tite.c
index 3435b040f..71ea089bb 100644
--- a/src/overlays/actors/ovl_En_Tite/z_en_tite.c
+++ b/src/overlays/actors/ovl_En_Tite/z_en_tite.c
@@ -17,6 +17,7 @@
#include "sfx.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "z_en_item00.h"
#include "z_lib.h"
#include "z64effect.h"
@@ -226,8 +227,9 @@ void EnTite_Destroy(Actor* thisx, PlayState* play) {
spawner->curNumSpawn--;
}
PRINTF("\n\n");
- // "Number of simultaneous occurrences"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 同時発生数 ☆☆☆☆☆%d\n" VT_RST, spawner->curNumSpawn);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 同時発生数 ☆☆☆☆☆%d\n", "☆☆☆☆☆ Number of simultaneous occurrences ☆☆☆☆☆%d\n")
+ VT_RST,
+ spawner->curNumSpawn);
PRINTF("\n\n");
}
Collider_DestroyJntSph(play, &this->collider);
diff --git a/src/overlays/actors/ovl_En_Tubo_Trap/z_en_tubo_trap.c b/src/overlays/actors/ovl_En_Tubo_Trap/z_en_tubo_trap.c
index 31ae17819..7ff6013e4 100644
--- a/src/overlays/actors/ovl_En_Tubo_Trap/z_en_tubo_trap.c
+++ b/src/overlays/actors/ovl_En_Tubo_Trap/z_en_tubo_trap.c
@@ -12,6 +12,7 @@
#include "regs.h"
#include "sfx.h"
#include "terminal.h"
+#include "translation.h"
#include "z_en_item00.h"
#include "z_lib.h"
#include "z64effect.h"
@@ -69,7 +70,7 @@ void EnTuboTrap_Init(Actor* thisx, PlayState* play) {
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 2.0f);
PRINTF("\n\n");
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 壷トラップ ☆☆☆☆☆ %x\n" VT_RST, this->actor.params); // "Urn Trap"
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 壷トラップ ☆☆☆☆☆ %x\n", "☆☆☆☆☆ Urn Trap ☆☆☆☆☆ %x\n") VT_RST, this->actor.params);
Collider_InitCylinder(play, &this->collider);
Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit);
Actor_SetScale(&this->actor, 0.1f);
@@ -234,8 +235,9 @@ void EnTuboTrap_WaitForProximity(EnTuboTrap* this, PlayState* play) {
f32 targetHeight;
if (BREG(2) != 0) {
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ わて ☆☆☆☆☆ %f\n" VT_RST, this->actor.world.pos.y); // "You"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ おいどん ☆☆☆☆☆ %f\n" VT_RST, player->actor.world.pos.y); // "Me"
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ わて ☆☆☆☆☆ %f\n", "☆☆☆☆☆ You ☆☆☆☆☆ %f\n") VT_RST, this->actor.world.pos.y);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ おいどん ☆☆☆☆☆ %f\n", "☆☆☆☆☆ Me ☆☆☆☆☆ %f\n") VT_RST,
+ player->actor.world.pos.y);
PRINTF("\n\n");
}
diff --git a/src/overlays/actors/ovl_En_Wall_Tubo/z_en_wall_tubo.c b/src/overlays/actors/ovl_En_Wall_Tubo/z_en_wall_tubo.c
index 2c3df58ec..a29a43247 100644
--- a/src/overlays/actors/ovl_En_Wall_Tubo/z_en_wall_tubo.c
+++ b/src/overlays/actors/ovl_En_Wall_Tubo/z_en_wall_tubo.c
@@ -15,6 +15,7 @@
#include "printf.h"
#include "quake.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64debug_display.h"
#include "z64effect.h"
@@ -46,8 +47,7 @@ void EnWallTubo_Init(Actor* thisx, PlayState* play) {
EnWallTubo* this = (EnWallTubo*)thisx;
PRINTF("\n\n");
- // "Wall Target"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ 壁のツボ ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ 壁のツボ ☆☆☆☆☆ \n", "☆☆☆☆☆ Points on the wall ☆☆☆☆☆ \n") VT_RST);
this->unk_164 = this->actor.world.pos;
this->actionFunc = EnWallTubo_FindGirl;
}
diff --git a/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c b/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c
index 273c743e3..498873b89 100644
--- a/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c
+++ b/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c
@@ -9,6 +9,7 @@
#include "printf.h"
#include "regs.h"
#include "terminal.h"
+#include "translation.h"
#include "versions.h"
#include "z_lib.h"
#include "z64debug_display.h"
@@ -67,14 +68,14 @@ void EnWeatherTag_Init(Actor* thisx, PlayState* play) {
switch (PARAMS_GET_U(this->actor.params, 0, 4)) {
case EN_WEATHER_TAG_TYPE_CLOUDY_MARKET:
PRINTF("\n\n");
- // "☆☆☆☆☆ (;o;) About ☆☆☆☆☆☆"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ (;o;) くらいよー ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ (;o;) くらいよー ☆☆☆☆☆ \n", "☆☆☆☆☆ (;o;) About that much ☆☆☆☆☆ \n")
+ VT_RST);
EnWeatherTag_SetupAction(this, EnWeatherTag_DisabledCloudyHyruleMarket);
break;
case EN_WEATHER_TAG_TYPE_CLOUDY_LON_LON_RANCH:
PRINTF("\n\n");
- // "☆☆☆☆☆ Cloudy (._.) Ah Melancholy ☆☆☆☆☆"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ くもり (._.) あーあ 憂鬱 ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ くもり (._.) あーあ 憂鬱 ☆☆☆☆☆ \n",
+ "☆☆☆☆☆ Cloudy (._.) Ah Melancholy ☆☆☆☆☆ \n") VT_RST);
if (Flags_GetEventChkInf(EVENTCHKINF_EPONA_OBTAINED)) {
Actor_Kill(&this->actor);
}
@@ -82,8 +83,8 @@ void EnWeatherTag_Init(Actor* thisx, PlayState* play) {
break;
case EN_WEATHER_TAG_TYPE_SNOW_ZORAS_DOMAIN:
PRINTF("\n\n");
- // "☆☆☆☆☆ Yukigafuru You won't come (._.) ☆☆☆☆☆"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ ゆきがふるー あなたはこないー (._.) ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ ゆきがふるー あなたはこないー (._.) ☆☆☆☆☆ \n",
+ "☆☆☆☆☆ The snow is falling... You're not coming... (._.) ☆☆☆☆☆ \n") VT_RST);
if (GET_EVENTCHKINF(EVENTCHKINF_4A)) {
Actor_Kill(&this->actor);
@@ -92,8 +93,8 @@ void EnWeatherTag_Init(Actor* thisx, PlayState* play) {
break;
case EN_WEATHER_TAG_TYPE_RAIN_LAKE_HYLIA:
PRINTF("\n\n");
- // "☆☆☆☆☆ Wow wa wa na wa saa ki ha (^o^) ☆☆☆☆☆"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ わわわわー なーがーさーきーはー (^o^) ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ わわわわー なーがーさーきーはー (^o^) ☆☆☆☆☆ \n",
+ "☆☆☆☆☆ Waaaa- Na-ga-sa-ki wa- (^o^) ☆☆☆☆☆ \n") VT_RST);
if (GET_EVENTCHKINF(EVENTCHKINF_4A)) {
Actor_Kill(&this->actor);
@@ -102,8 +103,8 @@ void EnWeatherTag_Init(Actor* thisx, PlayState* play) {
break;
case EN_WEATHER_TAG_TYPE_CLOUDY_DEATH_MOUNTAIN:
PRINTF("\n\n");
- // "☆☆☆☆☆ Cloudy (._.) Ah Melancholy ☆☆☆☆☆"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ くもり (._.) あーあ 憂鬱 ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(YELLOW)
+ T("☆☆☆☆☆ くもり (._.) あーあ 憂鬱 ☆☆☆☆☆ \n", "☆☆☆☆☆ Cloudy (._.) Ah Melancholy ☆☆☆☆☆") VT_RST);
if (GET_EVENTCHKINF(EVENTCHKINF_49)) {
Actor_Kill(&this->actor);
}
@@ -111,8 +112,8 @@ void EnWeatherTag_Init(Actor* thisx, PlayState* play) {
break;
case EN_WEATHER_TAG_TYPE_THUNDERSTORM_KAKARIKO:
PRINTF("\n\n");
- // "☆☆☆☆☆ Cloudy Rain Thunder (;O;) Uo Melancholy ☆☆☆☆☆"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ くもり雨雷 (;O;) うおお 憂鬱 ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ くもり雨雷 (;O;) うおお 憂鬱 ☆☆☆☆☆ \n",
+ "☆☆☆☆☆ Cloudy with rain and thunder (;O;) Wow, I'm depressed ☆☆☆☆☆ \n") VT_RST);
if (!GET_EVENTCHKINF(EVENTCHKINF_48) || !GET_EVENTCHKINF(EVENTCHKINF_49) ||
!GET_EVENTCHKINF(EVENTCHKINF_4A) || CHECK_QUEST_ITEM(QUEST_MEDALLION_SHADOW)) {
@@ -122,14 +123,14 @@ void EnWeatherTag_Init(Actor* thisx, PlayState* play) {
break;
case EN_WEATHER_TAG_TYPE_SANDSTORM_INTENSITY:
PRINTF("\n\n");
- // "☆☆☆☆☆ The desert becomes thicker ☆☆☆☆☆"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ 砂漠が濃くなります ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ 砂漠が濃くなります ☆☆☆☆☆ \n", "☆☆☆☆☆ The desert becomes thicker ☆☆☆☆☆ \n")
+ VT_RST);
EnWeatherTag_SetupAction(this, EnWeatherTag_SetSandstormIntensity);
break;
case EN_WEATHER_TAG_TYPE_THUNDERSTORM_GRAVEYARD:
PRINTF("\n\n");
- // "☆☆☆☆☆ Wow wa wa na wa saa ki ha (^o^) ☆☆☆☆☆"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ わわわわー なーがーさーきーはー (^o^) ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ わわわわー なーがーさーきーはー (^o^) ☆☆☆☆☆ \n",
+ "☆☆☆☆☆ Waaaa- Na-ga-sa-ki wa- (^o^) ☆☆☆☆☆ \n") VT_RST);
EnWeatherTag_SetupAction(this, EnWeatherTag_DisabledRainThunder);
break;
diff --git a/src/overlays/actors/ovl_En_Wf/z_en_wf.c b/src/overlays/actors/ovl_En_Wf/z_en_wf.c
index 4014597de..f7ae2db60 100644
--- a/src/overlays/actors/ovl_En_Wf/z_en_wf.c
+++ b/src/overlays/actors/ovl_En_Wf/z_en_wf.c
@@ -19,6 +19,7 @@
#include "sfx.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "z_en_item00.h"
#include "z_lib.h"
#include "z64audio.h"
@@ -292,8 +293,9 @@ void EnWf_Destroy(Actor* thisx, PlayState* play) {
}
PRINTF("\n\n");
- // "☆☆☆☆☆ Number of concurrent events ☆☆☆☆☆"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 同時発生数 ☆☆☆☆☆%d\n" VT_RST, parent->curNumSpawn);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 同時発生数 ☆☆☆☆☆%d\n", "☆☆☆☆☆ Number of simultaneous occurrences ☆☆☆☆☆%d\n")
+ VT_RST,
+ parent->curNumSpawn);
PRINTF("\n\n");
}
}
diff --git a/src/overlays/actors/ovl_En_Wonder_Talk/z_en_wonder_talk.c b/src/overlays/actors/ovl_En_Wonder_Talk/z_en_wonder_talk.c
index 0ca72b7d0..2a302eee6 100644
--- a/src/overlays/actors/ovl_En_Wonder_Talk/z_en_wonder_talk.c
+++ b/src/overlays/actors/ovl_En_Wonder_Talk/z_en_wonder_talk.c
@@ -9,6 +9,7 @@
#include "printf.h"
#include "regs.h"
#include "terminal.h"
+#include "translation.h"
#include "z64debug_display.h"
#include "z64play.h"
#include "z64save.h"
@@ -42,8 +43,8 @@ void EnWonderTalk_Init(Actor* thisx, PlayState* play) {
EnWonderTalk* this = (EnWonderTalk*)thisx;
PRINTF("\n\n");
- // "Special conversation"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 特殊会話くん ☆☆☆☆☆ %x\n" VT_RST, this->actor.params);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 特殊会話くん ☆☆☆☆☆ %x\n", "☆☆☆☆☆ Special conversation ☆☆☆☆☆ %x\n") VT_RST,
+ this->actor.params);
this->unk_150 = PARAMS_GET_U(this->actor.params, 11, 5);
this->unk_152 = PARAMS_GET_U(this->actor.params, 6, 5);
@@ -67,19 +68,17 @@ void func_80B391CC(EnWonderTalk* this, PlayState* play) {
if (this->switchFlag < 0 || !Flags_GetSwitch(play, this->switchFlag)) {
switch (this->unk_150) {
case 1:
- // "Slate GO!"
- PRINTF(VT_FGCOL(GREEN) " ☆☆☆☆☆ 石板GO! ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T(" ☆☆☆☆☆ 石板GO! ☆☆☆☆☆ \n", " ☆☆☆☆☆ Slate GO! ☆☆☆☆☆ \n") VT_RST);
this->height = 0.0f;
this->unk_15C = 80.0f;
- // "Attention coordinates"
- PRINTF(VT_FGCOL(MAGENTA) "☆☆☆☆☆ 注目座標\t \t☆☆☆☆☆ %f\n" VT_RST, 0.0f);
+ PRINTF(VT_FGCOL(MAGENTA) T("☆☆☆☆☆ 注目座標\t \t☆☆☆☆☆ %f\n",
+ "☆☆☆☆☆ Attention coordinates\t \t☆☆☆☆☆ %f\n") VT_RST,
+ 0.0f);
if (!LINK_IS_ADULT) {
this->actor.textId = 0x7040;
- // "Children"
- PRINTF(VT_FGCOL(GREEN) " ☆☆☆☆☆ こども ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T(" ☆☆☆☆☆ こども ☆☆☆☆☆ \n", " ☆☆☆☆☆ Child ☆☆☆☆☆ \n") VT_RST);
} else {
- // "Adult"
- PRINTF(VT_FGCOL(CYAN) " ☆☆☆☆☆ おとな ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(CYAN) T(" ☆☆☆☆☆ おとな ☆☆☆☆☆ \n", " ☆☆☆☆☆ Adult ☆☆☆☆☆ \n") VT_RST);
this->actor.textId = 0x7088;
}
@@ -87,29 +86,31 @@ void func_80B391CC(EnWonderTalk* this, PlayState* play) {
PRINTF(VT_FGCOL(CYAN) "☆☆☆☆☆ this->actor.talk_message ☆☆☆☆☆ %x\n" VT_RST, this->actor.textId);
break;
case 2:
- // "Diary start!"
- PRINTF(VT_FGCOL(GREEN) " ☆☆☆☆☆ 日記帳スタート! ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T(" ☆☆☆☆☆ 日記帳スタート! ☆☆☆☆☆ \n", " ☆☆☆☆☆ Diary start! ☆☆☆☆☆ \n") VT_RST);
this->actor.textId = 0x5002;
this->unk_156 = TEXT_STATE_CHOICE;
this->unk_15C = 40.0f;
this->height = 30.0f;
- // "Attention coordinates"
- PRINTF(VT_FGCOL(MAGENTA) "☆☆☆☆☆ 注目座標\t \t☆☆☆☆☆ %f\n" VT_RST, 30.0f);
+ PRINTF(VT_FGCOL(MAGENTA) T("☆☆☆☆☆ 注目座標\t \t☆☆☆☆☆ %f\n",
+ "☆☆☆☆☆ Attention coordinates\t \t☆☆☆☆☆ %f\n") VT_RST,
+ 30.0f);
break;
case 3:
this->actor.textId = 0x501E;
this->unk_156 = TEXT_STATE_EVENT;
this->height = 0.0f;
this->unk_15C = 110.0f;
- // "Attention coordinates"
- PRINTF(VT_FGCOL(MAGENTA) "☆☆☆☆☆ 注目座標\t \t☆☆☆☆☆ %f\n" VT_RST, 0.0f);
+ PRINTF(VT_FGCOL(MAGENTA) T("☆☆☆☆☆ 注目座標\t \t☆☆☆☆☆ %f\n",
+ "☆☆☆☆☆ Attention coordinates\t \t☆☆☆☆☆ %f\n") VT_RST,
+ 0.0f);
break;
case 4:
this->actor.textId = 0x5020;
this->unk_156 = TEXT_STATE_DONE;
this->height = 0.0f;
- // "Attention coordinates"
- PRINTF(VT_FGCOL(MAGENTA) "☆☆☆☆☆ 注目座標\t \t☆☆☆☆☆ %f\n" VT_RST, 0.0f);
+ PRINTF(VT_FGCOL(MAGENTA) T("☆☆☆☆☆ 注目座標\t \t☆☆☆☆☆ %f\n",
+ "☆☆☆☆☆ Attention coordinates\t \t☆☆☆☆☆ %f\n") VT_RST,
+ 0.0f);
this->unk_15C = 120.0f;
if (GET_EVENTCHKINF(EVENTCHKINF_1D)) {
Actor_Kill(&this->actor);
@@ -120,8 +121,9 @@ void func_80B391CC(EnWonderTalk* this, PlayState* play) {
this->unk_156 = TEXT_STATE_EVENT;
this->height = 0.0f;
this->unk_15C = 110.0f;
- // "Attention coordinates"
- PRINTF(VT_FGCOL(MAGENTA) "☆☆☆☆☆ 注目座標\t \t☆☆☆☆☆ %f\n" VT_RST, 0.0f);
+ PRINTF(VT_FGCOL(MAGENTA) T("☆☆☆☆☆ 注目座標\t \t☆☆☆☆☆ %f\n",
+ "☆☆☆☆☆ Attention coordinates\t \t☆☆☆☆☆ %f\n") VT_RST,
+ 0.0f);
break;
default:
this->actor.textId = 0x7072;
@@ -161,14 +163,18 @@ void func_80B3943C(EnWonderTalk* this, PlayState* play) {
if (yawDiff < 0x4000) {
if (this->unk_15A >= 2) {
PRINTF("\n\n");
- // "Save information"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ セーブ情報\t\t☆☆☆☆☆ %d\n" VT_RST, this->switchFlag);
- // "Type index"
- PRINTF(VT_FGCOL(MAGENTA) "☆☆☆☆☆ 種類インデックス\t☆☆☆☆☆ %d\n" VT_RST, this->unk_150);
- // "Actual message type"
- PRINTF(VT_FGCOL(CYAN) "☆☆☆☆☆ 実質メッセージ種類 %x\n" VT_RST, this->actor.textId);
- // "Specified range"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 指定範囲 %d\n" VT_RST, this->actor.world.rot.z);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ セーブ情報\t\t☆☆☆☆☆ %d\n", "☆☆☆☆☆ Save information\t\t☆☆☆☆☆ %d\n")
+ VT_RST,
+ this->switchFlag);
+ PRINTF(VT_FGCOL(MAGENTA) T("☆☆☆☆☆ 種類インデックス\t☆☆☆☆☆ %d\n", "☆☆☆☆☆ Type index\t☆☆☆☆☆ %d\n")
+ VT_RST,
+ this->unk_150);
+ PRINTF(VT_FGCOL(CYAN) T("☆☆☆☆☆ 実質メッセージ種類 %x\n", "☆☆☆☆☆ Actual message type %x\n")
+ VT_RST,
+ this->actor.textId);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 指定範囲 %d\n",
+ "☆☆☆☆☆ Specified range %d\n") VT_RST,
+ this->actor.world.rot.z);
PRINTF("\n\n");
}
this->unk_15A = 0;
@@ -193,18 +199,17 @@ void func_80B395F0(EnWonderTalk* this, PlayState* play) {
switch (play->msgCtx.choiceIndex) {
case 0:
if (!LINK_IS_ADULT) {
- // "I'm still a child!"
- PRINTF(VT_FGCOL(GREEN) " ☆☆☆☆☆ まだコドモなの! ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(GREEN) T(" ☆☆☆☆☆ まだコドモなの! ☆☆☆☆☆ \n",
+ " ☆☆☆☆☆ I'm still a child! ☆☆☆☆☆ \n") VT_RST);
this->actor.textId = 0x5001;
} else {
- // "I'm an adult. .. .."
- PRINTF(VT_FGCOL(YELLOW) " ☆☆☆☆☆ アダルトなの。。。 ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(YELLOW) T(" ☆☆☆☆☆ アダルトなの。。。 ☆☆☆☆☆ \n",
+ " ☆☆☆☆☆ I'm an adult... ☆☆☆☆☆ \n") VT_RST);
this->actor.textId = 0x5003;
}
break;
case 1:
- // "Out!"
- PRINTF(VT_FGCOL(MAGENTA) " ☆☆☆☆☆ はずれ! ☆☆☆☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(MAGENTA) T(" ☆☆☆☆☆ はずれ! ☆☆☆☆☆ \n", " ☆☆☆☆☆ No luck! ☆☆☆☆☆ \n") VT_RST);
this->actor.textId = 0x5004;
break;
}
diff --git a/src/overlays/actors/ovl_En_Wonder_Talk2/z_en_wonder_talk2.c b/src/overlays/actors/ovl_En_Wonder_Talk2/z_en_wonder_talk2.c
index 42d22b265..11feed7d5 100644
--- a/src/overlays/actors/ovl_En_Wonder_Talk2/z_en_wonder_talk2.c
+++ b/src/overlays/actors/ovl_En_Wonder_Talk2/z_en_wonder_talk2.c
@@ -9,6 +9,7 @@
#include "printf.h"
#include "regs.h"
#include "terminal.h"
+#include "translation.h"
#include "z64debug_display.h"
#include "z64item.h"
#include "z64play.h"
@@ -48,8 +49,8 @@ void EnWonderTalk2_Init(Actor* thisx, PlayState* play) {
EnWonderTalk2* this = (EnWonderTalk2*)thisx;
PRINTF("\n\n");
- // "Transparent message"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 透明メッセージ君 ☆☆☆☆☆ %x\n" VT_RST, this->actor.params);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 透明メッセージ君 ☆☆☆☆☆ %x\n", "☆☆☆☆☆ Transparent message ☆☆☆☆☆ %x\n") VT_RST,
+ this->actor.params);
this->baseMsgId = PARAMS_GET_U(this->actor.params, 6, 8);
if (this->actor.world.rot.z > 0) {
s32 rangeIndex = 0;
@@ -68,12 +69,12 @@ void EnWonderTalk2_Init(Actor* thisx, PlayState* play) {
this->actor.attentionRangeType = D_80B3A8E0[rangeIndex];
PRINTF("\n\n");
- // "originally?"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ 元は? ☆☆☆☆☆ %d\n" VT_RST, this->actor.world.rot.z);
- // "The range is?"
- PRINTF(VT_FGCOL(MAGENTA) "☆☆☆☆☆ レンジは? ☆☆☆☆☆ %d\n" VT_RST, this->actor.attentionRangeType);
- // "Is the range?"
- PRINTF(VT_FGCOL(CYAN) "☆☆☆☆☆ は、範囲わ? ☆☆☆☆☆ %f\n" VT_RST, this->triggerRange);
+ PRINTF(VT_FGCOL(YELLOW) T("☆☆☆☆☆ 元は? ☆☆☆☆☆ %d\n", "☆☆☆☆☆ Originally? ☆☆☆☆☆ %d\n") VT_RST,
+ this->actor.world.rot.z);
+ PRINTF(VT_FGCOL(MAGENTA) T("☆☆☆☆☆ レンジは? ☆☆☆☆☆ %d\n", "☆☆☆☆☆ The range is? ☆☆☆☆☆ %d\n") VT_RST,
+ this->actor.attentionRangeType);
+ PRINTF(VT_FGCOL(CYAN) T("☆☆☆☆☆ は、範囲わ? ☆☆☆☆☆ %f\n", "☆☆☆☆☆ The range is? ☆☆☆☆☆ %f\n") VT_RST,
+ this->triggerRange);
PRINTF("\n\n");
PRINTF("\n\n");
PRINTF("\n\n");
@@ -127,8 +128,9 @@ void func_80B3A15C(EnWonderTalk2* this, PlayState* play) {
} else if (Actor_TalkOfferAccepted(&this->actor, play)) {
if ((this->switchFlag >= 0) && (this->talkMode != 2)) {
Flags_SetSwitch(play, this->switchFlag);
- // "I saved it! All of it!"
- PRINTF(VT_FGCOL(MAGENTA) "☆☆☆☆☆ セーブしたよ!おもいっきり! %x\n" VT_RST, this->switchFlag);
+ PRINTF(VT_FGCOL(MAGENTA) T("☆☆☆☆☆ セーブしたよ!おもいっきり! %x\n", "☆☆☆☆☆ I saved it! All of it! %x\n")
+ VT_RST,
+ this->switchFlag);
}
this->actionFunc = func_80B3A10C;
@@ -140,30 +142,33 @@ void func_80B3A15C(EnWonderTalk2* this, PlayState* play) {
if (DEBUG_FEATURES && this->unk_158 >= 2) {
PRINTF("\n\n");
- // "Transparent Message Kimi Set"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 透明メッセージ君せっと %x\n" VT_RST, this->actor.params);
- // "Save Information"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ セーブ情報 \t %x\n" VT_RST, this->switchFlag);
- // "Specified message type"
- PRINTF(VT_FGCOL(MAGENTA) "☆☆☆☆☆ 指定メッセージ種類 %x\n" VT_RST, this->baseMsgId);
- // "Actual message type"
- PRINTF(VT_FGCOL(CYAN) "☆☆☆☆☆ 実質メッセージ種類 %x\n" VT_RST, this->actor.textId);
- // "Specified range"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 指定範囲 %d\n" VT_RST, this->actor.world.rot.z);
- // "Processing range"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ 処理範囲 %f\n" VT_RST, this->triggerRange);
+ PRINTF(VT_FGCOL(GREEN) T("☆☆☆☆☆ 透明メッセージ君せっと %x\n", "☆☆☆☆☆ Transparent Message Kimi Set %x\n")
+ VT_RST,
+ this->actor.params);
+ PRINTF(VT_FGCOL(YELLOW)
+ T("☆☆☆☆☆ セーブ情報 \t %x\n", "☆☆☆☆☆ Save Information \t %x\n") VT_RST,
+ this->switchFlag);
+ PRINTF(VT_FGCOL(MAGENTA) T("☆☆☆☆☆ 指定メッセージ種類 %x\n", "☆☆☆☆☆ Specified message type %x\n")
+ VT_RST,
+ this->baseMsgId);
+ PRINTF(VT_FGCOL(CYAN) T("☆☆☆☆☆ 実質メッセージ種類 %x\n", "☆☆☆☆☆ Actual message type %x\n")
+ VT_RST,
+ this->actor.textId);
+ PRINTF(VT_FGCOL(GREEN)
+ T("☆☆☆☆☆ 指定範囲 %d\n", "☆☆☆☆☆ Specified range %d\n") VT_RST,
+ this->actor.world.rot.z);
+ PRINTF(VT_FGCOL(YELLOW)
+ T("☆☆☆☆☆ 処理範囲 %f\n", "☆☆☆☆☆ Processing range %f\n") VT_RST,
+ this->triggerRange);
switch (this->talkMode) {
case 0:
- // "Normal"
- PRINTF(VT_FGCOL(MAGENTA) " ☆☆ 通常 ☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(MAGENTA) T(" ☆☆ 通常 ☆☆ \n", " ☆☆ Normal ☆☆ \n") VT_RST);
break;
case 2:
- // "Check only"
- PRINTF(VT_FGCOL(MAGENTA) " ☆☆ チェックのみ ☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(MAGENTA) T(" ☆☆ チェックのみ ☆☆ \n", " ☆☆ Check only ☆☆ \n") VT_RST);
break;
case 3:
- // "Lock only"
- PRINTF(VT_FGCOL(MAGENTA) " ☆☆ ロックのみ ☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(MAGENTA) T(" ☆☆ ロックのみ ☆☆ \n", " ☆☆ Lock only ☆☆ \n") VT_RST);
break;
}
}
@@ -176,8 +181,7 @@ void func_80B3A15C(EnWonderTalk2* this, PlayState* play) {
void func_80B3A3D4(EnWonderTalk2* this, PlayState* play) {
if (BREG(2) != 0) {
- // "Oh"
- PRINTF(VT_FGCOL(MAGENTA) "☆☆☆☆☆ わー %d\n" VT_RST, Message_GetState(&play->msgCtx));
+ PRINTF(VT_FGCOL(MAGENTA) T("☆☆☆☆☆ わー %d\n", "☆☆☆☆☆ Oh %d\n") VT_RST, Message_GetState(&play->msgCtx));
}
switch (Message_GetState(&play->msgCtx)) {
@@ -193,8 +197,9 @@ void func_80B3A3D4(EnWonderTalk2* this, PlayState* play) {
case TEXT_STATE_NONE:
if ((this->switchFlag >= 0) && (this->talkMode != 4)) {
Flags_SetSwitch(play, this->switchFlag);
- // "(Forced) I saved it! All of it!"
- PRINTF(VT_FGCOL(MAGENTA) "☆☆☆☆☆ (強制)セーブしたよ!おもいっきり! %x\n" VT_RST, this->switchFlag);
+ PRINTF(VT_FGCOL(MAGENTA) T("☆☆☆☆☆ (強制)セーブしたよ!おもいっきり! %x\n",
+ "☆☆☆☆☆ (Forced) I saved it! All of it! %x\n") VT_RST,
+ this->switchFlag);
}
if (this->talkMode == 4) {
@@ -220,8 +225,7 @@ void func_80B3A4F8(EnWonderTalk2* this, PlayState* play) {
}
} else if ((this->talkMode != 4) || !this->unk_15A) {
if (BREG(2) != 0) {
- // "distance"
- PRINTF(VT_FGCOL(MAGENTA) "☆☆☆☆☆ きょり %f\n" VT_RST, this->actor.xzDistToPlayer);
+ PRINTF(VT_FGCOL(MAGENTA) T("☆☆☆☆☆ きょり %f\n", "☆☆☆☆☆ distance %f\n") VT_RST, this->actor.xzDistToPlayer);
}
if (((this->actor.xzDistToPlayer < (40.0f + this->triggerRange)) &&
(fabsf(player->actor.world.pos.y - this->actor.world.pos.y) < 100.0f)) &&
@@ -229,30 +233,34 @@ void func_80B3A4F8(EnWonderTalk2* this, PlayState* play) {
if (DEBUG_FEATURES && this->unk_158 >= 2) {
PRINTF("\n\n");
- // "Transparent Message Kimi Seto"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 透明メッセージ君せっと %x\n" VT_RST, this->actor.params);
- // "Save Information"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ セーブ情報 \t %x\n" VT_RST, this->switchFlag);
- // "Specified message type"
- PRINTF(VT_FGCOL(MAGENTA) "☆☆☆☆☆ 指定メッセージ種類 %x\n" VT_RST, this->baseMsgId);
- // "Real message type"
- PRINTF(VT_FGCOL(CYAN) "☆☆☆☆☆ 実質メッセージ種類 %x\n" VT_RST, this->actor.textId);
- // "Specified range"
- PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 指定範囲 %d\n" VT_RST, this->actor.world.rot.z);
- // "Processing range"
- PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ 処理範囲 %f\n" VT_RST, this->triggerRange);
- // "What is your range?"
- PRINTF(VT_FGCOL(MAGENTA) "☆☆☆☆☆ レンジは? \t\t %d\n" VT_RST, this->actor.attentionRangeType);
+ PRINTF(VT_FGCOL(GREEN)
+ T("☆☆☆☆☆ 透明メッセージ君せっと %x\n", "☆☆☆☆☆ Transparent Message Kimi Seto %x\n") VT_RST,
+ this->actor.params);
+ PRINTF(VT_FGCOL(YELLOW)
+ T("☆☆☆☆☆ セーブ情報 \t %x\n", "☆☆☆☆☆ Save Information \t %x\n") VT_RST,
+ this->switchFlag);
+ PRINTF(VT_FGCOL(MAGENTA) T("☆☆☆☆☆ 指定メッセージ種類 %x\n", "☆☆☆☆☆ Specified message type %x\n")
+ VT_RST,
+ this->baseMsgId);
+ PRINTF(VT_FGCOL(CYAN) T("☆☆☆☆☆ 実質メッセージ種類 %x\n", "☆☆☆☆☆ Real message type %x\n") VT_RST,
+ this->actor.textId);
+ PRINTF(VT_FGCOL(GREEN)
+ T("☆☆☆☆☆ 指定範囲 %d\n", "☆☆☆☆☆ Specified range %d\n") VT_RST,
+ this->actor.world.rot.z);
+ PRINTF(VT_FGCOL(YELLOW)
+ T("☆☆☆☆☆ 処理範囲 %f\n", "☆☆☆☆☆ Processing range %f\n") VT_RST,
+ this->triggerRange);
+ PRINTF(VT_FGCOL(MAGENTA) T("☆☆☆☆☆ レンジは? \t\t %d\n", "☆☆☆☆☆ The range is? \t\t %d\n") VT_RST,
+ this->actor.attentionRangeType);
PRINTF("\n\n");
PRINTF("\n\n");
switch (this->talkMode) {
case 1:
- // "Compulsion"
- PRINTF(VT_FGCOL(MAGENTA) " ☆☆ 強制 ☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(MAGENTA) T(" ☆☆ 強制 ☆☆ \n", " ☆☆ Compulsion ☆☆ \n") VT_RST);
break;
case 4:
- // "Gerudo Training Grounds Forced Check Only"
- PRINTF(VT_FGCOL(RED) " ☆☆ ゲルドの修練場強制チェックのみ ☆☆ \n" VT_RST);
+ PRINTF(VT_FGCOL(RED) T(" ☆☆ ゲルドの修練場強制チェックのみ ☆☆ \n",
+ " ☆☆ Gerudo Training Grounds Forced Check Only ☆☆ \n") VT_RST);
break;
}
diff --git a/src/overlays/actors/ovl_En_Xc/z_en_xc.c b/src/overlays/actors/ovl_En_Xc/z_en_xc.c
index 764791e0d..c657a761f 100644
--- a/src/overlays/actors/ovl_En_Xc/z_en_xc.c
+++ b/src/overlays/actors/ovl_En_Xc/z_en_xc.c
@@ -376,10 +376,10 @@ void EnXc_SetupSerenadeAction(EnXc* this, PlayState* play) {
s32 pad;
this->action = SHEIK_ACTION_SERENADE;
- PRINTF("水のセレナーデ シーク誕生!!!!!!!!!!!!!!!!!!\n");
+ PRINTF(T("水のセレナーデ シーク誕生!!!!!!!!!!!!!!!!!!\n", "Water serenade Sheik's birth!!!!!!!!!!!!!!!!!!\n"));
} else {
Actor_Kill(&this->actor);
- PRINTF("水のセレナーデ シーク消滅!!!!!!!!!!!!!!!!!!\n");
+ PRINTF(T("水のセレナーデ シーク消滅!!!!!!!!!!!!!!!!!!\n", "Water serenade Sheik vanishes!!!!!!!!!!!!!!!!!!\n"));
}
}
@@ -396,10 +396,10 @@ s32 EnXc_SerenadeCS(EnXc* this, PlayState* play) {
gSaveContext.cutsceneTrigger = 1;
SET_EVENTCHKINF(EVENTCHKINF_52); // Learned Serenade of Water Flag
Item_Give(play, ITEM_SONG_SERENADE);
- PRINTF("ブーツを取った!!!!!!!!!!!!!!!!!!\n");
+ PRINTF(T("ブーツを取った!!!!!!!!!!!!!!!!!!\n", "I took the boots!!!!!!!!!!!!!!!!!!\n"));
return true;
} else {
- PRINTF("はやくブーツを取るべし!!!!!!!!!!!!!!!!!!\n");
+ PRINTF(T("はやくブーツを取るべし!!!!!!!!!!!!!!!!!!\n", "Quickly get your boots!!!!!!!!!!!!!!!!!!\n"));
return false;
}
}
@@ -1415,8 +1415,8 @@ void func_80B3F3D8(void) {
Sfx_PlaySfxCentered2(NA_SE_PL_SKIP);
}
-#pragma increment_block_number "gc-eu:128 gc-eu-mq:64 gc-jp:128 gc-jp-ce:128 gc-jp-mq:64 gc-us:128 gc-us-mq:64" \
- "ique-cn:64 ntsc-1.0:128 ntsc-1.1:128 ntsc-1.2:128 pal-1.0:128 pal-1.1:128"
+#pragma increment_block_number "gc-eu:64 gc-eu-mq:64 gc-jp:64 gc-jp-ce:64 gc-jp-mq:64 gc-us:64 gc-us-mq:64 ique-cn:64" \
+ "ntsc-1.0:128 ntsc-1.1:128 ntsc-1.2:128 pal-1.0:128 pal-1.1:128"
void EnXc_PlayDiveSFX(Vec3f* src, PlayState* play) {
static Vec3f D_80B42DA0;
@@ -2043,7 +2043,8 @@ s32 EnXc_SetupNocturneState(Actor* thisx, PlayState* play) {
Actor_Kill(thisx);
break;
default:
- PRINTF("En_Oa2_Stalker_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
+ PRINTF(T("En_Oa2_Stalker_Check_DemoMode:そんな動作は無い!!!!!!!!\n",
+ "En_Oa2_Stalker_Check_DemoMode: There is no such action!!!!!!!!\n"));
break;
}
@@ -2401,7 +2402,8 @@ void EnXc_Init(Actor* thisx, PlayState* play) {
break;
#endif
default:
- PRINTF(VT_FGCOL(RED) " En_Oa2 の arg_data がおかしい!!!!!!!!!!!!!!!!!!!!!!!!!\n" VT_RST);
+ PRINTF(VT_FGCOL(RED) T(" En_Oa2 の arg_data がおかしい!!!!!!!!!!!!!!!!!!!!!!!!!\n",
+ " En_Oa2 arg_data is wrong!!!!!!!!!!!!!!!!!!!!!!!!!\n") VT_RST);
EnXc_DoNothing(this, play);
}
}
diff --git a/src/overlays/actors/ovl_En_Zl2/z_en_zl2.c b/src/overlays/actors/ovl_En_Zl2/z_en_zl2.c
index 68eb2911a..ff7936bac 100644
--- a/src/overlays/actors/ovl_En_Zl2/z_en_zl2.c
+++ b/src/overlays/actors/ovl_En_Zl2/z_en_zl2.c
@@ -1019,7 +1019,8 @@ void func_80B50A04(EnZl2* this, PlayState* play) {
func_80B50644(this, play);
break;
default:
- PRINTF("En_Zl2_inAgain_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
+ PRINTF(T("En_Zl2_inAgain_Check_DemoMode:そんな動作は無い!!!!!!!!\n",
+ "En_Zl2_inAgain_Check_DemoMode: There is no such action!!!!!!!!\n"));
}
this->cueId = nextCueId;
}
@@ -1410,7 +1411,8 @@ void func_80B51948(EnZl2* this, PlayState* play) {
func_80B513A8(this, play);
break;
default:
- PRINTF("En_Zl2_inEnding_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
+ PRINTF(T("En_Zl2_inEnding_Check_DemoMode:そんな動作は無い!!!!!!!!\n",
+ "En_Zl2_inEnding_Check_DemoMode: There is no such action!!!!!!!!\n"));
}
this->cueId = nextCueId;
}
@@ -1574,7 +1576,8 @@ void func_80B51FA8(EnZl2* this, PlayState* play) {
Actor_Kill(&this->actor);
break;
default:
- PRINTF("En_Zl2_inRunning_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
+ PRINTF(T("En_Zl2_inRunning_Check_DemoMode:そんな動作は無い!!!!!!!!\n",
+ "En_Zl2_inRunning_Check_DemoMode: There is no such action!!!!!!!!\n"));
break;
}
this->cueId = nextCueId;
diff --git a/src/overlays/actors/ovl_En_Zl3/z_en_zl3.c b/src/overlays/actors/ovl_En_Zl3/z_en_zl3.c
index 8c624e127..d2b227168 100644
--- a/src/overlays/actors/ovl_En_Zl3/z_en_zl3.c
+++ b/src/overlays/actors/ovl_En_Zl3/z_en_zl3.c
@@ -982,7 +982,8 @@ void func_80B55444(EnZl3* this, PlayState* play) {
this->unk_328 = 1;
FALLTHROUGH;
default:
- PRINTF("En_Zl3_inFinal_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
+ PRINTF(T("En_Zl3_inFinal_Check_DemoMode:そんな動作は無い!!!!!!!!\n",
+ "En_Zl3_inFinal_Check_DemoMode: There is no such action!!!!!!!!\n"));
break;
}
this->unk_2F0 = temp_v0;
@@ -1398,7 +1399,8 @@ void func_80B564A8(EnZl3* this, PlayState* play) {
Actor_Kill(&this->actor);
break;
default:
- PRINTF("En_Zl3_inFinal2_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
+ PRINTF(T("En_Zl3_inFinal2_Check_DemoMode:そんな動作は無い!!!!!!!!\n",
+ "En_Zl3_inFinal2_Check_DemoMode: There is no such action!!!!!!!!\n"));
}
this->unk_2F0 = temp_v0;
}
@@ -1618,9 +1620,12 @@ void func_80B56F10(EnZl3* this, PlayState* play) {
pathHead += waypoint;
this->unk_30C = pathHead;
this->unk_310 = pathHead->count;
- PRINTF("En_Zl3_Get_path_info レールデータをゲットだぜ = %d!!!!!!!!!!!!!!\n", waypoint);
+ PRINTF(T("En_Zl3_Get_path_info レールデータをゲットだぜ = %d!!!!!!!!!!!!!!\n",
+ "En_Zl3_Get_path_info Got the rail data = %d!!!!!!!!!!!!!!\n"),
+ waypoint);
} else {
- PRINTF("En_Zl3_Get_path_info レールデータが無い!!!!!!!!!!!!!!!!!!!!\n");
+ PRINTF(T("En_Zl3_Get_path_info レールデータが無い!!!!!!!!!!!!!!!!!!!!\n",
+ "En_Zl3_Get_path_info No rail data!!!!!!!!!!!!!!!!!!!!\n"));
}
}
diff --git a/src/overlays/actors/ovl_Fishing/z_fishing.c b/src/overlays/actors/ovl_Fishing/z_fishing.c
index d16fa2fc5..7f3c3eb85 100644
--- a/src/overlays/actors/ovl_Fishing/z_fishing.c
+++ b/src/overlays/actors/ovl_Fishing/z_fishing.c
@@ -37,8 +37,8 @@
#include "cic6105.h"
#endif
-#pragma increment_block_number "gc-eu:32 gc-eu-mq:32 gc-jp:32 gc-jp-ce:32 gc-jp-mq:32 gc-us:32 gc-us-mq:32 ntsc-1.0:0" \
- "ntsc-1.1:0 ntsc-1.2:0 pal-1.0:0 pal-1.1:0"
+#pragma increment_block_number "gc-eu:0 gc-eu-mq:0 gc-jp:0 gc-jp-ce:0 gc-jp-mq:0 gc-us:0 gc-us-mq:0 ntsc-1.0:128" \
+ "ntsc-1.1:128 ntsc-1.2:128 pal-1.0:128 pal-1.1:128"
#define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED
diff --git a/src/overlays/actors/ovl_Magic_Fire/z_magic_fire.c b/src/overlays/actors/ovl_Magic_Fire/z_magic_fire.c
index f93ded2f0..e60e524b8 100644
--- a/src/overlays/actors/ovl_Magic_Fire/z_magic_fire.c
+++ b/src/overlays/actors/ovl_Magic_Fire/z_magic_fire.c
@@ -241,7 +241,7 @@ void MagicFire_Draw(Actor* thisx, PlayState* play) {
(u8)(s32)(120 * this->screenTintIntensity));
gDPSetAlphaDither(POLY_XLU_DISP++, G_AD_DISABLE);
gDPSetColorDither(POLY_XLU_DISP++, G_CD_DISABLE);
- gDPFillRectangle(POLY_XLU_DISP++, 0, 0, 319, 239);
+ gDPFillRectangle(POLY_XLU_DISP++, 0, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1);
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
gDPSetPrimColor(POLY_XLU_DISP++, 0, 128, 255, 200, 0, (u8)(this->alphaMultiplier * 255));
gDPSetEnvColor(POLY_XLU_DISP++, 255, 0, 0, (u8)(this->alphaMultiplier * 255));
diff --git a/src/overlays/actors/ovl_Magic_Wind/z_magic_wind.c b/src/overlays/actors/ovl_Magic_Wind/z_magic_wind.c
index 57761244b..2dca261b9 100644
--- a/src/overlays/actors/ovl_Magic_Wind/z_magic_wind.c
+++ b/src/overlays/actors/ovl_Magic_Wind/z_magic_wind.c
@@ -12,6 +12,7 @@
#include "gfx_setupdl.h"
#include "printf.h"
#include "sfx.h"
+#include "translation.h"
#include "z64curve.h"
#include "z64play.h"
#include "z64player.h"
@@ -56,8 +57,7 @@ void MagicWind_Init(Actor* thisx, PlayState* play) {
Player* player = GET_PLAYER(play);
if (!SkelCurve_Init(play, &this->skelCurve, &sSkel, &sAnim)) {
- // "Magic_Wind_Actor_ct (): Construct failed"
- PRINTF("Magic_Wind_Actor_ct():コンストラクト失敗\n");
+ PRINTF(T("Magic_Wind_Actor_ct():コンストラクト失敗\n", "Magic_Wind_Actor_ct(): Construct failed\n"));
}
this->actor.room = -1;
switch (this->actor.params) {
diff --git a/src/overlays/actors/ovl_Mir_Ray/z_mir_ray.c b/src/overlays/actors/ovl_Mir_Ray/z_mir_ray.c
index 861d72881..b89838083 100644
--- a/src/overlays/actors/ovl_Mir_Ray/z_mir_ray.c
+++ b/src/overlays/actors/ovl_Mir_Ray/z_mir_ray.c
@@ -14,6 +14,7 @@
#include "sfx.h"
#include "sys_math3d.h"
#include "sys_matrix.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64light.h"
#include "z64play.h"
@@ -180,8 +181,8 @@ void MirRay_Init(Actor* thisx, PlayState* play) {
Actor_ProcessInitChain(&this->actor, sInitChain);
ActorShape_Init(&this->actor.shape, 0.0f, NULL, 0.0f);
- // "Generation of reflectable light!"
- PRINTF("反射用 光の発生!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
+ PRINTF(T("反射用 光の発生!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n",
+ "Generation of reflectable light!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"));
LOG_NUM("this->actor.arg_data", this->actor.params, "../z_mir_ray.c", 518);
if (this->actor.params >= 0xA) {
diff --git a/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c b/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c
index 13443bffd..88638e1ed 100644
--- a/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c
+++ b/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c
@@ -492,16 +492,17 @@ void ObjBean_Init(Actor* thisx, PlayState* play) {
path = PARAMS_GET_U(this->dyna.actor.params, 8, 5);
if (path == 0x1F) {
PRINTF_COLOR_ERROR();
- // "No path data?"
- PRINTF("パスデータが無い?(%s %d)(arg_data %xH)\n", "../z_obj_bean.c", 909, this->dyna.actor.params);
+ PRINTF(T("パスデータが無い?(%s %d)(arg_data %xH)\n", "No path data? (%s %d)(arg_data %xH)\n"),
+ "../z_obj_bean.c", 909, this->dyna.actor.params);
PRINTF_RST();
Actor_Kill(&this->dyna.actor);
return;
}
if (play->pathList[path].count < 3) {
PRINTF_COLOR_ERROR();
- // "Incorrect number of path data"
- PRINTF("パスデータ数が不正(%s %d)(arg_data %xH)\n", "../z_obj_bean.c", 921, this->dyna.actor.params);
+ PRINTF(T("パスデータ数が不正(%s %d)(arg_data %xH)\n",
+ "Path data count is invalid (%s %d)(arg_data %xH)\n"),
+ "../z_obj_bean.c", 921, this->dyna.actor.params);
PRINTF_RST();
Actor_Kill(&this->dyna.actor);
return;
@@ -530,8 +531,8 @@ void ObjBean_Init(Actor* thisx, PlayState* play) {
ObjBean_SetupWaitForBean(this);
}
this->dyna.actor.world.rot.z = this->dyna.actor.home.rot.z = this->dyna.actor.shape.rot.z = 0;
- // "Magic bean tree lift"
- PRINTF("(魔法の豆の木リフト)(arg_data 0x%04x)\n", this->dyna.actor.params);
+ PRINTF(T("(魔法の豆の木リフト)(arg_data 0x%04x)\n", "(Magic beanstalk lift)(arg_data 0x%04x)\n"),
+ this->dyna.actor.params);
}
void ObjBean_Destroy(Actor* thisx, PlayState* play) {
@@ -908,8 +909,7 @@ void ObjBean_Update(Actor* thisx, PlayState* play) {
if (ObjBean_CheckForHorseTrample(this, play)) {
PRINTF_COLOR_CYAN();
- // "Horse and bean tree lift collision"
- PRINTF("馬と豆の木リフト衝突!!!\n");
+ PRINTF(T("馬と豆の木リフト衝突!!!\n", "Horse and beanstalk lift collide!!!\n"));
PRINTF_RST();
ObjBean_Break(this, play);
DynaPoly_DisableCollision(play, &play->colCtx.dyna, this->dyna.bgId);
diff --git a/src/overlays/actors/ovl_Obj_Kibako/z_obj_kibako.c b/src/overlays/actors/ovl_Obj_Kibako/z_obj_kibako.c
index e41765902..8501c29f5 100644
--- a/src/overlays/actors/ovl_Obj_Kibako/z_obj_kibako.c
+++ b/src/overlays/actors/ovl_Obj_Kibako/z_obj_kibako.c
@@ -11,6 +11,7 @@
#include "ichain.h"
#include "printf.h"
#include "sfx.h"
+#include "translation.h"
#include "z_en_item00.h"
#include "z_lib.h"
#include "z64effect.h"
@@ -108,8 +109,8 @@ void ObjKibako_Init(Actor* thisx, PlayState* play) {
ObjKibako_InitCollider(&this->actor, play);
CollisionCheck_SetInfo(&this->actor.colChkInfo, NULL, &sCCInfoInit);
ObjKibako_SetupIdle(this);
- // "wooden box"
- PRINTF("(dungeon keep 木箱)(arg_data 0x%04x)\n", this->actor.params);
+ PRINTF(T("(dungeon keep 木箱)(arg_data 0x%04x)\n", "(dungeon keep wooden box)(arg_data 0x%04x)\n"),
+ this->actor.params);
}
void ObjKibako_Destroy(Actor* thisx, PlayState* play2) {
diff --git a/src/overlays/actors/ovl_Obj_Kibako2/z_obj_kibako2.c b/src/overlays/actors/ovl_Obj_Kibako2/z_obj_kibako2.c
index d81ec6f0c..9233f00c7 100644
--- a/src/overlays/actors/ovl_Obj_Kibako2/z_obj_kibako2.c
+++ b/src/overlays/actors/ovl_Obj_Kibako2/z_obj_kibako2.c
@@ -11,6 +11,7 @@
#include "ichain.h"
#include "printf.h"
#include "sfx.h"
+#include "translation.h"
#include "z_en_item00.h"
#include "z_lib.h"
#include "z64effect.h"
@@ -140,9 +141,8 @@ void ObjKibako2_Init(Actor* thisx, PlayState* play) {
this->actionFunc = ObjKibako2_Idle;
this->dyna.actor.home.rot.z = this->dyna.actor.world.rot.z = this->dyna.actor.shape.rot.z =
this->dyna.actor.world.rot.x = this->dyna.actor.shape.rot.x = 0;
- // "Wooden box (stationary)"
- PRINTF("木箱(据置)(arg %04xH)(item %04xH %d)\n", this->dyna.actor.params, this->collectibleFlag,
- this->dyna.actor.home.rot.x);
+ PRINTF(T("木箱(据置)(arg %04xH)(item %04xH %d)\n", "Wooden box (stationary)(arg %04xH)(item %04xH %d)\n"),
+ this->dyna.actor.params, this->collectibleFlag, this->dyna.actor.home.rot.x);
}
void ObjKibako2_Destroy(Actor* thisx, PlayState* play) {
diff --git a/src/overlays/actors/ovl_Obj_Lightswitch/z_obj_lightswitch.c b/src/overlays/actors/ovl_Obj_Lightswitch/z_obj_lightswitch.c
index 52d71f3d7..05fe7a206 100644
--- a/src/overlays/actors/ovl_Obj_Lightswitch/z_obj_lightswitch.c
+++ b/src/overlays/actors/ovl_Obj_Lightswitch/z_obj_lightswitch.c
@@ -17,6 +17,7 @@
#include "sfx.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64effect.h"
#include "z64play.h"
@@ -203,8 +204,9 @@ void ObjLightswitch_Init(Actor* thisx, PlayState* play) {
this->actor.home.pos.y, this->actor.home.pos.z, 0, this->actor.home.rot.y, 0,
(0xFF << 8) | PUSHBLOCK_SMALL_START_ON) == NULL) {
PRINTF_COLOR_ERROR();
- // "Push-pull block occurrence failure"
- PRINTF("押引ブロック発生失敗(%s %d)(arg_data 0x%04x)\n", "../z_obj_lightswitch.c", 452, this->actor.params);
+ PRINTF(T("押引ブロック発生失敗(%s %d)(arg_data 0x%04x)\n",
+ "Push/pull block failure(%s %d)(arg_data 0x%04x)\n"),
+ "../z_obj_lightswitch.c", 452, this->actor.params);
PRINTF_RST();
removeSelf = true;
}
@@ -214,8 +216,7 @@ void ObjLightswitch_Init(Actor* thisx, PlayState* play) {
if (removeSelf) {
Actor_Kill(&this->actor);
}
- // "Light switch"
- PRINTF("(光スイッチ)(arg_data 0x%04x)\n", this->actor.params);
+ PRINTF(T("(光スイッチ)(arg_data 0x%04x)\n", "(Light switch)(arg_data 0x%04x)\n"), this->actor.params);
}
void ObjLightswitch_Destroy(Actor* thisx, PlayState* play2) {
diff --git a/src/overlays/actors/ovl_Obj_Makekinsuta/z_obj_makekinsuta.c b/src/overlays/actors/ovl_Obj_Makekinsuta/z_obj_makekinsuta.c
index cd2573330..cc7651b6b 100644
--- a/src/overlays/actors/ovl_Obj_Makekinsuta/z_obj_makekinsuta.c
+++ b/src/overlays/actors/ovl_Obj_Makekinsuta/z_obj_makekinsuta.c
@@ -8,6 +8,7 @@
#include "printf.h"
#include "terminal.h"
+#include "translation.h"
#include "z64play.h"
#include "z64player.h"
@@ -36,13 +37,12 @@ void ObjMakekinsuta_Init(Actor* thisx, PlayState* play) {
if (PARAMS_GET_NOSHIFT(this->actor.params, 13, 2) == 0x4000) {
PRINTF_COLOR_BLUE();
- // "Gold Star Enemy(arg_data %x)"
- PRINTF("金スタ発生敵(arg_data %x)\n", this->actor.params);
+ PRINTF(T("金スタ発生敵(arg_data %x)\n", "Gold Star Enemy(arg_data %x)\n"), this->actor.params);
PRINTF_RST();
} else {
PRINTF_COLOR_WARNING();
- // "Invalid Argument (arg_data %x)(%s %d)"
- PRINTF("引数不正 (arg_data %x)(%s %d)\n", this->actor.params, "../z_obj_makekinsuta.c", 119);
+ PRINTF(T("引数不正 (arg_data %x)(%s %d)\n", "Invalid Argument (arg_data %x)(%s %d)\n"), this->actor.params,
+ "../z_obj_makekinsuta.c", 119);
PRINTF_RST();
}
this->actionFunc = func_80B98320;
diff --git a/src/overlays/actors/ovl_Obj_Makeoshihiki/z_obj_makeoshihiki.c b/src/overlays/actors/ovl_Obj_Makeoshihiki/z_obj_makeoshihiki.c
index d7a80212c..ee2e8801c 100644
--- a/src/overlays/actors/ovl_Obj_Makeoshihiki/z_obj_makeoshihiki.c
+++ b/src/overlays/actors/ovl_Obj_Makeoshihiki/z_obj_makeoshihiki.c
@@ -12,6 +12,7 @@
#include "sys_math3d.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64play.h"
@@ -78,9 +79,9 @@ void ObjMakeoshihiki_Init(Actor* thisx, PlayState* play) {
if (Actor_SpawnAsChild(&play->actorCtx, thisx, play, ACTOR_OBJ_OSHIHIKI, spawnPos->x, spawnPos->y, spawnPos->z, 0,
block->rotY, 0, ((block->color << 6) & 0xC0) | (block->type & 0xF) | 0xFF00) == NULL) {
- // "Push-pull block failure"
PRINTF_COLOR_ERROR();
- PRINTF("Error : 押し引きブロック発生失敗(%s %d)\n", "../z_obj_makeoshihiki.c", 194);
+ PRINTF(T("Error : 押し引きブロック発生失敗(%s %d)\n", "Error : Push/pull block failure (%s %d)\n"),
+ "../z_obj_makeoshihiki.c", 194);
PRINTF_RST();
Actor_Kill(thisx);
return;
diff --git a/src/overlays/actors/ovl_Obj_Mure/z_obj_mure.c b/src/overlays/actors/ovl_Obj_Mure/z_obj_mure.c
index b86e27a25..126e2c42e 100644
--- a/src/overlays/actors/ovl_Obj_Mure/z_obj_mure.c
+++ b/src/overlays/actors/ovl_Obj_Mure/z_obj_mure.c
@@ -10,6 +10,7 @@
#include "libc64/qrand.h"
#include "ichain.h"
#include "printf.h"
+#include "translation.h"
#include "z64play.h"
#define FLAGS 0
@@ -76,9 +77,9 @@ s32 ObjMure_SetCullingImpl(Actor* thisx, PlayState* play) {
result = true;
break;
default:
- // "Error : Culling is not set.(%s %d)(arg_data 0x%04x)"
- PRINTF("Error : カリングの設定がされていません。(%s %d)(arg_data 0x%04x)\n", "../z_obj_mure.c", 204,
- this->actor.params);
+ PRINTF(T("Error : カリングの設定がされていません。(%s %d)(arg_data 0x%04x)\n",
+ "Error : Culling is not set. (%s %d)(arg_data 0x%04x)\n"),
+ "../z_obj_mure.c", 204, this->actor.params);
return false;
}
return result;
@@ -100,11 +101,13 @@ void ObjMure_Init(Actor* thisx, PlayState* play) {
this->type = PARAMS_GET_U(thisx->params, 0, 5);
if (this->ptn >= 4) {
- PRINTF("Error 群れな敵 (%s %d)(arg_data 0x%04x)\n", "../z_obj_mure.c", 237, thisx->params);
+ PRINTF(T("Error 群れな敵 (%s %d)(arg_data 0x%04x)\n", "Error Swarm of enemies (%s %d)(arg_data 0x%04x)\n"),
+ "../z_obj_mure.c", 237, thisx->params);
Actor_Kill(&this->actor);
return;
} else if (this->type >= 5) {
- PRINTF("Error 群れな敵 (%s %d)(arg_data 0x%04x)\n", "../z_obj_mure.c", 245, thisx->params);
+ PRINTF(T("Error 群れな敵 (%s %d)(arg_data 0x%04x)\n", "Error Swarm of enemies (%s %d)(arg_data 0x%04x)\n"),
+ "../z_obj_mure.c", 245, thisx->params);
Actor_Kill(&this->actor);
return;
} else if (!ObjMure_SetCulling(thisx, play)) {
@@ -112,12 +115,15 @@ void ObjMure_Init(Actor* thisx, PlayState* play) {
return;
}
this->actionFunc = ObjMure_InitialAction;
- PRINTF("群れな敵 (arg_data 0x%04x)(chNum(%d) ptn(%d) svNum(%d) type(%d))\n", thisx->params, this->chNum, this->ptn,
- this->svNum, this->type);
+ PRINTF(T("群れな敵 (arg_data 0x%04x)(chNum(%d) ptn(%d) svNum(%d) type(%d))\n",
+ "Swarm of enemies (arg_data 0x%04x)(chNum(%d) ptn(%d) svNum(%d) type(%d))\n"),
+ thisx->params, this->chNum, this->ptn, this->svNum, this->type);
#if DEBUG_FEATURES
if (ObjMure_GetMaxChildSpawns(this) <= 0) {
- PRINTF("Warning : 個体数が設定されていません(%s %d)(arg_data 0x%04x)\n", "../z_obj_mure.c", 268, thisx->params);
+ PRINTF(T("Warning : 個体数が設定されていません(%s %d)(arg_data 0x%04x)\n",
+ "Warning : The number of individuals is not set(%s %d)(arg_data 0x%04x)\n"),
+ "../z_obj_mure.c", 268, thisx->params);
}
#endif
}
@@ -135,7 +141,7 @@ s32 ObjMure_GetMaxChildSpawns(ObjMure* this) {
void ObjMure_GetSpawnPos(Vec3f* outPos, Vec3f* inPos, s32 ptn, s32 idx) {
#if DEBUG_FEATURES
if (ptn >= 4) {
- PRINTF("おかしなの (%s %d)\n", "../z_obj_mure.c", 307);
+ PRINTF(T("おかしなの (%s %d)\n", "That's strange (%s %d)\n"), "../z_obj_mure.c", 307);
}
#endif
@@ -152,8 +158,9 @@ void ObjMure_SpawnActors0(ObjMure* this, PlayState* play) {
for (i = 0; i < maxChildren; i++) {
#if DEBUG_FEATURES
if (this->children[i] != NULL) {
- // "Error: I already have a child(%s %d)(arg_data 0x%04x)"
- PRINTF("Error : 既に子供がいる(%s %d)(arg_data 0x%04x)\n", "../z_obj_mure.c", 333, actor->params);
+ PRINTF(T("Error : 既に子供がいる(%s %d)(arg_data 0x%04x)\n",
+ "Error : I already have a child (%s %d)(arg_data 0x%04x)\n"),
+ "../z_obj_mure.c", 333, actor->params);
}
#endif
@@ -169,7 +176,8 @@ void ObjMure_SpawnActors0(ObjMure* this, PlayState* play) {
this->children[i]->flags |= ACTOR_FLAG_GRASS_DESTROYED;
this->children[i]->room = actor->room;
} else {
- PRINTF("warning 発生失敗 (%s %d)\n", "../z_obj_mure.c", 359);
+ PRINTF(T("warning 発生失敗 (%s %d)\n", "warning failed to occur (%s %d)\n"), "../z_obj_mure.c",
+ 359);
}
break;
default:
@@ -180,7 +188,8 @@ void ObjMure_SpawnActors0(ObjMure* this, PlayState* play) {
if (this->children[i] != NULL) {
this->children[i]->room = actor->room;
} else {
- PRINTF("warning 発生失敗 (%s %d)\n", "../z_obj_mure.c", 382);
+ PRINTF(T("warning 発生失敗 (%s %d)\n", "warning failed to occur (%s %d)\n"), "../z_obj_mure.c",
+ 382);
}
break;
}
@@ -197,7 +206,9 @@ void ObjMure_SpawnActors1(ObjMure* this, PlayState* play2) {
for (i = 0; i < maxChildren; i++) {
#if DEBUG_FEATURES
if (this->children[i] != NULL) {
- PRINTF("Error : 既に子供がいる(%s %d)(arg_data 0x%04x)\n", "../z_obj_mure.c", 407, actor->params);
+ PRINTF(T("Error : 既に子供がいる(%s %d)(arg_data 0x%04x)\n",
+ "Error : I already have a child (%s %d)(arg_data 0x%04x)\n"),
+ "../z_obj_mure.c", 407, actor->params);
}
#endif
@@ -210,7 +221,7 @@ void ObjMure_SpawnActors1(ObjMure* this, PlayState* play2) {
this->children[i]->room = actor->room;
} else {
this->childrenStates[i] = OBJMURE_CHILD_STATE_1;
- PRINTF("warning 発生失敗 (%s %d)\n", "../z_obj_mure.c", 438);
+ PRINTF(T("warning 発生失敗 (%s %d)\n", "warning failed to occur (%s %d)\n"), "../z_obj_mure.c", 438);
}
}
}
diff --git a/src/overlays/actors/ovl_Obj_Mure2/z_obj_mure2.c b/src/overlays/actors/ovl_Obj_Mure2/z_obj_mure2.c
index 365a0e37c..eca8b0d93 100644
--- a/src/overlays/actors/ovl_Obj_Mure2/z_obj_mure2.c
+++ b/src/overlays/actors/ovl_Obj_Mure2/z_obj_mure2.c
@@ -9,6 +9,7 @@
#include "ichain.h"
#include "printf.h"
#include "sys_math3d.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64play.h"
@@ -117,8 +118,9 @@ void ObjMure2_SpawnActors(ObjMure2* this, PlayState* play) {
for (i = 0; i < D_80B9A818[actorNum]; i++) {
if (this->actorSpawnPtrList[i] != NULL) {
- // "Warning : I already have a child (%s %d)(arg_data 0x%04x)"
- PRINTF("Warning : 既に子供がいる(%s %d)(arg_data 0x%04x)\n", "../z_obj_mure2.c", 269, this->actor.params);
+ PRINTF(T("Warning : 既に子供がいる(%s %d)(arg_data 0x%04x)\n",
+ "Warning : I already have a child (%s %d)(arg_data 0x%04x)\n"),
+ "../z_obj_mure2.c", 269, this->actor.params);
continue;
}
diff --git a/src/overlays/actors/ovl_Obj_Oshihiki/z_obj_oshihiki.c b/src/overlays/actors/ovl_Obj_Oshihiki/z_obj_oshihiki.c
index b3f30fa60..99b8bfc14 100644
--- a/src/overlays/actors/ovl_Obj_Oshihiki/z_obj_oshihiki.c
+++ b/src/overlays/actors/ovl_Obj_Oshihiki/z_obj_oshihiki.c
@@ -230,9 +230,9 @@ void ObjOshihiki_CheckType(ObjOshihiki* this, PlayState* play) {
ObjOshihiki_InitDynapoly(this, play, &gPushBlockCol, 1);
break;
default:
- // "Error : type cannot be determined"
- PRINTF("Error : タイプが判別できない(%s %d)(arg_data 0x%04x)\n", "../z_obj_oshihiki.c", 444,
- this->dyna.actor.params);
+ PRINTF(T("Error : タイプが判別できない(%s %d)(arg_data 0x%04x)\n",
+ "Error : type cannot be determined (%s %d)(arg_data 0x%04x)\n"),
+ "../z_obj_oshihiki.c", 444, this->dyna.actor.params);
break;
}
}
@@ -274,8 +274,9 @@ void ObjOshihiki_SetColor(ObjOshihiki* this, PlayState* play2) {
}
if (i >= ARRAY_COUNT(sColors)) {
- // "Error : scene_data_ID cannot be determined"
- PRINTF("Error : scene_data_ID が判別できない。(%s %d)\n", "../z_obj_oshihiki.c", 579);
+ PRINTF(T("Error : scene_data_ID が判別できない。(%s %d)\n",
+ "Error : scene_data_ID cannot be determined. (%s %d)\n"),
+ "../z_obj_oshihiki.c", 579);
color->r = color->g = color->b = 255;
} else {
src = &sColors[i][paramsColorIdx];
@@ -320,8 +321,8 @@ void ObjOshihiki_Init(Actor* thisx, PlayState* play2) {
ObjOshihiki_SetColor(this, play);
ObjOshihiki_ResetFloors(this);
ObjOshihiki_SetupOnActor(this, play);
- // "(dungeon keep push-pull block)"
- PRINTF("(dungeon keep 押し引きブロック)(arg_data 0x%04x)\n", this->dyna.actor.params);
+ PRINTF(T("(dungeon keep 押し引きブロック)(arg_data 0x%04x)\n", "(dungeon keep push/pull block)(arg_data 0x%04x)\n"),
+ this->dyna.actor.params);
}
void ObjOshihiki_Destroy(Actor* thisx, PlayState* play) {
@@ -387,9 +388,9 @@ s32 ObjOshihiki_CheckFloor(ObjOshihiki* this, PlayState* play) {
s32 ObjOshihiki_CheckGround(ObjOshihiki* this, PlayState* play) {
if (this->dyna.actor.world.pos.y <= BGCHECK_Y_MIN + 10.0f) {
- // "Warning : Push-pull block fell too much"
- PRINTF("Warning : 押し引きブロック落ちすぎた(%s %d)(arg_data 0x%04x)\n", "../z_obj_oshihiki.c", 809,
- this->dyna.actor.params);
+ PRINTF(T("Warning : 押し引きブロック落ちすぎた(%s %d)(arg_data 0x%04x)\n",
+ "Warning : Push/pull block fell too much (%s %d)(arg_data 0x%04x)\n"),
+ "../z_obj_oshihiki.c", 809, this->dyna.actor.params);
Actor_Kill(&this->dyna.actor);
return 0;
}
diff --git a/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.c b/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.c
index d1280a4a5..e73370378 100644
--- a/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.c
+++ b/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.c
@@ -339,7 +339,7 @@ void ObjSwitch_Init(Actor* thisx, PlayState* play) {
if (OBJSWITCH_FROZEN(&this->dyna.actor) && (ObjSwitch_SpawnIce(this, play) == NULL)) {
PRINTF_COLOR_RED();
- PRINTF("Error : 氷発生失敗 (%s %d)\n", "../z_obj_switch.c", 732);
+ PRINTF(T("Error : 氷発生失敗 (%s %d)\n", "Error : Ice generation failure (%s %d)\n"), "../z_obj_switch.c", 732);
PRINTF_RST();
this->dyna.actor.params &= ~OBJSWITCH_FROZEN_FLAG;
}
diff --git a/src/overlays/actors/ovl_Obj_Timeblock/z_obj_timeblock.c b/src/overlays/actors/ovl_Obj_Timeblock/z_obj_timeblock.c
index ad927dca9..b3dc890ca 100644
--- a/src/overlays/actors/ovl_Obj_Timeblock/z_obj_timeblock.c
+++ b/src/overlays/actors/ovl_Obj_Timeblock/z_obj_timeblock.c
@@ -13,6 +13,7 @@
#include "printf.h"
#include "sfx.h"
#include "sys_matrix.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64ocarina.h"
#include "z64play.h"
@@ -149,10 +150,10 @@ void ObjTimeblock_Init(Actor* thisx, PlayState* play) {
ObjTimeblock_SetupAltBehaviourNotVisible(this);
}
- // "Block of time"
- PRINTF("時のブロック ( %04xH save:%d color:%d range:%d move:%d)\n", (u16)this->dyna.actor.params,
- this->unk_177, this->dyna.actor.home.rot.z & 7, PARAMS_GET_U(this->dyna.actor.params, 11, 3),
- PARAMS_GET_U(this->dyna.actor.params, 10, 1));
+ PRINTF(T("時のブロック ( %04xH save:%d color:%d range:%d move:%d)\n",
+ "Time Block ( %04xH save:%d color:%d range:%d move:%d)\n"),
+ (u16)this->dyna.actor.params, this->unk_177, this->dyna.actor.home.rot.z & 7,
+ PARAMS_GET_U(this->dyna.actor.params, 11, 3), PARAMS_GET_U(this->dyna.actor.params, 10, 1));
}
void ObjTimeblock_Destroy(Actor* thisx, PlayState* play) {
@@ -233,8 +234,9 @@ void ObjTimeblock_Normal(ObjTimeblock* this, PlayState* play) {
// Possibly points the camera to this actor
OnePointCutscene_Attention(play, &this->dyna.actor);
- // "◯◯◯◯ Time Block Attention Camera (frame counter %d)\n"
- PRINTF("◯◯◯◯ Time Block 注目カメラ (frame counter %d)\n", play->state.frames);
+ PRINTF(T("◯◯◯◯ Time Block 注目カメラ (frame counter %d)\n",
+ "◯◯◯◯ Time Block Attention Camera (frame counter %d)\n"),
+ play->state.frames);
this->demoEffectFirstPartTimer = 12;
@@ -291,8 +293,9 @@ void ObjTimeblock_AltBehaviorVisible(ObjTimeblock* this, PlayState* play) {
ObjTimeblock_SpawnDemoEffect(this, play);
this->demoEffectTimer = 160;
OnePointCutscene_Attention(play, &this->dyna.actor);
- // "Time Block Attention Camera (frame counter)"
- PRINTF("◯◯◯◯ Time Block 注目カメラ (frame counter %d)\n", play->state.frames);
+ PRINTF(T("◯◯◯◯ Time Block 注目カメラ (frame counter %d)\n",
+ "◯◯◯◯ Time Block Attention Camera (frame counter %d)\n"),
+ play->state.frames);
ObjTimeblock_ToggleSwitchFlag(play, PARAMS_GET_U(this->dyna.actor.params, 0, 6));
}
diff --git a/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.c b/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.c
index d5171ad12..9afd53ae5 100644
--- a/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.c
+++ b/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.c
@@ -11,6 +11,7 @@
#include "ichain.h"
#include "printf.h"
#include "sfx.h"
+#include "translation.h"
#include "z_en_item00.h"
#include "z_lib.h"
#include "z64effect.h"
@@ -124,7 +125,7 @@ s32 ObjTsubo_SnapToFloor(ObjTsubo* this, PlayState* play) {
Math_Vec3f_Copy(&this->actor.home.pos, &this->actor.world.pos);
return true;
} else {
- PRINTF("地面に付着失敗\n");
+ PRINTF(T("地面に付着失敗\n", "Failed to attach to ground\n"));
return false;
}
}
@@ -149,11 +150,12 @@ void ObjTsubo_Init(Actor* thisx, PlayState* play) {
}
this->requiredObjectSlot = Object_GetSlot(&play->objectCtx, sObjectIds[PARAMS_GET_U(this->actor.params, 8, 1)]);
if (this->requiredObjectSlot < 0) {
- PRINTF("Error : バンク危険! (arg_data 0x%04x)(%s %d)\n", this->actor.params, "../z_obj_tsubo.c", 410);
+ PRINTF(T("Error : バンク危険! (arg_data 0x%04x)(%s %d)\n", "Error : Bank danger! (arg_data 0x%04x)(%s %d)\n"),
+ this->actor.params, "../z_obj_tsubo.c", 410);
Actor_Kill(&this->actor);
} else {
ObjTsubo_SetupWaitForObject(this);
- PRINTF("(dungeon keep 壷)(arg_data 0x%04x)\n", this->actor.params);
+ PRINTF(T("(dungeon keep 壷)(arg_data 0x%04x)\n", "(dungeon keep pot)(arg_data 0x%04x)\n"), this->actor.params);
}
}
diff --git a/src/overlays/actors/ovl_Obj_Warp2block/z_obj_warp2block.c b/src/overlays/actors/ovl_Obj_Warp2block/z_obj_warp2block.c
index 78e1cdf3a..55023cccc 100644
--- a/src/overlays/actors/ovl_Obj_Warp2block/z_obj_warp2block.c
+++ b/src/overlays/actors/ovl_Obj_Warp2block/z_obj_warp2block.c
@@ -15,6 +15,7 @@
#include "sys_math3d.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64ocarina.h"
#include "z64play.h"
@@ -234,7 +235,8 @@ void ObjWarp2block_Init(Actor* thisx, PlayState* play2) {
ObjWarp2block_SetInactive(this);
}
- PRINTF("時のブロック(ワープ2) ( %04xH color:%d range:%d)\n",
+ PRINTF(T("時のブロック(ワープ2) ( %04xH color:%d range:%d)\n",
+ "Time Block (Warp 2) ( %04xH color:%d range:%d)\n"),
PARAMS_GET_U(this->dyna.actor.params, 0, 16), this->dyna.actor.home.rot.z & 7,
PARAMS_GET_U(this->dyna.actor.params, 11, 3));
}
@@ -279,7 +281,9 @@ void func_80BA24F8(ObjWarp2block* this, PlayState* play) {
this->unk_174++;
if (this->unk_174 > 60) {
PRINTF_COLOR_ERROR();
- PRINTF("Error : 時のブロック(ワープ2)が対でセットされていません(%s %d)\n", "../z_obj_warp2block.c", 505);
+ PRINTF(T("Error : 時のブロック(ワープ2)が対でセットされていません(%s %d)\n",
+ "Error : Time Blocks (Warp 2) are not set in pairs (%s %d)\n"),
+ "../z_obj_warp2block.c", 505);
PRINTF_RST();
Actor_Kill(&this->dyna.actor);
}
diff --git a/src/overlays/actors/ovl_Oceff_Spot/z_oceff_spot.c b/src/overlays/actors/ovl_Oceff_Spot/z_oceff_spot.c
index 8a24d5cf2..ab09e7420 100644
--- a/src/overlays/actors/ovl_Oceff_Spot/z_oceff_spot.c
+++ b/src/overlays/actors/ovl_Oceff_Spot/z_oceff_spot.c
@@ -13,6 +13,7 @@
#include "regs.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64light.h"
#include "z64ocarina.h"
@@ -99,15 +100,13 @@ void OceffSpot_End(OceffSpot* this, PlayState* play) {
play->msgCtx.ocarinaMode != OCARINA_MODE_08) {
gSaveContext.sunsSongState = SUNSSONG_START;
PRINTF_COLOR_YELLOW();
- // "Sun's Song Flag"
- PRINTF("z_oceff_spot 太陽の歌フラグ\n");
+ PRINTF(T("z_oceff_spot 太陽の歌フラグ\n", "z_oceff_spot Sun's Song Flag\n"));
PRINTF_RST();
}
} else {
play->msgCtx.ocarinaMode = OCARINA_MODE_04;
PRINTF_COLOR_YELLOW();
- // "Ocarina End"
- PRINTF("z_oceff_spot オカリナ終了\n");
+ PRINTF(T("z_oceff_spot オカリナ終了\n", "z_oceff_spot Ocarina finished\n"));
PRINTF_RST();
}
}
diff --git a/src/overlays/actors/ovl_Shot_Sun/z_shot_sun.c b/src/overlays/actors/ovl_Shot_Sun/z_shot_sun.c
index 7a38b7213..e069f1730 100644
--- a/src/overlays/actors/ovl_Shot_Sun/z_shot_sun.c
+++ b/src/overlays/actors/ovl_Shot_Sun/z_shot_sun.c
@@ -14,6 +14,7 @@
#include "sfx.h"
#include "sys_math3d.h"
#include "terminal.h"
+#include "translation.h"
#include "z_en_item00.h"
#include "z_lib.h"
#include "z64environment.h"
@@ -77,8 +78,8 @@ void ShotSun_Init(Actor* thisx, PlayState* play) {
ShotSun* this = (ShotSun*)thisx;
s32 params;
- // "Ocarina secret occurrence"
- PRINTF("%d ---- オカリナの秘密発生!!!!!!!!!!!!!\n", this->actor.params);
+ PRINTF(T("%d ---- オカリナの秘密発生!!!!!!!!!!!!!\n", "%d ---- Ocarina secret occurrence!!!!!!!!!!!!!\n"),
+ this->actor.params);
params = PARAMS_GET_U(this->actor.params, 0, 8);
if (params == 0x40 || params == 0x41) {
this->fairySpawnerState = SPAWNER_OUT_OF_RANGE;
diff --git a/src/overlays/actors/ovl_player_actor/z_player.c b/src/overlays/actors/ovl_player_actor/z_player.c
index 41d49c432..2dc377d8e 100644
--- a/src/overlays/actors/ovl_player_actor/z_player.c
+++ b/src/overlays/actors/ovl_player_actor/z_player.c
@@ -366,21 +366,21 @@ void Player_Action_CsAction(Player* this, PlayState* play);
// .bss part 1
#pragma increment_block_number "gc-eu:0 gc-eu-mq:0 gc-jp:0 gc-jp-ce:0 gc-jp-mq:0 gc-us:0 gc-us-mq:0 ique-cn:0" \
- "ntsc-1.0:128 ntsc-1.1:128 ntsc-1.2:128 pal-1.0:192 pal-1.1:192"
+ "ntsc-1.0:0 ntsc-1.1:0 ntsc-1.2:0 pal-1.0:0 pal-1.1:0"
static s32 D_80858AA0;
// TODO: There's probably a way to match BSS ordering with less padding by spreading the variables out and moving
// data around. It would be easier if we had more options for controlling BSS ordering in debug.
-#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \
- "ique-cn:128 ntsc-1.0:192 ntsc-1.1:192 ntsc-1.2:192 pal-1.0:192 pal-1.1:192"
+#pragma increment_block_number "gc-eu:224 gc-eu-mq:224 gc-jp:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq:192" \
+ "ique-cn:192 ntsc-1.0:192 ntsc-1.1:192 ntsc-1.2:192 pal-1.0:192 pal-1.1:192"
static s32 sSavedCurrentMask;
static Vec3f sInteractWallCheckResult;
static Input* sControlInput;
-#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:160 gc-jp-ce:160 gc-jp-mq:160 gc-us:160 gc-us-mq:160" \
- "ique-cn:160 ntsc-1.0:128 ntsc-1.1:128 ntsc-1.2:128 pal-1.0:128 pal-1.1:128"
+#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq:192" \
+ "ique-cn:192 ntsc-1.0:128 ntsc-1.1:128 ntsc-1.2:128 pal-1.0:128 pal-1.1:128"
// .data
diff --git a/src/overlays/effects/ovl_Effect_Ss_Dead_Dd/z_eff_ss_dead_dd.c b/src/overlays/effects/ovl_Effect_Ss_Dead_Dd/z_eff_ss_dead_dd.c
index 9343e7a54..cb6d76eeb 100644
--- a/src/overlays/effects/ovl_Effect_Ss_Dead_Dd/z_eff_ss_dead_dd.c
+++ b/src/overlays/effects/ovl_Effect_Ss_Dead_Dd/z_eff_ss_dead_dd.c
@@ -10,6 +10,7 @@
#include "gfx.h"
#include "gfx_setupdl.h"
#include "printf.h"
+#include "translation.h"
#include "z64effect.h"
#include "z64play.h"
#include "z64skin_matrix.h"
@@ -92,7 +93,7 @@ u32 EffectSsDeadDd_Init(PlayState* play, u32 index, EffectSs* this, void* initPa
this->accel.z = this->velocity.z = (Rand_ZeroOne() - 0.5f) * 2.0f;
}
} else {
- PRINTF("Effect_SS_Dd_disp_mode():mode_swが変です。\n");
+ PRINTF(T("Effect_SS_Dd_disp_mode():mode_swが変です。\n", "Effect_SS_Dd_disp_mode():mode_sw is strange.\n"));
return 0;
}
diff --git a/src/overlays/effects/ovl_Effect_Ss_Dead_Sound/z_eff_ss_dead_sound.c b/src/overlays/effects/ovl_Effect_Ss_Dead_Sound/z_eff_ss_dead_sound.c
index f0b3c8fce..58daefa38 100644
--- a/src/overlays/effects/ovl_Effect_Ss_Dead_Sound/z_eff_ss_dead_sound.c
+++ b/src/overlays/effects/ovl_Effect_Ss_Dead_Sound/z_eff_ss_dead_sound.c
@@ -7,6 +7,7 @@
#include "z_eff_ss_dead_sound.h"
#include "printf.h"
#include "sfx.h"
+#include "translation.h"
#include "z64effect.h"
#include "z64play.h"
@@ -33,7 +34,7 @@ u32 EffectSsDeadSound_Init(PlayState* play, u32 index, EffectSs* this, void* ini
this->update = EffectSsDeadSound_Update;
this->rRepeatMode = initParams->repeatMode;
this->rSfxId = initParams->sfxId;
- PRINTF("コンストラクター3\n"); // "constructor 3"
+ PRINTF(T("コンストラクター3\n", "Constructor 3\n"));
return 1;
}
diff --git a/src/overlays/effects/ovl_Effect_Ss_En_Ice/z_eff_ss_en_ice.c b/src/overlays/effects/ovl_Effect_Ss_En_Ice/z_eff_ss_en_ice.c
index 17af3ac9e..e1ed9e924 100644
--- a/src/overlays/effects/ovl_Effect_Ss_En_Ice/z_eff_ss_en_ice.c
+++ b/src/overlays/effects/ovl_Effect_Ss_En_Ice/z_eff_ss_en_ice.c
@@ -12,6 +12,7 @@
#include "rand.h"
#include "sys_math.h"
#include "sys_matrix.h"
+#include "translation.h"
#include "versions.h"
#include "z_lib.h"
#include "z64effect.h"
@@ -90,7 +91,8 @@ u32 EffectSsEnIce_Init(PlayState* play, u32 index, EffectSs* this, void* initPar
this->rEnvColorB = initParams->envColor.b;
this->rAlphaMode = 0;
} else {
- PRINTF("Effect_Ss_En_Ice_ct():pid->mode_swがエラーです。\n");
+ PRINTF(T("Effect_Ss_En_Ice_ct():pid->mode_swがエラーです。\n",
+ "Effect_Ss_En_Ice_ct():pid->mode_sw is an error.\n"));
return 0;
}
diff --git a/src/overlays/effects/ovl_Effect_Ss_Fhg_Flash/z_eff_ss_fhg_flash.c b/src/overlays/effects/ovl_Effect_Ss_Fhg_Flash/z_eff_ss_fhg_flash.c
index 60cad10d0..a5b8a24d1 100644
--- a/src/overlays/effects/ovl_Effect_Ss_Fhg_Flash/z_eff_ss_fhg_flash.c
+++ b/src/overlays/effects/ovl_Effect_Ss_Fhg_Flash/z_eff_ss_fhg_flash.c
@@ -14,6 +14,7 @@
#include "rand.h"
#include "segmented_address.h"
#include "sys_matrix.h"
+#include "translation.h"
#include "z64effect.h"
#include "z64play.h"
#include "z64player.h"
@@ -69,7 +70,7 @@ u32 EffectSsFhgFlash_Init(PlayState* play, u32 index, EffectSs* this, void* init
this->gfx = SEGMENTED_TO_VIRTUAL(gPhantomEnergyBallDL);
gSegments[6] = prevSeg6;
} else {
- PRINTF("Effect_Ss_Fhg_Flash_ct():pffd->modeエラー\n");
+ PRINTF(T("Effect_Ss_Fhg_Flash_ct():pffd->modeエラー\n", "Effect_Ss_Fhg_Flash_ct():pffd->mode error\n"));
return 0;
}
} else {
diff --git a/src/overlays/effects/ovl_Effect_Ss_Ice_Smoke/z_eff_ss_ice_smoke.c b/src/overlays/effects/ovl_Effect_Ss_Ice_Smoke/z_eff_ss_ice_smoke.c
index 1445e61d0..9e2757049 100644
--- a/src/overlays/effects/ovl_Effect_Ss_Ice_Smoke/z_eff_ss_ice_smoke.c
+++ b/src/overlays/effects/ovl_Effect_Ss_Ice_Smoke/z_eff_ss_ice_smoke.c
@@ -11,6 +11,7 @@
#include "printf.h"
#include "segmented_address.h"
#include "sys_matrix.h"
+#include "translation.h"
#include "z_lib.h"
#include "z64effect.h"
#include "z64play.h"
@@ -55,7 +56,8 @@ u32 EffectSsIceSmoke_Init(PlayState* play, u32 index, EffectSs* this, void* init
return 1;
}
- PRINTF("Effect_SS_Ice_Smoke_ct():バンク Object_Bank_Fzが有りません。\n");
+ PRINTF(T("Effect_SS_Ice_Smoke_ct():バンク Object_Bank_Fzが有りません。\n",
+ "Effect_SS_Ice_Smoke_ct(): Bank Object_Bank_Fz does not exist.\n"));
return 0;
}
diff --git a/src/overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.c b/src/overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.c
index fda08ca8b..b0ba95ada 100644
--- a/src/overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.c
+++ b/src/overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.c
@@ -13,6 +13,7 @@
#include "line_numbers.h"
#include "printf.h"
#include "sys_matrix.h"
+#include "translation.h"
#include "versions.h"
#include "z64effect.h"
#include "z64play.h"
@@ -65,7 +66,7 @@ u32 EffectSsKakera_Init(PlayState* play, u32 index, EffectSs* this, void* initPa
}
} else {
- PRINTF("shape_modelがNULL\n");
+ PRINTF(T("shape_modelがNULL\n", "shape_model is NULL\n"));
LogUtils_HungupThread("../z_eff_kakera.c", LN1(175, 178));
}
@@ -92,7 +93,8 @@ f32 func_809A9818(f32 arg0, f32 arg1) {
#if DEBUG_FEATURES
if (arg1 < 0.0f) {
- PRINTF("範囲がマイナス!!(randomD_sectionUniformity)\n");
+ PRINTF(T("範囲がマイナス!!(randomD_sectionUniformity)\n",
+ "The range is negative!! (randomD_sectionUniformity)\n"));
}
#endif
diff --git a/src/overlays/gamestates/ovl_file_choose/file_select.h b/src/overlays/gamestates/ovl_file_choose/file_select.h
index ae41c4dce..69d71f71d 100644
--- a/src/overlays/gamestates/ovl_file_choose/file_select.h
+++ b/src/overlays/gamestates/ovl_file_choose/file_select.h
@@ -1,7 +1,7 @@
#ifndef FILE_SELECT_H
#define FILE_SELECT_H
-#include "libc/stddef.h"
+#include "stddef.h"
#include "ultra64.h"
#include "gfx.h"
#include "versions.h"
diff --git a/src/overlays/gamestates/ovl_file_choose/z_file_choose.c b/src/overlays/gamestates/ovl_file_choose/z_file_choose.c
index 321fe7212..52f24da80 100644
--- a/src/overlays/gamestates/ovl_file_choose/z_file_choose.c
+++ b/src/overlays/gamestates/ovl_file_choose/z_file_choose.c
@@ -22,6 +22,7 @@
#include "sfx.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "versions.h"
#include "z_lib.h"
#include "z64audio.h"
@@ -366,7 +367,7 @@ void FileSelect_InitModeUpdate(GameState* thisx) {
this->nextTitleLabel = FS_TITLE_OPEN_FILE;
PRINTF("Sram Start─Load 》》》》》 ");
Sram_VerifyAndLoadAllSaves(this, sramCtx);
- PRINTF("終了!!!\n");
+ PRINTF(T("終了!!!\n", "End!!!\n"));
}
#else
if (this->configMode == CM_FADE_IN_START) {
@@ -1961,7 +1962,16 @@ void FileSelect_LoadGame(GameState* thisx) {
swordEquipValue =
(gEquipMasks[EQUIP_TYPE_SWORD] & gSaveContext.save.info.equips.equipment) >> (EQUIP_TYPE_SWORD * 4);
gSaveContext.save.info.equips.equipment &= gEquipNegMasks[EQUIP_TYPE_SWORD];
+#ifndef AVOID_UB
+ //! @bug swordEquipValue can be 0 (EQUIP_VALUE_SWORD_NONE) here (typically, when first starting the game).
+ //! This leads to reading gBitFlags[-1] (out of bounds).
+ // gBitFlags[-1] turns out to be 0 in matching versions so this is inconsequential.
gSaveContext.save.info.inventory.equipment ^= OWNED_EQUIP_FLAG(EQUIP_TYPE_SWORD, swordEquipValue - 1);
+#else
+ if (swordEquipValue != EQUIP_VALUE_SWORD_NONE) {
+ gSaveContext.save.info.inventory.equipment ^= OWNED_EQUIP_FLAG(EQUIP_TYPE_SWORD, swordEquipValue - 1);
+ }
+#endif
}
#if PLATFORM_N64
diff --git a/src/overlays/gamestates/ovl_file_choose/z_file_nameset.c b/src/overlays/gamestates/ovl_file_choose/z_file_nameset.c
index bc7ae7edc..c3042a2ce 100644
--- a/src/overlays/gamestates/ovl_file_choose/z_file_nameset.c
+++ b/src/overlays/gamestates/ovl_file_choose/z_file_nameset.c
@@ -12,6 +12,7 @@
#include "sfx.h"
#include "sys_matrix.h"
#include "terminal.h"
+#include "translation.h"
#include "versions.h"
#include "z64audio.h"
#include "z64save.h"
@@ -1370,7 +1371,7 @@ void FileSelect_UpdateOptionsMenu(GameState* thisx) {
PRINTF("Na_SetSoundOutputMode = %d\n", gSaveContext.soundSetting);
PRINTF_RST();
Audio_SetSoundOutputMode(gSaveContext.soundSetting);
- PRINTF("終了\n");
+ PRINTF(T("終了\n", "end\n"));
return;
}
diff --git a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_collect.c b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_collect.c
index 1f46c3e74..21136ea7f 100644
--- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_collect.c
+++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_collect.c
@@ -500,8 +500,9 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, pauseCtx->alpha);
gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 255);
- gDPLoadTextureBlock(POLY_OPA_DISP++, gSongNoteTex, G_IM_FMT_IA, G_IM_SIZ_8b, 16, 24, 0, G_TX_NOMIRROR | G_TX_WRAP,
- G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
+ gDPLoadTextureBlock(POLY_OPA_DISP++, gSongNoteTex, G_IM_FMT_IA, G_IM_SIZ_8b, gSongNoteTex_WIDTH,
+ gSongNoteTex_HEIGHT, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
+ G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
for (j = 0; j < QUEST_KOKIRI_EMERALD - QUEST_SONG_MINUET; j++, bufI += 4) {
if (CHECK_QUEST_ITEM(QUEST_SONG_MINUET + j)) {
diff --git a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_debug.c b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_debug.c
index bd6535da7..e748050b3 100644
--- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_debug.c
+++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_debug.c
@@ -6,35 +6,165 @@
#include "gfx_setupdl.h"
#include "gfxalloc.h"
#include "printf.h"
+#include "translation.h"
#include "z64play.h"
#include "z64save.h"
#include "assets/textures/parameter_static/parameter_static.h"
+typedef enum DebugSection {
+ /* 0x00 */ SECTION_RUPEES,
+ /* 0x01 */ SECTION_HEALTH_CAPACITY,
+ /* 0x02 */ SECTION_CURRENT_HEALTH,
+ /* 0x03 */ SECTION_FIRST_INVENTORY_SLOT,
+ /* 0x1A */ SECTION_LAST_INVENTORY_SLOT = 0x1A,
+ /* 0x1B */ SECTION_FIRST_KEY_COUNT,
+ /* 0x2B */ SECTION_LAST_KEY_COUNT = 0x2B,
+ /* 0x2C */ SECTION_FIRST_UPGRADE,
+ /* 0x33 */ SECTION_LAST_UPGRADE = 0x33,
+ /* 0x34 */ SECTION_FIRST_EQUIPMENT,
+ /* 0x37 */ SECTION_LAST_EQUIPMENT = 0x37,
+ /* 0x38 */ SECTION_FIRST_DUNGEON_ITEMS,
+ /* 0x43 */ SECTION_LAST_DUNGEON_ITEMS = 0x43,
+ /* 0x44 */ SECTION_FIRST_MEDALLION,
+ /* 0x49 */ SECTION_LAST_MEDALLION = 0x49,
+ /* 0x4A */ SECTION_FIRST_SONG,
+ /* 0x55 */ SECTION_LAST_SONG = 0x55,
+ /* 0x56 */ SECTION_FIRST_SPIRITUAL_STONE,
+ /* 0x58 */ SECTION_LAST_SPIRITUAL_STONE = 0x58,
+ /* 0x59 */ SECTION_STONE_OF_AGONY,
+ /* 0x5A */ SECTION_GERUDO_CARD,
+ /* 0x5B */ SECTION_SKULL_TOKENS,
+ /* 0x5C */ SECTION_HEART_PIECES,
+ /* 0x5D */ SECTION_MAX
+} DebugSection;
+
// Positions of each input section in the editor
-static u16 sSectionPositions[][2] = {
- { 64, 15 }, { 144, 15 }, { 170, 15 }, { 78, 35 }, { 104, 35 }, { 130, 35 }, { 156, 35 }, { 182, 35 },
- { 208, 35 }, { 78, 50 }, { 104, 50 }, { 130, 50 }, { 156, 50 }, { 182, 50 }, { 208, 50 }, { 78, 65 },
- { 104, 65 }, { 130, 65 }, { 156, 65 }, { 182, 65 }, { 208, 65 }, { 78, 80 }, { 104, 80 }, { 130, 80 },
- { 156, 80 }, { 182, 80 }, { 208, 80 }, { 78, 98 }, { 88, 98 }, { 98, 98 }, { 108, 98 }, { 118, 98 },
- { 128, 98 }, { 138, 98 }, { 148, 98 }, { 158, 98 }, { 168, 98 }, { 178, 98 }, { 188, 98 }, { 198, 98 },
- { 208, 98 }, { 218, 98 }, { 228, 98 }, { 238, 98 }, { 78, 115 }, { 90, 115 }, { 102, 115 }, { 114, 115 },
- { 126, 115 }, { 138, 115 }, { 150, 115 }, { 162, 115 }, { 202, 115 }, { 214, 115 }, { 226, 115 }, { 238, 115 },
- { 78, 132 }, { 90, 132 }, { 102, 132 }, { 114, 132 }, { 126, 132 }, { 138, 132 }, { 150, 132 }, { 162, 132 },
- { 174, 132 }, { 186, 132 }, { 198, 132 }, { 210, 132 }, { 78, 149 }, { 90, 149 }, { 102, 149 }, { 114, 149 },
- { 126, 149 }, { 138, 149 }, { 78, 166 }, { 90, 166 }, { 102, 166 }, { 114, 166 }, { 126, 166 }, { 138, 166 },
- { 150, 166 }, { 162, 166 }, { 174, 166 }, { 186, 166 }, { 198, 166 }, { 210, 166 }, { 210, 149 }, { 222, 149 },
- { 234, 149 }, { 78, 185 }, { 90, 185 }, { 145, 185 }, { 210, 185 },
+static u16 sSectionPositions[SECTION_MAX][2] = {
+ { 64, 15 }, // SECTION_RUPEES
+ { 144, 15 }, // SECTION_HEALTH_CAPACITY
+ { 170, 15 }, // SECTION_CURRENT_HEALTH
+
+ { 78, 35 }, // SECTION_FIRST_INVENTORY_SLOT
+ { 104, 35 },
+ { 130, 35 },
+ { 156, 35 },
+ { 182, 35 },
+ { 208, 35 },
+ //
+ { 78, 50 },
+ { 104, 50 },
+ { 130, 50 },
+ { 156, 50 },
+ { 182, 50 },
+ { 208, 50 },
+ //
+ { 78, 65 },
+ { 104, 65 },
+ { 130, 65 },
+ { 156, 65 },
+ { 182, 65 },
+ { 208, 65 },
+ //
+ { 78, 80 },
+ { 104, 80 },
+ { 130, 80 },
+ { 156, 80 },
+ { 182, 80 },
+ { 208, 80 }, // SECTION_LAST_INVENTORY_SLOT
+
+ { 78, 98 }, // SECTION_FIRST_KEY_COUNT
+ { 88, 98 },
+ { 98, 98 },
+ { 108, 98 },
+ { 118, 98 },
+ { 128, 98 },
+ { 138, 98 },
+ { 148, 98 },
+ { 158, 98 },
+ { 168, 98 },
+ { 178, 98 },
+ { 188, 98 },
+ { 198, 98 },
+ { 208, 98 },
+ { 218, 98 },
+ { 228, 98 },
+ { 238, 98 }, // SECTION_LAST_KEY_COUNT
+
+ { 78, 115 }, // SECTION_FIRST_UPGRADE
+ { 90, 115 },
+ { 102, 115 },
+ { 114, 115 },
+ { 126, 115 },
+ { 138, 115 },
+ { 150, 115 },
+ { 162, 115 }, // SECTION_LAST_UPGRADE
+
+ { 202, 115 }, // SECTION_FIRST_EQUIPMENT
+ { 214, 115 },
+ { 226, 115 },
+ { 238, 115 }, // SECTION_LAST_EQUIPMENT
+
+ { 78, 132 }, // SECTION_FIRST_DUNGEON_ITEMS
+ { 90, 132 },
+ { 102, 132 },
+ { 114, 132 },
+ { 126, 132 },
+ { 138, 132 },
+ { 150, 132 },
+ { 162, 132 },
+ { 174, 132 },
+ { 186, 132 },
+ { 198, 132 },
+ { 210, 132 }, // SECTION_LAST_DUNGEON_ITEMS
+
+ { 78, 149 }, // SECTION_FIRST_MEDALLION
+ { 90, 149 },
+ { 102, 149 },
+ { 114, 149 },
+ { 126, 149 },
+ { 138, 149 }, // SECTION_LAST_MEDALLION
+
+ { 78, 166 }, // SECTION_FIRST_SONG
+ { 90, 166 },
+ { 102, 166 },
+ { 114, 166 },
+ { 126, 166 },
+ { 138, 166 },
+ { 150, 166 },
+ { 162, 166 },
+ { 174, 166 },
+ { 186, 166 },
+ { 198, 166 },
+ { 210, 166 }, // SECTION_LAST_SONG
+
+ { 210, 149 }, // SECTION_FIRST_SPIRITUAL_STONE
+ { 222, 149 },
+ { 234, 149 }, // SECTION_LAST_SPIRITUAL_STONE
+
+ { 78, 185 }, // SECTION_STONE_OF_AGONY
+ { 90, 185 }, // SECTION_GERUDO_CARD
+ { 145, 185 }, // SECTION_SKULL_TOKENS
+ { 210, 185 }, // SECTION_HEART_PIECES
};
// First section of each row in the editor (starting from the top)
static u16 sRowFirstSections[] = {
- 0x00, 0x03, 0x1B, 0x2C, 0x34, 0x38, 0x44, 0x4A, 0x56, 0x59, 0x5C,
+ SECTION_RUPEES, SECTION_FIRST_INVENTORY_SLOT, SECTION_FIRST_KEY_COUNT,
+ SECTION_FIRST_UPGRADE, SECTION_FIRST_EQUIPMENT, SECTION_FIRST_DUNGEON_ITEMS,
+ SECTION_FIRST_MEDALLION, SECTION_FIRST_SONG, SECTION_FIRST_SPIRITUAL_STONE,
+ SECTION_STONE_OF_AGONY, SECTION_HEART_PIECES,
};
-// Maximum value of each upgrade type
static u8 sMaxUpgradeValues[] = {
- 3, 3, 3, 2, 2, 3, 3, 3,
+ /* UPG_QUIVER */ 3,
+ /* UPG_BOMB_BAG */ 3,
+ /* UPG_STRENGTH */ 3,
+ /* UPG_SCALE */ 2,
+ /* UPG_WALLET */ 2,
+ /* UPG_BULLET_BAG */ 3,
+ /* UPG_DEKU_STICKS */ 3,
+ /* UPG_DEKU_NUTS */ 3,
};
// Item ID corresponding to each slot, aside from bottles and trade items
@@ -44,7 +174,7 @@ static s16 sSlotItems[] = {
ITEM_BOOMERANG, ITEM_LENS_OF_TRUTH, ITEM_MAGIC_BEAN, ITEM_HAMMER, ITEM_ARROW_LIGHT, ITEM_NAYRUS_LOVE,
};
-void KaleidoScope_DrawDebugEditorText(Gfx** gfxP) {
+void KaleidoScope_DrawInventoryEditorText(Gfx** gfxP) {
GfxPrint printer;
s32 pad[2];
@@ -53,35 +183,35 @@ void KaleidoScope_DrawDebugEditorText(Gfx** gfxP) {
GfxPrint_SetPos(&printer, 3, 2);
GfxPrint_SetColor(&printer, 255, 60, 0, 255);
- GfxPrint_Printf(&printer, "%s", "Rupee");
- GfxPrint_SetPos(&printer, 13, 2);
- GfxPrint_Printf(&printer, "%s", "Heart");
+ GfxPrint_Printf(&printer, "%s", T(GFXP_KATAKANA "ルピー", "Rupee"));
+ GfxPrint_SetPos(&printer, 15, 2);
+ GfxPrint_Printf(&printer, "%s", T(GFXP_KATAKANA "ハート", "Heart"));
GfxPrint_SetPos(&printer, 26, 3);
GfxPrint_Printf(&printer, "%s", "/4");
GfxPrint_SetPos(&printer, 4, 5);
- GfxPrint_Printf(&printer, "%s", "Item");
+ GfxPrint_Printf(&printer, "%s", T(GFXP_KATAKANA "アイテム", "Item"));
GfxPrint_SetPos(&printer, 4, 13);
GfxPrint_Printf(&printer, "%s", "KEY");
GfxPrint_SetPos(&printer, 4, 15);
- GfxPrint_Printf(&printer, "%s", "Eq."); // "Equipment"
+ GfxPrint_Printf(&printer, "%s", T(GFXP_HIRAGANA "ソウビ", "Equipment"));
GfxPrint_SetPos(&printer, 23, 14);
- GfxPrint_Printf(&printer, "%s", "Sw"); // "Sword"
+ GfxPrint_Printf(&printer, "%s", T(GFXP_KATAKANA "ケン", "Sword"));
GfxPrint_SetPos(&printer, 23, 15);
- GfxPrint_Printf(&printer, "%s", "Sh"); // "Shield"
+ GfxPrint_Printf(&printer, "%s", T(GFXP_KATAKANA "タテ", "Shield"));
GfxPrint_SetPos(&printer, 4, 17);
GfxPrint_Printf(&printer, "%s", "MAP");
GfxPrint_SetPos(&printer, 4, 19);
- GfxPrint_Printf(&printer, "%s", "Med."); // "Seal", medallions
+ GfxPrint_Printf(&printer, "%s", T(GFXP_HIRAGANA "フウイン", "Seal"));
GfxPrint_SetPos(&printer, 20, 19);
- GfxPrint_Printf(&printer, "%s", "Stones");
+ GfxPrint_Printf(&printer, "%s", T(GFXP_HIRAGANA "セイレイセキ", "Spiritual Stone"));
GfxPrint_SetPos(&printer, 4, 21);
- GfxPrint_Printf(&printer, "%s", "Songs");
+ GfxPrint_Printf(&printer, "%s", T(GFXP_KATAKANA "オカリナ", "Ocarina"));
GfxPrint_SetPos(&printer, 4, 24);
- GfxPrint_Printf(&printer, "%s", "Quest"); // "Collect" (stone of agony/gerudo card)
- GfxPrint_SetPos(&printer, 12, 24);
- GfxPrint_Printf(&printer, "%s", "Tokens"); // "Skulltula"
+ GfxPrint_Printf(&printer, "%s", T(GFXP_KATAKANA "コレクト", "Collect"));
+ GfxPrint_SetPos(&printer, 14, 24);
+ GfxPrint_Printf(&printer, "%s", T(GFXP_KATAKANA "キンスタ", "Skulltula"));
GfxPrint_SetPos(&printer, 23, 24);
- GfxPrint_Printf(&printer, "%s", "HP"); // heart pieces
+ GfxPrint_Printf(&printer, "%s", T(GFXP_KATAKANA "カケラ", "Gold Token"));
GfxPrint_SetPos(&printer, 28, 24);
GfxPrint_Printf(&printer, "%s", "/4");
@@ -101,8 +231,8 @@ void KaleidoScope_DrawDigit(PlayState* play, s32 digit, s32 rectLeft, s32 rectTo
CLOSE_DISPS(play->state.gfxCtx, "../z_kaleido_debug.c", 220);
}
-void KaleidoScope_DrawDebugEditor(PlayState* play) {
- static s16 curSection = 0;
+void KaleidoScope_DrawInventoryEditor(PlayState* play) {
+ static s16 curSection = SECTION_RUPEES;
static s16 curRow = 0;
static s32 prevDBtnInput = 0;
static s32 heldDBtnTimer = 0;
@@ -110,7 +240,8 @@ void KaleidoScope_DrawDebugEditor(PlayState* play) {
Input* input = &play->state.input[0];
Gfx* gfx;
Gfx* gfxRef;
- s16 spD8[4];
+ // Used for both storing the digits of the drawn numbers and digit positions
+ s16 digitBuf[4];
s16 slot;
s16 i;
s16 j;
@@ -137,7 +268,7 @@ void KaleidoScope_DrawDebugEditor(PlayState* play) {
gfx = Gfx_Open(gfxRef);
gSPDisplayList(OVERLAY_DISP++, gfx);
- KaleidoScope_DrawDebugEditorText(&gfx);
+ KaleidoScope_DrawInventoryEditorText(&gfx);
gSPEndDisplayList(gfx++);
Gfx_Close(gfxRef, gfx);
@@ -154,162 +285,162 @@ void KaleidoScope_DrawDebugEditor(PlayState* play) {
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, 255);
// Rupees
- spD8[0] = spD8[1] = spD8[2] = 0;
- spD8[3] = gSaveContext.save.info.playerData.rupees;
- while (spD8[3] >= 1000) {
- spD8[0]++;
- spD8[3] -= 1000;
+ digitBuf[0] = digitBuf[1] = digitBuf[2] = 0;
+ digitBuf[3] = gSaveContext.save.info.playerData.rupees;
+ while (digitBuf[3] >= 1000) {
+ digitBuf[0]++;
+ digitBuf[3] -= 1000;
}
- while (spD8[3] >= 100) {
- spD8[1]++;
- spD8[3] -= 100;
+ while (digitBuf[3] >= 100) {
+ digitBuf[1]++;
+ digitBuf[3] -= 100;
}
- while (spD8[3] >= 10) {
- spD8[2]++;
- spD8[3] -= 10;
+ while (digitBuf[3] >= 10) {
+ digitBuf[2]++;
+ digitBuf[3] -= 10;
}
for (i = 0, x = 68; i < 4; i++, x += 10) {
- KaleidoScope_DrawDigit(play, spD8[i], x, 15);
+ KaleidoScope_DrawDigit(play, digitBuf[i], x, 15);
}
// Health capacity
- spD8[2] = 0;
- spD8[3] = gSaveContext.save.info.playerData.healthCapacity / 0x10;
- while (spD8[3] >= 10) {
- spD8[2]++;
- spD8[3] -= 10;
+ digitBuf[2] = 0;
+ digitBuf[3] = gSaveContext.save.info.playerData.healthCapacity / 0x10;
+ while (digitBuf[3] >= 10) {
+ digitBuf[2]++;
+ digitBuf[3] -= 10;
}
- KaleidoScope_DrawDigit(play, spD8[2], 146, 15);
- KaleidoScope_DrawDigit(play, spD8[3], 156, 15);
+ KaleidoScope_DrawDigit(play, digitBuf[2], 146, 15);
+ KaleidoScope_DrawDigit(play, digitBuf[3], 156, 15);
// Health
- spD8[2] = 0;
- spD8[3] = gSaveContext.save.info.playerData.health / 0x10;
- while (spD8[3] >= 10) {
- spD8[2]++;
- spD8[3] -= 10;
+ digitBuf[2] = 0;
+ digitBuf[3] = gSaveContext.save.info.playerData.health / 0x10;
+ while (digitBuf[3] >= 10) {
+ digitBuf[2]++;
+ digitBuf[3] -= 10;
}
- KaleidoScope_DrawDigit(play, spD8[2], 172, 15);
- KaleidoScope_DrawDigit(play, spD8[3], 182, 15);
+ KaleidoScope_DrawDigit(play, digitBuf[2], 172, 15);
+ KaleidoScope_DrawDigit(play, digitBuf[3], 182, 15);
// Inventory
for (slot = 0, i = 0, y = 35; i < 4; i++, y += 15) {
for (j = 0, x = 78; j < 6; j++, slot++, x += 26) {
- spD8[2] = 0;
+ digitBuf[2] = 0;
if ((slot <= SLOT_BOW) || (slot == SLOT_SLINGSHOT) || (slot == SLOT_BOMBCHU) || (slot == SLOT_MAGIC_BEAN)) {
- spD8[3] = AMMO(gAmmoItems[slot]);
+ digitBuf[3] = AMMO(gAmmoItems[slot]);
} else if (slot == SLOT_OCARINA) {
- spD8[3] = gSaveContext.save.info.inventory.items[slot];
+ digitBuf[3] = gSaveContext.save.info.inventory.items[slot];
} else {
- spD8[3] = gSaveContext.save.info.inventory.items[slot];
+ digitBuf[3] = gSaveContext.save.info.inventory.items[slot];
}
- if (spD8[3] != ITEM_NONE) {
- while (spD8[3] >= 10) {
- spD8[2]++;
- spD8[3] -= 10;
+ if (digitBuf[3] != ITEM_NONE) {
+ while (digitBuf[3] >= 10) {
+ digitBuf[2]++;
+ digitBuf[3] -= 10;
}
} else {
- spD8[2] = spD8[3] = 0;
+ digitBuf[2] = digitBuf[3] = 0;
}
- KaleidoScope_DrawDigit(play, spD8[2], x, y);
- KaleidoScope_DrawDigit(play, spD8[3], x + 10, y);
+ KaleidoScope_DrawDigit(play, digitBuf[2], x, y);
+ KaleidoScope_DrawDigit(play, digitBuf[3], x + 10, y);
}
}
// Keys
- for (spD8[1] = 78, i = 0; i < 17; i++) {
- spD8[2] = 0;
+ for (digitBuf[1] = 78, i = 0; i < 17; i++) {
+ digitBuf[2] = 0;
- if ((spD8[3] = gSaveContext.save.info.inventory.dungeonKeys[i]) >= 0) {
- while (spD8[3] >= 10) {
- spD8[2]++;
- spD8[3] -= 10;
+ if ((digitBuf[3] = gSaveContext.save.info.inventory.dungeonKeys[i]) >= 0) {
+ while (digitBuf[3] >= 10) {
+ digitBuf[2]++;
+ digitBuf[3] -= 10;
}
} else {
- spD8[2] = spD8[3] = 0;
+ digitBuf[2] = digitBuf[3] = 0;
}
- KaleidoScope_DrawDigit(play, spD8[3], spD8[1], 98);
- spD8[1] += 10;
+ KaleidoScope_DrawDigit(play, digitBuf[3], digitBuf[1], 98);
+ digitBuf[1] += 10;
}
// Upgrades
- for (spD8[1] = 78, i = 0; i < 8; i++, spD8[1] += 12) {
- KaleidoScope_DrawDigit(play, CUR_UPG_VALUE(i), spD8[1], 115);
+ for (digitBuf[1] = 78, i = 0; i < 8; i++, digitBuf[1] += 12) {
+ KaleidoScope_DrawDigit(play, CUR_UPG_VALUE(i), digitBuf[1], 115);
}
// Equipment
- for (spD8[1] = 202, i = 0; i < 4; i++, spD8[1] += 12) {
- KaleidoScope_DrawDigit(play, ALL_EQUIP_VALUE(i), spD8[1], 115);
+ for (digitBuf[1] = 202, i = 0; i < 4; i++, digitBuf[1] += 12) {
+ KaleidoScope_DrawDigit(play, ALL_EQUIP_VALUE(i), digitBuf[1], 115);
}
// Dungeon Items
- for (spD8[1] = 78, i = 0; i < 12; i++, spD8[1] += 12) {
- spD8[2] = gSaveContext.save.info.inventory.dungeonItems[i] & gEquipMasks[0];
- KaleidoScope_DrawDigit(play, spD8[2], spD8[1], 132);
+ for (digitBuf[1] = 78, i = 0; i < 12; i++, digitBuf[1] += 12) {
+ digitBuf[2] = gSaveContext.save.info.inventory.dungeonItems[i] & gEquipMasks[0];
+ KaleidoScope_DrawDigit(play, digitBuf[2], digitBuf[1], 132);
}
// Medallions
- for (spD8[1] = 78, i = 0; i < 6; i++, spD8[1] += 12) {
- spD8[2] = 0;
+ for (digitBuf[1] = 78, i = 0; i < 6; i++, digitBuf[1] += 12) {
+ digitBuf[2] = 0;
if (CHECK_QUEST_ITEM(QUEST_MEDALLION_FOREST + i)) {
- spD8[2] = 1;
+ digitBuf[2] = 1;
}
- KaleidoScope_DrawDigit(play, spD8[2], spD8[1], 149);
+ KaleidoScope_DrawDigit(play, digitBuf[2], digitBuf[1], 149);
}
// Spiritual Stones
- for (spD8[1] = 210, i = 0; i < 3; i++, spD8[1] += 12) {
- spD8[2] = 0;
+ for (digitBuf[1] = 210, i = 0; i < 3; i++, digitBuf[1] += 12) {
+ digitBuf[2] = 0;
if (CHECK_QUEST_ITEM(QUEST_KOKIRI_EMERALD + i)) {
- spD8[2] = 1;
+ digitBuf[2] = 1;
}
- KaleidoScope_DrawDigit(play, spD8[2], spD8[1], 149);
+ KaleidoScope_DrawDigit(play, digitBuf[2], digitBuf[1], 149);
}
// Songs
- for (spD8[1] = 78, i = 0; i < 12; i++, spD8[1] += 12) {
- spD8[2] = 0;
+ for (digitBuf[1] = 78, i = 0; i < 12; i++, digitBuf[1] += 12) {
+ digitBuf[2] = 0;
if (CHECK_QUEST_ITEM(QUEST_SONG_MINUET + i)) {
- spD8[2] = 1;
+ digitBuf[2] = 1;
}
- KaleidoScope_DrawDigit(play, spD8[2], spD8[1], 166);
+ KaleidoScope_DrawDigit(play, digitBuf[2], digitBuf[1], 166);
}
// Other Quest Items
- for (spD8[1] = 78, i = 0; i < 2; i++, spD8[1] += 12) {
- spD8[2] = 0;
+ for (digitBuf[1] = 78, i = 0; i < 2; i++, digitBuf[1] += 12) {
+ digitBuf[2] = 0;
if (CHECK_QUEST_ITEM(QUEST_STONE_OF_AGONY + i)) {
- spD8[2] = 1;
+ digitBuf[2] = 1;
}
- KaleidoScope_DrawDigit(play, spD8[2], spD8[1], 185);
+ KaleidoScope_DrawDigit(play, digitBuf[2], digitBuf[1], 185);
}
// GS Tokens
- spD8[3] = gSaveContext.save.info.inventory.gsTokens;
- spD8[1] = 0;
- spD8[2] = 0;
- while (spD8[3] >= 100) {
- spD8[1]++;
- spD8[3] -= 100;
+ digitBuf[3] = gSaveContext.save.info.inventory.gsTokens;
+ digitBuf[1] = 0;
+ digitBuf[2] = 0;
+ while (digitBuf[3] >= 100) {
+ digitBuf[1]++;
+ digitBuf[3] -= 100;
}
- while (spD8[3] >= 10) {
- spD8[2]++;
- spD8[3] -= 10;
+ while (digitBuf[3] >= 10) {
+ digitBuf[2]++;
+ digitBuf[3] -= 10;
}
- KaleidoScope_DrawDigit(play, spD8[1], 145, 185);
- KaleidoScope_DrawDigit(play, spD8[2], 155, 185);
- KaleidoScope_DrawDigit(play, spD8[3], 165, 185);
+ KaleidoScope_DrawDigit(play, digitBuf[1], 145, 185);
+ KaleidoScope_DrawDigit(play, digitBuf[2], 155, 185);
+ KaleidoScope_DrawDigit(play, digitBuf[3], 165, 185);
// Heart Pieces (X / 4)
KaleidoScope_DrawDigit(
@@ -341,18 +472,18 @@ void KaleidoScope_DrawDebugEditor(PlayState* play) {
}
curSection = sRowFirstSections[curRow];
} else if (CHECK_BTN_ANY(dBtnInput, BTN_DLEFT)) {
- if (--curSection < 0) {
- curSection = 0x5C;
+ if (--curSection < SECTION_RUPEES) {
+ curSection = SECTION_HEART_PIECES;
}
} else if (CHECK_BTN_ANY(dBtnInput, BTN_DRIGHT)) {
- if (++curSection > 0x5C) {
- curSection = 0;
+ if (++curSection > SECTION_HEART_PIECES) {
+ curSection = SECTION_RUPEES;
}
}
// Handles the logic to change values based on the selected section
switch (curSection) {
- case 0:
+ case SECTION_RUPEES:
if (CHECK_BTN_ALL(input->press.button, BTN_CUP)) {
gSaveContext.save.info.playerData.rupees -= 100;
if (gSaveContext.save.info.playerData.rupees < 0) {
@@ -376,7 +507,7 @@ void KaleidoScope_DrawDebugEditor(PlayState* play) {
}
break;
- case 1:
+ case SECTION_HEALTH_CAPACITY:
if (CHECK_BTN_ALL(input->press.button, BTN_CUP) || CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) {
gSaveContext.save.info.playerData.healthCapacity -= 0x10;
if (gSaveContext.save.info.playerData.healthCapacity < 0x30) {
@@ -391,7 +522,7 @@ void KaleidoScope_DrawDebugEditor(PlayState* play) {
}
break;
- case 2:
+ case SECTION_CURRENT_HEALTH:
if (CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) {
Health_ChangeBy(play, -4);
} else if (CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) {
@@ -403,7 +534,7 @@ void KaleidoScope_DrawDebugEditor(PlayState* play) {
}
break;
- case 0x5C:
+ case SECTION_HEART_PIECES:
if (CHECK_BTN_ALL(input->press.button, BTN_CUP) || CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) {
if ((((gSaveContext.save.info.inventory.questItems & 0xF0000000) & 0xF0000000) >>
QUEST_HEART_PIECE_COUNT) != 0) {
@@ -418,8 +549,8 @@ void KaleidoScope_DrawDebugEditor(PlayState* play) {
break;
default:
- if (curSection < 0x1B) {
- i = curSection - 3;
+ if (curSection <= SECTION_LAST_INVENTORY_SLOT) {
+ i = curSection - SECTION_FIRST_INVENTORY_SLOT;
if ((i <= SLOT_BOW) || (i == SLOT_SLINGSHOT) || (i == SLOT_BOMBCHU) || (i == SLOT_MAGIC_BEAN)) {
if (CHECK_BTN_ALL(input->press.button, BTN_CUP)) {
Inventory_DeleteItem(gAmmoItems[i], SLOT(gAmmoItems[i]));
@@ -552,16 +683,16 @@ void KaleidoScope_DrawDebugEditor(PlayState* play) {
}
}
}
- } else if (curSection < 0x2C) {
+ } else if (curSection <= SECTION_LAST_KEY_COUNT) {
if (CHECK_BTN_ALL(input->press.button, BTN_CUP) || CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) {
- i = curSection - 0x1B;
+ i = curSection - SECTION_FIRST_KEY_COUNT;
gSaveContext.save.info.inventory.dungeonKeys[i]--;
if (gSaveContext.save.info.inventory.dungeonKeys[i] < 0) {
gSaveContext.save.info.inventory.dungeonKeys[i] = -1;
}
} else if (CHECK_BTN_ALL(input->press.button, BTN_CDOWN) ||
CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) {
- i = curSection - 0x1B;
+ i = curSection - SECTION_FIRST_KEY_COUNT;
if (gSaveContext.save.info.inventory.dungeonKeys[i] < 0) {
gSaveContext.save.info.inventory.dungeonKeys[i] = 1;
} else {
@@ -572,9 +703,9 @@ void KaleidoScope_DrawDebugEditor(PlayState* play) {
}
}
} else {
- if (curSection < 0x38) {
- i = curSection - 0x2C;
- if ((curSection >= 0x2C) && (curSection < 0x34)) {
+ if (curSection <= SECTION_LAST_EQUIPMENT) {
+ i = curSection - SECTION_FIRST_UPGRADE;
+ if ((curSection >= SECTION_FIRST_UPGRADE) && (curSection <= SECTION_LAST_UPGRADE)) {
if (CHECK_BTN_ALL(input->press.button, BTN_CUP) ||
CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) {
if (CUR_UPG_VALUE(i) != 0) {
@@ -587,7 +718,7 @@ void KaleidoScope_DrawDebugEditor(PlayState* play) {
}
}
} else {
- i = curSection - 0x34; // 0 <= i < 4
+ i = curSection - SECTION_FIRST_EQUIPMENT; // 0 <= i < 4
if (CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) {
gSaveContext.save.info.inventory.equipment ^= OWNED_EQUIP_FLAG_ALT(i, 0);
}
@@ -601,8 +732,8 @@ void KaleidoScope_DrawDebugEditor(PlayState* play) {
gSaveContext.save.info.inventory.equipment ^= OWNED_EQUIP_FLAG_ALT(i, 3);
}
}
- } else if (curSection < 0x44) {
- i = curSection - 0x38;
+ } else if (curSection <= SECTION_LAST_DUNGEON_ITEMS) {
+ i = curSection - SECTION_FIRST_DUNGEON_ITEMS;
if (CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) {
gSaveContext.save.info.inventory.dungeonItems[i] ^= 4;
}
@@ -612,7 +743,7 @@ void KaleidoScope_DrawDebugEditor(PlayState* play) {
if (CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) {
gSaveContext.save.info.inventory.dungeonItems[i] ^= 1;
}
- } else if (curSection == 0x5B) {
+ } else if (curSection == SECTION_SKULL_TOKENS) {
if (CHECK_BTN_ALL(input->press.button, BTN_CUP) || CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) {
gSaveContext.save.info.inventory.gsTokens++;
#if PLATFORM_N64
@@ -627,8 +758,8 @@ void KaleidoScope_DrawDebugEditor(PlayState* play) {
gSaveContext.save.info.inventory.gsTokens = 0;
}
}
- } else if (curSection < 0x5C) {
- i = curSection - 0x44;
+ } else if (curSection < SECTION_HEART_PIECES) {
+ i = curSection - SECTION_FIRST_MEDALLION;
if (CHECK_BTN_ALL(input->press.button, BTN_CUP) || CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) {
gSaveContext.save.info.inventory.questItems ^= gBitFlags[i];
}
@@ -643,23 +774,28 @@ void KaleidoScope_DrawDebugEditor(PlayState* play) {
gDPSetCombineMode(POLY_OPA_DISP++, G_CC_PRIMITIVE, G_CC_PRIMITIVE);
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 0, 0, 200, 120);
- if (curSection == 0) {
+ if (curSection == SECTION_RUPEES) {
+ // 4 digit long box
gDPFillRectangle(POLY_OPA_DISP++, sSectionPositions[curSection][0], sSectionPositions[curSection][1],
sSectionPositions[curSection][0] + 45, sSectionPositions[curSection][1] + 16);
- } else if ((curSection >= 0x1B) || (curSection == 0x5B)) {
+ } else if ((curSection >= SECTION_FIRST_KEY_COUNT) || (curSection == SECTION_SKULL_TOKENS)) {
+ // 1 digit long box
gDPFillRectangle(POLY_OPA_DISP++, sSectionPositions[curSection][0] - 2, sSectionPositions[curSection][1],
sSectionPositions[curSection][0] + 14, sSectionPositions[curSection][1] + 16);
} else {
+ // 2 digit long box
gDPFillRectangle(POLY_OPA_DISP++, sSectionPositions[curSection][0] - 4, sSectionPositions[curSection][1],
sSectionPositions[curSection][0] + 24, sSectionPositions[curSection][1] + 16);
}
// Handles exiting the inventory editor with the L button
- // The editor is opened with `debugState` set to 1, and becomes closable after a frame once `debugState` is set to 2
- if (pauseCtx->debugState == 1) {
- pauseCtx->debugState = 2;
- } else if ((pauseCtx->debugState == 2) && CHECK_BTN_ALL(input->press.button, BTN_L)) {
- pauseCtx->debugState = 0;
+ // The editor is opened with `debugState` set to PAUSE_DEBUG_STATE_INVENTORY_EDITOR_OPENING,
+ // and becomes closable after a frame once `debugState` is set to PAUSE_DEBUG_STATE_INVENTORY_EDITOR_OPEN
+ if (pauseCtx->debugState == PAUSE_DEBUG_STATE_INVENTORY_EDITOR_OPENING) {
+ pauseCtx->debugState = PAUSE_DEBUG_STATE_INVENTORY_EDITOR_OPEN;
+ } else if ((pauseCtx->debugState == PAUSE_DEBUG_STATE_INVENTORY_EDITOR_OPEN) &&
+ CHECK_BTN_ALL(input->press.button, BTN_L)) {
+ pauseCtx->debugState = PAUSE_DEBUG_STATE_CLOSED;
}
CLOSE_DISPS(play->state.gfxCtx, "../z_kaleido_debug.c", 861);
diff --git a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.c b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.c
index b9a55b7ee..9843e4efa 100644
--- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.c
+++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.c
@@ -6,6 +6,7 @@
#include "printf.h"
#include "regs.h"
#include "sfx.h"
+#include "translation.h"
#include "z64play.h"
#include "z64player.h"
#include "z64save.h"
@@ -13,18 +14,60 @@
#include "assets/textures/icon_item_static/icon_item_static.h"
#include "assets/textures/parameter_static/parameter_static.h"
-static u8 sChildUpgrades[] = { UPG_BULLET_BAG, UPG_BOMB_BAG, UPG_STRENGTH, UPG_SCALE };
-static u8 sAdultUpgrades[] = { UPG_QUIVER, UPG_BOMB_BAG, UPG_STRENGTH, UPG_SCALE };
+static u8 sChildUpgrades[] = {
+ UPG_BULLET_BAG, // EQUIP_QUAD_UPG_BULLETBAG_QUIVER
+ UPG_BOMB_BAG, // EQUIP_QUAD_UPG_BOMB_BAG
+ UPG_STRENGTH, // EQUIP_QUAD_UPG_STRENGTH
+ UPG_SCALE, // EQUIP_QUAD_UPG_SCALE
+};
+static u8 sAdultUpgrades[] = {
+ UPG_QUIVER, // EQUIP_QUAD_UPG_BULLETBAG_QUIVER
+ UPG_BOMB_BAG, // EQUIP_QUAD_UPG_BOMB_BAG
+ UPG_STRENGTH, // EQUIP_QUAD_UPG_STRENGTH
+ UPG_SCALE, // EQUIP_QUAD_UPG_SCALE
+};
-static u8 sChildUpgradeItemBases[] = { ITEM_BULLET_BAG_30, ITEM_BOMB_BAG_20, ITEM_STRENGTH_GORONS_BRACELET,
- ITEM_SCALE_SILVER };
-static u8 sAdultUpgradeItemBases[] = { ITEM_QUIVER_30, ITEM_BOMB_BAG_20, ITEM_STRENGTH_GORONS_BRACELET,
- ITEM_SCALE_SILVER };
+static u8 sChildUpgradeItemBases[] = {
+ ITEM_BULLET_BAG_30, // EQUIP_QUAD_UPG_BULLETBAG_QUIVER
+ ITEM_BOMB_BAG_20, // EQUIP_QUAD_UPG_BOMB_BAG
+ ITEM_STRENGTH_GORONS_BRACELET, // EQUIP_QUAD_UPG_STRENGTH
+ ITEM_SCALE_SILVER, // EQUIP_QUAD_UPG_SCALE
+};
+static u8 sAdultUpgradeItemBases[] = {
+ ITEM_QUIVER_30, // EQUIP_QUAD_UPG_BULLETBAG_QUIVER
+ ITEM_BOMB_BAG_20, // EQUIP_QUAD_UPG_BOMB_BAG
+ ITEM_STRENGTH_GORONS_BRACELET, // EQUIP_QUAD_UPG_STRENGTH
+ ITEM_SCALE_SILVER, // EQUIP_QUAD_UPG_SCALE
+};
-static u8 sUpgradeItemOffsets[] = { 0x00, 0x03, 0x06, 0x09 };
+static u8 sUpgradeItemOffsets[] = {
+ 0, // unused
+ ITEM_BOMB_BAG_20 - ITEM_QUIVER_30, // UPG_BOMB_BAG
+ ITEM_STRENGTH_GORONS_BRACELET - ITEM_QUIVER_30, // UPG_STRENGTH
+ ITEM_SCALE_SILVER - ITEM_QUIVER_30, // UPG_SCALE
+};
static u8 sEquipmentItemOffsets[] = {
- 0x00, 0x00, 0x01, 0x02, 0x00, 0x03, 0x04, 0x05, 0x00, 0x06, 0x07, 0x08, 0x00, 0x09, 0x0A, 0x0B,
+ // EQUIP_TYPE_SWORD
+ 0, // unused
+ ITEM_SWORD_KOKIRI - ITEM_SWORD_KOKIRI, // EQUIP_VALUE_SWORD_KOKIRI
+ ITEM_SWORD_MASTER - ITEM_SWORD_KOKIRI, // EQUIP_VALUE_SWORD_MASTER
+ ITEM_SWORD_BIGGORON - ITEM_SWORD_KOKIRI, // EQUIP_VALUE_SWORD_BIGGORON
+ // EQUIP_TYPE_SHIELD
+ 0, // unused
+ ITEM_SHIELD_DEKU - ITEM_SWORD_KOKIRI, // EQUIP_VALUE_SHIELD_DEKU
+ ITEM_SHIELD_HYLIAN - ITEM_SWORD_KOKIRI, // EQUIP_VALUE_SHIELD_HYLIAN
+ ITEM_SHIELD_MIRROR - ITEM_SWORD_KOKIRI, // EQUIP_VALUE_SHIELD_MIRROR
+ // EQUIP_TYPE_TUNIC
+ 0, // unused
+ ITEM_TUNIC_KOKIRI - ITEM_SWORD_KOKIRI, // EQUIP_VALUE_TUNIC_KOKIRI
+ ITEM_TUNIC_GORON - ITEM_SWORD_KOKIRI, // EQUIP_VALUE_TUNIC_GORON
+ ITEM_TUNIC_ZORA - ITEM_SWORD_KOKIRI, // EQUIP_VALUE_TUNIC_ZORA
+ // EQUIP_TYPE_BOOTS
+ 0, // unused
+ ITEM_BOOTS_KOKIRI - ITEM_SWORD_KOKIRI, // EQUIP_VALUE_BOOTS_KOKIRI
+ ITEM_BOOTS_IRON - ITEM_SWORD_KOKIRI, // EQUIP_VALUE_BOOTS_IRON
+ ITEM_BOOTS_HOVER - ITEM_SWORD_KOKIRI, // EQUIP_VALUE_BOOTS_HOVER
};
void KaleidoScope_DrawEquipmentImage(PlayState* play, void* source, u32 width, u32 height) {
@@ -46,15 +89,15 @@ void KaleidoScope_DrawEquipmentImage(PlayState* play, void* source, u32 width, u
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, pauseCtx->alpha);
curTexture = source;
- remainingSize = width * height * 2;
- textureHeight = 4096 / (width * 2);
- textureSize = width * textureHeight * 2;
+ remainingSize = width * height * G_IM_SIZ_16b_BYTES;
+ textureHeight = TMEM_SIZE / (width * G_IM_SIZ_16b_BYTES);
+ textureSize = width * textureHeight * G_IM_SIZ_16b_BYTES;
textureCount = remainingSize / textureSize;
if ((remainingSize % textureSize) != 0) {
textureCount += 1;
}
- vtxIndex = 80;
+ vtxIndex = EQUIP_QUAD_PLAYER_FIRST * 4;
gDPSetTileCustom(POLY_OPA_DISP++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, width - 1, textureHeight - 1, 0,
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
@@ -76,7 +119,7 @@ void KaleidoScope_DrawEquipmentImage(PlayState* play, void* source, u32 width, u
if ((remainingSize - textureSize) < 0) {
if (remainingSize > 0) {
- textureHeight = remainingSize / (s32)(width * 2);
+ textureHeight = remainingSize / (s32)(width * G_IM_SIZ_16b_BYTES);
remainingSize -= textureSize;
gDPSetTileCustom(POLY_OPA_DISP++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, width - 1, textureHeight - 1, 0,
@@ -125,8 +168,10 @@ void KaleidoScope_DrawPlayerWork(PlayState* play) {
BOOTS_EQUIP_TO_PLAYER(CUR_EQUIP_VALUE(EQUIP_TYPE_BOOTS)));
}
+#ifndef AVOID_UB
// Wrong prototype; this function is called with `play` even though it has no arguments
void KaleidoScope_ProcessPlayerPreRender(PlayState* play);
+#endif
void KaleidoScope_DrawEquipment(PlayState* play) {
static s16 sEquipTimer = 0;
@@ -154,7 +199,9 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, ZREG(39), ZREG(40), ZREG(41), pauseCtx->alpha);
gDPSetEnvColor(POLY_OPA_DISP++, ZREG(43), ZREG(44), ZREG(45), 0);
- for (i = 0, j = 64; i < 4; i++, j += 4) {
+ // Draw EQUIP_QUAD_SELECTED_SWORD, EQUIP_QUAD_SELECTED_SHIELD, EQUIP_QUAD_SELECTED_TUNIC, EQUIP_QUAD_SELECTED_BOOTS
+
+ for (i = 0, j = EQUIP_QUAD_SELECTED_SWORD * 4; i < EQUIP_TYPE_MAX; i++, j += 4) {
if (CUR_EQUIP_VALUE(i) != 0) {
gDPPipeSync(POLY_OPA_DISP++);
gSPVertex(POLY_OPA_DISP++, &pauseCtx->equipVtx[j], 4, 0);
@@ -168,6 +215,8 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
oldCursorPoint = pauseCtx->cursorPoint[PAUSE_EQUIP];
pauseCtx->cursorColorSet = 0;
+ // Handle moving the cursor with stick input
+
if (pauseCtx->cursorSpecialPos == 0) {
pauseCtx->nameColorSet = 0;
@@ -183,12 +232,13 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
cursorMoveResult = 0;
do {
if (pauseCtx->stickAdjX < -30) {
- if (pauseCtx->cursorX[PAUSE_EQUIP] != 0) {
+ if (pauseCtx->cursorX[PAUSE_EQUIP] != EQUIP_CURSOR_X_UPG) {
pauseCtx->cursorX[PAUSE_EQUIP]--;
pauseCtx->cursorPoint[PAUSE_EQUIP] -= 1;
- if (pauseCtx->cursorX[PAUSE_EQUIP] == 0) {
- if (pauseCtx->cursorY[PAUSE_EQUIP] == 0) {
+ if (pauseCtx->cursorX[PAUSE_EQUIP] == EQUIP_CURSOR_X_UPG) {
+ if (pauseCtx->cursorY[PAUSE_EQUIP] == EQUIP_CURSOR_Y_BULLETBAG_QUIVER) {
+ //! @bug Assumes adult always has bullet bag (as adult this should rely on `UPG_QUIVER`)
if (CUR_UPG_VALUE(UPG_BULLET_BAG) != 0) {
cursorMoveResult = 1;
}
@@ -230,7 +280,7 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
pauseCtx->cursorX[PAUSE_EQUIP]++;
pauseCtx->cursorPoint[PAUSE_EQUIP] += 1;
- if (pauseCtx->cursorX[PAUSE_EQUIP] == 0) {
+ if (pauseCtx->cursorX[PAUSE_EQUIP] == EQUIP_CURSOR_X_UPG) {
if (CUR_UPG_VALUE(pauseCtx->cursorY[PAUSE_EQUIP]) != 0) {
cursorMoveResult = 1;
}
@@ -277,17 +327,21 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
pauseCtx->cursorY[PAUSE_EQUIP]--;
pauseCtx->cursorPoint[PAUSE_EQUIP] -= 4;
- if (pauseCtx->cursorX[PAUSE_EQUIP] == 0) {
- if (pauseCtx->cursorY[PAUSE_EQUIP] == 0) {
+ if (pauseCtx->cursorX[PAUSE_EQUIP] == EQUIP_CURSOR_X_UPG) {
+ if (pauseCtx->cursorY[PAUSE_EQUIP] == EQUIP_CURSOR_Y_BULLETBAG_QUIVER) {
if (CUR_UPG_VALUE(UPG_BULLET_BAG) != 0) {
cursorMoveResult = 1;
}
- } else if (CUR_UPG_VALUE(pauseCtx->cursorY[PAUSE_EQUIP]) != 0) {
- cursorMoveResult = 1;
+ } else {
+ if (CUR_UPG_VALUE(pauseCtx->cursorY[PAUSE_EQUIP]) != 0) {
+ cursorMoveResult = 1;
+ }
+ }
+ } else {
+ if (gBitFlags[pauseCtx->cursorPoint[PAUSE_EQUIP] - 1] &
+ gSaveContext.save.info.inventory.equipment) {
+ cursorMoveResult = 2;
}
- } else if (gBitFlags[pauseCtx->cursorPoint[PAUSE_EQUIP] - 1] &
- gSaveContext.save.info.inventory.equipment) {
- cursorMoveResult = 2;
}
} else {
pauseCtx->cursorY[PAUSE_EQUIP] = cursorY;
@@ -299,13 +353,15 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
pauseCtx->cursorY[PAUSE_EQUIP]++;
pauseCtx->cursorPoint[PAUSE_EQUIP] += 4;
- if (pauseCtx->cursorX[PAUSE_EQUIP] == 0) {
+ if (pauseCtx->cursorX[PAUSE_EQUIP] == EQUIP_CURSOR_X_UPG) {
if (CUR_UPG_VALUE(pauseCtx->cursorY[PAUSE_EQUIP]) != 0) {
cursorMoveResult = 1;
}
- } else if (gBitFlags[pauseCtx->cursorPoint[PAUSE_EQUIP] - 1] &
- gSaveContext.save.info.inventory.equipment) {
- cursorMoveResult = 2;
+ } else {
+ if (gBitFlags[pauseCtx->cursorPoint[PAUSE_EQUIP] - 1] &
+ gSaveContext.save.info.inventory.equipment) {
+ cursorMoveResult = 2;
+ }
}
} else {
pauseCtx->cursorY[PAUSE_EQUIP] = cursorY;
@@ -326,25 +382,29 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
cursorPoint = cursorX = cursorY = 0;
while (true) {
- if (cursorX == 0) {
- if (cursorY == 0) {
+ if (cursorX == EQUIP_CURSOR_X_UPG) {
+ if (cursorY == EQUIP_CURSOR_Y_BULLETBAG_QUIVER) {
if (CUR_UPG_VALUE(UPG_BULLET_BAG) != 0) {
pauseCtx->cursorPoint[PAUSE_EQUIP] = cursorPoint;
pauseCtx->cursorX[PAUSE_EQUIP] = cursorX;
pauseCtx->cursorY[PAUSE_EQUIP] = cursorY;
break;
}
- } else if (CUR_UPG_VALUE(cursorY) != 0) {
+ } else {
+ if (CUR_UPG_VALUE(cursorY) != 0) {
+ pauseCtx->cursorPoint[PAUSE_EQUIP] = cursorPoint;
+ pauseCtx->cursorX[PAUSE_EQUIP] = cursorX;
+ pauseCtx->cursorY[PAUSE_EQUIP] = cursorY;
+ break;
+ }
+ }
+ } else {
+ if (gBitFlags[cursorPoint - 1] & gSaveContext.save.info.inventory.equipment) {
pauseCtx->cursorPoint[PAUSE_EQUIP] = cursorPoint;
pauseCtx->cursorX[PAUSE_EQUIP] = cursorX;
pauseCtx->cursorY[PAUSE_EQUIP] = cursorY;
break;
}
- } else if (gBitFlags[cursorPoint - 1] & gSaveContext.save.info.inventory.equipment) {
- pauseCtx->cursorPoint[PAUSE_EQUIP] = cursorPoint;
- pauseCtx->cursorX[PAUSE_EQUIP] = cursorX;
- pauseCtx->cursorY[PAUSE_EQUIP] = cursorY;
- break;
}
cursorY = cursorY + 1;
@@ -360,7 +420,7 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
}
}
}
- } else {
+ } else { // cursorSpecialPos == PAUSE_CURSOR_PAGE_RIGHT
if (pauseCtx->stickAdjX < -30) {
pauseCtx->nameDisplayTimer = 0;
pauseCtx->cursorSpecialPos = 0;
@@ -370,18 +430,20 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
cursorPoint = cursorX = 3;
cursorY = 0;
while (true) {
- if (cursorX == 0) {
+ if (cursorX == EQUIP_CURSOR_X_UPG) {
if (CUR_UPG_VALUE(cursorY) != 0) {
pauseCtx->cursorPoint[PAUSE_EQUIP] = cursorPoint;
pauseCtx->cursorX[PAUSE_EQUIP] = cursorX;
pauseCtx->cursorY[PAUSE_EQUIP] = cursorY;
break;
}
- } else if (gBitFlags[cursorPoint - 1] & gSaveContext.save.info.inventory.equipment) {
- pauseCtx->cursorPoint[PAUSE_EQUIP] = cursorPoint;
- pauseCtx->cursorX[PAUSE_EQUIP] = cursorX;
- pauseCtx->cursorY[PAUSE_EQUIP] = cursorY;
- break;
+ } else {
+ if (gBitFlags[cursorPoint - 1] & gSaveContext.save.info.inventory.equipment) {
+ pauseCtx->cursorPoint[PAUSE_EQUIP] = cursorPoint;
+ pauseCtx->cursorX[PAUSE_EQUIP] = cursorX;
+ pauseCtx->cursorY[PAUSE_EQUIP] = cursorY;
+ break;
+ }
}
cursorY = cursorY + 1;
@@ -399,11 +461,14 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
}
}
- if (pauseCtx->cursorX[PAUSE_EQUIP] == 0) {
+ // set cursorItem
+
+ if (pauseCtx->cursorX[PAUSE_EQUIP] == EQUIP_CURSOR_X_UPG) {
pauseCtx->cursorColorSet = 0;
if (LINK_AGE_IN_YEARS == YEARS_CHILD) {
- if ((pauseCtx->cursorY[PAUSE_EQUIP] == 0) && (CUR_UPG_VALUE(UPG_BULLET_BAG) != 0)) {
+ if ((pauseCtx->cursorY[PAUSE_EQUIP] == EQUIP_CURSOR_Y_BULLETBAG_QUIVER) &&
+ (CUR_UPG_VALUE(UPG_BULLET_BAG) != 0)) {
cursorItem = ITEM_BULLET_BAG_30 + CUR_UPG_VALUE(UPG_BULLET_BAG) - 1;
} else {
cursorItem = ITEM_QUIVER_30 + sUpgradeItemOffsets[pauseCtx->cursorY[PAUSE_EQUIP]] +
@@ -411,12 +476,15 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
PRINTF("H_arrowcase_1 + non_equip_item_table = %d\n", cursorItem);
}
} else {
- if ((pauseCtx->cursorY[PAUSE_EQUIP] == 0) && (CUR_UPG_VALUE(UPG_QUIVER) == 0)) {
+ if ((pauseCtx->cursorY[PAUSE_EQUIP] == EQUIP_CURSOR_Y_BULLETBAG_QUIVER) &&
+ (CUR_UPG_VALUE(UPG_QUIVER) == 0)) {
cursorItem = ITEM_BULLET_BAG_30 + CUR_UPG_VALUE(UPG_BULLET_BAG) - 1;
} else {
cursorItem = ITEM_QUIVER_30 + sUpgradeItemOffsets[pauseCtx->cursorY[PAUSE_EQUIP]] +
CUR_UPG_VALUE(pauseCtx->cursorY[PAUSE_EQUIP]) - 1;
- PRINTF("大人 H_arrowcase_1 + non_equip_item_table = %d\n", cursorItem);
+ PRINTF(T("大人 H_arrowcase_1 + non_equip_item_table = %d\n",
+ "Adult H_arrowcase_1 + non_equip_item_table = %d\n"),
+ cursorItem);
}
}
} else {
@@ -428,8 +496,9 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
}
}
- if ((pauseCtx->cursorY[PAUSE_EQUIP] == 0) && (pauseCtx->cursorX[PAUSE_EQUIP] == 3)) {
- if (gSaveContext.save.info.playerData.bgsFlag != 0) {
+ if ((pauseCtx->cursorY[PAUSE_EQUIP] == EQUIP_TYPE_SWORD) &&
+ (pauseCtx->cursorX[PAUSE_EQUIP] == EQUIP_VALUE_SWORD_BIGGORON)) {
+ if (gSaveContext.save.info.playerData.bgsFlag) {
cursorItem = ITEM_HEART_PIECE_2;
} else if (CHECK_OWNED_EQUIP_ALT(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_BROKENGIANTKNIFE)) {
cursorItem = ITEM_GIANTS_KNIFE;
@@ -443,6 +512,8 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
PRINTF("kscope->select_name[Display_Equipment] = %d\n", pauseCtx->cursorItem[PAUSE_EQUIP]);
+ // Handle age particularities
+
if (!CHECK_AGE_REQ_EQUIP(pauseCtx->cursorY[PAUSE_EQUIP], pauseCtx->cursorX[PAUSE_EQUIP])) {
pauseCtx->nameColorSet = 1;
}
@@ -455,7 +526,8 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
}
}
- if ((pauseCtx->cursorX[PAUSE_EQUIP] == 0) && (pauseCtx->cursorY[PAUSE_EQUIP] == 0)) {
+ if ((pauseCtx->cursorX[PAUSE_EQUIP] == EQUIP_CURSOR_X_UPG) &&
+ (pauseCtx->cursorY[PAUSE_EQUIP] == EQUIP_CURSOR_Y_BULLETBAG_QUIVER)) {
if (LINK_AGE_IN_YEARS != YEARS_CHILD) {
if ((cursorItem >= ITEM_BULLET_BAG_30) && (cursorItem <= ITEM_BULLET_BAG_50)) {
pauseCtx->nameColorSet = 1;
@@ -467,20 +539,25 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
}
}
+ // Set cursor position
+
KaleidoScope_SetCursorPos(pauseCtx, cursorSlot * 4, pauseCtx->equipVtx);
+ // Handle input for changing equipment
+
if ((pauseCtx->cursorSpecialPos == 0) && (cursorItem != PAUSE_ITEM_NONE) &&
(pauseCtx->state == PAUSE_STATE_MAIN) && (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) &&
- CHECK_BTN_ALL(input->press.button, BTN_A) && (pauseCtx->cursorX[PAUSE_EQUIP] != 0)) {
+ CHECK_BTN_ALL(input->press.button, BTN_A) && (pauseCtx->cursorX[PAUSE_EQUIP] != EQUIP_CURSOR_X_UPG)) {
if (CHECK_AGE_REQ_EQUIP(pauseCtx->cursorY[PAUSE_EQUIP], pauseCtx->cursorX[PAUSE_EQUIP])) {
Inventory_ChangeEquipment(pauseCtx->cursorY[PAUSE_EQUIP], pauseCtx->cursorX[PAUSE_EQUIP]);
- if (pauseCtx->cursorY[PAUSE_EQUIP] == 0) {
+ if (pauseCtx->cursorY[PAUSE_EQUIP] == EQUIP_TYPE_SWORD) {
gSaveContext.save.info.infTable[INFTABLE_INDEX_1DX] = 0;
gSaveContext.save.info.equips.buttonItems[0] = cursorItem;
- if ((pauseCtx->cursorX[PAUSE_EQUIP] == 3) && (gSaveContext.save.info.playerData.bgsFlag != 0)) {
+ if ((pauseCtx->cursorX[PAUSE_EQUIP] == EQUIP_VALUE_SWORD_BIGGORON) &&
+ gSaveContext.save.info.playerData.bgsFlag) {
gSaveContext.save.info.equips.buttonItems[0] = ITEM_SWORD_BIGGORON;
gSaveContext.save.info.playerData.swordHealth = 8;
} else {
@@ -488,8 +565,7 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
gSaveContext.save.info.equips.buttonItems[0] = ITEM_SWORD_BIGGORON;
}
if ((gSaveContext.save.info.equips.buttonItems[0] == ITEM_SWORD_BIGGORON) &&
-
- (gSaveContext.save.info.playerData.bgsFlag == 0) &&
+ !gSaveContext.save.info.playerData.bgsFlag &&
CHECK_OWNED_EQUIP_ALT(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_BROKENGIANTKNIFE)) {
gSaveContext.save.info.equips.buttonItems[0] = ITEM_GIANTS_KNIFE;
}
@@ -500,7 +576,9 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
Audio_PlaySfxGeneral(NA_SE_SY_DECIDE, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
- pauseCtx->mainState = PAUSE_MAIN_STATE_7;
+
+ // Wait 10 frames before accepting input again
+ pauseCtx->mainState = PAUSE_MAIN_STATE_EQUIP_CHANGED;
sEquipTimer = 10;
} else {
Audio_PlaySfxGeneral(NA_SE_SY_ERROR, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
@@ -512,7 +590,7 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
Audio_PlaySfxGeneral(NA_SE_SY_CURSOR, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
}
- } else if ((pauseCtx->mainState == PAUSE_MAIN_STATE_7) && (pauseCtx->pageIndex == PAUSE_EQUIP)) {
+ } else if ((pauseCtx->mainState == PAUSE_MAIN_STATE_EQUIP_CHANGED) && (pauseCtx->pageIndex == PAUSE_EQUIP)) {
KaleidoScope_SetCursorPos(pauseCtx, pauseCtx->cursorSlot[PAUSE_EQUIP] * 4, pauseCtx->equipVtx);
pauseCtx->cursorColorSet = 8;
@@ -522,13 +600,19 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
}
}
- for (rowStart = 0, i = 0, point = 4; i < 4; i++, rowStart += 4, point += 16) {
+ // Enlarge the equip item at the current cursor position, if it can be equipped
+ // for each row (one row per equip type)
+ for (rowStart = 0, i = 0, point = EQUIP_QUAD_SWORD_KOKIRI * 4; i < EQUIP_TYPE_MAX;
+ i++, rowStart += 4, point += 4 * 4) {
+
+ // for each equip column
for (k = 0, temp = rowStart + 1, bit = rowStart, j = point; k < 3; k++, bit++, j += 4, temp++) {
if ((gBitFlags[bit] & gSaveContext.save.info.inventory.equipment) && (pauseCtx->cursorSpecialPos == 0)) {
if (CHECK_AGE_REQ_EQUIP(i, k + 1)) {
if (temp == cursorSlot) {
+
pauseCtx->equipVtx[j].v.ob[0] = pauseCtx->equipVtx[j + 2].v.ob[0] =
pauseCtx->equipVtx[j].v.ob[0] - 2;
pauseCtx->equipVtx[j + 1].v.ob[0] = pauseCtx->equipVtx[j + 3].v.ob[0] =
@@ -543,13 +627,19 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
}
}
+ // Draw upgrades and equips
+
Gfx_SetupDL_42Opa(play->state.gfxCtx);
gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM);
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, pauseCtx->alpha);
- for (rowStart = 0, j = 0, temp = 0, i = 0; i < 4; i++, rowStart += 4, j += 16) {
- gSPVertex(POLY_OPA_DISP++, &pauseCtx->equipVtx[j], 16, 0);
+ // for each row
+ for (rowStart = 0, j = 0, temp = 0, i = 0; i < 4; i++, rowStart += 4, j += 4 * 4) {
+ gSPVertex(POLY_OPA_DISP++, &pauseCtx->equipVtx[j], 4 * 4, 0);
+
+ // Draw upgrade `i`
+ // EQUIP_QUAD_UPG_BULLETBAG_QUIVER, EQUIP_QUAD_UPG_BOMB_BAG, EQUIP_QUAD_UPG_STRENGTH, EQUIP_QUAD_UPG_SCALE
if (LINK_AGE_IN_YEARS == YEARS_CHILD) {
point = CUR_UPG_VALUE(sChildUpgrades[i]);
@@ -560,6 +650,8 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
}
} else {
if ((i == 0) && (CUR_UPG_VALUE(sAdultUpgrades[i]) == 0)) {
+ // Show bullet bag instead of quiver if player has no quiver
+ //! @bug This assumes adult always has bullet bag
KaleidoScope_DrawQuadTextureRGBA32(
play->state.gfxCtx, gItemIcons[sChildUpgradeItemBases[i] + CUR_UPG_VALUE(sChildUpgrades[i]) - 1],
ITEM_ICON_WIDTH, ITEM_ICON_HEIGHT, 0);
@@ -570,12 +662,20 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
}
}
+ // Draw owned equips of type `i`
+ // EQUIP_QUAD_SWORD_KOKIRI, EQUIP_QUAD_SWORD_MASTER, EQUIP_QUAD_SWORD_BIGGORON
+ // EQUIP_QUAD_SHIELD_DEKU, EQUIP_QUAD_SHIELD_HYLIAN, EQUIP_QUAD_SHIELD_MIRROR
+ // EQUIP_QUAD_TUNIC_KOKIRI, EQUIP_QUAD_TUNIC_GORON, EQUIP_QUAD_TUNIC_ZORA
+ // EQUIP_QUAD_BOOTS_KOKIRI, EQUIP_QUAD_BOOTS_IRON, EQUIP_QUAD_BOOTS_HOVER
+
for (k = 0, bit = rowStart, point = 4; k < 3; k++, point += 4, temp++, bit++) {
- if (((u32)i == 0) && (k == 2) && (gSaveContext.save.info.playerData.bgsFlag != 0)) {
+ if (((u32)i == EQUIP_TYPE_SWORD) && (k == EQUIP_INV_SWORD_BIGGORON) &&
+ gSaveContext.save.info.playerData.bgsFlag) {
KaleidoScope_DrawQuadTextureRGBA32(play->state.gfxCtx, gItemIconSwordBiggoronTex, ITEM_ICON_WIDTH,
ITEM_ICON_HEIGHT, point);
- } else if ((i == 0) && (k == 2) && (gBitFlags[bit + 1] & gSaveContext.save.info.inventory.equipment)) {
+ } else if ((i == EQUIP_TYPE_SWORD) && (k == EQUIP_INV_SWORD_BIGGORON) &&
+ (gBitFlags[bit + 1] & gSaveContext.save.info.inventory.equipment)) {
KaleidoScope_DrawQuadTextureRGBA32(play->state.gfxCtx, gItemIconBrokenGiantsKnifeTex, ITEM_ICON_WIDTH,
ITEM_ICON_HEIGHT, point);
} else if (gBitFlags[bit] & gSaveContext.save.info.inventory.equipment) {
@@ -585,15 +685,21 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
}
}
+ // Draw player to the player prerender buffer
+
KaleidoScope_DrawPlayerWork(play);
- if ((pauseCtx->mainState == PAUSE_MAIN_STATE_7) && (sEquipTimer == 10)) {
+ if ((pauseCtx->mainState == PAUSE_MAIN_STATE_EQUIP_CHANGED) && (sEquipTimer == 10)) {
KaleidoScope_SetupPlayerPreRender(play);
}
- if ((pauseCtx->mainState == PAUSE_MAIN_STATE_7) && (sEquipTimer == 9)) {
+ if ((pauseCtx->mainState == PAUSE_MAIN_STATE_EQUIP_CHANGED) && (sEquipTimer == 9)) {
+#ifndef AVOID_UB
//! @bug: This function shouldn't take any arguments
KaleidoScope_ProcessPlayerPreRender(play);
+#else
+ KaleidoScope_ProcessPlayerPreRender();
+#endif
}
gSPSegment(POLY_OPA_DISP++, 0x07, pauseCtx->playerSegment);
@@ -603,6 +709,8 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
gSPSegment(POLY_OPA_DISP++, 0x0B, interfaceCtx->mapSegment);
gSPSegment(POLY_OPA_DISP++, 0x0C, pauseCtx->iconItemAltSegment);
+ // Draw player prerender onto the equip page
+
Gfx_SetupDL_42Opa(play->state.gfxCtx);
KaleidoScope_DrawEquipmentImage(play, pauseCtx->playerSegment, PAUSE_EQUIP_PLAYER_WIDTH, PAUSE_EQUIP_PLAYER_HEIGHT);
diff --git a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_item.c b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_item.c
index 803e6f2c0..3af423ac8 100644
--- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_item.c
+++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_item.c
@@ -7,6 +7,7 @@
#include "printf.h"
#include "regs.h"
#include "sfx.h"
+#include "translation.h"
#include "z64play.h"
#include "z64save.h"
#include "widescreen.h"
@@ -385,7 +386,7 @@ void KaleidoScope_DrawItemSelect(PlayState* play) {
index = cursorSlot * 4; // required to match?
KaleidoScope_SetCursorPos(pauseCtx, index, pauseCtx->itemVtx);
- if ((pauseCtx->debugState == 0) && (pauseCtx->state == PAUSE_STATE_MAIN) &&
+ if ((pauseCtx->debugState == PAUSE_DEBUG_STATE_CLOSED) && (pauseCtx->state == PAUSE_STATE_MAIN) &&
(pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE)) {
if (CHECK_BTN_ANY(input->press.button, BTN_CLEFT | BTN_CDOWN | BTN_CRIGHT)) {
if (CHECK_AGE_REQ_SLOT(cursorSlot) && (cursorItem != ITEM_SOLD_OUT)) {
@@ -701,19 +702,19 @@ void KaleidoScope_UpdateItemEquip(PlayState* play) {
gSaveContext.save.info.equips.cButtonSlots[0] = pauseCtx->equipTargetSlot;
Interface_LoadItemIcon1(play, 1);
- PRINTF("C左sl_item_no=%d (1)=%d (2)=%d (3)=%d\n", pauseCtx->equipTargetItem,
- gSaveContext.save.info.equips.buttonItems[1], gSaveContext.save.info.equips.buttonItems[2],
- gSaveContext.save.info.equips.buttonItems[3]);
- PRINTF("C左sl_number=%d (1)=%d (2)=%d (3)=%d\n", pauseCtx->equipTargetSlot,
- gSaveContext.save.info.equips.cButtonSlots[0], gSaveContext.save.info.equips.cButtonSlots[1],
- gSaveContext.save.info.equips.cButtonSlots[2]);
+ PRINTF(T("C左sl_item_no=%d (1)=%d (2)=%d (3)=%d\n", "C left sl_item_no=%d (1)=%d (2)=%d (3)=%d\n"),
+ pauseCtx->equipTargetItem, gSaveContext.save.info.equips.buttonItems[1],
+ gSaveContext.save.info.equips.buttonItems[2], gSaveContext.save.info.equips.buttonItems[3]);
+ PRINTF(T("C左sl_number=%d (1)=%d (2)=%d (3)=%d\n", "C left sl_number=%d (1)=%d (2)=%d (3)=%d\n"),
+ pauseCtx->equipTargetSlot, gSaveContext.save.info.equips.cButtonSlots[0],
+ gSaveContext.save.info.equips.cButtonSlots[1], gSaveContext.save.info.equips.cButtonSlots[2]);
} else if (pauseCtx->equipTargetCBtn == 1) {
- PRINTF("C下sl_item_no=%d (1)=%d (2)=%d (3)=%d\n", pauseCtx->equipTargetItem,
- gSaveContext.save.info.equips.buttonItems[1], gSaveContext.save.info.equips.buttonItems[2],
- gSaveContext.save.info.equips.buttonItems[3]);
- PRINTF("C下sl_number=%d (1)=%d (2)=%d (3)=%d\n", pauseCtx->equipTargetSlot,
- gSaveContext.save.info.equips.cButtonSlots[0], gSaveContext.save.info.equips.cButtonSlots[1],
- gSaveContext.save.info.equips.cButtonSlots[2]);
+ PRINTF(T("C下sl_item_no=%d (1)=%d (2)=%d (3)=%d\n", "C down sl_item_no=%d (1)=%d (2)=%d (3)=%d\n"),
+ pauseCtx->equipTargetItem, gSaveContext.save.info.equips.buttonItems[1],
+ gSaveContext.save.info.equips.buttonItems[2], gSaveContext.save.info.equips.buttonItems[3]);
+ PRINTF(T("C下sl_number=%d (1)=%d (2)=%d (3)=%d\n", "C down sl_number=%d (1)=%d (2)=%d (3)=%d\n"),
+ pauseCtx->equipTargetSlot, gSaveContext.save.info.equips.cButtonSlots[0],
+ gSaveContext.save.info.equips.cButtonSlots[1], gSaveContext.save.info.equips.cButtonSlots[2]);
if (pauseCtx->equipTargetSlot == gSaveContext.save.info.equips.cButtonSlots[0]) {
if (gSaveContext.save.info.equips.buttonItems[2] != ITEM_NONE) {
@@ -776,19 +777,19 @@ void KaleidoScope_UpdateItemEquip(PlayState* play) {
gSaveContext.save.info.equips.cButtonSlots[1] = pauseCtx->equipTargetSlot;
Interface_LoadItemIcon1(play, 2);
- PRINTF("C下sl_item_no=%d (1)=%d (2)=%d (3)=%d\n", pauseCtx->equipTargetItem,
- gSaveContext.save.info.equips.buttonItems[1], gSaveContext.save.info.equips.buttonItems[2],
- gSaveContext.save.info.equips.buttonItems[3]);
- PRINTF("C下sl_number=%d (1)=%d (2)=%d (3)=%d\n", pauseCtx->equipTargetSlot,
- gSaveContext.save.info.equips.cButtonSlots[0], gSaveContext.save.info.equips.cButtonSlots[1],
- gSaveContext.save.info.equips.cButtonSlots[2]);
+ PRINTF(T("C下sl_item_no=%d (1)=%d (2)=%d (3)=%d\n", "C down sl_item_no=%d (1)=%d (2)=%d (3)=%d\n"),
+ pauseCtx->equipTargetItem, gSaveContext.save.info.equips.buttonItems[1],
+ gSaveContext.save.info.equips.buttonItems[2], gSaveContext.save.info.equips.buttonItems[3]);
+ PRINTF(T("C下sl_number=%d (1)=%d (2)=%d (3)=%d\n", "C down sl_number=%d (1)=%d (2)=%d (3)=%d\n"),
+ pauseCtx->equipTargetSlot, gSaveContext.save.info.equips.cButtonSlots[0],
+ gSaveContext.save.info.equips.cButtonSlots[1], gSaveContext.save.info.equips.cButtonSlots[2]);
} else {
- PRINTF("C右sl_item_no=%d (1)=%d (2)=%d (3)=%d\n", pauseCtx->equipTargetItem,
- gSaveContext.save.info.equips.buttonItems[1], gSaveContext.save.info.equips.buttonItems[2],
- gSaveContext.save.info.equips.buttonItems[3]);
- PRINTF("C右sl_number=%d (1)=%d (2)=%d (3)=%d\n", pauseCtx->equipTargetSlot,
- gSaveContext.save.info.equips.cButtonSlots[0], gSaveContext.save.info.equips.cButtonSlots[1],
- gSaveContext.save.info.equips.cButtonSlots[2]);
+ PRINTF(T("C右sl_item_no=%d (1)=%d (2)=%d (3)=%d\n", "C right sl_item_no=%d (1)=%d (2)=%d (3)=%d\n"),
+ pauseCtx->equipTargetItem, gSaveContext.save.info.equips.buttonItems[1],
+ gSaveContext.save.info.equips.buttonItems[2], gSaveContext.save.info.equips.buttonItems[3]);
+ PRINTF(T("C右sl_number=%d (1)=%d (2)=%d (3)=%d\n", "C right sl_number=%d (1)=%d (2)=%d (3)=%d\n"),
+ pauseCtx->equipTargetSlot, gSaveContext.save.info.equips.cButtonSlots[0],
+ gSaveContext.save.info.equips.cButtonSlots[1], gSaveContext.save.info.equips.cButtonSlots[2]);
if (pauseCtx->equipTargetSlot == gSaveContext.save.info.equips.cButtonSlots[0]) {
if (gSaveContext.save.info.equips.buttonItems[3] != ITEM_NONE) {
@@ -851,12 +852,12 @@ void KaleidoScope_UpdateItemEquip(PlayState* play) {
gSaveContext.save.info.equips.cButtonSlots[2] = pauseCtx->equipTargetSlot;
Interface_LoadItemIcon1(play, 3);
- PRINTF("C右sl_item_no=%d (1)=%d (2)=%d (3)=%d\n", pauseCtx->equipTargetItem,
- gSaveContext.save.info.equips.buttonItems[1], gSaveContext.save.info.equips.buttonItems[2],
- gSaveContext.save.info.equips.buttonItems[3]);
- PRINTF("C右sl_number=%d (1)=%d (2)=%d (3)=%d\n", pauseCtx->equipTargetSlot,
- gSaveContext.save.info.equips.cButtonSlots[0], gSaveContext.save.info.equips.cButtonSlots[1],
- gSaveContext.save.info.equips.cButtonSlots[2]);
+ PRINTF(T("C右sl_item_no=%d (1)=%d (2)=%d (3)=%d\n", "C right sl_item_no=%d (1)=%d (2)=%d (3)=%d\n"),
+ pauseCtx->equipTargetItem, gSaveContext.save.info.equips.buttonItems[1],
+ gSaveContext.save.info.equips.buttonItems[2], gSaveContext.save.info.equips.buttonItems[3]);
+ PRINTF(T("C右sl_number=%d (1)=%d (2)=%d (3)=%d\n", "C right sl_number=%d (1)=%d (2)=%d (3)=%d\n"),
+ pauseCtx->equipTargetSlot, gSaveContext.save.info.equips.cButtonSlots[0],
+ gSaveContext.save.info.equips.cButtonSlots[1], gSaveContext.save.info.equips.cButtonSlots[2]);
}
pauseCtx->mainState = PAUSE_MAIN_STATE_IDLE;
diff --git a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.c b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.c
index 70cc9e2d7..a2348910d 100644
--- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.c
+++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.c
@@ -20,6 +20,7 @@
#include "sys_matrix.h"
#include "terminal.h"
#include "title_setup_state.h"
+#include "translation.h"
#include "versions.h"
#include "z64audio.h"
#include "z64ocarina.h"
@@ -39,7 +40,7 @@
#endif
#include "assets/textures/icon_item_gameover_static/icon_item_gameover_static.h"
-#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \
+#pragma increment_block_number "gc-eu:0 gc-eu-mq:0 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \
"ntsc-1.0:0 ntsc-1.1:0 ntsc-1.2:0 pal-1.0:0 pal-1.1:0"
#if N64_BTN_COLORS
@@ -1104,9 +1105,9 @@ void KaleidoScope_SetupPageSwitch(PauseContext* pauseCtx, u8 pt) {
}
void KaleidoScope_HandlePageToggles(PauseContext* pauseCtx, Input* input) {
- if ((pauseCtx->debugState == 0) && CHECK_BTN_ALL(input->press.button, BTN_L)) {
+ if ((pauseCtx->debugState == PAUSE_DEBUG_STATE_CLOSED) && CHECK_BTN_ALL(input->press.button, BTN_L)) {
#if IS_INV_EDITOR_ENABLED
- pauseCtx->debugState = 1;
+ pauseCtx->debugState = PAUSE_DEBUG_STATE_INVENTORY_EDITOR_OPENING;
#endif
return;
}
@@ -1171,9 +1172,9 @@ void KaleidoScope_DrawCursor(PlayState* play, u16 pageIndex) {
gSPVertex(POLY_OPA_DISP++, pauseCtx->cursorVtx, 16, 0);
for (i = j = 0; i < 4; i++, j += 4) {
- gDPLoadTextureBlock_4b(POLY_OPA_DISP++, sCursorTexs[i], G_IM_FMT_IA, 16, 16, 0,
- G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK,
- G_TX_NOLOD, G_TX_NOLOD);
+ gDPLoadTextureBlock_4b(POLY_OPA_DISP++, sCursorTexs[i], G_IM_FMT_IA, PAUSE_MENU_CURSOR_CORNER_TEX_WIDTH,
+ PAUSE_MENU_CURSOR_CORNER_TEX_HEIGHT, 0, G_TX_NOMIRROR | G_TX_WRAP,
+ G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
gSP1Quadrangle(POLY_OPA_DISP++, j, j + 2, j + 3, j + 1, 0);
}
}
@@ -1885,13 +1886,14 @@ void KaleidoScope_DrawInfoPanel(PlayState* play) {
(pauseCtx->nameDisplayTimer < WREG(89)) &&
(((u32)pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) ||
(pauseCtx->mainState == PAUSE_MAIN_STATE_SONG_PLAYBACK) ||
- ((pauseCtx->mainState >= PAUSE_MAIN_STATE_SONG_PROMPT_INIT) && (pauseCtx->mainState <= PAUSE_MAIN_STATE_7)) ||
+ ((pauseCtx->mainState >= PAUSE_MAIN_STATE_SONG_PROMPT_INIT) &&
+ (pauseCtx->mainState <= PAUSE_MAIN_STATE_EQUIP_CHANGED)) ||
(pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG)) &&
(pauseCtx->cursorSpecialPos == 0)) {
if (((u32)pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE) ||
(pauseCtx->mainState == PAUSE_MAIN_STATE_SONG_PLAYBACK) ||
((pauseCtx->mainState >= PAUSE_MAIN_STATE_SONG_PROMPT_INIT) &&
- (pauseCtx->mainState <= PAUSE_MAIN_STATE_7)) ||
+ (pauseCtx->mainState <= PAUSE_MAIN_STATE_EQUIP_CHANGED)) ||
(pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG)) {
pauseCtx->infoPanelVtx[16].v.ob[0] = pauseCtx->infoPanelVtx[18].v.ob[0] = -63;
@@ -1918,8 +1920,9 @@ void KaleidoScope_DrawInfoPanel(PlayState* play) {
if (pauseCtx->pageIndex == PAUSE_MAP) {
if (YREG(7) != 0) {
PRINTF_COLOR_YELLOW();
- PRINTF("キンスタ数(%d) Get_KIN_STA=%x (%x) (%x)\n", YREG(6), GET_GS_FLAGS(YREG(6)),
- gAreaGsFlags[YREG(6)], gSaveContext.save.info.gsFlags[YREG(6) >> 2]);
+ PRINTF(T("キンスタ数(%d) Get_KIN_STA=%x (%x) (%x)\n", "Kinsta Count(%d) Get_KIN_STA=%x (%x) (%x)\n"),
+ YREG(6), GET_GS_FLAGS(YREG(6)), gAreaGsFlags[YREG(6)],
+ gSaveContext.save.info.gsFlags[YREG(6) >> 2]);
PRINTF_RST();
YREG(7) = 0;
@@ -1958,7 +1961,7 @@ void KaleidoScope_DrawInfoPanel(PlayState* play) {
QUEST_ICON_HEIGHT, 0);
}
}
- } else if ((pauseCtx->mainState < PAUSE_MAIN_STATE_3) || (pauseCtx->mainState == PAUSE_MAIN_STATE_7) ||
+ } else if ((pauseCtx->mainState < PAUSE_MAIN_STATE_3) || (pauseCtx->mainState == PAUSE_MAIN_STATE_EQUIP_CHANGED) ||
(pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG)) {
pauseCtx->infoPanelVtx[20].v.ob[1] = pauseCtx->infoPanelVtx[21].v.ob[1] = temp;
@@ -2165,7 +2168,7 @@ void KaleidoScope_UpdateNamePanel(PlayState* play) {
((pauseCtx->cursorSlot[PAUSE_QUEST] >= 6) && (pauseCtx->cursorSlot[PAUSE_QUEST] <= 0x11)) &&
(pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG)) ||
(pauseCtx->pageIndex == PAUSE_ITEM) ||
- ((pauseCtx->pageIndex == PAUSE_EQUIP) && (pauseCtx->cursorX[PAUSE_EQUIP] != 0))) {
+ ((pauseCtx->pageIndex == PAUSE_EQUIP) && (pauseCtx->cursorX[PAUSE_EQUIP] != EQUIP_CURSOR_X_UPG))) {
if (pauseCtx->namedItem != ITEM_SOLD_OUT) {
pauseCtx->nameDisplayTimer++;
if (pauseCtx->nameDisplayTimer > WREG(88)) {
@@ -2700,9 +2703,14 @@ static s16 sItemVtxQuadsWithAmmo[] = {
SLOT_MAGIC_BEAN * 4, // ITEM_QUAD_AMMO_BEAN_
};
-static s16 D_8082B12C[] = { -114, 12, 44, 76 };
+static s16 sEquipColumnsX[] = { -114, 12, 44, 76 };
-static u8 D_8082B134[] = { 1, 5, 9, 13 };
+static u8 sEquipQuadsFirstByEquipType[EQUIP_TYPE_MAX] = {
+ EQUIP_QUAD_SWORD_KOKIRI, // EQUIP_TYPE_SWORD
+ EQUIP_QUAD_SHIELD_DEKU, // EQUIP_TYPE_SHIELD
+ EQUIP_QUAD_TUNIC_KOKIRI, // EQUIP_TYPE_TUNIC
+ EQUIP_QUAD_BOOTS_KOKIRI, // EQUIP_TYPE_BOOTS
+};
static s16 sQuestQuadsX[] = {
74, // QUEST_MEDALLION_FOREST
@@ -2959,10 +2967,10 @@ void KaleidoScope_SetVertices(PlayState* play, GraphicsContext* gfxCtx) {
pauseCtx->cursorVtx[11].v.tc[1]
// PAUSE_CURSOR_QUAD_BR
= pauseCtx->cursorVtx[13].v.tc[0] = pauseCtx->cursorVtx[14].v.tc[1] = pauseCtx->cursorVtx[15].v.tc[0] =
- pauseCtx->cursorVtx[15].v.tc[1] = 16 * (1 << 5);
+ pauseCtx->cursorVtx[15].v.tc[1] = PAUSE_MENU_CURSOR_CORNER_TEX_SIZE * (1 << 5);
// PAUSE_CURSOR_QUAD_4
pauseCtx->cursorVtx[17].v.tc[0] = pauseCtx->cursorVtx[18].v.tc[1] = pauseCtx->cursorVtx[19].v.tc[0] =
- pauseCtx->cursorVtx[19].v.tc[1] = 32 * (1 << 5);
+ pauseCtx->cursorVtx[19].v.tc[1] = gMagicArrowEquipEffectTex_SIZE * (1 << 5);
pauseCtx->itemVtx = GRAPH_ALLOC(gfxCtx, (ITEM_QUAD_MAX * 4) * sizeof(Vtx));
@@ -3118,19 +3126,29 @@ void KaleidoScope_SetVertices(PlayState* play, GraphicsContext* gfxCtx) {
}
}
- pauseCtx->equipVtx = GRAPH_ALLOC(gfxCtx, 112 * sizeof(Vtx));
+ pauseCtx->equipVtx = GRAPH_ALLOC(gfxCtx, (EQUIP_QUAD_MAX * 4) * sizeof(Vtx));
- for (k = 0, i = 0, y = 58; i < 4; i++, y -= 32) {
+ // EQUIP_QUAD_UPG_BULLETBAG_QUIVER, EQUIP_QUAD_SWORD_KOKIRI, EQUIP_QUAD_SWORD_MASTER, EQUIP_QUAD_SWORD_BIGGORON,
+ // EQUIP_QUAD_UPG_BOMB_BAG, EQUIP_QUAD_SHIELD_DEKU, EQUIP_QUAD_SHIELD_HYLIAN, EQUIP_QUAD_SHIELD_MIRROR,
+ // EQUIP_QUAD_UPG_STRENGTH, EQUIP_QUAD_TUNIC_KOKIRI, EQUIP_QUAD_TUNIC_GORON, EQUIP_QUAD_TUNIC_ZORA,
+ // EQUIP_QUAD_UPG_SCALE, EQUIP_QUAD_BOOTS_KOKIRI, EQUIP_QUAD_BOOTS_IRON, EQUIP_QUAD_BOOTS_HOVER
+
+ // for each row
+ for (k = 0, i = 0, y = (EQUIP_TYPE_MAX * EQUIP_GRID_CELL_HEIGHT) / 2 - 6; i < EQUIP_TYPE_MAX;
+ i++, y -= EQUIP_GRID_CELL_HEIGHT) {
+ // for each column
for (j = 0; j < 4; j++, k += 4) {
- pauseCtx->equipVtx[k + 0].v.ob[0] = pauseCtx->equipVtx[k + 2].v.ob[0] = D_8082B12C[j] + 2;
+ pauseCtx->equipVtx[k + 0].v.ob[0] = pauseCtx->equipVtx[k + 2].v.ob[0] =
+ sEquipColumnsX[j] + EQUIP_GRID_QUAD_MARGIN;
pauseCtx->equipVtx[k + 1].v.ob[0] = pauseCtx->equipVtx[k + 3].v.ob[0] =
- pauseCtx->equipVtx[k + 0].v.ob[0] + 28;
+ pauseCtx->equipVtx[k + 0].v.ob[0] + EQUIP_GRID_QUAD_WIDTH;
- pauseCtx->equipVtx[k + 0].v.ob[1] = pauseCtx->equipVtx[k + 1].v.ob[1] = y + pauseCtx->pagesYOrigin1 - 2;
+ pauseCtx->equipVtx[k + 0].v.ob[1] = pauseCtx->equipVtx[k + 1].v.ob[1] =
+ y + pauseCtx->pagesYOrigin1 - EQUIP_GRID_QUAD_MARGIN;
pauseCtx->equipVtx[k + 2].v.ob[1] = pauseCtx->equipVtx[k + 3].v.ob[1] =
- pauseCtx->equipVtx[k + 0].v.ob[1] - 28;
+ pauseCtx->equipVtx[k + 0].v.ob[1] - EQUIP_GRID_QUAD_HEIGHT;
pauseCtx->equipVtx[k + 0].v.ob[2] = pauseCtx->equipVtx[k + 1].v.ob[2] = pauseCtx->equipVtx[k + 2].v.ob[2] =
pauseCtx->equipVtx[k + 3].v.ob[2] = 0;
@@ -3142,7 +3160,7 @@ void KaleidoScope_SetVertices(PlayState* play, GraphicsContext* gfxCtx) {
pauseCtx->equipVtx[k + 2].v.tc[0] = 0;
pauseCtx->equipVtx[k + 1].v.tc[0] = pauseCtx->equipVtx[k + 2].v.tc[1] = pauseCtx->equipVtx[k + 3].v.tc[0] =
- pauseCtx->equipVtx[k + 3].v.tc[1] = 0x400;
+ pauseCtx->equipVtx[k + 3].v.tc[1] = EQUIP_GRID_QUAD_TEX_SIZE * (1 << 5);
pauseCtx->equipVtx[k + 0].v.cn[0] = pauseCtx->equipVtx[k + 1].v.cn[0] = pauseCtx->equipVtx[k + 2].v.cn[0] =
pauseCtx->equipVtx[k + 3].v.cn[0] = pauseCtx->equipVtx[k + 0].v.cn[1] =
@@ -3156,19 +3174,23 @@ void KaleidoScope_SetVertices(PlayState* play, GraphicsContext* gfxCtx) {
}
}
- for (j = 0; j < 4; k += 4, j++) {
+ // EQUIP_QUAD_SELECTED_SWORD, EQUIP_QUAD_SELECTED_SHIELD, EQUIP_QUAD_SELECTED_TUNIC, EQUIP_QUAD_SELECTED_BOOTS
+
+ for (j = 0; j < EQUIP_TYPE_MAX; k += 4, j++) {
if (CUR_EQUIP_VALUE(j) != 0) {
- i = (CUR_EQUIP_VALUE(j) + D_8082B134[j] - 1) * 4;
+ i = (CUR_EQUIP_VALUE(j) + sEquipQuadsFirstByEquipType[j] - 1) * 4;
- pauseCtx->equipVtx[k + 0].v.ob[0] = pauseCtx->equipVtx[k + 2].v.ob[0] = pauseCtx->equipVtx[i].v.ob[0] - 2;
+ pauseCtx->equipVtx[k + 0].v.ob[0] = pauseCtx->equipVtx[k + 2].v.ob[0] =
+ pauseCtx->equipVtx[i].v.ob[0] + EQUIP_GRID_SELECTED_QUAD_MARGIN;
pauseCtx->equipVtx[k + 1].v.ob[0] = pauseCtx->equipVtx[k + 3].v.ob[0] =
- pauseCtx->equipVtx[k + 0].v.ob[0] + 32;
+ pauseCtx->equipVtx[k + 0].v.ob[0] + EQUIP_GRID_SELECTED_QUAD_WIDTH;
- pauseCtx->equipVtx[k + 0].v.ob[1] = pauseCtx->equipVtx[k + 1].v.ob[1] = pauseCtx->equipVtx[i].v.ob[1] + 2;
+ pauseCtx->equipVtx[k + 0].v.ob[1] = pauseCtx->equipVtx[k + 1].v.ob[1] =
+ pauseCtx->equipVtx[i].v.ob[1] - EQUIP_GRID_SELECTED_QUAD_MARGIN;
pauseCtx->equipVtx[k + 2].v.ob[1] = pauseCtx->equipVtx[k + 3].v.ob[1] =
- pauseCtx->equipVtx[k + 0].v.ob[1] - 32;
+ pauseCtx->equipVtx[k + 0].v.ob[1] - EQUIP_GRID_SELECTED_QUAD_HEIGHT;
pauseCtx->equipVtx[k + 0].v.ob[2] = pauseCtx->equipVtx[k + 1].v.ob[2] = pauseCtx->equipVtx[k + 2].v.ob[2] =
pauseCtx->equipVtx[k + 3].v.ob[2] = 0;
@@ -3180,7 +3202,7 @@ void KaleidoScope_SetVertices(PlayState* play, GraphicsContext* gfxCtx) {
pauseCtx->equipVtx[k + 2].v.tc[0] = 0;
pauseCtx->equipVtx[k + 1].v.tc[0] = pauseCtx->equipVtx[k + 2].v.tc[1] = pauseCtx->equipVtx[k + 3].v.tc[0] =
- pauseCtx->equipVtx[k + 3].v.tc[1] = 0x400;
+ pauseCtx->equipVtx[k + 3].v.tc[1] = EQUIP_GRID_SELECTED_QUAD_TEX_SIZE * (1 << 5);
pauseCtx->equipVtx[k + 0].v.cn[0] = pauseCtx->equipVtx[k + 1].v.cn[0] = pauseCtx->equipVtx[k + 2].v.cn[0] =
pauseCtx->equipVtx[k + 3].v.cn[0] = pauseCtx->equipVtx[k + 0].v.cn[1] =
@@ -3194,16 +3216,20 @@ void KaleidoScope_SetVertices(PlayState* play, GraphicsContext* gfxCtx) {
}
}
- x = 112;
+ // EQUIP_QUAD_PLAYER_FIRST..EQUIP_QUAD_PLAYER_LAST
+
+ x = PAUSE_EQUIP_PLAYER_HEIGHT;
y = 50;
for (;;) {
pauseCtx->equipVtx[k + 0].v.ob[0] = pauseCtx->equipVtx[k + 2].v.ob[0] = -64;
- pauseCtx->equipVtx[k + 1].v.ob[0] = pauseCtx->equipVtx[k + 3].v.ob[0] = pauseCtx->equipVtx[k + 0].v.ob[0] + 64;
+ pauseCtx->equipVtx[k + 1].v.ob[0] = pauseCtx->equipVtx[k + 3].v.ob[0] =
+ pauseCtx->equipVtx[k + 0].v.ob[0] + PAUSE_EQUIP_PLAYER_WIDTH;
pauseCtx->equipVtx[k + 0].v.ob[1] = pauseCtx->equipVtx[k + 1].v.ob[1] = y + pauseCtx->pagesYOrigin1;
- pauseCtx->equipVtx[k + 2].v.ob[1] = pauseCtx->equipVtx[k + 3].v.ob[1] = pauseCtx->equipVtx[k + 0].v.ob[1] - 32;
+ pauseCtx->equipVtx[k + 2].v.ob[1] = pauseCtx->equipVtx[k + 3].v.ob[1] =
+ pauseCtx->equipVtx[k + 0].v.ob[1] - PAUSE_EQUIP_PLAYER_FRAG_HEIGHT;
pauseCtx->equipVtx[k + 0].v.ob[2] = pauseCtx->equipVtx[k + 1].v.ob[2] = pauseCtx->equipVtx[k + 2].v.ob[2] =
pauseCtx->equipVtx[k + 3].v.ob[2] = 0;
@@ -3214,9 +3240,10 @@ void KaleidoScope_SetVertices(PlayState* play, GraphicsContext* gfxCtx) {
pauseCtx->equipVtx[k + 0].v.tc[0] = pauseCtx->equipVtx[k + 0].v.tc[1] = pauseCtx->equipVtx[k + 1].v.tc[1] =
pauseCtx->equipVtx[k + 2].v.tc[0] = 0;
- pauseCtx->equipVtx[k + 1].v.tc[0] = pauseCtx->equipVtx[k + 3].v.tc[0] = 0x800;
+ pauseCtx->equipVtx[k + 1].v.tc[0] = pauseCtx->equipVtx[k + 3].v.tc[0] = PAUSE_EQUIP_PLAYER_WIDTH * (1 << 5);
- pauseCtx->equipVtx[k + 2].v.tc[1] = pauseCtx->equipVtx[k + 3].v.tc[1] = 0x400;
+ pauseCtx->equipVtx[k + 2].v.tc[1] = pauseCtx->equipVtx[k + 3].v.tc[1] =
+ PAUSE_EQUIP_PLAYER_FRAG_HEIGHT * (1 << 5);
pauseCtx->equipVtx[k + 0].v.cn[0] = pauseCtx->equipVtx[k + 1].v.cn[0] = pauseCtx->equipVtx[k + 2].v.cn[0] =
pauseCtx->equipVtx[k + 3].v.cn[0] = pauseCtx->equipVtx[k + 0].v.cn[1] = pauseCtx->equipVtx[k + 1].v.cn[1] =
@@ -3227,16 +3254,18 @@ void KaleidoScope_SetVertices(PlayState* play, GraphicsContext* gfxCtx) {
pauseCtx->equipVtx[k + 0].v.cn[3] = pauseCtx->equipVtx[k + 1].v.cn[3] = pauseCtx->equipVtx[k + 2].v.cn[3] =
pauseCtx->equipVtx[k + 3].v.cn[3] = pauseCtx->alpha;
- x -= 32;
+ x -= PAUSE_EQUIP_PLAYER_FRAG_HEIGHT;
if (x < 0) {
pauseCtx->equipVtx[k + 2].v.ob[1] = pauseCtx->equipVtx[k + 3].v.ob[1] =
- pauseCtx->equipVtx[k + 0].v.ob[1] - 0x10;
+ pauseCtx->equipVtx[k + 0].v.ob[1] - (PAUSE_EQUIP_PLAYER_HEIGHT % PAUSE_EQUIP_PLAYER_FRAG_HEIGHT);
+
+ pauseCtx->equipVtx[k + 2].v.tc[1] = pauseCtx->equipVtx[k + 3].v.tc[1] =
+ (PAUSE_EQUIP_PLAYER_HEIGHT % PAUSE_EQUIP_PLAYER_FRAG_HEIGHT) * (1 << 5);
- pauseCtx->equipVtx[k + 2].v.tc[1] = pauseCtx->equipVtx[k + 3].v.tc[1] = 0x200;
break;
}
- y -= 32;
+ y -= PAUSE_EQUIP_PLAYER_FRAG_HEIGHT;
k += 4;
}
@@ -3360,7 +3389,7 @@ void KaleidoScope_DrawGameOver(PlayState* play) {
}
#if DEBUG_FEATURES && (ENABLE_INV_EDITOR || ENABLE_EVENT_EDITOR)
-#define CAN_DRAW_PAUSE_MENU (pauseCtx->debugState == 0)
+#define CAN_DRAW_PAUSE_MENU (pauseCtx->debugState == PAUSE_DEBUG_STATE_CLOSED)
#else
#define CAN_DRAW_PAUSE_MENU true
#endif
@@ -3405,9 +3434,9 @@ void KaleidoScope_Draw(PlayState* play) {
KaleidoScope_DrawGameOver(play);
}
- if (DEBUG_FEATURES &&
- ((ENABLE_INV_EDITOR && (pauseCtx->debugState == 1)) || (ENABLE_EVENT_EDITOR && (pauseCtx->debugState == 2)))) {
- KaleidoScope_DrawDebugEditor(play);
+ if ((IS_INV_EDITOR_ENABLED && pauseCtx->debugState == PAUSE_DEBUG_STATE_INVENTORY_EDITOR_OPENING) ||
+ (IS_EVENT_EDITOR_ENABLED && pauseCtx->debugState == PAUSE_DEBUG_STATE_INVENTORY_EDITOR_OPEN)) {
+ KaleidoScope_DrawInventoryEditor(play);
}
CLOSE_DISPS(play->state.gfxCtx, "../z_kaleido_scope_PAL.c", 3254);
@@ -3670,7 +3699,7 @@ void KaleidoScope_Update(PlayState* play) {
pauseCtx->playerSegment = (void*)(((uintptr_t)play->objectCtx.spaceStart + 0x30) & ~0x3F);
size1 = Player_InitPauseDrawData(play, pauseCtx->playerSegment, &pauseCtx->playerSkelAnime);
- PRINTF("プレイヤー size1=%x\n", size1);
+ PRINTF(T("プレイヤー size1=%x\n", "Player size1=%x\n"), size1);
size0 = (uintptr_t)_icon_item_staticSegmentRomEnd - (uintptr_t)_icon_item_staticSegmentRomStart;
pauseCtx->iconItemSegment = (void*)ALIGN16((uintptr_t)pauseCtx->playerSegment + size1);
@@ -3773,10 +3802,10 @@ void KaleidoScope_Update(PlayState* play) {
pauseCtx->nameSegment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItemLangSegment + size);
- PRINTF("サイズ=%x\n", size2 + size1 + size0 + size);
+ PRINTF(T("サイズ=%x\n", "size=%x\n"), size2 + size1 + size0 + size);
PRINTF("item_name I_N_PT=%x\n", 0x800);
Interface_SetDoAction(play, DO_ACTION_DECIDE);
- PRINTF("サイズ=%x\n", size2 + size1 + size0 + size + 0x800);
+ PRINTF(T("サイズ=%x\n", "size=%x\n"), size2 + size1 + size0 + size + 0x800);
if (((void)0, gSaveContext.worldMapArea) < WORLD_MAP_AREA_MAX) {
#if OOT_NTSC
@@ -4160,7 +4189,7 @@ void KaleidoScope_Update(PlayState* play) {
}
break;
- case PAUSE_MAIN_STATE_7:
+ case PAUSE_MAIN_STATE_EQUIP_CHANGED:
break;
case PAUSE_MAIN_STATE_IDLE_CURSOR_ON_SONG:
@@ -4299,9 +4328,9 @@ void KaleidoScope_Update(PlayState* play) {
pauseCtx->alpha = 0;
}
} else {
- if (DEBUG_FEATURES && (ENABLE_INV_EDITOR || ENABLE_EVENT_EDITOR)) {
- pauseCtx->debugState = 0;
- }
+#if IS_INV_EDITOR_ENABLED || IS_EVENT_EDITOR_ENABLED
+ pauseCtx->debugState = PAUSE_DEBUG_STATE_CLOSED;
+#endif
pauseCtx->state = PAUSE_STATE_RESUME_GAMEPLAY;
pauseCtx->itemPagePitch = pauseCtx->equipPagePitch = pauseCtx->mapPagePitch =
pauseCtx->questPagePitch = 160.0f;
@@ -4644,9 +4673,9 @@ void KaleidoScope_Update(PlayState* play) {
pauseCtx->alpha = 0;
}
} else {
- if (IS_INV_EDITOR_ENABLED) {
- pauseCtx->debugState = 0;
- }
+#if IS_INV_EDITOR_ENABLED
+ pauseCtx->debugState = PAUSE_DEBUG_STATE_CLOSED;
+#endif
pauseCtx->state = PAUSE_STATE_RESUME_GAMEPLAY;
pauseCtx->questPagePitch = 160.0f;
pauseCtx->mapPagePitch = 160.0f;
diff --git a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.h b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.h
index 5a9923443..8c5d58388 100644
--- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.h
+++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.h
@@ -69,6 +69,55 @@ typedef enum QuestQuad {
/* 47 */ QUEST_QUAD_MAX
} QuestQuad;
+#define EQUIP_CURSOR_X_UPG 0
+#define EQUIP_CURSOR_Y_BULLETBAG_QUIVER 0
+
+#define EQUIP_GRID_CELL_WIDTH 32
+#define EQUIP_GRID_CELL_HEIGHT 32
+#define EQUIP_GRID_QUAD_MARGIN 2
+#define EQUIP_GRID_QUAD_WIDTH (EQUIP_GRID_CELL_WIDTH - (2 * EQUIP_GRID_QUAD_MARGIN))
+#define EQUIP_GRID_QUAD_HEIGHT (EQUIP_GRID_CELL_HEIGHT - (2 * EQUIP_GRID_QUAD_MARGIN))
+#define EQUIP_GRID_QUAD_TEX_SIZE 32 // both width and height
+
+#define EQUIP_GRID_SELECTED_QUAD_MARGIN (-2)
+#define EQUIP_GRID_SELECTED_QUAD_WIDTH (EQUIP_GRID_QUAD_WIDTH - (2 * EQUIP_GRID_SELECTED_QUAD_MARGIN))
+#define EQUIP_GRID_SELECTED_QUAD_HEIGHT (EQUIP_GRID_QUAD_HEIGHT - (2 * EQUIP_GRID_SELECTED_QUAD_MARGIN))
+#define EQUIP_GRID_SELECTED_QUAD_TEX_SIZE 32 // both width and height
+
+typedef enum EquipQuad {
+ // Grid of upgrades and equips, left column is upgrades, others are equips, with one row per equip type
+ // Row 0
+ /* 0 */ EQUIP_QUAD_UPG_BULLETBAG_QUIVER,
+ /* 1 */ EQUIP_QUAD_SWORD_KOKIRI,
+ /* 2 */ EQUIP_QUAD_SWORD_MASTER,
+ /* 3 */ EQUIP_QUAD_SWORD_BIGGORON,
+ // Row 1
+ /* 4 */ EQUIP_QUAD_UPG_BOMB_BAG,
+ /* 5 */ EQUIP_QUAD_SHIELD_DEKU,
+ /* 6 */ EQUIP_QUAD_SHIELD_HYLIAN,
+ /* 7 */ EQUIP_QUAD_SHIELD_MIRROR,
+ // Row 2
+ /* 8 */ EQUIP_QUAD_UPG_STRENGTH,
+ /* 9 */ EQUIP_QUAD_TUNIC_KOKIRI,
+ /* 10 */ EQUIP_QUAD_TUNIC_GORON,
+ /* 11 */ EQUIP_QUAD_TUNIC_ZORA,
+ // Row 3
+ /* 12 */ EQUIP_QUAD_UPG_SCALE,
+ /* 13 */ EQUIP_QUAD_BOOTS_KOKIRI,
+ /* 14 */ EQUIP_QUAD_BOOTS_IRON,
+ /* 15 */ EQUIP_QUAD_BOOTS_HOVER,
+ // Markers indicating the currently selected equip
+ /* 16 */ EQUIP_QUAD_SELECTED_SWORD,
+ /* 17 */ EQUIP_QUAD_SELECTED_SHIELD,
+ /* 18 */ EQUIP_QUAD_SELECTED_TUNIC,
+ /* 19 */ EQUIP_QUAD_SELECTED_BOOTS,
+ // Player prerender
+ /* 20 */ EQUIP_QUAD_PLAYER_FIRST,
+ /* 23 */ EQUIP_QUAD_PLAYER_LAST = EQUIP_QUAD_PLAYER_FIRST + PAUSE_EQUIP_PLAYER_FRAG_NUM - 1,
+ // 24..27 are unused, probably meant for player prerender
+ /* 28 */ EQUIP_QUAD_MAX = EQUIP_QUAD_PLAYER_LAST + 4 + 1
+} EquipQuad;
+
// The world map image is split into a number of quad fragments for drawing
#define WORLD_MAP_IMAGE_WIDTH 216
#define WORLD_MAP_IMAGE_HEIGHT 128
@@ -171,7 +220,7 @@ typedef enum ItemQuad {
void KaleidoScope_DrawQuestStatus(struct PlayState* play, GraphicsContext* gfxCtx);
s32 KaleidoScope_UpdateQuestStatusPoint(PauseContext* pauseCtx, s32 point);
-void KaleidoScope_DrawDebugEditor(struct PlayState* play);
+void KaleidoScope_DrawInventoryEditor(struct PlayState* play);
void KaleidoScope_DrawPlayerWork(struct PlayState* play);
void KaleidoScope_DrawEquipment(struct PlayState* play);
void KaleidoScope_SetCursorPos(PauseContext* pauseCtx, u16 index, Vtx* vtx);
@@ -184,7 +233,9 @@ Gfx* KaleidoScope_QuadTextureIA4(Gfx* gfx, void* texture, s16 width, s16 height,
Gfx* KaleidoScope_QuadTextureIA8(Gfx* gfx, void* texture, s16 width, s16 height, u16 point);
void KaleidoScope_MoveCursorToSpecialPos(struct PlayState* play, u16 specialPos);
void KaleidoScope_DrawQuadTextureRGBA32(GraphicsContext* gfxCtx, void* texture, u16 width, u16 height, u16 point);
-void KaleidoScope_ProcessPlayerPreRender();
+#ifdef AVOID_UB
+void KaleidoScope_ProcessPlayerPreRender(void);
+#endif
void KaleidoScope_SetupPlayerPreRender(struct PlayState* play);
void KaleidoScope_DrawCursor(struct PlayState* play, u16 pageIndex);
void KaleidoScope_UpdateDungeonMap(struct PlayState* play);
diff --git a/sym_info.py b/sym_info.py
index 9887ae2d9..789e6fe6f 100755
--- a/sym_info.py
+++ b/sym_info.py
@@ -233,9 +233,9 @@ def find_symbols_by_name(
def print_map_file(map_file: mapfile_parser.mapfile.MapFile, *, colors: bool):
for segment in map_file:
print(
- f"{colorama.Fore.GREEN if colors else ""}"
+ f"{colorama.Fore.GREEN if colors else ''}"
f"{segment.name}"
- f"{colorama.Fore.RESET if colors else ""}"
+ f"{colorama.Fore.RESET if colors else ''}"
)
for file in segment:
# Ignore debug sections
@@ -246,9 +246,9 @@ def print_map_file(map_file: mapfile_parser.mapfile.MapFile, *, colors: bool):
):
continue
print(
- f"{colorama.Fore.CYAN if colors else ""}"
+ f"{colorama.Fore.CYAN if colors else ''}"
f" {file.asStr()}"
- f"{colorama.Fore.RESET if colors else ""}"
+ f"{colorama.Fore.RESET if colors else ''}"
)
for sym in file:
vram_str = f"{sym.vram:08X}"
@@ -288,6 +288,13 @@ def sym_info_main():
help="which version should be processed (default: hackeroot-mq)",
default="hackeroot-mq",
)
+ parser.add_argument(
+ "--build-dir",
+ dest="build_dir",
+ help="the build folder in which to read the map and elf (default: `build/VERSION/`)",
+ type=Path,
+ default=None,
+ )
args = parser.parse_args()
filename = f"oot-{args.oot_version}" if args.oot_version != "hackeroot-mq" else "hackeroot-mq"
@@ -303,14 +310,44 @@ def sym_info_main():
else:
colors = sys.stdout.isatty()
- BUILTMAP = Path("build") / args.oot_version / f"{filename}.map"
- BUILTELF = Path("build") / args.oot_version / f"{filename}.elf"
+ build_dir: Path = args.build_dir
+ if build_dir is None:
+ build_dir = Path("build") / args.oot_version
+ map_path = build_dir / f"{filename}.map"
+ elf_path = build_dir / f"{filename}.elf"
+ else:
+ map_paths = list(build_dir.glob("*.map"))
+ elf_paths = list(build_dir.glob("*.elf"))
+
+ if len(map_paths) > 1:
+ print(f"Found several .map files instead of just one:")
+ print("\n".join(map(str, map_paths)))
+ sys.exit(1)
+ if not map_paths:
+ print("Could not find map file")
+ sys.exit(1)
+
+ if len(elf_paths) > 1:
+ print(f"Found several .elf files instead of just one:")
+ print("\n".join(map(str, elf_paths)))
+ sys.exit(1)
+
+ map_path = map_paths[0]
+ elf_path = elf_paths[0] if elf_paths else None
- map_path = BUILTMAP
- elf_path = BUILTELF
if args.use_expected:
- map_path = "expected" / BUILTMAP
- elf_path = "expected" / BUILTELF
+ map_path = (
+ Path("expected")
+ / "build"
+ / args.oot_version
+ / f"oot-{args.oot_version}.map"
+ )
+ elf_path = (
+ Path("expected")
+ / "build"
+ / args.oot_version
+ / f"oot-{args.oot_version}.elf"
+ )
if not map_path.exists():
print(f"Could not find map_file at '{map_path}'")
@@ -319,12 +356,14 @@ def sym_info_main():
map_file = mapfile_parser.mapfile.MapFile()
map_file.readMapFile(map_path)
- if elf_path.exists():
+ if elf_path and elf_path.exists():
local_symbols = read_local_symbols_from_mdebug(elf_path)
merge_local_symbols(map_file, local_symbols)
else:
print(
- f"Could not find ELF file at '{elf_path}', local symbols will not be available"
+ "Could not find ELF file"
+ + (f" at '{elf_path}'" if elf_path else "")
+ + ", local symbols will not be available"
)
sym_name = args.symname
@@ -333,25 +372,28 @@ def sym_info_main():
sys.exit(0)
infos: list[mapfile_parser.mapfile.FoundSymbolInfo] = []
- possible_files: list[mapfile_parser.mapfile.File] = []
+ all_possible_files: list[mapfile_parser.mapfile.File] = []
try:
address = int(sym_name, 0)
- if address >= 0x01000000:
+
+ if address >= 0x0100_0000:
info, possible_files = map_file.findSymbolByVram(address)
if info is not None:
- infos = [info]
- else:
- info, possible_files = map_file.findSymbolByVrom(address)
- if info is not None:
- infos = [info]
+ infos += [info]
+ all_possible_files += possible_files
+
+ info, possible_files = map_file.findSymbolByVrom(address)
+ if info is not None:
+ infos += [info]
+ all_possible_files += possible_files
except ValueError:
infos = find_symbols_by_name(map_file, sym_name)
if not infos:
print(f"'{sym_name}' not found in map file '{map_path}'")
- if len(possible_files) > 0:
+ if all_possible_files:
print("But it may be a local symbol of either of the following files:")
- for f in possible_files:
+ for f in all_possible_files:
print(f" {f.asStr()})")
sys.exit(1)
diff --git a/tools/Makefile b/tools/Makefile
index dc61c6e6b..83388ec27 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -39,10 +39,14 @@ endif
-include print_rules.mk
all: $(PROGRAMS) $(IDO_RECOMP_5_3_DIR) $(IDO_RECOMP_7_1_DIR) $(EGCS_DIR)
- $(call print_no_args,Building ZAPD...)
- $(V)$(MAKE) -C ZAPD
$(call print_no_args,Building fado...)
$(V)$(MAKE) -C fado
+ $(call print_no_args,Building audio tools...)
+ $(V)$(MAKE) -C audio
+ $(call print_no_args,Building com-plugin...)
+ $(V)$(MAKE) -C com-plugin
+ $(call print_no_args,Building assets tools...)
+ $(V)$(MAKE) -C assets
$(call print_no_args,Building gzinject...)
ifeq ($(wildcard ./gzinject/Makefile),)
$(V)cd ./gzinject && ./configure
@@ -52,27 +56,20 @@ endif
$(V)$(MAKE) -C z64compress
$(call print_no_args,Building Flips...)
$(V)$(MAKE) -C Flips TARGET=cli
- $(call print_no_args,Building audio tools...)
- $(V)$(MAKE) -C audio
- $(call print_no_args,Building com-plugin...)
- $(V)$(MAKE) -C com-plugin
- $(call print_no_args,Building assets tools...)
- $(V)$(MAKE) -C assets
clean:
$(V)$(RM) $(PROGRAMS) $(addsuffix .exe,$(PROGRAMS))
$(V)$(RM) -r ido_recomp egcs
- $(V)$(MAKE) -C ZAPD clean
$(V)$(MAKE) -C fado clean
+ $(V)$(MAKE) -C audio clean
+ $(V)$(MAKE) -C com-plugin clean
+ $(V)$(MAKE) -C assets clean
ifneq ($(wildcard ./gzinject/Makefile),)
$(V)$(MAKE) -C gzinject distclean
endif
$(V)$(MAKE) -C z64compress clean
$(V)$(MAKE) -C Flips clean
$(V)rm -f Flips/flips
- $(V)$(MAKE) -C audio clean
- $(V)$(MAKE) -C com-plugin clean
- $(V)$(MAKE) -C assets clean
distclean: clean
$(V)$(MAKE) -C audio distclean
diff --git a/tools/ZAPD/.clang-format b/tools/ZAPD/.clang-format
deleted file mode 100644
index 5ba1c4a95..000000000
--- a/tools/ZAPD/.clang-format
+++ /dev/null
@@ -1,84 +0,0 @@
----
-AccessModifierOffset: -4
-AlignAfterOpenBracket: Align
-AlignConsecutiveAssignments: false
-AlignConsecutiveDeclarations: false
-AlignEscapedNewlinesLeft: false
-AlignOperands: true
-AlignTrailingComments: true
-AllowAllParametersOfDeclarationOnNextLine: true
-AllowShortBlocksOnASingleLine: false
-AllowShortCaseLabelsOnASingleLine: false
-AllowShortFunctionsOnASingleLine: InlineOnly
-AllowShortIfStatementsOnASingleLine: false
-AllowShortLoopsOnASingleLine: false
-AlwaysBreakAfterDefinitionReturnType: None
-AlwaysBreakAfterReturnType: None
-AlwaysBreakBeforeMultilineStrings: false
-AlwaysBreakTemplateDeclarations: true
-BinPackArguments: true
-BinPackParameters: true
-BraceWrapping:
- AfterCaseLabel: true
- AfterClass: true
- AfterControlStatement: true
- AfterEnum: true
- AfterFunction: true
- AfterNamespace: true
- AfterStruct: true
- AfterUnion: true
- BeforeCatch: true
- BeforeElse: true
- IndentBraces: false
-BreakBeforeBinaryOperators: None
-BreakBeforeBraces: Custom
-BreakBeforeTernaryOperators: false
-BreakConstructorInitializersBeforeComma: false
-ColumnLimit: 100
-CommentPragmas: '^ (IWYU pragma:|NOLINT)'
-ConstructorInitializerAllOnOneLineOrOnePerLine: false
-ConstructorInitializerIndentWidth: 4
-ContinuationIndentWidth: 4
-Cpp11BracedListStyle: true
-DerivePointerAlignment: false
-DisableFormat: false
-ForEachMacros: [ ]
-IncludeCategories:
- - Regex: '^<[Ww]indows\.h>$'
- Priority: 1
- - Regex: '^<'
- Priority: 2
- - Regex: '^"'
- Priority: 3
-IndentCaseLabels: false
-IndentWidth: 4
-IndentWrappedFunctionNames: false
-KeepEmptyLinesAtTheStartOfBlocks: false
-MacroBlockBegin: ''
-MacroBlockEnd: ''
-MaxEmptyLinesToKeep: 1
-NamespaceIndentation: None
-PenaltyBreakBeforeFirstCallParameter: 19
-PenaltyBreakComment: 300
-PenaltyBreakFirstLessLess: 120
-PenaltyBreakString: 1000
-PenaltyExcessCharacter: 1000000
-PenaltyReturnTypeOnItsOwnLine: 60
-PointerAlignment: Left
-ReflowComments: true
-SortIncludes: false
-SpaceAfterCStyleCast: false
-SpaceBeforeAssignmentOperators: true
-SpaceBeforeParens: ControlStatements
-SpaceInEmptyParentheses: false
-SpacesBeforeTrailingComments: 2
-SpacesInAngles: false
-SpacesInContainerLiterals: true
-SpacesInCStyleCastParentheses: false
-SpacesInParentheses: false
-SpacesInSquareBrackets: false
-Standard: Latest
-TabWidth: 4
-UseTab: AlignWithSpaces
-...
-
diff --git a/tools/ZAPD/.github/workflows/main.yml b/tools/ZAPD/.github/workflows/main.yml
deleted file mode 100644
index 604c18c96..000000000
--- a/tools/ZAPD/.github/workflows/main.yml
+++ /dev/null
@@ -1,98 +0,0 @@
-name: Build ZAPD
-
-on:
- push:
- pull_request:
- branches:
- - master
-
-jobs:
- build:
- runs-on: self-hosted-runner
-
- steps:
- - name: Checkout repository
- uses: actions/checkout@v2
-
- - name: Build ZAPD
- run: make -j WERROR=1
-
- - name: Checkout Repos
- run: echo "Checkout Repos"
-
- - name: Checkout oot
- run: |
- cd ../
- rm -rf oot/
- git clone https://github.com/zeldaret/oot.git
- cd oot
- echo $(pwd)
- git submodule update --init --recursive
-
- - name: Checkout mm
- run: |
- cd ../
- rm -rf mm/
- git clone https://github.com/zeldaret/mm.git
- cd mm
- echo $(pwd)
-
- - name: Set up repos
- run: echo "Set up repos"
-
- - name: Setup OOT
- run: |
- cd ../
- cd oot
- echo $(pwd)
- mkdir -p baseroms/gc-eu-mq-dbg/segments
- cp ~/baserom_original.z64 ./baseroms/gc-eu-mq-dbg/baserom.z64
- cd tools
- rm -rf ZAPD/
- ln -s ../../ZAPD
- cd ../
- make -j $(nproc) setup
-
- - name: Setup MM
- run: |
- cd ../
- cd mm
- echo $(pwd)
- python3 -m venv .mm-env
- source .mm-env/bin/activate
- python3 -m pip install -r requirements.txt
- cp ~/baserom.mm.us.rev1.z64 ./baserom.mm.us.rev1.z64
- cd tools
- rm -rf ZAPD/
- ln -s ../../ZAPD
- cd ../
- make -C tools -j
- python3 tools/fixbaserom.py
- python3 tools/extract_baserom.py
- python3 tools/decompress_yars.py
- python3 extract_assets.py -j $(nproc)
-
- - name: Build Repos
- run: echo "Build Repos"
-
- - name: Build oot
- run: |
- cd ../
- cd oot
- echo $(pwd)
- make venv
- make -j
-
- - name: Build mm
- run: |
- cd ../
- cd mm
- echo $(pwd)
- python3 -m venv .mm-env
- source .mm-env/bin/activate
- python3 -m pip install -r requirements.txt
- make -j disasm
- make -j
-
- - name: Clean workspace
- run: git clean -fdX
diff --git a/tools/ZAPD/.gitignore b/tools/ZAPD/.gitignore
deleted file mode 100644
index 68c502e36..000000000
--- a/tools/ZAPD/.gitignore
+++ /dev/null
@@ -1,341 +0,0 @@
-## Ignore Visual Studio temporary files, build results, and
-## files generated by popular Visual Studio add-ons.
-##
-## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
-
-# User-specific files
-*.suo
-*.user
-*.userosscache
-*.sln.docstates
-
-# User-specific files (MonoDevelop/Xamarin Studio)
-*.userprefs
-
-# Build results
-[Dd]ebug/
-[Dd]ebugPublic/
-[Rr]elease/
-[Rr]eleases/
-x64/
-x86/
-bld/
-[Bb]in/
-[Oo]bj/
-[Ll]og/
-
-# Visual Studio 2015/2017 cache/options directory
-.vs/
-# Uncomment if you have tasks that create the project's static files in wwwroot
-#wwwroot/
-
-# Visual Studio 2017 auto generated files
-Generated\ Files/
-
-# MSTest test Results
-[Tt]est[Rr]esult*/
-[Bb]uild[Ll]og.*
-
-# NUNIT
-*.VisualState.xml
-TestResult.xml
-
-# Build Results of an ATL Project
-[Dd]ebugPS/
-[Rr]eleasePS/
-dlldata.c
-
-# Benchmark Results
-BenchmarkDotNet.Artifacts/
-
-# .NET Core
-project.lock.json
-project.fragment.lock.json
-artifacts/
-**/Properties/launchSettings.json
-
-# StyleCop
-StyleCopReport.xml
-
-# Files built by Visual Studio
-*_i.c
-*_p.c
-*_i.h
-*.ilk
-*.meta
-*.obj
-*.iobj
-*.pch
-*.pdb
-*.ipdb
-*.pgc
-*.pgd
-*.rsp
-*.sbr
-*.tlb
-*.tli
-*.tlh
-*.tmp
-*.tmp_proj
-*.log
-*.vspscc
-*.vssscc
-.builds
-*.pidb
-*.svclog
-*.scc
-
-# Chutzpah Test files
-_Chutzpah*
-
-# Visual C++ cache files
-ipch/
-*.aps
-*.ncb
-*.opendb
-*.opensdf
-*.sdf
-*.cachefile
-*.VC.db
-*.VC.VC.opendb
-
-# Visual Studio profiler
-*.psess
-*.vsp
-*.vspx
-*.sap
-
-# Visual Studio Trace Files
-*.e2e
-
-# TFS 2012 Local Workspace
-$tf/
-
-# Guidance Automation Toolkit
-*.gpState
-
-# ReSharper is a .NET coding add-in
-_ReSharper*/
-*.[Rr]e[Ss]harper
-*.DotSettings.user
-
-# JustCode is a .NET coding add-in
-.JustCode
-
-# TeamCity is a build add-in
-_TeamCity*
-
-# DotCover is a Code Coverage Tool
-*.dotCover
-
-# AxoCover is a Code Coverage Tool
-.axoCover/*
-!.axoCover/settings.json
-
-# Visual Studio code coverage results
-*.coverage
-*.coveragexml
-
-# NCrunch
-_NCrunch_*
-.*crunch*.local.xml
-nCrunchTemp_*
-
-# MightyMoose
-*.mm.*
-AutoTest.Net/
-
-# Web workbench (sass)
-.sass-cache/
-
-# Installshield output folder
-[Ee]xpress/
-
-# DocProject is a documentation generator add-in
-DocProject/buildhelp/
-DocProject/Help/*.HxT
-DocProject/Help/*.HxC
-DocProject/Help/*.hhc
-DocProject/Help/*.hhk
-DocProject/Help/*.hhp
-DocProject/Help/Html2
-DocProject/Help/html
-
-# Click-Once directory
-publish/
-
-# Publish Web Output
-*.[Pp]ublish.xml
-*.azurePubxml
-# Note: Comment the next line if you want to checkin your web deploy settings,
-# but database connection strings (with potential passwords) will be unencrypted
-*.pubxml
-*.publishproj
-
-# Microsoft Azure Web App publish settings. Comment the next line if you want to
-# checkin your Azure Web App publish settings, but sensitive information contained
-# in these scripts will be unencrypted
-PublishScripts/
-
-# NuGet Packages
-*.nupkg
-# The packages folder can be ignored because of Package Restore
-**/[Pp]ackages/*
-# except build/, which is used as an MSBuild target.
-!**/[Pp]ackages/build/
-# Uncomment if necessary however generally it will be regenerated when needed
-#!**/[Pp]ackages/repositories.config
-# NuGet v3's project.json files produces more ignorable files
-*.nuget.props
-*.nuget.targets
-
-# Microsoft Azure Build Output
-csx/
-*.build.csdef
-
-# Microsoft Azure Emulator
-ecf/
-rcf/
-
-# Windows Store app package directories and files
-AppPackages/
-BundleArtifacts/
-Package.StoreAssociation.xml
-_pkginfo.txt
-*.appx
-
-# Visual Studio cache files
-# files ending in .cache can be ignored
-*.[Cc]ache
-# but keep track of directories ending in .cache
-!*.[Cc]ache/
-
-# Others
-ClientBin/
-~$*
-*~
-*.dbmdl
-*.dbproj.schemaview
-*.jfm
-*.pfx
-*.publishsettings
-orleans.codegen.cs
-
-# Including strong name files can present a security risk
-# (https://github.com/github/gitignore/pull/2483#issue-259490424)
-#*.snk
-
-# Since there are multiple workflows, uncomment next line to ignore bower_components
-# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
-#bower_components/
-
-# RIA/Silverlight projects
-Generated_Code/
-
-# Backup & report files from converting an old project file
-# to a newer Visual Studio version. Backup files are not needed,
-# because we have git ;-)
-_UpgradeReport_Files/
-Backup*/
-UpgradeLog*.XML
-UpgradeLog*.htm
-ServiceFabricBackup/
-*.rptproj.bak
-
-# SQL Server files
-*.mdf
-*.ldf
-*.ndf
-
-# Business Intelligence projects
-*.rdl.data
-*.bim.layout
-*.bim_*.settings
-*.rptproj.rsuser
-
-# Microsoft Fakes
-FakesAssemblies/
-
-# GhostDoc plugin setting file
-*.GhostDoc.xml
-
-# Node.js Tools for Visual Studio
-.ntvs_analysis.dat
-node_modules/
-
-# Visual Studio 6 build log
-*.plg
-
-# Visual Studio 6 workspace options file
-*.opt
-
-# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
-*.vbw
-
-# Visual Studio LightSwitch build output
-**/*.HTMLClient/GeneratedArtifacts
-**/*.DesktopClient/GeneratedArtifacts
-**/*.DesktopClient/ModelManifest.xml
-**/*.Server/GeneratedArtifacts
-**/*.Server/ModelManifest.xml
-_Pvt_Extensions
-
-# Paket dependency manager
-.paket/paket.exe
-paket-files/
-
-# FAKE - F# Make
-.fake/
-
-# JetBrains Rider
-.idea/
-*.sln.iml
-
-# CodeRush
-.cr/
-
-# Python Tools for Visual Studio (PTVS)
-__pycache__/
-*.pyc
-
-# Cake - Uncomment if you are using it
-# tools/**
-# !tools/packages.config
-
-# Tabs Studio
-*.tss
-
-# Telerik's JustMock configuration file
-*.jmconfig
-
-# BizTalk build output
-*.btp.cs
-*.btm.cs
-*.odx.cs
-*.xsd.cs
-
-# OpenCover UI analysis results
-OpenCover/
-
-# Azure Stream Analytics local run output
-ASALocalRun/
-
-# MSBuild Binary and Structured Log
-*.binlog
-
-# NVidia Nsight GPU debugger configuration file
-*.nvuser
-
-# MFractors (Xamarin productivity tool) working folder
-.mfractor/
-
-*.out
-*.o
-*.d
-lib/libgfxd/libgfxd.a
-ExporterTest/ExporterTest.a
-ZAPDUtils/ZAPDUtils.a
-.vscode/
-build/
-ZAPDUtils/build/
-ZAPD/BuildInfo.h
diff --git a/tools/ZAPD/.gitrepo b/tools/ZAPD/.gitrepo
deleted file mode 100644
index 801b2b638..000000000
--- a/tools/ZAPD/.gitrepo
+++ /dev/null
@@ -1,12 +0,0 @@
-; DO NOT EDIT (unless you know what you are doing)
-;
-; This subdirectory is a git "subrepo", and this file is maintained by the
-; git-subrepo command. See https://github.com/git-commands/git-subrepo#readme
-;
-[subrepo]
- remote = https://github.com/zeldaret/ZAPD.git
- branch = master
- commit = 35ea376daf003fdd3297a2e7355ad82e70ec1e8c
- parent = b97a21c2532622a83e9153996e303c3edc2727a8
- method = merge
- cmdver = 0.4.6
diff --git a/tools/ZAPD/ExporterTest/CollisionExporter.cpp b/tools/ZAPD/ExporterTest/CollisionExporter.cpp
deleted file mode 100644
index 6431a4593..000000000
--- a/tools/ZAPD/ExporterTest/CollisionExporter.cpp
+++ /dev/null
@@ -1,76 +0,0 @@
-#include "CollisionExporter.h"
-
-void ExporterExample_Collision::Save(ZResource* res, [[maybe_unused]] fs::path outPath,
- BinaryWriter* writer)
-{
- ZCollisionHeader* col = (ZCollisionHeader*)res;
-
- writer->Write(col->absMinX);
- writer->Write(col->absMinY);
- writer->Write(col->absMinZ);
-
- writer->Write(col->absMaxX);
- writer->Write(col->absMaxY);
- writer->Write(col->absMaxZ);
-
- writer->Write(col->numVerts);
- writer->Write(col->vtxAddress);
-
- writer->Write(col->numPolygons);
- writer->Write(col->polyAddress);
- writer->Write(col->polyTypeDefAddress);
- writer->Write(col->camDataAddress);
-
- writer->Write(col->numWaterBoxes);
- writer->Write(col->waterBoxAddress);
-
- writer->Write(col->vtxSegmentOffset);
- writer->Write(col->polySegmentOffset);
- writer->Write(col->polyTypeDefSegmentOffset);
- writer->Write(col->camDataSegmentOffset);
- writer->Write(col->waterBoxSegmentOffset);
-
- uint32_t oldOffset = writer->GetBaseAddress();
-
- writer->Seek(col->vtxSegmentOffset, SeekOffsetType::Start);
-
- for (uint16_t i = 0; i < col->vertices.size(); i++)
- {
- for (uint32_t j = 0; j < col->vertices[i].dimensions; j++)
- {
- writer->Write(col->vertices[i].scalars[j].scalarData.s16);
- }
- }
-
- writer->Seek(col->polySegmentOffset, SeekOffsetType::Start);
-
- for (uint16_t i = 0; i < col->polygons.size(); i++)
- {
- writer->Write(col->polygons[i].type);
- writer->Write(col->polygons[i].vtxA);
- writer->Write(col->polygons[i].vtxB);
- writer->Write(col->polygons[i].vtxC);
- writer->Write(col->polygons[i].normX);
- writer->Write(col->polygons[i].normY);
- writer->Write(col->polygons[i].normZ);
- writer->Write(col->polygons[i].dist);
- }
-
- writer->Seek(col->polyTypeDefSegmentOffset, SeekOffsetType::Start);
-
- for (const auto& poly : col->polygonTypes)
- {
- writer->Write(poly.data[0]);
- writer->Write(poly.data[1]);
- }
- writer->Seek(col->camDataSegmentOffset, SeekOffsetType::Start);
-
- for (auto entry : col->camData->entries)
- {
- writer->Write(entry.cameraSType);
- writer->Write(entry.numData);
- writer->Write(entry.cameraPosDataSeg);
- }
-
- writer->Seek(oldOffset, SeekOffsetType::Start);
-}
diff --git a/tools/ZAPD/ExporterTest/CollisionExporter.h b/tools/ZAPD/ExporterTest/CollisionExporter.h
deleted file mode 100644
index 5f48e6557..000000000
--- a/tools/ZAPD/ExporterTest/CollisionExporter.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#pragma once
-
-#include "ZCollision.h"
-#include "ZResource.h"
-
-class ExporterExample_Collision : public ZResourceExporter
-{
-public:
- void Save(ZResource* res, fs::path outPath, BinaryWriter* writer) override;
-};
\ No newline at end of file
diff --git a/tools/ZAPD/ExporterTest/ExporterTest.vcxproj b/tools/ZAPD/ExporterTest/ExporterTest.vcxproj
deleted file mode 100644
index 341f72ceb..000000000
--- a/tools/ZAPD/ExporterTest/ExporterTest.vcxproj
+++ /dev/null
@@ -1,160 +0,0 @@
-
-
-
-
- Debug
- Win32
-
-
- Release
- Win32
-
-
- Debug
- x64
-
-
- Release
- x64
-
-
-
- 16.0
- Win32Proj
- {65608eb0-1a47-45ad-ab66-192fb64c762c}
- ExporterTest
- 10.0
- ExporterExample
-
-
-
- Application
- true
- v142
- Unicode
-
-
- Application
- false
- v143
- true
- Unicode
-
-
- StaticLibrary
- true
- v142
- Unicode
-
-
- Application
- false
- v143
- true
- Unicode
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
-
-
- false
-
-
- true
- $(ProjectDir)..\ZAPD\;$(ProjectDir)..\ZAPDUtils;$(ProjectDir)..\lib\tinyxml2;$(ProjectDir)..\lib\libgfxd;$(ProjectDir)..\lib\elfio;$(ProjectDir)..\lib\stb;$(ProjectDir);$(IncludePath)
-
-
- false
-
-
-
- Level3
- true
- WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
- true
-
-
- Console
- true
-
-
-
-
- Level3
- true
- true
- true
- WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- true
-
-
- Console
- true
- true
- true
-
-
-
-
- Level3
- true
- _DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
- true
- stdcpp17
- stdc11
- MultiThreadedDebug
-
-
- Console
- true
-
-
-
-
- Level3
- true
- true
- true
- NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
- true
-
-
- Console
- true
- true
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/tools/ZAPD/ExporterTest/ExporterTest.vcxproj.filters b/tools/ZAPD/ExporterTest/ExporterTest.vcxproj.filters
deleted file mode 100644
index 166f563a1..000000000
--- a/tools/ZAPD/ExporterTest/ExporterTest.vcxproj.filters
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
- {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
- cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx
-
-
- {93995380-89BD-4b04-88EB-625FBE52EBFB}
- h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd
-
-
- {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
- rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
-
-
-
-
- Header Files
-
-
- Header Files
-
-
- Header Files
-
-
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
- Source Files
-
-
-
\ No newline at end of file
diff --git a/tools/ZAPD/ExporterTest/Main.cpp b/tools/ZAPD/ExporterTest/Main.cpp
deleted file mode 100644
index 07fdbeece..000000000
--- a/tools/ZAPD/ExporterTest/Main.cpp
+++ /dev/null
@@ -1,79 +0,0 @@
-#include "CollisionExporter.h"
-#include "Globals.h"
-#include "RoomExporter.h"
-#include "TextureExporter.h"
-
-enum class ExporterFileMode
-{
- ModeExample1 = (int)ZFileMode::Custom + 1,
- ModeExample2 = (int)ZFileMode::Custom + 2,
- ModeExample3 = (int)ZFileMode::Custom + 3,
-};
-
-static void ExporterParseFileMode(const std::string& buildMode, ZFileMode& fileMode)
-{
- if (buildMode == "me1")
- fileMode = (ZFileMode)ExporterFileMode::ModeExample1;
- else if (buildMode == "me2")
- fileMode = (ZFileMode)ExporterFileMode::ModeExample2;
- else if (buildMode == "me3")
- fileMode = (ZFileMode)ExporterFileMode::ModeExample3;
-}
-
-static void ExporterParseArgs([[maybe_unused]] int argc, char* argv[], int& i)
-{
- std::string arg = argv[i];
-
- if (arg == "--do-x")
- {
- }
- else if (arg == "--do-y")
- {
- }
-}
-
-static bool ExporterProcessFileMode(ZFileMode fileMode)
-{
- // Do whatever work is associated with these custom file modes...
- // Return true to indicate one of our own file modes is being processed
- if (fileMode == (ZFileMode)ExporterFileMode::ModeExample1)
- return true;
- else if (fileMode == (ZFileMode)ExporterFileMode::ModeExample2)
- return true;
- else if (fileMode == (ZFileMode)ExporterFileMode::ModeExample3)
- return true;
-
- return false;
-}
-
-static void ExporterFileBegin(ZFile* file)
-{
- printf("ExporterFileBegin() called on ZFile %s.\n", file->GetName().c_str());
-}
-
-static void ExporterFileEnd(ZFile* file)
-{
- printf("ExporterFileEnd() called on ZFile %s.\n", file->GetName().c_str());
-}
-
-static void ImportExporters()
-{
- // In this example we set up a new exporter called "EXAMPLE".
- // By running ZAPD with the argument -se EXAMPLE, we tell it that we want to use this exporter
- // for our resources.
- ExporterSet* exporterSet = new ExporterSet();
- exporterSet->processFileModeFunc = ExporterProcessFileMode;
- exporterSet->parseFileModeFunc = ExporterParseFileMode;
- exporterSet->parseArgsFunc = ExporterParseArgs;
- exporterSet->beginFileFunc = ExporterFileBegin;
- exporterSet->endFileFunc = ExporterFileEnd;
- exporterSet->exporters[ZResourceType::Texture] = new ExporterExample_Texture();
- exporterSet->exporters[ZResourceType::Room] = new ExporterExample_Room();
- exporterSet->exporters[ZResourceType::CollisionHeader] = new ExporterExample_Collision();
-
- Globals::AddExporter("EXAMPLE", exporterSet);
-}
-
-// When ZAPD starts up, it will automatically call the below function, which in turn sets up our
-// exporters.
-REGISTER_EXPORTER(ImportExporters);
diff --git a/tools/ZAPD/ExporterTest/Makefile b/tools/ZAPD/ExporterTest/Makefile
deleted file mode 100644
index 3bfe8550a..000000000
--- a/tools/ZAPD/ExporterTest/Makefile
+++ /dev/null
@@ -1,32 +0,0 @@
-MAKEFLAGS += --no-builtin-rules --no-print-directory
-
-# Only used for standalone compilation, usually inherits these from the main makefile
-CXXFLAGS ?= -Wall -Wextra -O2 -g -std=c++17
-
-SRC_DIRS := $(shell find . -type d -not -path "*build*")
-CPP_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.cpp))
-H_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.h))
-
-O_FILES := $(foreach f,$(CPP_FILES:.cpp=.o),build/$f)
-LIB := ExporterTest.a
-
-# create build directories
-$(shell mkdir -p $(foreach dir,$(SRC_DIRS),build/$(dir)))
-
--include ../../print_rules.mk
-
-all: $(LIB)
-
-clean:
- $(V)rm -rf build $(LIB)
-
-format:
- $(V)clang-format-14 -i $(CPP_FILES) $(H_FILES)
-
-.PHONY: all clean format
-
-build/%.o: %.cpp
- $(V)$(CXX) $(CXXFLAGS) $(OPTFLAGS) -I ./ -I ../ZAPD -I ../ZAPDUtils -I ../lib/tinyxml2 -c $(OUTPUT_OPTION) $<
-
-$(LIB): $(O_FILES)
- $(V)$(AR) rcs $@ $^
diff --git a/tools/ZAPD/ExporterTest/RoomExporter.cpp b/tools/ZAPD/ExporterTest/RoomExporter.cpp
deleted file mode 100644
index 4cc06b76f..000000000
--- a/tools/ZAPD/ExporterTest/RoomExporter.cpp
+++ /dev/null
@@ -1,372 +0,0 @@
-#include "RoomExporter.h"
-#include "CollisionExporter.h"
-#include "Utils/BinaryWriter.h"
-#include "Utils/File.h"
-#include "Utils/MemoryStream.h"
-#include "ZRoom/Commands/SetCameraSettings.h"
-#include "ZRoom/Commands/SetCollisionHeader.h"
-#include "ZRoom/Commands/SetCsCamera.h"
-#include "ZRoom/Commands/SetEchoSettings.h"
-#include "ZRoom/Commands/SetEntranceList.h"
-#include "ZRoom/Commands/SetLightingSettings.h"
-#include "ZRoom/Commands/SetMesh.h"
-#include "ZRoom/Commands/SetRoomBehavior.h"
-#include "ZRoom/Commands/SetRoomList.h"
-#include "ZRoom/Commands/SetSkyboxModifier.h"
-#include "ZRoom/Commands/SetSkyboxSettings.h"
-#include "ZRoom/Commands/SetSoundSettings.h"
-#include "ZRoom/Commands/SetSpecialObjects.h"
-#include "ZRoom/Commands/SetStartPositionList.h"
-#include "ZRoom/Commands/SetTimeSettings.h"
-#include "ZRoom/Commands/SetWind.h"
-
-void ExporterExample_Room::Save(ZResource* res, fs::path outPath, BinaryWriter* writer)
-{
- ZRoom* room = dynamic_cast(res);
-
- // MemoryStream* memStream = new MemoryStream();
- // BinaryWriter* writer = new BinaryWriter(memStream);
-
- for (size_t i = 0; i < room->commands.size() * 8; i++)
- writer->Write((uint8_t)0);
-
- for (size_t i = 0; i < room->commands.size(); i++)
- {
- ZRoomCommand* cmd = room->commands[i];
-
- writer->Seek(i * 8, SeekOffsetType::Start);
-
- writer->Write((uint8_t)cmd->cmdID);
-
- switch (cmd->cmdID)
- {
- case RoomCommand::SetWind:
- {
- SetWind* cmdSetWind = (SetWind*)cmd;
-
- writer->Write((uint8_t)0); // 0x01
- writer->Write((uint8_t)0); // 0x02
- writer->Write((uint8_t)0); // 0x03
-
- writer->Write(cmdSetWind->windWest); // 0x04
- writer->Write(cmdSetWind->windVertical); // 0x05
- writer->Write(cmdSetWind->windSouth); // 0x06
- writer->Write(cmdSetWind->clothFlappingStrength); // 0x07
- }
- break;
- case RoomCommand::SetTimeSettings:
- {
- SetTimeSettings* cmdTime = (SetTimeSettings*)cmd;
-
- writer->Write((uint8_t)0); // 0x01
- writer->Write((uint8_t)0); // 0x02
- writer->Write((uint8_t)0); // 0x03
-
- writer->Write(cmdTime->hour); // 0x04
- writer->Write(cmdTime->min); // 0x05
- writer->Write(cmdTime->unk); // 0x06
- writer->Write((uint8_t)0); // 0x07
- }
- break;
- case RoomCommand::SetSkyboxModifier:
- {
- SetSkyboxModifier* cmdSkybox = (SetSkyboxModifier*)cmd;
-
- writer->Write((uint8_t)0); // 0x01
- writer->Write((uint8_t)0); // 0x02
- writer->Write((uint8_t)0); // 0x03
-
- writer->Write(cmdSkybox->disableSky); // 0x04
- writer->Write(cmdSkybox->disableSunMoon); // 0x05
- writer->Write((uint8_t)0); // 0x06
- writer->Write((uint8_t)0); // 0x07
- }
- break;
- case RoomCommand::SetEchoSettings:
- {
- SetEchoSettings* cmdEcho = (SetEchoSettings*)cmd;
-
- writer->Write((uint8_t)0); // 0x01
- writer->Write((uint8_t)0); // 0x02
- writer->Write((uint8_t)0); // 0x03
- writer->Write((uint8_t)0); // 0x04
- writer->Write((uint8_t)0); // 0x05
- writer->Write((uint8_t)0); // 0x06
- writer->Write((uint8_t)cmdEcho->echo); // 0x07
- }
- break;
- case RoomCommand::SetSoundSettings:
- {
- SetSoundSettings* cmdSound = (SetSoundSettings*)cmd;
-
- writer->Write((uint8_t)cmdSound->reverb); // 0x01
- writer->Write((uint8_t)0); // 0x02
- writer->Write((uint8_t)0); // 0x03
- writer->Write((uint8_t)0); // 0x04
- writer->Write((uint8_t)0); // 0x05
-
- writer->Write(cmdSound->nightTimeSFX); // 0x06
- writer->Write(cmdSound->musicSequence); // 0x07
- }
- break;
- case RoomCommand::SetSkyboxSettings:
- {
- SetSkyboxSettings* cmdSkybox = (SetSkyboxSettings*)cmd;
-
- writer->Write((uint8_t)cmdSkybox->unk1); // 0x01
- writer->Write((uint8_t)0); // 0x02
- writer->Write((uint8_t)0); // 0x03
- writer->Write((uint8_t)cmdSkybox->skyboxNumber); // 0x04
- writer->Write((uint8_t)cmdSkybox->cloudsType); // 0x05
- writer->Write((uint8_t)cmdSkybox->isIndoors); // 0x06
- }
- break;
- case RoomCommand::SetRoomBehavior:
- {
- SetRoomBehavior* cmdRoom = (SetRoomBehavior*)cmd;
-
- writer->Write((uint8_t)cmdRoom->gameplayFlags); // 0x01
- writer->Write((uint8_t)0); // 0x02
- writer->Write((uint8_t)0); // 0x03
- writer->Write(cmdRoom->gameplayFlags2); // 0x04
- }
- break;
- case RoomCommand::SetCsCamera:
- {
- SetCsCamera* cmdCsCam = (SetCsCamera*)cmd;
-
- writer->Write((uint8_t)cmdCsCam->cameras.size()); // 0x01
- writer->Write((uint8_t)0); // 0x02
- writer->Write((uint8_t)0); // 0x03
-
- writer->Write(cmdCsCam->segmentOffset); // 0x04
- }
- break;
- case RoomCommand::SetMesh:
- {
- SetMesh* cmdMesh = (SetMesh*)cmd;
-
- int baseStreamEnd = writer->GetStream().get()->GetLength();
-
- writer->Write((uint8_t)cmdMesh->data); // 0x01
- writer->Write((uint8_t)0); // 0x02
- writer->Write((uint8_t)0); // 0x03
-
- writer->Write(baseStreamEnd); // 0x04
-
- uint32_t oldOffset = writer->GetBaseAddress();
- writer->Seek(baseStreamEnd, SeekOffsetType::Start);
-
- // TODO: NOT DONE
-
- writer->Write(cmdMesh->meshHeaderType);
-
- if (cmdMesh->meshHeaderType == 0)
- {
- // writer->Write(cmdMesh->)
- }
- else if (cmdMesh->meshHeaderType == 1)
- {
- }
- else if (cmdMesh->meshHeaderType == 2)
- {
- }
-
- writer->Seek(oldOffset, SeekOffsetType::Start);
- }
- break;
- case RoomCommand::SetCameraSettings:
- {
- SetCameraSettings* cmdCam = (SetCameraSettings*)cmd;
-
- writer->Write((uint8_t)cmdCam->cameraMovement); // 0x01
- writer->Write((uint8_t)0); // 0x02
- writer->Write((uint8_t)0); // 0x03
- writer->Write(cmdCam->mapHighlight); // 0x04
- }
- break;
- case RoomCommand::SetLightingSettings:
- {
- SetLightingSettings* cmdLight = (SetLightingSettings*)cmd;
-
- writer->Write((uint8_t)cmdLight->settings.size()); // 0x01
- writer->Write((uint8_t)0); // 0x02
- writer->Write((uint8_t)0); // 0x03
- writer->Write(cmdLight->segmentOffset); // 0x04
-
- uint32_t oldOffset = writer->GetBaseAddress();
- writer->Seek(cmdLight->segmentOffset, SeekOffsetType::Start);
-
- for (LightingSettings setting : cmdLight->settings)
- {
- writer->Write(setting.ambientClrR);
- writer->Write(setting.ambientClrG);
- writer->Write(setting.ambientClrB);
-
- writer->Write(setting.diffuseClrA_R);
- writer->Write(setting.diffuseClrA_G);
- writer->Write(setting.diffuseClrA_B);
-
- writer->Write(setting.diffuseDirA_X);
- writer->Write(setting.diffuseDirA_Y);
- writer->Write(setting.diffuseDirA_Z);
-
- writer->Write(setting.diffuseClrB_R);
- writer->Write(setting.diffuseClrB_G);
- writer->Write(setting.diffuseClrB_B);
-
- writer->Write(setting.diffuseDirB_X);
- writer->Write(setting.diffuseDirB_Y);
- writer->Write(setting.diffuseDirB_Z);
-
- writer->Write(setting.fogClrR);
- writer->Write(setting.fogClrG);
- writer->Write(setting.fogClrB);
-
- writer->Write(setting.unk);
- writer->Write(setting.drawDistance);
- }
-
- writer->Seek(oldOffset, SeekOffsetType::Start);
- }
- break;
- case RoomCommand::SetRoomList:
- {
- SetRoomList* cmdRoom = (SetRoomList*)cmd;
-
- writer->Write((uint8_t)cmdRoom->romfile->rooms.size()); // 0x01
- writer->Write((uint8_t)0); // 0x02
- writer->Write((uint8_t)0); // 0x03
-
- auto baseStreamEnd = writer->GetLength();
- writer->Write(baseStreamEnd); // 0x04
-
- uint32_t oldOffset = writer->GetBaseAddress();
- writer->Seek(baseStreamEnd, SeekOffsetType::Start);
-
- for (const auto& entry : cmdRoom->romfile->rooms)
- {
- writer->Write(entry.virtualAddressStart);
- writer->Write(entry.virtualAddressEnd);
- }
-
- writer->Seek(oldOffset, SeekOffsetType::Start);
- }
- break;
- case RoomCommand::SetCollisionHeader:
- {
- SetCollisionHeader* cmdCollHeader = (SetCollisionHeader*)cmd;
-
- int streamEnd = writer->GetStream().get()->GetLength();
-
- writer->Write((uint8_t)0); // 0x01
- writer->Write((uint8_t)0); // 0x02
- writer->Write((uint8_t)0); // 0x03
- writer->Write(streamEnd); // 0x04
-
- // TODO: NOT DONE
-
- uint32_t oldOffset = writer->GetBaseAddress();
- writer->Seek(streamEnd, SeekOffsetType::Start);
-
- ExporterExample_Collision colExp = ExporterExample_Collision();
-
- colExp.Save(cmdCollHeader->collisionHeader, outPath, writer);
-
- writer->Seek(oldOffset, SeekOffsetType::Start);
- }
- break;
- case RoomCommand::SetEntranceList:
- {
- SetEntranceList* cmdEntrance = (SetEntranceList*)cmd;
-
- uint32_t baseStreamEnd = writer->GetStream().get()->GetLength();
-
- writer->Write((uint8_t)0); // 0x01
- writer->Write((uint8_t)0); // 0x02
- writer->Write((uint8_t)0); // 0x03
- writer->Write(baseStreamEnd); // 0x04
-
- uint32_t oldOffset = writer->GetBaseAddress();
- writer->Seek(baseStreamEnd, SeekOffsetType::Start);
-
- for (Spawn entry : cmdEntrance->entrances)
- {
- writer->Write((uint8_t)entry.startPositionIndex);
- writer->Write((uint8_t)entry.roomToLoad);
- }
-
- writer->Seek(oldOffset, SeekOffsetType::Start);
- }
- break;
- case RoomCommand::SetSpecialObjects:
- {
- SetSpecialObjects* cmdSpecObj = (SetSpecialObjects*)cmd;
-
- writer->Write((uint8_t)cmdSpecObj->elfMessage); // 0x01
- writer->Write((uint8_t)0); // 0x02
- writer->Write((uint8_t)0); // 0x03
- writer->Write((uint8_t)0); // 0x04
- writer->Write((uint8_t)0); // 0x05
- writer->Write((uint16_t)cmdSpecObj->globalObject); // 0x06
- }
- break;
- case RoomCommand::SetStartPositionList:
- {
- SetStartPositionList* cmdStartPos = (SetStartPositionList*)cmd;
-
- uint32_t baseStreamEnd = writer->GetStream().get()->GetLength();
-
- writer->Write((uint8_t)cmdStartPos->actors.size()); // 0x01
- writer->Write((uint8_t)0); // 0x02
- writer->Write((uint8_t)0); // 0x03
- writer->Write(baseStreamEnd); // 0x04
-
- uint32_t oldOffset = writer->GetBaseAddress();
- writer->Seek(baseStreamEnd, SeekOffsetType::Start);
-
- for (ActorSpawnEntry entry : cmdStartPos->actors)
- {
- writer->Write(entry.actorNum);
- writer->Write(entry.posX);
- writer->Write(entry.posY);
- writer->Write(entry.posZ);
- writer->Write(entry.rotX);
- writer->Write(entry.rotY);
- writer->Write(entry.rotZ);
- writer->Write(entry.params);
- }
-
- writer->Seek(oldOffset, SeekOffsetType::Start);
- }
- break;
- case RoomCommand::EndMarker:
- {
- writer->Write((uint8_t)0); // 0x01
- writer->Write((uint8_t)0); // 0x02
- writer->Write((uint8_t)0); // 0x03
- writer->Write((uint8_t)0); // 0x04
- writer->Write((uint8_t)0); // 0x05
- writer->Write((uint8_t)0); // 0x06
- writer->Write((uint8_t)0); // 0x07
- }
- break;
- default:
- printf("UNIMPLEMENTED COMMAND: %i\n", (int)cmd->cmdID);
-
- writer->Write((uint8_t)0); // 0x01
- writer->Write((uint8_t)0); // 0x02
- writer->Write((uint8_t)0); // 0x03
- writer->Write((uint8_t)0); // 0x04
- writer->Write((uint8_t)0); // 0x05
- writer->Write((uint8_t)0); // 0x06
- writer->Write((uint8_t)0); // 0x07
-
- break;
- }
- }
-
- // writer->Close();
- // File::WriteAllBytes(StringHelper::Sprintf("%s", res->GetName().c_str()),
- // memStream->ToVector());
-}
diff --git a/tools/ZAPD/ExporterTest/RoomExporter.h b/tools/ZAPD/ExporterTest/RoomExporter.h
deleted file mode 100644
index ee531dc87..000000000
--- a/tools/ZAPD/ExporterTest/RoomExporter.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#pragma once
-
-#include "ZResource.h"
-#include "ZRoom/ZRoom.h"
-
-class ExporterExample_Room : public ZResourceExporter
-{
-public:
- void Save(ZResource* res, fs::path outPath, BinaryWriter* writer) override;
-};
\ No newline at end of file
diff --git a/tools/ZAPD/ExporterTest/TextureExporter.cpp b/tools/ZAPD/ExporterTest/TextureExporter.cpp
deleted file mode 100644
index 6488bed3a..000000000
--- a/tools/ZAPD/ExporterTest/TextureExporter.cpp
+++ /dev/null
@@ -1,14 +0,0 @@
-#include "TextureExporter.h"
-#include "../ZAPD/ZFile.h"
-
-void ExporterExample_Texture::Save(ZResource* res, [[maybe_unused]] fs::path outPath,
- BinaryWriter* writer)
-{
- ZTexture* tex = (ZTexture*)res;
-
- auto data = tex->parent->GetRawData();
-
- for (offset_t i = tex->GetRawDataIndex(); i < tex->GetRawDataIndex() + tex->GetRawDataSize();
- i++)
- writer->Write(data[i]);
-}
diff --git a/tools/ZAPD/ExporterTest/TextureExporter.h b/tools/ZAPD/ExporterTest/TextureExporter.h
deleted file mode 100644
index 41c4e79be..000000000
--- a/tools/ZAPD/ExporterTest/TextureExporter.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#pragma once
-
-#include "Utils/BinaryWriter.h"
-#include "ZResource.h"
-#include "ZTexture.h"
-
-class ExporterExample_Texture : public ZResourceExporter
-{
-public:
- void Save(ZResource* res, fs::path outPath, BinaryWriter* writer) override;
-};
\ No newline at end of file
diff --git a/tools/ZAPD/Jenkinsfile b/tools/ZAPD/Jenkinsfile
deleted file mode 100644
index 48535a51c..000000000
--- a/tools/ZAPD/Jenkinsfile
+++ /dev/null
@@ -1,106 +0,0 @@
-pipeline {
- agent {
- label 'ZAPD'
- }
-
- stages {
- // Non-parallel ZAPD stage
- stage('Build ZAPD') {
- steps {
- sh 'make -j WERROR=1'
- }
- }
-
- // CHECKOUT THE REPOS
- stage('Checkout Repos') {
- parallel {
- stage('Checkout oot') {
- steps {
- dir('oot') {
- git url: 'https://github.com/zeldaret/oot.git'
- }
- }
- }
-
- stage('Checkout mm') {
- steps{
- dir('mm') {
- git url: 'https://github.com/zeldaret/mm.git'
- }
- }
- }
- }
- }
-
- // SETUP THE REPOS
- stage('Set up repos') {
- parallel {
- stage('Setup OOT') {
- steps {
- dir('oot') {
- sh 'cp /usr/local/etc/roms/baserom_oot.z64 baserom_original.z64'
-
- // Identical to `make setup` except for copying our newer ZAPD.out into oot
- sh 'git submodule update --init --recursive'
- sh 'make -C tools'
- sh 'cp ../ZAPD.out tools/ZAPD/'
- sh 'python3 fixbaserom.py'
- sh 'python3 extract_baserom.py'
- sh 'python3 extract_assets.py'
- }
- }
- }
-
- stage('Setup MM') {
- steps {
- dir('mm') {
- sh 'cp /usr/local/etc/roms/mm.us.rev1.z64 baserom.mm.us.rev1.z64'
-
- // Identical to `make setup` except for copying our newer ZAPD.out into mm
- sh 'make -C tools'
- sh 'cp ../ZAPD.out tools/ZAPD/'
- sh 'python3 tools/fixbaserom.py'
- sh 'python3 tools/extract_baserom.py'
- sh 'python3 extract_assets.py -j $(nproc)'
- }
- }
- }
- }
- }
-
- // INSTALL PYTHON DEPENDENCIES, currently MM only
- stage('Install Python dependencies') {
- steps {
- dir('mm') {
- sh 'python3 -m pip install -r requirements.txt'
- }
- }
- }
-
- // BUILD THE REPOS
- stage('Build repos') {
- parallel {
- stage('Build oot') {
- steps {
- dir('oot') {
- sh 'make -j'
- }
- }
- }
- stage('Build mm') {
- steps {
- dir('mm') {
- sh 'make -j disasm'
- sh 'make -j'
- }
- }
- }
- }
- }
- }
- post {
- always {
- cleanWs()
- }
- }
-}
diff --git a/tools/ZAPD/LICENSE b/tools/ZAPD/LICENSE
deleted file mode 100644
index 90b734bde..000000000
--- a/tools/ZAPD/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2020 Zelda Reverse Engineering Team
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/tools/ZAPD/Makefile b/tools/ZAPD/Makefile
deleted file mode 100644
index 3f2e4706c..000000000
--- a/tools/ZAPD/Makefile
+++ /dev/null
@@ -1,155 +0,0 @@
-MAKEFLAGS += --no-builtin-rules --no-print-directory
-
-# use variables in submakes
-export
-OPTIMIZATION_ON ?= 1
-ASAN ?= 0
-DEPRECATION_ON ?= 1
-DEBUG ?= 0
-COPYCHECK_ARGS ?=
-LLD ?= 0
-WERROR ?= 0
-
-# On MacOS 10.14, use boost::filesystem, because
-# the system doesn't supply std::filesystem.
-ifneq ($(OS),Windows_NT)
- ifeq ($(shell uname -s),Darwin)
- MACOS_VERSION := $(shell sw_vers -productVersion | cut -d . -f 1,2)
- ifeq ($(MACOS_VERSION),10.14)
- USE_BOOST_FS ?= 1
- endif
- endif
-endif
-USE_BOOST_FS ?= 0
-
-# Use clang++ if available, else use g++
-ifeq ($(shell command -v clang++ >/dev/null 2>&1; echo $$?),0)
- CXX := clang++
-else
- CXX := g++
-endif
-
-INC := -I ZAPD -I lib/libgfxd -I lib/tinyxml2 -I ZAPDUtils
-CXXFLAGS := -fpic -std=c++17 -Wall -Wextra -fno-omit-frame-pointer
-OPTFLAGS :=
-
-ifneq ($(DEBUG),0)
- OPTIMIZATION_ON = 0
- CXXFLAGS += -g3 -DDEVELOPMENT -D_DEBUG
- COPYCHECK_ARGS += --devel
- DEPRECATION_ON = 0
-endif
-
-ifneq ($(WERROR),0)
- CXXFLAGS += -Werror
-endif
-
-ifeq ($(OPTIMIZATION_ON),0)
- OPTFLAGS := -O0
-else
- OPTFLAGS := -O2
-endif
-
-ifneq ($(ASAN),0)
- CXXFLAGS += -fsanitize=address -fsanitize=pointer-compare -fsanitize=pointer-subtract -fsanitize=undefined
-endif
-ifneq ($(DEPRECATION_ON),0)
- CXXFLAGS += -DDEPRECATION_ON
-endif
-# CXXFLAGS += -DTEXTURE_DEBUG
-
-LDFLAGS := -lm -ldl -lpng
-
-ifneq ($(USE_BOOST_FS),0)
- CXXFLAGS += -DUSE_BOOST_FS
- LDFLAGS += -lboost_filesystem
-endif
-
-# Use LLD if available. Set LLD=0 to not use it
-ifeq ($(shell command -v ld.lld >/dev/null 2>&1; echo $$?),0)
- LLD := 1
-endif
-
-ifneq ($(LLD),0)
- LDFLAGS += -fuse-ld=lld
-endif
-
-UNAME := $(shell uname)
-UNAMEM := $(shell uname -m)
-ifneq ($(UNAME), Darwin)
- LDFLAGS += -Wl,-export-dynamic -lstdc++fs
- EXPORTERS := -Wl,--whole-archive ExporterTest/ExporterTest.a -Wl,--no-whole-archive
-else
- EXPORTERS := -Wl,-force_load ExporterTest/ExporterTest.a
- ifeq ($(UNAMEM),arm64)
- ifeq ($(shell brew list libpng > /dev/null 2>&1; echo $$?),0)
- LDFLAGS += -L $(shell brew --prefix)/lib
- INC += -I $(shell brew --prefix)/include
- else
- $(error Please install libpng via Homebrew)
- endif
- endif
-endif
-
-
-ZAPD_SRC_DIRS := $(shell find ZAPD -type d)
-SRC_DIRS = $(ZAPD_SRC_DIRS) lib/tinyxml2
-
-ZAPD_CPP_FILES := $(foreach dir,$(ZAPD_SRC_DIRS),$(wildcard $(dir)/*.cpp))
-ZAPD_H_FILES := $(foreach dir,$(ZAPD_SRC_DIRS),$(wildcard $(dir)/*.h))
-
-CPP_FILES += $(ZAPD_CPP_FILES) lib/tinyxml2/tinyxml2.cpp
-O_FILES := $(foreach f,$(CPP_FILES:.cpp=.o),build/$f)
-O_FILES += build/ZAPD/BuildInfo.o
-
-# create build directories
-$(shell mkdir -p $(foreach dir,$(SRC_DIRS),build/$(dir)))
-
--include ../print_rules.mk
-
-# Main targets
-all: ZAPD.out copycheck
-
-build/ZAPD/BuildInfo.o:
- $(V)python3 ZAPD/genbuildinfo.py $(COPYCHECK_ARGS)
- $(V)$(CXX) $(CXXFLAGS) $(OPTFLAGS) $(INC) -c $(OUTPUT_OPTION) build/ZAPD/BuildInfo.cpp
-
-copycheck: ZAPD.out
- $(V)python3 copycheck.py
-
-clean:
- $(V)rm -rf build ZAPD.out
- $(V)$(MAKE) -C lib/libgfxd clean
- $(V)$(MAKE) -C ZAPDUtils clean
- $(V)$(MAKE) -C ExporterTest clean
-
-rebuild: clean all
-
-format:
- $(V)clang-format-14 -i $(ZAPD_CPP_FILES) $(ZAPD_H_FILES)
- $(V)$(MAKE) -C ZAPDUtils format
- $(V)$(MAKE) -C ExporterTest format
-
-.PHONY: all build/ZAPD/BuildInfo.o copycheck clean rebuild format
-
-build/%.o: %.cpp
- $(call print_two_args,Compiling:,$<,$@)
- $(V)$(CXX) $(CXXFLAGS) $(OPTFLAGS) $(INC) -c $(OUTPUT_OPTION) $<
-
-
-# Submakes
-lib/libgfxd/libgfxd.a:
- $(V)$(MAKE) -C lib/libgfxd
-
-.PHONY: ExporterTest
-ExporterTest:
- $(V)$(MAKE) -C ExporterTest
-
-.PHONY: ZAPDUtils
-ZAPDUtils:
- $(V)$(MAKE) -C ZAPDUtils
-
-
-# Linking
-ZAPD.out: $(O_FILES) lib/libgfxd/libgfxd.a ExporterTest ZAPDUtils
- $(V)$(CXX) $(CXXFLAGS) $(O_FILES) lib/libgfxd/libgfxd.a ZAPDUtils/ZAPDUtils.a $(EXPORTERS) $(LDFLAGS) $(OUTPUT_OPTION)
diff --git a/tools/ZAPD/README.md b/tools/ZAPD/README.md
deleted file mode 100644
index 5006f8d4b..000000000
--- a/tools/ZAPD/README.md
+++ /dev/null
@@ -1,174 +0,0 @@
-# ZAPD: Zelda Asset Processor for Decomp
-
-## Compiling
-
-### Dependencies
-
-ZAPD needs a compiler with C++17 support.
-
-ZAPD has the following library dependencies:
-
-- `libpng`
-
-In a Debian/Ubuntu based environment, those could be installed with the following command:
-
-```bash
-sudo apt install libpng-dev
-```
-
-On a Mac, you will need to install libpng with Homebrew or MacPorts; we currently only support Homebrew. You can run
-
-```bash
-brew install libpng
-```
-
-to install it via Homebrew.
-
-### Building
-
-#### Linux / *nix
-
-ZAPD uses the classic `Makefile` approach. To build just run `make` (or even better `make -j` for faster compilations).
-
-You can configure a bit your ZAPD build with the following options:
-
-- `OPTIMIZATION_ON`: If set to `0` optimizations will be disabled (compile with `-O0`). Any other value compiles with `-O2`. Defaults to `1`.
-- `ASAN`: If it is set to a non-zero then ZAPD will be compiled with Address Sanitizer enabled (`-fsanitize=address`). Defaults to `0`.
-- `DEPRECATION_ON`: If it is set to a zero then deprecation warnings will be disabled. Defaults to `1`.
-- `DEBUG`: If non-zero, ZAPD will be compiled in _development mode_. This implies the following:
- - Debugging symbols enabled (`-g3`). They are disabled by default.
- - `OPTIMIZATION_ON=0`: Disables optimizations (`-O0`).
- - `DEPRECATION_ON=0`: Disables deprecation warnings.
-- `LLD=1`: builds with the LLVM linker `ld.lld` instead of the system default.
-
-As an example, if you want to build ZAPD with optimizations disabled and use the address sanitizer, you could use the following command:
-
-```bash
-make -j OPTIMIZATION_ON=0 ASAN=1
-```
-
-#### Windows
-
-This repository contains `vcxproj` files for compiling under Visual Studio environments. See `ZAPD/ZAPD.vcxproj`.
-
-## Invoking ZAPD
-
-ZAPD needs a _File parsing mode_ to be passed as first parameter. The options are:
-
-- `e`: "Extraction" mode.
- - In this mode, ZAPD expects a XML file as input, a folder as ouput and a path to the baserom files.
- - ZAPD will read the XML and use it as a guide to extract the contents of the specified asset file from the baserom folder.
- - For more info of the format of those XMLs, see the [ZAPD extraction XML reference](docs/zapd_extraction_xml_reference.md).
-- `bsf`: "Build source file" mode.
- - This is an experimental mode.
- - It was going to be used to let you have XMLs that aren't just for extraction. Might get used, might not. Still need to experiment on that.
-- `btex`: "Build texture" mode.
- - In this mode, ZAPD expects a PNG file as input, a filename as ouput and a texture type parameter (`-tt`).
- - ZAPD will try to convert the given PNG into the contents of a `uint64_t` C array.
-- `bren`: "Build (render) background" mode.
- - In this mode, ZAPD expects a JPG file as input and a filename as ouput.
- - ZAPD will try to convert the given JPG into the contents of a `uint64_t` C array.
-- `blb`: "Build blob" mode.
- - In this mode, ZAPD expects a BIN file as input and a filename as ouput.
- - ZAPD will try to convert the given BIN into the contents of a `uint8_t` C array.
-
-ZAPD also accepts the following list of extra parameters:
-
-- `-i PATH` / `--inputpath PATH`: Set input path.
-- `-o PATH` / `--outputpath PATH`: Set output path.
-- `-b PATH` / `--baserompath`: Set baserom path.
- - Can be used only in `e` or `bsf` modes.
-- `-osf PATH`: Set source output path. This is the path where the `.c` and `.h` files will be extracted to. If omitted, it will use the value passed to `--outputpath` parameter.
-- `-gsf MODE`: Generate source file during extraction. If `MODE` is `1`, C source files will be generated.
- - Can be used only in `e` mode.
-- `-crc` / `--output-crc`: Outputs a CRC file for each extracted texture.
- - Can be used only in `e` or `bsf` modes.
-- `-ulzdl MODE`: Use "Legacy ZDisplayList" instead of `libgfxd`. Set `MODE` to `1` to enable it.
- - Can be used only in `e` or `bsf` modes.
-- `-profile MODE`: Enable profiling. Set `MODE` to `1` to enable it.
-- `-uer MODE`: Split resources into their individual components (enabled by default). Set `MODE` to non-`1` to disable it.
-- `-tt TYPE`: Set texture type.
- - Can be used only in mode `btex`.
- - Valid values:
- - `rgba32`
- - `rgb5a1`
- - `i4`
- - `i8`
- - `ia4`
- - `ia8`
- - `ia16`
- - `ci4`
- - `ci8`
-- `-rconf PATH` Read Config File.
-- `-eh`: Enable error handler.
- - Only available in non-Windows environments.
-- `-v MODE`: Enable verbosity. Currently there are 3 possible values:
- - `0`: Default. Completely silent (except for warnings and errors).
- - `1`: Information.
- - `2` (and higher): Debug.
-- `-wu` / `--warn-unaccounted`: Enable warnings for each unaccounted block of data found.
- - Can be used only in `e` or `bsf` modes.
-- `-vu` / `--verbose-unaccounted`: Changes how unaccounteds are outputted. Max 4 bytes per line (a word) and add a comment with the offset of each of those lines.
- - Could be useful for looking at raw data or testing.
- - Can be used only in `e` or `bsf` modes.
-- `-tm MODE`: Test Mode (enables certain experimental features). To enable it, set `MODE` to `1`.
-- `-se` / `--set-exporter` : Sets which exporter to use.
-- `--gcc-compat` : Enables GCC compatibly mode. Slower.
-- `-us` / `--unaccounted-static` : Mark unaccounted data as `static`
-- `-s` / `--static` : Mark every asset as `static`.
- - 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`: `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.
-
-### Warning flags
-
-ZAPD contains a variety of warning types, with similar syntax to GCC or Clang's compiler warnings. Warnings can have three levels:
-
-- Off (does not display anything)
-- Warn (print a warning but continue processing)
-- Err (behave like an error, i.e. print and throw an exception to crash ZAPD when occurs)
-
-Each warning type uses one of these by default, but can be modified with flags, similarly to GCC or Clang:
-
-- `-Wfoo` enables warnings of type `foo`
-- `-Wno-foo` disables warnings of type `foo`
-- `-Werror=foo` escalates `foo` to behave like an error
-- `-Weverything` enables all warnings (they may be turned off using `-Wno-` flags afterwards)
-- `-Werror` escalates all enabled warnings to errors
-
-All warning types currently implemented, with their default levels:
-
-| Warning type | Default level | Description |
-| ----------------------------- | ------------- | ------------------------------------------------------------------------ |
-| `-Wdeprecated` | Warn | Deprecated features |
-| `-Whardcoded-generic-pointer` | Off | A generic segmented pointer must be produced |
-| `-Whardcoded-pointer` | Warn | ZAPD lacks the info to make a symbol, so must output a hardcoded pointer |
-| `-Wintersection` | Warn | Two assets intersect |
-| `-Winvalid-attribute-value` | Err | Attribute declared in XML is wrong |
-| `-Winvalid-extracted-data` | Err | Extracted data does not have correct form |
-| `-Winvalid-jpeg` | Err | JPEG file does not conform to the game's format requirements |
-| `-Winvalid-png` | Err | Issues arising when processing PNG data |
-| `-Winvalid-xml` | Err | XML has syntax errors |
-| `-Wmissing-attribute` | Warn | Required attribute missing in XML tag |
-| `-Wmissing-offsets` | Warn | Offset attribute missing in XML tag |
-| `-Wmissing-segment` | Warn | Segment not given in File tag in XML |
-| `-Wnot-implemented` | Warn | ZAPD does not currently support this feature |
-| `-Wunaccounted` | Off | Large blocks of unaccounted |
-| `-Wunknown-attribute` | Warn | Unknown attribute in XML entry tag |
-
-There are also errors that do not have a type, and cannot be disabled.
-
-For example, here we have invoked ZAPD in the usual way to extract using a (rather badly-written) XML, but escalating `-Wintersection` to an error:
-
-
diff --git a/tools/ZAPD/ZAPD.sln b/tools/ZAPD/ZAPD.sln
deleted file mode 100644
index 82538dd9f..000000000
--- a/tools/ZAPD/ZAPD.sln
+++ /dev/null
@@ -1,82 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.30320.27
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZAPD", "ZAPD\ZAPD.vcxproj", "{B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ExporterExample", "ExporterTest\ExporterTest.vcxproj", "{65608EB0-1A47-45AD-AB66-192FB64C762C}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZAPDUtils", "ZAPDUtils\ZAPDUtils.vcxproj", "{A2E01C3E-D647-45D1-9788-043DEBC1A908}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|x64 = Debug|x64
- Debug|x86 = Debug|x86
- MinSizeRel|x64 = MinSizeRel|x64
- MinSizeRel|x86 = MinSizeRel|x86
- Release|x64 = Release|x64
- Release|x86 = Release|x86
- RelWithDebInfo|x64 = RelWithDebInfo|x64
- RelWithDebInfo|x86 = RelWithDebInfo|x86
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.Debug|x64.ActiveCfg = Debug|x64
- {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.Debug|x64.Build.0 = Debug|x64
- {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.Debug|x86.ActiveCfg = Debug|Win32
- {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.Debug|x86.Build.0 = Debug|Win32
- {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.MinSizeRel|x64.ActiveCfg = Release|x64
- {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.MinSizeRel|x64.Build.0 = Release|x64
- {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.MinSizeRel|x86.ActiveCfg = Release|Win32
- {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.MinSizeRel|x86.Build.0 = Release|Win32
- {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.Release|x64.ActiveCfg = Release|x64
- {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.Release|x64.Build.0 = Release|x64
- {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.Release|x86.ActiveCfg = Release|Win32
- {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.Release|x86.Build.0 = Release|Win32
- {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.RelWithDebInfo|x64.ActiveCfg = Release|x64
- {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.RelWithDebInfo|x64.Build.0 = Release|x64
- {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.RelWithDebInfo|x86.ActiveCfg = Release|Win32
- {B53F9E5B-0A58-4BAE-9AFE-856C8CBB8D36}.RelWithDebInfo|x86.Build.0 = Release|Win32
- {65608EB0-1A47-45AD-AB66-192FB64C762C}.Debug|x64.ActiveCfg = Debug|x64
- {65608EB0-1A47-45AD-AB66-192FB64C762C}.Debug|x64.Build.0 = Debug|x64
- {65608EB0-1A47-45AD-AB66-192FB64C762C}.Debug|x86.ActiveCfg = Debug|Win32
- {65608EB0-1A47-45AD-AB66-192FB64C762C}.Debug|x86.Build.0 = Debug|Win32
- {65608EB0-1A47-45AD-AB66-192FB64C762C}.MinSizeRel|x64.ActiveCfg = Debug|x64
- {65608EB0-1A47-45AD-AB66-192FB64C762C}.MinSizeRel|x64.Build.0 = Debug|x64
- {65608EB0-1A47-45AD-AB66-192FB64C762C}.MinSizeRel|x86.ActiveCfg = Debug|Win32
- {65608EB0-1A47-45AD-AB66-192FB64C762C}.MinSizeRel|x86.Build.0 = Debug|Win32
- {65608EB0-1A47-45AD-AB66-192FB64C762C}.Release|x64.ActiveCfg = Release|x64
- {65608EB0-1A47-45AD-AB66-192FB64C762C}.Release|x64.Build.0 = Release|x64
- {65608EB0-1A47-45AD-AB66-192FB64C762C}.Release|x86.ActiveCfg = Release|Win32
- {65608EB0-1A47-45AD-AB66-192FB64C762C}.Release|x86.Build.0 = Release|Win32
- {65608EB0-1A47-45AD-AB66-192FB64C762C}.RelWithDebInfo|x64.ActiveCfg = Release|x64
- {65608EB0-1A47-45AD-AB66-192FB64C762C}.RelWithDebInfo|x64.Build.0 = Release|x64
- {65608EB0-1A47-45AD-AB66-192FB64C762C}.RelWithDebInfo|x86.ActiveCfg = Release|Win32
- {65608EB0-1A47-45AD-AB66-192FB64C762C}.RelWithDebInfo|x86.Build.0 = Release|Win32
- {A2E01C3E-D647-45D1-9788-043DEBC1A908}.Debug|x64.ActiveCfg = Debug|x64
- {A2E01C3E-D647-45D1-9788-043DEBC1A908}.Debug|x64.Build.0 = Debug|x64
- {A2E01C3E-D647-45D1-9788-043DEBC1A908}.Debug|x86.ActiveCfg = Debug|Win32
- {A2E01C3E-D647-45D1-9788-043DEBC1A908}.Debug|x86.Build.0 = Debug|Win32
- {A2E01C3E-D647-45D1-9788-043DEBC1A908}.MinSizeRel|x64.ActiveCfg = Debug|x64
- {A2E01C3E-D647-45D1-9788-043DEBC1A908}.MinSizeRel|x64.Build.0 = Debug|x64
- {A2E01C3E-D647-45D1-9788-043DEBC1A908}.MinSizeRel|x86.ActiveCfg = Debug|Win32
- {A2E01C3E-D647-45D1-9788-043DEBC1A908}.MinSizeRel|x86.Build.0 = Debug|Win32
- {A2E01C3E-D647-45D1-9788-043DEBC1A908}.Release|x64.ActiveCfg = Release|x64
- {A2E01C3E-D647-45D1-9788-043DEBC1A908}.Release|x64.Build.0 = Release|x64
- {A2E01C3E-D647-45D1-9788-043DEBC1A908}.Release|x86.ActiveCfg = Release|Win32
- {A2E01C3E-D647-45D1-9788-043DEBC1A908}.Release|x86.Build.0 = Release|Win32
- {A2E01C3E-D647-45D1-9788-043DEBC1A908}.RelWithDebInfo|x64.ActiveCfg = Release|x64
- {A2E01C3E-D647-45D1-9788-043DEBC1A908}.RelWithDebInfo|x64.Build.0 = Release|x64
- {A2E01C3E-D647-45D1-9788-043DEBC1A908}.RelWithDebInfo|x86.ActiveCfg = Release|Win32
- {A2E01C3E-D647-45D1-9788-043DEBC1A908}.RelWithDebInfo|x86.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {C2E1CC72-7A50-3249-AFD5-DFF6FE25CDCA}
- EndGlobalSection
- GlobalSection(Performance) = preSolution
- HasPerformanceSessions = true
- EndGlobalSection
-EndGlobal
diff --git a/tools/ZAPD/ZAPD/CRC32.h b/tools/ZAPD/ZAPD/CRC32.h
deleted file mode 100644
index 1f82c75c5..000000000
--- a/tools/ZAPD/ZAPD/CRC32.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#pragma once
-
-static uint32_t CRC32B(const unsigned char* message, int32_t size)
-{
- int32_t byte, crc;
- int32_t mask;
-
- crc = 0xFFFFFFFF;
-
- for (int32_t i = 0; i < size; i++)
- {
- byte = message[i];
- crc = crc ^ byte;
-
- for (int32_t j = 7; j >= 0; j--)
- {
- mask = -(crc & 1);
- crc = (crc >> 1) ^ (0xEDB88320 & mask);
- }
- }
-
- return ~(uint32_t)(crc);
-}
\ No newline at end of file
diff --git a/tools/ZAPD/ZAPD/CrashHandler.cpp b/tools/ZAPD/ZAPD/CrashHandler.cpp
deleted file mode 100644
index 7ddec5a7e..000000000
--- a/tools/ZAPD/ZAPD/CrashHandler.cpp
+++ /dev/null
@@ -1,206 +0,0 @@
-#include "CrashHandler.h"
-#include "Utils/StringHelper.h"
-
-#if __has_include()
-#define HAS_POSIX 1
-#else
-#define HAS_POSIX 0
-#endif
-
-#include
-#include
-#include
-#include
-#include
-
-#if HAS_POSIX == 1
-#include
-#include // for __cxa_demangle
-#include // for dladdr
-#include
-#include
-#elif defined(_MSC_VER)
-#include
-#include
-
-#include
-
-#pragma comment(lib, "Dbghelp.lib")
-#endif
-
-// Feel free to add more crash messages.
-static std::array crashEasterEgg = {
- "\tYou've met with a terrible fate, haven't you?",
- "\tSEA BEARS FOAM. SLEEP BEARS DREAMS. \n\tBOTH END IN THE SAME WAY: CRASSSH!",
- "\tZAPD has fallen and cannot get up.",
- "\tIT'S A SECRET TO EVERYBODY. \n\tBut it shouldn't be, you'd better ask about it!",
- "\tI AM ERROR.",
- "\tGRUMBLE,GRUMBLE...",
- "\tDODONGO DISLIKES SMOKE \n\tAnd ZAPD dislikes whatever you fed it.",
- "\tMay the way of the Hero lead \n\tto the debugger.",
- "\tTHE WIND FISH SLUMBERS LONG... \n\tTHE HERO'S LIFE GONE... ",
- "\tSEA BEARS FOAM, SLEEP BEARS DREAMS. \n\tBOTH END IN THE SAME WAY CRASSSH!",
- "\tYou've met with a terrible fate, haven't you?",
- "\tMaster, I calculate a 100% probability that ZAPD has crashed. \n\tAdditionally, the "
- "batteries in your Wii Remote are nearly depleted.",
- "\t CONGRATURATIONS! \n"
- "\tAll Pages are displayed.\n"
- "\t THANK YOU! \n"
- "\t You are great debugger!",
- "\tRCP is HUNG UP!!\n"
- "\tOh! MY GOD!!",
-};
-
-#if HAS_POSIX == 1
-void ErrorHandler(int sig)
-{
- std::array arr;
- constexpr size_t nMaxFrames = arr.size();
- size_t size = backtrace(arr.data(), nMaxFrames);
- char** symbols = backtrace_symbols(arr.data(), nMaxFrames);
-
- fprintf(stderr, "\nZAPD crashed. (Signal: %i)\n", sig);
-
- srand(time(nullptr));
- auto easterIndex = rand() % crashEasterEgg.size();
-
- fprintf(stderr, "\n%s\n\n", crashEasterEgg[easterIndex]);
-
- fprintf(stderr, "Traceback:\n");
- for (size_t i = 1; i < size; i++)
- {
- Dl_info info;
- uint32_t gotAddress = dladdr(arr[i], &info);
- std::string functionName(symbols[i]);
-
- if (gotAddress != 0 && info.dli_sname != nullptr)
- {
- int32_t status;
- char* demangled = abi::__cxa_demangle(info.dli_sname, nullptr, nullptr, &status);
- const char* nameFound = info.dli_sname;
-
- if (status == 0)
- {
- nameFound = demangled;
- }
-
- functionName = StringHelper::Sprintf("%s (+0x%X)", nameFound,
- (char*)arr[i] - (char*)info.dli_saddr);
- free(demangled);
- }
-
- fprintf(stderr, "%-3zd %s\n", i, functionName.c_str());
- }
-
- fprintf(stderr, "\n");
-
- free(symbols);
- exit(1);
-}
-#elif defined(_MSC_VER)
-
-void printStack(CONTEXT* ctx)
-{
- BOOL result;
- HANDLE process;
- HANDLE thread;
- HMODULE hModule;
- ULONG frame;
- DWORD64 displacement;
- DWORD disp;
-
- srand(time(nullptr));
- auto easterIndex = rand() % crashEasterEgg.size();
-
- fprintf(stderr, "\n%s\n\n", crashEasterEgg[easterIndex]);
-
-#if defined(_M_AMD64)
- STACKFRAME64 stack;
- memset(&stack, 0, sizeof(STACKFRAME64));
-#else
- STACKFRAME stack;
- memset(&stack, 0, sizeof(STACKFRAME));
-#endif
-
- char buffer[sizeof(SYMBOL_INFO) + MAX_SYM_NAME + sizeof(TCHAR)];
- char module[512];
-
- PSYMBOL_INFO symbol = (PSYMBOL_INFO)buffer;
-
- CONTEXT ctx2;
- memcpy(&ctx2, ctx, sizeof(CONTEXT));
-
- process = GetCurrentProcess();
- thread = GetCurrentThread();
- SymInitialize(process, nullptr, TRUE);
-
- constexpr DWORD machineType =
-#if defined(_M_AMD64)
- IMAGE_FILE_MACHINE_AMD64;
-#else
- IMAGE_FILE_MACHINE_I386;
-#endif
-
- displacement = 0;
-
- for (frame = 0;; frame++)
- {
- result = StackWalk(machineType, process, thread, &stack, &ctx2, nullptr,
- SymFunctionTableAccess, SymGetModuleBase, nullptr);
- if (!result)
- {
- break;
- }
- symbol->SizeOfStruct = sizeof(SYMBOL_INFO);
- symbol->MaxNameLen = MAX_SYM_NAME;
- SymFromAddr(process, (ULONG64)stack.AddrPC.Offset, &displacement, symbol);
-#if defined(_M_AMD64)
- IMAGEHLP_LINE64 line;
- line.SizeOfStruct = sizeof(IMAGEHLP_LINE64);
-#else
- IMAGEHLP_LINE line;
- line.SizeOfStruct = sizeof(IMAGEHLP_LINE);
-#endif
- if (SymGetLineFromAddr(process, stack.AddrPC.Offset, &disp, &line))
- {
- fprintf(stderr, "%u\t %s in %s: line: %lu: \n", frame, symbol->Name, line.FileName,
- line.LineNumber);
- }
-
- else
- {
- fprintf(stderr, "%u\tat % s\n", frame, symbol->Name);
- hModule = nullptr;
- GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS |
- GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,
- (LPCTSTR)(stack.AddrPC.Offset), &hModule);
-
- if (hModule != nullptr)
- {
- GetModuleFileNameA(hModule, module, 512 - 1);
- }
- fprintf(stderr, "%u\tIn %s\n", frame, module);
- }
- }
-}
-
-LONG seh_filter(_EXCEPTION_POINTERS* ex)
-{
- fprintf(stderr, "EXCEPTION 0x%x occured\n", ex->ExceptionRecord->ExceptionCode);
- printStack(ex->ContextRecord);
- return EXCEPTION_EXECUTE_HANDLER;
-}
-#endif
-
-void CrashHandler_Init()
-{
-#if HAS_POSIX == 1
- signal(SIGSEGV, ErrorHandler);
- signal(SIGABRT, ErrorHandler);
-#elif defined(_MSC_VER)
- SetUnhandledExceptionFilter(seh_filter);
-#else
- HANDLE_WARNING(WarningType::Always,
- "tried to set error handler, but this ZAPD build lacks support for one", "");
-#endif
-}
diff --git a/tools/ZAPD/ZAPD/CrashHandler.h b/tools/ZAPD/ZAPD/CrashHandler.h
deleted file mode 100644
index 102778bec..000000000
--- a/tools/ZAPD/ZAPD/CrashHandler.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef CRASH_HANDLER_H
-#define CRASH_HANDLER_H
-
-void CrashHandler_Init();
-
-#endif
diff --git a/tools/ZAPD/ZAPD/Declaration.cpp b/tools/ZAPD/ZAPD/Declaration.cpp
deleted file mode 100644
index 30863803a..000000000
--- a/tools/ZAPD/ZAPD/Declaration.cpp
+++ /dev/null
@@ -1,236 +0,0 @@
-#include "Declaration.h"
-
-#include "Globals.h"
-#include "Utils/StringHelper.h"
-
-Declaration::Declaration(offset_t nAddress, DeclarationAlignment nAlignment, size_t nSize,
- const std::string& nBody)
-{
- address = nAddress;
- alignment = nAlignment;
- size = nSize;
- declBody = nBody;
-}
-
-Declaration* Declaration::Create(offset_t declAddr, DeclarationAlignment declAlign, size_t declSize,
- const std::string& declType, const std::string& declName,
- const std::string& declBody)
-{
- Declaration* decl = new Declaration(declAddr, declAlign, declSize, declBody);
-
- decl->declType = declType;
- decl->declName = declName;
- decl->declBody = declBody;
-
- return decl;
-}
-
-Declaration* Declaration::CreateArray(offset_t declAddr, DeclarationAlignment declAlign,
- size_t declSize, const std::string& declType,
- const std::string& declName, const std::string& declBody,
- size_t declArrayItemCnt, bool isDeclExternal)
-{
- Declaration* decl = new Declaration(declAddr, declAlign, declSize, declBody);
-
- decl->declName = declName;
- decl->declType = declType;
- decl->arrayItemCnt = declArrayItemCnt;
- decl->isExternal = isDeclExternal;
- decl->isArray = true;
-
- return decl;
-}
-
-Declaration* Declaration::CreateArray(offset_t declAddr, DeclarationAlignment declAlign,
- size_t declSize, const std::string& declType,
- const std::string& declName, const std::string& declBody,
- const std::string& declArrayItemCntStr, bool isDeclExternal)
-{
- Declaration* decl = new Declaration(declAddr, declAlign, declSize, declBody);
-
- decl->declName = declName;
- decl->declType = declType;
- decl->arrayItemCntStr = declArrayItemCntStr;
- decl->isExternal = isDeclExternal;
- decl->isArray = true;
-
- return decl;
-}
-
-Declaration* Declaration::CreateInclude(offset_t declAddr, const std::string& includePath,
- size_t declSize, const std::string& declType,
- const std::string& declName, const std::string& defines)
-{
- Declaration* decl = new Declaration(declAddr, DeclarationAlignment::Align4, declSize, "");
- decl->includePath = includePath;
- decl->declType = declType;
- decl->declName = declName;
- decl->defines = defines;
-
- return decl;
-}
-
-Declaration* Declaration::CreatePlaceholder(offset_t declAddr, const std::string& declName)
-{
- Declaration* decl = new Declaration(declAddr, DeclarationAlignment::Align4, 0, "");
- decl->declName = declName;
- decl->isPlaceholder = true;
-
- return decl;
-}
-
-bool Declaration::IsStatic() const
-{
- switch (staticConf)
- {
- case StaticConfig::Off:
- return false;
-
- case StaticConfig::Global:
- return Globals::Instance->forceStatic;
-
- case StaticConfig::On:
- return true;
- }
-
- return false;
-}
-
-std::string Declaration::GetNormalDeclarationStr() const
-{
- std::string output;
-
- if (IsStatic())
- {
- output += "static ";
- }
-
- if (isArray)
- {
- bool includeArraySize = (IsStatic() || forceArrayCnt);
-
- if (includeArraySize)
- {
- if (arrayItemCntStr != "")
- output += StringHelper::Sprintf("%s %s[%s];\n", declType.c_str(), declName.c_str(),
- arrayItemCntStr.c_str());
- else
- output += StringHelper::Sprintf("%s %s[%i] = {\n", declType.c_str(),
- declName.c_str(), arrayItemCnt);
- }
- else
- {
- output += StringHelper::Sprintf("%s %s[] = {\n", declType.c_str(), declName.c_str());
- }
-
- output += declBody + "\n";
- }
- else
- {
- output += StringHelper::Sprintf("%s %s = { ", declType.c_str(), declName.c_str());
- output += declBody;
- }
-
- if (output.back() == '\n')
- output += "};";
- else
- output += " };";
-
- output += "\n";
-
- output += "\n";
-
- return output;
-}
-
-std::string Declaration::GetExternalDeclarationStr() const
-{
- std::string output;
-
- if (IsStatic())
- output += "static ";
-
- bool includeArraySize = (IsStatic() || forceArrayCnt);
-
- if (includeArraySize)
- {
- if (arrayItemCntStr != "")
- output += StringHelper::Sprintf("%s %s[%s] = ", declType.c_str(), declName.c_str(),
- arrayItemCntStr.c_str());
- else
- output += StringHelper::Sprintf("%s %s[%i] = ", declType.c_str(), declName.c_str(),
- arrayItemCnt);
- }
- else
- {
- output += StringHelper::Sprintf("%s %s[] = ", declType.c_str(), declName.c_str());
- }
-
- output += StringHelper::Sprintf("{\n#include \"%s\"\n};", includePath.c_str());
- output += "\n\n";
-
- return output;
-}
-
-std::string Declaration::GetExternStr() const
-{
- if (IsStatic() || declType == "" || isUnaccounted)
- {
- return "";
- }
-
- if (isArray)
- {
- if (arrayItemCntStr != "" && (IsStatic() || forceArrayCnt))
- {
- return StringHelper::Sprintf("extern %s %s[%s];\n", declType.c_str(), declName.c_str(),
- arrayItemCntStr.c_str());
- }
- else if (arrayItemCnt != 0 && (IsStatic() || forceArrayCnt))
- {
- return StringHelper::Sprintf("extern %s %s[%i];\n", declType.c_str(), declName.c_str(),
- arrayItemCnt);
- }
- else
- return StringHelper::Sprintf("extern %s %s[];\n", declType.c_str(), declName.c_str());
- }
-
- return StringHelper::Sprintf("extern %s %s;\n", declType.c_str(), declName.c_str());
-}
-
-std::string Declaration::GetDefinesStr() const
-{
- if (IsStatic() || (declType == ""))
- {
- return "";
- }
- return StringHelper::Sprintf("%s", defines.c_str());
-}
-
-std::string Declaration::GetStaticForwardDeclarationStr() const
-{
- if (!IsStatic() || isUnaccounted)
- return "";
-
- if (isArray)
- {
- if (arrayItemCntStr == "" && arrayItemCnt == 0)
- {
- // Forward declaring static arrays without specifying the size is not allowed.
- return "";
- }
-
- if (arrayItemCntStr != "")
- {
- return StringHelper::Sprintf("static %s %s[%s];\n", declType.c_str(), declName.c_str(),
- arrayItemCntStr.c_str());
- }
- else
- {
- return StringHelper::Sprintf("static %s %s[%i];\n", declType.c_str(), declName.c_str(),
- arrayItemCnt);
- }
- }
-
- return StringHelper::Sprintf("static %s %s;\n", declType.c_str(), declName.c_str());
-}
diff --git a/tools/ZAPD/ZAPD/Declaration.h b/tools/ZAPD/ZAPD/Declaration.h
deleted file mode 100644
index d079cb8dc..000000000
--- a/tools/ZAPD/ZAPD/Declaration.h
+++ /dev/null
@@ -1,182 +0,0 @@
-#pragma once
-
-#include
-#include
-#include
-
-// TODO: should we drop the `_t` suffix because of UNIX compliance?
-typedef uint32_t segptr_t;
-typedef uint32_t offset_t;
-
-#define SEGMENTED_NULL ((segptr_t)0)
-
-enum class DeclarationAlignment
-{
- Align4,
- Align8
-};
-
-enum class StaticConfig
-{
- Off,
- Global,
- On
-};
-
-///
-/// A declaration is contains the C contents of a symbol for a file.
-/// It contains at a minimum the address where the symbol would be in the binary file, alignment
-/// settings, the size of the binary data, and the C code that makes it up. Optionally it can also
-/// contain comments.
-///
-class Declaration
-{
-public:
- // Where in the binary file (segment) will this C code end up being?
- offset_t address = 0;
-
- // How is this C code aligned?
- DeclarationAlignment alignment = DeclarationAlignment::Align4;
-
- // How many bytes will this C code take up in the resulting binary when compiled?
- size_t size = 0;
-
- // The C type of this declaration
- std::string declType = "";
-
- // The C variable name of this declaration
- std::string declName = "";
-
- // The body of the declaration containing the data.
- // In "int j = 7;", "7" would be text.
- std::string declBody = "";
-
- // #define's to be included in the header
- std::string defines = "";
-
- std::string includePath = "";
-
- // Is this declaration in an external file? (ie. a gameplay_keep reference being found in
- // another file that wishes to use its data)
- bool isExternal = false;
-
- bool isArray = false;
-
- // If true, will ensure that the arrays size is included in the declaration
- bool forceArrayCnt = false;
-
- // If this declaration is an array, how many items make it up?
- size_t arrayItemCnt = 0;
-
- // Overrides the brackets for the arrays size with a custom string
- std::string arrayItemCntStr = "";
-
- std::vector references;
-
- // If true, this declaration represents data inside the file which we do not understand it's
- // purpose for. It will be outputted as just a byte array.
- bool isUnaccounted = false;
-
- // Is this declaration a placeholder that will be replaced later?
- bool isPlaceholder = false;
-
- // Does this declaration come straight from the XML?
- // If false, this means that the declaration was created by ZAPD when it was parsing the
- // resources.
- bool declaredInXml = false;
-
- StaticConfig staticConf = StaticConfig::Global;
-
- ///
- /// Creates a regular declaration.
- ///
- /// The address inside a binary file this declaration will be in when
- /// compiled. The alignment of this declaration in the compiled
- /// binary file. The size of this declaration when it is compiled
- /// to binary data. The C variable type this declaration will be
- /// declared as. The C variable name this declaration will be
- /// declared as. The contents of the C variable
- /// declaration.
- static Declaration* Create(offset_t declAddr, DeclarationAlignment declAlign, size_t declSize,
- const std::string& declType, const std::string& declName,
- const std::string& declBody);
-
- ///
- /// Creates an array declaration.
- ///
- /// The address inside a binary file this declaration will be in when
- /// compiled. The alignment of this declaration in the compiled
- /// binary file. The size of this declaration when it is compiled
- /// to binary data. The C variable type this declaration will be
- /// declared as. The C variable name this declaration will be
- /// declared as. The contents of the C variable
- /// declaration. The number of items in the
- /// array. (Optional) Is this declaration from another
- /// segment?
- static Declaration* CreateArray(offset_t declAddr, DeclarationAlignment declAlign,
- size_t declSize, const std::string& declType,
- const std::string& declName, const std::string& declBody,
- size_t declArrayItemCnt = 0, bool isDeclExternal = false);
-
- ///
- /// Creates an array declaration who's size in the C code uses a custom string.
- ///
- /// The address inside a binary file this declaration will be in when
- /// compiled. The alignment of this declaration in the compiled
- /// binary file. The size of this declaration when it is compiled
- /// to binary data. The C variable type this declaration will be
- /// declared as. The C variable name this declaration will be
- /// declared as. The contents of the C variable
- /// declaration. The string to be put in the C array's
- /// size inbetween the brackets. (Optional) Is this
- /// declaration from another segment?
- static Declaration* CreateArray(offset_t declAddr, DeclarationAlignment declAlign,
- size_t declSize, const std::string& declType,
- const std::string& declName, const std::string& declBody,
- const std::string& declArrayItemCntStr,
- bool isDeclExternal = false);
-
- ///
- /// Creates a declaration who's body uses a #include to include another file
- ///
- /// The address inside a binary file this declaration will be in when
- /// compiled. The path to the file this declaration will be
- /// #including. The size of this declaration when it is compiled
- /// to binary data. The C variable type this declaration will be
- /// declared as. The C variable name this declaration will be
- /// declared as. (Optional) Any #define's we want to have
- /// outputted by this declaration.
- static Declaration* CreateInclude(offset_t declAddr, const std::string& includePath,
- size_t declSize, const std::string& declType,
- const std::string& declName, const std::string& defines = "");
-
- ///
- /// Creates a placeholder declaration to be replaced later.
- ///
- /// The address inside a binary file this declaration will be in when
- /// compiled. The C variable name this declaration will be
- /// declared as.
- static Declaration* CreatePlaceholder(offset_t declAddr, const std::string& declName);
-
- bool IsStatic() const;
-
- // Returns the declaration as C code as it would be in the code file when the body contains the
- // needed data
- std::string GetNormalDeclarationStr() const;
-
- // Returns the declaration as C code as it would be in the code file when the body #include's
- // another file
- std::string GetExternalDeclarationStr() const;
-
- // Generates the extern for this item to be placed in header files.
- std::string GetExternStr() const;
-
- // Generates any #define's needed
- std::string GetDefinesStr() const;
-
- std::string GetStaticForwardDeclarationStr() const;
-
-protected:
- Declaration(offset_t nAddress, DeclarationAlignment nAlignment, size_t nSize,
- const std::string& nBody);
-};
diff --git a/tools/ZAPD/ZAPD/ExporterSet.h b/tools/ZAPD/ZAPD/ExporterSet.h
deleted file mode 100644
index c4dd93445..000000000
--- a/tools/ZAPD/ZAPD/ExporterSet.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#pragma once
-
-typedef void (*ExporterSetFunc)(ZFile*);
-typedef bool (*ExporterSetFuncBool)(ZFileMode fileMode);
-typedef void (*ExporterSetFuncVoid)(int argc, char* argv[], int& i);
-typedef void (*ExporterSetFuncVoid2)(const std::string& buildMode, ZFileMode& fileMode);
-typedef void (*ExporterSetFuncVoid3)();
-typedef void (*ExporterSetResSave)(ZResource* res, BinaryWriter& writer);
-
-class ExporterSet
-{
-public:
- ~ExporterSet();
-
- std::map exporters;
- ExporterSetFuncVoid parseArgsFunc = nullptr;
- ExporterSetFuncVoid2 parseFileModeFunc = nullptr;
- ExporterSetFuncBool processFileModeFunc = nullptr;
- ExporterSetFunc beginFileFunc = nullptr;
- ExporterSetFunc endFileFunc = nullptr;
- ExporterSetFuncVoid3 beginXMLFunc = nullptr;
- ExporterSetFuncVoid3 endXMLFunc = nullptr;
- ExporterSetResSave resSaveFunc = nullptr;
-};
\ No newline at end of file
diff --git a/tools/ZAPD/ZAPD/GameConfig.cpp b/tools/ZAPD/ZAPD/GameConfig.cpp
deleted file mode 100644
index 2140464ec..000000000
--- a/tools/ZAPD/ZAPD/GameConfig.cpp
+++ /dev/null
@@ -1,301 +0,0 @@
-#include "GameConfig.h"
-
-#include
-#include
-#include
-
-#include "Utils/Directory.h"
-#include "Utils/File.h"
-#include "Utils/Path.h"
-#include "ZFile.h"
-#include "tinyxml2.h"
-
-using ConfigFunc = void (GameConfig::*)(const tinyxml2::XMLElement&);
-
-GameConfig::~GameConfig()
-{
- for (auto& declPair : segmentRefFiles)
- {
- for (auto& file : declPair.second)
- {
- delete file;
- }
- }
-}
-
-void GameConfig::ReadTexturePool(const fs::path& texturePoolXmlPath)
-{
- tinyxml2::XMLDocument doc;
- tinyxml2::XMLError eResult = doc.LoadFile(texturePoolXmlPath.string().c_str());
-
- if (eResult != tinyxml2::XML_SUCCESS)
- {
- fprintf(stderr, "Warning: Unable to read texture pool XML with error code %i\n", eResult);
- return;
- }
-
- tinyxml2::XMLNode* root = doc.FirstChild();
-
- if (root == nullptr)
- return;
-
- for (tinyxml2::XMLElement* child = root->FirstChildElement(); child != nullptr;
- child = child->NextSiblingElement())
- {
- if (std::string_view(child->Name()) == "Texture")
- {
- std::string crcStr = child->Attribute("CRC");
- fs::path texPath = child->Attribute("Path");
- std::string texName;
-
- uint32_t crc = strtoul(crcStr.c_str(), nullptr, 16);
-
- texturePool[crc].path = texPath;
- }
- }
-}
-
-void GameConfig::GenSymbolMap(const fs::path& symbolMapPath)
-{
- auto symbolLines = File::ReadAllLines(symbolMapPath);
-
- for (std::string& symbolLine : symbolLines)
- {
- auto split = StringHelper::Split(symbolLine, " ");
- uint32_t addr = strtoul(split[0].c_str(), nullptr, 16);
- std::string symbolName = split[1];
-
- symbolMap[addr] = std::move(symbolName);
- }
-}
-
-void GameConfig::ConfigFunc_SymbolMap(const tinyxml2::XMLElement& element)
-{
- std::string fileName = element.Attribute("File");
- GenSymbolMap(Path::GetDirectoryName(configFilePath) / fileName);
-}
-
-void GameConfig::ConfigFunc_ActorList(const tinyxml2::XMLElement& element)
-{
- std::string fileName = element.Attribute("File");
- std::vector lines =
- File::ReadAllLines(Path::GetDirectoryName(configFilePath) / fileName);
-
- for (auto& line : lines)
- actorList.emplace_back(std::move(line));
-}
-
-void GameConfig::ConfigFunc_ObjectList(const tinyxml2::XMLElement& element)
-{
- std::string fileName = element.Attribute("File");
- std::vector lines =
- File::ReadAllLines(Path::GetDirectoryName(configFilePath) / fileName);
-
- for (auto& line : lines)
- objectList.emplace_back(std::move(line));
-}
-
-void GameConfig::ConfigFunc_EntranceList(const tinyxml2::XMLElement& element)
-{
- std::string fileName = element.Attribute("File");
- std::vector lines =
- File::ReadAllLines(Path::GetDirectoryName(configFilePath) / fileName);
-
- for (auto& line : lines)
- entranceList.emplace_back(std::move(line));
-}
-
-void GameConfig::ConfigFunc_specialEntranceList(const tinyxml2::XMLElement& element)
-{
- std::string fileName = element.Attribute("File");
- std::vector lines =
- File::ReadAllLines(Path::GetDirectoryName(configFilePath) / fileName);
-
- for (auto& line : lines)
- specialEntranceList.emplace_back(std::move(line));
-}
-
-void GameConfig::ConfigFunc_TexturePool(const tinyxml2::XMLElement& element)
-{
- std::string fileName = element.Attribute("File");
- ReadTexturePool(Path::GetDirectoryName(configFilePath) / fileName);
-}
-
-void GameConfig::ConfigFunc_BGConfig(const tinyxml2::XMLElement& element)
-{
- bgScreenWidth = element.IntAttribute("ScreenWidth", 320);
- bgScreenHeight = element.IntAttribute("ScreenHeight", 240);
- useScreenWidthHeightConstants = element.BoolAttribute("UseScreenWidthHeightConstants", true);
-}
-
-void GameConfig::ConfigFunc_ExternalXMLFolder(const tinyxml2::XMLElement& element)
-{
- const char* pathValue = element.Attribute("Path");
- if (pathValue == nullptr)
- {
- throw std::runtime_error(
- StringHelper::Sprintf("Parse: Fatal error in configuration file.\n"
- "\t Missing 'Path' attribute in `ExternalXMLFolder` element.\n"));
- }
- if (externalXmlFolder != "")
- {
- throw std::runtime_error(StringHelper::Sprintf("Parse: Fatal error in configuration file.\n"
- "\t `ExternalXMLFolder` is duplicated.\n"));
- }
- externalXmlFolder = pathValue;
-}
-
-void GameConfig::ConfigFunc_ExternalFile(const tinyxml2::XMLElement& element)
-{
- const char* xmlPathValue = element.Attribute("XmlPath");
- if (xmlPathValue == nullptr)
- {
- throw std::runtime_error(
- StringHelper::Sprintf("Parse: Fatal error in configuration file.\n"
- "\t Missing 'XmlPath' attribute in `ExternalFile` element.\n"));
- }
- const char* outPathValue = element.Attribute("OutPath");
- if (outPathValue == nullptr)
- {
- throw std::runtime_error(
- StringHelper::Sprintf("Parse: Fatal error in configuration file.\n"
- "\t Missing 'OutPath' attribute in `ExternalFile` element.\n"));
- }
-
- externalFiles.push_back(ExternalFile(fs::path(xmlPathValue), fs::path(outPathValue)));
-}
-
-void GameConfig::ConfigFunc_EnumData(const tinyxml2::XMLElement& element)
-{
- std::string path = Path::GetDirectoryName(configFilePath).string();
- path = path.append("/").append(element.Attribute("File"));
- tinyxml2::XMLDocument doc;
- tinyxml2::XMLError eResult = doc.LoadFile(path.c_str());
-
- if (eResult != tinyxml2::XML_SUCCESS)
- {
- throw std::runtime_error("Error: Unable to read enum data.");
- }
-
- tinyxml2::XMLNode* root = doc.FirstChild();
-
- if (root == nullptr)
- return;
-
- for (tinyxml2::XMLElement* csEnum = root->FirstChildElement(); csEnum != nullptr;
- csEnum = csEnum->NextSiblingElement())
- {
- for (tinyxml2::XMLElement* item = csEnum->FirstChildElement(); item != nullptr;
- item = item->NextSiblingElement())
- {
- std::string enumKey = csEnum->Attribute("Key");
- uint16_t itemIndex = atoi(item->Attribute("Index"));
- const char* itemID = item->Attribute("ID");
-
- // Common
- if (enumKey == "cmd")
- enumData.cutsceneCmd[itemIndex] = itemID;
-
- else if (enumKey == "miscType")
- enumData.miscType[itemIndex] = itemID;
-
- else if (enumKey == "textType")
- enumData.textType[itemIndex] = itemID;
-
- else if (enumKey == "fadeOutSeqPlayer")
- enumData.fadeOutSeqPlayer[itemIndex] = itemID;
-
- else if (enumKey == "transitionType")
- enumData.transitionType[itemIndex] = itemID;
-
- else if (enumKey == "destination")
- enumData.destination[itemIndex] = itemID;
-
- else if (enumKey == "naviQuestHintType")
- enumData.naviQuestHintType[itemIndex] = itemID;
-
- else if (enumKey == "ocarinaSongActionId")
- enumData.ocarinaSongActionId[itemIndex] = itemID;
-
- else if (enumKey == "seqId")
- enumData.seqId[itemIndex] = itemID;
-
- else if (enumKey == "playerCueId")
- enumData.playerCueId[itemIndex] = itemID;
-
- // MM
- else if (enumKey == "modifySeqType")
- enumData.modifySeqType[itemIndex] = itemID;
-
- else if (enumKey == "chooseCreditsSceneType")
- enumData.chooseCreditsSceneType[itemIndex] = itemID;
-
- else if (enumKey == "destinationType")
- enumData.destinationType[itemIndex] = itemID;
-
- else if (enumKey == "motionBlurType")
- enumData.motionBlurType[itemIndex] = itemID;
-
- else if (enumKey == "transitionGeneralType")
- enumData.transitionGeneralType[itemIndex] = itemID;
-
- else if (enumKey == "rumbleType")
- enumData.rumbleType[itemIndex] = itemID;
-
- else if (enumKey == "spawnFlag")
- enumData.spawnFlag[itemIndex] = itemID;
-
- else if (enumKey == "endSfx")
- enumData.endSfx[itemIndex] = itemID;
-
- else if (enumKey == "csSplineInterpType")
- enumData.interpType[itemIndex] = itemID;
-
- else if (enumKey == "csSplineRelTo")
- enumData.relTo[itemIndex] = itemID;
- }
- }
-}
-
-void GameConfig::ReadConfigFile(const fs::path& argConfigFilePath)
-{
- static const std::unordered_map ConfigFuncDictionary = {
- {"SymbolMap", &GameConfig::ConfigFunc_SymbolMap},
- {"ActorList", &GameConfig::ConfigFunc_ActorList},
- {"ObjectList", &GameConfig::ConfigFunc_ObjectList},
- {"EntranceList", &GameConfig::ConfigFunc_EntranceList},
- {"SpecialEntranceList", &GameConfig::ConfigFunc_specialEntranceList},
- {"TexturePool", &GameConfig::ConfigFunc_TexturePool},
- {"BGConfig", &GameConfig::ConfigFunc_BGConfig},
- {"EnumData", &GameConfig::ConfigFunc_EnumData},
- {"ExternalXMLFolder", &GameConfig::ConfigFunc_ExternalXMLFolder},
- {"ExternalFile", &GameConfig::ConfigFunc_ExternalFile},
- };
-
- configFilePath = argConfigFilePath.string();
- tinyxml2::XMLDocument doc;
- tinyxml2::XMLError eResult = doc.LoadFile(configFilePath.c_str());
-
- if (eResult != tinyxml2::XML_SUCCESS)
- {
- throw std::runtime_error("Error: Unable to read config file.");
- }
-
- tinyxml2::XMLNode* root = doc.FirstChild();
-
- if (root == nullptr)
- return;
-
- for (tinyxml2::XMLElement* child = root->FirstChildElement(); child != nullptr;
- child = child->NextSiblingElement())
- {
- auto it = ConfigFuncDictionary.find(child->Name());
- if (it == ConfigFuncDictionary.end())
- {
- fprintf(stderr, "Unsupported configuration variable: %s\n", child->Name());
- continue;
- }
-
- std::invoke(it->second, *this, *child);
- }
-}
diff --git a/tools/ZAPD/ZAPD/GameConfig.h b/tools/ZAPD/ZAPD/GameConfig.h
deleted file mode 100644
index 4f3b91f8c..000000000
--- a/tools/ZAPD/ZAPD/GameConfig.h
+++ /dev/null
@@ -1,97 +0,0 @@
-#pragma once
-
-#include
-#include