diff --git a/Dockerfile b/Dockerfile index 131ed20f1b..92a0729960 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,6 +13,7 @@ RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone & python3-pip \ python3-venv \ git \ + curl \ wget \ unzip \ clang-tidy \ diff --git a/Jenkinsfile b/Jenkinsfile index 1c10524d57..5deedda130 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -120,6 +120,13 @@ pipeline { } } } + stage('Build ique-cn') { + steps { + script { + build('ique-cn', 'oot-ique-cn.z64') + } + } + } stage('Generate patch') { when { not { diff --git a/Makefile b/Makefile index ebba84f850..35623679de 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ MAKEFLAGS += --no-builtin-rules # Ensure the build fails if a piped command fails -SHELL = /bin/bash +SHELL = /usr/bin/env bash .SHELLFLAGS = -o pipefail -c #### Build options #### @@ -36,6 +36,7 @@ COMPILER ?= ido # gc-eu GameCube Europe/PAL # gc-eu-mq GameCube Europe/PAL Master Quest # gc-jp-ce GameCube Japan (Collector's Edition disc) +# ique-cn iQue Player (Simplified Chinese) VERSION ?= gc-eu-mq-dbg # Number of threads to extract and compress with. N_THREADS ?= $(shell nproc) @@ -167,7 +168,6 @@ else ifeq ($(VERSION),gc-jp-ce) BUILD_TIME := 21:53:00 REVISION := 15 else ifeq ($(VERSION),ique-cn) - COMPARE := 0 REGION ?= US PLATFORM := IQUE DEBUG_FEATURES ?= 0 @@ -320,7 +320,8 @@ CPP := gcc -E MKLDSCRIPT := tools/mkldscript MKDMADATA := tools/mkdmadata ELF2ROM := tools/elf2rom -ZAPD := tools/ZAPD/ZAPD.out +BIN2C := tools/bin2c +N64TEXCONV := tools/assets/n64texconv/n64texconv FADO := tools/fado/fado.elf PYTHON ?= $(VENV)/bin/python3 @@ -376,10 +377,10 @@ else # compiler does support but warns for their usage). CFLAGS += $(CPP_DEFINES) $(GBI_DEFINES) -G 0 -non_shared -fullwarn -verbose -Xcpluscomm $(INC) -Wab,-r4300_mul -woff 516,609,649,838,712,807 CCASFLAGS += $(CPP_DEFINES) $(GBI_DEFINES) -G 0 -non_shared -fullwarn -verbose -Xcpluscomm $(INC) -Wab,-r4300_mul -woff 516,609,649,838,712,807 -o32 - EGCS_CFLAGS += $(CPP_DEFINES) $(GBI_DEFINES) -G 0 -nostdinc $(INC) -mcpu=vr4300 -mabi=32 -mgp32 -mfp32 -fno-PIC MIPS_VERSION := -mips2 - EGCS_CCASFLAGS := -Wall -nostdinc $(CPP_DEFINES) $(INC) -c -G 0 -Wa,-irix-symtab -D_ABIO32=1 -D_ABI64=3 -D_MIPS_SIM_ABI64=_ABI64 -D_MIPS_SIM_ABI32=_ABIO32 -DMIPSEB -D_LANGUAGE_ASSEMBLY -mabi=32 -fno-PIC -non_shared -mcpu=4300 -mfix4300 + EGCS_CFLAGS += $(CPP_DEFINES) $(GBI_DEFINES) -DEGCS -G 0 -nostdinc $(INC) -mcpu=vr4300 -mabi=32 -mgp32 -mfp32 -fno-PIC + EGCS_CCASFLAGS := -Wall -nostdinc $(CPP_DEFINES) -DEGCS $(INC) -c -G 0 -Wa,-irix-symtab -D_ABIO32=1 -D_ABI64=3 -D_MIPS_SIM_ABI64=_ABI64 -D_MIPS_SIM_ABI32=_ABIO32 -DMIPSEB -D_LANGUAGE_ASSEMBLY -mabi=32 -fno-PIC -non_shared -mcpu=4300 -mfix4300 EGCS_ASOPTFLAGS := endif @@ -408,8 +409,10 @@ ROMC := $(ROM:.z64=-compressed.z64) ELF := $(ROM:.z64=.elf) MAP := $(ROM:.z64=.map) LDSCRIPT := $(ROM:.z64=.ld) + # description of ROM segments -SPEC := spec +SPEC := spec/spec +SPEC_INCLUDES := $(wildcard spec/*.inc) SRC_DIRS := $(shell find src -type d) UNDECOMPILED_DATA_DIRS := $(shell find data -type d) @@ -491,7 +494,7 @@ ASSET_FILES_OUT := $(foreach f,$(ASSET_FILES_BIN_EXTRACTED:.bin=.bin.inc.c),$(f: $(foreach f,$(ASSET_FILES_BIN_COMMITTED:.bin=.bin.inc.c),$(BUILD_DIR)/$f) # Find all .o files included in the spec -SPEC_O_FILES := $(shell $(CPP) $(CPPFLAGS) $(SPEC) | $(BUILD_DIR_REPLACE) | sed -n -E 's/^[ \t]*include[ \t]*"([a-zA-Z0-9/_.-]+\.o)"/\1/p') +SPEC_O_FILES := $(shell $(CPP) $(CPPFLAGS) -I. $(SPEC) | $(BUILD_DIR_REPLACE) | sed -n -E 's/^[ \t]*include[ \t]*"([a-zA-Z0-9/_.-]+\.o)"/\1/p') # Split out reloc files O_FILES := $(filter-out %_reloc.o,$(SPEC_O_FILES)) @@ -535,6 +538,8 @@ 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 + ifeq ($(COMPILER),ido) $(BUILD_DIR)/src/boot/driverominit.o: OPTFLAGS := -O2 @@ -569,27 +574,28 @@ ifeq ($(PLATFORM),IQUE) # Some files are compiled with EGCS on iQue EGCS_O_FILES += $(BUILD_DIR)/src/boot/boot_main.o EGCS_O_FILES += $(BUILD_DIR)/src/boot/idle.o +EGCS_O_FILES += $(BUILD_DIR)/src/boot/inflate.o EGCS_O_FILES += $(BUILD_DIR)/src/boot/is_debug_ique.o EGCS_O_FILES += $(BUILD_DIR)/src/boot/z_locale.o EGCS_O_FILES += $(BUILD_DIR)/src/boot/z_std_dma.o -# EGCS_O_FILES += $(BUILD_DIR)/src/code/z_actor.o +EGCS_O_FILES += $(BUILD_DIR)/src/code/z_actor.o EGCS_O_FILES += $(BUILD_DIR)/src/code/z_common_data.o EGCS_O_FILES += $(BUILD_DIR)/src/code/z_construct.o -# EGCS_O_FILES += $(BUILD_DIR)/src/code/z_kanfont.o -# EGCS_O_FILES += $(BUILD_DIR)/src/code/z_message.o +EGCS_O_FILES += $(BUILD_DIR)/src/code/z_kanfont.o +EGCS_O_FILES += $(BUILD_DIR)/src/code/z_message.o EGCS_O_FILES += $(BUILD_DIR)/src/code/z_parameter.o -# EGCS_O_FILES += $(BUILD_DIR)/src/code/z_sram.o +EGCS_O_FILES += $(BUILD_DIR)/src/code/z_sram.o EGCS_O_FILES += $(BUILD_DIR)/src/overlays/actors/ovl_En_Mag/z_en_mag.o EGCS_O_FILES += $(BUILD_DIR)/src/overlays/actors/ovl_End_Title/z_end_title.o EGCS_O_FILES += $(BUILD_DIR)/src/overlays/actors/ovl_Fishing/z_fishing.o -# EGCS_O_FILES += $(BUILD_DIR)/src/overlays/gamestates/ovl_file_choose/z_file_copy_erase.o +EGCS_O_FILES += $(BUILD_DIR)/src/overlays/gamestates/ovl_file_choose/z_file_copy_erase.o EGCS_O_FILES += $(BUILD_DIR)/src/overlays/gamestates/ovl_opening/z_opening.o EGCS_O_FILES += $(BUILD_DIR)/src/overlays/gamestates/ovl_title/z_title.o EGCS_O_FILES += $(BUILD_DIR)/src/overlays/misc/ovl_kaleido_scope/z_kaleido_map.o EGCS_O_FILES += $(BUILD_DIR)/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.o $(EGCS_O_FILES): CC := $(EGCS_CC) -$(EGCS_O_FILES): CFLAGS := $(EGCS_CFLAGS) -mno-abicalls -funsigned-char +$(EGCS_O_FILES): CFLAGS := $(EGCS_CFLAGS) -mno-abicalls $(EGCS_O_FILES): MIPS_VERSION := endif @@ -600,6 +606,7 @@ $(BUILD_DIR)/src/libc/%.o: CFLAGS := $(EGCS_CFLAGS) -mno-abicalls $(BUILD_DIR)/src/libc/%.o: CCASFLAGS := $(EGCS_CCASFLAGS) $(BUILD_DIR)/src/libc/%.o: OPTFLAGS := -O1 $(BUILD_DIR)/src/libc/%.o: MIPS_VERSION := +$(BUILD_DIR)/src/libc/memmove.o: MIPS_VERSION := -mips2 else ifeq ($(DEBUG_FEATURES),1) $(BUILD_DIR)/src/libc/%.o: OPTFLAGS := -g $(BUILD_DIR)/src/libc/%.o: ASOPTFLAGS := -g @@ -635,6 +642,8 @@ $(BUILD_DIR)/src/libultra/%.o: ASOPTFLAGS := $(EGCS_ASOPTFLAGS) $(BUILD_DIR)/src/libultra/reg/_%.o: OPTFLAGS := -O0 $(BUILD_DIR)/src/libultra/reg/_%.o: MIPS_VERSION := -mgp64 -mfp64 -mips3 +$(BUILD_DIR)/src/libultra/audio/%.o: OPTFLAGS := -O2 + $(BUILD_DIR)/src/libultra/libc/ll.o: OPTFLAGS := -O0 $(BUILD_DIR)/src/libultra/libc/llcvt.o: OPTFLAGS := -O0 @@ -805,9 +814,6 @@ endif #### Various Recipes #### -$(ROM): $(ELF) - $(ELF2ROM) -cic 6105 $< $@ - ifeq ($(PLATFORM),IQUE) COMPRESS_ARGS := --format gzip --pad-to 0x4000 CIC = 6102 @@ -816,14 +822,25 @@ else CIC = 6105 endif +$(ROM): $(ELF) + $(ELF2ROM) -cic $(CIC) $< $@ + $(ROMC): $(ROM) $(ELF) $(BUILD_DIR)/compress_ranges.txt $(PYTHON) tools/compress.py --in $(ROM) --out $@ --dmadata-start `./tools/dmadata_start.sh $(NM) $(ELF)` --compress `cat $(BUILD_DIR)/compress_ranges.txt` --threads $(N_THREADS) $(COMPRESS_ARGS) $(PYTHON) -m ipl3checksum sum --cic $(CIC) --update $@ +COM_PLUGIN := tools/com-plugin/common-plugin.so + +LDFLAGS := -T $(LDSCRIPT) -T $(BUILD_DIR)/linker_scripts/makerom.ld -T $(BUILD_DIR)/undefined_syms.txt --no-check-sections --accept-unknown-input-arch --emit-relocs -Map $(MAP) +ifeq ($(PLATFORM),IQUE) + LDFLAGS += -plugin $(COM_PLUGIN) -plugin-opt order=$(BASEROM_DIR)/bss-order.txt + $(ELF): $(BASEROM_DIR)/bss-order.txt +endif + $(ELF): $(TEXTURE_FILES_OUT) $(ASSET_FILES_OUT) $(O_FILES) $(OVL_RELOC_FILES) $(LDSCRIPT) $(BUILD_DIR)/linker_scripts/makerom.ld $(BUILD_DIR)/undefined_syms.txt \ $(SAMPLEBANK_O_FILES) $(SOUNDFONT_O_FILES) $(SEQUENCE_O_FILES) \ $(BUILD_DIR)/assets/audio/sequence_font_table.o $(BUILD_DIR)/assets/audio/audiobank_padding.o - $(LD) -T $(LDSCRIPT) -T $(BUILD_DIR)/linker_scripts/makerom.ld -T $(BUILD_DIR)/undefined_syms.txt --no-check-sections --accept-unknown-input-arch --emit-relocs -Map $(MAP) -o $@ + $(LD) $(LDFLAGS) -o $@ $(BUILD_DIR)/linker_scripts/makerom.ld: linker_scripts/makerom.ld $(CPP) -I include $(CPPFLAGS) $< > $@ @@ -840,10 +857,10 @@ $(O_FILES): | asset_files .PHONY: o_files asset_files -$(BUILD_DIR)/$(SPEC): $(SPEC) - $(CPP) $(CPPFLAGS) $< | $(BUILD_DIR_REPLACE) > $@ +$(BUILD_DIR)/spec: $(SPEC) $(SPEC_INCLUDES) + $(CPP) $(CPPFLAGS) -I. $< | $(BUILD_DIR_REPLACE) > $@ -$(LDSCRIPT): $(BUILD_DIR)/$(SPEC) +$(LDSCRIPT): $(BUILD_DIR)/spec $(MKLDSCRIPT) $< $@ $(BUILD_DIR)/undefined_syms.txt: undefined_syms.txt @@ -922,9 +939,10 @@ endif # Incremental link to move z_message and z_game_over data into rodata $(BUILD_DIR)/src/code/z_message_z_game_over.o: $(BUILD_DIR)/src/code/z_message.o $(BUILD_DIR)/src/code/z_game_over.o - $(LD) -r -T linker_scripts/data_with_rodata.ld -o $@ $^ + $(LD) -r -G 0 -T linker_scripts/data_with_rodata.ld -o $@ $^ + $(PYTHON) tools/patch_data_with_rodata_mdebug.py $@ -$(BUILD_DIR)/dmadata_table_spec.h $(BUILD_DIR)/compress_ranges.txt: $(BUILD_DIR)/$(SPEC) +$(BUILD_DIR)/dmadata_table_spec.h $(BUILD_DIR)/compress_ranges.txt: $(BUILD_DIR)/spec $(MKDMADATA) $< $(BUILD_DIR)/dmadata_table_spec.h $(BUILD_DIR)/compress_ranges.txt # Dependencies for files that may include the dmadata header automatically generated from the spec file @@ -957,29 +975,37 @@ ifneq ($(RUN_CC_CHECK),0) endif $(CC) -c $(CFLAGS) $(MIPS_VERSION) $(OPTFLAGS) -o $(@:.o=.tmp) $< $(LD) -r -T linker_scripts/data_with_rodata.ld -o $@ $(@:.o=.tmp) + $(PYTHON) tools/patch_data_with_rodata_mdebug.py $@ @$(OBJDUMP) $(OBJDUMP_FLAGS) $@ > $(@:.o=.s) -$(BUILD_DIR)/src/overlays/%_reloc.o: $(BUILD_DIR)/$(SPEC) +ifeq ($(PLATFORM),IQUE) +ifneq ($(NON_MATCHING),1) +$(BUILD_DIR)/src/overlays/misc/ovl_kaleido_scope/ovl_kaleido_scope_reloc.o: POSTPROCESS_OBJ := $(PYTHON) tools/patch_ique_kaleido_reloc.py +endif +endif + +$(BUILD_DIR)/src/overlays/%_reloc.o: $(BUILD_DIR)/spec $(FADO) $$(tools/reloc_prereq $< $(notdir $*)) -n $(notdir $*) -o $(@:.o=.s) -M $(@:.o=.d) + $(POSTPROCESS_OBJ) $(@:.o=.s) $(AS) $(ASFLAGS) $(@:.o=.s) -o $@ $(BUILD_DIR)/assets/%.inc.c: assets/%.png - $(ZAPD) btex -eh -tt $(subst .,,$(suffix $*)) -i $< -o $@ + $(N64TEXCONV) $(subst .,,$(suffix $*)) "$(findstring u32,$(subst .,,$(suffix $(basename $*))))" $< $@ $(@:.inc.c=.pal.inc.c) $(BUILD_DIR)/assets/%.inc.c: $(EXTRACTED_DIR)/assets/%.png - $(ZAPD) btex -eh -tt $(subst .,,$(suffix $*)) -i $< -o $@ + $(N64TEXCONV) $(subst .,,$(suffix $*)) "$(findstring u32,$(subst .,,$(suffix $(basename $*))))" $< $@ $(@:.inc.c=.pal.inc.c) $(BUILD_DIR)/assets/%.bin.inc.c: assets/%.bin - $(ZAPD) bblb -eh -i $< -o $@ + $(BIN2C) -t 1 $< $@ $(BUILD_DIR)/assets/%.bin.inc.c: $(EXTRACTED_DIR)/assets/%.bin - $(ZAPD) bblb -eh -i $< -o $@ + $(BIN2C) -t 1 $< $@ $(BUILD_DIR)/assets/%.jpg.inc.c: assets/%.jpg - $(ZAPD) bren -eh -i $< -o $@ + $(N64TEXCONV) JFIF "" $< $@ $(BUILD_DIR)/assets/%.jpg.inc.c: $(EXTRACTED_DIR)/assets/%.jpg - $(ZAPD) bren -eh -i $< -o $@ + $(N64TEXCONV) JFIF "" $< $@ # Audio @@ -1115,6 +1141,7 @@ ifneq ($(RUN_CC_CHECK),0) endif $(CC) -c $(CFLAGS) $(MIPS_VERSION) $(OPTFLAGS) -o $(@:.o=.tmp) $< $(LD) -r -T linker_scripts/data_with_rodata.ld $(@:.o=.tmp) -o $@ + $(PYTHON) tools/patch_data_with_rodata_mdebug.py $@ @$(RM) $(@:.o=.tmp) $(BUILD_DIR)/assets/audio/sequence_font_table.o: $(BUILD_DIR)/assets/audio/sequence_font_table.s diff --git a/README.md b/README.md index ff255f32db..4ba7d2c3d8 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,7 @@ It builds the following versions: | gc-eu | 03-02-21 20:12:23 | GameCube Europe/PAL | `2c27b4e000e85fd78dbca551f1b1c965` | | gc-eu-mq | 03-02-21 20:37:19 | GameCube Europe/PAL Master Quest | `1618403427e4344a57833043db5ce3c3` | | gc-jp-ce | 03-10-08 21:53:00 | GameCube Japan (Collector's Edition Disc) | `0c13e0449a28ea5b925cdb8af8d29768` | +| ique-cn | 03-10-22 16:23:19 | iQue Player (Simplified Chinese) | `0ab48b2d44a74b3bb2d384f6170c2742` | The default version is `gc-eu-mq-dbg`, i.e. the GameCube Europe/PAL Master Quest Debug ROM. diff --git a/assets/audio/sequences/seq_0.prg.seq b/assets/audio/sequences/seq_0.prg.seq index 602ed791c6..252711429c 100644 --- a/assets/audio/sequences/seq_0.prg.seq +++ b/assets/audio/sequences/seq_0.prg.seq @@ -1302,7 +1302,7 @@ CHAN_08EC: /* 0x08EE [0xC7 0x02 0x09 0x04 ] */ stseq 2, LAYER_0903 + STSEQ_NOTEDV_DELAY_HI /* 0x08F2 [0xC7 0x02 0x08 0xFD ] */ stseq 2, CHAN_08FC + STSEQ_LDI_IMM /* 0x08F6 [0xB8 0x0C ] */ rand 12 -/* 0x08F8 [0xC7 0x5C 0x09 0x03 ] */ stseq (NOTEDV_OPCODE | PITCH_DF3), LAYER_0903 + STSEQ_NOTEDV_OPCODE_PITCH +/* 0x08F8 [0xC7 0x5C 0x09 0x03 ] */ stseq (ASEQ_OP_LAYER_NOTEDV | PITCH_DF3), LAYER_0903 + STSEQ_NOTEDV_OPCODE_PITCH CHAN_08FC: /* 0x08FC [0xCC 0x01 ] */ ldi 1 /* 0x08FE [0xFC 0x00 0x48 ] */ call CHAN_0048 @@ -4978,7 +4978,7 @@ CHAN_2274: /* 0x2284 [0x56 ] */ subio IO_PORT_6 /* 0x2285 [0xC9 0x07 ] */ and 7 CHAN_2287: -/* 0x2287 [0xC7 0x60 0x22 0x98 ] */ stseq (NOTEDV_OPCODE | PITCH_F3), LAYER_2298 + STSEQ_NOTEDV_OPCODE_PITCH +/* 0x2287 [0xC7 0x60 0x22 0x98 ] */ stseq (ASEQ_OP_LAYER_NOTEDV | PITCH_F3), LAYER_2298 + STSEQ_NOTEDV_OPCODE_PITCH /* 0x228B [0x66 ] */ ldio IO_PORT_6 /* 0x228C [0xC8 0xFC ] */ sub 252 /* 0x228E [0xC9 0x04 ] */ and 4 @@ -6529,7 +6529,7 @@ LAYER_2C4E: .channel CHAN_2C54 /* 0x2C54 [0x89 0x2C 0x62 ] */ ldlayer 1, LAYER_2C62 -/* 0x2C57 [0xCC 0x58 ] */ ldi (NOTEDV_OPCODE | PITCH_A2) +/* 0x2C57 [0xCC 0x58 ] */ ldi (ASEQ_OP_LAYER_NOTEDV | PITCH_A2) /* 0x2C59 [0xC7 0x00 0x22 0x88 ] */ stseq 0, CHAN_2287 + STSEQ_STSEQ_IMM /* 0x2C5D [0xFB 0x22 0x67 ] */ jump CHAN_2267 @@ -6649,7 +6649,7 @@ CHAN_2D01: .channel CHAN_2D13 /* 0x2D13 [0x89 0x2D 0x25 ] */ ldlayer 1, LAYER_2D25 /* 0x2D16 [0x8A 0x2D 0x23 ] */ ldlayer 2, LAYER_2D23 -/* 0x2D19 [0xCC 0x66 ] */ ldi (NOTEDV_OPCODE | PITCH_B3) +/* 0x2D19 [0xCC 0x66 ] */ ldi (ASEQ_OP_LAYER_NOTEDV | PITCH_B3) /* 0x2D1B [0xC7 0x00 0x22 0x88 ] */ stseq 0, CHAN_2287 + STSEQ_STSEQ_IMM /* 0x2D1F [0xFB 0x22 0x67 ] */ jump CHAN_2267 /* 0x2D22 [0xFF ] */ end @@ -9201,7 +9201,7 @@ CHAN_4162: /* 0x4164 [0xC7 0x03 0x41 0x7A ] */ stseq 3, LAYER_4179 + STSEQ_NOTEDV_DELAY_HI /* 0x4168 [0xC7 0x03 0x41 0x73 ] */ stseq 3, CHAN_4172 + STSEQ_LDI_IMM /* 0x416C [0xB8 0x08 ] */ rand 8 -/* 0x416E [0xC7 0x5B 0x41 0x79 ] */ stseq (NOTEDV_OPCODE | PITCH_C3), LAYER_4179 + STSEQ_NOTEDV_OPCODE_PITCH +/* 0x416E [0xC7 0x5B 0x41 0x79 ] */ stseq (ASEQ_OP_LAYER_NOTEDV | PITCH_C3), LAYER_4179 + STSEQ_NOTEDV_OPCODE_PITCH CHAN_4172: /* 0x4172 [0xCC 0x01 ] */ ldi 1 /* 0x4174 [0xFC 0x00 0x48 ] */ call CHAN_0048 @@ -9763,7 +9763,7 @@ LAYER_4245: /* 0x44C9 [0x88 0x44 0xD7 ] */ ldlayer 0, LAYER_44D7 /* 0x44CC [0xED 0x14 ] */ gain 20 /* 0x44CE [0xB8 0x04 ] */ rand 4 -/* 0x44D0 [0xC7 0x6B 0x44 0xD7 ] */ stseq (NOTEDV_OPCODE | PITCH_E4), LAYER_44D7 + STSEQ_NOTEDV_OPCODE_PITCH +/* 0x44D0 [0xC7 0x6B 0x44 0xD7 ] */ stseq (ASEQ_OP_LAYER_NOTEDV | PITCH_E4), LAYER_44D7 + STSEQ_NOTEDV_OPCODE_PITCH /* 0x44D4 [0xD9 0xE8 ] */ releaserate 232 /* 0x44D6 [0xFF ] */ end @@ -10353,7 +10353,7 @@ LAYER_47B3: /* 0x4860 [0x88 0x48 0x70 ] */ ldlayer 0, LAYER_4870 CHAN_4863: /* 0x4863 [0xB8 0x04 ] */ rand 4 -/* 0x4865 [0xC7 0x60 0x48 0x70 ] */ stseq (NOTEDV_OPCODE | PITCH_F3), LAYER_4870 + STSEQ_NOTEDV_OPCODE_PITCH +/* 0x4865 [0xC7 0x60 0x48 0x70 ] */ stseq (ASEQ_OP_LAYER_NOTEDV | PITCH_F3), LAYER_4870 + STSEQ_NOTEDV_OPCODE_PITCH /* 0x4869 [0xCC 0x12 ] */ ldi 18 /* 0x486B [0xFC 0x00 0x48 ] */ call CHAN_0048 /* 0x486E [0xF4 0xF3 ] */ rjump CHAN_4863 @@ -12266,7 +12266,7 @@ LAYER_53FD: /* 0x5403 [0xC1 0x7E ] */ instr FONTANY_INSTR_SFX /* 0x5405 [0x64 ] */ ldio IO_PORT_SFX_INDEX_LOBITS /* 0x5406 [0xC8 0xB0 ] */ sub 176 -/* 0x5408 [0xC7 0x00 0x54 0x17 ] */ stseq (NOTEDVG_OPCODE | PITCH_A0), LAYER_5417 + STSEQ_NOTEDVG_OPCODE_PITCH +/* 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 /* 0x540F [0xC7 0x00 0x54 0x19 ] */ stseq 0, LAYER_5417 + STSEQ_NOTEDVG_DELAY_LO /* 0x5413 [0x88 0x54 0x17 ] */ ldlayer 0, LAYER_5417 @@ -12640,7 +12640,7 @@ CHAN_565E: /* 0x5660 [0xC7 0x28 0x56 0x76 ] */ stseq 40, LAYER_5675 + STSEQ_NOTEDV_DELAY_HI /* 0x5664 [0xC7 0x28 0x56 0x6F ] */ stseq 40, CHAN_566E + STSEQ_LDI_IMM /* 0x5668 [0xB8 0x06 ] */ rand 6 -/* 0x566A [0xC7 0x64 0x56 0x75 ] */ stseq (NOTEDV_OPCODE | PITCH_A3), LAYER_5675 + STSEQ_NOTEDV_OPCODE_PITCH +/* 0x566A [0xC7 0x64 0x56 0x75 ] */ stseq (ASEQ_OP_LAYER_NOTEDV | PITCH_A3), LAYER_5675 + STSEQ_NOTEDV_OPCODE_PITCH CHAN_566E: /* 0x566E [0xCC 0x01 ] */ ldi 1 /* 0x5670 [0xFC 0x00 0x48 ] */ call CHAN_0048 @@ -14045,7 +14045,7 @@ CHAN_6116: /* 0x6118 [0x3F 0x06 ] */ stcio 15, IO_PORT_6 CHAN_611A: /* 0x611A [0xCB 0x61 0x6D ] */ ldseq UNK_616D -/* 0x611D [0xC7 0x40 0x61 0x2D ] */ stseq (NOTEDV_OPCODE | PITCH_A0), LAYER_612D + STSEQ_NOTEDV_OPCODE_PITCH +/* 0x611D [0xC7 0x40 0x61 0x2D ] */ stseq (ASEQ_OP_LAYER_NOTEDV | PITCH_A0), LAYER_612D + STSEQ_NOTEDV_OPCODE_PITCH /* 0x6121 [0x66 ] */ ldio IO_PORT_6 CHAN_6122: /* 0x6122 [0xCB 0x61 0x71 ] */ ldseq UNK_6171 @@ -14079,8 +14079,8 @@ CHAN_613E: /* 0x6145 [0xCC 0x00 ] */ ldi 0 // Reads the byte at (PTR + 0) into TR (the note) /* 0x6147 [0xB6 ] */ dyntblv - // Store NOTEDV_OPCODE + TR into the pitch -/* 0x6148 [0xC7 0x40 0x61 0x2D ] */ stseq (NOTEDV_OPCODE | PITCH_A0), LAYER_612D + STSEQ_NOTEDV_OPCODE_PITCH + // 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 // Load 1 into TR /* 0x614C [0xCC 0x01 ] */ ldi 1 // Reads the byte at (PTR + 1) into TR (the velocity) @@ -14355,7 +14355,7 @@ UNK_62CC: /* 0x62D1 [0x76 ] */ stio IO_PORT_6 /* 0x62D2 [0xC9 0x01 ] */ and 1 /* 0x62D4 [0xCB 0x62 0xE8 ] */ ldseq UNK_62E8 -/* 0x62D7 [0xC7 0x40 0x64 0xBF ] */ stseq (NOTEDV_OPCODE | PITCH_A0), LAYER_64BF + STSEQ_NOTEDV_OPCODE_PITCH +/* 0x62D7 [0xC7 0x40 0x64 0xBF ] */ stseq (ASEQ_OP_LAYER_NOTEDV | PITCH_A0), LAYER_64BF + STSEQ_NOTEDV_OPCODE_PITCH /* 0x62DB [0xB8 0x02 ] */ rand 2 /* 0x62DD [0xCB 0x62 0xEA ] */ ldseq UNK_62EA /* 0x62E0 [0xC7 0x00 0x64 0xC1 ] */ stseq 0, LAYER_64BF + STSEQ_NOTEDV_VELOCITY_2 @@ -14482,7 +14482,7 @@ UNK_6374: /* 0x6379 [0x76 ] */ stio IO_PORT_6 /* 0x637A [0xC9 0x01 ] */ and 1 /* 0x637C [0xCB 0x63 0x96 ] */ ldseq UNK_6396 -/* 0x637F [0xC7 0x40 0x63 0x90 ] */ stseq (NOTEDV_OPCODE | PITCH_A0), LAYER_6390 + STSEQ_NOTEDV_OPCODE_PITCH +/* 0x637F [0xC7 0x40 0x63 0x90 ] */ stseq (ASEQ_OP_LAYER_NOTEDV | PITCH_A0), LAYER_6390 + STSEQ_NOTEDV_OPCODE_PITCH /* 0x6383 [0xB8 0x02 ] */ rand 2 /* 0x6385 [0xCB 0x63 0x98 ] */ ldseq UNK_6398 /* 0x6388 [0xC7 0x00 0x63 0x92 ] */ stseq 0, LAYER_6390 + STSEQ_NOTEDV_VELOCITY_2 @@ -14688,7 +14688,7 @@ UNK_6499: /* 0x64A8 [0x76 ] */ stio IO_PORT_6 /* 0x64A9 [0xC9 0x01 ] */ and 1 /* 0x64AB [0xCB 0x64 0xC5 ] */ ldseq UNK_64C5 -/* 0x64AE [0xC7 0x40 0x64 0xBF ] */ stseq (NOTEDV_OPCODE | PITCH_A0), LAYER_64BF + STSEQ_NOTEDV_OPCODE_PITCH +/* 0x64AE [0xC7 0x40 0x64 0xBF ] */ stseq (ASEQ_OP_LAYER_NOTEDV | PITCH_A0), LAYER_64BF + STSEQ_NOTEDV_OPCODE_PITCH /* 0x64B2 [0xB8 0x02 ] */ rand 2 /* 0x64B4 [0xCB 0x64 0xC7 ] */ ldseq UNK_64C7 /* 0x64B7 [0xC7 0x00 0x64 0xC1 ] */ stseq 0, LAYER_64BF + STSEQ_NOTEDV_VELOCITY_2 @@ -14785,7 +14785,7 @@ UNK_6511: .channel CHAN_6520 /* 0x6520 [0x64 ] */ ldio IO_PORT_SFX_INDEX_LOBITS /* 0x6521 [0xC8 0x50 ] */ sub 80 -/* 0x6523 [0xC7 0x19 0x65 0x36 ] */ stseq (NOTEDVG_OPCODE | PITCH_BF2), LAYER_6536 + STSEQ_NOTEDVG_OPCODE_PITCH +/* 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 /* 0x652A [0xC7 0x00 0x65 0x38 ] */ stseq 0, LAYER_6536 + STSEQ_NOTEDVG_DELAY_LO /* 0x652E [0x88 0x65 0x34 ] */ ldlayer 0, LAYER_6534 @@ -14806,7 +14806,7 @@ UNK_653B: .channel CHAN_6562 /* 0x6562 [0x64 ] */ ldio IO_PORT_SFX_INDEX_LOBITS /* 0x6563 [0xC8 0x77 ] */ sub 119 -/* 0x6565 [0xC7 0x00 0x65 0x76 ] */ stseq (NOTEDVG_OPCODE | PITCH_A0), LAYER_6576 + STSEQ_NOTEDVG_OPCODE_PITCH +/* 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 /* 0x656C [0xC7 0x00 0x65 0x78 ] */ stseq 0, LAYER_6576 + STSEQ_NOTEDVG_DELAY_LO /* 0x6570 [0x88 0x65 0x74 ] */ ldlayer 0, LAYER_6574 diff --git a/assets/audio/sequences/seq_1.prg.seq b/assets/audio/sequences/seq_1.prg.seq index 0babce8065..02994cf733 100644 --- a/assets/audio/sequences/seq_1.prg.seq +++ b/assets/audio/sequences/seq_1.prg.seq @@ -454,7 +454,7 @@ CHAN_0308: /* 0x0319 [0xC7 0x60 0x10 0x00 ] */ stseq 96, ENVELOPE_0FFA + STSEQ_ENVELOPE_POINT(3) CHAN_031D: /* 0x031D [0xB8 0x18 ] */ rand 24 -/* 0x031F [0xC7 0x62 0x03 0x6F ] */ stseq (NOTEDV_OPCODE | PITCH_G3), LAYER_036F + STSEQ_NOTEDV_OPCODE_PITCH +/* 0x031F [0xC7 0x62 0x03 0x6F ] */ stseq (ASEQ_OP_LAYER_NOTEDV | PITCH_G3), LAYER_036F + STSEQ_NOTEDV_OPCODE_PITCH /* 0x0323 [0xCC 0x40 ] */ ldi 64 /* 0x0325 [0x53 ] */ subio IO_PORT_3 /* 0x0326 [0xC7 0x00 0x03 0x2B ] */ stseq 0, STSEQ_HERE + STSEQ_RAND @@ -482,7 +482,7 @@ CHAN_0335: /* 0x034B [0xC8 0xFF ] */ sub 255 /* 0x034D [0xC7 0x64 0x03 0x87 ] */ stseq 100, LAYER_0385 + STSEQ_NOTEDV_VELOCITY_2 /* 0x0351 [0xC7 0x64 0x03 0x8A ] */ stseq 100, LAYER_0388 + STSEQ_NOTEDV_VELOCITY_2 -/* 0x0355 [0xC7 0x67 0x03 0x85 ] */ stseq (NOTEDV_OPCODE | PITCH_C4), LAYER_0385 + STSEQ_NOTEDV_OPCODE_PITCH +/* 0x0355 [0xC7 0x67 0x03 0x85 ] */ stseq (ASEQ_OP_LAYER_NOTEDV | PITCH_C4), LAYER_0385 + STSEQ_NOTEDV_OPCODE_PITCH /* 0x0359 [0xFF ] */ end UNK_035A: @@ -1664,7 +1664,7 @@ CHAN_0E72: /* 0x0E84 [0xB8 0x02 ] */ rand 2 /* 0x0E86 [0x73 ] */ stio IO_PORT_3 CHAN_0E87: -/* 0x0E87 [0xC7 0x67 0x0E 0xCF ] */ stseq (NOTEDV_OPCODE | PITCH_C4), LAYER_0ECF + STSEQ_NOTEDV_OPCODE_PITCH +/* 0x0E87 [0xC7 0x67 0x0E 0xCF ] */ stseq (ASEQ_OP_LAYER_NOTEDV | PITCH_C4), LAYER_0ECF + STSEQ_NOTEDV_OPCODE_PITCH /* 0x0E8B [0xB8 0x1E ] */ rand 30 /* 0x0E8D [0xC7 0x31 0x0E 0xCC ] */ stseq 49, LAYER_0ECB + STSEQ_NOTEPAN /* 0x0E91 [0x76 ] */ stio IO_PORT_6 diff --git a/assets/xml/objects/gameplay_field_keep.xml b/assets/xml/objects/gameplay_field_keep.xml index 011e8f7fc7..3c0f18d74e 100644 --- a/assets/xml/objects/gameplay_field_keep.xml +++ b/assets/xml/objects/gameplay_field_keep.xml @@ -29,7 +29,7 @@ - + diff --git a/assets/xml/objects/gameplay_keep.xml b/assets/xml/objects/gameplay_keep.xml index dcb7e29605..008497601a 100644 --- a/assets/xml/objects/gameplay_keep.xml +++ b/assets/xml/objects/gameplay_keep.xml @@ -759,7 +759,7 @@ - + @@ -848,7 +848,7 @@ - + diff --git a/assets/xml/objects/gameplay_keep_pal.xml b/assets/xml/objects/gameplay_keep_pal.xml index fbea0efd0c..c7485d73fd 100644 --- a/assets/xml/objects/gameplay_keep_pal.xml +++ b/assets/xml/objects/gameplay_keep_pal.xml @@ -753,7 +753,7 @@ - + @@ -843,7 +843,7 @@ - + diff --git a/assets/xml/objects/object_am.xml b/assets/xml/objects/object_am.xml index 0a4b88ddf8..2467baf6ab 100644 --- a/assets/xml/objects/object_am.xml +++ b/assets/xml/objects/object_am.xml @@ -5,5 +5,6 @@ + diff --git a/assets/xml/objects/object_ani.xml b/assets/xml/objects/object_ani.xml index 25ad7af354..d83aa7656a 100644 --- a/assets/xml/objects/object_ani.xml +++ b/assets/xml/objects/object_ani.xml @@ -51,6 +51,8 @@ + + diff --git a/assets/xml/objects/object_box.xml b/assets/xml/objects/object_box.xml index 34162fc94f..7ab9d9e7f4 100644 --- a/assets/xml/objects/object_box.xml +++ b/assets/xml/objects/object_box.xml @@ -5,7 +5,9 @@ + + @@ -19,11 +21,7 @@ - + - - - - diff --git a/assets/xml/objects/object_bv.xml b/assets/xml/objects/object_bv.xml index e2c2ce9202..5a8e6c594d 100644 --- a/assets/xml/objects/object_bv.xml +++ b/assets/xml/objects/object_bv.xml @@ -7,7 +7,7 @@ - + diff --git a/assets/xml/objects/object_bv_pal.xml b/assets/xml/objects/object_bv_pal.xml index 204273fc01..8de7492663 100644 --- a/assets/xml/objects/object_bv_pal.xml +++ b/assets/xml/objects/object_bv_pal.xml @@ -7,7 +7,7 @@ - + diff --git a/assets/xml/objects/object_door_killer.xml b/assets/xml/objects/object_door_killer.xml index a37f590d60..fbee0e5f70 100644 --- a/assets/xml/objects/object_door_killer.xml +++ b/assets/xml/objects/object_door_killer.xml @@ -12,6 +12,6 @@ - + diff --git a/assets/xml/objects/object_fd.xml b/assets/xml/objects/object_fd.xml index a28919d8e8..4a5ce9fafa 100644 --- a/assets/xml/objects/object_fd.xml +++ b/assets/xml/objects/object_fd.xml @@ -19,9 +19,10 @@ - - - + + + + diff --git a/assets/xml/objects/object_fd2.xml b/assets/xml/objects/object_fd2.xml index b3fbdcb216..8d2b3dcdb6 100644 --- a/assets/xml/objects/object_fd2.xml +++ b/assets/xml/objects/object_fd2.xml @@ -21,9 +21,10 @@ - - - + + + + diff --git a/assets/xml/objects/object_fd_pal.xml b/assets/xml/objects/object_fd_pal.xml index 776a2ee494..be375399f6 100644 --- a/assets/xml/objects/object_fd_pal.xml +++ b/assets/xml/objects/object_fd_pal.xml @@ -19,9 +19,10 @@ - - - + + + + diff --git a/assets/xml/objects/object_gi_medal.xml b/assets/xml/objects/object_gi_medal.xml index 28e5b1e683..d2cb6191d9 100644 --- a/assets/xml/objects/object_gi_medal.xml +++ b/assets/xml/objects/object_gi_medal.xml @@ -2,10 +2,25 @@ + + + + + + + + + + + + + + + diff --git a/assets/xml/objects/object_gla.xml b/assets/xml/objects/object_gla.xml index ca4d9225da..dbbfcb58ff 100644 --- a/assets/xml/objects/object_gla.xml +++ b/assets/xml/objects/object_gla.xml @@ -58,7 +58,7 @@ - + diff --git a/assets/xml/objects/object_gnd.xml b/assets/xml/objects/object_gnd.xml index 53d2bbde4c..d073b8b973 100644 --- a/assets/xml/objects/object_gnd.xml +++ b/assets/xml/objects/object_gnd.xml @@ -44,11 +44,11 @@ - - - - - + + + + + diff --git a/assets/xml/objects/object_hintnuts.xml b/assets/xml/objects/object_hintnuts.xml index f7da2e8f5c..d3595d85e8 100644 --- a/assets/xml/objects/object_hintnuts.xml +++ b/assets/xml/objects/object_hintnuts.xml @@ -1,7 +1,7 @@ - + diff --git a/assets/xml/objects/object_hni.xml b/assets/xml/objects/object_hni.xml index 6b317eb7a6..763f6892c0 100644 --- a/assets/xml/objects/object_hni.xml +++ b/assets/xml/objects/object_hni.xml @@ -16,7 +16,7 @@ - + diff --git a/assets/xml/objects/object_ik.xml b/assets/xml/objects/object_ik.xml index 5d86e1075a..50f47e9d7c 100644 --- a/assets/xml/objects/object_ik.xml +++ b/assets/xml/objects/object_ik.xml @@ -1,8 +1,8 @@  - - - + + + @@ -29,7 +29,10 @@ + + + diff --git a/assets/xml/objects/object_jya_obj.xml b/assets/xml/objects/object_jya_obj.xml index 4a203b0b92..50c2700db1 100644 --- a/assets/xml/objects/object_jya_obj.xml +++ b/assets/xml/objects/object_jya_obj.xml @@ -29,7 +29,7 @@ - + @@ -59,10 +59,10 @@ - + - - + + diff --git a/assets/xml/objects/object_kingdodongo.xml b/assets/xml/objects/object_kingdodongo.xml index 32c28766b2..3ada2822c9 100644 --- a/assets/xml/objects/object_kingdodongo.xml +++ b/assets/xml/objects/object_kingdodongo.xml @@ -101,7 +101,15 @@ - + + + + + + + + + diff --git a/assets/xml/objects/object_kingdodongo_pal.xml b/assets/xml/objects/object_kingdodongo_pal.xml index 1aa1735cbe..a0790a6db5 100644 --- a/assets/xml/objects/object_kingdodongo_pal.xml +++ b/assets/xml/objects/object_kingdodongo_pal.xml @@ -101,7 +101,15 @@ - + + + + + + + + + diff --git a/assets/xml/objects/object_lightbox.xml b/assets/xml/objects/object_lightbox.xml index 552a79d7c7..c67059b89d 100644 --- a/assets/xml/objects/object_lightbox.xml +++ b/assets/xml/objects/object_lightbox.xml @@ -1,12 +1,11 @@ - - - + + - + - + diff --git a/assets/xml/objects/object_link_boy.xml b/assets/xml/objects/object_link_boy.xml index c5e11f54ce..77254f5557 100644 --- a/assets/xml/objects/object_link_boy.xml +++ b/assets/xml/objects/object_link_boy.xml @@ -125,6 +125,14 @@ + + + + + + + + diff --git a/assets/xml/objects/object_link_child.xml b/assets/xml/objects/object_link_child.xml index 640228441a..36baf5aa6e 100644 --- a/assets/xml/objects/object_link_child.xml +++ b/assets/xml/objects/object_link_child.xml @@ -123,8 +123,9 @@ - - + + + @@ -175,11 +176,12 @@ + + - diff --git a/assets/xml/objects/object_mag_ique.xml b/assets/xml/objects/object_mag_ique.xml index 03b1a8b193..005fc2462d 100644 --- a/assets/xml/objects/object_mag_ique.xml +++ b/assets/xml/objects/object_mag_ique.xml @@ -1,8 +1,7 @@ - - + @@ -16,6 +15,6 @@ - + diff --git a/assets/xml/objects/object_medal.xml b/assets/xml/objects/object_medal.xml index 533872a551..eeb433c400 100644 --- a/assets/xml/objects/object_medal.xml +++ b/assets/xml/objects/object_medal.xml @@ -6,7 +6,7 @@ - + diff --git a/assets/xml/objects/object_mo.xml b/assets/xml/objects/object_mo.xml index 68035c3844..ad84a14026 100644 --- a/assets/xml/objects/object_mo.xml +++ b/assets/xml/objects/object_mo.xml @@ -74,9 +74,5 @@ - - - - diff --git a/assets/xml/objects/object_mo_pal.xml b/assets/xml/objects/object_mo_pal.xml index b191e8395e..17cd4fc2f4 100644 --- a/assets/xml/objects/object_mo_pal.xml +++ b/assets/xml/objects/object_mo_pal.xml @@ -74,9 +74,5 @@ - - - - diff --git a/assets/xml/objects/object_mori_tex.xml b/assets/xml/objects/object_mori_tex.xml index 79f1f0b4c0..756347bcc6 100644 --- a/assets/xml/objects/object_mori_tex.xml +++ b/assets/xml/objects/object_mori_tex.xml @@ -1,12 +1,12 @@ - + - + diff --git a/assets/xml/objects/object_oA3.xml b/assets/xml/objects/object_oA3.xml index a492bd8751..176ad09315 100644 --- a/assets/xml/objects/object_oA3.xml +++ b/assets/xml/objects/object_oA3.xml @@ -1,7 +1,6 @@ - - + diff --git a/assets/xml/objects/object_oE1.xml b/assets/xml/objects/object_oE1.xml index 4d5b1663fe..5b3234893e 100644 --- a/assets/xml/objects/object_oE1.xml +++ b/assets/xml/objects/object_oE1.xml @@ -56,7 +56,8 @@ - + + diff --git a/assets/xml/objects/object_oE11.xml b/assets/xml/objects/object_oE11.xml index 04f6f186da..26ff739cd0 100644 --- a/assets/xml/objects/object_oE11.xml +++ b/assets/xml/objects/object_oE11.xml @@ -3,7 +3,8 @@ - + + diff --git a/assets/xml/objects/object_oE12.xml b/assets/xml/objects/object_oE12.xml index a5fa39fd25..4b89954e0d 100644 --- a/assets/xml/objects/object_oE12.xml +++ b/assets/xml/objects/object_oE12.xml @@ -3,7 +3,8 @@ - + + diff --git a/assets/xml/objects/object_oE2.xml b/assets/xml/objects/object_oE2.xml index af62ad6d11..ea3ba91fc6 100644 --- a/assets/xml/objects/object_oE2.xml +++ b/assets/xml/objects/object_oE2.xml @@ -56,7 +56,8 @@ - + + diff --git a/assets/xml/objects/object_oE3.xml b/assets/xml/objects/object_oE3.xml index 95227da384..4a6cb3d926 100644 --- a/assets/xml/objects/object_oE3.xml +++ b/assets/xml/objects/object_oE3.xml @@ -56,13 +56,14 @@ - + + - + - + diff --git a/assets/xml/objects/object_oE5.xml b/assets/xml/objects/object_oE5.xml index 040fb8d733..c05917dc9a 100644 --- a/assets/xml/objects/object_oE5.xml +++ b/assets/xml/objects/object_oE5.xml @@ -52,9 +52,9 @@ - - - + + + diff --git a/assets/xml/objects/object_oE6.xml b/assets/xml/objects/object_oE6.xml index 95bb602b6b..d253130af1 100644 --- a/assets/xml/objects/object_oE6.xml +++ b/assets/xml/objects/object_oE6.xml @@ -3,7 +3,8 @@ - + + diff --git a/assets/xml/objects/object_oE7.xml b/assets/xml/objects/object_oE7.xml index b3e588d4c2..2b6b5cf316 100644 --- a/assets/xml/objects/object_oE7.xml +++ b/assets/xml/objects/object_oE7.xml @@ -7,7 +7,8 @@ - + + diff --git a/assets/xml/objects/object_oE8.xml b/assets/xml/objects/object_oE8.xml index be5de24947..8b1333fa9c 100644 --- a/assets/xml/objects/object_oE8.xml +++ b/assets/xml/objects/object_oE8.xml @@ -3,7 +3,8 @@ - + + diff --git a/assets/xml/objects/object_oE9.xml b/assets/xml/objects/object_oE9.xml index 8ea7ee18c7..e43cee426b 100644 --- a/assets/xml/objects/object_oE9.xml +++ b/assets/xml/objects/object_oE9.xml @@ -3,7 +3,8 @@ - + + diff --git a/assets/xml/objects/object_ossan.xml b/assets/xml/objects/object_ossan.xml index 963053f3f4..7e51c33bce 100644 --- a/assets/xml/objects/object_ossan.xml +++ b/assets/xml/objects/object_ossan.xml @@ -1,6 +1,9 @@ + + + diff --git a/assets/xml/objects/object_rl.xml b/assets/xml/objects/object_rl.xml index bbe0246ac8..8453935b1f 100644 --- a/assets/xml/objects/object_rl.xml +++ b/assets/xml/objects/object_rl.xml @@ -12,8 +12,6 @@ - - @@ -22,13 +20,12 @@ - - + diff --git a/assets/xml/objects/object_sa.xml b/assets/xml/objects/object_sa.xml index 8a63840409..e87cd793dd 100644 --- a/assets/xml/objects/object_sa.xml +++ b/assets/xml/objects/object_sa.xml @@ -66,7 +66,7 @@ - + diff --git a/assets/xml/objects/object_sb.xml b/assets/xml/objects/object_sb.xml index 64d3bb005a..3adf2c17ee 100644 --- a/assets/xml/objects/object_sb.xml +++ b/assets/xml/objects/object_sb.xml @@ -4,8 +4,9 @@ - - + + + diff --git a/assets/xml/objects/object_skb.xml b/assets/xml/objects/object_skb.xml index 5b5efb4848..1220ddf6d9 100644 --- a/assets/xml/objects/object_skb.xml +++ b/assets/xml/objects/object_skb.xml @@ -55,10 +55,15 @@ - - - - + + + + + + + + + diff --git a/assets/xml/objects/object_skj.xml b/assets/xml/objects/object_skj.xml index 38636256fe..958301d2e8 100644 --- a/assets/xml/objects/object_skj.xml +++ b/assets/xml/objects/object_skj.xml @@ -41,27 +41,25 @@ + + + + + + + - - - - - - - - - diff --git a/assets/xml/objects/object_spot02_objects.xml b/assets/xml/objects/object_spot02_objects.xml index 65f45ff515..3dfaf227d3 100644 --- a/assets/xml/objects/object_spot02_objects.xml +++ b/assets/xml/objects/object_spot02_objects.xml @@ -3,7 +3,6 @@ - diff --git a/assets/xml/objects/object_spot17_obj.xml b/assets/xml/objects/object_spot17_obj.xml index d4239d8d28..73a4ca5203 100644 --- a/assets/xml/objects/object_spot17_obj.xml +++ b/assets/xml/objects/object_spot17_obj.xml @@ -7,6 +7,6 @@ - + diff --git a/assets/xml/objects/object_st.xml b/assets/xml/objects/object_st.xml index 983b9e2eab..9556f081d0 100644 --- a/assets/xml/objects/object_st.xml +++ b/assets/xml/objects/object_st.xml @@ -22,7 +22,9 @@ - + + + diff --git a/assets/xml/objects/object_ta.xml b/assets/xml/objects/object_ta.xml index 5e446bf5c9..4f339fc951 100644 --- a/assets/xml/objects/object_ta.xml +++ b/assets/xml/objects/object_ta.xml @@ -66,7 +66,6 @@ - - + diff --git a/assets/xml/objects/object_tk.xml b/assets/xml/objects/object_tk.xml index 5b2fd13806..5c9d0a0a6f 100644 --- a/assets/xml/objects/object_tk.xml +++ b/assets/xml/objects/object_tk.xml @@ -4,10 +4,12 @@ + - + + diff --git a/assets/xml/objects/object_toki_objects.xml b/assets/xml/objects/object_toki_objects.xml index cd07e60d2b..3cada31f89 100644 --- a/assets/xml/objects/object_toki_objects.xml +++ b/assets/xml/objects/object_toki_objects.xml @@ -12,7 +12,8 @@ - + + diff --git a/assets/xml/objects/object_tr.xml b/assets/xml/objects/object_tr.xml index 986a88cc5c..827b85bfe6 100644 --- a/assets/xml/objects/object_tr.xml +++ b/assets/xml/objects/object_tr.xml @@ -9,7 +9,9 @@ - + + + @@ -97,7 +99,9 @@ - + + + diff --git a/assets/xml/objects/object_tw.xml b/assets/xml/objects/object_tw.xml index c6b9ec6099..c528fb4518 100644 --- a/assets/xml/objects/object_tw.xml +++ b/assets/xml/objects/object_tw.xml @@ -106,9 +106,11 @@ - - + + + + @@ -130,9 +132,11 @@ - - + + + + diff --git a/assets/xml/objects/object_wf.xml b/assets/xml/objects/object_wf.xml index 96ea841032..d5d70639d7 100644 --- a/assets/xml/objects/object_wf.xml +++ b/assets/xml/objects/object_wf.xml @@ -122,6 +122,7 @@ + diff --git a/assets/xml/objects/object_wood02.xml b/assets/xml/objects/object_wood02.xml index 5dd80a17b6..bdcc2d2e38 100644 --- a/assets/xml/objects/object_wood02.xml +++ b/assets/xml/objects/object_wood02.xml @@ -20,7 +20,7 @@ - + diff --git a/assets/xml/objects/object_zl2.xml b/assets/xml/objects/object_zl2.xml index 9af0a65270..2503b811d3 100644 --- a/assets/xml/objects/object_zl2.xml +++ b/assets/xml/objects/object_zl2.xml @@ -38,5 +38,7 @@ + + diff --git a/assets/xml/objects/object_zl4.xml b/assets/xml/objects/object_zl4.xml index e87a654656..99cc12ea2a 100644 --- a/assets/xml/objects/object_zl4.xml +++ b/assets/xml/objects/object_zl4.xml @@ -39,19 +39,21 @@ - - - - + + + + + - - - - - - - + + + + + + + + diff --git a/assets/xml/overlays/ovl_En_Mag_ique.xml b/assets/xml/overlays/ovl_En_Mag_ique.xml new file mode 100644 index 0000000000..bd239b7f0c --- /dev/null +++ b/assets/xml/overlays/ovl_En_Mag_ique.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/xml/scenes/dungeons/ddan.xml b/assets/xml/scenes/dungeons/ddan.xml index a42e97cfc9..d78f8dabee 100644 --- a/assets/xml/scenes/dungeons/ddan.xml +++ b/assets/xml/scenes/dungeons/ddan.xml @@ -1,5 +1,6 @@ + diff --git a/assets/xml/scenes/dungeons/ddan_mq.xml b/assets/xml/scenes/dungeons/ddan_mq.xml index a42e97cfc9..d78f8dabee 100644 --- a/assets/xml/scenes/dungeons/ddan_mq.xml +++ b/assets/xml/scenes/dungeons/ddan_mq.xml @@ -1,5 +1,6 @@ + diff --git a/assets/xml/scenes/dungeons/ganon_boss.xml b/assets/xml/scenes/dungeons/ganon_boss.xml index c75914c29c..7c28b472d6 100644 --- a/assets/xml/scenes/dungeons/ganon_boss.xml +++ b/assets/xml/scenes/dungeons/ganon_boss.xml @@ -1,6 +1,9 @@ + + + diff --git a/assets/xml/scenes/indoors/tokinoma.xml b/assets/xml/scenes/indoors/tokinoma.xml index 4d83fe3908..fb62d9c2cc 100644 --- a/assets/xml/scenes/indoors/tokinoma.xml +++ b/assets/xml/scenes/indoors/tokinoma.xml @@ -1,5 +1,6 @@ + @@ -12,7 +13,6 @@ - diff --git a/assets/xml/scenes/indoors/tokinoma_pal_n64.xml b/assets/xml/scenes/indoors/tokinoma_pal_n64.xml index eb98a321af..9c0a970998 100644 --- a/assets/xml/scenes/indoors/tokinoma_pal_n64.xml +++ b/assets/xml/scenes/indoors/tokinoma_pal_n64.xml @@ -1,5 +1,6 @@ + diff --git a/assets/xml/scenes/overworld/spot20.xml b/assets/xml/scenes/overworld/spot20.xml index 3d305508ad..d3dd77a41e 100644 --- a/assets/xml/scenes/overworld/spot20.xml +++ b/assets/xml/scenes/overworld/spot20.xml @@ -1,5 +1,6 @@ + diff --git a/assets/xml/scenes/overworld/spot20_pal.xml b/assets/xml/scenes/overworld/spot20_pal.xml index 0ba9380e13..297b1c316e 100644 --- a/assets/xml/scenes/overworld/spot20_pal.xml +++ b/assets/xml/scenes/overworld/spot20_pal.xml @@ -1,5 +1,6 @@ + diff --git a/assets/xml/textures/map_48x85_static.xml b/assets/xml/textures/map_48x85_static.xml index 2788498a84..b8795bd07d 100644 --- a/assets/xml/textures/map_48x85_static.xml +++ b/assets/xml/textures/map_48x85_static.xml @@ -1,72 +1,74 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/xml/textures/parameter_static_ique.xml b/assets/xml/textures/parameter_static_ique.xml new file mode 100644 index 0000000000..98449e6746 --- /dev/null +++ b/assets/xml/textures/parameter_static_ique.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/baseroms/gc-eu-mq-dbg/config.yml b/baseroms/gc-eu-mq-dbg/config.yml index 09abaaf67a..44bbdae424 100644 --- a/baseroms/gc-eu-mq-dbg/config.yml +++ b/baseroms/gc-eu-mq-dbg/config.yml @@ -50,7 +50,7 @@ incbins: vram: 0x80157D30 size: 0x60 variables: - gMtxClear: 0x8012DB20 + gIdentityMtx: 0x8012DB20 sNesMessageEntryTable: 0x8014B320 sGerMessageEntryTable: 0x8014F548 sFraMessageEntryTable: 0x80151658 diff --git a/baseroms/gc-eu-mq/config.yml b/baseroms/gc-eu-mq/config.yml index 62925ab3b4..e42e48c75f 100644 --- a/baseroms/gc-eu-mq/config.yml +++ b/baseroms/gc-eu-mq/config.yml @@ -42,7 +42,7 @@ incbins: vram: 0x801130D0 size: 0x60 variables: - gMtxClear: 0x800FBC00 + gIdentityMtx: 0x800FBC00 sNesMessageEntryTable: 0x801077F0 sGerMessageEntryTable: 0x8010BA18 sFraMessageEntryTable: 0x8010DB28 diff --git a/baseroms/gc-eu/config.yml b/baseroms/gc-eu/config.yml index 278badfb80..b6471875f7 100644 --- a/baseroms/gc-eu/config.yml +++ b/baseroms/gc-eu/config.yml @@ -42,7 +42,7 @@ incbins: vram: 0x801130F0 size: 0x60 variables: - gMtxClear: 0x800FBC20 + gIdentityMtx: 0x800FBC20 sNesMessageEntryTable: 0x80107810 sGerMessageEntryTable: 0x8010BA38 sFraMessageEntryTable: 0x8010DB48 diff --git a/baseroms/gc-jp-ce/config.yml b/baseroms/gc-jp-ce/config.yml index f73344d892..a4592544ff 100644 --- a/baseroms/gc-jp-ce/config.yml +++ b/baseroms/gc-jp-ce/config.yml @@ -42,7 +42,7 @@ incbins: vram: 0x801158E0 size: 0x60 variables: - gMtxClear: 0x800FE2A0 + gIdentityMtx: 0x800FE2A0 sJpnMessageEntryTable: 0x80109E8C sNesMessageEntryTable: 0x8010DFCC sStaffMessageEntryTable: 0x801121EC diff --git a/baseroms/gc-jp-mq/config.yml b/baseroms/gc-jp-mq/config.yml index 81927277bd..597e2cff66 100644 --- a/baseroms/gc-jp-mq/config.yml +++ b/baseroms/gc-jp-mq/config.yml @@ -42,7 +42,7 @@ incbins: vram: 0x801158E0 size: 0x60 variables: - gMtxClear: 0x800FE2A0 + gIdentityMtx: 0x800FE2A0 sJpnMessageEntryTable: 0x80109E8C sNesMessageEntryTable: 0x8010DFCC sStaffMessageEntryTable: 0x801121EC diff --git a/baseroms/gc-jp/config.yml b/baseroms/gc-jp/config.yml index 26e407d8c4..582fd894eb 100644 --- a/baseroms/gc-jp/config.yml +++ b/baseroms/gc-jp/config.yml @@ -42,7 +42,7 @@ incbins: vram: 0x80115900 size: 0x60 variables: - gMtxClear: 0x800FE2C0 + gIdentityMtx: 0x800FE2C0 sJpnMessageEntryTable: 0x80109EAC sNesMessageEntryTable: 0x8010DFEC sStaffMessageEntryTable: 0x8011220C diff --git a/baseroms/gc-us-mq/config.yml b/baseroms/gc-us-mq/config.yml index 77f12ba8bd..691aaa1ff9 100644 --- a/baseroms/gc-us-mq/config.yml +++ b/baseroms/gc-us-mq/config.yml @@ -42,7 +42,7 @@ incbins: vram: 0x801158C0 size: 0x60 variables: - gMtxClear: 0x800FE280 + gIdentityMtx: 0x800FE280 sJpnMessageEntryTable: 0x80109E6C sNesMessageEntryTable: 0x8010DFAC sStaffMessageEntryTable: 0x801121CC diff --git a/baseroms/gc-us/config.yml b/baseroms/gc-us/config.yml index c53cd1841a..9a64c84646 100644 --- a/baseroms/gc-us/config.yml +++ b/baseroms/gc-us/config.yml @@ -42,7 +42,7 @@ incbins: vram: 0x801158E0 size: 0x60 variables: - gMtxClear: 0x800FE2A0 + gIdentityMtx: 0x800FE2A0 sJpnMessageEntryTable: 0x80109E8C sNesMessageEntryTable: 0x8010DFCC sStaffMessageEntryTable: 0x801121EC diff --git a/baseroms/ique-cn/bss-order.txt b/baseroms/ique-cn/bss-order.txt new file mode 100644 index 0000000000..3bc7f2237e --- /dev/null +++ b/baseroms/ique-cn/bss-order.txt @@ -0,0 +1,110 @@ +// Specification for linker plugin COMMON symbol order for the ique-cn version + +build/ique-cn/boot_bss_1.o { + bk; + __osBaseCounter; + __osBbRCountWraps; + __osBbLastRCount; + __osViIntrCount; + insize; + outcnt; + bb; + __osCurrentTime; + hufts; + __osBbLastVCount; + __osTimerCounter; + __osBbVCountWraps; + __osFinalrom; + inptr; + ifd; +} + +build/ique-cn/boot_bss_boot_main.o { + sBootThreadInfo; + sIdleThread; + sIdleThreadStack; + sIdleThreadInfo; + sBootThreadStack; +} + +build/ique-cn/boot_bss_idle.o { + sMainThread; + sMainStack; + sMainStackInfo; + sPiMgrCmdBuff; +} + +build/ique-cn/boot_bss_viconfig.o { + gViConfigMode; + gViConfigModeType; +} + +build/ique-cn/boot_bss_z_std_dma.o { + sDmaMgrStackInfo; + sDmaMgrMsgQueue; + sDmaMgrMsgBuf; + sDmaMgrThread; + sDmaMgrStack; +} + +build/ique-cn/boot_bss_2.o { + __osThreadSave; + __Dom2SpeedParam; + __CartRomHandle; + __osPiAccessQueue; + __Dom1SpeedParam; + gPiMgrCmdQueue; + __osBaseTimer; + __osEventStateTab; +} + + + +build/ique-cn/code_bss_1.o { + D_8015FA8C; + __osMaxControllers; + D_8015FA88; + __osContLastCmd; + __osEepromTimerMsg; +} + +build/ique-cn/code_bss_z_actor.o { + D_8015BBA8; + sCurCeilingPoly; + sCurCeilingBgId; + D_8015BC00; + D_8015BC10; + D_8015BC14; + D_8015BC18; + sNearestAttentionActor; + sPrioritizedAttentionActor; + sNearestAttentionActorDistSq; + sBgmEnemyDistSq; + sHighestAttentionPriority; + sAttentionPlayerRotY; +} + +build/ique-cn/code_bss_2.o { + __osContPifRam; + gSaveContext; + sUnknownBssPadding; + __osEepromTimerMsgQueue; + __osSiAccessQueue; +} + +build/ique-cn/code_bss_3.o { + sCharTexSize; + sCharTexScale; + sOcarinaButtonAPrimR; + sOcarinaButtonAPrimB; + sOcarinaButtonAPrimG; + sOcarinaButtonAEnvR; + sOcarinaButtonAEnvB; + sOcarinaButtonAEnvG; + sOcarinaButtonCPrimR; + sOcarinaButtonCPrimB; + sOcarinaButtonCPrimG; + sOcarinaButtonCEnvR; + sOcarinaButtonCEnvB; + sOcarinaButtonCEnvG; +} diff --git a/baseroms/ique-cn/checksum.md5 b/baseroms/ique-cn/checksum.md5 index 82dfff85bf..6390fc95b9 100644 --- a/baseroms/ique-cn/checksum.md5 +++ b/baseroms/ique-cn/checksum.md5 @@ -1 +1 @@ -17a9f30d722c29e6912bd4b66713d2b0 build/ique-cn/oot-ique-cn.z64 +0238288a8e7c53b558b818865daf6ef3 build/ique-cn/oot-ique-cn.z64 diff --git a/baseroms/ique-cn/config.yml b/baseroms/ique-cn/config.yml index 86bceb7339..af570e0f0a 100644 --- a/baseroms/ique-cn/config.yml +++ b/baseroms/ique-cn/config.yml @@ -42,7 +42,7 @@ incbins: vram: 0x80121EE0 size: 0x60 variables: - gMtxClear: 0x80106980 + gIdentityMtx: 0x80106980 sJpnMessageEntryTable: 0x80115838 sNesMessageEntryTable: 0x80119978 sStaffMessageEntryTable: 0x8011DB98 @@ -902,6 +902,10 @@ assets: xml_path: assets/xml/overlays/ovl_En_Kanban.xml start_offset: 0x2E70 end_offset: 0x2F30 +- name: overlays/ovl_En_Mag + xml_path: assets/xml/overlays/ovl_En_Mag_ique.xml + start_offset: 0x2D8C + end_offset: 0x2E0C - name: overlays/ovl_En_Sda xml_path: assets/xml/overlays/ovl_En_Sda.xml start_offset: 0x1498 @@ -924,8 +928,8 @@ assets: end_offset: 0x59D0 - name: overlays/ovl_file_choose xml_path: assets/xml/overlays/ovl_file_choose.xml - start_offset: 0xEC40 - end_offset: 0xF320 + start_offset: 0xF6E0 + end_offset: 0xFDC0 - name: overlays/ovl_Magic_Dark xml_path: assets/xml/overlays/ovl_Magic_Dark.xml start_offset: 0xC90 @@ -1203,7 +1207,7 @@ assets: - name: textures/nintendo_rogo_static xml_path: assets/xml/textures/nintendo_rogo_static_v2.xml - name: textures/parameter_static - xml_path: assets/xml/textures/parameter_static.xml + xml_path: assets/xml/textures/parameter_static_ique.xml - name: textures/place_title_cards xml_path: assets/xml/textures/place_title_cards.xml - name: textures/skyboxes diff --git a/baseroms/ntsc-1.0/config.yml b/baseroms/ntsc-1.0/config.yml index 2bdf99411a..667845d383 100644 --- a/baseroms/ntsc-1.0/config.yml +++ b/baseroms/ntsc-1.0/config.yml @@ -45,7 +45,7 @@ incbins: vram: 0x80114D70 size: 0x60 variables: - gMtxClear: 0x800FEDB0 + gIdentityMtx: 0x800FEDB0 sJpnMessageEntryTable: 0x8010A94C sNesMessageEntryTable: 0x8010EA8C sStaffMessageEntryTable: 0x80112CAC diff --git a/baseroms/ntsc-1.1/config.yml b/baseroms/ntsc-1.1/config.yml index 1b110a84c8..66e74a17a4 100644 --- a/baseroms/ntsc-1.1/config.yml +++ b/baseroms/ntsc-1.1/config.yml @@ -45,7 +45,7 @@ incbins: vram: 0x80114F30 size: 0x60 variables: - gMtxClear: 0x800FEF70 + gIdentityMtx: 0x800FEF70 sJpnMessageEntryTable: 0x8010AB0C sNesMessageEntryTable: 0x8010EC4C sStaffMessageEntryTable: 0x80112E6C diff --git a/baseroms/ntsc-1.2/config.yml b/baseroms/ntsc-1.2/config.yml index a631ca5511..4b3b33db46 100644 --- a/baseroms/ntsc-1.2/config.yml +++ b/baseroms/ntsc-1.2/config.yml @@ -45,7 +45,7 @@ incbins: vram: 0x80115420 size: 0x60 variables: - gMtxClear: 0x800FF3F0 + gIdentityMtx: 0x800FF3F0 sJpnMessageEntryTable: 0x8010AFFC sNesMessageEntryTable: 0x8010F13C sStaffMessageEntryTable: 0x8011335C diff --git a/baseroms/pal-1.0/config.yml b/baseroms/pal-1.0/config.yml index a8ea60b79d..782e4ce152 100644 --- a/baseroms/pal-1.0/config.yml +++ b/baseroms/pal-1.0/config.yml @@ -50,7 +50,7 @@ incbins: vram: 0x80112B70 size: 0x60 variables: - gMtxClear: 0x800FCD00 + gIdentityMtx: 0x800FCD00 sNesMessageEntryTable: 0x801088BC sGerMessageEntryTable: 0x8010CAE4 sFraMessageEntryTable: 0x8010EBF4 diff --git a/baseroms/pal-1.1/config.yml b/baseroms/pal-1.1/config.yml index 4811f1cb93..c7f278dfe2 100644 --- a/baseroms/pal-1.1/config.yml +++ b/baseroms/pal-1.1/config.yml @@ -50,7 +50,7 @@ incbins: vram: 0x80112BB0 size: 0x60 variables: - gMtxClear: 0x800FCD40 + gIdentityMtx: 0x800FCD40 sNesMessageEntryTable: 0x801088FC sGerMessageEntryTable: 0x8010CB24 sFraMessageEntryTable: 0x8010EC34 diff --git a/docs/c_cpp_properties.json b/docs/c_cpp_properties.json index c3e94325c2..276e67bd1c 100644 --- a/docs/c_cpp_properties.json +++ b/docs/c_cpp_properties.json @@ -19,6 +19,7 @@ "OOT_REGION=REGION_JP", "PLATFORM_N64=1", "PLATFORM_GC=0", + "PLATFORM_IQUE=0", "DEBUG_FEATURES=0", "NDEBUG", "F3DEX_GBI_2" @@ -44,6 +45,7 @@ "OOT_REGION=REGION_JP", "PLATFORM_N64=0", "PLATFORM_GC=1", + "PLATFORM_IQUE=0", "DEBUG_FEATURES=0", "NDEBUG", "F3DEX_GBI_2", @@ -71,6 +73,7 @@ "OOT_REGION=REGION_JP", "PLATFORM_N64=0", "PLATFORM_GC=1", + "PLATFORM_IQUE=0", "DEBUG_FEATURES=0", "NDEBUG", "F3DEX_GBI_2", @@ -98,6 +101,7 @@ "OOT_REGION=REGION_US", "PLATFORM_N64=0", "PLATFORM_GC=1", + "PLATFORM_IQUE=0", "DEBUG_FEATURES=0", "NDEBUG", "F3DEX_GBI_2", @@ -125,6 +129,7 @@ "OOT_REGION=REGION_US", "PLATFORM_N64=0", "PLATFORM_GC=1", + "PLATFORM_IQUE=0", "DEBUG_FEATURES=0", "NDEBUG", "F3DEX_GBI_2", @@ -152,6 +157,7 @@ "OOT_REGION=REGION_EU", "PLATFORM_N64=0", "PLATFORM_GC=1", + "PLATFORM_IQUE=0", "DEBUG_FEATURES=1", "F3DEX_GBI_2", "F3DEX_GBI_PL", @@ -179,6 +185,7 @@ "OOT_REGION=REGION_EU", "PLATFORM_N64=0", "PLATFORM_GC=1", + "PLATFORM_IQUE=0", "DEBUG_FEATURES=0", "NDEBUG", "F3DEX_GBI_2", @@ -206,6 +213,7 @@ "OOT_REGION=REGION_EU", "PLATFORM_N64=0", "PLATFORM_GC=1", + "PLATFORM_IQUE=0", "DEBUG_FEATURES=0", "NDEBUG", "F3DEX_GBI_2", @@ -233,6 +241,7 @@ "OOT_REGION=REGION_JP", "PLATFORM_N64=0", "PLATFORM_GC=1", + "PLATFORM_IQUE=0", "DEBUG_FEATURES=0", "NDEBUG", "F3DEX_GBI_2", @@ -241,6 +250,35 @@ ], "cStandard": "gnu89" }, + { + "name": "oot-ique-cn", + "compilerArgs": [ + "-m32" + ], + "includePath": [ + "include", + "include/libc", + "src", + "build/ique-cn", + ".", + "extracted/ique-cn" + ], + "defines": [ + "_LANGUAGE_C", + "OOT_VERSION=IQUE_CN", + "OOT_REGION=REGION_US", + "PLATFORM_N64=0", + "PLATFORM_GC=0", + "PLATFORM_IQUE=1", + "BBPLAYER", + "DEBUG_FEATURES=0", + "NDEBUG", + "F3DEX_GBI_2", + "F3DEX_GBI_PL", + "GBI_DOWHILE" + ], + "cStandard": "gnu89" + } ], "version": 4 } diff --git a/docs/compilers.md b/docs/compilers.md new file mode 100644 index 0000000000..120aaf43c6 --- /dev/null +++ b/docs/compilers.md @@ -0,0 +1,63 @@ +# Compilers + +Ocarina of Time was written mostly in C, compiled to MIPS machine code. For the +N64 and GameCube versions, all code was compiled with the IDO compiler. For the +iQue Player versions, some of the code (namely libultra, and some game files +such as those related to Chinese text) was compiled with the EGCS compiler instead. + +## IDO + +Ocarina of Time was originally developed on +[Silicon Graphics "Indy"](https://en.wikipedia.org/wiki/SGI_Indy) workstations, +and IDO (IRIS Development Option) was the C compiler toolchain that shipped with +these. Two different versions of IDO were used for Ocarina of Time: IDO 5.3 was +used for some libraries (namely libultra, libleo, and the JPEG library) while +IDO 7.1 was used for the other libraries and all of the "main" game code. + +These Silicon Graphics workstations ran the MIPS-based IRIX operating system, so +the original compiler binaries can't run on modern systems. Originally this +project used [qemu-irix](https://github.com/n64decomp/qemu-irix) (now +unmaintained) to run emulate IRIX on modern systems, but nowadays we use the +more lightweight +[ido-static-recomp](https://github.com/decompals/ido-static-recomp) instead. + +## EGCS + +[EGCS (Experimental/Enhanced GNU Compiler System)](https://en.wikipedia.org/wiki/GNU_Compiler_Collection#EGCS_fork) +was a fork of the GCC compiler. The Linux-based iQue SDK included a patched +version of EGCS release 1.1.2. The original compiler can still run on modern Linux +systems, but we use a +[modified version](https://github.com/decompals/mips-gcc-egcs-2.91.66) +that includes Mac support and a few other minor improvements (such as anonymous +struct/union support). + +This version of the EGCS compiler has a bug where code that indexes into an array member can +fail to compile if the array member is at a large (>= 0x8000) offset in a struct. For +example, when run on the source code + +```c +struct Foo { + char a[0x8000]; + int b[1]; +}; + +int test(struct Foo* foo, int i) { + return foo->b[i]; +} +``` + +the compiler errors with + +``` +Compiler error: src.c: In function `test': +src.c:8: internal error--unrecognizable insn: +(insn 20 18 22 (set (reg:SI 85) + (plus:SI (reg:SI 81) + (const_int 32768))) -1 (nil) + (nil)) +../../gcc/toplev.c:1367: Internal compiler error in function fatal_insn +``` + +In some recompiled files, the game developers had to modify the code to work +around this bug, for example by storing a pointer to the array in a temporary +variable before indexing into it. diff --git a/format.py b/format.py index a5faa79c97..f95885344e 100755 --- a/format.py +++ b/format.py @@ -97,8 +97,7 @@ def run_clang_apply_replacements(tmp_dir: str): def cleanup_whitespace(file: str): """ - Remove whitespace at the end of lines, - ensure the file ends with an empty line. + Remove whitespace at the end of lines, and ensure all lines end with a newline. """ file_p = Path(file) contents = file_p.read_text(encoding="UTF-8") @@ -108,7 +107,7 @@ def cleanup_whitespace(file: str): if n_subst != 0: modified = True - if not contents.endswith("\n"): + if contents and not contents.endswith("\n"): contents += "\n" modified = True diff --git a/include/audio/aseq.h b/include/audio/aseq.h index 689c42664f..ce14abfa22 100644 --- a/include/audio/aseq.h +++ b/include/audio/aseq.h @@ -52,7 +52,18 @@ #ifndef ASEQ_H #define ASEQ_H -#include "versions.h" +/** + * MML Version + */ + +#ifndef MML_VERSION + #error "MML version not defined, define MML_VERSION in the cpp invocation" +#endif + +#define MML_VERSION_OOT 0 +#define MML_VERSION_MM 1 + + /** * IO Ports @@ -220,21 +231,190 @@ #define FONTANY_INSTR_ASM_NOISE 136 - -#ifdef _LANGUAGE_ASEQ - /** - * MML Version + * Command Opcode IDs */ -#ifndef MML_VERSION - #error "MML version not defined, define MML_VERSION in the cpp invocation" +// control flow commands +#define ASEQ_OP_CONTROL_FLOW_FIRST 0xF2 +#define ASEQ_OP_RBLTZ 0xF2 +#define ASEQ_OP_RBEQZ 0xF3 +#define ASEQ_OP_RJUMP 0xF4 +#define ASEQ_OP_BGEZ 0xF5 +#define ASEQ_OP_BREAK 0xF6 +#define ASEQ_OP_LOOPEND 0xF7 +#define ASEQ_OP_LOOP 0xF8 +#define ASEQ_OP_BLTZ 0xF9 +#define ASEQ_OP_BEQZ 0xFA +#define ASEQ_OP_JUMP 0xFB +#define ASEQ_OP_CALL 0xFC +#define ASEQ_OP_DELAY 0xFD +#define ASEQ_OP_DELAY1 0xFE +#define ASEQ_OP_END 0xFF + +// sequence commands +#define ASEQ_OP_SEQ_TESTCHAN 0x00 // low nibble used as argument +#define ASEQ_OP_SEQ_STOPCHAN 0x40 // low nibble used as argument +#define ASEQ_OP_SEQ_SUBIO 0x50 // low nibble used as argument +#define ASEQ_OP_SEQ_LDRES 0x60 // low nibble used as argument +#define ASEQ_OP_SEQ_STIO 0x70 // low nibble used as argument +#define ASEQ_OP_SEQ_LDIO 0x80 // low nibble used as argument +#define ASEQ_OP_SEQ_LDCHAN 0x90 // low nibble used as argument +#define ASEQ_OP_SEQ_RLDCHAN 0xA0 // low nibble used as argument +#define ASEQ_OP_SEQ_LDSEQ 0xB0 // low nibble used as argument +#if (MML_VERSION == MML_VERSION_MM) +#define ASEQ_OP_SEQ_C2 0xC2 +#define ASEQ_OP_SEQ_C3 0xC3 +#endif +#define ASEQ_OP_SEQ_RUNSEQ 0xC4 +#define ASEQ_OP_SEQ_SCRIPTCTR 0xC5 +#define ASEQ_OP_SEQ_STOP 0xC6 +#define ASEQ_OP_SEQ_STSEQ 0xC7 +#define ASEQ_OP_SEQ_SUB 0xC8 +#define ASEQ_OP_SEQ_AND 0xC9 +#define ASEQ_OP_SEQ_LDI 0xCC +#define ASEQ_OP_SEQ_DYNCALL 0xCD +#define ASEQ_OP_SEQ_RAND 0xCE +#define ASEQ_OP_SEQ_NOTEALLOC 0xD0 +#define ASEQ_OP_SEQ_LDSHORTGATEARR 0xD1 +#define ASEQ_OP_SEQ_LDSHORTVELARR 0xD2 +#define ASEQ_OP_SEQ_MUTEBHV 0xD3 +#define ASEQ_OP_SEQ_MUTE 0xD4 +#define ASEQ_OP_SEQ_MUTESCALE 0xD5 +#define ASEQ_OP_SEQ_FREECHAN 0xD6 +#define ASEQ_OP_SEQ_INITCHAN 0xD7 +#define ASEQ_OP_SEQ_VOLSCALE 0xD9 +#define ASEQ_OP_SEQ_VOLMODE 0xDA +#define ASEQ_OP_SEQ_VOL 0xDB +#define ASEQ_OP_SEQ_TEMPOCHG 0xDC +#define ASEQ_OP_SEQ_TEMPO 0xDD +#define ASEQ_OP_SEQ_RTRANSPOSE 0xDE +#define ASEQ_OP_SEQ_TRANSPOSE 0xDF +#define ASEQ_OP_SEQ_EF 0xEF +#define ASEQ_OP_SEQ_FREENOTELIST 0xF0 +#define ASEQ_OP_SEQ_ALLOCNOTELIST 0xF1 + +// channel commands +#define ASEQ_OP_CHAN_CDELAY 0x00 // low nibble used as argument +#define ASEQ_OP_CHAN_LDSAMPLE 0x10 // low nibble used as argument +#define ASEQ_OP_CHAN_LDCHAN 0x20 // low nibble used as argument +#define ASEQ_OP_CHAN_STCIO 0x30 // low nibble used as argument +#define ASEQ_OP_CHAN_LDCIO 0x40 // low nibble used as argument +#define ASEQ_OP_CHAN_SUBIO 0x50 // low nibble used as argument +#define ASEQ_OP_CHAN_LDIO 0x60 // low nibble used as argument +#define ASEQ_OP_CHAN_STIO 0x70 // lower 3 bits used as argument +#define ASEQ_OP_CHAN_RLDLAYER 0x78 // lower 3 bits used as argument +#define ASEQ_OP_CHAN_TESTLAYER 0x80 // lower 3 bits used as argument +#define ASEQ_OP_CHAN_LDLAYER 0x88 // lower 3 bits used as argument +#define ASEQ_OP_CHAN_DELLAYER 0x90 // lower 3 bits used as argument +#define ASEQ_OP_CHAN_DYNLDLAYER 0x98 // lower 3 bits used as argument +#if (MML_VERSION == MML_VERSION_MM) +#define ASEQ_OP_CHAN_A0 0xA0 +#define ASEQ_OP_CHAN_A1 0xA1 +#define ASEQ_OP_CHAN_A2 0xA2 +#define ASEQ_OP_CHAN_A3 0xA3 +#define ASEQ_OP_CHAN_A4 0xA4 +#define ASEQ_OP_CHAN_A5 0xA5 +#define ASEQ_OP_CHAN_A6 0xA6 +#define ASEQ_OP_CHAN_A7 0xA7 +#define ASEQ_OP_CHAN_RANDPTR 0xA8 +#endif +#define ASEQ_OP_CHAN_LDFILTER 0xB0 +#define ASEQ_OP_CHAN_FREEFILTER 0xB1 +#define ASEQ_OP_CHAN_LDSEQTOPTR 0xB2 +#define ASEQ_OP_CHAN_FILTER 0xB3 +#define ASEQ_OP_CHAN_PTRTODYNTBL 0xB4 +#define ASEQ_OP_CHAN_DYNTBLTOPTR 0xB5 +#define ASEQ_OP_CHAN_DYNTBLV 0xB6 +#define ASEQ_OP_CHAN_RANDTOPTR 0xB7 +#define ASEQ_OP_CHAN_RAND 0xB8 +#define ASEQ_OP_CHAN_RANDVEL 0xB9 +#define ASEQ_OP_CHAN_RANDGATE 0xBA +#define ASEQ_OP_CHAN_COMBFILTER 0xBB +#define ASEQ_OP_CHAN_PTRADD 0xBC +#if (MML_VERSION == MML_VERSION_OOT) +#define ASEQ_OP_CHAN_RANDPTR 0xBD +#endif +#if (MML_VERSION == MML_VERSION_MM) +#define ASEQ_OP_CHAN_SAMPLESTART 0xBD +#define ASEQ_OP_CHAN_UNK_BE 0xBE +#endif +#define ASEQ_OP_CHAN_INSTR 0xC1 +#define ASEQ_OP_CHAN_DYNTBL 0xC2 +#define ASEQ_OP_CHAN_SHORT 0xC3 +#define ASEQ_OP_CHAN_NOSHORT 0xC4 +#define ASEQ_OP_CHAN_DYNTBLLOOKUP 0xC5 +#define ASEQ_OP_CHAN_FONT 0xC6 +#define ASEQ_OP_CHAN_STSEQ 0xC7 +#define ASEQ_OP_CHAN_SUB 0xC8 +#define ASEQ_OP_CHAN_AND 0xC9 +#define ASEQ_OP_CHAN_MUTEBHV 0xCA +#define ASEQ_OP_CHAN_LDSEQ 0xCB +#define ASEQ_OP_CHAN_LDI 0xCC +#define ASEQ_OP_CHAN_STOPCHAN 0xCD +#define ASEQ_OP_CHAN_LDPTR 0xCE +#define ASEQ_OP_CHAN_STPTRTOSEQ 0xCF +#define ASEQ_OP_CHAN_EFFECTS 0xD0 +#define ASEQ_OP_CHAN_NOTEALLOC 0xD1 +#define ASEQ_OP_CHAN_SUSTAIN 0xD2 +#define ASEQ_OP_CHAN_BEND 0xD3 +#define ASEQ_OP_CHAN_REVERB 0xD4 +#define ASEQ_OP_CHAN_VIBFREQ 0xD7 +#define ASEQ_OP_CHAN_VIBDEPTH 0xD8 +#define ASEQ_OP_CHAN_RELEASERATE 0xD9 +#define ASEQ_OP_CHAN_ENV 0xDA +#define ASEQ_OP_CHAN_TRANSPOSE 0xDB +#define ASEQ_OP_CHAN_PANWEIGHT 0xDC +#define ASEQ_OP_CHAN_PAN 0xDD +#define ASEQ_OP_CHAN_FREQSCALE 0xDE +#define ASEQ_OP_CHAN_VOL 0xDF +#define ASEQ_OP_CHAN_VOLEXP 0xE0 +#define ASEQ_OP_CHAN_VIBFREQGRAD 0xE1 +#define ASEQ_OP_CHAN_VIBDEPTHGRAD 0xE2 +#define ASEQ_OP_CHAN_VIBDELAY 0xE3 +#define ASEQ_OP_CHAN_DYNCALL 0xE4 +#define ASEQ_OP_CHAN_REVERBIDX 0xE5 +#define ASEQ_OP_CHAN_SAMPLEBOOK 0xE6 +#define ASEQ_OP_CHAN_LDPARAMS 0xE7 +#define ASEQ_OP_CHAN_PARAMS 0xE8 +#define ASEQ_OP_CHAN_NOTEPRI 0xE9 +#define ASEQ_OP_CHAN_STOP 0xEA +#define ASEQ_OP_CHAN_FONTINSTR 0xEB +#define ASEQ_OP_CHAN_VIBRESET 0xEC +#define ASEQ_OP_CHAN_GAIN 0xED +#define ASEQ_OP_CHAN_BENDFINE 0xEE +#define ASEQ_OP_CHAN_FREENOTELIST 0xF0 +#define ASEQ_OP_CHAN_ALLOCNOTELIST 0xF1 + +// layer commands +#define ASEQ_OP_LAYER_NOTEDVG 0x00 +#define ASEQ_OP_LAYER_NOTEDV 0x40 +#define ASEQ_OP_LAYER_NOTEVG 0x80 +#define ASEQ_OP_LAYER_LDELAY 0xC0 +#define ASEQ_OP_LAYER_SHORTVEL 0xC1 +#define ASEQ_OP_LAYER_TRANSPOSE 0xC2 +#define ASEQ_OP_LAYER_SHORTDELAY 0xC3 +#define ASEQ_OP_LAYER_LEGATO 0xC4 +#define ASEQ_OP_LAYER_NOLEGATO 0xC5 +#define ASEQ_OP_LAYER_INSTR 0xC6 +#define ASEQ_OP_LAYER_PORTAMENTO 0xC7 +#define ASEQ_OP_LAYER_NOPORTAMENTO 0xC8 +#define ASEQ_OP_LAYER_SHORTGATE 0xC9 +#define ASEQ_OP_LAYER_NOTEPAN 0xCA +#define ASEQ_OP_LAYER_ENV 0xCB +#define ASEQ_OP_LAYER_NODRUMPAN 0xCC +#define ASEQ_OP_LAYER_STEREO 0xCD +#define ASEQ_OP_LAYER_BENDFINE 0xCE +#define ASEQ_OP_LAYER_RELEASERATE 0xCF +#define ASEQ_OP_LAYER_LDSHORTVEL 0xD0 // low nibble used as an argument +#define ASEQ_OP_LAYER_LDSHORTGATE 0xE0 // low nibble used as an argument +#if (MML_VERSION == MML_VERSION_MM) +#define ASEQ_OP_LAYER_F0 0xF0 +#define ASEQ_OP_LAYER_F1 0xF1 #endif -#define MML_VERSION_OOT 0 -#define MML_VERSION_MM 1 - +#ifdef _LANGUAGE_ASEQ /** * IDENT @@ -391,7 +571,7 @@ _RESET_SECTION /* `ldseq` changes structure based on current section. */ .purgem ldseq .macro ldseq ioPortNum, seqId, label - _wr_cmd_id ldseq, 0xB0,,,,,,,, \ioPortNum, 4 + _wr_cmd_id ldseq, ASEQ_OP_SEQ_LDSEQ,,,,,,,, \ioPortNum, 4 _wr_u8 \seqId _wr_lbl \label .endm @@ -409,7 +589,7 @@ _RESET_SECTION /* `ldseq` changes structure based on current section. */ .purgem ldseq .macro ldseq label - _wr_cmd_id ldseq, ,0xCB,,,,,,, 0, 0 + _wr_cmd_id ldseq, ,ASEQ_OP_CHAN_LDSEQ,,,,,,, 0, 0 _wr_lbl \label .endm @@ -419,14 +599,14 @@ _RESET_SECTION _check_arg_bitwidth_u \lowpassCutoff, 4 _check_arg_bitwidth_u \highpassCutoff, 4 - _wr_cmd_id filter, ,0xB3,,,,,,, 0, 0 + _wr_cmd_id filter, ,ASEQ_OP_CHAN_FILTER,,,,,,, 0, 0 _wr_u8 (\lowpassCutoff << 4) | (\highpassCutoff) .endm /* `env` changes structure based on current section. */ .purgem env .macro env label - _wr_cmd_id env, ,0xDA,,,,,,, 0, 0 + _wr_cmd_id env, ,ASEQ_OP_CHAN_ENV,,,,,,, 0, 0 _wr_lbl \label .endm @@ -443,7 +623,7 @@ _RESET_SECTION /* `env` changes structure based on current section. */ .purgem env .macro env label, arg - _wr_cmd_id env, ,,0xCB,,,,,, 0, 0 + _wr_cmd_id env, ,,ASEQ_OP_LAYER_ENV,,,,,, 0, 0 _wr_lbl \label _wr_u8 \arg .endm @@ -734,7 +914,7 @@ $reladdr\@: * closed, so are its layers. */ .macro end - _wr_cmd_id end, 0xFF,0xFF,0xFF,,,,,, 0, 0 + _wr_cmd_id end, ASEQ_OP_END,ASEQ_OP_END,ASEQ_OP_END,,,,,, 0, 0 .endm /** @@ -743,7 +923,7 @@ $reladdr\@: * Delays for one tick. */ .macro delay1 - _wr_cmd_id delay1, 0xFE,0xFE,,,,,,, 0, 0 + _wr_cmd_id delay1, ASEQ_OP_DELAY1,ASEQ_OP_DELAY1,,,,,,, 0, 0 .endm /** @@ -752,7 +932,7 @@ $reladdr\@: * Delays for `delay` ticks. */ .macro delay delay - _wr_cmd_id delay, 0xFD,0xFD,,,,,,, 0, 0 + _wr_cmd_id delay, ASEQ_OP_DELAY,ASEQ_OP_DELAY,,,,,,, 0, 0 _var \delay .endm @@ -763,7 +943,7 @@ $reladdr\@: * subroutine encounters an `end` instruction. */ .macro call label - _wr_cmd_id call, 0xFC,0xFC,0xFC,,,,,, 0, 0 + _wr_cmd_id call, ASEQ_OP_CALL,ASEQ_OP_CALL,ASEQ_OP_CALL,,,,,, 0, 0 _wr_lbl \label .endm @@ -773,7 +953,7 @@ $reladdr\@: * Branches to `label` unconditionally. */ .macro jump label - _wr_cmd_id jump, 0xFB,0xFB,0xFB,,,,,, 0, 0 + _wr_cmd_id jump, ASEQ_OP_JUMP,ASEQ_OP_JUMP,ASEQ_OP_JUMP,,,,,, 0, 0 _wr_lbl \label .endm @@ -783,7 +963,7 @@ $reladdr\@: * Branches to `label` if TR == 0. */ .macro beqz label - _wr_cmd_id beqz, 0xFA,0xFA,0xFA,,,,,, 0, 0 + _wr_cmd_id beqz, ASEQ_OP_BEQZ,ASEQ_OP_BEQZ,ASEQ_OP_BEQZ,,,,,, 0, 0 _wr_lbl \label .endm @@ -793,7 +973,7 @@ $reladdr\@: * Branches to `label` if TR < 0. */ .macro bltz label - _wr_cmd_id beqz, 0xF9,0xF9,0xF9,,,,,, 0, 0 + _wr_cmd_id beqz, ASEQ_OP_BLTZ,ASEQ_OP_BLTZ,ASEQ_OP_BLTZ,,,,,, 0, 0 _wr_lbl \label .endm @@ -807,7 +987,7 @@ $reladdr\@: * becomes full. */ .macro loop num - _wr_cmd_id loop, 0xF8,0xF8,0xF8,,,,,, 0, 0 + _wr_cmd_id loop, ASEQ_OP_LOOP,ASEQ_OP_LOOP,ASEQ_OP_LOOP,,,,,, 0, 0 _wr_u8 \num .endm @@ -821,7 +1001,7 @@ $reladdr\@: * stack is popped. */ .macro loopend - _wr_cmd_id loopend, 0xF7,0xF7,0xF7,,,,,, 0, 0 + _wr_cmd_id loopend, ASEQ_OP_LOOPEND,ASEQ_OP_LOOPEND,ASEQ_OP_LOOPEND,,,,,, 0, 0 .endm /** @@ -834,7 +1014,7 @@ $reladdr\@: * the call stack would be popped twice. */ .macro break - _wr_cmd_id break, 0xF6,0xF6,0xF6,,,,,, 0, 0 + _wr_cmd_id break, ASEQ_OP_BREAK,ASEQ_OP_BREAK,ASEQ_OP_BREAK,,,,,, 0, 0 .endm /** @@ -843,7 +1023,7 @@ $reladdr\@: * Branches to `label` if TR >= 0. */ .macro bgez label - _wr_cmd_id bgez, 0xF5,0xF5,0xF5,,,,,, 0, 0 + _wr_cmd_id bgez, ASEQ_OP_BGEZ,ASEQ_OP_BGEZ,ASEQ_OP_BGEZ,,,,,, 0, 0 _wr_lbl \label .endm @@ -857,7 +1037,7 @@ $reladdr\@: * signed 8-bit (+/-128) range are reachable. */ .macro rjump label - _wr_cmd_id rjump, 0xF4,0xF4,0xF4,,,,,, 0, 0 + _wr_cmd_id rjump, ASEQ_OP_RJUMP,ASEQ_OP_RJUMP,ASEQ_OP_RJUMP,,,,,, 0, 0 _wr_8_rel \label .endm @@ -871,7 +1051,7 @@ $reladdr\@: * signed 8-bit (+/-128) range are reachable. */ .macro rbeqz label - _wr_cmd_id rbeqz, 0xF3,0xF3,0xF3,,,,,, 0, 0 + _wr_cmd_id rbeqz, ASEQ_OP_RBEQZ,ASEQ_OP_RBEQZ,ASEQ_OP_RBEQZ,,,,,, 0, 0 _wr_8_rel \label .endm @@ -885,7 +1065,7 @@ $reladdr\@: * signed 8-bit (+/-128) range are reachable. */ .macro rbltz label - _wr_cmd_id rbltz, 0xF2,0xF2,0xF2,,,,,, 0, 0 + _wr_cmd_id rbltz, ASEQ_OP_RBLTZ,ASEQ_OP_RBLTZ,ASEQ_OP_RBLTZ,,,,,, 0, 0 _wr_8_rel \label .endm @@ -895,7 +1075,7 @@ $reladdr\@: * Clears the channel note pool and reallocates it with space for `num` notes. */ .macro allocnotelist num - _wr_cmd_id allocnotelist, 0xF1,0xF1,,,,,,, 0, 0 + _wr_cmd_id allocnotelist, ASEQ_OP_SEQ_ALLOCNOTELIST,ASEQ_OP_CHAN_ALLOCNOTELIST,,,,,,, 0, 0 _wr_u8 \num .endm @@ -905,7 +1085,7 @@ $reladdr\@: * Clears the channel note pool. */ .macro freenotelist - _wr_cmd_id freenotelist, 0xF0,0xF0,,,,,,, 0, 0 + _wr_cmd_id freenotelist, ASEQ_OP_SEQ_FREENOTELIST,ASEQ_OP_CHAN_FREENOTELIST,,,,,,, 0, 0 .endm /** @@ -914,7 +1094,7 @@ $reladdr\@: * Has no function. */ .macro unk_EF arg1, arg2 - _wr_cmd_id unk_EF, 0xEF,,,,,,,, 0, 0 + _wr_cmd_id unk_EF, ASEQ_OP_SEQ_EF,,,,,,,, 0, 0 _wr_s16 \arg1 _w_u8 \arg2 .endm @@ -925,7 +1105,7 @@ $reladdr\@: * Fine-tunes the pitch bend amount for the channel or layer. */ .macro bendfine amt - _wr_cmd_id bendfine, ,0xEE,0xCE,,,,,, 0, 0 + _wr_cmd_id bendfine, ,ASEQ_OP_CHAN_BENDFINE,ASEQ_OP_LAYER_BENDFINE,,,,,, 0, 0 _wr_s8 \amt .endm @@ -935,7 +1115,7 @@ $reladdr\@: * Sets the channel gain (multiplicative volume scale factor) to the provided qu4.4 fixed-point value. */ .macro gain value - _wr_cmd_id gain, ,0xED,,,,,,, 0, 0 + _wr_cmd_id gain, ,ASEQ_OP_CHAN_GAIN,,,,,,, 0, 0 _wr_u8 \value .endm @@ -945,7 +1125,7 @@ $reladdr\@: * Resets channel vibrato, filter, gain, sustain, etc. state. */ .macro vibreset - _wr_cmd_id vibreset, ,0xEC,,,,,,, 0, 0 + _wr_cmd_id vibreset, ,ASEQ_OP_CHAN_VIBRESET,,,,,,, 0, 0 .endm /** @@ -954,7 +1134,7 @@ $reladdr\@: * Updates the soundfont and instrument for the channel simultaneously. */ .macro fontinstr fontId, instId - _wr_cmd_id fontinstr, ,0xEB,,,,,,, 0, 0 + _wr_cmd_id fontinstr, ,ASEQ_OP_CHAN_FONTINSTR,,,,,,, 0, 0 _wr_u8 \fontId _wr_u8 \instId .endm @@ -967,7 +1147,7 @@ $reladdr\@: .macro notepri priority1, priority2 _check_arg_bitwidth_u \priority1, 4 _check_arg_bitwidth_u \priority2, 4 - _wr_cmd_id notepri, ,0xE9,,,,,,, 0, 0 + _wr_cmd_id notepri, ,ASEQ_OP_CHAN_NOTEPRI,,,,,,, 0, 0 _wr_u8 (\priority1 << 4) | \priority2 .endm @@ -978,7 +1158,7 @@ $reladdr\@: * Sets various channel parameters. */ .macro params muteBhv, noteAllocPolicy, channelPriority, transposition, pan, panWeight, reverb, reverbIndex - _wr_cmd_id params, ,0xE8,,,,,,, 0, 0 + _wr_cmd_id params, ,ASEQ_OP_CHAN_PARAMS,,,,,,, 0, 0 _wr_u8 \muteBhv _wr_u8 \noteAllocPolicy _wr_u8 \channelPriority @@ -996,7 +1176,7 @@ $reladdr\@: * is ordered in the same way as the arguments in `params`. */ .macro ldparams label - _wr_cmd_id ldparams, ,0xE7,,,,,,, 0, 0 + _wr_cmd_id ldparams, ,ASEQ_OP_CHAN_LDPARAMS,,,,,,, 0, 0 _wr_lbl \label .endm @@ -1006,7 +1186,7 @@ $reladdr\@: * Sets the sample book mode. */ .macro samplebook value - _wr_cmd_id samplebook, ,0xE6,,,,,,, 0, 0 + _wr_cmd_id samplebook, ,ASEQ_OP_CHAN_SAMPLEBOOK,,,,,,, 0, 0 _wr_u8 \value .endm @@ -1016,7 +1196,7 @@ $reladdr\@: * Sets the channel reverb. */ .macro reverbidx arg - _wr_cmd_id reverbidx, ,0xE5,,,,,,, 0, 0 + _wr_cmd_id reverbidx, ,ASEQ_OP_CHAN_REVERBIDX,,,,,,, 0, 0 _wr_u8 \arg .endm @@ -1026,7 +1206,7 @@ $reladdr\@: * Sets the channel vibrato delay. */ .macro vibdelay arg - _wr_cmd_id vibdelay, ,0xE3,,,,,,, 0, 0 + _wr_cmd_id vibdelay, ,ASEQ_OP_CHAN_VIBDELAY,,,,,,, 0, 0 _wr_u8 \arg .endm @@ -1036,7 +1216,7 @@ $reladdr\@: * Sets the vibrato extent. */ .macro vibdepthgrad arg0, arg1, arg2 - _wr_cmd_id vibdepthgrad, ,0xE2,,,,,,, 0, 0 + _wr_cmd_id vibdepthgrad, ,ASEQ_OP_CHAN_VIBDEPTHGRAD,,,,,,, 0, 0 _wr_u8 \arg0 _wr_u8 \arg1 _wr_u8 \arg2 @@ -1048,7 +1228,7 @@ $reladdr\@: * Sets the vibrato rate. */ .macro vibfreqgrad arg0, arg1, arg2 - _wr_cmd_id vibfreqgrad, ,0xE1,,,,,,, 0, 0 + _wr_cmd_id vibfreqgrad, ,ASEQ_OP_CHAN_VIBFREQGRAD,,,,,,, 0, 0 _wr_u8 \arg0 _wr_u8 \arg1 _wr_u8 \arg2 @@ -1060,7 +1240,7 @@ $reladdr\@: * Changes the expression amount for the channel. */ .macro volexp amt - _wr_cmd_id volexp, ,0xE0,,,,,,, 0, 0 + _wr_cmd_id volexp, ,ASEQ_OP_CHAN_VOLEXP,,,,,,, 0, 0 _wr_u8 \amt .endm @@ -1071,7 +1251,7 @@ $reladdr\@: * provided number of semitones. */ .macro transpose semitones - _wr_cmd_id transpose, 0xDF,0xDB,0xC2,,,,,, 0, 0 + _wr_cmd_id transpose, ASEQ_OP_SEQ_TRANSPOSE,ASEQ_OP_CHAN_TRANSPOSE,ASEQ_OP_LAYER_TRANSPOSE,,,,,, 0, 0 _wr_s8 \semitones .endm @@ -1081,7 +1261,7 @@ $reladdr\@: * Adjusts the transposition amount. This is only available at the top sequence level. */ .macro rtranspose semitones - _wr_cmd_id rtranspose, 0xDE,,,,,,,, 0, 0 + _wr_cmd_id rtranspose, ASEQ_OP_SEQ_RTRANSPOSE,,,,,,,, 0, 0 _wr_s8 \semitones .endm @@ -1091,7 +1271,7 @@ $reladdr\@: * Sets the freqScale for the current channel. */ .macro freqscale arg - _wr_cmd_id freqscale, ,0xDE,,,,,,, 0, 0 + _wr_cmd_id freqscale, ,ASEQ_OP_CHAN_FREQSCALE,,,,,,, 0, 0 _wr_s16 \arg .endm @@ -1101,7 +1281,7 @@ $reladdr\@: * Changes the tempo of the sequence. */ .macro tempo bpm - _wr_cmd_id tempo, 0xDD,,,,,,,, 0, 0 + _wr_cmd_id tempo, ASEQ_OP_SEQ_TEMPO,,,,,,,, 0, 0 _wr_u8 \bpm .endm @@ -1111,7 +1291,7 @@ $reladdr\@: * Sets the tempoChange for the sequence. */ .macro tempochg arg - _wr_cmd_id tempochg, 0xDC,,,,,,,, 0, 0 + _wr_cmd_id tempochg, ASEQ_OP_SEQ_TEMPOCHG,,,,,,,, 0, 0 _wr_s8 \arg .endm @@ -1123,7 +1303,7 @@ $reladdr\@: .macro pan pan /* pan can only take values in 0..127 */ _check_arg_bitwidth_u \pan, 7 - _wr_cmd_id pan, ,0xDD,,,,,,, 0, 0 + _wr_cmd_id pan, ,ASEQ_OP_CHAN_PAN,,,,,,, 0, 0 _wr_u8 \pan .endm @@ -1139,7 +1319,7 @@ $reladdr\@: .macro panweight weight /* weight can only take values in 0..127 */ _check_arg_bitwidth_u \weight, 7 - _wr_cmd_id panweight, ,0xDC,,,,,,, 0, 0 + _wr_cmd_id panweight, ,ASEQ_OP_CHAN_PANWEIGHT,,,,,,, 0, 0 _wr_u8 \weight .endm @@ -1149,7 +1329,7 @@ $reladdr\@: * Sets the volume amount for this sequence or channel. */ .macro vol amt - _wr_cmd_id vol, 0xDB,0xDF,,,,,,, 0, 0 + _wr_cmd_id vol, ASEQ_OP_SEQ_VOL,ASEQ_OP_CHAN_VOL,,,,,,, 0, 0 _wr_u8 \amt .endm @@ -1159,7 +1339,7 @@ $reladdr\@: * TODO DESCRIPTION */ .macro volmode mode, fadeTimer - _wr_cmd_id volmode, 0xDA,,,,,,,, 0, 0 + _wr_cmd_id volmode, ASEQ_OP_SEQ_VOLMODE,,,,,,,, 0, 0 _wr_u8 \mode _wr_u16 \fadeTimer .endm @@ -1170,7 +1350,7 @@ $reladdr\@: * Sets the fadeVolumeScale for the sequence. */ .macro volscale arg - _wr_cmd_id volscale, 0xD9,,,,,,,, 0, 0 + _wr_cmd_id volscale, ASEQ_OP_SEQ_VOLSCALE,,,,,,,, 0, 0 _wr_u8 \arg .endm @@ -1180,7 +1360,7 @@ $reladdr\@: * Sets the envelope release rate for this channel or layer. */ .macro releaserate release - _wr_cmd_id releaserate, ,0xD9,0xCF,,,,,, 0, 0 + _wr_cmd_id releaserate, ,ASEQ_OP_CHAN_RELEASERATE,ASEQ_OP_LAYER_RELEASERATE,,,,,, 0, 0 _wr_u8 \release .endm @@ -1190,7 +1370,7 @@ $reladdr\@: * Sets the vibrato depth for the channel. */ .macro vibdepth arg - _wr_cmd_id vibdepth, ,0xD8,,,,,,, 0, 0 + _wr_cmd_id vibdepth, ,ASEQ_OP_CHAN_VIBDEPTH,,,,,,, 0, 0 _wr_u8 \arg .endm @@ -1200,7 +1380,7 @@ $reladdr\@: * Sets the vibrato rate for the channel. */ .macro vibfreq arg - _wr_cmd_id vibfreq, ,0xD7,,,,,,, 0, 0 + _wr_cmd_id vibfreq, ,ASEQ_OP_CHAN_VIBFREQ,,,,,,, 0, 0 _wr_u8 \arg .endm @@ -1213,7 +1393,7 @@ $reladdr\@: * initchan 0b101 initializes channels 0 and 2. */ .macro initchan bitmask - _wr_cmd_id initchan, 0xD7,,,,,,,, 0, 0 + _wr_cmd_id initchan, ASEQ_OP_SEQ_INITCHAN,,,,,,,, 0, 0 _wr_u16 \bitmask .endm @@ -1223,7 +1403,7 @@ $reladdr\@: * Frees the channels marked in the provided bitmask. */ .macro freechan bitmask - _wr_cmd_id freechan, 0xD6,,,,,,,, 0, 0 + _wr_cmd_id freechan, ASEQ_OP_SEQ_FREECHAN,,,,,,,, 0, 0 _wr_u16 \bitmask .endm @@ -1233,7 +1413,7 @@ $reladdr\@: * Sets the muteVolumeScale for the sequence. */ .macro mutescale arg - _wr_cmd_id mutescale, 0xD5,,,,,,,, 0, 0 + _wr_cmd_id mutescale, ASEQ_OP_SEQ_MUTESCALE,,,,,,,, 0, 0 _wr_s8 \arg .endm @@ -1243,7 +1423,7 @@ $reladdr\@: * Mutes the sequence player. */ .macro mute - _wr_cmd_id mute, 0xD4,,,,,,,, 0, 0 + _wr_cmd_id mute, ASEQ_OP_SEQ_MUTE,,,,,,,, 0, 0 .endm /** @@ -1252,7 +1432,7 @@ $reladdr\@: * Sets the reverb amount for this channel. */ .macro reverb amt - _wr_cmd_id reverb, ,0xD4,,,,,,, 0, 0 + _wr_cmd_id reverb, ,ASEQ_OP_CHAN_REVERB,,,,,,, 0, 0 _wr_u8 \amt .endm @@ -1262,7 +1442,7 @@ $reladdr\@: * Sets mute behavior for this sequence or channel. */ .macro mutebhv flags - _wr_cmd_id mutebhv, 0xD3,0xCA,,,,,,, 0, 0 + _wr_cmd_id mutebhv, ASEQ_OP_SEQ_MUTEBHV,ASEQ_OP_CHAN_MUTEBHV,,,,,,, 0, 0 _wr_u8 \flags .endm @@ -1272,7 +1452,7 @@ $reladdr\@: * Sets the pitch bend amount for this channel. */ .macro bend amt - _wr_cmd_id bend, ,0xD3,,,,,,, 0, 0 + _wr_cmd_id bend, ,ASEQ_OP_CHAN_BEND,,,,,,, 0, 0 _wr_s8 \amt .endm @@ -1282,7 +1462,7 @@ $reladdr\@: * Sets the location of SHORTVELTBL. */ .macro ldshortvelarr label - _wr_cmd_id ldshortvelarr, 0xD2,,,,,,,, 0, 0 + _wr_cmd_id ldshortvelarr, ASEQ_OP_SEQ_LDSHORTVELARR,,,,,,,, 0, 0 _wr_lbl \label .endm @@ -1292,7 +1472,7 @@ $reladdr\@: * Sets the adsr sustain value for this channel. */ .macro sustain value - _wr_cmd_id sustain, ,0xD2,,,,,,, 0, 0 + _wr_cmd_id sustain, ,ASEQ_OP_CHAN_SUSTAIN,,,,,,, 0, 0 _wr_u8 \value .endm @@ -1302,7 +1482,7 @@ $reladdr\@: * Sets the location of SHORTGATETBL. */ .macro ldshortgatearr label - _wr_cmd_id ldshortgatearr, 0xD1,,,,,,,, 0, 0 + _wr_cmd_id ldshortgatearr, ASEQ_OP_SEQ_LDSHORTGATEARR,,,,,,,, 0, 0 _wr_lbl \label .endm @@ -1312,7 +1492,7 @@ $reladdr\@: * Sets the noteAllocPolicy for either the sequence or the current channel. */ .macro notealloc arg - _wr_cmd_id notealloc, 0xD0,0xD1,,,,,,, 0, 0 + _wr_cmd_id notealloc, ASEQ_OP_SEQ_NOTEALLOC,ASEQ_OP_CHAN_NOTEALLOC,,,,,,, 0, 0 _wr_u8 \arg .endm @@ -1329,7 +1509,7 @@ $reladdr\@: _check_arg_bitwidth_u \strongRvrbR, 1 _check_arg_bitwidth_u \strongRvrbL, 1 - _wr_cmd_id effects, ,0xD0,,,,,,, 0, 0 + _wr_cmd_id effects, ,ASEQ_OP_CHAN_EFFECTS,,,,,,, 0, 0 _wr_u8 (\headset << 7) | (\type << 4) | (\strongR << 3) | (\strongL << 2) | (\strongRvrbR << 1) | (\strongRvrbL << 0) .endm @@ -1339,7 +1519,7 @@ $reladdr\@: * Stores TP -> label */ .macro stptrtoseq label - _wr_cmd_id stptrtoseq, ,0xCF,,,,,,, 0, 0 + _wr_cmd_id stptrtoseq, ,ASEQ_OP_CHAN_STPTRTOSEQ,,,,,,, 0, 0 _wr_lbl \label .endm @@ -1349,7 +1529,7 @@ $reladdr\@: * Loads label -> TP */ .macro ldptr label - _wr_cmd_id ldptr, ,0xCE,,,,,,, 0, 0 + _wr_cmd_id ldptr, ,ASEQ_OP_CHAN_LDPTR,,,,,,, 0, 0 _wr_lbl \label .endm @@ -1359,7 +1539,7 @@ $reladdr\@: * Loads imm -> TP */ .macro ldptri imm - _wr_cmd_id ldptr, ,0xCE,,,,,,, 0, 0 + _wr_cmd_id ldptr, ,ASEQ_OP_CHAN_LDPTR,,,,,,, 0, 0 _wr_u16 \imm .endm @@ -1369,7 +1549,7 @@ $reladdr\@: * Stores a random number in the range [0, max) into TR. If max is 0 the range is [0, 255] */ .macro rand max - _wr_cmd_id rand, 0xCE,0xB8,,,,,,, 0, 0 + _wr_cmd_id rand, ASEQ_OP_SEQ_RAND,ASEQ_OP_CHAN_RAND,,,,,,, 0, 0 _wr_u8 \max .endm @@ -1384,9 +1564,9 @@ $reladdr\@: */ .macro dyncall table=-1 .if \table == -1 - _wr_cmd_id dyncall, ,0xE4,,,,,,, 0, 0 + _wr_cmd_id dyncall, ,ASEQ_OP_CHAN_DYNCALL,,,,,,, 0, 0 .else - _wr_cmd_id dyncall, 0xCD,,,,,,,, 0, 0 + _wr_cmd_id dyncall, ASEQ_OP_SEQ_DYNCALL,,,,,,,, 0, 0 _wr_lbl \table .endif .endm @@ -1397,7 +1577,7 @@ $reladdr\@: * Loads the immediate value `imm` into TR. */ .macro ldi imm - _wr_cmd_id ldi, 0xCC,0xCC,,,,,,, 0, 0 + _wr_cmd_id ldi, ASEQ_OP_SEQ_LDI,ASEQ_OP_CHAN_LDI,,,,,,, 0, 0 _wr_u8 \imm .endm @@ -1407,7 +1587,7 @@ $reladdr\@: * Computes TR = TR & imm */ .macro and imm - _wr_cmd_id and, 0xC9,0xC9,,,,,,, 0, 0 + _wr_cmd_id and, ASEQ_OP_SEQ_AND,ASEQ_OP_CHAN_AND,,,,,,, 0, 0 _wr_u8 \imm .endm @@ -1417,7 +1597,7 @@ $reladdr\@: * Computes TR = TR - imm */ .macro sub imm - _wr_cmd_id sub, 0xC8,0xC8,,,,,,, 0, 0 + _wr_cmd_id sub, ASEQ_OP_SEQ_SUB,ASEQ_OP_CHAN_SUB,,,,,,, 0, 0 _wr_u8 \imm .endm @@ -1427,7 +1607,7 @@ $reladdr\@: * Stores the u8 value `TR + imm` to the location specified by `label`. */ .macro stseq imm, label - _wr_cmd_id stseq, 0xC7,0xC7,,,,,,, 0, 0 + _wr_cmd_id stseq, ASEQ_OP_SEQ_STSEQ,ASEQ_OP_CHAN_STSEQ,,,,,,, 0, 0 _wr_u8 \imm _wr_lbl \label .endm @@ -1438,7 +1618,7 @@ $reladdr\@: * Immediately stops the sequence or channel. */ .macro stop - _wr_cmd_id stop, 0xC6,0xEA,,,,,,, 0, 0 + _wr_cmd_id stop, ASEQ_OP_SEQ_STOP,ASEQ_OP_CHAN_STOP,,,,,,, 0, 0 .endm /** @@ -1447,7 +1627,7 @@ $reladdr\@: * Set the current soundfont for this channel to `fontId`. */ .macro font fontId - _wr_cmd_id font, ,0xC6,,,,,,, 0, 0 + _wr_cmd_id font, ,ASEQ_OP_CHAN_FONT,,,,,,, 0, 0 _wr_u8 \fontId .endm @@ -1460,7 +1640,7 @@ $reladdr\@: * never used, so changing it with this instruction has no useful effects. */ .macro scriptctr arg - _wr_cmd_id scriptctr, 0xC5,,,,,,,, 0, 0 + _wr_cmd_id scriptctr, ASEQ_OP_SEQ_SCRIPTCTR,,,,,,,, 0, 0 _wr_u16 \arg .endm @@ -1471,7 +1651,7 @@ $reladdr\@: * unless TR is -1, in which case nothing happens. */ .macro dyntbllookup - _wr_cmd_id dyntbllookup, ,0xC5,,,,,,, 0, 0 + _wr_cmd_id dyntbllookup, ,ASEQ_OP_CHAN_DYNTBLLOOKUP,,,,,,, 0, 0 .endm /** @@ -1480,7 +1660,7 @@ $reladdr\@: * Plays the sequence seqId on seqPlayer. */ .macro runseq seqPlayer, seqId - _wr_cmd_id runseq, 0xC4,,,,,,,, 0, 0 + _wr_cmd_id runseq, ASEQ_OP_SEQ_RUNSEQ,,,,,,,, 0, 0 _wr_u8 \seqPlayer _wr_u8 \seqId .endm @@ -1493,7 +1673,7 @@ $reladdr\@: * TODO DESCRIPTION */ .macro mutechan arg0 - _wr_cmd_id mutechan, 0xC3,,,,,,,, 0, 0 + _wr_cmd_id mutechan, ASEQ_OP_SEQ_C3,,,,,,,, 0, 0 _wr_s16 \arg0 .endm @@ -1505,7 +1685,7 @@ $reladdr\@: * Disable short notes encoding. */ .macro noshort - _wr_cmd_id noshort, ,0xC4,,,,,,, 0, 0 + _wr_cmd_id noshort, ,ASEQ_OP_CHAN_NOSHORT,,,,,,, 0, 0 .endm /** @@ -1514,7 +1694,7 @@ $reladdr\@: * Enable short notes encoding. */ .macro short - _wr_cmd_id short, ,0xC3,,,,,,, 0, 0 + _wr_cmd_id short, ,ASEQ_OP_CHAN_SHORT,,,,,,, 0, 0 .endm /** @@ -1523,7 +1703,7 @@ $reladdr\@: * Loads label -> DYNTBL */ .macro dyntbl label - _wr_cmd_id dyntbl, ,0xC2,,,,,,, 0, 0 + _wr_cmd_id dyntbl, ,ASEQ_OP_CHAN_DYNTBL,,,,,,, 0, 0 _wr_lbl \label .endm @@ -1533,7 +1713,7 @@ $reladdr\@: * Set instrument `instNum` from the current soundfont as the active instrument for this channel or layer. */ .macro instr instNum - _wr_cmd_id instr, ,0xC1,0xC6,,,,,, 0, 0 + _wr_cmd_id instr, ,ASEQ_OP_CHAN_INSTR,ASEQ_OP_LAYER_INSTR,,,,,, 0, 0 _wr_u8 \instNum .endm @@ -1545,7 +1725,7 @@ $reladdr\@: * TODO DESCRIPTION */ .macro unk_BE arg0 - _wr_cmd_id unk_BE, ,0xBE,,,,,,, 0, 0 + _wr_cmd_id unk_BE, ,ASEQ_OP_CHAN_UNK_BE,,,,,,, 0, 0 _wr_u8 \arg0 .endm @@ -1559,13 +1739,9 @@ $reladdr\@: * If range is 0, it is treated as 65536. */ .macro randptr range, offset - #if (MML_VERSION == MML_VERSION_OOT) - _wr_cmd_id randptr, ,0xBD,,,,,,, 0, 0 - #else - _wr_cmd_id randptr, ,0xA8,,,,,,, 0, 0 - #endif - _wr_u16 \range - _wr_u16 \offset + _wr_cmd_id randptr, ,ASEQ_OP_CHAN_RANDPTR,,,,,,, 0, 0 + _wr_u16 \range + _wr_u16 \offset .endm #if (MML_VERSION == MML_VERSION_MM) @@ -1576,7 +1752,7 @@ $reladdr\@: * TODO DESCRIPTION */ .macro samplestart arg - _wr_cmd_id samplestart, ,0xBD,,,,,,, 0, 0 + _wr_cmd_id samplestart, ,ASEQ_OP_CHAN_SAMPLESTART,,,,,,, 0, 0 _wr_u8 \arg .endm @@ -1586,7 +1762,7 @@ $reladdr\@: * TODO DESCRIPTION */ .macro unk_A7 arg - _wr_cmd_id unk_A7, ,0xA7,,,,,,, 0, 0 + _wr_cmd_id unk_A7, ,ASEQ_OP_CHAN_A7,,,,,,, 0, 0 _wr_u8 \arg .endm @@ -1596,7 +1772,7 @@ $reladdr\@: * TODO DESCRIPTION */ .macro unk_A6 arg0, arg1 - _wr_cmd_id unk_A6, ,0xA6,,,,,,, 0, 0 + _wr_cmd_id unk_A6, ,ASEQ_OP_CHAN_A6,,,,,,, 0, 0 _wr_u8 \arg0 _wr_s16 \arg1 .endm @@ -1607,7 +1783,7 @@ $reladdr\@: * TODO DESCRIPTION */ .macro unk_A5 - _wr_cmd_id unk_A5, ,0xA5,,,,,,, 0, 0 + _wr_cmd_id unk_A5, ,ASEQ_OP_CHAN_A5,,,,,,, 0, 0 .endm /** @@ -1616,7 +1792,7 @@ $reladdr\@: * TODO DESCRIPTION */ .macro unk_A4 arg - _wr_cmd_id unk_A4, ,0xA4,,,,,,, 0, 0 + _wr_cmd_id unk_A4, ,ASEQ_OP_CHAN_A4,,,,,,, 0, 0 _wr_u8 \arg .endm @@ -1626,7 +1802,7 @@ $reladdr\@: * TODO DESCRIPTION */ .macro unk_A3 - _wr_cmd_id unk_A3, ,0xA3,,,,,,, 0, 0 + _wr_cmd_id unk_A3, ,ASEQ_OP_CHAN_A3,,,,,,, 0, 0 .endm /** @@ -1635,7 +1811,7 @@ $reladdr\@: * TODO DESCRIPTION */ .macro unk_A2 arg - _wr_cmd_id unk_A2, ,0xA2,,,,,,, 0, 0 + _wr_cmd_id unk_A2, ,ASEQ_OP_CHAN_A2,,,,,,, 0, 0 _wr_s16 \arg .endm @@ -1645,7 +1821,7 @@ $reladdr\@: * TODO DESCRIPTION */ .macro unk_A1 - _wr_cmd_id unk_A1, ,0xA1,,,,,,, 0, 0 + _wr_cmd_id unk_A1, ,ASEQ_OP_CHAN_A1,,,,,,, 0, 0 .endm /** @@ -1654,7 +1830,7 @@ $reladdr\@: * TODO DESCRIPTION */ .macro unk_A0 arg - _wr_cmd_id unk_A0, ,0xA0,,,,,,, 0, 0 + _wr_cmd_id unk_A0, ,ASEQ_OP_CHAN_A0,,,,,,, 0, 0 _wr_s16 \arg .endm @@ -1666,7 +1842,7 @@ $reladdr\@: * Computes TP += value */ .macro ptradd value - _wr_cmd_id ptradd, ,0xBC,,,,,,, 0, 0 + _wr_cmd_id ptradd, ,ASEQ_OP_CHAN_PTRADD,,,,,,, 0, 0 _wr_lbl \value .endm @@ -1678,7 +1854,7 @@ $reladdr\@: * Computes TP += value */ .macro ptraddi value - _wr_cmd_id ptradd, ,0xBC,,,,,,, 0, 0 + _wr_cmd_id ptradd, ,ASEQ_OP_CHAN_PTRADD,,,,,,, 0, 0 _wr_u16 \value .endm @@ -1689,7 +1865,7 @@ $reladdr\@: * TODO args? arg0=16,arg1=val<<8 maps well to midi chorus */ .macro combfilter arg0, arg1 - _wr_cmd_id combfilter, ,0xBB,,,,,,, 0, 0 + _wr_cmd_id combfilter, ,ASEQ_OP_CHAN_COMBFILTER,,,,,,, 0, 0 _wr_u8 \arg0 _wr_u16 \arg1 .endm @@ -1702,7 +1878,7 @@ $reladdr\@: * NOTE: This feature is bugged. If this is non-zero it will actually use the range set by randvel. */ .macro randgate range - _wr_cmd_id randgate, ,0xBA,,,,,,, 0, 0 + _wr_cmd_id randgate, ,ASEQ_OP_CHAN_RANDGATE,,,,,,, 0, 0 _wr_u8 \range .endm @@ -1712,7 +1888,7 @@ $reladdr\@: * Sets the range for random note velocity fluctuations. */ .macro randvel range - _wr_cmd_id randvel, ,0xB9,,,,,,, 0, 0 + _wr_cmd_id randvel, ,ASEQ_OP_CHAN_RANDVEL,,,,,,, 0, 0 _wr_u8 \range .endm @@ -1722,7 +1898,7 @@ $reladdr\@: * Stores a random number in the range [0, max) into TP. If max is 0 the range is [0, 65535] */ .macro randtoptr max - _wr_cmd_id randtoptr, ,0xB7,,,,,,, 0, 0 + _wr_cmd_id randtoptr, ,ASEQ_OP_CHAN_RANDTOPTR,,,,,,, 0, 0 _wr_u16 \max .endm @@ -1732,7 +1908,7 @@ $reladdr\@: * Loads DYNTBL8[TR] -> TR */ .macro dyntblv - _wr_cmd_id dyntblv, ,0xB6,,,,,,, 0, 0 + _wr_cmd_id dyntblv, ,ASEQ_OP_CHAN_DYNTBLV,,,,,,, 0, 0 .endm /** @@ -1741,7 +1917,7 @@ $reladdr\@: * Loads DYNTBL16[TR] -> TP */ .macro dyntbltoptr - _wr_cmd_id dyntbltoptr, ,0xB5,,,,,,, 0, 0 + _wr_cmd_id dyntbltoptr, ,ASEQ_OP_CHAN_DYNTBLTOPTR,,,,,,, 0, 0 .endm /** @@ -1750,7 +1926,7 @@ $reladdr\@: * Transfers TP -> DYNTBL */ .macro ptrtodyntbl - _wr_cmd_id ptrtodyntbl, ,0xB4,,,,,,, 0, 0 + _wr_cmd_id ptrtodyntbl, ,ASEQ_OP_CHAN_PTRTODYNTBL,,,,,,, 0, 0 .endm /** @@ -1761,7 +1937,7 @@ $reladdr\@: * Note that TR acts as an index into an array of u16 starting at label. */ .macro ldseqtoptr label - _wr_cmd_id ldseqtoptr, ,0xB2,,,,,,, 0, 0 + _wr_cmd_id ldseqtoptr, ,ASEQ_OP_CHAN_LDSEQTOPTR,,,,,,, 0, 0 _wr_lbl \label .endm @@ -1771,7 +1947,7 @@ $reladdr\@: * Invalidates the current active filter buffer. */ .macro freefilter - _wr_cmd_id freefilter, ,0xB1,,,,,,, 0, 0 + _wr_cmd_id freefilter, ,ASEQ_OP_CHAN_FREEFILTER,,,,,,, 0, 0 .endm /** @@ -1780,7 +1956,7 @@ $reladdr\@: * Sets the active filter buffer to the location specified by `filter`. */ .macro ldfilter filter - _wr_cmd_id ldfilter, ,0xB0,,,,,,, 0, 0 + _wr_cmd_id ldfilter, ,ASEQ_OP_CHAN_LDFILTER,,,,,,, 0, 0 _wr_lbl \filter .endm @@ -1791,7 +1967,7 @@ $reladdr\@: * Delays by `delay` ticks. */ .macro cdelay delay - _wr_cmd_id cdelay, ,0x00,,,,,,, \delay, 4 + _wr_cmd_id cdelay, ,ASEQ_OP_CHAN_CDELAY,,,,,,, \delay, 4 .endm /** @@ -1805,9 +1981,9 @@ $reladdr\@: */ .macro ldsample type, portNum .if \type == LDSAMPLE_INST - _wr_cmd_id ldsample, ,0x10,,,,,,, \portNum, 3 + _wr_cmd_id ldsample, ,ASEQ_OP_CHAN_LDSAMPLE,,,,,,, \portNum, 3 .elif \type == LDSAMPLE_SFX - _wr_cmd_id ldsample, ,0x18,,,,,,, \portNum, 3 + _wr_cmd_id ldsample, ,ASEQ_OP_CHAN_LDSAMPLE | 8,,,,,,, \portNum, 3 .else .error "ldsample: invalid type" .endif @@ -1821,7 +1997,7 @@ $reladdr\@: * Stores the contents of TR into CIO[channelNum][portNum] */ .macro stcio channelNum, portNum - _wr_cmd_id stcio, ,0x30,,,,,,, \channelNum, 4 + _wr_cmd_id stcio, ,ASEQ_OP_CHAN_STCIO,,,,,,, \channelNum, 4 _wr_u8 \portNum .endm @@ -1831,7 +2007,7 @@ $reladdr\@: * Loads the contents of CIO[channelNum][portNum] into TR. */ .macro ldcio channelNum, portNum - _wr_cmd_id ldcio, ,0x40,,,,,,, \channelNum, 4 + _wr_cmd_id ldcio, ,ASEQ_OP_CHAN_LDCIO,,,,,,, \channelNum, 4 _wr_u8 \portNum .endm @@ -1843,7 +2019,7 @@ $reladdr\@: * for use in position-independent code. */ .macro rldlayer layerNum, label - _wr_cmd_id rldlayer, ,0x78,,,,,,, \layerNum, 3 + _wr_cmd_id rldlayer, ,ASEQ_OP_CHAN_RLDLAYER,,,,,,, \layerNum, 3 _wr_16_rel \label .endm @@ -1857,7 +2033,7 @@ $reladdr\@: * - -1 if layer does not exist. */ .macro testlayer layerNum - _wr_cmd_id testlayer, ,0x80,,,,,,, \layerNum, 3 + _wr_cmd_id testlayer, ,ASEQ_OP_CHAN_TESTLAYER,,,,,,, \layerNum, 3 .endm /** @@ -1866,7 +2042,7 @@ $reladdr\@: * Opens the note layer at `label` for index `layerNum`. */ .macro ldlayer layerNum, label - _wr_cmd_id ldlayer, ,0x88,,,,,,, \layerNum, 3 + _wr_cmd_id ldlayer, ,ASEQ_OP_CHAN_LDLAYER,,,,,,, \layerNum, 3 _wr_lbl \label .endm @@ -1876,7 +2052,7 @@ $reladdr\@: * Deletes the layer specified by index `layerNum`. */ .macro dellayer arg - _wr_cmd_id dellayer, ,0x90,,,,,,, \arg, 3 + _wr_cmd_id dellayer, ,ASEQ_OP_CHAN_DELLAYER,,,,,,, \arg, 3 .endm /** @@ -1885,7 +2061,7 @@ $reladdr\@: * Allocates a new layer starting at the pointer read from DYNTBL16[TR] */ .macro dynldlayer arg - _wr_cmd_id dynldlayer, ,0x98,,,,,,, \arg, 3 + _wr_cmd_id dynldlayer, ,ASEQ_OP_CHAN_DYNLDLAYER,,,,,,, \arg, 3 .endm /** @@ -1897,7 +2073,7 @@ $reladdr\@: * - 1 if disabled */ .macro testchan channelNum - _wr_cmd_id testchan, 0x00,,,,,,,, \channelNum, 4 + _wr_cmd_id testchan, ASEQ_OP_SEQ_TESTCHAN,,,,,,,, \channelNum, 4 .endm /** @@ -1907,9 +2083,9 @@ $reladdr\@: */ .macro stopchan channelNum .if ASEQ_MODE == ASEQ_MODE_SEQUENCE - _wr_cmd_id stopchan, 0x40,,,,,,,, \channelNum, 4 + _wr_cmd_id stopchan, ASEQ_OP_SEQ_STOPCHAN,,,,,,,, \channelNum, 4 .else - _wr_cmd_id stopchan, ,0xCD,,,,,,, 0, 0 + _wr_cmd_id stopchan, ,ASEQ_OP_CHAN_STOPCHAN,,,,,,, 0, 0 _wr_u8 \channelNum .endif .endm @@ -1924,7 +2100,7 @@ $reladdr\@: * Computes TR = TR - CIO[CUR_CHANNEL][portNum] */ .macro subio portNum - _wr_cmd_id subio, 0x50,0x50,,,,,,, \portNum, 4 + _wr_cmd_id subio, ASEQ_OP_SEQ_SUBIO,ASEQ_OP_CHAN_SUBIO,,,,,,, \portNum, 4 .endm /** @@ -1941,7 +2117,7 @@ $reladdr\@: * Load status is made available in SIO[portNum]. */ .macro ldres portNum, resType, resId - _wr_cmd_id ldres, 0x60,,,,,,,, \portNum, 4 + _wr_cmd_id ldres, ASEQ_OP_SEQ_LDRES,,,,,,,, \portNum, 4 _wr_u8 \resType _wr_u8 \resId .endm @@ -1955,9 +2131,9 @@ $reladdr\@: */ .macro stio portNum .if ASEQ_MODE == ASEQ_MODE_CHANNEL - _wr_cmd_id stio, ,0x70,,,,,,, \portNum, 3 + _wr_cmd_id stio, ,ASEQ_OP_CHAN_STIO,,,,,,, \portNum, 3 .else - _wr_cmd_id stio, 0x70,,,,,,,, \portNum, 4 + _wr_cmd_id stio, ASEQ_OP_SEQ_STIO,,,,,,,, \portNum, 4 .endif .endm @@ -1968,7 +2144,7 @@ $reladdr\@: * depending on current section. */ .macro ldio portNum - _wr_cmd_id ldio, 0x80,0x60,,,,,,, \portNum, 4 + _wr_cmd_id ldio, ASEQ_OP_SEQ_LDIO,ASEQ_OP_CHAN_LDIO,,,,,,, \portNum, 4 .endm /** @@ -1977,7 +2153,7 @@ $reladdr\@: * Opens the sequence channel for index `channelNum` with data beginning at `label`. */ .macro ldchan channelNum, label - _wr_cmd_id ldchan, 0x90,0x20,,,,,,, \channelNum, 4 + _wr_cmd_id ldchan, ASEQ_OP_SEQ_LDCHAN,ASEQ_OP_CHAN_LDCHAN,,,,,,, \channelNum, 4 _wr_lbl \label .endm @@ -1989,7 +2165,7 @@ $reladdr\@: * for use in position-independent code. */ .macro rldchan channelNum, label - _wr_cmd_id rldchan, 0xA0,,,,,,,, \channelNum, 4 + _wr_cmd_id rldchan, ASEQ_OP_SEQ_RLDCHAN,,,,,,,, \channelNum, 4 _wr_16_rel \label .endm @@ -1999,7 +2175,7 @@ $reladdr\@: * Delay for `delay` ticks. */ .macro ldelay delay - _wr_cmd_id ldelay, ,,0xC0,,,,,, 0, 0 + _wr_cmd_id ldelay, ,,ASEQ_OP_LAYER_LDELAY,,,,,, 0, 0 _var \delay .endm @@ -2010,7 +2186,7 @@ $reladdr\@: * Should never be used when not required for matching purposes. */ .macro lldelay delay - _wr_cmd_id lldelay, ,0xFD,0xC0,,,,,, 0, 0 + _wr_cmd_id lldelay, ,ASEQ_OP_DELAY,ASEQ_OP_LAYER_LDELAY,,,,,, 0, 0 _var_long \delay .endm @@ -2020,7 +2196,7 @@ $reladdr\@: * Set velocity used by short notes. */ .macro shortvel velocity - _wr_cmd_id shortvel, ,,0xC1,,,,,, 0, 0 + _wr_cmd_id shortvel, ,,ASEQ_OP_LAYER_SHORTVEL,,,,,, 0, 0 _wr_u8 \velocity .endm @@ -2030,7 +2206,7 @@ $reladdr\@: * Set delay used by short notes. */ .macro shortdelay delay - _wr_cmd_id shortdelay, ,,0xC3,,,,,, 0, 0 + _wr_cmd_id shortdelay, ,,ASEQ_OP_LAYER_SHORTDELAY,,,,,, 0, 0 _var \delay .endm @@ -2040,7 +2216,7 @@ $reladdr\@: * Enables legato on the current layer. */ .macro legato - _wr_cmd_id legato, ,,0xC4,,,,,, 0, 0 + _wr_cmd_id legato, ,,ASEQ_OP_LAYER_LEGATO,,,,,, 0, 0 .endm /** @@ -2049,7 +2225,7 @@ $reladdr\@: * Disables legato on the current layer. */ .macro nolegato - _wr_cmd_id nolegato, ,,0xC5,,,,,, 0, 0 + _wr_cmd_id nolegato, ,,ASEQ_OP_LAYER_NOLEGATO,,,,,, 0, 0 .endm /** @@ -2058,7 +2234,7 @@ $reladdr\@: * The time argument is either a var or a u8 depending on mode */ .macro portamento mode, target, time - _wr_cmd_id portamento, ,,0xC7,,,,,, 0, 0 + _wr_cmd_id portamento, ,,ASEQ_OP_LAYER_PORTAMENTO,,,,,, 0, 0 _wr_u8 \mode _wr_u8 \target .if (\mode & 0x80) != 0 @@ -2074,7 +2250,7 @@ $reladdr\@: * Disables portamento on the current layer. */ .macro noportamento - _wr_cmd_id noportamento, ,,0xC8,,,,,, 0, 0 + _wr_cmd_id noportamento, ,,ASEQ_OP_LAYER_NOPORTAMENTO,,,,,, 0, 0 .endm /** @@ -2083,7 +2259,7 @@ $reladdr\@: * Sets gate time for short notes. */ .macro shortgate gateTime - _wr_cmd_id shortgate, ,,0xC9,,,,,, 0, 0 + _wr_cmd_id shortgate, ,,ASEQ_OP_LAYER_SHORTGATE,,,,,, 0, 0 _wr_u8 \gateTime .endm @@ -2095,7 +2271,7 @@ $reladdr\@: .macro notepan pan /* pan can only take values in 0..127 */ _check_arg_bitwidth_u \pan, 7 - _wr_cmd_id notepan, ,,0xCA,,,,,, 0, 0 + _wr_cmd_id notepan, ,,ASEQ_OP_LAYER_NOTEPAN,,,,,, 0, 0 _wr_u8 \pan .endm @@ -2106,7 +2282,7 @@ $reladdr\@: * use pan set in the layer. */ .macro nodrumpan - _wr_cmd_id nodrumpan, ,,0xCC,,,,,, 0, 0 + _wr_cmd_id nodrumpan, ,,ASEQ_OP_LAYER_NODRUMPAN,,,,,, 0, 0 .endm /** @@ -2114,7 +2290,6 @@ $reladdr\@: * * TODO DESCRIPTION */ -#define STEREO_OPCODE 0xCD .macro stereo type, strongR, strongL, strongRvrbR, strongRvrbL _check_arg_bitwidth_u \type, 2 _check_arg_bitwidth_u \strongR, 1 @@ -2122,7 +2297,7 @@ $reladdr\@: _check_arg_bitwidth_u \strongRvrbR, 1 _check_arg_bitwidth_u \strongRvrbL, 1 - _wr_cmd_id stereo, ,,STEREO_OPCODE,,,,,, 0, 0 + _wr_cmd_id stereo, ,,ASEQ_OP_LAYER_STEREO,,,,,, 0, 0 _wr_u8 (\type << 4) | (\strongR << 3) | (\strongL << 2) | (\strongRvrbR << 1) | (\strongRvrbL << 0) .endm @@ -2132,7 +2307,7 @@ $reladdr\@: * Sets the velocity used in short notes by reading from SHORTVELTBL[velocity] */ .macro ldshortvel velocity - _wr_cmd_id ldshortvel, ,,0xD0,,,,,, \velocity, 4 + _wr_cmd_id ldshortvel, ,,ASEQ_OP_LAYER_LDSHORTVEL,,,,,, \velocity, 4 .endm /** @@ -2141,7 +2316,7 @@ $reladdr\@: * Sets the gate time used in short notes by reading from SHORTGATETBL[gateTime] */ .macro ldshortgate gateTime - _wr_cmd_id ldshortgate, ,,0xE0,,,,,, \gateTime, 4 + _wr_cmd_id ldshortgate, ,,ASEQ_OP_LAYER_LDSHORTGATE,,,,,, \gateTime, 4 .endm #if (MML_VERSION == MML_VERSION_MM) @@ -2152,7 +2327,7 @@ $reladdr\@: * TODO DESCRIPTION */ .macro unk_F0 arg - _wr_cmd_id unk_F0, ,,0xF0,,,,,, 0, 0 + _wr_cmd_id unk_F0, ,,ASEQ_OP_LAYER_F0,,,,,, 0, 0 _wr_s16 \arg .endm @@ -2161,9 +2336,8 @@ $reladdr\@: * * TODO DESCRIPTION */ - #define SURROUNDEFFECT_OPCODE 0xF1 .macro surroundeffect arg - _wr_cmd_id surroundeffect, ,,SURROUNDEFFECT_OPCODE,,,,,, 0, 0 + _wr_cmd_id surroundeffect, ,,ASEQ_OP_LAYER_F1,,,,,, 0, 0 _wr_u8 \arg .endm @@ -2182,9 +2356,8 @@ $reladdr\@: * * This instruction must only be used when long notes are enabled with the noshort instruction. */ -#define NOTEDVG_OPCODE 0x00 .macro notedvg pitch, delay, velocity, gateTime - _wr_cmd_id notedvg, ,,0x00,,,,,, \pitch, 6 + _wr_cmd_id notedvg, ,,ASEQ_OP_LAYER_NOTEDVG,,,,,, \pitch, 6 _var \delay _wr_u8 \velocity _wr_u8 \gateTime @@ -2197,16 +2370,15 @@ $reladdr\@: * * This instruction must only be used when long notes are enabled with the noshort instruction. */ -#define NOTEDV_OPCODE 0x40 .macro notedv pitch, delay, velocity - _wr_cmd_id notedv, ,,NOTEDV_OPCODE,,,,,, \pitch, 6 + _wr_cmd_id notedv, ,,ASEQ_OP_LAYER_NOTEDV,,,,,, \pitch, 6 _var \delay _wr_u8 \velocity .endm /* Workaround for bugs in vanilla sequences, force long encoding for delay. This should not typically be used. */ .macro noteldv pitch, delay, velocity - _wr_cmd_id noteldv, ,,0x40,,,,,, \pitch, 6 + _wr_cmd_id noteldv, ,,ASEQ_OP_LAYER_NOTEDV,,,,,, \pitch, 6 _var_long \delay _wr_u8 \velocity .endm @@ -2219,7 +2391,7 @@ $reladdr\@: * This instruction must only be used when long notes are enabled with the noshort instruction. */ .macro notevg pitch, velocity, gateTime - _wr_cmd_id notevg, ,,0x80,,,,,, \pitch, 6 + _wr_cmd_id notevg, ,,ASEQ_OP_LAYER_NOTEVG,,,,,, \pitch, 6 _wr_u8 \velocity _wr_u8 \gateTime .endm @@ -2233,7 +2405,7 @@ $reladdr\@: * This instruction must only be used when short notes are enabled with the short instruction. */ .macro shortdvg pitch, delay - _wr_cmd_id shortdvg, ,,0x00,,,,,, \pitch, 6 + _wr_cmd_id shortdvg, ,,ASEQ_OP_LAYER_NOTEDVG,,,,,, \pitch, 6 _var \delay .endm @@ -2246,7 +2418,7 @@ $reladdr\@: * This instruction must only be used when short notes are enabled with the short instruction. */ .macro shortdv pitch - _wr_cmd_id shortdv, ,,0x40,,,,,, \pitch, 6 + _wr_cmd_id shortdv, ,,ASEQ_OP_LAYER_NOTEDV,,,,,, \pitch, 6 .endm /** @@ -2258,7 +2430,7 @@ $reladdr\@: * This instruction must only be used when short notes are enabled with the short instruction. */ .macro shortvg pitch - _wr_cmd_id shortvg, ,,0x80,,,,,, \pitch, 6 + _wr_cmd_id shortvg, ,,ASEQ_OP_LAYER_NOTEVG,,,,,, \pitch, 6 .endm /** diff --git a/include/buffers.h b/include/buffers.h new file mode 100644 index 0000000000..e74719c440 --- /dev/null +++ b/include/buffers.h @@ -0,0 +1,15 @@ +#ifndef BUFFERS_H +#define BUFFERS_H + +#include "gfx.h" +#include "macros.h" +#include "ultra64.h" + +extern u16 gZBuffer[SCREEN_HEIGHT][SCREEN_WIDTH]; // 0x25800 bytes +extern u64 gGfxSPTaskOutputBuffer[0x3000]; // 0x18000 bytes +extern u64 gGfxSPTaskYieldBuffer[OS_YIELD_DATA_SIZE / sizeof(u64)]; // 0xC00 bytes +extern u64 gGfxSPTaskStack[SP_DRAM_STACK_SIZE64]; // 0x400 bytes +extern GfxPool gGfxPools[2]; // 0x24820 bytes +extern u8 gAudioHeap[0x38000]; // 0x38000 bytes + +#endif diff --git a/include/console_logo_state.h b/include/console_logo_state.h new file mode 100644 index 0000000000..09b7d66546 --- /dev/null +++ b/include/console_logo_state.h @@ -0,0 +1,28 @@ +#ifndef CONSOLE_LOGO_STATE_H +#define CONSOLE_LOGO_STATE_H + +#include "ultra64.h" +#include "z64game.h" +#include "z64sram.h" +#include "z64view.h" + +typedef struct ConsoleLogoState { + /* 0x0000 */ GameState state; + /* 0x00A4 */ u8* staticSegment; + /* 0x00A8 */ View view; + /* 0x01D0 */ SramContext sramCtx; + /* 0x01D4 */ s16 unk_1D4; + /* 0x01D6 */ s16 coverAlpha; + /* 0x01D8 */ s16 addAlpha; + /* 0x01DA */ s16 visibleDuration; + /* 0x01DC */ s16 ult; + /* 0x01DE */ s16 uls; + /* 0x01E0 */ u8 unk_1E0; + /* 0x01E1 */ u8 exit; + /* 0x01E2 */ char unk_1E2[0x06]; +} ConsoleLogoState; // size = 0x1E8 + +void ConsoleLogo_Init(GameState* thisx); +void ConsoleLogo_Destroy(GameState* thisx); + +#endif diff --git a/include/db_camera.h b/include/db_camera.h new file mode 100644 index 0000000000..81d8515d0b --- /dev/null +++ b/include/db_camera.h @@ -0,0 +1,88 @@ +#ifndef DB_CAMERA_H +#define DB_CAMERA_H + +#include "ultra64.h" +#include "z64cutscene.h" +#include "z64math.h" + +struct Camera; + +typedef struct DebugCamSub { + /* 0x0000 */ s16 mode; + /* 0x0002 */ s16 nFrames; + /* 0x0004 */ s16 nPoints; + /* 0x0006 */ s16 unkIdx; + /* 0x0008 */ s16 unk_08; + /* 0x000A */ s16 unk_0A; + /* 0x000C */ s32 unk_0C; // bool: indicates position vs lookAt? + /* 0x0010 */ char unk_10[0x14]; + /* 0x0024 */ CutsceneCameraPoint position[129]; + /* 0x0834 */ CutsceneCameraPoint lookAt[129]; + /* 0x1044 */ s16 demoCtrlMenu; + /* 0x1046 */ s16 demoCtrlActionIdx; // e (?), s (save), l (load), c (clear) + /* 0x1048 */ s16 demoCtrlToggleSwitch; + /* 0x104A */ Vec3s unk_104A; +} DebugCamSub; // size = 0x1050 + +typedef struct DebugCam { + /* 0x00 */ s32 unk_00; + /* 0x04 */ Vec3f at; + /* 0x10 */ Vec3f eye; + /* 0x1C */ Vec3f unk_1C; + /* 0x28 */ char unk_28[0xC]; + /* 0x34 */ s32 unk_34; + /* 0x38 */ s32 unk_38; + /* 0x3C */ s32 unk_3C; // bool + /* 0x40 */ s32 unk_40; + /* 0x44 */ s32 unk_44; + /* 0x48 */ f32 fov; + /* 0x4C */ s16 roll; + /* 0x4E */ char unk_4E[0x2]; + /* 0x50 */ f32 rollDegrees; + /* 0x54 */ Vec3f unk_54; + /* 0x60 */ Vec3f unk_60; + /* 0x6C */ Vec3f unk_6C; + /* 0x78 */ s16 unk_78; + /* 0x7A */ s16 unk_7A; + /* 0x7C */ DebugCamSub sub; +} DebugCam; // size = 0x10CC + +typedef struct DebugCamCut { + /* 0x00 */ char letter; + /* 0x01 */ u8 unk_01; + /* 0x02 */ s16 mode; + /* 0x04 */ CutsceneCameraPoint* position; + /* 0x08 */ CutsceneCameraPoint* lookAt; + /* 0x0C */ s16 nFrames; + /* 0x0E */ s16 nPoints; +} DebugCamCut; // size = 0x10 + +typedef struct DebugCamAnim { + /* 0x00 */ f32 curFrame; + /* 0x04 */ f32 unk_04; // frame count? + /* 0x08 */ s16 keyframe; + /* 0x0A */ s16 unk_0A; + /* 0x0C */ s16 unk_0C; + /* 0x10 */ Vec3f positionPos; // confusing name + /* 0x1C */ Vec3f lookAtPos; + /* 0x28 */ f32 roll; + /* 0x2C */ f32 fov; +} DebugCamAnim; // size = 0x30 + +typedef enum DebugCamTextColor { + /* 0 */ DEBUG_CAM_TEXT_YELLOW, + /* 1 */ DEBUG_CAM_TEXT_PEACH, + /* 2 */ DEBUG_CAM_TEXT_BROWN, + /* 3 */ DEBUG_CAM_TEXT_ORANGE, + /* 4 */ DEBUG_CAM_TEXT_GOLD, + /* 5 */ DEBUG_CAM_TEXT_WHITE, + /* 6 */ DEBUG_CAM_TEXT_BLUE, + /* 7 */ DEBUG_CAM_TEXT_GREEN +} DebugCamTextColor; + +void DebugCamera_Init(DebugCam* debugCam, struct Camera* cameraPtr); +void DebugCamera_Enable(DebugCam* debugCam, struct Camera* cam); +void DebugCamera_Update(DebugCam* debugCam, struct Camera* cam); +void DebugCamera_Reset(struct Camera* cam, DebugCam* debugCam); + +#endif diff --git a/include/debug_arena.h b/include/debug_arena.h new file mode 100644 index 0000000000..352a7f6dc6 --- /dev/null +++ b/include/debug_arena.h @@ -0,0 +1,38 @@ +#ifndef DEBUG_ARENA_H +#define DEBUG_ARENA_H + +#include "ultra64/ultratypes.h" + +void* DebugArena_Malloc(u32 size); +void* DebugArena_MallocR(u32 size); +void* DebugArena_Realloc(void* ptr, u32 newSize); +void DebugArena_Free(void* ptr); +void* DebugArena_Calloc(u32 num, u32 size); +void DebugArena_GetSizes(u32* outMaxFree, u32* outFree, u32* outAlloc); +void DebugArena_Check(void); +void DebugArena_Init(void* start, u32 size); +void DebugArena_Cleanup(void); +s32 DebugArena_IsInitialized(void); + +#if DEBUG_FEATURES + +#define DEBUG_ARENA_MALLOC(size, file, line) DebugArena_MallocDebug(size, file, line) +#define DEBUG_ARENA_MALLOC_R(size, file, line) DebugArena_MallocRDebug(size, file, line) +#define DEBUG_ARENA_FREE(size, file, line) DebugArena_FreeDebug(size, file, line) + +void DebugArena_CheckPointer(void* ptr, u32 size, const char* name, const char* action); +void* DebugArena_MallocDebug(u32 size, const char* file, int line); +void* DebugArena_MallocRDebug(u32 size, const char* file, int line); +void* DebugArena_ReallocDebug(void* ptr, u32 newSize, const char* file, int line); +void DebugArena_FreeDebug(void* ptr, const char* file, int line); +void DebugArena_Display(void); + +#else + +#define DEBUG_ARENA_MALLOC(size, file, line) DebugArena_Malloc(size) +#define DEBUG_ARENA_MALLOC_R(size, file, line) DebugArena_MallocR(size) +#define DEBUG_ARENA_FREE(size, file, line) DebugArena_Free(size) + +#endif + +#endif diff --git a/include/fault.h b/include/fault.h index 8f1979520f..7418246f46 100644 --- a/include/fault.h +++ b/include/fault.h @@ -3,7 +3,7 @@ #include "ultra64.h" #include "attributes.h" -#include "padmgr.h" +#include "libu64/pad.h" #if !PLATFORM_N64 // These are the same as the 3-bit ansi color codes diff --git a/include/file_select_state.h b/include/file_select_state.h new file mode 100644 index 0000000000..0a831caa0f --- /dev/null +++ b/include/file_select_state.h @@ -0,0 +1,97 @@ +#ifndef FILE_SELECT_STATE_H +#define FILE_SELECT_STATE_H + +#include "ultra64.h" +#include "z64environment.h" +#include "z64game.h" +#include "z64message.h" +#include "z64skybox.h" +#include "z64sram.h" +#include "z64view.h" + +typedef struct FileSelectState { + /* 0x00000 */ GameState state; + /* 0x000A4 */ Vtx* windowVtx; + /* 0x000A8 */ u8* staticSegment; + /* 0x000AC */ u8* parameterSegment; +#if OOT_PAL + /* 0x000B0 */ u8* objectMagSegment; +#endif + /* 0x000B8 */ View view; + /* 0x001E0 */ SramContext sramCtx; + /* 0x001E4 */ char unk_1E4[0x4]; + /* 0x001E8 */ SkyboxContext skyboxCtx; + /* 0x00348 */ MessageContext msgCtx; + /* 0x0E760 */ Font font; + /* 0x1C8E8 */ EnvironmentContext envCtx; + /* 0x1C9E4 */ char unk_1C9E4[0x4]; + /* 0x1C9E8 */ Vtx* windowContentVtx; + /* 0x1C9EC */ Vtx* keyboardVtx; + /* 0x1C9F0 */ Vtx* nameEntryVtx; + /* 0x1C9F4 */ u8 n64ddFlag; + /* 0x1C9F6 */ u16 deaths[3]; + /* 0x1C9FC */ u8 fileNames[3][8]; + /* 0x1CA14 */ u16 healthCapacities[3]; + /* 0x1CA1C */ u32 questItems[3]; + /* 0x1CA28 */ s16 n64ddFlags[3]; + /* 0x1CA2E */ s8 defense[3]; +#if OOT_PAL + /* 0x1CA32 */ u16 health[3]; +#endif + /* 0x1CA38 */ s16 buttonIndex; + /* 0x1CA3A */ s16 confirmButtonIndex; // 0: yes, 1: quit + /* 0x1CA3C */ s16 menuMode; + /* 0x1CA3E */ s16 configMode; + /* 0x1CA40 */ s16 prevConfigMode; + /* 0x1CA42 */ s16 nextConfigMode; + /* 0x1CA44 */ s16 selectMode; + /* 0x1CA46 */ s16 selectedFileIndex; + /* 0x1CA48 */ char unk_1CA48[0x2]; + /* 0x1CA4A */ s16 fileNamesY[3]; + /* 0x1CA50 */ s16 actionTimer; + /* 0x1CA52 */ s16 buttonYOffsets[6]; + /* 0x1CA5E */ s16 copyDestFileIndex; + /* 0x1CA60 */ s16 warningLabel; + /* 0x1CA62 */ s16 warningButtonIndex; + /* 0x1CA64 */ s16 titleLabel; + /* 0x1CA66 */ s16 nextTitleLabel; + /* 0x1CA68 */ s16 windowColor[3]; + /* 0x1CA6E */ s16 titleAlpha[2]; + /* 0x1CA72 */ s16 windowAlpha; + /* 0x1CA74 */ s16 fileButtonAlpha[3]; + /* 0x1CA7A */ s16 nameBoxAlpha[3]; + /* 0x1CA80 */ s16 nameAlpha[3]; + /* 0x1CA86 */ s16 connectorAlpha[3]; + /* 0x1CA8C */ s16 fileInfoAlpha[3]; + /* 0x1CA92 */ s16 actionButtonAlpha[4]; // also contains the alphas for the confirm buttons + /* 0x1CA9A */ s16 optionButtonAlpha; + /* 0x1CA9C */ s16 nameEntryBoxAlpha; + /* 0x1CA9E */ s16 controlsAlpha; + /* 0x1CAA0 */ s16 emptyFileTextAlpha; + /* 0x1CAA2 */ s16 highlightColor[4]; + /* 0x1CAAA */ s16 highlightPulseDir; // 0 fade out, 1 fade in + /* 0x1CAAC */ s16 unk_1CAAC; // initialized but never used + /* 0x1CAAE */ s16 confirmButtonTexIndices[2]; + /* 0x1CAB2 */ s16 inputTimerX; + /* 0x1CAB4 */ s16 inputTimerY; + /* 0x1CAB6 */ s16 stickXDir; + /* 0x1CAB8 */ s16 stickYDir; + /* 0x1CABA */ s16 stickAdjX; + /* 0x1CABC */ s16 stickAdjY; + /* 0x1CABE */ s16 nameEntryBoxPosX; + /* 0x1CAC0 */ s16 windowPosX; + /* 0x1CAC4 */ f32 windowRot; + /* 0x1CAC8 */ s16 kbdButton; // only for buttons, not characters + /* 0x1CACA */ s16 charPage; // 0: hiragana, 1: katakana, 2: alphabet + /* 0x1CACC */ s16 charBgAlpha; // square shape the letter sits in + /* 0x1CACE */ s16 charIndex; // 0 - 64, top left to bottom right + /* 0x1CAD0 */ s16 kbdX; // (0, 0) is top left character + /* 0x1CAD2 */ s16 kbdY; + /* 0x1CAD4 */ s16 newFileNameCharCount; + /* 0x1CAD6 */ s16 unk_1CAD6[5]; +} FileSelectState; // size = 0x1CAE0 + +void FileSelect_Init(GameState* thisx); +void FileSelect_Destroy(GameState* thisx); + +#endif diff --git a/include/functions.h b/include/functions.h index f89ce3a0af..63255443dc 100644 --- a/include/functions.h +++ b/include/functions.h @@ -14,8 +14,6 @@ void Yaz0_Decompress(uintptr_t romStart, u8* dst, size_t size); #else void gzip_decompress(uintptr_t romStart, u8* dst, size_t size); #endif -void Locale_Init(void); -void Locale_ResetRegion(void); #if DEBUG_FEATURES void isPrintfInit(void); #endif @@ -26,132 +24,18 @@ NORETURN void func_80002384(const char* exp, const char* file, int line); #endif OSPiHandle* osDriveRomInit(void); void Mio0_Decompress(u8* src, u8* dst); -#if DEBUG_FEATURES -void LogUtils_LogHexDump(void* ptr, s32 size0); -void LogUtils_CheckNullPointer(const char* exp, void* ptr, const char* file, int line); -void LogUtils_CheckValidPointer(const char* exp, void* ptr, const char* file, int line); -void LogUtils_LogThreadId(const char* name, int line); -#endif -void LogUtils_HungupThread(const char* name, int line); -void LogUtils_ResetHungup(void); - -EnItem00* Item_DropCollectible(PlayState* play, Vec3f* spawnPos, s16 params); -EnItem00* Item_DropCollectible2(PlayState* play, Vec3f* spawnPos, s16 params); -void Item_DropCollectibleRandom(PlayState* play, Actor* fromActor, Vec3f* spawnPos, s16 params); void FlagSet_Update(PlayState* play); -void Overlay_LoadGameState(GameStateOverlay* overlayEntry); -void Overlay_FreeGameState(GameStateOverlay* overlayEntry); - -void ActorOverlayTable_LogPrint(void); -void ActorOverlayTable_Init(void); -void ActorOverlayTable_Cleanup(void); void SaveContext_Init(void); -s32 func_800635D0(s32); -void Regs_Init(void); -void DebugCamera_ScreenText(u8 x, u8 y, const char* text); -void DebugCamera_ScreenTextColored(u8 x, u8 y, u8 colorIndex, const char* text); -#if DEBUG_FEATURES -void Regs_UpdateEditor(Input* input); -#endif -void Debug_DrawText(GraphicsContext* gfxCtx); -void DebugDisplay_Init(void); -DebugDispObject* DebugDisplay_AddObject(f32 posX, f32 posY, f32 posZ, s16 rotX, s16 rotY, s16 rotZ, f32 scaleX, - f32 scaleY, f32 scaleZ, u8 red, u8 green, u8 blue, u8 alpha, s16 type, - GraphicsContext* gfxCtx); -void DebugDisplay_DrawObjects(PlayState* play); void* MemCpy(void* dest, const void* src, s32 len); -void GetItem_Draw(PlayState* play, s16 drawId); - -u16 QuestHint_GetSariaTextId(PlayState* play); -u16 QuestHint_GetNaviTextId(PlayState* play); -u16 MaskReaction_GetTextId(PlayState* play, u32 maskReactionSet); -void CutsceneFlags_UnsetAll(PlayState* play); -void CutsceneFlags_Set(PlayState* play, s16 flag); -void CutsceneFlags_Unset(PlayState* play, s16 flag); -s32 CutsceneFlags_Get(PlayState* play, s16 flag); - -s32 Kanji_OffsetFromShiftJIS(s32 character); -void Font_LoadCharWide(Font* font, u16 character, u16 codePointIndex); -void Font_LoadChar(Font* font, u8 character, u16 codePointIndex); -void Font_LoadMessageBoxIcon(Font* font, u16 icon); -void Font_LoadOrderedFont(Font* font); - -void Health_InitMeter(PlayState* play); -void Health_UpdateMeter(PlayState* play); -void Health_DrawMeter(PlayState* play); -void Health_UpdateBeatingHeart(PlayState* play); -u32 Health_IsCritical(void); void MapMark_Init(PlayState* play); void MapMark_ClearPointers(PlayState* play); void MapMark_Draw(PlayState* play); -void PreNmiBuff_Init(PreNmiBuff* this); -void PreNmiBuff_SetReset(PreNmiBuff* this); -u32 PreNmiBuff_IsResetting(PreNmiBuff* this); void Sched_FlushTaskQueue(void); -Path* Path_GetByIndex(PlayState* play, s16 index, s16 max); -f32 Path_OrientAndGetDistSq(Actor* actor, Path* path, s16 waypoint, s16* yaw); -void Path_CopyLastPoint(Path* path, Vec3f* dest); - -void PreNMI_Init(GameState* thisx); - -void func_80095AA0(PlayState* play, Room* room, Input* input, s32 arg3); -void Room_DrawBackground2D(Gfx** gfxP, void* tex, void* tlut, u16 width, u16 height, u8 fmt, u8 siz, u16 tlutMode, - u16 tlutCount, f32 offsetX, f32 offsetY); -void Room_Init(PlayState* play, Room* room); -u32 Room_SetupFirstRoom(PlayState* play, RoomContext* roomCtx); -s32 Room_RequestNewRoom(PlayState* play, RoomContext* roomCtx, s32 roomNum); -s32 Room_ProcessRoomRequest(PlayState* play, RoomContext* roomCtx); -void Room_Draw(PlayState* play, Room* room, u32 flags); -void Room_FinishRoomChange(PlayState* play, RoomContext* roomCtx); -void Sample_Destroy(GameState* thisx); -void Sample_Init(GameState* thisx); - -void Skin_UpdateVertices(MtxF* mtx, SkinVertex* skinVertices, SkinLimbModif* modifEntry, Vtx* vtxBuf, Vec3f* pos); -void Skin_DrawAnimatedLimb(GraphicsContext* gfxCtx, Skin* skin, s32 limbIndex, s32 arg3, s32 drawFlags); -void Skin_DrawLimb(GraphicsContext* gfxCtx, Skin* skin, s32 limbIndex, Gfx* dlistOverride, s32 drawFlags); -void func_800A6330(Actor* actor, PlayState* play, Skin* skin, SkinPostDraw postDraw, s32 setTranslation); -void func_800A6360(Actor* actor, PlayState* play, Skin* skin, SkinPostDraw postDraw, - SkinOverrideLimbDraw overrideLimbDraw, s32 setTranslation); -void func_800A6394(Actor* actor, PlayState* play, Skin* skin, SkinPostDraw postDraw, - SkinOverrideLimbDraw overrideLimbDraw, s32 setTranslation, s32 arg6); -void func_800A63CC(Actor* actor, PlayState* play, Skin* skin, SkinPostDraw postDraw, - SkinOverrideLimbDraw overrideLimbDraw, s32 setTranslation, s32 arg6, s32 drawFlags); -void Skin_GetLimbPos(Skin* skin, s32 limbIndex, Vec3f* offset, Vec3f* dst); -void Skin_Init(PlayState* play, Skin* skin, SkeletonHeader* skeletonHeader, AnimationHeader* animationHeader); -void Skin_Free(PlayState* play, Skin* skin); -s32 Skin_ApplyAnimTransformations(Skin* skin, MtxF* limbMatrices, Actor* actor, s32 setTranslation); - -void Sram_InitNewSave(void); -void Sram_InitDebugSave(void); -void Sram_OpenSave(SramContext* sramCtx); -void Sram_WriteSave(SramContext* sramCtx); -void Sram_VerifyAndLoadAllSaves(FileSelectState* fileSelect, SramContext* sramCtx); -void Sram_InitSave(FileSelectState* fileSelect, SramContext* sramCtx); -void Sram_EraseSave(FileSelectState* fileSelect, SramContext* sramCtx); -void Sram_CopySave(FileSelectState* fileSelect, SramContext* sramCtx); -void Sram_WriteSramHeader(SramContext* sramCtx); -void Sram_InitSram(GameState* gameState, SramContext* sramCtx); -void Sram_Alloc(GameState* gameState, SramContext* sramCtx); -void Sram_Init(PlayState* play, SramContext* sramCtx); -void SsSram_Init(s32 addr, u8 handleType, u8 handleDomain, u8 handleLatency, u8 handlePageSize, u8 handleRelDuration, - u8 handlePulse, u32 handleSpeed); -void SsSram_Dma(void* dramAddr, size_t size, s32 direction); -void SsSram_ReadWrite(s32 addr, void* dramAddr, size_t size, s32 direction); - -void ViMode_LogPrint(OSViMode* osViMode); -void ViMode_Configure(ViMode* viMode, s32 type, s32 tvType, s32 loRes, s32 antialiasOff, s32 modeN, s32 fb16Bit, - s32 width, s32 height, s32 leftAdjust, s32 rightAdjust, s32 upperAdjust, s32 lowerAdjust); -void ViMode_Save(ViMode* viMode); -void ViMode_Load(ViMode* viMode); -void ViMode_Init(ViMode* viMode); -void ViMode_Destroy(ViMode* viMode); -void ViMode_ConfigureFeatures(ViMode* viMode, s32 viFeatures); -void ViMode_Update(ViMode* viMode, Input* input); void PlayerCall_InitFuncPtrs(void); void TransitionTile_Destroy(TransitionTile* this); TransitionTile* TransitionTile_Init(TransitionTile* this, s32 cols, s32 rows); @@ -191,15 +75,6 @@ s32 TransitionFade_IsDone(void* thisx); void TransitionFade_SetColor(void* thisx, u32 color); void TransitionFade_SetType(void* thisx, s32 type); -void DebugCamera_Init(DebugCam* debugCam, Camera* cameraPtr); -void DebugCamera_Enable(DebugCam* debugCam, Camera* cam); -void DebugCamera_Update(DebugCam* debugCam, Camera* cam); -void DebugCamera_Reset(Camera* cam, DebugCam* debugCam); -void func_800BB0A0(f32 u, Vec3f* pos, f32* roll, f32* viewAngle, f32* point0, f32* point1, f32* point2, f32* point3); -s32 func_800BB2B4(Vec3f* pos, f32* roll, f32* fov, CutsceneCameraPoint* point, s16* keyFrame, f32* curFrame); - -s32 func_800C0D34(PlayState* this, Actor* actor, s16* yaw); -s32 func_800C0DB4(PlayState* this, Vec3f* pos); void PreRender_SetValuesSave(PreRender* this, u32 width, u32 height, void* fbuf, void* zbuf, void* cvg); void PreRender_Init(PreRender* this); void PreRender_SetValues(PreRender* this, u32 width, u32 height, void* fbuf, void* zbuf); @@ -214,111 +89,19 @@ void func_800C213C(PreRender* this, Gfx** gfxP); void PreRender_RestoreFramebuffer(PreRender* this, Gfx** gfxP); void PreRender_CopyImageRegion(PreRender* this, Gfx** gfxP); void PreRender_ApplyFilters(PreRender* this); -void GameState_SetFBFilter(Gfx** gfxP); -void GameState_Draw(GameState* gameState, GraphicsContext* gfxCtx); -void GameState_SetFrameBuffer(GraphicsContext* gfxCtx); -void GameState_ReqPadData(GameState* gameState); -void GameState_Update(GameState* gameState); -void GameState_InitArena(GameState* gameState, size_t size); -void GameState_Realloc(GameState* gameState, size_t size); -void GameState_Init(GameState* gameState, GameStateFunc init, GraphicsContext* gfxCtx); -void GameState_Destroy(GameState* gameState); -GameStateFunc GameState_GetInit(GameState* gameState); -u32 GameState_IsRunning(GameState* gameState); -#if DEBUG_FEATURES -void* GameState_Alloc(GameState* gameState, size_t size, const char* file, int line); -void* GameAlloc_MallocDebug(GameAlloc* this, u32 size, const char* file, int line); -#endif -void* GameAlloc_Malloc(GameAlloc* this, u32 size); -void GameAlloc_Free(GameAlloc* this, void* data); -void GameAlloc_Cleanup(GameAlloc* this); -void GameAlloc_Init(GameAlloc* this); -void Graph_InitTHGA(GraphicsContext* gfxCtx); -GameStateOverlay* Graph_GetNextGameState(GameState* gameState); -void Graph_Init(GraphicsContext* gfxCtx); -void Graph_Destroy(GraphicsContext* gfxCtx); -void Graph_TaskSet00(GraphicsContext* gfxCtx); -void Graph_Update(GraphicsContext* gfxCtx, GameState* gameState); void Graph_ThreadEntry(void*); -ListAlloc* ListAlloc_Init(ListAlloc* this); -void* ListAlloc_Alloc(ListAlloc* this, u32 size); -void ListAlloc_Free(ListAlloc* this, void* data); -void ListAlloc_FreeAll(ListAlloc* this); -void Main(void* arg); void SysCfb_Init(s32 n64dd); void* SysCfb_GetFbPtr(s32 idx); void* SysCfb_GetFbEnd(void); -u64* SysUcode_GetUCodeBoot(void); -size_t SysUcode_GetUCodeBootSize(void); -u64* SysUcode_GetUCode(void); -u64* SysUcode_GetUCodeData(void); -NORETURN void func_800D31A0(void); -void func_800D31F0(void); -void func_800D3210(void); -void* DebugArena_Malloc(u32 size); -void* DebugArena_MallocR(u32 size); -void* DebugArena_Realloc(void* ptr, u32 newSize); -void DebugArena_Free(void* ptr); -void* DebugArena_Calloc(u32 num, u32 size); -void DebugArena_GetSizes(u32* outMaxFree, u32* outFree, u32* outAlloc); -void DebugArena_Check(void); -void DebugArena_Init(void* start, u32 size); -void DebugArena_Cleanup(void); -s32 DebugArena_IsInitialized(void); -#if DEBUG_FEATURES -void DebugArena_CheckPointer(void* ptr, u32 size, const char* name, const char* action); -void* DebugArena_MallocDebug(u32 size, const char* file, int line); -void* DebugArena_MallocRDebug(u32 size, const char* file, int line); -void* DebugArena_ReallocDebug(void* ptr, u32 newSize, const char* file, int line); -void DebugArena_FreeDebug(void* ptr, const char* file, int line); -void DebugArena_Display(void); -#endif - void RcpUtils_PrintRegisterStatus(void); void RcpUtils_Reset(void); -void* Overlay_AllocateAndLoad(uintptr_t vromStart, uintptr_t vromEnd, void* vramStart, void* vramEnd); -void MtxConv_F2L(Mtx* m1, MtxF* m2); -void MtxConv_L2F(MtxF* m1, Mtx* m2); -void Overlay_Relocate(void* allocatedRamAddr, OverlayRelocationSection* ovlRelocs, void* vramStart); -size_t Overlay_Load(uintptr_t vromStart, uintptr_t vromEnd, void* vramStart, void* vramEnd, void* allocatedRamAddr); -// ? func_800FC800(?); -// ? func_800FC83C(?); -// ? func_800FCAB4(?); + void SystemHeap_Init(void* start, u32 size); -void PadUtils_Init(Input* input); -void func_800FCB70(void); -void PadUtils_ResetPressRel(Input* input); -u32 PadUtils_CheckCurExact(Input* input, u16 value); -u32 PadUtils_CheckCur(Input* input, u16 key); -u32 PadUtils_CheckPressed(Input* input, u16 key); -u32 PadUtils_CheckReleased(Input* input, u16 key); -u16 PadUtils_GetCurButton(Input* input); -u16 PadUtils_GetPressButton(Input* input); -s8 PadUtils_GetCurX(Input* input); -s8 PadUtils_GetCurY(Input* input); -void PadUtils_SetRelXY(Input* input, s32 x, s32 y); -s8 PadUtils_GetRelXImpl(Input* input); -s8 PadUtils_GetRelYImpl(Input* input); -s8 PadUtils_GetRelX(Input* input); -s8 PadUtils_GetRelY(Input* input); -void PadUtils_UpdateRelXY(Input* input); -s32 PadSetup_Init(OSMesgQueue* mq, u8* outMask, OSContStatus* status); f32 absf(f32); void Regs_InitData(PlayState* play); -void Setup_Init(GameState* thisx); -void Setup_Destroy(GameState* thisx); -void ConsoleLogo_Init(GameState* thisx); -void ConsoleLogo_Destroy(GameState* thisx); -void MapSelect_Init(GameState* thisx); -void MapSelect_Destroy(GameState* thisx); -void TitleSetup_Init(GameState* thisx); -void TitleSetup_Destroy(GameState* thisx); -void FileSelect_Init(GameState* thisx); -void FileSelect_Destroy(GameState* thisx); - #endif diff --git a/include/gamealloc.h b/include/gamealloc.h new file mode 100644 index 0000000000..c69ea35749 --- /dev/null +++ b/include/gamealloc.h @@ -0,0 +1,31 @@ +#ifndef GAMEALLOC_H +#define GAMEALLOC_H + +#include "ultra64/ultratypes.h" + +typedef struct GameAllocEntry { + /* 0x00 */ struct GameAllocEntry* next; + /* 0x04 */ struct GameAllocEntry* prev; + /* 0x08 */ u32 size; + /* 0x0C */ u32 unk_0C; +} GameAllocEntry; // size = 0x10 + +typedef struct GameAlloc { + /* 0x00 */ GameAllocEntry base; + /* 0x10 */ GameAllocEntry* head; +} GameAlloc; // size = 0x14 + +#if DEBUG_FEATURES + +#define GAME_ALLOC_MALLOC(alloc, size, file, line) GameAlloc_MallocDebug(alloc, size, file, line) +void* GameAlloc_MallocDebug(GameAlloc* this, u32 size, const char* file, int line); +#else +#define GAME_ALLOC_MALLOC(alloc, size, file, line) GameAlloc_Malloc(alloc, size) +#endif + +void* GameAlloc_Malloc(GameAlloc* this, u32 size); +void GameAlloc_Free(GameAlloc* this, void* data); +void GameAlloc_Cleanup(GameAlloc* this); +void GameAlloc_Init(GameAlloc* this); + +#endif diff --git a/include/gfx.h b/include/gfx.h index 46a06649b9..a4c17281ca 100644 --- a/include/gfx.h +++ b/include/gfx.h @@ -54,6 +54,8 @@ typedef struct GraphicsContext { /* 0x02FC */ char unk_2FC[0x04]; } GraphicsContext; // size = 0x300 +extern Gfx gEmptyDL[]; + Gfx* Gfx_SetFog(Gfx* gfx, s32 r, s32 g, s32 b, s32 a, s32 near, s32 far); Gfx* Gfx_SetFogWithSync(Gfx* gfx, s32 r, s32 g, s32 b, s32 a, s32 near, s32 far); Gfx* Gfx_SetFog2(Gfx* gfx, s32 r, s32 g, s32 b, s32 a, s32 near, s32 far); diff --git a/include/irqmgr.h b/include/irqmgr.h index b931977ab0..b841fb141f 100644 --- a/include/irqmgr.h +++ b/include/irqmgr.h @@ -46,4 +46,6 @@ void IrqMgr_RemoveClient(IrqMgr* irqMgr, IrqMgrClient* client); extern vu32 gIrqMgrResetStatus; extern volatile OSTime gIrqMgrRetraceTime; +extern IrqMgr gIrqMgr; + #endif diff --git a/include/kanread.h b/include/kanread.h new file mode 100644 index 0000000000..bea4831c81 --- /dev/null +++ b/include/kanread.h @@ -0,0 +1,8 @@ +#ifndef KANREAD_H +#define KANREAD_H + +#include "ultra64/ultratypes.h" + +s32 Kanji_OffsetFromShiftJIS(s32 sjis); + +#endif diff --git a/include/libc/stdarg.h b/include/libc/stdarg.h index 7c7d2800e5..717299ccd6 100644 --- a/include/libc/stdarg.h +++ b/include/libc/stdarg.h @@ -1,16 +1,7 @@ #ifndef STDARG_H #define STDARG_H -// When building with modern GCC, use the official vaarg macros to avoid warnings and possibly bad codegen. - -#if __GNUC__ >= 3 - -#define va_list __builtin_va_list -#define va_start __builtin_va_start -#define va_arg __builtin_va_arg -#define va_end __builtin_va_end - -#elif defined(__sgi) /* IDO */ +#if defined(__sgi) /* IDO */ #ifndef _VA_LIST_ # define _VA_LIST_ @@ -52,7 +43,7 @@ typedef char* va_list; /* No cleanup processing is required for the end of a varargs list: */ #define va_end(__list) -#else /* EGCS */ +#elif defined(EGCS) /* EGCS */ typedef char * __gnuc_va_list; @@ -75,6 +66,14 @@ typedef char * __gnuc_va_list; typedef __gnuc_va_list va_list; +#else /* Modern GCC */ + +// When building with modern GCC, use the official vaarg macros to avoid warnings and possibly bad codegen. +#define va_list __builtin_va_list +#define va_start __builtin_va_start +#define va_arg __builtin_va_arg +#define va_end __builtin_va_end + #endif #endif diff --git a/include/libc64/malloc.h b/include/libc64/malloc.h index 86b58d17ca..25233c51c5 100644 --- a/include/libc64/malloc.h +++ b/include/libc64/malloc.h @@ -16,11 +16,19 @@ void SystemArena_Cleanup(void); s32 SystemArena_IsInitialized(void); #if DEBUG_FEATURES +#define SYSTEM_ARENA_MALLOC(size, file, line) SystemArena_MallocDebug(size, file, line) +#define SYSTEM_ARENA_MALLOC_R(size, file, line) SystemArena_MallocRDebug(size, file, line) +#define SYSTEM_ARENA_FREE(size, file, line) SystemArena_FreeDebug(size, file, line) + void* SystemArena_MallocDebug(u32 size, const char* file, int line); void* SystemArena_MallocRDebug(u32 size, const char* file, int line); void* SystemArena_ReallocDebug(void* ptr, u32 newSize, const char* file, int line); void SystemArena_FreeDebug(void* ptr, const char* file, int line); void SystemArena_Display(void); +#else +#define SYSTEM_ARENA_MALLOC(size, file, line) SystemArena_Malloc(size) +#define SYSTEM_ARENA_MALLOC_R(size, file, line) SystemArena_MallocR(size) +#define SYSTEM_ARENA_FREE(size, file, line) SystemArena_Free(size) #endif extern Arena gSystemArena; diff --git a/include/libc64/os_malloc.h b/include/libc64/os_malloc.h index fcd4da1e14..c4942573c4 100644 --- a/include/libc64/os_malloc.h +++ b/include/libc64/os_malloc.h @@ -64,7 +64,7 @@ void __osFreeDebug(Arena* arena, void* ptr, const char* file, int line); void* __osReallocDebug(Arena* arena, void* ptr, u32 newSize, const char* file, int line); #endif -#if PLATFORM_GC && DEBUG_FEATURES +#if !PLATFORM_N64 && DEBUG_FEATURES void __osDisplayArena(Arena* arena); extern u32 __osMalloc_FreeBlockTest_Enable; #endif diff --git a/include/libu64/debug.h b/include/libu64/debug.h new file mode 100644 index 0000000000..87015afde8 --- /dev/null +++ b/include/libu64/debug.h @@ -0,0 +1,51 @@ +#ifndef LIBU64_DEBUG_H +#define LIBU64_DEBUG_H + +#include "ultra64.h" + +#if DEBUG_FEATURES +#define LOG(exp, value, format, file, line) \ + do { \ + LogUtils_LogThreadId(file, line); \ + osSyncPrintf(exp " = " format "\n", value); \ + } while (0) +#else +#define LOG(exp, value, format, file, line) (void)(value) +#endif + +#define LOG_STRING(string, file, line) LOG(#string, string, "%s", file, line) +#define LOG_ADDRESS(exp, value, file, line) LOG(exp, value, "%08x", file, line) +#define LOG_TIME(exp, value, file, line) LOG(exp, value, "%lld", file, line) +#define LOG_NUM(exp, value, file, line) LOG(exp, value, "%d", file, line) +#define LOG_HEX(exp, value, file, line) LOG(exp, value, "%x", file, line) +#define LOG_HEX32(exp, value, file, line) LOG(exp, value, "%08x", file, line) +#define LOG_FLOAT(exp, value, file, line) LOG(exp, value, "%f", file, line) + +#if PLATFORM_N64 || DEBUG_FEATURES +f32 LogUtils_CheckFloatRange(const char* exp, int line, const char* valueName, f32 value, const char* minName, f32 min, + const char* maxName, f32 max); +#endif + +#if DEBUG_FEATURES +#define LOG_UTILS_CHECK_NULL_POINTER(exp, ptr, file, line) LogUtils_CheckNullPointer(exp, ptr, file, line) +#define LOG_UTILS_CHECK_VALID_POINTER(exp, ptr, file, line) LogUtils_CheckValidPointer(exp, ptr, file, line) + +s32 LogUtils_CheckIntRange(const char* exp, int line, const char* valueName, s32 value, const char* minName, s32 min, + const char* maxName, s32 max); +void LogUtils_LogHexDump(void* ptr, s32 size0); +void LogUtils_LogPointer(s32 value, u32 max, void* ptr, const char* name, const char* file, int line); +void LogUtils_CheckBoundary(const char* name, s32 value, s32 unk, const char* file, int line); +void LogUtils_CheckNullPointer(const char* exp, void* ptr, const char* file, int line); +void LogUtils_CheckValidPointer(const char* exp, void* ptr, const char* file, int line); +void LogUtils_LogThreadId(const char* name, int line); +#else + +#define LOG_UTILS_CHECK_NULL_POINTER(exp, ptr, file, line) (void)0 +#define LOG_UTILS_CHECK_VALID_POINTER(exp, ptr, file, line) (void)0 + +#endif + +void LogUtils_HungupThread(const char* name, int line); +void LogUtils_ResetHungup(void); + +#endif diff --git a/include/gfxprint.h b/include/libu64/gfxprint.h similarity index 96% rename from include/gfxprint.h rename to include/libu64/gfxprint.h index 039b564b4b..4106d9fd1c 100644 --- a/include/gfxprint.h +++ b/include/libu64/gfxprint.h @@ -1,5 +1,5 @@ -#ifndef GFXPRINT_H -#define GFXPRINT_H +#ifndef LIBU64_GFXPRINT_H +#define LIBU64_GFXPRINT_H #include "ultra64.h" #include "color.h" diff --git a/include/libu64/mtxuty-cvt.h b/include/libu64/mtxuty-cvt.h new file mode 100644 index 0000000000..636978bb6f --- /dev/null +++ b/include/libu64/mtxuty-cvt.h @@ -0,0 +1,9 @@ +#ifndef LIBU64_MTXUTY_CVT_H +#define LIBU64_MTXUTY_CVT_H + +#include "ultra64.h" + +void MtxConv_F2L(Mtx* m1, MtxF* m2); +void MtxConv_L2F(MtxF* m1, Mtx* m2); + +#endif diff --git a/include/libu64/overlay.h b/include/libu64/overlay.h new file mode 100644 index 0000000000..47f3276576 --- /dev/null +++ b/include/libu64/overlay.h @@ -0,0 +1,42 @@ +#ifndef LIBU64_OVERLAY_H +#define LIBU64_OVERLAY_H + +#include "ultra64.h" + +/* Relocation entry field getters */ +#define RELOC_SECTION(reloc) ((reloc) >> 30) +#define RELOC_OFFSET(reloc) ((reloc) & 0xFFFFFF) +#define RELOC_TYPE_MASK(reloc) ((reloc) & 0x3F000000) +#define RELOC_TYPE_SHIFT 24 + +/* MIPS Relocation Types, matches the MIPS ELF spec */ +#define R_MIPS_32 2 +#define R_MIPS_26 4 +#define R_MIPS_HI16 5 +#define R_MIPS_LO16 6 + +/* Reloc section id, must fit in 2 bits otherwise the relocation format must be modified */ +typedef enum RelocSectionId { + /* 0 */ RELOC_SECTION_NULL, + /* 1 */ RELOC_SECTION_TEXT, + /* 2 */ RELOC_SECTION_DATA, + /* 3 */ RELOC_SECTION_RODATA, + /* 4 */ RELOC_SECTION_MAX +} RelocSectionId; + +typedef struct OverlayRelocationSection { + /* 0x00 */ u32 textSize; + /* 0x04 */ u32 dataSize; + /* 0x08 */ u32 rodataSize; + /* 0x0C */ u32 bssSize; + /* 0x10 */ u32 nRelocations; + /* 0x14 */ u32 relocations[1]; // size is nRelocations +} OverlayRelocationSection; // size >= 0x18 + +extern s32 gOverlayLogSeverity; + +void* Overlay_AllocateAndLoad(uintptr_t vromStart, uintptr_t vromEnd, void* vramStart, void* vramEnd); +void Overlay_Relocate(void* allocatedRamAddr, OverlayRelocationSection* ovlRelocs, void* vramStart); +size_t Overlay_Load(uintptr_t vromStart, uintptr_t vromEnd, void* vramStart, void* vramEnd, void* allocatedRamAddr); + +#endif diff --git a/include/libu64/pad.h b/include/libu64/pad.h new file mode 100644 index 0000000000..f5ab44d8c4 --- /dev/null +++ b/include/libu64/pad.h @@ -0,0 +1,31 @@ +#ifndef LIBU64_PAD_H +#define LIBU64_PAD_H + +#include "ultra64.h" + +typedef struct Input { + /* 0x00 */ OSContPad cur; + /* 0x06 */ OSContPad prev; + /* 0x0C */ OSContPad press; // X/Y store delta from last frame + /* 0x12 */ OSContPad rel; // X/Y store adjusted +} Input; // size = 0x18 + +void PadUtils_Init(Input* input); +void func_800FCB70(void); +void PadUtils_ResetPressRel(Input* input); +u32 PadUtils_CheckCurExact(Input* input, u16 value); +u32 PadUtils_CheckCur(Input* input, u16 key); +u32 PadUtils_CheckPressed(Input* input, u16 key); +u32 PadUtils_CheckReleased(Input* input, u16 key); +u16 PadUtils_GetCurButton(Input* input); +u16 PadUtils_GetPressButton(Input* input); +s8 PadUtils_GetCurX(Input* input); +s8 PadUtils_GetCurY(Input* input); +void PadUtils_SetRelXY(Input* input, s32 x, s32 y); +s8 PadUtils_GetRelXImpl(Input* input); +s8 PadUtils_GetRelYImpl(Input* input); +s8 PadUtils_GetRelX(Input* input); +s8 PadUtils_GetRelY(Input* input); +void PadUtils_UpdateRelXY(Input* input); + +#endif diff --git a/include/libu64/padsetup.h b/include/libu64/padsetup.h new file mode 100644 index 0000000000..0aab4a729c --- /dev/null +++ b/include/libu64/padsetup.h @@ -0,0 +1,8 @@ +#ifndef LIBU64_PADSETUP_H +#define LIBU64_PADSETUP_H + +#include "ultra64.h" + +s32 PadSetup_Init(OSMesgQueue* mq, u8* outMask, OSContStatus* status); + +#endif diff --git a/include/line_numbers.h b/include/line_numbers.h index bc11d555db..adc2d654d5 100644 --- a/include/line_numbers.h +++ b/include/line_numbers.h @@ -1,6 +1,8 @@ #ifndef LINE_NUMBERS_H #define LINE_NUMBERS_H +#include "versions.h" + // The macros in this file serve to reduce clutter from version differences that are only due to line numbers being different. // The "LN" macros defined here are not meant to be used directly. See the wrapper macros below. diff --git a/include/listalloc.h b/include/listalloc.h new file mode 100644 index 0000000000..76321a3e87 --- /dev/null +++ b/include/listalloc.h @@ -0,0 +1,16 @@ +#ifndef LISTALLOC_H +#define LISTALLOC_H + +#include "ultra64/ultratypes.h" + +typedef struct ListAlloc { + /* 0x00 */ struct ListAlloc* prev; + /* 0x04 */ struct ListAlloc* next; +} ListAlloc; // size = 0x8 + +ListAlloc* ListAlloc_Init(ListAlloc* this); +void* ListAlloc_Alloc(ListAlloc* this, u32 size); +void ListAlloc_Free(ListAlloc* this, void* data); +void ListAlloc_FreeAll(ListAlloc* this); + +#endif diff --git a/include/macros.h b/include/macros.h index d7547482c0..aa81ef061b 100644 --- a/include/macros.h +++ b/include/macros.h @@ -4,6 +4,9 @@ #include "terminal.h" #include "versions.h" +#define SCREEN_WIDTH 320 +#define SCREEN_HEIGHT 240 + #ifndef AVOID_UB #define BAD_RETURN(type) type #else @@ -52,10 +55,10 @@ #if DEBUG_FEATURES #define PRINTF osSyncPrintf +#elif defined(EGCS) +#define PRINTF(format, args...) while (0) osSyncPrintf(format, ##args) #elif IDO_PRINTF_WORKAROUND #define PRINTF(args) (void)0 -#elif defined(__GNUC__) && __GNUC__ < 3 -#define PRINTF(format, args...) while (0) osSyncPrintf(format, ##args) #else #define PRINTF(format, ...) (void)0 #endif @@ -87,61 +90,11 @@ #endif #if DEBUG_FEATURES -#define LOG(exp, value, format, file, line) \ - do { \ - LogUtils_LogThreadId(file, line); \ - osSyncPrintf(exp " = " format "\n", value); \ - } while (0) -#else -#define LOG(exp, value, format, file, line) (void)(value) -#endif - -#define LOG_STRING(string, file, line) LOG(#string, string, "%s", file, line) -#define LOG_ADDRESS(exp, value, file, line) LOG(exp, value, "%08x", file, line) -#define LOG_TIME(exp, value, file, line) LOG(exp, value, "%lld", file, line) -#define LOG_NUM(exp, value, file, line) LOG(exp, value, "%d", file, line) -#define LOG_HEX(exp, value, file, line) LOG(exp, value, "%x", file, line) -#define LOG_HEX32(exp, value, file, line) LOG(exp, value, "%08x", file, line) -#define LOG_FLOAT(exp, value, file, line) LOG(exp, value, "%f", file, line) - -#define SET_NEXT_GAMESTATE(curState, newInit, newStruct) \ - do { \ - GameState* state = curState; \ - \ - (state)->init = newInit; \ - (state)->size = sizeof(newStruct); \ - } while (0) - -#if DEBUG_FEATURES - #define DMA_REQUEST_SYNC(ram, vrom, size, file, line) DmaMgr_RequestSyncDebug(ram, vrom, size, file, line) #define DMA_REQUEST_ASYNC(req, ram, vrom, size, unk5, queue, msg, file, line) DmaMgr_RequestAsyncDebug(req, ram, vrom, size, unk5, queue, msg, file, line) -#define GAME_STATE_ALLOC(gameState, size, file, line) GameState_Alloc(gameState, size, file, line) -#define DEBUG_ARENA_MALLOC(size, file, line) DebugArena_MallocDebug(size, file, line) -#define DEBUG_ARENA_MALLOC_R(size, file, line) DebugArena_MallocRDebug(size, file, line) -#define DEBUG_ARENA_FREE(size, file, line) DebugArena_FreeDebug(size, file, line) -#define SYSTEM_ARENA_MALLOC(size, file, line) SystemArena_MallocDebug(size, file, line) -#define SYSTEM_ARENA_MALLOC_R(size, file, line) SystemArena_MallocRDebug(size, file, line) -#define SYSTEM_ARENA_FREE(size, file, line) SystemArena_FreeDebug(size, file, line) -#define LOG_UTILS_CHECK_NULL_POINTER(exp, ptr, file, line) LogUtils_CheckNullPointer(exp, ptr, file, line) -#define LOG_UTILS_CHECK_VALID_POINTER(exp, ptr, file, line) LogUtils_CheckValidPointer(exp, ptr, file, line) -#define GAME_ALLOC_MALLOC(alloc, size, file, line) GameAlloc_MallocDebug(alloc, size, file, line) - #else - #define DMA_REQUEST_SYNC(ram, vrom, size, file, line) DmaMgr_RequestSync(ram, vrom, size) #define DMA_REQUEST_ASYNC(req, ram, vrom, size, unk5, queue, msg, file, line) DmaMgr_RequestAsync(req, ram, vrom, size, unk5, queue, msg) -#define GAME_STATE_ALLOC(gameState, size, file, line) THA_AllocTailAlign16(&(gameState)->tha, size) -#define DEBUG_ARENA_MALLOC(size, file, line) DebugArena_Malloc(size) -#define DEBUG_ARENA_MALLOC_R(size, file, line) DebugArena_MallocR(size) -#define DEBUG_ARENA_FREE(size, file, line) DebugArena_Free(size) -#define SYSTEM_ARENA_MALLOC(size, file, line) SystemArena_Malloc(size) -#define SYSTEM_ARENA_MALLOC_R(size, file, line) SystemArena_MallocR(size) -#define SYSTEM_ARENA_FREE(size, file, line) SystemArena_Free(size) -#define LOG_UTILS_CHECK_NULL_POINTER(exp, ptr, file, line) (void)0 -#define LOG_UTILS_CHECK_VALID_POINTER(exp, ptr, file, line) (void)0 -#define GAME_ALLOC_MALLOC(alloc, size, file, line) GameAlloc_Malloc(alloc, size) - #endif #if PLATFORM_N64 || DEBUG_FEATURES diff --git a/include/map.h b/include/map.h index 23d3eb3c88..88c5d9279a 100644 --- a/include/map.h +++ b/include/map.h @@ -67,6 +67,8 @@ typedef struct MapData { #define MAP_48x85_TEX_HEIGHT 85 #define MAP_48x85_TEX_SIZE ((MAP_48x85_TEX_WIDTH * MAP_48x85_TEX_HEIGHT) / 2) // 48x85 CI4 texture +extern MapData gMapDataTable; + void Map_SavePlayerInitialInfo(struct PlayState* play); void Map_SetFloorPalettesData(struct PlayState* play, s16 floor); void Map_InitData(struct PlayState* play, s16 room); diff --git a/include/map_select_state.h b/include/map_select_state.h new file mode 100644 index 0000000000..d2a6b43d19 --- /dev/null +++ b/include/map_select_state.h @@ -0,0 +1,41 @@ +#ifndef MAP_SELECT_STATE_H +#define MAP_SELECT_STATE_H + +#include "ultra64.h" +#include "z64game.h" +#include "z64view.h" + +struct MapSelectState; + +typedef struct MapSelectEntry { + /* 0x00 */ char* name; + /* 0x04 */ void (*loadFunc)(struct MapSelectState*, s32); + /* 0x08 */ s32 entranceIndex; +} MapSelectEntry; // size = 0xC + +typedef struct MapSelectState { + /* 0x0000 */ GameState state; + /* 0x00A8 */ View view; + /* 0x01D0 */ s32 count; + /* 0x01D4 */ MapSelectEntry* entries; + /* 0x01D8 */ s32 currentEntry; + /* 0x01DC */ s32 pageDownIndex; // Index of pageDownStops + /* 0x01E0 */ s32 pageDownStops[7]; + /* 0x01FC */ char unk_1FC[0x0C]; + /* 0x0208 */ s32 opt; + /* 0x020C */ s32 topDisplayedEntry; // The entry which is currently at the top of the screen + /* 0x0210 */ char unk_210[0x0C]; + /* 0x021C */ s32 verticalInputAccumulator; + /* 0x0220 */ s32 verticalInput; + /* 0x0224 */ s32 timerUp; + /* 0x0228 */ s32 timerDown; + /* 0x022C */ s32 lockUp; + /* 0x0230 */ s32 lockDown; + /* 0x0234 */ s32 unk_234; // unused + /* 0x0238 */ u8* staticSegment; +} MapSelectState; // size = 0x240 + +void MapSelect_Init(GameState* thisx); +void MapSelect_Destroy(GameState* thisx); + +#endif diff --git a/include/message_data_static.h b/include/message_data_static.h index 2b08302731..15e93ec475 100644 --- a/include/message_data_static.h +++ b/include/message_data_static.h @@ -47,9 +47,6 @@ typedef struct MessageTableEntry { #define DEFINE_MESSAGE_FFFC(textId, type, yPos, jpnMessage, nesMessage, gerMessage, fraMessage) \ DEFINE_MESSAGE_JPN(textId, type, yPos, jpnMessage, nesMessage, gerMessage, fraMessage) - -#define FONT_MESSAGE_OFFSET (_message_0xFFFC_jpn - (const char*)_jpn_message_data_staticSegmentStart) -#define FONT_MESSAGE_LENGTH (_message_0xFFFD_jpn - _message_0xFFFC_jpn) #else #define DEFINE_MESSAGE_NES(textId, type, yPos, jpnMessage, nesMessage, gerMessage, fraMessage) \ extern const char _message_##textId##_nes[]; \ @@ -61,9 +58,6 @@ typedef struct MessageTableEntry { #define DEFINE_MESSAGE_FFFC(textId, type, yPos, jpnMessage, nesMessage, gerMessage, fraMessage) \ DEFINE_MESSAGE_NES(textId, type, yPos, jpnMessage, nesMessage, gerMessage, fraMessage) - -#define FONT_MESSAGE_OFFSET (_message_0xFFFC_nes - (const char*)_nes_message_data_staticSegmentStart) -#define FONT_MESSAGE_LENGTH (_message_0xFFFD_nes - _message_0xFFFC_nes) #endif #define DEFINE_MESSAGE(textId, type, yPos, jpnMessage, nesMessage, gerMessage, fraMessage) \ diff --git a/include/padmgr.h b/include/padmgr.h index 5bfa98308d..4b9e6890cd 100644 --- a/include/padmgr.h +++ b/include/padmgr.h @@ -2,6 +2,7 @@ #define PADMGR_H #include "ultra64.h" +#include "libu64/pad.h" #include "irqmgr.h" #include "versions.h" @@ -11,13 +12,6 @@ typedef enum ControllerPakType { CONT_PAK_OTHER } ControllerPakType; -typedef struct Input { - /* 0x00 */ OSContPad cur; - /* 0x06 */ OSContPad prev; - /* 0x0C */ OSContPad press; // X/Y store delta from last frame - /* 0x12 */ OSContPad rel; // X/Y store adjusted -} Input; // size = 0x18 - typedef struct PadMgr { /* 0x0000 */ OSContStatus padStatus[MAXCONTROLLERS]; /* 0x0010 */ OSMesg serialMsg; diff --git a/include/prenmi_buff.h b/include/prenmi_buff.h new file mode 100644 index 0000000000..b0a9e66f72 --- /dev/null +++ b/include/prenmi_buff.h @@ -0,0 +1,25 @@ +#ifndef PRENMI_BUFF_H +#define PRENMI_BUFF_H + +#include "ultra64.h" +#include "alignment.h" + +// This struct is used at osAppNMIBuffer which is not at an 8-byte aligned address. This causes an unaligned access +// crash if the OSTime variables use 64-bit load/store instructions, which is the case in any MIPS ABI other than O32 +// where 64-bit load/store instructions are emulated with 2x 32-bit load/store instructions. The alignment attribute +// conveys that this structure will not always be 8-bytes aligned, allowing a modern compiler to generate non-crashing +// code for accessing these. This is not an issue in the original compiler as it only output O32 ABI code. +ALIGNED(4) typedef struct PreNmiBuff { + /* 0x00 */ u32 resetting; + /* 0x04 */ u32 resetCount; + /* 0x08 */ OSTime duration; + /* 0x10 */ OSTime resetTime; +} PreNmiBuff; // size = 0x18 (actually osAppNMIBuffer is 0x40 bytes large but the rest is unused) + +extern PreNmiBuff* gAppNmiBufferPtr; + +void PreNmiBuff_Init(PreNmiBuff* this); +void PreNmiBuff_SetReset(PreNmiBuff* this); +u32 PreNmiBuff_IsResetting(PreNmiBuff* this); + +#endif diff --git a/include/prenmi_state.h b/include/prenmi_state.h new file mode 100644 index 0000000000..3710425ca9 --- /dev/null +++ b/include/prenmi_state.h @@ -0,0 +1,16 @@ +#ifndef PRENMI_STATE_H +#define PRENMI_STATE_H + +#include "ultra64.h" +#include "z64game.h" + +typedef struct PreNMIState { + /* 0x00 */ GameState state; + /* 0xA4 */ u32 timer; + /* 0xA8 */ s32 unk_A8; +} PreNMIState; // size = 0xAC + +void PreNMI_Init(GameState* thisx); +void PreNMI_Destroy(GameState* thisx); + +#endif diff --git a/include/prerender.h b/include/prerender.h index ca16826341..4231234a8d 100644 --- a/include/prerender.h +++ b/include/prerender.h @@ -2,11 +2,7 @@ #define PRERENDER_H #include "ultra64/ultratypes.h" - -typedef struct ListAlloc { - /* 0x00 */ struct ListAlloc* prev; - /* 0x04 */ struct ListAlloc* next; -} ListAlloc; // size = 0x8 +#include "listalloc.h" typedef struct PreRender { /* 0x00 */ s32 width; diff --git a/include/regs.h b/include/regs.h index 50e43769ce..6eccca7701 100644 --- a/include/regs.h +++ b/include/regs.h @@ -1,6 +1,7 @@ #ifndef REGS_H #define REGS_H +#include "ultra64.h" #include "versions.h" #define REG_GROUPS 29 // number of REG groups, i.e. REG, SREG, OREG, etc. diff --git a/include/sample_state.h b/include/sample_state.h new file mode 100644 index 0000000000..b568a83f95 --- /dev/null +++ b/include/sample_state.h @@ -0,0 +1,17 @@ +#ifndef SAMPLE_STATE_H +#define SAMPLE_STATE_H + +#include "ultra64.h" +#include "z64game.h" +#include "z64view.h" + +typedef struct SampleState { + /* 0x0000 */ GameState state; + /* 0x00A4 */ u8* staticSegment; + /* 0x00A8 */ View view; +} SampleState; // size = 0x1D0 + +void Sample_Init(GameState* thisx); +void Sample_Destroy(GameState* thisx); + +#endif diff --git a/include/segment_symbols.h b/include/segment_symbols.h index 1aacb246d0..d036e7cec0 100644 --- a/include/segment_symbols.h +++ b/include/segment_symbols.h @@ -1,8 +1,8 @@ #ifndef SEGMENT_SYMBOLS_H #define SEGMENT_SYMBOLS_H +#include "ultra64/ultratypes.h" #include "versions.h" -#include "z64.h" #define DECLARE_SEGMENT(name) \ extern u8 _##name##SegmentStart[]; \ diff --git a/include/setup_state.h b/include/setup_state.h new file mode 100644 index 0000000000..863b71401e --- /dev/null +++ b/include/setup_state.h @@ -0,0 +1,13 @@ +#ifndef SETUP_STATE_H +#define SETUP_STATE_H + +#include "z64game.h" + +typedef struct SetupState { + /* 0x00 */ GameState state; +} SetupState; // size = 0xA4 + +void Setup_Init(GameState* thisx); +void Setup_Destroy(GameState* thisx); + +#endif diff --git a/include/speed_meter.h b/include/speed_meter.h new file mode 100644 index 0000000000..f8779902f9 --- /dev/null +++ b/include/speed_meter.h @@ -0,0 +1,34 @@ +#ifndef SPEEDMETER_H +#define SPEEDMETER_H + +#include "ultra64.h" + +struct GraphicsContext; +struct GameState; + +typedef struct SpeedMeter { + /* 0x00 */ char unk_00[0x18]; + /* 0x18 */ s32 x; // Unused + /* 0x1C */ s32 y; +} SpeedMeter; // size = 0x20 + +extern volatile OSTime gAudioThreadUpdateTimeTotalPerGfxTask; +extern volatile OSTime gGfxTaskSentToNextReadyMinusAudioThreadUpdateTime; +extern volatile OSTime gRSPAudioTimeTotal; +extern volatile OSTime gRSPGfxTimeTotal; +extern volatile OSTime gRDPTimeTotal; +extern volatile OSTime gGraphUpdatePeriod; +extern volatile OSTime gAudioThreadUpdateTimeStart; +extern volatile OSTime gAudioThreadUpdateTimeAcc; +extern volatile OSTime gRSPAudioTimeAcc; +extern volatile OSTime gRSPGfxTimeAcc; +extern volatile OSTime gRSPOtherTimeAcc; +extern volatile OSTime D_8016A578; +extern volatile OSTime gRDPTimeAcc; + +void SpeedMeter_Init(SpeedMeter* this); +void SpeedMeter_Destroy(SpeedMeter* this); +void SpeedMeter_DrawTimeEntries(SpeedMeter* this, struct GraphicsContext* gfxCtx); +void SpeedMeter_DrawAllocEntries(SpeedMeter* meter, struct GraphicsContext* gfxCtx, struct GameState* state); + +#endif diff --git a/include/speedmeter.h b/include/speedmeter.h deleted file mode 100644 index 393c89de8d..0000000000 --- a/include/speedmeter.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef SPEEDMETER_H -#define SPEEDMETER_H - -#include "ultra64/ultratypes.h" - -struct GraphicsContext; -struct GameState; - -typedef struct SpeedMeter { - /* 0x00 */ char unk_00[0x18]; - /* 0x18 */ s32 x; // Unused - /* 0x1C */ s32 y; -} SpeedMeter; // size = 0x20 - -void SpeedMeter_Init(SpeedMeter* this); -void SpeedMeter_Destroy(SpeedMeter* this); -void SpeedMeter_DrawTimeEntries(SpeedMeter* this, struct GraphicsContext* gfxCtx); -void SpeedMeter_DrawAllocEntries(SpeedMeter* meter, struct GraphicsContext* gfxCtx, struct GameState* state); - -#endif diff --git a/include/sys_debug_controller.h b/include/sys_debug_controller.h new file mode 100644 index 0000000000..0345d85aaf --- /dev/null +++ b/include/sys_debug_controller.h @@ -0,0 +1,13 @@ +#ifndef SYS_DEBUG_CONTROLLER_H +#define SYS_DEBUG_CONTROLLER_H + +#include "ultra64/ultratypes.h" + +#if DEBUG_FEATURES +extern u32 gIsCtrlr2Valid; + +void func_800D31F0(void); +void func_800D3210(void); +#endif + +#endif diff --git a/include/sys_freeze.h b/include/sys_freeze.h new file mode 100644 index 0000000000..0e033cacd9 --- /dev/null +++ b/include/sys_freeze.h @@ -0,0 +1,8 @@ +#ifndef SYS_FREEZE_H +#define SYS_FREEZE_H + +#include "attributes.h" + +NORETURN void func_800D31A0(void); + +#endif diff --git a/include/sys_matrix.h b/include/sys_matrix.h index 1d136a06ee..11d494c8c8 100644 --- a/include/sys_matrix.h +++ b/include/sys_matrix.h @@ -11,8 +11,8 @@ typedef enum MatrixMode { /* 1 */ MTXMODE_APPLY // applies transformation to the current matrix } MatrixMode; -extern Mtx gMtxClear; -extern MtxF gMtxFClear; +extern Mtx gIdentityMtx; +extern MtxF gIdentityMtxF; /* Stack operations */ diff --git a/include/sys_ucode.h b/include/sys_ucode.h new file mode 100644 index 0000000000..fa690d4784 --- /dev/null +++ b/include/sys_ucode.h @@ -0,0 +1,11 @@ +#ifndef SYS_UCODE_H +#define SYS_UCODE_H + +#include "ultra64.h" + +u64* SysUcode_GetUCodeBoot(void); +size_t SysUcode_GetUCodeBootSize(void); +u64* SysUcode_GetUCode(void); +u64* SysUcode_GetUCodeData(void); + +#endif diff --git a/include/tables/sequence_table.h b/include/tables/sequence_table.h index 3e8f13e5f9..70ccfcbae1 100644 --- a/include/tables/sequence_table.h +++ b/include/tables/sequence_table.h @@ -15,7 +15,7 @@ * - Argument 3: Cache load policy for the sequence (AudioCacheLoadType) * - Argument 4: Sequence flags */ -#if OOT_VERSION < PAL_1_0 || PLATFORM_GC +#if OOT_VERSION < PAL_1_0 || !PLATFORM_N64 #define SEQ_0_FLAGS SEQ_FLAG_FANFARE #else #define SEQ_0_FLAGS SEQ_FLAG_FANFARE | SEQ_FLAG_ENEMY diff --git a/include/tables/sfx/enemybank_table.h b/include/tables/sfx/enemybank_table.h index de741033e8..7cae1d7881 100644 --- a/include/tables/sfx/enemybank_table.h +++ b/include/tables/sfx/enemybank_table.h @@ -334,7 +334,7 @@ /* 0x3942 */ DEFINE_SFX(CHAN_4EA8, NA_SE_EN_BALINADE_THUNDER, 0x34, 3, 0, 0) /* 0x3943 */ DEFINE_SFX(CHAN_415D, NA_SE_EN_BALINADE_BL_SPARK, 0x20, 2, 0, 0) /* 0x3944 */ DEFINE_SFX(CHAN_4184, NA_SE_EN_BALINADE_BL_DEAD, 0x34, 3, 0, 0) -#if OOT_VERSION < PAL_1_0 || PLATFORM_GC +#if OOT_VERSION < PAL_1_0 || !PLATFORM_N64 /* 0x3945 */ DEFINE_SFX(CHAN_4E86, NA_SE_EN_BALINADE_BREAK2, 0x30, 3, 0, 0) #else /* 0x3945 */ DEFINE_SFX(CHAN_4E86, NA_SE_EN_BALINADE_BREAK2, 0x34, 3, 0, 0) diff --git a/include/tables/sfx/environmentbank_table.h b/include/tables/sfx/environmentbank_table.h index a2ecf23c0d..b0d0fb62f9 100644 --- a/include/tables/sfx/environmentbank_table.h +++ b/include/tables/sfx/environmentbank_table.h @@ -43,7 +43,7 @@ /* 0x281F */ DEFINE_SFX(CHAN_1B61, NA_SE_EV_TBOX_UNLOCK, 0x30, 0, 0, 0) /* 0x2820 */ DEFINE_SFX(CHAN_1B7D, NA_SE_EV_TBOX_OPEN, 0x30, 0, 0, 0) /* 0x2821 */ DEFINE_SFX(CHAN_1B93, NA_SE_SY_TIMER, 0xA0, 0, 0, SFX_FLAG_13 | SFX_FLAG_3) -#if OOT_VERSION < PAL_1_0 || PLATFORM_GC +#if OOT_VERSION < PAL_1_0 || !PLATFORM_N64 /* 0x2822 */ DEFINE_SFX(CHAN_1BE9, NA_SE_EV_FLAME_IGNITION, 0x20, 2, 0, 0) #else /* 0x2822 */ DEFINE_SFX(CHAN_1BE9, NA_SE_EV_FLAME_IGNITION, 0x2D, 2, 0, 0) @@ -108,7 +108,7 @@ /* 0x285C */ DEFINE_SFX(CHAN_2374, NA_SE_EV_BLOCKSINK, 0x30, 2, 0, 0) /* 0x285D */ DEFINE_SFX(CHAN_2389, NA_SE_EV_CROWD, 0x30, 0, 0, SFX_FLAG_13 | SFX_FLAG_12 | SFX_FLAG_11) /* 0x285E */ DEFINE_SFX(CHAN_23A6, NA_SE_EV_WATER_LEVEL_DOWN, 0x30, 0, 0, 0) -#if OOT_VERSION < PAL_1_0 || PLATFORM_GC +#if OOT_VERSION < PAL_1_0 || !PLATFORM_N64 /* 0x285F */ DEFINE_SFX(CHAN_23D5, NA_SE_EV_NAVY_VANISH, 0x30, 0, 0, 0) #else /* 0x285F */ DEFINE_SFX(CHAN_23D5, NA_SE_EV_NAVY_VANISH, 0x2C, 0, 0, 0) diff --git a/include/tables/sfx/itembank_table.h b/include/tables/sfx/itembank_table.h index ed2001a557..e74469cfec 100644 --- a/include/tables/sfx/itembank_table.h +++ b/include/tables/sfx/itembank_table.h @@ -28,7 +28,7 @@ /* 0x1810 */ DEFINE_SFX(CHAN_10A2, NA_SE_IT_BOOMERANG_FLY, 0x30, 0, 0, SFX_FLAG_10) /* 0x1811 */ DEFINE_SFX(CHAN_10D2, NA_SE_IT_SWORD_STRIKE, 0x40, 2, 0, 0) /* 0x1812 */ DEFINE_SFX(CHAN_10E6, NA_SE_IT_HAMMER_SWING, 0x30, 0, 1, 0) -#if OOT_VERSION < PAL_1_0 || PLATFORM_GC +#if OOT_VERSION < PAL_1_0 || !PLATFORM_N64 /* 0x1813 */ DEFINE_SFX(CHAN_10F4, NA_SE_IT_HOOKSHOT_REFLECT, 0x30, 0, 0, 0) #else /* 0x1813 */ DEFINE_SFX(CHAN_10F4, NA_SE_IT_HOOKSHOT_REFLECT, 0x20, 0, 0, 0) diff --git a/include/title_setup_state.h b/include/title_setup_state.h new file mode 100644 index 0000000000..30219872a8 --- /dev/null +++ b/include/title_setup_state.h @@ -0,0 +1,15 @@ +#ifndef TITLE_SETUP_STATE_H +#define TITLE_SETUP_STATE_H + +#include "z64game.h" +#include "z64view.h" + +typedef struct TitleSetupState { + /* 0x0000 */ GameState state; + /* 0x00A8 */ View view; +} TitleSetupState; // size = 0x1D0 + +void TitleSetup_Init(GameState* thisx); +void TitleSetup_Destroy(GameState* thisx); + +#endif diff --git a/include/ultra64.h b/include/ultra64.h index e8a4bd0ca7..9972a4dfe8 100644 --- a/include/ultra64.h +++ b/include/ultra64.h @@ -70,7 +70,6 @@ void* osViGetNextFramebuffer(void); void osCreatePiManager(OSPri pri, OSMesgQueue* cmdQueue, OSMesg* cmdBuf, s32 cmdMsgCnt); void __osDevMgrMain(void* arg); s32 __osPiRawStartDma(s32 dir, u32 cartAddr, void* dramAddr, size_t size); -u32 osVirtualToPhysical(void* vaddr); void osViBlack(u8 active); s32 __osSiRawReadIo(void* devAddr, u32* dst); OSId osGetThreadId(OSThread* thread); @@ -190,7 +189,6 @@ void osViSetEvent(OSMesgQueue* mq, OSMesg msg, u32 retraceCount); s32 osPfsIsPlug(OSMesgQueue* mq, u8* pattern); void __osPfsRequestData(u8 cmd); void __osPfsGetInitData(u8* pattern, OSContStatus* contData); -void guS2DInitBg(union uObjBg* bg); s32 __osPfsSelectBank(OSPfs* pfs, u8 bank); s32 osContSetCh(u8 ch); s32 osPfsFileState(OSPfs* pfs, s32 fileNo, OSPfsState* state); diff --git a/include/ultra64/convert.h b/include/ultra64/convert.h index 13679fc5b0..771fad19cd 100644 --- a/include/ultra64/convert.h +++ b/include/ultra64/convert.h @@ -15,4 +15,6 @@ #define OS_PHYSICAL_TO_K0(x) (void*)(((u32)(x)+0x80000000)) #define OS_PHYSICAL_TO_K1(x) (void*)(((u32)(x)+0xA0000000)) +u32 osVirtualToPhysical(void* vaddr); + #endif diff --git a/include/ultra64/message.h b/include/ultra64/message.h index dc89dc48ed..9b02d4f9cd 100644 --- a/include/ultra64/message.h +++ b/include/ultra64/message.h @@ -4,7 +4,11 @@ #define OS_MESG_NOBLOCK 0 #define OS_MESG_BLOCK 1 +#ifndef BBPLAYER #define OS_NUM_EVENTS 15 +#else +#define OS_NUM_EVENTS 31 +#endif #define OS_EVENT_SW1 0 /* CPU SW1 interrupt */ #define OS_EVENT_SW2 1 /* CPU SW2 interrupt */ diff --git a/include/ultra64/pi.h b/include/ultra64/pi.h index af18c407ea..42a90d7609 100644 --- a/include/ultra64/pi.h +++ b/include/ultra64/pi.h @@ -1,6 +1,7 @@ #ifndef ULTRA64_PI_H #define ULTRA64_PI_H +#include "stddef.h" #include "message.h" typedef struct __OSBlockInfo { diff --git a/include/variables.h b/include/variables.h index f5f4599e7a..612b3051b1 100644 --- a/include/variables.h +++ b/include/variables.h @@ -5,7 +5,7 @@ #include "libc64/os_malloc.h" #include "segment_symbols.h" -extern Mtx D_01000000; +struct MapData; extern void* osRomBase; extern s32 osTvType; @@ -34,7 +34,6 @@ extern u32 gViConfigFeatures; extern f32 gViConfigXScale; extern f32 gViConfigYScale; extern OSPiHandle* gCartHandle; -extern s32 gCurrentRegion; extern u32 __osPiAccessQueueEnabled; extern OSViMode osViModePalLan1; extern s32 osViClock; @@ -67,28 +66,14 @@ extern OSTime __osCurrentTime; extern u32 __osBaseCounter; extern u32 __osViIntrCount; extern u32 __osTimerCounter; -extern EffectSsOverlay gEffectSsOverlayTable[EFFECT_SS_TYPE_MAX]; -extern Gfx D_80116280[]; -extern ActorOverlay gActorOverlayTable[ACTOR_ID_MAX]; // original name: "actor_dlftbls" 801162A0 -extern s32 gMaxActorId; // original name: "MaxProfile" -extern s32 gDebugCamEnabled; -extern GameStateOverlay gGameStateOverlayTable[GAMESTATE_ID_MAX]; -extern s32 gZeldaArenaLogSeverity; -extern MapData gMapDataTable; extern s16 gSpoilingItems[3]; extern s16 gSpoilingItemReverts[3]; -extern Gfx gEmptyDL[]; - -extern u16 gSramSlotOffsets[]; // 4 16-colors palettes extern u64 gMojiFontTLUTs[4][4]; // original name: "moji_tlut" extern u64 gMojiFontTex[]; // original name: "font_ff" extern u8 gBossMarkState; -#if DEBUG_FEATURES -extern u32 gIsCtrlr2Valid; -#endif extern s16* gWaveSamples[9]; extern f32 gBendPitchOneOctaveFrequencies[256]; extern f32 gBendPitchTwoSemitonesFrequencies[256]; @@ -141,7 +126,6 @@ extern u8 gSoundModeList[]; extern u8 gAudioSpecId; extern u8 D_80133418; extern AudioSpec gAudioSpecs[18]; -extern s32 gOverlayLogSeverity; extern s32 gSystemArenaLogSeverity; extern u8 __osPfsInodeCacheBank; extern s32 __osPfsLastChannel; @@ -154,49 +138,11 @@ extern u8 gSequenceFontTable[]; extern u8 gSequenceTable[]; extern AudioTable gSampleBankTable; -extern u8 gUseCutsceneCam; -extern u16 D_8015FCCC; -extern char D_8015FCD0[20]; -extern u8 D_8015FCE4; -extern u16 gCamAtSplinePointsAppliedFrame; -extern u16 gCamEyePointAppliedFrame; -extern u16 gCamAtPointAppliedFrame; - -extern LightningStrike gLightningStrike; -// TODO: These variables are here for BSS ordering but ideally they should not -// be extern. This could be fixed by putting more stuff (e.g. struct definitions) -// between gLightningStrike and gCustomLensFlareOn. -extern s16 sLightningFlashAlpha; -extern s16 sSunDepthTestX; -extern s16 sSunDepthTestY; -extern u8 gCustomLensFlareOn; -extern Vec3f gCustomLensFlarePos; -extern s16 gLensFlareScale; -extern f32 gLensFlareColorIntensity; -extern s16 gLensFlareGlareStrength; -extern MapData* gMapData; +extern struct MapData* gMapData; extern f32 gBossMarkScale; extern u32 D_8016139C; extern PauseMapMarksData* gLoadedPauseMarkDataTable; -extern PreNmiBuff* gAppNmiBufferPtr; -extern Scheduler gScheduler; -extern PadMgr gPadMgr; -extern IrqMgr gIrqMgr; -extern volatile OSTime gAudioThreadUpdateTimeTotalPerGfxTask; -extern volatile OSTime gGfxTaskSentToNextReadyMinusAudioThreadUpdateTime; -extern volatile OSTime gRSPAudioTimeTotal; -extern volatile OSTime gRSPGfxTimeTotal; -extern volatile OSTime gRDPTimeTotal; -extern volatile OSTime gGraphUpdatePeriod; -extern volatile OSTime gAudioThreadUpdateTimeStart; -extern volatile OSTime gAudioThreadUpdateTimeAcc; -extern volatile OSTime gRSPAudioTimeAcc; -extern volatile OSTime gRSPGfxTimeAcc; -extern volatile OSTime gRSPOtherTimeAcc; -extern volatile OSTime D_8016A578; -extern volatile OSTime gRDPTimeAcc; - extern SfxBankEntry D_8016BAD0[9]; extern SfxBankEntry D_8016BC80[12]; extern SfxBankEntry D_8016BEC0[22]; @@ -218,11 +164,5 @@ extern u8 __osContLastCmd; extern u8 __osMaxControllers; extern __OSInode __osPfsInodeCache; extern OSPifRam __osPfsPifRam; -extern u16 gZBuffer[SCREEN_HEIGHT][SCREEN_WIDTH]; // 0x25800 bytes -extern u64 gGfxSPTaskOutputBuffer[0x3000]; // 0x18000 bytes -extern u64 gGfxSPTaskYieldBuffer[OS_YIELD_DATA_SIZE / sizeof(u64)]; // 0xC00 bytes -extern u64 gGfxSPTaskStack[SP_DRAM_STACK_SIZE64]; // 0x400 bytes -extern GfxPool gGfxPools[2]; // 0x24820 bytes -extern u8 gAudioHeap[0x38000]; // 0x38000 bytes #endif diff --git a/include/vi_mode.h b/include/vi_mode.h new file mode 100644 index 0000000000..89de610a88 --- /dev/null +++ b/include/vi_mode.h @@ -0,0 +1,45 @@ +#ifndef VI_MODE_H +#define VI_MODE_H + +#include "ultra64.h" +#include "libu64/pad.h" +#include "versions.h" + +typedef enum ViModeEditState { +#if OOT_VERSION < PAL_1_0 + /* -2 */ VI_MODE_EDIT_STATE_NEGATIVE_2 = -2, + /* -1 */ VI_MODE_EDIT_STATE_NEGATIVE_1, + /* 0 */ VI_MODE_EDIT_STATE_INACTIVE, + /* 1 */ VI_MODE_EDIT_STATE_2, // active, more adjustments + /* 2 */ VI_MODE_EDIT_STATE_3 // active, more adjustments, print comparison with NTSC LAN1 mode +#else + /* 0 */ VI_MODE_EDIT_STATE_INACTIVE, + /* 1 */ VI_MODE_EDIT_STATE_ACTIVE, + /* 2 */ VI_MODE_EDIT_STATE_2, // active, more adjustments + /* 3 */ VI_MODE_EDIT_STATE_3 // active, more adjustments, print comparison with NTSC LAN1 mode +#endif +} ViModeEditState; + +typedef struct ViMode { + /* 0x00 */ OSViMode customViMode; + /* 0x50 */ s32 viHeight; + /* 0x54 */ s32 viWidth; + /* 0x58 */ s32 rightAdjust; + /* 0x5C */ s32 leftAdjust; + /* 0x60 */ s32 lowerAdjust; + /* 0x64 */ s32 upperAdjust; + /* 0x68 */ s32 editState; + /* 0x6C */ s32 tvType; + /* 0x70 */ u32 loRes; + /* 0x74 */ u32 antialiasOff; + /* 0x78 */ u32 modeN; // Controls interlacing, the meaning of this mode is different based on choice of resolution + /* 0x7C */ u32 fb16Bit; + /* 0x80 */ u32 viFeatures; + /* 0x84 */ u32 unk_84; +} ViMode; // size = 0x88 + +void ViMode_Init(ViMode* viMode); +void ViMode_Destroy(ViMode* viMode); +void ViMode_Update(ViMode* viMode, Input* input); + +#endif diff --git a/include/z64.h b/include/z64.h index 5154001d2f..a0ba2873d7 100644 --- a/include/z64.h +++ b/include/z64.h @@ -4,421 +4,23 @@ #include "ultra64.h" #include "ultra64/gs2dex.h" #include "attributes.h" -#include "audiomgr.h" -#include "controller.h" #include "versions.h" -#include "z64save.h" -#include "z64light.h" -#include "z64bgcheck.h" -#include "z64actor.h" #include "z64player.h" #include "z64audio.h" -#include "z64object.h" #include "z64ocarina.h" -#include "z64camera.h" -#include "z64environment.h" -#include "z64cutscene.h" -#include "z64collision_check.h" #include "z64curve.h" -#include "z64scene.h" #include "z64effect.h" -#include "z64game_over.h" -#include "z64inventory.h" -#include "z64item.h" #include "z64animation.h" #include "z64animation_legacy.h" -#include "z64dma.h" -#include "letterbox.h" -#include "z64math.h" -#include "z64map_mark.h" -#include "z64message.h" -#include "z64olib.h" -#include "one_point_cutscene.h" -#include "z64pause.h" #include "z64play.h" #include "z64skin.h" #include "z64skin_matrix.h" -#include "z64game.h" -#include "z64transition.h" -#include "z64transition_instances.h" -#include "z64interface.h" -#include "z64sfx_source.h" -#include "z64skybox.h" -#include "z64sram.h" -#include "z64view.h" -#include "z64vis.h" -#include "zelda_arena.h" #include "alignment.h" #include "audiothread_cmd.h" -#include "seqcmd.h" -#include "sequence.h" #include "sfx.h" #include "color.h" -#include "gfxprint.h" -#include "z_lib.h" -#include "ichain.h" -#include "regs.h" -#include "irqmgr.h" -#include "padmgr.h" -#include "sched.h" -#include "rumble.h" -#include "map.h" -#include "mempak.h" -#include "tha.h" -#include "thga.h" -#include "speedmeter.h" -#include "gfx.h" -#include "gfx_setupdl.h" -#include "gfxalloc.h" -#include "jpeg.h" -#include "prerender.h" -#include "rand.h" -#include "libc64/qrand.h" -#include "sys_math.h" -#include "sys_math3d.h" -#include "libc64/math64.h" -#include "sys_matrix.h" -#include "main.h" -#include "segmented_address.h" -#include "stackcheck.h" -#include "kaleido_manager.h" -#include "libc64/aprintf.h" -#include "libc64/malloc.h" -#include "libc64/sleep.h" -#include "libc64/sprintf.h" +#include "sys_matrix.h" // in room assets, gIdentityMtx -#define SCREEN_WIDTH 320 -#define SCREEN_HEIGHT 240 - -#define THREAD_PRI_IDLE_INIT 10 -#define THREAD_PRI_MAIN_INIT 10 -#define THREAD_PRI_DMAMGR_LOW 10 // Used when decompressing files -#define THREAD_PRI_GRAPH 11 -#define THREAD_PRI_AUDIOMGR 12 -#define THREAD_PRI_N64DD 13 -#define THREAD_PRI_DDMSG 13 -#define THREAD_PRI_PADMGR 14 -#define THREAD_PRI_MAIN 15 -#define THREAD_PRI_SCHED 15 -#define THREAD_PRI_DMAMGR 16 -#define THREAD_PRI_IRQMGR 17 -#define THREAD_PRI_FAULT_CLIENT (OS_PRIORITY_APPMAX - 1) -#define THREAD_PRI_FAULT OS_PRIORITY_APPMAX - -#define THREAD_ID_IDLE 1 -#define THREAD_ID_FAULT 2 -#define THREAD_ID_MAIN 3 -#define THREAD_ID_GRAPH 4 -#define THREAD_ID_SCHED 5 -#define THREAD_ID_PADMGR 7 -#define THREAD_ID_N64DD 8 -#define THREAD_ID_DDMSG 9 -#define THREAD_ID_AUDIOMGR 10 -#define THREAD_ID_DMAMGR 18 -#define THREAD_ID_IRQMGR 19 - -typedef enum LensMode { - /* 0 */ LENS_MODE_SHOW_ACTORS, // lens actors are invisible by default, and shown by using lens (for example, invisible enemies) - /* 1 */ LENS_MODE_HIDE_ACTORS // lens actors are visible by default, and hidden by using lens (for example, fake walls) -} LensMode; - -typedef struct SetupState { - /* 0x00 */ GameState state; -} SetupState; // size = 0xA4 - -typedef struct ConsoleLogoState { - /* 0x0000 */ GameState state; - /* 0x00A4 */ u8* staticSegment; - /* 0x00A8 */ View view; - /* 0x01D0 */ SramContext sramCtx; - /* 0x01D4 */ s16 unk_1D4; - /* 0x01D6 */ s16 coverAlpha; - /* 0x01D8 */ s16 addAlpha; - /* 0x01DA */ s16 visibleDuration; - /* 0x01DC */ s16 ult; - /* 0x01DE */ s16 uls; - /* 0x01E0 */ u8 unk_1E0; - /* 0x01E1 */ u8 exit; - /* 0x01E2 */ char unk_1E2[0x06]; -} ConsoleLogoState; // size = 0x1E8 - -struct MapSelectState; - -typedef struct SceneSelectEntry { - /* 0x00 */ char* name; - /* 0x04 */ void (*loadFunc)(struct MapSelectState*, s32); - /* 0x08 */ s32 entranceIndex; -} SceneSelectEntry; // size = 0xC - -typedef struct MapSelectState { - /* 0x0000 */ GameState state; - /* 0x00A8 */ View view; - /* 0x01D0 */ s32 count; - /* 0x01D4 */ SceneSelectEntry* scenes; - /* 0x01D8 */ s32 currentScene; - /* 0x01DC */ s32 pageDownIndex; // Index of pageDownStops - /* 0x01E0 */ s32 pageDownStops[7]; - /* 0x01FC */ char unk_1FC[0x0C]; - /* 0x0208 */ s32 opt; - /* 0x020C */ s32 topDisplayedScene; // The scene which is currently at the top of the screen - /* 0x0210 */ char unk_210[0x0C]; - /* 0x021C */ s32 verticalInputAccumulator; - /* 0x0220 */ s32 verticalInput; - /* 0x0224 */ s32 timerUp; - /* 0x0228 */ s32 timerDown; - /* 0x022C */ s32 lockUp; - /* 0x0230 */ s32 lockDown; - /* 0x0234 */ s32 unk_234; // unused - /* 0x0238 */ u8* staticSegment; -} MapSelectState; // size = 0x240 - -typedef struct SampleState { - /* 0x0000 */ GameState state; - /* 0x00A4 */ u8* staticSegment; - /* 0x00A8 */ View view; -} SampleState; // size = 0x1D0 - -typedef struct QuestHintCmd { - /* 0x00 */ u8 byte0; - /* 0x01 */ u8 byte1; - /* 0x02 */ u8 byte2; - /* 0x03 */ u8 byte3; -} QuestHintCmd; // size = 0x4 - -typedef enum PauseBgPreRenderState { - /* 0 */ PAUSE_BG_PRERENDER_OFF, // Inactive, do nothing. - /* 1 */ PAUSE_BG_PRERENDER_SETUP, // The current frame is only drawn for the purpose of serving as the pause background. - /* 2 */ PAUSE_BG_PRERENDER_PROCESS, // The previous frame was PAUSE_BG_PRERENDER_SETUP, now apply prerender filters. - /* 3 */ PAUSE_BG_PRERENDER_READY, // The pause background is ready to be used. - /* 4 */ PAUSE_BG_PRERENDER_MAX -} PauseBgPreRenderState; - -typedef enum TransitionTileState { - /* 0 */ TRANS_TILE_OFF, // Inactive, do nothing - /* 1 */ TRANS_TILE_SETUP, // Save the necessary buffers - /* 2 */ TRANS_TILE_PROCESS, // Initialize the transition - /* 3 */ TRANS_TILE_READY // The transition is ready, so will update and draw each frame -} TransitionTileState; - -typedef struct TitleSetupState { - /* 0x0000 */ GameState state; - /* 0x00A8 */ View view; -} TitleSetupState; // size = 0x1D0 - -typedef struct FileSelectState { - /* 0x00000 */ GameState state; - /* 0x000A4 */ Vtx* windowVtx; - /* 0x000A8 */ u8* staticSegment; - /* 0x000AC */ u8* parameterSegment; -#if OOT_PAL - /* 0x000B0 */ u8* objectMagSegment; -#endif - /* 0x000B8 */ View view; - /* 0x001E0 */ SramContext sramCtx; - /* 0x001E4 */ char unk_1E4[0x4]; - /* 0x001E8 */ SkyboxContext skyboxCtx; - /* 0x00348 */ MessageContext msgCtx; - /* 0x0E760 */ Font font; - /* 0x1C8E8 */ EnvironmentContext envCtx; - /* 0x1C9E4 */ char unk_1C9E4[0x4]; - /* 0x1C9E8 */ Vtx* windowContentVtx; - /* 0x1C9EC */ Vtx* keyboardVtx; - /* 0x1C9F0 */ Vtx* nameEntryVtx; - /* 0x1C9F4 */ u8 n64ddFlag; - /* 0x1C9F6 */ u16 deaths[3]; - /* 0x1C9FC */ u8 fileNames[3][8]; - /* 0x1CA14 */ u16 healthCapacities[3]; - /* 0x1CA1C */ u32 questItems[3]; - /* 0x1CA28 */ s16 n64ddFlags[3]; - /* 0x1CA2E */ s8 defense[3]; -#if OOT_PAL - /* 0x1CA32 */ u16 health[3]; -#endif - /* 0x1CA38 */ s16 buttonIndex; - /* 0x1CA3A */ s16 confirmButtonIndex; // 0: yes, 1: quit - /* 0x1CA3C */ s16 menuMode; - /* 0x1CA3E */ s16 configMode; - /* 0x1CA40 */ s16 prevConfigMode; - /* 0x1CA42 */ s16 nextConfigMode; - /* 0x1CA44 */ s16 selectMode; - /* 0x1CA46 */ s16 selectedFileIndex; - /* 0x1CA48 */ char unk_1CA48[0x2]; - /* 0x1CA4A */ s16 fileNamesY[3]; - /* 0x1CA50 */ s16 actionTimer; - /* 0x1CA52 */ s16 buttonYOffsets[6]; - /* 0x1CA5E */ s16 copyDestFileIndex; - /* 0x1CA60 */ s16 warningLabel; - /* 0x1CA62 */ s16 warningButtonIndex; - /* 0x1CA64 */ s16 titleLabel; - /* 0x1CA66 */ s16 nextTitleLabel; - /* 0x1CA68 */ s16 windowColor[3]; - /* 0x1CA6E */ s16 titleAlpha[2]; - /* 0x1CA72 */ s16 windowAlpha; - /* 0x1CA74 */ s16 fileButtonAlpha[3]; - /* 0x1CA7A */ s16 nameBoxAlpha[3]; - /* 0x1CA80 */ s16 nameAlpha[3]; - /* 0x1CA86 */ s16 connectorAlpha[3]; - /* 0x1CA8C */ s16 fileInfoAlpha[3]; - /* 0x1CA92 */ s16 actionButtonAlpha[2]; - /* 0x1CA96 */ s16 confirmButtonAlpha[2]; - /* 0x1CA9A */ s16 optionButtonAlpha; - /* 0x1CA9C */ s16 nameEntryBoxAlpha; - /* 0x1CA9E */ s16 controlsAlpha; - /* 0x1CAA0 */ s16 emptyFileTextAlpha; - /* 0x1CAA2 */ s16 highlightColor[4]; - /* 0x1CAAA */ s16 highlightPulseDir; // 0 fade out, 1 fade in - /* 0x1CAAC */ s16 unk_1CAAC; // initialized but never used - /* 0x1CAAE */ s16 confirmButtonTexIndices[2]; - /* 0x1CAB2 */ s16 inputTimerX; - /* 0x1CAB4 */ s16 inputTimerY; - /* 0x1CAB6 */ s16 stickXDir; - /* 0x1CAB8 */ s16 stickYDir; - /* 0x1CABA */ s16 stickAdjX; - /* 0x1CABC */ s16 stickAdjY; - /* 0x1CABE */ s16 nameEntryBoxPosX; - /* 0x1CAC0 */ s16 windowPosX; - /* 0x1CAC4 */ f32 windowRot; - /* 0x1CAC8 */ s16 kbdButton; // only for buttons, not characters - /* 0x1CACA */ s16 charPage; // 0: hiragana, 1: katakana, 2: alphabet - /* 0x1CACC */ s16 charBgAlpha; // square shape the letter sits in - /* 0x1CACE */ s16 charIndex; // 0 - 64, top left to bottom right - /* 0x1CAD0 */ s16 kbdX; // (0, 0) is top left character - /* 0x1CAD2 */ s16 kbdY; - /* 0x1CAD4 */ s16 newFileNameCharCount; - /* 0x1CAD6 */ s16 unk_1CAD6[5]; -} FileSelectState; // size = 0x1CAE0 - -typedef struct GameStateOverlay { - /* 0x00 */ void* loadedRamAddr; - /* 0x04 */ RomFile file; // if applicable - /* 0x0C */ void* vramStart; // if applicable - /* 0x10 */ void* vramEnd; // if applicable - /* 0x14 */ void* unk_14; - /* 0x18 */ void* init; // initializes and executes the given context - /* 0x1C */ void* destroy; // deconstructs the context, and sets the next context to load - /* 0x20 */ void* unk_20; - /* 0x24 */ void* unk_24; - /* 0x28 */ UNK_TYPE4 unk_28; - /* 0x2C */ u32 instanceSize; -} GameStateOverlay; // size = 0x30 - -typedef struct PreNMIState { - /* 0x00 */ GameState state; - /* 0xA4 */ u32 timer; - /* 0xA8 */ UNK_TYPE4 unk_A8; -} PreNMIState; // size = 0xAC - -typedef struct DebugDispObject { - /* 0x00 */ Vec3f pos; - /* 0x0C */ Vec3s rot; - /* 0x14 */ Vec3f scale; - /* 0x20 */ Color_RGBA8 color; - /* 0x24 */ s16 type; - /* 0x28 */ struct DebugDispObject* next; -} DebugDispObject; // size = 0x2C - -typedef struct ISVDbg { - /* 0x00 */ u32 magic; // IS64 - /* 0x04 */ u32 get; - /* 0x08 */ u8 unk_08[0x14-0x08]; - /* 0x14 */ u32 put; - /* 0x18 */ u8 unk_18[0x20-0x18]; - /* 0x20 */ u8 data[0x10000-0x20]; -} ISVDbg; - -typedef struct LocaleCartInfo { - /* 0x00 */ char name[0x18]; - /* 0x18 */ u32 mediaFormat; - /* 0x1C */ union { - struct { - u16 cartId; - u8 countryCode; - u8 version; - }; - u32 regionInfo; - }; -} LocaleCartInfo; // size = 0x20 - -typedef struct Yaz0Header { - /* 0x00 */ char magic[4]; // Yaz0 - /* 0x04 */ u32 decSize; - /* 0x08 */ u32 compInfoOffset; // only used in mio0 - /* 0x0C */ u32 uncompDataOffset; // only used in mio0 -} Yaz0Header; // size = 0x10 - -/* Relocation entry field getters */ -#define RELOC_SECTION(reloc) ((reloc) >> 30) -#define RELOC_OFFSET(reloc) ((reloc) & 0xFFFFFF) -#define RELOC_TYPE_MASK(reloc) ((reloc) & 0x3F000000) -#define RELOC_TYPE_SHIFT 24 - -/* MIPS Relocation Types, matches the MIPS ELF spec */ -#define R_MIPS_32 2 -#define R_MIPS_26 4 -#define R_MIPS_HI16 5 -#define R_MIPS_LO16 6 - -/* Reloc section id, must fit in 2 bits otherwise the relocation format must be modified */ -typedef enum RelocSectionId { - /* 0 */ RELOC_SECTION_NULL, - /* 1 */ RELOC_SECTION_TEXT, - /* 2 */ RELOC_SECTION_DATA, - /* 3 */ RELOC_SECTION_RODATA, - /* 4 */ RELOC_SECTION_MAX -} RelocSectionId; - -typedef struct OverlayRelocationSection { - /* 0x00 */ u32 textSize; - /* 0x04 */ u32 dataSize; - /* 0x08 */ u32 rodataSize; - /* 0x0C */ u32 bssSize; - /* 0x10 */ u32 nRelocations; - /* 0x14 */ u32 relocations[1]; // size is nRelocations -} OverlayRelocationSection; // size >= 0x18 - -// This struct is used at osAppNMIBuffer which is not at an 8-byte aligned address. This causes an unaligned access -// crash if the OSTime variables use 64-bit load/store instructions, which is the case in any MIPS ABI other than O32 -// where 64-bit load/store instructions are emulated with 2x 32-bit load/store instructions. The alignment attribute -// conveys that this structure will not always be 8-bytes aligned, allowing a modern compiler to generate non-crashing -// code for accessing these. This is not an issue in the original compiler as it only output O32 ABI code. -ALIGNED(4) typedef struct PreNmiBuff { - /* 0x00 */ u32 resetting; - /* 0x04 */ u32 resetCount; - /* 0x08 */ OSTime duration; - /* 0x10 */ OSTime resetTime; -} PreNmiBuff; // size = 0x18 (actually osAppNMIBuffer is 0x40 bytes large but the rest is unused) - -typedef enum ViModeEditState { -#if OOT_VERSION < PAL_1_0 - /* -2 */ VI_MODE_EDIT_STATE_NEGATIVE_2 = -2, - /* -1 */ VI_MODE_EDIT_STATE_NEGATIVE_1, - /* 0 */ VI_MODE_EDIT_STATE_INACTIVE, - /* 1 */ VI_MODE_EDIT_STATE_2, // active, more adjustments - /* 2 */ VI_MODE_EDIT_STATE_3 // active, more adjustments, print comparison with NTSC LAN1 mode -#else - /* 0 */ VI_MODE_EDIT_STATE_INACTIVE, - /* 1 */ VI_MODE_EDIT_STATE_ACTIVE, - /* 2 */ VI_MODE_EDIT_STATE_2, // active, more adjustments - /* 3 */ VI_MODE_EDIT_STATE_3 // active, more adjustments, print comparison with NTSC LAN1 mode -#endif -} ViModeEditState; - -typedef struct ViMode { - /* 0x00 */ OSViMode customViMode; - /* 0x50 */ s32 viHeight; - /* 0x54 */ s32 viWidth; - /* 0x58 */ s32 rightAdjust; - /* 0x5C */ s32 leftAdjust; - /* 0x60 */ s32 lowerAdjust; - /* 0x64 */ s32 upperAdjust; - /* 0x68 */ s32 editState; - /* 0x6C */ s32 tvType; - /* 0x70 */ u32 loRes; - /* 0x74 */ u32 antialiasOff; - /* 0x78 */ u32 modeN; // Controls interlacing, the meaning of this mode is different based on choice of resolution - /* 0x7C */ u32 fb16Bit; - /* 0x80 */ u32 viFeatures; - /* 0x84 */ u32 unk_84; -} ViMode; // size = 0x88 +// TODO: include all files listed above into the right place, and then delete this file. #endif diff --git a/include/z64actor.h b/include/z64actor.h index 6df2703455..2709356b99 100644 --- a/include/z64actor.h +++ b/include/z64actor.h @@ -3,6 +3,7 @@ #include "color.h" #include "romfile.h" +#include "z64actor_profile.h" #include "z64animation.h" #include "z64math.h" #include "z64collision_check.h" @@ -23,88 +24,16 @@ struct Actor; struct ActorEntry; +struct ActorOverlay; struct CollisionPoly; struct Lights; struct Player; struct PlayState; -typedef void (*ActorFunc)(struct Actor*, struct PlayState*); typedef void (*ActorShadowFunc)(struct Actor*, struct Lights*, struct PlayState*); typedef u16 (*NpcGetTextIdFunc)(struct PlayState*, struct Actor*); typedef s16 (*NpcUpdateTalkStateFunc)(struct PlayState*, struct Actor*); -typedef struct ActorProfile { - /* 0x00 */ s16 id; - /* 0x02 */ u8 category; // Classifies actor and determines when it will update or draw - /* 0x04 */ u32 flags; - /* 0x08 */ s16 objectId; - /* 0x0C */ u32 instanceSize; - /* 0x10 */ ActorFunc init; // Constructor - /* 0x14 */ ActorFunc destroy; // Destructor - /* 0x18 */ ActorFunc update; // Update Function - /* 0x1C */ ActorFunc draw; // Draw function -} ActorProfile; // size = 0x20 - -/** - * @see ACTOROVL_ALLOC_ABSOLUTE - */ -#if DEBUG_FEATURES -#define ACTOROVL_ABSOLUTE_SPACE_SIZE 0x27A0 -#else -#define ACTOROVL_ABSOLUTE_SPACE_SIZE 0x24E0 -#endif - -/** - * The actor overlay should be allocated memory for when loading, - * and the memory deallocated when there is no more actor using the overlay. - * - * `ACTOROVL_ALLOC_` defines indicate how an actor overlay should be loaded. - * - * @note Bitwise or-ing `ACTOROVL_ALLOC_` types is not meaningful. - * The `ACTOROVL_ALLOC_` types are 0, 1, 2 but checked against with a bitwise and. - * - * @see ACTOROVL_ALLOC_ABSOLUTE - * @see ACTOROVL_ALLOC_PERSISTENT - * @see actor_table.h - */ -#define ACTOROVL_ALLOC_NORMAL 0 - -/** - * The actor overlay should be loaded to "absolute space". - * - * Absolute space is a fixed amount of memory allocated once. - * The overlay will still need to be loaded again if at some point there is no more actor using the overlay. - * - * @note Only one such overlay may be loaded at a time. - * This is not checked: a newly loaded overlay will overwrite the previous one in absolute space, - * even if actors are still relying on the previous one. Actors using absolute-allocated overlays should be deleted - * when another absolute-allocated overlay is about to be used. - * - * @see ACTOROVL_ABSOLUTE_SPACE_SIZE - * @see ActorContext.absoluteSpace - * @see ACTOROVL_ALLOC_NORMAL - */ -#define ACTOROVL_ALLOC_ABSOLUTE (1 << 0) - -/** - * The actor overlay should be loaded persistently. - * It will stay loaded until the current game state instance ends. - * - * @see ACTOROVL_ALLOC_NORMAL - */ -#define ACTOROVL_ALLOC_PERSISTENT (1 << 1) - -typedef struct ActorOverlay { - /* 0x00 */ RomFile file; - /* 0x08 */ void* vramStart; - /* 0x0C */ void* vramEnd; - /* 0x10 */ void* loadedRamAddr; // original name: "allocp" - /* 0x14 */ ActorProfile* profile; - /* 0x18 */ char* name; - /* 0x1C */ u16 allocType; // See `ACTOROVL_ALLOC_` defines - /* 0x1E */ s8 numLoaded; // original name: "clients" -} ActorOverlay; // size = 0x20 - typedef struct ActorShape { /* 0x00 */ Vec3s rot; // Current actor shape rotation /* 0x06 */ s16 face; // Used to index eyes and mouth textures. Only used by player @@ -309,7 +238,7 @@ typedef struct Actor { /* 0x12C */ ActorFunc destroy; // Destruction Routine. Called by `Actor_Destroy` /* 0x130 */ ActorFunc update; // Update Routine. Called by `Actor_UpdateAll` /* 0x134 */ ActorFunc draw; // Draw Routine. Called by `Actor_Draw` - /* 0x138 */ ActorOverlay* overlayEntry; // Pointer to the overlay table entry for this actor + /* 0x138 */ struct ActorOverlay* overlayEntry; // Pointer to the overlay table entry for this actor #if DEBUG_FEATURES /* 0x13C */ char dbgPad[0x10]; #endif @@ -362,117 +291,6 @@ typedef struct BodyBreak { #define BODYBREAK_STATUS_READY -1 #define BODYBREAK_STATUS_FINISHED 0 -typedef enum Item00Type { - /* 0x00 */ ITEM00_RUPEE_GREEN, - /* 0x01 */ ITEM00_RUPEE_BLUE, - /* 0x02 */ ITEM00_RUPEE_RED, - /* 0x03 */ ITEM00_RECOVERY_HEART, - /* 0x04 */ ITEM00_BOMBS_A, - /* 0x05 */ ITEM00_ARROWS_SINGLE, - /* 0x06 */ ITEM00_HEART_PIECE, - /* 0x07 */ ITEM00_HEART_CONTAINER, - /* 0x08 */ ITEM00_ARROWS_SMALL, - /* 0x09 */ ITEM00_ARROWS_MEDIUM, - /* 0x0A */ ITEM00_ARROWS_LARGE, - /* 0x0B */ ITEM00_BOMBS_B, - /* 0x0C */ ITEM00_NUTS, - /* 0x0D */ ITEM00_STICK, - /* 0x0E */ ITEM00_MAGIC_LARGE, - /* 0x0F */ ITEM00_MAGIC_SMALL, - /* 0x10 */ ITEM00_SEEDS, - /* 0x11 */ ITEM00_SMALL_KEY, - /* 0x12 */ ITEM00_FLEXIBLE, - /* 0x13 */ ITEM00_RUPEE_ORANGE, - /* 0x14 */ ITEM00_RUPEE_PURPLE, - /* 0x15 */ ITEM00_SHIELD_DEKU, - /* 0x16 */ ITEM00_SHIELD_HYLIAN, - /* 0x17 */ ITEM00_TUNIC_ZORA, - /* 0x18 */ ITEM00_TUNIC_GORON, - /* 0x19 */ ITEM00_BOMBS_SPECIAL, - /* 0x1A */ ITEM00_MAX, - /* 0xFF */ ITEM00_NONE = 0xFF -} Item00Type; - -struct EnItem00; - -typedef void (*EnItem00ActionFunc)(struct EnItem00*, struct PlayState*); - -typedef struct EnItem00 { - /* 0x000 */ Actor actor; - /* 0x14C */ EnItem00ActionFunc actionFunc; - /* 0x150 */ s16 collectibleFlag; - /* 0x152 */ s16 getItemId; - /* 0x154 */ s16 unk_154; - /* 0x156 */ s16 unk_156; - /* 0x158 */ s16 unk_158; - /* 0x15A */ s16 despawnTimer; - /* 0x15C */ f32 scale; - /* 0x160 */ ColliderCylinder collider; -} EnItem00; // size = 0x1AC - -// Only A_OBJ_SIGNPOST_OBLONG and A_OBJ_SIGNPOST_ARROW are used in room files. -typedef enum AObjType { - /* 0x00 */ A_OBJ_BLOCK_SMALL, - /* 0x01 */ A_OBJ_BLOCK_LARGE, - /* 0x02 */ A_OBJ_BLOCK_HUGE, - /* 0x03 */ A_OBJ_BLOCK_SMALL_ROT, - /* 0x04 */ A_OBJ_BLOCK_LARGE_ROT, - /* 0x05 */ A_OBJ_CUBE_SMALL, - /* 0x06 */ A_OBJ_UNKNOWN_6, - /* 0x07 */ A_OBJ_GRASS_CLUMP, - /* 0x08 */ A_OBJ_TREE_STUMP, - /* 0x09 */ A_OBJ_SIGNPOST_OBLONG, - /* 0x0A */ A_OBJ_SIGNPOST_ARROW, - /* 0x0B */ A_OBJ_BOULDER_FRAGMENT, - /* 0x0C */ A_OBJ_MAX -} AObjType; - -struct EnAObj; - -typedef void (*EnAObjActionFunc)(struct EnAObj*, struct PlayState*); - -typedef struct EnAObj { - /* 0x000 */ DynaPolyActor dyna; - /* 0x164 */ EnAObjActionFunc actionFunc; - /* 0x168 */ s32 rotateWaitTimer; - /* 0x16C */ s16 textId; - /* 0x16E */ s16 rotateState; - /* 0x170 */ s16 rotateForTimer; - /* 0x172 */ s16 rotSpeedY; - /* 0x174 */ s16 rotSpeedX; - /* 0x178 */ f32 focusYoffset; - /* 0x17C */ ColliderCylinder collider; -} EnAObj; // size = 0x1C8 - -typedef enum ActorCategory { - /* 0x00 */ ACTORCAT_SWITCH, - /* 0x01 */ ACTORCAT_BG, - /* 0x02 */ ACTORCAT_PLAYER, - /* 0x03 */ ACTORCAT_EXPLOSIVE, - /* 0x04 */ ACTORCAT_NPC, - /* 0x05 */ ACTORCAT_ENEMY, - /* 0x06 */ ACTORCAT_PROP, - /* 0x07 */ ACTORCAT_ITEMACTION, - /* 0x08 */ ACTORCAT_MISC, - /* 0x09 */ ACTORCAT_BOSS, - /* 0x0A */ ACTORCAT_DOOR, - /* 0x0B */ ACTORCAT_CHEST, - /* 0x0C */ ACTORCAT_MAX -} ActorCategory; - -#define DEFINE_ACTOR(_0, enum, _2, _3) enum, -#define DEFINE_ACTOR_INTERNAL(_0, enum, _2, _3) enum, -#define DEFINE_ACTOR_UNSET(enum) enum, - -typedef enum ActorID { - #include "tables/actor_table.h" - /* 0x0192 */ ACTOR_ID_MAX // originally "ACTOR_DLF_MAX" -} ActorID; - -#undef DEFINE_ACTOR -#undef DEFINE_ACTOR_INTERNAL -#undef DEFINE_ACTOR_UNSET - typedef enum DoorLockType { DOORLOCK_NORMAL, DOORLOCK_BOSS, @@ -780,6 +598,8 @@ typedef struct NpcInteractInfo { #define TRANSITION_ACTOR_PARAMS_INDEX_SHIFT 10 #define GET_TRANSITION_ACTOR_INDEX(actor) PARAMS_GET_NOMASK((u16)(actor)->params, 10) +extern Gfx D_80116280[]; + void ActorShape_Init(ActorShape* shape, f32 yOffset, ActorShadowFunc shadowDraw, f32 shadowScale); void ActorShadow_DrawCircle(Actor* actor, struct Lights* lights, struct PlayState* play); void ActorShadow_DrawWhiteCircle(Actor* actor, struct Lights* lights, struct PlayState* play); @@ -898,7 +718,7 @@ void Actor_DisableLens(struct PlayState* play); void Actor_InitContext(struct PlayState* play, ActorContext* actorCtx, struct ActorEntry* playerEntry); void Actor_UpdateAll(struct PlayState* play, ActorContext* actorCtx); s32 Actor_CullingVolumeTest(struct PlayState* play, Actor* actor, Vec3f* projPos, f32 projW); -void func_800315AC(struct PlayState* play, ActorContext* actorCtx); +void Actor_DrawAll(struct PlayState* play, ActorContext* actorCtx); void Actor_KillAllWithMissingObject(struct PlayState* play, ActorContext* actorCtx); void func_80031B14(struct PlayState* play, ActorContext* actorCtx); void func_80031C3C(ActorContext* actorCtx, struct PlayState* play); @@ -971,7 +791,7 @@ void Flags_SetEventChkInf(s32 flag); s32 Flags_GetInfTable(s32 flag); void Flags_SetInfTable(s32 flag); u16 func_80037C30(struct PlayState* play, s16 arg1); -s32 func_80037D98(struct PlayState* play, Actor* actor, s16 arg2, s32* arg3); +s32 func_80037D98(struct PlayState* play, Actor* actor, s32 arg2, s32* arg3); s32 Actor_TrackPlayer(struct PlayState* play, Actor* actor, Vec3s* headRot, Vec3s* torsoRot, Vec3f focusPos); #endif diff --git a/include/z64actor_profile.h b/include/z64actor_profile.h new file mode 100644 index 0000000000..82ec9f957b --- /dev/null +++ b/include/z64actor_profile.h @@ -0,0 +1,52 @@ +#ifndef Z64ACTOR_PROFILE_H +#define Z64ACTOR_PROFILE_H + +#include "ultra64.h" + +struct Actor; +struct PlayState; + +#define DEFINE_ACTOR(_0, enum, _2, _3) enum, +#define DEFINE_ACTOR_INTERNAL(_0, enum, _2, _3) enum, +#define DEFINE_ACTOR_UNSET(enum) enum, + +typedef enum ActorID { + #include "tables/actor_table.h" + /* 0x0192 */ ACTOR_ID_MAX // originally "ACTOR_DLF_MAX" +} ActorID; + +#undef DEFINE_ACTOR +#undef DEFINE_ACTOR_INTERNAL +#undef DEFINE_ACTOR_UNSET + +typedef enum ActorCategory { + /* 0x00 */ ACTORCAT_SWITCH, + /* 0x01 */ ACTORCAT_BG, + /* 0x02 */ ACTORCAT_PLAYER, + /* 0x03 */ ACTORCAT_EXPLOSIVE, + /* 0x04 */ ACTORCAT_NPC, + /* 0x05 */ ACTORCAT_ENEMY, + /* 0x06 */ ACTORCAT_PROP, + /* 0x07 */ ACTORCAT_ITEMACTION, + /* 0x08 */ ACTORCAT_MISC, + /* 0x09 */ ACTORCAT_BOSS, + /* 0x0A */ ACTORCAT_DOOR, + /* 0x0B */ ACTORCAT_CHEST, + /* 0x0C */ ACTORCAT_MAX +} ActorCategory; + +typedef void (*ActorFunc)(struct Actor*, struct PlayState*); + +typedef struct ActorProfile { + /* 0x00 */ s16 id; + /* 0x02 */ u8 category; // Classifies actor and determines when it will update or draw + /* 0x04 */ u32 flags; + /* 0x08 */ s16 objectId; + /* 0x0C */ u32 instanceSize; + /* 0x10 */ ActorFunc init; // Constructor + /* 0x14 */ ActorFunc destroy; // Destructor + /* 0x18 */ ActorFunc update; // Update Function + /* 0x1C */ ActorFunc draw; // Draw function +} ActorProfile; // size = 0x20 + +#endif diff --git a/include/z64audio.h b/include/z64audio.h index d60a6aaeb7..3673811ac9 100644 --- a/include/z64audio.h +++ b/include/z64audio.h @@ -68,6 +68,13 @@ typedef void (*AudioCustomUpdateFunction)(void); #define AUDIO_RELOCATED_ADDRESS_START K0BASE +typedef enum SoundSetting { + /* 0 */ SOUND_SETTING_STEREO, + /* 1 */ SOUND_SETTING_MONO, + /* 2 */ SOUND_SETTING_HEADSET, + /* 3 */ SOUND_SETTING_SURROUND +} SoundSetting; + typedef enum SoundMode { /* 0 */ SOUNDMODE_STEREO, /* 1 */ SOUNDMODE_HEADSET, @@ -1197,7 +1204,7 @@ void func_800F64E0(u8 arg0); void Audio_ToggleMalonSinging(u8 malonSingingDisabled); void Audio_SetEnvReverb(s8 reverb); void Audio_SetCodeReverb(s8 reverb); -void func_800F6700(s8 audioSetting); +void Audio_SetSoundMode(s8 soundSetting); void Audio_SetBaseFilter(u8); void Audio_SetExtraFilter(u8); void Audio_SetCutsceneFlag(s8 flag); diff --git a/include/z64camera.h b/include/z64camera.h index 1e831a909e..2fcbffdf5a 100644 --- a/include/z64camera.h +++ b/include/z64camera.h @@ -4,7 +4,6 @@ #include "ultra64.h" #include "z64cutscene.h" #include "z64math.h" -#include "z64save.h" struct CollisionContext; struct View; @@ -1622,82 +1621,7 @@ typedef struct Camera { /* 0x16A */ s16 unk_16A; } Camera; // size = 0x16C -/** - * Debug Camera -*/ - -typedef struct DebugCamSub { - /* 0x0000 */ s16 mode; - /* 0x0002 */ s16 nFrames; - /* 0x0004 */ s16 nPoints; - /* 0x0006 */ s16 unkIdx; - /* 0x0008 */ s16 unk_08; - /* 0x000A */ s16 unk_0A; - /* 0x000C */ s32 unk_0C; // bool: indicates position vs lookAt? - /* 0x0010 */ char unk_10[0x14]; - /* 0x0024 */ CutsceneCameraPoint position[129]; - /* 0x0834 */ CutsceneCameraPoint lookAt[129]; - /* 0x1044 */ s16 demoCtrlMenu; - /* 0x1046 */ s16 demoCtrlActionIdx; // e (?), s (save), l (load), c (clear) - /* 0x1048 */ s16 demoCtrlToggleSwitch; - /* 0x104A */ Vec3s unk_104A; -} DebugCamSub; // size = 0x1050 - -typedef struct DebugCam { - /* 0x00 */ s32 unk_00; - /* 0x04 */ Vec3f at; - /* 0x10 */ Vec3f eye; - /* 0x1C */ Vec3f unk_1C; - /* 0x28 */ char unk_28[0xC]; - /* 0x34 */ s32 unk_34; - /* 0x38 */ s32 unk_38; - /* 0x3C */ s32 unk_3C; // bool - /* 0x40 */ s32 unk_40; - /* 0x44 */ s32 unk_44; - /* 0x48 */ f32 fov; - /* 0x4C */ s16 roll; - /* 0x4E */ char unk_4E[0x2]; - /* 0x50 */ f32 rollDegrees; - /* 0x54 */ Vec3f unk_54; - /* 0x60 */ Vec3f unk_60; - /* 0x6C */ Vec3f unk_6C; - /* 0x78 */ s16 unk_78; - /* 0x7A */ s16 unk_7A; - /* 0x7C */ DebugCamSub sub; -} DebugCam; // size = 0x10CC - -typedef struct DebugCamCut { - /* 0x00 */ char letter; - /* 0x01 */ u8 unk_01; - /* 0x02 */ s16 mode; - /* 0x04 */ CutsceneCameraPoint* position; - /* 0x08 */ CutsceneCameraPoint* lookAt; - /* 0x0C */ s16 nFrames; - /* 0x0E */ s16 nPoints; -} DebugCamCut; // size = 0x10 - -typedef struct DebugCamAnim { - /* 0x00 */ f32 curFrame; - /* 0x04 */ f32 unk_04; // frame count? - /* 0x08 */ s16 keyframe; - /* 0x0A */ s16 unk_0A; - /* 0x0C */ s16 unk_0C; - /* 0x10 */ Vec3f positionPos; // confusing name - /* 0x1C */ Vec3f lookAtPos; - /* 0x28 */ f32 roll; - /* 0x2C */ f32 fov; -} DebugCamAnim; // size = 0x30 - -typedef enum DebugCamTextColor { - /* 0 */ DEBUG_CAM_TEXT_YELLOW, - /* 1 */ DEBUG_CAM_TEXT_PEACH, - /* 2 */ DEBUG_CAM_TEXT_BROWN, - /* 3 */ DEBUG_CAM_TEXT_ORANGE, - /* 4 */ DEBUG_CAM_TEXT_GOLD, - /* 5 */ DEBUG_CAM_TEXT_WHITE, - /* 6 */ DEBUG_CAM_TEXT_BLUE, - /* 7 */ DEBUG_CAM_TEXT_GREEN -} DebugCamTextColor; +extern s32 gDebugCamEnabled; void Camera_Init(Camera* camera, struct View* view, struct CollisionContext* colCtx, struct PlayState* play); void Camera_InitDataUsingPlayer(Camera* camera, struct Player* player); diff --git a/include/z64cutscene.h b/include/z64cutscene.h index 231f1a0c71..3dce9ec23c 100644 --- a/include/z64cutscene.h +++ b/include/z64cutscene.h @@ -550,6 +550,14 @@ typedef struct CutsceneContext { /* 0x28 */ CsCmdActorCue* actorCues[10]; // "npcdemopnt" } CutsceneContext; // size = 0x50 +extern u8 gUseCutsceneCam; +extern u16 D_8015FCCC; +extern char D_8015FCD0[20]; +extern u8 D_8015FCE4; +extern u16 gCamAtSplinePointsAppliedFrame; +extern u16 gCamEyePointAppliedFrame; +extern u16 gCamAtPointAppliedFrame; + void Cutscene_InitContext(struct PlayState* play, CutsceneContext* csCtx); void Cutscene_StartManual(struct PlayState* play, CutsceneContext* csCtx); void Cutscene_StopManual(struct PlayState* play, CutsceneContext* csCtx); diff --git a/include/z64cutscene_flags.h b/include/z64cutscene_flags.h new file mode 100644 index 0000000000..5a3c7c2a7a --- /dev/null +++ b/include/z64cutscene_flags.h @@ -0,0 +1,13 @@ +#ifndef Z64CUTSCENE_FLAGS_H +#define Z64CUTSCENE_FLAGS_H + +#include "ultra64.h" + +struct PlayState; + +void CutsceneFlags_UnsetAll(struct PlayState* play); +void CutsceneFlags_Set(struct PlayState* play, s16 flag); +void CutsceneFlags_Unset(struct PlayState* play, s16 flag); +s32 CutsceneFlags_Get(struct PlayState* play, s16 flag); + +#endif diff --git a/include/z64cutscene_spline.h b/include/z64cutscene_spline.h new file mode 100644 index 0000000000..3a73949453 --- /dev/null +++ b/include/z64cutscene_spline.h @@ -0,0 +1,12 @@ +#ifndef Z64CUTSCENE_SPLINE_H +#define Z64CUTSCENE_SPLINE_H + +#include "ultra64.h" +#include "z64math.h" + +union CutsceneCameraPoint; + +void func_800BB0A0(f32 u, Vec3f* pos, f32* roll, f32* viewAngle, f32* point0, f32* point1, f32* point2, f32* point3); +s32 func_800BB2B4(Vec3f* pos, f32* roll, f32* fov, union CutsceneCameraPoint* point, s16* keyFrame, f32* curFrame); + +#endif diff --git a/include/z64debug.h b/include/z64debug.h new file mode 100644 index 0000000000..0e2c7334ee --- /dev/null +++ b/include/z64debug.h @@ -0,0 +1,17 @@ +#ifndef Z64DEBUG_H +#define Z64DEBUG_H + +#include "ultra64.h" + +struct GraphicsContext; +struct Input; + +void Regs_Init(void); +void DebugCamera_ScreenText(u8 x, u8 y, const char* text); +void DebugCamera_ScreenTextColored(u8 x, u8 y, u8 colorIndex, const char* text); +#if DEBUG_FEATURES +void Regs_UpdateEditor(struct Input* input); +#endif +void Debug_DrawText(struct GraphicsContext* gfxCtx); + +#endif diff --git a/include/z64debug_display.h b/include/z64debug_display.h new file mode 100644 index 0000000000..9cb1198067 --- /dev/null +++ b/include/z64debug_display.h @@ -0,0 +1,27 @@ +#ifndef Z64_DEBUG_DISPLAY_H +#define Z64_DEBUG_DISPLAY_H + +#include "ultra64.h" +#include "z64math.h" +#include "color.h" + +struct GraphicsContext; +struct PlayState; + +typedef struct DebugDispObject { + /* 0x00 */ Vec3f pos; + /* 0x0C */ Vec3s rot; + /* 0x14 */ Vec3f scale; + /* 0x20 */ Color_RGBA8 color; + /* 0x24 */ s16 type; + /* 0x28 */ struct DebugDispObject* next; +} DebugDispObject; // size = 0x2C + +void DebugDisplay_Init(void); +DebugDispObject* DebugDisplay_AddObject(f32 posX, f32 posY, f32 posZ, s16 rotX, s16 rotY, s16 rotZ, f32 scaleX, + f32 scaleY, f32 scaleZ, u8 red, u8 green, u8 blue, u8 alpha, s16 type, + struct GraphicsContext* gfxCtx); +void DebugDisplay_DrawObjects(struct PlayState* play); + + +#endif diff --git a/include/z64draw.h b/include/z64draw.h new file mode 100644 index 0000000000..51250ed8c8 --- /dev/null +++ b/include/z64draw.h @@ -0,0 +1,10 @@ +#ifndef Z64_DRAW_H +#define Z64_DRAW_H + +#include "ultra64.h" + +struct PlayState; + +void GetItem_Draw(struct PlayState* play, s16 drawId); + +#endif diff --git a/include/z64effect.h b/include/z64effect.h index bad2b1d324..0c07cc5124 100644 --- a/include/z64effect.h +++ b/include/z64effect.h @@ -262,6 +262,8 @@ typedef enum EffectSsType { #undef DEFINE_EFFECT_SS #undef DEFINE_EFFECT_SS_UNSET +extern EffectSsOverlay gEffectSsOverlayTable[EFFECT_SS_TYPE_MAX]; + void EffectBlure_AddVertex(EffectBlure* this, Vec3f* p1, Vec3f* p2); void EffectBlure_AddSpace(EffectBlure* this); void EffectBlure_Init1(void* thisx, void* initParamsx); diff --git a/include/z64environment.h b/include/z64environment.h index 598c4655a9..4c4bc770cd 100644 --- a/include/z64environment.h +++ b/include/z64environment.h @@ -242,6 +242,19 @@ extern u8 gLightConfigAfterUnderwater; extern u8 gInterruptSongOfStorms; extern u16 gTimeSpeed; +extern LightningStrike gLightningStrike; +// TODO: These variables are here for BSS ordering but ideally they should not +// be extern. This could be fixed by putting more stuff (e.g. struct definitions) +// between gLightningStrike and gCustomLensFlareOn. +extern s16 sLightningFlashAlpha; +extern s16 sSunDepthTestX; +extern s16 sSunDepthTestY; +extern u8 gCustomLensFlareOn; +extern Vec3f gCustomLensFlarePos; +extern s16 gLensFlareScale; +extern f32 gLensFlareColorIntensity; +extern s16 gLensFlareGlareStrength; + void Environment_UpdateSkybox(u8 skyboxId, EnvironmentContext* envCtx, struct SkyboxContext* skyboxCtx); void Environment_DrawSkyboxFilters(struct PlayState* play); diff --git a/include/z64face_reaction.h b/include/z64face_reaction.h new file mode 100644 index 0000000000..274340ebcb --- /dev/null +++ b/include/z64face_reaction.h @@ -0,0 +1,74 @@ +#ifndef Z64FACE_REACTION_H +#define Z64FACE_REACTION_H + +#include "ultra64.h" + +struct PlayState; + +typedef enum MaskReactionSet { + /* 0x00 */ MASK_REACTION_SET_CARPENTER_BOSS, + /* 0x01 */ MASK_REACTION_SET_CARPENTER_1, + /* 0x02 */ MASK_REACTION_SET_CARPENTER_2, + /* 0x03 */ MASK_REACTION_SET_CARPENTER_3, + /* 0x04 */ MASK_REACTION_SET_CARPENTER_4, + /* 0x05 */ MASK_REACTION_SET_HYRULIAN_GUARD, + /* 0x06 */ MASK_REACTION_SET_HEISHI4_1, + /* 0x07 */ MASK_REACTION_SET_HEISHI4_2, + /* 0x08 */ MASK_REACTION_SET_CUCCO_LADY, + /* 0x09 */ MASK_REACTION_SET_CARPENTERS_SON, + /* 0x0A */ MASK_REACTION_SET_KAKARIKO_ROOF_MAN, + /* 0x0B */ MASK_REACTION_SET_WINDMILL_MAN, + /* 0x0C */ MASK_REACTION_SET_12, // Unused + /* 0x0D */ MASK_REACTION_SET_CURSED_SKULLTULA_MAN, + /* 0x0E */ MASK_REACTION_SET_DAMPE, + /* 0x0F */ MASK_REACTION_SET_GRAVEYARD_KID, + /* 0x10 */ MASK_REACTION_SET_SARIA, + /* 0x11 */ MASK_REACTION_SET_MIDO, + /* 0x12 */ MASK_REACTION_SET_FADO, + /* 0x13 */ MASK_REACTION_SET_KOKIRI_1, + /* 0x14 */ MASK_REACTION_SET_KOKIRI_2, + /* 0x15 */ MASK_REACTION_SET_SKULL_KID, + /* 0x16 */ MASK_REACTION_SET_ZELDA, + /* 0x17 */ MASK_REACTION_SET_MALON, + /* 0x18 */ MASK_REACTION_SET_TALON, + /* 0x19 */ MASK_REACTION_SET_INGO, + /* 0x1A */ MASK_REACTION_SET_LAKESIDE_PROFESSOR, + /* 0x1B */ MASK_REACTION_SET_MAGIC_BEAN_SALESMAN, + /* 0x1C */ MASK_REACTION_SET_RUNNING_MAN, + /* 0x1D */ MASK_REACTION_SET_ZORA, + /* 0x1E */ MASK_REACTION_SET_KING_ZORA, + /* 0x1F */ MASK_REACTION_SET_RUTO, + /* 0x20 */ MASK_REACTION_SET_GORON, + /* 0x21 */ MASK_REACTION_SET_DARUNIA, + /* 0x22 */ MASK_REACTION_SET_GERUDO_WHITE, + /* 0x23 */ MASK_REACTION_SET_NABOORU, + /* 0x24 */ MASK_REACTION_SET_DANCING_COUPLE, + /* 0x25 */ MASK_REACTION_SET_DOG_LADY, + /* 0x26 */ MASK_REACTION_SET_WOMAN_3, + /* 0x27 */ MASK_REACTION_SET_MAN_1_BEARD, + /* 0x28 */ MASK_REACTION_SET_MAN_2_BALD, + /* 0x29 */ MASK_REACTION_SET_MAN_1_SHAVED_BLACK_SHIRT, + /* 0x2A */ MASK_REACTION_SET_BEGGAR, + /* 0x2B */ MASK_REACTION_SET_OLD_WOMAN, + /* 0x2C */ MASK_REACTION_SET_OLD_MAN, + /* 0x2D */ MASK_REACTION_SET_YOUNG_WOMAN_BROWN_HAIR, + /* 0x2E */ MASK_REACTION_SET_MAN_2_MUSTACHE_RED_SHIRT, + /* 0x2F */ MASK_REACTION_SET_MAN_2_MUSTACHE_BLUE_SHIRT, + /* 0x30 */ MASK_REACTION_SET_YOUNG_WOMAN_ORANGE_HAIR, + /* 0x31 */ MASK_REACTION_SET_MAN_2_ALT_MUSTACHE, + /* 0x32 */ MASK_REACTION_SET_MAN_1_BOWL_CUT_PURPLE_SHIRT, + /* 0x33 */ MASK_REACTION_SET_MAN_2_BEARD, + /* 0x34 */ MASK_REACTION_SET_OLD_MAN_BALD_BROWN_ROBE, + /* 0x35 */ MASK_REACTION_SET_MAN_2_MUSTACHE_WHITE_SHIRT, + /* 0x36 */ MASK_REACTION_SET_MAN_1_SHAVED_GREEN_SHIRT, + /* 0x37 */ MASK_REACTION_SET_WOMAN_2, + /* 0x38 */ MASK_REACTION_SET_OLD_MAN_BALD_PURPLE_ROBE, + /* 0x39 */ MASK_REACTION_SET_MAN_1_BOWL_CUT_GREEN_SHIRT, + /* 0x3A */ MASK_REACTION_SET_HAGGLING_TOWNSPEOPLE_1, + /* 0x3B */ MASK_REACTION_SET_HAGGLING_TOWNSPEOPLE_2, + /* 0x3C */ MASK_REACTION_SET_MAX +} MaskReactionSet; + +u16 MaskReaction_GetTextId(struct PlayState* play, u32 maskReactionSet); + +#endif diff --git a/include/z64font.h b/include/z64font.h new file mode 100644 index 0000000000..72f97fddd6 --- /dev/null +++ b/include/z64font.h @@ -0,0 +1,41 @@ +#ifndef Z64FONT_H +#define Z64FONT_H + +#include "ultra64.h" + +// TODO get these properties from the textures themselves +#define FONT_CHAR_TEX_WIDTH 16 +#define FONT_CHAR_TEX_HEIGHT 16 +#define FONT_CHAR_TEX_SIZE ((FONT_CHAR_TEX_WIDTH * FONT_CHAR_TEX_HEIGHT) / 2) // 16x16 I4 texture + +typedef struct Font { + /* 0x0000 */ u32 msgOffset; + /* 0x0004 */ u32 msgLength; + union { + /* 0x0008 */ u8 charTexBuf[FONT_CHAR_TEX_SIZE * 120]; + /* 0x0008 */ u64 force_structure_alignment_charTex; + }; + union { + /* 0x3C08 */ u8 iconBuf[FONT_CHAR_TEX_SIZE]; + /* 0x3C08 */ u64 force_structure_alignment_icon; + }; + union { + /* 0x3C88 */ u8 fontBuf[FONT_CHAR_TEX_SIZE * 320]; + /* 0x3C88 */ u64 force_structure_alignment_font; + }; + union { + /* 0xDC88 */ u8 msgBuf[1280]; + /* 0xDC88 */ u16 msgBufWide[640]; + /* 0xDC88 */ u64 force_structure_alignment_msg; + }; +} Font; // size = 0xE188 + +#if PLATFORM_IQUE +void Font_LoadCharCHN(Font* font, u16 character, u16 codePointIndex); +#endif +void Font_LoadCharWide(Font* font, u16 character, u16 codePointIndex); +void Font_LoadChar(Font* font, u8 character, u16 codePointIndex); +void Font_LoadMessageBoxIcon(Font* font, u16 icon); +void Font_LoadOrderedFont(Font* font); + +#endif diff --git a/include/z64game.h b/include/z64game.h index 3b50cfd362..fe683777b7 100644 --- a/include/z64game.h +++ b/include/z64game.h @@ -3,33 +3,12 @@ // This file is named "game" after game.c for now, this may change later with the system name #include "ultra64/ultratypes.h" -#include "padmgr.h" +#include "libu64/pad.h" +#include "gamealloc.h" +#include "romfile.h" #include "tha.h" struct GraphicsContext; - -typedef struct GameAllocEntry { - /* 0x00 */ struct GameAllocEntry* next; - /* 0x04 */ struct GameAllocEntry* prev; - /* 0x08 */ u32 size; - /* 0x0C */ u32 unk_0C; -} GameAllocEntry; // size = 0x10 - -typedef struct GameAlloc { - /* 0x00 */ GameAllocEntry base; - /* 0x10 */ GameAllocEntry* head; -} GameAlloc; // size = 0x14 - -// Used in Graph_GetNextGameState in graph.c -#define DEFINE_GAMESTATE_INTERNAL(typeName, enumName) enumName, -#define DEFINE_GAMESTATE(typeName, enumName, name) DEFINE_GAMESTATE_INTERNAL(typeName, enumName) -typedef enum GameStateId { -#include "tables/gamestate_table.h" - GAMESTATE_ID_MAX -} GameStateId; -#undef DEFINE_GAMESTATE -#undef DEFINE_GAMESTATE_INTERNAL - struct GameState; typedef void (*GameStateFunc)(struct GameState* gameState); @@ -48,4 +27,27 @@ typedef struct GameState { /* 0xA0 */ u32 inPreNMIState; } GameState; // size = 0xA4 +#define SET_NEXT_GAMESTATE(curState, newInit, newStruct) \ + if (1) { \ + GameState* state = curState; \ + \ + (state)->init = newInit; \ + (state)->size = sizeof(newStruct); \ + } (void)0 + +void GameState_ReqPadData(GameState* gameState); +void GameState_Update(GameState* gameState); +void GameState_InitArena(GameState* gameState, size_t size); +void GameState_Realloc(GameState* gameState, size_t size); +void GameState_Init(GameState* gameState, GameStateFunc init, struct GraphicsContext* gfxCtx); +void GameState_Destroy(GameState* gameState); +GameStateFunc GameState_GetInit(GameState* gameState); +u32 GameState_IsRunning(GameState* gameState); +#if DEBUG_FEATURES +void* GameState_Alloc(GameState* gameState, size_t size, const char* file, int line); +#define GAME_STATE_ALLOC(gameState, size, file, line) GameState_Alloc(gameState, size, file, line) +#else +#define GAME_STATE_ALLOC(gameState, size, file, line) THA_AllocTailAlign16(&(gameState)->tha, size) +#endif + #endif diff --git a/include/z64interface.h b/include/z64interface.h index e9284499ab..5bcad2bc11 100644 --- a/include/z64interface.h +++ b/include/z64interface.h @@ -1,6 +1,7 @@ #ifndef Z64INTERFACE_H #define Z64INTERFACE_H +#include "ultra64.h" #include "z64dma.h" #include "z64view.h" @@ -80,7 +81,7 @@ typedef struct InterfaceContext { /* 0x0134 */ u8* doActionSegment; /* 0x0138 */ u8* iconItemSegment; /* 0x013C */ u8* mapSegment; - /* 0x0140 */ u8 mapPalette[32]; + /* 0x0140 */ char mapPalette[32]; /* 0x0160 */ DmaRequest dmaRequest_160; /* 0x0180 */ DmaRequest dmaRequest_180; /* 0x01A0 */ char unk_1A0[0x20]; diff --git a/include/z64inventory.h b/include/z64inventory.h index 9a8133b3da..8c1a5a90d8 100644 --- a/include/z64inventory.h +++ b/include/z64inventory.h @@ -3,7 +3,6 @@ #include "ultra64.h" #include "z64item.h" -#include "z64save.h" struct PlayState; diff --git a/include/z64lifemeter.h b/include/z64lifemeter.h new file mode 100644 index 0000000000..29b2656b88 --- /dev/null +++ b/include/z64lifemeter.h @@ -0,0 +1,14 @@ +#ifndef Z64LIFEMETER_H +#define Z64LIFEMETER_H + +#include "ultra64/ultratypes.h" + +struct PlayState; + +void Health_InitMeter(struct PlayState* play); +void Health_UpdateMeter(struct PlayState* play); +void Health_DrawMeter(struct PlayState* play); +void Health_UpdateBeatingHeart(struct PlayState* play); +u32 Health_IsCritical(void); + +#endif diff --git a/include/z64message.h b/include/z64message.h index ad2e19f547..3758b690fd 100644 --- a/include/z64message.h +++ b/include/z64message.h @@ -3,6 +3,7 @@ #include "z64view.h" #include "versions.h" +#include "z64font.h" struct OcarinaStaff; struct Actor; @@ -14,11 +15,6 @@ typedef enum TextBoxIcon { /* 2 */ TEXTBOX_ICON_ARROW } TextBoxIcon; -// TODO get these properties from the textures themselves -#define FONT_CHAR_TEX_WIDTH 16 -#define FONT_CHAR_TEX_HEIGHT 16 -#define FONT_CHAR_TEX_SIZE ((FONT_CHAR_TEX_WIDTH * FONT_CHAR_TEX_HEIGHT) / 2) // 16x16 I4 texture - // TODO get these properties from the textures themselves #define MESSAGE_STATIC_TEX_SIZE 0x1000 @@ -115,70 +111,6 @@ typedef enum MessageMode { /* 0x37 */ MSGMODE_PAUSED // Causes the message system to do nothing until external code sets a new message mode or calls a public function } MessageMode; -typedef enum MaskReactionSet { - /* 0x00 */ MASK_REACTION_SET_CARPENTER_BOSS, - /* 0x01 */ MASK_REACTION_SET_CARPENTER_1, - /* 0x02 */ MASK_REACTION_SET_CARPENTER_2, - /* 0x03 */ MASK_REACTION_SET_CARPENTER_3, - /* 0x04 */ MASK_REACTION_SET_CARPENTER_4, - /* 0x05 */ MASK_REACTION_SET_HYRULIAN_GUARD, - /* 0x06 */ MASK_REACTION_SET_HEISHI4_1, - /* 0x07 */ MASK_REACTION_SET_HEISHI4_2, - /* 0x08 */ MASK_REACTION_SET_CUCCO_LADY, - /* 0x09 */ MASK_REACTION_SET_CARPENTERS_SON, - /* 0x0A */ MASK_REACTION_SET_KAKARIKO_ROOF_MAN, - /* 0x0B */ MASK_REACTION_SET_WINDMILL_MAN, - /* 0x0C */ MASK_REACTION_SET_12, // Unused - /* 0x0D */ MASK_REACTION_SET_CURSED_SKULLTULA_MAN, - /* 0x0E */ MASK_REACTION_SET_DAMPE, - /* 0x0F */ MASK_REACTION_SET_GRAVEYARD_KID, - /* 0x10 */ MASK_REACTION_SET_SARIA, - /* 0x11 */ MASK_REACTION_SET_MIDO, - /* 0x12 */ MASK_REACTION_SET_FADO, - /* 0x13 */ MASK_REACTION_SET_KOKIRI_1, - /* 0x14 */ MASK_REACTION_SET_KOKIRI_2, - /* 0x15 */ MASK_REACTION_SET_SKULL_KID, - /* 0x16 */ MASK_REACTION_SET_ZELDA, - /* 0x17 */ MASK_REACTION_SET_MALON, - /* 0x18 */ MASK_REACTION_SET_TALON, - /* 0x19 */ MASK_REACTION_SET_INGO, - /* 0x1A */ MASK_REACTION_SET_LAKESIDE_PROFESSOR, - /* 0x1B */ MASK_REACTION_SET_MAGIC_BEAN_SALESMAN, - /* 0x1C */ MASK_REACTION_SET_RUNNING_MAN, - /* 0x1D */ MASK_REACTION_SET_ZORA, - /* 0x1E */ MASK_REACTION_SET_KING_ZORA, - /* 0x1F */ MASK_REACTION_SET_RUTO, - /* 0x20 */ MASK_REACTION_SET_GORON, - /* 0x21 */ MASK_REACTION_SET_DARUNIA, - /* 0x22 */ MASK_REACTION_SET_GERUDO_WHITE, - /* 0x23 */ MASK_REACTION_SET_NABOORU, - /* 0x24 */ MASK_REACTION_SET_DANCING_COUPLE, - /* 0x25 */ MASK_REACTION_SET_DOG_LADY, - /* 0x26 */ MASK_REACTION_SET_WOMAN_3, - /* 0x27 */ MASK_REACTION_SET_MAN_1_BEARD, - /* 0x28 */ MASK_REACTION_SET_MAN_2_BALD, - /* 0x29 */ MASK_REACTION_SET_MAN_1_SHAVED_BLACK_SHIRT, - /* 0x2A */ MASK_REACTION_SET_BEGGAR, - /* 0x2B */ MASK_REACTION_SET_OLD_WOMAN, - /* 0x2C */ MASK_REACTION_SET_OLD_MAN, - /* 0x2D */ MASK_REACTION_SET_YOUNG_WOMAN_BROWN_HAIR, - /* 0x2E */ MASK_REACTION_SET_MAN_2_MUSTACHE_RED_SHIRT, - /* 0x2F */ MASK_REACTION_SET_MAN_2_MUSTACHE_BLUE_SHIRT, - /* 0x30 */ MASK_REACTION_SET_YOUNG_WOMAN_ORANGE_HAIR, - /* 0x31 */ MASK_REACTION_SET_MAN_2_ALT_MUSTACHE, - /* 0x32 */ MASK_REACTION_SET_MAN_1_BOWL_CUT_PURPLE_SHIRT, - /* 0x33 */ MASK_REACTION_SET_MAN_2_BEARD, - /* 0x34 */ MASK_REACTION_SET_OLD_MAN_BALD_BROWN_ROBE, - /* 0x35 */ MASK_REACTION_SET_MAN_2_MUSTACHE_WHITE_SHIRT, - /* 0x36 */ MASK_REACTION_SET_MAN_1_SHAVED_GREEN_SHIRT, - /* 0x37 */ MASK_REACTION_SET_WOMAN_2, - /* 0x38 */ MASK_REACTION_SET_OLD_MAN_BALD_PURPLE_ROBE, - /* 0x39 */ MASK_REACTION_SET_MAN_1_BOWL_CUT_GREEN_SHIRT, - /* 0x3A */ MASK_REACTION_SET_HAGGLING_TOWNSPEOPLE_1, - /* 0x3B */ MASK_REACTION_SET_HAGGLING_TOWNSPEOPLE_2, - /* 0x3C */ MASK_REACTION_SET_MAX -} MaskReactionSet; - typedef enum TextState { /* 0 */ TEXT_STATE_NONE, /* 1 */ TEXT_STATE_DONE_HAS_NEXT, @@ -193,28 +125,6 @@ typedef enum TextState { /* 10 */ TEXT_STATE_AWAITING_NEXT } TextState; -typedef struct Font { - /* 0x0000 */ u32 msgOffset; - /* 0x0004 */ u32 msgLength; - union { - /* 0x0008 */ u8 charTexBuf[FONT_CHAR_TEX_SIZE * 120]; - /* 0x0008 */ u64 force_structure_alignment_charTex; - }; - union { - /* 0x3C08 */ u8 iconBuf[FONT_CHAR_TEX_SIZE]; - /* 0x3C08 */ u64 force_structure_alignment_icon; - }; - union { - /* 0x3C88 */ u8 fontBuf[FONT_CHAR_TEX_SIZE * 320]; - /* 0x3C88 */ u64 force_structure_alignment_font; - }; - union { - /* 0xDC88 */ char msgBuf[1280]; - /* 0xDC88 */ u16 msgBufWide[640]; - /* 0xDC88 */ u64 force_structure_alignment_msg; - }; -} Font; // size = 0xE188 - #define TEXTBOX_ENDTYPE_DEFAULT 0x00 #define TEXTBOX_ENDTYPE_2_CHOICE 0x10 #define TEXTBOX_ENDTYPE_3_CHOICE 0x20 @@ -255,7 +165,7 @@ typedef struct MessageContext { /* 0xE3E4 */ u8 textboxEndType; // original name : "select" /* 0xE3E5 */ u8 choiceIndex; /* 0xE3E6 */ u8 choiceNum; // textboxes that are not choice textboxes have a choiceNum of 1 - /* 0xE3E7 */ u8 stateTimer; + /* 0xE3E7 */ char stateTimer; /* 0xE3E8 */ u16 textDelayTimer; /* 0xE3EA */ u16 textDelay; /* 0xE3EA */ u16 lastPlayedSong; // original references : "Ocarina_Flog" , "Ocarina_Free" diff --git a/include/z64path.h b/include/z64path.h new file mode 100644 index 0000000000..0f9243974a --- /dev/null +++ b/include/z64path.h @@ -0,0 +1,19 @@ +#ifndef Z64PATH_H +#define Z64PATH_H + +#include "ultra64.h" +#include "z64math.h" + +struct PlayState; +struct Actor; + +typedef struct Path { + /* 0x00 */ u8 count; // number of points in the path + /* 0x04 */ Vec3s* points; // Segment Address to the array of points +} Path; // size = 0x8 + +Path* Path_GetByIndex(struct PlayState* play, s16 index, s16 max); +f32 Path_OrientAndGetDistSq(struct Actor* actor, Path* path, s16 waypoint, s16* yaw); +void Path_CopyLastPoint(Path* path, Vec3f* dest); + +#endif diff --git a/include/z64play.h b/include/z64play.h index 224ca196d2..4ca9e0b024 100644 --- a/include/z64play.h +++ b/include/z64play.h @@ -4,7 +4,6 @@ #include "ultra64.h" #include "prerender.h" - #include "z64actor.h" #include "z64bgcheck.h" #include "z64camera.h" @@ -18,6 +17,7 @@ #include "z64message.h" #include "z64object.h" #include "z64pause.h" +#include "z64room.h" #include "z64scene.h" #include "z64sfx_source.h" #include "z64skybox.h" @@ -26,10 +26,26 @@ #include "z64view.h" union Color_RGBA8_u32; +struct Path; struct Player; struct QuestHintCmd; struct VisMono; +typedef enum PauseBgPreRenderState { + /* 0 */ PAUSE_BG_PRERENDER_OFF, // Inactive, do nothing. + /* 1 */ PAUSE_BG_PRERENDER_SETUP, // The current frame is only drawn for the purpose of serving as the pause background. + /* 2 */ PAUSE_BG_PRERENDER_PROCESS, // The previous frame was PAUSE_BG_PRERENDER_SETUP, now apply prerender filters. + /* 3 */ PAUSE_BG_PRERENDER_READY, // The pause background is ready to be used. + /* 4 */ PAUSE_BG_PRERENDER_MAX +} PauseBgPreRenderState; + +typedef enum TransitionTileState { + /* 0 */ TRANS_TILE_OFF, // Inactive, do nothing + /* 1 */ TRANS_TILE_SETUP, // Save the necessary buffers + /* 2 */ TRANS_TILE_PROCESS, // Initialize the transition + /* 3 */ TRANS_TILE_READY // The transition is ready, so will update and draw each frame +} TransitionTileState; + typedef struct SceneSequences { /* 0x00 */ u8 seqId; /* 0x01 */ u8 natureAmbienceId; @@ -88,7 +104,7 @@ typedef struct PlayState { /* 0x11DFC */ void* unk_11DFC; /* 0x11E00 */ Spawn* spawnList; /* 0x11E04 */ s16* exitList; - /* 0x11E08 */ Path* pathList; + /* 0x11E08 */ struct Path* pathList; /* 0x11E0C */ struct QuestHintCmd* naviQuestHints; /* 0x11E10 */ void* specialEffects; /* 0x11E14 */ u8 skyboxId; @@ -115,6 +131,8 @@ typedef struct PlayState { /* 0x12430 */ char unk_12430[0xE8]; } PlayState; // size = 0x12518 +extern Mtx D_01000000; // billboardMtx + #define GET_ACTIVE_CAM(play) ((play)->cameraPtrs[(play)->activeCamId]) #define GET_PLAYER(play) ((Player*)(play)->actorCtx.actorLists[ACTORCAT_PLAYER].head) @@ -122,15 +140,13 @@ void Play_SetViewpoint(PlayState* this, s16 viewpoint); s32 Play_CheckViewpoint(PlayState* this, s16 viewpoint); void Play_SetShopBrowsingViewpoint(PlayState* this); Gfx* Play_SetFog(PlayState* this, Gfx* gfx); -void Play_Destroy(GameState* thisx); -void Play_Init(GameState* thisx); void Play_Main(GameState* thisx); int Play_InCsMode(PlayState* this); f32 func_800BFCB8(PlayState* this, MtxF* mf, Vec3f* pos); void* Play_LoadFile(PlayState* this, RomFile* file); void Play_GetScreenPos(PlayState* this, Vec3f* src, Vec3f* dest); s16 Play_CreateSubCamera(PlayState* this); -s16 Play_GetActiveCamId(PlayState* this); +s32 Play_GetActiveCamId(PlayState* this); s16 Play_ChangeCameraStatus(PlayState* this, s16 camId, s16 status); void Play_ClearCamera(PlayState* this, s16 camId); void Play_ClearAllSubCameras(PlayState* this); @@ -148,6 +164,11 @@ void Play_SetupRespawnPoint(PlayState* this, s32 respawnMode, s32 playerParams); void Play_TriggerVoidOut(PlayState* this); void Play_TriggerRespawn(PlayState* this); int Play_CamIsNotFixed(PlayState* this); +s32 func_800C0D34(PlayState* this, Actor* actor, s16* yaw); +s32 func_800C0DB4(PlayState* this, Vec3f* pos); + +void Play_Init(GameState* thisx); +void Play_Destroy(GameState* thisx); #if DEBUG_FEATURES extern void* gDebugCutsceneScript; diff --git a/include/z64player.h b/include/z64player.h index d44da08ae8..368a6cf032 100644 --- a/include/z64player.h +++ b/include/z64player.h @@ -931,7 +931,7 @@ typedef struct Player { /* 0x0854 */ f32 unk_854; /* 0x0858 */ f32 unk_858; - /* 0x085C */ f32 unk_85C; // stick length among other things + /* 0x085C */ f32 unk_85C; // stick length among other things (TODO: probably part of an "fwork" array) /* 0x0860 */ s16 unk_860; // stick flame timer among other things /* 0x0862 */ s8 unk_862; // get item draw ID + 1 /* 0x0864 */ f32 unk_864; diff --git a/include/z64quest_hint.h b/include/z64quest_hint.h new file mode 100644 index 0000000000..b592a07c34 --- /dev/null +++ b/include/z64quest_hint.h @@ -0,0 +1,11 @@ +#ifndef Z64QUEST_HINT_H +#define Z64QUEST_HINT_H + +#include "ultra64.h" + +struct PlayState; + +u16 QuestHint_GetSariaTextId(struct PlayState* play); +u16 QuestHint_GetNaviTextId(struct PlayState* play); + +#endif diff --git a/include/z64quest_hint_commands.h b/include/z64quest_hint_commands.h index 62f262f39b..8b99510160 100644 --- a/include/z64quest_hint_commands.h +++ b/include/z64quest_hint_commands.h @@ -3,6 +3,13 @@ #include "ultra64.h" +typedef struct QuestHintCmd { + /* 0x00 */ u8 byte0; + /* 0x01 */ u8 byte1; + /* 0x02 */ u8 byte2; + /* 0x03 */ u8 byte3; +} QuestHintCmd; // size = 0x4 + /* * Hint Command Types */ diff --git a/include/z64room.h b/include/z64room.h new file mode 100644 index 0000000000..72c6f0982b --- /dev/null +++ b/include/z64room.h @@ -0,0 +1,174 @@ +#ifndef Z64ROOM_H +#define Z64ROOM_H + +#include "ultra64.h" +#include "z64dma.h" +#include "z64math.h" + +struct Input; +struct PlayState; + +// Room shapes + +typedef enum RoomShapeType { + /* 0 */ ROOM_SHAPE_TYPE_NORMAL, + /* 1 */ ROOM_SHAPE_TYPE_IMAGE, + /* 2 */ ROOM_SHAPE_TYPE_CULLABLE, + /* 3 */ ROOM_SHAPE_TYPE_MAX +} RoomShapeType; + +typedef struct RoomShapeBase { + /* 0x00 */ u8 type; +} RoomShapeBase; // size = 0x01 + +typedef struct RoomShapeDListsEntry { + /* 0x00 */ Gfx* opa; + /* 0x04 */ Gfx* xlu; +} RoomShapeDListsEntry; // size = 0x08 + +typedef struct RoomShapeNormal { + /* 0x00 */ RoomShapeBase base; + /* 0x01 */ u8 numEntries; + /* 0x04 */ RoomShapeDListsEntry* entries; + /* 0x08 */ RoomShapeDListsEntry* entriesEnd; +} RoomShapeNormal; // size = 0x0C + +typedef enum RoomShapeImageAmountType { + /* 1 */ ROOM_SHAPE_IMAGE_AMOUNT_SINGLE = 1, + /* 2 */ ROOM_SHAPE_IMAGE_AMOUNT_MULTI +} RoomShapeImageAmountType; + +typedef struct RoomShapeImageBase { + /* 0x00 */ RoomShapeBase base; + /* 0x01 */ u8 amountType; // RoomShapeImageAmountType + /* 0x04 */ RoomShapeDListsEntry* entry; +} RoomShapeImageBase; // size = 0x08 + +typedef struct RoomShapeImageSingle { + /* 0x00 */ RoomShapeImageBase base; + /* 0x08 */ void* source; + /* 0x0C */ u32 unk_0C; + /* 0x10 */ void* tlut; + /* 0x14 */ u16 width; + /* 0x16 */ u16 height; + /* 0x18 */ u8 fmt; + /* 0x19 */ u8 siz; + /* 0x1A */ u16 tlutMode; + /* 0x1C */ u16 tlutCount; +} RoomShapeImageSingle; // size = 0x20 + +typedef struct RoomShapeImageMultiBgEntry { + /* 0x00 */ u16 unk_00; + /* 0x02 */ u8 bgCamIndex; // for which bg cam index is this entry for + /* 0x04 */ void* source; + /* 0x08 */ u32 unk_0C; + /* 0x0C */ void* tlut; + /* 0x10 */ u16 width; + /* 0x12 */ u16 height; + /* 0x14 */ u8 fmt; + /* 0x15 */ u8 siz; + /* 0x16 */ u16 tlutMode; + /* 0x18 */ u16 tlutCount; +} RoomShapeImageMultiBgEntry; // size = 0x1C + +typedef struct RoomShapeImageMulti { + /* 0x00 */ RoomShapeImageBase base; + /* 0x08 */ u8 numBackgrounds; + /* 0x0C */ RoomShapeImageMultiBgEntry* backgrounds; +} RoomShapeImageMulti; // size = 0x10 + +typedef struct RoomShapeCullableEntry { + /* 0x00 */ Vec3s boundsSphereCenter; + /* 0x06 */ s16 boundsSphereRadius; + /* 0x08 */ Gfx* opa; + /* 0x0C */ Gfx* xlu; +} RoomShapeCullableEntry; // size = 0x10 + +#define ROOM_SHAPE_CULLABLE_MAX_ENTRIES 64 + +typedef struct RoomShapeCullable { + /* 0x00 */ RoomShapeBase base; + /* 0x01 */ u8 numEntries; + /* 0x04 */ RoomShapeCullableEntry* entries; + /* 0x08 */ RoomShapeCullableEntry* entriesEnd; +} RoomShapeCullable; // size = 0x0C + +typedef union RoomShape { + RoomShapeBase base; + RoomShapeNormal normal; + union { + RoomShapeImageBase base; + RoomShapeImageSingle single; + RoomShapeImageMulti multi; + } image; + RoomShapeCullable cullable; +} RoomShape; // "Ground Shape" + +typedef enum RoomType { + /* 0 */ ROOM_TYPE_NORMAL, + /* 1 */ ROOM_TYPE_DUNGEON, // Blocks Sun's Song's time advance effect. Not exclusively used by typical dungeon rooms. + /* 2 */ ROOM_TYPE_INDOORS, // Reduces player run speed and blocks player from attacking or jumping. + /* 3 */ ROOM_TYPE_3, // Unused. Color dithering is turned off when drawing the room and other things. + /* 4 */ ROOM_TYPE_4, // Unused. Prevents switching to CAM_SET_HORSE when mounting a horse. + /* 5 */ ROOM_TYPE_BOSS // Disables Environment_AdjustLights +} RoomType; + +typedef enum RoomEnvironmentType { + /* 0 */ ROOM_ENV_DEFAULT, + /* 1 */ ROOM_ENV_COLD, + /* 2 */ ROOM_ENV_WARM, + /* 3 */ ROOM_ENV_HOT, // Enables hot room timer for the current room + /* 4 */ ROOM_ENV_UNK_STRETCH_1, + /* 5 */ ROOM_ENV_UNK_STRETCH_2, + /* 6 */ ROOM_ENV_UNK_STRETCH_3 +} RoomEnvironmentType; + +typedef enum LensMode { + /* 0 */ LENS_MODE_SHOW_ACTORS, // lens actors are invisible by default, and shown by using lens (for example, invisible enemies) + /* 1 */ LENS_MODE_HIDE_ACTORS // lens actors are visible by default, and hidden by using lens (for example, fake walls) +} LensMode; + +typedef struct Room { + /* 0x00 */ s8 num; // -1 is invalid room + /* 0x01 */ u8 unk_01; + /* 0x02 */ u8 environmentType; + /* 0x03 */ u8 type; + /* 0x04 */ s8 echo; + /* 0x05 */ u8 lensMode; + /* 0x08 */ RoomShape* roomShape; // original name: "ground_shape" + /* 0x0C */ void* segment; + /* 0x10 */ char unk_10[0x4]; +} Room; // size = 0x14 + +typedef struct RoomContext { + /* 0x00 */ Room curRoom; + /* 0x14 */ Room prevRoom; + /* 0x28 */ void* bufPtrs[2]; // Start and end pointers for the room buffer. Can be split into two pages, where page 0 is allocated from the start pointer and page 1 is allocated from the end pointer. + /* 0x30 */ u8 activeBufPage; // 0 - First page in memory, 1 - Last page in memory + /* 0x31 */ s8 status; // 0 - Free for new room request, 1 - DmaRequest for a new room is in progress + /* 0x34 */ void* roomRequestAddr; // Pointer to where the requested room segment will be stored + /* 0x38 */ DmaRequest dmaRequest; + /* 0x58 */ OSMesgQueue loadQueue; + /* 0x70 */ OSMesg loadMsg; + /* 0x74 */ s16 drawParams[2]; // context-specific data used by the current scene draw config +} RoomContext; // size = 0x78 + +typedef struct RoomList { + /* 0x00 */ u8 count; + /* 0x04 */ RomFile* romFiles; // Array of rom addresses for each room in a scene +} RoomList; + +#define ROOM_DRAW_OPA (1 << 0) +#define ROOM_DRAW_XLU (1 << 1) + +void func_80095AA0(struct PlayState* play, Room* room, struct Input* input, s32 arg3); +void Room_DrawBackground2D(Gfx** gfxP, void* tex, void* tlut, u16 width, u16 height, u8 fmt, u8 siz, u16 tlutMode, + u16 tlutCount, f32 offsetX, f32 offsetY); +void Room_Init(struct PlayState* play, Room* room); +u32 Room_SetupFirstRoom(struct PlayState* play, RoomContext* roomCtx); +s32 Room_RequestNewRoom(struct PlayState* play, RoomContext* roomCtx, s32 roomNum); +s32 Room_ProcessRoomRequest(struct PlayState* play, RoomContext* roomCtx); +void Room_Draw(struct PlayState* play, Room* room, u32 flags); +void Room_FinishRoomChange(struct PlayState* play, RoomContext* roomCtx); + +#endif diff --git a/include/z64save.h b/include/z64save.h index b52e08ada5..8150a0e695 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -6,6 +6,11 @@ #include "z64inventory.h" #include "z64math.h" +typedef enum ZTargetSetting { + /* 0 */ Z_TARGET_SETTING_SWITCH, + /* 1 */ Z_TARGET_SETTING_HOLD +} ZTargetSetting; + typedef enum Language { #if OOT_NTSC /* 0 */ LANGUAGE_JPN, @@ -84,6 +89,10 @@ typedef struct Inventory { /* 0x5C */ s16 gsTokens; } Inventory; // size = 0x5E +typedef struct Checksum { + /* 0x00 */ u16 value; +} Checksum; // size = 0x02 + typedef struct SavedSceneFlags { /* 0x00 */ u32 chest; /* 0x04 */ u32 swch; @@ -208,7 +217,7 @@ typedef enum WorldMapArea { typedef struct SavePlayerData { /* 0x00 0x001C */ char newf[6]; // string "ZELDAZ" /* 0x06 0x0022 */ u16 deaths; - /* 0x08 0x0024 */ char playerName[8]; + /* 0x08 0x0024 */ u8 playerName[8]; /* 0x10 0x002C */ s16 n64ddFlag; /* 0x12 0x002E */ s16 healthCapacity; // "max_life" /* 0x14 0x0030 */ s16 health; // "now_life" @@ -254,7 +263,7 @@ typedef struct SaveInfo { /* 0x12AA 0x12C6 */ u8 scarecrowSpawnSong[0x80]; /* 0x132A 0x1346 */ char unk_1346[0x02]; /* 0x132C 0x1348 */ HorseData horseData; - /* 0x1336 0x1352 */ u16 checksum; // "check_sum" + /* 0x1336 0x1352 */ Checksum checksum; // "check_sum" } SaveInfo; typedef struct Save { @@ -311,10 +320,10 @@ typedef struct SaveContext { /* 0x1404 */ u16 minigameState; /* 0x1406 */ u16 minigameScore; // "yabusame_total" /* 0x1408 */ char unk_1408[0x0001]; - /* 0x1409 */ u8 language; // NTSC 0: Japanese; 1: English | PAL 0: English; 1: German; 2: French - /* 0x140A */ u8 audioSetting; + /* 0x1409 */ u8 language; // NTSC 0: Japanese; 1: English | PAL 0: English; 1: German; 2: French (see enum `Language`) + /* 0x140A */ u8 soundSetting; // 0: Stereo; 1: Mono; 2: Headset; 3: Surround (see enum `SoundSetting`) /* 0x140B */ char unk_140B[0x0001]; - /* 0x140C */ u8 zTargetSetting; // 0: Switch; 1: Hold + /* 0x140C */ u8 zTargetSetting; // 0: Switch; 1: Hold (see enum `ZTargetSetting`) /* 0x140E */ u16 forcedSeqId; // immediately start playing the sequence if set /* 0x1410 */ u8 cutsceneTransitionControl; // context dependent usage: can either trigger a delayed fade or control fill alpha /* 0x1411 */ char unk_1411[0x0001]; @@ -421,8 +430,8 @@ typedef enum LinkAge { #define CUR_EQUIP_VALUE(equip) ((s32)(gSaveContext.save.info.equips.equipment & gEquipMasks[equip]) >> gEquipShifts[equip]) #define OWNED_EQUIP_FLAG(equip, value) (gBitFlags[value] << gEquipShifts[equip]) #define OWNED_EQUIP_FLAG_ALT(equip, value) ((1 << (value)) << gEquipShifts[equip]) -#define CHECK_OWNED_EQUIP(equip, value) (OWNED_EQUIP_FLAG(equip, value) & gSaveContext.save.info.inventory.equipment) -#define CHECK_OWNED_EQUIP_ALT(equip, value) (gBitFlags[(value) + (equip) * 4] & gSaveContext.save.info.inventory.equipment) +#define CHECK_OWNED_EQUIP(equip, value) (gSaveContext.save.info.inventory.equipment & OWNED_EQUIP_FLAG(equip, value)) +#define CHECK_OWNED_EQUIP_ALT(equip, value) (gSaveContext.save.info.inventory.equipment & gBitFlags[(value) + (equip) * 4]) #define SWORD_EQUIP_TO_PLAYER(swordEquip) (swordEquip) #define SHIELD_EQUIP_TO_PLAYER(shieldEquip) (shieldEquip) @@ -433,7 +442,7 @@ typedef enum LinkAge { #define CAPACITY(upg, value) gUpgradeCapacities[upg][value] #define CUR_CAPACITY(upg) CAPACITY(upg, CUR_UPG_VALUE(upg)) -#define CHECK_QUEST_ITEM(item) (gBitFlags[item] & gSaveContext.save.info.inventory.questItems) +#define CHECK_QUEST_ITEM(item) (gSaveContext.save.info.inventory.questItems & gBitFlags[item]) #define CHECK_DUNGEON_ITEM(item, dungeonIndex) (gSaveContext.save.info.inventory.dungeonItems[dungeonIndex] & gBitFlags[item]) #define GET_GS_FLAGS(index) \ @@ -965,12 +974,26 @@ typedef enum IngoRaceState { #define EVENTINF_MARATHON_ACTIVE 0x10 // EVENTINF 0x20-0x24 -#define EVENTINF_INDEX_20_21_22_23_24 2 -#define EVENTINF_20_MASK (1 << 0) -#define EVENTINF_21_MASK (1 << 1) -#define EVENTINF_22_MASK (1 << 2) -#define EVENTINF_23_MASK (1 << 3) -#define EVENTINF_24_MASK (1 << 4) +#define EVENTINF_INDEX_HAGGLING_TOWNSFOLK 0x2 +#define EVENTINF_HAGGLING_TOWNSFOLK_MESG_0 0x20 +#define EVENTINF_HAGGLING_TOWNSFOLK_MESG_1 0x21 +#define EVENTINF_HAGGLING_TOWNSFOLK_MESG_2 0x22 +#define EVENTINF_HAGGLING_TOWNSFOLK_MESG_3 0x23 +#define EVENTINF_HAGGLING_TOWNSFOLK_MESG_4 0x24 + +#define EVENTINF_HAGGLING_TOWNSFOLK_MASK \ + (EVENTINF_MASK(EVENTINF_HAGGLING_TOWNSFOLK_MESG_0) | EVENTINF_MASK(EVENTINF_HAGGLING_TOWNSFOLK_MESG_1) | \ + EVENTINF_MASK(EVENTINF_HAGGLING_TOWNSFOLK_MESG_2) | EVENTINF_MASK(EVENTINF_HAGGLING_TOWNSFOLK_MESG_3) | \ + EVENTINF_MASK(EVENTINF_HAGGLING_TOWNSFOLK_MESG_4)) + +#define GET_EVENTINF_ENMU_TALK_FLAGS() \ + gSaveContext.eventInf[EVENTINF_INDEX_HAGGLING_TOWNSFOLK] & EVENTINF_HAGGLING_TOWNSFOLK_MASK + +#define SET_EVENTINF_ENMU_TALK_FLAGS(talkFlags) \ + gSaveContext.eventInf[EVENTINF_INDEX_HAGGLING_TOWNSFOLK] |= (talkFlags); + +#define RESET_EVENTINF_ENMU_TALK_FLAGS() \ + gSaveContext.eventInf[EVENTINF_INDEX_HAGGLING_TOWNSFOLK] &= ~(EVENTINF_HAGGLING_TOWNSFOLK_MASK); #define EVENTINF_30 0x30 diff --git a/include/z64scene.h b/include/z64scene.h index 4acf9df16a..eacd62ed8a 100644 --- a/include/z64scene.h +++ b/include/z64scene.h @@ -4,15 +4,16 @@ #include "macros.h" #include "ultra64.h" #include "z64bgcheck.h" -#include "z64dma.h" #include "z64environment.h" #include "z64light.h" #include "z64math.h" +#include "z64path.h" #include "command_macros_base.h" struct GameState; struct PlayState; +struct RoomShapeBase; typedef struct SceneTableEntry { /* 0x00 */ RomFile sceneFile; @@ -51,159 +52,6 @@ typedef struct Spawn { /* 0x01 */ u8 room; } Spawn; -typedef struct Path { - /* 0x00 */ u8 count; // number of points in the path - /* 0x04 */ Vec3s* points; // Segment Address to the array of points -} Path; // size = 0x8 - -// Room shapes - -typedef enum RoomShapeType { - /* 0 */ ROOM_SHAPE_TYPE_NORMAL, - /* 1 */ ROOM_SHAPE_TYPE_IMAGE, - /* 2 */ ROOM_SHAPE_TYPE_CULLABLE, - /* 3 */ ROOM_SHAPE_TYPE_MAX -} RoomShapeType; - -typedef struct RoomShapeBase { - /* 0x00 */ u8 type; -} RoomShapeBase; // size = 0x01 - -typedef struct RoomShapeDListsEntry { - /* 0x00 */ Gfx* opa; - /* 0x04 */ Gfx* xlu; -} RoomShapeDListsEntry; // size = 0x08 - -typedef struct RoomShapeNormal { - /* 0x00 */ RoomShapeBase base; - /* 0x01 */ u8 numEntries; - /* 0x04 */ RoomShapeDListsEntry* entries; - /* 0x08 */ RoomShapeDListsEntry* entriesEnd; -} RoomShapeNormal; // size = 0x0C - -typedef enum RoomShapeImageAmountType { - /* 1 */ ROOM_SHAPE_IMAGE_AMOUNT_SINGLE = 1, - /* 2 */ ROOM_SHAPE_IMAGE_AMOUNT_MULTI -} RoomShapeImageAmountType; - -typedef struct RoomShapeImageBase { - /* 0x00 */ RoomShapeBase base; - /* 0x01 */ u8 amountType; // RoomShapeImageAmountType - /* 0x04 */ RoomShapeDListsEntry* entry; -} RoomShapeImageBase; // size = 0x08 - -typedef struct RoomShapeImageSingle { - /* 0x00 */ RoomShapeImageBase base; - /* 0x08 */ void* source; - /* 0x0C */ u32 unk_0C; - /* 0x10 */ void* tlut; - /* 0x14 */ u16 width; - /* 0x16 */ u16 height; - /* 0x18 */ u8 fmt; - /* 0x19 */ u8 siz; - /* 0x1A */ u16 tlutMode; - /* 0x1C */ u16 tlutCount; -} RoomShapeImageSingle; // size = 0x20 - -typedef struct RoomShapeImageMultiBgEntry { - /* 0x00 */ u16 unk_00; - /* 0x02 */ u8 bgCamIndex; // for which bg cam index is this entry for - /* 0x04 */ void* source; - /* 0x08 */ u32 unk_0C; - /* 0x0C */ void* tlut; - /* 0x10 */ u16 width; - /* 0x12 */ u16 height; - /* 0x14 */ u8 fmt; - /* 0x15 */ u8 siz; - /* 0x16 */ u16 tlutMode; - /* 0x18 */ u16 tlutCount; -} RoomShapeImageMultiBgEntry; // size = 0x1C - -typedef struct RoomShapeImageMulti { - /* 0x00 */ RoomShapeImageBase base; - /* 0x08 */ u8 numBackgrounds; - /* 0x0C */ RoomShapeImageMultiBgEntry* backgrounds; -} RoomShapeImageMulti; // size = 0x10 - -typedef struct RoomShapeCullableEntry { - /* 0x00 */ Vec3s boundsSphereCenter; - /* 0x06 */ s16 boundsSphereRadius; - /* 0x08 */ Gfx* opa; - /* 0x0C */ Gfx* xlu; -} RoomShapeCullableEntry; // size = 0x10 - -#define ROOM_SHAPE_CULLABLE_MAX_ENTRIES 64 - -typedef struct RoomShapeCullable { - /* 0x00 */ RoomShapeBase base; - /* 0x01 */ u8 numEntries; - /* 0x04 */ RoomShapeCullableEntry* entries; - /* 0x08 */ RoomShapeCullableEntry* entriesEnd; -} RoomShapeCullable; // size = 0x0C - -typedef union RoomShape { - RoomShapeBase base; - RoomShapeNormal normal; - union { - RoomShapeImageBase base; - RoomShapeImageSingle single; - RoomShapeImageMulti multi; - } image; - RoomShapeCullable cullable; -} RoomShape; // "Ground Shape" - -typedef enum RoomType { - /* 0 */ ROOM_TYPE_NORMAL, - /* 1 */ ROOM_TYPE_DUNGEON, // Blocks Sun's Song's time advance effect. Not exclusively used by typical dungeon rooms. - /* 2 */ ROOM_TYPE_INDOORS, // Reduces player run speed and blocks player from attacking or jumping. - /* 3 */ ROOM_TYPE_3, // Unused. Color dithering is turned off when drawing the room and other things. - /* 4 */ ROOM_TYPE_4, // Unused. Prevents switching to CAM_SET_HORSE when mounting a horse. - /* 5 */ ROOM_TYPE_BOSS // Disables Environment_AdjustLights -} RoomType; - -typedef enum RoomEnvironmentType { - /* 0 */ ROOM_ENV_DEFAULT, - /* 1 */ ROOM_ENV_COLD, - /* 2 */ ROOM_ENV_WARM, - /* 3 */ ROOM_ENV_HOT, // Enables hot room timer for the current room - /* 4 */ ROOM_ENV_UNK_STRETCH_1, - /* 5 */ ROOM_ENV_UNK_STRETCH_2, - /* 6 */ ROOM_ENV_UNK_STRETCH_3 -} RoomEnvironmentType; - -typedef struct Room { - /* 0x00 */ s8 num; // -1 is invalid room - /* 0x01 */ u8 unk_01; - /* 0x02 */ u8 environmentType; - /* 0x03 */ u8 type; - /* 0x04 */ s8 echo; - /* 0x05 */ u8 lensMode; - /* 0x08 */ RoomShape* roomShape; // original name: "ground_shape" - /* 0x0C */ void* segment; - /* 0x10 */ char unk_10[0x4]; -} Room; // size = 0x14 - -typedef struct RoomContext { - /* 0x00 */ Room curRoom; - /* 0x14 */ Room prevRoom; - /* 0x28 */ void* bufPtrs[2]; // Start and end pointers for the room buffer. Can be split into two pages, where page 0 is allocated from the start pointer and page 1 is allocated from the end pointer. - /* 0x30 */ u8 activeBufPage; // 0 - First page in memory, 1 - Last page in memory - /* 0x31 */ s8 status; // 0 - Free for new room request, 1 - DmaRequest for a new room is in progress - /* 0x34 */ void* roomRequestAddr; // Pointer to where the requested room segment will be stored - /* 0x38 */ DmaRequest dmaRequest; - /* 0x58 */ OSMesgQueue loadQueue; - /* 0x70 */ OSMesg loadMsg; - /* 0x74 */ s16 drawParams[2]; // context-specific data used by the current scene draw config -} RoomContext; // size = 0x78 - -typedef struct RoomList { - /* 0x00 */ u8 count; - /* 0x04 */ RomFile* romFiles; // Array of rom addresses for each room in a scene -} RoomList; - -#define ROOM_DRAW_OPA (1 << 0) -#define ROOM_DRAW_XLU (1 << 1) - // Scene commands typedef struct SCmdBase { @@ -273,7 +121,7 @@ typedef struct SCmdRoomBehavior { typedef struct SCmdMesh { /* 0x00 */ u8 code; /* 0x01 */ u8 data1; - /* 0x04 */ RoomShapeBase* data; + /* 0x04 */ struct RoomShapeBase* data; } SCmdMesh; typedef struct SCmdObjectList { diff --git a/include/z64skin.h b/include/z64skin.h index d29c7c7482..641a980925 100644 --- a/include/z64skin.h +++ b/include/z64skin.h @@ -3,6 +3,10 @@ #include "z64animation.h" +struct Actor; +struct GraphicsContext; +struct PlayState; + /** * Holds a compact version of a vertex used in the Skin system * It is used to initialise the Vtx used by an animated limb @@ -75,4 +79,19 @@ typedef s32 (*SkinOverrideLimbDraw)(struct Actor*, struct PlayState*, s32, Skin* #define SKIN_TRANSFORM_IS_FHG 0x23 +void Skin_UpdateVertices(MtxF* mtx, SkinVertex* skinVertices, SkinLimbModif* modifEntry, Vtx* vtxBuf, Vec3f* pos); +void Skin_DrawAnimatedLimb(struct GraphicsContext* gfxCtx, Skin* skin, s32 limbIndex, s32 arg3, s32 drawFlags); +void Skin_DrawLimb(struct GraphicsContext* gfxCtx, Skin* skin, s32 limbIndex, Gfx* dlistOverride, s32 drawFlags); +void func_800A6330(struct Actor* actor, struct PlayState* play, Skin* skin, SkinPostDraw postDraw, s32 setTranslation); +void func_800A6360(struct Actor* actor, struct PlayState* play, Skin* skin, SkinPostDraw postDraw, + SkinOverrideLimbDraw overrideLimbDraw, s32 setTranslation); +void func_800A6394(struct Actor* actor, struct PlayState* play, Skin* skin, SkinPostDraw postDraw, + SkinOverrideLimbDraw overrideLimbDraw, s32 setTranslation, s32 arg6); +void func_800A63CC(struct Actor* actor, struct PlayState* play, Skin* skin, SkinPostDraw postDraw, + SkinOverrideLimbDraw overrideLimbDraw, s32 setTranslation, s32 arg6, s32 drawFlags); +void Skin_GetLimbPos(Skin* skin, s32 limbIndex, Vec3f* offset, Vec3f* dst); +void Skin_Init(struct PlayState* play, Skin* skin, SkeletonHeader* skeletonHeader, AnimationHeader* animationHeader); +void Skin_Free(struct PlayState* play, Skin* skin); +s32 Skin_ApplyAnimTransformations(Skin* skin, MtxF* limbMatrices, struct Actor* actor, s32 setTranslation); + #endif diff --git a/include/z64sram.h b/include/z64sram.h index 36478c1716..f1d05b7775 100644 --- a/include/z64sram.h +++ b/include/z64sram.h @@ -3,6 +3,9 @@ #include "ultra64/ultratypes.h" +struct FileSelectState; +struct GameState; + typedef struct SramContext { /* 0x00 */ u8* readBuff; } SramContext; // size = 0x4 @@ -12,9 +15,24 @@ typedef struct SramContext { typedef enum SramHeaderField { /* 0x00 */ SRAM_HEADER_SOUND, - /* 0x01 */ SRAM_HEADER_ZTARGET, + /* 0x01 */ SRAM_HEADER_Z_TARGET, /* 0x02 */ SRAM_HEADER_LANGUAGE, - /* 0x03 */ SRAM_HEADER_MAGIC // must be the value of `sZeldaMagic` for save to be considered valid + /* 0x03 */ SRAM_HEADER_MAGIC // must be the value in `sSramDefaultHeader` for save to be considered valid } SramHeaderField; +extern u16 gSramSlotOffsets[]; + +void Sram_InitNewSave(void); +void Sram_InitDebugSave(void); +void Sram_OpenSave(SramContext* sramCtx); +void Sram_WriteSave(SramContext* sramCtx); +void Sram_VerifyAndLoadAllSaves(struct FileSelectState* fileSelect, SramContext* sramCtx); +void Sram_InitSave(struct FileSelectState* fileSelect, SramContext* sramCtx); +void Sram_EraseSave(struct FileSelectState* fileSelect, SramContext* sramCtx); +void Sram_CopySave(struct FileSelectState* fileSelect, SramContext* sramCtx); +void Sram_WriteSramHeader(SramContext* sramCtx); +void Sram_InitSram(struct GameState* gameState, SramContext* sramCtx); +void Sram_Alloc(struct GameState* gameState, SramContext* sramCtx); +void Sram_Init(struct GameState* gameState, SramContext* sramCtx); + #endif diff --git a/include/z64ss_sram.h b/include/z64ss_sram.h new file mode 100644 index 0000000000..ffd628239d --- /dev/null +++ b/include/z64ss_sram.h @@ -0,0 +1,12 @@ +#ifndef Z64SS_SRAM_H +#define Z64SS_SRAM_H + +#include "libc/stddef.h" +#include "ultra64/ultratypes.h" + +void SsSram_Init(s32 addr, u8 handleType, u8 handleDomain, u8 handleLatency, u8 handlePageSize, u8 handleRelDuration, + u8 handlePulse, u32 handleSpeed); +void SsSram_Dma(void* dramAddr, size_t size, s32 direction); +void SsSram_ReadWrite(s32 addr, void* dramAddr, size_t size, s32 direction); + +#endif diff --git a/include/z64thread.h b/include/z64thread.h new file mode 100644 index 0000000000..c4ab827b42 --- /dev/null +++ b/include/z64thread.h @@ -0,0 +1,33 @@ +#ifndef Z64THREAD_H +#define Z64THREAD_H + +#include "ultra64.h" + +#define THREAD_ID_IDLE 1 +#define THREAD_ID_FAULT 2 +#define THREAD_ID_MAIN 3 +#define THREAD_ID_GRAPH 4 +#define THREAD_ID_SCHED 5 +#define THREAD_ID_PADMGR 7 +#define THREAD_ID_N64DD 8 +#define THREAD_ID_DDMSG 9 +#define THREAD_ID_AUDIOMGR 10 +#define THREAD_ID_DMAMGR 18 +#define THREAD_ID_IRQMGR 19 + +#define THREAD_PRI_IDLE_INIT 10 +#define THREAD_PRI_MAIN_INIT 10 +#define THREAD_PRI_DMAMGR_LOW 10 // Used when decompressing files +#define THREAD_PRI_GRAPH 11 +#define THREAD_PRI_AUDIOMGR 12 +#define THREAD_PRI_N64DD 13 +#define THREAD_PRI_DDMSG 13 +#define THREAD_PRI_PADMGR 14 +#define THREAD_PRI_MAIN 15 +#define THREAD_PRI_SCHED 15 +#define THREAD_PRI_DMAMGR 16 +#define THREAD_PRI_IRQMGR 17 +#define THREAD_PRI_FAULT_CLIENT (OS_PRIORITY_APPMAX - 1) +#define THREAD_PRI_FAULT OS_PRIORITY_APPMAX + +#endif diff --git a/include/z64view.h b/include/z64view.h index 3eb3755a2c..3832eb5f6f 100644 --- a/include/z64view.h +++ b/include/z64view.h @@ -1,6 +1,8 @@ #ifndef Z64VIEW_H #define Z64VIEW_H +#include "macros.h" +#include "ultra64.h" #include "z64math.h" struct GraphicsContext; @@ -15,10 +17,10 @@ typedef struct Viewport { #define SET_FULLSCREEN_VIEWPORT(view) \ { \ Viewport viewport; \ - viewport.bottomY = SCREEN_HEIGHT; \ - viewport.rightX = SCREEN_WIDTH; \ viewport.topY = 0; \ + viewport.bottomY = SCREEN_HEIGHT; \ viewport.leftX = 0; \ + viewport.rightX = SCREEN_WIDTH; \ View_SetViewport(view, &viewport); \ } \ (void)0 diff --git a/include/z64vis.h b/include/z64vis.h index fcd24d1b76..86e286c325 100644 --- a/include/z64vis.h +++ b/include/z64vis.h @@ -28,7 +28,6 @@ typedef struct Vis { } Vis; // size = 0x10 - /* Cvg: Coverage */ #define FB_FILTER_TO_CVG_TYPE(filter) (filter) @@ -50,7 +49,6 @@ void VisCvg_Destroy(VisCvg* this); void VisCvg_Draw(VisCvg* this, Gfx** gfxP); - /* Mono: Desaturation */ // Only one type @@ -66,7 +64,6 @@ void VisMono_Destroy(VisMono* this); void VisMono_Draw(VisMono* this, Gfx** gfxP); - /* ZBuf: Z-Buffer */ #define FB_FILTER_TO_ZBUF_TYPE(filter) ((filter) - FB_FILTER_ZBUF_IA) diff --git a/include/z_actor_dlftbls.h b/include/z_actor_dlftbls.h new file mode 100644 index 0000000000..e9e2dc7d93 --- /dev/null +++ b/include/z_actor_dlftbls.h @@ -0,0 +1,74 @@ +#ifndef Z_ACTOR_DLFTBLS_H +#define Z_ACTOR_DLFTBLS_H + +#include "romfile.h" +#include "z64actor_profile.h" + +/** + * @see ACTOROVL_ALLOC_ABSOLUTE + */ +#if DEBUG_FEATURES +#define ACTOROVL_ABSOLUTE_SPACE_SIZE 0x27A0 +#else +#define ACTOROVL_ABSOLUTE_SPACE_SIZE 0x24E0 +#endif + +/** + * The actor overlay should be allocated memory for when loading, + * and the memory deallocated when there is no more actor using the overlay. + * + * `ACTOROVL_ALLOC_` defines indicate how an actor overlay should be loaded. + * + * @note Bitwise or-ing `ACTOROVL_ALLOC_` types is not meaningful. + * The `ACTOROVL_ALLOC_` types are 0, 1, 2 but checked against with a bitwise and. + * + * @see ACTOROVL_ALLOC_ABSOLUTE + * @see ACTOROVL_ALLOC_PERSISTENT + * @see actor_table.h + */ +#define ACTOROVL_ALLOC_NORMAL 0 + +/** + * The actor overlay should be loaded to "absolute space". + * + * Absolute space is a fixed amount of memory allocated once. + * The overlay will still need to be loaded again if at some point there is no more actor using the overlay. + * + * @note Only one such overlay may be loaded at a time. + * This is not checked: a newly loaded overlay will overwrite the previous one in absolute space, + * even if actors are still relying on the previous one. Actors using absolute-allocated overlays should be deleted + * when another absolute-allocated overlay is about to be used. + * + * @see ACTOROVL_ABSOLUTE_SPACE_SIZE + * @see ActorContext.absoluteSpace + * @see ACTOROVL_ALLOC_NORMAL + */ +#define ACTOROVL_ALLOC_ABSOLUTE (1 << 0) + +/** + * The actor overlay should be loaded persistently. + * It will stay loaded until the current game state instance ends. + * + * @see ACTOROVL_ALLOC_NORMAL + */ +#define ACTOROVL_ALLOC_PERSISTENT (1 << 1) + +typedef struct ActorOverlay { + /* 0x00 */ RomFile file; + /* 0x08 */ void* vramStart; + /* 0x0C */ void* vramEnd; + /* 0x10 */ void* loadedRamAddr; // original name: "allocp" + /* 0x14 */ ActorProfile* profile; + /* 0x18 */ char* name; + /* 0x1C */ u16 allocType; // See `ACTOROVL_ALLOC_` defines + /* 0x1E */ s8 numLoaded; // original name: "clients" +} ActorOverlay; // size = 0x20 + +extern ActorOverlay gActorOverlayTable[ACTOR_ID_MAX]; // original name: "actor_dlftbls" 801162A0 +extern s32 gMaxActorId; // original name: "MaxProfile" + +void ActorOverlayTable_LogPrint(void); +void ActorOverlayTable_Init(void); +void ActorOverlayTable_Cleanup(void); + +#endif diff --git a/include/z_en_a_obj.h b/include/z_en_a_obj.h new file mode 100644 index 0000000000..bd65f88f13 --- /dev/null +++ b/include/z_en_a_obj.h @@ -0,0 +1,41 @@ +#ifndef Z_EN_A_OBJ_H +#define Z_EN_A_OBJ_H + +#include "ultra64.h" +#include "z64actor.h" + +// Only A_OBJ_SIGNPOST_OBLONG and A_OBJ_SIGNPOST_ARROW are used in room files. +typedef enum AObjType { + /* 0x00 */ A_OBJ_BLOCK_SMALL, + /* 0x01 */ A_OBJ_BLOCK_LARGE, + /* 0x02 */ A_OBJ_BLOCK_HUGE, + /* 0x03 */ A_OBJ_BLOCK_SMALL_ROT, + /* 0x04 */ A_OBJ_BLOCK_LARGE_ROT, + /* 0x05 */ A_OBJ_CUBE_SMALL, + /* 0x06 */ A_OBJ_UNKNOWN_6, + /* 0x07 */ A_OBJ_GRASS_CLUMP, + /* 0x08 */ A_OBJ_TREE_STUMP, + /* 0x09 */ A_OBJ_SIGNPOST_OBLONG, + /* 0x0A */ A_OBJ_SIGNPOST_ARROW, + /* 0x0B */ A_OBJ_BOULDER_FRAGMENT, + /* 0x0C */ A_OBJ_MAX +} AObjType; + +struct EnAObj; + +typedef void (*EnAObjActionFunc)(struct EnAObj*, struct PlayState*); + +typedef struct EnAObj { + /* 0x000 */ DynaPolyActor dyna; + /* 0x164 */ EnAObjActionFunc actionFunc; + /* 0x168 */ s32 rotateWaitTimer; + /* 0x16C */ s16 textId; + /* 0x16E */ s16 rotateState; + /* 0x170 */ s16 rotateForTimer; + /* 0x172 */ s16 rotSpeedY; + /* 0x174 */ s16 rotSpeedX; + /* 0x178 */ f32 focusYoffset; + /* 0x17C */ ColliderCylinder collider; +} EnAObj; // size = 0x1C8 + +#endif diff --git a/include/z_en_item00.h b/include/z_en_item00.h new file mode 100644 index 0000000000..483f666f5f --- /dev/null +++ b/include/z_en_item00.h @@ -0,0 +1,59 @@ +#ifndef Z_EN_ITEM00_H +#define Z_EN_ITEM00_H + +#include "ultra64.h" +#include "z64actor.h" + +typedef enum Item00Type { + /* 0x00 */ ITEM00_RUPEE_GREEN, + /* 0x01 */ ITEM00_RUPEE_BLUE, + /* 0x02 */ ITEM00_RUPEE_RED, + /* 0x03 */ ITEM00_RECOVERY_HEART, + /* 0x04 */ ITEM00_BOMBS_A, + /* 0x05 */ ITEM00_ARROWS_SINGLE, + /* 0x06 */ ITEM00_HEART_PIECE, + /* 0x07 */ ITEM00_HEART_CONTAINER, + /* 0x08 */ ITEM00_ARROWS_SMALL, + /* 0x09 */ ITEM00_ARROWS_MEDIUM, + /* 0x0A */ ITEM00_ARROWS_LARGE, + /* 0x0B */ ITEM00_BOMBS_B, + /* 0x0C */ ITEM00_NUTS, + /* 0x0D */ ITEM00_STICK, + /* 0x0E */ ITEM00_MAGIC_LARGE, + /* 0x0F */ ITEM00_MAGIC_SMALL, + /* 0x10 */ ITEM00_SEEDS, + /* 0x11 */ ITEM00_SMALL_KEY, + /* 0x12 */ ITEM00_FLEXIBLE, + /* 0x13 */ ITEM00_RUPEE_ORANGE, + /* 0x14 */ ITEM00_RUPEE_PURPLE, + /* 0x15 */ ITEM00_SHIELD_DEKU, + /* 0x16 */ ITEM00_SHIELD_HYLIAN, + /* 0x17 */ ITEM00_TUNIC_ZORA, + /* 0x18 */ ITEM00_TUNIC_GORON, + /* 0x19 */ ITEM00_BOMBS_SPECIAL, + /* 0x1A */ ITEM00_MAX, + /* 0xFF */ ITEM00_NONE = 0xFF +} Item00Type; + +struct EnItem00; + +typedef void (*EnItem00ActionFunc)(struct EnItem00*, struct PlayState*); + +typedef struct EnItem00 { + /* 0x000 */ Actor actor; + /* 0x14C */ EnItem00ActionFunc actionFunc; + /* 0x150 */ s16 collectibleFlag; + /* 0x152 */ s16 getItemId; + /* 0x154 */ s16 unk_154; + /* 0x156 */ s16 unk_156; + /* 0x158 */ s16 unk_158; + /* 0x15A */ s16 despawnTimer; + /* 0x15C */ f32 scale; + /* 0x160 */ ColliderCylinder collider; +} EnItem00; // size = 0x1AC + +EnItem00* Item_DropCollectible(struct PlayState* play, Vec3f* spawnPos, s16 params); +EnItem00* Item_DropCollectible2(struct PlayState* play, Vec3f* spawnPos, s16 params); +void Item_DropCollectibleRandom(struct PlayState* play, Actor* fromActor, Vec3f* spawnPos, s16 params); + +#endif diff --git a/include/z_game_dlftbls.h b/include/z_game_dlftbls.h new file mode 100644 index 0000000000..b5b8c62c87 --- /dev/null +++ b/include/z_game_dlftbls.h @@ -0,0 +1,36 @@ +#ifndef Z_GAME_DLFTBLS_H +#define Z_GAME_DLFTBLS_H + +#include "ultra64.h" +#include "romfile.h" + +typedef struct GameStateOverlay { + /* 0x00 */ void* loadedRamAddr; + /* 0x04 */ RomFile file; // if applicable + /* 0x0C */ void* vramStart; // if applicable + /* 0x10 */ void* vramEnd; // if applicable + /* 0x14 */ void* unk_14; + /* 0x18 */ void* init; // initializes and executes the given context + /* 0x1C */ void* destroy; // deconstructs the context, and sets the next context to load + /* 0x20 */ void* unk_20; + /* 0x24 */ void* unk_24; + /* 0x28 */ s32 unk_28; + /* 0x2C */ u32 instanceSize; +} GameStateOverlay; // size = 0x30 + +// Used in Graph_GetNextGameState in graph.c +#define DEFINE_GAMESTATE_INTERNAL(typeName, enumName) enumName, +#define DEFINE_GAMESTATE(typeName, enumName, name) DEFINE_GAMESTATE_INTERNAL(typeName, enumName) +typedef enum GameStateId { +#include "tables/gamestate_table.h" + GAMESTATE_ID_MAX +} GameStateId; +#undef DEFINE_GAMESTATE +#undef DEFINE_GAMESTATE_INTERNAL + +extern GameStateOverlay gGameStateOverlayTable[GAMESTATE_ID_MAX]; + +void Overlay_LoadGameState(GameStateOverlay* overlayEntry); +void Overlay_FreeGameState(GameStateOverlay* overlayEntry); + +#endif diff --git a/include/z_lib.h b/include/z_lib.h index 34581da982..1e9052f93b 100644 --- a/include/z_lib.h +++ b/include/z_lib.h @@ -2,7 +2,7 @@ #define Z_LIB_H #include "libc/stddef.h" -#include "padmgr.h" +#include "libu64/pad.h" #include "z64math.h" #include "color.h" diff --git a/include/z_locale.h b/include/z_locale.h new file mode 100644 index 0000000000..7afcb33db4 --- /dev/null +++ b/include/z_locale.h @@ -0,0 +1,12 @@ +#ifndef Z_LOCALE_H +#define Z_LOCALE_H + +#include "ultra64/ultratypes.h" +#include "region.h" + +extern s32 gCurrentRegion; + +void Locale_Init(void); +void Locale_ResetRegion(void); + +#endif diff --git a/include/zelda_arena.h b/include/zelda_arena.h index 1d035a0bbe..cf67406577 100644 --- a/include/zelda_arena.h +++ b/include/zelda_arena.h @@ -3,6 +3,8 @@ #include "ultra64.h" +extern s32 gZeldaArenaLogSeverity; + void* ZeldaArena_Malloc(u32 size); void* ZeldaArena_MallocR(u32 size); void* ZeldaArena_Realloc(void* ptr, u32 newSize); diff --git a/linker_scripts/data_with_rodata.ld b/linker_scripts/data_with_rodata.ld index 8d508ee18b..9318247f93 100644 --- a/linker_scripts/data_with_rodata.ld +++ b/linker_scripts/data_with_rodata.ld @@ -18,5 +18,7 @@ SECTIONS { * To avoid dealing with this, we just discard all .gptab sections. */ *(.gptab.*) + /* Inhibit merging of COMMON into scommon */ + *(.scommon) } } diff --git a/spec b/spec deleted file mode 100644 index 69476bd4e9..0000000000 --- a/spec +++ /dev/null @@ -1,19628 +0,0 @@ -/* - * ROM spec file - */ - -#include "include/versions.h" - -beginseg - name "makerom" - // We set the address of the makerom segment as 0x80000400 - 0x1000, since the ROM header and IPL3 together - // are 0x1000 bytes long and we want the entry code to end up at address 0x80000400. - address 0x7FFFF400 - include "$(BUILD_DIR)/src/makerom/rom_header.o" - include "$(BUILD_DIR)/src/makerom/ipl3.o" - include "$(BUILD_DIR)/src/makerom/entry.o" -endseg - -beginseg - name "boot" - include "$(BUILD_DIR)/src/boot/boot_main.o" - include "$(BUILD_DIR)/src/boot/idle.o" -#if OOT_VERSION >= PAL_1_0 - include "$(BUILD_DIR)/src/boot/viconfig.o" -#endif - include "$(BUILD_DIR)/src/boot/carthandle.o" - include "$(BUILD_DIR)/src/boot/z_std_dma.o" -#if !PLATFORM_IQUE - include "$(BUILD_DIR)/src/boot/yaz0.o" -#else - include "$(BUILD_DIR)/src/boot/inflate.o" -#endif - include "$(BUILD_DIR)/src/boot/z_locale.o" -#if PLATFORM_N64 - include "$(BUILD_DIR)/src/boot/cic6105.o" -#endif -#if DEBUG_FEATURES - include "$(BUILD_DIR)/src/boot/assert.o" -#endif -#if !PLATFORM_IQUE - include "$(BUILD_DIR)/src/boot/is_debug.o" -#else - include "$(BUILD_DIR)/src/boot/is_debug_ique.o" -#endif - include "$(BUILD_DIR)/src/boot/driverominit.o" - include "$(BUILD_DIR)/src/boot/mio0.o" - include "$(BUILD_DIR)/src/libu64/stackcheck.o" - include "$(BUILD_DIR)/src/libu64/debug.o" -#if PLATFORM_N64 - include "$(BUILD_DIR)/src/libc64/sleep.o" -#endif -#if DEBUG_FEATURES - include "$(BUILD_DIR)/src/libc64/sprintf.o" -#endif - include "$(BUILD_DIR)/src/libultra/io/piacs.o" - include "$(BUILD_DIR)/src/libultra/os/sendmesg.o" - include "$(BUILD_DIR)/src/libultra/os/stopthread.o" -#if OOT_VERSION >= PAL_1_0 - include "$(BUILD_DIR)/src/libultra/io/viextendvstart.o" - include "$(BUILD_DIR)/src/libultra/io/vimodepallan1.o" -#endif - include "$(BUILD_DIR)/src/libultra/os/recvmesg.o" -#if !PLATFORM_N64 - include "$(BUILD_DIR)/src/libultra/os/initialize.o" -#endif - include "$(BUILD_DIR)/src/libultra/libc/ll.o" - include "$(BUILD_DIR)/src/libultra/os/exceptasm.o" - include "$(BUILD_DIR)/src/libultra/os/thread.o" - include "$(BUILD_DIR)/src/libultra/os/destroythread.o" - include "$(BUILD_DIR)/src/libultra/libc/bzero.o" -#if !PLATFORM_N64 - include "$(BUILD_DIR)/src/libultra/os/parameters.o" -#endif - include "$(BUILD_DIR)/src/libultra/os/createthread.o" -#if PLATFORM_N64 - include "$(BUILD_DIR)/src/libultra/os/initialize.o" - include "$(BUILD_DIR)/src/libultra/os/parameters.o" -#endif - include "$(BUILD_DIR)/src/libultra/os/setsr.o" - include "$(BUILD_DIR)/src/libultra/os/getsr.o" - include "$(BUILD_DIR)/src/libultra/os/writebackdcache.o" - include "$(BUILD_DIR)/src/libultra/io/vigetnextframebuf.o" - include "$(BUILD_DIR)/src/libultra/io/pimgr.o" - include "$(BUILD_DIR)/src/libultra/io/devmgr.o" - include "$(BUILD_DIR)/src/libultra/io/pirawdma.o" - include "$(BUILD_DIR)/src/libultra/os/virtualtophysical.o" - include "$(BUILD_DIR)/src/libultra/io/viblack.o" - include "$(BUILD_DIR)/src/libultra/io/sirawread.o" - include "$(BUILD_DIR)/src/libultra/os/getthreadid.o" - include "$(BUILD_DIR)/src/libultra/os/setintmask.o" - include "$(BUILD_DIR)/src/libultra/io/visetmode.o" - include "$(BUILD_DIR)/src/libultra/os/probetlb.o" - include "$(BUILD_DIR)/src/libultra/os/getmemsize.o" - include "$(BUILD_DIR)/src/libultra/os/seteventmesg.o" -#if DEBUG_FEATURES - include "$(BUILD_DIR)/src/libultra/libc/xprintf.o" -#endif - include "$(BUILD_DIR)/src/libultra/os/unmaptlball.o" - include "$(BUILD_DIR)/src/libultra/io/epidma.o" -#if DEBUG_FEATURES || defined(COMPILER_GCC) - include "$(BUILD_DIR)/src/libultra/libc/string.o" -#endif - include "$(BUILD_DIR)/src/libultra/os/invalicache.o" - include "$(BUILD_DIR)/src/libultra/os/createmesgqueue.o" - include "$(BUILD_DIR)/src/libultra/os/invaldcache.o" - include "$(BUILD_DIR)/src/libultra/io/si.o" - include "$(BUILD_DIR)/src/libultra/os/jammesg.o" - include "$(BUILD_DIR)/src/libultra/os/setthreadpri.o" - include "$(BUILD_DIR)/src/libultra/os/getthreadpri.o" - include "$(BUILD_DIR)/src/libultra/io/epirawread.o" -#if OOT_VERSION >= PAL_1_0 - include "$(BUILD_DIR)/src/libultra/io/viswapbuf.o" -#endif - include "$(BUILD_DIR)/src/libultra/io/epirawdma.o" -#if !PLATFORM_N64 - include "$(BUILD_DIR)/src/libultra/libc/bcmp.o" -#endif - include "$(BUILD_DIR)/src/libultra/os/gettime.o" - include "$(BUILD_DIR)/src/libultra/os/timerintr.o" - include "$(BUILD_DIR)/src/libultra/os/getcount.o" - include "$(BUILD_DIR)/src/libultra/os/setglobalintmask.o" - include "$(BUILD_DIR)/src/libultra/os/setcompare.o" - include "$(BUILD_DIR)/src/libultra/libc/bcopy.o" - include "$(BUILD_DIR)/src/libultra/os/resetglobalintmask.o" - include "$(BUILD_DIR)/src/libultra/os/interrupt.o" -#if !OOT_PAL_N64 - include "$(BUILD_DIR)/src/libultra/io/vimodentsclan1.o" - include "$(BUILD_DIR)/src/libultra/io/vimodempallan1.o" -#endif - include "$(BUILD_DIR)/src/libultra/io/vi.o" -#if OOT_PAL_N64 - include "$(BUILD_DIR)/src/libultra/io/vimodentsclan1.o" - include "$(BUILD_DIR)/src/libultra/io/vimodempallan1.o" -#endif -#if OOT_VERSION < PAL_1_0 - include "$(BUILD_DIR)/src/libultra/io/vimodepallan1.o" -#endif - include "$(BUILD_DIR)/src/libultra/io/viswapcontext.o" - include "$(BUILD_DIR)/src/libultra/io/pigetcmdq.o" - include "$(BUILD_DIR)/src/libultra/io/epiread.o" -#if OOT_VERSION >= PAL_1_0 - include "$(BUILD_DIR)/src/libultra/io/visetspecial.o" -#endif - include "$(BUILD_DIR)/src/libultra/io/cartrominit.o" -#if OOT_PAL_N64 || DEBUG_FEATURES - include "$(BUILD_DIR)/src/libultra/io/vimodefpallan1.o" -#endif - include "$(BUILD_DIR)/src/libultra/os/setfpccsr.o" - include "$(BUILD_DIR)/src/libultra/os/getfpccsr.o" -#if PLATFORM_N64 || DEBUG_FEATURES - include "$(BUILD_DIR)/src/libultra/io/epiwrite.o" -#endif - include "$(BUILD_DIR)/src/libultra/os/maptlbrdb.o" - include "$(BUILD_DIR)/src/libultra/os/yieldthread.o" - include "$(BUILD_DIR)/src/libultra/os/getcause.o" - include "$(BUILD_DIR)/src/libultra/io/epirawwrite.o" -#if DEBUG_FEATURES - include "$(BUILD_DIR)/src/libultra/libc/xlitob.o" - include "$(BUILD_DIR)/src/libultra/libc/ldiv.o" - include "$(BUILD_DIR)/src/libultra/libc/xldtob.o" -#endif -#if PLATFORM_N64 - include "$(BUILD_DIR)/src/libultra/os/settimer.o" -#endif - include "$(BUILD_DIR)/src/libultra/io/sirawwrite.o" - include "$(BUILD_DIR)/src/libultra/io/vimgr.o" - include "$(BUILD_DIR)/src/libultra/io/vigetcurrcontext.o" - include "$(BUILD_DIR)/src/libultra/os/startthread.o" -#if OOT_VERSION >= PAL_1_0 - include "$(BUILD_DIR)/src/libultra/io/visetyscale.o" - include "$(BUILD_DIR)/src/libultra/io/visetxscale.o" -#endif - include "$(BUILD_DIR)/src/libultra/os/sethwintrroutine.o" - include "$(BUILD_DIR)/src/libultra/os/gethwintrroutine.o" -#if !PLATFORM_N64 - include "$(BUILD_DIR)/src/libultra/os/setwatchlo.o" -#endif - include "$(BUILD_DIR)/src/boot/build.o" - include "$(BUILD_DIR)/data/rsp_boot.text.o" - include "$(BUILD_DIR)/data/cic6105.text.o" - -#if PLATFORM_IQUE && !defined(COMPILER_GCC) - include "$(BUILD_DIR)/src/libgcc/__divdi3.o" - include "$(BUILD_DIR)/src/libgcc/__moddi3.o" - include "$(BUILD_DIR)/src/libgcc/__udivdi3.o" - include "$(BUILD_DIR)/src/libgcc/__umoddi3.o" - include "$(BUILD_DIR)/src/libgcc/__cmpdi2.o" - include "$(BUILD_DIR)/src/libgcc/__floatdidf.o" - include "$(BUILD_DIR)/src/libgcc/__floatdisf.o" - include "$(BUILD_DIR)/src/libgcc/__fixunsdfdi.o" - include "$(BUILD_DIR)/src/libgcc/__fixdfdi.o" - include "$(BUILD_DIR)/src/libgcc/__fixunssfdi.o" - include "$(BUILD_DIR)/src/libgcc/__fixsfdi.o" -#endif - -#ifdef COMPILER_GCC - include "$(BUILD_DIR)/src/libc/memset.o" - include "$(BUILD_DIR)/src/libc/memmove.o" - include "$(BUILD_DIR)/src/gcc_fix/missing_gcc_functions.o" -#endif -endseg - -beginseg - name "dmadata" - include "$(BUILD_DIR)/src/dmadata/dmadata.o" -endseg - -beginseg - name "Audiobank" - address 0 - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_0.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_1.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_2.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_3.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_4.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_5.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_6.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_7.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_8.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_9.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_10.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_11.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_12.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_13.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_14.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_15.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_16.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_17.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_18.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_19.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_20.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_21.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_22.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_23.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_24.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_25.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_26.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_27.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_28.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_29.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_30.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_31.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_32.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_33.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_34.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_35.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_36.o" - include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_37.o" -#if OOT_VERSION >= PAL_1_0 - include "$(BUILD_DIR)/assets/audio/audiobank_padding.o" -#endif -endseg - -beginseg - name "Audioseq" - address 0 - include "$(BUILD_DIR)/assets/audio/sequences/seq_0.prg.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_1.prg.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_2.prg.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_3.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_4.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_5.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_6.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_7.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_8.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_9.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_10.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_11.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_12.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_13.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_14.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_15.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_16.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_17.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_18.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_19.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_20.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_21.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_22.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_23.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_24.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_25.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_26.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_27.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_28.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_29.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_30.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_31.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_32.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_33.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_34.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_35.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_36.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_37.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_38.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_39.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_40.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_41.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_42.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_43.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_44.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_45.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_46.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_47.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_48.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_49.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_50.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_51.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_52.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_53.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_54.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_55.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_56.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_57.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_58.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_59.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_60.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_61.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_62.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_63.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_64.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_65.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_66.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_67.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_68.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_69.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_70.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_71.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_72.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_73.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_74.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_75.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_76.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_77.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_78.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_79.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_80.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_81.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_82.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_83.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_84.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_85.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_86.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_88.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_89.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_90.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_91.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_92.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_93.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_94.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_95.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_96.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_97.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_98.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_99.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_100.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_101.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_102.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_103.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_104.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_105.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_106.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_107.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_108.o" - include "$(BUILD_DIR)/assets/audio/sequences/seq_109.prg.o" -endseg - -beginseg - name "Audiotable" - address 0 - include "$(BUILD_DIR)/assets/audio/samplebanks/SampleBank_0.o" - include "$(BUILD_DIR)/assets/audio/samplebanks/SampleBank_2.o" - include "$(BUILD_DIR)/assets/audio/samplebanks/SampleBank_3.o" - include "$(BUILD_DIR)/assets/audio/samplebanks/SampleBank_4.o" - include "$(BUILD_DIR)/assets/audio/samplebanks/SampleBank_5.o" - include "$(BUILD_DIR)/assets/audio/samplebanks/SampleBank_6.o" -endseg - -#if OOT_NTSC -beginseg - name "kanji" - include "$(BUILD_DIR)/assets/textures/kanji/kanji.o" -endseg -#endif - -beginseg - name "link_animetion" -#if OOT_NTSC - romalign 0x1000 -#endif - include "$(BUILD_DIR)/assets/misc/link_animetion/link_animetion.o" - number 7 -endseg - -beginseg - name "icon_item_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/icon_item_static/icon_item_static.o" - number 8 -endseg - -beginseg - name "icon_item_24_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/icon_item_24_static/icon_item_24_static.o" - number 9 -endseg - -beginseg - name "icon_item_field_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/icon_item_field_static/icon_item_field_static.o" - number 12 -endseg - -beginseg - name "icon_item_dungeon_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/icon_item_dungeon_static/icon_item_dungeon_static.o" - number 12 -endseg - -beginseg - name "icon_item_gameover_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/icon_item_gameover_static/icon_item_gameover_static.o" - number 12 -endseg - -#if OOT_NTSC -beginseg - name "icon_item_jpn_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/icon_item_jpn_static/icon_item_jpn_static.o" - number 13 -endseg -#endif - -beginseg - name "icon_item_nes_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/icon_item_nes_static/icon_item_nes_static.o" - number 13 -endseg - -#if OOT_PAL -beginseg - name "icon_item_ger_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/icon_item_ger_static/icon_item_ger_static.o" - number 13 -endseg - -beginseg - name "icon_item_fra_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/icon_item_fra_static/icon_item_fra_static.o" - number 13 -endseg -#endif - -beginseg - name "item_name_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/item_name_static/item_name_static.o" - number 10 -endseg - -beginseg - name "map_name_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/map_name_static/map_name_static.o" - number 11 -endseg - -beginseg - name "do_action_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/do_action_static/do_action_static.o" - number 7 -endseg - -beginseg - name "message_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/message_static/message_static.o" - number 7 -endseg - -#if OOT_NTSC && OOT_VERSION < NTSC_1_2 -beginseg - name "jpn_message_data_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/text/jpn_message_data_static.o" - number 8 -endseg -#endif - -beginseg - name "message_texture_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/message_texture_static/message_texture_static.o" - number 9 -endseg - -beginseg - name "nes_font_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/nes_font_static/nes_font_static.o" - number 10 -endseg - -#if OOT_NTSC && OOT_VERSION >= NTSC_1_2 -beginseg - name "jpn_message_data_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/text/jpn_message_data_static.o" - number 8 -endseg -#endif - -beginseg - name "nes_message_data_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/text/nes_message_data_static.o" - number 7 -endseg - -#if OOT_PAL -beginseg - name "ger_message_data_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/text/ger_message_data_static.o" - number 7 -endseg - -beginseg - name "fra_message_data_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/text/fra_message_data_static.o" - number 7 -endseg -#endif - -beginseg - name "staff_message_data_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/text/staff_message_data_static.o" - number 7 -endseg - -beginseg - name "map_grand_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/map_grand_static/map_grand_static.o" - number 11 -endseg - -#if PLATFORM_N64 -beginseg - name "map_i_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/map_i_static/map_i_static.o" - number 11 -endseg -#endif - -beginseg - name "map_48x85_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/map_48x85_static/map_48x85_static.o" - number 11 -endseg - -#if !PLATFORM_N64 -beginseg - name "map_i_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/map_i_static/map_i_static.o" - number 11 -endseg -#endif - -beginseg - name "code" - compress - after "dmadata" - align 0x20 - include "$(BUILD_DIR)/src/code/z_en_a_keep.o" - include "$(BUILD_DIR)/src/code/z_en_item00.o" - include "$(BUILD_DIR)/src/code/z_eff_blure.o" - include "$(BUILD_DIR)/src/code/z_eff_shield_particle.o" - include "$(BUILD_DIR)/src/code/z_eff_spark.o" - include "$(BUILD_DIR)/src/code/z_eff_ss_dead.o" - include "$(BUILD_DIR)/src/code/z_effect.o" - include "$(BUILD_DIR)/src/code/z_effect_soft_sprite.o" - include "$(BUILD_DIR)/src/code/z_effect_soft_sprite_old_init.o" - include "$(BUILD_DIR)/src/code/z_effect_soft_sprite_dlftbls.o" - include "$(BUILD_DIR)/src/code/flg_set.o" - include "$(BUILD_DIR)/src/code/z_DLF.o" - include "$(BUILD_DIR)/src/code/z_actor.o" - include "$(BUILD_DIR)/src/code/z_actor_dlftbls.o" - include "$(BUILD_DIR)/src/code/z_bgcheck.o" - include "$(BUILD_DIR)/src/code/z_bg_collect.o" - include "$(BUILD_DIR)/src/code/z_bg_item.o" - include "$(BUILD_DIR)/src/code/z_camera.o" - include "$(BUILD_DIR)/src/code/z_collision_btltbls.o" - include "$(BUILD_DIR)/src/code/z_collision_check.o" - include "$(BUILD_DIR)/src/code/z_common_data.o" - include "$(BUILD_DIR)/src/code/z_debug.o" - include "$(BUILD_DIR)/src/code/z_debug_display.o" - include "$(BUILD_DIR)/src/code/z_demo.o" - include "$(BUILD_DIR)/src/code/z_memory_utils.o" - include "$(BUILD_DIR)/src/code/z_draw.o" - include "$(BUILD_DIR)/src/code/z_sfx_source.o" - include "$(BUILD_DIR)/src/code/z_elf_message.o" - include "$(BUILD_DIR)/src/code/z_face_reaction.o" - include "$(BUILD_DIR)/src/code/z_env_flags.o" - include "$(BUILD_DIR)/src/code/z_fcurve_data.o" - include "$(BUILD_DIR)/src/code/z_fcurve_data_skelanime.o" - include "$(BUILD_DIR)/src/code/z_game_dlftbls.o" - include "$(BUILD_DIR)/src/code/z_horse.o" - include "$(BUILD_DIR)/src/code/z_jpeg.o" - include "$(BUILD_DIR)/src/code/z_kaleido_setup.o" - include "$(BUILD_DIR)/src/code/z_kanfont.o" - include "$(BUILD_DIR)/src/code/z_kankyo.o" - include "$(BUILD_DIR)/src/code/z_lib.o" - include "$(BUILD_DIR)/src/code/z_lifemeter.o" - include "$(BUILD_DIR)/src/code/z_lights.o" - include "$(BUILD_DIR)/src/code/z_malloc.o" - include "$(BUILD_DIR)/src/code/z_map_mark.o" -#if DEBUG_ASSETS - include "$(BUILD_DIR)/src/code/z_moji.o" -#endif - include "$(BUILD_DIR)/src/code/z_prenmi_buff.o" - include "$(BUILD_DIR)/src/code/z_nulltask.o" - include "$(BUILD_DIR)/src/code/z_olib.o" - include "$(BUILD_DIR)/src/code/z_onepointdemo.o" - include "$(BUILD_DIR)/src/code/z_map_exp.o" - include "$(BUILD_DIR)/src/code/z_map_data.o" - include "$(BUILD_DIR)/src/code/z_parameter.o" - include "$(BUILD_DIR)/src/code/z_path.o" - include "$(BUILD_DIR)/src/code/z_frame_advance.o" - include "$(BUILD_DIR)/src/code/z_player_lib.o" - include "$(BUILD_DIR)/src/code/z_prenmi.o" - include "$(BUILD_DIR)/src/code/z_quake.o" - include "$(BUILD_DIR)/src/code/z_rcp.o" - include "$(BUILD_DIR)/src/code/z_room.o" - include "$(BUILD_DIR)/src/code/z_sample.o" - include "$(BUILD_DIR)/src/code/z_inventory.o" - include "$(BUILD_DIR)/src/code/z_scene.o" - include "$(BUILD_DIR)/src/code/object_table.o" - include "$(BUILD_DIR)/src/code/z_scene_table.o" - include "$(BUILD_DIR)/src/code/z_skelanime.o" - include "$(BUILD_DIR)/src/code/z_skin.o" - include "$(BUILD_DIR)/src/code/z_skin_awb.o" - include "$(BUILD_DIR)/src/code/z_skin_matrix.o" - include "$(BUILD_DIR)/src/code/z_sram.o" - include "$(BUILD_DIR)/src/code/z_ss_sram.o" - include "$(BUILD_DIR)/src/code/z_rumble.o" -#if DEBUG_ASSETS - include "$(BUILD_DIR)/data/z_text.data.o" -#endif - include "$(BUILD_DIR)/data/unk_8012ABC0.data.o" - include "$(BUILD_DIR)/src/code/z_view.o" - include "$(BUILD_DIR)/src/code/z_vimode.o" - include "$(BUILD_DIR)/src/code/z_viscvg.o" - include "$(BUILD_DIR)/src/code/z_vismono.o" - include "$(BUILD_DIR)/src/code/z_viszbuf.o" - include "$(BUILD_DIR)/src/code/z_vr_box.o" - include "$(BUILD_DIR)/src/code/z_vr_box_draw.o" - include "$(BUILD_DIR)/src/code/z_player_call.o" - include "$(BUILD_DIR)/src/code/z_fbdemo.o" - include "$(BUILD_DIR)/src/code/z_fbdemo_triforce.o" - include "$(BUILD_DIR)/src/code/z_fbdemo_wipe1.o" - include "$(BUILD_DIR)/src/code/z_fbdemo_circle.o" - include "$(BUILD_DIR)/src/code/z_fbdemo_fade.o" - include "$(BUILD_DIR)/src/code/shrink_window.o" -#if DEBUG_FEATURES - include "$(BUILD_DIR)/src/code/db_camera.o" -#endif - include "$(BUILD_DIR)/src/code/z_cutscene_spline.o" -#if DEBUG_FEATURES - include "$(BUILD_DIR)/src/code/mempak.o" -#endif - include "$(BUILD_DIR)/src/code/z_kaleido_manager.o" - include "$(BUILD_DIR)/src/code/z_kaleido_scope_call.o" - include "$(BUILD_DIR)/src/code/z_play.o" - include "$(BUILD_DIR)/src/code/PreRender.o" - include "$(BUILD_DIR)/src/code/TwoHeadGfxArena.o" - include "$(BUILD_DIR)/src/code/TwoHeadArena.o" - include "$(BUILD_DIR)/src/code/audio_stop_all_sfx.o" - include "$(BUILD_DIR)/src/code/audio_thread_manager.o" - include "$(BUILD_DIR)/src/code/title_setup.o" - include "$(BUILD_DIR)/src/code/game.o" - include "$(BUILD_DIR)/src/code/gamealloc.o" - include "$(BUILD_DIR)/src/code/graph.o" - include "$(BUILD_DIR)/src/code/gfxalloc.o" - include "$(BUILD_DIR)/src/code/listalloc.o" - include "$(BUILD_DIR)/src/code/main.o" - include "$(BUILD_DIR)/src/code/padmgr.o" - include "$(BUILD_DIR)/src/code/sched.o" - include "$(BUILD_DIR)/src/code/speed_meter.o" - include "$(BUILD_DIR)/src/code/sys_cfb.o" - include "$(BUILD_DIR)/src/code/sys_math.o" - include "$(BUILD_DIR)/src/code/sys_math3d.o" -#if DEBUG_FEATURES - include "$(BUILD_DIR)/src/code/sys_math3d_draw.o" -#endif - include "$(BUILD_DIR)/src/code/sys_math_atan.o" - include "$(BUILD_DIR)/src/code/sys_matrix.o" - include "$(BUILD_DIR)/src/code/sys_ucode.o" - include "$(BUILD_DIR)/src/code/sys_rumble.o" - include "$(BUILD_DIR)/src/code/sys_freeze.o" -#if DEBUG_FEATURES - include "$(BUILD_DIR)/src/code/sys_debug_controller.o" -#endif - include "$(BUILD_DIR)/src/code/irqmgr.o" -#if PLATFORM_N64 - include "$(BUILD_DIR)/src/code/code_n64dd_800AD410.o" - include "$(BUILD_DIR)/src/code/code_n64dd_800AD4C0.o" -#endif -#if DEBUG_FEATURES - include "$(BUILD_DIR)/src/code/debug_malloc.o" -#endif -#if PLATFORM_N64 - include "$(BUILD_DIR)/src/code/fault_n64.o" -#else - include "$(BUILD_DIR)/src/code/fault_gc.o" - include "$(BUILD_DIR)/src/code/fault_gc_drawer.o" -#endif - include "$(BUILD_DIR)/src/code/kanread.o" -#if DEBUG_FEATURES - include "$(BUILD_DIR)/src/code/ucode_disas.o" -#endif -#if OOT_VERSION < NTSC_1_1 || PLATFORM_GC - 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" -#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" -#if PLATFORM_GC && !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" -#if PLATFORM_N64 - include "$(BUILD_DIR)/src/libu64/gfxprint.o" - include "$(BUILD_DIR)/src/libu64/rcp_utils.o" - include "$(BUILD_DIR)/src/libu64/loadfragment2_n64.o" -#if DEBUG_FEATURES - // This is here only to allow N64 versions to compile with DEBUG_FEATURES. - // There is no N64 Debug ROM to prove this is correct. - include "$(BUILD_DIR)/src/libu64/mtxuty-cvt.o" -#endif - include "$(BUILD_DIR)/src/libu64/pad.o" - include "$(BUILD_DIR)/src/libu64/system_heap.o" - include "$(BUILD_DIR)/src/libu64/padsetup.o" -#else - include "$(BUILD_DIR)/src/libu64/logseverity_gc.o" - include "$(BUILD_DIR)/src/libu64/gfxprint.o" - include "$(BUILD_DIR)/src/libu64/rcp_utils.o" - include "$(BUILD_DIR)/src/libu64/loadfragment2_gc.o" -#if DEBUG_FEATURES - include "$(BUILD_DIR)/src/libu64/mtxuty-cvt.o" -#endif - include "$(BUILD_DIR)/src/libu64/relocation_gc.o" - include "$(BUILD_DIR)/src/libu64/load_gc.o" - include "$(BUILD_DIR)/src/libu64/system_heap.o" - include "$(BUILD_DIR)/src/libu64/pad.o" - include "$(BUILD_DIR)/src/libu64/padsetup.o" -#endif - include "$(BUILD_DIR)/src/libc64/math64.o" - include "$(BUILD_DIR)/src/libc64/fp.o" - include "$(BUILD_DIR)/src/libc64/malloc.o" - include "$(BUILD_DIR)/src/libc64/qrand.o" -#if PLATFORM_N64 - include "$(BUILD_DIR)/src/libc64/__osMalloc_n64.o" -#else - include "$(BUILD_DIR)/src/libc64/__osMalloc_gc.o" -#endif -#if !DEBUG_FEATURES - include "$(BUILD_DIR)/src/libc64/sprintf.o" -#endif - include "$(BUILD_DIR)/src/libc64/aprintf.o" -#if !PLATFORM_N64 - include "$(BUILD_DIR)/src/libc64/sleep.o" -#endif - include "$(BUILD_DIR)/src/code/jpegutils.o" - include "$(BUILD_DIR)/src/code/jpegdecoder.o" -#if DEBUG_FEATURES - include "$(BUILD_DIR)/src/libultra/io/pfsfreeblocks.o" -#endif -#if PLATFORM_N64 - include "$(BUILD_DIR)/src/libultra/os/getintmask.o" -#endif -#if PLATFORM_N64 - include "$(BUILD_DIR)/src/libultra/gu/scale.o" -#else - include "$(BUILD_DIR)/src/libultra/mgu/scale.o" -#endif - include "$(BUILD_DIR)/src/libultra/gu/sinf.o" - include "$(BUILD_DIR)/src/libultra/gu/sins.o" - include "$(BUILD_DIR)/src/libultra/io/sptask.o" - include "$(BUILD_DIR)/src/libultra/io/motor.o" - include "$(BUILD_DIR)/src/libultra/io/siacs.o" - include "$(BUILD_DIR)/src/libultra/io/controller.o" - include "$(BUILD_DIR)/src/libultra/io/contreaddata.o" - include "$(BUILD_DIR)/src/libultra/gu/perspective.o" - include "$(BUILD_DIR)/src/libultra/io/sprawdma.o" - include "$(BUILD_DIR)/src/libultra/io/sirawdma.o" - include "$(BUILD_DIR)/src/libultra/bb/sk/skapi.o" // TODO temporary - include "$(BUILD_DIR)/src/libultra/io/sptaskyield.o" -#if DEBUG_FEATURES - include "$(BUILD_DIR)/src/libultra/io/pfsreadwritefile.o" - include "$(BUILD_DIR)/src/libultra/io/pfsgetstatus.o" -#endif -#if PLATFORM_N64 - include "$(BUILD_DIR)/src/libultra/gu/mtxutil.o" -#endif -#if !PLATFORM_N64 - include "$(BUILD_DIR)/src/libultra/mgu/mtxidentf.o" -#endif - include "$(BUILD_DIR)/src/libultra/gu/lookat.o" -#if DEBUG_FEATURES - include "$(BUILD_DIR)/src/libultra/io/pfsallocatefile.o" -#endif - include "$(BUILD_DIR)/src/libultra/os/stoptimer.o" -#if DEBUG_FEATURES - include "$(BUILD_DIR)/src/libultra/io/contpfs.o" -#if !PLATFORM_N64 - include "$(BUILD_DIR)/src/libultra/mgu/mtxl2f.o" -#endif - include "$(BUILD_DIR)/src/libultra/io/pfsfindfile.o" -#endif - include "$(BUILD_DIR)/src/libultra/gu/sqrtf.o" - include "$(BUILD_DIR)/src/libultra/os/afterprenmi.o" - include "$(BUILD_DIR)/src/libultra/io/contquery.o" - include "$(BUILD_DIR)/src/libultra/gu/lookathil.o" -#if !DEBUG_FEATURES - include "$(BUILD_DIR)/src/libultra/libc/xprintf.o" -#endif -#if !DEBUG_FEATURES && !defined(COMPILER_GCC) - include "$(BUILD_DIR)/src/libultra/libc/string.o" -#endif - include "$(BUILD_DIR)/src/libultra/io/sp.o" -#if OOT_VERSION < PAL_1_0 - include "$(BUILD_DIR)/src/libultra/io/viswapbuf.o" -#endif -#if !PLATFORM_N64 - include "$(BUILD_DIR)/src/libultra/mgu/mtxident.o" -#endif - include "$(BUILD_DIR)/src/libultra/gu/position.o" - include "$(BUILD_DIR)/src/libultra/io/sptaskyielded.o" - include "$(BUILD_DIR)/src/libultra/gu/rotate.o" - include "$(BUILD_DIR)/src/libultra/io/aisetfreq.o" - include "$(BUILD_DIR)/src/libultra/os/getactivequeue.o" -#if PLATFORM_N64 - include "$(BUILD_DIR)/src/libultra/gu/normalize.o" -#else - include "$(BUILD_DIR)/src/libultra/mgu/normalize.o" -#endif - include "$(BUILD_DIR)/src/libultra/io/dpgetstat.o" - include "$(BUILD_DIR)/src/libultra/io/dpsetstat.o" -#if DEBUG_FEATURES - include "$(BUILD_DIR)/src/libultra/io/pfsdeletefile.o" -#endif - include "$(BUILD_DIR)/src/libultra/gu/ortho.o" - include "$(BUILD_DIR)/src/libultra/gu/cosf.o" - include "$(BUILD_DIR)/src/libultra/gu/libm_vals.o" -#if OOT_VERSION < PAL_1_0 - include "$(BUILD_DIR)/src/libultra/io/visetspecial.o" -#endif - include "$(BUILD_DIR)/src/libultra/gu/coss.o" -#if PLATFORM_N64 - include "$(BUILD_DIR)/src/libultra/os/settime.o" -#endif - include "$(BUILD_DIR)/src/libultra/io/visetevent.o" -#if DEBUG_FEATURES - include "$(BUILD_DIR)/src/libultra/io/pfsisplug.o" -#endif - include "$(BUILD_DIR)/src/libultra/gu/us2dex.o" - include "$(BUILD_DIR)/src/libultra/io/pfsselectbank.o" - include "$(BUILD_DIR)/src/libultra/io/contsetch.o" -#if DEBUG_FEATURES - include "$(BUILD_DIR)/src/libultra/io/pfsfilestate.o" - include "$(BUILD_DIR)/src/libultra/io/pfsinitpak.o" - include "$(BUILD_DIR)/src/libultra/io/pfschecker.o" -#endif - include "$(BUILD_DIR)/src/libultra/io/aigetlen.o" -#if PLATFORM_N64 - include "$(BUILD_DIR)/src/libultra/gu/translate.o" -#else - include "$(BUILD_DIR)/src/libultra/mgu/translate.o" -#endif - include "$(BUILD_DIR)/src/libultra/io/contramwrite.o" -#if OOT_VERSION >= PAL_1_0 && !(OOT_PAL_N64 || DEBUG_FEATURES) - include "$(BUILD_DIR)/src/libultra/io/vimodefpallan1.o" -#endif -#if !DEBUG_FEATURES - include "$(BUILD_DIR)/src/libultra/io/pfsgetstatus.o" - include "$(BUILD_DIR)/src/libultra/io/contpfs.o" -#endif -#if PLATFORM_N64 - include "$(BUILD_DIR)/src/libultra/libc/bcmp.o" -#endif - include "$(BUILD_DIR)/src/libultra/io/contramread.o" - include "$(BUILD_DIR)/src/libultra/io/crc.o" -#if !DEBUG_FEATURES - include "$(BUILD_DIR)/src/libultra/io/pfsisplug.o" -#endif -#if !PLATFORM_N64 - include "$(BUILD_DIR)/src/libultra/os/settimer.o" -#endif -#if PLATFORM_N64 - include "$(BUILD_DIR)/src/libultra/libc/xlitob.o" - include "$(BUILD_DIR)/src/libultra/libc/ldiv.o" - include "$(BUILD_DIR)/src/libultra/libc/xldtob.o" -#elif !DEBUG_FEATURES - include "$(BUILD_DIR)/src/libultra/libc/xldtob.o" - include "$(BUILD_DIR)/src/libultra/libc/ldiv.o" - include "$(BUILD_DIR)/src/libultra/libc/xlitob.o" -#endif - include "$(BUILD_DIR)/src/libultra/io/spgetstat.o" - include "$(BUILD_DIR)/src/libultra/io/spsetstat.o" - include "$(BUILD_DIR)/src/libultra/os/writebackdcacheall.o" - include "$(BUILD_DIR)/src/libultra/os/getcurrfaultedthread.o" -#if !PLATFORM_N64 - include "$(BUILD_DIR)/src/libultra/mgu/mtxf2l.o" -#endif - include "$(BUILD_DIR)/src/libultra/libc/llcvt.o" -#if OOT_VERSION < PAL_1_0 - include "$(BUILD_DIR)/src/libultra/io/visetyscale.o" -#endif - include "$(BUILD_DIR)/src/libultra/io/vigetcurrframebuf.o" - include "$(BUILD_DIR)/src/libultra/io/spsetpc.o" - include "$(BUILD_DIR)/src/libc/sqrt.o" -#if !PLATFORM_N64 - include "$(BUILD_DIR)/src/libc/absf.o" -#endif - include "$(BUILD_DIR)/src/libc/fmodf.o" -#ifndef COMPILER_GCC - include "$(BUILD_DIR)/src/libc/memset.o" - include "$(BUILD_DIR)/src/libc/memmove.o" -#endif - // For some reason, the data sections of z_message and z_game_over are - // placed near the rodata sections of other files, so we first build this - // combined object before the final link. - include "$(BUILD_DIR)/src/code/z_message_z_game_over.o" - include "$(BUILD_DIR)/src/code/z_construct.o" - include "$(BUILD_DIR)/src/audio/tables/soundfont_table.o" - include "$(BUILD_DIR)/assets/audio/sequence_font_table.o" - include "$(BUILD_DIR)/src/audio/tables/sequence_table.o" - include "$(BUILD_DIR)/src/audio/tables/samplebank_table.o" - include "$(BUILD_DIR)/data/rsp.text.o" - include "$(BUILD_DIR)/data/rsp.rodata.o" -endseg - -beginseg - name "buffers" - flags NOLOAD - align 0x40 - include "$(BUILD_DIR)/src/buffers/zbuffer.o" - include "$(BUILD_DIR)/src/buffers/gfxbuffers.o" - include "$(BUILD_DIR)/src/buffers/audio_heap.o" -endseg - -#if PLATFORM_N64 -beginseg - name "n64dd" - compress - align 0x40 - include "$(BUILD_DIR)/src/n64dd/z_n64dd.o" - include "$(BUILD_DIR)/src/n64dd/n64dd_data_buffer.o" - include "$(BUILD_DIR)/src/n64dd/n64dd_801C8000.o" - include "$(BUILD_DIR)/src/n64dd/n64dd_801C8940.o" - include "$(BUILD_DIR)/src/n64dd/n64dd_801C9440.o" - include "$(BUILD_DIR)/src/n64dd/n64dd_801C9B70.o" - include "$(BUILD_DIR)/src/n64dd/n64dd_error_headers.o" - include "$(BUILD_DIR)/src/n64dd/n64dd_error_bodies.o" - include "$(BUILD_DIR)/src/n64dd/n64dd_error_textures.o" - include "$(BUILD_DIR)/src/n64dd/n64dd_801CA0B0.o" - include "$(BUILD_DIR)/src/libleo/api/readwrite.o" - include "$(BUILD_DIR)/src/libleo/leo/leofunc.o" - include "$(BUILD_DIR)/src/libleo/leo/leoram.o" - include "$(BUILD_DIR)/src/libleo/leo/leoint.o" - include "$(BUILD_DIR)/src/libleo/leo/leocmdex.o" - include "$(BUILD_DIR)/src/libleo/api/getaadr2.o" - include "$(BUILD_DIR)/src/libleo/leo/leoread.o" - include "$(BUILD_DIR)/src/libleo/api/lbatobyte.o" - include "$(BUILD_DIR)/src/libleo/leo/leoinquiry.o" - include "$(BUILD_DIR)/src/libleo/leo/leodiskinit.o" - include "$(BUILD_DIR)/src/libleo/api/seek.o" - include "$(BUILD_DIR)/src/libleo/leo/leord_diskid.o" - include "$(BUILD_DIR)/src/libleo/leo/leomecha.o" - include "$(BUILD_DIR)/src/libleo/api/spdlmotor.o" - include "$(BUILD_DIR)/src/libleo/leo/leo_tbl.o" - include "$(BUILD_DIR)/src/libleo/leo/leotempbuffer.o" - include "$(BUILD_DIR)/src/libleo/leo/leoc2_syndrome.o" - include "$(BUILD_DIR)/src/libleo/leo/leoc2ecc.o" - include "$(BUILD_DIR)/src/libleo/leo/leomseq_tbl.o" - include "$(BUILD_DIR)/src/libleo/leo/leomotor.o" - include "$(BUILD_DIR)/src/libleo/api/driveexist.o" - include "$(BUILD_DIR)/src/libleo/leo/leomode_sel.o" - include "$(BUILD_DIR)/src/libleo/leo/leord_capa.o" - include "$(BUILD_DIR)/src/libleo/leo/leoutil.o" - include "$(BUILD_DIR)/src/libleo/leo/leorezero.o" - include "$(BUILD_DIR)/src/libleo/api/clearqueue.o" - include "$(BUILD_DIR)/src/libleo/api/bytetolba.o" - include "$(BUILD_DIR)/src/libleo/leo/leoreset.o" - include "$(BUILD_DIR)/src/libleo/leo/leotranslat.o" - include "$(BUILD_DIR)/src/libleo/leo/leotimer.o" - include "$(BUILD_DIR)/src/libleo/api/getkadr.o" - include "$(BUILD_DIR)/src/libleo/api/getaadr.o" - include "$(BUILD_DIR)/src/libleo/leo/leoglobals.o" - include "$(BUILD_DIR)/src/libleo/leo/leowrite.o" - include "$(BUILD_DIR)/src/libleo/api/cjcreateleomanager.o" - include "$(BUILD_DIR)/src/libleo/leo/leointerrupt.o" - include "$(BUILD_DIR)/src/libleo/api/cacreateleomanager.o" - include "$(BUILD_DIR)/src/libleo/api/testunitready.o" - include "$(BUILD_DIR)/src/libleo/leo/leotestunit.o" - include "$(BUILD_DIR)/src/libleo/leo/leoseek.o" -endseg -#endif - -beginseg - name "ovl_title" - compress - address 0x80800000 - include "$(BUILD_DIR)/src/overlays/gamestates/ovl_title/z_title.o" - include "$(BUILD_DIR)/src/overlays/gamestates/ovl_title/ovl_title_reloc.o" -endseg - -beginseg - name "ovl_select" - compress - include "$(BUILD_DIR)/src/overlays/gamestates/ovl_select/z_select.o" - include "$(BUILD_DIR)/src/overlays/gamestates/ovl_select/ovl_select_reloc.o" -endseg - -beginseg - name "ovl_opening" - compress - include "$(BUILD_DIR)/src/overlays/gamestates/ovl_opening/z_opening.o" - include "$(BUILD_DIR)/src/overlays/gamestates/ovl_opening/ovl_opening_reloc.o" -endseg - -beginseg - name "ovl_file_choose" - compress - include "$(BUILD_DIR)/src/overlays/gamestates/ovl_file_choose/z_file_nameset_data.o" - include "$(BUILD_DIR)/src/overlays/gamestates/ovl_file_choose/z_file_copy_erase.o" - include "$(BUILD_DIR)/src/overlays/gamestates/ovl_file_choose/z_file_nameset.o" - include "$(BUILD_DIR)/src/overlays/gamestates/ovl_file_choose/z_file_choose.o" - include "$(BUILD_DIR)/src/overlays/gamestates/ovl_file_choose/ovl_file_choose_reloc.o" -endseg - -beginseg - name "ovl_kaleido_scope" - compress - include "$(BUILD_DIR)/src/overlays/misc/ovl_kaleido_scope/z_kaleido_collect.o" - include "$(BUILD_DIR)/src/overlays/misc/ovl_kaleido_scope/z_kaleido_debug.o" - include "$(BUILD_DIR)/src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.o" - include "$(BUILD_DIR)/src/overlays/misc/ovl_kaleido_scope/z_kaleido_item.o" - include "$(BUILD_DIR)/src/overlays/misc/ovl_kaleido_scope/z_kaleido_map.o" - include "$(BUILD_DIR)/src/overlays/misc/ovl_kaleido_scope/z_kaleido_prompt.o" - include "$(BUILD_DIR)/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.o" - include "$(BUILD_DIR)/src/overlays/misc/ovl_kaleido_scope/z_lmap_mark.o" -#if !OOT_MQ - include "$(BUILD_DIR)/src/overlays/misc/ovl_kaleido_scope/z_lmap_mark_data.o" -#else - include "$(BUILD_DIR)/src/overlays/misc/ovl_kaleido_scope/z_lmap_mark_data_mq.o" -#endif - include "$(BUILD_DIR)/src/overlays/misc/ovl_kaleido_scope/ovl_kaleido_scope_reloc.o" -endseg - -beginseg - name "ovl_player_actor" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_player_actor/z_player.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_player_actor/ovl_player_actor_reloc.o" -endseg - -beginseg - name "ovl_map_mark_data" - compress -#if !OOT_MQ - include "$(BUILD_DIR)/src/overlays/misc/ovl_map_mark_data/z_map_mark_data.o" -#else - include "$(BUILD_DIR)/src/overlays/misc/ovl_map_mark_data/z_map_mark_data_mq.o" -#endif - include "$(BUILD_DIR)/src/overlays/misc/ovl_map_mark_data/ovl_map_mark_data_reloc.o" -endseg - -beginseg - name "ovl_En_Test" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Test/z_en_test.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Test/ovl_En_Test_reloc.o" -endseg - -// Overlays for most actors and effects are reordered between versions. On N64 and iQue, -// the overlays are in some arbitrary order, while on GameCube they are sorted alphabetically. -#if !PLATFORM_GC - -beginseg - name "ovl_En_GirlA" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_GirlA/z_en_girla.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_GirlA/ovl_En_GirlA_reloc.o" -endseg - -beginseg - name "ovl_En_Part" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Part/z_en_part.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Part/ovl_En_Part_reloc.o" -endseg - -beginseg - name "ovl_En_Light" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Light/z_en_light.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Light/ovl_En_Light_reloc.o" -endseg - -beginseg - name "ovl_En_Door" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Door/z_en_door.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Door/ovl_En_Door_reloc.o" -endseg - -beginseg - name "ovl_En_Box" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Box/z_en_box.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Box/ovl_En_Box_reloc.o" -endseg - -beginseg - name "ovl_En_Poh" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Poh/z_en_poh.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Poh/ovl_En_Poh_reloc.o" -endseg - -beginseg - name "ovl_En_Okuta" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Okuta/z_en_okuta.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Okuta/ovl_En_Okuta_reloc.o" -endseg - -beginseg - name "ovl_En_Bom" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom/z_en_bom.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom/ovl_En_Bom_reloc.o" -endseg - -beginseg - name "ovl_En_Wallmas" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wallmas/ovl_En_Wallmas_reloc.o" -endseg - -beginseg - name "ovl_En_Dodongo" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dodongo/ovl_En_Dodongo_reloc.o" -endseg - -beginseg - name "ovl_En_Firefly" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Firefly/z_en_firefly.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Firefly/ovl_En_Firefly_reloc.o" -endseg - -beginseg - name "ovl_En_Horse" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse/z_en_horse.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse/ovl_En_Horse_reloc.o" -endseg - -beginseg - name "ovl_En_Arrow" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Arrow/z_en_arrow.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Arrow/ovl_En_Arrow_reloc.o" -endseg - -beginseg - name "ovl_En_Elf" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Elf/z_en_elf.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Elf/ovl_En_Elf_reloc.o" -endseg - -beginseg - name "ovl_En_Niw" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Niw/z_en_niw.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Niw/ovl_En_Niw_reloc.o" -endseg - -beginseg - name "ovl_En_Tite" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tite/z_en_tite.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tite/ovl_En_Tite_reloc.o" -endseg - -beginseg - name "ovl_En_Reeba" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Reeba/z_en_reeba.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Reeba/ovl_En_Reeba_reloc.o" -endseg - -beginseg - name "ovl_En_Peehat" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Peehat/z_en_peehat.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Peehat/ovl_En_Peehat_reloc.o" -endseg - -beginseg - name "ovl_En_Holl" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Holl/z_en_holl.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Holl/ovl_En_Holl_reloc.o" -endseg - -beginseg - name "ovl_En_Scene_Change" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Scene_Change/z_en_scene_change.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Scene_Change/ovl_En_Scene_Change_reloc.o" -endseg - -beginseg - name "ovl_En_Zf" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zf/z_en_zf.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zf/ovl_En_Zf_reloc.o" -endseg - -beginseg - name "ovl_En_Hata" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hata/z_en_hata.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hata/ovl_En_Hata_reloc.o" -endseg - -beginseg - name "ovl_Boss_Dodongo" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Dodongo/ovl_Boss_Dodongo_reloc.o" -endseg - -beginseg - name "ovl_Boss_Goma" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Goma/z_boss_goma.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Goma/ovl_Boss_Goma_reloc.o" -endseg - -beginseg - name "ovl_En_Zl1" - compress -include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl1/z_en_zl1_cutscene_data.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl1/z_en_zl1.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl1/ovl_En_Zl1_reloc.o" -endseg - -beginseg - name "ovl_En_Viewer" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Viewer/z_en_viewer.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Viewer/ovl_En_Viewer_reloc.o" -endseg - -beginseg - name "ovl_En_Goma" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Goma/z_en_goma.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Goma/ovl_En_Goma_reloc.o" -endseg - -beginseg - name "ovl_Bg_Pushbox" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Pushbox/z_bg_pushbox.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Pushbox/ovl_Bg_Pushbox_reloc.o" -endseg - -beginseg - name "ovl_En_Bubble" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bubble/z_en_bubble.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bubble/ovl_En_Bubble_reloc.o" -endseg - -beginseg - name "ovl_Door_Shutter" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Shutter/ovl_Door_Shutter_reloc.o" -endseg - -beginseg - name "ovl_En_Dodojr" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dodojr/z_en_dodojr.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dodojr/ovl_En_Dodojr_reloc.o" -endseg - -beginseg - name "ovl_En_Bdfire" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bdfire/z_en_bdfire.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bdfire/ovl_En_Bdfire_reloc.o" -endseg - -beginseg - name "ovl_En_Boom" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Boom/z_en_boom.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Boom/ovl_En_Boom_reloc.o" -endseg - -beginseg - name "ovl_En_Torch2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Torch2/z_en_torch2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Torch2/ovl_En_Torch2_reloc.o" -endseg - -beginseg - name "ovl_En_Bili" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bili/z_en_bili.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bili/ovl_En_Bili_reloc.o" -endseg - -beginseg - name "ovl_En_Tp" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tp/z_en_tp.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tp/ovl_En_Tp_reloc.o" -endseg - -beginseg - name "ovl_En_St" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_St/z_en_st.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_St/ovl_En_St_reloc.o" -endseg - -beginseg - name "ovl_En_Bw" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bw/z_en_bw.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bw/ovl_En_Bw_reloc.o" -endseg - -beginseg - name "ovl_En_Eiyer" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Eiyer/z_en_eiyer.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Eiyer/ovl_En_Eiyer_reloc.o" -endseg - -beginseg - name "ovl_En_River_Sound" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_River_Sound/z_en_river_sound.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_River_Sound/ovl_En_River_Sound_reloc.o" -endseg - -beginseg - name "ovl_En_Horse_Normal" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Normal/z_en_horse_normal.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Normal/ovl_En_Horse_Normal_reloc.o" -endseg - -beginseg - name "ovl_En_Ossan" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ossan/z_en_ossan.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ossan/ovl_En_Ossan_reloc.o" -endseg - -beginseg - name "ovl_Bg_Treemouth" - compress -include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Treemouth/z_bg_treemouth_cutscene_data.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Treemouth/z_bg_treemouth.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Treemouth/ovl_Bg_Treemouth_reloc.o" -endseg - -beginseg - name "ovl_Bg_Dodoago" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Dodoago/z_bg_dodoago.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Dodoago/ovl_Bg_Dodoago_reloc.o" -endseg - -beginseg - name "ovl_Bg_Hidan_Dalm" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Dalm/z_bg_hidan_dalm.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Dalm/ovl_Bg_Hidan_Dalm_reloc.o" -endseg - -beginseg - name "ovl_Bg_Hidan_Hrock" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Hrock/z_bg_hidan_hrock.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Hrock/ovl_Bg_Hidan_Hrock_reloc.o" -endseg - -beginseg - name "ovl_En_Horse_Ganon" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Ganon/z_en_horse_ganon.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Ganon/ovl_En_Horse_Ganon_reloc.o" -endseg - -beginseg - name "ovl_Bg_Hidan_Rock" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Rock/z_bg_hidan_rock.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Rock/ovl_Bg_Hidan_Rock_reloc.o" -endseg - -beginseg - name "ovl_Bg_Hidan_Rsekizou" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Rsekizou/z_bg_hidan_rsekizou.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Rsekizou/ovl_Bg_Hidan_Rsekizou_reloc.o" -endseg - -beginseg - name "ovl_Bg_Hidan_Sekizou" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Sekizou/z_bg_hidan_sekizou.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Sekizou/ovl_Bg_Hidan_Sekizou_reloc.o" -endseg - -beginseg - name "ovl_Bg_Hidan_Sima" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Sima/z_bg_hidan_sima.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Sima/ovl_Bg_Hidan_Sima_reloc.o" -endseg - -beginseg - name "ovl_Bg_Hidan_Syoku" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Syoku/z_bg_hidan_syoku.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Syoku/ovl_Bg_Hidan_Syoku_reloc.o" -endseg - -beginseg - name "ovl_En_Xc" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Xc/z_en_xc.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Xc/ovl_En_Xc_reloc.o" -endseg - -beginseg - name "ovl_Bg_Hidan_Curtain" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Curtain/z_bg_hidan_curtain.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Curtain/ovl_Bg_Hidan_Curtain_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot00_Hanebasi" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot00_Hanebasi/z_bg_spot00_hanebasi.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot00_Hanebasi/ovl_Bg_Spot00_Hanebasi_reloc.o" -endseg - -beginseg - name "ovl_En_Mb" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mb/z_en_mb.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mb/ovl_En_Mb_reloc.o" -endseg - -beginseg - name "ovl_En_Bombf" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bombf/z_en_bombf.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bombf/ovl_En_Bombf_reloc.o" -endseg - -beginseg - name "ovl_Bg_Hidan_Firewall" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Firewall/z_bg_hidan_firewall.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Firewall/ovl_Bg_Hidan_Firewall_reloc.o" -endseg - -beginseg - name "ovl_Bg_Dy_Yoseizo" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Dy_Yoseizo/ovl_Bg_Dy_Yoseizo_reloc.o" -endseg - -beginseg - name "ovl_En_Zl2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl2/z_en_zl2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl2/ovl_En_Zl2_reloc.o" -endseg - -beginseg - name "ovl_Bg_Hidan_Fslift" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Fslift/z_bg_hidan_fslift.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Fslift/ovl_Bg_Hidan_Fslift_reloc.o" -endseg - -beginseg - name "ovl_En_OE2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_OE2/z_en_oe2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_OE2/ovl_En_OE2_reloc.o" -endseg - -beginseg - name "ovl_Bg_Ydan_Hasi" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ydan_Hasi/z_bg_ydan_hasi.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ydan_Hasi/ovl_Bg_Ydan_Hasi_reloc.o" -endseg - -beginseg - name "ovl_Bg_Ydan_Maruta" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ydan_Maruta/z_bg_ydan_maruta.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ydan_Maruta/ovl_Bg_Ydan_Maruta_reloc.o" -endseg - -beginseg - name "ovl_Boss_Ganondrof" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Ganondrof/ovl_Boss_Ganondrof_reloc.o" -endseg - -beginseg - name "ovl_En_Am" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Am/z_en_am.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Am/ovl_En_Am_reloc.o" -endseg - -beginseg - name "ovl_En_Dekubaba" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dekubaba/z_en_dekubaba.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dekubaba/ovl_En_Dekubaba_reloc.o" -endseg - -beginseg - name "ovl_En_M_Fire1" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_M_Fire1/z_en_m_fire1.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_M_Fire1/ovl_En_M_Fire1_reloc.o" -endseg - -beginseg - name "ovl_En_M_Thunder" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_M_Thunder/ovl_En_M_Thunder_reloc.o" -endseg - -beginseg - name "ovl_Bg_Ddan_Jd" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ddan_Jd/z_bg_ddan_jd.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ddan_Jd/ovl_Bg_Ddan_Jd_reloc.o" -endseg - -beginseg - name "ovl_Bg_Breakwall" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Breakwall/ovl_Bg_Breakwall_reloc.o" -endseg - -beginseg - name "ovl_En_Jj" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Jj/z_en_jj.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Jj/ovl_En_Jj_reloc.o" -endseg - -beginseg - name "ovl_En_Horse_Zelda" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Zelda/z_en_horse_zelda.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Zelda/ovl_En_Horse_Zelda_reloc.o" -endseg - -beginseg - name "ovl_Bg_Ddan_Kd" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ddan_Kd/z_bg_ddan_kd.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ddan_Kd/ovl_Bg_Ddan_Kd_reloc.o" -endseg - -beginseg - name "ovl_Door_Warp1" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Warp1/ovl_Door_Warp1_reloc.o" -endseg - -beginseg - name "ovl_Obj_Syokudai" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Syokudai/ovl_Obj_Syokudai_reloc.o" -endseg - -beginseg - name "ovl_Item_B_Heart" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_B_Heart/z_item_b_heart.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_B_Heart/ovl_Item_B_Heart_reloc.o" -endseg - -beginseg - name "ovl_En_Dekunuts" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dekunuts/z_en_dekunuts.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dekunuts/ovl_En_Dekunuts_reloc.o" -endseg - -beginseg - name "ovl_Bg_Menkuri_Kaiten" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Menkuri_Kaiten/z_bg_menkuri_kaiten.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Menkuri_Kaiten/ovl_Bg_Menkuri_Kaiten_reloc.o" -endseg - -beginseg - name "ovl_Bg_Menkuri_Eye" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Menkuri_Eye/z_bg_menkuri_eye.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Menkuri_Eye/ovl_Bg_Menkuri_Eye_reloc.o" -endseg - -beginseg - name "ovl_En_Vali" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vali/z_en_vali.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vali/ovl_En_Vali_reloc.o" -endseg - -beginseg - name "ovl_Bg_Mizu_Movebg" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Movebg/z_bg_mizu_movebg.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Movebg/ovl_Bg_Mizu_Movebg_reloc.o" -endseg - -beginseg - name "ovl_Bg_Mizu_Water" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Water/z_bg_mizu_water.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Water/ovl_Bg_Mizu_Water_reloc.o" -endseg - -beginseg - name "ovl_Arms_Hook" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Arms_Hook/ovl_Arms_Hook_reloc.o" -endseg - -beginseg - name "ovl_En_fHG" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_fHG/z_en_fhg.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_fHG/ovl_En_fHG_reloc.o" -endseg - -beginseg - name "ovl_Bg_Mori_Hineri" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Hineri/z_bg_mori_hineri.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Hineri/ovl_Bg_Mori_Hineri_reloc.o" -endseg - -beginseg - name "ovl_En_Bb" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bb/z_en_bb.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bb/ovl_En_Bb_reloc.o" -endseg - -beginseg - name "ovl_Bg_Toki_Hikari" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Toki_Hikari/z_bg_toki_hikari.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Toki_Hikari/ovl_Bg_Toki_Hikari_reloc.o" -endseg - -beginseg - name "ovl_En_Yukabyun" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Yukabyun/z_en_yukabyun.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Yukabyun/ovl_En_Yukabyun_reloc.o" -endseg - -beginseg - name "ovl_Bg_Toki_Swd" - compress -include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_1.o" -include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_2.o" -include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_3.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Toki_Swd/ovl_Bg_Toki_Swd_reloc.o" -endseg - -beginseg - name "ovl_En_Fhg_Fire" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fhg_Fire/z_en_fhg_fire.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fhg_Fire/ovl_En_Fhg_Fire_reloc.o" -endseg - -beginseg - name "ovl_Bg_Mjin" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mjin/z_bg_mjin.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mjin/ovl_Bg_Mjin_reloc.o" -endseg - -beginseg - name "ovl_Bg_Hidan_Kousi" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Kousi/z_bg_hidan_kousi.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Kousi/ovl_Bg_Hidan_Kousi_reloc.o" -endseg - -beginseg - name "ovl_Door_Toki" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Toki/z_door_toki.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Toki/ovl_Door_Toki_reloc.o" -endseg - -beginseg - name "ovl_Bg_Hidan_Hamstep" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Hamstep/z_bg_hidan_hamstep.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Hamstep/ovl_Bg_Hidan_Hamstep_reloc.o" -endseg - -beginseg - name "ovl_En_Bird" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bird/z_en_bird.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bird/ovl_En_Bird_reloc.o" -endseg - -beginseg - name "ovl_En_Wood02" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wood02/z_en_wood02.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wood02/ovl_En_Wood02_reloc.o" -endseg - -beginseg - name "ovl_En_Lightbox" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Lightbox/z_en_lightbox.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Lightbox/ovl_En_Lightbox_reloc.o" -endseg - -beginseg - name "ovl_En_Pu_box" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Pu_box/z_en_pu_box.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Pu_box/ovl_En_Pu_box_reloc.o" -endseg - -beginseg - name "ovl_En_Trap" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Trap/z_en_trap.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Trap/ovl_En_Trap_reloc.o" -endseg - -beginseg - name "ovl_En_Arow_Trap" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Arow_Trap/z_en_arow_trap.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Arow_Trap/ovl_En_Arow_Trap_reloc.o" -endseg - -beginseg - name "ovl_En_Vase" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vase/z_en_vase.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vase/ovl_En_Vase_reloc.o" -endseg - -beginseg - name "ovl_En_Ta" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ta/z_en_ta.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ta/ovl_En_Ta_reloc.o" -endseg - -beginseg - name "ovl_En_Tk" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tk/z_en_tk.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tk/ovl_En_Tk_reloc.o" -endseg - -beginseg - name "ovl_Bg_Mori_Bigst" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Bigst/z_bg_mori_bigst.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Bigst/ovl_Bg_Mori_Bigst_reloc.o" -endseg - -beginseg - name "ovl_Bg_Mori_Elevator" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Elevator/z_bg_mori_elevator.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Elevator/ovl_Bg_Mori_Elevator_reloc.o" -endseg - -beginseg - name "ovl_Bg_Mori_Kaitenkabe" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/z_bg_mori_kaitenkabe.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/ovl_Bg_Mori_Kaitenkabe_reloc.o" -endseg - -beginseg - name "ovl_Bg_Mori_Rakkatenjo" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Rakkatenjo/z_bg_mori_rakkatenjo.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Rakkatenjo/ovl_Bg_Mori_Rakkatenjo_reloc.o" -endseg - -beginseg - name "ovl_En_Vm" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vm/z_en_vm.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vm/ovl_En_Vm_reloc.o" -endseg - -beginseg - name "ovl_Demo_Effect" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Effect/ovl_Demo_Effect_reloc.o" -endseg - -beginseg - name "ovl_Demo_Kankyo" - compress -include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data1.o" -include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data2.o" -include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data3.o" -include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data4.o" -include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data5.o" -include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data6.o" -include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data7.o" -include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data8.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/ovl_Demo_Kankyo_reloc.o" -endseg - -beginseg - name "ovl_Bg_Hidan_Fwbig" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Fwbig/z_bg_hidan_fwbig.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Fwbig/ovl_Bg_Hidan_Fwbig_reloc.o" -endseg - -beginseg - name "ovl_En_Floormas" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Floormas/z_en_floormas.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Floormas/ovl_En_Floormas_reloc.o" -endseg - -beginseg - name "ovl_En_Heishi1" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi1/z_en_heishi1.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi1/ovl_En_Heishi1_reloc.o" -endseg - -beginseg - name "ovl_En_Rd" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Rd/z_en_rd.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Rd/ovl_En_Rd_reloc.o" -endseg - -beginseg - name "ovl_En_Po_Sisters" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Sisters/ovl_En_Po_Sisters_reloc.o" -endseg - -beginseg - name "ovl_Bg_Heavy_Block" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Heavy_Block/z_bg_heavy_block.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Heavy_Block/ovl_Bg_Heavy_Block_reloc.o" -endseg - -beginseg - name "ovl_Bg_Po_Event" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Po_Event/z_bg_po_event.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Po_Event/ovl_Bg_Po_Event_reloc.o" -endseg - -beginseg - name "ovl_Obj_Mure" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Mure/z_obj_mure.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Mure/ovl_Obj_Mure_reloc.o" -endseg - -beginseg - name "ovl_En_Sw" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sw/z_en_sw.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sw/ovl_En_Sw_reloc.o" -endseg - -beginseg - name "ovl_Boss_Fd" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Fd/z_boss_fd.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Fd/ovl_Boss_Fd_reloc.o" -endseg - -beginseg - name "ovl_Object_Kankyo" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Object_Kankyo/z_object_kankyo.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Object_Kankyo/ovl_Object_Kankyo_reloc.o" -endseg - -beginseg - name "ovl_En_Du" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Du/z_en_du.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Du/ovl_En_Du_reloc.o" -endseg - -beginseg - name "ovl_En_Fd" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fd/z_en_fd.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fd/ovl_En_Fd_reloc.o" -endseg - -beginseg - name "ovl_En_Horse_Link_Child" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Link_Child/z_en_horse_link_child.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Link_Child/ovl_En_Horse_Link_Child_reloc.o" -endseg - -beginseg - name "ovl_Door_Ana" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Ana/z_door_ana.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Ana/ovl_Door_Ana_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot02_Objects" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot02_Objects/z_bg_spot02_objects.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot02_Objects/ovl_Bg_Spot02_Objects_reloc.o" -endseg - -beginseg - name "ovl_Bg_Haka" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka/z_bg_haka.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka/ovl_Bg_Haka_reloc.o" -endseg - -beginseg - name "ovl_Magic_Wind" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Magic_Wind/z_magic_wind.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Magic_Wind/ovl_Magic_Wind_reloc.o" -endseg - -beginseg - name "ovl_Magic_Fire" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Magic_Fire/z_magic_fire.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Magic_Fire/ovl_Magic_Fire_reloc.o" -endseg - -beginseg - name "ovl_En_Ru1" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ru1/z_en_ru1.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ru1/ovl_En_Ru1_reloc.o" -endseg - -beginseg - name "ovl_Boss_Fd2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Fd2/ovl_Boss_Fd2_reloc.o" -endseg - -beginseg - name "ovl_En_Fd_Fire" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fd_Fire/z_en_fd_fire.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fd_Fire/ovl_En_Fd_Fire_reloc.o" -endseg - -beginseg - name "ovl_En_Dh" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dh/z_en_dh.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dh/ovl_En_Dh_reloc.o" -endseg - -beginseg - name "ovl_En_Dha" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dha/z_en_dha.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dha/ovl_En_Dha_reloc.o" -endseg - -beginseg - name "ovl_En_Rl" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Rl/z_en_rl.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Rl/ovl_En_Rl_reloc.o" -endseg - -beginseg - name "ovl_En_Encount1" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Encount1/z_en_encount1.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Encount1/ovl_En_Encount1_reloc.o" -endseg - -beginseg - name "ovl_Demo_Du" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Du/z_demo_du.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Du/ovl_Demo_Du_reloc.o" -endseg - -beginseg - name "ovl_Demo_Im" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Im/z_demo_im.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Im/ovl_Demo_Im_reloc.o" -endseg - -beginseg - name "ovl_Demo_Tre_Lgt" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Tre_Lgt/z_demo_tre_lgt.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Tre_Lgt/ovl_Demo_Tre_Lgt_reloc.o" -endseg - -beginseg - name "ovl_En_Fw" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fw/z_en_fw.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fw/ovl_En_Fw_reloc.o" -endseg - -beginseg - name "ovl_Bg_Vb_Sima" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Vb_Sima/z_bg_vb_sima.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Vb_Sima/ovl_Bg_Vb_Sima_reloc.o" -endseg - -beginseg - name "ovl_En_Vb_Ball" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vb_Ball/z_en_vb_ball.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vb_Ball/ovl_En_Vb_Ball_reloc.o" -endseg - -beginseg - name "ovl_Bg_Haka_Megane" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Megane/z_bg_haka_megane.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Megane/ovl_Bg_Haka_Megane_reloc.o" -endseg - -beginseg - name "ovl_Bg_Haka_MeganeBG" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_MeganeBG/z_bg_haka_meganebg.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_MeganeBG/ovl_Bg_Haka_MeganeBG_reloc.o" -endseg - -beginseg - name "ovl_Bg_Haka_Ship" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Ship/z_bg_haka_ship.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Ship/ovl_Bg_Haka_Ship_reloc.o" -endseg - -beginseg - name "ovl_Bg_Haka_Sgami" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Sgami/z_bg_haka_sgami.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Sgami/ovl_Bg_Haka_Sgami_reloc.o" -endseg - -beginseg - name "ovl_En_Heishi2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi2/z_en_heishi2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi2/ovl_En_Heishi2_reloc.o" -endseg - -beginseg - name "ovl_En_Encount2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Encount2/z_en_encount2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Encount2/ovl_En_Encount2_reloc.o" -endseg - -beginseg - name "ovl_En_Fire_Rock" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fire_Rock/z_en_fire_rock.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fire_Rock/ovl_En_Fire_Rock_reloc.o" -endseg - -beginseg - name "ovl_En_Brob" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Brob/z_en_brob.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Brob/ovl_En_Brob_reloc.o" -endseg - -beginseg - name "ovl_Mir_Ray" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Mir_Ray/z_mir_ray.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Mir_Ray/ovl_Mir_Ray_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot09_Obj" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot09_Obj/z_bg_spot09_obj.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot09_Obj/ovl_Bg_Spot09_Obj_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot18_Obj" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Obj/z_bg_spot18_obj.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Obj/ovl_Bg_Spot18_Obj_reloc.o" -endseg - -beginseg - name "ovl_Boss_Va" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Va/z_boss_va.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Va/ovl_Boss_Va_reloc.o" -endseg - -beginseg - name "ovl_Bg_Haka_Tubo" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Tubo/z_bg_haka_tubo.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Tubo/ovl_Bg_Haka_Tubo_reloc.o" -endseg - -beginseg - name "ovl_Bg_Haka_Trap" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Trap/z_bg_haka_trap.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Trap/ovl_Bg_Haka_Trap_reloc.o" -endseg - -beginseg - name "ovl_Bg_Haka_Huta" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Huta/z_bg_haka_huta.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Huta/ovl_Bg_Haka_Huta_reloc.o" -endseg - -beginseg - name "ovl_Bg_Haka_Zou" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Zou/z_bg_haka_zou.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Zou/ovl_Bg_Haka_Zou_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot17_Funen" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot17_Funen/z_bg_spot17_funen.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot17_Funen/ovl_Bg_Spot17_Funen_reloc.o" -endseg - -beginseg - name "ovl_En_Syateki_Itm" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Syateki_Itm/z_en_syateki_itm.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Syateki_Itm/ovl_En_Syateki_Itm_reloc.o" -endseg - -beginseg - name "ovl_En_Syateki_Man" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Syateki_Man/ovl_En_Syateki_Man_reloc.o" -endseg - -beginseg - name "ovl_En_Tana" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tana/z_en_tana.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tana/ovl_En_Tana_reloc.o" -endseg - -beginseg - name "ovl_En_Nb" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Nb/z_en_nb.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Nb/ovl_En_Nb_reloc.o" -endseg - -beginseg - name "ovl_Boss_Mo" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Mo/ovl_Boss_Mo_reloc.o" -endseg - -beginseg - name "ovl_En_Sb" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sb/z_en_sb.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sb/ovl_En_Sb_reloc.o" -endseg - -beginseg - name "ovl_En_Bigokuta" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bigokuta/ovl_En_Bigokuta_reloc.o" -endseg - -beginseg - name "ovl_En_Karebaba" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Karebaba/z_en_karebaba.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Karebaba/ovl_En_Karebaba_reloc.o" -endseg - -beginseg - name "ovl_Bg_Bdan_Objects" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bdan_Objects/z_bg_bdan_objects.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bdan_Objects/ovl_Bg_Bdan_Objects_reloc.o" -endseg - -beginseg - name "ovl_Demo_Sa" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Sa/z_demo_sa.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Sa/ovl_Demo_Sa_reloc.o" -endseg - -beginseg - name "ovl_Demo_Go" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Go/z_demo_go.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Go/ovl_Demo_Go_reloc.o" -endseg - -beginseg - name "ovl_En_In" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_In/z_en_in.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_In/ovl_En_In_reloc.o" -endseg - -beginseg - name "ovl_En_Tr" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tr/z_en_tr.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tr/ovl_En_Tr_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot16_Bombstone" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot16_Bombstone/z_bg_spot16_bombstone.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot16_Bombstone/ovl_Bg_Spot16_Bombstone_reloc.o" -endseg - -beginseg - name "ovl_Bg_Hidan_Kowarerukabe" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Kowarerukabe/z_bg_hidan_kowarerukabe.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Kowarerukabe/ovl_Bg_Hidan_Kowarerukabe_reloc.o" -endseg - -beginseg - name "ovl_Bg_Bombwall" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bombwall/z_bg_bombwall.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bombwall/ovl_Bg_Bombwall_reloc.o" -endseg - -beginseg - name "ovl_En_Ru2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ru2/z_en_ru2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ru2/ovl_En_Ru2_reloc.o" -endseg - -beginseg - name "ovl_Obj_Dekujr" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Dekujr/z_obj_dekujr.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Dekujr/ovl_Obj_Dekujr_reloc.o" -endseg - -beginseg - name "ovl_Bg_Mizu_Uzu" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Uzu/z_bg_mizu_uzu.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Uzu/ovl_Bg_Mizu_Uzu_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot06_Objects" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot06_Objects/z_bg_spot06_objects.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot06_Objects/ovl_Bg_Spot06_Objects_reloc.o" -endseg - -beginseg - name "ovl_Bg_Ice_Objects" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Objects/z_bg_ice_objects.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Objects/ovl_Bg_Ice_Objects_reloc.o" -endseg - -beginseg - name "ovl_Bg_Haka_Water" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Water/z_bg_haka_water.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Water/ovl_Bg_Haka_Water_reloc.o" -endseg - -beginseg - name "ovl_En_Ma2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ma2/z_en_ma2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ma2/ovl_En_Ma2_reloc.o" -endseg - -beginseg - name "ovl_En_Bom_Chu" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom_Chu/z_en_bom_chu.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom_Chu/ovl_En_Bom_Chu_reloc.o" -endseg - -beginseg - name "ovl_En_Horse_Game_Check" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Game_Check/ovl_En_Horse_Game_Check_reloc.o" -endseg - -beginseg - name "ovl_Boss_Tw" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Tw/z_boss_tw.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Tw/ovl_Boss_Tw_reloc.o" -endseg - -beginseg - name "ovl_En_Rr" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Rr/z_en_rr.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Rr/ovl_En_Rr_reloc.o" -endseg - -beginseg - name "ovl_En_Ba" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ba/z_en_ba.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ba/ovl_En_Ba_reloc.o" -endseg - -beginseg - name "ovl_En_Bx" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bx/z_en_bx.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bx/ovl_En_Bx_reloc.o" -endseg - -beginseg - name "ovl_En_Anubice" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Anubice/z_en_anubice.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Anubice/ovl_En_Anubice_reloc.o" -endseg - -beginseg - name "ovl_En_Anubice_Fire" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Anubice_Fire/z_en_anubice_fire.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Anubice_Fire/ovl_En_Anubice_Fire_reloc.o" -endseg - -beginseg - name "ovl_Bg_Mori_Hashigo" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Hashigo/z_bg_mori_hashigo.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Hashigo/ovl_Bg_Mori_Hashigo_reloc.o" -endseg - -beginseg - name "ovl_Bg_Mori_Hashira4" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Hashira4/z_bg_mori_hashira4.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Hashira4/ovl_Bg_Mori_Hashira4_reloc.o" -endseg - -beginseg - name "ovl_Bg_Mori_Idomizu" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Idomizu/z_bg_mori_idomizu.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Idomizu/ovl_Bg_Mori_Idomizu_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot16_Doughnut" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot16_Doughnut/z_bg_spot16_doughnut.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot16_Doughnut/ovl_Bg_Spot16_Doughnut_reloc.o" -endseg - -beginseg - name "ovl_Bg_Bdan_Switch" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bdan_Switch/z_bg_bdan_switch.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bdan_Switch/ovl_Bg_Bdan_Switch_reloc.o" -endseg - -beginseg - name "ovl_En_Ma1" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ma1/z_en_ma1.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ma1/ovl_En_Ma1_reloc.o" -endseg - -beginseg - name "ovl_Boss_Ganon" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Ganon/ovl_Boss_Ganon_reloc.o" -endseg - -beginseg - name "ovl_Boss_Sst" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Sst/ovl_Boss_Sst_reloc.o" -endseg - -beginseg - name "ovl_En_Ny" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ny/z_en_ny.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ny/ovl_En_Ny_reloc.o" -endseg - -beginseg - name "ovl_En_Fr" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fr/z_en_fr.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fr/ovl_En_Fr_reloc.o" -endseg - -beginseg - name "ovl_Item_Shield" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Shield/z_item_shield.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Shield/ovl_Item_Shield_reloc.o" -endseg - -beginseg - name "ovl_Bg_Ice_Shelter" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Shelter/z_bg_ice_shelter.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Shelter/ovl_Bg_Ice_Shelter_reloc.o" -endseg - -beginseg - name "ovl_En_Ice_Hono" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ice_Hono/z_en_ice_hono.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ice_Hono/ovl_En_Ice_Hono_reloc.o" -endseg - -beginseg - name "ovl_Item_Ocarina" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Ocarina/z_item_ocarina.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Ocarina/ovl_Item_Ocarina_reloc.o" -endseg - -beginseg - name "ovl_Magic_Dark" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Magic_Dark/z_magic_dark.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Magic_Dark/ovl_Magic_Dark_reloc.o" -endseg - -beginseg - name "ovl_Demo_6K" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_6K/z_demo_6k.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_6K/ovl_Demo_6K_reloc.o" -endseg - -beginseg - name "ovl_En_Anubice_Tag" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Anubice_Tag/z_en_anubice_tag.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Anubice_Tag/ovl_En_Anubice_Tag_reloc.o" -endseg - -beginseg - name "ovl_Bg_Haka_Gate" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Gate/z_bg_haka_gate.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Gate/ovl_Bg_Haka_Gate_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot15_Saku" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot15_Saku/z_bg_spot15_saku.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot15_Saku/ovl_Bg_Spot15_Saku_reloc.o" -endseg - -beginseg - name "ovl_Bg_Jya_Goroiwa" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Goroiwa/z_bg_jya_goroiwa.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Goroiwa/ovl_Bg_Jya_Goroiwa_reloc.o" -endseg - -beginseg - name "ovl_Bg_Jya_Zurerukabe" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Zurerukabe/z_bg_jya_zurerukabe.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Zurerukabe/ovl_Bg_Jya_Zurerukabe_reloc.o" -endseg - -beginseg - name "ovl_Bg_Jya_Cobra" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Cobra/z_bg_jya_cobra.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Cobra/ovl_Bg_Jya_Cobra_reloc.o" -endseg - -beginseg - name "ovl_Bg_Jya_Kanaami" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Kanaami/z_bg_jya_kanaami.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Kanaami/ovl_Bg_Jya_Kanaami_reloc.o" -endseg - -beginseg - name "ovl_Fishing" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Fishing/z_fishing.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Fishing/ovl_Fishing_reloc.o" -endseg - -beginseg - name "ovl_Obj_Oshihiki" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Oshihiki/z_obj_oshihiki.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Oshihiki/ovl_Obj_Oshihiki_reloc.o" -endseg - -beginseg - name "ovl_Bg_Gate_Shutter" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gate_Shutter/z_bg_gate_shutter.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gate_Shutter/ovl_Bg_Gate_Shutter_reloc.o" -endseg - -beginseg - name "ovl_Eff_Dust" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Eff_Dust/z_eff_dust.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Eff_Dust/ovl_Eff_Dust_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot01_Fusya" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Fusya/z_bg_spot01_fusya.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Fusya/ovl_Bg_Spot01_Fusya_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot01_Idohashira" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Idohashira/z_bg_spot01_idohashira.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Idohashira/ovl_Bg_Spot01_Idohashira_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot01_Idomizu" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Idomizu/z_bg_spot01_idomizu.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Idomizu/ovl_Bg_Spot01_Idomizu_reloc.o" -endseg - -beginseg - name "ovl_Bg_Po_Syokudai" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Po_Syokudai/z_bg_po_syokudai.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Po_Syokudai/ovl_Bg_Po_Syokudai_reloc.o" -endseg - -beginseg - name "ovl_Bg_Ganon_Otyuka" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ganon_Otyuka/z_bg_ganon_otyuka.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ganon_Otyuka/ovl_Bg_Ganon_Otyuka_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot15_Rrbox" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot15_Rrbox/z_bg_spot15_rrbox.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot15_Rrbox/ovl_Bg_Spot15_Rrbox_reloc.o" -endseg - -beginseg - name "ovl_Bg_Umajump" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Umajump/z_bg_umajump.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Umajump/ovl_Bg_Umajump_reloc.o" -endseg - -beginseg - name "ovl_En_Insect" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Insect/z_en_insect.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Insect/ovl_En_Insect_reloc.o" -endseg - -beginseg - name "ovl_En_Butte" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Butte/z_en_butte.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Butte/ovl_En_Butte_reloc.o" -endseg - -beginseg - name "ovl_En_Fish" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fish/z_en_fish.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fish/ovl_En_Fish_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot08_Iceblock" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot08_Iceblock/z_bg_spot08_iceblock.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot08_Iceblock/ovl_Bg_Spot08_Iceblock_reloc.o" -endseg - -beginseg - name "ovl_Item_Etcetera" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Etcetera/z_item_etcetera.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Etcetera/ovl_Item_Etcetera_reloc.o" -endseg - -beginseg - name "ovl_Arrow_Fire" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Arrow_Fire/ovl_Arrow_Fire_reloc.o" -endseg - -beginseg - name "ovl_Arrow_Ice" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Arrow_Ice/ovl_Arrow_Ice_reloc.o" -endseg - -beginseg - name "ovl_Arrow_Light" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Arrow_Light/z_arrow_light.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Arrow_Light/ovl_Arrow_Light_reloc.o" -endseg - -beginseg - name "ovl_Obj_Kibako" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Kibako/z_obj_kibako.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Kibako/ovl_Obj_Kibako_reloc.o" -endseg - -beginseg - name "ovl_Obj_Tsubo" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Tsubo/ovl_Obj_Tsubo_reloc.o" -endseg - -beginseg - name "ovl_En_Wonder_Item" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wonder_Item/z_en_wonder_item.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wonder_Item/ovl_En_Wonder_Item_reloc.o" -endseg - -beginseg - name "ovl_En_Ik" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ik/z_en_ik.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ik/ovl_En_Ik_reloc.o" -endseg - -beginseg - name "ovl_Demo_Ik" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Ik/z_demo_ik.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Ik/ovl_Demo_Ik_reloc.o" -endseg - -beginseg - name "ovl_En_Skj" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Skj/z_en_skj.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Skj/ovl_En_Skj_reloc.o" -endseg - -beginseg - name "ovl_En_Skjneedle" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Skjneedle/z_en_skjneedle.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Skjneedle/ovl_En_Skjneedle_reloc.o" -endseg - -beginseg - name "ovl_En_G_Switch" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_G_Switch/z_en_g_switch.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_G_Switch/ovl_En_G_Switch_reloc.o" -endseg - -beginseg - name "ovl_Demo_Ext" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Ext/z_demo_ext.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Ext/ovl_Demo_Ext_reloc.o" -endseg - -beginseg - name "ovl_Demo_Shd" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Shd/z_demo_shd.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Shd/ovl_Demo_Shd_reloc.o" -endseg - -beginseg - name "ovl_En_Dns" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dns/z_en_dns.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dns/ovl_En_Dns_reloc.o" -endseg - -beginseg - name "ovl_Elf_Msg" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Elf_Msg/z_elf_msg.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Elf_Msg/ovl_Elf_Msg_reloc.o" -endseg - -beginseg - name "ovl_En_Honotrap" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Honotrap/z_en_honotrap.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Honotrap/ovl_En_Honotrap_reloc.o" -endseg - -beginseg - name "ovl_En_Tubo_Trap" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tubo_Trap/z_en_tubo_trap.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tubo_Trap/ovl_En_Tubo_Trap_reloc.o" -endseg - -beginseg - name "ovl_Obj_Ice_Poly" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Ice_Poly/z_obj_ice_poly.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Ice_Poly/ovl_Obj_Ice_Poly_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot03_Taki" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot03_Taki/z_bg_spot03_taki.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot03_Taki/ovl_Bg_Spot03_Taki_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot07_Taki" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot07_Taki/z_bg_spot07_taki.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot07_Taki/ovl_Bg_Spot07_Taki_reloc.o" -endseg - -beginseg - name "ovl_En_Fz" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fz/z_en_fz.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fz/ovl_En_Fz_reloc.o" -endseg - -beginseg - name "ovl_En_Po_Relay" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Relay/ovl_En_Po_Relay_reloc.o" -endseg - -beginseg - name "ovl_Bg_Relay_Objects" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Relay_Objects/z_bg_relay_objects.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Relay_Objects/ovl_Bg_Relay_Objects_reloc.o" -endseg - -beginseg - name "ovl_En_Diving_Game" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Diving_Game/z_en_diving_game.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Diving_Game/ovl_En_Diving_Game_reloc.o" -endseg - -beginseg - name "ovl_En_Kusa" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kusa/z_en_kusa.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kusa/ovl_En_Kusa_reloc.o" -endseg - -beginseg - name "ovl_Obj_Bean" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Bean/ovl_Obj_Bean_reloc.o" -endseg - -beginseg - name "ovl_Obj_Bombiwa" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Bombiwa/z_obj_bombiwa.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Bombiwa/ovl_Obj_Bombiwa_reloc.o" -endseg - -beginseg - name "ovl_Obj_Switch" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Switch/ovl_Obj_Switch_reloc.o" -endseg - -beginseg - name "ovl_Obj_Elevator" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Elevator/z_obj_elevator.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Elevator/ovl_Obj_Elevator_reloc.o" -endseg - -beginseg - name "ovl_Obj_Lift" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Lift/z_obj_lift.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Lift/ovl_Obj_Lift_reloc.o" -endseg - -beginseg - name "ovl_Obj_Hsblock" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Hsblock/z_obj_hsblock.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Hsblock/ovl_Obj_Hsblock_reloc.o" -endseg - -beginseg - name "ovl_En_Okarina_Tag" - compress -include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag_cutscene_data.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Okarina_Tag/ovl_En_Okarina_Tag_reloc.o" -endseg - -beginseg - name "ovl_En_Yabusame_Mark" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Yabusame_Mark/z_en_yabusame_mark.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Yabusame_Mark/ovl_En_Yabusame_Mark_reloc.o" -endseg - -beginseg - name "ovl_En_Goroiwa" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Goroiwa/ovl_En_Goroiwa_reloc.o" -endseg - -beginseg - name "ovl_En_Ex_Ruppy" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ex_Ruppy/z_en_ex_ruppy.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ex_Ruppy/ovl_En_Ex_Ruppy_reloc.o" -endseg - -beginseg - name "ovl_En_Toryo" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Toryo/z_en_toryo.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Toryo/ovl_En_Toryo_reloc.o" -endseg - -beginseg - name "ovl_En_Daiku" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Daiku/z_en_daiku.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Daiku/ovl_En_Daiku_reloc.o" -endseg - -beginseg - name "ovl_En_Nwc" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Nwc/z_en_nwc.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Nwc/ovl_En_Nwc_reloc.o" -endseg - -beginseg - name "ovl_En_Blkobj" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Blkobj/z_en_blkobj.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Blkobj/ovl_En_Blkobj_reloc.o" -endseg - -beginseg - name "ovl_Item_Inbox" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Inbox/z_item_inbox.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Inbox/ovl_Item_Inbox_reloc.o" -endseg - -beginseg - name "ovl_En_Ge1" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ge1/z_en_ge1.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ge1/ovl_En_Ge1_reloc.o" -endseg - -beginseg - name "ovl_Obj_Blockstop" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Blockstop/z_obj_blockstop.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Blockstop/ovl_Obj_Blockstop_reloc.o" -endseg - -beginseg - name "ovl_En_Sda" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sda/z_en_sda.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sda/ovl_En_Sda_reloc.o" -endseg - -beginseg - name "ovl_En_Clear_Tag" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Clear_Tag/ovl_En_Clear_Tag_reloc.o" -endseg - -beginseg - name "ovl_En_Niw_Lady" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Niw_Lady/ovl_En_Niw_Lady_reloc.o" -endseg - -beginseg - name "ovl_En_Gm" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Gm/z_en_gm.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Gm/ovl_En_Gm_reloc.o" -endseg - -beginseg - name "ovl_En_Ms" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ms/z_en_ms.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ms/ovl_En_Ms_reloc.o" -endseg - -beginseg - name "ovl_En_Hs" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hs/z_en_hs.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hs/ovl_En_Hs_reloc.o" -endseg - -beginseg - name "ovl_Bg_Ingate" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ingate/ovl_Bg_Ingate_reloc.o" -endseg - -beginseg - name "ovl_En_Kanban" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kanban/z_en_kanban.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kanban/ovl_En_Kanban_reloc.o" -endseg - -beginseg - name "ovl_En_Heishi3" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi3/ovl_En_Heishi3_reloc.o" -endseg - -beginseg - name "ovl_En_Syateki_Niw" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Syateki_Niw/z_en_syateki_niw.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Syateki_Niw/ovl_En_Syateki_Niw_reloc.o" -endseg - -beginseg - name "ovl_En_Attack_Niw" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Attack_Niw/ovl_En_Attack_Niw_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot01_Idosoko" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Idosoko/z_bg_spot01_idosoko.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Idosoko/ovl_Bg_Spot01_Idosoko_reloc.o" -endseg - -beginseg - name "ovl_En_Sa" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sa/z_en_sa.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sa/ovl_En_Sa_reloc.o" -endseg - -beginseg - name "ovl_En_Wonder_Talk" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wonder_Talk/z_en_wonder_talk.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wonder_Talk/ovl_En_Wonder_Talk_reloc.o" -endseg - -beginseg - name "ovl_Bg_Gjyo_Bridge" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gjyo_Bridge/z_bg_gjyo_bridge.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gjyo_Bridge/ovl_Bg_Gjyo_Bridge_reloc.o" -endseg - -beginseg - name "ovl_En_Ds" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ds/z_en_ds.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ds/ovl_En_Ds_reloc.o" -endseg - -beginseg - name "ovl_En_Mk" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mk/z_en_mk.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mk/ovl_En_Mk_reloc.o" -endseg - -beginseg - name "ovl_En_Bom_Bowl_Man" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom_Bowl_Man/ovl_En_Bom_Bowl_Man_reloc.o" -endseg - -beginseg - name "ovl_En_Bom_Bowl_Pit" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom_Bowl_Pit/z_en_bom_bowl_pit.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom_Bowl_Pit/ovl_En_Bom_Bowl_Pit_reloc.o" -endseg - -beginseg - name "ovl_En_Owl" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Owl/z_en_owl.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Owl/ovl_En_Owl_reloc.o" -endseg - -beginseg - name "ovl_En_Ishi" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ishi/z_en_ishi.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ishi/ovl_En_Ishi_reloc.o" -endseg - -beginseg - name "ovl_Obj_Hana" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Hana/z_obj_hana.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Hana/ovl_Obj_Hana_reloc.o" -endseg - -beginseg - name "ovl_Obj_Lightswitch" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Lightswitch/z_obj_lightswitch.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Lightswitch/ovl_Obj_Lightswitch_reloc.o" -endseg - -beginseg - name "ovl_Obj_Mure2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Mure2/z_obj_mure2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Mure2/ovl_Obj_Mure2_reloc.o" -endseg - -beginseg - name "ovl_En_Go" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Go/z_en_go.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Go/ovl_En_Go_reloc.o" -endseg - -beginseg - name "ovl_En_Fu" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fu/z_en_fu.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fu/ovl_En_Fu_reloc.o" -endseg - -beginseg - name "ovl_En_Changer" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Changer/z_en_changer.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Changer/ovl_En_Changer_reloc.o" -endseg - -beginseg - name "ovl_Bg_Jya_Megami" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Megami/z_bg_jya_megami.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Megami/ovl_Bg_Jya_Megami_reloc.o" -endseg - -beginseg - name "ovl_Bg_Jya_Lift" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Lift/z_bg_jya_lift.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Lift/ovl_Bg_Jya_Lift_reloc.o" -endseg - -beginseg - name "ovl_Bg_Jya_Bigmirror" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Bigmirror/z_bg_jya_bigmirror.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Bigmirror/ovl_Bg_Jya_Bigmirror_reloc.o" -endseg - -beginseg - name "ovl_Bg_Jya_Bombchuiwa" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Bombchuiwa/z_bg_jya_bombchuiwa.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Bombchuiwa/ovl_Bg_Jya_Bombchuiwa_reloc.o" -endseg - -beginseg - name "ovl_Bg_Jya_Amishutter" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Amishutter/z_bg_jya_amishutter.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Amishutter/ovl_Bg_Jya_Amishutter_reloc.o" -endseg - -beginseg - name "ovl_Bg_Jya_Bombiwa" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Bombiwa/z_bg_jya_bombiwa.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Bombiwa/ovl_Bg_Jya_Bombiwa_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot18_Basket" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Basket/z_bg_spot18_basket.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Basket/ovl_Bg_Spot18_Basket_reloc.o" -endseg - -beginseg - name "ovl_En_Ganon_Organ" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ganon_Organ/z_en_ganon_organ.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ganon_Organ/ovl_En_Ganon_Organ_reloc.o" -endseg - -beginseg - name "ovl_En_Siofuki" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Siofuki/z_en_siofuki.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Siofuki/ovl_En_Siofuki_reloc.o" -endseg - -beginseg - name "ovl_En_Stream" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Stream/z_en_stream.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Stream/ovl_En_Stream_reloc.o" -endseg - -beginseg - name "ovl_En_Mm" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mm/z_en_mm.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mm/ovl_En_Mm_reloc.o" -endseg - -beginseg - name "ovl_En_Ko" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ko/z_en_ko.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ko/ovl_En_Ko_reloc.o" -endseg - -beginseg - name "ovl_En_Kz" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kz/z_en_kz.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kz/ovl_En_Kz_reloc.o" -endseg - -beginseg - name "ovl_En_Weather_Tag" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Weather_Tag/ovl_En_Weather_Tag_reloc.o" -endseg - -beginseg - name "ovl_Bg_Sst_Floor" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Sst_Floor/z_bg_sst_floor.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Sst_Floor/ovl_Bg_Sst_Floor_reloc.o" -endseg - -beginseg - name "ovl_En_Ani" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ani/z_en_ani.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ani/ovl_En_Ani_reloc.o" -endseg - -beginseg - name "ovl_En_Ex_Item" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ex_Item/z_en_ex_item.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ex_Item/ovl_En_Ex_Item_reloc.o" -endseg - -beginseg - name "ovl_Bg_Jya_Ironobj" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Ironobj/z_bg_jya_ironobj.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Ironobj/ovl_Bg_Jya_Ironobj_reloc.o" -endseg - -beginseg - name "ovl_En_Js" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Js/z_en_js.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Js/ovl_En_Js_reloc.o" -endseg - -beginseg - name "ovl_En_Jsjutan" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Jsjutan/z_en_jsjutan.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Jsjutan/ovl_En_Jsjutan_reloc.o" -endseg - -beginseg - name "ovl_En_Cs" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Cs/z_en_cs.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Cs/ovl_En_Cs_reloc.o" -endseg - -beginseg - name "ovl_En_Md" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Md/z_en_md.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Md/ovl_En_Md_reloc.o" -endseg - -beginseg - name "ovl_En_Hy" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hy/z_en_hy.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hy/ovl_En_Hy_reloc.o" -endseg - -beginseg - name "ovl_En_Ganon_Mant" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ganon_Mant/z_en_ganon_mant.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ganon_Mant/ovl_En_Ganon_Mant_reloc.o" -endseg - -beginseg - name "ovl_En_Okarina_Effect" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Okarina_Effect/z_en_okarina_effect.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Okarina_Effect/ovl_En_Okarina_Effect_reloc.o" -endseg - -beginseg - name "ovl_En_Mag" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mag/z_en_mag.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mag/ovl_En_Mag_reloc.o" -endseg - -beginseg - name "ovl_Door_Gerudo" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Gerudo/z_door_gerudo.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Gerudo/ovl_Door_Gerudo_reloc.o" -endseg - -beginseg - name "ovl_Elf_Msg2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Elf_Msg2/z_elf_msg2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Elf_Msg2/ovl_Elf_Msg2_reloc.o" -endseg - -beginseg - name "ovl_Demo_Gt" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Gt/z_demo_gt.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Gt/ovl_Demo_Gt_reloc.o" -endseg - -beginseg - name "ovl_En_Po_Field" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Field/z_en_po_field.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Field/ovl_En_Po_Field_reloc.o" -endseg - -beginseg - name "ovl_Efc_Erupc" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Efc_Erupc/z_efc_erupc.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Efc_Erupc/ovl_Efc_Erupc_reloc.o" -endseg - -beginseg - name "ovl_Bg_Zg" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Zg/z_bg_zg.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Zg/ovl_Bg_Zg_reloc.o" -endseg - -beginseg - name "ovl_En_Heishi4" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi4/z_en_heishi4.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi4/ovl_En_Heishi4_reloc.o" -endseg - -beginseg - name "ovl_En_Zl3" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl3/z_en_zl3.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl3/ovl_En_Zl3_reloc.o" -endseg - -beginseg - name "ovl_Boss_Ganon2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Ganon2/ovl_Boss_Ganon2_reloc.o" -endseg - -beginseg - name "ovl_En_Kakasi" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kakasi/ovl_En_Kakasi_reloc.o" -endseg - -beginseg - name "ovl_En_Takara_Man" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Takara_Man/z_en_takara_man.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Takara_Man/ovl_En_Takara_Man_reloc.o" -endseg - -beginseg - name "ovl_Obj_Makeoshihiki" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Makeoshihiki/z_obj_makeoshihiki.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Makeoshihiki/ovl_Obj_Makeoshihiki_reloc.o" -endseg - -beginseg - name "ovl_Oceff_Spot" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Spot/z_oceff_spot.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Spot/ovl_Oceff_Spot_reloc.o" -endseg - -beginseg - name "ovl_End_Title" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_End_Title/z_end_title.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_End_Title/ovl_End_Title_reloc.o" -endseg - -beginseg - name "ovl_En_Torch" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Torch/z_en_torch.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Torch/ovl_En_Torch_reloc.o" -endseg - -beginseg - name "ovl_Demo_Ec" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Ec/ovl_Demo_Ec_reloc.o" -endseg - -beginseg - name "ovl_Shot_Sun" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Shot_Sun/z_shot_sun.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Shot_Sun/ovl_Shot_Sun_reloc.o" -endseg - -beginseg - name "ovl_En_Dy_Extra" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dy_Extra/z_en_dy_extra.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dy_Extra/ovl_En_Dy_Extra_reloc.o" -endseg - -beginseg - name "ovl_En_Wonder_Talk2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wonder_Talk2/z_en_wonder_talk2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wonder_Talk2/ovl_En_Wonder_Talk2_reloc.o" -endseg - -beginseg - name "ovl_En_Ge2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ge2/z_en_ge2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ge2/ovl_En_Ge2_reloc.o" -endseg - -beginseg - name "ovl_Obj_Roomtimer" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Roomtimer/ovl_Obj_Roomtimer_reloc.o" -endseg - -beginseg - name "ovl_En_Ssh" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ssh/z_en_ssh.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ssh/ovl_En_Ssh_reloc.o" -endseg - -beginseg - name "ovl_En_Sth" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sth/z_en_sth.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sth/ovl_En_Sth_reloc.o" -endseg - -beginseg - name "ovl_Oceff_Wipe" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe/z_oceff_wipe.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe/ovl_Oceff_Wipe_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Dust" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dust/z_eff_ss_dust.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dust/ovl_Effect_Ss_Dust_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_KiraKira" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_KiraKira/z_eff_ss_kirakira.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_KiraKira/ovl_Effect_Ss_KiraKira_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Bomb" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Bomb/z_eff_ss_bomb.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Bomb/ovl_Effect_Ss_Bomb_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Bomb2" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Bomb2/z_eff_ss_bomb2.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Bomb2/ovl_Effect_Ss_Bomb2_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Blast" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Blast/z_eff_ss_blast.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Blast/ovl_Effect_Ss_Blast_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_G_Spk" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Spk/z_eff_ss_g_spk.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Spk/ovl_Effect_Ss_G_Spk_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_D_Fire" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_D_Fire/z_eff_ss_d_fire.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_D_Fire/ovl_Effect_Ss_D_Fire_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Bubble" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Bubble/z_eff_ss_bubble.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Bubble/ovl_Effect_Ss_Bubble_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_G_Ripple" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Ripple/z_eff_ss_g_ripple.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Ripple/ovl_Effect_Ss_G_Ripple_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_G_Splash" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Splash/z_eff_ss_g_splash.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Splash/ovl_Effect_Ss_G_Splash_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_G_Magma" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Magma/z_eff_ss_g_magma.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Magma/ovl_Effect_Ss_G_Magma_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_G_Fire" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Fire/z_eff_ss_g_fire.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Fire/ovl_Effect_Ss_G_Fire_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Lightning" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Lightning/z_eff_ss_lightning.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Lightning/ovl_Effect_Ss_Lightning_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Dt_Bubble" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dt_Bubble/z_eff_ss_dt_bubble.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dt_Bubble/ovl_Effect_Ss_Dt_Bubble_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Hahen" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Hahen/ovl_Effect_Ss_Hahen_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Stick" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Stick/z_eff_ss_stick.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Stick/ovl_Effect_Ss_Stick_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Sibuki" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Sibuki/z_eff_ss_sibuki.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Sibuki/ovl_Effect_Ss_Sibuki_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Sibuki2" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Sibuki2/z_eff_ss_sibuki2.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Sibuki2/ovl_Effect_Ss_Sibuki2_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_G_Magma2" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Magma2/z_eff_ss_g_magma2.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Magma2/ovl_Effect_Ss_G_Magma2_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Stone1" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Stone1/z_eff_ss_stone1.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Stone1/ovl_Effect_Ss_Stone1_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_HitMark" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_HitMark/z_eff_ss_hitmark.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_HitMark/ovl_Effect_Ss_HitMark_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Fhg_Flash" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Fhg_Flash/z_eff_ss_fhg_flash.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Fhg_Flash/ovl_Effect_Ss_Fhg_Flash_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_K_Fire" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_K_Fire/z_eff_ss_k_fire.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_K_Fire/ovl_Effect_Ss_K_Fire_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Solder_Srch_Ball" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Solder_Srch_Ball/z_eff_ss_solder_srch_ball.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Solder_Srch_Ball/ovl_Effect_Ss_Solder_Srch_Ball_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Kakera" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Kakera/ovl_Effect_Ss_Kakera_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Ice_Piece" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Ice_Piece/z_eff_ss_ice_piece.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Ice_Piece/ovl_Effect_Ss_Ice_Piece_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_En_Ice" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_En_Ice/z_eff_ss_en_ice.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_En_Ice/ovl_Effect_Ss_En_Ice_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Fire_Tail" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Fire_Tail/z_eff_ss_fire_tail.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Fire_Tail/ovl_Effect_Ss_Fire_Tail_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_En_Fire" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_En_Fire/z_eff_ss_en_fire.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_En_Fire/ovl_Effect_Ss_En_Fire_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Extra" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Extra/ovl_Effect_Ss_Extra_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Fcircle" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Fcircle/z_eff_ss_fcircle.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Fcircle/ovl_Effect_Ss_Fcircle_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Dead_Db" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Db/z_eff_ss_dead_db.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Db/ovl_Effect_Ss_Dead_Db_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Dead_Dd" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Dd/z_eff_ss_dead_dd.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Dd/ovl_Effect_Ss_Dead_Dd_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Dead_Ds" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Ds/z_eff_ss_dead_ds.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Ds/ovl_Effect_Ss_Dead_Ds_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Dead_Sound" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Sound/z_eff_ss_dead_sound.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Sound/ovl_Effect_Ss_Dead_Sound_reloc.o" -endseg - -beginseg - name "ovl_Oceff_Storm" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Storm/z_oceff_storm.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Storm/ovl_Oceff_Storm_reloc.o" -endseg - -beginseg - name "ovl_En_Weiyer" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Weiyer/z_en_weiyer.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Weiyer/ovl_En_Weiyer_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot05_Soko" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot05_Soko/z_bg_spot05_soko.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot05_Soko/ovl_Bg_Spot05_Soko_reloc.o" -endseg - -beginseg - name "ovl_Bg_Jya_1flift" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_1flift/z_bg_jya_1flift.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_1flift/ovl_Bg_Jya_1flift_reloc.o" -endseg - -beginseg - name "ovl_Bg_Jya_Haheniron" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Haheniron/z_bg_jya_haheniron.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Haheniron/ovl_Bg_Jya_Haheniron_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot12_Gate" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot12_Gate/z_bg_spot12_gate.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot12_Gate/ovl_Bg_Spot12_Gate_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot12_Saku" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot12_Saku/z_bg_spot12_saku.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot12_Saku/ovl_Bg_Spot12_Saku_reloc.o" -endseg - -beginseg - name "ovl_En_Hintnuts" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hintnuts/z_en_hintnuts.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hintnuts/ovl_En_Hintnuts_reloc.o" -endseg - -beginseg - name "ovl_En_Nutsball" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Nutsball/z_en_nutsball.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Nutsball/ovl_En_Nutsball_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot00_Break" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot00_Break/z_bg_spot00_break.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot00_Break/ovl_Bg_Spot00_Break_reloc.o" -endseg - -beginseg - name "ovl_En_Shopnuts" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Shopnuts/z_en_shopnuts.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Shopnuts/ovl_En_Shopnuts_reloc.o" -endseg - -beginseg - name "ovl_En_It" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_It/z_en_it.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_It/ovl_En_It_reloc.o" -endseg - -beginseg - name "ovl_En_GeldB" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_GeldB/z_en_geldb.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_GeldB/ovl_En_GeldB_reloc.o" -endseg - -beginseg - name "ovl_Oceff_Wipe2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe2/z_oceff_wipe2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe2/ovl_Oceff_Wipe2_reloc.o" -endseg - -beginseg - name "ovl_Oceff_Wipe3" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe3/z_oceff_wipe3.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe3/ovl_Oceff_Wipe3_reloc.o" -endseg - -beginseg - name "ovl_En_Niw_Girl" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Niw_Girl/z_en_niw_girl.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Niw_Girl/ovl_En_Niw_Girl_reloc.o" -endseg - -beginseg - name "ovl_En_Dog" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dog/z_en_dog.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dog/ovl_En_Dog_reloc.o" -endseg - -beginseg - name "ovl_En_Si" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Si/z_en_si.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Si/ovl_En_Si_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot01_Objects2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Objects2/z_bg_spot01_objects2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Objects2/ovl_Bg_Spot01_Objects2_reloc.o" -endseg - -beginseg - name "ovl_Obj_Comb" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Comb/ovl_Obj_Comb_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot11_Bakudankabe" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot11_Bakudankabe/z_bg_spot11_bakudankabe.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot11_Bakudankabe/ovl_Bg_Spot11_Bakudankabe_reloc.o" -endseg - -beginseg - name "ovl_Obj_Kibako2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Kibako2/z_obj_kibako2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Kibako2/ovl_Obj_Kibako2_reloc.o" -endseg - -beginseg - name "ovl_En_Dnt_Demo" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dnt_Demo/z_en_dnt_demo.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dnt_Demo/ovl_En_Dnt_Demo_reloc.o" -endseg - -beginseg - name "ovl_En_Dnt_Jiji" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dnt_Jiji/z_en_dnt_jiji.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dnt_Jiji/ovl_En_Dnt_Jiji_reloc.o" -endseg - -beginseg - name "ovl_En_Dnt_Nomal" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dnt_Nomal/z_en_dnt_nomal.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dnt_Nomal/ovl_En_Dnt_Nomal_reloc.o" -endseg - -beginseg - name "ovl_En_Guest" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Guest/z_en_guest.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Guest/ovl_En_Guest_reloc.o" -endseg - -beginseg - name "ovl_Bg_Bom_Guard" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bom_Guard/z_bg_bom_guard.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bom_Guard/ovl_Bg_Bom_Guard_reloc.o" -endseg - -beginseg - name "ovl_En_Hs2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hs2/z_en_hs2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hs2/ovl_En_Hs2_reloc.o" -endseg - -beginseg - name "ovl_Demo_Kekkai" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kekkai/z_demo_kekkai.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kekkai/ovl_Demo_Kekkai_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot08_Bakudankabe" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot08_Bakudankabe/z_bg_spot08_bakudankabe.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot08_Bakudankabe/ovl_Bg_Spot08_Bakudankabe_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot17_Bakudankabe" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot17_Bakudankabe/z_bg_spot17_bakudankabe.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot17_Bakudankabe/ovl_Bg_Spot17_Bakudankabe_reloc.o" -endseg - -beginseg - name "ovl_Obj_Mure3" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Mure3/z_obj_mure3.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Mure3/ovl_Obj_Mure3_reloc.o" -endseg - -beginseg - name "ovl_En_Tg" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tg/z_en_tg.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tg/ovl_En_Tg_reloc.o" -endseg - -beginseg - name "ovl_En_Mu" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mu/z_en_mu.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mu/ovl_En_Mu_reloc.o" -endseg - -beginseg - name "ovl_En_Go2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Go2/z_en_go2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Go2/ovl_En_Go2_reloc.o" -endseg - -beginseg - name "ovl_En_Wf" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wf/z_en_wf.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wf/ovl_En_Wf_reloc.o" -endseg - -beginseg - name "ovl_En_Skb" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Skb/z_en_skb.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Skb/ovl_En_Skb_reloc.o" -endseg - -beginseg - name "ovl_Demo_Gj" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Gj/z_demo_gj.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Gj/ovl_Demo_Gj_reloc.o" -endseg - -beginseg - name "ovl_Demo_Geff" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Geff/z_demo_geff.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Geff/ovl_Demo_Geff_reloc.o" -endseg - -beginseg - name "ovl_Bg_Gnd_Firemeiro" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Firemeiro/z_bg_gnd_firemeiro.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Firemeiro/ovl_Bg_Gnd_Firemeiro_reloc.o" -endseg - -beginseg - name "ovl_Bg_Gnd_Darkmeiro" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Darkmeiro/z_bg_gnd_darkmeiro.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Darkmeiro/ovl_Bg_Gnd_Darkmeiro_reloc.o" -endseg - -beginseg - name "ovl_Bg_Gnd_Soulmeiro" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Soulmeiro/z_bg_gnd_soulmeiro.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Soulmeiro/ovl_Bg_Gnd_Soulmeiro_reloc.o" -endseg - -beginseg - name "ovl_Bg_Gnd_Nisekabe" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Nisekabe/z_bg_gnd_nisekabe.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Nisekabe/ovl_Bg_Gnd_Nisekabe_reloc.o" -endseg - -beginseg - name "ovl_Bg_Gnd_Iceblock" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Iceblock/z_bg_gnd_iceblock.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Iceblock/ovl_Bg_Gnd_Iceblock_reloc.o" -endseg - -beginseg - name "ovl_Bg_Ydan_Sp" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ydan_Sp/z_bg_ydan_sp.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ydan_Sp/ovl_Bg_Ydan_Sp_reloc.o" -endseg - -beginseg - name "ovl_En_Gb" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Gb/z_en_gb.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Gb/ovl_En_Gb_reloc.o" -endseg - -beginseg - name "ovl_En_Gs" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Gs/z_en_gs.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Gs/ovl_En_Gs_reloc.o" -endseg - -beginseg - name "ovl_Bg_Mizu_Bwall" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Bwall/z_bg_mizu_bwall.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Bwall/ovl_Bg_Mizu_Bwall_reloc.o" -endseg - -beginseg - name "ovl_Bg_Mizu_Shutter" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Shutter/z_bg_mizu_shutter.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Shutter/ovl_Bg_Mizu_Shutter_reloc.o" -endseg - -beginseg - name "ovl_En_Daiku_Kakariko" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Daiku_Kakariko/z_en_daiku_kakariko.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Daiku_Kakariko/ovl_En_Daiku_Kakariko_reloc.o" -endseg - -beginseg - name "ovl_Bg_Bowl_Wall" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bowl_Wall/z_bg_bowl_wall.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bowl_Wall/ovl_Bg_Bowl_Wall_reloc.o" -endseg - -beginseg - name "ovl_En_Wall_Tubo" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wall_Tubo/z_en_wall_tubo.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wall_Tubo/ovl_En_Wall_Tubo_reloc.o" -endseg - -beginseg - name "ovl_En_Po_Desert" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Desert/z_en_po_desert.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Desert/ovl_En_Po_Desert_reloc.o" -endseg - -beginseg - name "ovl_En_Crow" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Crow/z_en_crow.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Crow/ovl_En_Crow_reloc.o" -endseg - -beginseg - name "ovl_Door_Killer" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Killer/z_door_killer.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Killer/ovl_Door_Killer_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot11_Oasis" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot11_Oasis/z_bg_spot11_oasis.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot11_Oasis/ovl_Bg_Spot11_Oasis_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot18_Futa" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Futa/z_bg_spot18_futa.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Futa/ovl_Bg_Spot18_Futa_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot18_Shutter" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Shutter/z_bg_spot18_shutter.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Shutter/ovl_Bg_Spot18_Shutter_reloc.o" -endseg - -beginseg - name "ovl_En_Ma3" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ma3/z_en_ma3.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ma3/ovl_En_Ma3_reloc.o" -endseg - -beginseg - name "ovl_En_Cow" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Cow/z_en_cow.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Cow/ovl_En_Cow_reloc.o" -endseg - -beginseg - name "ovl_Bg_Ice_Turara" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Turara/z_bg_ice_turara.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Turara/ovl_Bg_Ice_Turara_reloc.o" -endseg - -beginseg - name "ovl_Bg_Ice_Shutter" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Shutter/z_bg_ice_shutter.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Shutter/ovl_Bg_Ice_Shutter_reloc.o" -endseg - -beginseg - name "ovl_En_Kakasi2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kakasi2/z_en_kakasi2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kakasi2/ovl_En_Kakasi2_reloc.o" -endseg - -beginseg - name "ovl_En_Kakasi3" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kakasi3/z_en_kakasi3.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kakasi3/ovl_En_Kakasi3_reloc.o" -endseg - -beginseg - name "ovl_Oceff_Wipe4" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe4/z_oceff_wipe4.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe4/ovl_Oceff_Wipe4_reloc.o" -endseg - -beginseg - name "ovl_En_Eg" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Eg/z_en_eg.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Eg/ovl_En_Eg_reloc.o" -endseg - -beginseg - name "ovl_Bg_Menkuri_Nisekabe" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Menkuri_Nisekabe/z_bg_menkuri_nisekabe.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Menkuri_Nisekabe/ovl_Bg_Menkuri_Nisekabe_reloc.o" -endseg - -beginseg - name "ovl_En_Zo" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zo/z_en_zo.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zo/ovl_En_Zo_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Ice_Smoke" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Ice_Smoke/z_eff_ss_ice_smoke.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Ice_Smoke/ovl_Effect_Ss_Ice_Smoke_reloc.o" -endseg - -beginseg - name "ovl_Obj_Makekinsuta" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Makekinsuta/z_obj_makekinsuta.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Makekinsuta/ovl_Obj_Makekinsuta_reloc.o" -endseg - -beginseg - name "ovl_En_Ge3" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ge3/z_en_ge3.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ge3/ovl_En_Ge3_reloc.o" -endseg - -beginseg - name "ovl_Obj_Timeblock" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Timeblock/z_obj_timeblock.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Timeblock/ovl_Obj_Timeblock_reloc.o" -endseg - -beginseg - name "ovl_Obj_Hamishi" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Hamishi/z_obj_hamishi.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Hamishi/ovl_Obj_Hamishi_reloc.o" -endseg - -beginseg - name "ovl_En_Zl4" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl4/z_en_zl4.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl4/ovl_En_Zl4_reloc.o" -endseg - -beginseg - name "ovl_En_Mm2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mm2/z_en_mm2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mm2/ovl_En_Mm2_reloc.o" -endseg - -beginseg - name "ovl_Bg_Jya_Block" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Block/z_bg_jya_block.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Block/ovl_Bg_Jya_Block_reloc.o" -endseg - -beginseg - name "ovl_Obj_Warp2block" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Warp2block/z_obj_warp2block.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Warp2block/ovl_Obj_Warp2block_reloc.o" -endseg - -#else - -beginseg - name "ovl_Arms_Hook" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Arms_Hook/ovl_Arms_Hook_reloc.o" -endseg - -beginseg - name "ovl_Arrow_Fire" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Arrow_Fire/ovl_Arrow_Fire_reloc.o" -endseg - -beginseg - name "ovl_Arrow_Ice" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Arrow_Ice/ovl_Arrow_Ice_reloc.o" -endseg - -beginseg - name "ovl_Arrow_Light" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Arrow_Light/z_arrow_light.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Arrow_Light/ovl_Arrow_Light_reloc.o" -endseg - -beginseg - name "ovl_Bg_Bdan_Objects" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bdan_Objects/z_bg_bdan_objects.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bdan_Objects/ovl_Bg_Bdan_Objects_reloc.o" -endseg - -beginseg - name "ovl_Bg_Bdan_Switch" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bdan_Switch/z_bg_bdan_switch.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bdan_Switch/ovl_Bg_Bdan_Switch_reloc.o" -endseg - -beginseg - name "ovl_Bg_Bom_Guard" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bom_Guard/z_bg_bom_guard.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bom_Guard/ovl_Bg_Bom_Guard_reloc.o" -endseg - -beginseg - name "ovl_Bg_Bombwall" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bombwall/z_bg_bombwall.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bombwall/ovl_Bg_Bombwall_reloc.o" -endseg - -beginseg - name "ovl_Bg_Bowl_Wall" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bowl_Wall/z_bg_bowl_wall.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bowl_Wall/ovl_Bg_Bowl_Wall_reloc.o" -endseg - -beginseg - name "ovl_Bg_Breakwall" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Breakwall/ovl_Bg_Breakwall_reloc.o" -endseg - -beginseg - name "ovl_Bg_Ddan_Jd" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ddan_Jd/z_bg_ddan_jd.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ddan_Jd/ovl_Bg_Ddan_Jd_reloc.o" -endseg - -beginseg - name "ovl_Bg_Ddan_Kd" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ddan_Kd/z_bg_ddan_kd.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ddan_Kd/ovl_Bg_Ddan_Kd_reloc.o" -endseg - -beginseg - name "ovl_Bg_Dodoago" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Dodoago/z_bg_dodoago.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Dodoago/ovl_Bg_Dodoago_reloc.o" -endseg - -beginseg - name "ovl_Bg_Dy_Yoseizo" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Dy_Yoseizo/ovl_Bg_Dy_Yoseizo_reloc.o" -endseg - -beginseg - name "ovl_Bg_Ganon_Otyuka" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ganon_Otyuka/z_bg_ganon_otyuka.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ganon_Otyuka/ovl_Bg_Ganon_Otyuka_reloc.o" -endseg - -beginseg - name "ovl_Bg_Gate_Shutter" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gate_Shutter/z_bg_gate_shutter.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gate_Shutter/ovl_Bg_Gate_Shutter_reloc.o" -endseg - -beginseg - name "ovl_Bg_Gjyo_Bridge" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gjyo_Bridge/z_bg_gjyo_bridge.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gjyo_Bridge/ovl_Bg_Gjyo_Bridge_reloc.o" -endseg - -beginseg - name "ovl_Bg_Gnd_Darkmeiro" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Darkmeiro/z_bg_gnd_darkmeiro.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Darkmeiro/ovl_Bg_Gnd_Darkmeiro_reloc.o" -endseg - -beginseg - name "ovl_Bg_Gnd_Firemeiro" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Firemeiro/z_bg_gnd_firemeiro.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Firemeiro/ovl_Bg_Gnd_Firemeiro_reloc.o" -endseg - -beginseg - name "ovl_Bg_Gnd_Iceblock" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Iceblock/z_bg_gnd_iceblock.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Iceblock/ovl_Bg_Gnd_Iceblock_reloc.o" -endseg - -beginseg - name "ovl_Bg_Gnd_Nisekabe" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Nisekabe/z_bg_gnd_nisekabe.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Nisekabe/ovl_Bg_Gnd_Nisekabe_reloc.o" -endseg - -beginseg - name "ovl_Bg_Gnd_Soulmeiro" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Soulmeiro/z_bg_gnd_soulmeiro.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Soulmeiro/ovl_Bg_Gnd_Soulmeiro_reloc.o" -endseg - -beginseg - name "ovl_Bg_Haka" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka/z_bg_haka.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka/ovl_Bg_Haka_reloc.o" -endseg - -beginseg - name "ovl_Bg_Haka_Gate" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Gate/z_bg_haka_gate.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Gate/ovl_Bg_Haka_Gate_reloc.o" -endseg - -beginseg - name "ovl_Bg_Haka_Huta" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Huta/z_bg_haka_huta.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Huta/ovl_Bg_Haka_Huta_reloc.o" -endseg - -beginseg - name "ovl_Bg_Haka_Megane" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Megane/z_bg_haka_megane.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Megane/ovl_Bg_Haka_Megane_reloc.o" -endseg - -beginseg - name "ovl_Bg_Haka_MeganeBG" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_MeganeBG/z_bg_haka_meganebg.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_MeganeBG/ovl_Bg_Haka_MeganeBG_reloc.o" -endseg - -beginseg - name "ovl_Bg_Haka_Sgami" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Sgami/z_bg_haka_sgami.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Sgami/ovl_Bg_Haka_Sgami_reloc.o" -endseg - -beginseg - name "ovl_Bg_Haka_Ship" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Ship/z_bg_haka_ship.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Ship/ovl_Bg_Haka_Ship_reloc.o" -endseg - -beginseg - name "ovl_Bg_Haka_Trap" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Trap/z_bg_haka_trap.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Trap/ovl_Bg_Haka_Trap_reloc.o" -endseg - -beginseg - name "ovl_Bg_Haka_Tubo" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Tubo/z_bg_haka_tubo.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Tubo/ovl_Bg_Haka_Tubo_reloc.o" -endseg - -beginseg - name "ovl_Bg_Haka_Water" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Water/z_bg_haka_water.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Water/ovl_Bg_Haka_Water_reloc.o" -endseg - -beginseg - name "ovl_Bg_Haka_Zou" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Zou/z_bg_haka_zou.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Zou/ovl_Bg_Haka_Zou_reloc.o" -endseg - -beginseg - name "ovl_Bg_Heavy_Block" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Heavy_Block/z_bg_heavy_block.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Heavy_Block/ovl_Bg_Heavy_Block_reloc.o" -endseg - -beginseg - name "ovl_Bg_Hidan_Curtain" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Curtain/z_bg_hidan_curtain.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Curtain/ovl_Bg_Hidan_Curtain_reloc.o" -endseg - -beginseg - name "ovl_Bg_Hidan_Dalm" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Dalm/z_bg_hidan_dalm.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Dalm/ovl_Bg_Hidan_Dalm_reloc.o" -endseg - -beginseg - name "ovl_Bg_Hidan_Firewall" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Firewall/z_bg_hidan_firewall.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Firewall/ovl_Bg_Hidan_Firewall_reloc.o" -endseg - -beginseg - name "ovl_Bg_Hidan_Fslift" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Fslift/z_bg_hidan_fslift.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Fslift/ovl_Bg_Hidan_Fslift_reloc.o" -endseg - -beginseg - name "ovl_Bg_Hidan_Fwbig" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Fwbig/z_bg_hidan_fwbig.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Fwbig/ovl_Bg_Hidan_Fwbig_reloc.o" -endseg - -beginseg - name "ovl_Bg_Hidan_Hamstep" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Hamstep/z_bg_hidan_hamstep.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Hamstep/ovl_Bg_Hidan_Hamstep_reloc.o" -endseg - -beginseg - name "ovl_Bg_Hidan_Hrock" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Hrock/z_bg_hidan_hrock.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Hrock/ovl_Bg_Hidan_Hrock_reloc.o" -endseg - -beginseg - name "ovl_Bg_Hidan_Kousi" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Kousi/z_bg_hidan_kousi.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Kousi/ovl_Bg_Hidan_Kousi_reloc.o" -endseg - -beginseg - name "ovl_Bg_Hidan_Kowarerukabe" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Kowarerukabe/z_bg_hidan_kowarerukabe.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Kowarerukabe/ovl_Bg_Hidan_Kowarerukabe_reloc.o" -endseg - -beginseg - name "ovl_Bg_Hidan_Rock" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Rock/z_bg_hidan_rock.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Rock/ovl_Bg_Hidan_Rock_reloc.o" -endseg - -beginseg - name "ovl_Bg_Hidan_Rsekizou" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Rsekizou/z_bg_hidan_rsekizou.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Rsekizou/ovl_Bg_Hidan_Rsekizou_reloc.o" -endseg - -beginseg - name "ovl_Bg_Hidan_Sekizou" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Sekizou/z_bg_hidan_sekizou.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Sekizou/ovl_Bg_Hidan_Sekizou_reloc.o" -endseg - -beginseg - name "ovl_Bg_Hidan_Sima" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Sima/z_bg_hidan_sima.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Sima/ovl_Bg_Hidan_Sima_reloc.o" -endseg - -beginseg - name "ovl_Bg_Hidan_Syoku" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Syoku/z_bg_hidan_syoku.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Syoku/ovl_Bg_Hidan_Syoku_reloc.o" -endseg - -beginseg - name "ovl_Bg_Ice_Objects" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Objects/z_bg_ice_objects.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Objects/ovl_Bg_Ice_Objects_reloc.o" -endseg - -beginseg - name "ovl_Bg_Ice_Shelter" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Shelter/z_bg_ice_shelter.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Shelter/ovl_Bg_Ice_Shelter_reloc.o" -endseg - -beginseg - name "ovl_Bg_Ice_Shutter" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Shutter/z_bg_ice_shutter.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Shutter/ovl_Bg_Ice_Shutter_reloc.o" -endseg - -beginseg - name "ovl_Bg_Ice_Turara" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Turara/z_bg_ice_turara.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Turara/ovl_Bg_Ice_Turara_reloc.o" -endseg - -beginseg - name "ovl_Bg_Ingate" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ingate/ovl_Bg_Ingate_reloc.o" -endseg - -beginseg - name "ovl_Bg_Jya_1flift" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_1flift/z_bg_jya_1flift.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_1flift/ovl_Bg_Jya_1flift_reloc.o" -endseg - -beginseg - name "ovl_Bg_Jya_Amishutter" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Amishutter/z_bg_jya_amishutter.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Amishutter/ovl_Bg_Jya_Amishutter_reloc.o" -endseg - -beginseg - name "ovl_Bg_Jya_Bigmirror" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Bigmirror/z_bg_jya_bigmirror.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Bigmirror/ovl_Bg_Jya_Bigmirror_reloc.o" -endseg - -beginseg - name "ovl_Bg_Jya_Block" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Block/z_bg_jya_block.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Block/ovl_Bg_Jya_Block_reloc.o" -endseg - -beginseg - name "ovl_Bg_Jya_Bombchuiwa" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Bombchuiwa/z_bg_jya_bombchuiwa.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Bombchuiwa/ovl_Bg_Jya_Bombchuiwa_reloc.o" -endseg - -beginseg - name "ovl_Bg_Jya_Bombiwa" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Bombiwa/z_bg_jya_bombiwa.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Bombiwa/ovl_Bg_Jya_Bombiwa_reloc.o" -endseg - -beginseg - name "ovl_Bg_Jya_Cobra" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Cobra/z_bg_jya_cobra.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Cobra/ovl_Bg_Jya_Cobra_reloc.o" -endseg - -beginseg - name "ovl_Bg_Jya_Goroiwa" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Goroiwa/z_bg_jya_goroiwa.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Goroiwa/ovl_Bg_Jya_Goroiwa_reloc.o" -endseg - -beginseg - name "ovl_Bg_Jya_Haheniron" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Haheniron/z_bg_jya_haheniron.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Haheniron/ovl_Bg_Jya_Haheniron_reloc.o" -endseg - -beginseg - name "ovl_Bg_Jya_Ironobj" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Ironobj/z_bg_jya_ironobj.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Ironobj/ovl_Bg_Jya_Ironobj_reloc.o" -endseg - -beginseg - name "ovl_Bg_Jya_Kanaami" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Kanaami/z_bg_jya_kanaami.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Kanaami/ovl_Bg_Jya_Kanaami_reloc.o" -endseg - -beginseg - name "ovl_Bg_Jya_Lift" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Lift/z_bg_jya_lift.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Lift/ovl_Bg_Jya_Lift_reloc.o" -endseg - -beginseg - name "ovl_Bg_Jya_Megami" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Megami/z_bg_jya_megami.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Megami/ovl_Bg_Jya_Megami_reloc.o" -endseg - -beginseg - name "ovl_Bg_Jya_Zurerukabe" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Zurerukabe/z_bg_jya_zurerukabe.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Zurerukabe/ovl_Bg_Jya_Zurerukabe_reloc.o" -endseg - -beginseg - name "ovl_Bg_Menkuri_Eye" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Menkuri_Eye/z_bg_menkuri_eye.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Menkuri_Eye/ovl_Bg_Menkuri_Eye_reloc.o" -endseg - -beginseg - name "ovl_Bg_Menkuri_Kaiten" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Menkuri_Kaiten/z_bg_menkuri_kaiten.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Menkuri_Kaiten/ovl_Bg_Menkuri_Kaiten_reloc.o" -endseg - -beginseg - name "ovl_Bg_Menkuri_Nisekabe" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Menkuri_Nisekabe/z_bg_menkuri_nisekabe.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Menkuri_Nisekabe/ovl_Bg_Menkuri_Nisekabe_reloc.o" -endseg - -beginseg - name "ovl_Bg_Mizu_Bwall" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Bwall/z_bg_mizu_bwall.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Bwall/ovl_Bg_Mizu_Bwall_reloc.o" -endseg - -beginseg - name "ovl_Bg_Mizu_Movebg" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Movebg/z_bg_mizu_movebg.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Movebg/ovl_Bg_Mizu_Movebg_reloc.o" -endseg - -beginseg - name "ovl_Bg_Mizu_Shutter" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Shutter/z_bg_mizu_shutter.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Shutter/ovl_Bg_Mizu_Shutter_reloc.o" -endseg - -beginseg - name "ovl_Bg_Mizu_Uzu" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Uzu/z_bg_mizu_uzu.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Uzu/ovl_Bg_Mizu_Uzu_reloc.o" -endseg - -beginseg - name "ovl_Bg_Mizu_Water" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Water/z_bg_mizu_water.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Water/ovl_Bg_Mizu_Water_reloc.o" -endseg - -beginseg - name "ovl_Bg_Mjin" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mjin/z_bg_mjin.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mjin/ovl_Bg_Mjin_reloc.o" -endseg - -beginseg - name "ovl_Bg_Mori_Bigst" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Bigst/z_bg_mori_bigst.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Bigst/ovl_Bg_Mori_Bigst_reloc.o" -endseg - -beginseg - name "ovl_Bg_Mori_Elevator" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Elevator/z_bg_mori_elevator.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Elevator/ovl_Bg_Mori_Elevator_reloc.o" -endseg - -beginseg - name "ovl_Bg_Mori_Hashigo" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Hashigo/z_bg_mori_hashigo.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Hashigo/ovl_Bg_Mori_Hashigo_reloc.o" -endseg - -beginseg - name "ovl_Bg_Mori_Hashira4" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Hashira4/z_bg_mori_hashira4.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Hashira4/ovl_Bg_Mori_Hashira4_reloc.o" -endseg - -beginseg - name "ovl_Bg_Mori_Hineri" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Hineri/z_bg_mori_hineri.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Hineri/ovl_Bg_Mori_Hineri_reloc.o" -endseg - -beginseg - name "ovl_Bg_Mori_Idomizu" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Idomizu/z_bg_mori_idomizu.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Idomizu/ovl_Bg_Mori_Idomizu_reloc.o" -endseg - -beginseg - name "ovl_Bg_Mori_Kaitenkabe" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/z_bg_mori_kaitenkabe.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/ovl_Bg_Mori_Kaitenkabe_reloc.o" -endseg - -beginseg - name "ovl_Bg_Mori_Rakkatenjo" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Rakkatenjo/z_bg_mori_rakkatenjo.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Rakkatenjo/ovl_Bg_Mori_Rakkatenjo_reloc.o" -endseg - -beginseg - name "ovl_Bg_Po_Event" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Po_Event/z_bg_po_event.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Po_Event/ovl_Bg_Po_Event_reloc.o" -endseg - -beginseg - name "ovl_Bg_Po_Syokudai" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Po_Syokudai/z_bg_po_syokudai.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Po_Syokudai/ovl_Bg_Po_Syokudai_reloc.o" -endseg - -beginseg - name "ovl_Bg_Pushbox" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Pushbox/z_bg_pushbox.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Pushbox/ovl_Bg_Pushbox_reloc.o" -endseg - -beginseg - name "ovl_Bg_Relay_Objects" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Relay_Objects/z_bg_relay_objects.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Relay_Objects/ovl_Bg_Relay_Objects_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot00_Break" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot00_Break/z_bg_spot00_break.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot00_Break/ovl_Bg_Spot00_Break_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot00_Hanebasi" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot00_Hanebasi/z_bg_spot00_hanebasi.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot00_Hanebasi/ovl_Bg_Spot00_Hanebasi_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot01_Fusya" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Fusya/z_bg_spot01_fusya.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Fusya/ovl_Bg_Spot01_Fusya_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot01_Idohashira" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Idohashira/z_bg_spot01_idohashira.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Idohashira/ovl_Bg_Spot01_Idohashira_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot01_Idomizu" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Idomizu/z_bg_spot01_idomizu.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Idomizu/ovl_Bg_Spot01_Idomizu_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot01_Idosoko" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Idosoko/z_bg_spot01_idosoko.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Idosoko/ovl_Bg_Spot01_Idosoko_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot01_Objects2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Objects2/z_bg_spot01_objects2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Objects2/ovl_Bg_Spot01_Objects2_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot02_Objects" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot02_Objects/z_bg_spot02_objects.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot02_Objects/ovl_Bg_Spot02_Objects_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot03_Taki" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot03_Taki/z_bg_spot03_taki.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot03_Taki/ovl_Bg_Spot03_Taki_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot05_Soko" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot05_Soko/z_bg_spot05_soko.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot05_Soko/ovl_Bg_Spot05_Soko_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot06_Objects" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot06_Objects/z_bg_spot06_objects.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot06_Objects/ovl_Bg_Spot06_Objects_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot07_Taki" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot07_Taki/z_bg_spot07_taki.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot07_Taki/ovl_Bg_Spot07_Taki_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot08_Bakudankabe" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot08_Bakudankabe/z_bg_spot08_bakudankabe.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot08_Bakudankabe/ovl_Bg_Spot08_Bakudankabe_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot08_Iceblock" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot08_Iceblock/z_bg_spot08_iceblock.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot08_Iceblock/ovl_Bg_Spot08_Iceblock_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot09_Obj" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot09_Obj/z_bg_spot09_obj.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot09_Obj/ovl_Bg_Spot09_Obj_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot11_Bakudankabe" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot11_Bakudankabe/z_bg_spot11_bakudankabe.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot11_Bakudankabe/ovl_Bg_Spot11_Bakudankabe_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot11_Oasis" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot11_Oasis/z_bg_spot11_oasis.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot11_Oasis/ovl_Bg_Spot11_Oasis_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot12_Gate" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot12_Gate/z_bg_spot12_gate.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot12_Gate/ovl_Bg_Spot12_Gate_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot12_Saku" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot12_Saku/z_bg_spot12_saku.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot12_Saku/ovl_Bg_Spot12_Saku_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot15_Rrbox" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot15_Rrbox/z_bg_spot15_rrbox.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot15_Rrbox/ovl_Bg_Spot15_Rrbox_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot15_Saku" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot15_Saku/z_bg_spot15_saku.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot15_Saku/ovl_Bg_Spot15_Saku_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot16_Bombstone" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot16_Bombstone/z_bg_spot16_bombstone.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot16_Bombstone/ovl_Bg_Spot16_Bombstone_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot16_Doughnut" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot16_Doughnut/z_bg_spot16_doughnut.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot16_Doughnut/ovl_Bg_Spot16_Doughnut_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot17_Bakudankabe" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot17_Bakudankabe/z_bg_spot17_bakudankabe.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot17_Bakudankabe/ovl_Bg_Spot17_Bakudankabe_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot17_Funen" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot17_Funen/z_bg_spot17_funen.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot17_Funen/ovl_Bg_Spot17_Funen_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot18_Basket" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Basket/z_bg_spot18_basket.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Basket/ovl_Bg_Spot18_Basket_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot18_Futa" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Futa/z_bg_spot18_futa.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Futa/ovl_Bg_Spot18_Futa_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot18_Obj" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Obj/z_bg_spot18_obj.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Obj/ovl_Bg_Spot18_Obj_reloc.o" -endseg - -beginseg - name "ovl_Bg_Spot18_Shutter" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Shutter/z_bg_spot18_shutter.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Shutter/ovl_Bg_Spot18_Shutter_reloc.o" -endseg - -beginseg - name "ovl_Bg_Sst_Floor" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Sst_Floor/z_bg_sst_floor.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Sst_Floor/ovl_Bg_Sst_Floor_reloc.o" -endseg - -beginseg - name "ovl_Bg_Toki_Hikari" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Toki_Hikari/z_bg_toki_hikari.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Toki_Hikari/ovl_Bg_Toki_Hikari_reloc.o" -endseg - -beginseg - name "ovl_Bg_Toki_Swd" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_1.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_3.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Toki_Swd/ovl_Bg_Toki_Swd_reloc.o" -endseg - -beginseg - name "ovl_Bg_Treemouth" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Treemouth/z_bg_treemouth_cutscene_data.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Treemouth/z_bg_treemouth.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Treemouth/ovl_Bg_Treemouth_reloc.o" -endseg - -beginseg - name "ovl_Bg_Umajump" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Umajump/z_bg_umajump.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Umajump/ovl_Bg_Umajump_reloc.o" -endseg - -beginseg - name "ovl_Bg_Vb_Sima" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Vb_Sima/z_bg_vb_sima.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Vb_Sima/ovl_Bg_Vb_Sima_reloc.o" -endseg - -beginseg - name "ovl_Bg_Ydan_Hasi" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ydan_Hasi/z_bg_ydan_hasi.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ydan_Hasi/ovl_Bg_Ydan_Hasi_reloc.o" -endseg - -beginseg - name "ovl_Bg_Ydan_Maruta" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ydan_Maruta/z_bg_ydan_maruta.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ydan_Maruta/ovl_Bg_Ydan_Maruta_reloc.o" -endseg - -beginseg - name "ovl_Bg_Ydan_Sp" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ydan_Sp/z_bg_ydan_sp.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ydan_Sp/ovl_Bg_Ydan_Sp_reloc.o" -endseg - -beginseg - name "ovl_Bg_Zg" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Zg/z_bg_zg.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Zg/ovl_Bg_Zg_reloc.o" -endseg - -beginseg - name "ovl_Boss_Dodongo" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Dodongo/ovl_Boss_Dodongo_reloc.o" -endseg - -beginseg - name "ovl_Boss_Fd" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Fd/z_boss_fd.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Fd/ovl_Boss_Fd_reloc.o" -endseg - -beginseg - name "ovl_Boss_Fd2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Fd2/ovl_Boss_Fd2_reloc.o" -endseg - -beginseg - name "ovl_Boss_Ganon" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Ganon/ovl_Boss_Ganon_reloc.o" -endseg - -beginseg - name "ovl_Boss_Ganon2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Ganon2/ovl_Boss_Ganon2_reloc.o" -endseg - -beginseg - name "ovl_Boss_Ganondrof" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Ganondrof/ovl_Boss_Ganondrof_reloc.o" -endseg - -beginseg - name "ovl_Boss_Goma" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Goma/z_boss_goma.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Goma/ovl_Boss_Goma_reloc.o" -endseg - -beginseg - name "ovl_Boss_Mo" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Mo/ovl_Boss_Mo_reloc.o" -endseg - -beginseg - name "ovl_Boss_Sst" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Sst/ovl_Boss_Sst_reloc.o" -endseg - -beginseg - name "ovl_Boss_Tw" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Tw/z_boss_tw.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Tw/ovl_Boss_Tw_reloc.o" -endseg - -beginseg - name "ovl_Boss_Va" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Va/z_boss_va.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Va/ovl_Boss_Va_reloc.o" -endseg - -beginseg - name "ovl_Demo_6K" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_6K/z_demo_6k.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_6K/ovl_Demo_6K_reloc.o" -endseg - -beginseg - name "ovl_Demo_Du" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Du/z_demo_du.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Du/ovl_Demo_Du_reloc.o" -endseg - -beginseg - name "ovl_Demo_Ec" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Ec/ovl_Demo_Ec_reloc.o" -endseg - -beginseg - name "ovl_Demo_Effect" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Effect/ovl_Demo_Effect_reloc.o" -endseg - -beginseg - name "ovl_Demo_Ext" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Ext/z_demo_ext.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Ext/ovl_Demo_Ext_reloc.o" -endseg - -beginseg - name "ovl_Demo_Geff" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Geff/z_demo_geff.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Geff/ovl_Demo_Geff_reloc.o" -endseg - -beginseg - name "ovl_Demo_Gj" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Gj/z_demo_gj.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Gj/ovl_Demo_Gj_reloc.o" -endseg - -beginseg - name "ovl_Demo_Go" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Go/z_demo_go.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Go/ovl_Demo_Go_reloc.o" -endseg - -beginseg - name "ovl_Demo_Gt" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Gt/z_demo_gt.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Gt/ovl_Demo_Gt_reloc.o" -endseg - -beginseg - name "ovl_Demo_Ik" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Ik/z_demo_ik.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Ik/ovl_Demo_Ik_reloc.o" -endseg - -beginseg - name "ovl_Demo_Im" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Im/z_demo_im.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Im/ovl_Demo_Im_reloc.o" -endseg - -beginseg - name "ovl_Demo_Kankyo" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data1.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data3.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data4.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data5.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data6.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data7.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data8.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/ovl_Demo_Kankyo_reloc.o" -endseg - -beginseg - name "ovl_Demo_Kekkai" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kekkai/z_demo_kekkai.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kekkai/ovl_Demo_Kekkai_reloc.o" -endseg - -beginseg - name "ovl_Demo_Sa" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Sa/z_demo_sa.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Sa/ovl_Demo_Sa_reloc.o" -endseg - -beginseg - name "ovl_Demo_Shd" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Shd/z_demo_shd.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Shd/ovl_Demo_Shd_reloc.o" -endseg - -beginseg - name "ovl_Demo_Tre_Lgt" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Tre_Lgt/z_demo_tre_lgt.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Tre_Lgt/ovl_Demo_Tre_Lgt_reloc.o" -endseg - -beginseg - name "ovl_Door_Ana" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Ana/z_door_ana.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Ana/ovl_Door_Ana_reloc.o" -endseg - -beginseg - name "ovl_Door_Gerudo" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Gerudo/z_door_gerudo.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Gerudo/ovl_Door_Gerudo_reloc.o" -endseg - -beginseg - name "ovl_Door_Killer" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Killer/z_door_killer.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Killer/ovl_Door_Killer_reloc.o" -endseg - -beginseg - name "ovl_Door_Shutter" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Shutter/ovl_Door_Shutter_reloc.o" -endseg - -beginseg - name "ovl_Door_Toki" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Toki/z_door_toki.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Toki/ovl_Door_Toki_reloc.o" -endseg - -beginseg - name "ovl_Door_Warp1" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Warp1/ovl_Door_Warp1_reloc.o" -endseg - -beginseg - name "ovl_Efc_Erupc" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Efc_Erupc/z_efc_erupc.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Efc_Erupc/ovl_Efc_Erupc_reloc.o" -endseg - -beginseg - name "ovl_Eff_Dust" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Eff_Dust/z_eff_dust.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Eff_Dust/ovl_Eff_Dust_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Blast" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Blast/z_eff_ss_blast.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Blast/ovl_Effect_Ss_Blast_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Bomb" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Bomb/z_eff_ss_bomb.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Bomb/ovl_Effect_Ss_Bomb_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Bomb2" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Bomb2/z_eff_ss_bomb2.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Bomb2/ovl_Effect_Ss_Bomb2_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Bubble" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Bubble/z_eff_ss_bubble.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Bubble/ovl_Effect_Ss_Bubble_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_D_Fire" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_D_Fire/z_eff_ss_d_fire.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_D_Fire/ovl_Effect_Ss_D_Fire_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Dead_Db" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Db/z_eff_ss_dead_db.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Db/ovl_Effect_Ss_Dead_Db_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Dead_Dd" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Dd/z_eff_ss_dead_dd.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Dd/ovl_Effect_Ss_Dead_Dd_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Dead_Ds" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Ds/z_eff_ss_dead_ds.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Ds/ovl_Effect_Ss_Dead_Ds_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Dead_Sound" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Sound/z_eff_ss_dead_sound.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Sound/ovl_Effect_Ss_Dead_Sound_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Dt_Bubble" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dt_Bubble/z_eff_ss_dt_bubble.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dt_Bubble/ovl_Effect_Ss_Dt_Bubble_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Dust" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dust/z_eff_ss_dust.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dust/ovl_Effect_Ss_Dust_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_En_Fire" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_En_Fire/z_eff_ss_en_fire.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_En_Fire/ovl_Effect_Ss_En_Fire_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_En_Ice" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_En_Ice/z_eff_ss_en_ice.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_En_Ice/ovl_Effect_Ss_En_Ice_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Extra" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Extra/ovl_Effect_Ss_Extra_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Fcircle" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Fcircle/z_eff_ss_fcircle.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Fcircle/ovl_Effect_Ss_Fcircle_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Fhg_Flash" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Fhg_Flash/z_eff_ss_fhg_flash.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Fhg_Flash/ovl_Effect_Ss_Fhg_Flash_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Fire_Tail" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Fire_Tail/z_eff_ss_fire_tail.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Fire_Tail/ovl_Effect_Ss_Fire_Tail_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_G_Fire" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Fire/z_eff_ss_g_fire.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Fire/ovl_Effect_Ss_G_Fire_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_G_Magma" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Magma/z_eff_ss_g_magma.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Magma/ovl_Effect_Ss_G_Magma_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_G_Magma2" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Magma2/z_eff_ss_g_magma2.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Magma2/ovl_Effect_Ss_G_Magma2_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_G_Ripple" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Ripple/z_eff_ss_g_ripple.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Ripple/ovl_Effect_Ss_G_Ripple_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_G_Spk" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Spk/z_eff_ss_g_spk.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Spk/ovl_Effect_Ss_G_Spk_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_G_Splash" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Splash/z_eff_ss_g_splash.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Splash/ovl_Effect_Ss_G_Splash_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Hahen" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Hahen/ovl_Effect_Ss_Hahen_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_HitMark" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_HitMark/z_eff_ss_hitmark.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_HitMark/ovl_Effect_Ss_HitMark_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Ice_Piece" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Ice_Piece/z_eff_ss_ice_piece.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Ice_Piece/ovl_Effect_Ss_Ice_Piece_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Ice_Smoke" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Ice_Smoke/z_eff_ss_ice_smoke.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Ice_Smoke/ovl_Effect_Ss_Ice_Smoke_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_K_Fire" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_K_Fire/z_eff_ss_k_fire.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_K_Fire/ovl_Effect_Ss_K_Fire_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Kakera" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Kakera/ovl_Effect_Ss_Kakera_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_KiraKira" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_KiraKira/z_eff_ss_kirakira.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_KiraKira/ovl_Effect_Ss_KiraKira_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Lightning" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Lightning/z_eff_ss_lightning.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Lightning/ovl_Effect_Ss_Lightning_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Sibuki" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Sibuki/z_eff_ss_sibuki.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Sibuki/ovl_Effect_Ss_Sibuki_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Sibuki2" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Sibuki2/z_eff_ss_sibuki2.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Sibuki2/ovl_Effect_Ss_Sibuki2_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Solder_Srch_Ball" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Solder_Srch_Ball/z_eff_ss_solder_srch_ball.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Solder_Srch_Ball/ovl_Effect_Ss_Solder_Srch_Ball_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Stick" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Stick/z_eff_ss_stick.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Stick/ovl_Effect_Ss_Stick_reloc.o" -endseg - -beginseg - name "ovl_Effect_Ss_Stone1" - compress - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Stone1/z_eff_ss_stone1.o" - include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Stone1/ovl_Effect_Ss_Stone1_reloc.o" -endseg - -beginseg - name "ovl_Elf_Msg" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Elf_Msg/z_elf_msg.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Elf_Msg/ovl_Elf_Msg_reloc.o" -endseg - -beginseg - name "ovl_Elf_Msg2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Elf_Msg2/z_elf_msg2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Elf_Msg2/ovl_Elf_Msg2_reloc.o" -endseg - -beginseg - name "ovl_En_Am" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Am/z_en_am.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Am/ovl_En_Am_reloc.o" -endseg - -beginseg - name "ovl_En_Ani" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ani/z_en_ani.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ani/ovl_En_Ani_reloc.o" -endseg - -beginseg - name "ovl_En_Anubice" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Anubice/z_en_anubice.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Anubice/ovl_En_Anubice_reloc.o" -endseg - -beginseg - name "ovl_En_Anubice_Fire" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Anubice_Fire/z_en_anubice_fire.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Anubice_Fire/ovl_En_Anubice_Fire_reloc.o" -endseg - -beginseg - name "ovl_En_Anubice_Tag" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Anubice_Tag/z_en_anubice_tag.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Anubice_Tag/ovl_En_Anubice_Tag_reloc.o" -endseg - -beginseg - name "ovl_En_Arow_Trap" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Arow_Trap/z_en_arow_trap.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Arow_Trap/ovl_En_Arow_Trap_reloc.o" -endseg - -beginseg - name "ovl_En_Arrow" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Arrow/z_en_arrow.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Arrow/ovl_En_Arrow_reloc.o" -endseg - -beginseg - name "ovl_En_Attack_Niw" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Attack_Niw/ovl_En_Attack_Niw_reloc.o" -endseg - -beginseg - name "ovl_En_Ba" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ba/z_en_ba.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ba/ovl_En_Ba_reloc.o" -endseg - -beginseg - name "ovl_En_Bb" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bb/z_en_bb.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bb/ovl_En_Bb_reloc.o" -endseg - -beginseg - name "ovl_En_Bdfire" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bdfire/z_en_bdfire.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bdfire/ovl_En_Bdfire_reloc.o" -endseg - -beginseg - name "ovl_En_Bigokuta" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bigokuta/ovl_En_Bigokuta_reloc.o" -endseg - -beginseg - name "ovl_En_Bili" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bili/z_en_bili.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bili/ovl_En_Bili_reloc.o" -endseg - -beginseg - name "ovl_En_Bird" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bird/z_en_bird.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bird/ovl_En_Bird_reloc.o" -endseg - -beginseg - name "ovl_En_Blkobj" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Blkobj/z_en_blkobj.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Blkobj/ovl_En_Blkobj_reloc.o" -endseg - -beginseg - name "ovl_En_Bom" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom/z_en_bom.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom/ovl_En_Bom_reloc.o" -endseg - -beginseg - name "ovl_En_Bom_Bowl_Man" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom_Bowl_Man/ovl_En_Bom_Bowl_Man_reloc.o" -endseg - -beginseg - name "ovl_En_Bom_Bowl_Pit" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom_Bowl_Pit/z_en_bom_bowl_pit.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom_Bowl_Pit/ovl_En_Bom_Bowl_Pit_reloc.o" -endseg - -beginseg - name "ovl_En_Bom_Chu" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom_Chu/z_en_bom_chu.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom_Chu/ovl_En_Bom_Chu_reloc.o" -endseg - -beginseg - name "ovl_En_Bombf" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bombf/z_en_bombf.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bombf/ovl_En_Bombf_reloc.o" -endseg - -beginseg - name "ovl_En_Boom" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Boom/z_en_boom.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Boom/ovl_En_Boom_reloc.o" -endseg - -beginseg - name "ovl_En_Box" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Box/z_en_box.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Box/ovl_En_Box_reloc.o" -endseg - -beginseg - name "ovl_En_Brob" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Brob/z_en_brob.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Brob/ovl_En_Brob_reloc.o" -endseg - -beginseg - name "ovl_En_Bubble" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bubble/z_en_bubble.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bubble/ovl_En_Bubble_reloc.o" -endseg - -beginseg - name "ovl_En_Butte" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Butte/z_en_butte.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Butte/ovl_En_Butte_reloc.o" -endseg - -beginseg - name "ovl_En_Bw" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bw/z_en_bw.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bw/ovl_En_Bw_reloc.o" -endseg - -beginseg - name "ovl_En_Bx" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bx/z_en_bx.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bx/ovl_En_Bx_reloc.o" -endseg - -beginseg - name "ovl_En_Changer" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Changer/z_en_changer.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Changer/ovl_En_Changer_reloc.o" -endseg - -beginseg - name "ovl_En_Clear_Tag" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Clear_Tag/ovl_En_Clear_Tag_reloc.o" -endseg - -beginseg - name "ovl_En_Cow" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Cow/z_en_cow.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Cow/ovl_En_Cow_reloc.o" -endseg - -beginseg - name "ovl_En_Crow" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Crow/z_en_crow.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Crow/ovl_En_Crow_reloc.o" -endseg - -beginseg - name "ovl_En_Cs" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Cs/z_en_cs.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Cs/ovl_En_Cs_reloc.o" -endseg - -beginseg - name "ovl_En_Daiku" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Daiku/z_en_daiku.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Daiku/ovl_En_Daiku_reloc.o" -endseg - -beginseg - name "ovl_En_Daiku_Kakariko" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Daiku_Kakariko/z_en_daiku_kakariko.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Daiku_Kakariko/ovl_En_Daiku_Kakariko_reloc.o" -endseg - -beginseg - name "ovl_En_Dekubaba" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dekubaba/z_en_dekubaba.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dekubaba/ovl_En_Dekubaba_reloc.o" -endseg - -beginseg - name "ovl_En_Dekunuts" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dekunuts/z_en_dekunuts.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dekunuts/ovl_En_Dekunuts_reloc.o" -endseg - -beginseg - name "ovl_En_Dh" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dh/z_en_dh.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dh/ovl_En_Dh_reloc.o" -endseg - -beginseg - name "ovl_En_Dha" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dha/z_en_dha.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dha/ovl_En_Dha_reloc.o" -endseg - -beginseg - name "ovl_En_Diving_Game" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Diving_Game/z_en_diving_game.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Diving_Game/ovl_En_Diving_Game_reloc.o" -endseg - -beginseg - name "ovl_En_Dns" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dns/z_en_dns.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dns/ovl_En_Dns_reloc.o" -endseg - -beginseg - name "ovl_En_Dnt_Demo" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dnt_Demo/z_en_dnt_demo.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dnt_Demo/ovl_En_Dnt_Demo_reloc.o" -endseg - -beginseg - name "ovl_En_Dnt_Jiji" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dnt_Jiji/z_en_dnt_jiji.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dnt_Jiji/ovl_En_Dnt_Jiji_reloc.o" -endseg - -beginseg - name "ovl_En_Dnt_Nomal" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dnt_Nomal/z_en_dnt_nomal.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dnt_Nomal/ovl_En_Dnt_Nomal_reloc.o" -endseg - -beginseg - name "ovl_En_Dodojr" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dodojr/z_en_dodojr.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dodojr/ovl_En_Dodojr_reloc.o" -endseg - -beginseg - name "ovl_En_Dodongo" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dodongo/ovl_En_Dodongo_reloc.o" -endseg - -beginseg - name "ovl_En_Dog" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dog/z_en_dog.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dog/ovl_En_Dog_reloc.o" -endseg - -beginseg - name "ovl_En_Door" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Door/z_en_door.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Door/ovl_En_Door_reloc.o" -endseg - -beginseg - name "ovl_En_Ds" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ds/z_en_ds.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ds/ovl_En_Ds_reloc.o" -endseg - -beginseg - name "ovl_En_Du" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Du/z_en_du.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Du/ovl_En_Du_reloc.o" -endseg - -beginseg - name "ovl_En_Dy_Extra" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dy_Extra/z_en_dy_extra.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dy_Extra/ovl_En_Dy_Extra_reloc.o" -endseg - -beginseg - name "ovl_En_Eg" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Eg/z_en_eg.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Eg/ovl_En_Eg_reloc.o" -endseg - -beginseg - name "ovl_En_Eiyer" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Eiyer/z_en_eiyer.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Eiyer/ovl_En_Eiyer_reloc.o" -endseg - -beginseg - name "ovl_En_Elf" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Elf/z_en_elf.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Elf/ovl_En_Elf_reloc.o" -endseg - -beginseg - name "ovl_En_Encount1" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Encount1/z_en_encount1.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Encount1/ovl_En_Encount1_reloc.o" -endseg - -beginseg - name "ovl_En_Encount2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Encount2/z_en_encount2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Encount2/ovl_En_Encount2_reloc.o" -endseg - -beginseg - name "ovl_En_Ex_Item" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ex_Item/z_en_ex_item.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ex_Item/ovl_En_Ex_Item_reloc.o" -endseg - -beginseg - name "ovl_En_Ex_Ruppy" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ex_Ruppy/z_en_ex_ruppy.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ex_Ruppy/ovl_En_Ex_Ruppy_reloc.o" -endseg - -beginseg - name "ovl_En_Fd" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fd/z_en_fd.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fd/ovl_En_Fd_reloc.o" -endseg - -beginseg - name "ovl_En_Fd_Fire" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fd_Fire/z_en_fd_fire.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fd_Fire/ovl_En_Fd_Fire_reloc.o" -endseg - -beginseg - name "ovl_En_Fhg_Fire" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fhg_Fire/z_en_fhg_fire.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fhg_Fire/ovl_En_Fhg_Fire_reloc.o" -endseg - -beginseg - name "ovl_En_Fire_Rock" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fire_Rock/z_en_fire_rock.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fire_Rock/ovl_En_Fire_Rock_reloc.o" -endseg - -beginseg - name "ovl_En_Firefly" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Firefly/z_en_firefly.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Firefly/ovl_En_Firefly_reloc.o" -endseg - -beginseg - name "ovl_En_Fish" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fish/z_en_fish.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fish/ovl_En_Fish_reloc.o" -endseg - -beginseg - name "ovl_En_Floormas" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Floormas/z_en_floormas.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Floormas/ovl_En_Floormas_reloc.o" -endseg - -beginseg - name "ovl_En_Fr" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fr/z_en_fr.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fr/ovl_En_Fr_reloc.o" -endseg - -beginseg - name "ovl_En_Fu" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fu/z_en_fu.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fu/ovl_En_Fu_reloc.o" -endseg - -beginseg - name "ovl_En_Fw" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fw/z_en_fw.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fw/ovl_En_Fw_reloc.o" -endseg - -beginseg - name "ovl_En_Fz" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fz/z_en_fz.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fz/ovl_En_Fz_reloc.o" -endseg - -beginseg - name "ovl_En_G_Switch" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_G_Switch/z_en_g_switch.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_G_Switch/ovl_En_G_Switch_reloc.o" -endseg - -beginseg - name "ovl_En_Ganon_Mant" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ganon_Mant/z_en_ganon_mant.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ganon_Mant/ovl_En_Ganon_Mant_reloc.o" -endseg - -beginseg - name "ovl_En_Ganon_Organ" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ganon_Organ/z_en_ganon_organ.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ganon_Organ/ovl_En_Ganon_Organ_reloc.o" -endseg - -beginseg - name "ovl_En_Gb" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Gb/z_en_gb.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Gb/ovl_En_Gb_reloc.o" -endseg - -beginseg - name "ovl_En_Ge1" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ge1/z_en_ge1.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ge1/ovl_En_Ge1_reloc.o" -endseg - -beginseg - name "ovl_En_Ge2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ge2/z_en_ge2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ge2/ovl_En_Ge2_reloc.o" -endseg - -beginseg - name "ovl_En_Ge3" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ge3/z_en_ge3.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ge3/ovl_En_Ge3_reloc.o" -endseg - -beginseg - name "ovl_En_GeldB" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_GeldB/z_en_geldb.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_GeldB/ovl_En_GeldB_reloc.o" -endseg - -beginseg - name "ovl_En_GirlA" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_GirlA/z_en_girla.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_GirlA/ovl_En_GirlA_reloc.o" -endseg - -beginseg - name "ovl_En_Gm" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Gm/z_en_gm.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Gm/ovl_En_Gm_reloc.o" -endseg - -beginseg - name "ovl_En_Go" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Go/z_en_go.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Go/ovl_En_Go_reloc.o" -endseg - -beginseg - name "ovl_En_Go2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Go2/z_en_go2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Go2/ovl_En_Go2_reloc.o" -endseg - -beginseg - name "ovl_En_Goma" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Goma/z_en_goma.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Goma/ovl_En_Goma_reloc.o" -endseg - -beginseg - name "ovl_En_Goroiwa" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Goroiwa/ovl_En_Goroiwa_reloc.o" -endseg - -beginseg - name "ovl_En_Gs" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Gs/z_en_gs.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Gs/ovl_En_Gs_reloc.o" -endseg - -beginseg - name "ovl_En_Guest" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Guest/z_en_guest.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Guest/ovl_En_Guest_reloc.o" -endseg - -beginseg - name "ovl_En_Hata" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hata/z_en_hata.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hata/ovl_En_Hata_reloc.o" -endseg - -beginseg - name "ovl_En_Heishi1" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi1/z_en_heishi1.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi1/ovl_En_Heishi1_reloc.o" -endseg - -beginseg - name "ovl_En_Heishi2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi2/z_en_heishi2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi2/ovl_En_Heishi2_reloc.o" -endseg - -beginseg - name "ovl_En_Heishi3" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi3/ovl_En_Heishi3_reloc.o" -endseg - -beginseg - name "ovl_En_Heishi4" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi4/z_en_heishi4.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi4/ovl_En_Heishi4_reloc.o" -endseg - -beginseg - name "ovl_En_Hintnuts" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hintnuts/z_en_hintnuts.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hintnuts/ovl_En_Hintnuts_reloc.o" -endseg - -beginseg - name "ovl_En_Holl" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Holl/z_en_holl.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Holl/ovl_En_Holl_reloc.o" -endseg - -beginseg - name "ovl_En_Honotrap" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Honotrap/z_en_honotrap.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Honotrap/ovl_En_Honotrap_reloc.o" -endseg - -beginseg - name "ovl_En_Horse" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse/z_en_horse.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse/ovl_En_Horse_reloc.o" -endseg - -beginseg - name "ovl_En_Horse_Game_Check" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Game_Check/ovl_En_Horse_Game_Check_reloc.o" -endseg - -beginseg - name "ovl_En_Horse_Ganon" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Ganon/z_en_horse_ganon.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Ganon/ovl_En_Horse_Ganon_reloc.o" -endseg - -beginseg - name "ovl_En_Horse_Link_Child" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Link_Child/z_en_horse_link_child.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Link_Child/ovl_En_Horse_Link_Child_reloc.o" -endseg - -beginseg - name "ovl_En_Horse_Normal" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Normal/z_en_horse_normal.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Normal/ovl_En_Horse_Normal_reloc.o" -endseg - -beginseg - name "ovl_En_Horse_Zelda" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Zelda/z_en_horse_zelda.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Zelda/ovl_En_Horse_Zelda_reloc.o" -endseg - -beginseg - name "ovl_En_Hs" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hs/z_en_hs.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hs/ovl_En_Hs_reloc.o" -endseg - -beginseg - name "ovl_En_Hs2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hs2/z_en_hs2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hs2/ovl_En_Hs2_reloc.o" -endseg - -beginseg - name "ovl_En_Hy" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hy/z_en_hy.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hy/ovl_En_Hy_reloc.o" -endseg - -beginseg - name "ovl_En_Ice_Hono" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ice_Hono/z_en_ice_hono.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ice_Hono/ovl_En_Ice_Hono_reloc.o" -endseg - -beginseg - name "ovl_En_Ik" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ik/z_en_ik.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ik/ovl_En_Ik_reloc.o" -endseg - -beginseg - name "ovl_En_In" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_In/z_en_in.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_In/ovl_En_In_reloc.o" -endseg - -beginseg - name "ovl_En_Insect" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Insect/z_en_insect.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Insect/ovl_En_Insect_reloc.o" -endseg - -beginseg - name "ovl_En_Ishi" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ishi/z_en_ishi.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ishi/ovl_En_Ishi_reloc.o" -endseg - -beginseg - name "ovl_En_It" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_It/z_en_it.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_It/ovl_En_It_reloc.o" -endseg - -beginseg - name "ovl_En_Jj" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Jj/z_en_jj.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Jj/ovl_En_Jj_reloc.o" -endseg - -beginseg - name "ovl_En_Js" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Js/z_en_js.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Js/ovl_En_Js_reloc.o" -endseg - -beginseg - name "ovl_En_Jsjutan" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Jsjutan/z_en_jsjutan.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Jsjutan/ovl_En_Jsjutan_reloc.o" -endseg - -beginseg - name "ovl_En_Kakasi" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kakasi/ovl_En_Kakasi_reloc.o" -endseg - -beginseg - name "ovl_En_Kakasi2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kakasi2/z_en_kakasi2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kakasi2/ovl_En_Kakasi2_reloc.o" -endseg - -beginseg - name "ovl_En_Kakasi3" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kakasi3/z_en_kakasi3.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kakasi3/ovl_En_Kakasi3_reloc.o" -endseg - -beginseg - name "ovl_En_Kanban" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kanban/z_en_kanban.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kanban/ovl_En_Kanban_reloc.o" -endseg - -beginseg - name "ovl_En_Karebaba" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Karebaba/z_en_karebaba.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Karebaba/ovl_En_Karebaba_reloc.o" -endseg - -beginseg - name "ovl_En_Ko" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ko/z_en_ko.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ko/ovl_En_Ko_reloc.o" -endseg - -beginseg - name "ovl_En_Kusa" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kusa/z_en_kusa.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kusa/ovl_En_Kusa_reloc.o" -endseg - -beginseg - name "ovl_En_Kz" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kz/z_en_kz.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kz/ovl_En_Kz_reloc.o" -endseg - -beginseg - name "ovl_En_Light" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Light/z_en_light.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Light/ovl_En_Light_reloc.o" -endseg - -beginseg - name "ovl_En_Lightbox" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Lightbox/z_en_lightbox.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Lightbox/ovl_En_Lightbox_reloc.o" -endseg - -beginseg - name "ovl_En_M_Fire1" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_M_Fire1/z_en_m_fire1.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_M_Fire1/ovl_En_M_Fire1_reloc.o" -endseg - -beginseg - name "ovl_En_M_Thunder" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_M_Thunder/ovl_En_M_Thunder_reloc.o" -endseg - -beginseg - name "ovl_En_Ma1" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ma1/z_en_ma1.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ma1/ovl_En_Ma1_reloc.o" -endseg - -beginseg - name "ovl_En_Ma2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ma2/z_en_ma2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ma2/ovl_En_Ma2_reloc.o" -endseg - -beginseg - name "ovl_En_Ma3" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ma3/z_en_ma3.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ma3/ovl_En_Ma3_reloc.o" -endseg - -beginseg - name "ovl_En_Mag" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mag/z_en_mag.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mag/ovl_En_Mag_reloc.o" -endseg - -beginseg - name "ovl_En_Mb" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mb/z_en_mb.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mb/ovl_En_Mb_reloc.o" -endseg - -beginseg - name "ovl_En_Md" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Md/z_en_md.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Md/ovl_En_Md_reloc.o" -endseg - -beginseg - name "ovl_En_Mk" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mk/z_en_mk.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mk/ovl_En_Mk_reloc.o" -endseg - -beginseg - name "ovl_En_Mm" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mm/z_en_mm.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mm/ovl_En_Mm_reloc.o" -endseg - -beginseg - name "ovl_En_Mm2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mm2/z_en_mm2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mm2/ovl_En_Mm2_reloc.o" -endseg - -beginseg - name "ovl_En_Ms" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ms/z_en_ms.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ms/ovl_En_Ms_reloc.o" -endseg - -beginseg - name "ovl_En_Mu" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mu/z_en_mu.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mu/ovl_En_Mu_reloc.o" -endseg - -beginseg - name "ovl_En_Nb" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Nb/z_en_nb.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Nb/ovl_En_Nb_reloc.o" -endseg - -beginseg - name "ovl_En_Niw" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Niw/z_en_niw.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Niw/ovl_En_Niw_reloc.o" -endseg - -beginseg - name "ovl_En_Niw_Girl" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Niw_Girl/z_en_niw_girl.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Niw_Girl/ovl_En_Niw_Girl_reloc.o" -endseg - -beginseg - name "ovl_En_Niw_Lady" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Niw_Lady/ovl_En_Niw_Lady_reloc.o" -endseg - -beginseg - name "ovl_En_Nutsball" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Nutsball/z_en_nutsball.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Nutsball/ovl_En_Nutsball_reloc.o" -endseg - -beginseg - name "ovl_En_Nwc" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Nwc/z_en_nwc.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Nwc/ovl_En_Nwc_reloc.o" -endseg - -beginseg - name "ovl_En_Ny" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ny/z_en_ny.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ny/ovl_En_Ny_reloc.o" -endseg - -beginseg - name "ovl_En_OE2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_OE2/z_en_oe2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_OE2/ovl_En_OE2_reloc.o" -endseg - -beginseg - name "ovl_En_Okarina_Effect" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Okarina_Effect/z_en_okarina_effect.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Okarina_Effect/ovl_En_Okarina_Effect_reloc.o" -endseg - -beginseg - name "ovl_En_Okarina_Tag" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag_cutscene_data.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Okarina_Tag/ovl_En_Okarina_Tag_reloc.o" -endseg - -beginseg - name "ovl_En_Okuta" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Okuta/z_en_okuta.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Okuta/ovl_En_Okuta_reloc.o" -endseg - -beginseg - name "ovl_En_Ossan" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ossan/z_en_ossan.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ossan/ovl_En_Ossan_reloc.o" -endseg - -beginseg - name "ovl_En_Owl" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Owl/z_en_owl.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Owl/ovl_En_Owl_reloc.o" -endseg - -beginseg - name "ovl_En_Part" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Part/z_en_part.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Part/ovl_En_Part_reloc.o" -endseg - -beginseg - name "ovl_En_Peehat" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Peehat/z_en_peehat.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Peehat/ovl_En_Peehat_reloc.o" -endseg - -beginseg - name "ovl_En_Po_Desert" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Desert/z_en_po_desert.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Desert/ovl_En_Po_Desert_reloc.o" -endseg - -beginseg - name "ovl_En_Po_Field" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Field/z_en_po_field.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Field/ovl_En_Po_Field_reloc.o" -endseg - -beginseg - name "ovl_En_Po_Relay" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Relay/ovl_En_Po_Relay_reloc.o" -endseg - -beginseg - name "ovl_En_Po_Sisters" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Sisters/ovl_En_Po_Sisters_reloc.o" -endseg - -beginseg - name "ovl_En_Poh" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Poh/z_en_poh.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Poh/ovl_En_Poh_reloc.o" -endseg - -beginseg - name "ovl_En_Pu_box" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Pu_box/z_en_pu_box.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Pu_box/ovl_En_Pu_box_reloc.o" -endseg - -beginseg - name "ovl_En_Rd" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Rd/z_en_rd.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Rd/ovl_En_Rd_reloc.o" -endseg - -beginseg - name "ovl_En_Reeba" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Reeba/z_en_reeba.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Reeba/ovl_En_Reeba_reloc.o" -endseg - -beginseg - name "ovl_En_River_Sound" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_River_Sound/z_en_river_sound.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_River_Sound/ovl_En_River_Sound_reloc.o" -endseg - -beginseg - name "ovl_En_Rl" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Rl/z_en_rl.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Rl/ovl_En_Rl_reloc.o" -endseg - -beginseg - name "ovl_En_Rr" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Rr/z_en_rr.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Rr/ovl_En_Rr_reloc.o" -endseg - -beginseg - name "ovl_En_Ru1" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ru1/z_en_ru1.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ru1/ovl_En_Ru1_reloc.o" -endseg - -beginseg - name "ovl_En_Ru2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ru2/z_en_ru2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ru2/ovl_En_Ru2_reloc.o" -endseg - -beginseg - name "ovl_En_Sa" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sa/z_en_sa.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sa/ovl_En_Sa_reloc.o" -endseg - -beginseg - name "ovl_En_Sb" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sb/z_en_sb.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sb/ovl_En_Sb_reloc.o" -endseg - -beginseg - name "ovl_En_Scene_Change" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Scene_Change/z_en_scene_change.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Scene_Change/ovl_En_Scene_Change_reloc.o" -endseg - -beginseg - name "ovl_En_Sda" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sda/z_en_sda.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sda/ovl_En_Sda_reloc.o" -endseg - -beginseg - name "ovl_En_Shopnuts" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Shopnuts/z_en_shopnuts.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Shopnuts/ovl_En_Shopnuts_reloc.o" -endseg - -beginseg - name "ovl_En_Si" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Si/z_en_si.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Si/ovl_En_Si_reloc.o" -endseg - -beginseg - name "ovl_En_Siofuki" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Siofuki/z_en_siofuki.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Siofuki/ovl_En_Siofuki_reloc.o" -endseg - -beginseg - name "ovl_En_Skb" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Skb/z_en_skb.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Skb/ovl_En_Skb_reloc.o" -endseg - -beginseg - name "ovl_En_Skj" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Skj/z_en_skj.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Skj/ovl_En_Skj_reloc.o" -endseg - -beginseg - name "ovl_En_Skjneedle" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Skjneedle/z_en_skjneedle.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Skjneedle/ovl_En_Skjneedle_reloc.o" -endseg - -beginseg - name "ovl_En_Ssh" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ssh/z_en_ssh.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ssh/ovl_En_Ssh_reloc.o" -endseg - -beginseg - name "ovl_En_St" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_St/z_en_st.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_St/ovl_En_St_reloc.o" -endseg - -beginseg - name "ovl_En_Sth" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sth/z_en_sth.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sth/ovl_En_Sth_reloc.o" -endseg - -beginseg - name "ovl_En_Stream" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Stream/z_en_stream.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Stream/ovl_En_Stream_reloc.o" -endseg - -beginseg - name "ovl_En_Sw" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sw/z_en_sw.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sw/ovl_En_Sw_reloc.o" -endseg - -beginseg - name "ovl_En_Syateki_Itm" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Syateki_Itm/z_en_syateki_itm.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Syateki_Itm/ovl_En_Syateki_Itm_reloc.o" -endseg - -beginseg - name "ovl_En_Syateki_Man" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Syateki_Man/ovl_En_Syateki_Man_reloc.o" -endseg - -beginseg - name "ovl_En_Syateki_Niw" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Syateki_Niw/z_en_syateki_niw.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Syateki_Niw/ovl_En_Syateki_Niw_reloc.o" -endseg - -beginseg - name "ovl_En_Ta" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ta/z_en_ta.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ta/ovl_En_Ta_reloc.o" -endseg - -beginseg - name "ovl_En_Takara_Man" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Takara_Man/z_en_takara_man.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Takara_Man/ovl_En_Takara_Man_reloc.o" -endseg - -beginseg - name "ovl_En_Tana" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tana/z_en_tana.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tana/ovl_En_Tana_reloc.o" -endseg - -beginseg - name "ovl_En_Tg" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tg/z_en_tg.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tg/ovl_En_Tg_reloc.o" -endseg - -beginseg - name "ovl_En_Tite" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tite/z_en_tite.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tite/ovl_En_Tite_reloc.o" -endseg - -beginseg - name "ovl_En_Tk" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tk/z_en_tk.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tk/ovl_En_Tk_reloc.o" -endseg - -beginseg - name "ovl_En_Torch" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Torch/z_en_torch.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Torch/ovl_En_Torch_reloc.o" -endseg - -beginseg - name "ovl_En_Torch2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Torch2/z_en_torch2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Torch2/ovl_En_Torch2_reloc.o" -endseg - -beginseg - name "ovl_En_Toryo" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Toryo/z_en_toryo.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Toryo/ovl_En_Toryo_reloc.o" -endseg - -beginseg - name "ovl_En_Tp" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tp/z_en_tp.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tp/ovl_En_Tp_reloc.o" -endseg - -beginseg - name "ovl_En_Tr" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tr/z_en_tr.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tr/ovl_En_Tr_reloc.o" -endseg - -beginseg - name "ovl_En_Trap" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Trap/z_en_trap.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Trap/ovl_En_Trap_reloc.o" -endseg - -beginseg - name "ovl_En_Tubo_Trap" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tubo_Trap/z_en_tubo_trap.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tubo_Trap/ovl_En_Tubo_Trap_reloc.o" -endseg - -beginseg - name "ovl_En_Vali" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vali/z_en_vali.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vali/ovl_En_Vali_reloc.o" -endseg - -beginseg - name "ovl_En_Vase" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vase/z_en_vase.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vase/ovl_En_Vase_reloc.o" -endseg - -beginseg - name "ovl_En_Vb_Ball" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vb_Ball/z_en_vb_ball.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vb_Ball/ovl_En_Vb_Ball_reloc.o" -endseg - -beginseg - name "ovl_En_Viewer" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Viewer/z_en_viewer.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Viewer/ovl_En_Viewer_reloc.o" -endseg - -beginseg - name "ovl_En_Vm" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vm/z_en_vm.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vm/ovl_En_Vm_reloc.o" -endseg - -beginseg - name "ovl_En_Wall_Tubo" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wall_Tubo/z_en_wall_tubo.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wall_Tubo/ovl_En_Wall_Tubo_reloc.o" -endseg - -beginseg - name "ovl_En_Wallmas" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wallmas/ovl_En_Wallmas_reloc.o" -endseg - -beginseg - name "ovl_En_Weather_Tag" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Weather_Tag/ovl_En_Weather_Tag_reloc.o" -endseg - -beginseg - name "ovl_En_Weiyer" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Weiyer/z_en_weiyer.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Weiyer/ovl_En_Weiyer_reloc.o" -endseg - -beginseg - name "ovl_En_Wf" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wf/z_en_wf.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wf/ovl_En_Wf_reloc.o" -endseg - -beginseg - name "ovl_En_Wonder_Item" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wonder_Item/z_en_wonder_item.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wonder_Item/ovl_En_Wonder_Item_reloc.o" -endseg - -beginseg - name "ovl_En_Wonder_Talk" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wonder_Talk/z_en_wonder_talk.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wonder_Talk/ovl_En_Wonder_Talk_reloc.o" -endseg - -beginseg - name "ovl_En_Wonder_Talk2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wonder_Talk2/z_en_wonder_talk2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wonder_Talk2/ovl_En_Wonder_Talk2_reloc.o" -endseg - -beginseg - name "ovl_En_Wood02" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wood02/z_en_wood02.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wood02/ovl_En_Wood02_reloc.o" -endseg - -beginseg - name "ovl_En_Xc" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Xc/z_en_xc.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Xc/ovl_En_Xc_reloc.o" -endseg - -beginseg - name "ovl_En_Yabusame_Mark" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Yabusame_Mark/z_en_yabusame_mark.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Yabusame_Mark/ovl_En_Yabusame_Mark_reloc.o" -endseg - -beginseg - name "ovl_En_Yukabyun" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Yukabyun/z_en_yukabyun.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Yukabyun/ovl_En_Yukabyun_reloc.o" -endseg - -beginseg - name "ovl_En_Zf" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zf/z_en_zf.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zf/ovl_En_Zf_reloc.o" -endseg - -beginseg - name "ovl_En_Zl1" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl1/z_en_zl1_cutscene_data.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl1/z_en_zl1.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl1/ovl_En_Zl1_reloc.o" -endseg - -beginseg - name "ovl_En_Zl2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl2/z_en_zl2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl2/ovl_En_Zl2_reloc.o" -endseg - -beginseg - name "ovl_En_Zl3" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl3/z_en_zl3.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl3/ovl_En_Zl3_reloc.o" -endseg - -beginseg - name "ovl_En_Zl4" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl4/z_en_zl4.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl4/ovl_En_Zl4_reloc.o" -endseg - -beginseg - name "ovl_En_Zo" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zo/z_en_zo.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zo/ovl_En_Zo_reloc.o" -endseg - -beginseg - name "ovl_En_fHG" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_fHG/z_en_fhg.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_En_fHG/ovl_En_fHG_reloc.o" -endseg - -beginseg - name "ovl_End_Title" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_End_Title/z_end_title.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_End_Title/ovl_End_Title_reloc.o" -endseg - -beginseg - name "ovl_Fishing" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Fishing/z_fishing.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Fishing/ovl_Fishing_reloc.o" -endseg - -beginseg - name "ovl_Item_B_Heart" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_B_Heart/z_item_b_heart.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_B_Heart/ovl_Item_B_Heart_reloc.o" -endseg - -beginseg - name "ovl_Item_Etcetera" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Etcetera/z_item_etcetera.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Etcetera/ovl_Item_Etcetera_reloc.o" -endseg - -beginseg - name "ovl_Item_Inbox" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Inbox/z_item_inbox.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Inbox/ovl_Item_Inbox_reloc.o" -endseg - -beginseg - name "ovl_Item_Ocarina" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Ocarina/z_item_ocarina.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Ocarina/ovl_Item_Ocarina_reloc.o" -endseg - -beginseg - name "ovl_Item_Shield" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Shield/z_item_shield.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Shield/ovl_Item_Shield_reloc.o" -endseg - -beginseg - name "ovl_Magic_Dark" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Magic_Dark/z_magic_dark.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Magic_Dark/ovl_Magic_Dark_reloc.o" -endseg - -beginseg - name "ovl_Magic_Fire" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Magic_Fire/z_magic_fire.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Magic_Fire/ovl_Magic_Fire_reloc.o" -endseg - -beginseg - name "ovl_Magic_Wind" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Magic_Wind/z_magic_wind.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Magic_Wind/ovl_Magic_Wind_reloc.o" -endseg - -beginseg - name "ovl_Mir_Ray" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Mir_Ray/z_mir_ray.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Mir_Ray/ovl_Mir_Ray_reloc.o" -endseg - -beginseg - name "ovl_Obj_Bean" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Bean/ovl_Obj_Bean_reloc.o" -endseg - -beginseg - name "ovl_Obj_Blockstop" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Blockstop/z_obj_blockstop.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Blockstop/ovl_Obj_Blockstop_reloc.o" -endseg - -beginseg - name "ovl_Obj_Bombiwa" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Bombiwa/z_obj_bombiwa.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Bombiwa/ovl_Obj_Bombiwa_reloc.o" -endseg - -beginseg - name "ovl_Obj_Comb" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Comb/ovl_Obj_Comb_reloc.o" -endseg - -beginseg - name "ovl_Obj_Dekujr" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Dekujr/z_obj_dekujr.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Dekujr/ovl_Obj_Dekujr_reloc.o" -endseg - -beginseg - name "ovl_Obj_Elevator" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Elevator/z_obj_elevator.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Elevator/ovl_Obj_Elevator_reloc.o" -endseg - -beginseg - name "ovl_Obj_Hamishi" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Hamishi/z_obj_hamishi.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Hamishi/ovl_Obj_Hamishi_reloc.o" -endseg - -beginseg - name "ovl_Obj_Hana" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Hana/z_obj_hana.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Hana/ovl_Obj_Hana_reloc.o" -endseg - -beginseg - name "ovl_Obj_Hsblock" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Hsblock/z_obj_hsblock.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Hsblock/ovl_Obj_Hsblock_reloc.o" -endseg - -beginseg - name "ovl_Obj_Ice_Poly" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Ice_Poly/z_obj_ice_poly.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Ice_Poly/ovl_Obj_Ice_Poly_reloc.o" -endseg - -beginseg - name "ovl_Obj_Kibako" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Kibako/z_obj_kibako.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Kibako/ovl_Obj_Kibako_reloc.o" -endseg - -beginseg - name "ovl_Obj_Kibako2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Kibako2/z_obj_kibako2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Kibako2/ovl_Obj_Kibako2_reloc.o" -endseg - -beginseg - name "ovl_Obj_Lift" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Lift/z_obj_lift.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Lift/ovl_Obj_Lift_reloc.o" -endseg - -beginseg - name "ovl_Obj_Lightswitch" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Lightswitch/z_obj_lightswitch.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Lightswitch/ovl_Obj_Lightswitch_reloc.o" -endseg - -beginseg - name "ovl_Obj_Makekinsuta" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Makekinsuta/z_obj_makekinsuta.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Makekinsuta/ovl_Obj_Makekinsuta_reloc.o" -endseg - -beginseg - name "ovl_Obj_Makeoshihiki" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Makeoshihiki/z_obj_makeoshihiki.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Makeoshihiki/ovl_Obj_Makeoshihiki_reloc.o" -endseg - -beginseg - name "ovl_Obj_Mure" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Mure/z_obj_mure.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Mure/ovl_Obj_Mure_reloc.o" -endseg - -beginseg - name "ovl_Obj_Mure2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Mure2/z_obj_mure2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Mure2/ovl_Obj_Mure2_reloc.o" -endseg - -beginseg - name "ovl_Obj_Mure3" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Mure3/z_obj_mure3.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Mure3/ovl_Obj_Mure3_reloc.o" -endseg - -beginseg - name "ovl_Obj_Oshihiki" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Oshihiki/z_obj_oshihiki.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Oshihiki/ovl_Obj_Oshihiki_reloc.o" -endseg - -beginseg - name "ovl_Obj_Roomtimer" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Roomtimer/ovl_Obj_Roomtimer_reloc.o" -endseg - -beginseg - name "ovl_Obj_Switch" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Switch/ovl_Obj_Switch_reloc.o" -endseg - -beginseg - name "ovl_Obj_Syokudai" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Syokudai/ovl_Obj_Syokudai_reloc.o" -endseg - -beginseg - name "ovl_Obj_Timeblock" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Timeblock/z_obj_timeblock.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Timeblock/ovl_Obj_Timeblock_reloc.o" -endseg - -beginseg - name "ovl_Obj_Tsubo" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Tsubo/ovl_Obj_Tsubo_reloc.o" -endseg - -beginseg - name "ovl_Obj_Warp2block" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Warp2block/z_obj_warp2block.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Warp2block/ovl_Obj_Warp2block_reloc.o" -endseg - -beginseg - name "ovl_Object_Kankyo" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Object_Kankyo/z_object_kankyo.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Object_Kankyo/ovl_Object_Kankyo_reloc.o" -endseg - -beginseg - name "ovl_Oceff_Spot" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Spot/z_oceff_spot.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Spot/ovl_Oceff_Spot_reloc.o" -endseg - -beginseg - name "ovl_Oceff_Storm" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Storm/z_oceff_storm.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Storm/ovl_Oceff_Storm_reloc.o" -endseg - -beginseg - name "ovl_Oceff_Wipe" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe/z_oceff_wipe.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe/ovl_Oceff_Wipe_reloc.o" -endseg - -beginseg - name "ovl_Oceff_Wipe2" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe2/z_oceff_wipe2.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe2/ovl_Oceff_Wipe2_reloc.o" -endseg - -beginseg - name "ovl_Oceff_Wipe3" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe3/z_oceff_wipe3.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe3/ovl_Oceff_Wipe3_reloc.o" -endseg - -beginseg - name "ovl_Oceff_Wipe4" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe4/z_oceff_wipe4.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe4/ovl_Oceff_Wipe4_reloc.o" -endseg - -beginseg - name "ovl_Shot_Sun" - compress - include "$(BUILD_DIR)/src/overlays/actors/ovl_Shot_Sun/z_shot_sun.o" - include "$(BUILD_DIR)/src/overlays/actors/ovl_Shot_Sun/ovl_Shot_Sun_reloc.o" -endseg - -#endif - -beginseg - name "gameplay_keep" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/gameplay_keep/gameplay_keep.o" - number 4 -endseg - -beginseg - name "gameplay_field_keep" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/gameplay_field_keep/gameplay_field_keep.o" - number 5 -endseg - -beginseg - name "gameplay_dangeon_keep" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/gameplay_dangeon_keep/gameplay_dangeon_keep.o" - number 5 -endseg - -beginseg - name "gameplay_object_exchange_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/baserom/gameplay_object_exchange_static.o" -endseg - -beginseg - name "object_link_boy" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_link_boy/object_link_boy.o" - number 6 -endseg - -beginseg - name "object_link_child" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_link_child/object_link_child.o" - number 6 -endseg - -beginseg - name "object_box" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_box/object_box.o" - number 6 -endseg - -beginseg - name "object_human" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_human/object_human.o" - number 6 -endseg - -beginseg - name "object_okuta" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_okuta/object_okuta.o" - number 6 -endseg - -beginseg - name "object_poh" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_poh/object_poh.o" - number 6 -endseg - -beginseg - name "object_wallmaster" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_wallmaster/object_wallmaster.o" - number 6 -endseg - -beginseg - name "object_dy_obj" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_dy_obj/object_dy_obj.o" - number 6 -endseg - -beginseg - name "object_firefly" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_firefly/object_firefly.o" - number 6 -endseg - -beginseg - name "object_dodongo" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_dodongo/object_dodongo.o" - number 6 -endseg - -beginseg - name "object_fire" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_fire/object_fire.o" - number 6 -endseg - -beginseg - name "object_niw" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_niw/object_niw.o" - number 6 -endseg - -beginseg - name "object_tite" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_tite/object_tite.o" - number 6 -endseg - -beginseg - name "object_reeba" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_reeba/object_reeba.o" - number 6 -endseg - -beginseg - name "object_peehat" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_peehat/object_peehat.o" - number 6 -endseg - -beginseg - name "object_kingdodongo" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_kingdodongo/object_kingdodongo.o" - number 6 -endseg - -beginseg - name "object_horse" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_horse/object_horse.o" - number 6 -endseg - -beginseg - name "object_zf" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_zf/object_zf.o" - number 6 -endseg - -beginseg - name "object_goma" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_goma/object_goma.o" - number 6 -endseg - -beginseg - name "object_zl1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_zl1/object_zl1.o" - number 6 -endseg - -beginseg - name "object_gol" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gol/object_gol.o" - number 6 -endseg - -beginseg - name "object_bubble" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_bubble/object_bubble.o" - number 6 -endseg - -beginseg - name "object_dodojr" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_dodojr/object_dodojr.o" - number 6 -endseg - -beginseg - name "object_torch2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_torch2/object_torch2.o" - number 6 -endseg - -beginseg - name "object_bl" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_bl/object_bl.o" - number 6 -endseg - -beginseg - name "object_tp" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_tp/object_tp.o" - number 6 -endseg - -beginseg - name "object_oA1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oA1/object_oA1.o" - number 6 -endseg - -beginseg - name "object_st" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_st/object_st.o" - number 6 -endseg - -beginseg - name "object_bw" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_bw/object_bw.o" - number 6 -endseg - -beginseg - name "object_ei" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ei/object_ei.o" - number 6 -endseg - -beginseg - name "object_horse_normal" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_horse_normal/object_horse_normal.o" - number 6 -endseg - -beginseg - name "object_oB1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oB1/object_oB1.o" - number 6 -endseg - -beginseg - name "object_o_anime" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_o_anime/object_o_anime.o" - number 6 -endseg - -beginseg - name "object_spot04_objects" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_spot04_objects/object_spot04_objects.o" - number 6 -endseg - -beginseg - name "object_ddan_objects" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ddan_objects/object_ddan_objects.o" - number 6 -endseg - -beginseg - name "object_hidan_objects" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_hidan_objects/object_hidan_objects.o" - number 6 -endseg - -beginseg - name "object_horse_ganon" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_horse_ganon/object_horse_ganon.o" - number 6 -endseg - -beginseg - name "object_oA2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oA2/object_oA2.o" - number 6 -endseg - -beginseg - name "object_spot00_objects" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_spot00_objects/object_spot00_objects.o" - number 6 -endseg - -beginseg - name "object_mb" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_mb/object_mb.o" - number 6 -endseg - -beginseg - name "object_bombf" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_bombf/object_bombf.o" - number 6 -endseg - -beginseg - name "object_sk2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_sk2/object_sk2.o" - number 6 -endseg - -beginseg - name "object_oE1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oE1/object_oE1.o" - number 6 -endseg - -beginseg - name "object_oE_anime" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oE_anime/object_oE_anime.o" - number 6 -endseg - -beginseg - name "object_oE2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oE2/object_oE2.o" - number 6 -endseg - -beginseg - name "object_ydan_objects" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ydan_objects/object_ydan_objects.o" - number 6 -endseg - -beginseg - name "object_gnd" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gnd/object_gnd.o" - number 6 -endseg - -beginseg - name "object_am" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_am/object_am.o" - number 6 -endseg - -beginseg - name "object_dekubaba" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_dekubaba/object_dekubaba.o" - number 6 -endseg - -beginseg - name "object_oA3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oA3/object_oA3.o" - number 6 -endseg - -beginseg - name "object_oA4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oA4/object_oA4.o" - number 6 -endseg - -beginseg - name "object_oA5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oA5/object_oA5.o" - number 6 -endseg - -beginseg - name "object_oA6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oA6/object_oA6.o" - number 6 -endseg - -beginseg - name "object_oA7" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oA7/object_oA7.o" - number 6 -endseg - -beginseg - name "object_jj" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_jj/object_jj.o" - number 6 -endseg - -beginseg - name "object_oA8" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oA8/object_oA8.o" - number 6 -endseg - -beginseg - name "object_oA9" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oA9/object_oA9.o" - number 6 -endseg - -beginseg - name "object_oB2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oB2/object_oB2.o" - number 6 -endseg - -beginseg - name "object_oB3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oB3/object_oB3.o" - number 6 -endseg - -beginseg - name "object_oB4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oB4/object_oB4.o" - number 6 -endseg - -beginseg - name "object_horse_zelda" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_horse_zelda/object_horse_zelda.o" - number 6 -endseg - -beginseg - name "object_opening_demo1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_opening_demo1/object_opening_demo1.o" - number 6 -endseg - -beginseg - name "object_warp1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_warp1/object_warp1.o" - number 6 -endseg - -beginseg - name "object_b_heart" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_b_heart/object_b_heart.o" - number 6 -endseg - -beginseg - name "object_dekunuts" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_dekunuts/object_dekunuts.o" - number 6 -endseg - -beginseg - name "object_oE3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oE3/object_oE3.o" - number 6 -endseg - -beginseg - name "object_oE4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oE4/object_oE4.o" - number 6 -endseg - -beginseg - name "object_menkuri_objects" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_menkuri_objects/object_menkuri_objects.o" - number 6 -endseg - -beginseg - name "object_oE5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oE5/object_oE5.o" - number 6 -endseg - -beginseg - name "object_oE6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oE6/object_oE6.o" - number 6 -endseg - -beginseg - name "object_oE7" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oE7/object_oE7.o" - number 6 -endseg - -beginseg - name "object_oE8" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oE8/object_oE8.o" - number 6 -endseg - -beginseg - name "object_oE9" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oE9/object_oE9.o" - number 6 -endseg - -beginseg - name "object_oE10" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oE10/object_oE10.o" - number 6 -endseg - -beginseg - name "object_oE11" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oE11/object_oE11.o" - number 6 -endseg - -beginseg - name "object_oE12" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oE12/object_oE12.o" - number 6 -endseg - -beginseg - name "object_vali" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_vali/object_vali.o" - number 6 -endseg - -beginseg - name "object_oA10" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oA10/object_oA10.o" - number 6 -endseg - -beginseg - name "object_oA11" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oA11/object_oA11.o" - number 6 -endseg - -beginseg - name "object_mizu_objects" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_mizu_objects/object_mizu_objects.o" - number 6 -endseg - -beginseg - name "object_fhg" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_fhg/object_fhg.o" - number 6 -endseg - -beginseg - name "object_ossan" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ossan/object_ossan.o" - number 6 -endseg - -beginseg - name "object_mori_hineri1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_mori_hineri1/object_mori_hineri1.o" - number 6 -endseg - -beginseg - name "object_Bb" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_Bb/object_Bb.o" - number 6 -endseg - -beginseg - name "object_toki_objects" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_toki_objects/object_toki_objects.o" - number 6 -endseg - -beginseg - name "object_yukabyun" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_yukabyun/object_yukabyun.o" - number 6 -endseg - -beginseg - name "object_zl2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_zl2/object_zl2.o" - number 6 -endseg - -beginseg - name "object_mjin" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_mjin/object_mjin.o" - number 6 -endseg - -beginseg - name "object_mjin_flash" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_mjin_flash/object_mjin_flash.o" - number 6 -endseg - -beginseg - name "object_mjin_dark" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_mjin_dark/object_mjin_dark.o" - number 6 -endseg - -beginseg - name "object_mjin_flame" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_mjin_flame/object_mjin_flame.o" - number 6 -endseg - -beginseg - name "object_mjin_ice" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_mjin_ice/object_mjin_ice.o" - number 6 -endseg - -beginseg - name "object_mjin_soul" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_mjin_soul/object_mjin_soul.o" - number 6 -endseg - -beginseg - name "object_mjin_wind" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_mjin_wind/object_mjin_wind.o" - number 6 -endseg - -beginseg - name "object_mjin_oka" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_mjin_oka/object_mjin_oka.o" - number 6 -endseg - -beginseg - name "object_haka_objects" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_haka_objects/object_haka_objects.o" - number 6 -endseg - -beginseg - name "object_spot06_objects" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_spot06_objects/object_spot06_objects.o" - number 6 -endseg - -beginseg - name "object_ice_objects" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ice_objects/object_ice_objects.o" - number 6 -endseg - -beginseg - name "object_relay_objects" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_relay_objects/object_relay_objects.o" - number 6 -endseg - -beginseg - name "object_mori_hineri1a" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_mori_hineri1a/object_mori_hineri1a.o" - number 6 -endseg - -beginseg - name "object_mori_hineri2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_mori_hineri2/object_mori_hineri2.o" - number 6 -endseg - -beginseg - name "object_mori_hineri2a" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_mori_hineri2a/object_mori_hineri2a.o" - number 6 -endseg - -beginseg - name "object_mori_objects" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_mori_objects/object_mori_objects.o" - number 6 -endseg - -beginseg - name "object_mori_tex" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_mori_tex/object_mori_tex.o" - number 8 -endseg - -beginseg - name "object_spot08_obj" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_spot08_obj/object_spot08_obj.o" - number 6 -endseg - -beginseg - name "object_warp2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_warp2/object_warp2.o" - number 6 -endseg - -beginseg - name "object_hata" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_hata/object_hata.o" - number 6 -endseg - -beginseg - name "object_bird" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_bird/object_bird.o" - number 6 -endseg - -beginseg - name "object_wood02" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_wood02/object_wood02.o" - number 6 -endseg - -beginseg - name "object_lightbox" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_lightbox/object_lightbox.o" - number 6 -endseg - -beginseg - name "object_pu_box" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_pu_box/object_pu_box.o" - number 6 -endseg - -beginseg - name "object_trap" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_trap/object_trap.o" - number 6 -endseg - -beginseg - name "object_vase" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_vase/object_vase.o" - number 6 -endseg - -beginseg - name "object_im" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_im/object_im.o" - number 6 -endseg - -beginseg - name "object_ta" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ta/object_ta.o" - number 6 -endseg - -beginseg - name "object_tk" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_tk/object_tk.o" - number 6 -endseg - -beginseg - name "object_xc" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_xc/object_xc.o" - number 6 -endseg - -beginseg - name "object_vm" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_vm/object_vm.o" - number 6 -endseg - -beginseg - name "object_bv" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_bv/object_bv.o" - number 6 -endseg - -beginseg - name "object_hakach_objects" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_hakach_objects/object_hakach_objects.o" - number 6 -endseg - -beginseg - name "object_efc_crystal_light" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_efc_crystal_light/object_efc_crystal_light.o" - number 6 -endseg - -beginseg - name "object_efc_fire_ball" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_efc_fire_ball/object_efc_fire_ball.o" - number 6 -endseg - -beginseg - name "object_efc_flash" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_efc_flash/object_efc_flash.o" - number 6 -endseg - -beginseg - name "object_efc_lgt_shower" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_efc_lgt_shower/object_efc_lgt_shower.o" - number 6 -endseg - -beginseg - name "object_efc_star_field" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_efc_star_field/object_efc_star_field.o" - number 6 -endseg - -beginseg - name "object_god_lgt" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_god_lgt/object_god_lgt.o" - number 6 -endseg - -beginseg - name "object_light_ring" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_light_ring/object_light_ring.o" - number 6 -endseg - -beginseg - name "object_triforce_spot" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_triforce_spot/object_triforce_spot.o" - number 6 -endseg - -beginseg - name "object_medal" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_medal/object_medal.o" - number 6 -endseg - -beginseg - name "object_bdan_objects" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_bdan_objects/object_bdan_objects.o" - number 6 -endseg - -beginseg - name "object_sd" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_sd/object_sd.o" - number 6 -endseg - -beginseg - name "object_rd" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_rd/object_rd.o" - number 6 -endseg - -beginseg - name "object_po_sisters" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_po_sisters/object_po_sisters.o" - number 6 -endseg - -beginseg - name "object_heavy_object" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_heavy_object/object_heavy_object.o" - number 6 -endseg - -beginseg - name "object_gndd" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gndd/object_gndd.o" - number 6 -endseg - -beginseg - name "object_fd" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_fd/object_fd.o" - number 6 -endseg - -beginseg - name "object_du" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_du/object_du.o" - number 6 -endseg - -beginseg - name "object_fw" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_fw/object_fw.o" - number 6 -endseg - -beginseg - name "object_horse_link_child" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_horse_link_child/object_horse_link_child.o" - number 6 -endseg - -beginseg - name "object_spot02_objects" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_spot02_objects/object_spot02_objects.o" - number 6 -endseg - -beginseg - name "object_haka" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_haka/object_haka.o" - number 6 -endseg - -beginseg - name "object_ru1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ru1/object_ru1.o" - number 6 -endseg - -beginseg - name "object_syokudai" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_syokudai/object_syokudai.o" - number 6 -endseg - -beginseg - name "object_fd2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_fd2/object_fd2.o" - number 6 -endseg - -beginseg - name "object_dh" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_dh/object_dh.o" - number 6 -endseg - -beginseg - name "object_rl" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_rl/object_rl.o" - number 6 -endseg - -beginseg - name "object_efc_tw" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_efc_tw/object_efc_tw.o" - number 6 -endseg - -beginseg - name "object_demo_tre_lgt" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_demo_tre_lgt/object_demo_tre_lgt.o" - number 6 -endseg - -beginseg - name "object_gi_key" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_key/object_gi_key.o" - number 6 -endseg - -beginseg - name "object_mir_ray" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_mir_ray/object_mir_ray.o" - number 6 -endseg - -beginseg - name "object_brob" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_brob/object_brob.o" - number 6 -endseg - -beginseg - name "object_gi_jewel" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_jewel/object_gi_jewel.o" - number 6 -endseg - -beginseg - name "object_spot09_obj" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_spot09_obj/object_spot09_obj.o" - number 6 -endseg - -beginseg - name "object_spot18_obj" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_spot18_obj/object_spot18_obj.o" - number 6 -endseg - -beginseg - name "object_bdoor" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_bdoor/object_bdoor.o" - number 6 -endseg - -beginseg - name "object_spot17_obj" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_spot17_obj/object_spot17_obj.o" - number 6 -endseg - -beginseg - name "object_shop_dungen" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_shop_dungen/object_shop_dungen.o" - number 6 -endseg - -beginseg - name "object_nb" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_nb/object_nb.o" - number 6 -endseg - -beginseg - name "object_mo" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_mo/object_mo.o" - number 6 -endseg - -beginseg - name "object_sb" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_sb/object_sb.o" - number 6 -endseg - -beginseg - name "object_gi_melody" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_melody/object_gi_melody.o" - number 6 -endseg - -beginseg - name "object_gi_heart" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_heart/object_gi_heart.o" - number 6 -endseg - -beginseg - name "object_gi_compass" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_compass/object_gi_compass.o" - number 6 -endseg - -beginseg - name "object_gi_bosskey" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_bosskey/object_gi_bosskey.o" - number 6 -endseg - -beginseg - name "object_gi_medal" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_medal/object_gi_medal.o" - number 6 -endseg - -beginseg - name "object_gi_nuts" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_nuts/object_gi_nuts.o" - number 6 -endseg - -beginseg - name "object_sa" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_sa/object_sa.o" - number 6 -endseg - -beginseg - name "object_gi_hearts" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_hearts/object_gi_hearts.o" - number 6 -endseg - -beginseg - name "object_gi_arrowcase" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_arrowcase/object_gi_arrowcase.o" - number 6 -endseg - -beginseg - name "object_gi_bombpouch" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_bombpouch/object_gi_bombpouch.o" - number 6 -endseg - -beginseg - name "object_in" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_in/object_in.o" - number 6 -endseg - -beginseg - name "object_tr" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_tr/object_tr.o" - number 6 -endseg - -beginseg - name "object_spot16_obj" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_spot16_obj/object_spot16_obj.o" - number 6 -endseg - -beginseg - name "object_oE1s" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oE1s/object_oE1s.o" - number 6 -endseg - -beginseg - name "object_oE4s" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oE4s/object_oE4s.o" - number 6 -endseg - -beginseg - name "object_os_anime" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_os_anime/object_os_anime.o" - number 6 -endseg - -beginseg - name "object_gi_bottle" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_bottle/object_gi_bottle.o" - number 6 -endseg - -beginseg - name "object_gi_stick" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_stick/object_gi_stick.o" - number 6 -endseg - -beginseg - name "object_gi_map" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_map/object_gi_map.o" - number 6 -endseg - -beginseg - name "object_oF1d_map" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oF1d_map/object_oF1d_map.o" - number 6 -endseg - -beginseg - name "object_ru2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ru2/object_ru2.o" - number 6 -endseg - -beginseg - name "object_gi_shield_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_shield_1/object_gi_shield_1.o" - number 6 -endseg - -beginseg - name "object_dekujr" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_dekujr/object_dekujr.o" - number 6 -endseg - -beginseg - name "object_gi_magicpot" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_magicpot/object_gi_magicpot.o" - number 6 -endseg - -beginseg - name "object_gi_bomb_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_bomb_1/object_gi_bomb_1.o" - number 6 -endseg - -beginseg - name "object_oF1s" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_oF1s/object_oF1s.o" - number 6 -endseg - -beginseg - name "object_ma2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ma2/object_ma2.o" - number 6 -endseg - -beginseg - name "object_gi_purse" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_purse/object_gi_purse.o" - number 6 -endseg - -beginseg - name "object_hni" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_hni/object_hni.o" - number 6 -endseg - -beginseg - name "object_tw" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_tw/object_tw.o" - number 6 -endseg - -beginseg - name "object_rr" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_rr/object_rr.o" - number 6 -endseg - -beginseg - name "object_bxa" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_bxa/object_bxa.o" - number 6 -endseg - -beginseg - name "object_anubice" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_anubice/object_anubice.o" - number 6 -endseg - -beginseg - name "object_gi_gerudo" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_gerudo/object_gi_gerudo.o" - number 6 -endseg - -beginseg - name "object_gi_arrow" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_arrow/object_gi_arrow.o" - number 6 -endseg - -beginseg - name "object_gi_bomb_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_bomb_2/object_gi_bomb_2.o" - number 6 -endseg - -beginseg - name "object_gi_egg" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_egg/object_gi_egg.o" - number 6 -endseg - -beginseg - name "object_gi_scale" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_scale/object_gi_scale.o" - number 6 -endseg - -beginseg - name "object_gi_shield_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_shield_2/object_gi_shield_2.o" - number 6 -endseg - -beginseg - name "object_gi_hookshot" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_hookshot/object_gi_hookshot.o" - number 6 -endseg - -beginseg - name "object_gi_ocarina" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_ocarina/object_gi_ocarina.o" - number 6 -endseg - -beginseg - name "object_gi_milk" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_milk/object_gi_milk.o" - number 6 -endseg - -beginseg - name "object_ma1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ma1/object_ma1.o" - number 6 -endseg - -beginseg - name "object_ganon" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ganon/object_ganon.o" - number 6 -endseg - -beginseg - name "object_sst" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_sst/object_sst.o" - number 6 -endseg - -beginseg - name "object_ny" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ny/object_ny.o" - number 6 -endseg - -beginseg - name "object_fr" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_fr/object_fr.o" - number 6 -endseg - -beginseg - name "object_gi_pachinko" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_pachinko/object_gi_pachinko.o" - number 6 -endseg - -beginseg - name "object_gi_boomerang" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_boomerang/object_gi_boomerang.o" - number 6 -endseg - -beginseg - name "object_gi_bow" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_bow/object_gi_bow.o" - number 6 -endseg - -beginseg - name "object_gi_glasses" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_glasses/object_gi_glasses.o" - number 6 -endseg - -beginseg - name "object_gi_liquid" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_liquid/object_gi_liquid.o" - number 6 -endseg - -beginseg - name "object_ani" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ani/object_ani.o" - number 6 -endseg - -beginseg - name "object_demo_6k" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_demo_6k/object_demo_6k.o" - number 6 -endseg - -beginseg - name "object_gi_shield_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_shield_3/object_gi_shield_3.o" - number 6 -endseg - -beginseg - name "object_gi_letter" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_letter/object_gi_letter.o" - number 6 -endseg - -beginseg - name "object_spot15_obj" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_spot15_obj/object_spot15_obj.o" - number 6 -endseg - -beginseg - name "object_jya_obj" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_jya_obj/object_jya_obj.o" - number 6 -endseg - -beginseg - name "object_gi_clothes" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_clothes/object_gi_clothes.o" - number 6 -endseg - -beginseg - name "object_gi_bean" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_bean/object_gi_bean.o" - number 6 -endseg - -beginseg - name "object_gi_fish" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_fish/object_gi_fish.o" - number 6 -endseg - -beginseg - name "object_gi_saw" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_saw/object_gi_saw.o" - number 6 -endseg - -beginseg - name "object_gi_hammer" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_hammer/object_gi_hammer.o" - number 6 -endseg - -beginseg - name "object_gi_grass" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_grass/object_gi_grass.o" - number 6 -endseg - -beginseg - name "object_gi_longsword" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_longsword/object_gi_longsword.o" - number 6 -endseg - -beginseg - name "object_spot01_objects" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_spot01_objects/object_spot01_objects.o" - number 6 -endseg - -beginseg - name "object_md" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_md/object_md.o" - number 6 -endseg - -beginseg - name "object_km1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_km1/object_km1.o" - number 6 -endseg - -beginseg - name "object_kw1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_kw1/object_kw1.o" - number 6 -endseg - -beginseg - name "object_zo" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_zo/object_zo.o" - number 6 -endseg - -beginseg - name "object_kz" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_kz/object_kz.o" - number 6 -endseg - -beginseg - name "object_umajump" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_umajump/object_umajump.o" - number 6 -endseg - -beginseg - name "object_masterkokiri" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_masterkokiri/object_masterkokiri.o" - number 6 -endseg - -beginseg - name "object_masterkokirihead" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_masterkokirihead/object_masterkokirihead.o" - number 6 -endseg - -beginseg - name "object_mastergolon" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_mastergolon/object_mastergolon.o" - number 6 -endseg - -beginseg - name "object_masterzoora" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_masterzoora/object_masterzoora.o" - number 6 -endseg - -beginseg - name "object_aob" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_aob/object_aob.o" - number 6 -endseg - -beginseg - name "object_ik" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ik/object_ik.o" - number 6 -endseg - -beginseg - name "object_ahg" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ahg/object_ahg.o" - number 6 -endseg - -beginseg - name "object_cne" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_cne/object_cne.o" - number 6 -endseg - -beginseg - name "object_gi_niwatori" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_niwatori/object_gi_niwatori.o" - number 6 -endseg - -beginseg - name "object_skj" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_skj/object_skj.o" - number 6 -endseg - -beginseg - name "object_gi_bottle_letter" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_bottle_letter/object_gi_bottle_letter.o" - number 6 -endseg - -beginseg - name "object_bji" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_bji/object_bji.o" - number 6 -endseg - -beginseg - name "object_bba" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_bba/object_bba.o" - number 6 -endseg - -beginseg - name "object_gi_ocarina_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_ocarina_0/object_gi_ocarina_0.o" - number 6 -endseg - -beginseg - name "object_ds" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ds/object_ds.o" - number 6 -endseg - -beginseg - name "object_ane" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ane/object_ane.o" - number 6 -endseg - -beginseg - name "object_boj" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_boj/object_boj.o" - number 6 -endseg - -beginseg - name "object_spot03_object" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_spot03_object/object_spot03_object.o" - number 6 -endseg - -beginseg - name "object_spot07_object" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_spot07_object/object_spot07_object.o" - number 6 -endseg - -beginseg - name "object_fz" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_fz/object_fz.o" - number 6 -endseg - -beginseg - name "object_bob" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_bob/object_bob.o" - number 6 -endseg - -beginseg - name "object_ge1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ge1/object_ge1.o" - number 6 -endseg - -beginseg - name "object_yabusame_point" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_yabusame_point/object_yabusame_point.o" - number 6 -endseg - -beginseg - name "object_gi_boots_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_boots_2/object_gi_boots_2.o" - number 6 -endseg - -beginseg - name "object_gi_seed" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_seed/object_gi_seed.o" - number 6 -endseg - -beginseg - name "object_gnd_magic" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gnd_magic/object_gnd_magic.o" - number 6 -endseg - -beginseg - name "object_d_elevator" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_d_elevator/object_d_elevator.o" - number 6 -endseg - -beginseg - name "object_d_hsblock" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_d_hsblock/object_d_hsblock.o" - number 6 -endseg - -beginseg - name "object_d_lift" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_d_lift/object_d_lift.o" - number 6 -endseg - -beginseg - name "object_mamenoki" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_mamenoki/object_mamenoki.o" - number 6 -endseg - -beginseg - name "object_goroiwa" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_goroiwa/object_goroiwa.o" - number 6 -endseg - -beginseg - name "object_toryo" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_toryo/object_toryo.o" - number 6 -endseg - -beginseg - name "object_daiku" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_daiku/object_daiku.o" - number 6 -endseg - -beginseg - name "object_nwc" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_nwc/object_nwc.o" - number 6 -endseg - -beginseg - name "object_blkobj" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_blkobj/object_blkobj.o" - number 6 -endseg - -beginseg - name "object_gm" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gm/object_gm.o" - number 6 -endseg - -beginseg - name "object_ms" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ms/object_ms.o" - number 6 -endseg - -beginseg - name "object_hs" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_hs/object_hs.o" - number 6 -endseg - -beginseg - name "object_ingate" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ingate/object_ingate.o" - number 6 -endseg - -beginseg - name "object_lightswitch" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_lightswitch/object_lightswitch.o" - number 6 -endseg - -beginseg - name "object_kusa" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_kusa/object_kusa.o" - number 6 -endseg - -beginseg - name "object_tsubo" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_tsubo/object_tsubo.o" - number 6 -endseg - -beginseg - name "object_gi_gloves" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_gloves/object_gi_gloves.o" - number 6 -endseg - -beginseg - name "object_gi_coin" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_coin/object_gi_coin.o" - number 6 -endseg - -beginseg - name "object_kanban" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_kanban/object_kanban.o" - number 6 -endseg - -beginseg - name "object_gjyo_objects" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gjyo_objects/object_gjyo_objects.o" - number 6 -endseg - -beginseg - name "object_owl" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_owl/object_owl.o" - number 6 -endseg - -beginseg - name "object_mk" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_mk/object_mk.o" - number 6 -endseg - -beginseg - name "object_fu" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_fu/object_fu.o" - number 6 -endseg - -beginseg - name "object_gi_ki_tan_mask" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_ki_tan_mask/object_gi_ki_tan_mask.o" - number 6 -endseg - -beginseg - name "object_gi_redead_mask" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_redead_mask/object_gi_redead_mask.o" - number 6 -endseg - -beginseg - name "object_gi_skj_mask" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_skj_mask/object_gi_skj_mask.o" - number 6 -endseg - -beginseg - name "object_gi_rabit_mask" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_rabit_mask/object_gi_rabit_mask.o" - number 6 -endseg - -beginseg - name "object_gi_truth_mask" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_truth_mask/object_gi_truth_mask.o" - number 6 -endseg - -beginseg - name "object_ganon_objects" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ganon_objects/object_ganon_objects.o" - number 6 -endseg - -beginseg - name "object_siofuki" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_siofuki/object_siofuki.o" - number 6 -endseg - -beginseg - name "object_stream" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_stream/object_stream.o" - number 6 -endseg - -beginseg - name "object_mm" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_mm/object_mm.o" - number 6 -endseg - -beginseg - name "object_fa" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_fa/object_fa.o" - number 6 -endseg - -beginseg - name "object_os" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_os/object_os.o" - number 6 -endseg - -beginseg - name "object_gi_eye_lotion" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_eye_lotion/object_gi_eye_lotion.o" - number 6 -endseg - -beginseg - name "object_gi_powder" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_powder/object_gi_powder.o" - number 6 -endseg - -beginseg - name "object_gi_mushroom" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_mushroom/object_gi_mushroom.o" - number 6 -endseg - -beginseg - name "object_gi_ticketstone" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_ticketstone/object_gi_ticketstone.o" - number 6 -endseg - -beginseg - name "object_gi_brokensword" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_brokensword/object_gi_brokensword.o" - number 6 -endseg - -beginseg - name "object_js" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_js/object_js.o" - number 6 -endseg - -beginseg - name "object_cs" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_cs/object_cs.o" - number 6 -endseg - -beginseg - name "object_gi_prescription" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_prescription/object_gi_prescription.o" - number 6 -endseg - -beginseg - name "object_gi_bracelet" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_bracelet/object_gi_bracelet.o" - number 6 -endseg - -beginseg - name "object_gi_soldout" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_soldout/object_gi_soldout.o" - number 6 -endseg - -beginseg - name "object_gi_frog" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_frog/object_gi_frog.o" - number 6 -endseg - -beginseg - name "object_mag" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_mag/object_mag.o" - number 6 -endseg - -beginseg - name "object_door_gerudo" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_door_gerudo/object_door_gerudo.o" - number 6 -endseg - -beginseg - name "object_gt" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gt/object_gt.o" - number 6 -endseg - -beginseg - name "object_efc_erupc" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_efc_erupc/object_efc_erupc.o" - number 6 -endseg - -beginseg - name "object_zl2_anime1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_zl2_anime1/object_zl2_anime1.o" - number 6 -endseg - -beginseg - name "object_zl2_anime2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_zl2_anime2/object_zl2_anime2.o" - number 6 -endseg - -beginseg - name "object_gi_golonmask" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_golonmask/object_gi_golonmask.o" - number 6 -endseg - -beginseg - name "object_gi_zoramask" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_zoramask/object_gi_zoramask.o" - number 6 -endseg - -beginseg - name "object_gi_gerudomask" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_gerudomask/object_gi_gerudomask.o" - number 6 -endseg - -beginseg - name "object_ganon2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ganon2/object_ganon2.o" - number 6 -endseg - -beginseg - name "object_ka" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ka/object_ka.o" - number 6 -endseg - -beginseg - name "object_ts" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ts/object_ts.o" - number 6 -endseg - -beginseg - name "object_zg" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_zg/object_zg.o" - number 6 -endseg - -beginseg - name "object_gi_hoverboots" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_hoverboots/object_gi_hoverboots.o" - number 6 -endseg - -beginseg - name "object_gi_m_arrow" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_m_arrow/object_gi_m_arrow.o" - number 6 -endseg - -beginseg - name "object_ds2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ds2/object_ds2.o" - number 6 -endseg - -beginseg - name "object_ec" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ec/object_ec.o" - number 6 -endseg - -beginseg - name "object_fish" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_fish/object_fish.o" - number 6 -endseg - -beginseg - name "object_gi_sutaru" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_sutaru/object_gi_sutaru.o" - number 6 -endseg - -beginseg - name "object_gi_goddess" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_goddess/object_gi_goddess.o" - number 6 -endseg - -beginseg - name "object_ssh" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ssh/object_ssh.o" - number 6 -endseg - -beginseg - name "object_bigokuta" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_bigokuta/object_bigokuta.o" - number 6 -endseg - -beginseg - name "object_bg" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_bg/object_bg.o" - number 6 -endseg - -beginseg - name "object_spot05_objects" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_spot05_objects/object_spot05_objects.o" - number 6 -endseg - -beginseg - name "object_spot12_obj" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_spot12_obj/object_spot12_obj.o" - number 6 -endseg - -beginseg - name "object_bombiwa" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_bombiwa/object_bombiwa.o" - number 6 -endseg - -beginseg - name "object_hintnuts" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_hintnuts/object_hintnuts.o" - number 6 -endseg - -beginseg - name "object_rs" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_rs/object_rs.o" - number 6 -endseg - -beginseg - name "object_spot00_break" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_spot00_break/object_spot00_break.o" - number 6 -endseg - -beginseg - name "object_gla" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gla/object_gla.o" - number 6 -endseg - -beginseg - name "object_shopnuts" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_shopnuts/object_shopnuts.o" - number 6 -endseg - -beginseg - name "object_geldb" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_geldb/object_geldb.o" - number 6 -endseg - -beginseg - name "object_gr" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gr/object_gr.o" - number 6 -endseg - -beginseg - name "object_dog" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_dog/object_dog.o" - number 6 -endseg - -beginseg - name "object_jya_iron" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_jya_iron/object_jya_iron.o" - number 6 -endseg - -beginseg - name "object_jya_door" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_jya_door/object_jya_door.o" - number 6 -endseg - -beginseg - name "object_spot01_objects2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_spot01_objects2/object_spot01_objects2.o" - number 6 -endseg - -beginseg - name "object_spot11_obj" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_spot11_obj/object_spot11_obj.o" - number 6 -endseg - -beginseg - name "object_kibako2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_kibako2/object_kibako2.o" - number 6 -endseg - -beginseg - name "object_dns" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_dns/object_dns.o" - number 6 -endseg - -beginseg - name "object_dnk" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_dnk/object_dnk.o" - number 6 -endseg - -beginseg - name "object_gi_fire" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_fire/object_gi_fire.o" - number 6 -endseg - -beginseg - name "object_gi_insect" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_insect/object_gi_insect.o" - number 6 -endseg - -beginseg - name "object_gi_butterfly" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_butterfly/object_gi_butterfly.o" - number 6 -endseg - -beginseg - name "object_gi_ghost" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_ghost/object_gi_ghost.o" - number 6 -endseg - -beginseg - name "object_gi_soul" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_soul/object_gi_soul.o" - number 6 -endseg - -beginseg - name "object_bowl" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_bowl/object_bowl.o" - number 6 -endseg - -beginseg - name "object_po_field" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_po_field/object_po_field.o" - number 6 -endseg - -beginseg - name "object_demo_kekkai" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_demo_kekkai/object_demo_kekkai.o" - number 6 -endseg - -beginseg - name "object_efc_doughnut" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_efc_doughnut/object_efc_doughnut.o" - number 6 -endseg - -beginseg - name "object_gi_dekupouch" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_dekupouch/object_gi_dekupouch.o" - number 6 -endseg - -beginseg - name "object_ganon_anime1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ganon_anime1/object_ganon_anime1.o" - number 6 -endseg - -beginseg - name "object_ganon_anime2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ganon_anime2/object_ganon_anime2.o" - number 6 -endseg - -beginseg - name "object_ganon_anime3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ganon_anime3/object_ganon_anime3.o" - number 6 -endseg - -beginseg - name "object_gi_rupy" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_rupy/object_gi_rupy.o" - number 6 -endseg - -beginseg - name "object_spot01_matoya" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_spot01_matoya/object_spot01_matoya.o" - number 6 -endseg - -beginseg - name "object_spot01_matoyab" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_spot01_matoyab/object_spot01_matoyab.o" - number 6 -endseg - -beginseg - name "object_po_composer" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_po_composer/object_po_composer.o" - number 6 -endseg - -beginseg - name "object_mu" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_mu/object_mu.o" - number 6 -endseg - -beginseg - name "object_wf" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_wf/object_wf.o" - number 6 -endseg - -beginseg - name "object_skb" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_skb/object_skb.o" - number 6 -endseg - -beginseg - name "object_gj" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gj/object_gj.o" - number 6 -endseg - -beginseg - name "object_geff" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_geff/object_geff.o" - number 6 -endseg - -beginseg - name "object_haka_door" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_haka_door/object_haka_door.o" - number 6 -endseg - -beginseg - name "object_gs" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gs/object_gs.o" - number 6 -endseg - -beginseg - name "object_ps" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ps/object_ps.o" - number 6 -endseg - -beginseg - name "object_bwall" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_bwall/object_bwall.o" - number 6 -endseg - -beginseg - name "object_crow" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_crow/object_crow.o" - number 6 -endseg - -beginseg - name "object_cow" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_cow/object_cow.o" - number 6 -endseg - -beginseg - name "object_cob" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_cob/object_cob.o" - number 6 -endseg - -beginseg - name "object_gi_sword_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_gi_sword_1/object_gi_sword_1.o" - number 6 -endseg - -beginseg - name "object_door_killer" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_door_killer/object_door_killer.o" - number 6 -endseg - -beginseg - name "object_ouke_haka" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_ouke_haka/object_ouke_haka.o" - number 6 -endseg - -beginseg - name "object_timeblock" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_timeblock/object_timeblock.o" - number 6 -endseg - -beginseg - name "object_zl4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/objects/object_zl4/object_zl4.o" - number 6 -endseg - -beginseg - name "g_pn_01" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_01.o" -endseg - -beginseg - name "g_pn_02" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_02.o" -endseg - -beginseg - name "g_pn_03" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_03.o" -endseg - -beginseg - name "g_pn_04" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_04.o" -endseg - -beginseg - name "g_pn_05" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_05.o" -endseg - -beginseg - name "g_pn_06" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_06.o" -endseg - -beginseg - name "g_pn_07" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_07.o" -endseg - -beginseg - name "g_pn_08" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_08.o" -endseg - -beginseg - name "g_pn_09" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_09.o" -endseg - -beginseg - name "g_pn_10" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_10.o" -endseg - -beginseg - name "g_pn_11" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_11.o" -endseg - -beginseg - name "g_pn_12" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_12.o" -endseg - -beginseg - name "g_pn_13" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_13.o" -endseg - -beginseg - name "g_pn_14" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_14.o" -endseg - -beginseg - name "g_pn_15" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_15.o" -endseg - -beginseg - name "g_pn_16" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_16.o" -endseg - -beginseg - name "g_pn_17" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_17.o" -endseg - -beginseg - name "g_pn_18" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_18.o" -endseg - -beginseg - name "g_pn_19" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_19.o" -endseg - -beginseg - name "g_pn_20" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_20.o" -endseg - -beginseg - name "g_pn_21" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_21.o" -endseg - -beginseg - name "g_pn_22" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_22.o" -endseg - -beginseg - name "g_pn_23" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_23.o" -endseg - -beginseg - name "g_pn_24" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_24.o" -endseg - -beginseg - name "g_pn_25" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_25.o" -endseg - -beginseg - name "g_pn_26" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_26.o" -endseg - -beginseg - name "g_pn_27" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_27.o" -endseg - -beginseg - name "g_pn_28" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_28.o" -endseg - -beginseg - name "g_pn_29" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_29.o" -endseg - -beginseg - name "g_pn_30" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_30.o" -endseg - -beginseg - name "g_pn_31" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_31.o" -endseg - -beginseg - name "g_pn_32" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_32.o" -endseg - -beginseg - name "g_pn_33" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_33.o" -endseg - -beginseg - name "g_pn_34" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_34.o" -endseg - -beginseg - name "g_pn_35" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_35.o" -endseg - -beginseg - name "g_pn_36" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_36.o" -endseg - -beginseg - name "g_pn_37" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_37.o" -endseg - -beginseg - name "g_pn_38" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_38.o" -endseg - -beginseg - name "g_pn_39" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_39.o" -endseg - -beginseg - name "g_pn_40" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_40.o" -endseg - -beginseg - name "g_pn_41" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_41.o" -endseg - -beginseg - name "g_pn_42" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_42.o" -endseg - -beginseg - name "g_pn_43" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_43.o" -endseg - -beginseg - name "g_pn_44" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_44.o" -endseg - -beginseg - name "g_pn_45" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_45.o" -endseg - -beginseg - name "g_pn_46" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_46.o" -endseg - -beginseg - name "g_pn_47" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_47.o" -endseg - -beginseg - name "g_pn_48" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_48.o" -endseg - -beginseg - name "g_pn_49" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_49.o" -endseg - -beginseg - name "g_pn_50" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_50.o" -endseg - -beginseg - name "g_pn_51" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_51.o" -endseg - -beginseg - name "g_pn_52" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_52.o" -endseg - -beginseg - name "g_pn_53" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_53.o" -endseg - -beginseg - name "g_pn_54" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_54.o" -endseg - -beginseg - name "g_pn_55" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_55.o" -endseg - -beginseg - name "g_pn_56" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_56.o" -endseg - -beginseg - name "g_pn_57" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_57.o" -endseg - -beginseg - name "z_select_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/misc/z_select_static/z_select_static.o" - number 1 -endseg - -beginseg - name "nintendo_rogo_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/nintendo_rogo_static/nintendo_rogo_static.o" - number 1 -endseg - -beginseg - name "title_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/title_static/title_static.o" - number 1 -endseg - -beginseg - name "parameter_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/parameter_static/parameter_static.o" - number 2 -endseg - -beginseg - name "vr_fine0_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/skyboxes/vr_fine0_static.o" -endseg - -beginseg - name "vr_fine0_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/skyboxes/vr_fine0_pal_static.o" -endseg - -beginseg - name "vr_fine1_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/skyboxes/vr_fine1_static.o" -endseg - -beginseg - name "vr_fine1_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/skyboxes/vr_fine1_pal_static.o" -endseg - -beginseg - name "vr_fine2_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/skyboxes/vr_fine2_static.o" -endseg - -beginseg - name "vr_fine2_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/skyboxes/vr_fine2_pal_static.o" -endseg - -beginseg - name "vr_fine3_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/skyboxes/vr_fine3_static.o" -endseg - -beginseg - name "vr_fine3_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/skyboxes/vr_fine3_pal_static.o" -endseg - -beginseg - name "vr_cloud0_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/skyboxes/vr_cloud0_static.o" -endseg - -beginseg - name "vr_cloud0_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/skyboxes/vr_cloud0_pal_static.o" -endseg - -beginseg - name "vr_cloud1_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/skyboxes/vr_cloud1_static.o" -endseg - -beginseg - name "vr_cloud1_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/skyboxes/vr_cloud1_pal_static.o" -endseg - -beginseg - name "vr_cloud2_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/skyboxes/vr_cloud2_static.o" -endseg - -beginseg - name "vr_cloud2_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/skyboxes/vr_cloud2_pal_static.o" -endseg - -beginseg - name "vr_cloud3_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/skyboxes/vr_cloud3_static.o" -endseg - -beginseg - name "vr_cloud3_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/skyboxes/vr_cloud3_pal_static.o" -endseg - -beginseg - name "vr_holy0_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/skyboxes/vr_holy0_static.o" -endseg - -beginseg - name "vr_holy0_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/skyboxes/vr_holy0_pal_static.o" -endseg - -beginseg - name "vr_holy1_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/skyboxes/vr_holy1_static.o" -endseg - -beginseg - name "vr_holy1_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/skyboxes/vr_holy1_pal_static.o" -endseg - -beginseg - name "vr_MDVR_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_MDVR_static.o" -endseg - -beginseg - name "vr_MDVR_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_MDVR_pal_static.o" -endseg - -beginseg - name "vr_MNVR_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_MNVR_static.o" -endseg - -beginseg - name "vr_MNVR_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_MNVR_pal_static.o" -endseg - -beginseg - name "vr_RUVR_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_RUVR_static.o" -endseg - -beginseg - name "vr_RUVR_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_RUVR_pal_static.o" -endseg - -beginseg - name "vr_LHVR_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_LHVR_static.o" -endseg - -beginseg - name "vr_LHVR_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_LHVR_pal_static.o" -endseg - -beginseg - name "vr_KHVR_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_KHVR_static.o" -endseg - -beginseg - name "vr_KHVR_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_KHVR_pal_static.o" -endseg - -beginseg - name "vr_K3VR_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_K3VR_static.o" -endseg - -beginseg - name "vr_K3VR_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_K3VR_pal_static.o" -endseg - -beginseg - name "vr_K4VR_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_K4VR_static.o" -endseg - -beginseg - name "vr_K4VR_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_K4VR_pal_static.o" -endseg - -beginseg - name "vr_K5VR_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_K5VR_static.o" -endseg - -beginseg - name "vr_K5VR_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_K5VR_pal_static.o" -endseg - -beginseg - name "vr_SP1a_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_SP1a_static.o" -endseg - -beginseg - name "vr_SP1a_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_SP1a_pal_static.o" -endseg - -beginseg - name "vr_MLVR_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_MLVR_static.o" -endseg - -beginseg - name "vr_MLVR_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_MLVR_pal_static.o" -endseg - -beginseg - name "vr_KKRVR_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_KKRVR_static.o" -endseg - -beginseg - name "vr_KKRVR_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_KKRVR_pal_static.o" -endseg - -beginseg - name "vr_KR3VR_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_KR3VR_static.o" -endseg - -beginseg - name "vr_KR3VR_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_KR3VR_pal_static.o" -endseg - -beginseg - name "vr_IPVR_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_IPVR_static.o" -endseg - -beginseg - name "vr_IPVR_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_IPVR_pal_static.o" -endseg - -beginseg - name "vr_KSVR_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_KSVR_static.o" -endseg - -beginseg - name "vr_KSVR_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_KSVR_pal_static.o" -endseg - -beginseg - name "vr_GLVR_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_GLVR_static.o" -endseg - -beginseg - name "vr_GLVR_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_GLVR_pal_static.o" -endseg - -beginseg - name "vr_ZRVR_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_ZRVR_static.o" -endseg - -beginseg - name "vr_ZRVR_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_ZRVR_pal_static.o" -endseg - -beginseg - name "vr_DGVR_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_DGVR_static.o" -endseg - -beginseg - name "vr_DGVR_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_DGVR_pal_static.o" -endseg - -beginseg - name "vr_ALVR_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_ALVR_static.o" -endseg - -beginseg - name "vr_ALVR_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_ALVR_pal_static.o" -endseg - -beginseg - name "vr_NSVR_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_NSVR_static.o" -endseg - -beginseg - name "vr_NSVR_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_NSVR_pal_static.o" -endseg - -beginseg - name "vr_LBVR_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_LBVR_static.o" -endseg - -beginseg - name "vr_LBVR_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_LBVR_pal_static.o" -endseg - -beginseg - name "vr_TTVR_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_TTVR_static.o" -endseg - -beginseg - name "vr_TTVR_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_TTVR_pal_static.o" -endseg - -beginseg - name "vr_FCVR_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_FCVR_static.o" -endseg - -beginseg - name "vr_FCVR_pal_static" - romalign 0x1000 - include "$(BUILD_DIR)/assets/textures/backgrounds/vr_FCVR_pal_static.o" -endseg - -beginseg - name "elf_message_field" - compress - romalign 0x1000 - include "$(BUILD_DIR)/src/elf_message/elf_message_field.o" - number 0 -endseg - -beginseg - name "elf_message_ydan" - compress - romalign 0x1000 - include "$(BUILD_DIR)/src/elf_message/elf_message_ydan.o" - number 0 -endseg - -// Scene files are reordered between versions. On GameCube and iQue, dungeon scenes -// have been moved to the beginning. -#if PLATFORM_N64 - -beginseg - name "ddan_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_scene.o" - number 2 -endseg - -beginseg - name "ddan_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_0.o" - number 3 -endseg - -beginseg - name "ddan_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_1.o" - number 3 -endseg - -beginseg - name "ddan_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_2.o" - number 3 -endseg - -beginseg - name "ddan_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_3.o" - number 3 -endseg - -beginseg - name "ddan_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_4.o" - number 3 -endseg - -beginseg - name "ddan_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_5.o" - number 3 -endseg - -beginseg - name "ddan_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_6.o" - number 3 -endseg - -beginseg - name "ddan_room_7" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_7.o" - number 3 -endseg - -beginseg - name "ddan_room_8" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_8.o" - number 3 -endseg - -beginseg - name "ddan_room_9" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_9.o" - number 3 -endseg - -beginseg - name "ddan_room_10" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_10.o" - number 3 -endseg - -beginseg - name "ddan_room_11" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_11.o" - number 3 -endseg - -beginseg - name "ddan_room_12" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_12.o" - number 3 -endseg - -beginseg - name "ddan_room_13" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_13.o" - number 3 -endseg - -beginseg - name "ddan_room_14" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_14.o" - number 3 -endseg - -beginseg - name "ddan_room_15" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_15.o" - number 3 -endseg - -beginseg - name "ddan_room_16" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_16.o" - number 3 -endseg - -beginseg - name "spot00_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot00/spot00_scene.o" - number 2 -endseg - -beginseg - name "spot00_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot00/spot00_room_0.o" - number 3 -endseg - -beginseg - name "spot01_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot01/spot01_scene.o" - number 2 -endseg - -beginseg - name "spot01_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot01/spot01_room_0.o" - number 3 -endseg - -beginseg - name "spot02_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot02/spot02_scene.o" - number 2 -endseg - -beginseg - name "spot02_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot02/spot02_room_0.o" - number 3 -endseg - -beginseg - name "spot02_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot02/spot02_room_1.o" - number 3 -endseg - -beginseg - name "spot03_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot03/spot03_scene.o" - number 2 -endseg - -beginseg - name "spot03_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot03/spot03_room_0.o" - number 3 -endseg - -beginseg - name "spot03_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot03/spot03_room_1.o" - number 3 -endseg - -beginseg - name "spot04_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot04/spot04_scene.o" - number 2 -endseg - -beginseg - name "spot04_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot04/spot04_room_0.o" - number 3 -endseg - -beginseg - name "spot04_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot04/spot04_room_1.o" - number 3 -endseg - -beginseg - name "spot04_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot04/spot04_room_2.o" - number 3 -endseg - -beginseg - name "spot05_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot05/spot05_scene.o" - number 2 -endseg - -beginseg - name "spot05_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot05/spot05_room_0.o" - number 3 -endseg - -beginseg - name "spot06_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot06/spot06_scene.o" - number 2 -endseg - -beginseg - name "spot06_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot06/spot06_room_0.o" - number 3 -endseg - -beginseg - name "spot07_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot07/spot07_scene.o" - number 2 -endseg - -beginseg - name "spot07_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot07/spot07_room_0.o" - number 3 -endseg - -beginseg - name "spot07_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot07/spot07_room_1.o" - number 3 -endseg - -beginseg - name "spot08_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot08/spot08_scene.o" - number 2 -endseg - -beginseg - name "spot08_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot08/spot08_room_0.o" - number 3 -endseg - -beginseg - name "spot09_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot09/spot09_scene.o" - number 2 -endseg - -beginseg - name "spot09_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot09/spot09_room_0.o" - number 3 -endseg - -beginseg - name "spot10_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_scene.o" - number 2 -endseg - -beginseg - name "spot10_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_0.o" - number 3 -endseg - -beginseg - name "spot10_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_1.o" - number 3 -endseg - -beginseg - name "spot10_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_2.o" - number 3 -endseg - -beginseg - name "spot10_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_3.o" - number 3 -endseg - -beginseg - name "spot10_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_4.o" - number 3 -endseg - -beginseg - name "spot10_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_5.o" - number 3 -endseg - -beginseg - name "spot10_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_6.o" - number 3 -endseg - -beginseg - name "spot10_room_7" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_7.o" - number 3 -endseg - -beginseg - name "spot10_room_8" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_8.o" - number 3 -endseg - -beginseg - name "spot10_room_9" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_9.o" - number 3 -endseg - -beginseg - name "spot11_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot11/spot11_scene.o" - number 2 -endseg - -beginseg - name "spot11_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot11/spot11_room_0.o" - number 3 -endseg - -beginseg - name "spot12_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot12/spot12_scene.o" - number 2 -endseg - -beginseg - name "spot12_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot12/spot12_room_0.o" - number 3 -endseg - -beginseg - name "spot12_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot12/spot12_room_1.o" - number 3 -endseg - -beginseg - name "spot13_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot13/spot13_scene.o" - number 2 -endseg - -beginseg - name "spot13_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot13/spot13_room_0.o" - number 3 -endseg - -beginseg - name "spot13_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot13/spot13_room_1.o" - number 3 -endseg - -beginseg - name "spot15_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot15/spot15_scene.o" - number 2 -endseg - -beginseg - name "spot15_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot15/spot15_room_0.o" - number 3 -endseg - -beginseg - name "spot16_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot16/spot16_scene.o" - number 2 -endseg - -beginseg - name "spot16_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot16/spot16_room_0.o" - number 3 -endseg - -beginseg - name "spot17_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot17/spot17_scene.o" - number 2 -endseg - -beginseg - name "spot17_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot17/spot17_room_0.o" - number 3 -endseg - -beginseg - name "spot17_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot17/spot17_room_1.o" - number 3 -endseg - -beginseg - name "spot18_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot18/spot18_scene.o" - number 2 -endseg - -beginseg - name "spot18_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot18/spot18_room_0.o" - number 3 -endseg - -beginseg - name "spot18_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot18/spot18_room_1.o" - number 3 -endseg - -beginseg - name "spot18_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot18/spot18_room_2.o" - number 3 -endseg - -beginseg - name "spot18_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot18/spot18_room_3.o" - number 3 -endseg - -beginseg - name "market_day_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/market_day/market_day_scene.o" - number 2 -endseg - -beginseg - name "market_day_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/market_day/market_day_room_0.o" - number 3 -endseg - -beginseg - name "market_night_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/market_night/market_night_scene.o" - number 2 -endseg - -beginseg - name "market_night_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/market_night/market_night_room_0.o" - number 3 -endseg - -beginseg - name "HIDAN_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_scene.o" - number 2 -endseg - -beginseg - name "HIDAN_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_0.o" - number 3 -endseg - -beginseg - name "HIDAN_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_1.o" - number 3 -endseg - -beginseg - name "HIDAN_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_2.o" - number 3 -endseg - -beginseg - name "HIDAN_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_3.o" - number 3 -endseg - -beginseg - name "HIDAN_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_4.o" - number 3 -endseg - -beginseg - name "HIDAN_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_5.o" - number 3 -endseg - -beginseg - name "HIDAN_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_6.o" - number 3 -endseg - -beginseg - name "HIDAN_room_7" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_7.o" - number 3 -endseg - -beginseg - name "HIDAN_room_8" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_8.o" - number 3 -endseg - -beginseg - name "HIDAN_room_9" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_9.o" - number 3 -endseg - -beginseg - name "HIDAN_room_10" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_10.o" - number 3 -endseg - -beginseg - name "HIDAN_room_11" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_11.o" - number 3 -endseg - -beginseg - name "HIDAN_room_12" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_12.o" - number 3 -endseg - -beginseg - name "HIDAN_room_13" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_13.o" - number 3 -endseg - -beginseg - name "HIDAN_room_14" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_14.o" - number 3 -endseg - -beginseg - name "HIDAN_room_15" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_15.o" - number 3 -endseg - -beginseg - name "HIDAN_room_16" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_16.o" - number 3 -endseg - -beginseg - name "HIDAN_room_17" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_17.o" - number 3 -endseg - -beginseg - name "HIDAN_room_18" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_18.o" - number 3 -endseg - -beginseg - name "HIDAN_room_19" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_19.o" - number 3 -endseg - -beginseg - name "HIDAN_room_20" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_20.o" - number 3 -endseg - -beginseg - name "HIDAN_room_21" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_21.o" - number 3 -endseg - -beginseg - name "HIDAN_room_22" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_22.o" - number 3 -endseg - -beginseg - name "HIDAN_room_23" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_23.o" - number 3 -endseg - -beginseg - name "HIDAN_room_24" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_24.o" - number 3 -endseg - -beginseg - name "HIDAN_room_25" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_25.o" - number 3 -endseg - -beginseg - name "HIDAN_room_26" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_26.o" - number 3 -endseg - -beginseg - name "Bmori1_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_scene.o" - number 2 -endseg - -beginseg - name "Bmori1_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_0.o" - number 3 -endseg - -beginseg - name "Bmori1_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_1.o" - number 3 -endseg - -beginseg - name "Bmori1_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_2.o" - number 3 -endseg - -beginseg - name "Bmori1_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_3.o" - number 3 -endseg - -beginseg - name "Bmori1_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_4.o" - number 3 -endseg - -beginseg - name "Bmori1_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_5.o" - number 3 -endseg - -beginseg - name "Bmori1_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_6.o" - number 3 -endseg - -beginseg - name "Bmori1_room_7" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_7.o" - number 3 -endseg - -beginseg - name "Bmori1_room_8" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_8.o" - number 3 -endseg - -beginseg - name "Bmori1_room_9" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_9.o" - number 3 -endseg - -beginseg - name "Bmori1_room_10" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_10.o" - number 3 -endseg - -beginseg - name "Bmori1_room_11" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_11.o" - number 3 -endseg - -beginseg - name "Bmori1_room_12" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_12.o" - number 3 -endseg - -beginseg - name "Bmori1_room_13" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_13.o" - number 3 -endseg - -beginseg - name "Bmori1_room_14" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_14.o" - number 3 -endseg - -beginseg - name "Bmori1_room_15" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_15.o" - number 3 -endseg - -beginseg - name "Bmori1_room_16" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_16.o" - number 3 -endseg - -beginseg - name "Bmori1_room_17" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_17.o" - number 3 -endseg - -beginseg - name "Bmori1_room_18" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_18.o" - number 3 -endseg - -beginseg - name "Bmori1_room_19" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_19.o" - number 3 -endseg - -beginseg - name "Bmori1_room_20" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_20.o" - number 3 -endseg - -beginseg - name "Bmori1_room_21" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_21.o" - number 3 -endseg - -beginseg - name "Bmori1_room_22" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_22.o" - number 3 -endseg - -beginseg - name "ydan_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_scene.o" - number 2 -endseg - -beginseg - name "ydan_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_0.o" - number 3 -endseg - -beginseg - name "ydan_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_1.o" - number 3 -endseg - -beginseg - name "ydan_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_2.o" - number 3 -endseg - -beginseg - name "ydan_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_3.o" - number 3 -endseg - -beginseg - name "ydan_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_4.o" - number 3 -endseg - -beginseg - name "ydan_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_5.o" - number 3 -endseg - -beginseg - name "ydan_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_6.o" - number 3 -endseg - -beginseg - name "ydan_room_7" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_7.o" - number 3 -endseg - -beginseg - name "ydan_room_8" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_8.o" - number 3 -endseg - -beginseg - name "ydan_room_9" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_9.o" - number 3 -endseg - -beginseg - name "ydan_room_10" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_10.o" - number 3 -endseg - -beginseg - name "ydan_room_11" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_11.o" - number 3 -endseg - -beginseg - name "kenjyanoma_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/kenjyanoma/kenjyanoma_scene.o" - number 2 -endseg - -beginseg - name "kenjyanoma_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/kenjyanoma/kenjyanoma_room_0.o" - number 3 -endseg - -beginseg - name "tokinoma_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/tokinoma/tokinoma_scene.o" - number 2 -endseg - -beginseg - name "tokinoma_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/tokinoma/tokinoma_room_0.o" - number 3 -endseg - -beginseg - name "tokinoma_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/tokinoma/tokinoma_room_1.o" - number 3 -endseg - -beginseg - name "link_home_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/link_home/link_home_scene.o" - number 2 -endseg - -beginseg - name "link_home_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/link_home/link_home_room_0.o" - number 3 -endseg - -beginseg - name "kokiri_shop_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/kokiri_shop/kokiri_shop_scene.o" - number 2 -endseg - -beginseg - name "kokiri_shop_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/kokiri_shop/kokiri_shop_room_0.o" - number 3 -endseg - -beginseg - name "MIZUsin_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_scene.o" - number 2 -endseg - -beginseg - name "MIZUsin_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_0.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_1.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_2.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_3.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_4.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_5.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_6.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_7" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_7.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_8" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_8.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_9" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_9.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_10" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_10.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_11" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_11.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_12" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_12.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_13" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_13.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_14" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_14.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_15" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_15.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_16" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_16.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_17" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_17.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_18" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_18.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_19" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_19.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_20" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_20.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_21" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_21.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_22" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_22.o" - number 3 -endseg - -beginseg - name "kokiri_home_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home/kokiri_home_scene.o" - number 2 -endseg - -beginseg - name "kokiri_home_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home/kokiri_home_room_0.o" - number 3 -endseg - -beginseg - name "kakusiana_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_scene.o" - number 2 -endseg - -beginseg - name "kakusiana_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_0.o" - number 3 -endseg - -beginseg - name "kakusiana_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_1.o" - number 3 -endseg - -beginseg - name "kakusiana_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_2.o" - number 3 -endseg - -beginseg - name "kakusiana_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_3.o" - number 3 -endseg - -beginseg - name "kakusiana_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_4.o" - number 3 -endseg - -beginseg - name "kakusiana_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_5.o" - number 3 -endseg - -beginseg - name "kakusiana_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_6.o" - number 3 -endseg - -beginseg - name "kakusiana_room_7" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_7.o" - number 3 -endseg - -beginseg - name "kakusiana_room_8" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_8.o" - number 3 -endseg - -beginseg - name "kakusiana_room_9" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_9.o" - number 3 -endseg - -beginseg - name "kakusiana_room_10" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_10.o" - number 3 -endseg - -beginseg - name "kakusiana_room_11" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_11.o" - number 3 -endseg - -beginseg - name "kakusiana_room_12" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_12.o" - number 3 -endseg - -beginseg - name "kakusiana_room_13" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_13.o" - number 3 -endseg - -beginseg - name "entra_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/entra/entra_scene.o" - number 2 -endseg - -beginseg - name "entra_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/entra/entra_room_0.o" - number 3 -endseg - -beginseg - name "bdan_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_scene.o" - number 2 -endseg - -beginseg - name "bdan_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_0.o" - number 3 -endseg - -beginseg - name "bdan_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_1.o" - number 3 -endseg - -beginseg - name "bdan_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_2.o" - number 3 -endseg - -beginseg - name "bdan_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_3.o" - number 3 -endseg - -beginseg - name "bdan_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_4.o" - number 3 -endseg - -beginseg - name "bdan_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_5.o" - number 3 -endseg - -beginseg - name "bdan_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_6.o" - number 3 -endseg - -beginseg - name "bdan_room_7" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_7.o" - number 3 -endseg - -beginseg - name "bdan_room_8" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_8.o" - number 3 -endseg - -beginseg - name "bdan_room_9" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_9.o" - number 3 -endseg - -beginseg - name "bdan_room_10" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_10.o" - number 3 -endseg - -beginseg - name "bdan_room_11" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_11.o" - number 3 -endseg - -beginseg - name "bdan_room_12" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_12.o" - number 3 -endseg - -beginseg - name "bdan_room_13" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_13.o" - number 3 -endseg - -beginseg - name "bdan_room_14" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_14.o" - number 3 -endseg - -beginseg - name "bdan_room_15" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_15.o" - number 3 -endseg - -beginseg - name "HAKAdan_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_scene.o" - number 2 -endseg - -beginseg - name "HAKAdan_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_0.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_1.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_2.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_3.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_4.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_5.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_6.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_7" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_7.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_8" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_8.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_9" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_9.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_10" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_10.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_11" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_11.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_12" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_12.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_13" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_13.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_14" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_14.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_15" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_15.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_16" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_16.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_17" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_17.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_18" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_18.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_19" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_19.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_20" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_20.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_21" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_21.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_22" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_22.o" - number 3 -endseg - -beginseg - name "moribossroom_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/moribossroom/moribossroom_scene.o" - number 2 -endseg - -beginseg - name "moribossroom_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/moribossroom/moribossroom_room_0.o" - number 3 -endseg - -beginseg - name "moribossroom_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/moribossroom/moribossroom_room_1.o" - number 3 -endseg - -beginseg - name "syatekijyou_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/syatekijyou/syatekijyou_scene.o" - number 2 -endseg - -beginseg - name "syatekijyou_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/syatekijyou/syatekijyou_room_0.o" - number 3 -endseg - -beginseg - name "men_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_scene.o" - number 2 -endseg - -beginseg - name "men_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_0.o" - number 3 -endseg - -beginseg - name "men_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_1.o" - number 3 -endseg - -beginseg - name "men_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_2.o" - number 3 -endseg - -beginseg - name "men_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_3.o" - number 3 -endseg - -beginseg - name "men_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_4.o" - number 3 -endseg - -beginseg - name "men_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_5.o" - number 3 -endseg - -beginseg - name "men_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_6.o" - number 3 -endseg - -beginseg - name "men_room_7" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_7.o" - number 3 -endseg - -beginseg - name "men_room_8" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_8.o" - number 3 -endseg - -beginseg - name "men_room_9" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_9.o" - number 3 -endseg - -beginseg - name "men_room_10" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_10.o" - number 3 -endseg - -beginseg - name "shop1_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/shop1/shop1_scene.o" - number 2 -endseg - -beginseg - name "shop1_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/shop1/shop1_room_0.o" - number 3 -endseg - -beginseg - name "hairal_niwa_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hairal_niwa/hairal_niwa_scene.o" - number 2 -endseg - -beginseg - name "hairal_niwa_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hairal_niwa/hairal_niwa_room_0.o" - number 3 -endseg - -beginseg - name "ganon_tou_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/ganon_tou/ganon_tou_scene.o" - number 2 -endseg - -beginseg - name "ganon_tou_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/ganon_tou/ganon_tou_room_0.o" - number 3 -endseg - -beginseg - name "market_alley_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/market_alley/market_alley_scene.o" - number 2 -endseg - -beginseg - name "market_alley_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/market_alley/market_alley_room_0.o" - number 3 -endseg - -beginseg - name "spot20_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot20/spot20_scene.o" - number 2 -endseg - -beginseg - name "spot20_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot20/spot20_room_0.o" - number 3 -endseg - -beginseg - name "market_ruins_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/market_ruins/market_ruins_scene.o" - number 2 -endseg - -beginseg - name "market_ruins_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/market_ruins/market_ruins_room_0.o" - number 3 -endseg - -beginseg - name "entra_n_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/entra_n/entra_n_scene.o" - number 2 -endseg - -beginseg - name "entra_n_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/entra_n/entra_n_room_0.o" - number 3 -endseg - -beginseg - name "enrui_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/enrui/enrui_scene.o" - number 2 -endseg - -beginseg - name "enrui_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/enrui/enrui_room_0.o" - number 3 -endseg - -beginseg - name "market_alley_n_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/market_alley_n/market_alley_n_scene.o" - number 2 -endseg - -beginseg - name "market_alley_n_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/market_alley_n/market_alley_n_room_0.o" - number 3 -endseg - -beginseg - name "hiral_demo_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/hiral_demo/hiral_demo_scene.o" - number 2 -endseg - -beginseg - name "hiral_demo_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/hiral_demo/hiral_demo_room_0.o" - number 3 -endseg - -beginseg - name "kokiri_home3_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home3/kokiri_home3_scene.o" - number 2 -endseg - -beginseg - name "kokiri_home3_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home3/kokiri_home3_room_0.o" - number 3 -endseg - -beginseg - name "jyasinzou_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_scene.o" - number 2 -endseg - -beginseg - name "jyasinzou_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_0.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_1.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_2.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_3.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_4.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_5.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_6.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_7" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_7.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_8" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_8.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_9" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_9.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_10" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_10.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_11" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_11.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_12" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_12.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_13" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_13.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_14" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_14.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_15" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_15.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_16" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_16.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_17" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_17.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_18" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_18.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_19" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_19.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_20" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_20.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_21" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_21.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_22" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_22.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_23" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_23.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_24" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_24.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_25" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_25.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_26" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_26.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_27" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_27.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_28" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_28.o" - number 3 -endseg - -beginseg - name "ice_doukutu_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_scene.o" - number 2 -endseg - -beginseg - name "ice_doukutu_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_0.o" - number 3 -endseg - -beginseg - name "ice_doukutu_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_1.o" - number 3 -endseg - -beginseg - name "ice_doukutu_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_2.o" - number 3 -endseg - -beginseg - name "ice_doukutu_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_3.o" - number 3 -endseg - -beginseg - name "ice_doukutu_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_4.o" - number 3 -endseg - -beginseg - name "ice_doukutu_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_5.o" - number 3 -endseg - -beginseg - name "ice_doukutu_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_6.o" - number 3 -endseg - -beginseg - name "ice_doukutu_room_7" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_7.o" - number 3 -endseg - -beginseg - name "ice_doukutu_room_8" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_8.o" - number 3 -endseg - -beginseg - name "ice_doukutu_room_9" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_9.o" - number 3 -endseg - -beginseg - name "ice_doukutu_room_10" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_10.o" - number 3 -endseg - -beginseg - name "ice_doukutu_room_11" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_11.o" - number 3 -endseg - -beginseg - name "malon_stable_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/malon_stable/malon_stable_scene.o" - number 2 -endseg - -beginseg - name "malon_stable_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/malon_stable/malon_stable_room_0.o" - number 3 -endseg - -beginseg - name "kakariko_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/kakariko/kakariko_scene.o" - number 2 -endseg - -beginseg - name "kakariko_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/kakariko/kakariko_room_0.o" - number 3 -endseg - -beginseg - name "bdan_boss_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan_boss/bdan_boss_scene.o" - number 2 -endseg - -beginseg - name "bdan_boss_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan_boss/bdan_boss_room_0.o" - number 3 -endseg - -beginseg - name "bdan_boss_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan_boss/bdan_boss_room_1.o" - number 3 -endseg - -beginseg - name "FIRE_bs_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/FIRE_bs/FIRE_bs_scene.o" - number 2 -endseg - -beginseg - name "FIRE_bs_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/FIRE_bs/FIRE_bs_room_0.o" - number 3 -endseg - -beginseg - name "FIRE_bs_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/FIRE_bs/FIRE_bs_room_1.o" - number 3 -endseg - -beginseg - name "hut_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hut/hut_scene.o" - number 2 -endseg - -beginseg - name "hut_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hut/hut_room_0.o" - number 3 -endseg - -beginseg - name "daiyousei_izumi_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/daiyousei_izumi/daiyousei_izumi_scene.o" - number 2 -endseg - -beginseg - name "daiyousei_izumi_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/daiyousei_izumi/daiyousei_izumi_room_0.o" - number 3 -endseg - -beginseg - name "hakaana_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/hakaana/hakaana_scene.o" - number 2 -endseg - -beginseg - name "hakaana_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/hakaana/hakaana_room_0.o" - number 3 -endseg - -beginseg - name "yousei_izumi_tate_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/yousei_izumi_tate/yousei_izumi_tate_scene.o" - number 2 -endseg - -beginseg - name "yousei_izumi_tate_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/yousei_izumi_tate/yousei_izumi_tate_room_0.o" - number 3 -endseg - -beginseg - name "yousei_izumi_yoko_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/yousei_izumi_yoko/yousei_izumi_yoko_scene.o" - number 2 -endseg - -beginseg - name "yousei_izumi_yoko_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/yousei_izumi_yoko/yousei_izumi_yoko_room_0.o" - number 3 -endseg - -beginseg - name "golon_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/golon/golon_scene.o" - number 2 -endseg - -beginseg - name "golon_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/golon/golon_room_0.o" - number 3 -endseg - -beginseg - name "zoora_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/zoora/zoora_scene.o" - number 2 -endseg - -beginseg - name "zoora_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/zoora/zoora_room_0.o" - number 3 -endseg - -beginseg - name "drag_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/drag/drag_scene.o" - number 2 -endseg - -beginseg - name "drag_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/drag/drag_room_0.o" - number 3 -endseg - -beginseg - name "alley_shop_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/alley_shop/alley_shop_scene.o" - number 2 -endseg - -beginseg - name "alley_shop_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/alley_shop/alley_shop_room_0.o" - number 3 -endseg - -beginseg - name "night_shop_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/night_shop/night_shop_scene.o" - number 2 -endseg - -beginseg - name "night_shop_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/night_shop/night_shop_room_0.o" - number 3 -endseg - -beginseg - name "impa_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/impa/impa_scene.o" - number 2 -endseg - -beginseg - name "impa_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/impa/impa_room_0.o" - number 3 -endseg - -beginseg - name "labo_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/labo/labo_scene.o" - number 2 -endseg - -beginseg - name "labo_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/labo/labo_room_0.o" - number 3 -endseg - -beginseg - name "tent_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/tent/tent_scene.o" - number 2 -endseg - -beginseg - name "tent_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/tent/tent_room_0.o" - number 3 -endseg - -beginseg - name "nakaniwa_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/nakaniwa/nakaniwa_scene.o" - number 2 -endseg - -beginseg - name "nakaniwa_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/nakaniwa/nakaniwa_room_0.o" - number 3 -endseg - -beginseg - name "ddan_boss_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan_boss/ddan_boss_scene.o" - number 2 -endseg - -beginseg - name "ddan_boss_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan_boss/ddan_boss_room_0.o" - number 3 -endseg - -beginseg - name "ddan_boss_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan_boss/ddan_boss_room_1.o" - number 3 -endseg - -beginseg - name "ydan_boss_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan_boss/ydan_boss_scene.o" - number 2 -endseg - -beginseg - name "ydan_boss_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan_boss/ydan_boss_room_0.o" - number 3 -endseg - -beginseg - name "ydan_boss_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan_boss/ydan_boss_room_1.o" - number 3 -endseg - -beginseg - name "HAKAdan_bs_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan_bs/HAKAdan_bs_scene.o" - number 2 -endseg - -beginseg - name "HAKAdan_bs_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan_bs/HAKAdan_bs_room_0.o" - number 3 -endseg - -beginseg - name "HAKAdan_bs_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan_bs/HAKAdan_bs_room_1.o" - number 3 -endseg - -beginseg - name "MIZUsin_bs_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin_bs/MIZUsin_bs_scene.o" - number 2 -endseg - -beginseg - name "MIZUsin_bs_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin_bs/MIZUsin_bs_room_0.o" - number 3 -endseg - -beginseg - name "MIZUsin_bs_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin_bs/MIZUsin_bs_room_1.o" - number 3 -endseg - -beginseg - name "ganon_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_scene.o" - number 2 -endseg - -beginseg - name "ganon_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_0.o" - number 3 -endseg - -beginseg - name "ganon_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_1.o" - number 3 -endseg - -beginseg - name "ganon_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_2.o" - number 3 -endseg - -beginseg - name "ganon_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_3.o" - number 3 -endseg - -beginseg - name "ganon_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_4.o" - number 3 -endseg - -beginseg - name "ganon_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_5.o" - number 3 -endseg - -beginseg - name "ganon_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_6.o" - number 3 -endseg - -beginseg - name "ganon_room_7" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_7.o" - number 3 -endseg - -beginseg - name "ganon_room_8" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_8.o" - number 3 -endseg - -beginseg - name "ganon_room_9" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_9.o" - number 3 -endseg - -beginseg - name "ganon_boss_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_boss/ganon_boss_scene.o" - number 2 -endseg - -beginseg - name "ganon_boss_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_boss/ganon_boss_room_0.o" - number 3 -endseg - -beginseg - name "jyasinboss_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinboss/jyasinboss_scene.o" - number 2 -endseg - -beginseg - name "jyasinboss_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinboss/jyasinboss_room_0.o" - number 3 -endseg - -beginseg - name "jyasinboss_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinboss/jyasinboss_room_1.o" - number 3 -endseg - -beginseg - name "jyasinboss_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinboss/jyasinboss_room_2.o" - number 3 -endseg - -beginseg - name "jyasinboss_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinboss/jyasinboss_room_3.o" - number 3 -endseg - -beginseg - name "kokiri_home4_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home4/kokiri_home4_scene.o" - number 2 -endseg - -beginseg - name "kokiri_home4_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home4/kokiri_home4_room_0.o" - number 3 -endseg - -beginseg - name "kokiri_home5_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home5/kokiri_home5_scene.o" - number 2 -endseg - -beginseg - name "kokiri_home5_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home5/kokiri_home5_room_0.o" - number 3 -endseg - -beginseg - name "ganon_final_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_final/ganon_final_scene.o" - number 2 -endseg - -beginseg - name "ganon_final_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_final/ganon_final_room_0.o" - number 3 -endseg - -beginseg - name "kakariko3_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakariko3/kakariko3_scene.o" - number 2 -endseg - -beginseg - name "kakariko3_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakariko3/kakariko3_room_0.o" - number 3 -endseg - -beginseg - name "hakasitarelay_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_scene.o" - number 2 -endseg - -beginseg - name "hakasitarelay_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_room_0.o" - number 3 -endseg - -beginseg - name "hakasitarelay_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_room_1.o" - number 3 -endseg - -beginseg - name "hakasitarelay_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_room_2.o" - number 3 -endseg - -beginseg - name "hakasitarelay_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_room_3.o" - number 3 -endseg - -beginseg - name "hakasitarelay_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_room_4.o" - number 3 -endseg - -beginseg - name "hakasitarelay_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_room_5.o" - number 3 -endseg - -beginseg - name "hakasitarelay_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_room_6.o" - number 3 -endseg - -beginseg - name "shrine_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/shrine/shrine_scene.o" - number 2 -endseg - -beginseg - name "shrine_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/shrine/shrine_room_0.o" - number 3 -endseg - -beginseg - name "turibori_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/turibori/turibori_scene.o" - number 2 -endseg - -beginseg - name "turibori_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/turibori/turibori_room_0.o" - number 3 -endseg - -beginseg - name "shrine_n_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/shrine_n/shrine_n_scene.o" - number 2 -endseg - -beginseg - name "shrine_n_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/shrine_n/shrine_n_room_0.o" - number 3 -endseg - -beginseg - name "shrine_r_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/shrine_r/shrine_r_scene.o" - number 2 -endseg - -beginseg - name "shrine_r_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/shrine_r/shrine_r_room_0.o" - number 3 -endseg - -beginseg - name "ganontika_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_scene.o" - number 2 -endseg - -beginseg - name "ganontika_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_0.o" - number 3 -endseg - -beginseg - name "ganontika_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_1.o" - number 3 -endseg - -beginseg - name "ganontika_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_2.o" - number 3 -endseg - -beginseg - name "ganontika_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_3.o" - number 3 -endseg - -beginseg - name "ganontika_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_4.o" - number 3 -endseg - -beginseg - name "ganontika_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_5.o" - number 3 -endseg - -beginseg - name "ganontika_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_6.o" - number 3 -endseg - -beginseg - name "ganontika_room_7" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_7.o" - number 3 -endseg - -beginseg - name "ganontika_room_8" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_8.o" - number 3 -endseg - -beginseg - name "ganontika_room_9" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_9.o" - number 3 -endseg - -beginseg - name "ganontika_room_10" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_10.o" - number 3 -endseg - -beginseg - name "ganontika_room_11" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_11.o" - number 3 -endseg - -beginseg - name "ganontika_room_12" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_12.o" - number 3 -endseg - -beginseg - name "ganontika_room_13" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_13.o" - number 3 -endseg - -beginseg - name "ganontika_room_14" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_14.o" - number 3 -endseg - -beginseg - name "ganontika_room_15" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_15.o" - number 3 -endseg - -beginseg - name "ganontika_room_16" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_16.o" - number 3 -endseg - -beginseg - name "ganontika_room_17" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_17.o" - number 3 -endseg - -beginseg - name "ganontika_room_18" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_18.o" - number 3 -endseg - -beginseg - name "ganontika_room_19" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_19.o" - number 3 -endseg - -beginseg - name "hakaana2_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/hakaana2/hakaana2_scene.o" - number 2 -endseg - -beginseg - name "hakaana2_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/hakaana2/hakaana2_room_0.o" - number 3 -endseg - -beginseg - name "gerudoway_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/gerudoway/gerudoway_scene.o" - number 2 -endseg - -beginseg - name "gerudoway_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/gerudoway/gerudoway_room_0.o" - number 3 -endseg - -beginseg - name "gerudoway_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/gerudoway/gerudoway_room_1.o" - number 3 -endseg - -beginseg - name "gerudoway_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/gerudoway/gerudoway_room_2.o" - number 3 -endseg - -beginseg - name "gerudoway_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/gerudoway/gerudoway_room_3.o" - number 3 -endseg - -beginseg - name "gerudoway_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/gerudoway/gerudoway_room_4.o" - number 3 -endseg - -beginseg - name "gerudoway_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/gerudoway/gerudoway_room_5.o" - number 3 -endseg - -beginseg - name "HAKAdanCH_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_scene.o" - number 2 -endseg - -beginseg - name "HAKAdanCH_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_0.o" - number 3 -endseg - -beginseg - name "HAKAdanCH_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_1.o" - number 3 -endseg - -beginseg - name "HAKAdanCH_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_2.o" - number 3 -endseg - -beginseg - name "HAKAdanCH_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_3.o" - number 3 -endseg - -beginseg - name "HAKAdanCH_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_4.o" - number 3 -endseg - -beginseg - name "HAKAdanCH_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_5.o" - number 3 -endseg - -beginseg - name "HAKAdanCH_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_6.o" - number 3 -endseg - -beginseg - name "hairal_niwa_n_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hairal_niwa_n/hairal_niwa_n_scene.o" - number 2 -endseg - -beginseg - name "hairal_niwa_n_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hairal_niwa_n/hairal_niwa_n_room_0.o" - number 3 -endseg - -beginseg - name "bowling_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/bowling/bowling_scene.o" - number 2 -endseg - -beginseg - name "bowling_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/bowling/bowling_room_0.o" - number 3 -endseg - -beginseg - name "hakaana_ouke_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/hakaana_ouke/hakaana_ouke_scene.o" - number 2 -endseg - -beginseg - name "hakaana_ouke_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/hakaana_ouke/hakaana_ouke_room_0.o" - number 3 -endseg - -beginseg - name "hakaana_ouke_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/hakaana_ouke/hakaana_ouke_room_1.o" - number 3 -endseg - -beginseg - name "hakaana_ouke_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/hakaana_ouke/hakaana_ouke_room_2.o" - number 3 -endseg - -beginseg - name "hylia_labo_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hylia_labo/hylia_labo_scene.o" - number 2 -endseg - -beginseg - name "hylia_labo_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hylia_labo/hylia_labo_room_0.o" - number 3 -endseg - -beginseg - name "souko_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/souko/souko_scene.o" - number 2 -endseg - -beginseg - name "souko_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/souko/souko_room_0.o" - number 3 -endseg - -beginseg - name "souko_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/souko/souko_room_1.o" - number 3 -endseg - -beginseg - name "souko_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/souko/souko_room_2.o" - number 3 -endseg - -beginseg - name "miharigoya_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/miharigoya/miharigoya_scene.o" - number 2 -endseg - -beginseg - name "miharigoya_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/miharigoya/miharigoya_room_0.o" - number 3 -endseg - -beginseg - name "mahouya_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/mahouya/mahouya_scene.o" - number 2 -endseg - -beginseg - name "mahouya_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/mahouya/mahouya_room_0.o" - number 3 -endseg - -beginseg - name "takaraya_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_scene.o" - number 2 -endseg - -beginseg - name "takaraya_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_room_0.o" - number 3 -endseg - -beginseg - name "takaraya_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_room_1.o" - number 3 -endseg - -beginseg - name "takaraya_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_room_2.o" - number 3 -endseg - -beginseg - name "takaraya_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_room_3.o" - number 3 -endseg - -beginseg - name "takaraya_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_room_4.o" - number 3 -endseg - -beginseg - name "takaraya_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_room_5.o" - number 3 -endseg - -beginseg - name "takaraya_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_room_6.o" - number 3 -endseg - -beginseg - name "ganon_sonogo_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_sonogo/ganon_sonogo_scene.o" - number 2 -endseg - -beginseg - name "ganon_sonogo_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_sonogo/ganon_sonogo_room_0.o" - number 3 -endseg - -beginseg - name "ganon_sonogo_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_sonogo/ganon_sonogo_room_1.o" - number 3 -endseg - -beginseg - name "ganon_sonogo_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_sonogo/ganon_sonogo_room_2.o" - number 3 -endseg - -beginseg - name "ganon_sonogo_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_sonogo/ganon_sonogo_room_3.o" - number 3 -endseg - -beginseg - name "ganon_sonogo_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_sonogo/ganon_sonogo_room_4.o" - number 3 -endseg - -beginseg - name "ganon_demo_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_demo/ganon_demo_scene.o" - number 2 -endseg - -beginseg - name "ganon_demo_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_demo/ganon_demo_room_0.o" - number 3 -endseg - -beginseg - name "face_shop_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/face_shop/face_shop_scene.o" - number 2 -endseg - -beginseg - name "face_shop_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/face_shop/face_shop_room_0.o" - number 3 -endseg - -beginseg - name "kinsuta_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kinsuta/kinsuta_scene.o" - number 2 -endseg - -beginseg - name "kinsuta_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kinsuta/kinsuta_room_0.o" - number 3 -endseg - -beginseg - name "ganontikasonogo_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontikasonogo/ganontikasonogo_scene.o" - number 2 -endseg - -beginseg - name "ganontikasonogo_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontikasonogo/ganontikasonogo_room_0.o" - number 3 -endseg - -beginseg - name "ganontikasonogo_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontikasonogo/ganontikasonogo_room_1.o" - number 3 -endseg - -#else - -beginseg - name "ydan_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_scene.o" - number 2 -endseg - -beginseg - name "ydan_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_0.o" - number 3 -endseg - -beginseg - name "ydan_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_1.o" - number 3 -endseg - -beginseg - name "ydan_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_2.o" - number 3 -endseg - -beginseg - name "ydan_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_3.o" - number 3 -endseg - -beginseg - name "ydan_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_4.o" - number 3 -endseg - -beginseg - name "ydan_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_5.o" - number 3 -endseg - -beginseg - name "ydan_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_6.o" - number 3 -endseg - -beginseg - name "ydan_room_7" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_7.o" - number 3 -endseg - -beginseg - name "ydan_room_8" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_8.o" - number 3 -endseg - -beginseg - name "ydan_room_9" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_9.o" - number 3 -endseg - -beginseg - name "ydan_room_10" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_10.o" - number 3 -endseg - -beginseg - name "ydan_room_11" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_11.o" - number 3 -endseg - -beginseg - name "ddan_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_scene.o" - number 2 -endseg - -beginseg - name "ddan_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_0.o" - number 3 -endseg - -beginseg - name "ddan_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_1.o" - number 3 -endseg - -beginseg - name "ddan_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_2.o" - number 3 -endseg - -beginseg - name "ddan_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_3.o" - number 3 -endseg - -beginseg - name "ddan_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_4.o" - number 3 -endseg - -beginseg - name "ddan_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_5.o" - number 3 -endseg - -beginseg - name "ddan_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_6.o" - number 3 -endseg - -beginseg - name "ddan_room_7" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_7.o" - number 3 -endseg - -beginseg - name "ddan_room_8" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_8.o" - number 3 -endseg - -beginseg - name "ddan_room_9" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_9.o" - number 3 -endseg - -beginseg - name "ddan_room_10" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_10.o" - number 3 -endseg - -beginseg - name "ddan_room_11" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_11.o" - number 3 -endseg - -beginseg - name "ddan_room_12" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_12.o" - number 3 -endseg - -beginseg - name "ddan_room_13" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_13.o" - number 3 -endseg - -beginseg - name "ddan_room_14" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_14.o" - number 3 -endseg - -beginseg - name "ddan_room_15" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_15.o" - number 3 -endseg - -beginseg - name "ddan_room_16" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_16.o" - number 3 -endseg - -beginseg - name "bdan_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_scene.o" - number 2 -endseg - -beginseg - name "bdan_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_0.o" - number 3 -endseg - -beginseg - name "bdan_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_1.o" - number 3 -endseg - -beginseg - name "bdan_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_2.o" - number 3 -endseg - -beginseg - name "bdan_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_3.o" - number 3 -endseg - -beginseg - name "bdan_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_4.o" - number 3 -endseg - -beginseg - name "bdan_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_5.o" - number 3 -endseg - -beginseg - name "bdan_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_6.o" - number 3 -endseg - -beginseg - name "bdan_room_7" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_7.o" - number 3 -endseg - -beginseg - name "bdan_room_8" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_8.o" - number 3 -endseg - -beginseg - name "bdan_room_9" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_9.o" - number 3 -endseg - -beginseg - name "bdan_room_10" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_10.o" - number 3 -endseg - -beginseg - name "bdan_room_11" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_11.o" - number 3 -endseg - -beginseg - name "bdan_room_12" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_12.o" - number 3 -endseg - -beginseg - name "bdan_room_13" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_13.o" - number 3 -endseg - -beginseg - name "bdan_room_14" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_14.o" - number 3 -endseg - -beginseg - name "bdan_room_15" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_15.o" - number 3 -endseg - -beginseg - name "Bmori1_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_scene.o" - number 2 -endseg - -beginseg - name "Bmori1_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_0.o" - number 3 -endseg - -beginseg - name "Bmori1_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_1.o" - number 3 -endseg - -beginseg - name "Bmori1_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_2.o" - number 3 -endseg - -beginseg - name "Bmori1_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_3.o" - number 3 -endseg - -beginseg - name "Bmori1_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_4.o" - number 3 -endseg - -beginseg - name "Bmori1_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_5.o" - number 3 -endseg - -beginseg - name "Bmori1_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_6.o" - number 3 -endseg - -beginseg - name "Bmori1_room_7" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_7.o" - number 3 -endseg - -beginseg - name "Bmori1_room_8" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_8.o" - number 3 -endseg - -beginseg - name "Bmori1_room_9" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_9.o" - number 3 -endseg - -beginseg - name "Bmori1_room_10" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_10.o" - number 3 -endseg - -beginseg - name "Bmori1_room_11" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_11.o" - number 3 -endseg - -beginseg - name "Bmori1_room_12" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_12.o" - number 3 -endseg - -beginseg - name "Bmori1_room_13" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_13.o" - number 3 -endseg - -beginseg - name "Bmori1_room_14" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_14.o" - number 3 -endseg - -beginseg - name "Bmori1_room_15" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_15.o" - number 3 -endseg - -beginseg - name "Bmori1_room_16" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_16.o" - number 3 -endseg - -beginseg - name "Bmori1_room_17" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_17.o" - number 3 -endseg - -beginseg - name "Bmori1_room_18" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_18.o" - number 3 -endseg - -beginseg - name "Bmori1_room_19" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_19.o" - number 3 -endseg - -beginseg - name "Bmori1_room_20" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_20.o" - number 3 -endseg - -beginseg - name "Bmori1_room_21" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_21.o" - number 3 -endseg - -beginseg - name "Bmori1_room_22" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_22.o" - number 3 -endseg - -beginseg - name "HIDAN_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_scene.o" - number 2 -endseg - -beginseg - name "HIDAN_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_0.o" - number 3 -endseg - -beginseg - name "HIDAN_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_1.o" - number 3 -endseg - -beginseg - name "HIDAN_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_2.o" - number 3 -endseg - -beginseg - name "HIDAN_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_3.o" - number 3 -endseg - -beginseg - name "HIDAN_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_4.o" - number 3 -endseg - -beginseg - name "HIDAN_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_5.o" - number 3 -endseg - -beginseg - name "HIDAN_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_6.o" - number 3 -endseg - -beginseg - name "HIDAN_room_7" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_7.o" - number 3 -endseg - -beginseg - name "HIDAN_room_8" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_8.o" - number 3 -endseg - -beginseg - name "HIDAN_room_9" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_9.o" - number 3 -endseg - -beginseg - name "HIDAN_room_10" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_10.o" - number 3 -endseg - -beginseg - name "HIDAN_room_11" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_11.o" - number 3 -endseg - -beginseg - name "HIDAN_room_12" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_12.o" - number 3 -endseg - -beginseg - name "HIDAN_room_13" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_13.o" - number 3 -endseg - -beginseg - name "HIDAN_room_14" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_14.o" - number 3 -endseg - -beginseg - name "HIDAN_room_15" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_15.o" - number 3 -endseg - -beginseg - name "HIDAN_room_16" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_16.o" - number 3 -endseg - -beginseg - name "HIDAN_room_17" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_17.o" - number 3 -endseg - -beginseg - name "HIDAN_room_18" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_18.o" - number 3 -endseg - -beginseg - name "HIDAN_room_19" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_19.o" - number 3 -endseg - -beginseg - name "HIDAN_room_20" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_20.o" - number 3 -endseg - -beginseg - name "HIDAN_room_21" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_21.o" - number 3 -endseg - -beginseg - name "HIDAN_room_22" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_22.o" - number 3 -endseg - -beginseg - name "HIDAN_room_23" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_23.o" - number 3 -endseg - -beginseg - name "HIDAN_room_24" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_24.o" - number 3 -endseg - -beginseg - name "HIDAN_room_25" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_25.o" - number 3 -endseg - -beginseg - name "HIDAN_room_26" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_26.o" - number 3 -endseg - -beginseg - name "MIZUsin_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_scene.o" - number 2 -endseg - -beginseg - name "MIZUsin_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_0.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_1.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_2.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_3.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_4.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_5.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_6.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_7" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_7.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_8" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_8.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_9" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_9.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_10" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_10.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_11" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_11.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_12" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_12.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_13" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_13.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_14" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_14.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_15" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_15.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_16" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_16.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_17" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_17.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_18" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_18.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_19" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_19.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_20" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_20.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_21" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_21.o" - number 3 -endseg - -beginseg - name "MIZUsin_room_22" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_22.o" - number 3 -endseg - -beginseg - name "jyasinzou_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_scene.o" - number 2 -endseg - -beginseg - name "jyasinzou_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_0.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_1.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_2.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_3.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_4.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_5.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_6.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_7" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_7.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_8" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_8.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_9" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_9.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_10" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_10.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_11" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_11.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_12" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_12.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_13" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_13.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_14" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_14.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_15" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_15.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_16" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_16.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_17" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_17.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_18" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_18.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_19" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_19.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_20" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_20.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_21" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_21.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_22" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_22.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_23" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_23.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_24" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_24.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_25" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_25.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_26" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_26.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_27" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_27.o" - number 3 -endseg - -beginseg - name "jyasinzou_room_28" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_28.o" - number 3 -endseg - -beginseg - name "HAKAdan_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_scene.o" - number 2 -endseg - -beginseg - name "HAKAdan_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_0.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_1.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_2.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_3.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_4.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_5.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_6.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_7" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_7.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_8" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_8.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_9" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_9.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_10" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_10.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_11" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_11.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_12" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_12.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_13" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_13.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_14" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_14.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_15" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_15.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_16" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_16.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_17" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_17.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_18" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_18.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_19" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_19.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_20" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_20.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_21" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_21.o" - number 3 -endseg - -beginseg - name "HAKAdan_room_22" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_22.o" - number 3 -endseg - -beginseg - name "HAKAdanCH_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_scene.o" - number 2 -endseg - -beginseg - name "HAKAdanCH_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_0.o" - number 3 -endseg - -beginseg - name "HAKAdanCH_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_1.o" - number 3 -endseg - -beginseg - name "HAKAdanCH_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_2.o" - number 3 -endseg - -beginseg - name "HAKAdanCH_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_3.o" - number 3 -endseg - -beginseg - name "HAKAdanCH_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_4.o" - number 3 -endseg - -beginseg - name "HAKAdanCH_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_5.o" - number 3 -endseg - -beginseg - name "HAKAdanCH_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_6.o" - number 3 -endseg - -beginseg - name "ice_doukutu_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_scene.o" - number 2 -endseg - -beginseg - name "ice_doukutu_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_0.o" - number 3 -endseg - -beginseg - name "ice_doukutu_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_1.o" - number 3 -endseg - -beginseg - name "ice_doukutu_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_2.o" - number 3 -endseg - -beginseg - name "ice_doukutu_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_3.o" - number 3 -endseg - -beginseg - name "ice_doukutu_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_4.o" - number 3 -endseg - -beginseg - name "ice_doukutu_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_5.o" - number 3 -endseg - -beginseg - name "ice_doukutu_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_6.o" - number 3 -endseg - -beginseg - name "ice_doukutu_room_7" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_7.o" - number 3 -endseg - -beginseg - name "ice_doukutu_room_8" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_8.o" - number 3 -endseg - -beginseg - name "ice_doukutu_room_9" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_9.o" - number 3 -endseg - -beginseg - name "ice_doukutu_room_10" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_10.o" - number 3 -endseg - -beginseg - name "ice_doukutu_room_11" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_11.o" - number 3 -endseg - -beginseg - name "men_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_scene.o" - number 2 -endseg - -beginseg - name "men_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_0.o" - number 3 -endseg - -beginseg - name "men_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_1.o" - number 3 -endseg - -beginseg - name "men_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_2.o" - number 3 -endseg - -beginseg - name "men_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_3.o" - number 3 -endseg - -beginseg - name "men_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_4.o" - number 3 -endseg - -beginseg - name "men_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_5.o" - number 3 -endseg - -beginseg - name "men_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_6.o" - number 3 -endseg - -beginseg - name "men_room_7" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_7.o" - number 3 -endseg - -beginseg - name "men_room_8" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_8.o" - number 3 -endseg - -beginseg - name "men_room_9" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_9.o" - number 3 -endseg - -beginseg - name "men_room_10" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_10.o" - number 3 -endseg - -beginseg - name "ganontika_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_scene.o" - number 2 -endseg - -beginseg - name "ganontika_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_0.o" - number 3 -endseg - -beginseg - name "ganontika_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_1.o" - number 3 -endseg - -beginseg - name "ganontika_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_2.o" - number 3 -endseg - -beginseg - name "ganontika_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_3.o" - number 3 -endseg - -beginseg - name "ganontika_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_4.o" - number 3 -endseg - -beginseg - name "ganontika_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_5.o" - number 3 -endseg - -beginseg - name "ganontika_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_6.o" - number 3 -endseg - -beginseg - name "ganontika_room_7" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_7.o" - number 3 -endseg - -beginseg - name "ganontika_room_8" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_8.o" - number 3 -endseg - -beginseg - name "ganontika_room_9" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_9.o" - number 3 -endseg - -beginseg - name "ganontika_room_10" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_10.o" - number 3 -endseg - -beginseg - name "ganontika_room_11" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_11.o" - number 3 -endseg - -beginseg - name "ganontika_room_12" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_12.o" - number 3 -endseg - -beginseg - name "ganontika_room_13" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_13.o" - number 3 -endseg - -beginseg - name "ganontika_room_14" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_14.o" - number 3 -endseg - -beginseg - name "ganontika_room_15" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_15.o" - number 3 -endseg - -beginseg - name "ganontika_room_16" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_16.o" - number 3 -endseg - -beginseg - name "ganontika_room_17" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_17.o" - number 3 -endseg - -beginseg - name "ganontika_room_18" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_18.o" - number 3 -endseg - -beginseg - name "ganontika_room_19" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_19.o" - number 3 -endseg - -#if DEBUG_ASSETS -beginseg - name "syotes_scene" - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/test_levels/syotes/syotes_scene.o" - number 2 -endseg - -beginseg - name "syotes_room_0" - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/test_levels/syotes/syotes_room_0.o" - number 3 -endseg - -beginseg - name "syotes2_scene" - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/test_levels/syotes2/syotes2_scene.o" - number 2 -endseg - -beginseg - name "syotes2_room_0" - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/test_levels/syotes2/syotes2_room_0.o" - number 3 -endseg - -beginseg - name "depth_test_scene" - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/test_levels/depth_test/depth_test_scene.o" - number 2 -endseg - -beginseg - name "depth_test_room_0" - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/test_levels/depth_test/depth_test_room_0.o" - number 3 -endseg -#endif - -beginseg - name "spot00_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot00/spot00_scene.o" - number 2 -endseg - -beginseg - name "spot00_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot00/spot00_room_0.o" - number 3 -endseg - -beginseg - name "spot01_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot01/spot01_scene.o" - number 2 -endseg - -beginseg - name "spot01_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot01/spot01_room_0.o" - number 3 -endseg - -beginseg - name "spot02_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot02/spot02_scene.o" - number 2 -endseg - -beginseg - name "spot02_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot02/spot02_room_0.o" - number 3 -endseg - -beginseg - name "spot02_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot02/spot02_room_1.o" - number 3 -endseg - -beginseg - name "spot03_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot03/spot03_scene.o" - number 2 -endseg - -beginseg - name "spot03_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot03/spot03_room_0.o" - number 3 -endseg - -beginseg - name "spot03_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot03/spot03_room_1.o" - number 3 -endseg - -beginseg - name "spot04_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot04/spot04_scene.o" - number 2 -endseg - -beginseg - name "spot04_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot04/spot04_room_0.o" - number 3 -endseg - -beginseg - name "spot04_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot04/spot04_room_1.o" - number 3 -endseg - -beginseg - name "spot04_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot04/spot04_room_2.o" - number 3 -endseg - -beginseg - name "spot05_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot05/spot05_scene.o" - number 2 -endseg - -beginseg - name "spot05_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot05/spot05_room_0.o" - number 3 -endseg - -beginseg - name "spot06_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot06/spot06_scene.o" - number 2 -endseg - -beginseg - name "spot06_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot06/spot06_room_0.o" - number 3 -endseg - -beginseg - name "spot07_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot07/spot07_scene.o" - number 2 -endseg - -beginseg - name "spot07_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot07/spot07_room_0.o" - number 3 -endseg - -beginseg - name "spot07_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot07/spot07_room_1.o" - number 3 -endseg - -beginseg - name "spot08_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot08/spot08_scene.o" - number 2 -endseg - -beginseg - name "spot08_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot08/spot08_room_0.o" - number 3 -endseg - -beginseg - name "spot09_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot09/spot09_scene.o" - number 2 -endseg - -beginseg - name "spot09_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot09/spot09_room_0.o" - number 3 -endseg - -beginseg - name "spot10_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_scene.o" - number 2 -endseg - -beginseg - name "spot10_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_0.o" - number 3 -endseg - -beginseg - name "spot10_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_1.o" - number 3 -endseg - -beginseg - name "spot10_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_2.o" - number 3 -endseg - -beginseg - name "spot10_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_3.o" - number 3 -endseg - -beginseg - name "spot10_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_4.o" - number 3 -endseg - -beginseg - name "spot10_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_5.o" - number 3 -endseg - -beginseg - name "spot10_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_6.o" - number 3 -endseg - -beginseg - name "spot10_room_7" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_7.o" - number 3 -endseg - -beginseg - name "spot10_room_8" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_8.o" - number 3 -endseg - -beginseg - name "spot10_room_9" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_9.o" - number 3 -endseg - -beginseg - name "spot11_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot11/spot11_scene.o" - number 2 -endseg - -beginseg - name "spot11_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot11/spot11_room_0.o" - number 3 -endseg - -beginseg - name "spot12_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot12/spot12_scene.o" - number 2 -endseg - -beginseg - name "spot12_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot12/spot12_room_0.o" - number 3 -endseg - -beginseg - name "spot12_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot12/spot12_room_1.o" - number 3 -endseg - -beginseg - name "spot13_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot13/spot13_scene.o" - number 2 -endseg - -beginseg - name "spot13_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot13/spot13_room_0.o" - number 3 -endseg - -beginseg - name "spot13_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot13/spot13_room_1.o" - number 3 -endseg - -beginseg - name "spot15_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot15/spot15_scene.o" - number 2 -endseg - -beginseg - name "spot15_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot15/spot15_room_0.o" - number 3 -endseg - -beginseg - name "spot16_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot16/spot16_scene.o" - number 2 -endseg - -beginseg - name "spot16_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot16/spot16_room_0.o" - number 3 -endseg - -beginseg - name "spot17_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot17/spot17_scene.o" - number 2 -endseg - -beginseg - name "spot17_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot17/spot17_room_0.o" - number 3 -endseg - -beginseg - name "spot17_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot17/spot17_room_1.o" - number 3 -endseg - -beginseg - name "spot18_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot18/spot18_scene.o" - number 2 -endseg - -beginseg - name "spot18_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot18/spot18_room_0.o" - number 3 -endseg - -beginseg - name "spot18_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot18/spot18_room_1.o" - number 3 -endseg - -beginseg - name "spot18_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot18/spot18_room_2.o" - number 3 -endseg - -beginseg - name "spot18_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot18/spot18_room_3.o" - number 3 -endseg - -beginseg - name "market_day_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/market_day/market_day_scene.o" - number 2 -endseg - -beginseg - name "market_day_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/market_day/market_day_room_0.o" - number 3 -endseg - -beginseg - name "market_night_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/market_night/market_night_scene.o" - number 2 -endseg - -beginseg - name "market_night_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/market_night/market_night_room_0.o" - number 3 -endseg - -#if DEBUG_ASSETS -beginseg - name "testroom_scene" - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/test_levels/testroom/testroom_scene.o" - number 2 -endseg - -beginseg - name "testroom_room_0" - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/test_levels/testroom/testroom_room_0.o" - number 3 -endseg - -beginseg - name "testroom_room_1" - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/test_levels/testroom/testroom_room_1.o" - number 3 -endseg - -beginseg - name "testroom_room_2" - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/test_levels/testroom/testroom_room_2.o" - number 3 -endseg - -beginseg - name "testroom_room_3" - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/test_levels/testroom/testroom_room_3.o" - number 3 -endseg - -beginseg - name "testroom_room_4" - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/test_levels/testroom/testroom_room_4.o" - number 3 -endseg -#endif - -beginseg - name "kenjyanoma_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/kenjyanoma/kenjyanoma_scene.o" - number 2 -endseg - -beginseg - name "kenjyanoma_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/kenjyanoma/kenjyanoma_room_0.o" - number 3 -endseg - -beginseg - name "tokinoma_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/tokinoma/tokinoma_scene.o" - number 2 -endseg - -beginseg - name "tokinoma_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/tokinoma/tokinoma_room_0.o" - number 3 -endseg - -beginseg - name "tokinoma_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/tokinoma/tokinoma_room_1.o" - number 3 -endseg - -#if DEBUG_ASSETS -beginseg - name "sutaru_scene" - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/test_levels/sutaru/sutaru_scene.o" - number 2 -endseg - -beginseg - name "sutaru_room_0" - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/test_levels/sutaru/sutaru_room_0.o" - number 3 -endseg -#endif - -beginseg - name "link_home_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/link_home/link_home_scene.o" - number 2 -endseg - -beginseg - name "link_home_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/link_home/link_home_room_0.o" - number 3 -endseg - -beginseg - name "kokiri_shop_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/kokiri_shop/kokiri_shop_scene.o" - number 2 -endseg - -beginseg - name "kokiri_shop_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/kokiri_shop/kokiri_shop_room_0.o" - number 3 -endseg - -beginseg - name "kokiri_home_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home/kokiri_home_scene.o" - number 2 -endseg - -beginseg - name "kokiri_home_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home/kokiri_home_room_0.o" - number 3 -endseg - -beginseg - name "kakusiana_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_scene.o" - number 2 -endseg - -beginseg - name "kakusiana_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_0.o" - number 3 -endseg - -beginseg - name "kakusiana_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_1.o" - number 3 -endseg - -beginseg - name "kakusiana_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_2.o" - number 3 -endseg - -beginseg - name "kakusiana_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_3.o" - number 3 -endseg - -beginseg - name "kakusiana_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_4.o" - number 3 -endseg - -beginseg - name "kakusiana_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_5.o" - number 3 -endseg - -beginseg - name "kakusiana_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_6.o" - number 3 -endseg - -beginseg - name "kakusiana_room_7" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_7.o" - number 3 -endseg - -beginseg - name "kakusiana_room_8" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_8.o" - number 3 -endseg - -beginseg - name "kakusiana_room_9" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_9.o" - number 3 -endseg - -beginseg - name "kakusiana_room_10" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_10.o" - number 3 -endseg - -beginseg - name "kakusiana_room_11" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_11.o" - number 3 -endseg - -beginseg - name "kakusiana_room_12" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_12.o" - number 3 -endseg - -beginseg - name "kakusiana_room_13" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_13.o" - number 3 -endseg - -beginseg - name "entra_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/entra/entra_scene.o" - number 2 -endseg - -beginseg - name "entra_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/entra/entra_room_0.o" - number 3 -endseg - -beginseg - name "moribossroom_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/moribossroom/moribossroom_scene.o" - number 2 -endseg - -beginseg - name "moribossroom_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/moribossroom/moribossroom_room_0.o" - number 3 -endseg - -beginseg - name "moribossroom_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/moribossroom/moribossroom_room_1.o" - number 3 -endseg - -beginseg - name "syatekijyou_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/syatekijyou/syatekijyou_scene.o" - number 2 -endseg - -beginseg - name "syatekijyou_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/syatekijyou/syatekijyou_room_0.o" - number 3 -endseg - -beginseg - name "shop1_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/shop1/shop1_scene.o" - number 2 -endseg - -beginseg - name "shop1_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/shop1/shop1_room_0.o" - number 3 -endseg - -beginseg - name "hairal_niwa_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hairal_niwa/hairal_niwa_scene.o" - number 2 -endseg - -beginseg - name "hairal_niwa_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hairal_niwa/hairal_niwa_room_0.o" - number 3 -endseg - -beginseg - name "ganon_tou_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/ganon_tou/ganon_tou_scene.o" - number 2 -endseg - -beginseg - name "ganon_tou_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/ganon_tou/ganon_tou_room_0.o" - number 3 -endseg - -#if DEBUG_ASSETS -beginseg - name "sasatest_scene" - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/test_levels/sasatest/sasatest_scene.o" - number 2 -endseg - -beginseg - name "sasatest_room_0" - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/test_levels/sasatest/sasatest_room_0.o" - number 3 -endseg -#endif - -beginseg - name "market_alley_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/market_alley/market_alley_scene.o" - number 2 -endseg - -beginseg - name "market_alley_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/market_alley/market_alley_room_0.o" - number 3 -endseg - -beginseg - name "spot20_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot20/spot20_scene.o" - number 2 -endseg - -beginseg - name "spot20_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/overworld/spot20/spot20_room_0.o" - number 3 -endseg - -beginseg - name "market_ruins_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/market_ruins/market_ruins_scene.o" - number 2 -endseg - -beginseg - name "market_ruins_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/market_ruins/market_ruins_room_0.o" - number 3 -endseg - -beginseg - name "entra_n_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/entra_n/entra_n_scene.o" - number 2 -endseg - -beginseg - name "entra_n_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/entra_n/entra_n_room_0.o" - number 3 -endseg - -beginseg - name "enrui_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/enrui/enrui_scene.o" - number 2 -endseg - -beginseg - name "enrui_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/enrui/enrui_room_0.o" - number 3 -endseg - -beginseg - name "market_alley_n_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/market_alley_n/market_alley_n_scene.o" - number 2 -endseg - -beginseg - name "market_alley_n_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/market_alley_n/market_alley_n_room_0.o" - number 3 -endseg - -beginseg - name "hiral_demo_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/hiral_demo/hiral_demo_scene.o" - number 2 -endseg - -beginseg - name "hiral_demo_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/hiral_demo/hiral_demo_room_0.o" - number 3 -endseg - -beginseg - name "kokiri_home3_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home3/kokiri_home3_scene.o" - number 2 -endseg - -beginseg - name "kokiri_home3_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home3/kokiri_home3_room_0.o" - number 3 -endseg - -beginseg - name "malon_stable_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/malon_stable/malon_stable_scene.o" - number 2 -endseg - -beginseg - name "malon_stable_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/malon_stable/malon_stable_room_0.o" - number 3 -endseg - -beginseg - name "kakariko_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/kakariko/kakariko_scene.o" - number 2 -endseg - -beginseg - name "kakariko_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/kakariko/kakariko_room_0.o" - number 3 -endseg - -beginseg - name "bdan_boss_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan_boss/bdan_boss_scene.o" - number 2 -endseg - -beginseg - name "bdan_boss_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan_boss/bdan_boss_room_0.o" - number 3 -endseg - -beginseg - name "bdan_boss_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/bdan_boss/bdan_boss_room_1.o" - number 3 -endseg - -beginseg - name "FIRE_bs_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/FIRE_bs/FIRE_bs_scene.o" - number 2 -endseg - -beginseg - name "FIRE_bs_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/FIRE_bs/FIRE_bs_room_0.o" - number 3 -endseg - -beginseg - name "FIRE_bs_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/FIRE_bs/FIRE_bs_room_1.o" - number 3 -endseg - -beginseg - name "hut_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hut/hut_scene.o" - number 2 -endseg - -beginseg - name "hut_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hut/hut_room_0.o" - number 3 -endseg - -beginseg - name "daiyousei_izumi_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/daiyousei_izumi/daiyousei_izumi_scene.o" - number 2 -endseg - -beginseg - name "daiyousei_izumi_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/daiyousei_izumi/daiyousei_izumi_room_0.o" - number 3 -endseg - -beginseg - name "hakaana_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/hakaana/hakaana_scene.o" - number 2 -endseg - -beginseg - name "hakaana_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/hakaana/hakaana_room_0.o" - number 3 -endseg - -beginseg - name "yousei_izumi_tate_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/yousei_izumi_tate/yousei_izumi_tate_scene.o" - number 2 -endseg - -beginseg - name "yousei_izumi_tate_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/yousei_izumi_tate/yousei_izumi_tate_room_0.o" - number 3 -endseg - -beginseg - name "yousei_izumi_yoko_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/yousei_izumi_yoko/yousei_izumi_yoko_scene.o" - number 2 -endseg - -beginseg - name "yousei_izumi_yoko_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/yousei_izumi_yoko/yousei_izumi_yoko_room_0.o" - number 3 -endseg - -beginseg - name "golon_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/golon/golon_scene.o" - number 2 -endseg - -beginseg - name "golon_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/golon/golon_room_0.o" - number 3 -endseg - -beginseg - name "zoora_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/zoora/zoora_scene.o" - number 2 -endseg - -beginseg - name "zoora_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/zoora/zoora_room_0.o" - number 3 -endseg - -beginseg - name "drag_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/drag/drag_scene.o" - number 2 -endseg - -beginseg - name "drag_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/drag/drag_room_0.o" - number 3 -endseg - -beginseg - name "alley_shop_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/alley_shop/alley_shop_scene.o" - number 2 -endseg - -beginseg - name "alley_shop_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/alley_shop/alley_shop_room_0.o" - number 3 -endseg - -beginseg - name "night_shop_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/night_shop/night_shop_scene.o" - number 2 -endseg - -beginseg - name "night_shop_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/night_shop/night_shop_room_0.o" - number 3 -endseg - -beginseg - name "impa_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/impa/impa_scene.o" - number 2 -endseg - -beginseg - name "impa_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/impa/impa_room_0.o" - number 3 -endseg - -beginseg - name "labo_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/labo/labo_scene.o" - number 2 -endseg - -beginseg - name "labo_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/labo/labo_room_0.o" - number 3 -endseg - -beginseg - name "tent_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/tent/tent_scene.o" - number 2 -endseg - -beginseg - name "tent_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/tent/tent_room_0.o" - number 3 -endseg - -beginseg - name "nakaniwa_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/nakaniwa/nakaniwa_scene.o" - number 2 -endseg - -beginseg - name "nakaniwa_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/nakaniwa/nakaniwa_room_0.o" - number 3 -endseg - -beginseg - name "ddan_boss_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan_boss/ddan_boss_scene.o" - number 2 -endseg - -beginseg - name "ddan_boss_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan_boss/ddan_boss_room_0.o" - number 3 -endseg - -beginseg - name "ddan_boss_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ddan_boss/ddan_boss_room_1.o" - number 3 -endseg - -beginseg - name "ydan_boss_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan_boss/ydan_boss_scene.o" - number 2 -endseg - -beginseg - name "ydan_boss_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan_boss/ydan_boss_room_0.o" - number 3 -endseg - -beginseg - name "ydan_boss_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ydan_boss/ydan_boss_room_1.o" - number 3 -endseg - -beginseg - name "HAKAdan_bs_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan_bs/HAKAdan_bs_scene.o" - number 2 -endseg - -beginseg - name "HAKAdan_bs_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan_bs/HAKAdan_bs_room_0.o" - number 3 -endseg - -beginseg - name "HAKAdan_bs_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan_bs/HAKAdan_bs_room_1.o" - number 3 -endseg - -beginseg - name "MIZUsin_bs_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin_bs/MIZUsin_bs_scene.o" - number 2 -endseg - -beginseg - name "MIZUsin_bs_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin_bs/MIZUsin_bs_room_0.o" - number 3 -endseg - -beginseg - name "MIZUsin_bs_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin_bs/MIZUsin_bs_room_1.o" - number 3 -endseg - -beginseg - name "ganon_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_scene.o" - number 2 -endseg - -beginseg - name "ganon_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_0.o" - number 3 -endseg - -beginseg - name "ganon_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_1.o" - number 3 -endseg - -beginseg - name "ganon_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_2.o" - number 3 -endseg - -beginseg - name "ganon_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_3.o" - number 3 -endseg - -beginseg - name "ganon_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_4.o" - number 3 -endseg - -beginseg - name "ganon_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_5.o" - number 3 -endseg - -beginseg - name "ganon_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_6.o" - number 3 -endseg - -beginseg - name "ganon_room_7" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_7.o" - number 3 -endseg - -beginseg - name "ganon_room_8" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_8.o" - number 3 -endseg - -beginseg - name "ganon_room_9" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_9.o" - number 3 -endseg - -beginseg - name "ganon_boss_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_boss/ganon_boss_scene.o" - number 2 -endseg - -beginseg - name "ganon_boss_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_boss/ganon_boss_room_0.o" - number 3 -endseg - -beginseg - name "jyasinboss_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinboss/jyasinboss_scene.o" - number 2 -endseg - -beginseg - name "jyasinboss_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinboss/jyasinboss_room_0.o" - number 3 -endseg - -beginseg - name "jyasinboss_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinboss/jyasinboss_room_1.o" - number 3 -endseg - -beginseg - name "jyasinboss_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinboss/jyasinboss_room_2.o" - number 3 -endseg - -beginseg - name "jyasinboss_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinboss/jyasinboss_room_3.o" - number 3 -endseg - -beginseg - name "kokiri_home4_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home4/kokiri_home4_scene.o" - number 2 -endseg - -beginseg - name "kokiri_home4_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home4/kokiri_home4_room_0.o" - number 3 -endseg - -beginseg - name "kokiri_home5_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home5/kokiri_home5_scene.o" - number 2 -endseg - -beginseg - name "kokiri_home5_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home5/kokiri_home5_room_0.o" - number 3 -endseg - -beginseg - name "ganon_final_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_final/ganon_final_scene.o" - number 2 -endseg - -beginseg - name "ganon_final_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_final/ganon_final_room_0.o" - number 3 -endseg - -beginseg - name "kakariko3_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakariko3/kakariko3_scene.o" - number 2 -endseg - -beginseg - name "kakariko3_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kakariko3/kakariko3_room_0.o" - number 3 -endseg - -#if DEBUG_ASSETS -beginseg - name "hairal_niwa2_scene" - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hairal_niwa2/hairal_niwa2_scene.o" - number 2 -endseg - -beginseg - name "hairal_niwa2_room_0" - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hairal_niwa2/hairal_niwa2_room_0.o" - number 3 -endseg -#endif - -beginseg - name "hakasitarelay_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_scene.o" - number 2 -endseg - -beginseg - name "hakasitarelay_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_room_0.o" - number 3 -endseg - -beginseg - name "hakasitarelay_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_room_1.o" - number 3 -endseg - -beginseg - name "hakasitarelay_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_room_2.o" - number 3 -endseg - -beginseg - name "hakasitarelay_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_room_3.o" - number 3 -endseg - -beginseg - name "hakasitarelay_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_room_4.o" - number 3 -endseg - -beginseg - name "hakasitarelay_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_room_5.o" - number 3 -endseg - -beginseg - name "hakasitarelay_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_room_6.o" - number 3 -endseg - -beginseg - name "shrine_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/shrine/shrine_scene.o" - number 2 -endseg - -beginseg - name "shrine_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/shrine/shrine_room_0.o" - number 3 -endseg - -beginseg - name "turibori_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/turibori/turibori_scene.o" - number 2 -endseg - -beginseg - name "turibori_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/turibori/turibori_room_0.o" - number 3 -endseg - -beginseg - name "shrine_n_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/shrine_n/shrine_n_scene.o" - number 2 -endseg - -beginseg - name "shrine_n_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/shrine_n/shrine_n_room_0.o" - number 3 -endseg - -beginseg - name "shrine_r_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/shrine_r/shrine_r_scene.o" - number 2 -endseg - -beginseg - name "shrine_r_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/shrine_r/shrine_r_room_0.o" - number 3 -endseg - -beginseg - name "hakaana2_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/hakaana2/hakaana2_scene.o" - number 2 -endseg - -beginseg - name "hakaana2_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/hakaana2/hakaana2_room_0.o" - number 3 -endseg - -beginseg - name "gerudoway_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/gerudoway/gerudoway_scene.o" - number 2 -endseg - -beginseg - name "gerudoway_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/gerudoway/gerudoway_room_0.o" - number 3 -endseg - -beginseg - name "gerudoway_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/gerudoway/gerudoway_room_1.o" - number 3 -endseg - -beginseg - name "gerudoway_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/gerudoway/gerudoway_room_2.o" - number 3 -endseg - -beginseg - name "gerudoway_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/gerudoway/gerudoway_room_3.o" - number 3 -endseg - -beginseg - name "gerudoway_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/gerudoway/gerudoway_room_4.o" - number 3 -endseg - -beginseg - name "gerudoway_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/gerudoway/gerudoway_room_5.o" - number 3 -endseg - -beginseg - name "hairal_niwa_n_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hairal_niwa_n/hairal_niwa_n_scene.o" - number 2 -endseg - -beginseg - name "hairal_niwa_n_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hairal_niwa_n/hairal_niwa_n_room_0.o" - number 3 -endseg - -beginseg - name "bowling_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/bowling/bowling_scene.o" - number 2 -endseg - -beginseg - name "bowling_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/bowling/bowling_room_0.o" - number 3 -endseg - -beginseg - name "hakaana_ouke_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/hakaana_ouke/hakaana_ouke_scene.o" - number 2 -endseg - -beginseg - name "hakaana_ouke_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/hakaana_ouke/hakaana_ouke_room_0.o" - number 3 -endseg - -beginseg - name "hakaana_ouke_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/hakaana_ouke/hakaana_ouke_room_1.o" - number 3 -endseg - -beginseg - name "hakaana_ouke_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/hakaana_ouke/hakaana_ouke_room_2.o" - number 3 -endseg - -beginseg - name "hylia_labo_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hylia_labo/hylia_labo_scene.o" - number 2 -endseg - -beginseg - name "hylia_labo_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/hylia_labo/hylia_labo_room_0.o" - number 3 -endseg - -beginseg - name "souko_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/souko/souko_scene.o" - number 2 -endseg - -beginseg - name "souko_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/souko/souko_room_0.o" - number 3 -endseg - -beginseg - name "souko_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/souko/souko_room_1.o" - number 3 -endseg - -beginseg - name "souko_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/souko/souko_room_2.o" - number 3 -endseg - -beginseg - name "miharigoya_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/miharigoya/miharigoya_scene.o" - number 2 -endseg - -beginseg - name "miharigoya_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/miharigoya/miharigoya_room_0.o" - number 3 -endseg - -beginseg - name "mahouya_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/mahouya/mahouya_scene.o" - number 2 -endseg - -beginseg - name "mahouya_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/mahouya/mahouya_room_0.o" - number 3 -endseg - -beginseg - name "takaraya_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_scene.o" - number 2 -endseg - -beginseg - name "takaraya_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_room_0.o" - number 3 -endseg - -beginseg - name "takaraya_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_room_1.o" - number 3 -endseg - -beginseg - name "takaraya_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_room_2.o" - number 3 -endseg - -beginseg - name "takaraya_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_room_3.o" - number 3 -endseg - -beginseg - name "takaraya_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_room_4.o" - number 3 -endseg - -beginseg - name "takaraya_room_5" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_room_5.o" - number 3 -endseg - -beginseg - name "takaraya_room_6" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_room_6.o" - number 3 -endseg - -beginseg - name "ganon_sonogo_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_sonogo/ganon_sonogo_scene.o" - number 2 -endseg - -beginseg - name "ganon_sonogo_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_sonogo/ganon_sonogo_room_0.o" - number 3 -endseg - -beginseg - name "ganon_sonogo_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_sonogo/ganon_sonogo_room_1.o" - number 3 -endseg - -beginseg - name "ganon_sonogo_room_2" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_sonogo/ganon_sonogo_room_2.o" - number 3 -endseg - -beginseg - name "ganon_sonogo_room_3" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_sonogo/ganon_sonogo_room_3.o" - number 3 -endseg - -beginseg - name "ganon_sonogo_room_4" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_sonogo/ganon_sonogo_room_4.o" - number 3 -endseg - -beginseg - name "ganon_demo_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_demo/ganon_demo_scene.o" - number 2 -endseg - -beginseg - name "ganon_demo_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_demo/ganon_demo_room_0.o" - number 3 -endseg - -#if DEBUG_ASSETS -beginseg - name "besitu_scene" - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/test_levels/besitu/besitu_scene.o" - number 2 -endseg - -beginseg - name "besitu_room_0" - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/test_levels/besitu/besitu_room_0.o" - number 3 -endseg -#endif - -beginseg - name "face_shop_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/face_shop/face_shop_scene.o" - number 2 -endseg - -beginseg - name "face_shop_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/shops/face_shop/face_shop_room_0.o" - number 3 -endseg - -beginseg - name "kinsuta_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kinsuta/kinsuta_scene.o" - number 2 -endseg - -beginseg - name "kinsuta_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/misc/kinsuta/kinsuta_room_0.o" - number 3 -endseg - -beginseg - name "ganontikasonogo_scene" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontikasonogo/ganontikasonogo_scene.o" - number 2 -endseg - -beginseg - name "ganontikasonogo_room_0" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontikasonogo/ganontikasonogo_room_0.o" - number 3 -endseg - -beginseg - name "ganontikasonogo_room_1" - compress - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/dungeons/ganontikasonogo/ganontikasonogo_room_1.o" - number 3 -endseg - -#if DEBUG_ASSETS -beginseg - name "test01_scene" - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/test_levels/test01/test01_scene.o" - number 2 -endseg - -beginseg - name "test01_room_0" - romalign 0x1000 - include "$(BUILD_DIR)/assets/scenes/test_levels/test01/test01_room_0.o" - number 3 -endseg -#endif - -#endif - -beginseg - name "bump_texture_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/baserom/bump_texture_static.o" -endseg - -beginseg - name "anime_model_1_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/baserom/anime_model_1_static.o" -endseg - -beginseg - name "anime_model_2_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/baserom/anime_model_2_static.o" -endseg - -beginseg - name "anime_model_3_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/baserom/anime_model_3_static.o" -endseg - -beginseg - name "anime_model_4_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/baserom/anime_model_4_static.o" -endseg - -beginseg - name "anime_model_5_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/baserom/anime_model_5_static.o" -endseg - -beginseg - name "anime_model_6_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/baserom/anime_model_6_static.o" -endseg - -beginseg - name "anime_texture_1_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/baserom/anime_texture_1_static.o" -endseg - -beginseg - name "anime_texture_2_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/baserom/anime_texture_2_static.o" -endseg - -beginseg - name "anime_texture_3_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/baserom/anime_texture_3_static.o" -endseg - -beginseg - name "anime_texture_4_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/baserom/anime_texture_4_static.o" -endseg - -beginseg - name "anime_texture_5_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/baserom/anime_texture_5_static.o" -endseg - -beginseg - name "anime_texture_6_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/baserom/anime_texture_6_static.o" -endseg - -beginseg - name "softsprite_matrix_static" - compress - romalign 0x1000 - include "$(BUILD_DIR)/baserom/softsprite_matrix_static.o" -endseg diff --git a/spec/boot_libultra_gc.inc b/spec/boot_libultra_gc.inc new file mode 100644 index 0000000000..963e47215e --- /dev/null +++ b/spec/boot_libultra_gc.inc @@ -0,0 +1,92 @@ + include "$(BUILD_DIR)/src/libultra/io/piacs.o" + include "$(BUILD_DIR)/src/libultra/os/sendmesg.o" + include "$(BUILD_DIR)/src/libultra/os/stopthread.o" + include "$(BUILD_DIR)/src/libultra/io/viextendvstart.o" + include "$(BUILD_DIR)/src/libultra/io/vimodepallan1.o" + include "$(BUILD_DIR)/src/libultra/os/recvmesg.o" + include "$(BUILD_DIR)/src/libultra/os/initialize.o" + include "$(BUILD_DIR)/src/libultra/libc/ll.o" + include "$(BUILD_DIR)/src/libultra/os/exceptasm.o" + include "$(BUILD_DIR)/src/libultra/os/thread.o" + include "$(BUILD_DIR)/src/libultra/os/destroythread.o" + include "$(BUILD_DIR)/src/libultra/libc/bzero.o" + include "$(BUILD_DIR)/src/libultra/os/parameters.o" + include "$(BUILD_DIR)/src/libultra/os/createthread.o" + include "$(BUILD_DIR)/src/libultra/os/setsr.o" + include "$(BUILD_DIR)/src/libultra/os/getsr.o" + include "$(BUILD_DIR)/src/libultra/os/writebackdcache.o" + include "$(BUILD_DIR)/src/libultra/io/vigetnextframebuf.o" + include "$(BUILD_DIR)/src/libultra/io/pimgr.o" + include "$(BUILD_DIR)/src/libultra/os/kdebugserver.o" + include "$(BUILD_DIR)/src/libultra/io/devmgr.o" + include "$(BUILD_DIR)/src/libultra/io/pirawdma.o" + include "$(BUILD_DIR)/src/libultra/os/virtualtophysical.o" + include "$(BUILD_DIR)/src/libultra/io/viblack.o" + include "$(BUILD_DIR)/src/libultra/io/sirawread.o" + include "$(BUILD_DIR)/src/libultra/os/getthreadid.o" + include "$(BUILD_DIR)/src/libultra/os/setintmask.o" + include "$(BUILD_DIR)/src/libultra/io/visetmode.o" + include "$(BUILD_DIR)/src/libultra/os/probetlb.o" + include "$(BUILD_DIR)/src/libultra/os/getmemsize.o" + include "$(BUILD_DIR)/src/libultra/os/seteventmesg.o" +#if DEBUG_FEATURES + include "$(BUILD_DIR)/src/libultra/libc/xprintf.o" +#endif + include "$(BUILD_DIR)/src/libultra/os/unmaptlball.o" + include "$(BUILD_DIR)/src/libultra/io/epidma.o" +#if DEBUG_FEATURES + include "$(BUILD_DIR)/src/libultra/libc/string.o" +#endif + include "$(BUILD_DIR)/src/libultra/os/invalicache.o" + include "$(BUILD_DIR)/src/libultra/os/createmesgqueue.o" + include "$(BUILD_DIR)/src/libultra/os/invaldcache.o" + include "$(BUILD_DIR)/src/libultra/io/si.o" + include "$(BUILD_DIR)/src/libultra/os/jammesg.o" + include "$(BUILD_DIR)/src/libultra/os/setthreadpri.o" + include "$(BUILD_DIR)/src/libultra/os/getthreadpri.o" + include "$(BUILD_DIR)/src/libultra/io/epirawread.o" + include "$(BUILD_DIR)/src/libultra/io/viswapbuf.o" + include "$(BUILD_DIR)/src/libultra/io/epirawdma.o" + include "$(BUILD_DIR)/src/libultra/libc/bcmp.o" + include "$(BUILD_DIR)/src/libultra/os/gettime.o" + include "$(BUILD_DIR)/src/libultra/os/timerintr.o" + include "$(BUILD_DIR)/src/libultra/os/getcount.o" + include "$(BUILD_DIR)/src/libultra/os/setglobalintmask.o" + include "$(BUILD_DIR)/src/libultra/os/setcompare.o" + include "$(BUILD_DIR)/src/libultra/libc/bcopy.o" + include "$(BUILD_DIR)/src/libultra/os/resetglobalintmask.o" + include "$(BUILD_DIR)/src/libultra/os/interrupt.o" + include "$(BUILD_DIR)/src/libultra/io/vimodentsclan1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodempallan1.o" + include "$(BUILD_DIR)/src/libultra/io/vi.o" + include "$(BUILD_DIR)/src/libultra/io/viswapcontext.o" + include "$(BUILD_DIR)/src/libultra/io/pigetcmdq.o" + include "$(BUILD_DIR)/src/libultra/io/epiread.o" + include "$(BUILD_DIR)/src/libultra/io/visetspecial.o" + include "$(BUILD_DIR)/src/libultra/io/cartrominit.o" +#if DEBUG_FEATURES + include "$(BUILD_DIR)/src/libultra/io/vimodefpallan1.o" +#endif + include "$(BUILD_DIR)/src/libultra/os/setfpccsr.o" + include "$(BUILD_DIR)/src/libultra/os/getfpccsr.o" +#if DEBUG_FEATURES + include "$(BUILD_DIR)/src/libultra/io/epiwrite.o" +#endif + include "$(BUILD_DIR)/src/libultra/os/maptlbrdb.o" + include "$(BUILD_DIR)/src/libultra/os/yieldthread.o" + include "$(BUILD_DIR)/src/libultra/os/getcause.o" + include "$(BUILD_DIR)/src/libultra/io/epirawwrite.o" +#if DEBUG_FEATURES + include "$(BUILD_DIR)/src/libultra/libc/xlitob.o" + include "$(BUILD_DIR)/src/libultra/libc/ldiv.o" + include "$(BUILD_DIR)/src/libultra/libc/xldtob.o" +#endif + include "$(BUILD_DIR)/src/libultra/io/sirawwrite.o" + include "$(BUILD_DIR)/src/libultra/io/vimgr.o" + include "$(BUILD_DIR)/src/libultra/io/vigetcurrcontext.o" + include "$(BUILD_DIR)/src/libultra/os/startthread.o" + include "$(BUILD_DIR)/src/libultra/io/visetyscale.o" + include "$(BUILD_DIR)/src/libultra/io/visetxscale.o" + include "$(BUILD_DIR)/src/libultra/os/sethwintrroutine.o" + include "$(BUILD_DIR)/src/libultra/os/gethwintrroutine.o" + include "$(BUILD_DIR)/src/libultra/os/setwatchlo.o" diff --git a/spec/boot_libultra_ique.inc b/spec/boot_libultra_ique.inc new file mode 100644 index 0000000000..ac943b2268 --- /dev/null +++ b/spec/boot_libultra_ique.inc @@ -0,0 +1,73 @@ + include "$(BUILD_DIR)/src/libultra/os/invaldcache.o" + include "$(BUILD_DIR)/src/libultra/os/invalicache.o" + include "$(BUILD_DIR)/src/libultra/libc/bcmp.o" + include "$(BUILD_DIR)/src/libultra/libc/bzero.o" + include "$(BUILD_DIR)/src/libultra/os/createmesgqueue.o" + include "$(BUILD_DIR)/src/libultra/os/recvmesg.o" + include "$(BUILD_DIR)/src/libultra/os/sendmesg.o" + include "$(BUILD_DIR)/src/libultra/os/getfpccsr.o" + include "$(BUILD_DIR)/src/libultra/os/getsr.o" + include "$(BUILD_DIR)/src/libultra/os/setfpccsr.o" + include "$(BUILD_DIR)/src/libultra/os/setsr.o" + include "$(BUILD_DIR)/src/libultra/os/createthread.o" + include "$(BUILD_DIR)/src/libultra/os/setthreadpri.o" + include "$(BUILD_DIR)/src/libultra/os/startthread.o" + include "$(BUILD_DIR)/src/libultra/os/stopthread.o" + include "$(BUILD_DIR)/src/libultra/os/thread.o" + include "$(BUILD_DIR)/src/libultra/os/gettime.o" + include "$(BUILD_DIR)/src/libultra/os/timerintr.o" + include "$(BUILD_DIR)/src/libultra/io/vigetnextframebuf.o" + include "$(BUILD_DIR)/src/libultra/io/vimgr.o" + include "$(BUILD_DIR)/src/libultra/io/vimodentsclan1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodepallan1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodempallan1.o" + include "$(BUILD_DIR)/src/libultra/io/visetmode.o" + include "$(BUILD_DIR)/src/libultra/io/visetspecial.o" + include "$(BUILD_DIR)/src/libultra/io/visetxscale.o" + include "$(BUILD_DIR)/src/libultra/io/visetyscale.o" + include "$(BUILD_DIR)/src/libultra/io/viswapbuf.o" + include "$(BUILD_DIR)/src/libultra/io/viswapcontext.o" + include "$(BUILD_DIR)/src/libultra/io/viblack.o" + include "$(BUILD_DIR)/src/libultra/io/viextendvstart.o" + include "$(BUILD_DIR)/src/libultra/os/exceptasm.o" + include "$(BUILD_DIR)/src/libultra/os/interrupt.o" + include "$(BUILD_DIR)/src/libultra/os/setintmask.o" + include "$(BUILD_DIR)/src/libultra/os/sethwintrroutine.o" + include "$(BUILD_DIR)/src/libultra/os/gethwintrroutine.o" + include "$(BUILD_DIR)/src/libultra/io/pimgr.o" + include "$(BUILD_DIR)/src/libultra/os/kdebugserver.o" + include "$(BUILD_DIR)/src/libultra/io/epirawdma.o" + include "$(BUILD_DIR)/src/libultra/io/epiread.o" + include "$(BUILD_DIR)/src/libultra/io/epidma.o" + include "$(BUILD_DIR)/src/libultra/io/cartrominit.o" + include "$(BUILD_DIR)/src/libultra/io/devmgr.o" + include "$(BUILD_DIR)/src/libultra/io/piacs.o" + include "$(BUILD_DIR)/src/libultra/os/parameters.o" + include "$(BUILD_DIR)/src/libultra/os/getmemsize.o" + include "$(BUILD_DIR)/src/libultra/os/initialize.o" + include "$(BUILD_DIR)/src/libultra/os/writebackdcache.o" + include "$(BUILD_DIR)/src/libultra/os/virtualtophysical.o" + include "$(BUILD_DIR)/src/libultra/libc/bcopy.o" + include "$(BUILD_DIR)/src/libultra/os/jammesg.o" + include "$(BUILD_DIR)/src/libultra/os/seteventmesg.o" + include "$(BUILD_DIR)/src/libultra/os/getcause.o" + include "$(BUILD_DIR)/src/libultra/os/setwatchlo.o" + include "$(BUILD_DIR)/src/libultra/reg/_getcount.o" + include "$(BUILD_DIR)/src/libultra/reg/_setcompare.o" + include "$(BUILD_DIR)/src/libultra/io/sirawread.o" + include "$(BUILD_DIR)/src/libultra/io/sirawwrite.o" + include "$(BUILD_DIR)/src/libultra/os/destroythread.o" + include "$(BUILD_DIR)/src/libultra/os/getthreadpri.o" + include "$(BUILD_DIR)/src/libultra/os/yieldthread.o" + include "$(BUILD_DIR)/src/libultra/os/probetlb.o" + include "$(BUILD_DIR)/src/libultra/os/maptlbrdb.o" + include "$(BUILD_DIR)/src/libultra/os/unmaptlball.o" + include "$(BUILD_DIR)/src/libultra/io/vi.o" + include "$(BUILD_DIR)/src/libultra/io/vigetcurrcontext.o" + include "$(BUILD_DIR)/src/libultra/os/setglobalintmask.o" + include "$(BUILD_DIR)/src/libultra/os/resetglobalintmask.o" + include "$(BUILD_DIR)/src/libultra/io/pirawdma.o" + include "$(BUILD_DIR)/src/libultra/io/pigetcmdq.o" + include "$(BUILD_DIR)/src/libultra/io/epirawread.o" + include "$(BUILD_DIR)/src/libultra/io/epirawwrite.o" + include "$(BUILD_DIR)/src/libultra/io/si.o" diff --git a/spec/boot_libultra_n64.inc b/spec/boot_libultra_n64.inc new file mode 100644 index 0000000000..70c7d373a6 --- /dev/null +++ b/spec/boot_libultra_n64.inc @@ -0,0 +1,95 @@ + include "$(BUILD_DIR)/src/libultra/io/piacs.o" + include "$(BUILD_DIR)/src/libultra/os/sendmesg.o" + include "$(BUILD_DIR)/src/libultra/os/stopthread.o" +#if OOT_VERSION >= PAL_1_0 + include "$(BUILD_DIR)/src/libultra/io/viextendvstart.o" + include "$(BUILD_DIR)/src/libultra/io/vimodepallan1.o" +#endif + include "$(BUILD_DIR)/src/libultra/os/recvmesg.o" + include "$(BUILD_DIR)/src/libultra/libc/ll.o" + include "$(BUILD_DIR)/src/libultra/os/exceptasm.o" + include "$(BUILD_DIR)/src/libultra/os/thread.o" + include "$(BUILD_DIR)/src/libultra/os/destroythread.o" + include "$(BUILD_DIR)/src/libultra/libc/bzero.o" + include "$(BUILD_DIR)/src/libultra/os/createthread.o" + include "$(BUILD_DIR)/src/libultra/os/initialize.o" + include "$(BUILD_DIR)/src/libultra/os/parameters.o" + include "$(BUILD_DIR)/src/libultra/os/setsr.o" + include "$(BUILD_DIR)/src/libultra/os/getsr.o" + include "$(BUILD_DIR)/src/libultra/os/writebackdcache.o" + include "$(BUILD_DIR)/src/libultra/io/vigetnextframebuf.o" + include "$(BUILD_DIR)/src/libultra/io/pimgr.o" + include "$(BUILD_DIR)/src/libultra/os/kdebugserver.o" + include "$(BUILD_DIR)/src/libultra/io/devmgr.o" + include "$(BUILD_DIR)/src/libultra/io/pirawdma.o" + include "$(BUILD_DIR)/src/libultra/os/virtualtophysical.o" + include "$(BUILD_DIR)/src/libultra/io/viblack.o" + include "$(BUILD_DIR)/src/libultra/io/sirawread.o" + include "$(BUILD_DIR)/src/libultra/os/getthreadid.o" + include "$(BUILD_DIR)/src/libultra/os/setintmask.o" + include "$(BUILD_DIR)/src/libultra/io/visetmode.o" + include "$(BUILD_DIR)/src/libultra/os/probetlb.o" + include "$(BUILD_DIR)/src/libultra/os/getmemsize.o" + include "$(BUILD_DIR)/src/libultra/os/seteventmesg.o" + include "$(BUILD_DIR)/src/libultra/os/unmaptlball.o" + include "$(BUILD_DIR)/src/libultra/io/epidma.o" + include "$(BUILD_DIR)/src/libultra/os/invalicache.o" + include "$(BUILD_DIR)/src/libultra/os/createmesgqueue.o" + include "$(BUILD_DIR)/src/libultra/os/invaldcache.o" + include "$(BUILD_DIR)/src/libultra/io/si.o" + include "$(BUILD_DIR)/src/libultra/os/jammesg.o" + include "$(BUILD_DIR)/src/libultra/os/setthreadpri.o" + include "$(BUILD_DIR)/src/libultra/os/getthreadpri.o" + include "$(BUILD_DIR)/src/libultra/io/epirawread.o" +#if OOT_VERSION >= PAL_1_0 + include "$(BUILD_DIR)/src/libultra/io/viswapbuf.o" +#endif + include "$(BUILD_DIR)/src/libultra/io/epirawdma.o" + include "$(BUILD_DIR)/src/libultra/os/gettime.o" + include "$(BUILD_DIR)/src/libultra/os/timerintr.o" + include "$(BUILD_DIR)/src/libultra/os/getcount.o" + include "$(BUILD_DIR)/src/libultra/os/setglobalintmask.o" + include "$(BUILD_DIR)/src/libultra/os/setcompare.o" + include "$(BUILD_DIR)/src/libultra/libc/bcopy.o" + include "$(BUILD_DIR)/src/libultra/os/resetglobalintmask.o" + include "$(BUILD_DIR)/src/libultra/os/interrupt.o" +#if OOT_NTSC + include "$(BUILD_DIR)/src/libultra/io/vimodentsclan1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodempallan1.o" +#endif + include "$(BUILD_DIR)/src/libultra/io/vi.o" +#if OOT_PAL + include "$(BUILD_DIR)/src/libultra/io/vimodentsclan1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodempallan1.o" +#endif +#if OOT_VERSION < PAL_1_0 + include "$(BUILD_DIR)/src/libultra/io/vimodepallan1.o" +#endif + include "$(BUILD_DIR)/src/libultra/io/viswapcontext.o" + include "$(BUILD_DIR)/src/libultra/io/pigetcmdq.o" + include "$(BUILD_DIR)/src/libultra/io/epiread.o" +#if OOT_VERSION >= PAL_1_0 + include "$(BUILD_DIR)/src/libultra/io/visetspecial.o" +#endif + include "$(BUILD_DIR)/src/libultra/io/cartrominit.o" +#if OOT_PAL + include "$(BUILD_DIR)/src/libultra/io/vimodefpallan1.o" +#endif + include "$(BUILD_DIR)/src/libultra/os/setfpccsr.o" + include "$(BUILD_DIR)/src/libultra/os/getfpccsr.o" + include "$(BUILD_DIR)/src/libultra/io/epiwrite.o" + include "$(BUILD_DIR)/src/libultra/os/maptlbrdb.o" + include "$(BUILD_DIR)/src/libultra/os/yieldthread.o" + include "$(BUILD_DIR)/src/libultra/os/getcause.o" + include "$(BUILD_DIR)/src/libultra/io/epirawwrite.o" + include "$(BUILD_DIR)/src/libultra/os/settimer.o" + include "$(BUILD_DIR)/src/libultra/io/sirawwrite.o" + include "$(BUILD_DIR)/src/libultra/io/vimgr.o" + include "$(BUILD_DIR)/src/libultra/io/vigetcurrcontext.o" + include "$(BUILD_DIR)/src/libultra/os/startthread.o" +#if OOT_VERSION >= PAL_1_0 + include "$(BUILD_DIR)/src/libultra/io/visetyscale.o" + include "$(BUILD_DIR)/src/libultra/io/visetxscale.o" +#endif + include "$(BUILD_DIR)/src/libultra/os/sethwintrroutine.o" + include "$(BUILD_DIR)/src/libultra/os/gethwintrroutine.o" diff --git a/spec/code_libultra_gc.inc b/spec/code_libultra_gc.inc new file mode 100644 index 0000000000..25839bc917 --- /dev/null +++ b/spec/code_libultra_gc.inc @@ -0,0 +1,95 @@ +#if DEBUG_FEATURES + include "$(BUILD_DIR)/src/libultra/io/pfsfreeblocks.o" +#endif + include "$(BUILD_DIR)/src/libultra/mgu/scale.o" + include "$(BUILD_DIR)/src/libultra/gu/sinf.o" + include "$(BUILD_DIR)/src/libultra/gu/sins.o" + include "$(BUILD_DIR)/src/libultra/io/sptask.o" + include "$(BUILD_DIR)/src/libultra/io/motor.o" + include "$(BUILD_DIR)/src/libultra/io/siacs.o" + include "$(BUILD_DIR)/src/libultra/io/controller.o" + include "$(BUILD_DIR)/src/libultra/io/contreaddata.o" + include "$(BUILD_DIR)/src/libultra/gu/perspective.o" + include "$(BUILD_DIR)/src/libultra/io/sprawdma.o" + include "$(BUILD_DIR)/src/libultra/io/sirawdma.o" + include "$(BUILD_DIR)/src/libultra/io/sptaskyield.o" +#if DEBUG_FEATURES + include "$(BUILD_DIR)/src/libultra/io/pfsreadwritefile.o" + include "$(BUILD_DIR)/src/libultra/io/pfsgetstatus.o" +#endif + include "$(BUILD_DIR)/src/libultra/mgu/mtxidentf.o" + include "$(BUILD_DIR)/src/libultra/gu/lookat.o" +#if DEBUG_FEATURES + include "$(BUILD_DIR)/src/libultra/io/pfsallocatefile.o" +#endif + include "$(BUILD_DIR)/src/libultra/os/stoptimer.o" +#if DEBUG_FEATURES + include "$(BUILD_DIR)/src/libultra/io/contpfs.o" + include "$(BUILD_DIR)/src/libultra/mgu/mtxl2f.o" + include "$(BUILD_DIR)/src/libultra/io/pfsfindfile.o" +#endif + include "$(BUILD_DIR)/src/libultra/gu/sqrtf.o" + include "$(BUILD_DIR)/src/libultra/os/afterprenmi.o" + include "$(BUILD_DIR)/src/libultra/io/contquery.o" + include "$(BUILD_DIR)/src/libultra/gu/lookathil.o" +#if !DEBUG_FEATURES + include "$(BUILD_DIR)/src/libultra/libc/xprintf.o" + include "$(BUILD_DIR)/src/libultra/libc/string.o" +#endif + include "$(BUILD_DIR)/src/libultra/io/sp.o" + include "$(BUILD_DIR)/src/libultra/mgu/mtxident.o" + include "$(BUILD_DIR)/src/libultra/gu/position.o" + include "$(BUILD_DIR)/src/libultra/io/sptaskyielded.o" + include "$(BUILD_DIR)/src/libultra/gu/rotate.o" + include "$(BUILD_DIR)/src/libultra/io/aisetfreq.o" + include "$(BUILD_DIR)/src/libultra/os/getactivequeue.o" + include "$(BUILD_DIR)/src/libultra/mgu/normalize.o" + include "$(BUILD_DIR)/src/libultra/io/dpgetstat.o" + include "$(BUILD_DIR)/src/libultra/io/dpsetstat.o" +#if DEBUG_FEATURES + include "$(BUILD_DIR)/src/libultra/io/pfsdeletefile.o" +#endif + include "$(BUILD_DIR)/src/libultra/gu/ortho.o" + include "$(BUILD_DIR)/src/libultra/gu/cosf.o" + include "$(BUILD_DIR)/src/libultra/gu/libm_vals.o" + include "$(BUILD_DIR)/src/libultra/gu/coss.o" + include "$(BUILD_DIR)/src/libultra/io/visetevent.o" +#if DEBUG_FEATURES + include "$(BUILD_DIR)/src/libultra/io/pfsisplug.o" +#endif + include "$(BUILD_DIR)/src/libultra/gu/us2dex.o" + include "$(BUILD_DIR)/src/libultra/io/pfsselectbank.o" + include "$(BUILD_DIR)/src/libultra/io/contsetch.o" +#if DEBUG_FEATURES + include "$(BUILD_DIR)/src/libultra/io/pfsfilestate.o" + include "$(BUILD_DIR)/src/libultra/io/pfsinitpak.o" + include "$(BUILD_DIR)/src/libultra/io/pfschecker.o" +#endif + include "$(BUILD_DIR)/src/libultra/io/aigetlen.o" + include "$(BUILD_DIR)/src/libultra/mgu/translate.o" + include "$(BUILD_DIR)/src/libultra/io/contramwrite.o" +#if !DEBUG_FEATURES + include "$(BUILD_DIR)/src/libultra/io/vimodefpallan1.o" + include "$(BUILD_DIR)/src/libultra/io/pfsgetstatus.o" + include "$(BUILD_DIR)/src/libultra/io/contpfs.o" +#endif + include "$(BUILD_DIR)/src/libultra/io/contramread.o" + include "$(BUILD_DIR)/src/libultra/io/crc.o" +#if !DEBUG_FEATURES + include "$(BUILD_DIR)/src/libultra/io/pfsisplug.o" +#endif + include "$(BUILD_DIR)/src/libultra/os/settimer.o" +#if !DEBUG_FEATURES + include "$(BUILD_DIR)/src/libultra/libc/xldtob.o" + include "$(BUILD_DIR)/src/libultra/libc/ldiv.o" + include "$(BUILD_DIR)/src/libultra/libc/xlitob.o" +#endif + include "$(BUILD_DIR)/src/libultra/io/spgetstat.o" + include "$(BUILD_DIR)/src/libultra/io/spsetstat.o" + include "$(BUILD_DIR)/src/libultra/os/writebackdcacheall.o" + include "$(BUILD_DIR)/src/libultra/os/getcurrfaultedthread.o" + include "$(BUILD_DIR)/src/libultra/mgu/mtxf2l.o" + include "$(BUILD_DIR)/src/libultra/libc/llcvt.o" + include "$(BUILD_DIR)/src/libultra/io/vigetcurrframebuf.o" + include "$(BUILD_DIR)/src/libultra/io/spsetpc.o" + include "$(BUILD_DIR)/src/libc/sqrt.o" diff --git a/spec/code_libultra_ique.inc b/spec/code_libultra_ique.inc new file mode 100644 index 0000000000..4e53234778 --- /dev/null +++ b/spec/code_libultra_ique.inc @@ -0,0 +1,125 @@ + include "$(BUILD_DIR)/src/libultra/io/aigetlen.o" + include "$(BUILD_DIR)/src/libultra/io/aisetfreq.o" + include "$(BUILD_DIR)/src/libultra/audio/sl.o" + include "$(BUILD_DIR)/src/libultra/audio/synthesizer.o" + include "$(BUILD_DIR)/src/libultra/audio/syndelete.o" + include "$(BUILD_DIR)/src/libultra/audio/synallocfx.o" + include "$(BUILD_DIR)/src/libultra/os/writebackdcacheall.o" + include "$(BUILD_DIR)/src/libultra/io/contquery.o" + include "$(BUILD_DIR)/src/libultra/io/contreaddata.o" + include "$(BUILD_DIR)/src/libultra/io/controller.o" + include "$(BUILD_DIR)/src/libultra/io/contsetch.o" + include "$(BUILD_DIR)/src/libultra/gu/sqrtf.o" + include "$(BUILD_DIR)/src/libultra/gu/cosf.o" + include "$(BUILD_DIR)/src/libultra/gu/coss.o" + include "$(BUILD_DIR)/src/libultra/gu/lookat.o" + include "$(BUILD_DIR)/src/libultra/gu/lookathil.o" + include "$(BUILD_DIR)/src/libultra/gu/ortho.o" + include "$(BUILD_DIR)/src/libultra/gu/perspective.o" + include "$(BUILD_DIR)/src/libultra/gu/position.o" + include "$(BUILD_DIR)/src/libultra/gu/sinf.o" + include "$(BUILD_DIR)/src/libultra/gu/sins.o" + include "$(BUILD_DIR)/src/libultra/gu/us2dex.o" + include "$(BUILD_DIR)/src/libultra/libc/ll.o" + include "$(BUILD_DIR)/src/libultra/libc/llcvt.o" + include "$(BUILD_DIR)/src/libultra/libc/string.o" + include "$(BUILD_DIR)/src/libultra/libc/xprintf.o" + include "$(BUILD_DIR)/src/libultra/io/dpgetstat.o" + include "$(BUILD_DIR)/src/libultra/io/dpsetstat.o" + include "$(BUILD_DIR)/src/libultra/io/spgetstat.o" + include "$(BUILD_DIR)/src/libultra/io/spsetstat.o" + include "$(BUILD_DIR)/src/libultra/io/sptask.o" + include "$(BUILD_DIR)/src/libultra/io/sptaskyield.o" + include "$(BUILD_DIR)/src/libultra/io/sptaskyielded.o" + include "$(BUILD_DIR)/src/libultra/io/sirawdma.o" + include "$(BUILD_DIR)/src/libultra/io/siacs.o" + include "$(BUILD_DIR)/src/libultra/os/getthreadid.o" + include "$(BUILD_DIR)/src/libultra/os/getactivequeue.o" + include "$(BUILD_DIR)/src/libultra/os/settimer.o" + include "$(BUILD_DIR)/src/libultra/os/stoptimer.o" + include "$(BUILD_DIR)/src/libultra/io/vigetcurrframebuf.o" + include "$(BUILD_DIR)/src/libultra/io/visetevent.o" + include "$(BUILD_DIR)/src/libultra/io/vitbl.o" + include "$(BUILD_DIR)/src/libultra/io/vimodentsclpn1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodentsclpf1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodentsclaf1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodentsclpn2.o" + include "$(BUILD_DIR)/src/libultra/io/vimodentsclpf2.o" + include "$(BUILD_DIR)/src/libultra/io/vimodentsclan2.o" + include "$(BUILD_DIR)/src/libultra/io/vimodentsclaf2.o" + include "$(BUILD_DIR)/src/libultra/io/vimodentschpn1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodentschpf1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodentschan1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodentschaf1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodentschpn2.o" + include "$(BUILD_DIR)/src/libultra/io/vimodentschpf2.o" + include "$(BUILD_DIR)/src/libultra/io/vimodepallpn1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodepallpf1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodepallaf1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodepallpn2.o" + include "$(BUILD_DIR)/src/libultra/io/vimodepallpf2.o" + include "$(BUILD_DIR)/src/libultra/io/vimodepallan2.o" + include "$(BUILD_DIR)/src/libultra/io/vimodepallaf2.o" + include "$(BUILD_DIR)/src/libultra/io/vimodepalhpn1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodepalhpf1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodepalhan1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodepalhaf1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodepalhpn2.o" + include "$(BUILD_DIR)/src/libultra/io/vimodepalhpf2.o" + include "$(BUILD_DIR)/src/libultra/io/vimodempallpn1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodempallpf1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodempallaf1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodempallpn2.o" + include "$(BUILD_DIR)/src/libultra/io/vimodempallpf2.o" + include "$(BUILD_DIR)/src/libultra/io/vimodempallan2.o" + include "$(BUILD_DIR)/src/libultra/io/vimodempallaf2.o" + include "$(BUILD_DIR)/src/libultra/io/vimodempalhpn1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodempalhpf1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodempalhan1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodempalhaf1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodempalhpn2.o" + include "$(BUILD_DIR)/src/libultra/io/vimodempalhpf2.o" + include "$(BUILD_DIR)/src/libultra/io/vimodefpallpn1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodefpallpf1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodefpallan1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodefpallaf1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodefpallpn2.o" + include "$(BUILD_DIR)/src/libultra/io/vimodefpallpf2.o" + include "$(BUILD_DIR)/src/libultra/io/vimodefpallan2.o" + include "$(BUILD_DIR)/src/libultra/io/vimodefpallaf2.o" + include "$(BUILD_DIR)/src/libultra/io/vimodefpalhpn1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodefpalhpf1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodefpalhan1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodefpalhaf1.o" + include "$(BUILD_DIR)/src/libultra/io/vimodefpalhpn2.o" + include "$(BUILD_DIR)/src/libultra/io/vimodefpalhpf2.o" + include "$(BUILD_DIR)/src/libultra/mgu/mtxident.o" + include "$(BUILD_DIR)/src/libultra/mgu/mtxidentf.o" + include "$(BUILD_DIR)/src/libultra/mgu/mtxf2l.o" + include "$(BUILD_DIR)/src/libultra/mgu/scale.o" + include "$(BUILD_DIR)/src/libultra/mgu/translate.o" + include "$(BUILD_DIR)/src/libultra/gu/rotate.o" + include "$(BUILD_DIR)/src/libultra/os/getcurrfaultedthread.o" + include "$(BUILD_DIR)/src/libultra/bb/sk/skapi.o" + include "$(BUILD_DIR)/src/libultra/bb/sa/common.o" + include "$(BUILD_DIR)/src/libultra/io/motor.o" + include "$(BUILD_DIR)/src/libultra/os/afterprenmi.o" + include "$(BUILD_DIR)/src/libultra/audio/drvrnew.o" + include "$(BUILD_DIR)/src/libultra/audio/load.o" + include "$(BUILD_DIR)/src/libultra/audio/auxbus.o" + include "$(BUILD_DIR)/src/libultra/audio/env.o" + include "$(BUILD_DIR)/src/libultra/audio/filter.o" + include "$(BUILD_DIR)/src/libultra/audio/mainbus.o" + include "$(BUILD_DIR)/src/libultra/audio/resample.o" + include "$(BUILD_DIR)/src/libultra/audio/reverb.o" + include "$(BUILD_DIR)/src/libultra/audio/save.o" + include "$(BUILD_DIR)/src/libultra/audio/heapalloc.o" + include "$(BUILD_DIR)/src/libultra/audio/copy.o" + include "$(BUILD_DIR)/src/libultra/gu/libm_vals.o" + include "$(BUILD_DIR)/src/libultra/libc/xlitob.o" + include "$(BUILD_DIR)/src/libultra/libc/xldtob.o" + include "$(BUILD_DIR)/src/libultra/io/sp.o" + include "$(BUILD_DIR)/src/libultra/io/spsetpc.o" + include "$(BUILD_DIR)/src/libultra/io/sprawdma.o" + include "$(BUILD_DIR)/src/libultra/mgu/normalize.o" + include "$(BUILD_DIR)/src/libultra/libc/ldiv.o" diff --git a/spec/code_libultra_n64.inc b/spec/code_libultra_n64.inc new file mode 100644 index 0000000000..7535025d1e --- /dev/null +++ b/spec/code_libultra_n64.inc @@ -0,0 +1,72 @@ + include "$(BUILD_DIR)/src/libultra/os/getintmask.o" + include "$(BUILD_DIR)/src/libultra/gu/scale.o" + include "$(BUILD_DIR)/src/libultra/gu/sinf.o" + include "$(BUILD_DIR)/src/libultra/gu/sins.o" + include "$(BUILD_DIR)/src/libultra/io/sptask.o" + include "$(BUILD_DIR)/src/libultra/io/motor.o" + include "$(BUILD_DIR)/src/libultra/io/siacs.o" + include "$(BUILD_DIR)/src/libultra/io/controller.o" + include "$(BUILD_DIR)/src/libultra/io/contreaddata.o" + include "$(BUILD_DIR)/src/libultra/gu/perspective.o" + include "$(BUILD_DIR)/src/libultra/io/sprawdma.o" + include "$(BUILD_DIR)/src/libultra/io/sirawdma.o" + include "$(BUILD_DIR)/src/libultra/io/sptaskyield.o" + include "$(BUILD_DIR)/src/libultra/gu/mtxutil.o" + include "$(BUILD_DIR)/src/libultra/gu/lookat.o" + include "$(BUILD_DIR)/src/libultra/os/stoptimer.o" + include "$(BUILD_DIR)/src/libultra/gu/sqrtf.o" + include "$(BUILD_DIR)/src/libultra/os/afterprenmi.o" + include "$(BUILD_DIR)/src/libultra/io/contquery.o" + include "$(BUILD_DIR)/src/libultra/gu/lookathil.o" + include "$(BUILD_DIR)/src/libultra/libc/xprintf.o" + include "$(BUILD_DIR)/src/libultra/libc/string.o" + include "$(BUILD_DIR)/src/libultra/io/sp.o" +#if OOT_VERSION < PAL_1_0 + include "$(BUILD_DIR)/src/libultra/io/viswapbuf.o" +#endif + include "$(BUILD_DIR)/src/libultra/gu/position.o" + include "$(BUILD_DIR)/src/libultra/io/sptaskyielded.o" + include "$(BUILD_DIR)/src/libultra/gu/rotate.o" + include "$(BUILD_DIR)/src/libultra/io/aisetfreq.o" + include "$(BUILD_DIR)/src/libultra/os/getactivequeue.o" + include "$(BUILD_DIR)/src/libultra/gu/normalize.o" + include "$(BUILD_DIR)/src/libultra/io/dpgetstat.o" + include "$(BUILD_DIR)/src/libultra/io/dpsetstat.o" + include "$(BUILD_DIR)/src/libultra/gu/ortho.o" + include "$(BUILD_DIR)/src/libultra/gu/cosf.o" + include "$(BUILD_DIR)/src/libultra/gu/libm_vals.o" +#if OOT_VERSION < PAL_1_0 + include "$(BUILD_DIR)/src/libultra/io/visetspecial.o" +#endif + include "$(BUILD_DIR)/src/libultra/gu/coss.o" + include "$(BUILD_DIR)/src/libultra/os/settime.o" + include "$(BUILD_DIR)/src/libultra/io/visetevent.o" + include "$(BUILD_DIR)/src/libultra/gu/us2dex.o" + include "$(BUILD_DIR)/src/libultra/io/pfsselectbank.o" + include "$(BUILD_DIR)/src/libultra/io/contsetch.o" + include "$(BUILD_DIR)/src/libultra/io/aigetlen.o" + include "$(BUILD_DIR)/src/libultra/gu/translate.o" + include "$(BUILD_DIR)/src/libultra/io/contramwrite.o" +#if OOT_VERSION == NTSC_1_2 + include "$(BUILD_DIR)/src/libultra/io/vimodefpallan1.o" +#endif + include "$(BUILD_DIR)/src/libultra/io/pfsgetstatus.o" + include "$(BUILD_DIR)/src/libultra/io/contpfs.o" + include "$(BUILD_DIR)/src/libultra/libc/bcmp.o" + include "$(BUILD_DIR)/src/libultra/io/contramread.o" + include "$(BUILD_DIR)/src/libultra/io/crc.o" + include "$(BUILD_DIR)/src/libultra/io/pfsisplug.o" + include "$(BUILD_DIR)/src/libultra/libc/xlitob.o" + include "$(BUILD_DIR)/src/libultra/libc/ldiv.o" + include "$(BUILD_DIR)/src/libultra/libc/xldtob.o" + include "$(BUILD_DIR)/src/libultra/io/spgetstat.o" + include "$(BUILD_DIR)/src/libultra/io/spsetstat.o" + include "$(BUILD_DIR)/src/libultra/os/writebackdcacheall.o" + include "$(BUILD_DIR)/src/libultra/os/getcurrfaultedthread.o" + include "$(BUILD_DIR)/src/libultra/libc/llcvt.o" +#if OOT_VERSION < PAL_1_0 + include "$(BUILD_DIR)/src/libultra/io/visetyscale.o" +#endif + include "$(BUILD_DIR)/src/libultra/io/vigetcurrframebuf.o" + include "$(BUILD_DIR)/src/libultra/io/spsetpc.o" + include "$(BUILD_DIR)/src/libc/sqrt.o" diff --git a/spec/overlays_gc.inc b/spec/overlays_gc.inc new file mode 100644 index 0000000000..27bbb72b04 --- /dev/null +++ b/spec/overlays_gc.inc @@ -0,0 +1,3240 @@ +beginseg + name "ovl_Arms_Hook" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Arms_Hook/ovl_Arms_Hook_reloc.o" +endseg + +beginseg + name "ovl_Arrow_Fire" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Arrow_Fire/ovl_Arrow_Fire_reloc.o" +endseg + +beginseg + name "ovl_Arrow_Ice" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Arrow_Ice/ovl_Arrow_Ice_reloc.o" +endseg + +beginseg + name "ovl_Arrow_Light" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Arrow_Light/z_arrow_light.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Arrow_Light/ovl_Arrow_Light_reloc.o" +endseg + +beginseg + name "ovl_Bg_Bdan_Objects" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bdan_Objects/z_bg_bdan_objects.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bdan_Objects/ovl_Bg_Bdan_Objects_reloc.o" +endseg + +beginseg + name "ovl_Bg_Bdan_Switch" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bdan_Switch/z_bg_bdan_switch.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bdan_Switch/ovl_Bg_Bdan_Switch_reloc.o" +endseg + +beginseg + name "ovl_Bg_Bom_Guard" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bom_Guard/z_bg_bom_guard.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bom_Guard/ovl_Bg_Bom_Guard_reloc.o" +endseg + +beginseg + name "ovl_Bg_Bombwall" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bombwall/z_bg_bombwall.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bombwall/ovl_Bg_Bombwall_reloc.o" +endseg + +beginseg + name "ovl_Bg_Bowl_Wall" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bowl_Wall/z_bg_bowl_wall.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bowl_Wall/ovl_Bg_Bowl_Wall_reloc.o" +endseg + +beginseg + name "ovl_Bg_Breakwall" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Breakwall/ovl_Bg_Breakwall_reloc.o" +endseg + +beginseg + name "ovl_Bg_Ddan_Jd" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ddan_Jd/z_bg_ddan_jd.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ddan_Jd/ovl_Bg_Ddan_Jd_reloc.o" +endseg + +beginseg + name "ovl_Bg_Ddan_Kd" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ddan_Kd/z_bg_ddan_kd.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ddan_Kd/ovl_Bg_Ddan_Kd_reloc.o" +endseg + +beginseg + name "ovl_Bg_Dodoago" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Dodoago/z_bg_dodoago.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Dodoago/ovl_Bg_Dodoago_reloc.o" +endseg + +beginseg + name "ovl_Bg_Dy_Yoseizo" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Dy_Yoseizo/ovl_Bg_Dy_Yoseizo_reloc.o" +endseg + +beginseg + name "ovl_Bg_Ganon_Otyuka" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ganon_Otyuka/z_bg_ganon_otyuka.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ganon_Otyuka/ovl_Bg_Ganon_Otyuka_reloc.o" +endseg + +beginseg + name "ovl_Bg_Gate_Shutter" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gate_Shutter/z_bg_gate_shutter.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gate_Shutter/ovl_Bg_Gate_Shutter_reloc.o" +endseg + +beginseg + name "ovl_Bg_Gjyo_Bridge" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gjyo_Bridge/z_bg_gjyo_bridge.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gjyo_Bridge/ovl_Bg_Gjyo_Bridge_reloc.o" +endseg + +beginseg + name "ovl_Bg_Gnd_Darkmeiro" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Darkmeiro/z_bg_gnd_darkmeiro.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Darkmeiro/ovl_Bg_Gnd_Darkmeiro_reloc.o" +endseg + +beginseg + name "ovl_Bg_Gnd_Firemeiro" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Firemeiro/z_bg_gnd_firemeiro.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Firemeiro/ovl_Bg_Gnd_Firemeiro_reloc.o" +endseg + +beginseg + name "ovl_Bg_Gnd_Iceblock" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Iceblock/z_bg_gnd_iceblock.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Iceblock/ovl_Bg_Gnd_Iceblock_reloc.o" +endseg + +beginseg + name "ovl_Bg_Gnd_Nisekabe" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Nisekabe/z_bg_gnd_nisekabe.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Nisekabe/ovl_Bg_Gnd_Nisekabe_reloc.o" +endseg + +beginseg + name "ovl_Bg_Gnd_Soulmeiro" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Soulmeiro/z_bg_gnd_soulmeiro.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Soulmeiro/ovl_Bg_Gnd_Soulmeiro_reloc.o" +endseg + +beginseg + name "ovl_Bg_Haka" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka/z_bg_haka.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka/ovl_Bg_Haka_reloc.o" +endseg + +beginseg + name "ovl_Bg_Haka_Gate" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Gate/z_bg_haka_gate.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Gate/ovl_Bg_Haka_Gate_reloc.o" +endseg + +beginseg + name "ovl_Bg_Haka_Huta" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Huta/z_bg_haka_huta.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Huta/ovl_Bg_Haka_Huta_reloc.o" +endseg + +beginseg + name "ovl_Bg_Haka_Megane" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Megane/z_bg_haka_megane.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Megane/ovl_Bg_Haka_Megane_reloc.o" +endseg + +beginseg + name "ovl_Bg_Haka_MeganeBG" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_MeganeBG/z_bg_haka_meganebg.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_MeganeBG/ovl_Bg_Haka_MeganeBG_reloc.o" +endseg + +beginseg + name "ovl_Bg_Haka_Sgami" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Sgami/z_bg_haka_sgami.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Sgami/ovl_Bg_Haka_Sgami_reloc.o" +endseg + +beginseg + name "ovl_Bg_Haka_Ship" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Ship/z_bg_haka_ship.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Ship/ovl_Bg_Haka_Ship_reloc.o" +endseg + +beginseg + name "ovl_Bg_Haka_Trap" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Trap/z_bg_haka_trap.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Trap/ovl_Bg_Haka_Trap_reloc.o" +endseg + +beginseg + name "ovl_Bg_Haka_Tubo" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Tubo/z_bg_haka_tubo.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Tubo/ovl_Bg_Haka_Tubo_reloc.o" +endseg + +beginseg + name "ovl_Bg_Haka_Water" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Water/z_bg_haka_water.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Water/ovl_Bg_Haka_Water_reloc.o" +endseg + +beginseg + name "ovl_Bg_Haka_Zou" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Zou/z_bg_haka_zou.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Zou/ovl_Bg_Haka_Zou_reloc.o" +endseg + +beginseg + name "ovl_Bg_Heavy_Block" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Heavy_Block/z_bg_heavy_block.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Heavy_Block/ovl_Bg_Heavy_Block_reloc.o" +endseg + +beginseg + name "ovl_Bg_Hidan_Curtain" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Curtain/z_bg_hidan_curtain.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Curtain/ovl_Bg_Hidan_Curtain_reloc.o" +endseg + +beginseg + name "ovl_Bg_Hidan_Dalm" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Dalm/z_bg_hidan_dalm.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Dalm/ovl_Bg_Hidan_Dalm_reloc.o" +endseg + +beginseg + name "ovl_Bg_Hidan_Firewall" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Firewall/z_bg_hidan_firewall.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Firewall/ovl_Bg_Hidan_Firewall_reloc.o" +endseg + +beginseg + name "ovl_Bg_Hidan_Fslift" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Fslift/z_bg_hidan_fslift.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Fslift/ovl_Bg_Hidan_Fslift_reloc.o" +endseg + +beginseg + name "ovl_Bg_Hidan_Fwbig" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Fwbig/z_bg_hidan_fwbig.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Fwbig/ovl_Bg_Hidan_Fwbig_reloc.o" +endseg + +beginseg + name "ovl_Bg_Hidan_Hamstep" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Hamstep/z_bg_hidan_hamstep.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Hamstep/ovl_Bg_Hidan_Hamstep_reloc.o" +endseg + +beginseg + name "ovl_Bg_Hidan_Hrock" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Hrock/z_bg_hidan_hrock.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Hrock/ovl_Bg_Hidan_Hrock_reloc.o" +endseg + +beginseg + name "ovl_Bg_Hidan_Kousi" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Kousi/z_bg_hidan_kousi.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Kousi/ovl_Bg_Hidan_Kousi_reloc.o" +endseg + +beginseg + name "ovl_Bg_Hidan_Kowarerukabe" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Kowarerukabe/z_bg_hidan_kowarerukabe.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Kowarerukabe/ovl_Bg_Hidan_Kowarerukabe_reloc.o" +endseg + +beginseg + name "ovl_Bg_Hidan_Rock" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Rock/z_bg_hidan_rock.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Rock/ovl_Bg_Hidan_Rock_reloc.o" +endseg + +beginseg + name "ovl_Bg_Hidan_Rsekizou" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Rsekizou/z_bg_hidan_rsekizou.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Rsekizou/ovl_Bg_Hidan_Rsekizou_reloc.o" +endseg + +beginseg + name "ovl_Bg_Hidan_Sekizou" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Sekizou/z_bg_hidan_sekizou.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Sekizou/ovl_Bg_Hidan_Sekizou_reloc.o" +endseg + +beginseg + name "ovl_Bg_Hidan_Sima" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Sima/z_bg_hidan_sima.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Sima/ovl_Bg_Hidan_Sima_reloc.o" +endseg + +beginseg + name "ovl_Bg_Hidan_Syoku" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Syoku/z_bg_hidan_syoku.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Syoku/ovl_Bg_Hidan_Syoku_reloc.o" +endseg + +beginseg + name "ovl_Bg_Ice_Objects" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Objects/z_bg_ice_objects.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Objects/ovl_Bg_Ice_Objects_reloc.o" +endseg + +beginseg + name "ovl_Bg_Ice_Shelter" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Shelter/z_bg_ice_shelter.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Shelter/ovl_Bg_Ice_Shelter_reloc.o" +endseg + +beginseg + name "ovl_Bg_Ice_Shutter" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Shutter/z_bg_ice_shutter.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Shutter/ovl_Bg_Ice_Shutter_reloc.o" +endseg + +beginseg + name "ovl_Bg_Ice_Turara" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Turara/z_bg_ice_turara.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Turara/ovl_Bg_Ice_Turara_reloc.o" +endseg + +beginseg + name "ovl_Bg_Ingate" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ingate/ovl_Bg_Ingate_reloc.o" +endseg + +beginseg + name "ovl_Bg_Jya_1flift" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_1flift/z_bg_jya_1flift.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_1flift/ovl_Bg_Jya_1flift_reloc.o" +endseg + +beginseg + name "ovl_Bg_Jya_Amishutter" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Amishutter/z_bg_jya_amishutter.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Amishutter/ovl_Bg_Jya_Amishutter_reloc.o" +endseg + +beginseg + name "ovl_Bg_Jya_Bigmirror" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Bigmirror/z_bg_jya_bigmirror.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Bigmirror/ovl_Bg_Jya_Bigmirror_reloc.o" +endseg + +beginseg + name "ovl_Bg_Jya_Block" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Block/z_bg_jya_block.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Block/ovl_Bg_Jya_Block_reloc.o" +endseg + +beginseg + name "ovl_Bg_Jya_Bombchuiwa" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Bombchuiwa/z_bg_jya_bombchuiwa.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Bombchuiwa/ovl_Bg_Jya_Bombchuiwa_reloc.o" +endseg + +beginseg + name "ovl_Bg_Jya_Bombiwa" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Bombiwa/z_bg_jya_bombiwa.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Bombiwa/ovl_Bg_Jya_Bombiwa_reloc.o" +endseg + +beginseg + name "ovl_Bg_Jya_Cobra" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Cobra/z_bg_jya_cobra.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Cobra/ovl_Bg_Jya_Cobra_reloc.o" +endseg + +beginseg + name "ovl_Bg_Jya_Goroiwa" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Goroiwa/z_bg_jya_goroiwa.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Goroiwa/ovl_Bg_Jya_Goroiwa_reloc.o" +endseg + +beginseg + name "ovl_Bg_Jya_Haheniron" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Haheniron/z_bg_jya_haheniron.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Haheniron/ovl_Bg_Jya_Haheniron_reloc.o" +endseg + +beginseg + name "ovl_Bg_Jya_Ironobj" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Ironobj/z_bg_jya_ironobj.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Ironobj/ovl_Bg_Jya_Ironobj_reloc.o" +endseg + +beginseg + name "ovl_Bg_Jya_Kanaami" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Kanaami/z_bg_jya_kanaami.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Kanaami/ovl_Bg_Jya_Kanaami_reloc.o" +endseg + +beginseg + name "ovl_Bg_Jya_Lift" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Lift/z_bg_jya_lift.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Lift/ovl_Bg_Jya_Lift_reloc.o" +endseg + +beginseg + name "ovl_Bg_Jya_Megami" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Megami/z_bg_jya_megami.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Megami/ovl_Bg_Jya_Megami_reloc.o" +endseg + +beginseg + name "ovl_Bg_Jya_Zurerukabe" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Zurerukabe/z_bg_jya_zurerukabe.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Zurerukabe/ovl_Bg_Jya_Zurerukabe_reloc.o" +endseg + +beginseg + name "ovl_Bg_Menkuri_Eye" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Menkuri_Eye/z_bg_menkuri_eye.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Menkuri_Eye/ovl_Bg_Menkuri_Eye_reloc.o" +endseg + +beginseg + name "ovl_Bg_Menkuri_Kaiten" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Menkuri_Kaiten/z_bg_menkuri_kaiten.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Menkuri_Kaiten/ovl_Bg_Menkuri_Kaiten_reloc.o" +endseg + +beginseg + name "ovl_Bg_Menkuri_Nisekabe" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Menkuri_Nisekabe/z_bg_menkuri_nisekabe.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Menkuri_Nisekabe/ovl_Bg_Menkuri_Nisekabe_reloc.o" +endseg + +beginseg + name "ovl_Bg_Mizu_Bwall" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Bwall/z_bg_mizu_bwall.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Bwall/ovl_Bg_Mizu_Bwall_reloc.o" +endseg + +beginseg + name "ovl_Bg_Mizu_Movebg" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Movebg/z_bg_mizu_movebg.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Movebg/ovl_Bg_Mizu_Movebg_reloc.o" +endseg + +beginseg + name "ovl_Bg_Mizu_Shutter" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Shutter/z_bg_mizu_shutter.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Shutter/ovl_Bg_Mizu_Shutter_reloc.o" +endseg + +beginseg + name "ovl_Bg_Mizu_Uzu" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Uzu/z_bg_mizu_uzu.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Uzu/ovl_Bg_Mizu_Uzu_reloc.o" +endseg + +beginseg + name "ovl_Bg_Mizu_Water" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Water/z_bg_mizu_water.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Water/ovl_Bg_Mizu_Water_reloc.o" +endseg + +beginseg + name "ovl_Bg_Mjin" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mjin/z_bg_mjin.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mjin/ovl_Bg_Mjin_reloc.o" +endseg + +beginseg + name "ovl_Bg_Mori_Bigst" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Bigst/z_bg_mori_bigst.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Bigst/ovl_Bg_Mori_Bigst_reloc.o" +endseg + +beginseg + name "ovl_Bg_Mori_Elevator" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Elevator/z_bg_mori_elevator.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Elevator/ovl_Bg_Mori_Elevator_reloc.o" +endseg + +beginseg + name "ovl_Bg_Mori_Hashigo" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Hashigo/z_bg_mori_hashigo.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Hashigo/ovl_Bg_Mori_Hashigo_reloc.o" +endseg + +beginseg + name "ovl_Bg_Mori_Hashira4" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Hashira4/z_bg_mori_hashira4.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Hashira4/ovl_Bg_Mori_Hashira4_reloc.o" +endseg + +beginseg + name "ovl_Bg_Mori_Hineri" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Hineri/z_bg_mori_hineri.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Hineri/ovl_Bg_Mori_Hineri_reloc.o" +endseg + +beginseg + name "ovl_Bg_Mori_Idomizu" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Idomizu/z_bg_mori_idomizu.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Idomizu/ovl_Bg_Mori_Idomizu_reloc.o" +endseg + +beginseg + name "ovl_Bg_Mori_Kaitenkabe" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/z_bg_mori_kaitenkabe.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/ovl_Bg_Mori_Kaitenkabe_reloc.o" +endseg + +beginseg + name "ovl_Bg_Mori_Rakkatenjo" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Rakkatenjo/z_bg_mori_rakkatenjo.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Rakkatenjo/ovl_Bg_Mori_Rakkatenjo_reloc.o" +endseg + +beginseg + name "ovl_Bg_Po_Event" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Po_Event/z_bg_po_event.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Po_Event/ovl_Bg_Po_Event_reloc.o" +endseg + +beginseg + name "ovl_Bg_Po_Syokudai" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Po_Syokudai/z_bg_po_syokudai.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Po_Syokudai/ovl_Bg_Po_Syokudai_reloc.o" +endseg + +beginseg + name "ovl_Bg_Pushbox" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Pushbox/z_bg_pushbox.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Pushbox/ovl_Bg_Pushbox_reloc.o" +endseg + +beginseg + name "ovl_Bg_Relay_Objects" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Relay_Objects/z_bg_relay_objects.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Relay_Objects/ovl_Bg_Relay_Objects_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot00_Break" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot00_Break/z_bg_spot00_break.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot00_Break/ovl_Bg_Spot00_Break_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot00_Hanebasi" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot00_Hanebasi/z_bg_spot00_hanebasi.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot00_Hanebasi/ovl_Bg_Spot00_Hanebasi_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot01_Fusya" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Fusya/z_bg_spot01_fusya.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Fusya/ovl_Bg_Spot01_Fusya_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot01_Idohashira" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Idohashira/z_bg_spot01_idohashira.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Idohashira/ovl_Bg_Spot01_Idohashira_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot01_Idomizu" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Idomizu/z_bg_spot01_idomizu.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Idomizu/ovl_Bg_Spot01_Idomizu_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot01_Idosoko" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Idosoko/z_bg_spot01_idosoko.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Idosoko/ovl_Bg_Spot01_Idosoko_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot01_Objects2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Objects2/z_bg_spot01_objects2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Objects2/ovl_Bg_Spot01_Objects2_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot02_Objects" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot02_Objects/z_bg_spot02_objects.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot02_Objects/ovl_Bg_Spot02_Objects_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot03_Taki" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot03_Taki/z_bg_spot03_taki.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot03_Taki/ovl_Bg_Spot03_Taki_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot05_Soko" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot05_Soko/z_bg_spot05_soko.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot05_Soko/ovl_Bg_Spot05_Soko_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot06_Objects" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot06_Objects/z_bg_spot06_objects.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot06_Objects/ovl_Bg_Spot06_Objects_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot07_Taki" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot07_Taki/z_bg_spot07_taki.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot07_Taki/ovl_Bg_Spot07_Taki_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot08_Bakudankabe" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot08_Bakudankabe/z_bg_spot08_bakudankabe.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot08_Bakudankabe/ovl_Bg_Spot08_Bakudankabe_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot08_Iceblock" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot08_Iceblock/z_bg_spot08_iceblock.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot08_Iceblock/ovl_Bg_Spot08_Iceblock_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot09_Obj" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot09_Obj/z_bg_spot09_obj.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot09_Obj/ovl_Bg_Spot09_Obj_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot11_Bakudankabe" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot11_Bakudankabe/z_bg_spot11_bakudankabe.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot11_Bakudankabe/ovl_Bg_Spot11_Bakudankabe_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot11_Oasis" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot11_Oasis/z_bg_spot11_oasis.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot11_Oasis/ovl_Bg_Spot11_Oasis_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot12_Gate" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot12_Gate/z_bg_spot12_gate.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot12_Gate/ovl_Bg_Spot12_Gate_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot12_Saku" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot12_Saku/z_bg_spot12_saku.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot12_Saku/ovl_Bg_Spot12_Saku_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot15_Rrbox" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot15_Rrbox/z_bg_spot15_rrbox.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot15_Rrbox/ovl_Bg_Spot15_Rrbox_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot15_Saku" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot15_Saku/z_bg_spot15_saku.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot15_Saku/ovl_Bg_Spot15_Saku_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot16_Bombstone" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot16_Bombstone/z_bg_spot16_bombstone.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot16_Bombstone/ovl_Bg_Spot16_Bombstone_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot16_Doughnut" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot16_Doughnut/z_bg_spot16_doughnut.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot16_Doughnut/ovl_Bg_Spot16_Doughnut_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot17_Bakudankabe" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot17_Bakudankabe/z_bg_spot17_bakudankabe.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot17_Bakudankabe/ovl_Bg_Spot17_Bakudankabe_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot17_Funen" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot17_Funen/z_bg_spot17_funen.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot17_Funen/ovl_Bg_Spot17_Funen_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot18_Basket" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Basket/z_bg_spot18_basket.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Basket/ovl_Bg_Spot18_Basket_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot18_Futa" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Futa/z_bg_spot18_futa.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Futa/ovl_Bg_Spot18_Futa_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot18_Obj" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Obj/z_bg_spot18_obj.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Obj/ovl_Bg_Spot18_Obj_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot18_Shutter" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Shutter/z_bg_spot18_shutter.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Shutter/ovl_Bg_Spot18_Shutter_reloc.o" +endseg + +beginseg + name "ovl_Bg_Sst_Floor" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Sst_Floor/z_bg_sst_floor.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Sst_Floor/ovl_Bg_Sst_Floor_reloc.o" +endseg + +beginseg + name "ovl_Bg_Toki_Hikari" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Toki_Hikari/z_bg_toki_hikari.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Toki_Hikari/ovl_Bg_Toki_Hikari_reloc.o" +endseg + +beginseg + name "ovl_Bg_Toki_Swd" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_1.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_3.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Toki_Swd/ovl_Bg_Toki_Swd_reloc.o" +endseg + +beginseg + name "ovl_Bg_Treemouth" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Treemouth/z_bg_treemouth_cutscene_data.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Treemouth/z_bg_treemouth.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Treemouth/ovl_Bg_Treemouth_reloc.o" +endseg + +beginseg + name "ovl_Bg_Umajump" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Umajump/z_bg_umajump.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Umajump/ovl_Bg_Umajump_reloc.o" +endseg + +beginseg + name "ovl_Bg_Vb_Sima" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Vb_Sima/z_bg_vb_sima.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Vb_Sima/ovl_Bg_Vb_Sima_reloc.o" +endseg + +beginseg + name "ovl_Bg_Ydan_Hasi" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ydan_Hasi/z_bg_ydan_hasi.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ydan_Hasi/ovl_Bg_Ydan_Hasi_reloc.o" +endseg + +beginseg + name "ovl_Bg_Ydan_Maruta" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ydan_Maruta/z_bg_ydan_maruta.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ydan_Maruta/ovl_Bg_Ydan_Maruta_reloc.o" +endseg + +beginseg + name "ovl_Bg_Ydan_Sp" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ydan_Sp/z_bg_ydan_sp.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ydan_Sp/ovl_Bg_Ydan_Sp_reloc.o" +endseg + +beginseg + name "ovl_Bg_Zg" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Zg/z_bg_zg.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Zg/ovl_Bg_Zg_reloc.o" +endseg + +beginseg + name "ovl_Boss_Dodongo" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Dodongo/ovl_Boss_Dodongo_reloc.o" +endseg + +beginseg + name "ovl_Boss_Fd" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Fd/z_boss_fd.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Fd/ovl_Boss_Fd_reloc.o" +endseg + +beginseg + name "ovl_Boss_Fd2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Fd2/ovl_Boss_Fd2_reloc.o" +endseg + +beginseg + name "ovl_Boss_Ganon" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Ganon/ovl_Boss_Ganon_reloc.o" +endseg + +beginseg + name "ovl_Boss_Ganon2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Ganon2/ovl_Boss_Ganon2_reloc.o" +endseg + +beginseg + name "ovl_Boss_Ganondrof" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Ganondrof/ovl_Boss_Ganondrof_reloc.o" +endseg + +beginseg + name "ovl_Boss_Goma" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Goma/z_boss_goma.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Goma/ovl_Boss_Goma_reloc.o" +endseg + +beginseg + name "ovl_Boss_Mo" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Mo/ovl_Boss_Mo_reloc.o" +endseg + +beginseg + name "ovl_Boss_Sst" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Sst/ovl_Boss_Sst_reloc.o" +endseg + +beginseg + name "ovl_Boss_Tw" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Tw/z_boss_tw.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Tw/ovl_Boss_Tw_reloc.o" +endseg + +beginseg + name "ovl_Boss_Va" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Va/z_boss_va.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Va/ovl_Boss_Va_reloc.o" +endseg + +beginseg + name "ovl_Demo_6K" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_6K/z_demo_6k.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_6K/ovl_Demo_6K_reloc.o" +endseg + +beginseg + name "ovl_Demo_Du" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Du/z_demo_du.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Du/ovl_Demo_Du_reloc.o" +endseg + +beginseg + name "ovl_Demo_Ec" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Ec/ovl_Demo_Ec_reloc.o" +endseg + +beginseg + name "ovl_Demo_Effect" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Effect/ovl_Demo_Effect_reloc.o" +endseg + +beginseg + name "ovl_Demo_Ext" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Ext/z_demo_ext.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Ext/ovl_Demo_Ext_reloc.o" +endseg + +beginseg + name "ovl_Demo_Geff" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Geff/z_demo_geff.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Geff/ovl_Demo_Geff_reloc.o" +endseg + +beginseg + name "ovl_Demo_Gj" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Gj/z_demo_gj.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Gj/ovl_Demo_Gj_reloc.o" +endseg + +beginseg + name "ovl_Demo_Go" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Go/z_demo_go.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Go/ovl_Demo_Go_reloc.o" +endseg + +beginseg + name "ovl_Demo_Gt" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Gt/z_demo_gt.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Gt/ovl_Demo_Gt_reloc.o" +endseg + +beginseg + name "ovl_Demo_Ik" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Ik/z_demo_ik.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Ik/ovl_Demo_Ik_reloc.o" +endseg + +beginseg + name "ovl_Demo_Im" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Im/z_demo_im.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Im/ovl_Demo_Im_reloc.o" +endseg + +beginseg + name "ovl_Demo_Kankyo" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data1.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data3.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data4.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data5.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data6.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data7.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data8.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/ovl_Demo_Kankyo_reloc.o" +endseg + +beginseg + name "ovl_Demo_Kekkai" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kekkai/z_demo_kekkai.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kekkai/ovl_Demo_Kekkai_reloc.o" +endseg + +beginseg + name "ovl_Demo_Sa" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Sa/z_demo_sa.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Sa/ovl_Demo_Sa_reloc.o" +endseg + +beginseg + name "ovl_Demo_Shd" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Shd/z_demo_shd.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Shd/ovl_Demo_Shd_reloc.o" +endseg + +beginseg + name "ovl_Demo_Tre_Lgt" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Tre_Lgt/z_demo_tre_lgt.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Tre_Lgt/ovl_Demo_Tre_Lgt_reloc.o" +endseg + +beginseg + name "ovl_Door_Ana" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Ana/z_door_ana.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Ana/ovl_Door_Ana_reloc.o" +endseg + +beginseg + name "ovl_Door_Gerudo" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Gerudo/z_door_gerudo.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Gerudo/ovl_Door_Gerudo_reloc.o" +endseg + +beginseg + name "ovl_Door_Killer" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Killer/z_door_killer.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Killer/ovl_Door_Killer_reloc.o" +endseg + +beginseg + name "ovl_Door_Shutter" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Shutter/ovl_Door_Shutter_reloc.o" +endseg + +beginseg + name "ovl_Door_Toki" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Toki/z_door_toki.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Toki/ovl_Door_Toki_reloc.o" +endseg + +beginseg + name "ovl_Door_Warp1" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Warp1/ovl_Door_Warp1_reloc.o" +endseg + +beginseg + name "ovl_Efc_Erupc" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Efc_Erupc/z_efc_erupc.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Efc_Erupc/ovl_Efc_Erupc_reloc.o" +endseg + +beginseg + name "ovl_Eff_Dust" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Eff_Dust/z_eff_dust.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Eff_Dust/ovl_Eff_Dust_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Blast" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Blast/z_eff_ss_blast.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Blast/ovl_Effect_Ss_Blast_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Bomb" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Bomb/z_eff_ss_bomb.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Bomb/ovl_Effect_Ss_Bomb_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Bomb2" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Bomb2/z_eff_ss_bomb2.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Bomb2/ovl_Effect_Ss_Bomb2_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Bubble" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Bubble/z_eff_ss_bubble.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Bubble/ovl_Effect_Ss_Bubble_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_D_Fire" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_D_Fire/z_eff_ss_d_fire.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_D_Fire/ovl_Effect_Ss_D_Fire_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Dead_Db" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Db/z_eff_ss_dead_db.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Db/ovl_Effect_Ss_Dead_Db_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Dead_Dd" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Dd/z_eff_ss_dead_dd.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Dd/ovl_Effect_Ss_Dead_Dd_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Dead_Ds" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Ds/z_eff_ss_dead_ds.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Ds/ovl_Effect_Ss_Dead_Ds_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Dead_Sound" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Sound/z_eff_ss_dead_sound.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Sound/ovl_Effect_Ss_Dead_Sound_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Dt_Bubble" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dt_Bubble/z_eff_ss_dt_bubble.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dt_Bubble/ovl_Effect_Ss_Dt_Bubble_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Dust" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dust/z_eff_ss_dust.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dust/ovl_Effect_Ss_Dust_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_En_Fire" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_En_Fire/z_eff_ss_en_fire.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_En_Fire/ovl_Effect_Ss_En_Fire_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_En_Ice" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_En_Ice/z_eff_ss_en_ice.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_En_Ice/ovl_Effect_Ss_En_Ice_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Extra" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Extra/ovl_Effect_Ss_Extra_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Fcircle" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Fcircle/z_eff_ss_fcircle.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Fcircle/ovl_Effect_Ss_Fcircle_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Fhg_Flash" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Fhg_Flash/z_eff_ss_fhg_flash.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Fhg_Flash/ovl_Effect_Ss_Fhg_Flash_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Fire_Tail" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Fire_Tail/z_eff_ss_fire_tail.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Fire_Tail/ovl_Effect_Ss_Fire_Tail_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_G_Fire" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Fire/z_eff_ss_g_fire.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Fire/ovl_Effect_Ss_G_Fire_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_G_Magma" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Magma/z_eff_ss_g_magma.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Magma/ovl_Effect_Ss_G_Magma_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_G_Magma2" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Magma2/z_eff_ss_g_magma2.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Magma2/ovl_Effect_Ss_G_Magma2_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_G_Ripple" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Ripple/z_eff_ss_g_ripple.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Ripple/ovl_Effect_Ss_G_Ripple_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_G_Spk" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Spk/z_eff_ss_g_spk.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Spk/ovl_Effect_Ss_G_Spk_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_G_Splash" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Splash/z_eff_ss_g_splash.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Splash/ovl_Effect_Ss_G_Splash_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Hahen" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Hahen/ovl_Effect_Ss_Hahen_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_HitMark" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_HitMark/z_eff_ss_hitmark.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_HitMark/ovl_Effect_Ss_HitMark_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Ice_Piece" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Ice_Piece/z_eff_ss_ice_piece.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Ice_Piece/ovl_Effect_Ss_Ice_Piece_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Ice_Smoke" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Ice_Smoke/z_eff_ss_ice_smoke.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Ice_Smoke/ovl_Effect_Ss_Ice_Smoke_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_K_Fire" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_K_Fire/z_eff_ss_k_fire.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_K_Fire/ovl_Effect_Ss_K_Fire_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Kakera" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Kakera/ovl_Effect_Ss_Kakera_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_KiraKira" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_KiraKira/z_eff_ss_kirakira.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_KiraKira/ovl_Effect_Ss_KiraKira_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Lightning" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Lightning/z_eff_ss_lightning.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Lightning/ovl_Effect_Ss_Lightning_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Sibuki" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Sibuki/z_eff_ss_sibuki.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Sibuki/ovl_Effect_Ss_Sibuki_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Sibuki2" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Sibuki2/z_eff_ss_sibuki2.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Sibuki2/ovl_Effect_Ss_Sibuki2_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Solder_Srch_Ball" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Solder_Srch_Ball/z_eff_ss_solder_srch_ball.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Solder_Srch_Ball/ovl_Effect_Ss_Solder_Srch_Ball_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Stick" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Stick/z_eff_ss_stick.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Stick/ovl_Effect_Ss_Stick_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Stone1" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Stone1/z_eff_ss_stone1.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Stone1/ovl_Effect_Ss_Stone1_reloc.o" +endseg + +beginseg + name "ovl_Elf_Msg" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Elf_Msg/z_elf_msg.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Elf_Msg/ovl_Elf_Msg_reloc.o" +endseg + +beginseg + name "ovl_Elf_Msg2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Elf_Msg2/z_elf_msg2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Elf_Msg2/ovl_Elf_Msg2_reloc.o" +endseg + +beginseg + name "ovl_En_Am" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Am/z_en_am.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Am/ovl_En_Am_reloc.o" +endseg + +beginseg + name "ovl_En_Ani" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ani/z_en_ani.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ani/ovl_En_Ani_reloc.o" +endseg + +beginseg + name "ovl_En_Anubice" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Anubice/z_en_anubice.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Anubice/ovl_En_Anubice_reloc.o" +endseg + +beginseg + name "ovl_En_Anubice_Fire" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Anubice_Fire/z_en_anubice_fire.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Anubice_Fire/ovl_En_Anubice_Fire_reloc.o" +endseg + +beginseg + name "ovl_En_Anubice_Tag" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Anubice_Tag/z_en_anubice_tag.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Anubice_Tag/ovl_En_Anubice_Tag_reloc.o" +endseg + +beginseg + name "ovl_En_Arow_Trap" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Arow_Trap/z_en_arow_trap.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Arow_Trap/ovl_En_Arow_Trap_reloc.o" +endseg + +beginseg + name "ovl_En_Arrow" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Arrow/z_en_arrow.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Arrow/ovl_En_Arrow_reloc.o" +endseg + +beginseg + name "ovl_En_Attack_Niw" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Attack_Niw/ovl_En_Attack_Niw_reloc.o" +endseg + +beginseg + name "ovl_En_Ba" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ba/z_en_ba.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ba/ovl_En_Ba_reloc.o" +endseg + +beginseg + name "ovl_En_Bb" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bb/z_en_bb.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bb/ovl_En_Bb_reloc.o" +endseg + +beginseg + name "ovl_En_Bdfire" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bdfire/z_en_bdfire.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bdfire/ovl_En_Bdfire_reloc.o" +endseg + +beginseg + name "ovl_En_Bigokuta" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bigokuta/ovl_En_Bigokuta_reloc.o" +endseg + +beginseg + name "ovl_En_Bili" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bili/z_en_bili.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bili/ovl_En_Bili_reloc.o" +endseg + +beginseg + name "ovl_En_Bird" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bird/z_en_bird.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bird/ovl_En_Bird_reloc.o" +endseg + +beginseg + name "ovl_En_Blkobj" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Blkobj/z_en_blkobj.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Blkobj/ovl_En_Blkobj_reloc.o" +endseg + +beginseg + name "ovl_En_Bom" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom/z_en_bom.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom/ovl_En_Bom_reloc.o" +endseg + +beginseg + name "ovl_En_Bom_Bowl_Man" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom_Bowl_Man/ovl_En_Bom_Bowl_Man_reloc.o" +endseg + +beginseg + name "ovl_En_Bom_Bowl_Pit" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom_Bowl_Pit/z_en_bom_bowl_pit.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom_Bowl_Pit/ovl_En_Bom_Bowl_Pit_reloc.o" +endseg + +beginseg + name "ovl_En_Bom_Chu" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom_Chu/z_en_bom_chu.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom_Chu/ovl_En_Bom_Chu_reloc.o" +endseg + +beginseg + name "ovl_En_Bombf" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bombf/z_en_bombf.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bombf/ovl_En_Bombf_reloc.o" +endseg + +beginseg + name "ovl_En_Boom" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Boom/z_en_boom.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Boom/ovl_En_Boom_reloc.o" +endseg + +beginseg + name "ovl_En_Box" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Box/z_en_box.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Box/ovl_En_Box_reloc.o" +endseg + +beginseg + name "ovl_En_Brob" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Brob/z_en_brob.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Brob/ovl_En_Brob_reloc.o" +endseg + +beginseg + name "ovl_En_Bubble" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bubble/z_en_bubble.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bubble/ovl_En_Bubble_reloc.o" +endseg + +beginseg + name "ovl_En_Butte" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Butte/z_en_butte.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Butte/ovl_En_Butte_reloc.o" +endseg + +beginseg + name "ovl_En_Bw" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bw/z_en_bw.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bw/ovl_En_Bw_reloc.o" +endseg + +beginseg + name "ovl_En_Bx" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bx/z_en_bx.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bx/ovl_En_Bx_reloc.o" +endseg + +beginseg + name "ovl_En_Changer" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Changer/z_en_changer.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Changer/ovl_En_Changer_reloc.o" +endseg + +beginseg + name "ovl_En_Clear_Tag" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Clear_Tag/ovl_En_Clear_Tag_reloc.o" +endseg + +beginseg + name "ovl_En_Cow" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Cow/z_en_cow.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Cow/ovl_En_Cow_reloc.o" +endseg + +beginseg + name "ovl_En_Crow" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Crow/z_en_crow.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Crow/ovl_En_Crow_reloc.o" +endseg + +beginseg + name "ovl_En_Cs" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Cs/z_en_cs.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Cs/ovl_En_Cs_reloc.o" +endseg + +beginseg + name "ovl_En_Daiku" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Daiku/z_en_daiku.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Daiku/ovl_En_Daiku_reloc.o" +endseg + +beginseg + name "ovl_En_Daiku_Kakariko" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Daiku_Kakariko/z_en_daiku_kakariko.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Daiku_Kakariko/ovl_En_Daiku_Kakariko_reloc.o" +endseg + +beginseg + name "ovl_En_Dekubaba" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dekubaba/z_en_dekubaba.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dekubaba/ovl_En_Dekubaba_reloc.o" +endseg + +beginseg + name "ovl_En_Dekunuts" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dekunuts/z_en_dekunuts.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dekunuts/ovl_En_Dekunuts_reloc.o" +endseg + +beginseg + name "ovl_En_Dh" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dh/z_en_dh.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dh/ovl_En_Dh_reloc.o" +endseg + +beginseg + name "ovl_En_Dha" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dha/z_en_dha.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dha/ovl_En_Dha_reloc.o" +endseg + +beginseg + name "ovl_En_Diving_Game" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Diving_Game/z_en_diving_game.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Diving_Game/ovl_En_Diving_Game_reloc.o" +endseg + +beginseg + name "ovl_En_Dns" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dns/z_en_dns.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dns/ovl_En_Dns_reloc.o" +endseg + +beginseg + name "ovl_En_Dnt_Demo" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dnt_Demo/z_en_dnt_demo.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dnt_Demo/ovl_En_Dnt_Demo_reloc.o" +endseg + +beginseg + name "ovl_En_Dnt_Jiji" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dnt_Jiji/z_en_dnt_jiji.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dnt_Jiji/ovl_En_Dnt_Jiji_reloc.o" +endseg + +beginseg + name "ovl_En_Dnt_Nomal" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dnt_Nomal/z_en_dnt_nomal.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dnt_Nomal/ovl_En_Dnt_Nomal_reloc.o" +endseg + +beginseg + name "ovl_En_Dodojr" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dodojr/z_en_dodojr.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dodojr/ovl_En_Dodojr_reloc.o" +endseg + +beginseg + name "ovl_En_Dodongo" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dodongo/ovl_En_Dodongo_reloc.o" +endseg + +beginseg + name "ovl_En_Dog" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dog/z_en_dog.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dog/ovl_En_Dog_reloc.o" +endseg + +beginseg + name "ovl_En_Door" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Door/z_en_door.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Door/ovl_En_Door_reloc.o" +endseg + +beginseg + name "ovl_En_Ds" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ds/z_en_ds.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ds/ovl_En_Ds_reloc.o" +endseg + +beginseg + name "ovl_En_Du" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Du/z_en_du.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Du/ovl_En_Du_reloc.o" +endseg + +beginseg + name "ovl_En_Dy_Extra" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dy_Extra/z_en_dy_extra.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dy_Extra/ovl_En_Dy_Extra_reloc.o" +endseg + +beginseg + name "ovl_En_Eg" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Eg/z_en_eg.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Eg/ovl_En_Eg_reloc.o" +endseg + +beginseg + name "ovl_En_Eiyer" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Eiyer/z_en_eiyer.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Eiyer/ovl_En_Eiyer_reloc.o" +endseg + +beginseg + name "ovl_En_Elf" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Elf/z_en_elf.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Elf/ovl_En_Elf_reloc.o" +endseg + +beginseg + name "ovl_En_Encount1" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Encount1/z_en_encount1.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Encount1/ovl_En_Encount1_reloc.o" +endseg + +beginseg + name "ovl_En_Encount2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Encount2/z_en_encount2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Encount2/ovl_En_Encount2_reloc.o" +endseg + +beginseg + name "ovl_En_Ex_Item" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ex_Item/z_en_ex_item.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ex_Item/ovl_En_Ex_Item_reloc.o" +endseg + +beginseg + name "ovl_En_Ex_Ruppy" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ex_Ruppy/z_en_ex_ruppy.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ex_Ruppy/ovl_En_Ex_Ruppy_reloc.o" +endseg + +beginseg + name "ovl_En_Fd" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fd/z_en_fd.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fd/ovl_En_Fd_reloc.o" +endseg + +beginseg + name "ovl_En_Fd_Fire" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fd_Fire/z_en_fd_fire.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fd_Fire/ovl_En_Fd_Fire_reloc.o" +endseg + +beginseg + name "ovl_En_Fhg_Fire" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fhg_Fire/z_en_fhg_fire.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fhg_Fire/ovl_En_Fhg_Fire_reloc.o" +endseg + +beginseg + name "ovl_En_Fire_Rock" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fire_Rock/z_en_fire_rock.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fire_Rock/ovl_En_Fire_Rock_reloc.o" +endseg + +beginseg + name "ovl_En_Firefly" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Firefly/z_en_firefly.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Firefly/ovl_En_Firefly_reloc.o" +endseg + +beginseg + name "ovl_En_Fish" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fish/z_en_fish.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fish/ovl_En_Fish_reloc.o" +endseg + +beginseg + name "ovl_En_Floormas" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Floormas/z_en_floormas.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Floormas/ovl_En_Floormas_reloc.o" +endseg + +beginseg + name "ovl_En_Fr" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fr/z_en_fr.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fr/ovl_En_Fr_reloc.o" +endseg + +beginseg + name "ovl_En_Fu" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fu/z_en_fu.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fu/ovl_En_Fu_reloc.o" +endseg + +beginseg + name "ovl_En_Fw" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fw/z_en_fw.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fw/ovl_En_Fw_reloc.o" +endseg + +beginseg + name "ovl_En_Fz" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fz/z_en_fz.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fz/ovl_En_Fz_reloc.o" +endseg + +beginseg + name "ovl_En_G_Switch" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_G_Switch/z_en_g_switch.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_G_Switch/ovl_En_G_Switch_reloc.o" +endseg + +beginseg + name "ovl_En_Ganon_Mant" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ganon_Mant/z_en_ganon_mant.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ganon_Mant/ovl_En_Ganon_Mant_reloc.o" +endseg + +beginseg + name "ovl_En_Ganon_Organ" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ganon_Organ/z_en_ganon_organ.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ganon_Organ/ovl_En_Ganon_Organ_reloc.o" +endseg + +beginseg + name "ovl_En_Gb" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Gb/z_en_gb.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Gb/ovl_En_Gb_reloc.o" +endseg + +beginseg + name "ovl_En_Ge1" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ge1/z_en_ge1.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ge1/ovl_En_Ge1_reloc.o" +endseg + +beginseg + name "ovl_En_Ge2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ge2/z_en_ge2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ge2/ovl_En_Ge2_reloc.o" +endseg + +beginseg + name "ovl_En_Ge3" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ge3/z_en_ge3.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ge3/ovl_En_Ge3_reloc.o" +endseg + +beginseg + name "ovl_En_GeldB" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_GeldB/z_en_geldb.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_GeldB/ovl_En_GeldB_reloc.o" +endseg + +beginseg + name "ovl_En_GirlA" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_GirlA/z_en_girla.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_GirlA/ovl_En_GirlA_reloc.o" +endseg + +beginseg + name "ovl_En_Gm" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Gm/z_en_gm.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Gm/ovl_En_Gm_reloc.o" +endseg + +beginseg + name "ovl_En_Go" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Go/z_en_go.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Go/ovl_En_Go_reloc.o" +endseg + +beginseg + name "ovl_En_Go2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Go2/z_en_go2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Go2/ovl_En_Go2_reloc.o" +endseg + +beginseg + name "ovl_En_Goma" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Goma/z_en_goma.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Goma/ovl_En_Goma_reloc.o" +endseg + +beginseg + name "ovl_En_Goroiwa" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Goroiwa/ovl_En_Goroiwa_reloc.o" +endseg + +beginseg + name "ovl_En_Gs" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Gs/z_en_gs.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Gs/ovl_En_Gs_reloc.o" +endseg + +beginseg + name "ovl_En_Guest" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Guest/z_en_guest.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Guest/ovl_En_Guest_reloc.o" +endseg + +beginseg + name "ovl_En_Hata" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hata/z_en_hata.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hata/ovl_En_Hata_reloc.o" +endseg + +beginseg + name "ovl_En_Heishi1" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi1/z_en_heishi1.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi1/ovl_En_Heishi1_reloc.o" +endseg + +beginseg + name "ovl_En_Heishi2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi2/z_en_heishi2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi2/ovl_En_Heishi2_reloc.o" +endseg + +beginseg + name "ovl_En_Heishi3" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi3/ovl_En_Heishi3_reloc.o" +endseg + +beginseg + name "ovl_En_Heishi4" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi4/z_en_heishi4.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi4/ovl_En_Heishi4_reloc.o" +endseg + +beginseg + name "ovl_En_Hintnuts" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hintnuts/z_en_hintnuts.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hintnuts/ovl_En_Hintnuts_reloc.o" +endseg + +beginseg + name "ovl_En_Holl" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Holl/z_en_holl.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Holl/ovl_En_Holl_reloc.o" +endseg + +beginseg + name "ovl_En_Honotrap" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Honotrap/z_en_honotrap.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Honotrap/ovl_En_Honotrap_reloc.o" +endseg + +beginseg + name "ovl_En_Horse" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse/z_en_horse.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse/ovl_En_Horse_reloc.o" +endseg + +beginseg + name "ovl_En_Horse_Game_Check" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Game_Check/ovl_En_Horse_Game_Check_reloc.o" +endseg + +beginseg + name "ovl_En_Horse_Ganon" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Ganon/z_en_horse_ganon.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Ganon/ovl_En_Horse_Ganon_reloc.o" +endseg + +beginseg + name "ovl_En_Horse_Link_Child" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Link_Child/z_en_horse_link_child.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Link_Child/ovl_En_Horse_Link_Child_reloc.o" +endseg + +beginseg + name "ovl_En_Horse_Normal" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Normal/z_en_horse_normal.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Normal/ovl_En_Horse_Normal_reloc.o" +endseg + +beginseg + name "ovl_En_Horse_Zelda" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Zelda/z_en_horse_zelda.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Zelda/ovl_En_Horse_Zelda_reloc.o" +endseg + +beginseg + name "ovl_En_Hs" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hs/z_en_hs.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hs/ovl_En_Hs_reloc.o" +endseg + +beginseg + name "ovl_En_Hs2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hs2/z_en_hs2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hs2/ovl_En_Hs2_reloc.o" +endseg + +beginseg + name "ovl_En_Hy" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hy/z_en_hy.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hy/ovl_En_Hy_reloc.o" +endseg + +beginseg + name "ovl_En_Ice_Hono" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ice_Hono/z_en_ice_hono.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ice_Hono/ovl_En_Ice_Hono_reloc.o" +endseg + +beginseg + name "ovl_En_Ik" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ik/z_en_ik.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ik/ovl_En_Ik_reloc.o" +endseg + +beginseg + name "ovl_En_In" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_In/z_en_in.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_In/ovl_En_In_reloc.o" +endseg + +beginseg + name "ovl_En_Insect" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Insect/z_en_insect.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Insect/ovl_En_Insect_reloc.o" +endseg + +beginseg + name "ovl_En_Ishi" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ishi/z_en_ishi.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ishi/ovl_En_Ishi_reloc.o" +endseg + +beginseg + name "ovl_En_It" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_It/z_en_it.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_It/ovl_En_It_reloc.o" +endseg + +beginseg + name "ovl_En_Jj" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Jj/z_en_jj.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Jj/ovl_En_Jj_reloc.o" +endseg + +beginseg + name "ovl_En_Js" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Js/z_en_js.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Js/ovl_En_Js_reloc.o" +endseg + +beginseg + name "ovl_En_Jsjutan" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Jsjutan/z_en_jsjutan.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Jsjutan/ovl_En_Jsjutan_reloc.o" +endseg + +beginseg + name "ovl_En_Kakasi" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kakasi/ovl_En_Kakasi_reloc.o" +endseg + +beginseg + name "ovl_En_Kakasi2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kakasi2/z_en_kakasi2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kakasi2/ovl_En_Kakasi2_reloc.o" +endseg + +beginseg + name "ovl_En_Kakasi3" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kakasi3/z_en_kakasi3.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kakasi3/ovl_En_Kakasi3_reloc.o" +endseg + +beginseg + name "ovl_En_Kanban" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kanban/z_en_kanban.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kanban/ovl_En_Kanban_reloc.o" +endseg + +beginseg + name "ovl_En_Karebaba" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Karebaba/z_en_karebaba.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Karebaba/ovl_En_Karebaba_reloc.o" +endseg + +beginseg + name "ovl_En_Ko" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ko/z_en_ko.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ko/ovl_En_Ko_reloc.o" +endseg + +beginseg + name "ovl_En_Kusa" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kusa/z_en_kusa.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kusa/ovl_En_Kusa_reloc.o" +endseg + +beginseg + name "ovl_En_Kz" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kz/z_en_kz.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kz/ovl_En_Kz_reloc.o" +endseg + +beginseg + name "ovl_En_Light" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Light/z_en_light.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Light/ovl_En_Light_reloc.o" +endseg + +beginseg + name "ovl_En_Lightbox" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Lightbox/z_en_lightbox.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Lightbox/ovl_En_Lightbox_reloc.o" +endseg + +beginseg + name "ovl_En_M_Fire1" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_M_Fire1/z_en_m_fire1.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_M_Fire1/ovl_En_M_Fire1_reloc.o" +endseg + +beginseg + name "ovl_En_M_Thunder" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_M_Thunder/ovl_En_M_Thunder_reloc.o" +endseg + +beginseg + name "ovl_En_Ma1" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ma1/z_en_ma1.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ma1/ovl_En_Ma1_reloc.o" +endseg + +beginseg + name "ovl_En_Ma2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ma2/z_en_ma2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ma2/ovl_En_Ma2_reloc.o" +endseg + +beginseg + name "ovl_En_Ma3" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ma3/z_en_ma3.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ma3/ovl_En_Ma3_reloc.o" +endseg + +beginseg + name "ovl_En_Mag" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mag/z_en_mag.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mag/ovl_En_Mag_reloc.o" +endseg + +beginseg + name "ovl_En_Mb" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mb/z_en_mb.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mb/ovl_En_Mb_reloc.o" +endseg + +beginseg + name "ovl_En_Md" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Md/z_en_md.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Md/ovl_En_Md_reloc.o" +endseg + +beginseg + name "ovl_En_Mk" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mk/z_en_mk.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mk/ovl_En_Mk_reloc.o" +endseg + +beginseg + name "ovl_En_Mm" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mm/z_en_mm.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mm/ovl_En_Mm_reloc.o" +endseg + +beginseg + name "ovl_En_Mm2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mm2/z_en_mm2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mm2/ovl_En_Mm2_reloc.o" +endseg + +beginseg + name "ovl_En_Ms" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ms/z_en_ms.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ms/ovl_En_Ms_reloc.o" +endseg + +beginseg + name "ovl_En_Mu" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mu/z_en_mu.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mu/ovl_En_Mu_reloc.o" +endseg + +beginseg + name "ovl_En_Nb" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Nb/z_en_nb.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Nb/ovl_En_Nb_reloc.o" +endseg + +beginseg + name "ovl_En_Niw" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Niw/z_en_niw.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Niw/ovl_En_Niw_reloc.o" +endseg + +beginseg + name "ovl_En_Niw_Girl" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Niw_Girl/z_en_niw_girl.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Niw_Girl/ovl_En_Niw_Girl_reloc.o" +endseg + +beginseg + name "ovl_En_Niw_Lady" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Niw_Lady/ovl_En_Niw_Lady_reloc.o" +endseg + +beginseg + name "ovl_En_Nutsball" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Nutsball/z_en_nutsball.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Nutsball/ovl_En_Nutsball_reloc.o" +endseg + +beginseg + name "ovl_En_Nwc" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Nwc/z_en_nwc.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Nwc/ovl_En_Nwc_reloc.o" +endseg + +beginseg + name "ovl_En_Ny" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ny/z_en_ny.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ny/ovl_En_Ny_reloc.o" +endseg + +beginseg + name "ovl_En_OE2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_OE2/z_en_oe2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_OE2/ovl_En_OE2_reloc.o" +endseg + +beginseg + name "ovl_En_Okarina_Effect" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Okarina_Effect/z_en_okarina_effect.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Okarina_Effect/ovl_En_Okarina_Effect_reloc.o" +endseg + +beginseg + name "ovl_En_Okarina_Tag" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag_cutscene_data.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Okarina_Tag/ovl_En_Okarina_Tag_reloc.o" +endseg + +beginseg + name "ovl_En_Okuta" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Okuta/z_en_okuta.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Okuta/ovl_En_Okuta_reloc.o" +endseg + +beginseg + name "ovl_En_Ossan" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ossan/z_en_ossan.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ossan/ovl_En_Ossan_reloc.o" +endseg + +beginseg + name "ovl_En_Owl" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Owl/z_en_owl.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Owl/ovl_En_Owl_reloc.o" +endseg + +beginseg + name "ovl_En_Part" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Part/z_en_part.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Part/ovl_En_Part_reloc.o" +endseg + +beginseg + name "ovl_En_Peehat" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Peehat/z_en_peehat.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Peehat/ovl_En_Peehat_reloc.o" +endseg + +beginseg + name "ovl_En_Po_Desert" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Desert/z_en_po_desert.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Desert/ovl_En_Po_Desert_reloc.o" +endseg + +beginseg + name "ovl_En_Po_Field" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Field/z_en_po_field.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Field/ovl_En_Po_Field_reloc.o" +endseg + +beginseg + name "ovl_En_Po_Relay" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Relay/ovl_En_Po_Relay_reloc.o" +endseg + +beginseg + name "ovl_En_Po_Sisters" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Sisters/ovl_En_Po_Sisters_reloc.o" +endseg + +beginseg + name "ovl_En_Poh" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Poh/z_en_poh.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Poh/ovl_En_Poh_reloc.o" +endseg + +beginseg + name "ovl_En_Pu_box" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Pu_box/z_en_pu_box.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Pu_box/ovl_En_Pu_box_reloc.o" +endseg + +beginseg + name "ovl_En_Rd" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Rd/z_en_rd.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Rd/ovl_En_Rd_reloc.o" +endseg + +beginseg + name "ovl_En_Reeba" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Reeba/z_en_reeba.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Reeba/ovl_En_Reeba_reloc.o" +endseg + +beginseg + name "ovl_En_River_Sound" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_River_Sound/z_en_river_sound.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_River_Sound/ovl_En_River_Sound_reloc.o" +endseg + +beginseg + name "ovl_En_Rl" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Rl/z_en_rl.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Rl/ovl_En_Rl_reloc.o" +endseg + +beginseg + name "ovl_En_Rr" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Rr/z_en_rr.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Rr/ovl_En_Rr_reloc.o" +endseg + +beginseg + name "ovl_En_Ru1" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ru1/z_en_ru1.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ru1/ovl_En_Ru1_reloc.o" +endseg + +beginseg + name "ovl_En_Ru2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ru2/z_en_ru2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ru2/ovl_En_Ru2_reloc.o" +endseg + +beginseg + name "ovl_En_Sa" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sa/z_en_sa.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sa/ovl_En_Sa_reloc.o" +endseg + +beginseg + name "ovl_En_Sb" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sb/z_en_sb.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sb/ovl_En_Sb_reloc.o" +endseg + +beginseg + name "ovl_En_Scene_Change" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Scene_Change/z_en_scene_change.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Scene_Change/ovl_En_Scene_Change_reloc.o" +endseg + +beginseg + name "ovl_En_Sda" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sda/z_en_sda.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sda/ovl_En_Sda_reloc.o" +endseg + +beginseg + name "ovl_En_Shopnuts" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Shopnuts/z_en_shopnuts.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Shopnuts/ovl_En_Shopnuts_reloc.o" +endseg + +beginseg + name "ovl_En_Si" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Si/z_en_si.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Si/ovl_En_Si_reloc.o" +endseg + +beginseg + name "ovl_En_Siofuki" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Siofuki/z_en_siofuki.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Siofuki/ovl_En_Siofuki_reloc.o" +endseg + +beginseg + name "ovl_En_Skb" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Skb/z_en_skb.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Skb/ovl_En_Skb_reloc.o" +endseg + +beginseg + name "ovl_En_Skj" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Skj/z_en_skj.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Skj/ovl_En_Skj_reloc.o" +endseg + +beginseg + name "ovl_En_Skjneedle" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Skjneedle/z_en_skjneedle.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Skjneedle/ovl_En_Skjneedle_reloc.o" +endseg + +beginseg + name "ovl_En_Ssh" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ssh/z_en_ssh.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ssh/ovl_En_Ssh_reloc.o" +endseg + +beginseg + name "ovl_En_St" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_St/z_en_st.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_St/ovl_En_St_reloc.o" +endseg + +beginseg + name "ovl_En_Sth" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sth/z_en_sth.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sth/ovl_En_Sth_reloc.o" +endseg + +beginseg + name "ovl_En_Stream" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Stream/z_en_stream.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Stream/ovl_En_Stream_reloc.o" +endseg + +beginseg + name "ovl_En_Sw" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sw/z_en_sw.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sw/ovl_En_Sw_reloc.o" +endseg + +beginseg + name "ovl_En_Syateki_Itm" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Syateki_Itm/z_en_syateki_itm.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Syateki_Itm/ovl_En_Syateki_Itm_reloc.o" +endseg + +beginseg + name "ovl_En_Syateki_Man" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Syateki_Man/ovl_En_Syateki_Man_reloc.o" +endseg + +beginseg + name "ovl_En_Syateki_Niw" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Syateki_Niw/z_en_syateki_niw.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Syateki_Niw/ovl_En_Syateki_Niw_reloc.o" +endseg + +beginseg + name "ovl_En_Ta" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ta/z_en_ta.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ta/ovl_En_Ta_reloc.o" +endseg + +beginseg + name "ovl_En_Takara_Man" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Takara_Man/z_en_takara_man.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Takara_Man/ovl_En_Takara_Man_reloc.o" +endseg + +beginseg + name "ovl_En_Tana" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tana/z_en_tana.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tana/ovl_En_Tana_reloc.o" +endseg + +beginseg + name "ovl_En_Tg" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tg/z_en_tg.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tg/ovl_En_Tg_reloc.o" +endseg + +beginseg + name "ovl_En_Tite" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tite/z_en_tite.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tite/ovl_En_Tite_reloc.o" +endseg + +beginseg + name "ovl_En_Tk" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tk/z_en_tk.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tk/ovl_En_Tk_reloc.o" +endseg + +beginseg + name "ovl_En_Torch" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Torch/z_en_torch.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Torch/ovl_En_Torch_reloc.o" +endseg + +beginseg + name "ovl_En_Torch2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Torch2/z_en_torch2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Torch2/ovl_En_Torch2_reloc.o" +endseg + +beginseg + name "ovl_En_Toryo" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Toryo/z_en_toryo.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Toryo/ovl_En_Toryo_reloc.o" +endseg + +beginseg + name "ovl_En_Tp" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tp/z_en_tp.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tp/ovl_En_Tp_reloc.o" +endseg + +beginseg + name "ovl_En_Tr" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tr/z_en_tr.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tr/ovl_En_Tr_reloc.o" +endseg + +beginseg + name "ovl_En_Trap" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Trap/z_en_trap.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Trap/ovl_En_Trap_reloc.o" +endseg + +beginseg + name "ovl_En_Tubo_Trap" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tubo_Trap/z_en_tubo_trap.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tubo_Trap/ovl_En_Tubo_Trap_reloc.o" +endseg + +beginseg + name "ovl_En_Vali" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vali/z_en_vali.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vali/ovl_En_Vali_reloc.o" +endseg + +beginseg + name "ovl_En_Vase" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vase/z_en_vase.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vase/ovl_En_Vase_reloc.o" +endseg + +beginseg + name "ovl_En_Vb_Ball" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vb_Ball/z_en_vb_ball.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vb_Ball/ovl_En_Vb_Ball_reloc.o" +endseg + +beginseg + name "ovl_En_Viewer" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Viewer/z_en_viewer.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Viewer/ovl_En_Viewer_reloc.o" +endseg + +beginseg + name "ovl_En_Vm" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vm/z_en_vm.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vm/ovl_En_Vm_reloc.o" +endseg + +beginseg + name "ovl_En_Wall_Tubo" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wall_Tubo/z_en_wall_tubo.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wall_Tubo/ovl_En_Wall_Tubo_reloc.o" +endseg + +beginseg + name "ovl_En_Wallmas" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wallmas/ovl_En_Wallmas_reloc.o" +endseg + +beginseg + name "ovl_En_Weather_Tag" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Weather_Tag/ovl_En_Weather_Tag_reloc.o" +endseg + +beginseg + name "ovl_En_Weiyer" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Weiyer/z_en_weiyer.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Weiyer/ovl_En_Weiyer_reloc.o" +endseg + +beginseg + name "ovl_En_Wf" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wf/z_en_wf.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wf/ovl_En_Wf_reloc.o" +endseg + +beginseg + name "ovl_En_Wonder_Item" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wonder_Item/z_en_wonder_item.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wonder_Item/ovl_En_Wonder_Item_reloc.o" +endseg + +beginseg + name "ovl_En_Wonder_Talk" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wonder_Talk/z_en_wonder_talk.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wonder_Talk/ovl_En_Wonder_Talk_reloc.o" +endseg + +beginseg + name "ovl_En_Wonder_Talk2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wonder_Talk2/z_en_wonder_talk2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wonder_Talk2/ovl_En_Wonder_Talk2_reloc.o" +endseg + +beginseg + name "ovl_En_Wood02" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wood02/z_en_wood02.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wood02/ovl_En_Wood02_reloc.o" +endseg + +beginseg + name "ovl_En_Xc" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Xc/z_en_xc.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Xc/ovl_En_Xc_reloc.o" +endseg + +beginseg + name "ovl_En_Yabusame_Mark" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Yabusame_Mark/z_en_yabusame_mark.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Yabusame_Mark/ovl_En_Yabusame_Mark_reloc.o" +endseg + +beginseg + name "ovl_En_Yukabyun" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Yukabyun/z_en_yukabyun.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Yukabyun/ovl_En_Yukabyun_reloc.o" +endseg + +beginseg + name "ovl_En_Zf" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zf/z_en_zf.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zf/ovl_En_Zf_reloc.o" +endseg + +beginseg + name "ovl_En_Zl1" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl1/z_en_zl1_cutscene_data.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl1/z_en_zl1.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl1/ovl_En_Zl1_reloc.o" +endseg + +beginseg + name "ovl_En_Zl2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl2/z_en_zl2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl2/ovl_En_Zl2_reloc.o" +endseg + +beginseg + name "ovl_En_Zl3" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl3/z_en_zl3.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl3/ovl_En_Zl3_reloc.o" +endseg + +beginseg + name "ovl_En_Zl4" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl4/z_en_zl4.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl4/ovl_En_Zl4_reloc.o" +endseg + +beginseg + name "ovl_En_Zo" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zo/z_en_zo.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zo/ovl_En_Zo_reloc.o" +endseg + +beginseg + name "ovl_En_fHG" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_fHG/z_en_fhg.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_fHG/ovl_En_fHG_reloc.o" +endseg + +beginseg + name "ovl_End_Title" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_End_Title/z_end_title.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_End_Title/ovl_End_Title_reloc.o" +endseg + +beginseg + name "ovl_Fishing" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Fishing/z_fishing.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Fishing/ovl_Fishing_reloc.o" +endseg + +beginseg + name "ovl_Item_B_Heart" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_B_Heart/z_item_b_heart.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_B_Heart/ovl_Item_B_Heart_reloc.o" +endseg + +beginseg + name "ovl_Item_Etcetera" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Etcetera/z_item_etcetera.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Etcetera/ovl_Item_Etcetera_reloc.o" +endseg + +beginseg + name "ovl_Item_Inbox" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Inbox/z_item_inbox.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Inbox/ovl_Item_Inbox_reloc.o" +endseg + +beginseg + name "ovl_Item_Ocarina" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Ocarina/z_item_ocarina.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Ocarina/ovl_Item_Ocarina_reloc.o" +endseg + +beginseg + name "ovl_Item_Shield" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Shield/z_item_shield.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Shield/ovl_Item_Shield_reloc.o" +endseg + +beginseg + name "ovl_Magic_Dark" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Magic_Dark/z_magic_dark.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Magic_Dark/ovl_Magic_Dark_reloc.o" +endseg + +beginseg + name "ovl_Magic_Fire" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Magic_Fire/z_magic_fire.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Magic_Fire/ovl_Magic_Fire_reloc.o" +endseg + +beginseg + name "ovl_Magic_Wind" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Magic_Wind/z_magic_wind.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Magic_Wind/ovl_Magic_Wind_reloc.o" +endseg + +beginseg + name "ovl_Mir_Ray" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Mir_Ray/z_mir_ray.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Mir_Ray/ovl_Mir_Ray_reloc.o" +endseg + +beginseg + name "ovl_Obj_Bean" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Bean/ovl_Obj_Bean_reloc.o" +endseg + +beginseg + name "ovl_Obj_Blockstop" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Blockstop/z_obj_blockstop.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Blockstop/ovl_Obj_Blockstop_reloc.o" +endseg + +beginseg + name "ovl_Obj_Bombiwa" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Bombiwa/z_obj_bombiwa.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Bombiwa/ovl_Obj_Bombiwa_reloc.o" +endseg + +beginseg + name "ovl_Obj_Comb" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Comb/ovl_Obj_Comb_reloc.o" +endseg + +beginseg + name "ovl_Obj_Dekujr" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Dekujr/z_obj_dekujr.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Dekujr/ovl_Obj_Dekujr_reloc.o" +endseg + +beginseg + name "ovl_Obj_Elevator" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Elevator/z_obj_elevator.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Elevator/ovl_Obj_Elevator_reloc.o" +endseg + +beginseg + name "ovl_Obj_Hamishi" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Hamishi/z_obj_hamishi.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Hamishi/ovl_Obj_Hamishi_reloc.o" +endseg + +beginseg + name "ovl_Obj_Hana" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Hana/z_obj_hana.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Hana/ovl_Obj_Hana_reloc.o" +endseg + +beginseg + name "ovl_Obj_Hsblock" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Hsblock/z_obj_hsblock.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Hsblock/ovl_Obj_Hsblock_reloc.o" +endseg + +beginseg + name "ovl_Obj_Ice_Poly" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Ice_Poly/z_obj_ice_poly.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Ice_Poly/ovl_Obj_Ice_Poly_reloc.o" +endseg + +beginseg + name "ovl_Obj_Kibako" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Kibako/z_obj_kibako.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Kibako/ovl_Obj_Kibako_reloc.o" +endseg + +beginseg + name "ovl_Obj_Kibako2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Kibako2/z_obj_kibako2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Kibako2/ovl_Obj_Kibako2_reloc.o" +endseg + +beginseg + name "ovl_Obj_Lift" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Lift/z_obj_lift.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Lift/ovl_Obj_Lift_reloc.o" +endseg + +beginseg + name "ovl_Obj_Lightswitch" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Lightswitch/z_obj_lightswitch.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Lightswitch/ovl_Obj_Lightswitch_reloc.o" +endseg + +beginseg + name "ovl_Obj_Makekinsuta" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Makekinsuta/z_obj_makekinsuta.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Makekinsuta/ovl_Obj_Makekinsuta_reloc.o" +endseg + +beginseg + name "ovl_Obj_Makeoshihiki" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Makeoshihiki/z_obj_makeoshihiki.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Makeoshihiki/ovl_Obj_Makeoshihiki_reloc.o" +endseg + +beginseg + name "ovl_Obj_Mure" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Mure/z_obj_mure.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Mure/ovl_Obj_Mure_reloc.o" +endseg + +beginseg + name "ovl_Obj_Mure2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Mure2/z_obj_mure2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Mure2/ovl_Obj_Mure2_reloc.o" +endseg + +beginseg + name "ovl_Obj_Mure3" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Mure3/z_obj_mure3.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Mure3/ovl_Obj_Mure3_reloc.o" +endseg + +beginseg + name "ovl_Obj_Oshihiki" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Oshihiki/z_obj_oshihiki.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Oshihiki/ovl_Obj_Oshihiki_reloc.o" +endseg + +beginseg + name "ovl_Obj_Roomtimer" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Roomtimer/ovl_Obj_Roomtimer_reloc.o" +endseg + +beginseg + name "ovl_Obj_Switch" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Switch/ovl_Obj_Switch_reloc.o" +endseg + +beginseg + name "ovl_Obj_Syokudai" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Syokudai/ovl_Obj_Syokudai_reloc.o" +endseg + +beginseg + name "ovl_Obj_Timeblock" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Timeblock/z_obj_timeblock.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Timeblock/ovl_Obj_Timeblock_reloc.o" +endseg + +beginseg + name "ovl_Obj_Tsubo" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Tsubo/ovl_Obj_Tsubo_reloc.o" +endseg + +beginseg + name "ovl_Obj_Warp2block" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Warp2block/z_obj_warp2block.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Warp2block/ovl_Obj_Warp2block_reloc.o" +endseg + +beginseg + name "ovl_Object_Kankyo" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Object_Kankyo/z_object_kankyo.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Object_Kankyo/ovl_Object_Kankyo_reloc.o" +endseg + +beginseg + name "ovl_Oceff_Spot" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Spot/z_oceff_spot.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Spot/ovl_Oceff_Spot_reloc.o" +endseg + +beginseg + name "ovl_Oceff_Storm" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Storm/z_oceff_storm.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Storm/ovl_Oceff_Storm_reloc.o" +endseg + +beginseg + name "ovl_Oceff_Wipe" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe/z_oceff_wipe.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe/ovl_Oceff_Wipe_reloc.o" +endseg + +beginseg + name "ovl_Oceff_Wipe2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe2/z_oceff_wipe2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe2/ovl_Oceff_Wipe2_reloc.o" +endseg + +beginseg + name "ovl_Oceff_Wipe3" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe3/z_oceff_wipe3.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe3/ovl_Oceff_Wipe3_reloc.o" +endseg + +beginseg + name "ovl_Oceff_Wipe4" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe4/z_oceff_wipe4.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe4/ovl_Oceff_Wipe4_reloc.o" +endseg + +beginseg + name "ovl_Shot_Sun" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Shot_Sun/z_shot_sun.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Shot_Sun/ovl_Shot_Sun_reloc.o" +endseg diff --git a/spec/overlays_n64_ique.inc b/spec/overlays_n64_ique.inc new file mode 100644 index 0000000000..8c1905a5ad --- /dev/null +++ b/spec/overlays_n64_ique.inc @@ -0,0 +1,3240 @@ +beginseg + name "ovl_En_GirlA" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_GirlA/z_en_girla.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_GirlA/ovl_En_GirlA_reloc.o" +endseg + +beginseg + name "ovl_En_Part" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Part/z_en_part.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Part/ovl_En_Part_reloc.o" +endseg + +beginseg + name "ovl_En_Light" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Light/z_en_light.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Light/ovl_En_Light_reloc.o" +endseg + +beginseg + name "ovl_En_Door" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Door/z_en_door.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Door/ovl_En_Door_reloc.o" +endseg + +beginseg + name "ovl_En_Box" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Box/z_en_box.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Box/ovl_En_Box_reloc.o" +endseg + +beginseg + name "ovl_En_Poh" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Poh/z_en_poh.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Poh/ovl_En_Poh_reloc.o" +endseg + +beginseg + name "ovl_En_Okuta" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Okuta/z_en_okuta.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Okuta/ovl_En_Okuta_reloc.o" +endseg + +beginseg + name "ovl_En_Bom" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom/z_en_bom.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom/ovl_En_Bom_reloc.o" +endseg + +beginseg + name "ovl_En_Wallmas" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wallmas/ovl_En_Wallmas_reloc.o" +endseg + +beginseg + name "ovl_En_Dodongo" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dodongo/ovl_En_Dodongo_reloc.o" +endseg + +beginseg + name "ovl_En_Firefly" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Firefly/z_en_firefly.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Firefly/ovl_En_Firefly_reloc.o" +endseg + +beginseg + name "ovl_En_Horse" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse/z_en_horse.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse/ovl_En_Horse_reloc.o" +endseg + +beginseg + name "ovl_En_Arrow" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Arrow/z_en_arrow.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Arrow/ovl_En_Arrow_reloc.o" +endseg + +beginseg + name "ovl_En_Elf" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Elf/z_en_elf.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Elf/ovl_En_Elf_reloc.o" +endseg + +beginseg + name "ovl_En_Niw" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Niw/z_en_niw.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Niw/ovl_En_Niw_reloc.o" +endseg + +beginseg + name "ovl_En_Tite" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tite/z_en_tite.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tite/ovl_En_Tite_reloc.o" +endseg + +beginseg + name "ovl_En_Reeba" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Reeba/z_en_reeba.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Reeba/ovl_En_Reeba_reloc.o" +endseg + +beginseg + name "ovl_En_Peehat" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Peehat/z_en_peehat.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Peehat/ovl_En_Peehat_reloc.o" +endseg + +beginseg + name "ovl_En_Holl" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Holl/z_en_holl.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Holl/ovl_En_Holl_reloc.o" +endseg + +beginseg + name "ovl_En_Scene_Change" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Scene_Change/z_en_scene_change.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Scene_Change/ovl_En_Scene_Change_reloc.o" +endseg + +beginseg + name "ovl_En_Zf" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zf/z_en_zf.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zf/ovl_En_Zf_reloc.o" +endseg + +beginseg + name "ovl_En_Hata" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hata/z_en_hata.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hata/ovl_En_Hata_reloc.o" +endseg + +beginseg + name "ovl_Boss_Dodongo" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Dodongo/ovl_Boss_Dodongo_reloc.o" +endseg + +beginseg + name "ovl_Boss_Goma" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Goma/z_boss_goma.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Goma/ovl_Boss_Goma_reloc.o" +endseg + +beginseg + name "ovl_En_Zl1" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl1/z_en_zl1_cutscene_data.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl1/z_en_zl1.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl1/ovl_En_Zl1_reloc.o" +endseg + +beginseg + name "ovl_En_Viewer" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Viewer/z_en_viewer.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Viewer/ovl_En_Viewer_reloc.o" +endseg + +beginseg + name "ovl_En_Goma" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Goma/z_en_goma.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Goma/ovl_En_Goma_reloc.o" +endseg + +beginseg + name "ovl_Bg_Pushbox" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Pushbox/z_bg_pushbox.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Pushbox/ovl_Bg_Pushbox_reloc.o" +endseg + +beginseg + name "ovl_En_Bubble" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bubble/z_en_bubble.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bubble/ovl_En_Bubble_reloc.o" +endseg + +beginseg + name "ovl_Door_Shutter" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Shutter/ovl_Door_Shutter_reloc.o" +endseg + +beginseg + name "ovl_En_Dodojr" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dodojr/z_en_dodojr.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dodojr/ovl_En_Dodojr_reloc.o" +endseg + +beginseg + name "ovl_En_Bdfire" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bdfire/z_en_bdfire.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bdfire/ovl_En_Bdfire_reloc.o" +endseg + +beginseg + name "ovl_En_Boom" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Boom/z_en_boom.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Boom/ovl_En_Boom_reloc.o" +endseg + +beginseg + name "ovl_En_Torch2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Torch2/z_en_torch2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Torch2/ovl_En_Torch2_reloc.o" +endseg + +beginseg + name "ovl_En_Bili" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bili/z_en_bili.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bili/ovl_En_Bili_reloc.o" +endseg + +beginseg + name "ovl_En_Tp" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tp/z_en_tp.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tp/ovl_En_Tp_reloc.o" +endseg + +beginseg + name "ovl_En_St" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_St/z_en_st.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_St/ovl_En_St_reloc.o" +endseg + +beginseg + name "ovl_En_Bw" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bw/z_en_bw.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bw/ovl_En_Bw_reloc.o" +endseg + +beginseg + name "ovl_En_Eiyer" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Eiyer/z_en_eiyer.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Eiyer/ovl_En_Eiyer_reloc.o" +endseg + +beginseg + name "ovl_En_River_Sound" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_River_Sound/z_en_river_sound.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_River_Sound/ovl_En_River_Sound_reloc.o" +endseg + +beginseg + name "ovl_En_Horse_Normal" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Normal/z_en_horse_normal.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Normal/ovl_En_Horse_Normal_reloc.o" +endseg + +beginseg + name "ovl_En_Ossan" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ossan/z_en_ossan.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ossan/ovl_En_Ossan_reloc.o" +endseg + +beginseg + name "ovl_Bg_Treemouth" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Treemouth/z_bg_treemouth_cutscene_data.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Treemouth/z_bg_treemouth.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Treemouth/ovl_Bg_Treemouth_reloc.o" +endseg + +beginseg + name "ovl_Bg_Dodoago" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Dodoago/z_bg_dodoago.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Dodoago/ovl_Bg_Dodoago_reloc.o" +endseg + +beginseg + name "ovl_Bg_Hidan_Dalm" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Dalm/z_bg_hidan_dalm.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Dalm/ovl_Bg_Hidan_Dalm_reloc.o" +endseg + +beginseg + name "ovl_Bg_Hidan_Hrock" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Hrock/z_bg_hidan_hrock.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Hrock/ovl_Bg_Hidan_Hrock_reloc.o" +endseg + +beginseg + name "ovl_En_Horse_Ganon" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Ganon/z_en_horse_ganon.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Ganon/ovl_En_Horse_Ganon_reloc.o" +endseg + +beginseg + name "ovl_Bg_Hidan_Rock" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Rock/z_bg_hidan_rock.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Rock/ovl_Bg_Hidan_Rock_reloc.o" +endseg + +beginseg + name "ovl_Bg_Hidan_Rsekizou" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Rsekizou/z_bg_hidan_rsekizou.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Rsekizou/ovl_Bg_Hidan_Rsekizou_reloc.o" +endseg + +beginseg + name "ovl_Bg_Hidan_Sekizou" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Sekizou/z_bg_hidan_sekizou.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Sekizou/ovl_Bg_Hidan_Sekizou_reloc.o" +endseg + +beginseg + name "ovl_Bg_Hidan_Sima" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Sima/z_bg_hidan_sima.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Sima/ovl_Bg_Hidan_Sima_reloc.o" +endseg + +beginseg + name "ovl_Bg_Hidan_Syoku" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Syoku/z_bg_hidan_syoku.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Syoku/ovl_Bg_Hidan_Syoku_reloc.o" +endseg + +beginseg + name "ovl_En_Xc" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Xc/z_en_xc.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Xc/ovl_En_Xc_reloc.o" +endseg + +beginseg + name "ovl_Bg_Hidan_Curtain" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Curtain/z_bg_hidan_curtain.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Curtain/ovl_Bg_Hidan_Curtain_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot00_Hanebasi" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot00_Hanebasi/z_bg_spot00_hanebasi.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot00_Hanebasi/ovl_Bg_Spot00_Hanebasi_reloc.o" +endseg + +beginseg + name "ovl_En_Mb" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mb/z_en_mb.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mb/ovl_En_Mb_reloc.o" +endseg + +beginseg + name "ovl_En_Bombf" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bombf/z_en_bombf.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bombf/ovl_En_Bombf_reloc.o" +endseg + +beginseg + name "ovl_Bg_Hidan_Firewall" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Firewall/z_bg_hidan_firewall.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Firewall/ovl_Bg_Hidan_Firewall_reloc.o" +endseg + +beginseg + name "ovl_Bg_Dy_Yoseizo" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Dy_Yoseizo/ovl_Bg_Dy_Yoseizo_reloc.o" +endseg + +beginseg + name "ovl_En_Zl2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl2/z_en_zl2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl2/ovl_En_Zl2_reloc.o" +endseg + +beginseg + name "ovl_Bg_Hidan_Fslift" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Fslift/z_bg_hidan_fslift.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Fslift/ovl_Bg_Hidan_Fslift_reloc.o" +endseg + +beginseg + name "ovl_En_OE2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_OE2/z_en_oe2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_OE2/ovl_En_OE2_reloc.o" +endseg + +beginseg + name "ovl_Bg_Ydan_Hasi" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ydan_Hasi/z_bg_ydan_hasi.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ydan_Hasi/ovl_Bg_Ydan_Hasi_reloc.o" +endseg + +beginseg + name "ovl_Bg_Ydan_Maruta" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ydan_Maruta/z_bg_ydan_maruta.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ydan_Maruta/ovl_Bg_Ydan_Maruta_reloc.o" +endseg + +beginseg + name "ovl_Boss_Ganondrof" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Ganondrof/ovl_Boss_Ganondrof_reloc.o" +endseg + +beginseg + name "ovl_En_Am" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Am/z_en_am.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Am/ovl_En_Am_reloc.o" +endseg + +beginseg + name "ovl_En_Dekubaba" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dekubaba/z_en_dekubaba.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dekubaba/ovl_En_Dekubaba_reloc.o" +endseg + +beginseg + name "ovl_En_M_Fire1" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_M_Fire1/z_en_m_fire1.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_M_Fire1/ovl_En_M_Fire1_reloc.o" +endseg + +beginseg + name "ovl_En_M_Thunder" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_M_Thunder/ovl_En_M_Thunder_reloc.o" +endseg + +beginseg + name "ovl_Bg_Ddan_Jd" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ddan_Jd/z_bg_ddan_jd.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ddan_Jd/ovl_Bg_Ddan_Jd_reloc.o" +endseg + +beginseg + name "ovl_Bg_Breakwall" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Breakwall/ovl_Bg_Breakwall_reloc.o" +endseg + +beginseg + name "ovl_En_Jj" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Jj/z_en_jj.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Jj/ovl_En_Jj_reloc.o" +endseg + +beginseg + name "ovl_En_Horse_Zelda" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Zelda/z_en_horse_zelda.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Zelda/ovl_En_Horse_Zelda_reloc.o" +endseg + +beginseg + name "ovl_Bg_Ddan_Kd" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ddan_Kd/z_bg_ddan_kd.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ddan_Kd/ovl_Bg_Ddan_Kd_reloc.o" +endseg + +beginseg + name "ovl_Door_Warp1" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Warp1/ovl_Door_Warp1_reloc.o" +endseg + +beginseg + name "ovl_Obj_Syokudai" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Syokudai/ovl_Obj_Syokudai_reloc.o" +endseg + +beginseg + name "ovl_Item_B_Heart" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_B_Heart/z_item_b_heart.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_B_Heart/ovl_Item_B_Heart_reloc.o" +endseg + +beginseg + name "ovl_En_Dekunuts" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dekunuts/z_en_dekunuts.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dekunuts/ovl_En_Dekunuts_reloc.o" +endseg + +beginseg + name "ovl_Bg_Menkuri_Kaiten" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Menkuri_Kaiten/z_bg_menkuri_kaiten.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Menkuri_Kaiten/ovl_Bg_Menkuri_Kaiten_reloc.o" +endseg + +beginseg + name "ovl_Bg_Menkuri_Eye" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Menkuri_Eye/z_bg_menkuri_eye.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Menkuri_Eye/ovl_Bg_Menkuri_Eye_reloc.o" +endseg + +beginseg + name "ovl_En_Vali" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vali/z_en_vali.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vali/ovl_En_Vali_reloc.o" +endseg + +beginseg + name "ovl_Bg_Mizu_Movebg" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Movebg/z_bg_mizu_movebg.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Movebg/ovl_Bg_Mizu_Movebg_reloc.o" +endseg + +beginseg + name "ovl_Bg_Mizu_Water" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Water/z_bg_mizu_water.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Water/ovl_Bg_Mizu_Water_reloc.o" +endseg + +beginseg + name "ovl_Arms_Hook" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Arms_Hook/ovl_Arms_Hook_reloc.o" +endseg + +beginseg + name "ovl_En_fHG" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_fHG/z_en_fhg.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_fHG/ovl_En_fHG_reloc.o" +endseg + +beginseg + name "ovl_Bg_Mori_Hineri" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Hineri/z_bg_mori_hineri.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Hineri/ovl_Bg_Mori_Hineri_reloc.o" +endseg + +beginseg + name "ovl_En_Bb" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bb/z_en_bb.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bb/ovl_En_Bb_reloc.o" +endseg + +beginseg + name "ovl_Bg_Toki_Hikari" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Toki_Hikari/z_bg_toki_hikari.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Toki_Hikari/ovl_Bg_Toki_Hikari_reloc.o" +endseg + +beginseg + name "ovl_En_Yukabyun" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Yukabyun/z_en_yukabyun.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Yukabyun/ovl_En_Yukabyun_reloc.o" +endseg + +beginseg + name "ovl_Bg_Toki_Swd" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_1.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_3.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Toki_Swd/ovl_Bg_Toki_Swd_reloc.o" +endseg + +beginseg + name "ovl_En_Fhg_Fire" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fhg_Fire/z_en_fhg_fire.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fhg_Fire/ovl_En_Fhg_Fire_reloc.o" +endseg + +beginseg + name "ovl_Bg_Mjin" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mjin/z_bg_mjin.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mjin/ovl_Bg_Mjin_reloc.o" +endseg + +beginseg + name "ovl_Bg_Hidan_Kousi" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Kousi/z_bg_hidan_kousi.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Kousi/ovl_Bg_Hidan_Kousi_reloc.o" +endseg + +beginseg + name "ovl_Door_Toki" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Toki/z_door_toki.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Toki/ovl_Door_Toki_reloc.o" +endseg + +beginseg + name "ovl_Bg_Hidan_Hamstep" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Hamstep/z_bg_hidan_hamstep.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Hamstep/ovl_Bg_Hidan_Hamstep_reloc.o" +endseg + +beginseg + name "ovl_En_Bird" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bird/z_en_bird.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bird/ovl_En_Bird_reloc.o" +endseg + +beginseg + name "ovl_En_Wood02" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wood02/z_en_wood02.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wood02/ovl_En_Wood02_reloc.o" +endseg + +beginseg + name "ovl_En_Lightbox" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Lightbox/z_en_lightbox.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Lightbox/ovl_En_Lightbox_reloc.o" +endseg + +beginseg + name "ovl_En_Pu_box" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Pu_box/z_en_pu_box.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Pu_box/ovl_En_Pu_box_reloc.o" +endseg + +beginseg + name "ovl_En_Trap" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Trap/z_en_trap.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Trap/ovl_En_Trap_reloc.o" +endseg + +beginseg + name "ovl_En_Arow_Trap" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Arow_Trap/z_en_arow_trap.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Arow_Trap/ovl_En_Arow_Trap_reloc.o" +endseg + +beginseg + name "ovl_En_Vase" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vase/z_en_vase.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vase/ovl_En_Vase_reloc.o" +endseg + +beginseg + name "ovl_En_Ta" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ta/z_en_ta.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ta/ovl_En_Ta_reloc.o" +endseg + +beginseg + name "ovl_En_Tk" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tk/z_en_tk.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tk/ovl_En_Tk_reloc.o" +endseg + +beginseg + name "ovl_Bg_Mori_Bigst" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Bigst/z_bg_mori_bigst.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Bigst/ovl_Bg_Mori_Bigst_reloc.o" +endseg + +beginseg + name "ovl_Bg_Mori_Elevator" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Elevator/z_bg_mori_elevator.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Elevator/ovl_Bg_Mori_Elevator_reloc.o" +endseg + +beginseg + name "ovl_Bg_Mori_Kaitenkabe" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/z_bg_mori_kaitenkabe.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/ovl_Bg_Mori_Kaitenkabe_reloc.o" +endseg + +beginseg + name "ovl_Bg_Mori_Rakkatenjo" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Rakkatenjo/z_bg_mori_rakkatenjo.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Rakkatenjo/ovl_Bg_Mori_Rakkatenjo_reloc.o" +endseg + +beginseg + name "ovl_En_Vm" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vm/z_en_vm.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vm/ovl_En_Vm_reloc.o" +endseg + +beginseg + name "ovl_Demo_Effect" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Effect/ovl_Demo_Effect_reloc.o" +endseg + +beginseg + name "ovl_Demo_Kankyo" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data1.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data3.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data4.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data5.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data6.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data7.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data8.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kankyo/ovl_Demo_Kankyo_reloc.o" +endseg + +beginseg + name "ovl_Bg_Hidan_Fwbig" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Fwbig/z_bg_hidan_fwbig.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Fwbig/ovl_Bg_Hidan_Fwbig_reloc.o" +endseg + +beginseg + name "ovl_En_Floormas" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Floormas/z_en_floormas.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Floormas/ovl_En_Floormas_reloc.o" +endseg + +beginseg + name "ovl_En_Heishi1" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi1/z_en_heishi1.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi1/ovl_En_Heishi1_reloc.o" +endseg + +beginseg + name "ovl_En_Rd" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Rd/z_en_rd.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Rd/ovl_En_Rd_reloc.o" +endseg + +beginseg + name "ovl_En_Po_Sisters" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Sisters/ovl_En_Po_Sisters_reloc.o" +endseg + +beginseg + name "ovl_Bg_Heavy_Block" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Heavy_Block/z_bg_heavy_block.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Heavy_Block/ovl_Bg_Heavy_Block_reloc.o" +endseg + +beginseg + name "ovl_Bg_Po_Event" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Po_Event/z_bg_po_event.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Po_Event/ovl_Bg_Po_Event_reloc.o" +endseg + +beginseg + name "ovl_Obj_Mure" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Mure/z_obj_mure.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Mure/ovl_Obj_Mure_reloc.o" +endseg + +beginseg + name "ovl_En_Sw" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sw/z_en_sw.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sw/ovl_En_Sw_reloc.o" +endseg + +beginseg + name "ovl_Boss_Fd" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Fd/z_boss_fd.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Fd/ovl_Boss_Fd_reloc.o" +endseg + +beginseg + name "ovl_Object_Kankyo" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Object_Kankyo/z_object_kankyo.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Object_Kankyo/ovl_Object_Kankyo_reloc.o" +endseg + +beginseg + name "ovl_En_Du" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Du/z_en_du.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Du/ovl_En_Du_reloc.o" +endseg + +beginseg + name "ovl_En_Fd" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fd/z_en_fd.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fd/ovl_En_Fd_reloc.o" +endseg + +beginseg + name "ovl_En_Horse_Link_Child" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Link_Child/z_en_horse_link_child.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Link_Child/ovl_En_Horse_Link_Child_reloc.o" +endseg + +beginseg + name "ovl_Door_Ana" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Ana/z_door_ana.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Ana/ovl_Door_Ana_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot02_Objects" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot02_Objects/z_bg_spot02_objects.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot02_Objects/ovl_Bg_Spot02_Objects_reloc.o" +endseg + +beginseg + name "ovl_Bg_Haka" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka/z_bg_haka.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka/ovl_Bg_Haka_reloc.o" +endseg + +beginseg + name "ovl_Magic_Wind" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Magic_Wind/z_magic_wind.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Magic_Wind/ovl_Magic_Wind_reloc.o" +endseg + +beginseg + name "ovl_Magic_Fire" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Magic_Fire/z_magic_fire.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Magic_Fire/ovl_Magic_Fire_reloc.o" +endseg + +beginseg + name "ovl_En_Ru1" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ru1/z_en_ru1.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ru1/ovl_En_Ru1_reloc.o" +endseg + +beginseg + name "ovl_Boss_Fd2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Fd2/ovl_Boss_Fd2_reloc.o" +endseg + +beginseg + name "ovl_En_Fd_Fire" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fd_Fire/z_en_fd_fire.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fd_Fire/ovl_En_Fd_Fire_reloc.o" +endseg + +beginseg + name "ovl_En_Dh" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dh/z_en_dh.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dh/ovl_En_Dh_reloc.o" +endseg + +beginseg + name "ovl_En_Dha" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dha/z_en_dha.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dha/ovl_En_Dha_reloc.o" +endseg + +beginseg + name "ovl_En_Rl" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Rl/z_en_rl.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Rl/ovl_En_Rl_reloc.o" +endseg + +beginseg + name "ovl_En_Encount1" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Encount1/z_en_encount1.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Encount1/ovl_En_Encount1_reloc.o" +endseg + +beginseg + name "ovl_Demo_Du" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Du/z_demo_du.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Du/ovl_Demo_Du_reloc.o" +endseg + +beginseg + name "ovl_Demo_Im" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Im/z_demo_im.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Im/ovl_Demo_Im_reloc.o" +endseg + +beginseg + name "ovl_Demo_Tre_Lgt" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Tre_Lgt/z_demo_tre_lgt.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Tre_Lgt/ovl_Demo_Tre_Lgt_reloc.o" +endseg + +beginseg + name "ovl_En_Fw" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fw/z_en_fw.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fw/ovl_En_Fw_reloc.o" +endseg + +beginseg + name "ovl_Bg_Vb_Sima" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Vb_Sima/z_bg_vb_sima.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Vb_Sima/ovl_Bg_Vb_Sima_reloc.o" +endseg + +beginseg + name "ovl_En_Vb_Ball" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vb_Ball/z_en_vb_ball.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Vb_Ball/ovl_En_Vb_Ball_reloc.o" +endseg + +beginseg + name "ovl_Bg_Haka_Megane" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Megane/z_bg_haka_megane.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Megane/ovl_Bg_Haka_Megane_reloc.o" +endseg + +beginseg + name "ovl_Bg_Haka_MeganeBG" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_MeganeBG/z_bg_haka_meganebg.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_MeganeBG/ovl_Bg_Haka_MeganeBG_reloc.o" +endseg + +beginseg + name "ovl_Bg_Haka_Ship" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Ship/z_bg_haka_ship.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Ship/ovl_Bg_Haka_Ship_reloc.o" +endseg + +beginseg + name "ovl_Bg_Haka_Sgami" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Sgami/z_bg_haka_sgami.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Sgami/ovl_Bg_Haka_Sgami_reloc.o" +endseg + +beginseg + name "ovl_En_Heishi2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi2/z_en_heishi2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi2/ovl_En_Heishi2_reloc.o" +endseg + +beginseg + name "ovl_En_Encount2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Encount2/z_en_encount2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Encount2/ovl_En_Encount2_reloc.o" +endseg + +beginseg + name "ovl_En_Fire_Rock" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fire_Rock/z_en_fire_rock.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fire_Rock/ovl_En_Fire_Rock_reloc.o" +endseg + +beginseg + name "ovl_En_Brob" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Brob/z_en_brob.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Brob/ovl_En_Brob_reloc.o" +endseg + +beginseg + name "ovl_Mir_Ray" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Mir_Ray/z_mir_ray.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Mir_Ray/ovl_Mir_Ray_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot09_Obj" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot09_Obj/z_bg_spot09_obj.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot09_Obj/ovl_Bg_Spot09_Obj_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot18_Obj" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Obj/z_bg_spot18_obj.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Obj/ovl_Bg_Spot18_Obj_reloc.o" +endseg + +beginseg + name "ovl_Boss_Va" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Va/z_boss_va.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Va/ovl_Boss_Va_reloc.o" +endseg + +beginseg + name "ovl_Bg_Haka_Tubo" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Tubo/z_bg_haka_tubo.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Tubo/ovl_Bg_Haka_Tubo_reloc.o" +endseg + +beginseg + name "ovl_Bg_Haka_Trap" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Trap/z_bg_haka_trap.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Trap/ovl_Bg_Haka_Trap_reloc.o" +endseg + +beginseg + name "ovl_Bg_Haka_Huta" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Huta/z_bg_haka_huta.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Huta/ovl_Bg_Haka_Huta_reloc.o" +endseg + +beginseg + name "ovl_Bg_Haka_Zou" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Zou/z_bg_haka_zou.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Zou/ovl_Bg_Haka_Zou_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot17_Funen" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot17_Funen/z_bg_spot17_funen.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot17_Funen/ovl_Bg_Spot17_Funen_reloc.o" +endseg + +beginseg + name "ovl_En_Syateki_Itm" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Syateki_Itm/z_en_syateki_itm.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Syateki_Itm/ovl_En_Syateki_Itm_reloc.o" +endseg + +beginseg + name "ovl_En_Syateki_Man" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Syateki_Man/ovl_En_Syateki_Man_reloc.o" +endseg + +beginseg + name "ovl_En_Tana" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tana/z_en_tana.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tana/ovl_En_Tana_reloc.o" +endseg + +beginseg + name "ovl_En_Nb" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Nb/z_en_nb.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Nb/ovl_En_Nb_reloc.o" +endseg + +beginseg + name "ovl_Boss_Mo" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Mo/ovl_Boss_Mo_reloc.o" +endseg + +beginseg + name "ovl_En_Sb" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sb/z_en_sb.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sb/ovl_En_Sb_reloc.o" +endseg + +beginseg + name "ovl_En_Bigokuta" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bigokuta/ovl_En_Bigokuta_reloc.o" +endseg + +beginseg + name "ovl_En_Karebaba" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Karebaba/z_en_karebaba.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Karebaba/ovl_En_Karebaba_reloc.o" +endseg + +beginseg + name "ovl_Bg_Bdan_Objects" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bdan_Objects/z_bg_bdan_objects.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bdan_Objects/ovl_Bg_Bdan_Objects_reloc.o" +endseg + +beginseg + name "ovl_Demo_Sa" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Sa/z_demo_sa.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Sa/ovl_Demo_Sa_reloc.o" +endseg + +beginseg + name "ovl_Demo_Go" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Go/z_demo_go.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Go/ovl_Demo_Go_reloc.o" +endseg + +beginseg + name "ovl_En_In" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_In/z_en_in.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_In/ovl_En_In_reloc.o" +endseg + +beginseg + name "ovl_En_Tr" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tr/z_en_tr.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tr/ovl_En_Tr_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot16_Bombstone" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot16_Bombstone/z_bg_spot16_bombstone.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot16_Bombstone/ovl_Bg_Spot16_Bombstone_reloc.o" +endseg + +beginseg + name "ovl_Bg_Hidan_Kowarerukabe" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Kowarerukabe/z_bg_hidan_kowarerukabe.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Hidan_Kowarerukabe/ovl_Bg_Hidan_Kowarerukabe_reloc.o" +endseg + +beginseg + name "ovl_Bg_Bombwall" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bombwall/z_bg_bombwall.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bombwall/ovl_Bg_Bombwall_reloc.o" +endseg + +beginseg + name "ovl_En_Ru2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ru2/z_en_ru2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ru2/ovl_En_Ru2_reloc.o" +endseg + +beginseg + name "ovl_Obj_Dekujr" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Dekujr/z_obj_dekujr.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Dekujr/ovl_Obj_Dekujr_reloc.o" +endseg + +beginseg + name "ovl_Bg_Mizu_Uzu" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Uzu/z_bg_mizu_uzu.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Uzu/ovl_Bg_Mizu_Uzu_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot06_Objects" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot06_Objects/z_bg_spot06_objects.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot06_Objects/ovl_Bg_Spot06_Objects_reloc.o" +endseg + +beginseg + name "ovl_Bg_Ice_Objects" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Objects/z_bg_ice_objects.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Objects/ovl_Bg_Ice_Objects_reloc.o" +endseg + +beginseg + name "ovl_Bg_Haka_Water" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Water/z_bg_haka_water.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Water/ovl_Bg_Haka_Water_reloc.o" +endseg + +beginseg + name "ovl_En_Ma2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ma2/z_en_ma2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ma2/ovl_En_Ma2_reloc.o" +endseg + +beginseg + name "ovl_En_Bom_Chu" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom_Chu/z_en_bom_chu.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom_Chu/ovl_En_Bom_Chu_reloc.o" +endseg + +beginseg + name "ovl_En_Horse_Game_Check" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Horse_Game_Check/ovl_En_Horse_Game_Check_reloc.o" +endseg + +beginseg + name "ovl_Boss_Tw" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Tw/z_boss_tw.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Tw/ovl_Boss_Tw_reloc.o" +endseg + +beginseg + name "ovl_En_Rr" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Rr/z_en_rr.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Rr/ovl_En_Rr_reloc.o" +endseg + +beginseg + name "ovl_En_Ba" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ba/z_en_ba.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ba/ovl_En_Ba_reloc.o" +endseg + +beginseg + name "ovl_En_Bx" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bx/z_en_bx.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bx/ovl_En_Bx_reloc.o" +endseg + +beginseg + name "ovl_En_Anubice" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Anubice/z_en_anubice.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Anubice/ovl_En_Anubice_reloc.o" +endseg + +beginseg + name "ovl_En_Anubice_Fire" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Anubice_Fire/z_en_anubice_fire.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Anubice_Fire/ovl_En_Anubice_Fire_reloc.o" +endseg + +beginseg + name "ovl_Bg_Mori_Hashigo" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Hashigo/z_bg_mori_hashigo.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Hashigo/ovl_Bg_Mori_Hashigo_reloc.o" +endseg + +beginseg + name "ovl_Bg_Mori_Hashira4" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Hashira4/z_bg_mori_hashira4.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Hashira4/ovl_Bg_Mori_Hashira4_reloc.o" +endseg + +beginseg + name "ovl_Bg_Mori_Idomizu" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Idomizu/z_bg_mori_idomizu.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mori_Idomizu/ovl_Bg_Mori_Idomizu_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot16_Doughnut" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot16_Doughnut/z_bg_spot16_doughnut.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot16_Doughnut/ovl_Bg_Spot16_Doughnut_reloc.o" +endseg + +beginseg + name "ovl_Bg_Bdan_Switch" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bdan_Switch/z_bg_bdan_switch.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bdan_Switch/ovl_Bg_Bdan_Switch_reloc.o" +endseg + +beginseg + name "ovl_En_Ma1" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ma1/z_en_ma1.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ma1/ovl_En_Ma1_reloc.o" +endseg + +beginseg + name "ovl_Boss_Ganon" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Ganon/ovl_Boss_Ganon_reloc.o" +endseg + +beginseg + name "ovl_Boss_Sst" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Sst/ovl_Boss_Sst_reloc.o" +endseg + +beginseg + name "ovl_En_Ny" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ny/z_en_ny.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ny/ovl_En_Ny_reloc.o" +endseg + +beginseg + name "ovl_En_Fr" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fr/z_en_fr.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fr/ovl_En_Fr_reloc.o" +endseg + +beginseg + name "ovl_Item_Shield" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Shield/z_item_shield.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Shield/ovl_Item_Shield_reloc.o" +endseg + +beginseg + name "ovl_Bg_Ice_Shelter" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Shelter/z_bg_ice_shelter.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Shelter/ovl_Bg_Ice_Shelter_reloc.o" +endseg + +beginseg + name "ovl_En_Ice_Hono" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ice_Hono/z_en_ice_hono.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ice_Hono/ovl_En_Ice_Hono_reloc.o" +endseg + +beginseg + name "ovl_Item_Ocarina" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Ocarina/z_item_ocarina.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Ocarina/ovl_Item_Ocarina_reloc.o" +endseg + +beginseg + name "ovl_Magic_Dark" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Magic_Dark/z_magic_dark.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Magic_Dark/ovl_Magic_Dark_reloc.o" +endseg + +beginseg + name "ovl_Demo_6K" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_6K/z_demo_6k.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_6K/ovl_Demo_6K_reloc.o" +endseg + +beginseg + name "ovl_En_Anubice_Tag" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Anubice_Tag/z_en_anubice_tag.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Anubice_Tag/ovl_En_Anubice_Tag_reloc.o" +endseg + +beginseg + name "ovl_Bg_Haka_Gate" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Gate/z_bg_haka_gate.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Haka_Gate/ovl_Bg_Haka_Gate_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot15_Saku" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot15_Saku/z_bg_spot15_saku.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot15_Saku/ovl_Bg_Spot15_Saku_reloc.o" +endseg + +beginseg + name "ovl_Bg_Jya_Goroiwa" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Goroiwa/z_bg_jya_goroiwa.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Goroiwa/ovl_Bg_Jya_Goroiwa_reloc.o" +endseg + +beginseg + name "ovl_Bg_Jya_Zurerukabe" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Zurerukabe/z_bg_jya_zurerukabe.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Zurerukabe/ovl_Bg_Jya_Zurerukabe_reloc.o" +endseg + +beginseg + name "ovl_Bg_Jya_Cobra" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Cobra/z_bg_jya_cobra.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Cobra/ovl_Bg_Jya_Cobra_reloc.o" +endseg + +beginseg + name "ovl_Bg_Jya_Kanaami" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Kanaami/z_bg_jya_kanaami.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Kanaami/ovl_Bg_Jya_Kanaami_reloc.o" +endseg + +beginseg + name "ovl_Fishing" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Fishing/z_fishing.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Fishing/ovl_Fishing_reloc.o" +endseg + +beginseg + name "ovl_Obj_Oshihiki" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Oshihiki/z_obj_oshihiki.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Oshihiki/ovl_Obj_Oshihiki_reloc.o" +endseg + +beginseg + name "ovl_Bg_Gate_Shutter" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gate_Shutter/z_bg_gate_shutter.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gate_Shutter/ovl_Bg_Gate_Shutter_reloc.o" +endseg + +beginseg + name "ovl_Eff_Dust" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Eff_Dust/z_eff_dust.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Eff_Dust/ovl_Eff_Dust_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot01_Fusya" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Fusya/z_bg_spot01_fusya.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Fusya/ovl_Bg_Spot01_Fusya_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot01_Idohashira" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Idohashira/z_bg_spot01_idohashira.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Idohashira/ovl_Bg_Spot01_Idohashira_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot01_Idomizu" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Idomizu/z_bg_spot01_idomizu.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Idomizu/ovl_Bg_Spot01_Idomizu_reloc.o" +endseg + +beginseg + name "ovl_Bg_Po_Syokudai" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Po_Syokudai/z_bg_po_syokudai.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Po_Syokudai/ovl_Bg_Po_Syokudai_reloc.o" +endseg + +beginseg + name "ovl_Bg_Ganon_Otyuka" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ganon_Otyuka/z_bg_ganon_otyuka.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ganon_Otyuka/ovl_Bg_Ganon_Otyuka_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot15_Rrbox" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot15_Rrbox/z_bg_spot15_rrbox.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot15_Rrbox/ovl_Bg_Spot15_Rrbox_reloc.o" +endseg + +beginseg + name "ovl_Bg_Umajump" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Umajump/z_bg_umajump.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Umajump/ovl_Bg_Umajump_reloc.o" +endseg + +beginseg + name "ovl_En_Insect" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Insect/z_en_insect.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Insect/ovl_En_Insect_reloc.o" +endseg + +beginseg + name "ovl_En_Butte" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Butte/z_en_butte.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Butte/ovl_En_Butte_reloc.o" +endseg + +beginseg + name "ovl_En_Fish" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fish/z_en_fish.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fish/ovl_En_Fish_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot08_Iceblock" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot08_Iceblock/z_bg_spot08_iceblock.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot08_Iceblock/ovl_Bg_Spot08_Iceblock_reloc.o" +endseg + +beginseg + name "ovl_Item_Etcetera" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Etcetera/z_item_etcetera.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Etcetera/ovl_Item_Etcetera_reloc.o" +endseg + +beginseg + name "ovl_Arrow_Fire" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Arrow_Fire/ovl_Arrow_Fire_reloc.o" +endseg + +beginseg + name "ovl_Arrow_Ice" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Arrow_Ice/ovl_Arrow_Ice_reloc.o" +endseg + +beginseg + name "ovl_Arrow_Light" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Arrow_Light/z_arrow_light.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Arrow_Light/ovl_Arrow_Light_reloc.o" +endseg + +beginseg + name "ovl_Obj_Kibako" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Kibako/z_obj_kibako.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Kibako/ovl_Obj_Kibako_reloc.o" +endseg + +beginseg + name "ovl_Obj_Tsubo" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Tsubo/ovl_Obj_Tsubo_reloc.o" +endseg + +beginseg + name "ovl_En_Wonder_Item" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wonder_Item/z_en_wonder_item.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wonder_Item/ovl_En_Wonder_Item_reloc.o" +endseg + +beginseg + name "ovl_En_Ik" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ik/z_en_ik.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ik/ovl_En_Ik_reloc.o" +endseg + +beginseg + name "ovl_Demo_Ik" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Ik/z_demo_ik.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Ik/ovl_Demo_Ik_reloc.o" +endseg + +beginseg + name "ovl_En_Skj" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Skj/z_en_skj.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Skj/ovl_En_Skj_reloc.o" +endseg + +beginseg + name "ovl_En_Skjneedle" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Skjneedle/z_en_skjneedle.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Skjneedle/ovl_En_Skjneedle_reloc.o" +endseg + +beginseg + name "ovl_En_G_Switch" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_G_Switch/z_en_g_switch.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_G_Switch/ovl_En_G_Switch_reloc.o" +endseg + +beginseg + name "ovl_Demo_Ext" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Ext/z_demo_ext.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Ext/ovl_Demo_Ext_reloc.o" +endseg + +beginseg + name "ovl_Demo_Shd" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Shd/z_demo_shd.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Shd/ovl_Demo_Shd_reloc.o" +endseg + +beginseg + name "ovl_En_Dns" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dns/z_en_dns.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dns/ovl_En_Dns_reloc.o" +endseg + +beginseg + name "ovl_Elf_Msg" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Elf_Msg/z_elf_msg.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Elf_Msg/ovl_Elf_Msg_reloc.o" +endseg + +beginseg + name "ovl_En_Honotrap" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Honotrap/z_en_honotrap.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Honotrap/ovl_En_Honotrap_reloc.o" +endseg + +beginseg + name "ovl_En_Tubo_Trap" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tubo_Trap/z_en_tubo_trap.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tubo_Trap/ovl_En_Tubo_Trap_reloc.o" +endseg + +beginseg + name "ovl_Obj_Ice_Poly" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Ice_Poly/z_obj_ice_poly.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Ice_Poly/ovl_Obj_Ice_Poly_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot03_Taki" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot03_Taki/z_bg_spot03_taki.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot03_Taki/ovl_Bg_Spot03_Taki_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot07_Taki" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot07_Taki/z_bg_spot07_taki.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot07_Taki/ovl_Bg_Spot07_Taki_reloc.o" +endseg + +beginseg + name "ovl_En_Fz" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fz/z_en_fz.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fz/ovl_En_Fz_reloc.o" +endseg + +beginseg + name "ovl_En_Po_Relay" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Relay/ovl_En_Po_Relay_reloc.o" +endseg + +beginseg + name "ovl_Bg_Relay_Objects" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Relay_Objects/z_bg_relay_objects.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Relay_Objects/ovl_Bg_Relay_Objects_reloc.o" +endseg + +beginseg + name "ovl_En_Diving_Game" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Diving_Game/z_en_diving_game.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Diving_Game/ovl_En_Diving_Game_reloc.o" +endseg + +beginseg + name "ovl_En_Kusa" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kusa/z_en_kusa.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kusa/ovl_En_Kusa_reloc.o" +endseg + +beginseg + name "ovl_Obj_Bean" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Bean/ovl_Obj_Bean_reloc.o" +endseg + +beginseg + name "ovl_Obj_Bombiwa" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Bombiwa/z_obj_bombiwa.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Bombiwa/ovl_Obj_Bombiwa_reloc.o" +endseg + +beginseg + name "ovl_Obj_Switch" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Switch/ovl_Obj_Switch_reloc.o" +endseg + +beginseg + name "ovl_Obj_Elevator" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Elevator/z_obj_elevator.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Elevator/ovl_Obj_Elevator_reloc.o" +endseg + +beginseg + name "ovl_Obj_Lift" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Lift/z_obj_lift.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Lift/ovl_Obj_Lift_reloc.o" +endseg + +beginseg + name "ovl_Obj_Hsblock" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Hsblock/z_obj_hsblock.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Hsblock/ovl_Obj_Hsblock_reloc.o" +endseg + +beginseg + name "ovl_En_Okarina_Tag" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag_cutscene_data.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Okarina_Tag/ovl_En_Okarina_Tag_reloc.o" +endseg + +beginseg + name "ovl_En_Yabusame_Mark" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Yabusame_Mark/z_en_yabusame_mark.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Yabusame_Mark/ovl_En_Yabusame_Mark_reloc.o" +endseg + +beginseg + name "ovl_En_Goroiwa" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Goroiwa/ovl_En_Goroiwa_reloc.o" +endseg + +beginseg + name "ovl_En_Ex_Ruppy" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ex_Ruppy/z_en_ex_ruppy.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ex_Ruppy/ovl_En_Ex_Ruppy_reloc.o" +endseg + +beginseg + name "ovl_En_Toryo" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Toryo/z_en_toryo.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Toryo/ovl_En_Toryo_reloc.o" +endseg + +beginseg + name "ovl_En_Daiku" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Daiku/z_en_daiku.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Daiku/ovl_En_Daiku_reloc.o" +endseg + +beginseg + name "ovl_En_Nwc" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Nwc/z_en_nwc.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Nwc/ovl_En_Nwc_reloc.o" +endseg + +beginseg + name "ovl_En_Blkobj" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Blkobj/z_en_blkobj.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Blkobj/ovl_En_Blkobj_reloc.o" +endseg + +beginseg + name "ovl_Item_Inbox" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Inbox/z_item_inbox.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Item_Inbox/ovl_Item_Inbox_reloc.o" +endseg + +beginseg + name "ovl_En_Ge1" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ge1/z_en_ge1.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ge1/ovl_En_Ge1_reloc.o" +endseg + +beginseg + name "ovl_Obj_Blockstop" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Blockstop/z_obj_blockstop.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Blockstop/ovl_Obj_Blockstop_reloc.o" +endseg + +beginseg + name "ovl_En_Sda" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sda/z_en_sda.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sda/ovl_En_Sda_reloc.o" +endseg + +beginseg + name "ovl_En_Clear_Tag" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Clear_Tag/ovl_En_Clear_Tag_reloc.o" +endseg + +beginseg + name "ovl_En_Niw_Lady" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Niw_Lady/ovl_En_Niw_Lady_reloc.o" +endseg + +beginseg + name "ovl_En_Gm" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Gm/z_en_gm.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Gm/ovl_En_Gm_reloc.o" +endseg + +beginseg + name "ovl_En_Ms" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ms/z_en_ms.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ms/ovl_En_Ms_reloc.o" +endseg + +beginseg + name "ovl_En_Hs" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hs/z_en_hs.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hs/ovl_En_Hs_reloc.o" +endseg + +beginseg + name "ovl_Bg_Ingate" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ingate/ovl_Bg_Ingate_reloc.o" +endseg + +beginseg + name "ovl_En_Kanban" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kanban/z_en_kanban.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kanban/ovl_En_Kanban_reloc.o" +endseg + +beginseg + name "ovl_En_Heishi3" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi3/ovl_En_Heishi3_reloc.o" +endseg + +beginseg + name "ovl_En_Syateki_Niw" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Syateki_Niw/z_en_syateki_niw.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Syateki_Niw/ovl_En_Syateki_Niw_reloc.o" +endseg + +beginseg + name "ovl_En_Attack_Niw" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Attack_Niw/ovl_En_Attack_Niw_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot01_Idosoko" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Idosoko/z_bg_spot01_idosoko.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Idosoko/ovl_Bg_Spot01_Idosoko_reloc.o" +endseg + +beginseg + name "ovl_En_Sa" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sa/z_en_sa.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sa/ovl_En_Sa_reloc.o" +endseg + +beginseg + name "ovl_En_Wonder_Talk" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wonder_Talk/z_en_wonder_talk.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wonder_Talk/ovl_En_Wonder_Talk_reloc.o" +endseg + +beginseg + name "ovl_Bg_Gjyo_Bridge" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gjyo_Bridge/z_bg_gjyo_bridge.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gjyo_Bridge/ovl_Bg_Gjyo_Bridge_reloc.o" +endseg + +beginseg + name "ovl_En_Ds" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ds/z_en_ds.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ds/ovl_En_Ds_reloc.o" +endseg + +beginseg + name "ovl_En_Mk" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mk/z_en_mk.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mk/ovl_En_Mk_reloc.o" +endseg + +beginseg + name "ovl_En_Bom_Bowl_Man" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom_Bowl_Man/ovl_En_Bom_Bowl_Man_reloc.o" +endseg + +beginseg + name "ovl_En_Bom_Bowl_Pit" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom_Bowl_Pit/z_en_bom_bowl_pit.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Bom_Bowl_Pit/ovl_En_Bom_Bowl_Pit_reloc.o" +endseg + +beginseg + name "ovl_En_Owl" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Owl/z_en_owl.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Owl/ovl_En_Owl_reloc.o" +endseg + +beginseg + name "ovl_En_Ishi" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ishi/z_en_ishi.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ishi/ovl_En_Ishi_reloc.o" +endseg + +beginseg + name "ovl_Obj_Hana" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Hana/z_obj_hana.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Hana/ovl_Obj_Hana_reloc.o" +endseg + +beginseg + name "ovl_Obj_Lightswitch" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Lightswitch/z_obj_lightswitch.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Lightswitch/ovl_Obj_Lightswitch_reloc.o" +endseg + +beginseg + name "ovl_Obj_Mure2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Mure2/z_obj_mure2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Mure2/ovl_Obj_Mure2_reloc.o" +endseg + +beginseg + name "ovl_En_Go" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Go/z_en_go.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Go/ovl_En_Go_reloc.o" +endseg + +beginseg + name "ovl_En_Fu" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fu/z_en_fu.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Fu/ovl_En_Fu_reloc.o" +endseg + +beginseg + name "ovl_En_Changer" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Changer/z_en_changer.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Changer/ovl_En_Changer_reloc.o" +endseg + +beginseg + name "ovl_Bg_Jya_Megami" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Megami/z_bg_jya_megami.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Megami/ovl_Bg_Jya_Megami_reloc.o" +endseg + +beginseg + name "ovl_Bg_Jya_Lift" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Lift/z_bg_jya_lift.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Lift/ovl_Bg_Jya_Lift_reloc.o" +endseg + +beginseg + name "ovl_Bg_Jya_Bigmirror" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Bigmirror/z_bg_jya_bigmirror.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Bigmirror/ovl_Bg_Jya_Bigmirror_reloc.o" +endseg + +beginseg + name "ovl_Bg_Jya_Bombchuiwa" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Bombchuiwa/z_bg_jya_bombchuiwa.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Bombchuiwa/ovl_Bg_Jya_Bombchuiwa_reloc.o" +endseg + +beginseg + name "ovl_Bg_Jya_Amishutter" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Amishutter/z_bg_jya_amishutter.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Amishutter/ovl_Bg_Jya_Amishutter_reloc.o" +endseg + +beginseg + name "ovl_Bg_Jya_Bombiwa" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Bombiwa/z_bg_jya_bombiwa.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Bombiwa/ovl_Bg_Jya_Bombiwa_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot18_Basket" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Basket/z_bg_spot18_basket.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Basket/ovl_Bg_Spot18_Basket_reloc.o" +endseg + +beginseg + name "ovl_En_Ganon_Organ" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ganon_Organ/z_en_ganon_organ.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ganon_Organ/ovl_En_Ganon_Organ_reloc.o" +endseg + +beginseg + name "ovl_En_Siofuki" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Siofuki/z_en_siofuki.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Siofuki/ovl_En_Siofuki_reloc.o" +endseg + +beginseg + name "ovl_En_Stream" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Stream/z_en_stream.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Stream/ovl_En_Stream_reloc.o" +endseg + +beginseg + name "ovl_En_Mm" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mm/z_en_mm.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mm/ovl_En_Mm_reloc.o" +endseg + +beginseg + name "ovl_En_Ko" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ko/z_en_ko.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ko/ovl_En_Ko_reloc.o" +endseg + +beginseg + name "ovl_En_Kz" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kz/z_en_kz.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kz/ovl_En_Kz_reloc.o" +endseg + +beginseg + name "ovl_En_Weather_Tag" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Weather_Tag/ovl_En_Weather_Tag_reloc.o" +endseg + +beginseg + name "ovl_Bg_Sst_Floor" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Sst_Floor/z_bg_sst_floor.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Sst_Floor/ovl_Bg_Sst_Floor_reloc.o" +endseg + +beginseg + name "ovl_En_Ani" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ani/z_en_ani.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ani/ovl_En_Ani_reloc.o" +endseg + +beginseg + name "ovl_En_Ex_Item" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ex_Item/z_en_ex_item.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ex_Item/ovl_En_Ex_Item_reloc.o" +endseg + +beginseg + name "ovl_Bg_Jya_Ironobj" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Ironobj/z_bg_jya_ironobj.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Ironobj/ovl_Bg_Jya_Ironobj_reloc.o" +endseg + +beginseg + name "ovl_En_Js" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Js/z_en_js.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Js/ovl_En_Js_reloc.o" +endseg + +beginseg + name "ovl_En_Jsjutan" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Jsjutan/z_en_jsjutan.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Jsjutan/ovl_En_Jsjutan_reloc.o" +endseg + +beginseg + name "ovl_En_Cs" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Cs/z_en_cs.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Cs/ovl_En_Cs_reloc.o" +endseg + +beginseg + name "ovl_En_Md" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Md/z_en_md.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Md/ovl_En_Md_reloc.o" +endseg + +beginseg + name "ovl_En_Hy" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hy/z_en_hy.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hy/ovl_En_Hy_reloc.o" +endseg + +beginseg + name "ovl_En_Ganon_Mant" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ganon_Mant/z_en_ganon_mant.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ganon_Mant/ovl_En_Ganon_Mant_reloc.o" +endseg + +beginseg + name "ovl_En_Okarina_Effect" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Okarina_Effect/z_en_okarina_effect.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Okarina_Effect/ovl_En_Okarina_Effect_reloc.o" +endseg + +beginseg + name "ovl_En_Mag" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mag/z_en_mag.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mag/ovl_En_Mag_reloc.o" +endseg + +beginseg + name "ovl_Door_Gerudo" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Gerudo/z_door_gerudo.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Gerudo/ovl_Door_Gerudo_reloc.o" +endseg + +beginseg + name "ovl_Elf_Msg2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Elf_Msg2/z_elf_msg2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Elf_Msg2/ovl_Elf_Msg2_reloc.o" +endseg + +beginseg + name "ovl_Demo_Gt" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Gt/z_demo_gt.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Gt/ovl_Demo_Gt_reloc.o" +endseg + +beginseg + name "ovl_En_Po_Field" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Field/z_en_po_field.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Field/ovl_En_Po_Field_reloc.o" +endseg + +beginseg + name "ovl_Efc_Erupc" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Efc_Erupc/z_efc_erupc.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Efc_Erupc/ovl_Efc_Erupc_reloc.o" +endseg + +beginseg + name "ovl_Bg_Zg" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Zg/z_bg_zg.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Zg/ovl_Bg_Zg_reloc.o" +endseg + +beginseg + name "ovl_En_Heishi4" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi4/z_en_heishi4.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Heishi4/ovl_En_Heishi4_reloc.o" +endseg + +beginseg + name "ovl_En_Zl3" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl3/z_en_zl3.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl3/ovl_En_Zl3_reloc.o" +endseg + +beginseg + name "ovl_Boss_Ganon2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Boss_Ganon2/ovl_Boss_Ganon2_reloc.o" +endseg + +beginseg + name "ovl_En_Kakasi" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kakasi/ovl_En_Kakasi_reloc.o" +endseg + +beginseg + name "ovl_En_Takara_Man" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Takara_Man/z_en_takara_man.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Takara_Man/ovl_En_Takara_Man_reloc.o" +endseg + +beginseg + name "ovl_Obj_Makeoshihiki" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Makeoshihiki/z_obj_makeoshihiki.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Makeoshihiki/ovl_Obj_Makeoshihiki_reloc.o" +endseg + +beginseg + name "ovl_Oceff_Spot" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Spot/z_oceff_spot.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Spot/ovl_Oceff_Spot_reloc.o" +endseg + +beginseg + name "ovl_End_Title" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_End_Title/z_end_title.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_End_Title/ovl_End_Title_reloc.o" +endseg + +beginseg + name "ovl_En_Torch" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Torch/z_en_torch.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Torch/ovl_En_Torch_reloc.o" +endseg + +beginseg + name "ovl_Demo_Ec" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Ec/ovl_Demo_Ec_reloc.o" +endseg + +beginseg + name "ovl_Shot_Sun" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Shot_Sun/z_shot_sun.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Shot_Sun/ovl_Shot_Sun_reloc.o" +endseg + +beginseg + name "ovl_En_Dy_Extra" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dy_Extra/z_en_dy_extra.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dy_Extra/ovl_En_Dy_Extra_reloc.o" +endseg + +beginseg + name "ovl_En_Wonder_Talk2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wonder_Talk2/z_en_wonder_talk2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wonder_Talk2/ovl_En_Wonder_Talk2_reloc.o" +endseg + +beginseg + name "ovl_En_Ge2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ge2/z_en_ge2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ge2/ovl_En_Ge2_reloc.o" +endseg + +beginseg + name "ovl_Obj_Roomtimer" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Roomtimer/ovl_Obj_Roomtimer_reloc.o" +endseg + +beginseg + name "ovl_En_Ssh" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ssh/z_en_ssh.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ssh/ovl_En_Ssh_reloc.o" +endseg + +beginseg + name "ovl_En_Sth" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sth/z_en_sth.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Sth/ovl_En_Sth_reloc.o" +endseg + +beginseg + name "ovl_Oceff_Wipe" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe/z_oceff_wipe.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe/ovl_Oceff_Wipe_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Dust" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dust/z_eff_ss_dust.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dust/ovl_Effect_Ss_Dust_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_KiraKira" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_KiraKira/z_eff_ss_kirakira.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_KiraKira/ovl_Effect_Ss_KiraKira_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Bomb" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Bomb/z_eff_ss_bomb.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Bomb/ovl_Effect_Ss_Bomb_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Bomb2" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Bomb2/z_eff_ss_bomb2.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Bomb2/ovl_Effect_Ss_Bomb2_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Blast" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Blast/z_eff_ss_blast.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Blast/ovl_Effect_Ss_Blast_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_G_Spk" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Spk/z_eff_ss_g_spk.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Spk/ovl_Effect_Ss_G_Spk_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_D_Fire" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_D_Fire/z_eff_ss_d_fire.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_D_Fire/ovl_Effect_Ss_D_Fire_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Bubble" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Bubble/z_eff_ss_bubble.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Bubble/ovl_Effect_Ss_Bubble_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_G_Ripple" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Ripple/z_eff_ss_g_ripple.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Ripple/ovl_Effect_Ss_G_Ripple_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_G_Splash" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Splash/z_eff_ss_g_splash.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Splash/ovl_Effect_Ss_G_Splash_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_G_Magma" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Magma/z_eff_ss_g_magma.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Magma/ovl_Effect_Ss_G_Magma_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_G_Fire" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Fire/z_eff_ss_g_fire.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Fire/ovl_Effect_Ss_G_Fire_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Lightning" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Lightning/z_eff_ss_lightning.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Lightning/ovl_Effect_Ss_Lightning_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Dt_Bubble" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dt_Bubble/z_eff_ss_dt_bubble.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dt_Bubble/ovl_Effect_Ss_Dt_Bubble_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Hahen" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Hahen/ovl_Effect_Ss_Hahen_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Stick" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Stick/z_eff_ss_stick.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Stick/ovl_Effect_Ss_Stick_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Sibuki" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Sibuki/z_eff_ss_sibuki.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Sibuki/ovl_Effect_Ss_Sibuki_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Sibuki2" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Sibuki2/z_eff_ss_sibuki2.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Sibuki2/ovl_Effect_Ss_Sibuki2_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_G_Magma2" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Magma2/z_eff_ss_g_magma2.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_G_Magma2/ovl_Effect_Ss_G_Magma2_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Stone1" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Stone1/z_eff_ss_stone1.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Stone1/ovl_Effect_Ss_Stone1_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_HitMark" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_HitMark/z_eff_ss_hitmark.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_HitMark/ovl_Effect_Ss_HitMark_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Fhg_Flash" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Fhg_Flash/z_eff_ss_fhg_flash.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Fhg_Flash/ovl_Effect_Ss_Fhg_Flash_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_K_Fire" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_K_Fire/z_eff_ss_k_fire.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_K_Fire/ovl_Effect_Ss_K_Fire_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Solder_Srch_Ball" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Solder_Srch_Ball/z_eff_ss_solder_srch_ball.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Solder_Srch_Ball/ovl_Effect_Ss_Solder_Srch_Ball_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Kakera" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Kakera/ovl_Effect_Ss_Kakera_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Ice_Piece" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Ice_Piece/z_eff_ss_ice_piece.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Ice_Piece/ovl_Effect_Ss_Ice_Piece_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_En_Ice" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_En_Ice/z_eff_ss_en_ice.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_En_Ice/ovl_Effect_Ss_En_Ice_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Fire_Tail" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Fire_Tail/z_eff_ss_fire_tail.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Fire_Tail/ovl_Effect_Ss_Fire_Tail_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_En_Fire" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_En_Fire/z_eff_ss_en_fire.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_En_Fire/ovl_Effect_Ss_En_Fire_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Extra" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Extra/ovl_Effect_Ss_Extra_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Fcircle" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Fcircle/z_eff_ss_fcircle.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Fcircle/ovl_Effect_Ss_Fcircle_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Dead_Db" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Db/z_eff_ss_dead_db.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Db/ovl_Effect_Ss_Dead_Db_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Dead_Dd" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Dd/z_eff_ss_dead_dd.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Dd/ovl_Effect_Ss_Dead_Dd_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Dead_Ds" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Ds/z_eff_ss_dead_ds.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Ds/ovl_Effect_Ss_Dead_Ds_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Dead_Sound" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Sound/z_eff_ss_dead_sound.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Dead_Sound/ovl_Effect_Ss_Dead_Sound_reloc.o" +endseg + +beginseg + name "ovl_Oceff_Storm" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Storm/z_oceff_storm.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Storm/ovl_Oceff_Storm_reloc.o" +endseg + +beginseg + name "ovl_En_Weiyer" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Weiyer/z_en_weiyer.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Weiyer/ovl_En_Weiyer_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot05_Soko" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot05_Soko/z_bg_spot05_soko.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot05_Soko/ovl_Bg_Spot05_Soko_reloc.o" +endseg + +beginseg + name "ovl_Bg_Jya_1flift" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_1flift/z_bg_jya_1flift.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_1flift/ovl_Bg_Jya_1flift_reloc.o" +endseg + +beginseg + name "ovl_Bg_Jya_Haheniron" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Haheniron/z_bg_jya_haheniron.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Haheniron/ovl_Bg_Jya_Haheniron_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot12_Gate" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot12_Gate/z_bg_spot12_gate.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot12_Gate/ovl_Bg_Spot12_Gate_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot12_Saku" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot12_Saku/z_bg_spot12_saku.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot12_Saku/ovl_Bg_Spot12_Saku_reloc.o" +endseg + +beginseg + name "ovl_En_Hintnuts" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hintnuts/z_en_hintnuts.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hintnuts/ovl_En_Hintnuts_reloc.o" +endseg + +beginseg + name "ovl_En_Nutsball" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Nutsball/z_en_nutsball.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Nutsball/ovl_En_Nutsball_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot00_Break" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot00_Break/z_bg_spot00_break.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot00_Break/ovl_Bg_Spot00_Break_reloc.o" +endseg + +beginseg + name "ovl_En_Shopnuts" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Shopnuts/z_en_shopnuts.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Shopnuts/ovl_En_Shopnuts_reloc.o" +endseg + +beginseg + name "ovl_En_It" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_It/z_en_it.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_It/ovl_En_It_reloc.o" +endseg + +beginseg + name "ovl_En_GeldB" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_GeldB/z_en_geldb.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_GeldB/ovl_En_GeldB_reloc.o" +endseg + +beginseg + name "ovl_Oceff_Wipe2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe2/z_oceff_wipe2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe2/ovl_Oceff_Wipe2_reloc.o" +endseg + +beginseg + name "ovl_Oceff_Wipe3" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe3/z_oceff_wipe3.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe3/ovl_Oceff_Wipe3_reloc.o" +endseg + +beginseg + name "ovl_En_Niw_Girl" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Niw_Girl/z_en_niw_girl.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Niw_Girl/ovl_En_Niw_Girl_reloc.o" +endseg + +beginseg + name "ovl_En_Dog" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dog/z_en_dog.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dog/ovl_En_Dog_reloc.o" +endseg + +beginseg + name "ovl_En_Si" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Si/z_en_si.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Si/ovl_En_Si_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot01_Objects2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Objects2/z_bg_spot01_objects2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot01_Objects2/ovl_Bg_Spot01_Objects2_reloc.o" +endseg + +beginseg + name "ovl_Obj_Comb" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Comb/ovl_Obj_Comb_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot11_Bakudankabe" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot11_Bakudankabe/z_bg_spot11_bakudankabe.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot11_Bakudankabe/ovl_Bg_Spot11_Bakudankabe_reloc.o" +endseg + +beginseg + name "ovl_Obj_Kibako2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Kibako2/z_obj_kibako2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Kibako2/ovl_Obj_Kibako2_reloc.o" +endseg + +beginseg + name "ovl_En_Dnt_Demo" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dnt_Demo/z_en_dnt_demo.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dnt_Demo/ovl_En_Dnt_Demo_reloc.o" +endseg + +beginseg + name "ovl_En_Dnt_Jiji" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dnt_Jiji/z_en_dnt_jiji.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dnt_Jiji/ovl_En_Dnt_Jiji_reloc.o" +endseg + +beginseg + name "ovl_En_Dnt_Nomal" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dnt_Nomal/z_en_dnt_nomal.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Dnt_Nomal/ovl_En_Dnt_Nomal_reloc.o" +endseg + +beginseg + name "ovl_En_Guest" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Guest/z_en_guest.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Guest/ovl_En_Guest_reloc.o" +endseg + +beginseg + name "ovl_Bg_Bom_Guard" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bom_Guard/z_bg_bom_guard.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bom_Guard/ovl_Bg_Bom_Guard_reloc.o" +endseg + +beginseg + name "ovl_En_Hs2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hs2/z_en_hs2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Hs2/ovl_En_Hs2_reloc.o" +endseg + +beginseg + name "ovl_Demo_Kekkai" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kekkai/z_demo_kekkai.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Kekkai/ovl_Demo_Kekkai_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot08_Bakudankabe" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot08_Bakudankabe/z_bg_spot08_bakudankabe.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot08_Bakudankabe/ovl_Bg_Spot08_Bakudankabe_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot17_Bakudankabe" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot17_Bakudankabe/z_bg_spot17_bakudankabe.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot17_Bakudankabe/ovl_Bg_Spot17_Bakudankabe_reloc.o" +endseg + +beginseg + name "ovl_Obj_Mure3" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Mure3/z_obj_mure3.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Mure3/ovl_Obj_Mure3_reloc.o" +endseg + +beginseg + name "ovl_En_Tg" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tg/z_en_tg.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Tg/ovl_En_Tg_reloc.o" +endseg + +beginseg + name "ovl_En_Mu" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mu/z_en_mu.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mu/ovl_En_Mu_reloc.o" +endseg + +beginseg + name "ovl_En_Go2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Go2/z_en_go2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Go2/ovl_En_Go2_reloc.o" +endseg + +beginseg + name "ovl_En_Wf" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wf/z_en_wf.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wf/ovl_En_Wf_reloc.o" +endseg + +beginseg + name "ovl_En_Skb" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Skb/z_en_skb.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Skb/ovl_En_Skb_reloc.o" +endseg + +beginseg + name "ovl_Demo_Gj" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Gj/z_demo_gj.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Gj/ovl_Demo_Gj_reloc.o" +endseg + +beginseg + name "ovl_Demo_Geff" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Geff/z_demo_geff.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Demo_Geff/ovl_Demo_Geff_reloc.o" +endseg + +beginseg + name "ovl_Bg_Gnd_Firemeiro" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Firemeiro/z_bg_gnd_firemeiro.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Firemeiro/ovl_Bg_Gnd_Firemeiro_reloc.o" +endseg + +beginseg + name "ovl_Bg_Gnd_Darkmeiro" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Darkmeiro/z_bg_gnd_darkmeiro.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Darkmeiro/ovl_Bg_Gnd_Darkmeiro_reloc.o" +endseg + +beginseg + name "ovl_Bg_Gnd_Soulmeiro" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Soulmeiro/z_bg_gnd_soulmeiro.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Soulmeiro/ovl_Bg_Gnd_Soulmeiro_reloc.o" +endseg + +beginseg + name "ovl_Bg_Gnd_Nisekabe" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Nisekabe/z_bg_gnd_nisekabe.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Nisekabe/ovl_Bg_Gnd_Nisekabe_reloc.o" +endseg + +beginseg + name "ovl_Bg_Gnd_Iceblock" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Iceblock/z_bg_gnd_iceblock.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Gnd_Iceblock/ovl_Bg_Gnd_Iceblock_reloc.o" +endseg + +beginseg + name "ovl_Bg_Ydan_Sp" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ydan_Sp/z_bg_ydan_sp.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ydan_Sp/ovl_Bg_Ydan_Sp_reloc.o" +endseg + +beginseg + name "ovl_En_Gb" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Gb/z_en_gb.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Gb/ovl_En_Gb_reloc.o" +endseg + +beginseg + name "ovl_En_Gs" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Gs/z_en_gs.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Gs/ovl_En_Gs_reloc.o" +endseg + +beginseg + name "ovl_Bg_Mizu_Bwall" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Bwall/z_bg_mizu_bwall.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Bwall/ovl_Bg_Mizu_Bwall_reloc.o" +endseg + +beginseg + name "ovl_Bg_Mizu_Shutter" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Shutter/z_bg_mizu_shutter.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Mizu_Shutter/ovl_Bg_Mizu_Shutter_reloc.o" +endseg + +beginseg + name "ovl_En_Daiku_Kakariko" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Daiku_Kakariko/z_en_daiku_kakariko.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Daiku_Kakariko/ovl_En_Daiku_Kakariko_reloc.o" +endseg + +beginseg + name "ovl_Bg_Bowl_Wall" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bowl_Wall/z_bg_bowl_wall.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Bowl_Wall/ovl_Bg_Bowl_Wall_reloc.o" +endseg + +beginseg + name "ovl_En_Wall_Tubo" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wall_Tubo/z_en_wall_tubo.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Wall_Tubo/ovl_En_Wall_Tubo_reloc.o" +endseg + +beginseg + name "ovl_En_Po_Desert" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Desert/z_en_po_desert.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Po_Desert/ovl_En_Po_Desert_reloc.o" +endseg + +beginseg + name "ovl_En_Crow" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Crow/z_en_crow.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Crow/ovl_En_Crow_reloc.o" +endseg + +beginseg + name "ovl_Door_Killer" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Killer/z_door_killer.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Door_Killer/ovl_Door_Killer_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot11_Oasis" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot11_Oasis/z_bg_spot11_oasis.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot11_Oasis/ovl_Bg_Spot11_Oasis_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot18_Futa" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Futa/z_bg_spot18_futa.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Futa/ovl_Bg_Spot18_Futa_reloc.o" +endseg + +beginseg + name "ovl_Bg_Spot18_Shutter" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Shutter/z_bg_spot18_shutter.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Spot18_Shutter/ovl_Bg_Spot18_Shutter_reloc.o" +endseg + +beginseg + name "ovl_En_Ma3" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ma3/z_en_ma3.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ma3/ovl_En_Ma3_reloc.o" +endseg + +beginseg + name "ovl_En_Cow" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Cow/z_en_cow.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Cow/ovl_En_Cow_reloc.o" +endseg + +beginseg + name "ovl_Bg_Ice_Turara" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Turara/z_bg_ice_turara.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Turara/ovl_Bg_Ice_Turara_reloc.o" +endseg + +beginseg + name "ovl_Bg_Ice_Shutter" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Shutter/z_bg_ice_shutter.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Ice_Shutter/ovl_Bg_Ice_Shutter_reloc.o" +endseg + +beginseg + name "ovl_En_Kakasi2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kakasi2/z_en_kakasi2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kakasi2/ovl_En_Kakasi2_reloc.o" +endseg + +beginseg + name "ovl_En_Kakasi3" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kakasi3/z_en_kakasi3.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Kakasi3/ovl_En_Kakasi3_reloc.o" +endseg + +beginseg + name "ovl_Oceff_Wipe4" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe4/z_oceff_wipe4.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Oceff_Wipe4/ovl_Oceff_Wipe4_reloc.o" +endseg + +beginseg + name "ovl_En_Eg" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Eg/z_en_eg.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Eg/ovl_En_Eg_reloc.o" +endseg + +beginseg + name "ovl_Bg_Menkuri_Nisekabe" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Menkuri_Nisekabe/z_bg_menkuri_nisekabe.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Menkuri_Nisekabe/ovl_Bg_Menkuri_Nisekabe_reloc.o" +endseg + +beginseg + name "ovl_En_Zo" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zo/z_en_zo.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zo/ovl_En_Zo_reloc.o" +endseg + +beginseg + name "ovl_Effect_Ss_Ice_Smoke" + compress + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Ice_Smoke/z_eff_ss_ice_smoke.o" + include "$(BUILD_DIR)/src/overlays/effects/ovl_Effect_Ss_Ice_Smoke/ovl_Effect_Ss_Ice_Smoke_reloc.o" +endseg + +beginseg + name "ovl_Obj_Makekinsuta" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Makekinsuta/z_obj_makekinsuta.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Makekinsuta/ovl_Obj_Makekinsuta_reloc.o" +endseg + +beginseg + name "ovl_En_Ge3" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ge3/z_en_ge3.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Ge3/ovl_En_Ge3_reloc.o" +endseg + +beginseg + name "ovl_Obj_Timeblock" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Timeblock/z_obj_timeblock.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Timeblock/ovl_Obj_Timeblock_reloc.o" +endseg + +beginseg + name "ovl_Obj_Hamishi" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Hamishi/z_obj_hamishi.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Hamishi/ovl_Obj_Hamishi_reloc.o" +endseg + +beginseg + name "ovl_En_Zl4" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl4/z_en_zl4.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Zl4/ovl_En_Zl4_reloc.o" +endseg + +beginseg + name "ovl_En_Mm2" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mm2/z_en_mm2.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Mm2/ovl_En_Mm2_reloc.o" +endseg + +beginseg + name "ovl_Bg_Jya_Block" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Block/z_bg_jya_block.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Bg_Jya_Block/ovl_Bg_Jya_Block_reloc.o" +endseg + +beginseg + name "ovl_Obj_Warp2block" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Warp2block/z_obj_warp2block.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_Obj_Warp2block/ovl_Obj_Warp2block_reloc.o" +endseg diff --git a/spec/scenes_gc_ique.inc b/spec/scenes_gc_ique.inc new file mode 100644 index 0000000000..6b1b42b05a --- /dev/null +++ b/spec/scenes_gc_ique.inc @@ -0,0 +1,4079 @@ +beginseg + name "ydan_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_scene.o" + number 2 +endseg + +beginseg + name "ydan_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_0.o" + number 3 +endseg + +beginseg + name "ydan_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_1.o" + number 3 +endseg + +beginseg + name "ydan_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_2.o" + number 3 +endseg + +beginseg + name "ydan_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_3.o" + number 3 +endseg + +beginseg + name "ydan_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_4.o" + number 3 +endseg + +beginseg + name "ydan_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_5.o" + number 3 +endseg + +beginseg + name "ydan_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_6.o" + number 3 +endseg + +beginseg + name "ydan_room_7" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_7.o" + number 3 +endseg + +beginseg + name "ydan_room_8" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_8.o" + number 3 +endseg + +beginseg + name "ydan_room_9" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_9.o" + number 3 +endseg + +beginseg + name "ydan_room_10" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_10.o" + number 3 +endseg + +beginseg + name "ydan_room_11" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_11.o" + number 3 +endseg + +beginseg + name "ddan_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_scene.o" + number 2 +endseg + +beginseg + name "ddan_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_0.o" + number 3 +endseg + +beginseg + name "ddan_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_1.o" + number 3 +endseg + +beginseg + name "ddan_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_2.o" + number 3 +endseg + +beginseg + name "ddan_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_3.o" + number 3 +endseg + +beginseg + name "ddan_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_4.o" + number 3 +endseg + +beginseg + name "ddan_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_5.o" + number 3 +endseg + +beginseg + name "ddan_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_6.o" + number 3 +endseg + +beginseg + name "ddan_room_7" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_7.o" + number 3 +endseg + +beginseg + name "ddan_room_8" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_8.o" + number 3 +endseg + +beginseg + name "ddan_room_9" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_9.o" + number 3 +endseg + +beginseg + name "ddan_room_10" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_10.o" + number 3 +endseg + +beginseg + name "ddan_room_11" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_11.o" + number 3 +endseg + +beginseg + name "ddan_room_12" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_12.o" + number 3 +endseg + +beginseg + name "ddan_room_13" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_13.o" + number 3 +endseg + +beginseg + name "ddan_room_14" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_14.o" + number 3 +endseg + +beginseg + name "ddan_room_15" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_15.o" + number 3 +endseg + +beginseg + name "ddan_room_16" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_16.o" + number 3 +endseg + +beginseg + name "bdan_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_scene.o" + number 2 +endseg + +beginseg + name "bdan_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_0.o" + number 3 +endseg + +beginseg + name "bdan_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_1.o" + number 3 +endseg + +beginseg + name "bdan_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_2.o" + number 3 +endseg + +beginseg + name "bdan_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_3.o" + number 3 +endseg + +beginseg + name "bdan_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_4.o" + number 3 +endseg + +beginseg + name "bdan_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_5.o" + number 3 +endseg + +beginseg + name "bdan_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_6.o" + number 3 +endseg + +beginseg + name "bdan_room_7" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_7.o" + number 3 +endseg + +beginseg + name "bdan_room_8" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_8.o" + number 3 +endseg + +beginseg + name "bdan_room_9" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_9.o" + number 3 +endseg + +beginseg + name "bdan_room_10" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_10.o" + number 3 +endseg + +beginseg + name "bdan_room_11" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_11.o" + number 3 +endseg + +beginseg + name "bdan_room_12" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_12.o" + number 3 +endseg + +beginseg + name "bdan_room_13" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_13.o" + number 3 +endseg + +beginseg + name "bdan_room_14" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_14.o" + number 3 +endseg + +beginseg + name "bdan_room_15" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_15.o" + number 3 +endseg + +beginseg + name "Bmori1_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_scene.o" + number 2 +endseg + +beginseg + name "Bmori1_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_0.o" + number 3 +endseg + +beginseg + name "Bmori1_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_1.o" + number 3 +endseg + +beginseg + name "Bmori1_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_2.o" + number 3 +endseg + +beginseg + name "Bmori1_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_3.o" + number 3 +endseg + +beginseg + name "Bmori1_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_4.o" + number 3 +endseg + +beginseg + name "Bmori1_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_5.o" + number 3 +endseg + +beginseg + name "Bmori1_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_6.o" + number 3 +endseg + +beginseg + name "Bmori1_room_7" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_7.o" + number 3 +endseg + +beginseg + name "Bmori1_room_8" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_8.o" + number 3 +endseg + +beginseg + name "Bmori1_room_9" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_9.o" + number 3 +endseg + +beginseg + name "Bmori1_room_10" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_10.o" + number 3 +endseg + +beginseg + name "Bmori1_room_11" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_11.o" + number 3 +endseg + +beginseg + name "Bmori1_room_12" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_12.o" + number 3 +endseg + +beginseg + name "Bmori1_room_13" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_13.o" + number 3 +endseg + +beginseg + name "Bmori1_room_14" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_14.o" + number 3 +endseg + +beginseg + name "Bmori1_room_15" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_15.o" + number 3 +endseg + +beginseg + name "Bmori1_room_16" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_16.o" + number 3 +endseg + +beginseg + name "Bmori1_room_17" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_17.o" + number 3 +endseg + +beginseg + name "Bmori1_room_18" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_18.o" + number 3 +endseg + +beginseg + name "Bmori1_room_19" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_19.o" + number 3 +endseg + +beginseg + name "Bmori1_room_20" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_20.o" + number 3 +endseg + +beginseg + name "Bmori1_room_21" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_21.o" + number 3 +endseg + +beginseg + name "Bmori1_room_22" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_22.o" + number 3 +endseg + +beginseg + name "HIDAN_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_scene.o" + number 2 +endseg + +beginseg + name "HIDAN_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_0.o" + number 3 +endseg + +beginseg + name "HIDAN_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_1.o" + number 3 +endseg + +beginseg + name "HIDAN_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_2.o" + number 3 +endseg + +beginseg + name "HIDAN_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_3.o" + number 3 +endseg + +beginseg + name "HIDAN_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_4.o" + number 3 +endseg + +beginseg + name "HIDAN_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_5.o" + number 3 +endseg + +beginseg + name "HIDAN_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_6.o" + number 3 +endseg + +beginseg + name "HIDAN_room_7" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_7.o" + number 3 +endseg + +beginseg + name "HIDAN_room_8" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_8.o" + number 3 +endseg + +beginseg + name "HIDAN_room_9" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_9.o" + number 3 +endseg + +beginseg + name "HIDAN_room_10" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_10.o" + number 3 +endseg + +beginseg + name "HIDAN_room_11" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_11.o" + number 3 +endseg + +beginseg + name "HIDAN_room_12" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_12.o" + number 3 +endseg + +beginseg + name "HIDAN_room_13" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_13.o" + number 3 +endseg + +beginseg + name "HIDAN_room_14" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_14.o" + number 3 +endseg + +beginseg + name "HIDAN_room_15" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_15.o" + number 3 +endseg + +beginseg + name "HIDAN_room_16" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_16.o" + number 3 +endseg + +beginseg + name "HIDAN_room_17" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_17.o" + number 3 +endseg + +beginseg + name "HIDAN_room_18" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_18.o" + number 3 +endseg + +beginseg + name "HIDAN_room_19" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_19.o" + number 3 +endseg + +beginseg + name "HIDAN_room_20" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_20.o" + number 3 +endseg + +beginseg + name "HIDAN_room_21" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_21.o" + number 3 +endseg + +beginseg + name "HIDAN_room_22" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_22.o" + number 3 +endseg + +beginseg + name "HIDAN_room_23" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_23.o" + number 3 +endseg + +beginseg + name "HIDAN_room_24" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_24.o" + number 3 +endseg + +beginseg + name "HIDAN_room_25" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_25.o" + number 3 +endseg + +beginseg + name "HIDAN_room_26" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_26.o" + number 3 +endseg + +beginseg + name "MIZUsin_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_scene.o" + number 2 +endseg + +beginseg + name "MIZUsin_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_0.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_1.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_2.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_3.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_4.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_5.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_6.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_7" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_7.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_8" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_8.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_9" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_9.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_10" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_10.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_11" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_11.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_12" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_12.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_13" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_13.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_14" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_14.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_15" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_15.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_16" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_16.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_17" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_17.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_18" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_18.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_19" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_19.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_20" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_20.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_21" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_21.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_22" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_22.o" + number 3 +endseg + +beginseg + name "jyasinzou_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_scene.o" + number 2 +endseg + +beginseg + name "jyasinzou_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_0.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_1.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_2.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_3.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_4.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_5.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_6.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_7" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_7.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_8" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_8.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_9" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_9.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_10" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_10.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_11" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_11.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_12" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_12.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_13" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_13.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_14" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_14.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_15" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_15.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_16" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_16.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_17" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_17.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_18" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_18.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_19" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_19.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_20" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_20.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_21" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_21.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_22" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_22.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_23" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_23.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_24" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_24.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_25" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_25.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_26" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_26.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_27" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_27.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_28" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_28.o" + number 3 +endseg + +beginseg + name "HAKAdan_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_scene.o" + number 2 +endseg + +beginseg + name "HAKAdan_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_0.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_1.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_2.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_3.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_4.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_5.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_6.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_7" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_7.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_8" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_8.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_9" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_9.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_10" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_10.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_11" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_11.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_12" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_12.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_13" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_13.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_14" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_14.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_15" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_15.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_16" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_16.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_17" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_17.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_18" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_18.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_19" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_19.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_20" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_20.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_21" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_21.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_22" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_22.o" + number 3 +endseg + +beginseg + name "HAKAdanCH_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_scene.o" + number 2 +endseg + +beginseg + name "HAKAdanCH_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_0.o" + number 3 +endseg + +beginseg + name "HAKAdanCH_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_1.o" + number 3 +endseg + +beginseg + name "HAKAdanCH_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_2.o" + number 3 +endseg + +beginseg + name "HAKAdanCH_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_3.o" + number 3 +endseg + +beginseg + name "HAKAdanCH_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_4.o" + number 3 +endseg + +beginseg + name "HAKAdanCH_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_5.o" + number 3 +endseg + +beginseg + name "HAKAdanCH_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_6.o" + number 3 +endseg + +beginseg + name "ice_doukutu_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_scene.o" + number 2 +endseg + +beginseg + name "ice_doukutu_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_0.o" + number 3 +endseg + +beginseg + name "ice_doukutu_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_1.o" + number 3 +endseg + +beginseg + name "ice_doukutu_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_2.o" + number 3 +endseg + +beginseg + name "ice_doukutu_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_3.o" + number 3 +endseg + +beginseg + name "ice_doukutu_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_4.o" + number 3 +endseg + +beginseg + name "ice_doukutu_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_5.o" + number 3 +endseg + +beginseg + name "ice_doukutu_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_6.o" + number 3 +endseg + +beginseg + name "ice_doukutu_room_7" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_7.o" + number 3 +endseg + +beginseg + name "ice_doukutu_room_8" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_8.o" + number 3 +endseg + +beginseg + name "ice_doukutu_room_9" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_9.o" + number 3 +endseg + +beginseg + name "ice_doukutu_room_10" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_10.o" + number 3 +endseg + +beginseg + name "ice_doukutu_room_11" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_11.o" + number 3 +endseg + +beginseg + name "men_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_scene.o" + number 2 +endseg + +beginseg + name "men_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_0.o" + number 3 +endseg + +beginseg + name "men_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_1.o" + number 3 +endseg + +beginseg + name "men_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_2.o" + number 3 +endseg + +beginseg + name "men_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_3.o" + number 3 +endseg + +beginseg + name "men_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_4.o" + number 3 +endseg + +beginseg + name "men_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_5.o" + number 3 +endseg + +beginseg + name "men_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_6.o" + number 3 +endseg + +beginseg + name "men_room_7" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_7.o" + number 3 +endseg + +beginseg + name "men_room_8" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_8.o" + number 3 +endseg + +beginseg + name "men_room_9" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_9.o" + number 3 +endseg + +beginseg + name "men_room_10" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_10.o" + number 3 +endseg + +beginseg + name "ganontika_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_scene.o" + number 2 +endseg + +beginseg + name "ganontika_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_0.o" + number 3 +endseg + +beginseg + name "ganontika_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_1.o" + number 3 +endseg + +beginseg + name "ganontika_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_2.o" + number 3 +endseg + +beginseg + name "ganontika_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_3.o" + number 3 +endseg + +beginseg + name "ganontika_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_4.o" + number 3 +endseg + +beginseg + name "ganontika_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_5.o" + number 3 +endseg + +beginseg + name "ganontika_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_6.o" + number 3 +endseg + +beginseg + name "ganontika_room_7" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_7.o" + number 3 +endseg + +beginseg + name "ganontika_room_8" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_8.o" + number 3 +endseg + +beginseg + name "ganontika_room_9" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_9.o" + number 3 +endseg + +beginseg + name "ganontika_room_10" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_10.o" + number 3 +endseg + +beginseg + name "ganontika_room_11" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_11.o" + number 3 +endseg + +beginseg + name "ganontika_room_12" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_12.o" + number 3 +endseg + +beginseg + name "ganontika_room_13" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_13.o" + number 3 +endseg + +beginseg + name "ganontika_room_14" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_14.o" + number 3 +endseg + +beginseg + name "ganontika_room_15" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_15.o" + number 3 +endseg + +beginseg + name "ganontika_room_16" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_16.o" + number 3 +endseg + +beginseg + name "ganontika_room_17" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_17.o" + number 3 +endseg + +beginseg + name "ganontika_room_18" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_18.o" + number 3 +endseg + +beginseg + name "ganontika_room_19" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_19.o" + number 3 +endseg + +#if DEBUG_ASSETS +beginseg + name "syotes_scene" + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/test_levels/syotes/syotes_scene.o" + number 2 +endseg + +beginseg + name "syotes_room_0" + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/test_levels/syotes/syotes_room_0.o" + number 3 +endseg + +beginseg + name "syotes2_scene" + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/test_levels/syotes2/syotes2_scene.o" + number 2 +endseg + +beginseg + name "syotes2_room_0" + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/test_levels/syotes2/syotes2_room_0.o" + number 3 +endseg + +beginseg + name "depth_test_scene" + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/test_levels/depth_test/depth_test_scene.o" + number 2 +endseg + +beginseg + name "depth_test_room_0" + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/test_levels/depth_test/depth_test_room_0.o" + number 3 +endseg +#endif + +beginseg + name "spot00_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot00/spot00_scene.o" + number 2 +endseg + +beginseg + name "spot00_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot00/spot00_room_0.o" + number 3 +endseg + +beginseg + name "spot01_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot01/spot01_scene.o" + number 2 +endseg + +beginseg + name "spot01_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot01/spot01_room_0.o" + number 3 +endseg + +beginseg + name "spot02_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot02/spot02_scene.o" + number 2 +endseg + +beginseg + name "spot02_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot02/spot02_room_0.o" + number 3 +endseg + +beginseg + name "spot02_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot02/spot02_room_1.o" + number 3 +endseg + +beginseg + name "spot03_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot03/spot03_scene.o" + number 2 +endseg + +beginseg + name "spot03_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot03/spot03_room_0.o" + number 3 +endseg + +beginseg + name "spot03_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot03/spot03_room_1.o" + number 3 +endseg + +beginseg + name "spot04_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot04/spot04_scene.o" + number 2 +endseg + +beginseg + name "spot04_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot04/spot04_room_0.o" + number 3 +endseg + +beginseg + name "spot04_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot04/spot04_room_1.o" + number 3 +endseg + +beginseg + name "spot04_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot04/spot04_room_2.o" + number 3 +endseg + +beginseg + name "spot05_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot05/spot05_scene.o" + number 2 +endseg + +beginseg + name "spot05_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot05/spot05_room_0.o" + number 3 +endseg + +beginseg + name "spot06_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot06/spot06_scene.o" + number 2 +endseg + +beginseg + name "spot06_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot06/spot06_room_0.o" + number 3 +endseg + +beginseg + name "spot07_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot07/spot07_scene.o" + number 2 +endseg + +beginseg + name "spot07_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot07/spot07_room_0.o" + number 3 +endseg + +beginseg + name "spot07_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot07/spot07_room_1.o" + number 3 +endseg + +beginseg + name "spot08_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot08/spot08_scene.o" + number 2 +endseg + +beginseg + name "spot08_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot08/spot08_room_0.o" + number 3 +endseg + +beginseg + name "spot09_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot09/spot09_scene.o" + number 2 +endseg + +beginseg + name "spot09_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot09/spot09_room_0.o" + number 3 +endseg + +beginseg + name "spot10_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_scene.o" + number 2 +endseg + +beginseg + name "spot10_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_0.o" + number 3 +endseg + +beginseg + name "spot10_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_1.o" + number 3 +endseg + +beginseg + name "spot10_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_2.o" + number 3 +endseg + +beginseg + name "spot10_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_3.o" + number 3 +endseg + +beginseg + name "spot10_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_4.o" + number 3 +endseg + +beginseg + name "spot10_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_5.o" + number 3 +endseg + +beginseg + name "spot10_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_6.o" + number 3 +endseg + +beginseg + name "spot10_room_7" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_7.o" + number 3 +endseg + +beginseg + name "spot10_room_8" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_8.o" + number 3 +endseg + +beginseg + name "spot10_room_9" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_9.o" + number 3 +endseg + +beginseg + name "spot11_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot11/spot11_scene.o" + number 2 +endseg + +beginseg + name "spot11_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot11/spot11_room_0.o" + number 3 +endseg + +beginseg + name "spot12_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot12/spot12_scene.o" + number 2 +endseg + +beginseg + name "spot12_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot12/spot12_room_0.o" + number 3 +endseg + +beginseg + name "spot12_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot12/spot12_room_1.o" + number 3 +endseg + +beginseg + name "spot13_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot13/spot13_scene.o" + number 2 +endseg + +beginseg + name "spot13_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot13/spot13_room_0.o" + number 3 +endseg + +beginseg + name "spot13_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot13/spot13_room_1.o" + number 3 +endseg + +beginseg + name "spot15_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot15/spot15_scene.o" + number 2 +endseg + +beginseg + name "spot15_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot15/spot15_room_0.o" + number 3 +endseg + +beginseg + name "spot16_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot16/spot16_scene.o" + number 2 +endseg + +beginseg + name "spot16_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot16/spot16_room_0.o" + number 3 +endseg + +beginseg + name "spot17_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot17/spot17_scene.o" + number 2 +endseg + +beginseg + name "spot17_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot17/spot17_room_0.o" + number 3 +endseg + +beginseg + name "spot17_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot17/spot17_room_1.o" + number 3 +endseg + +beginseg + name "spot18_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot18/spot18_scene.o" + number 2 +endseg + +beginseg + name "spot18_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot18/spot18_room_0.o" + number 3 +endseg + +beginseg + name "spot18_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot18/spot18_room_1.o" + number 3 +endseg + +beginseg + name "spot18_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot18/spot18_room_2.o" + number 3 +endseg + +beginseg + name "spot18_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot18/spot18_room_3.o" + number 3 +endseg + +beginseg + name "market_day_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/market_day/market_day_scene.o" + number 2 +endseg + +beginseg + name "market_day_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/market_day/market_day_room_0.o" + number 3 +endseg + +beginseg + name "market_night_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/market_night/market_night_scene.o" + number 2 +endseg + +beginseg + name "market_night_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/market_night/market_night_room_0.o" + number 3 +endseg + +#if DEBUG_ASSETS +beginseg + name "testroom_scene" + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/test_levels/testroom/testroom_scene.o" + number 2 +endseg + +beginseg + name "testroom_room_0" + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/test_levels/testroom/testroom_room_0.o" + number 3 +endseg + +beginseg + name "testroom_room_1" + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/test_levels/testroom/testroom_room_1.o" + number 3 +endseg + +beginseg + name "testroom_room_2" + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/test_levels/testroom/testroom_room_2.o" + number 3 +endseg + +beginseg + name "testroom_room_3" + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/test_levels/testroom/testroom_room_3.o" + number 3 +endseg + +beginseg + name "testroom_room_4" + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/test_levels/testroom/testroom_room_4.o" + number 3 +endseg +#endif + +beginseg + name "kenjyanoma_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/kenjyanoma/kenjyanoma_scene.o" + number 2 +endseg + +beginseg + name "kenjyanoma_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/kenjyanoma/kenjyanoma_room_0.o" + number 3 +endseg + +beginseg + name "tokinoma_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/tokinoma/tokinoma_scene.o" + number 2 +endseg + +beginseg + name "tokinoma_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/tokinoma/tokinoma_room_0.o" + number 3 +endseg + +beginseg + name "tokinoma_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/tokinoma/tokinoma_room_1.o" + number 3 +endseg + +#if DEBUG_ASSETS +beginseg + name "sutaru_scene" + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/test_levels/sutaru/sutaru_scene.o" + number 2 +endseg + +beginseg + name "sutaru_room_0" + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/test_levels/sutaru/sutaru_room_0.o" + number 3 +endseg +#endif + +beginseg + name "link_home_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/link_home/link_home_scene.o" + number 2 +endseg + +beginseg + name "link_home_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/link_home/link_home_room_0.o" + number 3 +endseg + +beginseg + name "kokiri_shop_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/kokiri_shop/kokiri_shop_scene.o" + number 2 +endseg + +beginseg + name "kokiri_shop_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/kokiri_shop/kokiri_shop_room_0.o" + number 3 +endseg + +beginseg + name "kokiri_home_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home/kokiri_home_scene.o" + number 2 +endseg + +beginseg + name "kokiri_home_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home/kokiri_home_room_0.o" + number 3 +endseg + +beginseg + name "kakusiana_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_scene.o" + number 2 +endseg + +beginseg + name "kakusiana_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_0.o" + number 3 +endseg + +beginseg + name "kakusiana_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_1.o" + number 3 +endseg + +beginseg + name "kakusiana_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_2.o" + number 3 +endseg + +beginseg + name "kakusiana_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_3.o" + number 3 +endseg + +beginseg + name "kakusiana_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_4.o" + number 3 +endseg + +beginseg + name "kakusiana_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_5.o" + number 3 +endseg + +beginseg + name "kakusiana_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_6.o" + number 3 +endseg + +beginseg + name "kakusiana_room_7" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_7.o" + number 3 +endseg + +beginseg + name "kakusiana_room_8" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_8.o" + number 3 +endseg + +beginseg + name "kakusiana_room_9" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_9.o" + number 3 +endseg + +beginseg + name "kakusiana_room_10" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_10.o" + number 3 +endseg + +beginseg + name "kakusiana_room_11" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_11.o" + number 3 +endseg + +beginseg + name "kakusiana_room_12" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_12.o" + number 3 +endseg + +beginseg + name "kakusiana_room_13" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_13.o" + number 3 +endseg + +beginseg + name "entra_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/entra/entra_scene.o" + number 2 +endseg + +beginseg + name "entra_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/entra/entra_room_0.o" + number 3 +endseg + +beginseg + name "moribossroom_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/moribossroom/moribossroom_scene.o" + number 2 +endseg + +beginseg + name "moribossroom_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/moribossroom/moribossroom_room_0.o" + number 3 +endseg + +beginseg + name "moribossroom_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/moribossroom/moribossroom_room_1.o" + number 3 +endseg + +beginseg + name "syatekijyou_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/syatekijyou/syatekijyou_scene.o" + number 2 +endseg + +beginseg + name "syatekijyou_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/syatekijyou/syatekijyou_room_0.o" + number 3 +endseg + +beginseg + name "shop1_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/shop1/shop1_scene.o" + number 2 +endseg + +beginseg + name "shop1_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/shop1/shop1_room_0.o" + number 3 +endseg + +beginseg + name "hairal_niwa_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hairal_niwa/hairal_niwa_scene.o" + number 2 +endseg + +beginseg + name "hairal_niwa_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hairal_niwa/hairal_niwa_room_0.o" + number 3 +endseg + +beginseg + name "ganon_tou_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/ganon_tou/ganon_tou_scene.o" + number 2 +endseg + +beginseg + name "ganon_tou_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/ganon_tou/ganon_tou_room_0.o" + number 3 +endseg + +#if DEBUG_ASSETS +beginseg + name "sasatest_scene" + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/test_levels/sasatest/sasatest_scene.o" + number 2 +endseg + +beginseg + name "sasatest_room_0" + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/test_levels/sasatest/sasatest_room_0.o" + number 3 +endseg +#endif + +beginseg + name "market_alley_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/market_alley/market_alley_scene.o" + number 2 +endseg + +beginseg + name "market_alley_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/market_alley/market_alley_room_0.o" + number 3 +endseg + +beginseg + name "spot20_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot20/spot20_scene.o" + number 2 +endseg + +beginseg + name "spot20_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot20/spot20_room_0.o" + number 3 +endseg + +beginseg + name "market_ruins_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/market_ruins/market_ruins_scene.o" + number 2 +endseg + +beginseg + name "market_ruins_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/market_ruins/market_ruins_room_0.o" + number 3 +endseg + +beginseg + name "entra_n_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/entra_n/entra_n_scene.o" + number 2 +endseg + +beginseg + name "entra_n_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/entra_n/entra_n_room_0.o" + number 3 +endseg + +beginseg + name "enrui_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/enrui/enrui_scene.o" + number 2 +endseg + +beginseg + name "enrui_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/enrui/enrui_room_0.o" + number 3 +endseg + +beginseg + name "market_alley_n_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/market_alley_n/market_alley_n_scene.o" + number 2 +endseg + +beginseg + name "market_alley_n_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/market_alley_n/market_alley_n_room_0.o" + number 3 +endseg + +beginseg + name "hiral_demo_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/hiral_demo/hiral_demo_scene.o" + number 2 +endseg + +beginseg + name "hiral_demo_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/hiral_demo/hiral_demo_room_0.o" + number 3 +endseg + +beginseg + name "kokiri_home3_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home3/kokiri_home3_scene.o" + number 2 +endseg + +beginseg + name "kokiri_home3_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home3/kokiri_home3_room_0.o" + number 3 +endseg + +beginseg + name "malon_stable_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/malon_stable/malon_stable_scene.o" + number 2 +endseg + +beginseg + name "malon_stable_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/malon_stable/malon_stable_room_0.o" + number 3 +endseg + +beginseg + name "kakariko_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/kakariko/kakariko_scene.o" + number 2 +endseg + +beginseg + name "kakariko_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/kakariko/kakariko_room_0.o" + number 3 +endseg + +beginseg + name "bdan_boss_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan_boss/bdan_boss_scene.o" + number 2 +endseg + +beginseg + name "bdan_boss_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan_boss/bdan_boss_room_0.o" + number 3 +endseg + +beginseg + name "bdan_boss_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan_boss/bdan_boss_room_1.o" + number 3 +endseg + +beginseg + name "FIRE_bs_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/FIRE_bs/FIRE_bs_scene.o" + number 2 +endseg + +beginseg + name "FIRE_bs_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/FIRE_bs/FIRE_bs_room_0.o" + number 3 +endseg + +beginseg + name "FIRE_bs_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/FIRE_bs/FIRE_bs_room_1.o" + number 3 +endseg + +beginseg + name "hut_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hut/hut_scene.o" + number 2 +endseg + +beginseg + name "hut_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hut/hut_room_0.o" + number 3 +endseg + +beginseg + name "daiyousei_izumi_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/daiyousei_izumi/daiyousei_izumi_scene.o" + number 2 +endseg + +beginseg + name "daiyousei_izumi_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/daiyousei_izumi/daiyousei_izumi_room_0.o" + number 3 +endseg + +beginseg + name "hakaana_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/hakaana/hakaana_scene.o" + number 2 +endseg + +beginseg + name "hakaana_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/hakaana/hakaana_room_0.o" + number 3 +endseg + +beginseg + name "yousei_izumi_tate_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/yousei_izumi_tate/yousei_izumi_tate_scene.o" + number 2 +endseg + +beginseg + name "yousei_izumi_tate_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/yousei_izumi_tate/yousei_izumi_tate_room_0.o" + number 3 +endseg + +beginseg + name "yousei_izumi_yoko_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/yousei_izumi_yoko/yousei_izumi_yoko_scene.o" + number 2 +endseg + +beginseg + name "yousei_izumi_yoko_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/yousei_izumi_yoko/yousei_izumi_yoko_room_0.o" + number 3 +endseg + +beginseg + name "golon_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/golon/golon_scene.o" + number 2 +endseg + +beginseg + name "golon_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/golon/golon_room_0.o" + number 3 +endseg + +beginseg + name "zoora_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/zoora/zoora_scene.o" + number 2 +endseg + +beginseg + name "zoora_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/zoora/zoora_room_0.o" + number 3 +endseg + +beginseg + name "drag_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/drag/drag_scene.o" + number 2 +endseg + +beginseg + name "drag_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/drag/drag_room_0.o" + number 3 +endseg + +beginseg + name "alley_shop_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/alley_shop/alley_shop_scene.o" + number 2 +endseg + +beginseg + name "alley_shop_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/alley_shop/alley_shop_room_0.o" + number 3 +endseg + +beginseg + name "night_shop_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/night_shop/night_shop_scene.o" + number 2 +endseg + +beginseg + name "night_shop_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/night_shop/night_shop_room_0.o" + number 3 +endseg + +beginseg + name "impa_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/impa/impa_scene.o" + number 2 +endseg + +beginseg + name "impa_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/impa/impa_room_0.o" + number 3 +endseg + +beginseg + name "labo_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/labo/labo_scene.o" + number 2 +endseg + +beginseg + name "labo_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/labo/labo_room_0.o" + number 3 +endseg + +beginseg + name "tent_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/tent/tent_scene.o" + number 2 +endseg + +beginseg + name "tent_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/tent/tent_room_0.o" + number 3 +endseg + +beginseg + name "nakaniwa_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/nakaniwa/nakaniwa_scene.o" + number 2 +endseg + +beginseg + name "nakaniwa_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/nakaniwa/nakaniwa_room_0.o" + number 3 +endseg + +beginseg + name "ddan_boss_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan_boss/ddan_boss_scene.o" + number 2 +endseg + +beginseg + name "ddan_boss_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan_boss/ddan_boss_room_0.o" + number 3 +endseg + +beginseg + name "ddan_boss_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan_boss/ddan_boss_room_1.o" + number 3 +endseg + +beginseg + name "ydan_boss_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan_boss/ydan_boss_scene.o" + number 2 +endseg + +beginseg + name "ydan_boss_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan_boss/ydan_boss_room_0.o" + number 3 +endseg + +beginseg + name "ydan_boss_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan_boss/ydan_boss_room_1.o" + number 3 +endseg + +beginseg + name "HAKAdan_bs_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan_bs/HAKAdan_bs_scene.o" + number 2 +endseg + +beginseg + name "HAKAdan_bs_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan_bs/HAKAdan_bs_room_0.o" + number 3 +endseg + +beginseg + name "HAKAdan_bs_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan_bs/HAKAdan_bs_room_1.o" + number 3 +endseg + +beginseg + name "MIZUsin_bs_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin_bs/MIZUsin_bs_scene.o" + number 2 +endseg + +beginseg + name "MIZUsin_bs_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin_bs/MIZUsin_bs_room_0.o" + number 3 +endseg + +beginseg + name "MIZUsin_bs_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin_bs/MIZUsin_bs_room_1.o" + number 3 +endseg + +beginseg + name "ganon_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_scene.o" + number 2 +endseg + +beginseg + name "ganon_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_0.o" + number 3 +endseg + +beginseg + name "ganon_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_1.o" + number 3 +endseg + +beginseg + name "ganon_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_2.o" + number 3 +endseg + +beginseg + name "ganon_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_3.o" + number 3 +endseg + +beginseg + name "ganon_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_4.o" + number 3 +endseg + +beginseg + name "ganon_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_5.o" + number 3 +endseg + +beginseg + name "ganon_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_6.o" + number 3 +endseg + +beginseg + name "ganon_room_7" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_7.o" + number 3 +endseg + +beginseg + name "ganon_room_8" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_8.o" + number 3 +endseg + +beginseg + name "ganon_room_9" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_9.o" + number 3 +endseg + +beginseg + name "ganon_boss_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_boss/ganon_boss_scene.o" + number 2 +endseg + +beginseg + name "ganon_boss_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_boss/ganon_boss_room_0.o" + number 3 +endseg + +beginseg + name "jyasinboss_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinboss/jyasinboss_scene.o" + number 2 +endseg + +beginseg + name "jyasinboss_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinboss/jyasinboss_room_0.o" + number 3 +endseg + +beginseg + name "jyasinboss_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinboss/jyasinboss_room_1.o" + number 3 +endseg + +beginseg + name "jyasinboss_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinboss/jyasinboss_room_2.o" + number 3 +endseg + +beginseg + name "jyasinboss_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinboss/jyasinboss_room_3.o" + number 3 +endseg + +beginseg + name "kokiri_home4_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home4/kokiri_home4_scene.o" + number 2 +endseg + +beginseg + name "kokiri_home4_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home4/kokiri_home4_room_0.o" + number 3 +endseg + +beginseg + name "kokiri_home5_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home5/kokiri_home5_scene.o" + number 2 +endseg + +beginseg + name "kokiri_home5_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home5/kokiri_home5_room_0.o" + number 3 +endseg + +beginseg + name "ganon_final_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_final/ganon_final_scene.o" + number 2 +endseg + +beginseg + name "ganon_final_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_final/ganon_final_room_0.o" + number 3 +endseg + +beginseg + name "kakariko3_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakariko3/kakariko3_scene.o" + number 2 +endseg + +beginseg + name "kakariko3_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakariko3/kakariko3_room_0.o" + number 3 +endseg + +#if DEBUG_ASSETS +beginseg + name "hairal_niwa2_scene" + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hairal_niwa2/hairal_niwa2_scene.o" + number 2 +endseg + +beginseg + name "hairal_niwa2_room_0" + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hairal_niwa2/hairal_niwa2_room_0.o" + number 3 +endseg +#endif + +beginseg + name "hakasitarelay_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_scene.o" + number 2 +endseg + +beginseg + name "hakasitarelay_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_room_0.o" + number 3 +endseg + +beginseg + name "hakasitarelay_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_room_1.o" + number 3 +endseg + +beginseg + name "hakasitarelay_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_room_2.o" + number 3 +endseg + +beginseg + name "hakasitarelay_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_room_3.o" + number 3 +endseg + +beginseg + name "hakasitarelay_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_room_4.o" + number 3 +endseg + +beginseg + name "hakasitarelay_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_room_5.o" + number 3 +endseg + +beginseg + name "hakasitarelay_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_room_6.o" + number 3 +endseg + +beginseg + name "shrine_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/shrine/shrine_scene.o" + number 2 +endseg + +beginseg + name "shrine_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/shrine/shrine_room_0.o" + number 3 +endseg + +beginseg + name "turibori_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/turibori/turibori_scene.o" + number 2 +endseg + +beginseg + name "turibori_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/turibori/turibori_room_0.o" + number 3 +endseg + +beginseg + name "shrine_n_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/shrine_n/shrine_n_scene.o" + number 2 +endseg + +beginseg + name "shrine_n_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/shrine_n/shrine_n_room_0.o" + number 3 +endseg + +beginseg + name "shrine_r_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/shrine_r/shrine_r_scene.o" + number 2 +endseg + +beginseg + name "shrine_r_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/shrine_r/shrine_r_room_0.o" + number 3 +endseg + +beginseg + name "hakaana2_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/hakaana2/hakaana2_scene.o" + number 2 +endseg + +beginseg + name "hakaana2_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/hakaana2/hakaana2_room_0.o" + number 3 +endseg + +beginseg + name "gerudoway_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/gerudoway/gerudoway_scene.o" + number 2 +endseg + +beginseg + name "gerudoway_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/gerudoway/gerudoway_room_0.o" + number 3 +endseg + +beginseg + name "gerudoway_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/gerudoway/gerudoway_room_1.o" + number 3 +endseg + +beginseg + name "gerudoway_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/gerudoway/gerudoway_room_2.o" + number 3 +endseg + +beginseg + name "gerudoway_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/gerudoway/gerudoway_room_3.o" + number 3 +endseg + +beginseg + name "gerudoway_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/gerudoway/gerudoway_room_4.o" + number 3 +endseg + +beginseg + name "gerudoway_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/gerudoway/gerudoway_room_5.o" + number 3 +endseg + +beginseg + name "hairal_niwa_n_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hairal_niwa_n/hairal_niwa_n_scene.o" + number 2 +endseg + +beginseg + name "hairal_niwa_n_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hairal_niwa_n/hairal_niwa_n_room_0.o" + number 3 +endseg + +beginseg + name "bowling_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/bowling/bowling_scene.o" + number 2 +endseg + +beginseg + name "bowling_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/bowling/bowling_room_0.o" + number 3 +endseg + +beginseg + name "hakaana_ouke_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/hakaana_ouke/hakaana_ouke_scene.o" + number 2 +endseg + +beginseg + name "hakaana_ouke_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/hakaana_ouke/hakaana_ouke_room_0.o" + number 3 +endseg + +beginseg + name "hakaana_ouke_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/hakaana_ouke/hakaana_ouke_room_1.o" + number 3 +endseg + +beginseg + name "hakaana_ouke_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/hakaana_ouke/hakaana_ouke_room_2.o" + number 3 +endseg + +beginseg + name "hylia_labo_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hylia_labo/hylia_labo_scene.o" + number 2 +endseg + +beginseg + name "hylia_labo_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hylia_labo/hylia_labo_room_0.o" + number 3 +endseg + +beginseg + name "souko_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/souko/souko_scene.o" + number 2 +endseg + +beginseg + name "souko_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/souko/souko_room_0.o" + number 3 +endseg + +beginseg + name "souko_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/souko/souko_room_1.o" + number 3 +endseg + +beginseg + name "souko_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/souko/souko_room_2.o" + number 3 +endseg + +beginseg + name "miharigoya_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/miharigoya/miharigoya_scene.o" + number 2 +endseg + +beginseg + name "miharigoya_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/miharigoya/miharigoya_room_0.o" + number 3 +endseg + +beginseg + name "mahouya_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/mahouya/mahouya_scene.o" + number 2 +endseg + +beginseg + name "mahouya_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/mahouya/mahouya_room_0.o" + number 3 +endseg + +beginseg + name "takaraya_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_scene.o" + number 2 +endseg + +beginseg + name "takaraya_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_room_0.o" + number 3 +endseg + +beginseg + name "takaraya_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_room_1.o" + number 3 +endseg + +beginseg + name "takaraya_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_room_2.o" + number 3 +endseg + +beginseg + name "takaraya_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_room_3.o" + number 3 +endseg + +beginseg + name "takaraya_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_room_4.o" + number 3 +endseg + +beginseg + name "takaraya_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_room_5.o" + number 3 +endseg + +beginseg + name "takaraya_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_room_6.o" + number 3 +endseg + +beginseg + name "ganon_sonogo_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_sonogo/ganon_sonogo_scene.o" + number 2 +endseg + +beginseg + name "ganon_sonogo_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_sonogo/ganon_sonogo_room_0.o" + number 3 +endseg + +beginseg + name "ganon_sonogo_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_sonogo/ganon_sonogo_room_1.o" + number 3 +endseg + +beginseg + name "ganon_sonogo_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_sonogo/ganon_sonogo_room_2.o" + number 3 +endseg + +beginseg + name "ganon_sonogo_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_sonogo/ganon_sonogo_room_3.o" + number 3 +endseg + +beginseg + name "ganon_sonogo_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_sonogo/ganon_sonogo_room_4.o" + number 3 +endseg + +beginseg + name "ganon_demo_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_demo/ganon_demo_scene.o" + number 2 +endseg + +beginseg + name "ganon_demo_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_demo/ganon_demo_room_0.o" + number 3 +endseg + +#if DEBUG_ASSETS +beginseg + name "besitu_scene" + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/test_levels/besitu/besitu_scene.o" + number 2 +endseg + +beginseg + name "besitu_room_0" + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/test_levels/besitu/besitu_room_0.o" + number 3 +endseg +#endif + +beginseg + name "face_shop_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/face_shop/face_shop_scene.o" + number 2 +endseg + +beginseg + name "face_shop_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/face_shop/face_shop_room_0.o" + number 3 +endseg + +beginseg + name "kinsuta_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kinsuta/kinsuta_scene.o" + number 2 +endseg + +beginseg + name "kinsuta_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kinsuta/kinsuta_room_0.o" + number 3 +endseg + +beginseg + name "ganontikasonogo_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontikasonogo/ganontikasonogo_scene.o" + number 2 +endseg + +beginseg + name "ganontikasonogo_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontikasonogo/ganontikasonogo_room_0.o" + number 3 +endseg + +beginseg + name "ganontikasonogo_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontikasonogo/ganontikasonogo_room_1.o" + number 3 +endseg + +#if DEBUG_ASSETS +beginseg + name "test01_scene" + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/test_levels/test01/test01_scene.o" + number 2 +endseg + +beginseg + name "test01_room_0" + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/test_levels/test01/test01_room_0.o" + number 3 +endseg +#endif diff --git a/spec/scenes_n64.inc b/spec/scenes_n64.inc new file mode 100644 index 0000000000..47c82b0bf1 --- /dev/null +++ b/spec/scenes_n64.inc @@ -0,0 +1,3911 @@ +beginseg + name "ddan_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_scene.o" + number 2 +endseg + +beginseg + name "ddan_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_0.o" + number 3 +endseg + +beginseg + name "ddan_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_1.o" + number 3 +endseg + +beginseg + name "ddan_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_2.o" + number 3 +endseg + +beginseg + name "ddan_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_3.o" + number 3 +endseg + +beginseg + name "ddan_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_4.o" + number 3 +endseg + +beginseg + name "ddan_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_5.o" + number 3 +endseg + +beginseg + name "ddan_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_6.o" + number 3 +endseg + +beginseg + name "ddan_room_7" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_7.o" + number 3 +endseg + +beginseg + name "ddan_room_8" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_8.o" + number 3 +endseg + +beginseg + name "ddan_room_9" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_9.o" + number 3 +endseg + +beginseg + name "ddan_room_10" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_10.o" + number 3 +endseg + +beginseg + name "ddan_room_11" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_11.o" + number 3 +endseg + +beginseg + name "ddan_room_12" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_12.o" + number 3 +endseg + +beginseg + name "ddan_room_13" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_13.o" + number 3 +endseg + +beginseg + name "ddan_room_14" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_14.o" + number 3 +endseg + +beginseg + name "ddan_room_15" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_15.o" + number 3 +endseg + +beginseg + name "ddan_room_16" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan/ddan_room_16.o" + number 3 +endseg + +beginseg + name "spot00_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot00/spot00_scene.o" + number 2 +endseg + +beginseg + name "spot00_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot00/spot00_room_0.o" + number 3 +endseg + +beginseg + name "spot01_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot01/spot01_scene.o" + number 2 +endseg + +beginseg + name "spot01_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot01/spot01_room_0.o" + number 3 +endseg + +beginseg + name "spot02_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot02/spot02_scene.o" + number 2 +endseg + +beginseg + name "spot02_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot02/spot02_room_0.o" + number 3 +endseg + +beginseg + name "spot02_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot02/spot02_room_1.o" + number 3 +endseg + +beginseg + name "spot03_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot03/spot03_scene.o" + number 2 +endseg + +beginseg + name "spot03_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot03/spot03_room_0.o" + number 3 +endseg + +beginseg + name "spot03_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot03/spot03_room_1.o" + number 3 +endseg + +beginseg + name "spot04_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot04/spot04_scene.o" + number 2 +endseg + +beginseg + name "spot04_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot04/spot04_room_0.o" + number 3 +endseg + +beginseg + name "spot04_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot04/spot04_room_1.o" + number 3 +endseg + +beginseg + name "spot04_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot04/spot04_room_2.o" + number 3 +endseg + +beginseg + name "spot05_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot05/spot05_scene.o" + number 2 +endseg + +beginseg + name "spot05_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot05/spot05_room_0.o" + number 3 +endseg + +beginseg + name "spot06_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot06/spot06_scene.o" + number 2 +endseg + +beginseg + name "spot06_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot06/spot06_room_0.o" + number 3 +endseg + +beginseg + name "spot07_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot07/spot07_scene.o" + number 2 +endseg + +beginseg + name "spot07_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot07/spot07_room_0.o" + number 3 +endseg + +beginseg + name "spot07_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot07/spot07_room_1.o" + number 3 +endseg + +beginseg + name "spot08_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot08/spot08_scene.o" + number 2 +endseg + +beginseg + name "spot08_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot08/spot08_room_0.o" + number 3 +endseg + +beginseg + name "spot09_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot09/spot09_scene.o" + number 2 +endseg + +beginseg + name "spot09_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot09/spot09_room_0.o" + number 3 +endseg + +beginseg + name "spot10_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_scene.o" + number 2 +endseg + +beginseg + name "spot10_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_0.o" + number 3 +endseg + +beginseg + name "spot10_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_1.o" + number 3 +endseg + +beginseg + name "spot10_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_2.o" + number 3 +endseg + +beginseg + name "spot10_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_3.o" + number 3 +endseg + +beginseg + name "spot10_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_4.o" + number 3 +endseg + +beginseg + name "spot10_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_5.o" + number 3 +endseg + +beginseg + name "spot10_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_6.o" + number 3 +endseg + +beginseg + name "spot10_room_7" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_7.o" + number 3 +endseg + +beginseg + name "spot10_room_8" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_8.o" + number 3 +endseg + +beginseg + name "spot10_room_9" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot10/spot10_room_9.o" + number 3 +endseg + +beginseg + name "spot11_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot11/spot11_scene.o" + number 2 +endseg + +beginseg + name "spot11_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot11/spot11_room_0.o" + number 3 +endseg + +beginseg + name "spot12_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot12/spot12_scene.o" + number 2 +endseg + +beginseg + name "spot12_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot12/spot12_room_0.o" + number 3 +endseg + +beginseg + name "spot12_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot12/spot12_room_1.o" + number 3 +endseg + +beginseg + name "spot13_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot13/spot13_scene.o" + number 2 +endseg + +beginseg + name "spot13_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot13/spot13_room_0.o" + number 3 +endseg + +beginseg + name "spot13_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot13/spot13_room_1.o" + number 3 +endseg + +beginseg + name "spot15_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot15/spot15_scene.o" + number 2 +endseg + +beginseg + name "spot15_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot15/spot15_room_0.o" + number 3 +endseg + +beginseg + name "spot16_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot16/spot16_scene.o" + number 2 +endseg + +beginseg + name "spot16_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot16/spot16_room_0.o" + number 3 +endseg + +beginseg + name "spot17_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot17/spot17_scene.o" + number 2 +endseg + +beginseg + name "spot17_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot17/spot17_room_0.o" + number 3 +endseg + +beginseg + name "spot17_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot17/spot17_room_1.o" + number 3 +endseg + +beginseg + name "spot18_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot18/spot18_scene.o" + number 2 +endseg + +beginseg + name "spot18_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot18/spot18_room_0.o" + number 3 +endseg + +beginseg + name "spot18_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot18/spot18_room_1.o" + number 3 +endseg + +beginseg + name "spot18_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot18/spot18_room_2.o" + number 3 +endseg + +beginseg + name "spot18_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot18/spot18_room_3.o" + number 3 +endseg + +beginseg + name "market_day_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/market_day/market_day_scene.o" + number 2 +endseg + +beginseg + name "market_day_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/market_day/market_day_room_0.o" + number 3 +endseg + +beginseg + name "market_night_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/market_night/market_night_scene.o" + number 2 +endseg + +beginseg + name "market_night_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/market_night/market_night_room_0.o" + number 3 +endseg + +beginseg + name "HIDAN_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_scene.o" + number 2 +endseg + +beginseg + name "HIDAN_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_0.o" + number 3 +endseg + +beginseg + name "HIDAN_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_1.o" + number 3 +endseg + +beginseg + name "HIDAN_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_2.o" + number 3 +endseg + +beginseg + name "HIDAN_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_3.o" + number 3 +endseg + +beginseg + name "HIDAN_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_4.o" + number 3 +endseg + +beginseg + name "HIDAN_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_5.o" + number 3 +endseg + +beginseg + name "HIDAN_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_6.o" + number 3 +endseg + +beginseg + name "HIDAN_room_7" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_7.o" + number 3 +endseg + +beginseg + name "HIDAN_room_8" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_8.o" + number 3 +endseg + +beginseg + name "HIDAN_room_9" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_9.o" + number 3 +endseg + +beginseg + name "HIDAN_room_10" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_10.o" + number 3 +endseg + +beginseg + name "HIDAN_room_11" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_11.o" + number 3 +endseg + +beginseg + name "HIDAN_room_12" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_12.o" + number 3 +endseg + +beginseg + name "HIDAN_room_13" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_13.o" + number 3 +endseg + +beginseg + name "HIDAN_room_14" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_14.o" + number 3 +endseg + +beginseg + name "HIDAN_room_15" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_15.o" + number 3 +endseg + +beginseg + name "HIDAN_room_16" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_16.o" + number 3 +endseg + +beginseg + name "HIDAN_room_17" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_17.o" + number 3 +endseg + +beginseg + name "HIDAN_room_18" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_18.o" + number 3 +endseg + +beginseg + name "HIDAN_room_19" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_19.o" + number 3 +endseg + +beginseg + name "HIDAN_room_20" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_20.o" + number 3 +endseg + +beginseg + name "HIDAN_room_21" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_21.o" + number 3 +endseg + +beginseg + name "HIDAN_room_22" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_22.o" + number 3 +endseg + +beginseg + name "HIDAN_room_23" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_23.o" + number 3 +endseg + +beginseg + name "HIDAN_room_24" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_24.o" + number 3 +endseg + +beginseg + name "HIDAN_room_25" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_25.o" + number 3 +endseg + +beginseg + name "HIDAN_room_26" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HIDAN/HIDAN_room_26.o" + number 3 +endseg + +beginseg + name "Bmori1_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_scene.o" + number 2 +endseg + +beginseg + name "Bmori1_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_0.o" + number 3 +endseg + +beginseg + name "Bmori1_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_1.o" + number 3 +endseg + +beginseg + name "Bmori1_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_2.o" + number 3 +endseg + +beginseg + name "Bmori1_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_3.o" + number 3 +endseg + +beginseg + name "Bmori1_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_4.o" + number 3 +endseg + +beginseg + name "Bmori1_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_5.o" + number 3 +endseg + +beginseg + name "Bmori1_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_6.o" + number 3 +endseg + +beginseg + name "Bmori1_room_7" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_7.o" + number 3 +endseg + +beginseg + name "Bmori1_room_8" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_8.o" + number 3 +endseg + +beginseg + name "Bmori1_room_9" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_9.o" + number 3 +endseg + +beginseg + name "Bmori1_room_10" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_10.o" + number 3 +endseg + +beginseg + name "Bmori1_room_11" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_11.o" + number 3 +endseg + +beginseg + name "Bmori1_room_12" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_12.o" + number 3 +endseg + +beginseg + name "Bmori1_room_13" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_13.o" + number 3 +endseg + +beginseg + name "Bmori1_room_14" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_14.o" + number 3 +endseg + +beginseg + name "Bmori1_room_15" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_15.o" + number 3 +endseg + +beginseg + name "Bmori1_room_16" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_16.o" + number 3 +endseg + +beginseg + name "Bmori1_room_17" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_17.o" + number 3 +endseg + +beginseg + name "Bmori1_room_18" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_18.o" + number 3 +endseg + +beginseg + name "Bmori1_room_19" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_19.o" + number 3 +endseg + +beginseg + name "Bmori1_room_20" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_20.o" + number 3 +endseg + +beginseg + name "Bmori1_room_21" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_21.o" + number 3 +endseg + +beginseg + name "Bmori1_room_22" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/Bmori1/Bmori1_room_22.o" + number 3 +endseg + +beginseg + name "ydan_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_scene.o" + number 2 +endseg + +beginseg + name "ydan_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_0.o" + number 3 +endseg + +beginseg + name "ydan_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_1.o" + number 3 +endseg + +beginseg + name "ydan_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_2.o" + number 3 +endseg + +beginseg + name "ydan_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_3.o" + number 3 +endseg + +beginseg + name "ydan_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_4.o" + number 3 +endseg + +beginseg + name "ydan_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_5.o" + number 3 +endseg + +beginseg + name "ydan_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_6.o" + number 3 +endseg + +beginseg + name "ydan_room_7" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_7.o" + number 3 +endseg + +beginseg + name "ydan_room_8" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_8.o" + number 3 +endseg + +beginseg + name "ydan_room_9" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_9.o" + number 3 +endseg + +beginseg + name "ydan_room_10" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_10.o" + number 3 +endseg + +beginseg + name "ydan_room_11" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan/ydan_room_11.o" + number 3 +endseg + +beginseg + name "kenjyanoma_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/kenjyanoma/kenjyanoma_scene.o" + number 2 +endseg + +beginseg + name "kenjyanoma_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/kenjyanoma/kenjyanoma_room_0.o" + number 3 +endseg + +beginseg + name "tokinoma_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/tokinoma/tokinoma_scene.o" + number 2 +endseg + +beginseg + name "tokinoma_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/tokinoma/tokinoma_room_0.o" + number 3 +endseg + +beginseg + name "tokinoma_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/tokinoma/tokinoma_room_1.o" + number 3 +endseg + +beginseg + name "link_home_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/link_home/link_home_scene.o" + number 2 +endseg + +beginseg + name "link_home_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/link_home/link_home_room_0.o" + number 3 +endseg + +beginseg + name "kokiri_shop_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/kokiri_shop/kokiri_shop_scene.o" + number 2 +endseg + +beginseg + name "kokiri_shop_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/kokiri_shop/kokiri_shop_room_0.o" + number 3 +endseg + +beginseg + name "MIZUsin_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_scene.o" + number 2 +endseg + +beginseg + name "MIZUsin_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_0.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_1.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_2.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_3.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_4.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_5.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_6.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_7" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_7.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_8" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_8.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_9" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_9.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_10" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_10.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_11" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_11.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_12" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_12.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_13" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_13.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_14" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_14.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_15" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_15.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_16" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_16.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_17" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_17.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_18" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_18.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_19" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_19.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_20" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_20.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_21" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_21.o" + number 3 +endseg + +beginseg + name "MIZUsin_room_22" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin/MIZUsin_room_22.o" + number 3 +endseg + +beginseg + name "kokiri_home_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home/kokiri_home_scene.o" + number 2 +endseg + +beginseg + name "kokiri_home_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home/kokiri_home_room_0.o" + number 3 +endseg + +beginseg + name "kakusiana_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_scene.o" + number 2 +endseg + +beginseg + name "kakusiana_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_0.o" + number 3 +endseg + +beginseg + name "kakusiana_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_1.o" + number 3 +endseg + +beginseg + name "kakusiana_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_2.o" + number 3 +endseg + +beginseg + name "kakusiana_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_3.o" + number 3 +endseg + +beginseg + name "kakusiana_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_4.o" + number 3 +endseg + +beginseg + name "kakusiana_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_5.o" + number 3 +endseg + +beginseg + name "kakusiana_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_6.o" + number 3 +endseg + +beginseg + name "kakusiana_room_7" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_7.o" + number 3 +endseg + +beginseg + name "kakusiana_room_8" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_8.o" + number 3 +endseg + +beginseg + name "kakusiana_room_9" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_9.o" + number 3 +endseg + +beginseg + name "kakusiana_room_10" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_10.o" + number 3 +endseg + +beginseg + name "kakusiana_room_11" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_11.o" + number 3 +endseg + +beginseg + name "kakusiana_room_12" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_12.o" + number 3 +endseg + +beginseg + name "kakusiana_room_13" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakusiana/kakusiana_room_13.o" + number 3 +endseg + +beginseg + name "entra_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/entra/entra_scene.o" + number 2 +endseg + +beginseg + name "entra_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/entra/entra_room_0.o" + number 3 +endseg + +beginseg + name "bdan_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_scene.o" + number 2 +endseg + +beginseg + name "bdan_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_0.o" + number 3 +endseg + +beginseg + name "bdan_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_1.o" + number 3 +endseg + +beginseg + name "bdan_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_2.o" + number 3 +endseg + +beginseg + name "bdan_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_3.o" + number 3 +endseg + +beginseg + name "bdan_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_4.o" + number 3 +endseg + +beginseg + name "bdan_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_5.o" + number 3 +endseg + +beginseg + name "bdan_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_6.o" + number 3 +endseg + +beginseg + name "bdan_room_7" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_7.o" + number 3 +endseg + +beginseg + name "bdan_room_8" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_8.o" + number 3 +endseg + +beginseg + name "bdan_room_9" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_9.o" + number 3 +endseg + +beginseg + name "bdan_room_10" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_10.o" + number 3 +endseg + +beginseg + name "bdan_room_11" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_11.o" + number 3 +endseg + +beginseg + name "bdan_room_12" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_12.o" + number 3 +endseg + +beginseg + name "bdan_room_13" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_13.o" + number 3 +endseg + +beginseg + name "bdan_room_14" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_14.o" + number 3 +endseg + +beginseg + name "bdan_room_15" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan/bdan_room_15.o" + number 3 +endseg + +beginseg + name "HAKAdan_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_scene.o" + number 2 +endseg + +beginseg + name "HAKAdan_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_0.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_1.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_2.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_3.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_4.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_5.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_6.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_7" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_7.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_8" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_8.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_9" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_9.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_10" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_10.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_11" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_11.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_12" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_12.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_13" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_13.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_14" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_14.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_15" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_15.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_16" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_16.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_17" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_17.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_18" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_18.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_19" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_19.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_20" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_20.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_21" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_21.o" + number 3 +endseg + +beginseg + name "HAKAdan_room_22" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan/HAKAdan_room_22.o" + number 3 +endseg + +beginseg + name "moribossroom_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/moribossroom/moribossroom_scene.o" + number 2 +endseg + +beginseg + name "moribossroom_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/moribossroom/moribossroom_room_0.o" + number 3 +endseg + +beginseg + name "moribossroom_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/moribossroom/moribossroom_room_1.o" + number 3 +endseg + +beginseg + name "syatekijyou_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/syatekijyou/syatekijyou_scene.o" + number 2 +endseg + +beginseg + name "syatekijyou_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/syatekijyou/syatekijyou_room_0.o" + number 3 +endseg + +beginseg + name "men_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_scene.o" + number 2 +endseg + +beginseg + name "men_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_0.o" + number 3 +endseg + +beginseg + name "men_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_1.o" + number 3 +endseg + +beginseg + name "men_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_2.o" + number 3 +endseg + +beginseg + name "men_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_3.o" + number 3 +endseg + +beginseg + name "men_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_4.o" + number 3 +endseg + +beginseg + name "men_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_5.o" + number 3 +endseg + +beginseg + name "men_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_6.o" + number 3 +endseg + +beginseg + name "men_room_7" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_7.o" + number 3 +endseg + +beginseg + name "men_room_8" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_8.o" + number 3 +endseg + +beginseg + name "men_room_9" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_9.o" + number 3 +endseg + +beginseg + name "men_room_10" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/men/men_room_10.o" + number 3 +endseg + +beginseg + name "shop1_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/shop1/shop1_scene.o" + number 2 +endseg + +beginseg + name "shop1_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/shop1/shop1_room_0.o" + number 3 +endseg + +beginseg + name "hairal_niwa_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hairal_niwa/hairal_niwa_scene.o" + number 2 +endseg + +beginseg + name "hairal_niwa_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hairal_niwa/hairal_niwa_room_0.o" + number 3 +endseg + +beginseg + name "ganon_tou_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/ganon_tou/ganon_tou_scene.o" + number 2 +endseg + +beginseg + name "ganon_tou_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/ganon_tou/ganon_tou_room_0.o" + number 3 +endseg + +beginseg + name "market_alley_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/market_alley/market_alley_scene.o" + number 2 +endseg + +beginseg + name "market_alley_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/market_alley/market_alley_room_0.o" + number 3 +endseg + +beginseg + name "spot20_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot20/spot20_scene.o" + number 2 +endseg + +beginseg + name "spot20_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/overworld/spot20/spot20_room_0.o" + number 3 +endseg + +beginseg + name "market_ruins_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/market_ruins/market_ruins_scene.o" + number 2 +endseg + +beginseg + name "market_ruins_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/market_ruins/market_ruins_room_0.o" + number 3 +endseg + +beginseg + name "entra_n_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/entra_n/entra_n_scene.o" + number 2 +endseg + +beginseg + name "entra_n_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/entra_n/entra_n_room_0.o" + number 3 +endseg + +beginseg + name "enrui_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/enrui/enrui_scene.o" + number 2 +endseg + +beginseg + name "enrui_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/enrui/enrui_room_0.o" + number 3 +endseg + +beginseg + name "market_alley_n_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/market_alley_n/market_alley_n_scene.o" + number 2 +endseg + +beginseg + name "market_alley_n_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/market_alley_n/market_alley_n_room_0.o" + number 3 +endseg + +beginseg + name "hiral_demo_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/hiral_demo/hiral_demo_scene.o" + number 2 +endseg + +beginseg + name "hiral_demo_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/hiral_demo/hiral_demo_room_0.o" + number 3 +endseg + +beginseg + name "kokiri_home3_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home3/kokiri_home3_scene.o" + number 2 +endseg + +beginseg + name "kokiri_home3_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home3/kokiri_home3_room_0.o" + number 3 +endseg + +beginseg + name "jyasinzou_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_scene.o" + number 2 +endseg + +beginseg + name "jyasinzou_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_0.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_1.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_2.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_3.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_4.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_5.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_6.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_7" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_7.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_8" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_8.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_9" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_9.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_10" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_10.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_11" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_11.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_12" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_12.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_13" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_13.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_14" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_14.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_15" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_15.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_16" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_16.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_17" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_17.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_18" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_18.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_19" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_19.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_20" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_20.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_21" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_21.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_22" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_22.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_23" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_23.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_24" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_24.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_25" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_25.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_26" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_26.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_27" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_27.o" + number 3 +endseg + +beginseg + name "jyasinzou_room_28" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinzou/jyasinzou_room_28.o" + number 3 +endseg + +beginseg + name "ice_doukutu_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_scene.o" + number 2 +endseg + +beginseg + name "ice_doukutu_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_0.o" + number 3 +endseg + +beginseg + name "ice_doukutu_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_1.o" + number 3 +endseg + +beginseg + name "ice_doukutu_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_2.o" + number 3 +endseg + +beginseg + name "ice_doukutu_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_3.o" + number 3 +endseg + +beginseg + name "ice_doukutu_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_4.o" + number 3 +endseg + +beginseg + name "ice_doukutu_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_5.o" + number 3 +endseg + +beginseg + name "ice_doukutu_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_6.o" + number 3 +endseg + +beginseg + name "ice_doukutu_room_7" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_7.o" + number 3 +endseg + +beginseg + name "ice_doukutu_room_8" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_8.o" + number 3 +endseg + +beginseg + name "ice_doukutu_room_9" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_9.o" + number 3 +endseg + +beginseg + name "ice_doukutu_room_10" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_10.o" + number 3 +endseg + +beginseg + name "ice_doukutu_room_11" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ice_doukutu/ice_doukutu_room_11.o" + number 3 +endseg + +beginseg + name "malon_stable_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/malon_stable/malon_stable_scene.o" + number 2 +endseg + +beginseg + name "malon_stable_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/malon_stable/malon_stable_room_0.o" + number 3 +endseg + +beginseg + name "kakariko_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/kakariko/kakariko_scene.o" + number 2 +endseg + +beginseg + name "kakariko_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/kakariko/kakariko_room_0.o" + number 3 +endseg + +beginseg + name "bdan_boss_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan_boss/bdan_boss_scene.o" + number 2 +endseg + +beginseg + name "bdan_boss_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan_boss/bdan_boss_room_0.o" + number 3 +endseg + +beginseg + name "bdan_boss_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/bdan_boss/bdan_boss_room_1.o" + number 3 +endseg + +beginseg + name "FIRE_bs_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/FIRE_bs/FIRE_bs_scene.o" + number 2 +endseg + +beginseg + name "FIRE_bs_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/FIRE_bs/FIRE_bs_room_0.o" + number 3 +endseg + +beginseg + name "FIRE_bs_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/FIRE_bs/FIRE_bs_room_1.o" + number 3 +endseg + +beginseg + name "hut_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hut/hut_scene.o" + number 2 +endseg + +beginseg + name "hut_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hut/hut_room_0.o" + number 3 +endseg + +beginseg + name "daiyousei_izumi_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/daiyousei_izumi/daiyousei_izumi_scene.o" + number 2 +endseg + +beginseg + name "daiyousei_izumi_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/daiyousei_izumi/daiyousei_izumi_room_0.o" + number 3 +endseg + +beginseg + name "hakaana_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/hakaana/hakaana_scene.o" + number 2 +endseg + +beginseg + name "hakaana_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/hakaana/hakaana_room_0.o" + number 3 +endseg + +beginseg + name "yousei_izumi_tate_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/yousei_izumi_tate/yousei_izumi_tate_scene.o" + number 2 +endseg + +beginseg + name "yousei_izumi_tate_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/yousei_izumi_tate/yousei_izumi_tate_room_0.o" + number 3 +endseg + +beginseg + name "yousei_izumi_yoko_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/yousei_izumi_yoko/yousei_izumi_yoko_scene.o" + number 2 +endseg + +beginseg + name "yousei_izumi_yoko_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/yousei_izumi_yoko/yousei_izumi_yoko_room_0.o" + number 3 +endseg + +beginseg + name "golon_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/golon/golon_scene.o" + number 2 +endseg + +beginseg + name "golon_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/golon/golon_room_0.o" + number 3 +endseg + +beginseg + name "zoora_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/zoora/zoora_scene.o" + number 2 +endseg + +beginseg + name "zoora_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/zoora/zoora_room_0.o" + number 3 +endseg + +beginseg + name "drag_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/drag/drag_scene.o" + number 2 +endseg + +beginseg + name "drag_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/drag/drag_room_0.o" + number 3 +endseg + +beginseg + name "alley_shop_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/alley_shop/alley_shop_scene.o" + number 2 +endseg + +beginseg + name "alley_shop_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/alley_shop/alley_shop_room_0.o" + number 3 +endseg + +beginseg + name "night_shop_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/night_shop/night_shop_scene.o" + number 2 +endseg + +beginseg + name "night_shop_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/night_shop/night_shop_room_0.o" + number 3 +endseg + +beginseg + name "impa_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/impa/impa_scene.o" + number 2 +endseg + +beginseg + name "impa_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/impa/impa_room_0.o" + number 3 +endseg + +beginseg + name "labo_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/labo/labo_scene.o" + number 2 +endseg + +beginseg + name "labo_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/labo/labo_room_0.o" + number 3 +endseg + +beginseg + name "tent_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/tent/tent_scene.o" + number 2 +endseg + +beginseg + name "tent_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/tent/tent_room_0.o" + number 3 +endseg + +beginseg + name "nakaniwa_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/nakaniwa/nakaniwa_scene.o" + number 2 +endseg + +beginseg + name "nakaniwa_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/nakaniwa/nakaniwa_room_0.o" + number 3 +endseg + +beginseg + name "ddan_boss_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan_boss/ddan_boss_scene.o" + number 2 +endseg + +beginseg + name "ddan_boss_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan_boss/ddan_boss_room_0.o" + number 3 +endseg + +beginseg + name "ddan_boss_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ddan_boss/ddan_boss_room_1.o" + number 3 +endseg + +beginseg + name "ydan_boss_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan_boss/ydan_boss_scene.o" + number 2 +endseg + +beginseg + name "ydan_boss_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan_boss/ydan_boss_room_0.o" + number 3 +endseg + +beginseg + name "ydan_boss_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ydan_boss/ydan_boss_room_1.o" + number 3 +endseg + +beginseg + name "HAKAdan_bs_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan_bs/HAKAdan_bs_scene.o" + number 2 +endseg + +beginseg + name "HAKAdan_bs_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan_bs/HAKAdan_bs_room_0.o" + number 3 +endseg + +beginseg + name "HAKAdan_bs_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdan_bs/HAKAdan_bs_room_1.o" + number 3 +endseg + +beginseg + name "MIZUsin_bs_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin_bs/MIZUsin_bs_scene.o" + number 2 +endseg + +beginseg + name "MIZUsin_bs_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin_bs/MIZUsin_bs_room_0.o" + number 3 +endseg + +beginseg + name "MIZUsin_bs_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/MIZUsin_bs/MIZUsin_bs_room_1.o" + number 3 +endseg + +beginseg + name "ganon_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_scene.o" + number 2 +endseg + +beginseg + name "ganon_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_0.o" + number 3 +endseg + +beginseg + name "ganon_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_1.o" + number 3 +endseg + +beginseg + name "ganon_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_2.o" + number 3 +endseg + +beginseg + name "ganon_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_3.o" + number 3 +endseg + +beginseg + name "ganon_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_4.o" + number 3 +endseg + +beginseg + name "ganon_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_5.o" + number 3 +endseg + +beginseg + name "ganon_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_6.o" + number 3 +endseg + +beginseg + name "ganon_room_7" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_7.o" + number 3 +endseg + +beginseg + name "ganon_room_8" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_8.o" + number 3 +endseg + +beginseg + name "ganon_room_9" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon/ganon_room_9.o" + number 3 +endseg + +beginseg + name "ganon_boss_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_boss/ganon_boss_scene.o" + number 2 +endseg + +beginseg + name "ganon_boss_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_boss/ganon_boss_room_0.o" + number 3 +endseg + +beginseg + name "jyasinboss_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinboss/jyasinboss_scene.o" + number 2 +endseg + +beginseg + name "jyasinboss_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinboss/jyasinboss_room_0.o" + number 3 +endseg + +beginseg + name "jyasinboss_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinboss/jyasinboss_room_1.o" + number 3 +endseg + +beginseg + name "jyasinboss_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinboss/jyasinboss_room_2.o" + number 3 +endseg + +beginseg + name "jyasinboss_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/jyasinboss/jyasinboss_room_3.o" + number 3 +endseg + +beginseg + name "kokiri_home4_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home4/kokiri_home4_scene.o" + number 2 +endseg + +beginseg + name "kokiri_home4_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home4/kokiri_home4_room_0.o" + number 3 +endseg + +beginseg + name "kokiri_home5_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home5/kokiri_home5_scene.o" + number 2 +endseg + +beginseg + name "kokiri_home5_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/kokiri_home5/kokiri_home5_room_0.o" + number 3 +endseg + +beginseg + name "ganon_final_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_final/ganon_final_scene.o" + number 2 +endseg + +beginseg + name "ganon_final_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_final/ganon_final_room_0.o" + number 3 +endseg + +beginseg + name "kakariko3_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakariko3/kakariko3_scene.o" + number 2 +endseg + +beginseg + name "kakariko3_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kakariko3/kakariko3_room_0.o" + number 3 +endseg + +beginseg + name "hakasitarelay_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_scene.o" + number 2 +endseg + +beginseg + name "hakasitarelay_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_room_0.o" + number 3 +endseg + +beginseg + name "hakasitarelay_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_room_1.o" + number 3 +endseg + +beginseg + name "hakasitarelay_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_room_2.o" + number 3 +endseg + +beginseg + name "hakasitarelay_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_room_3.o" + number 3 +endseg + +beginseg + name "hakasitarelay_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_room_4.o" + number 3 +endseg + +beginseg + name "hakasitarelay_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_room_5.o" + number 3 +endseg + +beginseg + name "hakasitarelay_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hakasitarelay/hakasitarelay_room_6.o" + number 3 +endseg + +beginseg + name "shrine_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/shrine/shrine_scene.o" + number 2 +endseg + +beginseg + name "shrine_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/shrine/shrine_room_0.o" + number 3 +endseg + +beginseg + name "turibori_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/turibori/turibori_scene.o" + number 2 +endseg + +beginseg + name "turibori_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/turibori/turibori_room_0.o" + number 3 +endseg + +beginseg + name "shrine_n_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/shrine_n/shrine_n_scene.o" + number 2 +endseg + +beginseg + name "shrine_n_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/shrine_n/shrine_n_room_0.o" + number 3 +endseg + +beginseg + name "shrine_r_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/shrine_r/shrine_r_scene.o" + number 2 +endseg + +beginseg + name "shrine_r_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/shrine_r/shrine_r_room_0.o" + number 3 +endseg + +beginseg + name "ganontika_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_scene.o" + number 2 +endseg + +beginseg + name "ganontika_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_0.o" + number 3 +endseg + +beginseg + name "ganontika_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_1.o" + number 3 +endseg + +beginseg + name "ganontika_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_2.o" + number 3 +endseg + +beginseg + name "ganontika_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_3.o" + number 3 +endseg + +beginseg + name "ganontika_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_4.o" + number 3 +endseg + +beginseg + name "ganontika_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_5.o" + number 3 +endseg + +beginseg + name "ganontika_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_6.o" + number 3 +endseg + +beginseg + name "ganontika_room_7" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_7.o" + number 3 +endseg + +beginseg + name "ganontika_room_8" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_8.o" + number 3 +endseg + +beginseg + name "ganontika_room_9" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_9.o" + number 3 +endseg + +beginseg + name "ganontika_room_10" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_10.o" + number 3 +endseg + +beginseg + name "ganontika_room_11" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_11.o" + number 3 +endseg + +beginseg + name "ganontika_room_12" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_12.o" + number 3 +endseg + +beginseg + name "ganontika_room_13" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_13.o" + number 3 +endseg + +beginseg + name "ganontika_room_14" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_14.o" + number 3 +endseg + +beginseg + name "ganontika_room_15" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_15.o" + number 3 +endseg + +beginseg + name "ganontika_room_16" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_16.o" + number 3 +endseg + +beginseg + name "ganontika_room_17" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_17.o" + number 3 +endseg + +beginseg + name "ganontika_room_18" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_18.o" + number 3 +endseg + +beginseg + name "ganontika_room_19" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontika/ganontika_room_19.o" + number 3 +endseg + +beginseg + name "hakaana2_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/hakaana2/hakaana2_scene.o" + number 2 +endseg + +beginseg + name "hakaana2_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/hakaana2/hakaana2_room_0.o" + number 3 +endseg + +beginseg + name "gerudoway_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/gerudoway/gerudoway_scene.o" + number 2 +endseg + +beginseg + name "gerudoway_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/gerudoway/gerudoway_room_0.o" + number 3 +endseg + +beginseg + name "gerudoway_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/gerudoway/gerudoway_room_1.o" + number 3 +endseg + +beginseg + name "gerudoway_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/gerudoway/gerudoway_room_2.o" + number 3 +endseg + +beginseg + name "gerudoway_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/gerudoway/gerudoway_room_3.o" + number 3 +endseg + +beginseg + name "gerudoway_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/gerudoway/gerudoway_room_4.o" + number 3 +endseg + +beginseg + name "gerudoway_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/gerudoway/gerudoway_room_5.o" + number 3 +endseg + +beginseg + name "HAKAdanCH_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_scene.o" + number 2 +endseg + +beginseg + name "HAKAdanCH_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_0.o" + number 3 +endseg + +beginseg + name "HAKAdanCH_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_1.o" + number 3 +endseg + +beginseg + name "HAKAdanCH_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_2.o" + number 3 +endseg + +beginseg + name "HAKAdanCH_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_3.o" + number 3 +endseg + +beginseg + name "HAKAdanCH_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_4.o" + number 3 +endseg + +beginseg + name "HAKAdanCH_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_5.o" + number 3 +endseg + +beginseg + name "HAKAdanCH_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/HAKAdanCH/HAKAdanCH_room_6.o" + number 3 +endseg + +beginseg + name "hairal_niwa_n_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hairal_niwa_n/hairal_niwa_n_scene.o" + number 2 +endseg + +beginseg + name "hairal_niwa_n_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hairal_niwa_n/hairal_niwa_n_room_0.o" + number 3 +endseg + +beginseg + name "bowling_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/bowling/bowling_scene.o" + number 2 +endseg + +beginseg + name "bowling_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/bowling/bowling_room_0.o" + number 3 +endseg + +beginseg + name "hakaana_ouke_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/hakaana_ouke/hakaana_ouke_scene.o" + number 2 +endseg + +beginseg + name "hakaana_ouke_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/hakaana_ouke/hakaana_ouke_room_0.o" + number 3 +endseg + +beginseg + name "hakaana_ouke_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/hakaana_ouke/hakaana_ouke_room_1.o" + number 3 +endseg + +beginseg + name "hakaana_ouke_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/hakaana_ouke/hakaana_ouke_room_2.o" + number 3 +endseg + +beginseg + name "hylia_labo_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hylia_labo/hylia_labo_scene.o" + number 2 +endseg + +beginseg + name "hylia_labo_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/hylia_labo/hylia_labo_room_0.o" + number 3 +endseg + +beginseg + name "souko_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/souko/souko_scene.o" + number 2 +endseg + +beginseg + name "souko_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/souko/souko_room_0.o" + number 3 +endseg + +beginseg + name "souko_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/souko/souko_room_1.o" + number 3 +endseg + +beginseg + name "souko_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/souko/souko_room_2.o" + number 3 +endseg + +beginseg + name "miharigoya_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/miharigoya/miharigoya_scene.o" + number 2 +endseg + +beginseg + name "miharigoya_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/miharigoya/miharigoya_room_0.o" + number 3 +endseg + +beginseg + name "mahouya_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/mahouya/mahouya_scene.o" + number 2 +endseg + +beginseg + name "mahouya_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/mahouya/mahouya_room_0.o" + number 3 +endseg + +beginseg + name "takaraya_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_scene.o" + number 2 +endseg + +beginseg + name "takaraya_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_room_0.o" + number 3 +endseg + +beginseg + name "takaraya_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_room_1.o" + number 3 +endseg + +beginseg + name "takaraya_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_room_2.o" + number 3 +endseg + +beginseg + name "takaraya_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_room_3.o" + number 3 +endseg + +beginseg + name "takaraya_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_room_4.o" + number 3 +endseg + +beginseg + name "takaraya_room_5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_room_5.o" + number 3 +endseg + +beginseg + name "takaraya_room_6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/indoors/takaraya/takaraya_room_6.o" + number 3 +endseg + +beginseg + name "ganon_sonogo_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_sonogo/ganon_sonogo_scene.o" + number 2 +endseg + +beginseg + name "ganon_sonogo_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_sonogo/ganon_sonogo_room_0.o" + number 3 +endseg + +beginseg + name "ganon_sonogo_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_sonogo/ganon_sonogo_room_1.o" + number 3 +endseg + +beginseg + name "ganon_sonogo_room_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_sonogo/ganon_sonogo_room_2.o" + number 3 +endseg + +beginseg + name "ganon_sonogo_room_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_sonogo/ganon_sonogo_room_3.o" + number 3 +endseg + +beginseg + name "ganon_sonogo_room_4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_sonogo/ganon_sonogo_room_4.o" + number 3 +endseg + +beginseg + name "ganon_demo_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_demo/ganon_demo_scene.o" + number 2 +endseg + +beginseg + name "ganon_demo_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganon_demo/ganon_demo_room_0.o" + number 3 +endseg + +beginseg + name "face_shop_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/face_shop/face_shop_scene.o" + number 2 +endseg + +beginseg + name "face_shop_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/shops/face_shop/face_shop_room_0.o" + number 3 +endseg + +beginseg + name "kinsuta_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kinsuta/kinsuta_scene.o" + number 2 +endseg + +beginseg + name "kinsuta_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/misc/kinsuta/kinsuta_room_0.o" + number 3 +endseg + +beginseg + name "ganontikasonogo_scene" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontikasonogo/ganontikasonogo_scene.o" + number 2 +endseg + +beginseg + name "ganontikasonogo_room_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontikasonogo/ganontikasonogo_room_0.o" + number 3 +endseg + +beginseg + name "ganontikasonogo_room_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/scenes/dungeons/ganontikasonogo/ganontikasonogo_room_1.o" + number 3 +endseg diff --git a/spec/spec b/spec/spec new file mode 100644 index 0000000000..345f46f27d --- /dev/null +++ b/spec/spec @@ -0,0 +1,5018 @@ +/* + * ROM spec file + */ + +#include "include/versions.h" + +beginseg + name "makerom" + // We set the address of the makerom segment as 0x80000400 - 0x1000, since the ROM header and IPL3 together + // are 0x1000 bytes long and we want the entry code to end up at address 0x80000400. + address 0x7FFFF400 + include "$(BUILD_DIR)/src/makerom/rom_header.o" + include "$(BUILD_DIR)/src/makerom/ipl3.o" + include "$(BUILD_DIR)/src/makerom/entry.o" +endseg + +beginseg + name "boot" + +#if PLATFORM_IQUE + include "*$(BUILD_DIR)/boot_bss_1.o" + include "*$(BUILD_DIR)/boot_bss_boot_main.o" + include "*$(BUILD_DIR)/boot_bss_idle.o" + include "*$(BUILD_DIR)/boot_bss_viconfig.o" +#endif + include "$(BUILD_DIR)/src/boot/boot_main.o" + include "$(BUILD_DIR)/src/boot/idle.o" +#if OOT_VERSION >= PAL_1_0 + include "$(BUILD_DIR)/src/boot/viconfig.o" +#endif + include "$(BUILD_DIR)/src/boot/carthandle.o" + include "$(BUILD_DIR)/src/boot/z_std_dma.o" +#if PLATFORM_IQUE + include "*$(BUILD_DIR)/boot_bss_z_std_dma.o" +#endif +#if !PLATFORM_IQUE + include "$(BUILD_DIR)/src/boot/yaz0.o" +#else + include "$(BUILD_DIR)/src/boot/inflate.o" +#endif + include "$(BUILD_DIR)/src/boot/z_locale.o" +#if PLATFORM_N64 + include "$(BUILD_DIR)/src/boot/cic6105.o" +#endif +#if DEBUG_FEATURES + include "$(BUILD_DIR)/src/boot/assert.o" +#endif +#if !PLATFORM_IQUE + include "$(BUILD_DIR)/src/boot/is_debug.o" +#else + include "$(BUILD_DIR)/src/boot/is_debug_ique.o" +#endif + include "$(BUILD_DIR)/src/boot/driverominit.o" + include "$(BUILD_DIR)/src/boot/mio0.o" + + // libu64 + include "$(BUILD_DIR)/src/libu64/stackcheck.o" +#if !PLATFORM_IQUE + include "$(BUILD_DIR)/src/libu64/debug.o" +#endif + + // libc64 +#if PLATFORM_N64 + include "$(BUILD_DIR)/src/libc64/sleep.o" +#endif +#if DEBUG_FEATURES + include "$(BUILD_DIR)/src/libc64/sprintf.o" +#endif + + // libultra +#if PLATFORM_N64 +#include "boot_libultra_n64.inc" +#elif PLATFORM_GC +#include "boot_libultra_gc.inc" +#elif PLATFORM_IQUE +#include "boot_libultra_ique.inc" +#endif + + // libgcc +#if PLATFORM_IQUE && !defined(COMPILER_GCC) + include "$(BUILD_DIR)/src/libgcc/__divdi3.o" + include "$(BUILD_DIR)/src/libgcc/__moddi3.o" + include "$(BUILD_DIR)/src/libgcc/__udivdi3.o" + include "$(BUILD_DIR)/src/libgcc/__umoddi3.o" + include "$(BUILD_DIR)/src/libgcc/__cmpdi2.o" + include "$(BUILD_DIR)/src/libgcc/__floatdidf.o" + include "$(BUILD_DIR)/src/libgcc/__floatdisf.o" + include "$(BUILD_DIR)/src/libgcc/__fixunsdfdi.o" + include "$(BUILD_DIR)/src/libgcc/__fixdfdi.o" + include "$(BUILD_DIR)/src/libgcc/__fixunssfdi.o" + include "$(BUILD_DIR)/src/libgcc/__fixsfdi.o" +#endif + + // Build information + include "$(BUILD_DIR)/src/boot/build.o" + + // RSP microcode + include "$(BUILD_DIR)/data/rsp_boot.text.o" + include "$(BUILD_DIR)/data/cic6105.text.o" + + // Extra files for non-matching debug builds +#if DEBUG_FEATURES + include "$(BUILD_DIR)/src/libu64/debug.o" + include "$(BUILD_DIR)/src/libultra/io/epiwrite.o" + include "$(BUILD_DIR)/src/libultra/io/vimodefpallan1.o" + include "$(BUILD_DIR)/src/libultra/libc/ldiv.o" + include "$(BUILD_DIR)/src/libultra/libc/string.o" + include "$(BUILD_DIR)/src/libultra/libc/xldtob.o" + include "$(BUILD_DIR)/src/libultra/libc/xlitob.o" + include "$(BUILD_DIR)/src/libultra/libc/xprintf.o" +#endif + +#if PLATFORM_IQUE + include "*$(BUILD_DIR)/boot_bss_2.o" +#endif + + // Functions that GCC-compiled code may depend on, placed in boot so they will always be loaded +#ifdef COMPILER_GCC + include "$(BUILD_DIR)/src/libultra/libc/string.o" + include "$(BUILD_DIR)/src/libc/memset.o" + include "$(BUILD_DIR)/src/libc/memmove.o" + include "$(BUILD_DIR)/src/gcc_fix/missing_gcc_functions.o" +#endif + +endseg + +beginseg + name "dmadata" + include "$(BUILD_DIR)/src/dmadata/dmadata.o" +endseg + +beginseg + name "Audiobank" + address 0 + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_0.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_1.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_2.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_3.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_4.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_5.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_6.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_7.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_8.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_9.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_10.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_11.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_12.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_13.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_14.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_15.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_16.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_17.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_18.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_19.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_20.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_21.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_22.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_23.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_24.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_25.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_26.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_27.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_28.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_29.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_30.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_31.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_32.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_33.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_34.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_35.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_36.o" + include "$(BUILD_DIR)/assets/audio/soundfonts/Soundfont_37.o" +#if OOT_VERSION >= PAL_1_0 + include "$(BUILD_DIR)/assets/audio/audiobank_padding.o" +#endif +endseg + +beginseg + name "Audioseq" + address 0 + include "$(BUILD_DIR)/assets/audio/sequences/seq_0.prg.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_1.prg.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_2.prg.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_3.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_4.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_5.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_6.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_7.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_8.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_9.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_10.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_11.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_12.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_13.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_14.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_15.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_16.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_17.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_18.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_19.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_20.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_21.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_22.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_23.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_24.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_25.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_26.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_27.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_28.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_29.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_30.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_31.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_32.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_33.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_34.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_35.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_36.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_37.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_38.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_39.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_40.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_41.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_42.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_43.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_44.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_45.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_46.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_47.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_48.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_49.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_50.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_51.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_52.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_53.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_54.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_55.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_56.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_57.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_58.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_59.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_60.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_61.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_62.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_63.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_64.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_65.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_66.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_67.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_68.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_69.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_70.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_71.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_72.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_73.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_74.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_75.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_76.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_77.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_78.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_79.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_80.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_81.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_82.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_83.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_84.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_85.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_86.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_88.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_89.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_90.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_91.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_92.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_93.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_94.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_95.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_96.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_97.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_98.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_99.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_100.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_101.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_102.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_103.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_104.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_105.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_106.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_107.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_108.o" + include "$(BUILD_DIR)/assets/audio/sequences/seq_109.prg.o" +endseg + +beginseg + name "Audiotable" + address 0 + include "$(BUILD_DIR)/assets/audio/samplebanks/SampleBank_0.o" + include "$(BUILD_DIR)/assets/audio/samplebanks/SampleBank_2.o" + include "$(BUILD_DIR)/assets/audio/samplebanks/SampleBank_3.o" + include "$(BUILD_DIR)/assets/audio/samplebanks/SampleBank_4.o" + include "$(BUILD_DIR)/assets/audio/samplebanks/SampleBank_5.o" + include "$(BUILD_DIR)/assets/audio/samplebanks/SampleBank_6.o" +endseg + +#if OOT_NTSC +beginseg + name "kanji" + include "$(BUILD_DIR)/assets/textures/kanji/kanji.o" +endseg +#endif + +beginseg + name "link_animetion" +#if OOT_NTSC + romalign 0x1000 +#endif + include "$(BUILD_DIR)/assets/misc/link_animetion/link_animetion.o" + number 7 +endseg + +beginseg + name "icon_item_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/icon_item_static/icon_item_static.o" + number 8 +endseg + +beginseg + name "icon_item_24_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/icon_item_24_static/icon_item_24_static.o" + number 9 +endseg + +beginseg + name "icon_item_field_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/icon_item_field_static/icon_item_field_static.o" + number 12 +endseg + +beginseg + name "icon_item_dungeon_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/icon_item_dungeon_static/icon_item_dungeon_static.o" + number 12 +endseg + +beginseg + name "icon_item_gameover_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/icon_item_gameover_static/icon_item_gameover_static.o" + number 12 +endseg + +#if OOT_NTSC +beginseg + name "icon_item_jpn_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/icon_item_jpn_static/icon_item_jpn_static.o" + number 13 +endseg +#endif + +beginseg + name "icon_item_nes_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/icon_item_nes_static/icon_item_nes_static.o" + number 13 +endseg + +#if OOT_PAL +beginseg + name "icon_item_ger_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/icon_item_ger_static/icon_item_ger_static.o" + number 13 +endseg + +beginseg + name "icon_item_fra_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/icon_item_fra_static/icon_item_fra_static.o" + number 13 +endseg +#endif + +beginseg + name "item_name_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/item_name_static/item_name_static.o" + number 10 +endseg + +beginseg + name "map_name_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/map_name_static/map_name_static.o" + number 11 +endseg + +beginseg + name "do_action_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/do_action_static/do_action_static.o" + number 7 +endseg + +beginseg + name "message_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/message_static/message_static.o" + number 7 +endseg + +#if OOT_NTSC && OOT_VERSION < NTSC_1_2 +beginseg + name "jpn_message_data_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/text/jpn_message_data_static.o" + number 8 +endseg +#endif + +beginseg + name "message_texture_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/message_texture_static/message_texture_static.o" + number 9 +endseg + +beginseg + name "nes_font_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/nes_font_static/nes_font_static.o" + number 10 +endseg + +#if OOT_NTSC && OOT_VERSION >= NTSC_1_2 +beginseg + name "jpn_message_data_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/text/jpn_message_data_static.o" + number 8 +endseg +#endif + +beginseg + name "nes_message_data_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/text/nes_message_data_static.o" + number 7 +endseg + +#if OOT_PAL +beginseg + name "ger_message_data_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/text/ger_message_data_static.o" + number 7 +endseg + +beginseg + name "fra_message_data_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/text/fra_message_data_static.o" + number 7 +endseg +#endif + +beginseg + name "staff_message_data_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/text/staff_message_data_static.o" + number 7 +endseg + +beginseg + name "map_grand_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/map_grand_static/map_grand_static.o" + number 11 +endseg + +#if PLATFORM_N64 +beginseg + name "map_i_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/map_i_static/map_i_static.o" + number 11 +endseg +#endif + +beginseg + name "map_48x85_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/map_48x85_static/map_48x85_static.o" + number 11 +endseg + +#if !PLATFORM_N64 +beginseg + name "map_i_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/map_i_static/map_i_static.o" + number 11 +endseg +#endif + +beginseg + name "code" + compress + after "dmadata" + align 0x20 + +#if PLATFORM_IQUE + include "*$(BUILD_DIR)/code_bss_1.o" +#endif + include "$(BUILD_DIR)/src/code/z_en_a_keep.o" + include "$(BUILD_DIR)/src/code/z_en_item00.o" + include "$(BUILD_DIR)/src/code/z_eff_blure.o" + include "$(BUILD_DIR)/src/code/z_eff_shield_particle.o" + include "$(BUILD_DIR)/src/code/z_eff_spark.o" + include "$(BUILD_DIR)/src/code/z_eff_ss_dead.o" + include "$(BUILD_DIR)/src/code/z_effect.o" + include "$(BUILD_DIR)/src/code/z_effect_soft_sprite.o" + include "$(BUILD_DIR)/src/code/z_effect_soft_sprite_old_init.o" + include "$(BUILD_DIR)/src/code/z_effect_soft_sprite_dlftbls.o" + include "$(BUILD_DIR)/src/code/flg_set.o" + include "$(BUILD_DIR)/src/code/z_DLF.o" + include "$(BUILD_DIR)/src/code/z_actor.o" +#if PLATFORM_IQUE + include "*$(BUILD_DIR)/code_bss_z_actor.o" +#endif + include "$(BUILD_DIR)/src/code/z_actor_dlftbls.o" + include "$(BUILD_DIR)/src/code/z_bgcheck.o" + include "$(BUILD_DIR)/src/code/z_bg_collect.o" + include "$(BUILD_DIR)/src/code/z_bg_item.o" + include "$(BUILD_DIR)/src/code/z_camera.o" + include "$(BUILD_DIR)/src/code/z_collision_btltbls.o" + include "$(BUILD_DIR)/src/code/z_collision_check.o" + include "$(BUILD_DIR)/src/code/z_common_data.o" + include "$(BUILD_DIR)/src/code/z_debug.o" + include "$(BUILD_DIR)/src/code/z_debug_display.o" + include "$(BUILD_DIR)/src/code/z_demo.o" + include "$(BUILD_DIR)/src/code/z_memory_utils.o" + include "$(BUILD_DIR)/src/code/z_draw.o" + include "$(BUILD_DIR)/src/code/z_sfx_source.o" + include "$(BUILD_DIR)/src/code/z_elf_message.o" + include "$(BUILD_DIR)/src/code/z_face_reaction.o" + include "$(BUILD_DIR)/src/code/z_env_flags.o" + include "$(BUILD_DIR)/src/code/z_fcurve_data.o" + include "$(BUILD_DIR)/src/code/z_fcurve_data_skelanime.o" + include "$(BUILD_DIR)/src/code/z_game_dlftbls.o" + include "$(BUILD_DIR)/src/code/z_horse.o" + include "$(BUILD_DIR)/src/code/z_jpeg.o" + include "$(BUILD_DIR)/src/code/z_kaleido_setup.o" + include "$(BUILD_DIR)/src/code/z_kanfont.o" + include "$(BUILD_DIR)/src/code/z_kankyo.o" + include "$(BUILD_DIR)/src/code/z_lib.o" + include "$(BUILD_DIR)/src/code/z_lifemeter.o" + include "$(BUILD_DIR)/src/code/z_lights.o" + include "$(BUILD_DIR)/src/code/z_malloc.o" + include "$(BUILD_DIR)/src/code/z_map_mark.o" +#if DEBUG_ASSETS + include "$(BUILD_DIR)/src/code/z_moji.o" +#endif + include "$(BUILD_DIR)/src/code/z_prenmi_buff.o" + include "$(BUILD_DIR)/src/code/z_nulltask.o" + include "$(BUILD_DIR)/src/code/z_olib.o" + include "$(BUILD_DIR)/src/code/z_onepointdemo.o" + include "$(BUILD_DIR)/src/code/z_map_exp.o" + include "$(BUILD_DIR)/src/code/z_map_data.o" + include "$(BUILD_DIR)/src/code/z_parameter.o" + include "$(BUILD_DIR)/src/code/z_path.o" + include "$(BUILD_DIR)/src/code/z_frame_advance.o" + include "$(BUILD_DIR)/src/code/z_player_lib.o" + include "$(BUILD_DIR)/src/code/z_prenmi.o" + include "$(BUILD_DIR)/src/code/z_quake.o" + include "$(BUILD_DIR)/src/code/z_rcp.o" + include "$(BUILD_DIR)/src/code/z_room.o" + include "$(BUILD_DIR)/src/code/z_sample.o" + include "$(BUILD_DIR)/src/code/z_inventory.o" + include "$(BUILD_DIR)/src/code/z_scene.o" + include "$(BUILD_DIR)/src/code/object_table.o" + include "$(BUILD_DIR)/src/code/z_scene_table.o" + include "$(BUILD_DIR)/src/code/z_skelanime.o" + include "$(BUILD_DIR)/src/code/z_skin.o" + include "$(BUILD_DIR)/src/code/z_skin_awb.o" + include "$(BUILD_DIR)/src/code/z_skin_matrix.o" + include "$(BUILD_DIR)/src/code/z_sram.o" + include "$(BUILD_DIR)/src/code/z_ss_sram.o" + include "$(BUILD_DIR)/src/code/z_rumble.o" +#if DEBUG_ASSETS + include "$(BUILD_DIR)/data/z_text.data.o" +#endif + include "$(BUILD_DIR)/data/unk_8012ABC0.data.o" + include "$(BUILD_DIR)/src/code/z_view.o" + include "$(BUILD_DIR)/src/code/z_vimode.o" + include "$(BUILD_DIR)/src/code/z_viscvg.o" + include "$(BUILD_DIR)/src/code/z_vismono.o" + include "$(BUILD_DIR)/src/code/z_viszbuf.o" + include "$(BUILD_DIR)/src/code/z_vr_box.o" + include "$(BUILD_DIR)/src/code/z_vr_box_draw.o" + include "$(BUILD_DIR)/src/code/z_player_call.o" + include "$(BUILD_DIR)/src/code/z_fbdemo.o" + include "$(BUILD_DIR)/src/code/z_fbdemo_triforce.o" + include "$(BUILD_DIR)/src/code/z_fbdemo_wipe1.o" + include "$(BUILD_DIR)/src/code/z_fbdemo_circle.o" + include "$(BUILD_DIR)/src/code/z_fbdemo_fade.o" + include "$(BUILD_DIR)/src/code/shrink_window.o" +#if DEBUG_FEATURES + include "$(BUILD_DIR)/src/code/db_camera.o" +#endif + include "$(BUILD_DIR)/src/code/z_cutscene_spline.o" +#if DEBUG_FEATURES + include "$(BUILD_DIR)/src/code/mempak.o" +#endif + include "$(BUILD_DIR)/src/code/z_kaleido_manager.o" + include "$(BUILD_DIR)/src/code/z_kaleido_scope_call.o" + include "$(BUILD_DIR)/src/code/z_play.o" + include "$(BUILD_DIR)/src/code/PreRender.o" + include "$(BUILD_DIR)/src/code/TwoHeadGfxArena.o" + include "$(BUILD_DIR)/src/code/TwoHeadArena.o" + include "$(BUILD_DIR)/src/code/audio_stop_all_sfx.o" + include "$(BUILD_DIR)/src/code/audio_thread_manager.o" + include "$(BUILD_DIR)/src/code/title_setup.o" + include "$(BUILD_DIR)/src/code/game.o" + include "$(BUILD_DIR)/src/code/gamealloc.o" + include "$(BUILD_DIR)/src/code/graph.o" + include "$(BUILD_DIR)/src/code/gfxalloc.o" + include "$(BUILD_DIR)/src/code/listalloc.o" + include "$(BUILD_DIR)/src/code/main.o" + include "$(BUILD_DIR)/src/code/padmgr.o" + include "$(BUILD_DIR)/src/code/sched.o" + include "$(BUILD_DIR)/src/code/speed_meter.o" + include "$(BUILD_DIR)/src/code/sys_cfb.o" + include "$(BUILD_DIR)/src/code/sys_math.o" + include "$(BUILD_DIR)/src/code/sys_math3d.o" +#if DEBUG_FEATURES + include "$(BUILD_DIR)/src/code/sys_math3d_draw.o" +#endif + include "$(BUILD_DIR)/src/code/sys_math_atan.o" + include "$(BUILD_DIR)/src/code/sys_matrix.o" + include "$(BUILD_DIR)/src/code/sys_ucode.o" + include "$(BUILD_DIR)/src/code/sys_rumble.o" + include "$(BUILD_DIR)/src/code/sys_freeze.o" +#if DEBUG_FEATURES + include "$(BUILD_DIR)/src/code/sys_debug_controller.o" +#endif + include "$(BUILD_DIR)/src/code/irqmgr.o" +#if PLATFORM_N64 + include "$(BUILD_DIR)/src/code/code_n64dd_800AD410.o" + include "$(BUILD_DIR)/src/code/code_n64dd_800AD4C0.o" +#endif +#if DEBUG_FEATURES + include "$(BUILD_DIR)/src/code/debug_malloc.o" +#endif +#if PLATFORM_N64 + include "$(BUILD_DIR)/src/code/fault_n64.o" +#else + include "$(BUILD_DIR)/src/code/fault_gc.o" + include "$(BUILD_DIR)/src/code/fault_gc_drawer.o" +#endif + include "$(BUILD_DIR)/src/code/kanread.o" +#if DEBUG_FEATURES + include "$(BUILD_DIR)/src/code/ucode_disas.o" +#endif + + // audio +#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" +#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" +#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" + + // libu64 +#if PLATFORM_N64 + include "$(BUILD_DIR)/src/libu64/gfxprint.o" + include "$(BUILD_DIR)/src/libu64/rcp_utils.o" + include "$(BUILD_DIR)/src/libu64/loadfragment2_n64.o" + include "$(BUILD_DIR)/src/libu64/pad.o" + include "$(BUILD_DIR)/src/libu64/system_heap.o" + include "$(BUILD_DIR)/src/libu64/padsetup.o" +#elif PLATFORM_GC + include "$(BUILD_DIR)/src/libu64/logseverity_gc.o" + include "$(BUILD_DIR)/src/libu64/gfxprint.o" + include "$(BUILD_DIR)/src/libu64/rcp_utils.o" + include "$(BUILD_DIR)/src/libu64/loadfragment2_gc.o" +#if DEBUG_FEATURES + include "$(BUILD_DIR)/src/libu64/mtxuty-cvt.o" +#endif + include "$(BUILD_DIR)/src/libu64/relocation_gc.o" + include "$(BUILD_DIR)/src/libu64/load_gc.o" + include "$(BUILD_DIR)/src/libu64/system_heap.o" + include "$(BUILD_DIR)/src/libu64/pad.o" + include "$(BUILD_DIR)/src/libu64/padsetup.o" +#elif PLATFORM_IQUE + include "$(BUILD_DIR)/src/libu64/system_heap.o" + include "$(BUILD_DIR)/src/libu64/debug.o" + include "$(BUILD_DIR)/src/libu64/gfxprint.o" + include "$(BUILD_DIR)/src/libu64/logseverity_gc.o" + include "$(BUILD_DIR)/src/libu64/relocation_gc.o" + include "$(BUILD_DIR)/src/libu64/loadfragment2_gc.o" + include "$(BUILD_DIR)/src/libu64/load_gc.o" + include "$(BUILD_DIR)/src/libu64/padsetup.o" + include "$(BUILD_DIR)/src/libu64/pad.o" + include "$(BUILD_DIR)/src/libu64/rcp_utils.o" +#endif + + // libc64 +#if PLATFORM_N64 + include "$(BUILD_DIR)/src/libc64/math64.o" + include "$(BUILD_DIR)/src/libc64/fp.o" + include "$(BUILD_DIR)/src/libc64/malloc.o" + include "$(BUILD_DIR)/src/libc64/qrand.o" + include "$(BUILD_DIR)/src/libc64/__osMalloc_n64.o" + include "$(BUILD_DIR)/src/libc64/sprintf.o" + include "$(BUILD_DIR)/src/libc64/aprintf.o" +#elif PLATFORM_GC + include "$(BUILD_DIR)/src/libc64/math64.o" + include "$(BUILD_DIR)/src/libc64/fp.o" + include "$(BUILD_DIR)/src/libc64/malloc.o" + include "$(BUILD_DIR)/src/libc64/qrand.o" + include "$(BUILD_DIR)/src/libc64/__osMalloc_gc.o" + include "$(BUILD_DIR)/src/libc64/sprintf.o" + include "$(BUILD_DIR)/src/libc64/aprintf.o" + include "$(BUILD_DIR)/src/libc64/sleep.o" +#elif PLATFORM_IQUE + include "$(BUILD_DIR)/src/libc64/__osMalloc_gc.o" + include "$(BUILD_DIR)/src/libc64/aprintf.o" + include "$(BUILD_DIR)/src/libc64/malloc.o" + include "$(BUILD_DIR)/src/libc64/math64.o" + include "$(BUILD_DIR)/src/libc64/fp.o" + include "$(BUILD_DIR)/src/libc64/qrand.o" + include "$(BUILD_DIR)/src/libc64/sleep.o" + include "$(BUILD_DIR)/src/libc64/sprintf.o" +#endif + + // jpeg + include "$(BUILD_DIR)/src/code/jpegutils.o" + include "$(BUILD_DIR)/src/code/jpegdecoder.o" + + // libultra +#if PLATFORM_N64 +#include "code_libultra_n64.inc" +#elif PLATFORM_GC +#include "code_libultra_gc.inc" +#elif PLATFORM_IQUE +#include "code_libultra_ique.inc" +#endif + + // libc +#if PLATFORM_N64 + include "$(BUILD_DIR)/src/libc/sqrt.o" + include "$(BUILD_DIR)/src/libc/fmodf.o" + include "$(BUILD_DIR)/src/libc/memset.o" + include "$(BUILD_DIR)/src/libc/memmove.o" +#elif PLATFORM_GC + include "$(BUILD_DIR)/src/libc/sqrt.o" + include "$(BUILD_DIR)/src/libc/absf.o" + include "$(BUILD_DIR)/src/libc/fmodf.o" + include "$(BUILD_DIR)/src/libc/memset.o" + include "$(BUILD_DIR)/src/libc/memmove.o" +#elif PLATFORM_IQUE + include "$(BUILD_DIR)/src/libc/fmodf.o" + include "$(BUILD_DIR)/src/libc/memmove.o" + include "$(BUILD_DIR)/src/libc/absf.o" + include "$(BUILD_DIR)/src/libc/sqrt.o" +#endif + +#if PLATFORM_IQUE + include "*$(BUILD_DIR)/code_bss_2.o" + include "*$(BUILD_DIR)/code_bss_3.o" +#endif + + // For some reason, the data sections of z_message and z_game_over are + // placed near the rodata sections of other files, so we first build this + // combined object before the final link. + include "$(BUILD_DIR)/src/code/z_message_z_game_over.o" + include "$(BUILD_DIR)/src/code/z_construct.o" + + // Audio tables + include "$(BUILD_DIR)/src/audio/tables/soundfont_table.o" + include "$(BUILD_DIR)/assets/audio/sequence_font_table.o" + include "$(BUILD_DIR)/src/audio/tables/sequence_table.o" + include "$(BUILD_DIR)/src/audio/tables/samplebank_table.o" + + // RSP microcode + include "$(BUILD_DIR)/data/rsp.text.o" + include "$(BUILD_DIR)/data/rsp.rodata.o" + + // Extra files for non-matching debug builds +#if DEBUG_FEATURES + include "$(BUILD_DIR)/src/libu64/mtxuty-cvt.o" + include "$(BUILD_DIR)/src/libultra/io/contpfs.o" + include "$(BUILD_DIR)/src/libultra/io/contramread.o" + include "$(BUILD_DIR)/src/libultra/io/contramwrite.o" + include "$(BUILD_DIR)/src/libultra/io/crc.o" + include "$(BUILD_DIR)/src/libultra/io/pfsallocatefile.o" + include "$(BUILD_DIR)/src/libultra/io/pfschecker.o" + include "$(BUILD_DIR)/src/libultra/io/pfsdeletefile.o" + include "$(BUILD_DIR)/src/libultra/io/pfsfilestate.o" + include "$(BUILD_DIR)/src/libultra/io/pfsfindfile.o" + include "$(BUILD_DIR)/src/libultra/io/pfsfreeblocks.o" + include "$(BUILD_DIR)/src/libultra/io/pfsgetstatus.o" + include "$(BUILD_DIR)/src/libultra/io/pfsinitpak.o" + include "$(BUILD_DIR)/src/libultra/io/pfsisplug.o" + include "$(BUILD_DIR)/src/libultra/io/pfsreadwritefile.o" + include "$(BUILD_DIR)/src/libultra/io/pfsselectbank.o" +#if PLATFORM_IQUE + include "$(BUILD_DIR)/src/libultra/mgu/mtxl2f.o" +#endif +#endif +endseg + +beginseg + name "buffers" + flags NOLOAD + align 0x40 + include "$(BUILD_DIR)/src/buffers/zbuffer.o" + include "$(BUILD_DIR)/src/buffers/gfxbuffers.o" + include "$(BUILD_DIR)/src/buffers/audio_heap.o" +endseg + +#if PLATFORM_N64 +beginseg + name "n64dd" + compress + align 0x40 + include "$(BUILD_DIR)/src/n64dd/z_n64dd.o" + include "$(BUILD_DIR)/src/n64dd/n64dd_data_buffer.o" + include "$(BUILD_DIR)/src/n64dd/n64dd_801C8000.o" + include "$(BUILD_DIR)/src/n64dd/n64dd_801C8940.o" + include "$(BUILD_DIR)/src/n64dd/n64dd_801C9440.o" + include "$(BUILD_DIR)/src/n64dd/n64dd_801C9B70.o" + include "$(BUILD_DIR)/src/n64dd/n64dd_error_headers.o" + include "$(BUILD_DIR)/src/n64dd/n64dd_error_bodies.o" + include "$(BUILD_DIR)/src/n64dd/n64dd_error_textures.o" + include "$(BUILD_DIR)/src/n64dd/n64dd_801CA0B0.o" + include "$(BUILD_DIR)/src/libleo/api/readwrite.o" + include "$(BUILD_DIR)/src/libleo/leo/leofunc.o" + include "$(BUILD_DIR)/src/libleo/leo/leoram.o" + include "$(BUILD_DIR)/src/libleo/leo/leoint.o" + include "$(BUILD_DIR)/src/libleo/leo/leocmdex.o" + include "$(BUILD_DIR)/src/libleo/api/getaadr2.o" + include "$(BUILD_DIR)/src/libleo/leo/leoread.o" + include "$(BUILD_DIR)/src/libleo/api/lbatobyte.o" + include "$(BUILD_DIR)/src/libleo/leo/leoinquiry.o" + include "$(BUILD_DIR)/src/libleo/leo/leodiskinit.o" + include "$(BUILD_DIR)/src/libleo/api/seek.o" + include "$(BUILD_DIR)/src/libleo/leo/leord_diskid.o" + include "$(BUILD_DIR)/src/libleo/leo/leomecha.o" + include "$(BUILD_DIR)/src/libleo/api/spdlmotor.o" + include "$(BUILD_DIR)/src/libleo/leo/leo_tbl.o" + include "$(BUILD_DIR)/src/libleo/leo/leotempbuffer.o" + include "$(BUILD_DIR)/src/libleo/leo/leoc2_syndrome.o" + include "$(BUILD_DIR)/src/libleo/leo/leoc2ecc.o" + include "$(BUILD_DIR)/src/libleo/leo/leomseq_tbl.o" + include "$(BUILD_DIR)/src/libleo/leo/leomotor.o" + include "$(BUILD_DIR)/src/libleo/api/driveexist.o" + include "$(BUILD_DIR)/src/libleo/leo/leomode_sel.o" + include "$(BUILD_DIR)/src/libleo/leo/leord_capa.o" + include "$(BUILD_DIR)/src/libleo/leo/leoutil.o" + include "$(BUILD_DIR)/src/libleo/leo/leorezero.o" + include "$(BUILD_DIR)/src/libleo/api/clearqueue.o" + include "$(BUILD_DIR)/src/libleo/api/bytetolba.o" + include "$(BUILD_DIR)/src/libleo/leo/leoreset.o" + include "$(BUILD_DIR)/src/libleo/leo/leotranslat.o" + include "$(BUILD_DIR)/src/libleo/leo/leotimer.o" + include "$(BUILD_DIR)/src/libleo/api/getkadr.o" + include "$(BUILD_DIR)/src/libleo/api/getaadr.o" + include "$(BUILD_DIR)/src/libleo/leo/leoglobals.o" + include "$(BUILD_DIR)/src/libleo/leo/leowrite.o" + include "$(BUILD_DIR)/src/libleo/api/cjcreateleomanager.o" + include "$(BUILD_DIR)/src/libleo/leo/leointerrupt.o" + include "$(BUILD_DIR)/src/libleo/api/cacreateleomanager.o" + include "$(BUILD_DIR)/src/libleo/api/testunitready.o" + include "$(BUILD_DIR)/src/libleo/leo/leotestunit.o" + include "$(BUILD_DIR)/src/libleo/leo/leoseek.o" +endseg +#endif + +beginseg + name "ovl_title" + compress + address 0x80800000 + include "$(BUILD_DIR)/src/overlays/gamestates/ovl_title/z_title.o" + include "$(BUILD_DIR)/src/overlays/gamestates/ovl_title/ovl_title_reloc.o" +endseg + +beginseg + name "ovl_select" + compress + include "$(BUILD_DIR)/src/overlays/gamestates/ovl_select/z_select.o" + include "$(BUILD_DIR)/src/overlays/gamestates/ovl_select/ovl_select_reloc.o" +endseg + +beginseg + name "ovl_opening" + compress + include "$(BUILD_DIR)/src/overlays/gamestates/ovl_opening/z_opening.o" + include "$(BUILD_DIR)/src/overlays/gamestates/ovl_opening/ovl_opening_reloc.o" +endseg + +beginseg + name "ovl_file_choose" + compress + include "$(BUILD_DIR)/src/overlays/gamestates/ovl_file_choose/z_file_nameset_data.o" + include "$(BUILD_DIR)/src/overlays/gamestates/ovl_file_choose/z_file_copy_erase.o" + include "$(BUILD_DIR)/src/overlays/gamestates/ovl_file_choose/z_file_nameset.o" + include "$(BUILD_DIR)/src/overlays/gamestates/ovl_file_choose/z_file_choose.o" + include "$(BUILD_DIR)/src/overlays/gamestates/ovl_file_choose/ovl_file_choose_reloc.o" +endseg + +beginseg + name "ovl_kaleido_scope" + compress + include "$(BUILD_DIR)/src/overlays/misc/ovl_kaleido_scope/z_kaleido_collect.o" + include "$(BUILD_DIR)/src/overlays/misc/ovl_kaleido_scope/z_kaleido_debug.o" + include "$(BUILD_DIR)/src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.o" + include "$(BUILD_DIR)/src/overlays/misc/ovl_kaleido_scope/z_kaleido_item.o" + include "$(BUILD_DIR)/src/overlays/misc/ovl_kaleido_scope/z_kaleido_map.o" + include "$(BUILD_DIR)/src/overlays/misc/ovl_kaleido_scope/z_kaleido_prompt.o" + include "$(BUILD_DIR)/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.o" + include "$(BUILD_DIR)/src/overlays/misc/ovl_kaleido_scope/z_lmap_mark.o" +#if !OOT_MQ + include "$(BUILD_DIR)/src/overlays/misc/ovl_kaleido_scope/z_lmap_mark_data.o" +#else + include "$(BUILD_DIR)/src/overlays/misc/ovl_kaleido_scope/z_lmap_mark_data_mq.o" +#endif + include "$(BUILD_DIR)/src/overlays/misc/ovl_kaleido_scope/ovl_kaleido_scope_reloc.o" +endseg + +beginseg + name "ovl_player_actor" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_player_actor/z_player.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_player_actor/ovl_player_actor_reloc.o" +endseg + +beginseg + name "ovl_map_mark_data" + compress +#if !OOT_MQ + include "$(BUILD_DIR)/src/overlays/misc/ovl_map_mark_data/z_map_mark_data.o" +#else + include "$(BUILD_DIR)/src/overlays/misc/ovl_map_mark_data/z_map_mark_data_mq.o" +#endif + include "$(BUILD_DIR)/src/overlays/misc/ovl_map_mark_data/ovl_map_mark_data_reloc.o" +endseg + +beginseg + name "ovl_En_Test" + compress + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Test/z_en_test.o" + include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Test/ovl_En_Test_reloc.o" +endseg + +// Overlays for most actors and effects are reordered between versions. On N64 and iQue, +// the overlays are in some arbitrary order, while on GameCube they are sorted alphabetically. +#if !PLATFORM_GC +#include "overlays_n64_ique.inc" +#else +#include "overlays_gc.inc" +#endif + +beginseg + name "gameplay_keep" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/gameplay_keep/gameplay_keep.o" + number 4 +endseg + +beginseg + name "gameplay_field_keep" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/gameplay_field_keep/gameplay_field_keep.o" + number 5 +endseg + +beginseg + name "gameplay_dangeon_keep" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/gameplay_dangeon_keep/gameplay_dangeon_keep.o" + number 5 +endseg + +beginseg + name "gameplay_object_exchange_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/baserom/gameplay_object_exchange_static.o" +endseg + +beginseg + name "object_link_boy" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_link_boy/object_link_boy.o" + number 6 +endseg + +beginseg + name "object_link_child" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_link_child/object_link_child.o" + number 6 +endseg + +beginseg + name "object_box" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_box/object_box.o" + number 6 +endseg + +beginseg + name "object_human" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_human/object_human.o" + number 6 +endseg + +beginseg + name "object_okuta" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_okuta/object_okuta.o" + number 6 +endseg + +beginseg + name "object_poh" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_poh/object_poh.o" + number 6 +endseg + +beginseg + name "object_wallmaster" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_wallmaster/object_wallmaster.o" + number 6 +endseg + +beginseg + name "object_dy_obj" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_dy_obj/object_dy_obj.o" + number 6 +endseg + +beginseg + name "object_firefly" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_firefly/object_firefly.o" + number 6 +endseg + +beginseg + name "object_dodongo" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_dodongo/object_dodongo.o" + number 6 +endseg + +beginseg + name "object_fire" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_fire/object_fire.o" + number 6 +endseg + +beginseg + name "object_niw" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_niw/object_niw.o" + number 6 +endseg + +beginseg + name "object_tite" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_tite/object_tite.o" + number 6 +endseg + +beginseg + name "object_reeba" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_reeba/object_reeba.o" + number 6 +endseg + +beginseg + name "object_peehat" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_peehat/object_peehat.o" + number 6 +endseg + +beginseg + name "object_kingdodongo" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_kingdodongo/object_kingdodongo.o" + number 6 +endseg + +beginseg + name "object_horse" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_horse/object_horse.o" + number 6 +endseg + +beginseg + name "object_zf" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_zf/object_zf.o" + number 6 +endseg + +beginseg + name "object_goma" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_goma/object_goma.o" + number 6 +endseg + +beginseg + name "object_zl1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_zl1/object_zl1.o" + number 6 +endseg + +beginseg + name "object_gol" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gol/object_gol.o" + number 6 +endseg + +beginseg + name "object_bubble" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_bubble/object_bubble.o" + number 6 +endseg + +beginseg + name "object_dodojr" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_dodojr/object_dodojr.o" + number 6 +endseg + +beginseg + name "object_torch2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_torch2/object_torch2.o" + number 6 +endseg + +beginseg + name "object_bl" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_bl/object_bl.o" + number 6 +endseg + +beginseg + name "object_tp" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_tp/object_tp.o" + number 6 +endseg + +beginseg + name "object_oA1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oA1/object_oA1.o" + number 6 +endseg + +beginseg + name "object_st" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_st/object_st.o" + number 6 +endseg + +beginseg + name "object_bw" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_bw/object_bw.o" + number 6 +endseg + +beginseg + name "object_ei" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ei/object_ei.o" + number 6 +endseg + +beginseg + name "object_horse_normal" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_horse_normal/object_horse_normal.o" + number 6 +endseg + +beginseg + name "object_oB1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oB1/object_oB1.o" + number 6 +endseg + +beginseg + name "object_o_anime" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_o_anime/object_o_anime.o" + number 6 +endseg + +beginseg + name "object_spot04_objects" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_spot04_objects/object_spot04_objects.o" + number 6 +endseg + +beginseg + name "object_ddan_objects" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ddan_objects/object_ddan_objects.o" + number 6 +endseg + +beginseg + name "object_hidan_objects" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_hidan_objects/object_hidan_objects.o" + number 6 +endseg + +beginseg + name "object_horse_ganon" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_horse_ganon/object_horse_ganon.o" + number 6 +endseg + +beginseg + name "object_oA2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oA2/object_oA2.o" + number 6 +endseg + +beginseg + name "object_spot00_objects" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_spot00_objects/object_spot00_objects.o" + number 6 +endseg + +beginseg + name "object_mb" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_mb/object_mb.o" + number 6 +endseg + +beginseg + name "object_bombf" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_bombf/object_bombf.o" + number 6 +endseg + +beginseg + name "object_sk2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_sk2/object_sk2.o" + number 6 +endseg + +beginseg + name "object_oE1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oE1/object_oE1.o" + number 6 +endseg + +beginseg + name "object_oE_anime" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oE_anime/object_oE_anime.o" + number 6 +endseg + +beginseg + name "object_oE2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oE2/object_oE2.o" + number 6 +endseg + +beginseg + name "object_ydan_objects" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ydan_objects/object_ydan_objects.o" + number 6 +endseg + +beginseg + name "object_gnd" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gnd/object_gnd.o" + number 6 +endseg + +beginseg + name "object_am" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_am/object_am.o" + number 6 +endseg + +beginseg + name "object_dekubaba" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_dekubaba/object_dekubaba.o" + number 6 +endseg + +beginseg + name "object_oA3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oA3/object_oA3.o" + number 6 +endseg + +beginseg + name "object_oA4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oA4/object_oA4.o" + number 6 +endseg + +beginseg + name "object_oA5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oA5/object_oA5.o" + number 6 +endseg + +beginseg + name "object_oA6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oA6/object_oA6.o" + number 6 +endseg + +beginseg + name "object_oA7" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oA7/object_oA7.o" + number 6 +endseg + +beginseg + name "object_jj" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_jj/object_jj.o" + number 6 +endseg + +beginseg + name "object_oA8" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oA8/object_oA8.o" + number 6 +endseg + +beginseg + name "object_oA9" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oA9/object_oA9.o" + number 6 +endseg + +beginseg + name "object_oB2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oB2/object_oB2.o" + number 6 +endseg + +beginseg + name "object_oB3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oB3/object_oB3.o" + number 6 +endseg + +beginseg + name "object_oB4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oB4/object_oB4.o" + number 6 +endseg + +beginseg + name "object_horse_zelda" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_horse_zelda/object_horse_zelda.o" + number 6 +endseg + +beginseg + name "object_opening_demo1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_opening_demo1/object_opening_demo1.o" + number 6 +endseg + +beginseg + name "object_warp1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_warp1/object_warp1.o" + number 6 +endseg + +beginseg + name "object_b_heart" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_b_heart/object_b_heart.o" + number 6 +endseg + +beginseg + name "object_dekunuts" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_dekunuts/object_dekunuts.o" + number 6 +endseg + +beginseg + name "object_oE3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oE3/object_oE3.o" + number 6 +endseg + +beginseg + name "object_oE4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oE4/object_oE4.o" + number 6 +endseg + +beginseg + name "object_menkuri_objects" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_menkuri_objects/object_menkuri_objects.o" + number 6 +endseg + +beginseg + name "object_oE5" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oE5/object_oE5.o" + number 6 +endseg + +beginseg + name "object_oE6" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oE6/object_oE6.o" + number 6 +endseg + +beginseg + name "object_oE7" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oE7/object_oE7.o" + number 6 +endseg + +beginseg + name "object_oE8" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oE8/object_oE8.o" + number 6 +endseg + +beginseg + name "object_oE9" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oE9/object_oE9.o" + number 6 +endseg + +beginseg + name "object_oE10" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oE10/object_oE10.o" + number 6 +endseg + +beginseg + name "object_oE11" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oE11/object_oE11.o" + number 6 +endseg + +beginseg + name "object_oE12" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oE12/object_oE12.o" + number 6 +endseg + +beginseg + name "object_vali" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_vali/object_vali.o" + number 6 +endseg + +beginseg + name "object_oA10" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oA10/object_oA10.o" + number 6 +endseg + +beginseg + name "object_oA11" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oA11/object_oA11.o" + number 6 +endseg + +beginseg + name "object_mizu_objects" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_mizu_objects/object_mizu_objects.o" + number 6 +endseg + +beginseg + name "object_fhg" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_fhg/object_fhg.o" + number 6 +endseg + +beginseg + name "object_ossan" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ossan/object_ossan.o" + number 6 +endseg + +beginseg + name "object_mori_hineri1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_mori_hineri1/object_mori_hineri1.o" + number 6 +endseg + +beginseg + name "object_Bb" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_Bb/object_Bb.o" + number 6 +endseg + +beginseg + name "object_toki_objects" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_toki_objects/object_toki_objects.o" + number 6 +endseg + +beginseg + name "object_yukabyun" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_yukabyun/object_yukabyun.o" + number 6 +endseg + +beginseg + name "object_zl2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_zl2/object_zl2.o" + number 6 +endseg + +beginseg + name "object_mjin" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_mjin/object_mjin.o" + number 6 +endseg + +beginseg + name "object_mjin_flash" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_mjin_flash/object_mjin_flash.o" + number 6 +endseg + +beginseg + name "object_mjin_dark" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_mjin_dark/object_mjin_dark.o" + number 6 +endseg + +beginseg + name "object_mjin_flame" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_mjin_flame/object_mjin_flame.o" + number 6 +endseg + +beginseg + name "object_mjin_ice" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_mjin_ice/object_mjin_ice.o" + number 6 +endseg + +beginseg + name "object_mjin_soul" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_mjin_soul/object_mjin_soul.o" + number 6 +endseg + +beginseg + name "object_mjin_wind" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_mjin_wind/object_mjin_wind.o" + number 6 +endseg + +beginseg + name "object_mjin_oka" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_mjin_oka/object_mjin_oka.o" + number 6 +endseg + +beginseg + name "object_haka_objects" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_haka_objects/object_haka_objects.o" + number 6 +endseg + +beginseg + name "object_spot06_objects" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_spot06_objects/object_spot06_objects.o" + number 6 +endseg + +beginseg + name "object_ice_objects" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ice_objects/object_ice_objects.o" + number 6 +endseg + +beginseg + name "object_relay_objects" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_relay_objects/object_relay_objects.o" + number 6 +endseg + +beginseg + name "object_mori_hineri1a" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_mori_hineri1a/object_mori_hineri1a.o" + number 6 +endseg + +beginseg + name "object_mori_hineri2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_mori_hineri2/object_mori_hineri2.o" + number 6 +endseg + +beginseg + name "object_mori_hineri2a" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_mori_hineri2a/object_mori_hineri2a.o" + number 6 +endseg + +beginseg + name "object_mori_objects" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_mori_objects/object_mori_objects.o" + number 6 +endseg + +beginseg + name "object_mori_tex" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_mori_tex/object_mori_tex.o" + number 8 +endseg + +beginseg + name "object_spot08_obj" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_spot08_obj/object_spot08_obj.o" + number 6 +endseg + +beginseg + name "object_warp2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_warp2/object_warp2.o" + number 6 +endseg + +beginseg + name "object_hata" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_hata/object_hata.o" + number 6 +endseg + +beginseg + name "object_bird" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_bird/object_bird.o" + number 6 +endseg + +beginseg + name "object_wood02" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_wood02/object_wood02.o" + number 6 +endseg + +beginseg + name "object_lightbox" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_lightbox/object_lightbox.o" + number 6 +endseg + +beginseg + name "object_pu_box" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_pu_box/object_pu_box.o" + number 6 +endseg + +beginseg + name "object_trap" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_trap/object_trap.o" + number 6 +endseg + +beginseg + name "object_vase" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_vase/object_vase.o" + number 6 +endseg + +beginseg + name "object_im" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_im/object_im.o" + number 6 +endseg + +beginseg + name "object_ta" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ta/object_ta.o" + number 6 +endseg + +beginseg + name "object_tk" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_tk/object_tk.o" + number 6 +endseg + +beginseg + name "object_xc" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_xc/object_xc.o" + number 6 +endseg + +beginseg + name "object_vm" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_vm/object_vm.o" + number 6 +endseg + +beginseg + name "object_bv" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_bv/object_bv.o" + number 6 +endseg + +beginseg + name "object_hakach_objects" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_hakach_objects/object_hakach_objects.o" + number 6 +endseg + +beginseg + name "object_efc_crystal_light" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_efc_crystal_light/object_efc_crystal_light.o" + number 6 +endseg + +beginseg + name "object_efc_fire_ball" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_efc_fire_ball/object_efc_fire_ball.o" + number 6 +endseg + +beginseg + name "object_efc_flash" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_efc_flash/object_efc_flash.o" + number 6 +endseg + +beginseg + name "object_efc_lgt_shower" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_efc_lgt_shower/object_efc_lgt_shower.o" + number 6 +endseg + +beginseg + name "object_efc_star_field" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_efc_star_field/object_efc_star_field.o" + number 6 +endseg + +beginseg + name "object_god_lgt" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_god_lgt/object_god_lgt.o" + number 6 +endseg + +beginseg + name "object_light_ring" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_light_ring/object_light_ring.o" + number 6 +endseg + +beginseg + name "object_triforce_spot" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_triforce_spot/object_triforce_spot.o" + number 6 +endseg + +beginseg + name "object_medal" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_medal/object_medal.o" + number 6 +endseg + +beginseg + name "object_bdan_objects" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_bdan_objects/object_bdan_objects.o" + number 6 +endseg + +beginseg + name "object_sd" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_sd/object_sd.o" + number 6 +endseg + +beginseg + name "object_rd" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_rd/object_rd.o" + number 6 +endseg + +beginseg + name "object_po_sisters" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_po_sisters/object_po_sisters.o" + number 6 +endseg + +beginseg + name "object_heavy_object" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_heavy_object/object_heavy_object.o" + number 6 +endseg + +beginseg + name "object_gndd" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gndd/object_gndd.o" + number 6 +endseg + +beginseg + name "object_fd" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_fd/object_fd.o" + number 6 +endseg + +beginseg + name "object_du" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_du/object_du.o" + number 6 +endseg + +beginseg + name "object_fw" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_fw/object_fw.o" + number 6 +endseg + +beginseg + name "object_horse_link_child" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_horse_link_child/object_horse_link_child.o" + number 6 +endseg + +beginseg + name "object_spot02_objects" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_spot02_objects/object_spot02_objects.o" + number 6 +endseg + +beginseg + name "object_haka" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_haka/object_haka.o" + number 6 +endseg + +beginseg + name "object_ru1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ru1/object_ru1.o" + number 6 +endseg + +beginseg + name "object_syokudai" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_syokudai/object_syokudai.o" + number 6 +endseg + +beginseg + name "object_fd2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_fd2/object_fd2.o" + number 6 +endseg + +beginseg + name "object_dh" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_dh/object_dh.o" + number 6 +endseg + +beginseg + name "object_rl" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_rl/object_rl.o" + number 6 +endseg + +beginseg + name "object_efc_tw" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_efc_tw/object_efc_tw.o" + number 6 +endseg + +beginseg + name "object_demo_tre_lgt" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_demo_tre_lgt/object_demo_tre_lgt.o" + number 6 +endseg + +beginseg + name "object_gi_key" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_key/object_gi_key.o" + number 6 +endseg + +beginseg + name "object_mir_ray" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_mir_ray/object_mir_ray.o" + number 6 +endseg + +beginseg + name "object_brob" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_brob/object_brob.o" + number 6 +endseg + +beginseg + name "object_gi_jewel" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_jewel/object_gi_jewel.o" + number 6 +endseg + +beginseg + name "object_spot09_obj" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_spot09_obj/object_spot09_obj.o" + number 6 +endseg + +beginseg + name "object_spot18_obj" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_spot18_obj/object_spot18_obj.o" + number 6 +endseg + +beginseg + name "object_bdoor" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_bdoor/object_bdoor.o" + number 6 +endseg + +beginseg + name "object_spot17_obj" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_spot17_obj/object_spot17_obj.o" + number 6 +endseg + +beginseg + name "object_shop_dungen" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_shop_dungen/object_shop_dungen.o" + number 6 +endseg + +beginseg + name "object_nb" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_nb/object_nb.o" + number 6 +endseg + +beginseg + name "object_mo" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_mo/object_mo.o" + number 6 +endseg + +beginseg + name "object_sb" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_sb/object_sb.o" + number 6 +endseg + +beginseg + name "object_gi_melody" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_melody/object_gi_melody.o" + number 6 +endseg + +beginseg + name "object_gi_heart" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_heart/object_gi_heart.o" + number 6 +endseg + +beginseg + name "object_gi_compass" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_compass/object_gi_compass.o" + number 6 +endseg + +beginseg + name "object_gi_bosskey" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_bosskey/object_gi_bosskey.o" + number 6 +endseg + +beginseg + name "object_gi_medal" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_medal/object_gi_medal.o" + number 6 +endseg + +beginseg + name "object_gi_nuts" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_nuts/object_gi_nuts.o" + number 6 +endseg + +beginseg + name "object_sa" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_sa/object_sa.o" + number 6 +endseg + +beginseg + name "object_gi_hearts" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_hearts/object_gi_hearts.o" + number 6 +endseg + +beginseg + name "object_gi_arrowcase" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_arrowcase/object_gi_arrowcase.o" + number 6 +endseg + +beginseg + name "object_gi_bombpouch" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_bombpouch/object_gi_bombpouch.o" + number 6 +endseg + +beginseg + name "object_in" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_in/object_in.o" + number 6 +endseg + +beginseg + name "object_tr" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_tr/object_tr.o" + number 6 +endseg + +beginseg + name "object_spot16_obj" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_spot16_obj/object_spot16_obj.o" + number 6 +endseg + +beginseg + name "object_oE1s" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oE1s/object_oE1s.o" + number 6 +endseg + +beginseg + name "object_oE4s" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oE4s/object_oE4s.o" + number 6 +endseg + +beginseg + name "object_os_anime" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_os_anime/object_os_anime.o" + number 6 +endseg + +beginseg + name "object_gi_bottle" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_bottle/object_gi_bottle.o" + number 6 +endseg + +beginseg + name "object_gi_stick" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_stick/object_gi_stick.o" + number 6 +endseg + +beginseg + name "object_gi_map" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_map/object_gi_map.o" + number 6 +endseg + +beginseg + name "object_oF1d_map" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oF1d_map/object_oF1d_map.o" + number 6 +endseg + +beginseg + name "object_ru2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ru2/object_ru2.o" + number 6 +endseg + +beginseg + name "object_gi_shield_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_shield_1/object_gi_shield_1.o" + number 6 +endseg + +beginseg + name "object_dekujr" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_dekujr/object_dekujr.o" + number 6 +endseg + +beginseg + name "object_gi_magicpot" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_magicpot/object_gi_magicpot.o" + number 6 +endseg + +beginseg + name "object_gi_bomb_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_bomb_1/object_gi_bomb_1.o" + number 6 +endseg + +beginseg + name "object_oF1s" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_oF1s/object_oF1s.o" + number 6 +endseg + +beginseg + name "object_ma2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ma2/object_ma2.o" + number 6 +endseg + +beginseg + name "object_gi_purse" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_purse/object_gi_purse.o" + number 6 +endseg + +beginseg + name "object_hni" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_hni/object_hni.o" + number 6 +endseg + +beginseg + name "object_tw" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_tw/object_tw.o" + number 6 +endseg + +beginseg + name "object_rr" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_rr/object_rr.o" + number 6 +endseg + +beginseg + name "object_bxa" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_bxa/object_bxa.o" + number 6 +endseg + +beginseg + name "object_anubice" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_anubice/object_anubice.o" + number 6 +endseg + +beginseg + name "object_gi_gerudo" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_gerudo/object_gi_gerudo.o" + number 6 +endseg + +beginseg + name "object_gi_arrow" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_arrow/object_gi_arrow.o" + number 6 +endseg + +beginseg + name "object_gi_bomb_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_bomb_2/object_gi_bomb_2.o" + number 6 +endseg + +beginseg + name "object_gi_egg" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_egg/object_gi_egg.o" + number 6 +endseg + +beginseg + name "object_gi_scale" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_scale/object_gi_scale.o" + number 6 +endseg + +beginseg + name "object_gi_shield_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_shield_2/object_gi_shield_2.o" + number 6 +endseg + +beginseg + name "object_gi_hookshot" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_hookshot/object_gi_hookshot.o" + number 6 +endseg + +beginseg + name "object_gi_ocarina" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_ocarina/object_gi_ocarina.o" + number 6 +endseg + +beginseg + name "object_gi_milk" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_milk/object_gi_milk.o" + number 6 +endseg + +beginseg + name "object_ma1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ma1/object_ma1.o" + number 6 +endseg + +beginseg + name "object_ganon" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ganon/object_ganon.o" + number 6 +endseg + +beginseg + name "object_sst" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_sst/object_sst.o" + number 6 +endseg + +beginseg + name "object_ny" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ny/object_ny.o" + number 6 +endseg + +beginseg + name "object_fr" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_fr/object_fr.o" + number 6 +endseg + +beginseg + name "object_gi_pachinko" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_pachinko/object_gi_pachinko.o" + number 6 +endseg + +beginseg + name "object_gi_boomerang" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_boomerang/object_gi_boomerang.o" + number 6 +endseg + +beginseg + name "object_gi_bow" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_bow/object_gi_bow.o" + number 6 +endseg + +beginseg + name "object_gi_glasses" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_glasses/object_gi_glasses.o" + number 6 +endseg + +beginseg + name "object_gi_liquid" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_liquid/object_gi_liquid.o" + number 6 +endseg + +beginseg + name "object_ani" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ani/object_ani.o" + number 6 +endseg + +beginseg + name "object_demo_6k" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_demo_6k/object_demo_6k.o" + number 6 +endseg + +beginseg + name "object_gi_shield_3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_shield_3/object_gi_shield_3.o" + number 6 +endseg + +beginseg + name "object_gi_letter" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_letter/object_gi_letter.o" + number 6 +endseg + +beginseg + name "object_spot15_obj" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_spot15_obj/object_spot15_obj.o" + number 6 +endseg + +beginseg + name "object_jya_obj" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_jya_obj/object_jya_obj.o" + number 6 +endseg + +beginseg + name "object_gi_clothes" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_clothes/object_gi_clothes.o" + number 6 +endseg + +beginseg + name "object_gi_bean" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_bean/object_gi_bean.o" + number 6 +endseg + +beginseg + name "object_gi_fish" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_fish/object_gi_fish.o" + number 6 +endseg + +beginseg + name "object_gi_saw" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_saw/object_gi_saw.o" + number 6 +endseg + +beginseg + name "object_gi_hammer" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_hammer/object_gi_hammer.o" + number 6 +endseg + +beginseg + name "object_gi_grass" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_grass/object_gi_grass.o" + number 6 +endseg + +beginseg + name "object_gi_longsword" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_longsword/object_gi_longsword.o" + number 6 +endseg + +beginseg + name "object_spot01_objects" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_spot01_objects/object_spot01_objects.o" + number 6 +endseg + +beginseg + name "object_md" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_md/object_md.o" + number 6 +endseg + +beginseg + name "object_km1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_km1/object_km1.o" + number 6 +endseg + +beginseg + name "object_kw1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_kw1/object_kw1.o" + number 6 +endseg + +beginseg + name "object_zo" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_zo/object_zo.o" + number 6 +endseg + +beginseg + name "object_kz" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_kz/object_kz.o" + number 6 +endseg + +beginseg + name "object_umajump" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_umajump/object_umajump.o" + number 6 +endseg + +beginseg + name "object_masterkokiri" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_masterkokiri/object_masterkokiri.o" + number 6 +endseg + +beginseg + name "object_masterkokirihead" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_masterkokirihead/object_masterkokirihead.o" + number 6 +endseg + +beginseg + name "object_mastergolon" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_mastergolon/object_mastergolon.o" + number 6 +endseg + +beginseg + name "object_masterzoora" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_masterzoora/object_masterzoora.o" + number 6 +endseg + +beginseg + name "object_aob" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_aob/object_aob.o" + number 6 +endseg + +beginseg + name "object_ik" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ik/object_ik.o" + number 6 +endseg + +beginseg + name "object_ahg" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ahg/object_ahg.o" + number 6 +endseg + +beginseg + name "object_cne" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_cne/object_cne.o" + number 6 +endseg + +beginseg + name "object_gi_niwatori" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_niwatori/object_gi_niwatori.o" + number 6 +endseg + +beginseg + name "object_skj" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_skj/object_skj.o" + number 6 +endseg + +beginseg + name "object_gi_bottle_letter" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_bottle_letter/object_gi_bottle_letter.o" + number 6 +endseg + +beginseg + name "object_bji" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_bji/object_bji.o" + number 6 +endseg + +beginseg + name "object_bba" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_bba/object_bba.o" + number 6 +endseg + +beginseg + name "object_gi_ocarina_0" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_ocarina_0/object_gi_ocarina_0.o" + number 6 +endseg + +beginseg + name "object_ds" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ds/object_ds.o" + number 6 +endseg + +beginseg + name "object_ane" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ane/object_ane.o" + number 6 +endseg + +beginseg + name "object_boj" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_boj/object_boj.o" + number 6 +endseg + +beginseg + name "object_spot03_object" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_spot03_object/object_spot03_object.o" + number 6 +endseg + +beginseg + name "object_spot07_object" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_spot07_object/object_spot07_object.o" + number 6 +endseg + +beginseg + name "object_fz" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_fz/object_fz.o" + number 6 +endseg + +beginseg + name "object_bob" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_bob/object_bob.o" + number 6 +endseg + +beginseg + name "object_ge1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ge1/object_ge1.o" + number 6 +endseg + +beginseg + name "object_yabusame_point" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_yabusame_point/object_yabusame_point.o" + number 6 +endseg + +beginseg + name "object_gi_boots_2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_boots_2/object_gi_boots_2.o" + number 6 +endseg + +beginseg + name "object_gi_seed" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_seed/object_gi_seed.o" + number 6 +endseg + +beginseg + name "object_gnd_magic" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gnd_magic/object_gnd_magic.o" + number 6 +endseg + +beginseg + name "object_d_elevator" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_d_elevator/object_d_elevator.o" + number 6 +endseg + +beginseg + name "object_d_hsblock" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_d_hsblock/object_d_hsblock.o" + number 6 +endseg + +beginseg + name "object_d_lift" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_d_lift/object_d_lift.o" + number 6 +endseg + +beginseg + name "object_mamenoki" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_mamenoki/object_mamenoki.o" + number 6 +endseg + +beginseg + name "object_goroiwa" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_goroiwa/object_goroiwa.o" + number 6 +endseg + +beginseg + name "object_toryo" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_toryo/object_toryo.o" + number 6 +endseg + +beginseg + name "object_daiku" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_daiku/object_daiku.o" + number 6 +endseg + +beginseg + name "object_nwc" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_nwc/object_nwc.o" + number 6 +endseg + +beginseg + name "object_blkobj" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_blkobj/object_blkobj.o" + number 6 +endseg + +beginseg + name "object_gm" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gm/object_gm.o" + number 6 +endseg + +beginseg + name "object_ms" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ms/object_ms.o" + number 6 +endseg + +beginseg + name "object_hs" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_hs/object_hs.o" + number 6 +endseg + +beginseg + name "object_ingate" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ingate/object_ingate.o" + number 6 +endseg + +beginseg + name "object_lightswitch" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_lightswitch/object_lightswitch.o" + number 6 +endseg + +beginseg + name "object_kusa" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_kusa/object_kusa.o" + number 6 +endseg + +beginseg + name "object_tsubo" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_tsubo/object_tsubo.o" + number 6 +endseg + +beginseg + name "object_gi_gloves" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_gloves/object_gi_gloves.o" + number 6 +endseg + +beginseg + name "object_gi_coin" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_coin/object_gi_coin.o" + number 6 +endseg + +beginseg + name "object_kanban" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_kanban/object_kanban.o" + number 6 +endseg + +beginseg + name "object_gjyo_objects" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gjyo_objects/object_gjyo_objects.o" + number 6 +endseg + +beginseg + name "object_owl" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_owl/object_owl.o" + number 6 +endseg + +beginseg + name "object_mk" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_mk/object_mk.o" + number 6 +endseg + +beginseg + name "object_fu" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_fu/object_fu.o" + number 6 +endseg + +beginseg + name "object_gi_ki_tan_mask" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_ki_tan_mask/object_gi_ki_tan_mask.o" + number 6 +endseg + +beginseg + name "object_gi_redead_mask" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_redead_mask/object_gi_redead_mask.o" + number 6 +endseg + +beginseg + name "object_gi_skj_mask" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_skj_mask/object_gi_skj_mask.o" + number 6 +endseg + +beginseg + name "object_gi_rabit_mask" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_rabit_mask/object_gi_rabit_mask.o" + number 6 +endseg + +beginseg + name "object_gi_truth_mask" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_truth_mask/object_gi_truth_mask.o" + number 6 +endseg + +beginseg + name "object_ganon_objects" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ganon_objects/object_ganon_objects.o" + number 6 +endseg + +beginseg + name "object_siofuki" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_siofuki/object_siofuki.o" + number 6 +endseg + +beginseg + name "object_stream" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_stream/object_stream.o" + number 6 +endseg + +beginseg + name "object_mm" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_mm/object_mm.o" + number 6 +endseg + +beginseg + name "object_fa" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_fa/object_fa.o" + number 6 +endseg + +beginseg + name "object_os" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_os/object_os.o" + number 6 +endseg + +beginseg + name "object_gi_eye_lotion" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_eye_lotion/object_gi_eye_lotion.o" + number 6 +endseg + +beginseg + name "object_gi_powder" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_powder/object_gi_powder.o" + number 6 +endseg + +beginseg + name "object_gi_mushroom" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_mushroom/object_gi_mushroom.o" + number 6 +endseg + +beginseg + name "object_gi_ticketstone" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_ticketstone/object_gi_ticketstone.o" + number 6 +endseg + +beginseg + name "object_gi_brokensword" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_brokensword/object_gi_brokensword.o" + number 6 +endseg + +beginseg + name "object_js" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_js/object_js.o" + number 6 +endseg + +beginseg + name "object_cs" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_cs/object_cs.o" + number 6 +endseg + +beginseg + name "object_gi_prescription" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_prescription/object_gi_prescription.o" + number 6 +endseg + +beginseg + name "object_gi_bracelet" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_bracelet/object_gi_bracelet.o" + number 6 +endseg + +beginseg + name "object_gi_soldout" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_soldout/object_gi_soldout.o" + number 6 +endseg + +beginseg + name "object_gi_frog" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_frog/object_gi_frog.o" + number 6 +endseg + +beginseg + name "object_mag" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_mag/object_mag.o" + number 6 +endseg + +beginseg + name "object_door_gerudo" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_door_gerudo/object_door_gerudo.o" + number 6 +endseg + +beginseg + name "object_gt" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gt/object_gt.o" + number 6 +endseg + +beginseg + name "object_efc_erupc" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_efc_erupc/object_efc_erupc.o" + number 6 +endseg + +beginseg + name "object_zl2_anime1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_zl2_anime1/object_zl2_anime1.o" + number 6 +endseg + +beginseg + name "object_zl2_anime2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_zl2_anime2/object_zl2_anime2.o" + number 6 +endseg + +beginseg + name "object_gi_golonmask" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_golonmask/object_gi_golonmask.o" + number 6 +endseg + +beginseg + name "object_gi_zoramask" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_zoramask/object_gi_zoramask.o" + number 6 +endseg + +beginseg + name "object_gi_gerudomask" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_gerudomask/object_gi_gerudomask.o" + number 6 +endseg + +beginseg + name "object_ganon2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ganon2/object_ganon2.o" + number 6 +endseg + +beginseg + name "object_ka" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ka/object_ka.o" + number 6 +endseg + +beginseg + name "object_ts" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ts/object_ts.o" + number 6 +endseg + +beginseg + name "object_zg" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_zg/object_zg.o" + number 6 +endseg + +beginseg + name "object_gi_hoverboots" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_hoverboots/object_gi_hoverboots.o" + number 6 +endseg + +beginseg + name "object_gi_m_arrow" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_m_arrow/object_gi_m_arrow.o" + number 6 +endseg + +beginseg + name "object_ds2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ds2/object_ds2.o" + number 6 +endseg + +beginseg + name "object_ec" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ec/object_ec.o" + number 6 +endseg + +beginseg + name "object_fish" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_fish/object_fish.o" + number 6 +endseg + +beginseg + name "object_gi_sutaru" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_sutaru/object_gi_sutaru.o" + number 6 +endseg + +beginseg + name "object_gi_goddess" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_goddess/object_gi_goddess.o" + number 6 +endseg + +beginseg + name "object_ssh" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ssh/object_ssh.o" + number 6 +endseg + +beginseg + name "object_bigokuta" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_bigokuta/object_bigokuta.o" + number 6 +endseg + +beginseg + name "object_bg" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_bg/object_bg.o" + number 6 +endseg + +beginseg + name "object_spot05_objects" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_spot05_objects/object_spot05_objects.o" + number 6 +endseg + +beginseg + name "object_spot12_obj" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_spot12_obj/object_spot12_obj.o" + number 6 +endseg + +beginseg + name "object_bombiwa" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_bombiwa/object_bombiwa.o" + number 6 +endseg + +beginseg + name "object_hintnuts" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_hintnuts/object_hintnuts.o" + number 6 +endseg + +beginseg + name "object_rs" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_rs/object_rs.o" + number 6 +endseg + +beginseg + name "object_spot00_break" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_spot00_break/object_spot00_break.o" + number 6 +endseg + +beginseg + name "object_gla" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gla/object_gla.o" + number 6 +endseg + +beginseg + name "object_shopnuts" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_shopnuts/object_shopnuts.o" + number 6 +endseg + +beginseg + name "object_geldb" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_geldb/object_geldb.o" + number 6 +endseg + +beginseg + name "object_gr" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gr/object_gr.o" + number 6 +endseg + +beginseg + name "object_dog" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_dog/object_dog.o" + number 6 +endseg + +beginseg + name "object_jya_iron" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_jya_iron/object_jya_iron.o" + number 6 +endseg + +beginseg + name "object_jya_door" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_jya_door/object_jya_door.o" + number 6 +endseg + +beginseg + name "object_spot01_objects2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_spot01_objects2/object_spot01_objects2.o" + number 6 +endseg + +beginseg + name "object_spot11_obj" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_spot11_obj/object_spot11_obj.o" + number 6 +endseg + +beginseg + name "object_kibako2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_kibako2/object_kibako2.o" + number 6 +endseg + +beginseg + name "object_dns" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_dns/object_dns.o" + number 6 +endseg + +beginseg + name "object_dnk" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_dnk/object_dnk.o" + number 6 +endseg + +beginseg + name "object_gi_fire" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_fire/object_gi_fire.o" + number 6 +endseg + +beginseg + name "object_gi_insect" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_insect/object_gi_insect.o" + number 6 +endseg + +beginseg + name "object_gi_butterfly" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_butterfly/object_gi_butterfly.o" + number 6 +endseg + +beginseg + name "object_gi_ghost" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_ghost/object_gi_ghost.o" + number 6 +endseg + +beginseg + name "object_gi_soul" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_soul/object_gi_soul.o" + number 6 +endseg + +beginseg + name "object_bowl" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_bowl/object_bowl.o" + number 6 +endseg + +beginseg + name "object_po_field" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_po_field/object_po_field.o" + number 6 +endseg + +beginseg + name "object_demo_kekkai" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_demo_kekkai/object_demo_kekkai.o" + number 6 +endseg + +beginseg + name "object_efc_doughnut" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_efc_doughnut/object_efc_doughnut.o" + number 6 +endseg + +beginseg + name "object_gi_dekupouch" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_dekupouch/object_gi_dekupouch.o" + number 6 +endseg + +beginseg + name "object_ganon_anime1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ganon_anime1/object_ganon_anime1.o" + number 6 +endseg + +beginseg + name "object_ganon_anime2" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ganon_anime2/object_ganon_anime2.o" + number 6 +endseg + +beginseg + name "object_ganon_anime3" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ganon_anime3/object_ganon_anime3.o" + number 6 +endseg + +beginseg + name "object_gi_rupy" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_rupy/object_gi_rupy.o" + number 6 +endseg + +beginseg + name "object_spot01_matoya" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_spot01_matoya/object_spot01_matoya.o" + number 6 +endseg + +beginseg + name "object_spot01_matoyab" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_spot01_matoyab/object_spot01_matoyab.o" + number 6 +endseg + +beginseg + name "object_po_composer" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_po_composer/object_po_composer.o" + number 6 +endseg + +beginseg + name "object_mu" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_mu/object_mu.o" + number 6 +endseg + +beginseg + name "object_wf" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_wf/object_wf.o" + number 6 +endseg + +beginseg + name "object_skb" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_skb/object_skb.o" + number 6 +endseg + +beginseg + name "object_gj" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gj/object_gj.o" + number 6 +endseg + +beginseg + name "object_geff" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_geff/object_geff.o" + number 6 +endseg + +beginseg + name "object_haka_door" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_haka_door/object_haka_door.o" + number 6 +endseg + +beginseg + name "object_gs" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gs/object_gs.o" + number 6 +endseg + +beginseg + name "object_ps" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ps/object_ps.o" + number 6 +endseg + +beginseg + name "object_bwall" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_bwall/object_bwall.o" + number 6 +endseg + +beginseg + name "object_crow" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_crow/object_crow.o" + number 6 +endseg + +beginseg + name "object_cow" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_cow/object_cow.o" + number 6 +endseg + +beginseg + name "object_cob" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_cob/object_cob.o" + number 6 +endseg + +beginseg + name "object_gi_sword_1" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_gi_sword_1/object_gi_sword_1.o" + number 6 +endseg + +beginseg + name "object_door_killer" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_door_killer/object_door_killer.o" + number 6 +endseg + +beginseg + name "object_ouke_haka" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_ouke_haka/object_ouke_haka.o" + number 6 +endseg + +beginseg + name "object_timeblock" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_timeblock/object_timeblock.o" + number 6 +endseg + +beginseg + name "object_zl4" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/objects/object_zl4/object_zl4.o" + number 6 +endseg + +beginseg + name "g_pn_01" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_01.o" +endseg + +beginseg + name "g_pn_02" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_02.o" +endseg + +beginseg + name "g_pn_03" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_03.o" +endseg + +beginseg + name "g_pn_04" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_04.o" +endseg + +beginseg + name "g_pn_05" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_05.o" +endseg + +beginseg + name "g_pn_06" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_06.o" +endseg + +beginseg + name "g_pn_07" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_07.o" +endseg + +beginseg + name "g_pn_08" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_08.o" +endseg + +beginseg + name "g_pn_09" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_09.o" +endseg + +beginseg + name "g_pn_10" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_10.o" +endseg + +beginseg + name "g_pn_11" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_11.o" +endseg + +beginseg + name "g_pn_12" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_12.o" +endseg + +beginseg + name "g_pn_13" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_13.o" +endseg + +beginseg + name "g_pn_14" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_14.o" +endseg + +beginseg + name "g_pn_15" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_15.o" +endseg + +beginseg + name "g_pn_16" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_16.o" +endseg + +beginseg + name "g_pn_17" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_17.o" +endseg + +beginseg + name "g_pn_18" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_18.o" +endseg + +beginseg + name "g_pn_19" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_19.o" +endseg + +beginseg + name "g_pn_20" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_20.o" +endseg + +beginseg + name "g_pn_21" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_21.o" +endseg + +beginseg + name "g_pn_22" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_22.o" +endseg + +beginseg + name "g_pn_23" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_23.o" +endseg + +beginseg + name "g_pn_24" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_24.o" +endseg + +beginseg + name "g_pn_25" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_25.o" +endseg + +beginseg + name "g_pn_26" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_26.o" +endseg + +beginseg + name "g_pn_27" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_27.o" +endseg + +beginseg + name "g_pn_28" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_28.o" +endseg + +beginseg + name "g_pn_29" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_29.o" +endseg + +beginseg + name "g_pn_30" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_30.o" +endseg + +beginseg + name "g_pn_31" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_31.o" +endseg + +beginseg + name "g_pn_32" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_32.o" +endseg + +beginseg + name "g_pn_33" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_33.o" +endseg + +beginseg + name "g_pn_34" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_34.o" +endseg + +beginseg + name "g_pn_35" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_35.o" +endseg + +beginseg + name "g_pn_36" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_36.o" +endseg + +beginseg + name "g_pn_37" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_37.o" +endseg + +beginseg + name "g_pn_38" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_38.o" +endseg + +beginseg + name "g_pn_39" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_39.o" +endseg + +beginseg + name "g_pn_40" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_40.o" +endseg + +beginseg + name "g_pn_41" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_41.o" +endseg + +beginseg + name "g_pn_42" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_42.o" +endseg + +beginseg + name "g_pn_43" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_43.o" +endseg + +beginseg + name "g_pn_44" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_44.o" +endseg + +beginseg + name "g_pn_45" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_45.o" +endseg + +beginseg + name "g_pn_46" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_46.o" +endseg + +beginseg + name "g_pn_47" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_47.o" +endseg + +beginseg + name "g_pn_48" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_48.o" +endseg + +beginseg + name "g_pn_49" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_49.o" +endseg + +beginseg + name "g_pn_50" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_50.o" +endseg + +beginseg + name "g_pn_51" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_51.o" +endseg + +beginseg + name "g_pn_52" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_52.o" +endseg + +beginseg + name "g_pn_53" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_53.o" +endseg + +beginseg + name "g_pn_54" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_54.o" +endseg + +beginseg + name "g_pn_55" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_55.o" +endseg + +beginseg + name "g_pn_56" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_56.o" +endseg + +beginseg + name "g_pn_57" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/place_title_cards/g_pn_57.o" +endseg + +beginseg + name "z_select_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/misc/z_select_static/z_select_static.o" + number 1 +endseg + +beginseg + name "nintendo_rogo_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/nintendo_rogo_static/nintendo_rogo_static.o" + number 1 +endseg + +beginseg + name "title_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/title_static/title_static.o" + number 1 +endseg + +beginseg + name "parameter_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/parameter_static/parameter_static.o" + number 2 +endseg + +beginseg + name "vr_fine0_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/skyboxes/vr_fine0_static.o" +endseg + +beginseg + name "vr_fine0_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/skyboxes/vr_fine0_pal_static.o" +endseg + +beginseg + name "vr_fine1_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/skyboxes/vr_fine1_static.o" +endseg + +beginseg + name "vr_fine1_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/skyboxes/vr_fine1_pal_static.o" +endseg + +beginseg + name "vr_fine2_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/skyboxes/vr_fine2_static.o" +endseg + +beginseg + name "vr_fine2_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/skyboxes/vr_fine2_pal_static.o" +endseg + +beginseg + name "vr_fine3_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/skyboxes/vr_fine3_static.o" +endseg + +beginseg + name "vr_fine3_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/skyboxes/vr_fine3_pal_static.o" +endseg + +beginseg + name "vr_cloud0_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/skyboxes/vr_cloud0_static.o" +endseg + +beginseg + name "vr_cloud0_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/skyboxes/vr_cloud0_pal_static.o" +endseg + +beginseg + name "vr_cloud1_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/skyboxes/vr_cloud1_static.o" +endseg + +beginseg + name "vr_cloud1_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/skyboxes/vr_cloud1_pal_static.o" +endseg + +beginseg + name "vr_cloud2_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/skyboxes/vr_cloud2_static.o" +endseg + +beginseg + name "vr_cloud2_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/skyboxes/vr_cloud2_pal_static.o" +endseg + +beginseg + name "vr_cloud3_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/skyboxes/vr_cloud3_static.o" +endseg + +beginseg + name "vr_cloud3_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/skyboxes/vr_cloud3_pal_static.o" +endseg + +beginseg + name "vr_holy0_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/skyboxes/vr_holy0_static.o" +endseg + +beginseg + name "vr_holy0_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/skyboxes/vr_holy0_pal_static.o" +endseg + +beginseg + name "vr_holy1_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/skyboxes/vr_holy1_static.o" +endseg + +beginseg + name "vr_holy1_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/skyboxes/vr_holy1_pal_static.o" +endseg + +beginseg + name "vr_MDVR_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_MDVR_static.o" +endseg + +beginseg + name "vr_MDVR_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_MDVR_pal_static.o" +endseg + +beginseg + name "vr_MNVR_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_MNVR_static.o" +endseg + +beginseg + name "vr_MNVR_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_MNVR_pal_static.o" +endseg + +beginseg + name "vr_RUVR_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_RUVR_static.o" +endseg + +beginseg + name "vr_RUVR_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_RUVR_pal_static.o" +endseg + +beginseg + name "vr_LHVR_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_LHVR_static.o" +endseg + +beginseg + name "vr_LHVR_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_LHVR_pal_static.o" +endseg + +beginseg + name "vr_KHVR_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_KHVR_static.o" +endseg + +beginseg + name "vr_KHVR_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_KHVR_pal_static.o" +endseg + +beginseg + name "vr_K3VR_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_K3VR_static.o" +endseg + +beginseg + name "vr_K3VR_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_K3VR_pal_static.o" +endseg + +beginseg + name "vr_K4VR_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_K4VR_static.o" +endseg + +beginseg + name "vr_K4VR_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_K4VR_pal_static.o" +endseg + +beginseg + name "vr_K5VR_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_K5VR_static.o" +endseg + +beginseg + name "vr_K5VR_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_K5VR_pal_static.o" +endseg + +beginseg + name "vr_SP1a_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_SP1a_static.o" +endseg + +beginseg + name "vr_SP1a_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_SP1a_pal_static.o" +endseg + +beginseg + name "vr_MLVR_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_MLVR_static.o" +endseg + +beginseg + name "vr_MLVR_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_MLVR_pal_static.o" +endseg + +beginseg + name "vr_KKRVR_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_KKRVR_static.o" +endseg + +beginseg + name "vr_KKRVR_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_KKRVR_pal_static.o" +endseg + +beginseg + name "vr_KR3VR_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_KR3VR_static.o" +endseg + +beginseg + name "vr_KR3VR_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_KR3VR_pal_static.o" +endseg + +beginseg + name "vr_IPVR_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_IPVR_static.o" +endseg + +beginseg + name "vr_IPVR_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_IPVR_pal_static.o" +endseg + +beginseg + name "vr_KSVR_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_KSVR_static.o" +endseg + +beginseg + name "vr_KSVR_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_KSVR_pal_static.o" +endseg + +beginseg + name "vr_GLVR_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_GLVR_static.o" +endseg + +beginseg + name "vr_GLVR_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_GLVR_pal_static.o" +endseg + +beginseg + name "vr_ZRVR_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_ZRVR_static.o" +endseg + +beginseg + name "vr_ZRVR_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_ZRVR_pal_static.o" +endseg + +beginseg + name "vr_DGVR_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_DGVR_static.o" +endseg + +beginseg + name "vr_DGVR_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_DGVR_pal_static.o" +endseg + +beginseg + name "vr_ALVR_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_ALVR_static.o" +endseg + +beginseg + name "vr_ALVR_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_ALVR_pal_static.o" +endseg + +beginseg + name "vr_NSVR_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_NSVR_static.o" +endseg + +beginseg + name "vr_NSVR_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_NSVR_pal_static.o" +endseg + +beginseg + name "vr_LBVR_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_LBVR_static.o" +endseg + +beginseg + name "vr_LBVR_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_LBVR_pal_static.o" +endseg + +beginseg + name "vr_TTVR_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_TTVR_static.o" +endseg + +beginseg + name "vr_TTVR_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_TTVR_pal_static.o" +endseg + +beginseg + name "vr_FCVR_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_FCVR_static.o" +endseg + +beginseg + name "vr_FCVR_pal_static" + romalign 0x1000 + include "$(BUILD_DIR)/assets/textures/backgrounds/vr_FCVR_pal_static.o" +endseg + +beginseg + name "elf_message_field" + compress + romalign 0x1000 + include "$(BUILD_DIR)/src/elf_message/elf_message_field.o" + number 0 +endseg + +beginseg + name "elf_message_ydan" + compress + romalign 0x1000 + include "$(BUILD_DIR)/src/elf_message/elf_message_ydan.o" + number 0 +endseg + +// Scene files are reordered between versions. On GameCube and iQue, dungeon scenes +// have been moved to the beginning. +#if PLATFORM_N64 +#include "scenes_n64.inc" +#else +#include "scenes_gc_ique.inc" +#endif + +beginseg + name "bump_texture_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/baserom/bump_texture_static.o" +endseg + +beginseg + name "anime_model_1_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/baserom/anime_model_1_static.o" +endseg + +beginseg + name "anime_model_2_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/baserom/anime_model_2_static.o" +endseg + +beginseg + name "anime_model_3_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/baserom/anime_model_3_static.o" +endseg + +beginseg + name "anime_model_4_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/baserom/anime_model_4_static.o" +endseg + +beginseg + name "anime_model_5_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/baserom/anime_model_5_static.o" +endseg + +beginseg + name "anime_model_6_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/baserom/anime_model_6_static.o" +endseg + +beginseg + name "anime_texture_1_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/baserom/anime_texture_1_static.o" +endseg + +beginseg + name "anime_texture_2_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/baserom/anime_texture_2_static.o" +endseg + +beginseg + name "anime_texture_3_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/baserom/anime_texture_3_static.o" +endseg + +beginseg + name "anime_texture_4_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/baserom/anime_texture_4_static.o" +endseg + +beginseg + name "anime_texture_5_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/baserom/anime_texture_5_static.o" +endseg + +beginseg + name "anime_texture_6_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/baserom/anime_texture_6_static.o" +endseg + +beginseg + name "softsprite_matrix_static" + compress + romalign 0x1000 + include "$(BUILD_DIR)/baserom/softsprite_matrix_static.o" +endseg diff --git a/src/audio/debug.inc.c b/src/audio/debug.inc.c index 29fbd50a3c..a41254001e 100644 --- a/src/audio/debug.inc.c +++ b/src/audio/debug.inc.c @@ -847,7 +847,7 @@ void AudioDebug_ProcessInput_SndCont(void) { &gSfxDefaultReverb); break; case 4: - func_800F6700(sAudioSndContWork[sAudioSndContSel]); + Audio_SetSoundMode(sAudioSndContWork[sAudioSndContSel]); break; case 5: SEQCMD_DISABLE_PLAY_SEQUENCES(sAudioSndContWork[sAudioSndContSel]); diff --git a/src/audio/general.c b/src/audio/general.c index cb87548fa8..ddf13f4cff 100644 --- a/src/audio/general.c +++ b/src/audio/general.c @@ -1,15 +1,20 @@ +#include "libu64/gfxprint.h" #include "ultra64.h" -#include "global.h" +#include "attributes.h" +#include "controller.h" +#include "padmgr.h" +#include "seqcmd.h" +#include "sequence.h" #include "versions.h" +#include "global.h" + #define ABS_ALT(x) ((x) < 0 ? -(x) : (x)) #if !PLATFORM_N64 #define AUDIO_PRINTF osSyncPrintf #elif IDO_PRINTF_WORKAROUND #define AUDIO_PRINTF(args) (void)0 -#elif defined(__GNUC__) && __GNUC__ < 3 -#define AUDIO_PRINTF(format, args...) (void)0 #else #define AUDIO_PRINTF(format, ...) (void)0 #endif @@ -3768,26 +3773,26 @@ void Audio_SetCodeReverb(s8 reverb) { } } -void func_800F6700(s8 audioSetting) { +void Audio_SetSoundMode(s8 soundSetting) { s8 soundModeIndex; - switch (audioSetting) { - case 0: + switch (soundSetting) { + case SOUND_SETTING_STEREO: soundModeIndex = SOUNDMODE_STEREO; sSoundMode = SOUNDMODE_STEREO; break; - case 1: + case SOUND_SETTING_MONO: soundModeIndex = SOUNDMODE_MONO; sSoundMode = SOUNDMODE_MONO; break; - case 2: + case SOUND_SETTING_HEADSET: soundModeIndex = SOUNDMODE_HEADSET; sSoundMode = SOUNDMODE_HEADSET; break; - case 3: + case SOUND_SETTING_SURROUND: soundModeIndex = SOUNDMODE_STEREO; sSoundMode = SOUNDMODE_SURROUND; break; diff --git a/src/audio/lib/effects.c b/src/audio/lib/effects.c index bbfcaf61ad..e6d2324886 100644 --- a/src/audio/lib/effects.c +++ b/src/audio/lib/effects.c @@ -1,4 +1,6 @@ #include "ultra64.h" +#include "attributes.h" + #include "global.h" void Audio_SequenceChannelProcessSound(SequenceChannel* channel, s32 recalculateVolume, s32 applyBend) { diff --git a/src/audio/lib/load.c b/src/audio/lib/load.c index 0aa3324d73..d4c1ea8644 100644 --- a/src/audio/lib/load.c +++ b/src/audio/lib/load.c @@ -1,7 +1,10 @@ #include "ultra64.h" -#include "global.h" +#include "attributes.h" +#include "buffers.h" #include "versions.h" +#include "global.h" + #define MK_ASYNC_MSG(retData, tableType, id, loadStatus) \ (((retData) << 24) | ((tableType) << 16) | ((id) << 8) | (loadStatus)) #define ASYNC_TBLTYPE(v) ((u8)(v >> 16)) diff --git a/src/audio/lib/seqplayer.c b/src/audio/lib/seqplayer.c index a7091b24b3..1a1d40c4d2 100644 --- a/src/audio/lib/seqplayer.c +++ b/src/audio/lib/seqplayer.c @@ -14,8 +14,14 @@ * Otherwise, each set of instructions has its own command interpreter */ #include "ultra64.h" +#include "assert.h" +#include "attributes.h" +#include "audio/aseq.h" + #include "global.h" +static_assert(MML_VERSION == MML_VERSION_OOT, "This file implements the OoT version of the MML"); + #define PORTAMENTO_IS_SPECIAL(x) ((x).mode & 0x80) #define PORTAMENTO_MODE(x) ((x).mode & ~0x80) @@ -70,92 +76,92 @@ u8 AudioSeq_GetInstrument(SequenceChannel* channel, u8 instId, Instrument** inst (((sizeof(arg0Type) - 1) << 7) | ((sizeof(arg1Type) - 1) << 6) | ((sizeof(arg2Type) - 1) << 5) | 3) u8 sSeqInstructionArgsTable[] = { - CMD_ARGS_1(s16), // 0xB0 - CMD_ARGS_0(), // 0xB1 - CMD_ARGS_1(s16), // 0xB2 - CMD_ARGS_1(u8), // 0xB3 - CMD_ARGS_0(), // 0xB4 - CMD_ARGS_0(), // 0xB5 - CMD_ARGS_0(), // 0xB6 - CMD_ARGS_1(s16), // 0xB7 - CMD_ARGS_1(u8), // 0xB8 - CMD_ARGS_1(u8), // 0xB9 - CMD_ARGS_1(u8), // 0xBA - CMD_ARGS_2(u8, s16), // 0xBB - CMD_ARGS_1(s16), // 0xBC - CMD_ARGS_2(s16, s16), // 0xBD + CMD_ARGS_1(s16), // ASEQ_OP_CHAN_LDFILTER + CMD_ARGS_0(), // ASEQ_OP_CHAN_FREEFILTER + CMD_ARGS_1(s16), // ASEQ_OP_CHAN_LDSEQTOPTR + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_FILTER + CMD_ARGS_0(), // ASEQ_OP_CHAN_PTRTODYNTBL + CMD_ARGS_0(), // ASEQ_OP_CHAN_DYNTBLTOPTR + CMD_ARGS_0(), // ASEQ_OP_CHAN_DYNTBLV + CMD_ARGS_1(s16), // ASEQ_OP_CHAN_RANDTOPTR + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_RAND + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_RANDVEL + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_RANDGATE + CMD_ARGS_2(u8, s16), // ASEQ_OP_CHAN_COMBFILTER + CMD_ARGS_1(s16), // ASEQ_OP_CHAN_PTRADD + CMD_ARGS_2(s16, s16), // ASEQ_OP_CHAN_RANDPTR CMD_ARGS_0(), // 0xBE CMD_ARGS_0(), // 0xBF CMD_ARGS_0(), // 0xC0 - CMD_ARGS_1(u8), // 0xC1 - CMD_ARGS_1(s16), // 0xC2 - CMD_ARGS_0(), // 0xC3 - CMD_ARGS_0(), // 0xC4 - CMD_ARGS_0(), // 0xC5 - CMD_ARGS_1(u8), // 0xC6 - CMD_ARGS_2(u8, s16), // 0xC7 - CMD_ARGS_1(u8), // 0xC8 - CMD_ARGS_1(u8), // 0xC9 - CMD_ARGS_1(u8), // 0xCA - CMD_ARGS_1(s16), // 0xCB - CMD_ARGS_1(u8), // 0xCC - CMD_ARGS_1(u8), // 0xCD - CMD_ARGS_1(s16), // 0xCE - CMD_ARGS_1(s16), // 0xCF - CMD_ARGS_1(u8), // 0xD0 - CMD_ARGS_1(u8), // 0xD1 - CMD_ARGS_1(u8), // 0xD2 - CMD_ARGS_1(u8), // 0xD3 - CMD_ARGS_1(u8), // 0xD4 + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_INSTR + CMD_ARGS_1(s16), // ASEQ_OP_CHAN_DYNTBL + CMD_ARGS_0(), // ASEQ_OP_CHAN_SHORT + CMD_ARGS_0(), // ASEQ_OP_CHAN_NOSHORT + CMD_ARGS_0(), // ASEQ_OP_CHAN_DYNTBLLOOKUP + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_FONT + CMD_ARGS_2(u8, s16), // ASEQ_OP_CHAN_STSEQ + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_SUB + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_AND + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_MUTEBHV + CMD_ARGS_1(s16), // ASEQ_OP_CHAN_LDSEQ + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_LDI + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_STOPCHAN + CMD_ARGS_1(s16), // ASEQ_OP_CHAN_LDPTR + CMD_ARGS_1(s16), // ASEQ_OP_CHAN_STPTRTOSEQ + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_EFFECTS + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_NOTEALLOC + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_SUSTAIN + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_BEND + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_REVERB CMD_ARGS_1(u8), // 0xD5 CMD_ARGS_1(u8), // 0xD6 - CMD_ARGS_1(u8), // 0xD7 - CMD_ARGS_1(u8), // 0xD8 - CMD_ARGS_1(u8), // 0xD9 - CMD_ARGS_1(s16), // 0xDA - CMD_ARGS_1(u8), // 0xDB - CMD_ARGS_1(u8), // 0xDC - CMD_ARGS_1(u8), // 0xDD - CMD_ARGS_1(s16), // 0xDE - CMD_ARGS_1(u8), // 0xDF - CMD_ARGS_1(u8), // 0xE0 - CMD_ARGS_3(u8, u8, u8), // 0xE1 - CMD_ARGS_3(u8, u8, u8), // 0xE2 - CMD_ARGS_1(u8), // 0xE3 - CMD_ARGS_0(), // 0xE4 - CMD_ARGS_1(u8), // 0xE5 - CMD_ARGS_1(u8), // 0xE6 - CMD_ARGS_1(s16), // 0xE7 - CMD_ARGS_3(u8, u8, u8), // 0xE8 - CMD_ARGS_1(u8), // 0xE9 - CMD_ARGS_0(), // 0xEA - CMD_ARGS_2(u8, u8), // 0xEB - CMD_ARGS_0(), // 0xEC - CMD_ARGS_1(u8), // 0xED - CMD_ARGS_1(u8), // 0xEE + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_VIBFREQ + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_VIBDEPTH + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_RELEASERATE + CMD_ARGS_1(s16), // ASEQ_OP_CHAN_ENV + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_TRANSPOSE + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_PANWEIGHT + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_PAN + CMD_ARGS_1(s16), // ASEQ_OP_CHAN_FREQSCALE + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_VOL + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_VOLEXP + CMD_ARGS_3(u8, u8, u8), // ASEQ_OP_CHAN_VIBFREQGRAD + CMD_ARGS_3(u8, u8, u8), // ASEQ_OP_CHAN_VIBDEPTHGRAD + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_VIBDELAY + CMD_ARGS_0(), // ASEQ_OP_CHAN_DYNCALL + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_REVERBIDX + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_SAMPLEBOOK + CMD_ARGS_1(s16), // ASEQ_OP_CHAN_LDPARAMS + CMD_ARGS_3(u8, u8, u8), // ASEQ_OP_CHAN_PARAMS + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_NOTEPRI + CMD_ARGS_0(), // ASEQ_OP_CHAN_STOP + CMD_ARGS_2(u8, u8), // ASEQ_OP_CHAN_FONTINSTR + CMD_ARGS_0(), // ASEQ_OP_CHAN_VIBRESET + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_GAIN + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_BENDFINE CMD_ARGS_2(s16, u8), // 0xEF - CMD_ARGS_0(), // 0xF0 - CMD_ARGS_1(u8), // 0xF1 - // Control flow instructions (>= 0xF2) can only have 0 or 1 args - CMD_ARGS_1(u8), // 0xF2 - CMD_ARGS_1(u8), // 0xF3 - CMD_ARGS_1(u8), // 0xF4 - CMD_ARGS_1(s16), // 0xF5 - CMD_ARGS_0(), // 0xF6 - CMD_ARGS_0(), // 0xF7 - CMD_ARGS_1(u8), // 0xF8 - CMD_ARGS_1(s16), // 0xF9 - CMD_ARGS_1(s16), // 0xFA - CMD_ARGS_1(s16), // 0xFB - CMD_ARGS_1(s16), // 0xFC - CMD_ARGS_0(), // 0xFD - CMD_ARGS_0(), // 0xFE - CMD_ARGS_0(), // 0xFF + CMD_ARGS_0(), // ASEQ_OP_CHAN_FREENOTELIST + CMD_ARGS_1(u8), // ASEQ_OP_CHAN_ALLOCNOTELIST + // Control flow instructions (>= ASEQ_OP_CONTROL_FLOW_FIRST) can only have 0 or 1 args + CMD_ARGS_1(u8), // ASEQ_OP_RBLTZ + CMD_ARGS_1(u8), // ASEQ_OP_RBEQZ + CMD_ARGS_1(u8), // ASEQ_OP_RJUMP + CMD_ARGS_1(s16), // ASEQ_OP_BGEZ + CMD_ARGS_0(), // ASEQ_OP_BREAK + CMD_ARGS_0(), // ASEQ_OP_LOOPEND + CMD_ARGS_1(u8), // ASEQ_OP_LOOP + CMD_ARGS_1(s16), // ASEQ_OP_BLTZ + CMD_ARGS_1(s16), // ASEQ_OP_BEQZ + CMD_ARGS_1(s16), // ASEQ_OP_JUMP + CMD_ARGS_1(s16), // ASEQ_OP_CALL + CMD_ARGS_0(), // ASEQ_OP_DELAY + CMD_ARGS_0(), // ASEQ_OP_DELAY1 + CMD_ARGS_0(), // ASEQ_OP_END }; /** * Read and return the argument from the sequence script for a control flow instruction. - * Control flow instructions (>= 0xF2) can only have 0 or 1 args. + * 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 */ u16 AudioSeq_GetScriptControlFlowArgument(SeqScriptState* state, u8 cmd) { @@ -181,30 +187,30 @@ u16 AudioSeq_GetScriptControlFlowArgument(SeqScriptState* state, u8 cmd) { */ s32 AudioSeq_HandleScriptFlowControl(SequencePlayer* seqPlayer, SeqScriptState* state, s32 cmd, s32 cmdArg) { switch (cmd) { - case 0xFF: + case ASEQ_OP_END: if (state->depth == 0) { return PROCESS_SCRIPT_END; } state->pc = state->stack[--state->depth]; break; - case 0xFD: + case ASEQ_OP_DELAY: return AudioSeq_ScriptReadCompressedU16(state); - case 0xFE: + case ASEQ_OP_DELAY1: return 1; - case 0xFC: + case ASEQ_OP_CALL: state->stack[state->depth++] = state->pc; state->pc = seqPlayer->seqData + (u16)cmdArg; break; - case 0xF8: + case ASEQ_OP_LOOP: state->remLoopIters[state->depth] = cmdArg; state->stack[state->depth++] = state->pc; break; - case 0xF7: + case ASEQ_OP_LOOPEND: state->remLoopIters[state->depth - 1]--; if (state->remLoopIters[state->depth - 1] != 0) { state->pc = state->stack[state->depth - 1]; @@ -213,33 +219,33 @@ s32 AudioSeq_HandleScriptFlowControl(SequencePlayer* seqPlayer, SeqScriptState* } break; - case 0xF6: + case ASEQ_OP_BREAK: state->depth--; break; - case 0xF5: - case 0xF9: - case 0xFA: - case 0xFB: - if (cmd == 0xFA && state->value != 0) { + case ASEQ_OP_BGEZ: + case ASEQ_OP_BLTZ: + case ASEQ_OP_BEQZ: + case ASEQ_OP_JUMP: + if (cmd == ASEQ_OP_BEQZ && state->value != 0) { break; } - if (cmd == 0xF9 && state->value >= 0) { + if (cmd == ASEQ_OP_BLTZ && state->value >= 0) { break; } - if (cmd == 0xF5 && state->value < 0) { + if (cmd == ASEQ_OP_BGEZ && state->value < 0) { break; } state->pc = seqPlayer->seqData + (u16)cmdArg; break; - case 0xF2: - case 0xF3: - case 0xF4: - if (cmd == 0xF3 && state->value != 0) { + case ASEQ_OP_RBLTZ: + case ASEQ_OP_RBEQZ: + case ASEQ_OP_RJUMP: + if (cmd == ASEQ_OP_RBEQZ && state->value != 0) { break; } - if (cmd == 0xF2 && state->value >= 0) { + if (cmd == ASEQ_OP_RBLTZ && state->value >= 0) { break; } state->pc += (s8)(cmdArg & 0xFF); @@ -645,7 +651,7 @@ s32 AudioSeq_SeqLayerProcessScriptStep2(SequenceLayer* layer) { } // Control Flow Commands - if (cmd >= 0xF2) { + if (cmd >= ASEQ_OP_CONTROL_FLOW_FIRST) { cmdArg16 = AudioSeq_GetScriptControlFlowArgument(state, cmd); if (AudioSeq_HandleScriptFlowControl(seqPlayer, state, cmd, cmdArg16) == 0) { @@ -656,29 +662,29 @@ s32 AudioSeq_SeqLayerProcessScriptStep2(SequenceLayer* layer) { } switch (cmd) { - case 0xC1: // layer_setshortnotevelocity - case 0xCA: // layer_setpan + case ASEQ_OP_LAYER_SHORTVEL: // layer_setshortnotevelocity + case ASEQ_OP_LAYER_NOTEPAN: // layer_setpan cmdArg8 = *(state->pc++); - if (cmd == 0xC1) { + if (cmd == ASEQ_OP_LAYER_SHORTVEL) { layer->velocitySquare = SQ(cmdArg8) / SQ(127.0f); } else { layer->pan = cmdArg8; } break; - case 0xC9: // layer_setshortnotegatetime - case 0xC2: // layer_transpose; set transposition in semitones + case ASEQ_OP_LAYER_SHORTGATE: // layer_setshortnotegatetime + case ASEQ_OP_LAYER_TRANSPOSE: // layer_transpose; set transposition in semitones cmdArg8 = *(state->pc++); - if (cmd == 0xC9) { + if (cmd == ASEQ_OP_LAYER_SHORTGATE) { layer->gateTime = cmdArg8; } else { layer->transposition = cmdArg8; } break; - case 0xC4: // layer_continuousnoteson - case 0xC5: // layer_continuousnotesoff - if (cmd == 0xC4) { + case ASEQ_OP_LAYER_LEGATO: // layer_continuousnoteson + case ASEQ_OP_LAYER_NOLEGATO: // layer_continuousnotesoff + if (cmd == ASEQ_OP_LAYER_LEGATO) { layer->continuousNotes = true; } else { layer->continuousNotes = false; @@ -687,12 +693,12 @@ s32 AudioSeq_SeqLayerProcessScriptStep2(SequenceLayer* layer) { Audio_SeqLayerNoteDecay(layer); break; - case 0xC3: // layer_setshortnotedefaultdelay + case ASEQ_OP_LAYER_SHORTDELAY: // layer_setshortnotedefaultdelay cmdArg16 = AudioSeq_ScriptReadCompressedU16(state); layer->shortNoteDefaultDelay = cmdArg16; break; - case 0xC6: // layer_setinstr + case ASEQ_OP_LAYER_INSTR: // layer_setinstr cmd = AudioSeq_ScriptReadU8(state); if (cmd >= 0x7E) { if (cmd == 0x7E) { @@ -719,7 +725,7 @@ s32 AudioSeq_SeqLayerProcessScriptStep2(SequenceLayer* layer) { } break; - case 0xC7: // layer_portamento + case ASEQ_OP_LAYER_PORTAMENTO: // layer_portamento layer->portamento.mode = AudioSeq_ScriptReadU8(state); cmd = AudioSeq_ScriptReadU8(state); @@ -743,39 +749,39 @@ s32 AudioSeq_SeqLayerProcessScriptStep2(SequenceLayer* layer) { layer->portamentoTime = cmdArg16; break; - case 0xC8: // layer_disableportamento + case ASEQ_OP_LAYER_NOPORTAMENTO: // layer_disableportamento layer->portamento.mode = PORTAMENTO_MODE_OFF; break; - case 0xCB: + case ASEQ_OP_LAYER_ENV: cmdArg16 = AudioSeq_ScriptReadS16(state); layer->adsr.envelope = (EnvelopePoint*)(seqPlayer->seqData + cmdArg16); FALLTHROUGH; - case 0xCF: + case ASEQ_OP_LAYER_RELEASERATE: layer->adsr.decayIndex = AudioSeq_ScriptReadU8(state); break; - case 0xCC: + case ASEQ_OP_LAYER_NODRUMPAN: layer->ignoreDrumPan = true; break; - case 0xCD: + case ASEQ_OP_LAYER_STEREO: layer->stereo.asByte = AudioSeq_ScriptReadU8(state); break; - case 0xCE: + case ASEQ_OP_LAYER_BENDFINE: cmdArg8 = AudioSeq_ScriptReadU8(state); layer->bend = gBendPitchTwoSemitonesFrequencies[(u8)(cmdArg8 + 0x80)]; break; default: switch (cmd & 0xF0) { - case 0xD0: // layer_setshortnotevelocityfromtable + case ASEQ_OP_LAYER_LDSHORTVEL: // layer_setshortnotevelocityfromtable velocity = seqPlayer->shortNoteVelocityTable[cmd & 0xF]; layer->velocitySquare = SQ(velocity) / SQ(127.0f); break; - case 0xE0: // layer_setshortnotegatetimefromtable + case ASEQ_OP_LAYER_LDSHORTGATE: // layer_setshortnotegatetimefromtable layer->gateTime = seqPlayer->shortNoteGateTimeTable[cmd & 0xF]; break; } @@ -1000,7 +1006,7 @@ s32 AudioSeq_SeqLayerProcessScriptStep3(SequenceLayer* layer, s32 cmd) { s32 intDelta; f32 floatDelta; - if (cmd == 0xC0) { + if (cmd == ASEQ_OP_LAYER_LDELAY) { layer->delay = AudioSeq_ScriptReadCompressedU16(state); layer->muted = true; layer->bit1 = false; @@ -1011,21 +1017,21 @@ s32 AudioSeq_SeqLayerProcessScriptStep3(SequenceLayer* layer, s32 cmd) { if (channel->largeNotes == true) { switch (cmd & 0xC0) { - case 0x00: + case ASEQ_OP_LAYER_NOTEDVG: delay = AudioSeq_ScriptReadCompressedU16(state); velocity = *(state->pc++); layer->gateTime = *(state->pc++); layer->lastDelay = delay; break; - case 0x40: + case ASEQ_OP_LAYER_NOTEDV: delay = AudioSeq_ScriptReadCompressedU16(state); velocity = *(state->pc++); layer->gateTime = 0; layer->lastDelay = delay; break; - case 0x80: + case ASEQ_OP_LAYER_NOTEVG: delay = layer->lastDelay; velocity = *(state->pc++); layer->gateTime = *(state->pc++); @@ -1039,16 +1045,16 @@ s32 AudioSeq_SeqLayerProcessScriptStep3(SequenceLayer* layer, s32 cmd) { cmd -= (cmd & 0xC0); } else { switch (cmd & 0xC0) { - case 0x00: + case ASEQ_OP_LAYER_NOTEDVG: delay = AudioSeq_ScriptReadCompressedU16(state); layer->lastDelay = delay; break; - case 0x40: + case ASEQ_OP_LAYER_NOTEDV: delay = layer->shortNoteDefaultDelay; break; - case 0x80: + case ASEQ_OP_LAYER_NOTEVG: delay = layer->lastDelay; break; } @@ -1210,7 +1216,7 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) { } // Control Flow Commands - if (cmd >= 0xF2) { + if (cmd >= ASEQ_OP_CONTROL_FLOW_FIRST) { delay = AudioSeq_HandleScriptFlowControl(seqPlayer, scriptState, cmd, cmdArgs[0]); if (delay != 0) { @@ -1225,26 +1231,26 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) { } switch (cmd) { - case 0xEA: + case ASEQ_OP_CHAN_STOP: channel->stopScript = true; goto exit_loop; - case 0xF1: + case ASEQ_OP_CHAN_ALLOCNOTELIST: Audio_NotePoolClear(&channel->notePool); cmd = (u8)cmdArgs[0]; Audio_NotePoolFill(&channel->notePool, cmd); break; - case 0xF0: + case ASEQ_OP_CHAN_FREENOTELIST: Audio_NotePoolClear(&channel->notePool); break; - case 0xC2: + case ASEQ_OP_CHAN_DYNTBL: cmdArgU16 = (u16)cmdArgs[0]; channel->dynTable = (void*)&seqPlayer->seqData[cmdArgU16]; break; - case 0xC5: + case ASEQ_OP_CHAN_DYNTBLLOOKUP: if (scriptState->value != -1) { data = (*channel->dynTable)[scriptState->value]; cmdArgU16 = (u16)((data[0] << 8) + data[1]); @@ -1253,7 +1259,7 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) { } break; - case 0xEB: + case ASEQ_OP_CHAN_FONTINSTR: cmd = (u8)cmdArgs[0]; if (seqPlayer->defaultFont != 0xFF) { @@ -1268,93 +1274,93 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) { cmdArgs[0] = cmdArgs[1]; FALLTHROUGH; - case 0xC1: + case ASEQ_OP_CHAN_INSTR: cmd = (u8)cmdArgs[0]; AudioSeq_SetInstrument(channel, cmd); break; - case 0xC3: + case ASEQ_OP_CHAN_SHORT: channel->largeNotes = false; break; - case 0xC4: + case ASEQ_OP_CHAN_NOSHORT: channel->largeNotes = true; break; - case 0xDF: + case ASEQ_OP_CHAN_VOL: cmd = (u8)cmdArgs[0]; AudioSeq_SequenceChannelSetVolume(channel, cmd); channel->changes.s.volume = true; break; - case 0xE0: + case ASEQ_OP_CHAN_VOLEXP: cmd = (u8)cmdArgs[0]; channel->volumeScale = (s32)cmd / 128.0f; channel->changes.s.volume = true; break; - case 0xDE: + case ASEQ_OP_CHAN_FREQSCALE: cmdArgU16 = (u16)cmdArgs[0]; channel->freqScale = (s32)cmdArgU16 / 32768.0f; channel->changes.s.freqScale = true; break; - case 0xD3: + case ASEQ_OP_CHAN_BEND: cmd = (u8)cmdArgs[0]; cmd += 0x80; channel->freqScale = gBendPitchOneOctaveFrequencies[cmd]; channel->changes.s.freqScale = true; break; - case 0xEE: + case ASEQ_OP_CHAN_BENDFINE: cmd = (u8)cmdArgs[0]; cmd += 0x80; channel->freqScale = gBendPitchTwoSemitonesFrequencies[cmd]; channel->changes.s.freqScale = true; break; - case 0xDD: + case ASEQ_OP_CHAN_PAN: cmd = (u8)cmdArgs[0]; channel->newPan = cmd; channel->changes.s.pan = true; break; - case 0xDC: + case ASEQ_OP_CHAN_PANWEIGHT: cmd = (u8)cmdArgs[0]; channel->panChannelWeight = cmd; channel->changes.s.pan = true; break; - case 0xDB: + case ASEQ_OP_CHAN_TRANSPOSE: cmdArgS8 = (s8)cmdArgs[0]; channel->transposition = cmdArgS8; break; - case 0xDA: + case ASEQ_OP_CHAN_ENV: cmdArgU16 = (u16)cmdArgs[0]; channel->adsr.envelope = (EnvelopePoint*)&seqPlayer->seqData[cmdArgU16]; break; - case 0xD9: + case ASEQ_OP_CHAN_RELEASERATE: cmd = (u8)cmdArgs[0]; channel->adsr.decayIndex = cmd; break; - case 0xD8: + case ASEQ_OP_CHAN_VIBDEPTH: cmd = (u8)cmdArgs[0]; channel->vibratoDepthTarget = cmd * 8; channel->vibratoDepthStart = 0; channel->vibratoDepthChangeDelay = 0; break; - case 0xD7: + case ASEQ_OP_CHAN_VIBFREQ: cmd = (u8)cmdArgs[0]; channel->vibratoRateChangeDelay = 0; channel->vibratoRateTarget = cmd * 32; channel->vibratoRateStart = cmd * 32; break; - case 0xE2: + case ASEQ_OP_CHAN_VIBDEPTHGRAD: cmd = (u8)cmdArgs[0]; channel->vibratoDepthStart = cmd * 8; cmd = (u8)cmdArgs[1]; @@ -1363,7 +1369,7 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) { channel->vibratoDepthChangeDelay = cmd * 16; break; - case 0xE1: + case ASEQ_OP_CHAN_VIBFREQGRAD: cmd = (u8)cmdArgs[0]; channel->vibratoRateStart = cmd * 32; cmd = (u8)cmdArgs[1]; @@ -1372,17 +1378,17 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) { channel->vibratoRateChangeDelay = cmd * 16; break; - case 0xE3: + case ASEQ_OP_CHAN_VIBDELAY: cmd = (u8)cmdArgs[0]; channel->vibratoDelay = cmd * 16; break; - case 0xD4: + case ASEQ_OP_CHAN_REVERB: cmd = (u8)cmdArgs[0]; channel->targetReverbVol = cmd; break; - case 0xC6: + case ASEQ_OP_CHAN_FONT: cmd = (u8)cmdArgs[0]; if (seqPlayer->defaultFont != 0xFF) { @@ -1396,56 +1402,56 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) { } break; - case 0xC7: + case ASEQ_OP_CHAN_STSEQ: cmd = (u8)cmdArgs[0]; cmdArgU16 = (u16)cmdArgs[1]; seqData = &seqPlayer->seqData[cmdArgU16]; seqData[0] = (u8)scriptState->value + cmd; break; - case 0xC8: - case 0xCC: - case 0xC9: + case ASEQ_OP_CHAN_SUB: + case ASEQ_OP_CHAN_LDI: + case ASEQ_OP_CHAN_AND: cmdArgS8 = (s8)cmdArgs[0]; - if (cmd == 0xC8) { + if (cmd == ASEQ_OP_CHAN_SUB) { scriptState->value -= cmdArgS8; - } else if (cmd == 0xCC) { + } else if (cmd == ASEQ_OP_CHAN_LDI) { scriptState->value = cmdArgS8; } else { scriptState->value &= cmdArgS8; } break; - case 0xCD: + case ASEQ_OP_CHAN_STOPCHAN: cmd = (u8)cmdArgs[0]; AudioSeq_SequenceChannelDisable(seqPlayer->channels[cmd]); break; - case 0xCA: + case ASEQ_OP_CHAN_MUTEBHV: cmd = (u8)cmdArgs[0]; channel->muteBehavior = cmd; channel->changes.s.volume = true; break; - case 0xCB: + case ASEQ_OP_CHAN_LDSEQ: cmdArgU16 = (u16)cmdArgs[0]; scriptState->value = *(seqPlayer->seqData + (u32)(cmdArgU16 + scriptState->value)); break; - case 0xCE: + case ASEQ_OP_CHAN_LDPTR: cmdArgU16 = (u16)cmdArgs[0]; channel->unk_22 = cmdArgU16; break; - case 0xCF: + case ASEQ_OP_CHAN_STPTRTOSEQ: cmdArgU16 = (u16)cmdArgs[0]; seqData = &seqPlayer->seqData[cmdArgU16]; seqData[0] = (channel->unk_22 >> 8) & 0xFF; seqData[1] = channel->unk_22 & 0xFF; break; - case 0xD0: + case ASEQ_OP_CHAN_EFFECTS: cmd = (u8)cmdArgs[0]; if (cmd & 0x80) { channel->stereoHeadsetEffects = true; @@ -1455,22 +1461,22 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) { channel->stereo.asByte = cmd & 0x7F; break; - case 0xD1: + case ASEQ_OP_CHAN_NOTEALLOC: cmd = (u8)cmdArgs[0]; channel->noteAllocPolicy = cmd; break; - case 0xD2: + case ASEQ_OP_CHAN_SUSTAIN: cmd = (u8)cmdArgs[0]; channel->adsr.sustain = cmd; break; - case 0xE5: + case ASEQ_OP_CHAN_REVERBIDX: cmd = (u8)cmdArgs[0]; channel->reverbIndex = cmd; break; - case 0xE4: + case ASEQ_OP_CHAN_DYNCALL: if (scriptState->value != -1) { data = (*channel->dynTable)[scriptState->value]; //! @bug: Missing a stack depth check here @@ -1480,12 +1486,12 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) { } break; - case 0xE6: + case ASEQ_OP_CHAN_SAMPLEBOOK: cmd = (u8)cmdArgs[0]; channel->bookOffset = cmd; break; - case 0xE7: + case ASEQ_OP_CHAN_LDPARAMS: cmdArgU16 = (u16)cmdArgs[0]; data = &seqPlayer->seqData[cmdArgU16]; channel->muteBehavior = *data++; @@ -1500,7 +1506,7 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) { channel->changes.s.pan = true; break; - case 0xE8: + case ASEQ_OP_CHAN_PARAMS: channel->muteBehavior = cmdArgs[0]; channel->noteAllocPolicy = cmdArgs[1]; cmd = (u8)cmdArgs[2]; @@ -1514,7 +1520,7 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) { channel->changes.s.pan = true; break; - case 0xEC: + case ASEQ_OP_CHAN_VIBRESET: channel->vibratoDepthTarget = 0; channel->vibratoDepthStart = 0; channel->vibratoDepthChangeDelay = 0; @@ -1532,26 +1538,26 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) { channel->freqScale = 1.0f; break; - case 0xE9: + case ASEQ_OP_CHAN_NOTEPRI: AudioSeq_SetChannelPriorities(channel, (u8)cmdArgs[0]); break; - case 0xED: + case ASEQ_OP_CHAN_GAIN: cmd = (u8)cmdArgs[0]; channel->gain = cmd; break; - case 0xB0: + case ASEQ_OP_CHAN_LDFILTER: cmdArgU16 = (u16)cmdArgs[0]; data = seqPlayer->seqData + cmdArgU16; channel->filter = (s16*)data; break; - case 0xB1: + case ASEQ_OP_CHAN_FREEFILTER: channel->filter = NULL; break; - case 0xB3: + case ASEQ_OP_CHAN_FILTER: cmd = cmdArgs[0]; if (channel->filter != NULL) { @@ -1561,34 +1567,34 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) { } break; - case 0xB2: + case ASEQ_OP_CHAN_LDSEQTOPTR: cmdArgU16 = (u16)cmdArgs[0]; channel->unk_22 = *(u16*)(seqPlayer->seqData + (u32)(cmdArgU16 + scriptState->value * 2)); break; - case 0xB4: + case ASEQ_OP_CHAN_PTRTODYNTBL: channel->dynTable = (void*)&seqPlayer->seqData[channel->unk_22]; break; - case 0xB5: + case ASEQ_OP_CHAN_DYNTBLTOPTR: channel->unk_22 = ((u16*)(channel->dynTable))[scriptState->value]; break; - case 0xB6: + case ASEQ_OP_CHAN_DYNTBLV: scriptState->value = (*channel->dynTable)[0][scriptState->value]; break; - case 0xB7: + case ASEQ_OP_CHAN_RANDTOPTR: channel->unk_22 = (cmdArgs[0] == 0) ? gAudioCtx.audioRandom & 0xFFFF : gAudioCtx.audioRandom % cmdArgs[0]; break; - case 0xB8: + case ASEQ_OP_CHAN_RAND: scriptState->value = (cmdArgs[0] == 0) ? gAudioCtx.audioRandom & 0xFFFF : gAudioCtx.audioRandom % cmdArgs[0]; break; - case 0xBD: + case ASEQ_OP_CHAN_RANDPTR: temp2 = AudioThread_NextRandom(); channel->unk_22 = (cmdArgs[0] == 0) ? (temp2 & 0xFFFF) : (temp2 % cmdArgs[0]); channel->unk_22 += cmdArgs[1]; @@ -1597,20 +1603,20 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) { channel->unk_22 = (temp2 << 8) | param; break; - case 0xB9: + case ASEQ_OP_CHAN_RANDVEL: channel->velocityRandomVariance = cmdArgs[0]; break; - case 0xBA: + case ASEQ_OP_CHAN_RANDGATE: channel->gateTimeRandomVariance = cmdArgs[0]; break; - case 0xBB: + case ASEQ_OP_CHAN_COMBFILTER: channel->combFilterSize = cmdArgs[0]; channel->combFilterGain = cmdArgs[1]; break; - case 0xBC: + case ASEQ_OP_CHAN_PTRADD: channel->unk_22 += cmdArgs[0]; break; } @@ -1620,12 +1626,12 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) { if (cmd >= 0x70) { lowBits = cmd & 0x7; - if ((cmd & 0xF8) != 0x70 && lowBits >= 4) { + if ((cmd & 0xF8) != ASEQ_OP_CHAN_STIO && lowBits >= 4) { lowBits = 0; } switch (cmd & 0xF8) { - case 0x80: + case ASEQ_OP_CHAN_TESTLAYER: if (channel->layers[lowBits] != NULL) { scriptState->value = channel->layers[lowBits]->finished; } else { @@ -1633,18 +1639,18 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) { } break; - case 0x88: + case ASEQ_OP_CHAN_LDLAYER: cmdArgU16 = AudioSeq_ScriptReadS16(scriptState); if (!AudioSeq_SeqChannelSetLayer(channel, lowBits)) { channel->layers[lowBits]->scriptState.pc = &seqPlayer->seqData[cmdArgU16]; } break; - case 0x90: + case ASEQ_OP_CHAN_DELLAYER: AudioSeq_SeqLayerFree(channel, lowBits); break; - case 0x98: + case ASEQ_OP_CHAN_DYNLDLAYER: if (scriptState->value != -1 && AudioSeq_SeqChannelSetLayer(channel, lowBits) != -1) { data = (*channel->dynTable)[scriptState->value]; cmdArgU16 = (data[0] << 8) + data[1]; @@ -1652,11 +1658,11 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) { } break; - case 0x70: + case ASEQ_OP_CHAN_STIO: channel->seqScriptIO[lowBits] = scriptState->value; break; - case 0x78: + case ASEQ_OP_CHAN_RLDLAYER: temp1 = AudioSeq_ScriptReadS16(scriptState); if (!AudioSeq_SeqChannelSetLayer(channel, lowBits)) { channel->layers[lowBits]->scriptState.pc = &scriptState->pc[temp1]; @@ -1669,11 +1675,11 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) { lowBits = cmd & 0xF; switch (cmd & 0xF0) { - case 0x00: + case ASEQ_OP_CHAN_CDELAY: channel->delay = lowBits; goto exit_loop; - case 0x10: + case ASEQ_OP_CHAN_LDSAMPLE: if (lowBits < 8) { channel->seqScriptIO[lowBits] = SEQ_IO_VAL_NONE; if (AudioLoad_SlowLoadSample(channel->fontId, scriptState->value, &channel->seqScriptIO[lowBits]) == @@ -1686,28 +1692,28 @@ void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) { } break; - case 0x60: + case ASEQ_OP_CHAN_LDIO: scriptState->value = channel->seqScriptIO[lowBits]; if (lowBits < 2) { channel->seqScriptIO[lowBits] = SEQ_IO_VAL_NONE; } break; - case 0x50: + case ASEQ_OP_CHAN_SUBIO: scriptState->value -= channel->seqScriptIO[lowBits]; break; - case 0x20: + case ASEQ_OP_CHAN_LDCHAN: cmdArgU16 = AudioSeq_ScriptReadS16(scriptState); AudioSeq_SequenceChannelEnable(seqPlayer, lowBits, &seqPlayer->seqData[cmdArgU16]); break; - case 0x30: + case ASEQ_OP_CHAN_STCIO: cmd = AudioSeq_ScriptReadU8(scriptState); seqPlayer->channels[lowBits]->seqScriptIO[cmd] = scriptState->value; break; - case 0x40: + case ASEQ_OP_CHAN_LDCIO: cmd = AudioSeq_ScriptReadU8(scriptState); scriptState->value = seqPlayer->channels[lowBits]->seqScriptIO[cmd]; break; @@ -1780,7 +1786,7 @@ void AudioSeq_SequencePlayerProcessSequence(SequencePlayer* seqPlayer) { cmd = AudioSeq_ScriptReadU8(seqScript); // 0xF2 and above are "flow control" commands, including termination. - if (cmd >= 0xF2) { + if (cmd >= ASEQ_OP_CONTROL_FLOW_FIRST) { delay = AudioSeq_HandleScriptFlowControl( seqPlayer, seqScript, cmd, AudioSeq_GetScriptControlFlowArgument(&seqPlayer->scriptState, cmd)); @@ -1797,7 +1803,7 @@ void AudioSeq_SequencePlayerProcessSequence(SequencePlayer* seqPlayer) { if (cmd >= 0xC0) { switch (cmd) { - case 0xF1: + case ASEQ_OP_SEQ_ALLOCNOTELIST: Audio_NotePoolClear(&seqPlayer->notePool); cmd = AudioSeq_ScriptReadU8(seqScript); Audio_NotePoolFill(&seqPlayer->notePool, cmd); @@ -1813,18 +1819,18 @@ void AudioSeq_SequencePlayerProcessSequence(SequencePlayer* seqPlayer) { if (dummy) {} break; - case 0xF0: + case ASEQ_OP_SEQ_FREENOTELIST: Audio_NotePoolClear(&seqPlayer->notePool); break; - case 0xDF: + case ASEQ_OP_SEQ_TRANSPOSE: seqPlayer->transposition = 0; FALLTHROUGH; - case 0xDE: + case ASEQ_OP_SEQ_RTRANSPOSE: seqPlayer->transposition += (s8)AudioSeq_ScriptReadU8(seqScript); break; - case 0xDD: + case ASEQ_OP_SEQ_TEMPO: seqPlayer->tempo = AudioSeq_ScriptReadU8(seqScript) * SEQTICKS_PER_BEAT; if (seqPlayer->tempo > gAudioCtx.maxTempo) { seqPlayer->tempo = (u16)gAudioCtx.maxTempo; @@ -1835,11 +1841,11 @@ void AudioSeq_SequencePlayerProcessSequence(SequencePlayer* seqPlayer) { } break; - case 0xDC: + case ASEQ_OP_SEQ_TEMPOCHG: seqPlayer->tempoChange = (s8)AudioSeq_ScriptReadU8(seqScript) * SEQTICKS_PER_BEAT; break; - case 0xDA: + case ASEQ_OP_SEQ_VOLMODE: cmd = AudioSeq_ScriptReadU8(seqScript); temp = AudioSeq_ScriptReadS16(seqScript); switch (cmd) { @@ -1859,7 +1865,7 @@ void AudioSeq_SequencePlayerProcessSequence(SequencePlayer* seqPlayer) { } break; - case 0xDB: + case ASEQ_OP_SEQ_VOL: value = AudioSeq_ScriptReadU8(seqScript); switch (seqPlayer->state) { case 1: @@ -1881,47 +1887,47 @@ void AudioSeq_SequencePlayerProcessSequence(SequencePlayer* seqPlayer) { } break; - case 0xD9: + case ASEQ_OP_SEQ_VOLSCALE: seqPlayer->fadeVolumeScale = (s8)AudioSeq_ScriptReadU8(seqScript) / 127.0f; break; - case 0xD7: + case ASEQ_OP_SEQ_INITCHAN: temp = AudioSeq_ScriptReadS16(seqScript); AudioSeq_SequencePlayerSetupChannels(seqPlayer, temp); break; - case 0xD6: + case ASEQ_OP_SEQ_FREECHAN: AudioSeq_ScriptReadS16(seqScript); break; - case 0xD5: + case ASEQ_OP_SEQ_MUTESCALE: seqPlayer->muteVolumeScale = (s8)AudioSeq_ScriptReadU8(seqScript) / 127.0f; break; - case 0xD4: + case ASEQ_OP_SEQ_MUTE: seqPlayer->muted = true; break; - case 0xD3: + case ASEQ_OP_SEQ_MUTEBHV: seqPlayer->muteBehavior = AudioSeq_ScriptReadU8(seqScript); break; - case 0xD1: - case 0xD2: + case ASEQ_OP_SEQ_LDSHORTGATEARR: + case ASEQ_OP_SEQ_LDSHORTVELARR: temp = AudioSeq_ScriptReadS16(seqScript); data3 = &seqPlayer->seqData[temp]; - if (cmd == 0xD2) { + if (cmd == ASEQ_OP_SEQ_LDSHORTVELARR) { seqPlayer->shortNoteVelocityTable = data3; } else { seqPlayer->shortNoteGateTimeTable = data3; } break; - case 0xD0: + case ASEQ_OP_SEQ_NOTEALLOC: seqPlayer->noteAllocPolicy = AudioSeq_ScriptReadU8(seqScript); break; - case 0xCE: + case ASEQ_OP_SEQ_RAND: cmd = AudioSeq_ScriptReadU8(seqScript); if (cmd == 0) { seqScript->value = (gAudioCtx.audioRandom >> 2) & 0xFF; @@ -1930,7 +1936,7 @@ void AudioSeq_SequencePlayerProcessSequence(SequencePlayer* seqPlayer) { } break; - case 0xCD: + case ASEQ_OP_SEQ_DYNCALL: temp = AudioSeq_ScriptReadS16(seqScript); if ((seqScript->value != -1) && (seqScript->depth != 3)) { data = seqPlayer->seqData + (u32)(temp + (seqScript->value << 1)); @@ -1942,39 +1948,39 @@ void AudioSeq_SequencePlayerProcessSequence(SequencePlayer* seqPlayer) { } break; - case 0xCC: + case ASEQ_OP_SEQ_LDI: seqScript->value = AudioSeq_ScriptReadU8(seqScript); break; - case 0xC9: + case ASEQ_OP_SEQ_AND: seqScript->value &= AudioSeq_ScriptReadU8(seqScript); break; - case 0xC8: + case ASEQ_OP_SEQ_SUB: seqScript->value -= AudioSeq_ScriptReadU8(seqScript); break; - case 0xC7: + case ASEQ_OP_SEQ_STSEQ: cmd = AudioSeq_ScriptReadU8(seqScript); temp = AudioSeq_ScriptReadS16(seqScript); data2 = &seqPlayer->seqData[temp]; *data2 = (u8)seqScript->value + cmd; break; - case 0xC6: + case ASEQ_OP_SEQ_STOP: seqPlayer->stopScript = true; return; - case 0xC5: + case ASEQ_OP_SEQ_SCRIPTCTR: seqPlayer->scriptCounter = (u16)AudioSeq_ScriptReadS16(seqScript); break; - case 0xEF: + case ASEQ_OP_SEQ_EF: AudioSeq_ScriptReadS16(seqScript); AudioSeq_ScriptReadU8(seqScript); break; - case 0xC4: + case ASEQ_OP_SEQ_RUNSEQ: cmd = AudioSeq_ScriptReadU8(seqScript); if (cmd == 0xFF) { cmd = seqPlayer->playerIdx; @@ -1992,47 +1998,47 @@ void AudioSeq_SequencePlayerProcessSequence(SequencePlayer* seqPlayer) { cmdLowBits = cmd & 0x0F; switch (cmd & 0xF0) { - case 0x00: + case ASEQ_OP_SEQ_TESTCHAN: seqScript->value = seqPlayer->channels[cmdLowBits]->enabled ^ 1; break; - case 0x50: + case ASEQ_OP_SEQ_SUBIO: seqScript->value -= seqPlayer->seqScriptIO[cmdLowBits]; break; - case 0x70: + case ASEQ_OP_SEQ_STIO: seqPlayer->seqScriptIO[cmdLowBits] = seqScript->value; break; - case 0x80: + case ASEQ_OP_SEQ_LDIO: seqScript->value = seqPlayer->seqScriptIO[cmdLowBits]; if (cmdLowBits < 2) { seqPlayer->seqScriptIO[cmdLowBits] = SEQ_IO_VAL_NONE; } break; - case 0x40: + case ASEQ_OP_SEQ_STOPCHAN: AudioSeq_SequenceChannelDisable(seqPlayer->channels[cmdLowBits]); break; - case 0x90: + case ASEQ_OP_SEQ_LDCHAN: temp = AudioSeq_ScriptReadS16(seqScript); AudioSeq_SequenceChannelEnable(seqPlayer, cmdLowBits, (void*)&seqPlayer->seqData[temp]); break; - case 0xA0: + case ASEQ_OP_SEQ_RLDCHAN: tempS = AudioSeq_ScriptReadS16(seqScript); AudioSeq_SequenceChannelEnable(seqPlayer, cmdLowBits, (void*)&seqScript->pc[tempS]); break; - case 0xB0: + case ASEQ_OP_SEQ_LDSEQ: cmd = AudioSeq_ScriptReadU8(seqScript); temp = AudioSeq_ScriptReadS16(seqScript); data2 = &seqPlayer->seqData[temp]; AudioLoad_SlowLoadSeq(cmd, data2, &seqPlayer->seqScriptIO[cmdLowBits]); break; - case 0x60: + case ASEQ_OP_SEQ_LDRES: cmd = AudioSeq_ScriptReadU8(seqScript); value = cmd; temp = AudioSeq_ScriptReadU8(seqScript); diff --git a/src/audio/sequence.c b/src/audio/sequence.c index c1530377a2..a6d5003cc4 100644 --- a/src/audio/sequence.c +++ b/src/audio/sequence.c @@ -20,6 +20,7 @@ #include "ultra64.h" #include "global.h" #include "ultra64/abi.h" +#include "seqcmd.h" // Direct audio command (skips the queueing system) #define SEQCMD_SET_SEQPLAYER_VOLUME_NOW(seqPlayerIndex, duration, volume) \ diff --git a/src/audio/session_init.c b/src/audio/session_init.c index a6e67f40d4..d04a955bca 100644 --- a/src/audio/session_init.c +++ b/src/audio/session_init.c @@ -1,4 +1,8 @@ +#include "buffers.h" +#include "z64audio.h" + #include "global.h" + #include "assets/audio/sequence_sizes.h" #include "assets/audio/soundfont_sizes.h" diff --git a/src/boot/assert.c b/src/boot/assert.c index e58f2cc1e7..661f7db873 100644 --- a/src/boot/assert.c +++ b/src/boot/assert.c @@ -1,4 +1,5 @@ -#include "global.h" +#include "libc64/sprintf.h" +#include "assert.h" #include "fault.h" NORETURN void __assert(const char* assertion, const char* file, int line) { diff --git a/src/boot/boot_main.c b/src/boot/boot_main.c index 0c1eeea49e..75c1b9cf89 100644 --- a/src/boot/boot_main.c +++ b/src/boot/boot_main.c @@ -1,12 +1,15 @@ -#include "global.h" #include "boot.h" #include "stack.h" +#include "stackcheck.h" #if PLATFORM_N64 #include "cic6105.h" #endif +#include "z_locale.h" +#include "z64thread.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" \ - "ntsc-1.2:128" +#include "global.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:128" StackEntry sBootThreadInfo; OSThread sIdleThread; diff --git a/src/boot/cic6105.c b/src/boot/cic6105.c index 5ef47053fc..29b04f2a8a 100644 --- a/src/boot/cic6105.c +++ b/src/boot/cic6105.c @@ -1,7 +1,9 @@ -#pragma increment_block_number "ntsc-1.2:128" - +#pragma increment_block_number "ntsc-1.2:0" #include "global.h" +#include "audiomgr.h" #include "cic6105.h" +#include "regs.h" +#include "sched.h" #include "fault.h" s32 func_80001714(void); diff --git a/src/boot/idle.c b/src/boot/idle.c index 508fd16c4e..be4c9f7cbf 100644 --- a/src/boot/idle.c +++ b/src/boot/idle.c @@ -1,9 +1,16 @@ -#include "global.h" +#include "buffers.h" +#include "main.h" +#include "segment_symbols.h" #include "stack.h" +#include "stackcheck.h" #include "terminal.h" #include "versions.h" +#include "z64thread.h" -#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 ntsc-1.2:64" +#include "global.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" \ + "ntsc-1.0:138 ntsc-1.1:138 ntsc-1.2:138 pal-1.0:136 pal-1.1:136" OSThread sMainThread; #if OOT_VERSION < PAL_1_0 diff --git a/src/boot/is_debug.c b/src/boot/is_debug.c index 5415b8a7b3..912b759843 100644 --- a/src/boot/is_debug.c +++ b/src/boot/is_debug.c @@ -1,4 +1,14 @@ #include "global.h" +#include "attributes.h" + +typedef struct ISVDbg { + /* 0x00 */ u32 magic; // "IS64" + /* 0x04 */ u32 get; + /* 0x08 */ u8 unk_08[0xC]; + /* 0x14 */ u32 put; + /* 0x18 */ u8 unk_18[0x8]; + /* 0x20 */ u8 data[0xFFE0]; +} ISVDbg; // size = 0x10000 #define gISVDbgPrnAdrs ((ISVDbg*)0xB3FF0000) #define ASCII_TO_U32(a, b, c, d) ((u32)((a << 24) | (b << 16) | (c << 8) | (d << 0))) diff --git a/src/boot/yaz0.c b/src/boot/yaz0.c index 5e5ed26eb1..2d6a4ec7c5 100644 --- a/src/boot/yaz0.c +++ b/src/boot/yaz0.c @@ -1,7 +1,7 @@ #include "global.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" \ - "ntsc-1.2:128 pal-1.1:128" +#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:128" \ + "pal-1.1:128" ALIGNED(16) u8 sYaz0DataBuffer[0x400]; u8* sYaz0DataBufferEnd; @@ -51,6 +51,13 @@ void* Yaz0_NextDMA(u8* curSrcPos) { return dst; } +typedef struct Yaz0Header { + /* 0x00 */ char magic[4]; // Yaz0 + /* 0x04 */ u32 decSize; + /* 0x08 */ u32 compInfoOffset; // only used in mio0 + /* 0x0C */ u32 uncompDataOffset; // only used in mio0 +} Yaz0Header; // size = 0x10 + void Yaz0_DecompressImpl(u8* src, u8* dst) { Yaz0Header* header = (Yaz0Header*)src; u32 bitIdx = 0; diff --git a/src/boot/z_locale.c b/src/boot/z_locale.c index f320f1e0f4..f54be014ba 100644 --- a/src/boot/z_locale.c +++ b/src/boot/z_locale.c @@ -1,11 +1,30 @@ -#include "global.h" +#include "libu64/debug.h" +#include "alignment.h" +#include "line_numbers.h" +#include "padmgr.h" #include "region.h" #include "terminal.h" #include "versions.h" -#include "line_numbers.h" +#include "z_locale.h" + +#include "macros.h" +#include "global.h" s32 gCurrentRegion = 0; +typedef struct LocaleCartInfo { + /* 0x00 */ char name[0x18]; + /* 0x18 */ u32 mediaFormat; + /* 0x1C */ union { + struct { + u16 cartId; + u8 countryCode; + u8 version; + }; + u32 regionInfo; + }; +} LocaleCartInfo; // size = 0x20 + void Locale_Init(void) { #if !PLATFORM_GC ALIGNED(4) u8 regionInfo[4]; diff --git a/src/boot/z_std_dma.c b/src/boot/z_std_dma.c index 8fe2982e7b..7cbf009946 100644 --- a/src/boot/z_std_dma.c +++ b/src/boot/z_std_dma.c @@ -18,17 +18,25 @@ * There are some additional provisions to ensure that audio DMA is particularly high-speed, the audio data is assumed * to be uncompressed and the request queue and address translation is skipped. */ -#include "global.h" +#include "libc64/sleep.h" +#include "libc64/sprintf.h" +#include "libu64/debug.h" +#include "attributes.h" #include "fault.h" -#include "stack.h" -#include "terminal.h" #include "line_numbers.h" #if PLATFORM_N64 #include "n64dd.h" #endif +#include "segment_symbols.h" +#include "stack.h" +#include "stackcheck.h" +#include "terminal.h" +#include "z64thread.h" + +#include "global.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" \ - "ntsc-1.2:70 pal-1.0:68 pal-1.1:68" + "ntsc-1.2:12 pal-1.0:10 pal-1.1:10" StackEntry sDmaMgrStackInfo; OSMesgQueue sDmaMgrMsgQueue; @@ -75,7 +83,7 @@ const char* sDmaMgrFileNames[] = { * -1 if the first character that does not match has a smaller value in str1 than str2, * +1 if the first character that does not match has a greater value in str1 than str2 */ -s32 DmaMgr_StrCmp(const char* str1, const char* str2) { +s32 DmaMgr_StrCmp(const u8* str1, const u8* str2) { while (*str1 != '\0') { if (*str1 > *str2) { return 1; @@ -338,7 +346,8 @@ const char* DmaMgr_GetFileName(uintptr_t vrom) { return "(unknown)"; } - if (DmaMgr_StrCmp(ret, "kanji") == 0 || DmaMgr_StrCmp(ret, "link_animetion") == 0) { + if (DmaMgr_StrCmp((const u8*)ret, (const u8*)"kanji") == 0 || + DmaMgr_StrCmp((const u8*)ret, (const u8*)"link_animetion") == 0) { // This check may be related to these files being too large to be loaded all at once, however a NULL filename // does not prevent them from being loaded. return NULL; @@ -379,7 +388,8 @@ void DmaMgr_ProcessRequest(DmaRequest* req) { if (0) { #if !PLATFORM_GC // Based on the MM Debug ROM, these strings are part of the condition for the empty if statement below - if (DmaMgr_StrCmp("", "kanji") != 0 && DmaMgr_StrCmp("", "link_animetion") != 0) + if (DmaMgr_StrCmp((const u8*)"", (const u8*)"kanji") != 0 && + DmaMgr_StrCmp((const u8*)"", (const u8*)"link_animetion") != 0) #endif { // The string is defined in .rodata of debug builds but not used, suggesting a debug print is here diff --git a/src/boot/zlib.c b/src/boot/zlib.c deleted file mode 100644 index 8b13789179..0000000000 --- a/src/boot/zlib.c +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/buffers/audio_heap.c b/src/buffers/audio_heap.c index b6474ccc6a..b8e0e336e7 100644 --- a/src/buffers/audio_heap.c +++ b/src/buffers/audio_heap.c @@ -1,3 +1,5 @@ -#include "z64.h" +#include "ultra64/ultratypes.h" +#include "alignment.h" +#include "buffers.h" ALIGNED(16) u8 gAudioHeap[0x38000]; diff --git a/src/buffers/gfxbuffers.c b/src/buffers/gfxbuffers.c index fa466bc829..1806570ae4 100644 --- a/src/buffers/gfxbuffers.c +++ b/src/buffers/gfxbuffers.c @@ -1,4 +1,7 @@ -#include "z64.h" +#include "alignment.h" +#include "buffers.h" +#include "gfx.h" +#include "ultra64.h" ALIGNED(16) u64 gGfxSPTaskOutputBuffer[0x3000]; diff --git a/src/buffers/zbuffer.c b/src/buffers/zbuffer.c index d9e5d2784a..0eda889219 100644 --- a/src/buffers/zbuffer.c +++ b/src/buffers/zbuffer.c @@ -1,3 +1,6 @@ -#include "z64.h" +#include "alignment.h" +#include "buffers.h" +#include "macros.h" +#include "ultra64/ultratypes.h" ALIGNED(64) u16 gZBuffer[SCREEN_HEIGHT][SCREEN_WIDTH]; diff --git a/src/code/PreRender.c b/src/code/PreRender.c index 8e002a5a18..9dcb28f3a4 100644 --- a/src/code/PreRender.c +++ b/src/code/PreRender.c @@ -5,8 +5,15 @@ * buffer copies and coverage drawing. Also contains software implementations of the Video Interface anti-aliasing and * divot filters. */ -#include "global.h" +#include "libu64/debug.h" #include "alloca.h" +#include "color.h" +#include "gfx.h" +#include "prerender.h" +#include "regs.h" + +#include "macros.h" +#include "global.h" void PreRender_SetValuesSave(PreRender* this, u32 width, u32 height, void* fbuf, void* zbuf, void* cvg) { this->widthSave = width; diff --git a/src/code/TwoHeadGfxArena.c b/src/code/TwoHeadGfxArena.c index ce7b8a45fb..c3f2216fad 100644 --- a/src/code/TwoHeadGfxArena.c +++ b/src/code/TwoHeadGfxArena.c @@ -8,7 +8,7 @@ * * @see TwoHeadArena.c */ -#include "global.h" +#include "thga.h" void THGA_Init(TwoHeadGfxArena* thga, void* start, size_t size) { THA_Init(&thga->tha, start, size); diff --git a/src/code/audio_thread_manager.c b/src/code/audio_thread_manager.c index 1dc72642f3..8837601f8f 100644 --- a/src/code/audio_thread_manager.c +++ b/src/code/audio_thread_manager.c @@ -5,7 +5,12 @@ * and sending the audio rsp tasks generated by the driver to the task scheduler. */ -#include "global.h" +#include "audiomgr.h" +#include "regs.h" +#include "speed_meter.h" +#include "z64dma.h" + +#include "macros.h" void AudioMgr_NotifyTaskDone(AudioMgr* audioMgr) { AudioTask* task = audioMgr->rspTask; diff --git a/src/code/code_n64dd_800AD4C0.c b/src/code/code_n64dd_800AD4C0.c index 3f1488c66e..4c4e0db0e3 100644 --- a/src/code/code_n64dd_800AD4C0.c +++ b/src/code/code_n64dd_800AD4C0.c @@ -1,6 +1,10 @@ -#include "global.h" #include "fault.h" #include "n64dd.h" +#include "regs.h" +#include "segmented_address.h" +#include "z64actor.h" +#include "z64cutscene.h" +#include "z64save.h" n64ddStruct_800FEE70_pointers D_800FEE70 = { func_801C7C1C, diff --git a/src/code/db_camera.c b/src/code/db_camera.c index 1045df9ca2..c7828e7160 100644 --- a/src/code/db_camera.c +++ b/src/code/db_camera.c @@ -1,4 +1,21 @@ -#include "global.h" +#include "libu64/gfxprint.h" +#include "attributes.h" +#include "controller.h" +#include "db_camera.h" +#include "debug_arena.h" +#include "letterbox.h" +#include "mempak.h" +#include "regs.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64camera.h" +#include "z64cutscene.h" +#include "z64cutscene_spline.h" +#include "z64debug.h" +#include "z64debug_display.h" +#include "z64olib.h" +#include "z64play.h" +#include "z64save.h" #define DEBUG_CAM_CONTROLLER_PORT 2 diff --git a/src/code/debug_malloc.c b/src/code/debug_malloc.c index b6aa81b329..acfca47ca5 100644 --- a/src/code/debug_malloc.c +++ b/src/code/debug_malloc.c @@ -1,5 +1,7 @@ -#include "global.h" #include "libc64/os_malloc.h" +#include "debug_arena.h" + +#include "macros.h" #define LOG_SEVERITY_NOLOG 0 #define LOG_SEVERITY_ERROR 2 diff --git a/src/code/fault_gc.c b/src/code/fault_gc.c index 059162c162..29d04071c6 100644 --- a/src/code/fault_gc.c +++ b/src/code/fault_gc.c @@ -40,14 +40,21 @@ * DPad-Up may be pressed to enable sending fault pages over osSyncPrintf as well as displaying them on-screen. * DPad-Down disables sending fault pages over osSyncPrintf. */ -#pragma increment_block_number "gc-eu:160 gc-eu-mq:160 gc-eu-mq-dbg:160 gc-jp:160 gc-jp-ce:160 gc-jp-mq:160 gc-us:160" \ - "gc-us-mq:160" +#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-eu-mq-dbg:96 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128" \ + "gc-us-mq:128 ique-cn:128" #include "global.h" +#include "libc64/sleep.h" +#include "libc64/sprintf.h" #include "alloca.h" +#include "controller.h" #include "fault.h" #include "stack.h" +#include "stackcheck.h" #include "terminal.h" +#include "z64thread.h" + +#include "macros.h" void Fault_Init(void); void Fault_SetOsSyncPrintfEnabled(u32 enabled); diff --git a/src/code/fault_n64.c b/src/code/fault_n64.c index 720307c0a1..ecfc87f10f 100644 --- a/src/code/fault_n64.c +++ b/src/code/fault_n64.c @@ -1,12 +1,19 @@ -#pragma increment_block_number "ntsc-1.0:0 ntsc-1.1:0 ntsc-1.2:0 pal-1.0:0 pal-1.1:0" - -#include "global.h" -#include "fault.h" #include "libc64/os_malloc.h" +#include "libc64/sleep.h" +#include "libc64/sprintf.h" +#include "controller.h" +#include "fault.h" +#include "padmgr.h" +#include "segmented_address.h" #include "stack.h" +#include "stackcheck.h" #include "terminal.h" +#include "z64thread.h" -#pragma increment_block_number "ntsc-1.0:192 ntsc-1.1:192 ntsc-1.2:192 pal-1.0:192 pal-1.1:192" +#include "macros.h" +#include "global.h" + +#pragma increment_block_number "ntsc-1.0:128 ntsc-1.1:128 ntsc-1.2:128 pal-1.0:128 pal-1.1:128" typedef struct FaultMgr { OSThread thread; diff --git a/src/code/flg_set.c b/src/code/flg_set.c index de5b2a3d3f..5f4316d7f0 100644 --- a/src/code/flg_set.c +++ b/src/code/flg_set.c @@ -1,4 +1,10 @@ -#include "global.h" +#include "libu64/gfxprint.h" +#include "libu64/pad.h" +#include "gfx.h" +#include "gfxalloc.h" +#include "controller.h" +#include "z64play.h" +#include "z64save.h" typedef struct FlagSetEntry { /* 0x00 */ u16* value; diff --git a/src/code/game.c b/src/code/game.c index 4367839528..6db35e5630 100644 --- a/src/code/game.c +++ b/src/code/game.c @@ -1,12 +1,34 @@ -#include "global.h" +#include "libc64/malloc.h" +#include "libu64/debug.h" +#include "libu64/gfxprint.h" +#include "audiomgr.h" +#include "buffers.h" +#include "controller.h" +#include "debug_arena.h" +#include "gfx.h" +#include "gfxalloc.h" #include "fault.h" #include "libc64/os_malloc.h" -#include "terminal.h" -#include "versions.h" #include "line_numbers.h" #if PLATFORM_N64 #include "n64dd.h" #endif +#include "padmgr.h" +#include "regs.h" +#include "rumble.h" +#include "speed_meter.h" +#include "sys_debug_controller.h" +#include "terminal.h" +#include "versions.h" +#include "vi_mode.h" +#include "zelda_arena.h" +#include "z64debug.h" +#include "z64dma.h" +#include "z64game.h" +#include "z64vis.h" + +#include "macros.h" +#include "global.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" diff --git a/src/code/gamealloc.c b/src/code/gamealloc.c index d625bc65f7..47591fd00b 100644 --- a/src/code/gamealloc.c +++ b/src/code/gamealloc.c @@ -1,4 +1,8 @@ -#include "global.h" +#include "libc64/malloc.h" +#include "libu64/debug.h" +#include "gamealloc.h" + +#include "macros.h" void GameAlloc_Log(GameAlloc* this) { GameAllocEntry* iter; diff --git a/src/code/graph.c b/src/code/graph.c index 046e04d374..4fc7a56ac9 100644 --- a/src/code/graph.c +++ b/src/code/graph.c @@ -1,15 +1,39 @@ -#include "global.h" +#include "libc64/malloc.h" +#include "libc64/sprintf.h" +#include "libu64/debug.h" + +#include "buffers.h" +#include "console_logo_state.h" +#include "controller.h" +#include "gfx.h" #include "fault.h" +#include "file_select_state.h" +#include "line_numbers.h" +#include "map_select_state.h" +#include "prenmi_buff.h" +#include "prenmi_state.h" +#include "regs.h" +#include "setup_state.h" +#include "speed_meter.h" +#include "sys_debug_controller.h" +#include "sys_ucode.h" #include "terminal.h" +#include "title_setup_state.h" #include "ucode_disas.h" #include "versions.h" -#include "line_numbers.h" +#include "z_game_dlftbls.h" +#include "z64audio.h" +#include "z64save.h" +#include "z64play.h" + +#include "macros.h" +#include "global.h" #define GFXPOOL_HEAD_MAGIC 0x1234 #define GFXPOOL_TAIL_MAGIC 0x5678 -#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:160" \ - "ntsc-1.1:160 ntsc-1.2:160 pal-1.0:160 pal-1.1:160" +#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:128" \ + "ntsc-1.0:96 ntsc-1.1:96 ntsc-1.2:96 pal-1.0:96 pal-1.1:96" /** * The time at which the previous `Graph_Update` ended. diff --git a/src/code/irqmgr.c b/src/code/irqmgr.c index 59d7a41cfa..d741612e28 100644 --- a/src/code/irqmgr.c +++ b/src/code/irqmgr.c @@ -32,9 +32,14 @@ * * @see sched.c */ -#include "global.h" +#include "libu64/debug.h" +#include "irqmgr.h" +#include "stackcheck.h" #include "terminal.h" #include "versions.h" +#include "z64thread.h" + +#include "macros.h" vu32 gIrqMgrResetStatus = IRQ_RESET_STATUS_IDLE; volatile OSTime sIrqMgrResetTime = 0; diff --git a/src/code/jpegdecoder.c b/src/code/jpegdecoder.c index a29752511c..338c6b15d9 100644 --- a/src/code/jpegdecoder.c +++ b/src/code/jpegdecoder.c @@ -1,4 +1,4 @@ -#include "global.h" +#include "jpeg.h" s32 JpegDecoder_ProcessMcu(JpegHuffmanTable* hTable0, JpegHuffmanTable* hTable1, u16* mcu, s16* unk); s32 JpegDecoder_ParseNextSymbol(JpegHuffmanTable* hTable, s16* outCoeff, s8* outZeroCount); diff --git a/src/code/jpegutils.c b/src/code/jpegutils.c index 00c0406096..7f5442fd9b 100644 --- a/src/code/jpegutils.c +++ b/src/code/jpegutils.c @@ -1,4 +1,4 @@ -#include "global.h" +#include "jpeg.h" void JpegUtils_ProcessQuantizationTable(u8* dqt, JpegQuantizationTable* qt, u8 count) { u8 i; diff --git a/src/code/listalloc.c b/src/code/listalloc.c index 7560c20c64..9ccaa443d1 100644 --- a/src/code/listalloc.c +++ b/src/code/listalloc.c @@ -1,4 +1,5 @@ -#include "global.h" +#include "libc64/malloc.h" +#include "listalloc.h" ListAlloc* ListAlloc_Init(ListAlloc* this) { this->prev = NULL; diff --git a/src/code/main.c b/src/code/main.c index d2c3c9f8bc..8a52882d07 100644 --- a/src/code/main.c +++ b/src/code/main.c @@ -5,26 +5,36 @@ extern uintptr_t gSegments[NUM_SEGMENTS]; #pragma increment_block_number "gc-eu:252 gc-eu-mq:252 gc-jp:252 gc-jp-ce:252 gc-jp-mq:252 gc-us:252 gc-us-mq:252" \ - "ntsc-1.0:128 ntsc-1.1:128 ntsc-1.2:128 pal-1.0:128 pal-1.1:128" + "ique-cn:252 ntsc-1.0:128 ntsc-1.1:128 ntsc-1.2:128 pal-1.0:128 pal-1.1:128" extern struct PreNmiBuff* gAppNmiBufferPtr; extern struct Scheduler gScheduler; extern struct PadMgr gPadMgr; extern struct IrqMgr gIrqMgr; -#include "global.h" +#include "libc64/malloc.h" +#include "audiomgr.h" +#include "debug_arena.h" #include "fault.h" +#include "padmgr.h" +#include "prenmi_buff.h" +#include "regs.h" #include "segmented_address.h" #include "stack.h" +#include "stackcheck.h" #include "terminal.h" #include "versions.h" #if PLATFORM_N64 #include "cic6105.h" #include "n64dd.h" #endif +#include "z64debug.h" +#include "z64thread.h" -#pragma increment_block_number "gc-eu:144 gc-eu-mq:144 gc-jp:144 gc-jp-ce:144 gc-jp-mq:144 gc-us:144 gc-us-mq:144" \ - "ntsc-1.0:130 ntsc-1.1:130 ntsc-1.2:130 pal-1.0:128 pal-1.1:128" +#include "global.h" + +#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 ique-cn:32" \ + "ntsc-1.0:13 ntsc-1.1:13 ntsc-1.2:13 pal-1.0:11 pal-1.1:11" extern u8 _buffersSegmentEnd[]; diff --git a/src/code/mempak.c b/src/code/mempak.c index 8d68be5ca3..f316f0ea31 100644 --- a/src/code/mempak.c +++ b/src/code/mempak.c @@ -7,7 +7,10 @@ * Each file is assigned an uppercase ASCII letter as an identifier, the game name for each is marked as * 'ZELDA DEMO TOOL', encoded according to the N64 Font Code described in section 26.3 of the N64 Programming Manual. */ -#include "global.h" +#include "mempak.h" +#include "padmgr.h" + +#include "macros.h" #define MEMPAK_MAX_FILES 11 diff --git a/src/code/padmgr.c b/src/code/padmgr.c index b5f76b7217..9e6d1ae14a 100644 --- a/src/code/padmgr.c +++ b/src/code/padmgr.c @@ -28,7 +28,10 @@ * `osContStartReadData` to receiving the data. By running this on a separate thread to the game state, work can be * done while waiting for this operation to complete. */ -#include "global.h" +#include "libu64/debug.h" +#include "libu64/padsetup.h" +#include "macros.h" +#include "padmgr.h" #include "fault.h" #include "terminal.h" #include "line_numbers.h" diff --git a/src/code/sched.c b/src/code/sched.c index 58aa627a71..4fb5a33760 100644 --- a/src/code/sched.c +++ b/src/code/sched.c @@ -39,9 +39,18 @@ * * @see irqmgr.c */ -#include "global.h" +#include "libu64/debug.h" #include "fault.h" +#include "irqmgr.h" +#include "main.h" +#include "regs.h" +#include "sched.h" +#include "speed_meter.h" #include "versions.h" +#include "z64thread.h" + +#include "macros.h" +#include "global.h" #define RSP_DONE_MSG 667 #define RDP_DONE_MSG 668 @@ -62,8 +71,6 @@ vs32 sSchedDebugPrintfEnabled = false; PRINTF #elif IDO_PRINTF_WORKAROUND #define SCHED_DEBUG_PRINTF(args) (void)0 -#elif defined(__GNUC__) && __GNUC__ < 3 -#define SCHED_DEBUG_PRINTF(format, args...) (void)0 #else #define SCHED_DEBUG_PRINTF(format, ...) (void)0 #endif diff --git a/src/code/shrink_window.c b/src/code/shrink_window.c index ad8da58d35..e952a0c3fd 100644 --- a/src/code/shrink_window.c +++ b/src/code/shrink_window.c @@ -1,4 +1,7 @@ -#include "global.h" +#include "letterbox.h" +#include "regs.h" + +#include "macros.h" typedef enum LetterboxState { /* 0 */ LETTERBOX_STATE_IDLE, diff --git a/src/code/speed_meter.c b/src/code/speed_meter.c index d282e34953..dabfac7aaa 100644 --- a/src/code/speed_meter.c +++ b/src/code/speed_meter.c @@ -1,8 +1,14 @@ -#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.2:128 pal-1.0:128 pal-1.1:128" - -#include "global.h" +#include "libc64/malloc.h" +#include "libu64/debug.h" +#include "gfx.h" +#include "regs.h" +#include "speed_meter.h" #include "terminal.h" +#include "zelda_arena.h" +#include "z64game.h" +#include "z64view.h" /** * How much time the audio update on the audio thread (`AudioThread_Update`) took in total, between scheduling the last diff --git a/src/code/sys_cfb.c b/src/code/sys_cfb.c index c3b29d7ac5..4e4bc06f25 100644 --- a/src/code/sys_cfb.c +++ b/src/code/sys_cfb.c @@ -1,5 +1,8 @@ -#include "global.h" +#include "ultra64.h" +#include "libu64/debug.h" +#include "attributes.h" #include "line_numbers.h" +#include "global.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" \ "pal-1.1:128" diff --git a/src/code/sys_debug_controller.c b/src/code/sys_debug_controller.c index eb1398ff24..06ce8bf6cd 100644 --- a/src/code/sys_debug_controller.c +++ b/src/code/sys_debug_controller.c @@ -1,4 +1,7 @@ -#include "global.h" +#include "sys_debug_controller.h" +#include "stdbool.h" +#include "ultra64/ultratypes.h" +#include "padmgr.h" u32 gIsCtrlr2Valid = false; diff --git a/src/code/sys_freeze.c b/src/code/sys_freeze.c index f7cb515cfe..ea50a89491 100644 --- a/src/code/sys_freeze.c +++ b/src/code/sys_freeze.c @@ -1,6 +1,10 @@ -#include "global.h" +#include "libc64/sleep.h" +#include "attributes.h" +#include "sys_freeze.h" #include "terminal.h" +#include "macros.h" + NORETURN void func_800D31A0(void) { PRINTF(VT_FGCOL(RED) "\n**** Freeze!! ****\n" VT_RST); for (;;) { diff --git a/src/code/sys_math3d.c b/src/code/sys_math3d.c index 203b9f2e2a..4a1ddaf0bb 100644 --- a/src/code/sys_math3d.c +++ b/src/code/sys_math3d.c @@ -5,8 +5,8 @@ #include "macros.h" #include "sys_math3d.h" -#pragma increment_block_number "gc-eu:99 gc-eu-mq:99 gc-jp:99 gc-jp-ce:99 gc-jp-mq:99 gc-us:99 gc-us-mq:99" \ - "ntsc-1.0:80 ntsc-1.1:80 ntsc-1.2:79 pal-1.0:80 pal-1.1:80" +#pragma increment_block_number "gc-eu:120 gc-eu-mq:120 gc-jp:120 gc-jp-ce:120 gc-jp-mq:120 gc-us:120 gc-us-mq:120" \ + "ique-cn:120 ntsc-1.0:96 ntsc-1.1:96 ntsc-1.2:96 pal-1.0:96 pal-1.1:96" s32 Math3D_LineVsLineClosestTwoPoints(Vec3f* lineAPointA, Vec3f* lineAPointB, Vec3f* lineBPointA, Vec3f* lineBPointB, Vec3f* lineAClosestToB, Vec3f* lineBClosestToA); diff --git a/src/code/sys_math3d_draw.c b/src/code/sys_math3d_draw.c index 76651c825e..7781a79e2e 100644 --- a/src/code/sys_math3d_draw.c +++ b/src/code/sys_math3d_draw.c @@ -1,4 +1,5 @@ -#include "z64.h" +#include "sys_math3d.h" +#include "z64play.h" void Math3D_DrawSphere(PlayState* play, Sphere16* sph) { } diff --git a/src/code/sys_math_atan.c b/src/code/sys_math_atan.c index 0647745b06..8dabed7d72 100644 --- a/src/code/sys_math_atan.c +++ b/src/code/sys_math_atan.c @@ -1,3 +1,4 @@ +#include "sys_math.h" #include "z64math.h" #include "macros.h" diff --git a/src/code/sys_matrix.c b/src/code/sys_matrix.c index 19db7799e6..081a292765 100644 --- a/src/code/sys_matrix.c +++ b/src/code/sys_matrix.c @@ -1,17 +1,24 @@ -#include "global.h" +#include "libc64/math64.h" +#include "gfx.h" #if DEBUG_FEATURES #include "fault.h" #endif +#include "macros.h" +#include "sys_matrix.h" +#include "ultra64.h" +#include "z_lib.h" +#include "z64game.h" +#include "z64skin_matrix.h" // clang-format off -Mtx gMtxClear = gdSPDefMtx( +Mtx gIdentityMtx = gdSPDefMtx( 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f ); -MtxF gMtxFClear = { +MtxF gIdentityMtxF = { 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, @@ -19,9 +26,6 @@ MtxF gMtxFClear = { }; // clang-format on -#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" \ - "pal-1.1:128" - MtxF* sMatrixStack; // "Matrix_stack" MtxF* sCurrentMatrix; // "Matrix_now" diff --git a/src/code/sys_rumble.c b/src/code/sys_rumble.c index 10844f3674..57f61c9214 100644 --- a/src/code/sys_rumble.c +++ b/src/code/sys_rumble.c @@ -12,7 +12,8 @@ * * @note Original filename is likely sys_vibrate.c or similar as it is ordered after sys_ucode.c */ -#include "global.h" +#include "rumble.h" +#include "padmgr.h" /** * Rumble manager update, runs on Vertical Retrace on the padmgr thread. diff --git a/src/code/sys_ucode.c b/src/code/sys_ucode.c index 2be2566e84..71ae003909 100644 --- a/src/code/sys_ucode.c +++ b/src/code/sys_ucode.c @@ -1,4 +1,5 @@ -#include "global.h" +#include "ultra64.h" +#include "sys_ucode.h" u64* sDefaultGSPUCodeText = gspF3DZEX2_NoN_PosLight_fifoTextStart; u64* sDefaultGSPUCodeData = gspF3DZEX2_NoN_PosLight_fifoDataStart; diff --git a/src/code/title_setup.c b/src/code/title_setup.c index fcc6eaa239..ba259e72a1 100644 --- a/src/code/title_setup.c +++ b/src/code/title_setup.c @@ -1,3 +1,6 @@ +#include "console_logo_state.h" +#include "setup_state.h" + #include "global.h" void Setup_InitImpl(SetupState* this) { diff --git a/src/code/ucode_disas.c b/src/code/ucode_disas.c index ecfc7d7ac4..0684dcd5dc 100644 --- a/src/code/ucode_disas.c +++ b/src/code/ucode_disas.c @@ -1,5 +1,10 @@ -#include "global.h" #include "ucode_disas.h" +#include "ultra64.h" +#include "ultra64/gs2dex.h" +#include "libu64/mtxuty-cvt.h" +#include "segmented_address.h" + +#include "macros.h" #if DEBUG_FEATURES diff --git a/src/code/z_DLF.c b/src/code/z_DLF.c index f56fcc742b..501fed21a6 100644 --- a/src/code/z_DLF.c +++ b/src/code/z_DLF.c @@ -1,5 +1,10 @@ -#include "global.h" +#include "libc64/malloc.h" +#include "libu64/overlay.h" #include "terminal.h" +#include "ultra64.h" +#include "z_game_dlftbls.h" + +#include "macros.h" void Overlay_LoadGameState(GameStateOverlay* overlayEntry) { if (overlayEntry->loadedRamAddr != NULL) { diff --git a/src/code/z_actor.c b/src/code/z_actor.c index c0633747fc..798d8a036a 100644 --- a/src/code/z_actor.c +++ b/src/code/z_actor.c @@ -1,33 +1,62 @@ -#include "global.h" +#include "libc64/math64.h" +#include "libu64/overlay.h" #include "fault.h" +#include "gfx.h" +#include "gfx_setupdl.h" #include "quake.h" #include "rand.h" +#include "regs.h" +#include "rumble.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_math.h" +#include "sys_matrix.h" #include "terminal.h" #include "versions.h" +#include "z_actor_dlftbls.h" +#include "z_lib.h" +#include "zelda_arena.h" +#include "z64actor.h" +#include "z64effect.h" +#include "z64light.h" #include "z64horse.h" +#include "z64play.h" +#include "z64save.h" +#include "z64skin_matrix.h" + +#include "global.h" #include "overlays/actors/ovl_Arms_Hook/z_arms_hook.h" #include "overlays/actors/ovl_En_Part/z_en_part.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #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: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" +#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" \ + "ntsc-1.1:0 ntsc-1.2:0 pal-1.0:0 pal-1.1:0" -static CollisionPoly* sCurCeilingPoly; -static s32 sCurCeilingBgId; +CollisionPoly* sCurCeilingPoly; +s32 sCurCeilingBgId; #if DEBUG_FEATURES #define ACTOR_DEBUG_PRINTF \ if (R_ENABLE_ACTOR_DEBUG_PRINTF) \ PRINTF -#elif IDO_PRINTF_WORKAROUND -#define ACTOR_DEBUG_PRINTF(args) (void)0 -#elif defined(__GNUC__) && __GNUC__ < 3 -#define ACTOR_DEBUG_PRINTF(format, args...) (void)0 #else -#define ACTOR_DEBUG_PRINTF(format, ...) (void)0 +#define ACTOR_DEBUG_PRINTF \ + if (0) \ + PRINTF +#endif + +#if DEBUG_FEATURES +#define ACTOR_COLOR_WARNING VT_COL(YELLOW, BLACK) +#define ACTOR_COLOR_ERROR VT_COL(RED, WHITE) +#define ACTOR_RST VT_RST +#else +#define ACTOR_COLOR_WARNING "" +#define ACTOR_COLOR_ERROR "" +#define ACTOR_RST "" #endif void ActorShape_Init(ActorShape* shape, f32 yOffset, ActorShadowFunc shadowDraw, f32 shadowScale) { @@ -73,8 +102,9 @@ void ActorShadow_Draw(Actor* actor, Lights* lights, PlayState* play, Gfx* dlist, Matrix_RotateY(BINANG_TO_RAD(actor->shape.rot.y), MTXMODE_APPLY); } - temp2 = (1.0f - (temp1 * (1.0f / 350))) * actor->shape.shadowScale; - Matrix_Scale(actor->scale.x * temp2, 1.0f, actor->scale.z * temp2, MTXMODE_APPLY); + temp2 = (1.0f - (temp1 * (1.0f / 350))); + temp2 *= actor->shape.shadowScale; + Matrix_Scale(temp2 * actor->scale.x, 1.0f, temp2 * actor->scale.z, MTXMODE_APPLY); MATRIX_FINALIZE_AND_LOAD(POLY_OPA_DISP++, play->state.gfxCtx, "../z_actor.c", 1588); gSPDisplayList(POLY_OPA_DISP++, dlist); @@ -100,16 +130,19 @@ void ActorShadow_DrawHorse(Actor* actor, Lights* lights, PlayState* play) { void ActorShadow_DrawFoot(PlayState* play, Light* light, MtxF* arg2, s32 arg3, f32 arg4, f32 arg5, f32 arg6) { s32 pad1; f32 sp58; - s32 pad2[2]; + f32 temp; + s32 pad2; OPEN_DISPS(play->state.gfxCtx, "../z_actor.c", 1661); - gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 0, 0, 0, - (u32)(((arg3 * 0.00005f) > 1.0f ? 1.0f : (arg3 * 0.00005f)) * arg4) & 0xFF); + temp = arg3 * 0.00005f; + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 0, 0, 0, (u32)(arg4 * (temp > 1.0f ? 1.0f : temp)) & 0xFF); sp58 = Math_FAtan2F(light->l.dir[0], light->l.dir[2]); arg6 *= (4.5f - (light->l.dir[1] * 0.035f)); - arg6 = (arg6 < 1.0f) ? 1.0f : arg6; + if (arg6 < 1.0f) { + arg6 = 1.0f; + } Matrix_Put(arg2); Matrix_RotateY(sp58, MTXMODE_APPLY); Matrix_Scale(arg5, 1.0f, arg5 * arg6, MTXMODE_APPLY); @@ -168,15 +201,17 @@ void ActorShadow_DrawFeet(Actor* actor, Lights* lights, PlayState* play) { actor->shape.feetFloorFlag <<= 1; distToFloor = feetPosPtr->y - *floorHeightPtr; - if (1) {} - if ((-1.0f <= distToFloor) && (distToFloor < 500.0f)) { if (distToFloor <= 0.0f) { actor->shape.feetFloorFlag++; } - distToFloor = CLAMP_MAX(distToFloor, 30.0f); + if (distToFloor > 30.0f) { + distToFloor = 30.0f; + } shadowAlpha = (f32)actor->shape.shadowAlpha * (1.0f - (distToFloor * (1.0f / 30.0f))); - distToFloor = CLAMP_MAX(distToFloor, 30.0f); + if (distToFloor > 30.0f) { + distToFloor = 30.0f; + } shadowScaleZ = 1.0f - (distToFloor * (1.0f / (30.0f + 40.0f))); shadowScaleX = shadowScaleZ * actor->shape.shadowScale * actor->scale.x; lightNumMax = 0; @@ -239,7 +274,11 @@ void Actor_SetFeetPos(Actor* actor, s32 limbIndex, s32 leftFootIndex, Vec3f* lef void Actor_ProjectPos(PlayState* play, Vec3f* src, Vec3f* xyzDest, f32* cappedInvWDest) { SkinMatrix_Vec3fMtxFMultXYZW(&play->viewProjectionMtxF, src, xyzDest, cappedInvWDest); - *cappedInvWDest = (*cappedInvWDest < 1.0f) ? 1.0f : (1.0f / *cappedInvWDest); + if (*cappedInvWDest < 1.0f) { + *cappedInvWDest = 1.0f; + } else { + *cappedInvWDest = 1.0f / *cappedInvWDest; + } } typedef struct AttentionColor { @@ -247,7 +286,10 @@ typedef struct AttentionColor { /* 0x04 */ Color_RGBA8 secondary; // Used for Navi's outer color } AttentionColor; // size = 0x8 -AttentionColor sAttentionColors[ACTORCAT_MAX + 1] = { +// Needs to be static to work around an EGCS codegen bug in Attention_SetNaviState on iQue builds. +// If this isn't static, accessing the element at offset 4 into the struct (secondary.r) will not +// be offset correctly in the compiled code. +static AttentionColor sAttentionColors[ACTORCAT_MAX + 1] = { { { 0, 255, 0, 255 }, { 0, 255, 0, 0 } }, // ACTORCAT_SWITCH { { 0, 255, 0, 255 }, { 0, 255, 0, 0 } }, // ACTORCAT_BG { { 255, 255, 255, 255 }, { 0, 0, 255, 0 } }, // ACTORCAT_PLAYER @@ -269,11 +311,13 @@ Gfx D_80115FF0[] = { }; void Attention_SetReticlePos(Attention* attention, s32 reticleNum, f32 x, f32 y, f32 z) { - attention->lockOnReticles[reticleNum].pos.x = x; - attention->lockOnReticles[reticleNum].pos.y = y; - attention->lockOnReticles[reticleNum].pos.z = z; + LockOnReticle* reticle = &attention->lockOnReticles[reticleNum]; - attention->lockOnReticles[reticleNum].radius = attention->reticleRadius; + reticle->pos.x = x; + reticle->pos.y = y; + reticle->pos.z = z; + + reticle->radius = attention->reticleRadius; } void Attention_InitReticle(Attention* attention, s32 actorCategory, PlayState* play) { @@ -298,29 +342,27 @@ void Attention_InitReticle(Attention* attention, s32 actorCategory, PlayState* p } void Attention_SetNaviState(Attention* attention, Actor* actor, s32 actorCategory, PlayState* play) { - AttentionColor* attentionColor = &sAttentionColors[actorCategory]; - attention->naviHoverPos.x = actor->focus.pos.x; attention->naviHoverPos.y = actor->focus.pos.y + (actor->lockOnArrowOffset * actor->scale.y); attention->naviHoverPos.z = actor->focus.pos.z; - attention->naviInnerColor.r = attentionColor->primary.r; - attention->naviInnerColor.g = attentionColor->primary.g; - attention->naviInnerColor.b = attentionColor->primary.b; - attention->naviInnerColor.a = attentionColor->primary.a; + attention->naviInnerColor.r = sAttentionColors[actorCategory].primary.r; + attention->naviInnerColor.g = sAttentionColors[actorCategory].primary.g; + attention->naviInnerColor.b = sAttentionColors[actorCategory].primary.b; + attention->naviInnerColor.a = sAttentionColors[actorCategory].primary.a; - attention->naviOuterColor.r = attentionColor->secondary.r; - attention->naviOuterColor.g = attentionColor->secondary.g; - attention->naviOuterColor.b = attentionColor->secondary.b; - attention->naviOuterColor.a = attentionColor->secondary.a; + attention->naviOuterColor.r = sAttentionColors[actorCategory].secondary.r; + attention->naviOuterColor.g = sAttentionColors[actorCategory].secondary.g; + attention->naviOuterColor.b = sAttentionColors[actorCategory].secondary.b; + attention->naviOuterColor.a = sAttentionColors[actorCategory].secondary.a; } void Attention_Init(Attention* attention, Actor* actor, PlayState* play) { attention->naviHoverActor = attention->reticleActor = attention->forcedLockOnActor = attention->bgmEnemy = NULL; attention->reticleSpinCounter = 0; - attention->curReticle = 0; attention->naviMoveProgressFactor = 0.0f; + attention->curReticle = 0; Attention_SetNaviState(attention, actor, actor->category, play); Attention_InitReticle(attention, actor->category, play); @@ -392,7 +434,7 @@ void Attention_Draw(Attention* attention, PlayState* play) { Attention_SetReticlePos(attention, attention->curReticle, projectedPos.x, projectedPos.y, projectedPos.z); - if (!(player->stateFlags1 & PLAYER_STATE1_TALKING) || (actor != player->focusActor)) { + if (!(player->stateFlags1 & PLAYER_STATE1_TALKING) || (player->focusActor != actor)) { OVERLAY_DISP = Gfx_SetupDL(OVERLAY_DISP, SETUPDL_57); for (i = 0, curReticle = attention->curReticle; i < numReticles; @@ -443,7 +485,7 @@ void Attention_Draw(Attention* attention, PlayState* play) { Matrix_Translate(actor->focus.pos.x, actor->focus.pos.y + (actor->lockOnArrowOffset * actor->scale.y) + 17.0f, actor->focus.pos.z, MTXMODE_NEW); - Matrix_RotateY(BINANG_TO_RAD((u16)(play->gameplayFrames * 3000)), MTXMODE_APPLY); + Matrix_RotateY(BINANG_TO_RAD((play->gameplayFrames * 3000) & 0xFFFF), MTXMODE_APPLY); Matrix_Scale((iREG(27) + 35) / 1000.0f, (iREG(28) + 60) / 1000.0f, (iREG(29) + 50) / 1000.0f, MTXMODE_APPLY); gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, attentionColor->primary.r, attentionColor->primary.g, @@ -792,6 +834,7 @@ void TitleCard_Draw(PlayState* play, TitleCardContext* titleCtx) { height = titleCtx->height; doubleWidth = width * 2; titleX1 = (titleCtx->x * 4) - (width * 2); + titleX2 = titleX1 + (doubleWidth * 2) - 4; titleY1 = (titleCtx->y * 4) - (height * 2); OPEN_DISPS(play->state.gfxCtx, "../z_actor.c", 2824); @@ -810,7 +853,6 @@ void TitleCard_Draw(PlayState* play, TitleCardContext* titleCtx) { height = 0x1000 / width; } - titleX2 = titleX1 + (doubleWidth * 2); titleY2 = titleY1 + (height * 4); OVERLAY_DISP = Gfx_SetupDL_52NoCD(OVERLAY_DISP); @@ -822,19 +864,19 @@ void TitleCard_Draw(PlayState* play, TitleCardContext* titleCtx) { width, 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); - gSPTextureRectangle(OVERLAY_DISP++, titleX1, titleY1, titleX2 - 4, titleY2 - 1, G_TX_RENDERTILE, 0, 0, 1 << 10, + gSPTextureRectangle(OVERLAY_DISP++, titleX1, titleY1, titleX2, titleY2 - 1, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); height = titleCtx->height - height; // If texture is bigger than 0x1000, display the rest if (height > 0) { - gDPLoadTextureBlock(OVERLAY_DISP++, (u8*)titleCtx->texture + textureLanguageOffset + 0x1000, G_IM_FMT_IA, + gDPLoadTextureBlock(OVERLAY_DISP++, (u8*)titleCtx->texture + 0x1000 + textureLanguageOffset, G_IM_FMT_IA, G_IM_SIZ_8b, width, 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); - gSPTextureRectangle(OVERLAY_DISP++, titleX1, titleY2, titleX2 - 4, titleY2 + (height * 4) - 1, - G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + gSPTextureRectangle(OVERLAY_DISP++, titleX1, titleY2, titleX2, titleY2 + (height * 4) - 1, G_TX_RENDERTILE, + 0, 0, 1 << 10, 1 << 10); } CLOSE_DISPS(play->state.gfxCtx, "../z_actor.c", 2880); @@ -924,7 +966,7 @@ void Actor_Destroy(Actor* actor, PlayState* play) { overlayEntry = actor->overlayEntry; name = overlayEntry->name != NULL ? overlayEntry->name : ""; - PRINTF(T("Actorクラス デストラクトがありません [%s]\n", "No Actor class destruct [%s]\n") VT_RST, name); + PRINTF(T("Actorクラス デストラクトがありません [%s]\n", "No Actor class destruct [%s]\n") ACTOR_RST, name); #endif } } @@ -944,8 +986,8 @@ void Actor_UpdatePos(Actor* actor) { * Update actor's velocity accounting for gravity (without dropping below minimum y velocity) */ void Actor_UpdateVelocityXZGravity(Actor* actor) { - actor->velocity.x = Math_SinS(actor->world.rot.y) * actor->speed; - actor->velocity.z = Math_CosS(actor->world.rot.y) * actor->speed; + actor->velocity.x = actor->speed * Math_SinS(actor->world.rot.y); + actor->velocity.z = actor->speed * Math_CosS(actor->world.rot.y); actor->velocity.y += actor->gravity; @@ -968,11 +1010,11 @@ void Actor_MoveXZGravity(Actor* actor) { * Update actor's velocity without gravity. */ void Actor_UpdateVelocityXYZ(Actor* actor) { - f32 speedXZ = Math_CosS(actor->world.rot.x) * actor->speed; + f32 speedXZ = actor->speed * Math_CosS(actor->world.rot.x); - actor->velocity.x = Math_SinS(actor->world.rot.y) * speedXZ; - actor->velocity.y = Math_SinS(actor->world.rot.x) * actor->speed; - actor->velocity.z = Math_CosS(actor->world.rot.y) * speedXZ; + actor->velocity.x = speedXZ * Math_SinS(actor->world.rot.y); + actor->velocity.y = actor->speed * Math_SinS(actor->world.rot.x); + actor->velocity.z = speedXZ * Math_CosS(actor->world.rot.y); } /** @@ -990,8 +1032,8 @@ void Actor_MoveXYZ(Actor* actor) { * Only the actor's world pitch is factored in, with positive pitch moving downwards. */ void Actor_SetProjectileSpeed(Actor* actor, f32 speedXYZ) { - actor->speed = Math_CosS(actor->world.rot.x) * speedXYZ; - actor->velocity.y = -Math_SinS(actor->world.rot.x) * speedXYZ; + actor->speed = speedXYZ * Math_CosS(actor->world.rot.x); + actor->velocity.y = speedXYZ * -Math_SinS(actor->world.rot.x); } void Actor_UpdatePosByAnimation(Actor* actor, SkelAnime* skelAnime) { @@ -1067,7 +1109,7 @@ void Actor_WorldToActorCoords(Actor* actor, Vec3f* dest, Vec3f* pos) { deltaX = pos->x - actor->world.pos.x; deltaZ = pos->z - actor->world.pos.z; - dest->x = (deltaX * cosY) - (deltaZ * sinY); + dest->x = -(deltaZ * sinY) + (deltaX * cosY); dest->z = (deltaX * sinY) + (deltaZ * cosY); dest->y = pos->y - actor->world.pos.y; } @@ -1087,6 +1129,8 @@ f32 Player_GetHeight(Player* player) { } f32 func_8002DCE4(Player* player) { + s32 pad; + if (player->stateFlags1 & PLAYER_STATE1_23) { return 8.0f; } else if (player->stateFlags1 & PLAYER_STATE1_27) { @@ -1134,9 +1178,7 @@ void Actor_SwapHookshotAttachment(PlayState* play, Actor* srcActor, Actor* destA hookshot->attachedActor = destActor; // The hookshot will attach at exactly the actors world position with 0 offset - hookshot->attachPointOffset.x = 0.0f; - hookshot->attachPointOffset.y = 0.0f; - hookshot->attachPointOffset.z = 0.0f; + hookshot->attachPointOffset.x = hookshot->attachPointOffset.y = hookshot->attachPointOffset.z = 0.0f; destActor->flags |= ACTOR_FLAG_HOOKSHOT_ATTACHED; srcActor->flags &= ~ACTOR_FLAG_HOOKSHOT_ATTACHED; @@ -1208,8 +1250,7 @@ s32 Player_SetCsActionWithHaltedActors(PlayState* play, Actor* csActor, u8 csAct } void func_8002DF90(DynaPolyActor* dynaActor) { - dynaActor->unk_154 = 0.0f; - dynaActor->unk_150 = 0.0f; + dynaActor->unk_150 = dynaActor->unk_154 = 0.0f; } void func_8002DFA4(DynaPolyActor* dynaActor, f32 arg1, s16 arg2) { @@ -1349,7 +1390,7 @@ s32 func_8002E2AC(PlayState* play, Actor* actor, Vec3f* pos, s32 arg3) { actor->bgCheckFlags |= BGCHECKFLAG_GROUND_STRICT; if (actor->bgCheckFlags & BGCHECKFLAG_CEILING) { - if (floorBgId != sCurCeilingBgId) { + if (sCurCeilingBgId != floorBgId) { if (floorHeightDiff > 15.0f) { actor->bgCheckFlags |= BGCHECKFLAG_CRUSHED; } @@ -1387,13 +1428,14 @@ s32 func_8002E2AC(PlayState* play, Actor* actor, Vec3f* pos, s32 arg3) { void Actor_UpdateBgCheckInfo(PlayState* play, Actor* actor, f32 wallCheckHeight, f32 wallCheckRadius, f32 ceilingCheckHeight, s32 flags) { f32 sp74; - s32 pad; + s32 floorBgId; Vec3f sp64; sp74 = actor->world.pos.y - actor->prevPos.y; + floorBgId = actor->floorBgId; - if ((actor->floorBgId != BGCHECK_SCENE) && (actor->bgCheckFlags & BGCHECKFLAG_GROUND)) { - DynaPolyActor_TransformCarriedActor(&play->colCtx, actor->floorBgId, actor); + if ((floorBgId != BGCHECK_SCENE) && (actor->bgCheckFlags & BGCHECKFLAG_GROUND)) { + DynaPolyActor_TransformCarriedActor(&play->colCtx, floorBgId, actor); } if (flags & UPDBGCHECKINFO_FLAG_0) { @@ -1462,8 +1504,8 @@ void Actor_UpdateBgCheckInfo(PlayState* play, Actor* actor, f32 wallCheckHeight, actor->bgCheckFlags |= BGCHECKFLAG_WATER; } } else { - actor->bgCheckFlags &= ~(BGCHECKFLAG_WATER | BGCHECKFLAG_WATER_TOUCH); actor->depthInWater = BGCHECK_Y_MIN; + actor->bgCheckFlags &= ~(BGCHECKFLAG_WATER | BGCHECKFLAG_WATER_TOUCH); } } } @@ -1532,10 +1574,12 @@ void func_8002EBCC(Actor* actor, PlayState* play, s32 flag) { lightDir.y = play->envCtx.dirLight1.params.dir.y; lightDir.z = play->envCtx.dirLight1.params.dir.z; +#if DEBUG_FEATURES if (R_HREG_MODE == HREG_MODE_PRINT_HILITE_INFO) { PRINTF("z_actor.c 3637 game_play->view.eye=[%f(%f) %f %f]\n", play->view.eye.x, play->view.eye.y, play->view.eye.z); } +#endif hilite = func_8002EABC(&actor->world.pos, &play->view.eye, &lightDir, play->state.gfxCtx); @@ -1601,8 +1645,7 @@ PosRot Actor_GetWorldPosShapeRot(Actor* actor) { * This distance will be weighted if Player is already locked onto another actor. */ f32 Attention_WeightedDistToPlayerSq(Actor* actor, Player* player, s16 playerShapeYaw) { - s16 yawTemp = (s16)(actor->yawTowardsPlayer - 0x8000) - playerShapeYaw; - s16 yawTempAbs = ABS(yawTemp); + s16 yawTempAbs = (s16)ABS((s16)((s16)(actor->yawTowardsPlayer - 0x8000) - playerShapeYaw)); if (player->focusActor != NULL) { if ((yawTempAbs > 0x4000) || (actor->flags & ACTOR_FLAG_LOCK_ON_DISABLED)) { @@ -1678,19 +1721,12 @@ s32 Attention_ShouldReleaseLockOn(Actor* actor, Player* player, s32 ignoreLeash) } if (!ignoreLeash) { - s16 yawDiff = (s16)(actor->yawTowardsPlayer - 0x8000) - player->actor.shape.rot.y; - s16 yawDiffAbs = ABS(yawDiff); - f32 distSq; + s16 yawDiffAbs = (s16)ABS((s16)((s16)(actor->yawTowardsPlayer - 0x8000) - player->actor.shape.rot.y)); + // This function is only called (and is only relevant) when `player->focusActor != NULL`, + // so the MAXFLOAT case is unreachable. + f32 distSq = ((player->focusActor == NULL) && (yawDiffAbs > 0x2AAA)) ? MAXFLOAT : actor->xyzDistToPlayerSq; - if ((player->focusActor == NULL) && (yawDiffAbs > 0x2AAA)) { - // This function is only called (and is only relevant) when `player->focusActor != NULL`. - // This is unreachable. - distSq = MAXFLOAT; - } else { - distSq = actor->xyzDistToPlayerSq; - } - - return !Attention_ActorIsInRange(actor, sAttentionRanges[actor->attentionRangeType].lockOnLeashScale * distSq); + return !Attention_ActorIsInRange(actor, distSq * sAttentionRanges[actor->attentionRangeType].lockOnLeashScale); } return false; @@ -1727,8 +1763,8 @@ s32 Actor_OfferTalkExchange(Actor* actor, PlayState* play, f32 xzRange, f32 yRan if ((player->actor.flags & ACTOR_FLAG_TALK) || ((exchangeItemId != EXCH_ITEM_NONE) && Player_InCsMode(play)) || (!actor->isLockedOn && - ((yRange < fabsf(actor->yDistToPlayer)) || (player->talkActorDistance < actor->xzDistToPlayer) || - (xzRange < actor->xzDistToPlayer)))) { + ((fabsf(actor->yDistToPlayer) > yRange) || (actor->xzDistToPlayer > player->talkActorDistance) || + (actor->xzDistToPlayer > xzRange)))) { return false; } @@ -1824,7 +1860,7 @@ s32 Actor_OfferGetItem(Actor* actor, PlayState* play, s32 getItemId, f32 xzRange (PLAYER_STATE1_DEAD | PLAYER_STATE1_CHARGING_SPIN_ATTACK | PLAYER_STATE1_13 | PLAYER_STATE1_14 | PLAYER_STATE1_18 | PLAYER_STATE1_19 | PLAYER_STATE1_20 | PLAYER_STATE1_21)) && Player_GetExplosiveHeld(player) < 0) { - if ((((player->heldActor != NULL) || (actor == player->talkActor)) && (getItemId > GI_NONE) && + if ((((player->heldActor != NULL) || (player->talkActor == actor)) && (getItemId > GI_NONE) && (getItemId < GI_MAX)) || (!(player->stateFlags1 & (PLAYER_STATE1_CARRYING_ACTOR | PLAYER_STATE1_29)))) { if ((actor->xzDistToPlayer < xzRange) && (fabsf(actor->yDistToPlayer) < yRange)) { @@ -2093,7 +2129,9 @@ s32 D_8015BC14; f32 D_8015BC18; void func_8002FA60(PlayState* play) { - Vec3f lightPos; + f32 lightPosX; + f32 lightPosY; + f32 lightPosZ; if (gSaveContext.save.info.fw.set) { gSaveContext.respawn[RESPAWN_MODE_TOP].data = 0x28; @@ -2114,10 +2152,10 @@ void func_8002FA60(PlayState* play) { } // clang-format off - lightPos.x = gSaveContext.respawn[RESPAWN_MODE_TOP].pos.x; \ - lightPos.y = gSaveContext.respawn[RESPAWN_MODE_TOP].pos.y + 80.0f; \ - lightPos.z = gSaveContext.respawn[RESPAWN_MODE_TOP].pos.z; \ - Lights_PointNoGlowSetInfo(&D_8015BC00, lightPos.x, lightPos.y, lightPos.z, 0xFF, 0xFF, 0xFF, -1); + lightPosX = gSaveContext.respawn[RESPAWN_MODE_TOP].pos.x; \ + lightPosY = gSaveContext.respawn[RESPAWN_MODE_TOP].pos.y + 80.0f; \ + lightPosZ = gSaveContext.respawn[RESPAWN_MODE_TOP].pos.z; \ + Lights_PointNoGlowSetInfo(&D_8015BC00, lightPosX, lightPosY, lightPosZ, 0xFF, 0xFF, 0xFF, -1); // clang-format on D_8015BC10 = LightContext_InsertLight(play, &play->lightCtx, &D_8015BC00); @@ -2168,7 +2206,9 @@ void Actor_DrawFaroresWindPointer(PlayState* play) { } else { length = diff * (1.0f / D_8015BC18); speed = 20.0f / length; - speed = CLAMP_MIN(speed, 0.05f); + if (speed < 0.05f) { + speed = 0.05f; + } Math_StepToF(&D_8015BC18, 0.0f, speed); factor = (diff * (D_8015BC18 / prevNum)) / diff; curPos->x = nextPos->x + (dist.x * factor); @@ -2295,8 +2335,8 @@ void Actor_InitContext(PlayState* play, ActorContext* actorCtx, ActorEntry* play bzero(actorCtx, sizeof(ActorContext)); ActorOverlayTable_Init(); - Matrix_MtxFCopy(&play->billboardMtxF, &gMtxFClear); - Matrix_MtxFCopy(&play->viewProjectionMtxF, &gMtxFClear); + Matrix_MtxFCopy(&play->billboardMtxF, &gIdentityMtxF); + Matrix_MtxFCopy(&play->viewProjectionMtxF, &gIdentityMtxF); overlayEntry = &gActorOverlayTable[0]; for (i = 0; i < ARRAY_COUNT(gActorOverlayTable); i++) { @@ -2358,10 +2398,12 @@ void Actor_UpdateAll(PlayState* play, ActorContext* actorCtx) { player = GET_PLAYER(play); +#if DEBUG_FEATURES if (0) { - // This ASSERT is optimized out but it exists due to its presence in rodata + // This ASSERT is optimized out, but it can be assumed to exist because its string is present in rodata ASSERT(gMaxActorId == ACTOR_ID_MAX, "MaxProfile == ACTOR_DLF_MAX", "../z_actor.c", UNK_LINE); } +#endif sp74 = NULL; freezeExceptionFlag = 0; @@ -2399,7 +2441,7 @@ void Actor_UpdateAll(PlayState* play, ActorContext* actorCtx) { } for (i = 0; i < ARRAY_COUNT(actorCtx->actorLists); i++, categoryFreezeMaskP++) { - canFreezeCategory = (*categoryFreezeMaskP & player->stateFlags1); + canFreezeCategory = (player->stateFlags1 & *categoryFreezeMaskP); actor = actorCtx->actorLists[i].head; while (actor != NULL) { @@ -2421,8 +2463,8 @@ void Actor_UpdateAll(PlayState* play, ActorContext* actorCtx) { actor = actor->next; } else if ((freezeExceptionFlag != 0 && !(actor->flags & freezeExceptionFlag)) || (freezeExceptionFlag == 0 && canFreezeCategory && - !((sp74 == actor) || (actor == player->naviActor) || (actor == player->heldActor) || - (&player->actor == actor->parent)))) { + !((sp74 == actor) || (player->naviActor == actor) || (player->heldActor == actor) || + (actor->parent == &player->actor)))) { CollisionCheck_ResetDamage(&actor->colChkInfo); actor = actor->next; } else if (actor->update == NULL) { @@ -2480,12 +2522,11 @@ void Actor_UpdateAll(PlayState* play, ActorContext* actorCtx) { } if ((actor == NULL) || (player->zTargetActiveTimer < 5)) { - actor = NULL; - if (actorCtx->attention.reticleSpinCounter != 0) { actorCtx->attention.reticleSpinCounter = 0; Sfx_PlaySfxCentered(NA_SE_SY_LOCK_OFF); } + actor = NULL; } Attention_Update(&actorCtx->attention, player, actor, play); @@ -2505,12 +2546,12 @@ void Actor_FaultPrint(Actor* actor, char* command) { #if DEBUG_FEATURES overlayEntry = actor->overlayEntry; name = overlayEntry->name != NULL ? overlayEntry->name : ""; - - PRINTF(T("アクターの名前(%08x:%s)\n", "Actor name (%08x:%s)\n"), actor, name); #else name = ""; #endif + PRINTF(T("アクターの名前(%08x:%s)\n", "Actor name (%08x:%s)\n"), actor, name); + if (command != NULL) { PRINTF(T("コメント:%s\n", "Command: %s\n"), command); } @@ -2522,6 +2563,9 @@ void Actor_FaultPrint(Actor* actor, char* command) { void Actor_Draw(PlayState* play, Actor* actor) { FaultClient faultClient; Lights* lights; +#if PLATFORM_IQUE + ObjectEntry* slots; +#endif Fault_AddClient(&faultClient, Actor_FaultPrint, actor, "Actor_draw"); @@ -2546,8 +2590,15 @@ void Actor_Draw(PlayState* play, Actor* actor) { Matrix_Scale(actor->scale.x, actor->scale.y, actor->scale.z, MTXMODE_APPLY); Actor_SetObjectDependency(play, actor); +#if !PLATFORM_IQUE gSPSegment(POLY_OPA_DISP++, 0x06, play->objectCtx.slots[actor->objectSlot].segment); gSPSegment(POLY_XLU_DISP++, 0x06, play->objectCtx.slots[actor->objectSlot].segment); +#else + // Workaround for EGCS internal compiler error (see docs/compilers.md) + slots = play->objectCtx.slots; + gSPSegment(POLY_OPA_DISP++, 0x06, slots[actor->objectSlot].segment); + gSPSegment(POLY_XLU_DISP++, 0x06, slots[actor->objectSlot].segment); +#endif if (actor->colorFilterTimer != 0) { Color_RGBA8 color = { 0, 0, 0, 255 }; @@ -2793,7 +2844,7 @@ s32 Actor_CullingVolumeTest(PlayState* play, Actor* actor, Vec3f* projPos, f32 p (projPos->z < (actor->cullingVolumeDistance + actor->cullingVolumeScale))) { // Clamping `projW` affects points behind the camera, so that the culling volume has // a frustum shape in front of the camera and a box shape behind the camera. - invW = (projW < 1.0f) ? 1.0f : 1.0f / projW; + invW = (projW < 1.0f) ? 1.0f : 1.0f / (f32)projW; if ((((fabsf(projPos->x) - actor->cullingVolumeScale) * invW) < 1.0f) && (((projPos->y + actor->cullingVolumeDownward) * invW) > -1.0f) && @@ -2805,7 +2856,20 @@ s32 Actor_CullingVolumeTest(PlayState* play, Actor* actor, Vec3f* projPos, f32 p return false; } -void func_800315AC(PlayState* play, ActorContext* actorCtx) { +/** + * Iterates through all category lists to draw every actor. + * + * In addition to actors, this function also draws: + * - Effects + * - EffectSs + * - Title Cards + * - Farores Wind Pointer + * - Light glow + * - Actor Collision (debug only) + * + * Note: If an actor is made visible by Lens of Truth, it will be drawn by `Actor_DrawLensActors` instead. + */ +void Actor_DrawAll(PlayState* play, ActorContext* actorCtx) { s32 invisibleActorCounter; Actor* invisibleActors[INVISIBLE_ACTOR_MAX]; ActorListEntry* actorListEntry; @@ -2823,7 +2887,13 @@ void func_800315AC(PlayState* play, ActorContext* actorCtx) { while (actor != NULL) { ActorOverlay* overlayEntry = actor->overlayEntry; - char* actorName = overlayEntry->name != NULL ? overlayEntry->name : ""; + char* actorName; + +#if DEBUG_FEATURES + actorName = overlayEntry->name != NULL ? overlayEntry->name : ""; +#else + actorName = ""; +#endif gDPNoOpString(POLY_OPA_DISP++, actorName, i); gDPNoOpString(POLY_XLU_DISP++, actorName, i); @@ -3106,7 +3176,7 @@ Actor* Actor_Spawn(ActorContext* actorCtx, PlayState* play, s16 actorId, f32 pos ACTOR_DEBUG_PRINTF(T("アクタークラス追加 [%d:%s]\n", "Actor class addition [%d:%s]\n"), actorId, name); if (actorCtx->total > ACTOR_NUMBER_MAX) { - PRINTF(VT_COL(YELLOW, BLACK) T("Actorセット数オーバー\n", "Actor set number exceeded\n") VT_RST); + PRINTF(ACTOR_COLOR_WARNING T("Actorセット数オーバー\n", "Actor set number exceeded\n") ACTOR_RST); return NULL; } @@ -3138,8 +3208,8 @@ Actor* Actor_Spawn(ActorContext* actorCtx, PlayState* play, s16 actorId, f32 pos } if (overlayEntry->loadedRamAddr == NULL) { - PRINTF(VT_COL(RED, WHITE) T("Actorプログラムメモリが確保できません\n", - "Cannot reserve actor program memory\n") VT_RST); + PRINTF(ACTOR_COLOR_ERROR T("Actorプログラムメモリが確保できません\n", + "Cannot reserve actor program memory\n") ACTOR_RST); return NULL; } @@ -3168,8 +3238,8 @@ Actor* Actor_Spawn(ActorContext* actorCtx, PlayState* play, s16 actorId, f32 pos if ((objectSlot < 0) || ((profile->category == ACTORCAT_ENEMY) && Flags_GetClear(play, play->roomCtx.curRoom.num))) { - PRINTF(VT_COL(RED, WHITE) T("データバンク無し!!<データバンク=%d>(profilep->bank=%d)\n", - "No data bank!! (profilep->bank=%d)\n") VT_RST, + PRINTF(ACTOR_COLOR_ERROR T("データバンク無し!!<データバンク=%d>(profilep->bank=%d)\n", + "No data bank!! (profilep->bank=%d)\n") ACTOR_RST, objectSlot, profile->objectId); Actor_FreeOverlay(overlayEntry); return NULL; @@ -3178,9 +3248,9 @@ Actor* Actor_Spawn(ActorContext* actorCtx, PlayState* play, s16 actorId, f32 pos actor = ZELDA_ARENA_MALLOC(profile->instanceSize, name, 1); if (actor == NULL) { - PRINTF(VT_COL(RED, WHITE) T("Actorクラス確保できません! %s <サイズ=%dバイト>\n", - "Actor class cannot be reserved! %s \n"), - VT_RST, name, profile->instanceSize); + PRINTF(ACTOR_COLOR_ERROR T("Actorクラス確保できません! %s <サイズ=%dバイト>\n", + "Actor class cannot be reserved! %s \n"), + ACTOR_RST, name, profile->instanceSize); Actor_FreeOverlay(overlayEntry); return NULL; } @@ -3283,39 +3353,45 @@ Actor* Actor_SpawnEntry(ActorContext* actorCtx, ActorEntry* actorEntry, PlayStat } Actor* Actor_Delete(ActorContext* actorCtx, Actor* actor, PlayState* play) { - UNUSED_NDEBUG char* name; + PlayState* play2 = (PlayState*)play; Player* player; Actor* newHead; ActorOverlay* overlayEntry; + UNUSED_NDEBUG char* name; player = GET_PLAYER(play); overlayEntry = actor->overlayEntry; + +#if DEBUG_FEATURES name = overlayEntry->name != NULL ? overlayEntry->name : ""; +#else + name = ""; +#endif ACTOR_DEBUG_PRINTF(T("アクタークラス削除 [%s]\n", "Actor class deleted [%s]\n"), name); - if ((player != NULL) && (actor == player->focusActor)) { + if ((player != NULL) && (player->focusActor == actor)) { Player_ReleaseLockOn(player); - Camera_RequestMode(Play_GetCamera(play, Play_GetActiveCamId(play)), CAM_MODE_NORMAL); + Camera_RequestMode(Play_GetCamera(play2, Play_GetActiveCamId(play2)), CAM_MODE_NORMAL); } - if (actor == actorCtx->attention.naviHoverActor) { + if (actorCtx->attention.naviHoverActor == actor) { actorCtx->attention.naviHoverActor = NULL; } - if (actor == actorCtx->attention.forcedLockOnActor) { + if (actorCtx->attention.forcedLockOnActor == actor) { actorCtx->attention.forcedLockOnActor = NULL; } - if (actor == actorCtx->attention.bgmEnemy) { + if (actorCtx->attention.bgmEnemy == actor) { actorCtx->attention.bgmEnemy = NULL; } Audio_StopSfxByPos(&actor->projectedPos); - Actor_Destroy(actor, play); + Actor_Destroy(actor, play2); - newHead = Actor_RemoveFromCategory(play, actorCtx, actor); + newHead = Actor_RemoveFromCategory(play2, actorCtx, actor); ZELDA_ARENA_FREE(actor, "../z_actor.c", 7242); @@ -3449,16 +3525,14 @@ Actor* Attention_FindActor(PlayState* play, ActorContext* actorCtx, Actor** atte // Search the first 3 actor categories first for an attention actor // These are Boss, Enemy, and Bg, in order. - for (i = 0; i < 3; i++) { + for (i = 0; i < 3; i++, category++) { Attention_FindActorInCategory(play, actorCtx, player, *category); - category++; } // If no actor in the above categories was found, then try searching in the remaining categories if (sNearestAttentionActor == NULL) { - for (; i < ARRAY_COUNT(sAttentionCategorySearchOrder); i++) { + for (; i < ARRAY_COUNT(sAttentionCategorySearchOrder); i++, category++) { Attention_FindActorInCategory(play, actorCtx, player, *category); - category++; } } } @@ -3479,7 +3553,7 @@ Actor* Actor_Find(ActorContext* actorCtx, s32 actorId, s32 actorCategory) { Actor* actor = actorCtx->actorLists[actorCategory].head; while (actor != NULL) { - if (actorId == actor->id) { + if (actor->id == actorId) { return actor; } actor = actor->next; @@ -3558,41 +3632,29 @@ s16 FaceChange_UpdateRandomSet(FaceChange* faceChange, s16 changeTimerBase, s16 } void BodyBreak_Alloc(BodyBreak* bodyBreak, s32 count, PlayState* play) { - u32 matricesSize; - u32 dListsSize; - u32 objectSlotsSize; + if ((bodyBreak->matrices = ZELDA_ARENA_MALLOC((count + 1) * sizeof(*bodyBreak->matrices), "../z_actor.c", 7540)) != + NULL && + (bodyBreak->dLists = ZELDA_ARENA_MALLOC((count + 1) * sizeof(*bodyBreak->dLists), "../z_actor.c", 7543)) != + NULL && + (bodyBreak->objectSlots = + ZELDA_ARENA_MALLOC((count + 1) * sizeof(*bodyBreak->objectSlots), "../z_actor.c", 7546)) != NULL) { - matricesSize = (count + 1) * sizeof(*bodyBreak->matrices); - bodyBreak->matrices = ZELDA_ARENA_MALLOC(matricesSize, "../z_actor.c", 7540); - - if (bodyBreak->matrices != NULL) { - dListsSize = (count + 1) * sizeof(*bodyBreak->dLists); - bodyBreak->dLists = ZELDA_ARENA_MALLOC(dListsSize, "../z_actor.c", 7543); + Lib_MemSet((u8*)bodyBreak->matrices, (count + 1) * sizeof(*bodyBreak->matrices), 0); + Lib_MemSet((u8*)bodyBreak->dLists, (count + 1) * sizeof(*bodyBreak->dLists), 0); + Lib_MemSet((u8*)bodyBreak->objectSlots, (count + 1) * sizeof(*bodyBreak->objectSlots), 0); + bodyBreak->val = 1; + } else { + if (bodyBreak->matrices != NULL) { + ZELDA_ARENA_FREE(bodyBreak->matrices, "../z_actor.c", 7558); + } if (bodyBreak->dLists != NULL) { - objectSlotsSize = (count + 1) * sizeof(*bodyBreak->objectSlots); - bodyBreak->objectSlots = ZELDA_ARENA_MALLOC(objectSlotsSize, "../z_actor.c", 7546); - - if (bodyBreak->objectSlots != NULL) { - Lib_MemSet((u8*)bodyBreak->matrices, matricesSize, 0); - Lib_MemSet((u8*)bodyBreak->dLists, dListsSize, 0); - Lib_MemSet((u8*)bodyBreak->objectSlots, objectSlotsSize, 0); - bodyBreak->val = 1; - return; - } + ZELDA_ARENA_FREE(bodyBreak->dLists, "../z_actor.c", 7561); } - } - if (bodyBreak->matrices != NULL) { - ZELDA_ARENA_FREE(bodyBreak->matrices, "../z_actor.c", 7558); - } - - if (bodyBreak->dLists != NULL) { - ZELDA_ARENA_FREE(bodyBreak->dLists, "../z_actor.c", 7561); - } - - if (bodyBreak->objectSlots != NULL) { - ZELDA_ARENA_FREE(bodyBreak->objectSlots, "../z_actor.c", 7564); + if (bodyBreak->objectSlots != NULL) { + ZELDA_ARENA_FREE(bodyBreak->objectSlots, "../z_actor.c", 7564); + } } } @@ -3608,7 +3670,7 @@ void BodyBreak_SetInfo(BodyBreak* bodyBreak, s32 limbIndex, s32 minLimbIndex, s3 bodyBreak->val++; } - if (limbIndex != bodyBreak->prevLimbIndex) { + if (bodyBreak->prevLimbIndex != limbIndex) { bodyBreak->count++; } @@ -3623,7 +3685,6 @@ void BodyBreak_SetInfo(BodyBreak* bodyBreak, s32 limbIndex, s32 minLimbIndex, s3 s32 BodyBreak_SpawnParts(Actor* actor, BodyBreak* bodyBreak, PlayState* play, s16 type) { EnPart* spawnedEnPart; - MtxF* mtx; s16 objectSlot; if (bodyBreak->val != BODYBREAK_STATUS_READY) { @@ -3643,10 +3704,9 @@ s32 BodyBreak_SpawnParts(Actor* actor, BodyBreak* bodyBreak, PlayState* play, s1 } } - mtx = &bodyBreak->matrices[bodyBreak->count]; - - spawnedEnPart = (EnPart*)Actor_SpawnAsChild(&play->actorCtx, actor, play, ACTOR_EN_PART, mtx->xw, mtx->yw, - mtx->zw, 0, 0, objectSlot, type); + spawnedEnPart = (EnPart*)Actor_SpawnAsChild( + &play->actorCtx, actor, play, ACTOR_EN_PART, bodyBreak->matrices[bodyBreak->count].xw, + bodyBreak->matrices[bodyBreak->count].yw, bodyBreak->matrices[bodyBreak->count].zw, 0, 0, objectSlot, type); if (spawnedEnPart != NULL) { #if OOT_VERSION < PAL_1_0 @@ -3684,8 +3744,8 @@ void Actor_SpawnFloorDustRing(PlayState* play, Actor* actor, Vec3f* posXZ, f32 r accel.y += (Rand_ZeroOne() - 0.5f) * 0.2f; for (i = amountMinusOne; i >= 0; i--) { - pos.x = Math_SinF(angle) * radius + posXZ->x; - pos.z = Math_CosF(angle) * radius + posXZ->z; + pos.x = posXZ->x + Math_SinF(angle) * radius; + pos.z = posXZ->z + Math_CosF(angle) * radius; accel.x = (Rand_ZeroOne() - 0.5f) * randAccelWeight; accel.z = (Rand_ZeroOne() - 0.5f) * randAccelWeight; @@ -3717,7 +3777,7 @@ void func_80033480(PlayState* play, Vec3f* posBase, f32 randRangeDiameter, s32 a pos.y = posBase->y + ((Rand_ZeroOne() - 0.5f) * randRangeDiameter); pos.z = posBase->z + ((Rand_ZeroOne() - 0.5f) * randRangeDiameter); - scale = (s16)((Rand_ZeroOne() * scaleBase) * 0.2f) + scaleBase; + scale = (s16)((scaleBase * Rand_ZeroOne()) * 0.2f) + scaleBase; var2 = arg6; if (var2 != 0) { @@ -3780,9 +3840,7 @@ void Actor_ChangeCategory(PlayState* play, ActorContext* actorCtx, Actor* actor, Actor* Actor_GetProjectileActor(PlayState* play, Actor* refActor, f32 radius) { Actor* actor; Vec3f spA8; - f32 deltaX; - f32 deltaY; - f32 deltaZ; + Vec3f delta; Vec3f sp90; Vec3f sp84; @@ -3799,13 +3857,13 @@ Actor* Actor_GetProjectileActor(PlayState* play, Actor* refActor, f32 radius) { (((ArmsHook*)actor)->timer == 0)) { actor = actor->next; } else { - deltaX = Math_SinS(actor->world.rot.y) * (actor->speed * 10.0f); - deltaY = actor->velocity.y + (actor->gravity * 10.0f); - deltaZ = Math_CosS(actor->world.rot.y) * (actor->speed * 10.0f); + delta.x = (actor->speed * 10.0f) * Math_SinS(actor->world.rot.y); + delta.y = actor->velocity.y + (actor->gravity * 10.0f); + delta.z = (actor->speed * 10.0f) * Math_CosS(actor->world.rot.y); - spA8.x = actor->world.pos.x + deltaX; - spA8.y = actor->world.pos.y + deltaY; - spA8.z = actor->world.pos.z + deltaZ; + spA8.x = actor->world.pos.x + delta.x; + spA8.y = actor->world.pos.y + delta.y; + spA8.z = actor->world.pos.z + delta.z; if (CollisionCheck_CylSideVsLineSeg(refActor->colChkInfo.cylRadius, refActor->colChkInfo.cylHeight, 0.0f, &refActor->world.pos, &actor->world.pos, &spA8, &sp90, @@ -3917,8 +3975,8 @@ s16 Actor_TestFloorInDirection(Actor* actor, PlayState* play, f32 distance, s16 Math_Vec3f_Copy(&prevActorPos, &actor->world.pos); prevBgCheckFlags = actor->bgCheckFlags; - dx = Math_SinS(angle) * distance; - dz = Math_CosS(angle) * distance; + dx = distance * Math_SinS(angle); + dz = distance * Math_CosS(angle); actor->world.pos.x += dx; actor->world.pos.z += dz; @@ -4067,7 +4125,7 @@ void Actor_DrawDoorLock(PlayState* play, s32 frame, s32 type) { f32 chainRotZ; f32 chainsTranslateX; f32 chainsTranslateY; - s32 pad; + f32 scale; entry = &sDoorLocksInfo[type]; chainRotZ = entry->chainsRotZInit; @@ -4080,8 +4138,8 @@ void Actor_DrawDoorLock(PlayState* play, s32 frame, s32 type) { { f32 rotZStep; - chainsTranslateX = sinf(entry->chainAngle - chainRotZ) * -(10 - frame) * 0.1f * entry->chainLength; - chainsTranslateY = cosf(entry->chainAngle - chainRotZ) * (10 - frame) * 0.1f * entry->chainLength; + chainsTranslateX = -(10 - frame) * sinf(entry->chainAngle - chainRotZ) * 0.1f * entry->chainLength; + chainsTranslateY = (10 - frame) * cosf(entry->chainAngle - chainRotZ) * 0.1f * entry->chainLength; for (i = 0; i < 4; i++) { @@ -4106,8 +4164,9 @@ void Actor_DrawDoorLock(PlayState* play, s32 frame, s32 type) { } } + scale = frame * 0.1f; Matrix_Put(&baseMtxF); - Matrix_Scale(frame * 0.1f, frame * 0.1f, frame * 0.1f, MTXMODE_APPLY); + Matrix_Scale(scale, scale, scale, MTXMODE_APPLY); MATRIX_FINALIZE_AND_LOAD(POLY_OPA_DISP++, play->state.gfxCtx, "../z_actor.c", 8314); gSPDisplayList(POLY_OPA_DISP++, entry->lockDL); @@ -4257,7 +4316,7 @@ void Npc_TrackPointWithLimits(Actor* actor, NpcInteractInfo* interactInfo, s16 m s16 minHeadPitch, s16 maxTorsoYaw, s16 maxTorsoPitch, s16 minTorsoPitch, u8 rotateYaw) { s16 pitchTowardsTarget; s16 yawTowardsTarget; - s16 torsoPitch; + s16 pitch; s16 bodyYawDiff; s16 temp; Vec3f offsetActorPos; @@ -4268,7 +4327,8 @@ void Npc_TrackPointWithLimits(Actor* actor, NpcInteractInfo* interactInfo, s16 m pitchTowardsTarget = Math_Vec3f_Pitch(&offsetActorPos, &interactInfo->trackPos); yawTowardsTarget = Math_Vec3f_Yaw(&offsetActorPos, &interactInfo->trackPos); - bodyYawDiff = Math_Vec3f_Yaw(&actor->world.pos, &interactInfo->trackPos) - actor->shape.rot.y; + bodyYawDiff = Math_Vec3f_Yaw(&actor->world.pos, &interactInfo->trackPos); + bodyYawDiff -= actor->shape.rot.y; temp = CLAMP(bodyYawDiff, -maxHeadYaw, maxHeadYaw); Math_SmoothStepToS(&interactInfo->headRot.y, temp, 6, 2000, 1); @@ -4288,12 +4348,12 @@ void Npc_TrackPointWithLimits(Actor* actor, NpcInteractInfo* interactInfo, s16 m Math_SmoothStepToS(&actor->shape.rot.y, yawTowardsTarget, 6, 2000, 1); } - temp = CLAMP(pitchTowardsTarget, minHeadPitch, (s16)(u16)maxHeadPitch); + pitch = pitchTowardsTarget; + temp = CLAMP(pitch, minHeadPitch, maxHeadPitch); Math_SmoothStepToS(&interactInfo->headRot.x, temp, 6, 2000, 1); - torsoPitch = pitchTowardsTarget - interactInfo->headRot.x; - - temp = CLAMP(torsoPitch, minTorsoPitch, maxTorsoPitch); + pitch -= interactInfo->headRot.x; + temp = CLAMP(pitch, minTorsoPitch, maxTorsoPitch); Math_SmoothStepToS(&interactInfo->torsoRot.x, temp, 6, 2000, 1); } @@ -4537,8 +4597,8 @@ void Actor_UpdateFidgetTables(PlayState* play, s16* fidgetTableY, s16* fidgetTab s32 i; for (i = 0; i < tableLen; i++) { - fidgetTableY[i] = (FIDGET_FREQ_Y + FIDGET_FREQ_LIMB * i) * frames; - fidgetTableZ[i] = (FIDGET_FREQ_Z + FIDGET_FREQ_LIMB * i) * frames; + fidgetTableY[i] = frames * (FIDGET_FREQ_Y + FIDGET_FREQ_LIMB * i); + fidgetTableZ[i] = frames * (FIDGET_FREQ_Z + FIDGET_FREQ_LIMB * i); } } @@ -4593,7 +4653,7 @@ Actor* Actor_FindNearby(PlayState* play, Actor* refActor, s16 actorId, u8 actorC Actor* actor = play->actorCtx.actorLists[actorCategory].head; while (actor != NULL) { - if (actor == refActor || ((actorId != -1) && (actorId != actor->id))) { + if (actor == refActor || ((actorId != -1) && (actor->id != actorId))) { actor = actor->next; } else { if (Actor_WorldDistXYZToActor(refActor, actor) <= range) { @@ -4665,7 +4725,7 @@ u8 func_800355E4(PlayState* play, Collider* collider) { } u8 Actor_ApplyDamage(Actor* actor) { - if (actor->colChkInfo.damage >= actor->colChkInfo.health) { + if (actor->colChkInfo.health <= actor->colChkInfo.damage) { actor->colChkInfo.health = 0; } else { actor->colChkInfo.health -= actor->colChkInfo.damage; @@ -4675,26 +4735,28 @@ u8 Actor_ApplyDamage(Actor* actor) { } void Actor_SetDropFlag(Actor* actor, ColliderElement* elem, s32 freezeFlag) { - if (elem->acHitElem == NULL) { + ColliderElement* acHitElem = elem->acHitElem; + + if (acHitElem == NULL) { actor->dropFlag = 0x00; - } else if (freezeFlag && (elem->acHitElem->atDmgInfo.dmgFlags & (DMG_UNKNOWN_1 | DMG_MAGIC_ICE | DMG_MAGIC_FIRE))) { - actor->freezeTimer = elem->acHitElem->atDmgInfo.damage; + } else if (freezeFlag && (acHitElem->atDmgInfo.dmgFlags & (DMG_UNKNOWN_1 | DMG_MAGIC_ICE | DMG_MAGIC_FIRE))) { + actor->freezeTimer = acHitElem->atDmgInfo.damage; actor->dropFlag = 0x00; - } else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_FIRE) { + } else if (acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_FIRE) { actor->dropFlag = 0x01; - } else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_ICE) { + } else if (acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_ICE) { actor->dropFlag = 0x02; - } else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_UNK1) { + } else if (acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_UNK1) { actor->dropFlag = 0x04; - } else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_UNK2) { + } else if (acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_UNK2) { actor->dropFlag = 0x08; - } else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_UNK3) { + } else if (acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_UNK3) { actor->dropFlag = 0x10; - } else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_LIGHT) { + } else if (acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_LIGHT) { actor->dropFlag = 0x20; - } else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_MAGIC_LIGHT) { + } else if (acHitElem->atDmgInfo.dmgFlags & DMG_MAGIC_LIGHT) { if (freezeFlag) { - actor->freezeTimer = elem->acHitElem->atDmgInfo.damage; + actor->freezeTimer = acHitElem->atDmgInfo.damage; } actor->dropFlag = 0x40; } else { @@ -4704,6 +4766,7 @@ void Actor_SetDropFlag(Actor* actor, ColliderElement* elem, s32 freezeFlag) { void Actor_SetDropFlagJntSph(Actor* actor, ColliderJntSph* jntSph, s32 freezeFlag) { ColliderElement* elem; + ColliderElement* acHitElem; s32 flag; s32 i; @@ -4711,27 +4774,27 @@ void Actor_SetDropFlagJntSph(Actor* actor, ColliderJntSph* jntSph, s32 freezeFla for (i = jntSph->count - 1; i >= 0; i--) { elem = &jntSph->elements[i].base; - if (elem->acHitElem == NULL) { + acHitElem = elem->acHitElem; + if (acHitElem == NULL) { flag = 0x00; - } else if (freezeFlag && - (elem->acHitElem->atDmgInfo.dmgFlags & (DMG_UNKNOWN_1 | DMG_MAGIC_ICE | DMG_MAGIC_FIRE))) { - actor->freezeTimer = elem->acHitElem->atDmgInfo.damage; + } else if (freezeFlag && (acHitElem->atDmgInfo.dmgFlags & (DMG_UNKNOWN_1 | DMG_MAGIC_ICE | DMG_MAGIC_FIRE))) { + actor->freezeTimer = acHitElem->atDmgInfo.damage; flag = 0x00; - } else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_FIRE) { + } else if (acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_FIRE) { flag = 0x01; - } else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_ICE) { + } else if (acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_ICE) { flag = 0x02; - } else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_UNK1) { + } else if (acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_UNK1) { flag = 0x04; - } else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_UNK2) { + } else if (acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_UNK2) { flag = 0x08; - } else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_UNK3) { + } else if (acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_UNK3) { flag = 0x10; - } else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_LIGHT) { + } else if (acHitElem->atDmgInfo.dmgFlags & DMG_ARROW_LIGHT) { flag = 0x20; - } else if (elem->acHitElem->atDmgInfo.dmgFlags & DMG_MAGIC_LIGHT) { + } else if (acHitElem->atDmgInfo.dmgFlags & DMG_MAGIC_LIGHT) { if (freezeFlag) { - actor->freezeTimer = elem->acHitElem->atDmgInfo.damage; + actor->freezeTimer = acHitElem->atDmgInfo.damage; } flag = 0x40; } else { @@ -4813,28 +4876,40 @@ void func_80035B18(PlayState* play, Actor* actor, u16 textId) { * Tests if event_chk_inf flag is set. */ s32 Flags_GetEventChkInf(s32 flag) { - return GET_EVENTCHKINF(flag); + s32 mask = EVENTCHKINF_MASK(flag); + s32 index = EVENTCHKINF_INDEX(flag); + + return gSaveContext.save.info.eventChkInf[index] & mask; } /** * Sets event_chk_inf flag. */ void Flags_SetEventChkInf(s32 flag) { - SET_EVENTCHKINF(flag); + s32 mask = EVENTCHKINF_MASK(flag); + s32 index = EVENTCHKINF_INDEX(flag); + + gSaveContext.save.info.eventChkInf[index] |= mask; } /** * Tests if inf_table flag is set. */ s32 Flags_GetInfTable(s32 flag) { - return GET_INFTABLE(flag); + s32 mask = INFTABLE_MASK(flag); + s32 index = INFTABLE_INDEX(flag); + + return gSaveContext.save.info.infTable[index] & mask; } /** * Sets inf_table flag. */ void Flags_SetInfTable(s32 flag) { - SET_INFTABLE(flag); + s32 mask = INFTABLE_MASK(flag); + s32 index = INFTABLE_INDEX(flag); + + gSaveContext.save.info.infTable[index] |= mask; } u32 func_80035BFC(PlayState* play, s16 arg1) { @@ -5146,8 +5221,6 @@ u32 func_80035BFC(PlayState* play, s16 arg1) { } else { retTextId = 0x7007; } - } else { - retTextId = 0; } break; case 19: @@ -5489,8 +5562,6 @@ u32 func_80035BFC(PlayState* play, s16 arg1) { } else { retTextId = 0x401A; } - } else { - retTextId = 0; } break; case 58: @@ -5557,8 +5628,6 @@ u32 func_80035BFC(PlayState* play, s16 arg1) { } else { retTextId = 0x2030; } - } else { - retTextId = 0; } } break; @@ -5945,6 +6014,8 @@ s32 func_800374E0(PlayState* play, Actor* actor, u16 textId) { Flags_SetInfTable(INFTABLE_9A); ret = 0; break; + case 0x2035: + break; case 0x2036: case 0x2037: if (msgCtx->choiceIndex == 0) { @@ -6072,7 +6143,7 @@ s32 func_80037CB8(PlayState* play, Actor* actor, s16 arg2) { return ret; } -s32 func_80037D98(PlayState* play, Actor* actor, s16 arg2, s32* arg3) { +s32 func_80037D98(PlayState* play, Actor* actor, s32 arg2, s32* arg3) { s16 var; s16 sp2C; s16 sp2A; diff --git a/src/code/z_actor_dlftbls.c b/src/code/z_actor_dlftbls.c index 52d8ad8556..accce471cb 100644 --- a/src/code/z_actor_dlftbls.c +++ b/src/code/z_actor_dlftbls.c @@ -1,5 +1,8 @@ -#include "global.h" #include "fault.h" +#include "segment_symbols.h" +#include "z_actor_dlftbls.h" + +#include "macros.h" // Linker symbol declarations (used in the table below) #define DEFINE_ACTOR(name, _1, _2, _3) DECLARE_OVERLAY_SEGMENT(name) diff --git a/src/code/z_bg_item.c b/src/code/z_bg_item.c index 1a4d9f58d5..43c32eb558 100644 --- a/src/code/z_bg_item.c +++ b/src/code/z_bg_item.c @@ -1,4 +1,7 @@ -#include "global.h" +#include "z_lib.h" +#include "z64actor.h" +#include "z64bgcheck.h" +#include "z64play.h" /** * @param transformFlags How other actors standing on the dynapoly actor's collision move when the dynapoly actor moves. diff --git a/src/code/z_bgcheck.c b/src/code/z_bgcheck.c index 57a2c80289..71733baef5 100644 --- a/src/code/z_bgcheck.c +++ b/src/code/z_bgcheck.c @@ -1,8 +1,17 @@ -#include "global.h" -#include "terminal.h" +#include "libu64/debug.h" +#include "attributes.h" #include "line_numbers.h" +#include "regs.h" +#include "segmented_address.h" +#include "sys_math3d.h" +#include "terminal.h" +#include "z_lib.h" +#include "z64bgcheck.h" +#include "z64play.h" +#include "z64player.h" +#include "z64skin_matrix.h" -#pragma increment_block_number "ntsc-1.0:112 ntsc-1.1:112 ntsc-1.2:112" +#pragma increment_block_number "ntsc-1.0:208 ntsc-1.1:208 ntsc-1.2:208" 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 cb59ef55e9..79516f0171 100644 --- a/src/code/z_camera.c +++ b/src/code/z_camera.c @@ -1,11 +1,30 @@ +#include "libc64/math64.h" +#include "libc64/qrand.h" #include "ultra64.h" -#include "global.h" + +#include "attributes.h" +#include "controller.h" +#include "db_camera.h" +#include "letterbox.h" +#include "one_point_cutscene.h" #include "quake.h" +#include "regs.h" +#include "sfx.h" +#include "sys_math3d.h" #include "terminal.h" +#include "z_lib.h" +#include "zelda_arena.h" +#include "z64audio.h" +#include "z64cutscene_spline.h" +#include "z64debug.h" +#include "z64olib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" #include "overlays/actors/ovl_En_Horse/z_en_horse.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" \ - "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:192 ntsc-1.1:192 ntsc-1.2:192 pal-1.0:192 pal-1.1:192" s16 Camera_RequestSettingImpl(Camera* camera, s16 requestedSetting, s16 flags); s32 Camera_RequestModeImpl(Camera* camera, s16 requestedMode, u8 forceModeChange); @@ -3639,7 +3658,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" \ - "ntsc-1.0:133 ntsc-1.1:133 ntsc-1.2:133 pal-1.0:131 pal-1.1:131" + "ique-cn:128 ntsc-1.0:95 ntsc-1.1:95 ntsc-1.2:95 pal-1.0:93 pal-1.1:93" s32 Camera_KeepOn4(Camera* camera) { static Vec3f D_8015BD50; @@ -7532,7 +7551,7 @@ void Camera_Init(Camera* camera, View* view, CollisionContext* colCtx, PlayState #if DEBUG_FEATURES sDbgModeIdx = -1; #endif - D_8011D3F0 = 3; + sSceneInitLetterboxTimer = 3; // show letterbox for 3 frames at the start of a new scene PRINTF(VT_FGCOL(BLUE) "camera: initialize --- " VT_RST " UID %d\n", camera->uid); } @@ -8141,8 +8160,8 @@ Vec3s Camera_Update(Camera* camera) { if ((gSaveContext.gameMode != GAMEMODE_NORMAL) && (gSaveContext.gameMode != GAMEMODE_END_CREDITS)) { sCameraInterfaceField = CAM_INTERFACE_FIELD(CAM_LETTERBOX_NONE, CAM_HUD_VISIBILITY_ALL, 0); Camera_UpdateInterface(sCameraInterfaceField); - } else if ((D_8011D3F0 != 0) && (camera->camId == CAM_ID_MAIN)) { - D_8011D3F0--; + } else if ((sSceneInitLetterboxTimer != 0) && (camera->camId == CAM_ID_MAIN)) { + sSceneInitLetterboxTimer--; sCameraInterfaceField = CAM_INTERFACE_FIELD(CAM_LETTERBOX_LARGE, CAM_HUD_VISIBILITY_NOTHING_ALT, 0); Camera_UpdateInterface(sCameraInterfaceField); } else if (camera->play->transitionMode != TRANS_MODE_OFF) { diff --git a/src/code/z_camera_data.inc.c b/src/code/z_camera_data.inc.c index fece55ea3d..07a527afe8 100644 --- a/src/code/z_camera_data.inc.c +++ b/src/code/z_camera_data.inc.c @@ -2584,7 +2584,7 @@ s16 D_8011D3CC[] = { s32 sUpdateCameraDirection = 0; s32 D_8011D3EC = 0; -s32 D_8011D3F0 = 0; +s32 sSceneInitLetterboxTimer = 0; s32 sDemo5PrevAction12Frame = -16; diff --git a/src/code/z_cheap_proc.inc.c b/src/code/z_cheap_proc.inc.c index 059f67c02b..e922c0832c 100644 --- a/src/code/z_cheap_proc.inc.c +++ b/src/code/z_cheap_proc.inc.c @@ -1,4 +1,7 @@ -#include "global.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sys_matrix.h" +#include "z64play.h" void Gfx_DrawDListOpa(PlayState* play, Gfx* dlist) { OPEN_DISPS(play->state.gfxCtx, "../z_cheap_proc.c", 214); diff --git a/src/code/z_collision_check.c b/src/code/z_collision_check.c index aa83c5e532..e05bb44d17 100644 --- a/src/code/z_collision_check.c +++ b/src/code/z_collision_check.c @@ -15,8 +15,7 @@ #include "overlays/effects/ovl_Effect_Ss_HitMark/z_eff_ss_hitmark.h" #include "z_lib.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" \ - "ntsc-1.0:96 ntsc-1.1:96 ntsc-1.2:96 pal-1.0:96 pal-1.1:96" +#pragma increment_block_number "ique-cn:0 ntsc-1.0:248 ntsc-1.1:248 ntsc-1.2:248 pal-1.0:248 pal-1.1:248" typedef s32 (*ColChkResetFunc)(PlayState*, Collider*); typedef void (*ColChkApplyFunc)(PlayState*, CollisionCheckContext*, Collider*); @@ -46,7 +45,7 @@ void Collider_DrawPoly(GraphicsContext* gfxCtx, Vec3f* vA, Vec3f* vB, Vec3f* vC, OPEN_DISPS(gfxCtx, "../z_collision_check.c", 713); - gSPMatrix(POLY_OPA_DISP++, &gMtxClear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(POLY_OPA_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gDPSetPrimColor(POLY_OPA_DISP++, 0x00, 0xFF, r, g, b, 50); gDPPipeSync(POLY_OPA_DISP++); gDPSetRenderMode(POLY_OPA_DISP++, G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2); @@ -2225,7 +2224,7 @@ void CollisionCheck_ATTrisVsACCyl(PlayState* play, CollisionCheckContext* colChk } #pragma increment_block_number "gc-eu:252 gc-eu-mq:252 gc-jp:252 gc-jp-ce:252 gc-jp-mq:252 gc-us:252 gc-us-mq:252" \ - "ntsc-1.0:252 ntsc-1.1:252 ntsc-1.2:252 pal-1.0:252 pal-1.1:252" + "ique-cn:252 ntsc-1.0:252 ntsc-1.1:252 ntsc-1.2:252 pal-1.0:252 pal-1.1:252" void CollisionCheck_ATCylVsACQuad(PlayState* play, CollisionCheckContext* colChkCtx, Collider* atCol, Collider* acCol) { static TriNorm tri1; diff --git a/src/code/z_common_data.c b/src/code/z_common_data.c index d84dc5b208..c2dfc722c2 100644 --- a/src/code/z_common_data.c +++ b/src/code/z_common_data.c @@ -1,11 +1,21 @@ -#include "global.h" +#include "alignment.h" #include "region.h" +#include "sequence.h" #include "versions.h" +#include "z_locale.h" +#include "z64environment.h" +#include "z64save.h" +#include "z64transition.h" +#include "z64cutscene.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" \ - "ntsc-1.0:176 ntsc-1.1:176 ntsc-1.2:176 pal-1.0:160 pal-1.1:160" +#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" \ + "ntsc-1.0:0 ntsc-1.1:0 ntsc-1.2:0 pal-1.0:0 pal-1.1:0" ALIGNED(16) SaveContext gSaveContext; +#if PLATFORM_IQUE +// Unknown bss padding, placed here for matching +char sUnknownBssPadding[0x20]; +#endif u32 D_8015FA88; u32 D_8015FA8C; @@ -24,7 +34,7 @@ void SaveContext_Init(void) { gSaveContext.dogIsLost = true; gSaveContext.nextTransitionType = TRANS_NEXT_TYPE_DEFAULT; gSaveContext.prevHudVisibilityMode = HUD_VISIBILITY_ALL; -#if OOT_NTSC && OOT_VERSION < GC_US +#if OOT_NTSC && OOT_VERSION < GC_US || PLATFORM_IQUE if (gCurrentRegion == REGION_JP) { gSaveContext.language = LANGUAGE_JPN; } diff --git a/src/code/z_construct.c b/src/code/z_construct.c index 374665d385..4696cb76e4 100644 --- a/src/code/z_construct.c +++ b/src/code/z_construct.c @@ -1,5 +1,12 @@ -#include "global.h" +#include "map.h" +#include "regs.h" +#include "segment_symbols.h" #include "versions.h" +#include "z64lifemeter.h" +#include "z64interface.h" +#include "z64ocarina.h" +#include "z64play.h" +#include "z64save.h" void Interface_Destroy(PlayState* play) { Map_Destroy(play); @@ -19,17 +26,17 @@ void Interface_Init(PlayState* play) { View_Init(&interfaceCtx->view, play->state.gfxCtx); interfaceCtx->unk_1EC = interfaceCtx->unk_1EE = interfaceCtx->unk_1F0 = 0; + interfaceCtx->unk_1F4 = 0.0f; interfaceCtx->unk_1FA = interfaceCtx->unk_261 = interfaceCtx->unk_1FC = 0; interfaceCtx->unk_22E = 0; interfaceCtx->lensMagicConsumptionTimer = 16; - interfaceCtx->unk_1F4 = 0.0f; interfaceCtx->unk_228 = XREG(95); - interfaceCtx->minimapAlpha = 0; - interfaceCtx->unk_260 = 0; interfaceCtx->unk_244 = interfaceCtx->aAlpha = interfaceCtx->bAlpha = interfaceCtx->cLeftAlpha = interfaceCtx->cDownAlpha = interfaceCtx->cRightAlpha = interfaceCtx->healthAlpha = interfaceCtx->startAlpha = interfaceCtx->magicAlpha = 0; + interfaceCtx->minimapAlpha = 0; + interfaceCtx->unk_260 = 0; parameterSize = (uintptr_t)_parameter_staticSegmentRomEnd - (uintptr_t)_parameter_staticSegmentRomStart; @@ -204,7 +211,7 @@ void Interface_Init(PlayState* play) { void Message_Init(PlayState* play) { MessageContext* msgCtx = &play->msgCtx; - s32 pad; + Font* font = &msgCtx->font; Message_SetTables(); @@ -224,7 +231,7 @@ void Message_Init(PlayState* play) { PRINTF(T("吹き出しgame_alloc=%x\n", "Textbox game_alloc=%x\n"), TEXTBOX_SEGMENT_SIZE); ASSERT(msgCtx->textboxSegment != NULL, "message->fukidashiSegment != NULL", "../z_construct.c", 352); - Font_LoadOrderedFont(&play->msgCtx.font); + Font_LoadOrderedFont(font); YREG(31) = 0; } @@ -484,7 +491,11 @@ void Regs_InitDataImpl(void) { R_TEXTBOX_X_TARGET = 54; R_TEXTBOX_Y_TARGET = 48; R_TEXTBOX_WIDTH_TARGET = 128; +#if !PLATFORM_IQUE R_TEXTBOX_HEIGHT_TARGET = 64; +#else + R_TEXTBOX_HEIGHT_TARGET = 74; +#endif R_TEXTBOX_TEXWIDTH_TARGET = 2048; R_TEXTBOX_TEXHEIGHT_TARGET = 512; XREG(78) = 96; diff --git a/src/code/z_cutscene_spline.c b/src/code/z_cutscene_spline.c index 421f9a2809..d95b2ca7fd 100644 --- a/src/code/z_cutscene_spline.c +++ b/src/code/z_cutscene_spline.c @@ -1,4 +1,8 @@ -#include "global.h" +#include "ultra64.h" +#include "z64math.h" +#include "z64camera.h" +#include "z64cutscene_spline.h" +#include "macros.h" // The code in this file is very similar to a spline system used in Super Mario 64 for cutscene camera movement diff --git a/src/code/z_debug.c b/src/code/z_debug.c index d94e79e83b..ed02754fc1 100644 --- a/src/code/z_debug.c +++ b/src/code/z_debug.c @@ -1,4 +1,16 @@ -#include "global.h" +#include "libc64/malloc.h" +#include "libu64/gfxprint.h" +#include "libu64/pad.h" +#include "color.h" +#include "controller.h" +#include "gfx.h" +#include "gfxalloc.h" +#include "regs.h" +#include "rumble.h" +#include "ultra64.h" +#include "z64debug.h" + +#include "macros.h" typedef struct DebugCamTextBufferEntry { /* 0x0 */ u8 x; @@ -13,7 +25,7 @@ typedef struct InputCombo { } InputCombo; // size = 0x4 #pragma increment_block_number "gc-eu:160 gc-eu-mq:160 gc-jp:160 gc-jp-ce:160 gc-jp-mq:160 gc-us:160 gc-us-mq:160" \ - "ntsc-1.0:160 ntsc-1.1:160 ntsc-1.2:160 pal-1.0:160 pal-1.1:160" + "ique-cn:160 ntsc-1.0:160 ntsc-1.1:160 ntsc-1.2:160 pal-1.0:160 pal-1.1:160" RegEditor* gRegEditor; diff --git a/src/code/z_debug_display.c b/src/code/z_debug_display.c index d6b6e0aabc..9d15663a67 100644 --- a/src/code/z_debug_display.c +++ b/src/code/z_debug_display.c @@ -1,4 +1,9 @@ -#include "global.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sys_matrix.h" +#include "z64play.h" +#include "z64debug_display.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" typedef struct DebugDispObjectInfo { diff --git a/src/code/z_demo.c b/src/code/z_demo.c index 3837b2893e..efd30073f2 100644 --- a/src/code/z_demo.c +++ b/src/code/z_demo.c @@ -1,11 +1,29 @@ -#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:128 ntsc-1.1:128 ntsc-1.2:128 pal-1.0:128 pal-1.1:128" +#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" #include "global.h" -#include "quake.h" -#include "z64camera.h" +#include "libu64/gfxprint.h" +#include "controller.h" +#include "gfx.h" +#include "gfxalloc.h" +#include "letterbox.h" #if PLATFORM_N64 #include "n64dd.h" #endif +#include "regs.h" +#include "rumble.h" +#include "quake.h" +#include "segmented_address.h" +#include "seqcmd.h" +#include "sequence.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64camera.h" +#include "z64cutscene.h" +#include "z64cutscene_flags.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" #include "assets/scenes/indoors/tokinoma/tokinoma_scene.h" @@ -126,8 +144,8 @@ u16 gCamAtSplinePointsAppliedFrame; u16 gCamEyePointAppliedFrame; u16 gCamAtPointAppliedFrame; -#pragma increment_block_number "gc-eu:0 gc-eu-mq:0 gc-jp:188 gc-jp-ce:188 gc-jp-mq:0 gc-us:188 gc-us-mq:0" \ - "ntsc-1.0:128 ntsc-1.1:80 ntsc-1.2:80 pal-1.0:80 pal-1.1:80" +#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:0 pal-1.0:128 pal-1.1:128" // Cam ID to return to when a scripted cutscene is finished s16 sReturnToCamId; diff --git a/src/code/z_draw.c b/src/code/z_draw.c index 89b49faf4a..9e0dd236eb 100644 --- a/src/code/z_draw.c +++ b/src/code/z_draw.c @@ -1,4 +1,9 @@ -#include "global.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sys_matrix.h" +#include "z64draw.h" +#include "z64play.h" + #include "assets/objects/object_gi_key/object_gi_key.h" #include "assets/objects/object_gi_jewel/object_gi_jewel.h" #include "assets/objects/object_gi_melody/object_gi_melody.h" diff --git a/src/code/z_eff_blure.c b/src/code/z_eff_blure.c index 212f5ee7df..d44007bb76 100644 --- a/src/code/z_eff_blure.c +++ b/src/code/z_eff_blure.c @@ -1,4 +1,15 @@ +#include "libc64/math64.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sys_math3d.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64skin_matrix.h" + +#include "macros.h" #include "global.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" void EffectBlure_AddVertex(EffectBlure* this, Vec3f* p1, Vec3f* p2) { @@ -805,7 +816,7 @@ void EffectBlure_DrawSimpleVertices(GraphicsContext* gfxCtx, EffectBlure* this, gSPMatrix(POLY_XLU_DISP++, mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPVertex(POLY_XLU_DISP++, &vtx[4 * i], 4, 0); gSP2Triangles(POLY_XLU_DISP++, 0, 1, 3, 0, 0, 3, 2, 0); - gSPMatrix(POLY_XLU_DISP++, &gMtxClear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(POLY_XLU_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); } } } @@ -932,7 +943,7 @@ void EffectBlure_Draw(void* thisx, GraphicsContext* gfxCtx) { OPEN_DISPS(gfxCtx, "../z_eff_blure.c", 1596); - gSPMatrix(POLY_XLU_DISP++, &gMtxClear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(POLY_XLU_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); if (this->numElements != 0) { if (this->flags == 0) { diff --git a/src/code/z_eff_shield_particle.c b/src/code/z_eff_shield_particle.c index 74cd6a435a..e4e331964e 100644 --- a/src/code/z_eff_shield_particle.c +++ b/src/code/z_eff_shield_particle.c @@ -1,5 +1,15 @@ -#include "global.h" +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" #include "terminal.h" +#include "z64effect.h" +#include "z64light.h" +#include "z64play.h" +#include "z64skin_matrix.h" + +#include "macros.h" +#include "global.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" static Vtx sVertices[5] = { diff --git a/src/code/z_eff_spark.c b/src/code/z_eff_spark.c index a997caa129..f14c8160fe 100644 --- a/src/code/z_eff_spark.c +++ b/src/code/z_eff_spark.c @@ -1,4 +1,14 @@ +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sys_matrix.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64skin_matrix.h" + +#include "macros.h" #include "global.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" // original name: "spark" @@ -154,7 +164,7 @@ void EffectSpark_Draw(void* thisx, GraphicsContext* gfxCtx) { OPEN_DISPS(gfxCtx, "../z_eff_spark.c", 293); if (this != NULL) { - gSPMatrix(POLY_XLU_DISP++, &gMtxClear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(POLY_XLU_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); POLY_XLU_DISP = Gfx_SetupDL(POLY_XLU_DISP, SETUPDL_38); gDPSetCycleType(POLY_XLU_DISP++, G_CYC_2CYCLE); diff --git a/src/code/z_eff_ss_dead.c b/src/code/z_eff_ss_dead.c index 2a64a23f4a..c752738725 100644 --- a/src/code/z_eff_ss_dead.c +++ b/src/code/z_eff_ss_dead.c @@ -1,4 +1,6 @@ -#include "global.h" +#include "gfx.h" +#include "z_lib.h" +#include "z64play.h" void func_80026230(PlayState* play, Color_RGBA8* color, s16 arg2, s16 arg3) { f32 cos; diff --git a/src/code/z_effect.c b/src/code/z_effect.c index ac2141db0b..02ba00a8dd 100644 --- a/src/code/z_effect.c +++ b/src/code/z_effect.c @@ -1,6 +1,7 @@ -#include "global.h" - +#include "gfx.h" +#include "z64effect.h" #include "z64frame_advance.h" +#include "z64play.h" EffectContext sEffectContext; diff --git a/src/code/z_effect_soft_sprite.c b/src/code/z_effect_soft_sprite.c index 9a3df7eef3..2acddc4bf0 100644 --- a/src/code/z_effect_soft_sprite.c +++ b/src/code/z_effect_soft_sprite.c @@ -1,7 +1,10 @@ -#include "global.h" +#include "libu64/overlay.h" +#include "sfx.h" #include "terminal.h" - +#include "zelda_arena.h" #include "z64frame_advance.h" +#include "z64effect.h" +#include "z64play.h" EffectSsInfo sEffectSsInfo = { 0 }; // "EffectSS2Info" diff --git a/src/code/z_effect_soft_sprite_old_init.c b/src/code/z_effect_soft_sprite_old_init.c index 253996b625..c04e76128e 100644 --- a/src/code/z_effect_soft_sprite_old_init.c +++ b/src/code/z_effect_soft_sprite_old_init.c @@ -1,4 +1,16 @@ -#include "global.h" +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "regs.h" +#include "segmented_address.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64skin_matrix.h" + #include "overlays/effects/ovl_Effect_Ss_Dust/z_eff_ss_dust.h" #include "overlays/effects/ovl_Effect_Ss_KiraKira/z_eff_ss_kirakira.h" #include "overlays/effects/ovl_Effect_Ss_Bomb/z_eff_ss_bomb.h" diff --git a/src/code/z_elf_message.c b/src/code/z_elf_message.c index c90b4ee6f4..bb93099363 100644 --- a/src/code/z_elf_message.c +++ b/src/code/z_elf_message.c @@ -1,5 +1,10 @@ -#include "global.h" +#include "libu64/debug.h" +#include "rand.h" +#include "z64play.h" +#include "z64player.h" +#include "z64quest_hint.h" #include "z64quest_hint_commands.h" +#include "z64save.h" QuestHintCmd sChildSariaQuestHints[] = { QUEST_HINT_STRENGTH_UPG(SKIP, 0, false, 3), diff --git a/src/code/z_en_a_keep.c b/src/code/z_en_a_keep.c index 23d77075dd..9b2bf7c0b7 100644 --- a/src/code/z_en_a_keep.c +++ b/src/code/z_en_a_keep.c @@ -1,4 +1,11 @@ -#include "global.h" +#include "z_en_a_obj.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_d_hsblock/object_d_hsblock.h" diff --git a/src/code/z_en_item00.c b/src/code/z_en_item00.c index 31386556c5..aa757f8643 100644 --- a/src/code/z_en_item00.c +++ b/src/code/z_en_item00.c @@ -1,10 +1,28 @@ -#include "global.h" +#include "z_en_item00.h" #include "overlays/actors/ovl_En_Elf/z_en_elf.h" -#include "assets/objects/gameplay_keep/gameplay_keep.h" #include "overlays/effects/ovl_Effect_Ss_Dead_Sound/z_eff_ss_dead_sound.h" +#include "libc64/qrand.h" +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64draw.h" +#include "z64effect.h" +#include "z64item.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/gameplay_keep/gameplay_keep.h" + #pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-eu-mq-dbg:0 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128" \ - "gc-us-mq:128 ntsc-1.2:128" + "gc-us-mq:128 ntsc-1.0:128 ntsc-1.2:128" #define FLAGS 0 diff --git a/src/code/z_env_flags.c b/src/code/z_env_flags.c index 0057128e22..9ad7e7a024 100644 --- a/src/code/z_env_flags.c +++ b/src/code/z_env_flags.c @@ -1,4 +1,6 @@ -#include "global.h" +#include "ultra64.h" +#include "z64cutscene_flags.h" +#include "z64play.h" void CutsceneFlags_UnsetAll(PlayState* play) { u8 i; diff --git a/src/code/z_face_reaction.c b/src/code/z_face_reaction.c index 9864944b1c..ea6313a762 100644 --- a/src/code/z_face_reaction.c +++ b/src/code/z_face_reaction.c @@ -1,4 +1,6 @@ -#include "global.h" +#include "ultra64.h" +#include "z64face_reaction.h" +#include "z64player.h" u16 sMaskReactionSetTextIds[MASK_REACTION_SET_MAX][PLAYER_MASK_MAX] = { // MASK_REACTION_SET_CARPENTER_BOSS @@ -182,7 +184,7 @@ u16 sMaskReactionSetTextIds[MASK_REACTION_SET_MAX][PLAYER_MASK_MAX] = { { 0x0000, 0x7104, 0x7105, 0x7107, 0x7105, 0x710C, 0x7105, 0x7107, 0x7107 }, }; -u16 MaskReaction_GetTextId(PlayState* play, u32 maskReactionSet) { +u16 MaskReaction_GetTextId(struct PlayState* play, u32 maskReactionSet) { u8 currentMask = Player_GetMask(play); return sMaskReactionSetTextIds[maskReactionSet][currentMask]; diff --git a/src/code/z_fbdemo.c b/src/code/z_fbdemo.c index a2b0fb8bf1..246e27b1a3 100644 --- a/src/code/z_fbdemo.c +++ b/src/code/z_fbdemo.c @@ -9,7 +9,14 @@ * @note The only coded effect has a visual effect to blend the tiles to a single point, which looks like the screen * gets sucked into. */ -#include "global.h" +#include "libc64/malloc.h" +#include "libc64/sleep.h" +#include "libu64/debug.h" +#include "gfx.h" +#include "z64math.h" +#include "z64transition_instances.h" + +#include "macros.h" // color framebuffer extern u16 D_0F000000[]; diff --git a/src/code/z_fbdemo_circle.c b/src/code/z_fbdemo_circle.c index 59f019e952..c25f174a75 100644 --- a/src/code/z_fbdemo_circle.c +++ b/src/code/z_fbdemo_circle.c @@ -1,3 +1,5 @@ +#include "gfx.h" + #include "global.h" typedef enum TransitionCircleDirection { diff --git a/src/code/z_fbdemo_fade.c b/src/code/z_fbdemo_fade.c index d2cb382f05..3375628cb0 100644 --- a/src/code/z_fbdemo_fade.c +++ b/src/code/z_fbdemo_fade.c @@ -1,5 +1,12 @@ -#include "global.h" +#include "ultra64.h" +#include "main.h" +#include "regs.h" #include "terminal.h" +#include "z_lib.h" +#include "z64save.h" +#include "z64transition_instances.h" + +#include "macros.h" typedef enum TransitionFadeDirection { /* 0 */ TRANS_FADE_DIR_IN, diff --git a/src/code/z_fbdemo_wipe1.c b/src/code/z_fbdemo_wipe1.c index e008f68613..a3418e91a3 100644 --- a/src/code/z_fbdemo_wipe1.c +++ b/src/code/z_fbdemo_wipe1.c @@ -1,4 +1,6 @@ -#include "global.h" +#include "gfx.h" +#include "z64save.h" +#include "z64transition_instances.h" typedef enum TransitionWipeDirection { /* 0 */ TRANS_WIPE_DIR_IN, diff --git a/src/code/z_fcurve_data_skelanime.c b/src/code/z_fcurve_data_skelanime.c index 1086adb2ec..3797449312 100644 --- a/src/code/z_fcurve_data_skelanime.c +++ b/src/code/z_fcurve_data_skelanime.c @@ -25,8 +25,14 @@ * - higher detail draws both. */ -#include "global.h" +#include "gfx.h" +#include "regs.h" +#include "segmented_address.h" +#include "sys_matrix.h" +#include "zelda_arena.h" +#include "z64actor.h" #include "z64curve.h" +#include "z64play.h" void SkelCurve_Clear(SkelCurve* skelCurve) { skelCurve->limbCount = 0; diff --git a/src/code/z_frame_advance.c b/src/code/z_frame_advance.c index 486717a50f..5c8f685f22 100644 --- a/src/code/z_frame_advance.c +++ b/src/code/z_frame_advance.c @@ -3,7 +3,7 @@ #include "stdbool.h" #include "controller.h" -#include "padmgr.h" +#include "libu64/pad.h" #include "macros.h" void FrameAdvance_Init(FrameAdvanceContext* frameAdvCtx) { diff --git a/src/code/z_game_dlftbls.c b/src/code/z_game_dlftbls.c index 2cad84089d..57efe90dfc 100644 --- a/src/code/z_game_dlftbls.c +++ b/src/code/z_game_dlftbls.c @@ -1,4 +1,11 @@ -#include "global.h" +#include "segment_symbols.h" +#include "console_logo_state.h" +#include "file_select_state.h" +#include "map_select_state.h" +#include "setup_state.h" +#include "title_setup_state.h" +#include "z_game_dlftbls.h" +#include "z64play.h" // Linker symbol declarations (used in the table below) #define DEFINE_GAMESTATE(typeName, enumName, name) DECLARE_OVERLAY_SEGMENT(name) diff --git a/src/code/z_game_over.c b/src/code/z_game_over.c index f0390a9611..20814a4c74 100644 --- a/src/code/z_game_over.c +++ b/src/code/z_game_over.c @@ -1,7 +1,14 @@ -#include "z64game_over.h" - -#include "global.h" +#include "letterbox.h" +#include "regs.h" +#include "rumble.h" +#include "sequence.h" #include "versions.h" +#include "z64game_over.h" +#include "z64play.h" +#include "z64save.h" + +#include "macros.h" +#include "global.h" void GameOver_Init(PlayState* play) { play->gameOverCtx.state = GAMEOVER_INACTIVE; diff --git a/src/code/z_horse.c b/src/code/z_horse.c index fd3eb1747c..ff1918cc2c 100644 --- a/src/code/z_horse.c +++ b/src/code/z_horse.c @@ -4,7 +4,8 @@ #include "z64horse.h" #include "z64play.h" #include "z64player.h" -#include "src/overlays/actors/ovl_En_Horse/z_en_horse.h" +#include "z64save.h" +#include "overlays/actors/ovl_En_Horse/z_en_horse.h" /** * Tests if the player horse can be spawned diff --git a/src/code/z_inventory.c b/src/code/z_inventory.c index 2f89c0565b..bb4bb5f850 100644 --- a/src/code/z_inventory.c +++ b/src/code/z_inventory.c @@ -1,4 +1,8 @@ -#include "global.h" +#include "ultra64.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/textures/icon_item_static/icon_item_static.h" #include "assets/textures/icon_item_24_static/icon_item_24_static.h" #include "assets/textures/parameter_static/parameter_static.h" diff --git a/src/code/z_jpeg.c b/src/code/z_jpeg.c index 86a97183aa..81e2999462 100644 --- a/src/code/z_jpeg.c +++ b/src/code/z_jpeg.c @@ -1,6 +1,12 @@ #include "global.h" +#include "ultra64.h" +#include "attributes.h" +#include "jpeg.h" +#include "sys_ucode.h" #include "terminal.h" +#include "macros.h" + #define MARKER_ESCAPE 0x00 #define MARKER_SOI 0xD8 #define MARKER_SOF 0xC0 diff --git a/src/code/z_kaleido_manager.c b/src/code/z_kaleido_manager.c index 42ec59fd0a..9fa8f5ebc3 100644 --- a/src/code/z_kaleido_manager.c +++ b/src/code/z_kaleido_manager.c @@ -1,5 +1,11 @@ -#include "global.h" +#include "libu64/debug.h" +#include "libu64/overlay.h" +#include "kaleido_manager.h" +#include "segment_symbols.h" #include "terminal.h" +#include "z64play.h" + +#include "macros.h" #define KALEIDO_OVERLAY(name, nameString) \ { NULL, ROM_FILE(ovl_##name), _ovl_##name##SegmentStart, _ovl_##name##SegmentEnd, 0, nameString, } diff --git a/src/code/z_kaleido_scope_call.c b/src/code/z_kaleido_scope_call.c index 10fff2bb07..cacd46abe3 100644 --- a/src/code/z_kaleido_scope_call.c +++ b/src/code/z_kaleido_scope_call.c @@ -1,8 +1,14 @@ -#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:224 gc-jp-ce:224 gc-jp-mq:224 gc-us:224 gc-us-mq:224" \ - "ntsc-1.0:224 ntsc-1.1:224 ntsc-1.2:224 pal-1.0:224 pal-1.1:224" +#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:144 ntsc-1.1:144 ntsc-1.2:144 pal-1.0:144 pal-1.1:144" + +#include "libu64/debug.h" +#include "kaleido_manager.h" +#include "letterbox.h" +#include "regs.h" +#include "terminal.h" +#include "z64play.h" #include "global.h" -#include "terminal.h" void (*sKaleidoScopeUpdateFunc)(PlayState* play); void (*sKaleidoScopeDrawFunc)(PlayState* play); diff --git a/src/code/z_kaleido_setup.c b/src/code/z_kaleido_setup.c index a7b984a938..32d1a8bdd1 100644 --- a/src/code/z_kaleido_setup.c +++ b/src/code/z_kaleido_setup.c @@ -1,7 +1,12 @@ -#include "global.h" +#include "controller.h" +#include "letterbox.h" #if PLATFORM_N64 #include "n64dd.h" #endif +#include "regs.h" +#include "z64audio.h" +#include "z64play.h" +#include "z64save.h" /* * The following three arrays are effectively unused. diff --git a/src/code/z_kanfont.c b/src/code/z_kanfont.c index 4093f775a9..21ba416b35 100644 --- a/src/code/z_kanfont.c +++ b/src/code/z_kanfont.c @@ -1,6 +1,12 @@ -#include "global.h" +#include "kanread.h" #include "message_data_static.h" +#include "segment_symbols.h" #include "versions.h" +#include "z64dma.h" +#include "z64font.h" +#include "z64message.h" + +#include "macros.h" /** * Loads a texture from kanji for the requested `character` into the character texture buffer @@ -19,13 +25,21 @@ void Font_LoadCharWide(Font* font, u16 character, u16 codePointIndex) { * at `codePointIndex`. The value of `character` is the ASCII codepoint subtract ' '/0x20. */ void Font_LoadChar(Font* font, u8 character, u16 codePointIndex) { - u8 charTmp = character; + s32 offset = character * FONT_CHAR_TEX_SIZE; - DMA_REQUEST_SYNC(&font->charTexBuf[codePointIndex], - (uintptr_t)_nes_font_staticSegmentRomStart + charTmp * FONT_CHAR_TEX_SIZE, FONT_CHAR_TEX_SIZE, - "../z_kanfont.c", 93); + DMA_REQUEST_SYNC(&font->charTexBuf[codePointIndex], (uintptr_t)_nes_font_staticSegmentRomStart + offset, + FONT_CHAR_TEX_SIZE, "../z_kanfont.c", 93); } +#if PLATFORM_IQUE +void Font_LoadCharCHN(Font* font, u16 character, u16 codePointIndex) { + s32 offset = character * FONT_CHAR_TEX_SIZE; + + DMA_REQUEST_SYNC(&font->charTexBuf[codePointIndex], (uintptr_t)_nes_font_staticSegmentRomStart + offset, + FONT_CHAR_TEX_SIZE, "../z_kanfont.c", UNK_LINE); +} +#endif + /** * Loads a message box icon from message_static, such as the ending triangle/square or choice arrow into the * icon buffer. @@ -48,18 +62,23 @@ void Font_LoadOrderedFont(Font* font) { s32 codePointIndex; s32 fontBufIndex; u32 offset; + const char* messageDataStart; + u16* msgBufWide; - font->msgOffset = FONT_MESSAGE_OFFSET; - size = font->msgLength = FONT_MESSAGE_LENGTH; - -#if OOT_NTSC +#if OOT_NTSC && !PLATFORM_IQUE + messageDataStart = (const char*)_jpn_message_data_staticSegmentStart; + font->msgOffset = _message_0xFFFC_jpn - messageDataStart; + size = font->msgLength = _message_0xFFFD_jpn - _message_0xFFFC_jpn; len = (u32)size / 2; DMA_REQUEST_SYNC(font->msgBufWide, (uintptr_t)_jpn_message_data_staticSegmentRomStart + font->msgOffset, size, "../z_kanfont.c", UNK_LINE); + PRINTF("msg_data=%x, msg_data0=%x jj=%x\n", font->msgOffset, font->msgLength, len); + fontBufIndex = 0; for (codePointIndex = 0; font->msgBufWide[codePointIndex] != MESSAGE_WIDE_END; codePointIndex++) { if (len < codePointIndex) { + PRINTF(T("ERROR!! エラー!!! error───!!!!\n", "ERROR!! Error!!! error───!!!!\n")); return; } @@ -70,7 +89,10 @@ void Font_LoadOrderedFont(Font* font) { fontBufIndex += FONT_CHAR_TEX_SIZE / 8; } } -#else +#elif OOT_PAL + messageDataStart = (const char*)_nes_message_data_staticSegmentStart; + font->msgOffset = _message_0xFFFC_nes - messageDataStart; + size = font->msgLength = _message_0xFFFD_nes - _message_0xFFFC_nes; len = size; DMA_REQUEST_SYNC(font->msgBuf, (uintptr_t)_nes_message_data_staticSegmentRomStart + font->msgOffset, len, "../z_kanfont.c", 122); @@ -93,5 +115,31 @@ void Font_LoadOrderedFont(Font* font) { fontBufIndex += FONT_CHAR_TEX_SIZE / 8; } } +#elif PLATFORM_IQUE + messageDataStart = (const char*)_jpn_message_data_staticSegmentStart; + font->msgOffset = _message_0xFFFC_jpn - messageDataStart; + size = font->msgLength = _message_0xFFFD_jpn - _message_0xFFFC_jpn; + len = (u32)size / 2; + DMA_REQUEST_SYNC(font->msgBufWide, (uintptr_t)_jpn_message_data_staticSegmentRomStart + font->msgOffset, size, + "../z_kanfont.c", UNK_LINE); + + PRINTF("msg_data=%x, msg_data0=%x jj=%x\n", font->msgOffset, font->msgLength, len); + + // Workaround for EGCS internal compiler error (see docs/compilers.md) + msgBufWide = font->msgBufWide; + fontBufIndex = 0; + for (codePointIndex = 0; msgBufWide[codePointIndex] != MESSAGE_WIDE_END; codePointIndex++) { + if (len < codePointIndex) { + PRINTF(T("ERROR!! エラー!!! error───!!!!\n", "ERROR!! Error!!! error───!!!!\n")); + return; + } + + if (msgBufWide[codePointIndex] != MESSAGE_WIDE_NEWLINE) { + offset = Kanji_OffsetFromShiftJIS(msgBufWide[codePointIndex]); + DMA_REQUEST_SYNC(&font->fontBuf[fontBufIndex * 8], (uintptr_t)_kanjiSegmentRomStart + offset, + FONT_CHAR_TEX_SIZE, "../z_kanfont.c", UNK_LINE); + fontBufIndex += FONT_CHAR_TEX_SIZE / 8; + } + } #endif } diff --git a/src/code/z_kankyo.c b/src/code/z_kankyo.c index 91e168ecde..5d4866e1e9 100644 --- a/src/code/z_kankyo.c +++ b/src/code/z_kankyo.c @@ -1,12 +1,33 @@ -#pragma increment_block_number "gc-eu:220 gc-eu-mq:220 gc-jp:212 gc-jp-ce:212 gc-jp-mq:212 gc-us:212 gc-us-mq:212" \ - "ntsc-1.0:224 ntsc-1.1:224 ntsc-1.2:224 pal-1.0:228 pal-1.1:228" +#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:64 ntsc-1.1:64 ntsc-1.2:64 pal-1.0:64 pal-1.1:64" -#include "global.h" +#include "libc64/qrand.h" +#include "libu64/gfxprint.h" +#include "buffers.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "gfxalloc.h" #include "ultra64.h" +#include "regs.h" +#include "rumble.h" +#include "segment_symbols.h" +#include "segmented_address.h" +#include "seqcmd.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_math.h" +#include "sys_math3d.h" +#include "sys_matrix.h" #include "terminal.h" #include "versions.h" - +#include "z_lib.h" +#include "z64audio.h" +#include "z64cutscene.h" #include "z64frame_advance.h" +#include "z64environment.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/gameplay_field_keep/gameplay_field_keep.h" @@ -214,8 +235,8 @@ s16 sLightningFlashAlpha; s16 sSunDepthTestX; s16 sSunDepthTestY; -#pragma increment_block_number "gc-eu:240 gc-eu-mq:240 gc-jp:224 gc-jp-ce:224 gc-jp-mq:224 gc-us:224 gc-us-mq:224" \ - "ntsc-1.0:224 ntsc-1.1:224 ntsc-1.2:224 pal-1.0:240 pal-1.1:240" +#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:192 ntsc-1.1:192 ntsc-1.2:192 pal-1.0:192 pal-1.1:192" LightNode* sNGameOverLightNode; LightInfo sNGameOverLightInfo; diff --git a/src/code/z_lifemeter.c b/src/code/z_lifemeter.c index efe7b92b83..cab9737ff7 100644 --- a/src/code/z_lifemeter.c +++ b/src/code/z_lifemeter.c @@ -1,4 +1,13 @@ -#include "global.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64lifemeter.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/textures/parameter_static/parameter_static.h" static s16 sHeartsPrimColors[3][3] = { diff --git a/src/code/z_lights.c b/src/code/z_lights.c index 5ee208f705..e9f5338503 100644 --- a/src/code/z_lights.c +++ b/src/code/z_lights.c @@ -1,4 +1,10 @@ -#include "global.h" +#include "buffers.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sys_matrix.h" +#include "z64light.h" +#include "z64play.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define LIGHTS_BUFFER_SIZE 32 diff --git a/src/code/z_map_data.c b/src/code/z_map_data.c index 24721c6234..502eb43c3c 100644 --- a/src/code/z_map_data.c +++ b/src/code/z_map_data.c @@ -1,4 +1,5 @@ -#include "global.h" +#include "map.h" +#include "z64save.h" static s16 sFloorTexIndexOffset[10][8] = { { 0, 0, 0, 0, 2, 4, 6, 8 }, { 0, 0, 0, 0, 0, 0, 0, 2 }, diff --git a/src/code/z_map_exp.c b/src/code/z_map_exp.c index c658775da3..78371084b5 100644 --- a/src/code/z_map_exp.c +++ b/src/code/z_map_exp.c @@ -1,10 +1,22 @@ -#include "global.h" -#include "terminal.h" -#include "assets/objects/gameplay_keep/gameplay_keep.h" -#include "assets/textures/parameter_static/parameter_static.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "controller.h" +#include "map.h" #if PLATFORM_N64 #include "n64dd.h" #endif +#include "regs.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "terminal.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "global.h" + +#include "assets/objects/gameplay_keep/gameplay_keep.h" +#include "assets/textures/parameter_static/parameter_static.h" MapData* gMapData; @@ -356,7 +368,7 @@ void Minimap_DrawCompassIcons(PlayState* play) { if (play->interfaceCtx.minimapAlpha >= 0xAA) { Gfx_SetupDL_42Overlay(play->state.gfxCtx); - gSPMatrix(OVERLAY_DISP++, &gMtxClear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(OVERLAY_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); gDPSetEnvColor(OVERLAY_DISP++, 0, 0, 0, 255); diff --git a/src/code/z_map_mark.c b/src/code/z_map_mark.c index 4d0ab0411b..600aa2189c 100644 --- a/src/code/z_map_mark.c +++ b/src/code/z_map_mark.c @@ -1,9 +1,19 @@ -#include "global.h" +#include "libu64/debug.h" +#include "libu64/overlay.h" +#include "map.h" +#include "regs.h" +#include "romfile.h" +#include "segment_symbols.h" #include "terminal.h" #include "assets/textures/parameter_static/parameter_static.h" #if PLATFORM_N64 #include "n64dd.h" #endif +#include "z64map_mark.h" +#include "z64play.h" +#include "z64save.h" + +#include "global.h" typedef struct MapMarkInfo { /* 0x00 */ void* texture; diff --git a/src/code/z_message.c b/src/code/z_message.c index b6e24c1d62..ce6f98e6b0 100644 --- a/src/code/z_message.c +++ b/src/code/z_message.c @@ -1,15 +1,44 @@ -#include "global.h" +#include "libu64/gfxprint.h" +#include "attributes.h" +#include "controller.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "gfxalloc.h" #include "message_data_static.h" -#include "terminal.h" -#include "versions.h" -#include "assets/textures/parameter_static/parameter_static.h" #if PLATFORM_N64 #include "n64dd.h" #endif +#include "segment_symbols.h" +#include "sequence.h" +#include "regs.h" +#include "terminal.h" +#include "versions.h" +#include "z64audio.h" +#include "z64ocarina.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "global.h" + +#include "assets/textures/parameter_static/parameter_static.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" \ "ntsc-1.0:80 ntsc-1.1:80 ntsc-1.2:80 pal-1.0:128 pal-1.1:128" +#if !PLATFORM_IQUE +#define MSG_BUF_DECODED (msgCtx->msgBufDecoded) +#define MSG_BUF_DECODED_WIDE (msgCtx->msgBufDecodedWide) +#define MSG_BUF (font->msgBuf) +#define MSG_BUF_WIDE (font->msgBufWide) +#else +// Workaround for EGCS internal compiler error (see docs/compilers.md) +#define MSG_BUF_DECODED ((u8*)msgCtx->msgBufDecoded) +#define MSG_BUF_DECODED_WIDE ((u16*)msgCtx->msgBufDecodedWide) +#define MSG_BUF ((u8*)font->msgBuf) +#define MSG_BUF_WIDE ((u16*)font->msgBufWide) +#endif + #if !PLATFORM_GC #define OCARINA_BUTTON_A_PRIM_1_R 80 #define OCARINA_BUTTON_A_PRIM_1_G 150 @@ -95,13 +124,13 @@ s32 sCharTexScale; s16 sTextFade = false; // original name: key_off_flag ? -u8 D_8014B2F4 = 0; +char D_8014B2F4 = 0; s16 sOcarinaButtonIndexBufPos = 0; s16 sOcarinaButtonIndexBufLen = 0; -u8 sTextboxSkipped = false; +char sTextboxSkipped = false; u16 sNextTextId = 0; @@ -293,9 +322,9 @@ void Message_ResetOcarinaNoteState(void) { void Message_UpdateOcarinaMemoryGame(PlayState* play) { MessageContext* msgCtx = &play->msgCtx; - play->msgCtx.msgMode++; + msgCtx->msgMode++; - if (play->msgCtx.msgMode == MSGMODE_MEMORY_GAME_PLAYER_PLAYING) { + if (msgCtx->msgMode == MSGMODE_MEMORY_GAME_PLAYER_PLAYING) { AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT); msgCtx->ocarinaStaff = AudioOcarina_GetPlayingStaff(); msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos = 0; @@ -346,7 +375,7 @@ void Message_CloseTextbox(PlayState* play) { } } -void Message_HandleChoiceSelection(PlayState* play, u8 numChoices) { +void Message_HandleChoiceSelection(PlayState* play, char numChoices) { static s16 sAnalogStickHeld = false; MessageContext* msgCtx = &play->msgCtx; Input* input = &play->state.input[0]; @@ -354,21 +383,23 @@ void Message_HandleChoiceSelection(PlayState* play, u8 numChoices) { if (input->rel.stick_y >= 30 && !sAnalogStickHeld) { sAnalogStickHeld = true; msgCtx->choiceIndex--; - if (msgCtx->choiceIndex > 128) { + // NOLINTBEGIN + if (msgCtx->choiceIndex > 128) msgCtx->choiceIndex = 0; - } else { + else Audio_PlaySfxGeneral(NA_SE_SY_CURSOR, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); - } + // NOLINTEND } else if (input->rel.stick_y <= -30 && !sAnalogStickHeld) { sAnalogStickHeld = true; msgCtx->choiceIndex++; - if (msgCtx->choiceIndex > numChoices) { + // NOLINTBEGIN + if (msgCtx->choiceIndex > numChoices) msgCtx->choiceIndex = numChoices; - } else { + else Audio_PlaySfxGeneral(NA_SE_SY_CURSOR, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); - } + // NOLINTEND } else if (ABS(input->rel.stick_y) < 30) { sAnalogStickHeld = false; } @@ -444,7 +475,7 @@ void Message_GrowTextbox(MessageContext* msgCtx) { R_TEXTBOX_TEXWIDTH = texWidth + 0.5f; R_TEXTBOX_TEXHEIGHT = texHeight + 0.5f; // Adjust x pos - R_TEXTBOX_X = (R_TEXTBOX_X_TARGET + R_TEXTBOX_WIDTH_TARGET) - (R_TEXTBOX_WIDTH / 2); + R_TEXTBOX_X = R_TEXTBOX_WIDTH_TARGET - (R_TEXTBOX_WIDTH / 2) + R_TEXTBOX_X_TARGET; } #if OOT_NTSC @@ -466,11 +497,15 @@ void Message_FindMessageJPN(PlayState* play, u16 textId) { nextSeg = messageTableEntry->segment; font->msgOffset = foundSeg - seg; font->msgLength = nextSeg - foundSeg; + PRINTF(T(" メッセージが,見つかった!!! = %x (data=%x) (data0=%x) (data1=%x) (data2=%x) (data3=%x)\n", + "Message found!!! = %x (data=%x) (data0=%x) (data1=%x) (data2=%x) (data3=%x)\n"), + textId, font->msgOffset, font->msgLength, foundSeg, seg, nextSeg); return; } messageTableEntry++; } + PRINTF(T(" メッセージが,見つからなかった!!! = %x\n", "Message not found!!! = %x\n"), textId); messageTableEntry = sJpnMessageEntryTablePtr; foundSeg = messageTableEntry->segment; @@ -498,11 +533,15 @@ void Message_FindMessageNES(PlayState* play, u16 textId) { nextSeg = messageTableEntry->segment; font->msgOffset = foundSeg - seg; font->msgLength = nextSeg - foundSeg; + PRINTF(T(" メッセージが,見つかった!!! = %x (data=%x) (data0=%x) (data1=%x) (data2=%x) (data3=%x)\n", + "Message found!!! = %x (data=%x) (data0=%x) (data1=%x) (data2=%x) (data3=%x)\n"), + textId, font->msgOffset, font->msgLength, foundSeg, seg, nextSeg); return; } messageTableEntry++; } + PRINTF(T(" メッセージが,見つからなかった!!! = %x\n", "Message not found!!! = %x\n"), textId); messageTableEntry = sNesMessageEntryTablePtr; foundSeg = messageTableEntry->segment; @@ -797,6 +836,10 @@ void Message_DrawTextboxIcon(PlayState* play, Gfx** p, s16 x, s16 y) { G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); +#if PLATFORM_IQUE + R_TEXT_CHAR_SCALE = 80; +#endif + sCharTexSize = 16.0f * ((f32)R_TEXT_CHAR_SCALE / 100.0f); sCharTexScale = 1024.0f / ((f32)R_TEXT_CHAR_SCALE / 100.0f); @@ -1002,7 +1045,7 @@ u16 Message_DrawItemIcon(PlayState* play, u16 itemId, Gfx** p, u16 i) { void Message_HandleOcarina(PlayState* play) { MessageContext* msgCtx = &play->msgCtx; - if (play->msgCtx.msgMode == MSGMODE_TEXT_DISPLAYING) { + if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) { play->msgCtx.ocarinaMode = OCARINA_MODE_01; if (msgCtx->ocarinaAction == OCARINA_ACTION_SCARECROW_LONG_RECORDING) { @@ -1015,8 +1058,7 @@ void Message_HandleOcarina(PlayState* play) { AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT); AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT); msgCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff(); - sOcarinaButtonIndexBufPos = sOcarinaButtonIndexBufLen = 0; - msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos; + msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos = sOcarinaButtonIndexBufLen = 0; Message_ResetOcarinaNoteState(); msgCtx->stateTimer = 3; msgCtx->msgMode = MSGMODE_SCARECROW_LONG_PLAYBACK; @@ -1030,8 +1072,7 @@ void Message_HandleOcarina(PlayState* play) { AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT); AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT); msgCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff(); - sOcarinaButtonIndexBufPos = sOcarinaButtonIndexBufLen = 0; - msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos; + msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos = sOcarinaButtonIndexBufLen = 0; Message_ResetOcarinaNoteState(); msgCtx->stateTimer = 3; msgCtx->msgMode = MSGMODE_SCARECROW_SPAWN_PLAYBACK; @@ -1076,8 +1117,8 @@ void Message_DrawTextWide(PlayState* play, Gfx** gfxP) { u16 charTexIdx; Gfx* gfx = *gfxP; - play->msgCtx.textPosX = R_TEXT_INIT_XPOS; - play->msgCtx.textPosY = R_TEXT_INIT_YPOS; + msgCtx->textPosX = R_TEXT_INIT_XPOS; + msgCtx->textPosY = R_TEXT_INIT_YPOS; if (msgCtx->textBoxType == TEXTBOX_TYPE_NONE_NO_SHADOW) { msgCtx->textColorR = msgCtx->textColorG = msgCtx->textColorB = 0; @@ -1089,7 +1130,7 @@ void Message_DrawTextWide(PlayState* play, Gfx** gfxP) { charTexIdx = 0; for (i = 0; i < msgCtx->textDrawPos; i++) { - character = msgCtx->msgBufDecodedWide[i]; + character = MSG_BUF_DECODED_WIDE[i]; switch (character) { case MESSAGE_WIDE_NEWLINE: @@ -1103,7 +1144,7 @@ void Message_DrawTextWide(PlayState* play, Gfx** gfxP) { } break; case MESSAGE_WIDE_COLOR: - Message_SetTextColor(msgCtx, msgCtx->msgBufDecodedWide[++i]); + Message_SetTextColor(msgCtx, MSG_BUF_DECODED_WIDE[++i]); break; case MESSAGE_WIDE_CHAR_SPACE: msgCtx->textPosX += MESSAGE_SPACE_WIDTH; @@ -1124,7 +1165,7 @@ void Message_DrawTextWide(PlayState* play, Gfx** gfxP) { *gfxP = gfx; return; case MESSAGE_WIDE_SHIFT: - msgCtx->textPosX += msgCtx->msgBufDecodedWide[++i]; + msgCtx->textPosX += MSG_BUF_DECODED_WIDE[++i]; break; case MESSAGE_WIDE_TEXTID: msgCtx->textboxEndType = TEXTBOX_ENDTYPE_HAS_NEXT; @@ -1140,15 +1181,12 @@ void Message_DrawTextWide(PlayState* play, Gfx** gfxP) { if (i + 1 == msgCtx->textDrawPos && (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING || (msgCtx->msgMode >= MSGMODE_OCARINA_STARTING && msgCtx->msgMode < MSGMODE_SCARECROW_LONG_RECORDING_START))) { - j = i; - while (true) { - character = msgCtx->msgBufDecodedWide[j]; - if ((character != MESSAGE_WIDE_QUICKTEXT_DISABLE) && (character != MESSAGE_WIDE_PERSISTENT) && - (character != MESSAGE_WIDE_EVENT) && (character != MESSAGE_WIDE_BOX_BREAK_DELAYED) && - (character != MESSAGE_WIDE_AWAIT_BUTTON_PRESS) && (character != MESSAGE_WIDE_BOX_BREAK) && - (character != MESSAGE_WIDE_END)) { - j++; - } else { + for (j = i;; j++) { + character = MSG_BUF_DECODED_WIDE[j]; + if ((character == MESSAGE_WIDE_QUICKTEXT_DISABLE) || (character == MESSAGE_WIDE_PERSISTENT) || + (character == MESSAGE_WIDE_EVENT) || (character == MESSAGE_WIDE_BOX_BREAK_DELAYED) || + (character == MESSAGE_WIDE_AWAIT_BUTTON_PRESS) || (character == MESSAGE_WIDE_BOX_BREAK) || + (character == MESSAGE_WIDE_END)) { break; } } @@ -1170,7 +1208,7 @@ void Message_DrawTextWide(PlayState* play, Gfx** gfxP) { break; case MESSAGE_WIDE_BOX_BREAK_DELAYED: if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) { - msgCtx->stateTimer = msgCtx->msgBufDecodedWide[++i]; + msgCtx->stateTimer = MSG_BUF_DECODED_WIDE[++i]; msgCtx->msgMode = MSGMODE_TEXT_DELAYED_BREAK; } *gfxP = gfx; @@ -1180,13 +1218,13 @@ void Message_DrawTextWide(PlayState* play, Gfx** gfxP) { case MESSAGE_WIDE_SFX: if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING && !sMessageHasSetSfx) { sMessageHasSetSfx = true; - Audio_PlaySfxGeneral(msgCtx->msgBufDecodedWide[i + 1], &gSfxDefaultPos, 4, - &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); + Audio_PlaySfxGeneral(MSG_BUF_DECODED_WIDE[i + 1], &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, + &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); } i++; break; case MESSAGE_WIDE_ITEM_ICON: - i = Message_DrawItemIcon(play, msgCtx->msgBufDecodedWide[i + 1], &gfx, i); + i = Message_DrawItemIcon(play, MSG_BUF_DECODED_WIDE[i + 1], &gfx, i); break; case MESSAGE_WIDE_BACKGROUND: // clang-format off @@ -1209,7 +1247,7 @@ void Message_DrawTextWide(PlayState* play, Gfx** gfxP) { gfx++, (msgCtx->textPosX + 1) << 2, (R_TEXTBOX_BG_YPOS + sTextboxBackgroundYOffsets[msgCtx->textboxBackgroundYOffsetIdx]) << 2, (msgCtx->textPosX + 96 + 1) << 2, - (R_TEXTBOX_BG_YPOS + sTextboxBackgroundYOffsets[msgCtx->textboxBackgroundYOffsetIdx] + 48) << 2, + (R_TEXTBOX_BG_YPOS + 48 + sTextboxBackgroundYOffsets[msgCtx->textboxBackgroundYOffsetIdx]) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); gDPLoadTextureBlock_4b(gfx++, msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE + 0x900, G_IM_FMT_I, 96, @@ -1219,7 +1257,7 @@ void Message_DrawTextWide(PlayState* play, Gfx** gfxP) { gfx++, (msgCtx->textPosX + 96 + 1) << 2, (R_TEXTBOX_BG_YPOS + sTextboxBackgroundYOffsets[msgCtx->textboxBackgroundYOffsetIdx]) << 2, (msgCtx->textPosX + 96 + 1 + 96 + 1) << 2, - (R_TEXTBOX_BG_YPOS + sTextboxBackgroundYOffsets[msgCtx->textboxBackgroundYOffsetIdx] + 48) << 2, + (R_TEXTBOX_BG_YPOS + 48 + sTextboxBackgroundYOffsets[msgCtx->textboxBackgroundYOffsetIdx]) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); gDPPipeSync(gfx++); @@ -1248,7 +1286,7 @@ void Message_DrawTextWide(PlayState* play, Gfx** gfxP) { msgCtx->textPosX += 32; break; case MESSAGE_WIDE_TEXT_SPEED: - msgCtx->textDelay = msgCtx->msgBufDecodedWide[++i]; + msgCtx->textDelay = MSG_BUF_DECODED_WIDE[++i]; break; case MESSAGE_WIDE_UNSKIPPABLE: msgCtx->textUnskippable = true; @@ -1296,7 +1334,7 @@ void Message_DrawTextWide(PlayState* play, Gfx** gfxP) { if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) { msgCtx->msgMode = MSGMODE_TEXT_DONE; msgCtx->textboxEndType = TEXTBOX_ENDTYPE_FADING; - msgCtx->stateTimer = msgCtx->msgBufDecodedWide[++i]; + msgCtx->stateTimer = MSG_BUF_DECODED_WIDE[++i]; Font_LoadMessageBoxIcon(font, TEXTBOX_ICON_SQUARE); if (play->csCtx.state == CS_STATE_IDLE) { Interface_SetDoAction(play, DO_ACTION_RETURN); @@ -1339,7 +1377,7 @@ void Message_DrawTextWide(PlayState* play, Gfx** gfxP) { msgCtx->textPosX -= 2; break; } - if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING && i + 1 == msgCtx->textDrawPos && + if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING && i == msgCtx->textDrawPos - 1 && msgCtx->textDelayTimer == msgCtx->textDelay) { Audio_PlaySfxGeneral(NA_SE_NONE, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); @@ -1401,7 +1439,7 @@ void Message_DrawText(PlayState* play, Gfx** gfxP) { Font* font = &play->msgCtx.font; Gfx* gfx = *gfxP; - play->msgCtx.textPosX = R_TEXT_INIT_XPOS; + msgCtx->textPosX = R_TEXT_INIT_XPOS; if (!sTextIsCredits) { msgCtx->textPosY = R_TEXT_INIT_YPOS; } else { @@ -1418,7 +1456,7 @@ void Message_DrawText(PlayState* play, Gfx** gfxP) { charTexIdx = 0; for (i = 0; i < msgCtx->textDrawPos; i++) { - character = msgCtx->msgBufDecoded[i]; + character = MSG_BUF_DECODED[i]; switch (character) { case MESSAGE_NEWLINE: @@ -1432,7 +1470,7 @@ void Message_DrawText(PlayState* play, Gfx** gfxP) { msgCtx->textPosY += R_TEXT_LINE_SPACING; break; case MESSAGE_COLOR: - Message_SetTextColor(msgCtx, msgCtx->msgBufDecoded[++i] & 0xF); + Message_SetTextColor(msgCtx, MSG_BUF_DECODED[++i] & 0xF); break; case MESSAGE_CHAR_SPACE: msgCtx->textPosX += MESSAGE_SPACE_WIDTH; @@ -1453,7 +1491,7 @@ void Message_DrawText(PlayState* play, Gfx** gfxP) { *gfxP = gfx; return; case MESSAGE_SHIFT: - msgCtx->textPosX += msgCtx->msgBufDecoded[++i]; + msgCtx->textPosX += MSG_BUF_DECODED[++i]; break; case MESSAGE_TEXTID: msgCtx->textboxEndType = TEXTBOX_ENDTYPE_HAS_NEXT; @@ -1469,17 +1507,14 @@ void Message_DrawText(PlayState* play, Gfx** gfxP) { if (i + 1 == msgCtx->textDrawPos && (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING || (msgCtx->msgMode >= MSGMODE_OCARINA_STARTING && msgCtx->msgMode < MSGMODE_SCARECROW_LONG_RECORDING_START))) { - j = i; - while (true) { - character = msgCtx->msgBufDecoded[j]; + for (j = i;; j++) { + character = MSG_BUF_DECODED[j]; if (character == MESSAGE_SHIFT) { - j += 2; - } else if ((character != MESSAGE_QUICKTEXT_DISABLE) && (character != MESSAGE_PERSISTENT) && - (character != MESSAGE_EVENT) && (character != MESSAGE_BOX_BREAK_DELAYED) && - (character != MESSAGE_AWAIT_BUTTON_PRESS) && (character != MESSAGE_BOX_BREAK) && - (character != MESSAGE_END)) { j++; - } else { + } else if ((character == MESSAGE_QUICKTEXT_DISABLE) || (character == MESSAGE_PERSISTENT) || + (character == MESSAGE_EVENT) || (character == MESSAGE_BOX_BREAK_DELAYED) || + (character == MESSAGE_AWAIT_BUTTON_PRESS) || (character == MESSAGE_BOX_BREAK) || + (character == MESSAGE_END)) { break; } } @@ -1501,7 +1536,7 @@ void Message_DrawText(PlayState* play, Gfx** gfxP) { break; case MESSAGE_BOX_BREAK_DELAYED: if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) { - msgCtx->stateTimer = msgCtx->msgBufDecoded[++i]; + msgCtx->stateTimer = MSG_BUF_DECODED[++i]; msgCtx->msgMode = MSGMODE_TEXT_DELAYED_BREAK; } *gfxP = gfx; @@ -1510,10 +1545,9 @@ void Message_DrawText(PlayState* play, Gfx** gfxP) { if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) { msgCtx->msgMode = MSGMODE_TEXT_DONE; msgCtx->textboxEndType = TEXTBOX_ENDTYPE_FADING; - PRINTF(T("タイマー (%x) (%x)", "Timer (%x) (%x)"), msgCtx->msgBufDecoded[i + 1], - msgCtx->msgBufDecoded[i + 2]); - msgCtx->stateTimer = msgCtx->msgBufDecoded[++i] << 8; - msgCtx->stateTimer |= msgCtx->msgBufDecoded[++i]; + PRINTF(T("タイマー (%x) (%x)", "Timer (%x) (%x)"), MSG_BUF_DECODED[i + 1], MSG_BUF_DECODED[i + 2]); + msgCtx->stateTimer = MSG_BUF_DECODED[++i] << 8; + msgCtx->stateTimer |= MSG_BUF_DECODED[++i]; PRINTF(T("合計wct=%x(%d)\n", " Total wct=%x(%d)\n"), msgCtx->stateTimer, msgCtx->stateTimer); } *gfxP = gfx; @@ -1522,15 +1556,15 @@ void Message_DrawText(PlayState* play, Gfx** gfxP) { if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING && !sMessageHasSetSfx) { sMessageHasSetSfx = true; PRINTF(T("サウンド(SE)\n", "Sound (SE)\n")); - sfxHi = msgCtx->msgBufDecoded[i + 1]; + sfxHi = MSG_BUF_DECODED[i + 1]; sfxHi <<= 8; - Audio_PlaySfxGeneral(sfxHi | msgCtx->msgBufDecoded[i + 2], &gSfxDefaultPos, 4, + Audio_PlaySfxGeneral(sfxHi | MSG_BUF_DECODED[i + 2], &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); } i += 2; break; case MESSAGE_ITEM_ICON: - i = Message_DrawItemIcon(play, msgCtx->msgBufDecoded[i + 1], &gfx, i); + i = Message_DrawItemIcon(play, MSG_BUF_DECODED[i + 1], &gfx, i); break; case MESSAGE_BACKGROUND: // clang-format off @@ -1553,7 +1587,7 @@ void Message_DrawText(PlayState* play, Gfx** gfxP) { gfx++, (msgCtx->textPosX + 1) << 2, (R_TEXTBOX_BG_YPOS + sTextboxBackgroundYOffsets[msgCtx->textboxBackgroundYOffsetIdx]) << 2, (msgCtx->textPosX + 96 + 1) << 2, - (R_TEXTBOX_BG_YPOS + sTextboxBackgroundYOffsets[msgCtx->textboxBackgroundYOffsetIdx] + 48) << 2, + (R_TEXTBOX_BG_YPOS + 48 + sTextboxBackgroundYOffsets[msgCtx->textboxBackgroundYOffsetIdx]) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); gDPLoadTextureBlock_4b(gfx++, msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE + 0x900, G_IM_FMT_I, 96, @@ -1563,7 +1597,7 @@ void Message_DrawText(PlayState* play, Gfx** gfxP) { gfx++, (msgCtx->textPosX + 96 + 1) << 2, (R_TEXTBOX_BG_YPOS + sTextboxBackgroundYOffsets[msgCtx->textboxBackgroundYOffsetIdx]) << 2, (msgCtx->textPosX + 96 + 1 + 96 + 1) << 2, - (R_TEXTBOX_BG_YPOS + sTextboxBackgroundYOffsets[msgCtx->textboxBackgroundYOffsetIdx] + 48) << 2, + (R_TEXTBOX_BG_YPOS + 48 + sTextboxBackgroundYOffsets[msgCtx->textboxBackgroundYOffsetIdx]) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); gDPPipeSync(gfx++); @@ -1592,7 +1626,7 @@ void Message_DrawText(PlayState* play, Gfx** gfxP) { msgCtx->textPosX += 32; break; case MESSAGE_TEXT_SPEED: - msgCtx->textDelay = msgCtx->msgBufDecoded[++i]; + msgCtx->textDelay = MSG_BUF_DECODED[++i]; break; case MESSAGE_UNSKIPPABLE: msgCtx->textUnskippable = true; @@ -1640,7 +1674,7 @@ void Message_DrawText(PlayState* play, Gfx** gfxP) { if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING) { msgCtx->msgMode = MSGMODE_TEXT_DONE; msgCtx->textboxEndType = TEXTBOX_ENDTYPE_FADING; - msgCtx->stateTimer = msgCtx->msgBufDecoded[++i]; + msgCtx->stateTimer = MSG_BUF_DECODED[++i]; Font_LoadMessageBoxIcon(font, TEXTBOX_ICON_SQUARE); if (play->csCtx.state == 0) { Interface_SetDoAction(play, DO_ACTION_RETURN); @@ -1668,11 +1702,18 @@ void Message_DrawText(PlayState* play, Gfx** gfxP) { *gfxP = gfx; return; default: - if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING && i + 1 == msgCtx->textDrawPos && + if (msgCtx->msgMode == MSGMODE_TEXT_DISPLAYING && i == msgCtx->textDrawPos - 1 && msgCtx->textDelayTimer == msgCtx->textDelay) { Audio_PlaySfxGeneral(NA_SE_NONE, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); } + +#if PLATFORM_IQUE + if (!sTextIsCredits) { + R_TEXT_CHAR_SCALE = 100; + } +#endif + Message_DrawTextChar(play, &font->charTexBuf[charTexIdx], &gfx); charTexIdx += FONT_CHAR_TEX_SIZE; @@ -1696,8 +1737,8 @@ void Message_LoadItemIcon(PlayState* play, u16 itemId, s16 y) { InterfaceContext* interfaceCtx = &play->interfaceCtx; if (itemId == ITEM_DUNGEON_MAP) { - interfaceCtx->mapPalette[30] = 0xFF; - interfaceCtx->mapPalette[31] = 0xFF; + interfaceCtx->mapPalette[30] = -1; + interfaceCtx->mapPalette[31] = -1; } if (itemId < ITEM_MEDALLION_FOREST) { R_TEXTBOX_ICON_XPOS = R_TEXT_INIT_XPOS - sIconItem32XOffsets[gSaveContext.language]; @@ -1729,7 +1770,7 @@ void Message_Decode(PlayState* play) { s16 decodedBufPos = 0; s16 numLines = 0; s16 digits[4]; - f32 timeInSeconds; + s32 pad; s16 playerNameLen; s16 loadChar; u16 value; @@ -1739,15 +1780,15 @@ void Message_Decode(PlayState* play) { u8* fontBuf; #endif - play->msgCtx.textDelayTimer = 0; - play->msgCtx.textUnskippable = play->msgCtx.textDelay = play->msgCtx.textDelayTimer = 0; + msgCtx->textDelayTimer = 0; + msgCtx->textUnskippable = msgCtx->textDelay = msgCtx->textDelayTimer = 0; sTextFade = false; #if OOT_NTSC if (gSaveContext.language == LANGUAGE_JPN && !sTextIsCredits) { // Japanese text (NTSC only) - while (true) { - curCharWide = msgCtx->msgBufDecodedWide[decodedBufPos] = font->msgBufWide[msgCtx->msgBufPos]; + for (;;) { + curCharWide = MSG_BUF_DECODED_WIDE[decodedBufPos] = MSG_BUF_WIDE[msgCtx->msgBufPos]; if (curCharWide == MESSAGE_WIDE_BOX_BREAK || curCharWide == MESSAGE_WIDE_TEXTID || curCharWide == MESSAGE_WIDE_BOX_BREAK_DELAYED || curCharWide == MESSAGE_WIDE_EVENT || @@ -1764,10 +1805,10 @@ void Message_Decode(PlayState* play) { } } if (curCharWide == MESSAGE_WIDE_TEXTID) { - sNextTextId = msgCtx->msgBufDecodedWide[++decodedBufPos] = font->msgBufWide[msgCtx->msgBufPos + 1]; + sNextTextId = MSG_BUF_DECODED_WIDE[++decodedBufPos] = MSG_BUF_WIDE[msgCtx->msgBufPos + 1]; } if (curCharWide == MESSAGE_WIDE_BOX_BREAK_DELAYED) { - msgCtx->msgBufDecodedWide[++decodedBufPos] = font->msgBufWide[msgCtx->msgBufPos + 1]; + MSG_BUF_DECODED_WIDE[++decodedBufPos] = MSG_BUF_WIDE[msgCtx->msgBufPos + 1]; msgCtx->msgBufPos += 2; } msgCtx->decodedTextLen = decodedBufPos; @@ -1775,8 +1816,7 @@ void Message_Decode(PlayState* play) { msgCtx->textDrawPos = msgCtx->decodedTextLen; } break; - } - if (curCharWide == MESSAGE_WIDE_NAME) { + } else if (curCharWide == MESSAGE_WIDE_NAME) { // Substitute the player name control character for the file's player name. for (playerNameLen = ARRAY_COUNT(gSaveContext.save.info.playerData.playerName); playerNameLen > 0; playerNameLen--) { @@ -1784,10 +1824,12 @@ void Message_Decode(PlayState* play) { break; } } + PRINTF(T("\n名前 = ", "\nName = ")); for (i = 0; i < playerNameLen; i++) { curCharWide = gSaveContext.save.info.playerData.playerName[i]; + PRINTF("(%x), ", curCharWide); + MSG_BUF_DECODED_WIDE[decodedBufPos + i] = MESSAGE_WIDE_NAME; fontBuf = &font->fontBuf[(curCharWide * 32) << 2]; // fake - msgCtx->msgBufDecodedWide[decodedBufPos + i] = MESSAGE_WIDE_NAME; for (j = 0; j < FONT_CHAR_TEX_SIZE; j += 4) { font->charTexBuf[charTexIdx + j + 0] = fontBuf[j + 0]; @@ -1801,6 +1843,7 @@ void Message_Decode(PlayState* play) { } else if (curCharWide == MESSAGE_WIDE_MARATHON_TIME || curCharWide == MESSAGE_WIDE_RACE_TIME) { // Convert the values of the appropriate timer to digits and add the // digits to the decoded buffer in place of the control character. + PRINTF(T("\nEVENTタイマー = \n", "\nEVENT timer = \n")); digits[0] = digits[1] = digits[2] = 0; if (curCharWide == MESSAGE_WIDE_RACE_TIME) { digits[3] = gSaveContext.timerSeconds; @@ -1821,24 +1864,26 @@ void Message_Decode(PlayState* play) { } for (i = 0; i < 4; i++) { + PRINTF("rpc[%d] = %x\n", i, digits[i] + MESSAGE_WIDE_CHAR_ZERO); Font_LoadCharWide(font, digits[i] + MESSAGE_WIDE_CHAR_ZERO, charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; - msgCtx->msgBufDecodedWide[decodedBufPos] = digits[i] + MESSAGE_WIDE_CHAR_ZERO; + MSG_BUF_DECODED_WIDE[decodedBufPos] = digits[i] + MESSAGE_WIDE_CHAR_ZERO; decodedBufPos++; if (i == 1) { Font_LoadCharWide(font, MESSAGE_WIDE_CHAR_MINUTES, charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; - msgCtx->msgBufDecodedWide[decodedBufPos] = MESSAGE_WIDE_CHAR_MINUTES; + MSG_BUF_DECODED_WIDE[decodedBufPos] = MESSAGE_WIDE_CHAR_MINUTES; decodedBufPos++; } else if (i == 3) { Font_LoadCharWide(font, MESSAGE_WIDE_CHAR_SECONDS, charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; - msgCtx->msgBufDecodedWide[decodedBufPos] = MESSAGE_WIDE_CHAR_SECONDS; + MSG_BUF_DECODED_WIDE[decodedBufPos] = MESSAGE_WIDE_CHAR_SECONDS; } } } else if (curCharWide == MESSAGE_WIDE_POINTS) { // Convert the values of the current minigame score to digits and // add the digits to the decoded buffer in place of the control character. + PRINTF(T("\n流鏑馬スコア = ", "\nHorseback archery score = ")); digits[0] = digits[1] = digits[2] = 0; digits[3] = gSaveContext.minigameScore; @@ -1862,7 +1907,7 @@ void Message_Decode(PlayState* play) { if (loadChar) { Font_LoadCharWide(font, digits[i] + MESSAGE_WIDE_CHAR_ZERO, charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; - msgCtx->msgBufDecodedWide[decodedBufPos] = digits[i] + MESSAGE_WIDE_CHAR_ZERO; + MSG_BUF_DECODED_WIDE[decodedBufPos] = digits[i] + MESSAGE_WIDE_CHAR_ZERO; decodedBufPos++; } } @@ -1870,6 +1915,8 @@ void Message_Decode(PlayState* play) { } else if (curCharWide == MESSAGE_WIDE_TOKENS) { // Convert the current number of collected gold skulltula tokens to digits and // add the digits to the decoded buffer in place of the control character. + PRINTF(T("\n金スタ合計数 = %d", "\nTotal number of gold skulls = %d"), + gSaveContext.save.info.inventory.gsTokens); digits[0] = digits[1] = 0; digits[2] = gSaveContext.save.info.inventory.gsTokens; @@ -1890,12 +1937,13 @@ void Message_Decode(PlayState* play) { if (loadChar) { Font_LoadCharWide(font, digits[i] + MESSAGE_WIDE_CHAR_ZERO, charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; - msgCtx->msgBufDecodedWide[decodedBufPos] = digits[i] + MESSAGE_WIDE_CHAR_ZERO; + MSG_BUF_DECODED_WIDE[decodedBufPos] = digits[i] + MESSAGE_WIDE_CHAR_ZERO; decodedBufPos++; } } decodedBufPos--; } else if (curCharWide == MESSAGE_WIDE_FISH_INFO) { + PRINTF(T("\n釣り堀魚サイズ = ", "\nFishing hole fish size = ")); digits[0] = 0; digits[1] = gSaveContext.minigameScore; @@ -1908,21 +1956,37 @@ void Message_Decode(PlayState* play) { if (i == 1 || digits[i] != 0) { Font_LoadCharWide(font, digits[i] + MESSAGE_WIDE_CHAR_ZERO, charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; - msgCtx->msgBufDecodedWide[decodedBufPos] = digits[i] + MESSAGE_WIDE_CHAR_ZERO; + MSG_BUF_DECODED_WIDE[decodedBufPos] = digits[i] + MESSAGE_WIDE_CHAR_ZERO; decodedBufPos++; } } decodedBufPos--; } else if (curCharWide == MESSAGE_WIDE_HIGHSCORE) { - value = HIGH_SCORE(font->msgBufWide[++msgCtx->msgBufPos] & 0xFF); - if ((font->msgBufWide[msgCtx->msgBufPos] & 0xFF) == HS_FISHING) { + value = HIGH_SCORE(MSG_BUF_WIDE[++msgCtx->msgBufPos] & 0xFF); + if ((MSG_BUF_WIDE[msgCtx->msgBufPos] & 0xFF) == HS_FISHING) { if (LINK_AGE_IN_YEARS == YEARS_CHILD) { +#if !PLATFORM_IQUE + PRINTF("HI_SCORE(kanfont->mbuff.message_buf[message->rdp]) = %x\n", + HIGH_SCORE(MSG_BUF_WIDE[msgCtx->msgBufPos])); +#else + PRINTF("HI_SCORE(((unshort *)(kanfont->mbuff.message_buf))[message->rdp]) = %x\n", + HIGH_SCORE(MSG_BUF_WIDE[msgCtx->msgBufPos])); +#endif value &= 0x7F; } else { - value = ((HIGH_SCORE(font->msgBufWide[msgCtx->msgBufPos]) & 0xFF000000) >> 0x18) & 0x7F; +#if !PLATFORM_IQUE + PRINTF("HI_SCORE( kanfont->mbuff.message_buf[message->rdp]) = %x\n", + HIGH_SCORE(MSG_BUF_WIDE[msgCtx->msgBufPos])); +#else + PRINTF( + "HI_SCORE( ((unshort *)(kanfont->mbuff.message_buf))[message->rdp]) & 0xff000000 = %x\n", + HIGH_SCORE(MSG_BUF_WIDE[msgCtx->msgBufPos]) & 0xFF000000); +#endif + value = ((HIGH_SCORE(MSG_BUF_WIDE[msgCtx->msgBufPos]) & 0xFF000000) >> 0x18); + value &= 0x7F; } } - switch (font->msgBufWide[msgCtx->msgBufPos] & 0xFF) { + switch (MSG_BUF_WIDE[msgCtx->msgBufPos] & 0xFF) { case HS_HBA: case HS_POE_POINTS: case HS_FISHING: @@ -1950,7 +2014,7 @@ void Message_Decode(PlayState* play) { if (loadChar) { Font_LoadCharWide(font, digits[i] + MESSAGE_WIDE_CHAR_ZERO, charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; - msgCtx->msgBufDecodedWide[decodedBufPos] = digits[i] + MESSAGE_WIDE_CHAR_ZERO; + MSG_BUF_DECODED_WIDE[decodedBufPos] = digits[i] + MESSAGE_WIDE_CHAR_ZERO; decodedBufPos++; } } @@ -1980,62 +2044,64 @@ void Message_Decode(PlayState* play) { for (i = 0; i < 4; i++) { Font_LoadCharWide(font, digits[i] + MESSAGE_WIDE_CHAR_ZERO, charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; - msgCtx->msgBufDecodedWide[decodedBufPos] = digits[i] + MESSAGE_WIDE_CHAR_ZERO; + MSG_BUF_DECODED_WIDE[decodedBufPos] = digits[i] + MESSAGE_WIDE_CHAR_ZERO; decodedBufPos++; if (i == 1) { Font_LoadCharWide(font, MESSAGE_WIDE_CHAR_MINUTES, charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; - msgCtx->msgBufDecodedWide[decodedBufPos] = MESSAGE_WIDE_CHAR_MINUTES; + MSG_BUF_DECODED_WIDE[decodedBufPos] = MESSAGE_WIDE_CHAR_MINUTES; decodedBufPos++; } else if (i == 3) { Font_LoadCharWide(font, MESSAGE_WIDE_CHAR_SECONDS, charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; - msgCtx->msgBufDecodedWide[decodedBufPos] = MESSAGE_WIDE_CHAR_SECONDS; + MSG_BUF_DECODED_WIDE[decodedBufPos] = MESSAGE_WIDE_CHAR_SECONDS; } } break; } } else if (curCharWide == MESSAGE_WIDE_TIME) { + PRINTF(T("\nゼルダ時間 = ", "\nZelda time = ")); digits[0] = 0; - timeInSeconds = gSaveContext.save.dayTime * (24.0f * 60.0f / 0x10000); - - digits[1] = timeInSeconds / 60.0f; + digits[1] = (gSaveContext.save.dayTime * (24.0f * 60.0f / 0x10000)) / 60.0f; while (digits[1] >= 10) { digits[0]++; digits[1] -= 10; } digits[2] = 0; - digits[3] = (s16)timeInSeconds % 60; + digits[3] = (s16)(gSaveContext.save.dayTime * (24.0f * 60.0f / 0x10000)) % 60; while (digits[3] >= 10) { digits[2]++; digits[3] -= 10; } for (i = 0; i < 4; i++) { + PRINTF("rpc[%d] = %x\n", i, digits[i] + MESSAGE_WIDE_CHAR_ZERO); Font_LoadCharWide(font, digits[i] + MESSAGE_WIDE_CHAR_ZERO, charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; - msgCtx->msgBufDecodedWide[decodedBufPos] = digits[i] + MESSAGE_WIDE_CHAR_ZERO; + MSG_BUF_DECODED_WIDE[decodedBufPos] = digits[i] + MESSAGE_WIDE_CHAR_ZERO; decodedBufPos++; if (i == 1) { Font_LoadCharWide(font, MESSAGE_WIDE_CHAR_HOURS, charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; - msgCtx->msgBufDecodedWide[decodedBufPos] = MESSAGE_WIDE_CHAR_HOURS; + MSG_BUF_DECODED_WIDE[decodedBufPos] = MESSAGE_WIDE_CHAR_HOURS; decodedBufPos++; } else if (i == 3) { Font_LoadCharWide(font, MESSAGE_WIDE_CHAR_MINUTES, charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; - msgCtx->msgBufDecodedWide[decodedBufPos] = MESSAGE_WIDE_CHAR_MINUTES; + MSG_BUF_DECODED_WIDE[decodedBufPos] = MESSAGE_WIDE_CHAR_MINUTES; } } } else if (curCharWide == MESSAGE_WIDE_ITEM_ICON) { - msgCtx->msgBufDecodedWide[++decodedBufPos] = font->msgBufWide[msgCtx->msgBufPos + 1]; - Message_LoadItemIcon(play, font->msgBufWide[msgCtx->msgBufPos + 1], R_TEXTBOX_Y + 10); + MSG_BUF_DECODED_WIDE[++decodedBufPos] = MSG_BUF_WIDE[msgCtx->msgBufPos + 1]; + PRINTF("ITEM_NO=(%d) (%d)\n", MSG_BUF_DECODED_WIDE[decodedBufPos], MSG_BUF_WIDE[msgCtx->msgBufPos + 1]); + Message_LoadItemIcon(play, MSG_BUF_WIDE[msgCtx->msgBufPos + 1], R_TEXTBOX_Y + 10); } else if (curCharWide == MESSAGE_WIDE_BACKGROUND) { - msgCtx->textboxBackgroundIdx = font->msgBufWide[msgCtx->msgBufPos + 1] * 2; - msgCtx->textboxBackgroundForeColorIdx = (font->msgBufWide[msgCtx->msgBufPos + 2] & 0xF000) >> 12; - msgCtx->textboxBackgroundBackColorIdx = (font->msgBufWide[msgCtx->msgBufPos + 2] & 0xF00) >> 8; - msgCtx->textboxBackgroundYOffsetIdx = (font->msgBufWide[msgCtx->msgBufPos + 2] & 0xF0) >> 4; - msgCtx->textboxBackgroundUnkArg = font->msgBufWide[msgCtx->msgBufPos + 2] & 0xF; + msgCtx->textboxBackgroundIdx = MSG_BUF_WIDE[msgCtx->msgBufPos + 1] * 2; + PRINTF("mes_board=%d\n", msgCtx->textboxBackgroundIdx); + msgCtx->textboxBackgroundForeColorIdx = (MSG_BUF_WIDE[msgCtx->msgBufPos + 2] & 0xF000) >> 12; + msgCtx->textboxBackgroundBackColorIdx = (MSG_BUF_WIDE[msgCtx->msgBufPos + 2] & 0xF00) >> 8; + msgCtx->textboxBackgroundYOffsetIdx = (MSG_BUF_WIDE[msgCtx->msgBufPos + 2] & 0xF0) >> 4; + msgCtx->textboxBackgroundUnkArg = MSG_BUF_WIDE[msgCtx->msgBufPos + 2] & 0xF; DMA_REQUEST_SYNC(msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE, (uintptr_t)_message_texture_staticSegmentRomStart + msgCtx->textboxBackgroundIdx * MESSAGE_TEXTURE_STATIC_TEX_SIZE, @@ -2048,7 +2114,7 @@ void Message_Decode(PlayState* play) { msgCtx->msgBufPos += 2; R_TEXTBOX_BG_YPOS = R_TEXTBOX_Y + 8; } else if (curCharWide == MESSAGE_WIDE_COLOR) { - msgCtx->msgBufDecodedWide[++decodedBufPos] = font->msgBufWide[++msgCtx->msgBufPos] & 0xF; + MSG_BUF_DECODED_WIDE[++decodedBufPos] = MSG_BUF_WIDE[++msgCtx->msgBufPos] & 0xF; } else if (curCharWide == MESSAGE_WIDE_NEWLINE) { numLines++; } else if (curCharWide != MESSAGE_WIDE_QUICKTEXT_ENABLE && curCharWide != MESSAGE_WIDE_QUICKTEXT_DISABLE && @@ -2056,11 +2122,12 @@ void Message_Decode(PlayState* play) { curCharWide != MESSAGE_WIDE_PERSISTENT && curCharWide != MESSAGE_WIDE_UNSKIPPABLE) { if (curCharWide == MESSAGE_WIDE_FADE) { sTextFade = true; - msgCtx->msgBufDecodedWide[++decodedBufPos] = font->msgBufWide[++msgCtx->msgBufPos] & 0xFF; + PRINTF("Z_TIMER_END (key_off_flag=%d)\n", sTextFade); + MSG_BUF_DECODED_WIDE[++decodedBufPos] = MSG_BUF_WIDE[++msgCtx->msgBufPos] & 0xFF; } else if (curCharWide == MESSAGE_WIDE_SHIFT || curCharWide == MESSAGE_WIDE_TEXT_SPEED) { - msgCtx->msgBufDecodedWide[++decodedBufPos] = font->msgBufWide[++msgCtx->msgBufPos] & 0xFF; + MSG_BUF_DECODED_WIDE[++decodedBufPos] = MSG_BUF_WIDE[++msgCtx->msgBufPos] & 0xFF; } else if (curCharWide == MESSAGE_WIDE_SFX) { - msgCtx->msgBufDecodedWide[++decodedBufPos] = font->msgBufWide[++msgCtx->msgBufPos]; + MSG_BUF_DECODED_WIDE[++decodedBufPos] = MSG_BUF_WIDE[++msgCtx->msgBufPos]; } else if (curCharWide == MESSAGE_WIDE_TWO_CHOICE) { msgCtx->choiceNum = 2; } else if (curCharWide == MESSAGE_WIDE_THREE_CHOICE) { @@ -2078,14 +2145,16 @@ void Message_Decode(PlayState* play) { #endif { // English text for NTSC, eng/ger/fra text for PAL - while (true) { - curChar = msgCtx->msgBufDecoded[decodedBufPos] = font->msgBuf[msgCtx->msgBufPos]; + for (;;) { + curChar = MSG_BUF_DECODED[decodedBufPos] = MSG_BUF[msgCtx->msgBufPos]; if (curChar == MESSAGE_BOX_BREAK || curChar == MESSAGE_TEXTID || curChar == MESSAGE_BOX_BREAK_DELAYED || curChar == MESSAGE_EVENT || curChar == MESSAGE_END) { // Textbox decoding ends with any of the above text control characters msgCtx->msgMode = MSGMODE_TEXT_DISPLAYING; msgCtx->textDrawPos = 1; + +#if !PLATFORM_IQUE R_TEXT_INIT_YPOS = R_TEXTBOX_Y + 8; PRINTF("JJ=%d\n", numLines); if (msgCtx->textBoxType != TEXTBOX_TYPE_NONE_BOTTOM) { @@ -2097,16 +2166,30 @@ void Message_Decode(PlayState* play) { R_TEXT_INIT_YPOS = (u16)(R_TEXTBOX_Y + 16); } } +#else + R_TEXT_INIT_YPOS = R_TEXTBOX_Y + 6; + PRINTF("JJ=%d\n", numLines); + if (msgCtx->textBoxType != TEXTBOX_TYPE_NONE_BOTTOM) { + if (numLines == 0) { + R_TEXT_INIT_YPOS = (u16)(R_TEXTBOX_Y + 18); + } else if (numLines == 1) { + R_TEXT_INIT_YPOS = (u16)(R_TEXTBOX_Y + 12); + } else if (numLines == 2) { + R_TEXT_INIT_YPOS = (u16)(R_TEXTBOX_Y + 8); + } + } +#endif + if (curChar == MESSAGE_TEXTID) { - PRINTF("NZ_NEXTMSG=%x, %x, %x\n", font->msgBuf[msgCtx->msgBufPos], - font->msgBuf[msgCtx->msgBufPos + 1], font->msgBuf[msgCtx->msgBufPos + 2]); - value = msgCtx->msgBufDecoded[++decodedBufPos] = font->msgBuf[msgCtx->msgBufPos + 1]; - msgCtx->msgBufDecoded[++decodedBufPos] = font->msgBuf[msgCtx->msgBufPos + 2]; + PRINTF("NZ_NEXTMSG=%x, %x, %x\n", MSG_BUF[msgCtx->msgBufPos], MSG_BUF[msgCtx->msgBufPos + 1], + MSG_BUF[msgCtx->msgBufPos + 2]); + value = MSG_BUF_DECODED[++decodedBufPos] = MSG_BUF[msgCtx->msgBufPos + 1]; + MSG_BUF_DECODED[++decodedBufPos] = MSG_BUF[msgCtx->msgBufPos + 2]; value <<= 8; - sNextTextId = msgCtx->msgBufDecoded[decodedBufPos] | value; + sNextTextId = MSG_BUF_DECODED[decodedBufPos] | value; } if (curChar == MESSAGE_BOX_BREAK_DELAYED) { - msgCtx->msgBufDecoded[++decodedBufPos] = font->msgBuf[msgCtx->msgBufPos + 1]; + MSG_BUF_DECODED[++decodedBufPos] = MSG_BUF[msgCtx->msgBufPos + 1]; msgCtx->msgBufPos += 2; } msgCtx->decodedTextLen = decodedBufPos; @@ -2146,7 +2229,7 @@ void Message_Decode(PlayState* play) { charTexIdx += FONT_CHAR_TEX_SIZE; } PRINTF("%x ", curChar); - msgCtx->msgBufDecoded[decodedBufPos] = curChar; + MSG_BUF_DECODED[decodedBufPos] = curChar; decodedBufPos++; } decodedBufPos--; @@ -2177,23 +2260,23 @@ void Message_Decode(PlayState* play) { for (i = 0; i < 4; i++) { Font_LoadChar(font, digits[i] + '0' - ' ', charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; - msgCtx->msgBufDecoded[decodedBufPos] = digits[i] + '0'; + MSG_BUF_DECODED[decodedBufPos] = digits[i] + '0'; decodedBufPos++; if (i == 1) { Font_LoadChar(font, '"' - ' ', charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; - msgCtx->msgBufDecoded[decodedBufPos] = '"'; + MSG_BUF_DECODED[decodedBufPos] = '"'; decodedBufPos++; } else if (i == 3) { Font_LoadChar(font, '"' - ' ', charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; - msgCtx->msgBufDecoded[decodedBufPos] = '"'; + MSG_BUF_DECODED[decodedBufPos] = '"'; } } } else if (curChar == MESSAGE_POINTS) { // Convert the values of the current minigame score to digits and // add the digits to the decoded buffer in place of the control character. - PRINTF(T("\n流鏑馬スコア = %d\n", "\nYabusame score = %d\n"), gSaveContext.minigameScore); + PRINTF(T("\n流鏑馬スコア = %d\n", "\nHorseback archery score = %d\n"), gSaveContext.minigameScore); digits[0] = digits[1] = digits[2] = 0; digits[3] = gSaveContext.minigameScore; @@ -2217,7 +2300,7 @@ void Message_Decode(PlayState* play) { } if (loadChar) { Font_LoadChar(font, digits[i] + '0' - ' ', charTexIdx); - msgCtx->msgBufDecoded[decodedBufPos] = digits[i] + '0'; + MSG_BUF_DECODED[decodedBufPos] = digits[i] + '0'; charTexIdx += FONT_CHAR_TEX_SIZE; decodedBufPos++; } @@ -2226,7 +2309,7 @@ void Message_Decode(PlayState* play) { } else if (curChar == MESSAGE_TOKENS) { // Convert the current number of collected gold skulltula tokens to digits and // add the digits to the decoded buffer in place of the control character. - PRINTF(T("\n金スタ合計数 = %d", "\nTotal number of gold stars = %d"), + PRINTF(T("\n金スタ合計数 = %d", "\nTotal number of gold skulls = %d"), gSaveContext.save.info.inventory.gsTokens); digits[0] = digits[1] = 0; digits[2] = gSaveContext.save.info.inventory.gsTokens; @@ -2248,7 +2331,7 @@ void Message_Decode(PlayState* play) { if (loadChar) { Font_LoadChar(font, digits[i] + '0' - ' ', charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; - msgCtx->msgBufDecoded[decodedBufPos] = digits[i] + '0'; + MSG_BUF_DECODED[decodedBufPos] = digits[i] + '0'; PRINTF("%x(%x) ", digits[i] + '0' - ' ', digits[i]); decodedBufPos++; } @@ -2268,30 +2351,37 @@ void Message_Decode(PlayState* play) { if (i == 1 || digits[i] != 0) { Font_LoadChar(font, digits[i] + '0' - ' ', charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; - msgCtx->msgBufDecoded[decodedBufPos] = digits[i] + '0'; + MSG_BUF_DECODED[decodedBufPos] = digits[i] + '0'; PRINTF("%x(%x) ", digits[i] + '0' - ' ', digits[i]); decodedBufPos++; } } decodedBufPos--; } else if (curChar == MESSAGE_HIGHSCORE) { - value = HIGH_SCORE((u8)font->msgBuf[++msgCtx->msgBufPos]); - PRINTF(T("ランキング=%d\n", "Highscore=%d\n"), font->msgBuf[msgCtx->msgBufPos]); - if ((font->msgBuf[msgCtx->msgBufPos] & 0xFF) == HS_FISHING) { + value = HIGH_SCORE((u8)MSG_BUF[++msgCtx->msgBufPos]); + PRINTF(T("ランキング=%d\n", "Highscore=%d\n"), MSG_BUF[msgCtx->msgBufPos]); + if ((MSG_BUF[msgCtx->msgBufPos] & 0xFF) == HS_FISHING) { if (LINK_AGE_IN_YEARS == YEARS_CHILD) { value &= 0x7F; } else { //! @bug Should use msgBuf instead of msgBufWide (copy-paste error from Japanese text //! handling?), and the mask is applied to the high score index instead of the high score value //! so this always shows HIGH_SCORE(0). Only the PRINTF is wrong, the following line is correct. +#if !PLATFORM_IQUE PRINTF("HI_SCORE( kanfont->mbuff.nes_mes_buf[message->rdp] & 0xff000000 ) = %x\n", - HIGH_SCORE(font->msgBufWide[msgCtx->msgBufPos] & 0xFF000000)); - value = ((HIGH_SCORE((u8)font->msgBuf[msgCtx->msgBufPos]) & 0xFF000000) >> 0x18) & 0x7F; + HIGH_SCORE(MSG_BUF_WIDE[msgCtx->msgBufPos] & 0xFF000000)); +#else + PRINTF("HI_SCORE( ((unsigned char*)(kanfont->mbuff.nes_mes_buf))[message->rdp] & 0xff000000 ) " + "= %x\n", + HIGH_SCORE(MSG_BUF_WIDE[msgCtx->msgBufPos] & 0xFF000000)); +#endif + value = ((HIGH_SCORE((u8)MSG_BUF[msgCtx->msgBufPos]) & 0xFF000000) >> 0x18); + value &= 0x7F; } value = SQ((f32)value) * 0.0036f + 0.5f; PRINTF("score=%d\n", value); } - switch (font->msgBuf[msgCtx->msgBufPos] & 0xFF) { + switch (MSG_BUF[msgCtx->msgBufPos] & 0xFF) { case HS_HBA: case HS_POE_POINTS: case HS_FISHING: @@ -2318,7 +2408,7 @@ void Message_Decode(PlayState* play) { } if (loadChar) { Font_LoadChar(font, digits[i] + '0' - ' ', charTexIdx); - msgCtx->msgBufDecoded[decodedBufPos] = digits[i] + '0'; + MSG_BUF_DECODED[decodedBufPos] = digits[i] + '0'; charTexIdx += FONT_CHAR_TEX_SIZE; decodedBufPos++; } @@ -2349,17 +2439,17 @@ void Message_Decode(PlayState* play) { for (i = 0; i < 4; i++) { Font_LoadChar(font, digits[i] + '0' - ' ', charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; - msgCtx->msgBufDecoded[decodedBufPos] = digits[i] + '0'; + MSG_BUF_DECODED[decodedBufPos] = digits[i] + '0'; decodedBufPos++; if (i == 1) { Font_LoadChar(font, '"' - ' ', charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; - msgCtx->msgBufDecoded[decodedBufPos] = '"'; + MSG_BUF_DECODED[decodedBufPos] = '"'; decodedBufPos++; } else if (i == 3) { Font_LoadChar(font, '"' - ' ', charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; - msgCtx->msgBufDecoded[decodedBufPos] = '"'; + MSG_BUF_DECODED[decodedBufPos] = '"'; } } break; @@ -2367,15 +2457,13 @@ void Message_Decode(PlayState* play) { } else if (curChar == MESSAGE_TIME) { PRINTF(T("\nゼルダ時間 = ", "\nZelda time = ")); digits[0] = 0; - timeInSeconds = gSaveContext.save.dayTime * (24.0f * 60.0f / 0x10000); - - digits[1] = timeInSeconds / 60.0f; + digits[1] = (gSaveContext.save.dayTime * (24.0f * 60.0f / 0x10000)) / 60.0f; while (digits[1] >= 10) { digits[0]++; digits[1] -= 10; } digits[2] = 0; - digits[3] = (s16)timeInSeconds % 60; + digits[3] = (s16)(gSaveContext.save.dayTime * (24.0f * 60.0f / 0x10000)) % 60; while (digits[3] >= 10) { digits[2]++; digits[3] -= 10; @@ -2384,34 +2472,33 @@ void Message_Decode(PlayState* play) { for (i = 0; i < 4; i++) { Font_LoadChar(font, digits[i] + '0' - ' ', charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; - msgCtx->msgBufDecoded[decodedBufPos] = digits[i] + '0'; + MSG_BUF_DECODED[decodedBufPos] = digits[i] + '0'; decodedBufPos++; if (i == 1) { Font_LoadChar(font, ':' - ' ', charTexIdx); charTexIdx += FONT_CHAR_TEX_SIZE; - msgCtx->msgBufDecoded[decodedBufPos] = ':'; + MSG_BUF_DECODED[decodedBufPos] = ':'; decodedBufPos++; } } decodedBufPos--; } else if (curChar == MESSAGE_ITEM_ICON) { - msgCtx->msgBufDecoded[++decodedBufPos] = font->msgBuf[msgCtx->msgBufPos + 1]; - PRINTF("ITEM_NO=(%d) (%d)\n", msgCtx->msgBufDecoded[decodedBufPos], - font->msgBuf[msgCtx->msgBufPos + 1]); - Message_LoadItemIcon(play, font->msgBuf[msgCtx->msgBufPos + 1], R_TEXTBOX_Y + 10); + MSG_BUF_DECODED[++decodedBufPos] = MSG_BUF[msgCtx->msgBufPos + 1]; + PRINTF("ITEM_NO=(%d) (%d)\n", MSG_BUF_DECODED[decodedBufPos], MSG_BUF[msgCtx->msgBufPos + 1]); + Message_LoadItemIcon(play, MSG_BUF[msgCtx->msgBufPos + 1], R_TEXTBOX_Y + 10); } else if (curChar == MESSAGE_BACKGROUND) { - msgCtx->textboxBackgroundIdx = font->msgBuf[msgCtx->msgBufPos + 1] * 2; + msgCtx->textboxBackgroundIdx = MSG_BUF[msgCtx->msgBufPos + 1] * 2; #if OOT_VERSION < PAL_1_0 //! @bug Wrong shift amounts cause textboxBackgroundForeColorIdx and textboxBackgroundBackColorIdx //! to always be 0. Fortunately MESSAGE_BACKGROUND is only present in unused messages. - msgCtx->textboxBackgroundForeColorIdx = (font->msgBuf[msgCtx->msgBufPos + 2] & 0xF0) >> 12; - msgCtx->textboxBackgroundBackColorIdx = (font->msgBuf[msgCtx->msgBufPos + 2] & 0xF) >> 8; + msgCtx->textboxBackgroundForeColorIdx = (MSG_BUF[msgCtx->msgBufPos + 2] & 0xF0) >> 12; + msgCtx->textboxBackgroundBackColorIdx = (MSG_BUF[msgCtx->msgBufPos + 2] & 0xF) >> 8; #else - msgCtx->textboxBackgroundForeColorIdx = (font->msgBuf[msgCtx->msgBufPos + 2] & 0xF0) >> 4; - msgCtx->textboxBackgroundBackColorIdx = font->msgBuf[msgCtx->msgBufPos + 2] & 0xF; + msgCtx->textboxBackgroundForeColorIdx = (MSG_BUF[msgCtx->msgBufPos + 2] & 0xF0) >> 4; + msgCtx->textboxBackgroundBackColorIdx = MSG_BUF[msgCtx->msgBufPos + 2] & 0xF; #endif - msgCtx->textboxBackgroundYOffsetIdx = (font->msgBuf[msgCtx->msgBufPos + 3] & 0xF0) >> 4; - msgCtx->textboxBackgroundUnkArg = font->msgBuf[msgCtx->msgBufPos + 3] & 0xF; + msgCtx->textboxBackgroundYOffsetIdx = (MSG_BUF[msgCtx->msgBufPos + 3] & 0xF0) >> 4; + msgCtx->textboxBackgroundUnkArg = MSG_BUF[msgCtx->msgBufPos + 3] & 0xF; DMA_REQUEST_SYNC(msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE, (uintptr_t)_message_texture_staticSegmentRomStart + msgCtx->textboxBackgroundIdx * MESSAGE_TEXTURE_STATIC_TEX_SIZE, @@ -2427,7 +2514,7 @@ void Message_Decode(PlayState* play) { R_TEXT_INIT_XPOS = 50; #endif } else if (curChar == MESSAGE_COLOR) { - msgCtx->msgBufDecoded[++decodedBufPos] = font->msgBuf[++msgCtx->msgBufPos]; + MSG_BUF_DECODED[++decodedBufPos] = MSG_BUF[++msgCtx->msgBufPos]; } else if (curChar == MESSAGE_NEWLINE) { numLines++; } else if (curChar != MESSAGE_QUICKTEXT_ENABLE && curChar != MESSAGE_QUICKTEXT_DISABLE && @@ -2436,23 +2523,37 @@ void Message_Decode(PlayState* play) { if (curChar == MESSAGE_FADE) { sTextFade = true; PRINTF("NZ_TIMER_END (key_off_flag=%d)\n", sTextFade); - msgCtx->msgBufDecoded[++decodedBufPos] = font->msgBuf[++msgCtx->msgBufPos]; + MSG_BUF_DECODED[++decodedBufPos] = MSG_BUF[++msgCtx->msgBufPos]; } else if (curChar == MESSAGE_FADE2) { sTextFade = true; PRINTF("NZ_BGM (key_off_flag=%d)\n", sTextFade); - msgCtx->msgBufDecoded[++decodedBufPos] = font->msgBuf[++msgCtx->msgBufPos]; - msgCtx->msgBufDecoded[++decodedBufPos] = font->msgBuf[++msgCtx->msgBufPos]; + MSG_BUF_DECODED[++decodedBufPos] = MSG_BUF[++msgCtx->msgBufPos]; + MSG_BUF_DECODED[++decodedBufPos] = MSG_BUF[++msgCtx->msgBufPos]; } else if (curChar == MESSAGE_SHIFT || curChar == MESSAGE_TEXT_SPEED) { - msgCtx->msgBufDecoded[++decodedBufPos] = font->msgBuf[++msgCtx->msgBufPos] & 0xFF; + MSG_BUF_DECODED[++decodedBufPos] = MSG_BUF[++msgCtx->msgBufPos] & 0xFF; } else if (curChar == MESSAGE_SFX) { - msgCtx->msgBufDecoded[++decodedBufPos] = font->msgBuf[++msgCtx->msgBufPos]; - msgCtx->msgBufDecoded[++decodedBufPos] = font->msgBuf[++msgCtx->msgBufPos]; + MSG_BUF_DECODED[++decodedBufPos] = MSG_BUF[++msgCtx->msgBufPos]; + MSG_BUF_DECODED[++decodedBufPos] = MSG_BUF[++msgCtx->msgBufPos]; } else if (curChar == MESSAGE_TWO_CHOICE) { msgCtx->choiceNum = 2; } else if (curChar == MESSAGE_THREE_CHOICE) { msgCtx->choiceNum = 3; } else if (curChar != MESSAGE_CHAR_SPACE) { +#if !PLATFORM_IQUE Font_LoadChar(font, curChar - ' ', charTexIdx); +#else + u8 nextChar; + + if (curChar == 0xAA) { + nextChar = MSG_BUF[++msgCtx->msgBufPos]; + Font_LoadChar(font, nextChar - ' ', charTexIdx); + } else if (curChar >= 0xA0) { + nextChar = MSG_BUF[++msgCtx->msgBufPos]; + Font_LoadCharCHN(font, ((curChar << 8) | nextChar) - 0xA001, charTexIdx); + } else { + Font_LoadChar(font, curChar - ' ', charTexIdx); + } +#endif charTexIdx += FONT_CHAR_TEX_SIZE; } } @@ -2492,8 +2593,13 @@ void Message_OpenText(PlayState* play, u16 textId) { #endif } else { R_TEXT_CHAR_SCALE = 75; +#if !PLATFORM_IQUE R_TEXT_LINE_SPACING = 12; R_TEXT_INIT_XPOS = 65; +#else + R_TEXT_LINE_SPACING = 16; + R_TEXT_INIT_XPOS = 60; +#endif } if (textId == 0xC2 || textId == 0xFA) { // Increments text id based on piece of heart count, assumes the piece of heart text is all @@ -2528,11 +2634,11 @@ void Message_OpenText(PlayState* play, u16 textId) { if ((B_80121220 != NULL) && (B_80121220->unk_60 != NULL) && B_80121220->unk_60(&play->msgCtx.font)) { } else { - DMA_REQUEST_SYNC(font->msgBuf, (uintptr_t)_staff_message_data_staticSegmentRomStart + font->msgOffset, + DMA_REQUEST_SYNC(MSG_BUF, (uintptr_t)_staff_message_data_staticSegmentRomStart + font->msgOffset, font->msgLength, "../z_message_PAL.c", UNK_LINE); } #else - DMA_REQUEST_SYNC(font->msgBuf, (uintptr_t)_staff_message_data_staticSegmentRomStart + font->msgOffset, + DMA_REQUEST_SYNC(MSG_BUF, (uintptr_t)_staff_message_data_staticSegmentRomStart + font->msgOffset, font->msgLength, "../z_message_PAL.c", 1954); #endif } else { @@ -2544,11 +2650,11 @@ void Message_OpenText(PlayState* play, u16 textId) { if ((B_80121220 != NULL) && (B_80121220->unk_64 != NULL) && B_80121220->unk_64(&play->msgCtx.font)) { } else { - DMA_REQUEST_SYNC(font->msgBuf, (uintptr_t)_jpn_message_data_staticSegmentRomStart + font->msgOffset, + DMA_REQUEST_SYNC(MSG_BUF, (uintptr_t)_jpn_message_data_staticSegmentRomStart + font->msgOffset, font->msgLength, "../z_message_PAL.c", UNK_LINE); } #else - DMA_REQUEST_SYNC(font->msgBuf, (uintptr_t)_jpn_message_data_staticSegmentRomStart + font->msgOffset, + DMA_REQUEST_SYNC(MSG_BUF, (uintptr_t)_jpn_message_data_staticSegmentRomStart + font->msgOffset, font->msgLength, "../z_message_PAL.c", UNK_LINE); #endif } else { @@ -2558,11 +2664,11 @@ void Message_OpenText(PlayState* play, u16 textId) { if ((B_80121220 != NULL) && (B_80121220->unk_68 != NULL) && B_80121220->unk_68(&play->msgCtx.font)) { } else { - DMA_REQUEST_SYNC(font->msgBuf, (uintptr_t)_nes_message_data_staticSegmentRomStart + font->msgOffset, + DMA_REQUEST_SYNC(MSG_BUF, (uintptr_t)_nes_message_data_staticSegmentRomStart + font->msgOffset, font->msgLength, "../z_message_PAL.c", UNK_LINE); } #else - DMA_REQUEST_SYNC(font->msgBuf, (uintptr_t)_nes_message_data_staticSegmentRomStart + font->msgOffset, + DMA_REQUEST_SYNC(MSG_BUF, (uintptr_t)_nes_message_data_staticSegmentRomStart + font->msgOffset, font->msgLength, "../z_message_PAL.c", UNK_LINE); #endif } @@ -2574,11 +2680,11 @@ void Message_OpenText(PlayState* play, u16 textId) { if ((B_80121220 != NULL) && (B_80121220->unk_64 != NULL) && B_80121220->unk_64(&play->msgCtx.font)) { } else { - DMA_REQUEST_SYNC(font->msgBuf, (uintptr_t)_nes_message_data_staticSegmentRomStart + font->msgOffset, + DMA_REQUEST_SYNC(MSG_BUF, (uintptr_t)_nes_message_data_staticSegmentRomStart + font->msgOffset, font->msgLength, "../z_message_PAL.c", UNK_LINE); } #else - DMA_REQUEST_SYNC(font->msgBuf, (uintptr_t)_nes_message_data_staticSegmentRomStart + font->msgOffset, + DMA_REQUEST_SYNC(MSG_BUF, (uintptr_t)_nes_message_data_staticSegmentRomStart + font->msgOffset, font->msgLength, "../z_message_PAL.c", 1966); #endif } else if (gSaveContext.language == LANGUAGE_GER) { @@ -2589,11 +2695,11 @@ void Message_OpenText(PlayState* play, u16 textId) { if ((B_80121220 != NULL) && (B_80121220->unk_64 != NULL) && B_80121220->unk_68(&play->msgCtx.font)) { } else { - DMA_REQUEST_SYNC(font->msgBuf, (uintptr_t)_ger_message_data_staticSegmentRomStart + font->msgOffset, + DMA_REQUEST_SYNC(MSG_BUF, (uintptr_t)_ger_message_data_staticSegmentRomStart + font->msgOffset, font->msgLength, "../z_message_PAL.c", UNK_LINE); } #else - DMA_REQUEST_SYNC(font->msgBuf, (uintptr_t)_ger_message_data_staticSegmentRomStart + font->msgOffset, + DMA_REQUEST_SYNC(MSG_BUF, (uintptr_t)_ger_message_data_staticSegmentRomStart + font->msgOffset, font->msgLength, "../z_message_PAL.c", 1978); #endif } else { @@ -2604,11 +2710,11 @@ void Message_OpenText(PlayState* play, u16 textId) { if ((B_80121220 != NULL) && (B_80121220->unk_64 != NULL) && B_80121220->unk_6C_PAL(&play->msgCtx.font)) { } else { - DMA_REQUEST_SYNC(font->msgBuf, (uintptr_t)_fra_message_data_staticSegmentRomStart + font->msgOffset, + DMA_REQUEST_SYNC(MSG_BUF, (uintptr_t)_fra_message_data_staticSegmentRomStart + font->msgOffset, font->msgLength, "../z_message_PAL.c", UNK_LINE); } #else - DMA_REQUEST_SYNC(font->msgBuf, (uintptr_t)_fra_message_data_staticSegmentRomStart + font->msgOffset, + DMA_REQUEST_SYNC(MSG_BUF, (uintptr_t)_fra_message_data_staticSegmentRomStart + font->msgOffset, font->msgLength, "../z_message_PAL.c", 1990); #endif } @@ -2671,8 +2777,8 @@ void Message_StartTextbox(PlayState* play, u16 textId, Actor* actor) { } void Message_ContinueTextbox(PlayState* play, u16 textId) { - s32 pad; MessageContext* msgCtx = &play->msgCtx; + InterfaceContext* interfaceCtx = &play->interfaceCtx; #if PLATFORM_N64 s32 pad2[3]; #endif @@ -2690,7 +2796,7 @@ void Message_ContinueTextbox(PlayState* play, u16 textId) { msgCtx->textboxEndType = msgCtx->msgBufPos = msgCtx->unk_E3D0 = msgCtx->textDrawPos = msgCtx->textDelayTimer = 0; msgCtx->textColorAlpha = 255; - if (YREG(31) == 0 && play->interfaceCtx.unk_1FA == 0) { + if (YREG(31) == 0 && interfaceCtx->unk_1FA == 0) { Interface_SetDoAction(play, DO_ACTION_NEXT); } msgCtx->textboxColorAlphaCurrent = msgCtx->textboxColorAlphaTarget; @@ -2713,7 +2819,7 @@ void Message_StartOcarinaImpl(PlayState* play, u16 ocarinaActionId) { (1 << OCARINA_SONG_SCARECROW_SPAWN), }; MessageContext* msgCtx = &play->msgCtx; - s32 textId; + Font* font = &msgCtx->font; s16 j; s16 i; s16 noStopDoAction; @@ -2745,11 +2851,9 @@ void Message_StartOcarinaImpl(PlayState* play, u16 ocarinaActionId) { noStopDoAction = false; if (ocarinaActionId >= 0x893) { Message_OpenText(play, ocarinaActionId); // You played the [song name] - textId = ocarinaActionId + 0x86E; } else if (ocarinaActionId == OCARINA_ACTION_MEMORY_GAME) { msgCtx->ocarinaAction = ocarinaActionId; Message_OpenText(play, 0x86D); // Play using [A] and [C]. - textId = ocarinaActionId + 0x86E; } else if (ocarinaActionId == OCARINA_ACTION_FREE_PLAY || ocarinaActionId >= OCARINA_ACTION_CHECK_SARIA) { PRINTF("ocarina_set 000000000000000000 = %d\n", ocarinaActionId); msgCtx->ocarinaAction = ocarinaActionId; @@ -2759,10 +2863,8 @@ void Message_StartOcarinaImpl(PlayState* play, u16 ocarinaActionId) { } if (ocarinaActionId == OCARINA_ACTION_SCARECROW_SPAWN_PLAYBACK) { Message_OpenText(play, 0x86F); // Ocarina - textId = ocarinaActionId + 0x86E; } else { Message_OpenText(play, 0x86E); // Play using [A] and [C]; [B] to Stop. - textId = ocarinaActionId + 0x86E; } } else { msgCtx->ocarinaAction = ocarinaActionId; @@ -2770,15 +2872,14 @@ void Message_StartOcarinaImpl(PlayState* play, u16 ocarinaActionId) { if (ocarinaActionId >= OCARINA_ACTION_PLAYBACK_MINUET) { PRINTF("222222222\n"); Message_OpenText(play, 0x86D); // Play using [A] and [C]. - textId = ocarinaActionId + 0x86E; } else { PRINTF("333333333\n"); - textId = ocarinaActionId + 0x86E; - Message_OpenText(play, textId); // Play using [A] and [C]; [B] to Stop. + Message_OpenText(play, ocarinaActionId + 0x86E); // Play using [A] and [C]; [B] to Stop. } } msgCtx->talkActor = NULL; - PRINTF(T("オカリナモード = %d (%x)\n", "Ocarina Mode = %d (%x)\n"), msgCtx->ocarinaAction, textId); + PRINTF(T("オカリナモード = %d (%x)\n", "Ocarina Mode = %d (%x)\n"), msgCtx->ocarinaAction, + ocarinaActionId + 0x86E); msgCtx->textDelayTimer = 0; play->msgCtx.ocarinaMode = OCARINA_MODE_00; R_TEXTBOX_X = 34; @@ -2788,12 +2889,14 @@ void Message_StartOcarinaImpl(PlayState* play, u16 ocarinaActionId) { R_TEXTBOX_WIDTH = 256; R_TEXTBOX_HEIGHT = 64; msgCtx->stateTimer = 0; - if (YREG(12) != 0) { + // NOLINTBEGIN + if (YREG(12) != 0) msgCtx->msgMode = MSGMODE_TEXT_NEXT_MSG; - } else { + else { msgCtx->stateTimer = 2; msgCtx->msgMode = MSGMODE_TEXT_CONTINUING; } + // NOLINTEND msgCtx->textboxColorAlphaCurrent = msgCtx->textboxColorAlphaTarget; if (!noStopDoAction) { Interface_LoadActionLabelB(play, DO_ACTION_STOP); @@ -2818,8 +2921,7 @@ void Message_StartOcarinaImpl(PlayState* play, u16 ocarinaActionId) { AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT); AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_DEFAULT); msgCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff(); - sOcarinaButtonIndexBufPos = sOcarinaButtonIndexBufLen = 0; - msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos; + msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos = sOcarinaButtonIndexBufLen = 0; Message_ResetOcarinaNoteState(); msgCtx->stateTimer = 3; msgCtx->msgMode = MSGMODE_SCARECROW_LONG_PLAYBACK; @@ -2827,8 +2929,9 @@ void Message_StartOcarinaImpl(PlayState* play, u16 ocarinaActionId) { gSaveContext.hudVisibilityMode = HUD_VISIBILITY_NO_CHANGE; Interface_ChangeHudVisibilityMode(HUD_VISIBILITY_NOTHING); } - for (k = 0, j = 0; j < 48; j++, k += FONT_CHAR_TEX_SIZE) { - Font_LoadCharWide(&play->msgCtx.font, MESSAGE_WIDE_CHAR_SPACE, k); + for (k = 0, j = 0; j < 48; j++) { + Font_LoadCharWide(font, MESSAGE_WIDE_CHAR_SPACE, k); + k += FONT_CHAR_TEX_SIZE; } } @@ -2899,6 +3002,10 @@ void Message_DrawTextBox(PlayState* play, Gfx** p) { G_TX_NOLOD, G_TX_NOLOD); } +#if PLATFORM_IQUE + R_TEXTBOX_TEXHEIGHT = 442; +#endif + gSPTextureRectangle(gfx++, R_TEXTBOX_X << 2, R_TEXTBOX_Y << 2, (R_TEXTBOX_X + R_TEXTBOX_WIDTH) << 2, (R_TEXTBOX_Y + R_TEXTBOX_HEIGHT) << 2, G_TX_RENDERTILE, 0, 0, R_TEXTBOX_TEXWIDTH << 1, R_TEXTBOX_TEXHEIGHT << 1); @@ -2970,18 +3077,18 @@ void Message_DrawMain(PlayState* play, Gfx** p) { NA_BGM_OCA_NOCTURNE, NA_BGM_OCA_LIGHT, NA_BGM_OCA_SARIA, NA_BGM_OCA_EPONA, NA_BGM_OCA_ZELDA, NA_BGM_OCA_SUNS, NA_BGM_OCA_TIME, NA_BGM_OCA_STORM, }; - InterfaceContext* interfaceCtx = &play->interfaceCtx; MessageContext* msgCtx = &play->msgCtx; - u16 buttonIndexPos; + InterfaceContext* interfaceCtx = &play->interfaceCtx; + Font* font = &msgCtx->font; Player* player = GET_PLAYER(play); - s32 pad; + Input* input = &play->state.input[0]; Gfx* gfx = *p; s16 r; s16 g; s16 b; u16 i; u16 notePosX; - u16 pad1; + u16 buttonIndexPos; u16 j; gSPSegment(gfx++, 0x02, play->interfaceCtx.parameterSegment); @@ -3010,8 +3117,9 @@ void Message_DrawMain(PlayState* play, Gfx** p) { break; case MSGMODE_TEXT_CONTINUING: if (msgCtx->stateTimer == 1) { - for (j = 0, i = 0; i < 48; i++, j += FONT_CHAR_TEX_SIZE) { - Font_LoadCharWide(&play->msgCtx.font, MESSAGE_WIDE_CHAR_SPACE, j); + for (j = 0, i = 0; i < 48; i++) { + Font_LoadCharWide(font, MESSAGE_WIDE_CHAR_SPACE, j); + j += FONT_CHAR_TEX_SIZE; } DRAW_TEXT(play, &gfx, sTextIsCredits); } @@ -3033,8 +3141,8 @@ void Message_DrawMain(PlayState* play, Gfx** p) { msgCtx->ocarinaStaff->pos = sOcarinaButtonIndexBufPos = 0; play->msgCtx.ocarinaMode = OCARINA_MODE_01; Message_ResetOcarinaNoteState(); - sOcarinaNoteFlashTimer = 3; sOcarinaNoteFlashColorIndex = 1; + sOcarinaNoteFlashTimer = 3; if (msgCtx->msgMode == MSGMODE_OCARINA_STARTING) { if (msgCtx->ocarinaAction == OCARINA_ACTION_UNK_0 || msgCtx->ocarinaAction == OCARINA_ACTION_FREE_PLAY || @@ -3070,7 +3178,9 @@ void Message_DrawMain(PlayState* play, Gfx** p) { case MSGMODE_OCARINA_PLAYING: msgCtx->ocarinaStaff = AudioOcarina_GetPlayingStaff(); if (msgCtx->ocarinaStaff->pos) { +#if DEBUG_FEATURES PRINTF("locate=%d onpu_pt=%d\n", msgCtx->ocarinaStaff->pos, sOcarinaButtonIndexBufPos); +#endif #if OOT_VERSION >= PAL_1_0 if (msgCtx->ocarinaStaff->pos == 1 && sOcarinaButtonIndexBufPos == 8) { sOcarinaButtonIndexBufPos = 0; @@ -3161,7 +3271,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) { &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); msgCtx->stateTimer = 10; msgCtx->msgMode = MSGMODE_OCARINA_FAIL; - } else if (CHECK_BTN_ALL(play->state.input[0].press.button, BTN_B)) { + } else if (CHECK_BTN_ALL(input->press.button, BTN_B)) { AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF); play->msgCtx.ocarinaMode = OCARINA_MODE_04; Message_CloseTextbox(play); @@ -3468,11 +3578,12 @@ void Message_DrawMain(PlayState* play, Gfx** p) { PRINTF_COLOR_YELLOW(); PRINTF("Ocarina_PC_Wind=%d(%d) ☆☆☆ ", OCARINA_ACTION_CHECK_MINUET, msgCtx->ocarinaAction - OCARINA_ACTION_CHECK_MINUET); - if (msgCtx->lastPlayedSong == (msgCtx->ocarinaAction - OCARINA_ACTION_CHECK_MINUET)) { + // NOLINTBEGIN + if (msgCtx->lastPlayedSong == (msgCtx->ocarinaAction - OCARINA_ACTION_CHECK_MINUET)) play->msgCtx.ocarinaMode = OCARINA_MODE_03; - } else { + else play->msgCtx.ocarinaMode = msgCtx->lastPlayedSong - 1; - } + // NOLINTEND } else { PRINTF_COLOR_GREEN(); PRINTF("Ocarina_C_Wind=%d(%d) ☆☆☆ ", OCARINA_ACTION_PLAYBACK_MINUET, @@ -3492,11 +3603,12 @@ void Message_DrawMain(PlayState* play, Gfx** p) { case MSGMODE_SONG_DEMONSTRATION: msgCtx->ocarinaStaff = AudioOcarina_GetPlaybackStaff(); if (msgCtx->ocarinaStaff->state == 0) { - if (msgCtx->msgMode == MSGMODE_DISPLAY_SONG_PLAYED) { + // NOLINTBEGIN + if (msgCtx->msgMode == MSGMODE_DISPLAY_SONG_PLAYED) msgCtx->msgMode = MSGMODE_DISPLAY_SONG_PLAYED_TEXT_BEGIN; - } else { + else msgCtx->msgMode = MSGMODE_SONG_DEMONSTRATION_DONE; - } + // NOLINTEND PRINTF("onpu_buff[%d]=%x\n", msgCtx->ocarinaStaff->pos, sOcarinaButtonIndexBuf[msgCtx->ocarinaStaff->pos]); } else { @@ -3567,7 +3679,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) { if (((u32)msgCtx->ocarinaStaff->pos != 0) && (sOcarinaButtonIndexBufPos == msgCtx->ocarinaStaff->pos - 1)) { if (sOcarinaButtonIndexBufLen >= 8) { - for (buttonIndexPos = sOcarinaButtonIndexBufLen - 8, i = 0; i < 8; i++, buttonIndexPos++) { + for (i = 0, buttonIndexPos = sOcarinaButtonIndexBufLen - 8; i < 8; i++, buttonIndexPos++) { sOcarinaButtonIndexBuf[buttonIndexPos] = sOcarinaButtonIndexBuf[buttonIndexPos + 1]; } sOcarinaButtonIndexBufLen--; @@ -3583,8 +3695,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) { sOcarinaButtonIndexBufPos = 0; } } - if (msgCtx->ocarinaStaff->state == OCARINA_RECORD_OFF || - CHECK_BTN_ALL(play->state.input[0].press.button, BTN_B)) { + if (msgCtx->ocarinaStaff->state == OCARINA_RECORD_OFF || CHECK_BTN_ALL(input->press.button, BTN_B)) { if (sOcarinaButtonIndexBufLen != 0) { PRINTF(T("録音終了!!!!!!!!! message->info->status=%d \n", "Recording complete!!!!!!!!! message->info->status=%d \n"), @@ -3618,7 +3729,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) { if (((u32)msgCtx->ocarinaStaff->pos != 0) && (sOcarinaButtonIndexBufPos == msgCtx->ocarinaStaff->pos - 1)) { if (sOcarinaButtonIndexBufLen >= 8) { - for (buttonIndexPos = sOcarinaButtonIndexBufLen - 8, i = 0; i < 8; i++, buttonIndexPos++) { + for (i = 0, buttonIndexPos = sOcarinaButtonIndexBufLen - 8; i < 8; i++, buttonIndexPos++) { sOcarinaButtonIndexBuf[buttonIndexPos] = sOcarinaButtonIndexBuf[buttonIndexPos + 1]; } sOcarinaButtonIndexBufLen--; @@ -3675,7 +3786,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) { PRINTF_RST(); PRINTF("\n====================================================================\n"); } else if (msgCtx->ocarinaStaff->state == OCARINA_RECORD_REJECTED || - CHECK_BTN_ALL(play->state.input[0].press.button, BTN_B)) { + CHECK_BTN_ALL(input->press.button, BTN_B)) { PRINTF(T("すでに存在する曲吹いた!!! \n", "Played an existing song!!! \n")); AudioOcarina_SetRecordingState(OCARINA_RECORD_OFF); Audio_PlaySfxGeneral(NA_SE_SY_OCARINA_ERROR, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, @@ -3863,7 +3974,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) { if (msgCtx->msgMode == MSGMODE_SONG_PLAYBACK) { g = msgCtx->ocarinaAction - OCARINA_ACTION_PLAYBACK_MINUET; r = gOcarinaSongButtons[g].numButtons; - for (notePosX = R_OCARINA_BUTTONS_XPOS, i = 0; i < r; i++, notePosX += R_OCARINA_BUTTONS_XPOS_OFFSET) { + for (notePosX = R_OCARINA_BUTTONS_XPOS, i = 0; i < r; i++) { gDPPipeSync(gfx++); gDPSetPrimColor(gfx++, 0, 0, 150, 150, 150, 150); gDPSetEnvColor(gfx++, 10, 10, 10, 0); @@ -3877,12 +3988,13 @@ void Message_DrawMain(PlayState* play, Gfx** p) { (notePosX + 16) << 2, (R_OCARINA_BUTTONS_YPOS(gOcarinaSongButtons[g].buttonsIndex[i]) + 16) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + notePosX += R_OCARINA_BUTTONS_XPOS_OFFSET; } } if (msgCtx->msgMode != MSGMODE_SCARECROW_LONG_RECORDING_START && msgCtx->msgMode != MSGMODE_MEMORY_GAME_START) { - for (notePosX = R_OCARINA_BUTTONS_XPOS, i = 0; i < 8; i++, notePosX += R_OCARINA_BUTTONS_XPOS_OFFSET) { + for (notePosX = R_OCARINA_BUTTONS_XPOS, i = 0; i < 8; i++) { if (sOcarinaButtonIndexBuf[i] == OCARINA_BTN_INVALID) { break; } @@ -3914,6 +4026,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) { (notePosX + 16) << 2, (R_OCARINA_BUTTONS_YPOS(sOcarinaButtonIndexBuf[i]) + 16) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + notePosX += R_OCARINA_BUTTONS_XPOS_OFFSET; } } } @@ -4032,8 +4145,10 @@ void Message_Update(PlayState* play) { }; #if OOT_VERSION < GC_US static s32 sUnknown = 0; +#elif PLATFORM_IQUE + static u16 sUnknown = 0; #endif - static u8 D_80153D74 = 0; + static char D_80153D74 = 0; MessageContext* msgCtx = &play->msgCtx; InterfaceContext* interfaceCtx = &play->interfaceCtx; Player* player = GET_PLAYER(play); @@ -4147,9 +4262,9 @@ void Message_Update(PlayState* play) { R_TEXTBOX_Y_TARGET = sTextboxLowerYPositions[var]; } +#if OOT_NTSC && !PLATFORM_IQUE R_TEXTBOX_X_TARGET = sTextboxXPositions[var]; R_TEXTBOX_END_YPOS = sTextboxEndIconYOffset[var] + R_TEXTBOX_Y_TARGET; -#if OOT_NTSC if (gSaveContext.language == LANGUAGE_JPN && !sTextIsCredits) { R_TEXT_CHOICE_YPOS(0) = R_TEXTBOX_Y_TARGET + 7; R_TEXT_CHOICE_YPOS(1) = R_TEXTBOX_Y_TARGET + 25; @@ -4160,11 +4275,28 @@ void Message_Update(PlayState* play) { R_TEXT_CHOICE_YPOS(1) = R_TEXTBOX_Y_TARGET + 32; R_TEXT_CHOICE_YPOS(2) = R_TEXTBOX_Y_TARGET + 44; } -#else +#elif OOT_PAL + R_TEXTBOX_X_TARGET = sTextboxXPositions[var]; + R_TEXTBOX_END_YPOS = sTextboxEndIconYOffset[var] + R_TEXTBOX_Y_TARGET; R_TEXT_CHOICE_YPOS(0) = R_TEXTBOX_Y_TARGET + 20; R_TEXT_CHOICE_YPOS(1) = R_TEXTBOX_Y_TARGET + 32; R_TEXT_CHOICE_YPOS(2) = R_TEXTBOX_Y_TARGET + 44; +#elif PLATFORM_IQUE + R_TEXTBOX_END_YPOS = sTextboxEndIconYOffset[var] + R_TEXTBOX_Y_TARGET; + R_TEXTBOX_Y_TARGET -= 10; + R_TEXTBOX_X_TARGET = sTextboxXPositions[var]; + if (gSaveContext.language == LANGUAGE_JPN && !sTextIsCredits) { + R_TEXT_CHOICE_YPOS(0) = R_TEXTBOX_Y_TARGET + 7; + R_TEXT_CHOICE_YPOS(1) = R_TEXTBOX_Y_TARGET + 25; + R_TEXT_CHOICE_YPOS(2) = R_TEXTBOX_Y_TARGET + 43; + + } else { + R_TEXT_CHOICE_YPOS(0) = R_TEXTBOX_Y_TARGET + 23; + R_TEXT_CHOICE_YPOS(1) = R_TEXTBOX_Y_TARGET + 39; + R_TEXT_CHOICE_YPOS(2) = R_TEXTBOX_Y_TARGET + 55; + } #endif + PRINTF("message->msg_disp_type=%x\n", msgCtx->textBoxProperties & 0xF0); if (msgCtx->textBoxType == TEXTBOX_TYPE_NONE_BOTTOM || msgCtx->textBoxType == TEXTBOX_TYPE_NONE_NO_SHADOW) { @@ -4210,7 +4342,7 @@ void Message_Update(PlayState* play) { break; case MSGMODE_TEXT_DISPLAYING: if (msgCtx->textBoxType != TEXTBOX_TYPE_NONE_BOTTOM && YREG(31) == 0 && - CHECK_BTN_ALL(play->state.input[0].press.button, BTN_B) && !msgCtx->textUnskippable) { + CHECK_BTN_ALL(input->press.button, BTN_B) && !msgCtx->textUnskippable) { sTextboxSkipped = true; msgCtx->textDrawPos = msgCtx->decodedTextLen; } @@ -4259,7 +4391,7 @@ void Message_Update(PlayState* play) { &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); #if OOT_NTSC if (gSaveContext.language == LANGUAGE_JPN && !sTextIsCredits) { - Message_ContinueTextbox(play, msgCtx->msgBufDecodedWide[msgCtx->textDrawPos]); + Message_ContinueTextbox(play, MSG_BUF_DECODED_WIDE[msgCtx->textDrawPos]); } else { Message_ContinueTextbox(play, sNextTextId); } diff --git a/src/code/z_moji.c b/src/code/z_moji.c index c9cbbdda88..33abd83f7f 100644 --- a/src/code/z_moji.c +++ b/src/code/z_moji.c @@ -2,6 +2,9 @@ * Unused. A very simple utility for drawing text on screen. */ +#include "gfx.h" + +#include "macros.h" #include "global.h" // how big to draw the characters on screen diff --git a/src/code/z_nulltask.c b/src/code/z_nulltask.c index 1f7dae689e..42ba3d86f9 100644 --- a/src/code/z_nulltask.c +++ b/src/code/z_nulltask.c @@ -1,4 +1,5 @@ -#include "global.h" +#include "ultra64.h" +#include "sched.h" /** * Blocks the current thread until all queued scheduler tasks have completed. diff --git a/src/code/z_olib.c b/src/code/z_olib.c index 298f151e2c..66c767f68b 100644 --- a/src/code/z_olib.c +++ b/src/code/z_olib.c @@ -1,5 +1,6 @@ #include "z64math.h" #include "libc64/math64.h" +#include "z64olib.h" #include "z_lib.h" /** diff --git a/src/code/z_onepointdemo.c b/src/code/z_onepointdemo.c index 04ffc2f463..6a4c896ac7 100644 --- a/src/code/z_onepointdemo.c +++ b/src/code/z_onepointdemo.c @@ -1,7 +1,15 @@ -#include "global.h" +#include "libc64/math64.h" +#include "libc64/qrand.h" +#include "one_point_cutscene.h" #include "quake.h" +#include "sfx.h" #include "terminal.h" #include "versions.h" +#include "z_lib.h" +#include "z64olib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" #include "overlays/actors/ovl_En_Sw/z_en_sw.h" static s16 sDisableAttention = false; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index fd780e2a52..6615d49c64 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1,7 +1,27 @@ -#include "global.h" +#include "attributes.h" +#include "controller.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "main.h" +#include "map.h" +#include "regs.h" +#include "segment_symbols.h" +#include "segmented_address.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" #include "versions.h" +#include "z64audio.h" +#include "z64lifemeter.h" #include "z64horse.h" +#include "z64ocarina.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "global.h" + #include "assets/textures/parameter_static/parameter_static.h" #include "assets/textures/do_action_static/do_action_static.h" #include "assets/textures/icon_item_static/icon_item_static.h" @@ -639,9 +659,9 @@ void Interface_UpdateHudAlphas(PlayState* play, s16 dimmingAlpha) { } void func_80083108(PlayState* play) { - MessageContext* msgCtx = &play->msgCtx; - Player* player = GET_PLAYER(play); InterfaceContext* interfaceCtx = &play->interfaceCtx; + Player* player = GET_PLAYER(play); + MessageContext* msgCtx = &play->msgCtx; s16 i; s16 sp28 = false; @@ -1100,7 +1120,9 @@ void Interface_SetSceneRestrictions(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; s16 i = 0; u8 sceneId; - s32 pad[3]; + s32 pad1; + s32 pad2; + s32 pad3; interfaceCtx->restrictions.all = 0; interfaceCtx->restrictions.dinsNayrus = 0; @@ -1148,7 +1170,7 @@ void Interface_SetSceneRestrictions(PlayState* play) { interfaceCtx->restrictions.farores, interfaceCtx->restrictions.dinsNayrus, interfaceCtx->restrictions.all); PRINTF_RST(); - return; + break; } i++; } while (sRestrictionFlags[i].sceneId != 0xFF); @@ -1278,7 +1300,7 @@ void Inventory_SwapAgeEquipment(void) { } } - shieldEquipValue = gEquipMasks[EQUIP_TYPE_SHIELD] & gSaveContext.save.info.equips.equipment; + shieldEquipValue = gSaveContext.save.info.equips.equipment & gEquipMasks[EQUIP_TYPE_SHIELD]; if (shieldEquipValue) { shieldEquipValue >>= gEquipShifts[EQUIP_TYPE_SHIELD]; if (!CHECK_OWNED_EQUIP_ALT(EQUIP_TYPE_SHIELD, shieldEquipValue - 1)) { @@ -1641,8 +1663,7 @@ u8 Item_Give(PlayState* play, u8 item) { AMMO(ITEM_BOMBCHU) = 10; return ITEM_NONE; } else { - AMMO(ITEM_BOMBCHU) += 10; - if (AMMO(ITEM_BOMBCHU) > 50) { + if ((AMMO(ITEM_BOMBCHU) += 10) > 50) { AMMO(ITEM_BOMBCHU) = 50; } return ITEM_NONE; @@ -1653,8 +1674,7 @@ u8 Item_Give(PlayState* play, u8 item) { AMMO(ITEM_BOMBCHU) += sBombchuRefillCounts[item - ITEM_BOMBCHUS_5]; return ITEM_NONE; } else { - AMMO(ITEM_BOMBCHU) += sBombchuRefillCounts[item - ITEM_BOMBCHUS_5]; - if (AMMO(ITEM_BOMBCHU) > 50) { + if ((AMMO(ITEM_BOMBCHU) += sBombchuRefillCounts[item - ITEM_BOMBCHUS_5]) > 50) { AMMO(ITEM_BOMBCHU) = 50; } return ITEM_NONE; @@ -1801,15 +1821,15 @@ u8 Item_Give(PlayState* play, u8 item) { gSaveContext.save.info.equips.cButtonSlots[0], gSaveContext.save.info.equips.cButtonSlots[1], gSaveContext.save.info.equips.cButtonSlots[2], temp + i, item); - if ((temp + i) == gSaveContext.save.info.equips.cButtonSlots[0]) { + if (gSaveContext.save.info.equips.cButtonSlots[0] == temp + i) { gSaveContext.save.info.equips.buttonItems[1] = item; Interface_LoadItemIcon2(play, 1); gSaveContext.buttonStatus[1] = BTN_ENABLED; - } else if ((temp + i) == gSaveContext.save.info.equips.cButtonSlots[1]) { + } else if (gSaveContext.save.info.equips.cButtonSlots[1] == temp + i) { gSaveContext.save.info.equips.buttonItems[2] = item; Interface_LoadItemIcon2(play, 2); gSaveContext.buttonStatus[2] = BTN_ENABLED; - } else if ((temp + i) == gSaveContext.save.info.equips.cButtonSlots[2]) { + } else if (gSaveContext.save.info.equips.cButtonSlots[2] == temp + i) { gSaveContext.save.info.equips.buttonItems[3] = item; Interface_LoadItemIcon1(play, 3); gSaveContext.buttonStatus[3] = BTN_ENABLED; @@ -1838,7 +1858,7 @@ u8 Item_Give(PlayState* play, u8 item) { if (temp != ITEM_NONE) { for (i = 1; i < 4; i++) { - if (temp == gSaveContext.save.info.equips.buttonItems[i]) { + if (gSaveContext.save.info.equips.buttonItems[i] == temp) { if (item != ITEM_SOLD_OUT) { gSaveContext.save.info.equips.buttonItems[i] = item; Interface_LoadItemIcon1(play, i); @@ -2017,7 +2037,7 @@ s32 Inventory_ReplaceItem(PlayState* play, u16 oldItem, u16 newItem) { if (gSaveContext.save.info.equips.buttonItems[i] == oldItem) { gSaveContext.save.info.equips.buttonItems[i] = newItem; Interface_LoadItemIcon1(play, i); - break; + return true; } } return true; @@ -2349,6 +2369,8 @@ void Magic_Reset(PlayState* play) { * @return false if the request failed */ s32 Magic_RequestChange(PlayState* play, s16 amount, s16 type) { + InterfaceContext* interfaceCtx = &play->interfaceCtx; + if (!gSaveContext.save.info.playerData.isMagicAcquired) { return false; } @@ -2400,7 +2422,7 @@ s32 Magic_RequestChange(PlayState* play, s16 amount, s16 type) { case MAGIC_CONSUME_LENS: if (gSaveContext.magicState == MAGIC_STATE_IDLE) { if (gSaveContext.save.info.playerData.magic != 0) { - play->interfaceCtx.lensMagicConsumptionTimer = 80; + interfaceCtx->lensMagicConsumptionTimer = 80; gSaveContext.magicState = MAGIC_STATE_CONSUME_LENS; return true; } else { @@ -2457,8 +2479,8 @@ void Magic_Update(PlayState* play) { static s16 sMagicBorderIndices[] = { 0, 1, 1, 0 }; static s16 sMagicBorderRatio = 2; static s16 sMagicBorderStep = 1; - MessageContext* msgCtx = &play->msgCtx; InterfaceContext* interfaceCtx = &play->interfaceCtx; + MessageContext* msgCtx = &play->msgCtx; s16 borderChangeR; s16 borderChangeG; s16 borderChangeB; @@ -2469,7 +2491,7 @@ void Magic_Update(PlayState* play) { // Step magicCapacity to the capacity determined by magicLevel // This changes the width of the magic meter drawn temp = gSaveContext.save.info.playerData.magicLevel * MAGIC_NORMAL_METER; - if (gSaveContext.magicCapacity != temp) { + if (temp != gSaveContext.magicCapacity) { if (gSaveContext.magicCapacity < temp) { gSaveContext.magicCapacity += 8; if (gSaveContext.magicCapacity > temp) { @@ -2659,11 +2681,12 @@ void Magic_DrawMeter(PlayState* play) { OPEN_DISPS(play->state.gfxCtx, "../z_parameter.c", 2650); if (gSaveContext.save.info.playerData.magicLevel != 0) { - if (gSaveContext.save.info.playerData.healthCapacity > 0xA0) { + // NOLINTBEGIN + if (gSaveContext.save.info.playerData.healthCapacity > 0xA0) magicMeterY = R_MAGIC_METER_Y_LOWER; // two rows of hearts - } else { + else magicMeterY = R_MAGIC_METER_Y_HIGHER; // one row of hearts - } + // NOLINTEND Gfx_SetupDL_39Overlay(play->state.gfxCtx); @@ -2679,8 +2702,8 @@ void Magic_DrawMeter(PlayState* play) { gDPLoadTextureBlock(OVERLAY_DISP++, gMagicMeterEndTex, G_IM_FMT_IA, G_IM_SIZ_8b, 8, 16, 0, G_TX_MIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 3, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); - gSPTextureRectangle(OVERLAY_DISP++, (R_MAGIC_METER_X + gSaveContext.magicCapacity + 8) << 2, magicMeterY << 2, - (R_MAGIC_METER_X + gSaveContext.magicCapacity + 16) << 2, (magicMeterY + 16) << 2, + gSPTextureRectangle(OVERLAY_DISP++, (R_MAGIC_METER_X + 8 + gSaveContext.magicCapacity) << 2, magicMeterY << 2, + (R_MAGIC_METER_X + 8 + gSaveContext.magicCapacity + 8) << 2, (magicMeterY + 16) << 2, G_TX_RENDERTILE, 256, 0, 1 << 10, 1 << 10); gDPPipeSync(OVERLAY_DISP++); @@ -2910,12 +2933,20 @@ void Interface_DrawItemButtons(PlayState* play) { gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); +#if !PLATFORM_IQUE gDPLoadTextureBlock_4b(OVERLAY_DISP++, cUpLabelTextures[gSaveContext.language], G_IM_FMT_IA, 32, 8, 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); - gSPTextureRectangle(OVERLAY_DISP++, R_C_UP_ICON_X << 2, R_C_UP_ICON_Y << 2, (R_C_UP_ICON_X + 32) << 2, (R_C_UP_ICON_Y + 8) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); +#else + gDPLoadTextureBlock_4b(OVERLAY_DISP++, cUpLabelTextures[gSaveContext.language], G_IM_FMT_IA, 48, 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); + gSPTextureRectangle(OVERLAY_DISP++, (R_C_UP_ICON_X - 8) << 2, (R_C_UP_ICON_Y - 4) << 2, + (R_C_UP_ICON_X + 40) << 2, (R_C_UP_ICON_Y + 12) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, + 1 << 10); +#endif } sCUpTimer--; @@ -3006,7 +3037,9 @@ void Interface_DrawAmmoCount(PlayState* play, s16 button, s16 alpha) { gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 100, 100, 100, alpha); } - for (i = 0; ammo >= 10; i++) { + i = 0; + while (ammo >= 10) { + i++; ammo -= 10; } @@ -3416,7 +3449,7 @@ void Interface_Draw(PlayState* play) { gSPSegment(OVERLAY_DISP++, 0x08, pauseCtx->iconItemSegment); Gfx_SetupDL_42Overlay(play->state.gfxCtx); gDPSetCombineMode(OVERLAY_DISP++, G_CC_MODULATERGBA_PRIM, G_CC_MODULATERGBA_PRIM); - gSPMatrix(OVERLAY_DISP++, &gMtxClear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(OVERLAY_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); // PAUSE_CURSOR_QUAD_4 pauseCtx->cursorVtx[16].v.ob[0] = pauseCtx->cursorVtx[18].v.ob[0] = pauseCtx->equipAnimX / 10; @@ -3446,11 +3479,11 @@ void Interface_Draw(PlayState* play) { pauseCtx->cursorVtx[16].v.ob[0] = pauseCtx->cursorVtx[18].v.ob[0] = pauseCtx->cursorVtx[16].v.ob[0] - svar1; pauseCtx->cursorVtx[17].v.ob[0] = pauseCtx->cursorVtx[19].v.ob[0] = - pauseCtx->cursorVtx[16].v.ob[0] + svar1 * 2 + 32; + pauseCtx->cursorVtx[16].v.ob[0] + 32 + svar1 * 2; pauseCtx->cursorVtx[16].v.ob[1] = pauseCtx->cursorVtx[17].v.ob[1] = pauseCtx->cursorVtx[16].v.ob[1] + svar1; pauseCtx->cursorVtx[18].v.ob[1] = pauseCtx->cursorVtx[19].v.ob[1] = - pauseCtx->cursorVtx[16].v.ob[1] - svar1 * 2 - 32; + pauseCtx->cursorVtx[16].v.ob[1] - 32 - svar1 * 2; } gSPVertex(OVERLAY_DISP++, &pauseCtx->cursorVtx[PAUSE_CURSOR_QUAD_4 * 4], 4, 0); @@ -3654,8 +3687,7 @@ void Interface_Draw(PlayState* play) { } if ((gSaveContext.timerState >= TIMER_STATE_ENV_HAZARD_MOVE) && (msgCtx->msgLength == 0)) { - sTimerNextSecondTimer--; - if (sTimerNextSecondTimer == 0) { + if (--sTimerNextSecondTimer == 0) { if (gSaveContext.timerSeconds != 0) { gSaveContext.timerSeconds--; } @@ -4008,8 +4040,8 @@ void Interface_Draw(PlayState* play) { void Interface_Update(PlayState* play) { static u8 D_80125B60 = false; static s16 sPrevTimeSpeed = 0; - MessageContext* msgCtx = &play->msgCtx; InterfaceContext* interfaceCtx = &play->interfaceCtx; + MessageContext* msgCtx = &play->msgCtx; Player* player = GET_PLAYER(play); s16 dimmingAlpha; s16 risingAlpha; diff --git a/src/code/z_path.c b/src/code/z_path.c index d27530eb3a..29b51a8f17 100644 --- a/src/code/z_path.c +++ b/src/code/z_path.c @@ -1,4 +1,9 @@ -#include "global.h" +#include "ultra64.h" +#include "libc64/math64.h" +#include "segmented_address.h" +#include "z64actor.h" +#include "z64path.h" +#include "z64play.h" Path* Path_GetByIndex(PlayState* play, s16 index, s16 max) { Path* path; diff --git a/src/code/z_play.c b/src/code/z_play.c index a04391aa89..962e710472 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -1,16 +1,46 @@ -#include "global.h" +#include "libc64/malloc.h" +#include "libc64/qrand.h" +#include "libu64/debug.h" +#include "buffers.h" +#include "controller.h" #include "fault.h" -#include "quake.h" -#include "terminal.h" -#include "versions.h" +#include "file_select_state.h" +#include "gfx.h" +#include "gfxalloc.h" +#include "kaleido_manager.h" +#include "letterbox.h" #include "line_numbers.h" #if PLATFORM_N64 #include "n64dd.h" #endif - +#include "one_point_cutscene.h" +#include "quake.h" +#include "regs.h" +#include "rumble.h" +#include "segmented_address.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_math3d.h" +#include "sys_matrix.h" +#include "terminal.h" +#include "title_setup_state.h" +#include "versions.h" +#include "z_actor_dlftbls.h" +#include "zelda_arena.h" +#include "z64cutscene_flags.h" +#include "z64debug_display.h" +#include "z64effect.h" #include "z64frame_advance.h" +#include "z64light.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" +#include "z64vis.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" +#include "global.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:224 ntsc-1.1:224 ntsc-1.2:224 pal-1.0:224 pal-1.1:224" TransitionTile gTransitionTile; s32 gTransitionTileState; @@ -299,7 +329,7 @@ void Play_Init(GameState* thisx) { Camera_OverwriteStateFlags(&this->mainCamera, CAM_STATE_CHECK_BG_ALT | CAM_STATE_CHECK_WATER | CAM_STATE_CHECK_BG | CAM_STATE_EXTERNAL_FINISHED | CAM_STATE_CAM_FUNC_FINISH | CAM_STATE_LOCK_MODE | CAM_STATE_DISTORTION | CAM_STATE_PLAY_INIT); - Sram_Init(this, &this->sramCtx); + Sram_Init(&this->state, &this->sramCtx); Regs_InitData(this); Message_Init(this); GameOver_Init(this); @@ -1292,7 +1322,7 @@ void Play_Draw(PlayState* this) { } if (!DEBUG_FEATURES || (R_HREG_MODE != HREG_MODE_PLAY) || R_PLAY_DRAW_ACTORS) { - func_800315AC(this, &this->actorCtx); + Actor_DrawAll(this, &this->actorCtx); } if (!DEBUG_FEATURES || (R_HREG_MODE != HREG_MODE_PLAY) || R_PLAY_DRAW_LENS_FLARES) { @@ -1621,7 +1651,7 @@ s16 Play_CreateSubCamera(PlayState* this) { return camId; } -s16 Play_GetActiveCamId(PlayState* this) { +s32 Play_GetActiveCamId(PlayState* this) { return this->activeCamId; } diff --git a/src/code/z_player_call.c b/src/code/z_player_call.c index b922f56638..eb52aff798 100644 --- a/src/code/z_player_call.c +++ b/src/code/z_player_call.c @@ -1,10 +1,14 @@ -#include "global.h" +#include "kaleido_manager.h" +#include "z64actor.h" +#include "z64actor_profile.h" +#include "z64play.h" +#include "z64player.h" #define FLAGS \ (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED | \ ACTOR_FLAG_DRAW_CULLING_DISABLED | ACTOR_FLAG_UPDATE_DURING_OCARINA | ACTOR_FLAG_CAN_PRESS_SWITCHES) -#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.2:128 pal-1.1:128" void (*sPlayerCallInitFunc)(Actor* thisx, PlayState* play); diff --git a/src/code/z_player_lib.c b/src/code/z_player_lib.c index 798ba82462..adefea26a7 100644 --- a/src/code/z_player_lib.c +++ b/src/code/z_player_lib.c @@ -1,10 +1,24 @@ -#include "global.h" +#include "libc64/math64.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "regs.h" +#include "segmented_address.h" +#include "sys_matrix.h" #include "versions.h" +#include "z_lib.h" +#include "z64draw.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" +#include "z64skin_matrix.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_link_boy/object_link_boy.h" #include "assets/objects/object_link_child/object_link_child.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" +#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" typedef struct BowSlingshotStringData { /* 0x00 */ Gfx* dList; diff --git a/src/code/z_prenmi.c b/src/code/z_prenmi.c index e1bb151453..bda115d462 100644 --- a/src/code/z_prenmi.c +++ b/src/code/z_prenmi.c @@ -1,7 +1,13 @@ -#include "global.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "prenmi_state.h" +#include "regs.h" #include "terminal.h" #include "versions.h" +#include "macros.h" +#include "global.h" + void func_80092320(PreNMIState* this) { this->state.running = false; this->state.init = NULL; diff --git a/src/code/z_prenmi_buff.c b/src/code/z_prenmi_buff.c index c00d0513c0..17ef0b78c9 100644 --- a/src/code/z_prenmi_buff.c +++ b/src/code/z_prenmi_buff.c @@ -1,3 +1,4 @@ +#include "prenmi_buff.h" #include "global.h" #define COLD_RESET 0 diff --git a/src/code/z_quake.c b/src/code/z_quake.c index 4c318b9386..2e83a7c10e 100644 --- a/src/code/z_quake.c +++ b/src/code/z_quake.c @@ -1,6 +1,10 @@ -#include "global.h" +#include "libc64/qrand.h" +#include "macros.h" #include "quake.h" #include "terminal.h" +#include "z_lib.h" +#include "z64olib.h" +#include "z64play.h" typedef struct QuakeRequest { /* 0x00 */ s16 index; diff --git a/src/code/z_rcp.c b/src/code/z_rcp.c index 8f0f61ed34..6228b51cf1 100644 --- a/src/code/z_rcp.c +++ b/src/code/z_rcp.c @@ -1,4 +1,11 @@ -#include "global.h" +#include "buffers.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "gfxalloc.h" +#include "letterbox.h" +#include "main.h" +#include "regs.h" +#include "z64play.h" Gfx sSetupDL[SETUPDL_MAX][6] = { { diff --git a/src/code/z_room.c b/src/code/z_room.c index 0c5d37f551..a9daab2047 100644 --- a/src/code/z_room.c +++ b/src/code/z_room.c @@ -1,11 +1,27 @@ -#include "global.h" +#include "libu64/debug.h" +#include "ultra64/gs2dex.h" +#include "buffers.h" #include "fault.h" -#include "terminal.h" -#include "versions.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "jpeg.h" #include "line_numbers.h" +#include "map.h" #if PLATFORM_N64 #include "n64dd.h" #endif +#include "regs.h" +#include "segmented_address.h" +#include "sys_matrix.h" +#include "sys_ucode.h" +#include "terminal.h" +#include "versions.h" +#include "z64audio.h" +#include "z64play.h" +#include "z64player.h" +#include "z64room.h" +#include "z64save.h" +#include "z64skin_matrix.h" Vec3f D_801270A0 = { 0.0f, 0.0f, 0.0f }; @@ -48,14 +64,14 @@ void Room_DrawNormal(PlayState* play, Room* room, u32 flags) { func_800342EC(&D_801270A0, play); gSPSegment(POLY_OPA_DISP++, 0x03, room->segment); func_80093C80(play); - gSPMatrix(POLY_OPA_DISP++, &gMtxClear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(POLY_OPA_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); } if (flags & ROOM_DRAW_XLU) { func_8003435C(&D_801270A0, play); gSPSegment(POLY_XLU_DISP++, 0x03, room->segment); Gfx_SetupDL_25Xlu(play->state.gfxCtx); - gSPMatrix(POLY_XLU_DISP++, &gMtxClear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(POLY_XLU_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); } roomShape = &room->roomShape->normal; @@ -122,7 +138,7 @@ void Room_DrawCullable(PlayState* play, Room* room, u32 flags) { func_800342EC(&D_801270A0, play); gSPSegment(POLY_OPA_DISP++, 0x03, room->segment); func_80093C80(play); - gSPMatrix(POLY_OPA_DISP++, &gMtxClear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(POLY_OPA_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); } if (1) {} @@ -131,7 +147,7 @@ void Room_DrawCullable(PlayState* play, Room* room, u32 flags) { func_8003435C(&D_801270A0, play); gSPSegment(POLY_XLU_DISP++, 0x03, room->segment); Gfx_SetupDL_25Xlu(play->state.gfxCtx); - gSPMatrix(POLY_XLU_DISP++, &gMtxClear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(POLY_XLU_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); } roomShape = &room->roomShape->cullable; @@ -390,7 +406,7 @@ void Room_DrawImageSingle(PlayState* play, Room* room, u32 flags) { if (drawOpa) { Gfx_SetupDL_25Opa(play->state.gfxCtx); - gSPMatrix(POLY_OPA_DISP++, &gMtxClear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(POLY_OPA_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_OPA_DISP++, entry->opa); } @@ -421,7 +437,7 @@ void Room_DrawImageSingle(PlayState* play, Room* room, u32 flags) { if (drawXlu) { gSPSegment(POLY_XLU_DISP++, 0x03, room->segment); Gfx_SetupDL_25Xlu(play->state.gfxCtx); - gSPMatrix(POLY_XLU_DISP++, &gMtxClear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(POLY_XLU_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_XLU_DISP++, entry->xlu); } @@ -499,7 +515,7 @@ void Room_DrawImageMulti(PlayState* play, Room* room, u32 flags) { if (drawOpa) { Gfx_SetupDL_25Opa(play->state.gfxCtx); - gSPMatrix(POLY_OPA_DISP++, &gMtxClear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(POLY_OPA_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_OPA_DISP++, dListsEntry->opa); } @@ -530,7 +546,7 @@ void Room_DrawImageMulti(PlayState* play, Room* room, u32 flags) { if (drawXlu) { gSPSegment(POLY_XLU_DISP++, 0x03, room->segment); Gfx_SetupDL_25Xlu(play->state.gfxCtx); - gSPMatrix(POLY_XLU_DISP++, &gMtxClear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(POLY_XLU_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_XLU_DISP++, dListsEntry->xlu); } diff --git a/src/code/z_rumble.c b/src/code/z_rumble.c index 49a54e7aab..52897d6294 100644 --- a/src/code/z_rumble.c +++ b/src/code/z_rumble.c @@ -11,7 +11,9 @@ * * @note Original filename is likely z_vibrate.c or similar as it is ordered after z_ss_sram.c and before z_view.c */ -#include "global.h" +#include "rumble.h" +#include "padmgr.h" +#include "z64math.h" RumbleMgr sRumbleMgr; diff --git a/src/code/z_sample.c b/src/code/z_sample.c index 541771432b..63e0836bbc 100644 --- a/src/code/z_sample.c +++ b/src/code/z_sample.c @@ -1,4 +1,11 @@ -#include "global.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "controller.h" +#include "regs.h" +#include "sample_state.h" +#include "segment_symbols.h" +#include "z64dma.h" +#include "z64play.h" void Sample_HandleStateChange(SampleState* this) { if (CHECK_BTN_ALL(this->state.input[0].press.button, BTN_START)) { diff --git a/src/code/z_scene.c b/src/code/z_scene.c index bcb4c5ba9b..3971a424f4 100644 --- a/src/code/z_scene.c +++ b/src/code/z_scene.c @@ -1,6 +1,16 @@ -#include "global.h" +#include "regs.h" +#include "romfile.h" +#include "seqcmd.h" +#include "segment_symbols.h" +#include "segmented_address.h" #include "terminal.h" #include "versions.h" +#include "z_actor_dlftbls.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" +#include "z64scene.h" SceneCmdHandlerFunc sSceneCmdHandlers[SCENE_CMD_ID_MAX]; RomFile sNaviQuestHintFiles[]; diff --git a/src/code/z_scene_table.c b/src/code/z_scene_table.c index a6a08ccd16..5e096a262e 100644 --- a/src/code/z_scene_table.c +++ b/src/code/z_scene_table.c @@ -1,10 +1,20 @@ -#include "global.h" -#include "quake.h" -#include "versions.h" -#include "z64frame_advance.h" +#include "libc64/qrand.h" +#include "gfx.h" #if PLATFORM_N64 #include "n64dd.h" #endif +#include "quake.h" +#include "regs.h" +#include "segment_symbols.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "versions.h" +#include "z_lib.h" +#include "z64frame_advance.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" #include "assets/scenes/indoors/miharigoya/miharigoya_scene.h" #include "assets/scenes/indoors/souko/souko_scene.h" diff --git a/src/code/z_skelanime.c b/src/code/z_skelanime.c index 49502f4ec9..be5f275647 100644 --- a/src/code/z_skelanime.c +++ b/src/code/z_skelanime.c @@ -1,5 +1,17 @@ -#include "global.h" +#include "libu64/debug.h" +#include "gfx.h" +#include "regs.h" +#include "segmented_address.h" +#include "segment_symbols.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "zelda_arena.h" +#include "z64animation.h" +#include "z64animation_legacy.h" +#include "z64play.h" + +#include "macros.h" #define ANIM_INTERP 1 diff --git a/src/code/z_skin.c b/src/code/z_skin.c index 55af9b1e2d..508943cdd9 100644 --- a/src/code/z_skin.c +++ b/src/code/z_skin.c @@ -1,4 +1,10 @@ -#include "global.h" +#include "gfx.h" +#include "segmented_address.h" +#include "sys_matrix.h" +#include "z64math.h" +#include "z64play.h" +#include "z64skin.h" +#include "z64skin_matrix.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" \ "pal-1.1:128" @@ -207,7 +213,7 @@ void Skin_DrawImpl(Actor* actor, PlayState* play, Skin* skin, SkinPostDraw postD skeleton = SEGMENTED_TO_VIRTUAL(skin->skeletonHeader->segment); if (!(drawFlags & SKIN_DRAW_FLAG_CUSTOM_MATRIX)) { - gSPMatrix(POLY_OPA_DISP++, &gMtxClear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(POLY_OPA_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); mtx = SkinMatrix_MtxFToNewMtx(gfxCtx, &skin->mtx); if (mtx == NULL) { diff --git a/src/code/z_skin_awb.c b/src/code/z_skin_awb.c index 55633bc872..8a175ed15f 100644 --- a/src/code/z_skin_awb.c +++ b/src/code/z_skin_awb.c @@ -1,5 +1,10 @@ -#include "global.h" #include "overlays/actors/ovl_En_fHG/z_en_fhg.h" +#include "segmented_address.h" +#include "zelda_arena.h" +#include "z64actor.h" +#include "z64play.h" +#include "z64skin.h" +#include "z64skin_matrix.h" /** * Initialises the Vtx buffers used for limb at index `limbIndex` diff --git a/src/code/z_skin_matrix.c b/src/code/z_skin_matrix.c index 689fe67107..f83cb8295d 100644 --- a/src/code/z_skin_matrix.c +++ b/src/code/z_skin_matrix.c @@ -1,5 +1,9 @@ -#include "global.h" +#include "gfx.h" #include "terminal.h" +#include "z_lib.h" +#include "z64skin_matrix.h" + +#include "macros.h" // clang-format off MtxF sMtxFClear = { diff --git a/src/code/z_sram.c b/src/code/z_sram.c index 28871572c4..7fa1e898ec 100644 --- a/src/code/z_sram.c +++ b/src/code/z_sram.c @@ -1,6 +1,15 @@ -#include "global.h" +#include "file_select_state.h" +#include "controller.h" #include "terminal.h" #include "versions.h" +#include "z64game.h" +#include "z64message.h" +#include "z64save.h" +#include "z64scene.h" +#include "z64sram.h" +#include "z64ss_sram.h" + +#include "global.h" #define SLOT_SIZE (sizeof(SaveContext) + 0x28) #define CHECKSUM_SIZE (sizeof(Save) / 2) @@ -17,6 +26,30 @@ #define SLOT_OFFSET(index) (SRAM_HEADER_SIZE + 0x10 + (index * SLOT_SIZE)) +#if !PLATFORM_IQUE + +#define SRAM_READ(addr, dramAddr, size) SsSram_ReadWrite(addr, dramAddr, size, OS_READ) +#define SRAM_WRITE(addr, dramAddr, size) SsSram_ReadWrite(addr, dramAddr, size, OS_WRITE) + +#else + +void Sram_ReadWriteIQue(s32 addr, void* dramAddr, size_t size, s32 direction) { + void* sramAddr; + + addr -= OS_K1_TO_PHYSICAL(0xA8000000); + sramAddr = (void*)(__osBbSramAddress + addr); + if (direction == OS_READ) { + bcopy(sramAddr, dramAddr, size); + } else if (direction == OS_WRITE) { + bcopy(dramAddr, sramAddr, size); + } +} + +#define SRAM_READ(addr, dramAddr, size) Sram_ReadWriteIQue(addr, dramAddr, size, OS_READ) +#define SRAM_WRITE(addr, dramAddr, size) Sram_ReadWriteIQue(addr, dramAddr, size, OS_WRITE) + +#endif + u16 gSramSlotOffsets[] = { SLOT_OFFSET(0), SLOT_OFFSET(1), @@ -27,7 +60,26 @@ u16 gSramSlotOffsets[] = { SLOT_OFFSET(5), }; -static char sZeldaMagic[] = { '\0', '\0', '\0', '\x98', '\x09', '\x10', '\x21', 'Z', 'E', 'L', 'D', 'A' }; +static u8 sSramDefaultHeader[] = { + SOUND_SETTING_STEREO, // SRAM_HEADER_SOUND + Z_TARGET_SETTING_SWITCH, // SRAM_HEADER_Z_TARGET +#if OOT_NTSC + LANGUAGE_JPN, // SRAM_HEADER_LANGUAGE +#else + LANGUAGE_ENG, // SRAM_HEADER_LANGUAGE +#endif + + // SRAM_HEADER_MAGIC + 0x98, + 0x09, + 0x10, + 0x21, + 'Z', + 'E', + 'L', + 'D', + 'A', +}; static SavePlayerData sNewSavePlayerData = { { '\0', '\0', '\0', '\0', '\0', '\0' }, // newf @@ -138,15 +190,13 @@ static Inventory sNewSaveInventory = { 0, // gsTokens }; -static u16 sNewSaveChecksum = 0; +static Checksum sNewSaveChecksum = { 0 }; /** * Initialize new save. * This save has an empty inventory with 3 hearts and single magic. */ void Sram_InitNewSave(void) { - SaveContext* temp = &gSaveContext; - bzero(&gSaveContext.save.info, sizeof(SaveInfo)); gSaveContext.save.totalDays = 0; gSaveContext.save.bgsDayCount = 0; @@ -154,8 +204,8 @@ void Sram_InitNewSave(void) { gSaveContext.save.info.playerData = sNewSavePlayerData; gSaveContext.save.info.equips = sNewSaveEquips; gSaveContext.save.info.inventory = sNewSaveInventory; + gSaveContext.save.info.checksum = sNewSaveChecksum; - temp->save.info.checksum = sNewSaveChecksum; gSaveContext.save.info.horseData.sceneId = SCENE_HYRULE_FIELD; gSaveContext.save.info.horseData.pos.x = -1840; gSaveContext.save.info.horseData.pos.y = 72; @@ -297,7 +347,7 @@ static Inventory sDebugSaveInventory = { 0, // gsTokens }; -static u16 sDebugSaveChecksum = 0; +static Checksum sDebugSaveChecksum = { 0 }; /** * Initialize debug save. This is also used on the Title Screen @@ -309,8 +359,6 @@ static u16 sDebugSaveChecksum = 0; * and set water level in Water Temple to lowest level. */ void Sram_InitDebugSave(void) { - SaveContext* temp = &gSaveContext; - bzero(&gSaveContext.save.info, sizeof(SaveInfo)); gSaveContext.save.totalDays = 0; gSaveContext.save.bgsDayCount = 0; @@ -318,8 +366,8 @@ void Sram_InitDebugSave(void) { gSaveContext.save.info.playerData = sDebugSavePlayerData; gSaveContext.save.info.equips = sDebugSaveEquips; gSaveContext.save.info.inventory = sDebugSaveInventory; + gSaveContext.save.info.checksum = sDebugSaveChecksum; - temp->save.info.checksum = sDebugSaveChecksum; gSaveContext.save.info.horseData.sceneId = SCENE_HYRULE_FIELD; gSaveContext.save.info.horseData.pos.x = -1840; gSaveContext.save.info.horseData.pos.y = 72; @@ -456,8 +504,11 @@ void Sram_OpenSave(SramContext* sramCtx) { default: if (gSaveContext.save.info.playerData.savedSceneId != SCENE_LINKS_HOUSE) { - gSaveContext.save.entranceIndex = - (LINK_AGE_IN_YEARS == YEARS_CHILD) ? ENTR_LINKS_HOUSE_0 : ENTR_TEMPLE_OF_TIME_7; + if (LINK_AGE_IN_YEARS == YEARS_CHILD) { + gSaveContext.save.entranceIndex = ENTR_LINKS_HOUSE_0; + } else { + gSaveContext.save.entranceIndex = ENTR_TEMPLE_OF_TIME_7; + } } else { gSaveContext.save.entranceIndex = ENTR_LINKS_HOUSE_0; } @@ -505,7 +556,8 @@ void Sram_OpenSave(SramContext* sramCtx) { // if zelda cutscene has been watched but lullaby was not obtained, restore cutscene and take away letter if (GET_EVENTCHKINF(EVENTCHKINF_40) && !CHECK_QUEST_ITEM(QUEST_SONG_LULLABY)) { - i = gSaveContext.save.info.eventChkInf[EVENTCHKINF_INDEX_40] & ~EVENTCHKINF_MASK(EVENTCHKINF_40); + i = gSaveContext.save.info.eventChkInf[EVENTCHKINF_INDEX_40]; + i &= ~EVENTCHKINF_MASK(EVENTCHKINF_40); gSaveContext.save.info.eventChkInf[EVENTCHKINF_INDEX_40] = i; INV_CONTENT(ITEM_ZELDAS_LETTER) = ITEM_CHICKEN; @@ -551,7 +603,7 @@ void Sram_WriteSave(SramContext* sramCtx) { u16 j; u16* ptr; - gSaveContext.save.info.checksum = 0; + gSaveContext.save.info.checksum.value = 0; ptr = (u16*)&gSaveContext; checksum = j = 0; @@ -563,7 +615,7 @@ void Sram_WriteSave(SramContext* sramCtx) { checksum += *ptr++; } - gSaveContext.save.info.checksum = checksum; + gSaveContext.save.info.checksum.value = checksum; ptr = (u16*)&gSaveContext; checksum = 0; @@ -576,7 +628,7 @@ void Sram_WriteSave(SramContext* sramCtx) { } offset = gSramSlotOffsets[gSaveContext.fileNum]; - SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000) + offset, &gSaveContext, SLOT_SIZE, OS_WRITE); + SRAM_WRITE(OS_K1_TO_PHYSICAL(0xA8000000) + offset, &gSaveContext, SLOT_SIZE); ptr = (u16*)&gSaveContext; checksum = 0; @@ -589,7 +641,7 @@ void Sram_WriteSave(SramContext* sramCtx) { } offset = gSramSlotOffsets[gSaveContext.fileNum + 3]; - SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000) + offset, &gSaveContext, SLOT_SIZE, OS_WRITE); + SRAM_WRITE(OS_K1_TO_PHYSICAL(0xA8000000) + offset, &gSaveContext, SLOT_SIZE); } /** @@ -610,7 +662,7 @@ void Sram_VerifyAndLoadAllSaves(FileSelectState* fileSelect, SramContext* sramCt PRINTF("SRAM START─LOAD\n"); bzero(sramCtx->readBuff, SRAM_SIZE); - SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE, OS_READ); + SRAM_READ(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE); dayTime = ((void)0, gSaveContext.save.dayTime); @@ -620,8 +672,8 @@ void Sram_VerifyAndLoadAllSaves(FileSelectState* fileSelect, SramContext* sramCt sizeof(Save)); MemCpy(&gSaveContext, sramCtx->readBuff + offset, sizeof(Save)); - oldChecksum = gSaveContext.save.info.checksum; - gSaveContext.save.info.checksum = 0; + oldChecksum = gSaveContext.save.info.checksum.value; + gSaveContext.save.info.checksum.value = 0; ptr = (u16*)&gSaveContext; PRINTF("\n============= S(%d) =============\n", slotNum); @@ -645,8 +697,8 @@ void Sram_VerifyAndLoadAllSaves(FileSelectState* fileSelect, SramContext* sramCt offset = gSramSlotOffsets[slotNum + 3]; MemCpy(&gSaveContext, sramCtx->readBuff + offset, sizeof(Save)); - oldChecksum = gSaveContext.save.info.checksum; - gSaveContext.save.info.checksum = 0; + oldChecksum = gSaveContext.save.info.checksum.value; + gSaveContext.save.info.checksum.value = 0; ptr = (u16*)&gSaveContext; PRINTF("================= BACK─UP ========================\n"); @@ -710,32 +762,33 @@ void Sram_VerifyAndLoadAllSaves(FileSelectState* fileSelect, SramContext* sramCt newChecksum += *ptr++; } - gSaveContext.save.info.checksum = newChecksum; - PRINTF("\nCheck_Sum=%x(%x)\n", gSaveContext.save.info.checksum, newChecksum); + gSaveContext.save.info.checksum.value = newChecksum; + PRINTF("\nCheck_Sum=%x(%x)\n", gSaveContext.save.info.checksum.value, newChecksum); i = gSramSlotOffsets[slotNum + 3]; - SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000) + i, &gSaveContext, SLOT_SIZE, OS_WRITE); + SRAM_WRITE(OS_K1_TO_PHYSICAL(0xA8000000) + i, &gSaveContext, SLOT_SIZE); - PRINTF("????#%x,%x,%x,%x,%x,%x\n", gSaveContext.save.info.playerData.newf[0], + //! @bug The ??= below is interpreted as a trigraph for # by IDO + PRINTF("??????=%x,%x,%x,%x,%x,%x\n", gSaveContext.save.info.playerData.newf[0], gSaveContext.save.info.playerData.newf[1], gSaveContext.save.info.playerData.newf[2], gSaveContext.save.info.playerData.newf[3], gSaveContext.save.info.playerData.newf[4], gSaveContext.save.info.playerData.newf[5]); PRINTF(T("\nぽいんと=%x(%d+3) check_sum=%x(%x)\n", "\npoints=%x(%d+3) check_sum=%x(%x)\n"), i, - slotNum, gSaveContext.save.info.checksum, newChecksum); + slotNum, gSaveContext.save.info.checksum.value, newChecksum); } i = gSramSlotOffsets[slotNum]; - SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000) + i, &gSaveContext, SLOT_SIZE, OS_WRITE); + SRAM_WRITE(OS_K1_TO_PHYSICAL(0xA8000000) + i, &gSaveContext, SLOT_SIZE); PRINTF(T("ぽいんと=%x(%d) check_sum=%x(%x)\n", "point=%x(%d) check_sum=%x(%x)\n"), i, slotNum, - gSaveContext.save.info.checksum, newChecksum); + gSaveContext.save.info.checksum.value, newChecksum); } else { PRINTF(T("\nSAVEデータ OK!!!!\n", "\nSAVE data OK!!!!\n")); } } bzero(sramCtx->readBuff, SRAM_SIZE); - SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE, OS_READ); + SRAM_READ(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE); gSaveContext.save.dayTime = dayTime; PRINTF("SAVECT=%x, NAME=%x, LIFE=%x, ITEM=%x, 64DD=%x, HEART=%x\n", DEATHS, NAME, HEALTH_CAP, QUEST, N64DD, @@ -809,7 +862,14 @@ void Sram_InitSave(FileSelectState* fileSelect, SramContext* sramCtx) { #endif for (offset = 0; offset < 8; offset++) { +#if !PLATFORM_IQUE gSaveContext.save.info.playerData.playerName[offset] = fileSelect->fileNames[fileSelect->buttonIndex][offset]; +#else + // Workaround for EGCS internal compiler error (see docs/compilers.md) + u8* fileName = fileSelect->fileNames[fileSelect->buttonIndex]; + + gSaveContext.save.info.playerData.playerName[offset] = fileName[offset]; +#endif } gSaveContext.save.info.playerData.newf[0] = 'Z'; @@ -838,8 +898,8 @@ void Sram_InitSave(FileSelectState* fileSelect, SramContext* sramCtx) { } } - gSaveContext.save.info.checksum = checksum; - PRINTF(T("\nチェックサム=%x\n", "\nChecksum = %x\n"), gSaveContext.save.info.checksum); + gSaveContext.save.info.checksum.value = checksum; + PRINTF(T("\nチェックサム=%x\n", "\nChecksum = %x\n"), gSaveContext.save.info.checksum.value); offset = gSramSlotOffsets[gSaveContext.fileNum]; PRINTF("I=%x no=%d\n", offset, gSaveContext.fileNum); @@ -849,7 +909,7 @@ void Sram_InitSave(FileSelectState* fileSelect, SramContext* sramCtx) { PRINTF("I=%x no=%d\n", offset, gSaveContext.fileNum + 3); MemCpy(sramCtx->readBuff + offset, &gSaveContext, sizeof(Save)); - SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE, OS_WRITE); + SRAM_WRITE(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE); PRINTF(T("SAVE終了\n", "SAVE end\n")); PRINTF("z_common_data.file_no = %d\n", gSaveContext.fileNum); @@ -879,26 +939,26 @@ void Sram_InitSave(FileSelectState* fileSelect, SramContext* sramCtx) { } void Sram_EraseSave(FileSelectState* fileSelect, SramContext* sramCtx) { - s32 offset; + u16 offset; Sram_InitNewSave(); offset = gSramSlotOffsets[fileSelect->selectedFileIndex]; MemCpy(sramCtx->readBuff + offset, &gSaveContext, sizeof(Save)); - SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000) + offset, &gSaveContext, SLOT_SIZE, OS_WRITE); + SRAM_WRITE(OS_K1_TO_PHYSICAL(0xA8000000) + offset, &gSaveContext, SLOT_SIZE); MemCpy(&fileSelect->n64ddFlags[fileSelect->selectedFileIndex], sramCtx->readBuff + offset + N64DD, sizeof(fileSelect->n64ddFlags[0])); offset = gSramSlotOffsets[fileSelect->selectedFileIndex + 3]; MemCpy(sramCtx->readBuff + offset, &gSaveContext, sizeof(Save)); - SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000) + offset, &gSaveContext, SLOT_SIZE, OS_WRITE); + SRAM_WRITE(OS_K1_TO_PHYSICAL(0xA8000000) + offset, &gSaveContext, SLOT_SIZE); PRINTF(T("CLEAR終了\n", "CLEAR END\n")); } void Sram_CopySave(FileSelectState* fileSelect, SramContext* sramCtx) { - s32 offset; + u16 offset; PRINTF("READ=%d(%x) COPY=%d(%x)\n", fileSelect->selectedFileIndex, gSramSlotOffsets[fileSelect->selectedFileIndex], fileSelect->copyDestFileIndex, @@ -913,7 +973,7 @@ void Sram_CopySave(FileSelectState* fileSelect, SramContext* sramCtx) { offset = gSramSlotOffsets[fileSelect->copyDestFileIndex + 3]; MemCpy(sramCtx->readBuff + offset, &gSaveContext, sizeof(Save)); - SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE, OS_WRITE); + SRAM_WRITE(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE); offset = gSramSlotOffsets[fileSelect->copyDestFileIndex]; @@ -943,23 +1003,23 @@ void Sram_CopySave(FileSelectState* fileSelect, SramContext* sramCtx) { * Write the first 16 bytes of the read buffer to the SRAM header */ void Sram_WriteSramHeader(SramContext* sramCtx) { - SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_HEADER_SIZE, OS_WRITE); + SRAM_WRITE(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_HEADER_SIZE); } void Sram_InitSram(GameState* gameState, SramContext* sramCtx) { u16 i; PRINTF("sram_initialize( Game *game, Sram *sram )\n"); - SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE, OS_READ); + SRAM_READ(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE); - for (i = 0; i < ARRAY_COUNTU(sZeldaMagic) - 3; i++) { - if (sZeldaMagic[i + SRAM_HEADER_MAGIC] != sramCtx->readBuff[i + SRAM_HEADER_MAGIC]) { + for (i = 0; i < ARRAY_COUNTU(sSramDefaultHeader) - SRAM_HEADER_MAGIC; i++) { + if (sSramDefaultHeader[i + SRAM_HEADER_MAGIC] != sramCtx->readBuff[i + SRAM_HEADER_MAGIC]) { PRINTF(T("SRAM破壊!!!!!!\n", "SRAM destruction!!!!!!\n")); #if PLATFORM_GC && OOT_PAL gSaveContext.language = sramCtx->readBuff[SRAM_HEADER_LANGUAGE]; #endif - MemCpy(sramCtx->readBuff, sZeldaMagic, sizeof(sZeldaMagic)); + MemCpy(sramCtx->readBuff, sSramDefaultHeader, sizeof(sSramDefaultHeader)); #if PLATFORM_GC && OOT_PAL sramCtx->readBuff[SRAM_HEADER_LANGUAGE] = gSaveContext.language; @@ -968,8 +1028,8 @@ void Sram_InitSram(GameState* gameState, SramContext* sramCtx) { } } - gSaveContext.audioSetting = sramCtx->readBuff[SRAM_HEADER_SOUND] & 3; - gSaveContext.zTargetSetting = sramCtx->readBuff[SRAM_HEADER_ZTARGET] & 1; + gSaveContext.soundSetting = sramCtx->readBuff[SRAM_HEADER_SOUND] & 3; + gSaveContext.zTargetSetting = sramCtx->readBuff[SRAM_HEADER_Z_TARGET] & 1; #if OOT_PAL gSaveContext.language = sramCtx->readBuff[SRAM_HEADER_LANGUAGE]; @@ -986,7 +1046,7 @@ void Sram_InitSram(GameState* gameState, SramContext* sramCtx) { for (i = 0; i < CHECKSUM_SIZE; i++) { sramCtx->readBuff[i] = i; } - SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE, OS_WRITE); + SRAM_WRITE(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE); PRINTF(T("SRAM破壊!!!!!!\n", "SRAM destruction!!!!!!\n")); } #endif @@ -994,11 +1054,11 @@ void Sram_InitSram(GameState* gameState, SramContext* sramCtx) { PRINTF(T("GOOD!GOOD! サイズ=%d + %d = %d\n", "GOOD! GOOD! Size = %d + %d = %d\n"), sizeof(SaveInfo), 4, sizeof(SaveInfo) + 4); PRINTF_COLOR_BLUE(); - PRINTF("Na_SetSoundOutputMode = %d\n", gSaveContext.audioSetting); - PRINTF("Na_SetSoundOutputMode = %d\n", gSaveContext.audioSetting); - PRINTF("Na_SetSoundOutputMode = %d\n", gSaveContext.audioSetting); + PRINTF("Na_SetSoundOutputMode = %d\n", gSaveContext.soundSetting); + PRINTF("Na_SetSoundOutputMode = %d\n", gSaveContext.soundSetting); + PRINTF("Na_SetSoundOutputMode = %d\n", gSaveContext.soundSetting); PRINTF_RST(); - func_800F6700(gSaveContext.audioSetting); + Audio_SetSoundMode(gSaveContext.soundSetting); } void Sram_Alloc(GameState* gameState, SramContext* sramCtx) { @@ -1006,5 +1066,5 @@ void Sram_Alloc(GameState* gameState, SramContext* sramCtx) { ASSERT(sramCtx->readBuff != NULL, "sram->read_buff != NULL", "../z_sram.c", 1295); } -void Sram_Init(PlayState* play, SramContext* sramCtx) { +void Sram_Init(GameState* gameState, SramContext* sramCtx) { } diff --git a/src/code/z_ss_sram.c b/src/code/z_ss_sram.c index dd26d695cb..330f5ca4ac 100644 --- a/src/code/z_ss_sram.c +++ b/src/code/z_ss_sram.c @@ -1,4 +1,7 @@ #include "ultra64.h" +#include "z64ss_sram.h" + +#include "macros.h" #include "global.h" typedef struct SsSramContext { diff --git a/src/code/z_view.c b/src/code/z_view.c index 5b68f00bf4..dd4608cde3 100644 --- a/src/code/z_view.c +++ b/src/code/z_view.c @@ -1,5 +1,12 @@ -#include "global.h" +#include "libc64/malloc.h" +#include "libu64/debug.h" +#include "gfx.h" +#include "letterbox.h" +#include "main.h" +#include "regs.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z64view.h" vu32 sLogOnNextViewInit = true; diff --git a/src/code/z_vimode.c b/src/code/z_vimode.c index 0d2f5716fa..d1f472057e 100644 --- a/src/code/z_vimode.c +++ b/src/code/z_vimode.c @@ -1,7 +1,15 @@ -#include "global.h" +#include "vi_mode.h" + +#include "libu64/debug.h" #include "ultra64/viint.h" +#include "controller.h" +#include "main.h" +#include "regs.h" #include "versions.h" +#include "global.h" +#include "macros.h" + void ViMode_LogPrint(OSViMode* osViMode) { LOG_ADDRESS("osvimodep", osViMode, "../z_vimode.c", 87); LOG_HEX32("osvimodep->comRegs.ctrl", osViMode->comRegs.ctrl, "../z_vimode.c", 88); diff --git a/src/code/z_viscvg.c b/src/code/z_viscvg.c index 9caf39a3f8..5fff1a460f 100644 --- a/src/code/z_viscvg.c +++ b/src/code/z_viscvg.c @@ -20,7 +20,10 @@ * before the filter is applied. */ -#include "global.h" +#include "gfx.h" +#include "z64vis.h" + +#include "macros.h" /** * Draws only coverage: does not retain any of the original pixel RGB, primColor is used as background color. diff --git a/src/code/z_vismono.c b/src/code/z_vismono.c index aac4fa84f9..e3cecda5c1 100644 --- a/src/code/z_vismono.c +++ b/src/code/z_vismono.c @@ -8,7 +8,14 @@ * comments. */ -#include "global.h" +#include "libc64/malloc.h" +#include "libu64/debug.h" +#include "attributes.h" +#include "gfx.h" +#include "gfxalloc.h" +#include "z64vis.h" + +#include "macros.h" // Height of the fragments the color frame buffer (CFB) is split into. // It is the maximum amount of lines such that all rgba16 SCREEN_WIDTH-long lines fit into diff --git a/src/code/z_viszbuf.c b/src/code/z_viszbuf.c index 5a542bc124..8f8265bfda 100644 --- a/src/code/z_viszbuf.c +++ b/src/code/z_viszbuf.c @@ -32,7 +32,10 @@ * again ignored by the RenderMode. */ -#include "global.h" +#include "gfx.h" +#include "z64vis.h" + +#include "macros.h" // Height of the fragments the z-buffer is split into. // It is the maximum amount of lines such that all rgba16 SCREEN_WIDTH-long lines fit into TMEM. diff --git a/src/code/z_vr_box.c b/src/code/z_vr_box.c index 2e7953362b..cd8c1b2b8f 100644 --- a/src/code/z_vr_box.c +++ b/src/code/z_vr_box.c @@ -1,6 +1,7 @@ #include "global.h" #include "terminal.h" #include "z64environment.h" +#include "z64save.h" typedef struct SkyboxFaceParams { /* 0x000 */ s32 xStart; diff --git a/src/code/z_vr_box_draw.c b/src/code/z_vr_box_draw.c index 45e3237deb..aa7fa1dae0 100644 --- a/src/code/z_vr_box_draw.c +++ b/src/code/z_vr_box_draw.c @@ -1,4 +1,7 @@ -#include "global.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sys_matrix.h" +#include "z64skybox.h" Mtx* sSkyboxDrawMatrix; diff --git a/src/elf_message/elf_message_field.c b/src/elf_message/elf_message_field.c index 505649afda..8c672ad50b 100644 --- a/src/elf_message/elf_message_field.c +++ b/src/elf_message/elf_message_field.c @@ -1,5 +1,5 @@ -#include "global.h" #include "z64quest_hint_commands.h" +#include "z64save.h" QuestHintCmd gOverworldNaviQuestHints[] = { QUEST_HINT_FLAG(CHECK, EVENTCHKINF_05, false, 0x40), diff --git a/src/elf_message/elf_message_ydan.c b/src/elf_message/elf_message_ydan.c index 21b5fe89fa..cde6410b22 100644 --- a/src/elf_message/elf_message_ydan.c +++ b/src/elf_message/elf_message_ydan.c @@ -1,4 +1,3 @@ -#include "global.h" #include "z64quest_hint_commands.h" QuestHintCmd gDungeonNaviQuestHints[] = { diff --git a/src/libc64/math64.c b/src/libc64/math64.c index 85fb4cedf3..f2a6edba9a 100644 --- a/src/libc64/math64.c +++ b/src/libc64/math64.c @@ -1,3 +1,4 @@ +#include "libc64/math64.h" #include "z64math.h" #include "macros.h" diff --git a/src/libgcc/longlong.h b/src/libgcc/longlong.h index 403a7f6fa9..fb6ebb15e5 100644 --- a/src/libgcc/longlong.h +++ b/src/libgcc/longlong.h @@ -87,6 +87,7 @@ #define umul_ppmm(w1, w0, u, v) \ __asm__("multu %2,%3" : "=l"((USItype)(w0)), "=h"((USItype)(w1)) : "d"((USItype)(u)), "d"((USItype)(v))) #else +/* Non-matching version for modern GCC */ #define umul_ppmm(w1, w0, u, v) \ __asm__("multu %2,%3\n\t" \ "mflo %0\n\t" \ diff --git a/src/libleo/api/cacreateleomanager.c b/src/libleo/api/cacreateleomanager.c index fc3235c08c..aa9c0feda7 100644 --- a/src/libleo/api/cacreateleomanager.c +++ b/src/libleo/api/cacreateleomanager.c @@ -1,9 +1,11 @@ -#include "global.h" #include "ultra64/asm.h" #include "ultra64/leo.h" #include "ultra64/leoappli.h" #include "ultra64/leodrive.h" #include "libc/stdint.h" +#include "attributes.h" + +#include "global.h" s32 LeoCACreateLeoManager(s32 comPri, s32 intPri, OSMesg* cmdBuf, s32 cmdMsgCnt) { OSPiHandle* driveRomHandle; diff --git a/src/libleo/api/cjcreateleomanager.c b/src/libleo/api/cjcreateleomanager.c index 26ced4f7db..4cd6ab0018 100644 --- a/src/libleo/api/cjcreateleomanager.c +++ b/src/libleo/api/cjcreateleomanager.c @@ -1,9 +1,11 @@ -#include "global.h" #include "ultra64/asm.h" #include "ultra64/leo.h" #include "ultra64/leoappli.h" #include "ultra64/leodrive.h" #include "libc/stdint.h" +#include "attributes.h" + +#include "global.h" s32 LeoCJCreateLeoManager(s32 comPri, s32 intPri, OSMesg* cmdBuf, s32 cmdMsgCnt) { OSPiHandle* driveRomHandle; diff --git a/src/libleo/leo/leocmdex.c b/src/libleo/leo/leocmdex.c index ca3101fb0a..7a678dc675 100644 --- a/src/libleo/leo/leocmdex.c +++ b/src/libleo/leo/leocmdex.c @@ -1,7 +1,9 @@ -#include "global.h" #include "ultra64/leo.h" #include "ultra64/leoappli.h" #include "ultra64/leodrive.h" +#include "attributes.h" + +#include "global.h" extern vu16 LEOrw_flags; diff --git a/src/libleo/leo/leomecha.c b/src/libleo/leo/leomecha.c index da141616c8..98de987f71 100644 --- a/src/libleo/leo/leomecha.c +++ b/src/libleo/leo/leomecha.c @@ -1,7 +1,9 @@ -#include "global.h" #include "ultra64/leo.h" #include "ultra64/leoappli.h" #include "ultra64/leodrive.h" +#include "attributes.h" + +#include "global.h" extern s32 currentCommand; diff --git a/src/libleo/leo/leotimer.c b/src/libleo/leo/leotimer.c index aadfc3b828..c2c5d98b54 100644 --- a/src/libleo/leo/leotimer.c +++ b/src/libleo/leo/leotimer.c @@ -1,7 +1,9 @@ -#include "global.h" #include "ultra64/leo.h" #include "ultra64/leoappli.h" #include "ultra64/leodrive.h" +#include "attributes.h" + +#include "global.h" typedef struct { /* 0x0 */ u8 year; diff --git a/src/libu64/gfxprint.c b/src/libu64/gfxprint.c index b3ebfcd0ef..7a1c37e08c 100644 --- a/src/libu64/gfxprint.c +++ b/src/libu64/gfxprint.c @@ -1,4 +1,8 @@ -#include "global.h" +#include "libc64/aprintf.h" +#include "libu64/gfxprint.h" +#include "attributes.h" + +#include "macros.h" u16 sGfxPrintFontTLUT[64] = { 0x0000, 0xFFFF, 0x0000, 0xFFFF, 0x0000, 0xFFFF, 0x0000, 0xFFFF, 0x0000, 0xFFFF, 0x0000, 0xFFFF, 0x0000, diff --git a/src/libu64/load_gc.c b/src/libu64/load_gc.c index 39662cbcef..6211d119b2 100644 --- a/src/libu64/load_gc.c +++ b/src/libu64/load_gc.c @@ -1,4 +1,8 @@ -#include "global.h" +#include "libu64/overlay.h" +#include "ultra64.h" +#include "z64dma.h" + +#include "macros.h" size_t Overlay_Load(uintptr_t vromStart, uintptr_t vromEnd, void* vramStart, void* vramEnd, void* allocatedRamAddr) { s32 pad[3]; diff --git a/src/libu64/loadfragment2_gc.c b/src/libu64/loadfragment2_gc.c index 6befb8c9b9..191b2ee076 100644 --- a/src/libu64/loadfragment2_gc.c +++ b/src/libu64/loadfragment2_gc.c @@ -1,4 +1,7 @@ -#include "global.h" +#include "libc64/malloc.h" +#include "libu64/overlay.h" + +#include "macros.h" void* Overlay_AllocateAndLoad(uintptr_t vromStart, uintptr_t vromEnd, void* vramStart, void* vramEnd) { void* allocatedRamAddr = SYSTEM_ARENA_MALLOC_R((intptr_t)vramEnd - (intptr_t)vramStart, "../loadfragment2.c", 31); diff --git a/src/libu64/loadfragment2_n64.c b/src/libu64/loadfragment2_n64.c index 6a06b1ba09..015e1d1d6b 100644 --- a/src/libu64/loadfragment2_n64.c +++ b/src/libu64/loadfragment2_n64.c @@ -6,7 +6,11 @@ * * @see Overlay_Relocate */ -#include "global.h" +#include "libc64/malloc.h" +#include "libu64/overlay.h" +#include "z64dma.h" + +#include "macros.h" s32 gOverlayLogSeverity = 2; diff --git a/src/libu64/logseverity_gc.c b/src/libu64/logseverity_gc.c index 940aa87cc8..50c2eb4ab8 100644 --- a/src/libu64/logseverity_gc.c +++ b/src/libu64/logseverity_gc.c @@ -1,3 +1,3 @@ -#include "global.h" +#include "libu64/overlay.h" s32 gOverlayLogSeverity = 2; diff --git a/src/libu64/mtxuty-cvt.c b/src/libu64/mtxuty-cvt.c index 10f88f7827..759c686d95 100644 --- a/src/libu64/mtxuty-cvt.c +++ b/src/libu64/mtxuty-cvt.c @@ -1,4 +1,6 @@ -#include "global.h" +#include "ultra64.h" +#include "libu64/debug.h" +#include "libu64/mtxuty-cvt.h" void MtxConv_F2L(Mtx* m1, MtxF* m2) { s32 i; diff --git a/src/libu64/pad.c b/src/libu64/pad.c index 7a0407ef96..551cd495b9 100644 --- a/src/libu64/pad.c +++ b/src/libu64/pad.c @@ -1,4 +1,5 @@ -#include "global.h" +#include "ultra64.h" +#include "libu64/pad.h" void PadUtils_Init(Input* input) { bzero(input, sizeof(Input)); diff --git a/src/libu64/padsetup.c b/src/libu64/padsetup.c index 20a546ae3f..fde25418f6 100644 --- a/src/libu64/padsetup.c +++ b/src/libu64/padsetup.c @@ -1,4 +1,5 @@ -#include "global.h" +#include "ultra64.h" +#include "libu64/padsetup.h" s32 PadSetup_Init(OSMesgQueue* mq, u8* outMask, OSContStatus* status) { s32 ret; diff --git a/src/libu64/relocation_gc.c b/src/libu64/relocation_gc.c index 1d2f3193da..9307d67cc6 100644 --- a/src/libu64/relocation_gc.c +++ b/src/libu64/relocation_gc.c @@ -6,7 +6,11 @@ * * @see Overlay_Relocate */ -#include "global.h" +#include "libu64/overlay.h" +#include "attributes.h" +#include "ultra64.h" + +#include "macros.h" // Extract MIPS register rs from an instruction word #define MIPS_REG_RS(insn) (((insn) >> 0x15) & 0x1F) diff --git a/src/libu64/stackcheck.c b/src/libu64/stackcheck.c index 787eb1c3e5..f98e828eae 100644 --- a/src/libu64/stackcheck.c +++ b/src/libu64/stackcheck.c @@ -1,6 +1,10 @@ -#include "global.h" +#include "libu64/debug.h" +#include "attributes.h" +#include "stackcheck.h" #include "terminal.h" +#include "macros.h" + StackEntry* sStackInfoListStart = NULL; StackEntry* sStackInfoListEnd = NULL; diff --git a/src/libu64/system_heap.c b/src/libu64/system_heap.c index 1ae93e868c..3a98ef3cef 100644 --- a/src/libu64/system_heap.c +++ b/src/libu64/system_heap.c @@ -1,4 +1,4 @@ -#include "global.h" +#include "libc64/malloc.h" #include "libc64/os_malloc.h" typedef void (*arg3_800FC868)(void*); diff --git a/src/libultra/audio/auxbus.c b/src/libultra/audio/auxbus.c index 8b13789179..d6e827d217 100644 --- a/src/libultra/audio/auxbus.c +++ b/src/libultra/audio/auxbus.c @@ -1 +1,33 @@ +#include "libaudio.h" +#include "synthInternals.h" +Acmd* alAuxBusPull(void* filter, s16* outp, s32 outCount, s32 sampleOffset, Acmd* p) { + Acmd* ptr = p; + ALAuxBus* m = (ALAuxBus*)filter; + ALFilter** sources = m->sources; + s32 i; + + // clear the output buffers here + aClearBuffer(ptr++, AL_AUX_L_OUT, outCount << 1); + aClearBuffer(ptr++, AL_AUX_R_OUT, outCount << 1); + + for (i = 0; i < m->sourceCount; i++) { + ptr = sources[i]->handler(sources[i], outp, outCount, sampleOffset, ptr); + } + return ptr; +} + +s32 alAuxBusParam(void* filter, s32 paramID, void* param) { + ALAuxBus* m = (ALAuxBus*)filter; + ALFilter** sources = m->sources; + + switch (paramID) { + case AL_FILTER_ADD_SOURCE: + sources[m->sourceCount++] = (ALFilter*)param; + break; + + default: + break; + } + return 0; +} diff --git a/src/libultra/audio/copy.c b/src/libultra/audio/copy.c index 8b13789179..1da435cc9e 100644 --- a/src/libultra/audio/copy.c +++ b/src/libultra/audio/copy.c @@ -1 +1,11 @@ +#include "libaudio.h" +void alCopy(void* src, void* dest, s32 len) { + s32 i; + u8* s = (u8*)src; + u8* d = (u8*)dest; + + for (i = 0; i < len; i++) { + *d++ = *s++; + } +} diff --git a/src/libultra/audio/drvrnew.c b/src/libultra/audio/drvrnew.c index 8b13789179..6b10e66b72 100644 --- a/src/libultra/audio/drvrnew.c +++ b/src/libultra/audio/drvrnew.c @@ -1 +1,264 @@ +#include "libaudio.h" +#include "synthInternals.h" +// WARNING: THE FOLLOWING CONSTANT MUST BE KEPT IN SYNC WITH SCALING IN MICROCODE!!! +#define SCALE 16384 + +// the following arrays contain default parameters for a few hopefully useful effects. +#define ms *(((s32)(44.1f)) & ~7) + +// clang-format off +static s32 SMALLROOM_PARAMS[2 + 3 * 8] = { + /* sections */ 3, + /* length */ 100 ms, + /* input output fbcoef ffcoef gain rate depth coef */ + 0, 54 ms, 9830, -9830, 0, 0, 0, 0, + 19 ms, 38 ms, 3276, -3276, 0x3FFF, 0, 0, 0, + 0, 60 ms, 5000, 0, 0, 0, 0, 0x5000 +}; + +static s32 BIGROOM_PARAMS[2 + 4 * 8] = { + /* sections */ 4, + /* length */ 100 ms, + /* input output fbcoef ffcoef gain rate depth coef */ + 0, 66 ms, 9830, -9830, 0, 0, 0, 0, + 22 ms, 54 ms, 3276, -3276, 0x3FFF, 0, 0, 0, + 66 ms, 91 ms, 3276, -3276, 0x3FFF, 0, 0, 0, + 0, 94 ms, 8000, 0, 0, 0, 0, 0x5000, +}; + +static s32 ECHO_PARAMS[2 + 1 * 8] = { + /* sections */ 1, + /* length */ 200 ms, + /* input output fbcoef ffcoef gain rate depth coef */ + 0, 179 ms, 12000, 0, 0x7FFF, 0, 0, 0, +}; + +static s32 CHORUS_PARAMS[2 + 1 * 8] = { + /* sections */ 1, + /* length */ 20 ms, + /* input output fbcoef ffcoef gain rate depth coef */ + 0, 5 ms, 0x4000, 0, 0x7FFF, 7600, 700, 0, +}; + +static s32 FLANGE_PARAMS[2 + 1 * 8] = { + /* sections */ 1, + /* length */ 20 ms, + /* input output fbcoef ffcoef gain rate depth coef */ + 0, 5 ms, 0, 0x5FFF, 0x7FFF, 380, 500, 0, +}; + +static s32 NULL_PARAMS[2 + 1 * 8] = { + /* sections */ 0, + /* length */ 0, + /* input output fbcoef ffcoef gain rate depth coef */ + 0, 0, 0, 0, 0, 0, 0, 0, +}; +// clang-format on + +void _init_lpfilter(ALLowPass* lp) { + s32 i; + s32 temp; + s16 fc; + f64 ffc; + f64 fcoef; + + temp = lp->fc * SCALE; + fc = temp >> 15; + lp->fgain = SCALE - fc; + + lp->first = true; + for (i = 0; i < 8; i++) { + lp->fcvec.fccoef[i] = 0; + } + + lp->fcvec.fccoef[i++] = fc; + fcoef = ffc = (f64)fc / SCALE; + + for (; i < 16; i++) { + fcoef *= ffc; + lp->fcvec.fccoef[i] = (s16)(s32)(fcoef * SCALE); + } +} + +void alFxNew(ALFx* r, ALSynConfig* c, ALHeap* hp) { + u16 i; + u16 j; + u16 k; + s32* param = NULL; + ALFilter* f = &r->filter; + ALDelay* d; + + alFilterNew(f, NULL, alFxParam, AL_FX); + f->handler = alFxPull; + r->paramHdl = (ALSetFXParam)alFxParamHdl; + + switch (c->fxType) { + case AL_FX_SMALLROOM: + param = SMALLROOM_PARAMS; + break; + + case AL_FX_BIGROOM: + param = BIGROOM_PARAMS; + break; + + case AL_FX_ECHO: + param = ECHO_PARAMS; + break; + + case AL_FX_CHORUS: + param = CHORUS_PARAMS; + break; + + case AL_FX_FLANGE: + param = FLANGE_PARAMS; + break; + + case AL_FX_CUSTOM: + param = c->params; + break; + + default: + param = NULL_PARAMS; + break; + } + + j = 0; + + r->section_count = param[j++]; + r->length = param[j++]; + + r->delay = alHeapAlloc(hp, r->section_count, sizeof(ALDelay)); + r->base = alHeapAlloc(hp, r->length, sizeof(s16)); + r->input = r->base; + + for (k = 0; k < r->length; k++) { + r->base[k] = 0; + } + + for (i = 0; i < r->section_count; i++) { + d = &r->delay[i]; + d->input = param[j++]; + d->output = param[j++]; + d->fbcoef = param[j++]; + d->ffcoef = param[j++]; + d->gain = param[j++]; + + if (param[j] != 0) { +#define RANGE 2.0 + d->rsinc = ((((f32)param[j++]) / 1000.0f) * RANGE) / c->outputRate; + + // the following constant is derived from: + // + // ratio = 2^(cents/1200) + // + // and therefore for hundredths of a cent + // x + // ln(ratio) = --------------- + // (120,000)/ln(2) + // where + // 120,000/ln(2) = 173123.40... +#define CONVERT 173123.404906676 + d->rsgain = (((f32)param[j++]) / CONVERT) * (d->output - d->input); + d->rsval = 1.0f; + d->rsdelta = 0.0f; + d->rs = alHeapAlloc(hp, 1, sizeof(ALResampler)); + d->rs->state = alHeapAlloc(hp, 1, sizeof(RESAMPLE_STATE)); + d->rs->delta = 0.0f; + d->rs->first = true; + } else { + d->rs = NULL; + j++; + j++; + } + + if (param[j] != 0) { + d->lp = alHeapAlloc(hp, 1, sizeof(ALLowPass)); + d->lp->fstate = alHeapAlloc(hp, 1, sizeof(POLEF_STATE)); + d->lp->fc = param[j++]; + _init_lpfilter(d->lp); + } else { + d->lp = NULL; + j++; + } + } +} + +void alEnvmixerNew(ALEnvMixer* e, ALHeap* hp) { + alFilterNew(&e->filter, alEnvmixerPull, alEnvmixerParam, AL_ENVMIX); + e->state = alHeapAlloc(hp, 1, sizeof(ENVMIX_STATE)); + e->first = true; + e->motion = AL_STOPPED; + e->volume = 1; + e->ltgt = 1; + e->rtgt = 1; + e->cvolL = 1; + e->cvolR = 1; + e->dryamt = 0; + e->wetamt = 0; + e->lratm = 1; + e->lratl = 0; + e->lratm = 1; + e->lratl = 0; + e->delta = 0; + e->segEnd = 0; + e->pan = 0; + e->ctrlList = NULL; + e->ctrlTail = NULL; + e->sources = NULL; +} + +void alLoadNew(ALLoadFilter* f, ALDMANew dmaNew, ALHeap* hp) { + s32 i; + + // init filter superclass + alFilterNew(&f->filter, alAdpcmPull, alLoadParam, AL_ADPCM); + + f->state = alHeapAlloc(hp, 1, sizeof(ADPCM_STATE)); + f->lstate = alHeapAlloc(hp, 1, sizeof(ADPCM_STATE)); + + f->dma = dmaNew(&f->dmaState); + + // init the adpcm state + f->lastsam = 0; + f->first = true; + f->memin = 0; +} + +void alResampleNew(ALResampler* r, ALHeap* hp) { + alFilterNew(&r->filter, alResamplePull, alResampleParam, AL_RESAMPLE); + + // Init resampler state + r->state = alHeapAlloc(hp, 1, sizeof(RESAMPLE_STATE)); + r->delta = 0.0f; + r->first = true; + r->motion = AL_STOPPED; + r->ratio = 1.0f; + r->upitch = 0; + r->ctrlList = NULL; + r->ctrlTail = NULL; + // state in the ucode is initialized by the A_INIT flag +} + +void alAuxBusNew(ALAuxBus* m, void* sources, s32 maxSources) { + alFilterNew(&m->filter, alAuxBusPull, alAuxBusParam, AL_AUXBUS); + m->sourceCount = 0; + m->maxSources = maxSources; + m->sources = (ALFilter**)sources; +} + +void alMainBusNew(ALMainBus* m, void* sources, s32 maxSources) { + alFilterNew(&m->filter, alMainBusPull, alMainBusParam, AL_MAINBUS); + m->sourceCount = 0; + m->maxSources = maxSources; + m->sources = (ALFilter**)sources; +} + +void alSaveNew(ALSave* f) { + // init filter superclass + alFilterNew(&f->filter, alSavePull, alSaveParam, AL_SAVE); + + // init the save state, which is a virtual dram address + f->dramout = 0; + f->first = true; +} diff --git a/src/libultra/audio/env.c b/src/libultra/audio/env.c index 8b13789179..2d0027ba7d 100644 --- a/src/libultra/audio/env.c +++ b/src/libultra/audio/env.c @@ -1 +1,420 @@ +#include "libaudio.h" +#include "synthInternals.h" +#include "libc/math.h" +#include "ultra64/convert.h" +#define EQPOWER_LENGTH 128 +static s16 eqpower[EQPOWER_LENGTH] = { + 32767, 32764, 32757, 32744, 32727, 32704, 32677, 32644, 32607, 32564, 32517, 32464, 32407, 32344, 32277, 32205, + 32127, 32045, 31958, 31866, 31770, 31668, 31561, 31450, 31334, 31213, 31087, 30957, 30822, 30682, 30537, 30388, + 30234, 30075, 29912, 29744, 29572, 29395, 29214, 29028, 28838, 28643, 28444, 28241, 28033, 27821, 27605, 27385, + 27160, 26931, 26698, 26461, 26220, 25975, 25726, 25473, 25216, 24956, 24691, 24423, 24151, 23875, 23596, 23313, + 23026, 22736, 22442, 22145, 21845, 21541, 21234, 20924, 20610, 20294, 19974, 19651, 19325, 18997, 18665, 18331, + 17993, 17653, 17310, 16965, 16617, 16266, 15913, 15558, 15200, 14840, 14477, 14113, 13746, 13377, 13006, 12633, + 12258, 11881, 11503, 11122, 10740, 10357, 9971, 9584, 9196, 8806, 8415, 8023, 7630, 7235, 6839, 6442, + 6044, 5646, 5246, 4845, 4444, 4042, 3640, 3237, 2833, 2429, 2025, 1620, 1216, 810, 405, 0 +}; + +static Acmd* _pullSubFrame(void* filter, s16* inp, s16* outp, s32 outCount, s32 sampleOffset, Acmd* p); +static s16 _getRate(f64 vol, f64 tgt, s32 count, u16* ratel); +static f32 _getVol(f32 ivol, s32 samples, s16 ratem, u16 ratel); + +Acmd* alEnvmixerPull(void* filter, s16* outp, s32 outCount, s32 sampleOffset, Acmd* p) { + Acmd* ptr = p; + ALEnvMixer* e = (ALEnvMixer*)filter; + s16 inp; + s32 lastOffset; + s32 thisOffset = sampleOffset; + s32 samples; + s16 loutp = 0; + s32 fVol; + ALParam* thisParam; + + // Force the input to be the resampler output + inp = AL_RESAMPLER_OUT; + + while (e->ctrlList != NULL) { + lastOffset = thisOffset; + thisOffset = e->ctrlList->delta; + samples = thisOffset - lastOffset; + if (samples > outCount) { + break; + } + + switch (e->ctrlList->type) { + case AL_FILTER_START_VOICE_ALT: { + ALStartParamAlt* param = (ALStartParamAlt*)e->ctrlList; + ALFilter* f = &e->filter; + s32 tmp; + + if (param->unity != 0) { + (*e->filter.setParam)(&e->filter, AL_FILTER_SET_UNITY_PITCH, 0); + } + + (*e->filter.setParam)(&e->filter, AL_FILTER_SET_WAVETABLE, param->wave); + (*e->filter.setParam)(&e->filter, AL_FILTER_START, 0); + + e->first = true; + + e->delta = 0; + e->segEnd = param->samples; + + tmp = ((s32)param->volume * (s32)param->volume) >> 15; + e->volume = (s16)tmp; + e->pan = param->pan; + e->dryamt = eqpower[param->fxMix]; + e->wetamt = eqpower[EQPOWER_LENGTH - param->fxMix - 1]; + + if (param->samples != 0) { + e->cvolL = 1; + e->cvolR = 1; + } else { + // Attack time is zero. Simply set the volume. We don't want an attack segment. + e->cvolL = (e->volume * eqpower[e->pan]) >> 15; + e->cvolR = (e->volume * eqpower[EQPOWER_LENGTH - e->pan - 1]) >> 15; + } + + if (f->source != NULL) { + union { + f32 f; + s32 i; + } data; + data.f = param->pitch; + (*f->source->setParam)(f->source, AL_FILTER_SET_PITCH, (void*)data.i); + } + } break; + + case AL_FILTER_SET_FXAMT: + case AL_FILTER_SET_PAN: + case AL_FILTER_SET_VOLUME: + ptr = _pullSubFrame(e, &inp, &loutp, samples, sampleOffset, ptr); + + if (e->delta >= e->segEnd) { + // We should have reached our target, calculate target in case e->segEnd was 0 + e->ltgt = (e->volume * eqpower[e->pan]) >> 15; + e->rtgt = (e->volume * eqpower[EQPOWER_LENGTH - e->pan - 1]) >> 15; + e->delta = e->segEnd; // To prevent overflow + e->cvolL = e->ltgt; + e->cvolR = e->rtgt; + } else { + // Estimate the current volume + e->cvolL = _getVol(e->cvolL, e->delta, e->lratm, e->lratl); + e->cvolR = _getVol(e->cvolR, e->delta, e->rratm, e->rratl); + } + + // We can't have volume of zero, because the envelope would never go anywhere from there + if (e->cvolL == 0) { + e->cvolL = 1; + } + if (e->cvolR == 0) { + e->cvolR = 1; + } + + if (e->ctrlList->type == AL_FILTER_SET_PAN) { + // This should result in a change to the current segment rate and target + e->pan = (s16)e->ctrlList->data.i; + } + + if (e->ctrlList->type == AL_FILTER_SET_VOLUME) { + // Switching to a new segment + e->delta = 0; + + // Map volume non-linearly to give something close to loudness + fVol = (e->ctrlList->data.i); + fVol = (fVol * fVol) >> 15; + e->volume = (s16)fVol; + e->segEnd = e->ctrlList->moredata.i; + } + + if (e->ctrlList->type == AL_FILTER_SET_FXAMT) { + e->dryamt = eqpower[e->ctrlList->data.i]; + e->wetamt = eqpower[EQPOWER_LENGTH - e->ctrlList->data.i - 1]; + } + + // Force a volume update + e->first = true; + break; + + case AL_FILTER_START_VOICE: { + ALStartParam* p = (ALStartParam*)e->ctrlList; + + // Changing to PLAYING (since the previous state was persumable STOPPED, we'll just bump the output + // pointer rather than pull a subframe of zeros). + if (p->unity != 0) { + (*e->filter.setParam)(&e->filter, AL_FILTER_SET_UNITY_PITCH, 0); + } + + (*e->filter.setParam)(&e->filter, AL_FILTER_SET_WAVETABLE, p->wave); + (*e->filter.setParam)(&e->filter, AL_FILTER_START, 0); + } break; + + case AL_FILTER_STOP_VOICE: { + // Changing to STOPPED and reset the filter + ptr = _pullSubFrame(e, &inp, &loutp, samples, sampleOffset, ptr); + (*e->filter.setParam)(&e->filter, AL_FILTER_RESET, 0); + } break; + + case AL_FILTER_FREE_VOICE: { + ALSynth* drvr = &alGlobals->drvr; + ALFreeParam* param = (ALFreeParam*)e->ctrlList; + param->pvoice->offset = 0; + _freePVoice(drvr, param->pvoice); + } break; + + default: + // Pull the reuired number of samples and then pass the message on down the chain + ptr = _pullSubFrame(e, &inp, &loutp, samples, sampleOffset, ptr); + (*e->filter.setParam)(&e->filter, e->ctrlList->type, (void*)e->ctrlList->data.i); + break; + } + loutp += samples << 1; + outCount -= samples; + + // put the param record back on the free list + thisParam = e->ctrlList; + e->ctrlList = e->ctrlList->next; + if (e->ctrlList == NULL) { + e->ctrlTail = NULL; + } + + __freeParam(thisParam); + } + + ptr = _pullSubFrame(e, &inp, &loutp, outCount, sampleOffset, ptr); + + // Prevent overflow in e->delta + if (e->delta > e->segEnd) { + e->delta = e->segEnd; + } + + return ptr; +} + +s32 alEnvmixerParam(void* filter, s32 paramID, void* param) { + ALFilter* f = (ALFilter*)filter; + ALEnvMixer* e = (ALEnvMixer*)filter; + + switch (paramID) { + case AL_FILTER_ADD_UPDATE: + if (e->ctrlTail != NULL) { + e->ctrlTail->next = (ALParam*)param; + } else { + e->ctrlList = (ALParam*)param; + } + e->ctrlTail = (ALParam*)param; + break; + + case AL_FILTER_RESET: + e->first = true; + e->motion = AL_STOPPED; + e->volume = 1; + if (f->source != NULL) { + (*f->source->setParam)(f->source, AL_FILTER_RESET, param); + } + break; + + case AL_FILTER_START: + e->motion = AL_PLAYING; + if (f->source != NULL) { + (*f->source->setParam)(f->source, AL_FILTER_START, param); + } + break; + + case AL_FILTER_SET_SOURCE: + f->source = (ALFilter*)param; + break; + + default: + if (f->source != NULL) { + (*f->source->setParam)(f->source, paramID, param); + } + break; + } + return 0; +} + +static Acmd* _pullSubFrame(void* filter, s16* inp, s16* outp, s32 outCount, s32 sampleOffset, Acmd* p) { + Acmd* ptr = p; + ALEnvMixer* e = (ALEnvMixer*)filter; + ALFilter* source = e->filter.source; + + // filter must be playing and request non-zero output samples to pull. + if (e->motion != AL_PLAYING || !outCount) { + return ptr; + } + + // ask all filters upstream from us to build their command lists. + ptr = (*source->handler)(source, inp, outCount, sampleOffset, p); + + // construct our portion of the command list + aSetBuffer(ptr++, A_MAIN, *inp, AL_MAIN_L_OUT + *outp, outCount << 1); + aSetBuffer(ptr++, A_AUX, AL_MAIN_R_OUT + *outp, AL_AUX_L_OUT + *outp, AL_AUX_R_OUT + *outp); + + if (e->first) { + e->first = false; + + // Calculate derived parameters + e->ltgt = (e->volume * eqpower[e->pan]) >> 15; + e->lratm = _getRate((f64)e->cvolL, (f64)e->ltgt, e->segEnd, &e->lratl); + e->rtgt = (e->volume * eqpower[EQPOWER_LENGTH - e->pan - 1]) >> 15; + e->rratm = _getRate((f64)e->cvolR, (f64)e->rtgt, e->segEnd, &e->rratl); + + aSetVolume(ptr++, A_LEFT | A_VOL, e->cvolL, 0, 0); + aSetVolume(ptr++, A_RIGHT | A_VOL, e->cvolR, 0, 0); + aSetVolume(ptr++, A_LEFT | A_RATE, e->ltgt, e->lratm, e->lratl); + aSetVolume(ptr++, A_RIGHT | A_RATE, e->rtgt, e->rratm, e->rratl); + aSetVolume(ptr++, A_AUX, e->dryamt, 0, e->wetamt); + aEnvMixer(ptr++, A_INIT | A_AUX, osVirtualToPhysical(e->state)); + } else + aEnvMixer(ptr++, A_CONTINUE | A_AUX, osVirtualToPhysical(e->state)); + + // bump the input buffer pointer + *inp += outCount << 1; + e->delta += outCount; + + return ptr; +} + +f64 _frexpf(f64 value, s32* eptr) { + f64 absvalue; + + *eptr = 0; + if (value == 0.0) { + // nothing to do for zero + return value; + } + absvalue = (value > 0.0) ? value : -value; + for (; absvalue >= 1.0; absvalue *= 0.5) { + (*eptr)++; + } + for (; absvalue < 0.5; absvalue += absvalue) { + (*eptr)--; + } + return (value > 0.0 ? absvalue : -absvalue); +} + +f64 _ldexpf(f64 in, s32 ex) { + s32 exp; + + if (ex != 0) { + exp = 1 << ex; + in *= (f64)exp; + } + return in; +} + +/** + * This function determines how to go from the current volume level (vol) to the target volume level (tgt) in some + * number of steps (count). Two values are returned that are used as multipliers to incrementally scale the volume. + * Some tricky math is used and is explained below. + * RWW 28jun95 + */ +static s16 _getRate(f64 vol, f64 tgt, s32 count, u16* ratel) { + s16 s; + f64 invn = 1.0 / count; + f64 eps; + f64 a; + f64 fs; + f64 mant; + s32 i_invn; + s32 ex; + s32 indx; + + if (count == 0) { + if (tgt >= vol) { + *ratel = 0xFFFF; + return 0x7FFF; + } else { + *ratel = 0; + return 0; + } + } + + if (tgt < 1.0) { + tgt = 1.0; + } + if (vol <= 0.0) { + vol = 1.0; // zero and neg values not allowed + } + +#define NBITS 3 +#define NPOS (1 << NBITS) +#define NFRACBITS 30 +#define M_LN2 0.69314718055994530942 + // rww's parametric pow() + // Goal: compute a = (tgt/vol)^(1/count) + // + // Approach: + // (tgt/vol)^(1/count) = ((tgt/vol)^(1/2^30))^(2^30*1/count) + // + // (tgt/vol)^(1/2^30) ~= 1 + eps + // + // where + // + // eps ~= ln(tgt/vol)/2^30 + // + // ln(tgt/vol) = ln2(tgt/vol) * ln(2) + // + // ln2(tgt/vol) = fp_exponent( tgt/vol ) + ln2( fp_mantissa( tgt/vol ) ) + // + // fp_mantissa() and fp_exponent() are calculated via tricky bit manipulations of + // the floating point number. ln2() is approximated by a look up table. + // + // Note that this final (1+eps) value needs to be raised to the 2^30/count power. This + // is done by operating on the binary representaion of this number in the final while loop. + // + // Enjoy! + { + f64 logtab[] = { -0.912537, -0.752072, -0.607683, -0.476438, -0.356144, -0.245112, -0.142019, -0.045804 }; + + i_invn = (s32)_ldexpf(invn, NFRACBITS); + mant = _frexpf(tgt / vol, &ex); + indx = (s32)_ldexpf(mant, NBITS + 1); // NPOS <= indx < 2*NPOS + eps = (logtab[indx - NPOS] + ex) * M_LN2; + eps /= _ldexpf(1, NFRACBITS); // eps / 2^NFRACBITS + fs = 1.0 + eps; + a = 1.0; + while (i_invn != 0) { + if (i_invn & 1) { + a = a * fs; + } + fs *= fs; + i_invn >>= 1; + } + } + + a *= a; + a *= a; + a *= a; + s = (s16)a; + *ratel = (s16)(0xFFFF * (a - (f32)s)); + + return (s16)a; +} + +static f32 _getVol(f32 ivol, s32 samples, s16 ratem, u16 ratel) { + f32 r; + f32 a; + s32 i; + + // Rate values are actually rate^8 + samples >>= 3; + if (samples == 0) { + return ivol; + } + r = ((f32)(ratem << 16) + (f32)ratel) / 65536; + + a = 1.0f; + for (i = 0; i < 32; i++) { + if (samples & 1) { + a *= r; + } + samples >>= 1; + if (samples == 0) { + break; + } + r *= r; + } + ivol *= a; + return ivol; +} diff --git a/src/libultra/audio/filter.c b/src/libultra/audio/filter.c index 8b13789179..937ffd04c5 100644 --- a/src/libultra/audio/filter.c +++ b/src/libultra/audio/filter.c @@ -1 +1,11 @@ +#include "libaudio.h" +#include "synthInternals.h" +void alFilterNew(ALFilter* f, ALCmdHandler h, ALSetParam s, s32 type) { + f->source = NULL; + f->handler = h; + f->setParam = s; + f->inp = 0; + f->outp = 0; + f->type = type; +} diff --git a/src/libultra/audio/heapalloc.c b/src/libultra/audio/heapalloc.c index 8b13789179..52c3605c51 100644 --- a/src/libultra/audio/heapalloc.c +++ b/src/libultra/audio/heapalloc.c @@ -1 +1,15 @@ +#include "libaudio.h" +#include "synthInternals.h" +void* alHeapDBAlloc(u8* file, s32 line, ALHeap* hp, s32 num, s32 size) { + s32 bytes; + u8* ptr = NULL; + + bytes = (num * size + AL_CACHE_ALIGN) & ~AL_CACHE_ALIGN; + + if (hp->cur + bytes <= hp->base + hp->len) { + ptr = hp->cur; + hp->cur += bytes; + } + return ptr; +} diff --git a/src/libultra/audio/libaudio.h b/src/libultra/audio/libaudio.h new file mode 100644 index 0000000000..67f04567bf --- /dev/null +++ b/src/libultra/audio/libaudio.h @@ -0,0 +1,842 @@ +#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" + +/*********************************************************************** + * misc defines + ***********************************************************************/ + +#define AL_FX_BUFFER_SIZE 8192 +#define AL_FRAME_INIT -1 +#define AL_USEC_PER_FRAME 16000 +#define AL_MAX_PRIORITY 127 +#define AL_GAIN_CHANGE_TIME 1000 + +typedef s32 ALMicroTime; +typedef u8 ALPan; + +#define AL_PAN_CENTER 64 +#define AL_PAN_LEFT 0 +#define AL_PAN_RIGHT 127 +#define AL_VOL_FULL 127 +#define AL_KEY_MIN 0 +#define AL_KEY_MAX 127 +#define AL_DEFAULT_FXMIX 0 +#define AL_SUSTAIN 63 + +/*********************************************************************** + * Audio Library global routines + ***********************************************************************/ +typedef struct ALLink_s { + struct ALLink_s* next; + struct ALLink_s* prev; +} ALLink; + +void alUnlink(ALLink* ln); +void alLink(ALLink* ln, ALLink* to); + +typedef s32 (*ALDMAproc)(s32 addr, s32 len, void* state); +typedef ALDMAproc (*ALDMANew)(void* state); + +void alCopy(void* src, void* dest, s32 len); + +typedef struct { + u8* base; + u8* cur; + s32 len; + s32 count; +} ALHeap; + +#define AL_HEAP_DEBUG 1 +#define AL_HEAP_MAGIC 0x20736A73 // ' sjs' +#define AL_HEAP_INIT 0 + +void alHeapInit(ALHeap* hp, u8* base, s32 len); +void* alHeapDBAlloc(u8* file, s32 line, ALHeap* hp, s32 num, s32 size); +s32 alHeapCheck(ALHeap* hp); + +#define alHeapAlloc(hp, elem ,size) alHeapDBAlloc(0, 0,(hp),(elem),(size)) + +/*********************************************************************** + * FX Stuff + ***********************************************************************/ +#define AL_FX_NONE 0 +#define AL_FX_SMALLROOM 1 +#define AL_FX_BIGROOM 2 +#define AL_FX_CHORUS 3 +#define AL_FX_FLANGE 4 +#define AL_FX_ECHO 5 +#define AL_FX_CUSTOM 6 + +typedef u8 ALFxId; +typedef void* ALFxRef; + +/*********************************************************************** + * data structures for sound banks + ***********************************************************************/ + +#define AL_BANK_VERSION 0x4231 // 'B1' + +// Possible wavetable types +enum { + AL_ADPCM_WAVE = 0, + AL_RAW16_WAVE +}; + +typedef struct { + s32 order; + s32 npredictors; + s16 book[1]; // Actually variable size. Must be 8-byte aligned +} ALADPCMBook; + +typedef struct { + u32 start; + u32 end; + u32 count; + ADPCM_STATE state; +} ALADPCMloop; + +typedef struct { + u32 start; + u32 end; + u32 count; +} ALRawLoop; + +typedef struct { + ALMicroTime attackTime; + ALMicroTime decayTime; + ALMicroTime releaseTime; + u8 attackVolume; + u8 decayVolume; +} ALEnvelope; + +typedef struct { + u8 velocityMin; + u8 velocityMax; + u8 keyMin; + u8 keyMax; + u8 keyBase; + s8 detune; +} ALKeyMap; + +typedef struct { + ALADPCMloop* loop; + ALADPCMBook* book; +} ALADPCMWaveInfo; + +typedef struct { + ALRawLoop* loop; +} ALRAWWaveInfo; + +typedef struct ALWaveTable_s { + u8* base; // ptr to start of wave data + s32 len; // length of data in bytes + u8 type; // compression type + u8 flags; // offset/address flags + union { + ALADPCMWaveInfo adpcmWave; + ALRAWWaveInfo rawWave; + } waveInfo; +} ALWaveTable; + +typedef struct ALSound_s { + ALEnvelope* envelope; + ALKeyMap* keyMap; + ALWaveTable* wavetable; // offset to wavetable struct + ALPan samplePan; + u8 sampleVolume; + u8 flags; +} ALSound; + +typedef struct { + u8 volume; // overall volume for this instrument + ALPan pan; // 0 = hard left, 127 = hard right + u8 priority; // voice priority for this instrument + u8 flags; + u8 tremType; // the type of tremelo osc. to use + u8 tremRate; // the rate of the tremelo osc. + u8 tremDepth; // the depth of the tremelo osc + u8 tremDelay; // the delay for the tremelo osc + u8 vibType; // the type of tremelo osc. to use + u8 vibRate; // the rate of the tremelo osc. + u8 vibDepth; // the depth of the tremelo osc + u8 vibDelay; // the delay for the tremelo osc + s16 bendRange; // pitch bend range in cents + s16 soundCount; // number of sounds in this array + ALSound* soundArray[1]; +} ALInstrument; + +typedef struct ALBank_s { + s16 instCount; // number of programs in this bank + u8 flags; + u8 pad; + s32 sampleRate; // e.g. 44100, 22050, etc... + ALInstrument* percussion; // default percussion for GM + ALInstrument* instArray[1]; // ARRAY of instruments +} ALBank; + +typedef struct { // Note: sizeof won't be correct + s16 revision; // format revision of this file + s16 bankCount; // number of banks + ALBank* bankArray[1]; // ARRAY of bank offsets +} ALBankFile; + +void alBnkfNew(ALBankFile* f, u8* table); + +/*********************************************************************** + * Sequence Files + ***********************************************************************/ +#define AL_SEQBANK_VERSION 'S1' + +typedef struct { + u8* offset; + s32 len; +} ALSeqData; + +typedef struct { // Note: sizeof won't be correct + s16 revision; // format revision of this file + s16 seqCount; // number of sequences + ALSeqData seqArray[1]; // ARRAY of sequence info +} ALSeqFile; + +void alSeqFileNew(ALSeqFile* f, u8* base); + +/*********************************************************************** + * Synthesis driver stuff + ***********************************************************************/ +typedef ALMicroTime (*ALVoiceHandler)(void*); + +typedef struct { + s32 maxVVoices; // obsolete + s32 maxPVoices; + s32 maxUpdates; + s32 maxFXbusses; + void* dmaproc; + ALHeap* heap; + s32 outputRate; // output sample rate + ALFxId fxType; + s32* params; +} ALSynConfig; + +typedef struct ALPlayer_s { + struct ALPlayer_s* next; + void* clientData; // storage for client callback + ALVoiceHandler handler; // voice handler for player + ALMicroTime callTime; // usec requested callback + s32 samplesLeft; // usec remaining to callback +} ALPlayer; + +typedef struct ALVoice_s { + ALLink node; + struct PVoice_s* pvoice; + ALWaveTable* table; + void* clientPrivate; + s16 state; + s16 priority; + s16 fxBus; + s16 unityPitch; +} ALVoice; + +typedef struct ALVoiceConfig_s { + s16 priority; // voice priority + s16 fxBus; // bus assignment + u8 unityPitch; // unity pitch flag +} ALVoiceConfig; + +typedef struct { + ALPlayer* head; // client list head + ALLink pFreeList; // list of free physical voices + ALLink pAllocList; // list of allocated physical voices + ALLink pLameList; // list of voices ready to be freed + s32 paramSamples; + s32 curSamples; // samples from start of game + ALDMANew dma; + ALHeap* heap; + + struct ALParam_s* paramList; + + struct ALMainBus_s* mainBus; + struct ALAuxBus_s* auxBus; // ptr to array of aux bus structs + struct ALFilter_s* outputFilter; // last filter in the filter chain + + s32 numPVoices; + s32 maxAuxBusses; + s32 outputRate; // output sample rate + s32 maxOutSamples; // Maximum samples rsp can generate at one time at output rate +} ALSynth; + +void alSynNew(ALSynth* drvr, ALSynConfig* c); +void alSynDelete(ALSynth* drvr); + +void alSynAddPlayer(ALSynth* s, ALPlayer* client); +void alSynRemovePlayer(ALSynth* s, ALPlayer* client); + +s32 alSynAllocVoice(ALSynth* s, ALVoice* v, ALVoiceConfig* vc); +void alSynFreeVoice(ALSynth* s, ALVoice* voice); + +void alSynStartVoice(ALSynth* s, ALVoice* voice, ALWaveTable* w); +void alSynStartVoiceParams(ALSynth* s, ALVoice* voice, ALWaveTable* w, f32 pitch, s16 vol, ALPan pan, u8 fxmix, ALMicroTime t); +void alSynStopVoice(ALSynth* s, ALVoice* voice); + +void alSynSetVol(ALSynth* s, ALVoice* v, s16 vol, ALMicroTime delta); +void alSynSetPitch(ALSynth* s, ALVoice* voice, f32 ratio); +void alSynSetPan(ALSynth* s, ALVoice* voice, ALPan pan); +void alSynSetFXMix(ALSynth* s, ALVoice* voice, u8 fxmix); +void alSynSetPriority(ALSynth* s, ALVoice* voice, s16 priority); +s16 alSynGetPriority(ALSynth* s, ALVoice* voice); + +ALFxRef* alSynAllocFX(ALSynth* s, s16 bus, ALSynConfig* c, ALHeap* hp); +ALFxRef alSynGetFXRef(ALSynth* s, s16 bus, s16 index); +void alSynFreeFX(ALSynth* s, ALFxRef* fx); +void alSynSetFXParam(ALSynth* s, ALFxRef fx, s16 paramID, void* param); + +/*********************************************************************** + * Audio Library (AL) stuff + ***********************************************************************/ +typedef struct { + ALSynth drvr; +} ALGlobals; + +extern ALGlobals* alGlobals; + +void alInit(ALGlobals* g, ALSynConfig* c); +void alClose(ALGlobals* glob); + +Acmd* alAudioFrame(Acmd* cmdList, s32* cmdLen, s16* outBuf, s32 outLen); + +/*********************************************************************** + * Sequence Player stuff + ***********************************************************************/ + +/** + * Play states + */ +#define AL_STOPPED 0 +#define AL_PLAYING 1 +#define AL_STOPPING 2 + +#define AL_DEFAULT_PRIORITY 5 +#define AL_DEFAULT_VOICE 0 +#define AL_MAX_CHANNELS 16 + +/** + * Audio Library event type definitions + */ +enum ALMsg { + AL_SEQ_REF_EVT, // Reference to a pending event in the sequence. + AL_SEQ_MIDI_EVT, + AL_SEQP_MIDI_EVT, + AL_TEMPO_EVT, + AL_SEQ_END_EVT, + AL_NOTE_END_EVT, + AL_SEQP_ENV_EVT, + AL_SEQP_META_EVT, + AL_SEQP_PROG_EVT, + AL_SEQP_API_EVT, + AL_SEQP_VOL_EVT, + AL_SEQP_LOOP_EVT, + AL_SEQP_PRIORITY_EVT, + AL_SEQP_SEQ_EVT, + AL_SEQP_BANK_EVT, + AL_SEQP_PLAY_EVT, + AL_SEQP_STOP_EVT, + AL_SEQP_STOPPING_EVT, + AL_TRACK_END, + AL_CSP_LOOPSTART, + AL_CSP_LOOPEND, + AL_CSP_NOTEOFF_EVT, + AL_TREM_OSC_EVT, + AL_VIB_OSC_EVT +}; + +/** + * Midi event definitions + */ +#define AL_EVTQ_END 0x7FFFFFFF + +enum AL_MIDIstatus { + // For distinguishing channel number from status + AL_MIDI_ChannelMask = 0x0F, + AL_MIDI_StatusMask = 0xF0, + + // Channel voice messages + AL_MIDI_ChannelVoice = 0x80, + AL_MIDI_NoteOff = 0x80, + AL_MIDI_NoteOn = 0x90, + AL_MIDI_PolyKeyPressure = 0xA0, + AL_MIDI_ControlChange = 0xB0, + AL_MIDI_ChannelModeSelect = 0xB0, + AL_MIDI_ProgramChange = 0xC0, + AL_MIDI_ChannelPressure = 0xD0, + AL_MIDI_PitchBendChange = 0xE0, + + // System messages + AL_MIDI_SysEx = 0xF0, // System Exclusive + // System common + AL_MIDI_SystemCommon = 0xF1, + AL_MIDI_TimeCodeQuarterFrame = 0xF1, + AL_MIDI_SongPositionPointer = 0xF2, + AL_MIDI_SongSelect = 0xF3, + AL_MIDI_Undefined1 = 0xF4, + AL_MIDI_Undefined2 = 0xF5, + AL_MIDI_TuneRequest = 0xF6, + AL_MIDI_EOX = 0xF7, // End of System Exclusive + + // System real time + AL_MIDI_SystemRealTime = 0xF8, + AL_MIDI_TimingClock = 0xF8, + AL_MIDI_Undefined3 = 0xF9, + AL_MIDI_Start = 0xFA, + AL_MIDI_Continue = 0xFB, + AL_MIDI_Stop = 0xFC, + AL_MIDI_Undefined4 = 0xFD, + AL_MIDI_ActiveSensing = 0xFE, + AL_MIDI_SystemReset = 0xFF, + AL_MIDI_Meta = 0xFF // MIDI Files only +}; + +enum AL_MIDIctrl { + AL_MIDI_VOLUME_CTRL = 0x07, + AL_MIDI_PAN_CTRL = 0x0A, + AL_MIDI_PRIORITY_CTRL = 0x10, // use general purpose controller for priority + AL_MIDI_FX_CTRL_0 = 0x14, + AL_MIDI_FX_CTRL_1 = 0x15, + AL_MIDI_FX_CTRL_2 = 0x16, + AL_MIDI_FX_CTRL_3 = 0x17, + AL_MIDI_FX_CTRL_4 = 0x18, + AL_MIDI_FX_CTRL_5 = 0x19, + AL_MIDI_FX_CTRL_6 = 0x1A, + AL_MIDI_FX_CTRL_7 = 0x1B, + AL_MIDI_FX_CTRL_8 = 0x1C, + AL_MIDI_FX_CTRL_9 = 0x1D, + AL_MIDI_SUSTAIN_CTRL = 0x40, + AL_MIDI_FX1_CTRL = 0x5B, + AL_MIDI_FX3_CTRL = 0x5D +}; + +enum AL_MIDImeta { + AL_MIDI_META_TEMPO = 0x51, + AL_MIDI_META_EOT = 0x2F +}; + + +#define AL_CMIDI_BLOCK_CODE 0xFE +#define AL_CMIDI_LOOPSTART_CODE 0x2E +#define AL_CMIDI_LOOPEND_CODE 0x2D + +#define AL_CMIDI_CNTRL_LOOPSTART 102 +#define AL_CMIDI_CNTRL_LOOPEND 103 +#define AL_CMIDI_CNTRL_LOOPCOUNT_SM 104 +#define AL_CMIDI_CNTRL_LOOPCOUNT_BIG 105 + +typedef struct { + u8* curPtr; // ptr to the next event + s32 lastTicks; // sequence clock ticks (used by alSeqSetLoc) + s32 curTicks; // sequence clock ticks of next event (used by loop end test) + s16 lastStatus; // the last status msg +} ALSeqMarker; + +typedef struct { + s32 ticks; // MIDI, Tempo and End events must start with ticks + u8 status; + u8 byte1; + u8 byte2; + u32 duration; +} ALMIDIEvent; + +typedef struct { + s32 ticks; + u8 status; + u8 type; + u8 len; + u8 byte1; + u8 byte2; + u8 byte3; +} ALTempoEvent; + +typedef struct { + s32 ticks; + u8 status; + u8 type; + u8 len; +} ALEndEvent; + +typedef struct { + struct ALVoice_s* voice; +} ALNoteEvent; + +typedef struct { + struct ALVoice_s* voice; + ALMicroTime delta; + u8 vol; +} ALVolumeEvent; + +typedef struct { + s16 vol; +} ALSeqpVolEvent; + +typedef struct { + ALSeqMarker* start; + ALSeqMarker* end; + s32 count; +} ALSeqpLoopEvent; + +typedef struct { + u8 chan; + u8 priority; +} ALSeqpPriorityEvent; + +typedef struct { + void* seq; // pointer to a seq (could be an ALSeq or an ALCSeq). +} ALSeqpSeqEvent; + +typedef struct { + ALBank* bank; +} ALSeqpBankEvent; + +typedef struct { + struct ALVoiceState_s* vs; + void* oscState; + u8 chan; +} ALOscEvent; + +typedef struct { + s16 type; + union { + ALMIDIEvent midi; + ALTempoEvent tempo; + ALEndEvent end; + ALNoteEvent note; + ALVolumeEvent vol; + ALSeqpLoopEvent loop; + ALSeqpVolEvent spvol; + ALSeqpPriorityEvent sppriority; + ALSeqpSeqEvent spseq; + ALSeqpBankEvent spbank; + ALOscEvent osc; + } msg; +} ALEvent; + +typedef struct { + ALLink node; + ALMicroTime delta; + ALEvent evt; +} ALEventListItem; + +typedef struct { + ALLink freeList; + ALLink allocList; + s32 eventCount; +} ALEventQueue; + +void alEvtqNew(ALEventQueue* evtq, ALEventListItem* items, s32 itemCount); +ALMicroTime alEvtqNextEvent(ALEventQueue* evtq, ALEvent* evt); +void alEvtqPostEvent(ALEventQueue* evtq, ALEvent* evt, ALMicroTime delta); +void alEvtqFlush(ALEventQueue* evtq); +void alEvtqFlushType(ALEventQueue* evtq, s16 type); + +#define AL_PHASE_ATTACK 0 +#define AL_PHASE_NOTEON 0 +#define AL_PHASE_DECAY 1 +#define AL_PHASE_SUSTAIN 2 +#define AL_PHASE_RELEASE 3 +#define AL_PHASE_SUSTREL 4 + +typedef struct ALVoiceState_s { + struct ALVoiceState_s* next; // MUST be first + ALVoice voice; + ALSound* sound; + ALMicroTime envEndTime; // time of envelope segment end + f32 pitch; // currect pitch ratio + f32 vibrato; // current value of the vibrato + u8 envGain; // current envelope gain + u8 channel; // channel assignment + u8 key; // note on key number + u8 velocity; // note on velocity + u8 envPhase; // what envelope phase + u8 phase; + u8 tremelo; // current value of the tremelo + u8 flags; // bit 0 tremelo flag, bit 1 vibrato flag +} ALVoiceState; + +typedef struct { + ALInstrument* instrument; // instrument assigned to this chan + s16 bendRange; // pitch bend range in cents + ALFxId fxId; // type of fx assigned to this chan + ALPan pan; // overall pan for this chan + u8 priority; // priority for this chan + u8 vol; // current volume for this chan + u8 fxmix; // current fx mix for this chan + u8 sustain; // current sustain pedal state + f32 pitchBend; // current pitch bend val in cents +} ALChanState; + +typedef struct ALSeq_s { + u8* base; // ptr to start of sequence file + u8* trackStart; // ptr to first MIDI event + u8* curPtr; // ptr to next event to read + s32 lastTicks; // MIDI ticks for last event + s32 len; // length of sequence in bytes + f32 qnpt; // qrter notes / tick (1/division) + s16 division; // ticks per quarter note + s16 lastStatus; // for running status +} ALSeq; + +typedef struct { + u32 trackOffset[16]; + u32 division; +} ALCMidiHdr; + +typedef struct ALCSeq_s { + ALCMidiHdr* base; // ptr to start of sequence file + u32 validTracks; // set of flags, showing valid tracks + f32 qnpt; // qrter notes / tick (1/division) + u32 lastTicks; // keep track of ticks incase app wants + u32 lastDeltaTicks; // number of delta ticks of last event + u32 deltaFlag; // flag: set if delta's not subtracted + u8* curLoc[16]; // ptr to current track location, may point to next event, or may point to a backup code + u8* curBUPtr[16]; // ptr to next event if in backup mode + u8 curBULen[16]; // if > 0, then in backup mode + u8 lastStatus[16]; // for running status + u32 evtDeltaTicks[16]; // delta time to next event +} ALCSeq; + +typedef struct { + u32 validTracks; + s32 lastTicks; + u32 lastDeltaTicks; + u8* curLoc[16]; + u8* curBUPtr[16]; + u8 curBULen[16]; + u8 lastStatus[16]; + u32 evtDeltaTicks[16]; +} ALCSeqMarker; + +#define NO_SOUND_ERR_MASK (1 << 0) +#define NOTE_OFF_ERR_MASK (1 << 1) +#define NO_VOICE_ERR_MASK (1 << 2) + +typedef struct { + s32 maxVoices; // max number of voices to alloc + s32 maxEvents; // max internal events to support + u8 maxChannels; // max MIDI channels to support (16) + u8 debugFlags; // control which error get reported + ALHeap* heap; // ptr to initialized heap + void* initOsc; + void* updateOsc; + void* stopOsc; +} ALSeqpConfig; + +typedef ALMicroTime (*ALOscInit)(void** oscState, f32* initVal, u8 oscType, u8 oscRate, u8 oscDepth, u8 oscDelay); +typedef ALMicroTime (*ALOscUpdate)(void* oscState, f32* updateVal); +typedef void (*ALOscStop)(void* oscState); + +typedef struct { + ALPlayer node; // note: must be first in structure + ALSynth* drvr; // reference to the client driver + ALSeq* target; // current sequence + ALMicroTime curTime; + ALBank* bank; // current ALBank + s32 uspt; // microseconds per tick + s32 nextDelta; // microseconds to next callback + s32 state; + u16 chanMask; // active channels + s16 vol; // overall sequence volume + u8 maxChannels; // number of MIDI channels + u8 debugFlags; // control which error get reported + ALEvent nextEvent; + ALEventQueue evtq; + ALMicroTime frameTime; + ALChanState* chanState; // 16 channels for MIDI + ALVoiceState* vAllocHead; // list head for allocated voices + ALVoiceState* vAllocTail; // list tail for allocated voices + ALVoiceState* vFreeList; // list of free voice state structs + ALOscInit initOsc; + ALOscUpdate updateOsc; + ALOscStop stopOsc; + ALSeqMarker* loopStart; + ALSeqMarker* loopEnd; + s32 loopCount; // -1 = loop forever, 0 = no loop +} ALSeqPlayer; + +typedef struct { + ALPlayer node; // note: must be first in structure + ALSynth* drvr; // reference to the client driver + ALCSeq* target; // current sequence + ALMicroTime curTime; + ALBank* bank; // current ALBank + s32 uspt; // microseconds per tick + s32 nextDelta; // microseconds to next callback + s32 state; + u16 chanMask; // active channels + s16 vol; // overall sequence volume + u8 maxChannels; // number of MIDI channels + u8 debugFlags; // control which error get reported + ALEvent nextEvent; + ALEventQueue evtq; + ALMicroTime frameTime; + ALChanState* chanState; // 16 channels for MIDI + ALVoiceState* vAllocHead; // list head for allocated voices + ALVoiceState* vAllocTail; // list tail for allocated voices + ALVoiceState* vFreeList; // list of free voice state structs + ALOscInit initOsc; + ALOscUpdate updateOsc; + ALOscStop stopOsc; +} ALCSPlayer; + +// Sequence data representation routines + +void alSeqNew(ALSeq* seq, u8* ptr, s32 len); +void alSeqNextEvent(ALSeq* seq, ALEvent* event); +s32 alSeqGetTicks(ALSeq* seq); +f32 alSeqTicksToSec(ALSeq* seq, s32 ticks, u32 tempo); +u32 alSeqSecToTicks(ALSeq* seq, f32 sec, u32 tempo); +void alSeqNewMarker(ALSeq* seq, ALSeqMarker* m, u32 ticks); +void alSeqSetLoc(ALSeq* seq, ALSeqMarker* marker); +void alSeqGetLoc(ALSeq* seq, ALSeqMarker* marker); + +// Compact Sequence data representation routines + +void alCSeqNew(ALCSeq* seq, u8* ptr); +void alCSeqNextEvent(ALCSeq* seq,ALEvent* evt); +s32 alCSeqGetTicks(ALCSeq* seq); +f32 alCSeqTicksToSec(ALCSeq* seq, s32 ticks, u32 tempo); +u32 alCSeqSecToTicks(ALCSeq* seq, f32 sec, u32 tempo); +void alCSeqNewMarker(ALCSeq* seq, ALCSeqMarker* m, u32 ticks); +void alCSeqSetLoc(ALCSeq* seq, ALCSeqMarker* marker); +void alCSeqGetLoc(ALCSeq* seq, ALCSeqMarker* marker); + +// Sequence Player routines + +f32 alCents2Ratio(s32 cents); + +void alSeqpNew(ALSeqPlayer* seqp, ALSeqpConfig* config); +void alSeqpDelete(ALSeqPlayer* seqp); +void alSeqpSetSeq(ALSeqPlayer* seqp, ALSeq* seq); +ALSeq* alSeqpGetSeq(ALSeqPlayer* seqp); +void alSeqpPlay(ALSeqPlayer* seqp); +void alSeqpStop(ALSeqPlayer* seqp); +s32 alSeqpGetState(ALSeqPlayer* seqp); +void alSeqpSetBank(ALSeqPlayer* seqp, ALBank* b); +void alSeqpSetTempo(ALSeqPlayer* seqp, s32 tempo); +s32 alSeqpGetTempo(ALSeqPlayer* seqp); +s16 alSeqpGetVol(ALSeqPlayer* seqp); // Master volume control +void alSeqpSetVol(ALSeqPlayer* seqp, s16 vol); +void alSeqpLoop(ALSeqPlayer* seqp, ALSeqMarker* start, ALSeqMarker* end, s32 count); + +void alSeqpSetChlProgram(ALSeqPlayer* seqp, u8 chan, u8 prog); +s32 alSeqpGetChlProgram(ALSeqPlayer* seqp, u8 chan); +void alSeqpSetChlFXMix(ALSeqPlayer* seqp, u8 chan, u8 fxmix); +u8 alSeqpGetChlFXMix(ALSeqPlayer* seqp, u8 chan); +void alSeqpSetChlVol(ALSeqPlayer* seqp, u8 chan, u8 vol); +u8 alSeqpGetChlVol(ALSeqPlayer* seqp, u8 chan); +void alSeqpSetChlPan(ALSeqPlayer* seqp, u8 chan, ALPan pan); +ALPan alSeqpGetChlPan(ALSeqPlayer* seqp, u8 chan); +void alSeqpSetChlPriority(ALSeqPlayer* seqp, u8 chan, u8 priority); +u8 alSeqpGetChlPriority(ALSeqPlayer* seqp, u8 chan); +void alSeqpSendMidi(ALSeqPlayer* seqp, s32 ticks, u8 status, u8 byte1, u8 byte2); + +// Maintain backwards compatibility with old routine names. + +#define alSeqpSetProgram alSeqpSetChlProgram +#define alSeqpGetProgram alSeqpGetChlProgram +#define alSeqpSetFXMix alSeqpSetChlFXMix +#define alSeqpGetFXMix alSeqpGetChlFXMix +#define alSeqpSetPan alSeqpSetChlPan +#define alSeqpGetPan alSeqpGetChlPan +#define alSeqpSetChannelPriority alSeqpSetChlPriority +#define alSeqpGetChannelPriority alSeqpGetChlPriority + +// Compressed Sequence Player routines + +void alCSPNew(ALCSPlayer* seqp, ALSeqpConfig* config); +void alCSPDelete(ALCSPlayer* seqp); +void alCSPSetSeq(ALCSPlayer* seqp, ALCSeq* seq); +ALCSeq* alCSPGetSeq(ALCSPlayer* seqp); +void alCSPPlay(ALCSPlayer* seqp); +void alCSPStop(ALCSPlayer* seqp); +s32 alCSPGetState(ALCSPlayer* seqp); +void alCSPSetBank(ALCSPlayer* seqp, ALBank* b); +void alCSPSetTempo(ALCSPlayer* seqp, s32 tempo); +s32 alCSPGetTempo(ALCSPlayer* seqp); +s16 alCSPGetVol(ALCSPlayer* seqp); +void alCSPSetVol(ALCSPlayer* seqp, s16 vol); + +void alCSPSetChlProgram(ALCSPlayer* seqp, u8 chan, u8 prog); +s32 alCSPGetChlProgram(ALCSPlayer* seqp, u8 chan); +void alCSPSetChlFXMix(ALCSPlayer* seqp, u8 chan, u8 fxmix); +u8 alCSPGetChlFXMix(ALCSPlayer* seqp, u8 chan); +void alCSPSetChlPan(ALCSPlayer* seqp, u8 chan, ALPan pan); +ALPan alCSPGetChlPan(ALCSPlayer* seqp, u8 chan); +void alCSPSetChlVol(ALCSPlayer* seqp, u8 chan, u8 vol); +u8 alCSPGetChlVol(ALCSPlayer* seqp, u8 chan); +void alCSPSetChlPriority(ALCSPlayer* seqp, u8 chan, u8 priority); +u8 alCSPGetChlPriority(ALCSPlayer* seqp, u8 chan); +void alCSPSendMidi(ALCSPlayer* seqp, s32 ticks, u8 status, u8 byte1, u8 byte2); + +// Maintain backwards compatibility with old routine names. + +#define alCSPSetProgram alCSPSetChlProgram +#define alCSPGetProgram alCSPGetChlProgram +#define alCSPSetFXMix alCSPSetChlFXMix +#define alCSPGetFXMix alCSPGetChlFXMix +#define alCSPSetPan alCSPSetChlPan +#define alCSPGetPan alCSPGetChlPan +#define alCSPSetChannelPriority alCSPSetChlPriority +#define alCSPGetChannelPriority alCSPGetChlPriority + + + +/*********************************************************************** + * Sound Player stuff + ***********************************************************************/ + +typedef struct { + s32 maxSounds; + s32 maxEvents; + ALHeap* heap; +} ALSndpConfig; + +typedef struct { + ALPlayer node; // note: must be first in structure + ALEventQueue evtq; + ALEvent nextEvent; + ALSynth* drvr; // reference to the client driver + s32 target; + void* sndState; + s32 maxSounds; + ALMicroTime frameTime; + ALMicroTime nextDelta; // microseconds to next callback + ALMicroTime curTime; +} ALSndPlayer; + +typedef s16 ALSndId; + +void alSndpNew(ALSndPlayer* sndp, ALSndpConfig* c); +void alSndpDelete(ALSndPlayer* sndp); + +ALSndId alSndpAllocate(ALSndPlayer* sndp, ALSound* sound); +void alSndpDeallocate(ALSndPlayer* sndp, ALSndId id); + +void alSndpSetSound(ALSndPlayer* sndp, ALSndId id); +ALSndId alSndpGetSound(ALSndPlayer* sndp); + +void alSndpPlay(ALSndPlayer* sndp); +void alSndpPlayAt(ALSndPlayer* sndp, ALMicroTime delta); +void alSndpStop(ALSndPlayer* sndp); + +void alSndpSetVol(ALSndPlayer* sndp, s16 vol); +void alSndpSetPitch(ALSndPlayer* sndp, f32 pitch); +void alSndpSetPan(ALSndPlayer* sndp, ALPan pan); +void alSndpSetPriority(ALSndPlayer* sndp, ALSndId id, u8 priority); + +void alSndpSetFXMix(ALSndPlayer* sndp, u8 mix); +s32 alSndpGetState(ALSndPlayer* sndp); + +#endif diff --git a/src/libultra/audio/libaudio_abi.h b/src/libultra/audio/libaudio_abi.h new file mode 100644 index 0000000000..725101796c --- /dev/null +++ b/src/libultra/audio/libaudio_abi.h @@ -0,0 +1,383 @@ +#ifndef _ABI_H_ +#define _ABI_H_ + +#define _SHIFTL(v, s, w) \ + ((u32) (((u32)(v) & ((1 << (w)) - 1)) << (s))) + +#define _SHIFTR(v, s, w) \ + ((u32)(((u32)(v) >> (s)) & ((1 << (w)) - 1))) + +/* Audio commands: */ +#define A_SPNOOP 0 +#define A_ADPCM 1 +#define A_CLEARBUFF 2 +#define A_ENVMIXER 3 +#define A_LOADBUFF 4 +#define A_RESAMPLE 5 +#define A_SAVEBUFF 6 +#define A_SEGMENT 7 +#define A_SETBUFF 8 +#define A_SETVOL 9 +#define A_DMEMMOVE 10 +#define A_LOADADPCM 11 +#define A_MIXER 12 +#define A_INTERLEAVE 13 +#define A_POLEF 14 +#define A_SETLOOP 15 + +#define ACMD_SIZE 32 + +/** + * Audio flags + */ + +#define A_INIT 0x01 +#define A_CONTINUE 0x00 +#define A_LOOP 0x02 +#define A_OUT 0x02 +#define A_LEFT 0x02 +#define A_RIGHT 0x00 +#define A_VOL 0x04 +#define A_RATE 0x00 +#define A_AUX 0x08 +#define A_NOAUX 0x00 +#define A_MAIN 0x00 +#define A_MIX 0x10 + +#if defined(_LANGUAGE_C) || defined(_LANGUAGE_C_PLUS_PLUS) + +/** + * Data Structures. + */ + +typedef struct { + unsigned int cmd : 8; + unsigned int flags : 8; + unsigned int gain : 16; + unsigned int addr; +} Aadpcm; + +typedef struct { + unsigned int cmd : 8; + unsigned int flags : 8; + unsigned int gain : 16; + unsigned int addr; +} Apolef; + +typedef struct { + unsigned int cmd : 8; + unsigned int flags : 8; + unsigned int pad1 : 16; + unsigned int addr; +} Aenvelope; + +typedef struct { + unsigned int cmd : 8; + unsigned int pad1 : 8; + unsigned int dmem : 16; + unsigned int pad2 : 16; + unsigned int count : 16; +} Aclearbuff; + +typedef struct { + unsigned int cmd : 8; + unsigned int pad1 : 8; + unsigned int pad2 : 16; + unsigned int inL : 16; + unsigned int inR : 16; +} Ainterleave; + +typedef struct { + unsigned int cmd : 8; + unsigned int pad1 : 24; + unsigned int addr; +} Aloadbuff; + +typedef struct { + unsigned int cmd : 8; + unsigned int flags : 8; + unsigned int pad1 : 16; + unsigned int addr; +} Aenvmixer; + +typedef struct { + unsigned int cmd : 8; + unsigned int flags : 8; + unsigned int gain : 16; + unsigned int dmemi : 16; + unsigned int dmemo : 16; +} Amixer; + +typedef struct { + unsigned int cmd : 8; + unsigned int flags : 8; + unsigned int dmem2 : 16; + unsigned int addr; +} Apan; + +typedef struct { + unsigned int cmd : 8; + unsigned int flags : 8; + unsigned int pitch : 16; + unsigned int addr; +} Aresample; + +typedef struct { + unsigned int cmd : 8; + unsigned int flags : 8; + unsigned int pad1 : 16; + unsigned int addr; +} Areverb; + +typedef struct { + unsigned int cmd : 8; + unsigned int pad1 : 24; + unsigned int addr; +} Asavebuff; + +typedef struct { + unsigned int cmd : 8; + unsigned int pad1 : 24; + unsigned int pad2 : 2; + unsigned int number : 4; + unsigned int base : 24; +} Asegment; + +typedef struct { + unsigned int cmd : 8; + unsigned int flags : 8; + unsigned int dmemin : 16; + unsigned int dmemout : 16; + unsigned int count : 16; +} Asetbuff; + +typedef struct { + unsigned int cmd : 8; + unsigned int flags : 8; + unsigned int vol : 16; + unsigned int voltgt : 16; + unsigned int volrate : 16; +} Asetvol; + +typedef struct { + unsigned int cmd : 8; + unsigned int pad1 : 8; + unsigned int dmemin : 16; + unsigned int dmemout : 16; + unsigned int count : 16; +} Admemmove; + +typedef struct { + unsigned int cmd : 8; + unsigned int pad1 : 8; + unsigned int count : 16; + unsigned int addr; +} Aloadadpcm; + +typedef struct { + unsigned int cmd : 8; + unsigned int pad1 : 8; + unsigned int pad2 : 16; + unsigned int addr; +} Asetloop; + +/** + * Generic Acmd Packet + */ + +typedef struct { + unsigned int w0; + unsigned int w1; +} Awords; + +typedef union { + Awords words; + Aadpcm adpcm; + Apolef polef; + Aclearbuff clearbuff; + Aenvelope envelope; + Ainterleave interleave; + Aloadbuff loadbuff; + Aenvmixer envmixer; + Aresample resample; + Areverb reverb; + Asavebuff savebuff; + Asegment segment; + Asetbuff setbuff; + Asetvol setvol; + Admemmove dmemmove; + Aloadadpcm loadadpcm; + Amixer mixer; + Asetloop setloop; + long long int force_union_align; /* dummy, force alignment */ +} Acmd; + +/** + * ADPCM State + */ + +#define ADPCMVSIZE 8 +#define ADPCMFSIZE 16 +typedef short ADPCM_STATE[ADPCMFSIZE]; + +/** + * Pole filter state + */ +typedef short POLEF_STATE[4]; + +/** + * Resampler state + */ +typedef short RESAMPLE_STATE[16]; + +/** + * Resampler constants + */ +#define UNITY_PITCH 0x8000 +#define MAX_RATIO 1.99996 /* within .03 cents of +1 octave */ + +/** + * Enveloper/Mixer state + */ +typedef short ENVMIX_STATE[40]; + +/** + * Macros to assemble the audio command list + */ + +#define aADPCMdec(pkt, f, s) \ +{ \ + Acmd* _a = (Acmd*)pkt; \ + \ + _a->words.w0 = _SHIFTL(A_ADPCM, 24, 8) | _SHIFTL(f, 16, 8); \ + _a->words.w1 = (unsigned int)(s); \ +} + +#define aPoleFilter(pkt, f, g, s) \ +{ \ + Acmd* _a = (Acmd*)pkt; \ + \ + _a->words.w0 = (_SHIFTL(A_POLEF, 24, 8) | _SHIFTL(f, 16, 8) | \ + _SHIFTL(g, 0, 16)); \ + _a->words.w1 = (unsigned int)(s); \ +} + +#define aClearBuffer(pkt, d, c) \ +{ \ + Acmd* _a = (Acmd*)pkt; \ + \ + _a->words.w0 = _SHIFTL(A_CLEARBUFF, 24, 8) | _SHIFTL(d, 0, 24); \ + _a->words.w1 = (unsigned int)(c); \ +} + +#define aEnvMixer(pkt, f, s) \ +{ \ + Acmd* _a = (Acmd*)pkt; \ + \ + _a->words.w0 = _SHIFTL(A_ENVMIXER, 24, 8) | _SHIFTL(f, 16, 8); \ + _a->words.w1 = (unsigned int)(s); \ +} + +#define aInterleave(pkt, l, r) \ +{ \ + Acmd* _a = (Acmd*)pkt; \ + \ + _a->words.w0 = _SHIFTL(A_INTERLEAVE, 24, 8); \ + _a->words.w1 = _SHIFTL(l, 16, 16) | _SHIFTL(r, 0, 16); \ +} + +#define aLoadBuffer(pkt, s) \ +{ \ + Acmd* _a = (Acmd*)pkt; \ + \ + _a->words.w0 = _SHIFTL(A_LOADBUFF, 24, 8); \ + _a->words.w1 = (unsigned int)(s); \ +} + +#define aMix(pkt, f, g, i, o) \ +{ \ + Acmd* _a = (Acmd*)pkt; \ + \ + _a->words.w0 = (_SHIFTL(A_MIXER, 24, 8) | _SHIFTL(f, 16, 8) | \ + _SHIFTL(g, 0, 16)); \ + _a->words.w1 = _SHIFTL(i, 16, 16) | _SHIFTL(o, 0, 16); \ +} + +#define aPan(pkt, f, d, s) \ +{ \ + Acmd* _a = (Acmd*)pkt; \ + \ + _a->words.w0 = (_SHIFTL(A_PAN, 24, 8) | _SHIFTL(f, 16, 8) | \ + _SHIFTL(d, 0, 16)); \ + _a->words.w1 = (unsigned int)(s); \ +} + +#define aResample(pkt, f, p, s) \ +{ \ + Acmd* _a = (Acmd*)pkt; \ + \ + _a->words.w0 = (_SHIFTL(A_RESAMPLE, 24, 8) | _SHIFTL(f, 16, 8) | \ + _SHIFTL(p, 0, 16)); \ + _a->words.w1 = (unsigned int)(s); \ +} + +#define aSaveBuffer(pkt, s) \ +{ \ + Acmd* _a = (Acmd*)pkt; \ + \ + _a->words.w0 = _SHIFTL(A_SAVEBUFF, 24, 8); \ + _a->words.w1 = (unsigned int)(s); \ +} + +#define aSegment(pkt, s, b) \ +{ \ + Acmd* _a = (Acmd*)pkt; \ + \ + _a->words.w0 = _SHIFTL(A_SEGMENT, 24, 8); \ + _a->words.w1 = _SHIFTL(s, 24, 8) | _SHIFTL(b, 0, 24); \ +} + +#define aSetBuffer(pkt, f, i, o, c) \ +{ \ + Acmd* _a = (Acmd*)pkt; \ + \ + _a->words.w0 = (_SHIFTL(A_SETBUFF, 24, 8) | _SHIFTL(f, 16, 8) | \ + _SHIFTL(i, 0, 16)); \ + _a->words.w1 = _SHIFTL(o, 16, 16) | _SHIFTL(c, 0, 16); \ +} + +#define aSetVolume(pkt, f, v, t, r) \ +{ \ + Acmd* _a = (Acmd*)pkt; \ + \ + _a->words.w0 = (_SHIFTL(A_SETVOL, 24, 8) | _SHIFTL(f, 16, 16) | \ + _SHIFTL(v, 0, 16)); \ + _a->words.w1 = _SHIFTL(t, 16, 16) | _SHIFTL(r, 0, 16); \ +} + +#define aSetLoop(pkt, a) \ +{ \ + Acmd* _a = (Acmd*)pkt; \ + _a->words.w0 = _SHIFTL(A_SETLOOP, 24, 8); \ + _a->words.w1 = (unsigned int)(a); \ +} + +#define aDMEMMove(pkt, i, o, c) \ +{ \ + Acmd* _a = (Acmd*)pkt; \ + \ + _a->words.w0 = _SHIFTL(A_DMEMMOVE, 24, 8) | _SHIFTL(i, 0, 24); \ + _a->words.w1 = _SHIFTL(o, 16, 16) | _SHIFTL(c, 0, 16); \ +} + +#define aLoadADPCM(pkt, c, d) \ +{ \ + Acmd* _a = (Acmd*)pkt; \ + \ + _a->words.w0 = _SHIFTL(A_LOADADPCM, 24, 8) | _SHIFTL(c, 0, 24); \ + _a->words.w1 = (unsigned int)(d); \ +} + +#endif + +#endif diff --git a/src/libultra/audio/load.c b/src/libultra/audio/load.c index 8b13789179..86486ce3a7 100644 --- a/src/libultra/audio/load.c +++ b/src/libultra/audio/load.c @@ -1 +1,375 @@ +#include "libaudio.h" +#include "synthInternals.h" +#include "ultra64/R4300.h" +#ifndef MIN +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#endif + +#define ADPCMFBYTES 9 +#define LFSAMPLES 4 + +static Acmd* _decodeChunk(Acmd* ptr, ALLoadFilter* f, s32 tsam, s32 nbytes, s16 outp, s16 inp, u32 flags); + +Acmd* alAdpcmPull(void* filter, s16* outp, s32 outCount, s32 sampleOffset, Acmd* p) { + Acmd* ptr = p; + s16 inp; + s32 tsam; + s32 nframes; + s32 nbytes; + s32 overFlow; + s32 startZero; + s32 nOver; + s32 nSam; + s32 op; + s32 nLeft; + s32 bEnd; + s32 decoded = false; + s32 looped = false; + + ALLoadFilter* f = (ALLoadFilter*)filter; + + if (outCount == 0) { + return ptr; + } + + inp = AL_DECODER_IN; + aLoadADPCM(ptr++, f->bookSize, K0_TO_PHYS(f->table->waveInfo.adpcmWave.book->book)); + + looped = ((u32)(outCount + f->sample) > f->loop.end) && (f->loop.count != 0); + if (looped) { + nSam = f->loop.end - f->sample; + } else { + nSam = outCount; + } + + if (f->lastsam != 0) { + nLeft = ADPCMFSIZE - f->lastsam; + } else { + nLeft = 0; + } + tsam = nSam - nLeft; + if (tsam < 0) { + tsam = 0; + } + + nframes = (tsam + ADPCMFSIZE - 1) >> LFSAMPLES; + nbytes = nframes * ADPCMFBYTES; + + if (looped) { + ptr = _decodeChunk(ptr, f, tsam, nbytes, *outp, inp, f->first); + + // Fix up output pointer, which will be used as the input pointer by the following module. + if (f->lastsam != 0) { + *outp += f->lastsam << 1; + } else { + *outp += ADPCMFSIZE << 1; + } + + // Now fix up state info to reflect the loop start point + f->lastsam = f->loop.start & 0xF; + f->memin = (uintptr_t)f->table->base + ADPCMFBYTES * ((s32)(f->loop.start >> LFSAMPLES) + 1); + f->sample = f->loop.start; + + bEnd = *outp; + while (outCount > nSam) { + outCount -= nSam; + + // Put next one after the end of the last lot - on the frame boundary (32 byte) after the end. + op = (bEnd + ((nframes + 1) << (LFSAMPLES + 1))) & ~0x1F; + + // The actual end of data + bEnd += nSam << 1; + + // -1 is loop forever - the loop count is not exact now for small loops! + if (f->loop.count != -1u && f->loop.count != 0) { + f->loop.count--; + } + + // What's left to compute. + nSam = MIN((u32)outCount, f->loop.end - f->loop.start); + tsam = nSam - ADPCMFSIZE + f->lastsam; + if (tsam < 0) { + tsam = 0; + } + nframes = (tsam + ADPCMFSIZE - 1) >> LFSAMPLES; + nbytes = nframes * ADPCMFBYTES; + ptr = _decodeChunk(ptr, f, tsam, nbytes, op, inp, f->first | A_LOOP); + // Merge the two sections in DMEM. + aDMEMMove(ptr++, op + (f->lastsam << 1), bEnd, nSam << 1); + } + + f->lastsam = (outCount + f->lastsam) & 0xF; + f->sample += outCount; + f->memin += ADPCMFBYTES * nframes; + return ptr; + } + + // The unlooped case, which is executed most of the time + + nSam = nframes << LFSAMPLES; + + // overFlow is the number of bytes past the end of the bitstream I try to generate + overFlow = f->memin + nbytes - ((uintptr_t)f->table->base + f->table->len); + if (overFlow < 0) { + overFlow = 0; + } + nOver = (overFlow / ADPCMFBYTES) << LFSAMPLES; + if (nOver > nSam + nLeft) { + nOver = nSam + nLeft; + } + + nbytes -= overFlow; + + if (nOver - (nOver & 0xF) < outCount) { + decoded = true; + ptr = _decodeChunk(ptr, f, nSam - nOver, nbytes, *outp, inp, f->first); + + if (f->lastsam != 0) { + *outp += f->lastsam << 1; + } else { + *outp += ADPCMFSIZE << 1; + } + + f->lastsam = (outCount + f->lastsam) & 0xF; + f->sample += outCount; + f->memin += ADPCMFBYTES * nframes; + } else { + f->lastsam = 0; + f->memin += ADPCMFBYTES * nframes; + } + + // Put zeros in if necessary + if (nOver != 0) { + f->lastsam = 0; + if (decoded) { + startZero = (nLeft + nSam - nOver) << 1; + } else { + startZero = 0; + } + aClearBuffer(ptr++, startZero + *outp, nOver << 1); + } + return ptr; +} + +Acmd* alRaw16Pull(void* filter, s16* outp, s32 outCount, s32 sampleOffset, Acmd* p) { + Acmd* ptr = p; + s32 nbytes; + s32 dramLoc; + s32 dramAlign; + s32 dmemAlign; + s32 overFlow; + s32 startZero; + s32 nSam; + s32 op; + ALLoadFilter* f = (ALLoadFilter*)filter; + ALFilter* a = (ALFilter*)filter; + + if (outCount == 0) { + return ptr; + } + + if ((u32)(outCount + f->sample) > f->loop.end && f->loop.count != 0) { + nSam = f->loop.end - f->sample; + nbytes = nSam << 1; + + if (nSam > 0) { + dramLoc = (f->dma)(f->memin, nbytes, f->dmaState); + + // Make sure enough is loaded into DMEM to take care of 8 byte alignment + dramAlign = dramLoc & 7; + nbytes += dramAlign; + aSetBuffer(ptr++, 0, *outp, 0, nbytes + 8 - (nbytes & 7)); + aLoadBuffer(ptr++, dramLoc - dramAlign); + } else { + dramAlign = 0; + } + + // Fix up output pointer to allow for dram alignment + *outp += dramAlign; + + f->memin = (uintptr_t)f->table->base + (f->loop.start << 1); + f->sample = f->loop.start; + op = *outp; + + while (outCount > nSam) { + op += (nSam << 1); + outCount -= nSam; + + // -1 is loop forever + if (f->loop.count != -1u && f->loop.count != 0) { + f->loop.count--; + } + + // What to compute. + nSam = MIN((u32)outCount, f->loop.end - f->loop.start); + nbytes = nSam << 1; + + // Do the next section, same as last. + dramLoc = (f->dma)(f->memin, nbytes, f->dmaState); + + // Make sure enough is loaded into DMEM to take care of 8 byte alignment + dramAlign = dramLoc & 7; + nbytes += dramAlign; + if (op & 7) { + dmemAlign = 8 - (op & 7); + } else { + dmemAlign = 0; + } + + aSetBuffer(ptr++, 0, op + dmemAlign, 0, nbytes + 8 - (nbytes & 7)); + aLoadBuffer(ptr++, dramLoc - dramAlign); + + // Merge the two sections in DMEM. + if (dramAlign || dmemAlign) + aDMEMMove(ptr++, op + dramAlign + dmemAlign, op, nSam << 1); + } + + f->sample += outCount; + f->memin += outCount << 1; + + return ptr; + } + + // The unlooped case, which is executed most of the time + // + // overFlow is the number of bytes past the end + // of the bitstream I try to generate + + nbytes = outCount << 1; + overFlow = f->memin + nbytes - ((uintptr_t)f->table->base + f->table->len); + if (overFlow < 0) { + overFlow = 0; + } + if (overFlow > nbytes) { + overFlow = nbytes; + } + + if (overFlow < nbytes) { + if (outCount > 0) { + nbytes -= overFlow; + dramLoc = f->dma(f->memin, nbytes, f->dmaState); + + // Make sure enough is loaded into DMEM to take care of 8 byte alignment + dramAlign = dramLoc & 7; + nbytes += dramAlign; + aSetBuffer(ptr++, 0, *outp, 0x000, nbytes + 8 - (nbytes & 7)); + aLoadBuffer(ptr++, dramLoc - dramAlign); + } else { + dramAlign = 0; + } + *outp += dramAlign; + + f->sample += outCount; + f->memin += outCount << 1; + } else { + f->memin += outCount << 1; + } + + // Put zeros in if necessary + if (overFlow != 0) { + startZero = (outCount << 1) - overFlow; + if (startZero < 0) { + startZero = 0; + } + aClearBuffer(ptr++, startZero + *outp, overFlow); + } + return ptr; +} + +s32 alLoadParam(void* filter, s32 paramID, void* param) { + ALLoadFilter* a = (ALLoadFilter*)filter; + ALFilter* f = (ALFilter*)filter; + + switch (paramID) { + case AL_FILTER_SET_WAVETABLE: + a->table = (ALWaveTable*)param; + a->memin = (uintptr_t)a->table->base; + a->sample = 0; + + switch (a->table->type) { + case AL_ADPCM_WAVE: + // Set up the correct handler + f->handler = alAdpcmPull; + + // Make sure the table length is an integer number of frames + a->table->len = ADPCMFBYTES * (s32)(a->table->len / ADPCMFBYTES); + + a->bookSize = 2 * a->table->waveInfo.adpcmWave.book->order * + a->table->waveInfo.adpcmWave.book->npredictors * ADPCMVSIZE; + if (a->table->waveInfo.adpcmWave.loop != NULL) { + a->loop.start = a->table->waveInfo.adpcmWave.loop->start; + a->loop.end = a->table->waveInfo.adpcmWave.loop->end; + a->loop.count = a->table->waveInfo.adpcmWave.loop->count; + alCopy(a->table->waveInfo.adpcmWave.loop->state, a->lstate, sizeof(ADPCM_STATE)); + } else { + a->loop.start = a->loop.end = a->loop.count = 0; + } + break; + + case AL_RAW16_WAVE: + f->handler = alRaw16Pull; + if (a->table->waveInfo.rawWave.loop != NULL) { + a->loop.start = a->table->waveInfo.rawWave.loop->start; + a->loop.end = a->table->waveInfo.rawWave.loop->end; + a->loop.count = a->table->waveInfo.rawWave.loop->count; + } else { + a->loop.start = a->loop.end = a->loop.count = 0; + } + break; + + default: + break; + } + break; + + case AL_FILTER_RESET: + a->lastsam = 0; + a->first = true; + a->sample = 0; + + // sct 2/14/96 - Check table since it is initialized to null and get loop info according to table type. + if (a->table != NULL) { + a->memin = (uintptr_t)a->table->base; + if (a->table->type == AL_ADPCM_WAVE) { + if (a->table->waveInfo.adpcmWave.loop != NULL) { + a->loop.count = a->table->waveInfo.adpcmWave.loop->count; + } + } else if (a->table->type == AL_RAW16_WAVE) { + if (a->table->waveInfo.rawWave.loop != NULL) { + a->loop.count = a->table->waveInfo.rawWave.loop->count; + } + } + } + break; + + default: + break; + } +} + +static Acmd* _decodeChunk(Acmd* ptr, ALLoadFilter* f, s32 tsam, s32 nbytes, s16 outp, s16 inp, u32 flags) { + s32 dramAlign; + s32 dramLoc; + + if (nbytes > 0) { + dramLoc = f->dma(f->memin, nbytes, f->dmaState); + // Make sure enough is loaded into DMEM to take care of 8 byte alignment + dramAlign = dramLoc & 7; + nbytes += dramAlign; + aSetBuffer(ptr++, 0, inp, 0, nbytes + 8 - (nbytes & 7)); + aLoadBuffer(ptr++, dramLoc - dramAlign); + } else { + dramAlign = 0; + } + + if (flags & A_LOOP) { + aSetLoop(ptr++, K0_TO_PHYS(f->lstate)); + } + + aSetBuffer(ptr++, 0, inp + dramAlign, outp, tsam << 1); + aADPCMdec(ptr++, flags, K0_TO_PHYS(f->state)); + f->first = false; + + return ptr; +} diff --git a/src/libultra/audio/mainbus.c b/src/libultra/audio/mainbus.c index 8b13789179..57a86d0d54 100644 --- a/src/libultra/audio/mainbus.c +++ b/src/libultra/audio/mainbus.c @@ -1 +1,38 @@ +#include "libaudio.h" +#include "synthInternals.h" +Acmd* alMainBusPull(void* filter, s16* outp, s32 outCount, s32 sampleOffset, Acmd* p) { + Acmd* ptr = p; + ALMainBus* m = (ALMainBus*)filter; + ALFilter** sources = m->sources; + s32 i; + + // clear the output buffers here + aClearBuffer(ptr++, AL_MAIN_L_OUT, outCount << 1); + aClearBuffer(ptr++, AL_MAIN_R_OUT, outCount << 1); + + for (i = 0; i < m->sourceCount; i++) { + ptr = sources[i]->handler(sources[i], outp, outCount, sampleOffset, ptr); + aSetBuffer(ptr++, 0, 0x000, 0x000, outCount << 1); + aMix(ptr++, 0, 0x7FFF, AL_AUX_L_OUT, AL_MAIN_L_OUT); + aMix(ptr++, 0, 0x7FFF, AL_AUX_R_OUT, AL_MAIN_R_OUT); + } + + return ptr; +} + +s32 alMainBusParam(void* filter, s32 paramID, void* param) { + ALMainBus* m = (ALMainBus*)filter; + ALFilter** sources = m->sources; + + switch (paramID) { + case AL_FILTER_ADD_SOURCE: + sources[m->sourceCount++] = (ALFilter*)param; + break; + + default: + break; + } + + return 0; +} diff --git a/src/libultra/audio/resample.c b/src/libultra/audio/resample.c index 8b13789179..8301d22a1a 100644 --- a/src/libultra/audio/resample.c +++ b/src/libultra/audio/resample.c @@ -1 +1,98 @@ +#include "libaudio.h" +#include "synthInternals.h" +#include "ultra64/convert.h" +Acmd* alResamplePull(void* filter, s16* outp, s32 outCnt, s32 sampleOffset, Acmd* p) { + ALResampler* f = (ALResampler*)filter; + Acmd* ptr = p; + s16 inp; + s32 inCount; + ALFilter* source = f->filter.source; + s32 incr; + f32 finCount; + + inp = AL_DECODER_OUT; + + if (outCnt == 0) { + return ptr; + } + + // check if resampler is required + if (f->upitch != 0) { + ptr = (*source->handler)(source, &inp, outCnt, sampleOffset, p); + aDMEMMove(ptr++, inp, *outp, outCnt << 1); + } else { + // clip to maximum allowable pitch + // FIXME: should we check for some minimum as well? + if (f->ratio > MAX_RATIO) { + f->ratio = MAX_RATIO; + } + + // quantize the pitch + f->ratio = (s32)(f->ratio * UNITY_PITCH); + f->ratio = f->ratio / UNITY_PITCH; + + // determine how many samples to generate + finCount = f->delta + f->ratio * (f32)outCnt; + inCount = (s32)finCount; + f->delta = finCount - (f32)inCount; + + // ask all filters upstream from us to build their command lists. + ptr = (*source->handler)(source, &inp, inCount, sampleOffset, p); + + // construct our portion of the command list + incr = (s32)(f->ratio * UNITY_PITCH); + aSetBuffer(ptr++, 0, inp, *outp, outCnt << 1); + aResample(ptr++, f->first, incr, osVirtualToPhysical(f->state)); + f->first = false; + } + return ptr; +} + +s32 alResampleParam(void* filter, s32 paramID, void* param) { + ALFilter* f = (ALFilter*)filter; + ALResampler* r = (ALResampler*)filter; + union { + f32 f; + s32 i; + } data; + + switch (paramID) { + case AL_FILTER_SET_SOURCE: + f->source = (ALFilter*)param; + break; + + case AL_FILTER_RESET: + r->delta = 0.0f; + r->first = true; + r->motion = AL_STOPPED; + r->upitch = 0; + if (f->source != NULL) { + (*f->source->setParam)(f->source, AL_FILTER_RESET, 0); + } + break; + + case AL_FILTER_START: + r->motion = AL_PLAYING; + if (f->source != NULL) { + (*f->source->setParam)(f->source, AL_FILTER_START, 0); + } + break; + + case AL_FILTER_SET_PITCH: + data.i = (s32)param; + r->ratio = data.f; + break; + + case AL_FILTER_SET_UNITY_PITCH: + r->upitch = 1; + break; + + default: + if (f->source != NULL) { + (*f->source->setParam)(f->source, paramID, param); + } + break; + } + return 0; +} diff --git a/src/libultra/audio/reverb.c b/src/libultra/audio/reverb.c index 8b13789179..453147f125 100644 --- a/src/libultra/audio/reverb.c +++ b/src/libultra/audio/reverb.c @@ -1 +1,345 @@ +#include "libaudio.h" +#include "synthInternals.h" +#include "ultra64/convert.h" +#define RANGE 2.0 + +extern ALGlobals* alGlobals; + +Acmd* _loadOutputBuffer(ALFx* r, ALDelay* d, s32 buff, s32 incount, Acmd* p); +Acmd* _loadBuffer(ALFx* r, s16* curr_ptr, s32 buff, s32 count, Acmd* p); +Acmd* _saveBuffer(ALFx* r, s16* curr_ptr, s32 buff, s32 count, Acmd* p); +Acmd* _filterBuffer(ALLowPass* lp, s32 buff, s32 count, Acmd* p); +f32 _doModFunc(ALDelay* d, s32 count); + +Acmd* alFxPull(void* filter, s16* outp, s32 outCount, s32 sampleOffset, Acmd* p) { + Acmd* ptr = p; + ALFx* r = (ALFx*)filter; + ALFilter* source = r->filter.source; + s16 i; + s16 buff1; + s16 buff2; + s16 input; + s16 output; + s16* in_ptr; + s16* out_ptr; + s16 gain; + s16* prev_out_ptr = NULL; + ALDelay* d; + ALDelay* pd; + + // pull channels going into this effect first + ptr = (*source->handler)(source, outp, outCount, sampleOffset, p); + + input = AL_AUX_L_OUT; + output = AL_AUX_R_OUT; + buff1 = AL_TEMP_0; + buff2 = AL_TEMP_1; + + aSetBuffer(ptr++, 0, 0x000, 0x000, outCount << 1); // set the buffer size + aMix(ptr++, 0, 0xDA83, AL_AUX_L_OUT, input); // .707L = L - .293L + aMix(ptr++, 0, 0x5A82, AL_AUX_R_OUT, input); // mix the AuxL and AuxR into the AuxL + // and write the mixed value to the delay line at r->input + ptr = _saveBuffer(r, r->input, input, outCount, ptr); + + // clear the AL_AUX_R_OUT + aClearBuffer(ptr++, output, outCount << 1); + + for (i = 0; i < r->section_count; i++) { + d = &r->delay[i]; // get the ALDelay structure + in_ptr = &r->input[-d->input]; + out_ptr = &r->input[-d->output]; + + if (in_ptr == prev_out_ptr) { + s16 t = buff2; + buff2 = buff1; + buff1 = t; + } else { + // load data at in_ptr into buff1 + ptr = _loadBuffer(r, in_ptr, buff1, outCount, ptr); + } + ptr = _loadOutputBuffer(r, d, buff2, outCount, ptr); + + if (d->ffcoef != 0) { + aMix(ptr++, 0, (u16)d->ffcoef, buff1, buff2); + if (d->rs == NULL && d->lp == NULL) { + ptr = _saveBuffer(r, out_ptr, buff2, outCount, ptr); + } + } + + if (d->fbcoef != 0) { + aMix(ptr++, 0, (u16)d->fbcoef, buff2, buff1); + ptr = _saveBuffer(r, in_ptr, buff1, outCount, ptr); + } + + if (d->lp != NULL) { + ptr = _filterBuffer(d->lp, buff2, outCount, ptr); + } + + if (d->rs == NULL) { + ptr = _saveBuffer(r, out_ptr, buff2, outCount, ptr); + } + + if (d->gain != 0) { + aMix(ptr++, 0, (u16)d->gain, buff2, output); + } + + prev_out_ptr = &r->input[d->output]; + } + + // bump the master delay line input pointer modulo the length + r->input += outCount; + if (r->input > &r->base[r->length]) { + r->input -= r->length; + } + + // output already in AL_AUX_R_OUT, just copy to AL_AUX_L_OUT + aDMEMMove(ptr++, output, AL_AUX_L_OUT, outCount << 1); + return ptr; +} + +s32 alFxParam(void* filter, s32 paramID, void* param) { + if (paramID == AL_FILTER_SET_SOURCE) { + ALFilter* f = (ALFilter*)filter; + f->source = (ALFilter*)param; + } + return 0; +} + +/** + * This routine gets called by alSynSetFXParam. No checking takes place to + * verify the validity of the paramID or the param value. input and output + * values must be 8 byte aligned, so round down any param passed. + */ +s32 alFxParamHdl(void* filter, s32 paramID, void* param) { + ALFx* f = (ALFx*)filter; + s32 p = (paramID - 2) % 8; + s32 s = (paramID - 2) / 8; + s32 val = *(s32*)param; + +#define INPUT_PARAM 0 +#define OUTPUT_PARAM 1 +#define FBCOEF_PARAM 2 +#define FFCOEF_PARAM 3 +#define GAIN_PARAM 4 +#define CHORUSRATE_PARAM 5 +#define CHORUSDEPTH_PARAM 6 +#define LPFILT_PARAM 7 + + switch (p) { + case INPUT_PARAM: + f->delay[s].input = (u32)val & 0xFFFFFFF8; + break; + + case OUTPUT_PARAM: + f->delay[s].output = (u32)val & 0xFFFFFFF8; + break; + + case FFCOEF_PARAM: + f->delay[s].ffcoef = (s16)val; + break; + + case FBCOEF_PARAM: + f->delay[s].fbcoef = (s16)val; + break; + + case GAIN_PARAM: + f->delay[s].gain = (s16)val; + break; + + case CHORUSRATE_PARAM: + f->delay[s].rsinc = (((f32)val / 1000) * RANGE) / alGlobals->drvr.outputRate; + break; + + // the following constant is derived from: + // + // ratio = 2^(cents/1200) + // + // and therefore for hundredths of a cent + // x + // ln(ratio) = --------------- + // (120,000)/ln(2) + // where + // 120,000/ln(2) = 173123.40... +#define CONVERT 173123.404906676 + + case CHORUSDEPTH_PARAM: + f->delay[s].rsgain = ((f32)val / CONVERT) * (f->delay[s].output - f->delay[s].input); + break; + + case LPFILT_PARAM: + if (f->delay[s].lp != NULL) { + f->delay[s].lp->fc = (s16)val; + _init_lpfilter(f->delay[s].lp); + } + break; + } + return 0; +} + +Acmd* _loadOutputBuffer(ALFx* r, ALDelay* d, s32 buff, s32 incount, Acmd* p) { + Acmd* ptr = p; + s32 ratio; + s32 count; + s32 rbuff = AL_TEMP_2; + s16* out_ptr; + f32 fincount; + f32 fratio; + f32 delta; + s32 ramalign = 0; + s32 length; + + // The following section implements the chorus resampling. Modulate where you pull + // the samples from, since you need varying amounts of samples. + if (d->rs != NULL) { + length = d->output - d->input; + // get the number of samples to modulate by + delta = _doModFunc(d, incount); + // find ratio of delta to delay length and quantize to same resolution as resampler + delta /= length; // convert delta from number of samples to a pitch ratio + delta = (s32)(delta * UNITY_PITCH); // quantize to value microcode will use + delta = delta / UNITY_PITCH; + // pitch ratio needs to be centered around 1, not zero + fratio = 1.0 - delta; + + // d->rs->delta is the difference between the fractional and integer value of the samples needed. + // fratio * incount + rs->delta gives the number of samples needed for this frame. + fincount = d->rs->delta + (fratio * (f32)incount); + count = (s32)fincount; // quantize to s32 + d->rs->delta = fincount - (f32)count; // calculate the round off and store + + // d->rsdelta is amount the out_ptr has deviated from its starting position. + // You calc the out_ptr by taking d->output - d->rsdelta, and then using the + // negative of that as an index into the delay buffer. loadBuffer that uses this + // value then bumps it up if it is below the delay buffer. + out_ptr = &r->input[-(d->output - d->rsdelta)]; + // calculate the number of samples needed to align the buffer + ramalign = ((intptr_t)out_ptr & 7) >> 1; + + // load the rbuff with samples, note that there will be ramalign worth of samples at the + // begining which you don't care about. + ptr = _loadBuffer(r, out_ptr - ramalign, rbuff, count + ramalign, ptr); + + // convert fratio to 16 bit fraction for microcode use + ratio = (s32)(fratio * UNITY_PITCH); + // set the buffers, and do the resample + aSetBuffer(ptr++, 0, rbuff + (ramalign << 1), buff, incount << 1); + aResample(ptr++, d->rs->first, ratio, osVirtualToPhysical(d->rs->state)); + + d->rs->first = false; // turn off first time flag + d->rsdelta += count - incount; // add the number of samples to d->rsdelta + } else { + out_ptr = &r->input[-d->output]; + ptr = _loadBuffer(r, out_ptr, buff, incount, ptr); + } + return ptr; +} + +/** + * This routine is for loading data from the delay line buff. If the + * address of curr_ptr < r->base, it will force it to be within r->base + * space, If the load goes past the end of r->base it will wrap around. + * Cause count bytes of data at curr_ptr (within the delay line) to be + * loaded into buff. (Buff is a dmem buffer) + */ +Acmd* _loadBuffer(ALFx* r, s16* curr_ptr, s32 buff, s32 count, Acmd* p) { + Acmd* ptr = p; + s32 after_end; + s32 before_end; + s16* updated_ptr; + s16* delay_end; + + delay_end = &r->base[r->length]; + + if (curr_ptr < r->base) { + curr_ptr += r->length; + } + updated_ptr = curr_ptr + count; + + if (updated_ptr > delay_end) { + after_end = updated_ptr - delay_end; + before_end = delay_end - curr_ptr; + + aSetBuffer(ptr++, 0, buff, 0x000, before_end << 1); + aLoadBuffer(ptr++, osVirtualToPhysical(curr_ptr)); + aSetBuffer(ptr++, 0, buff + (before_end << 1), 0, after_end << 1); + aLoadBuffer(ptr++, osVirtualToPhysical(r->base)); + } else { + aSetBuffer(ptr++, 0, buff, 0x000, count << 1); + aLoadBuffer(ptr++, osVirtualToPhysical(curr_ptr)); + } + aSetBuffer(ptr++, 0, 0x000, 0x000, count << 1); + return ptr; +} + +/** + * This routine is for writing data to the delay line buff. If the + * address of curr_ptr < r->base, it will force it to be within r->base + * space. If the write goes past the end of r->base, it will wrap around + * Cause count bytes of data at buff to be written to delay line, curr_ptr. + */ +Acmd* _saveBuffer(ALFx* r, s16* curr_ptr, s32 buff, s32 count, Acmd* p) { + Acmd* ptr = p; + s32 after_end; + s32 before_end; + s16* updated_ptr; + s16* delay_end; + + delay_end = &r->base[r->length]; + if (curr_ptr < r->base) { + // probably just security, shouldn't occur + curr_ptr += r->length; + } + updated_ptr = curr_ptr + count; + + if (updated_ptr > delay_end) { // if the data wraps past end of r->base + after_end = updated_ptr - delay_end; + before_end = delay_end - curr_ptr; + + aSetBuffer(ptr++, 0, 0x000, buff, before_end << 1); + aSaveBuffer(ptr++, osVirtualToPhysical(curr_ptr)); + aSetBuffer(ptr++, 0, 0x000, buff + (before_end << 1), after_end << 1); + aSaveBuffer(ptr++, osVirtualToPhysical(r->base)); + aSetBuffer(ptr++, 0, 0x000, 0x000, count << 1); + } else { + aSetBuffer(ptr++, 0, 0x000, buff, count << 1); + aSaveBuffer(ptr++, osVirtualToPhysical(curr_ptr)); + } + return ptr; +} + +Acmd* _filterBuffer(ALLowPass* lp, s32 buff, s32 count, Acmd* p) { + Acmd* ptr = p; + + aSetBuffer(ptr++, 0, buff, buff, count << 1); + aLoadADPCM(ptr++, 32, osVirtualToPhysical(lp->fcvec.fccoef)); + aPoleFilter(ptr++, lp->first, lp->fgain, osVirtualToPhysical(lp->fstate)); + lp->first = false; + + return ptr; +} + +/** + * Generate a triangle wave from -1 to 1, and find the current position + * in the wave. (Rate of the wave is controlled by d->rsinc, which is chorus + * rate) Multiply the current triangle wave value by d->rsgain, (chorus depth) + * which is expressed in number of samples back from output pointer the chorus + * should go at it's full chorus. In otherwords, this function returns a number + * of samples the output pointer should modulate backwards. + */ +f32 _doModFunc(ALDelay* d, s32 count) { + f32 val; + + // generate bipolar sawtooth from -RANGE to +RANGE + d->rsval += d->rsinc * count; + d->rsval = (d->rsval > RANGE) ? (d->rsval - RANGE * 2) : d->rsval; + + // convert to monopolar triangle from 0 to RANGE + val = d->rsval; + val = (val < 0) ? -val : val; + + // convert to bipolar triangle from -1 to 1 + val -= RANGE / 2; + + return d->rsgain * val; +} diff --git a/src/libultra/audio/save.c b/src/libultra/audio/save.c index 8b13789179..a6d25f6dc4 100644 --- a/src/libultra/audio/save.c +++ b/src/libultra/audio/save.c @@ -1 +1,36 @@ +#include "libaudio.h" +#include "synthInternals.h" +Acmd* alSavePull(void* filter, s16* outp, s32 outCount, s32 sampleOffset, Acmd* p) { + Acmd* ptr = p; + ALSave* f = (ALSave*)filter; + ALFilter* source = f->filter.source; + + ptr = (*source->handler)(source, outp, outCount, sampleOffset, ptr); + + aSetBuffer(ptr++, 0, 0x000, 0x000, outCount << 1); + aInterleave(ptr++, AL_MAIN_L_OUT, AL_MAIN_R_OUT); + aSetBuffer(ptr++, 0, 0x000, 0x000, outCount << 2); + aSaveBuffer(ptr++, f->dramout); + return ptr; +} + +s32 alSaveParam(void* filter, s32 paramID, void* param) { + ALSave* a = (ALSave*)filter; + ALFilter* f = (ALFilter*)filter; + s32 pp = (s32)param; + + switch (paramID) { + case AL_FILTER_SET_SOURCE: + f->source = (ALFilter*)param; + break; + + case AL_FILTER_SET_DRAM: + a->dramout = pp; + break; + + default: + break; + } + return 0; +} diff --git a/src/libultra/audio/sl.c b/src/libultra/audio/sl.c index 8b13789179..7f2ebe28b8 100644 --- a/src/libultra/audio/sl.c +++ b/src/libultra/audio/sl.c @@ -1 +1,35 @@ +#include "libaudio.h" +ALGlobals* alGlobals = NULL; + +void alInit(ALGlobals* g, ALSynConfig* c) { + if (alGlobals == NULL) { + alGlobals = g; + alSynNew(&alGlobals->drvr, c); + } +} + +void alClose(ALGlobals* glob) { + if (alGlobals != NULL) { + alSynDelete(&glob->drvr); + alGlobals = NULL; + } +} + +void alLink(ALLink* ln, ALLink* to) { + ln->next = to->next; + ln->prev = to; + if (to->next != NULL) { + to->next->prev = ln; + } + to->next = ln; +} + +void alUnlink(ALLink* ln) { + if (ln->next != NULL) { + ln->next->prev = ln->prev; + } + if (ln->prev != NULL) { + ln->prev->next = ln->next; + } +} diff --git a/src/libultra/audio/synallocfx.c b/src/libultra/audio/synallocfx.c index 8b13789179..8c530fc19d 100644 --- a/src/libultra/audio/synallocfx.c +++ b/src/libultra/audio/synallocfx.c @@ -1 +1,8 @@ +#include "synthInternals.h" +ALFxRef* alSynAllocFX(ALSynth* s, s16 bus, ALSynConfig* c, ALHeap* hp) { + alFxNew(&s->auxBus[bus].fx[0], c, hp); + alFxParam(&s->auxBus[bus].fx[0], AL_FILTER_SET_SOURCE, &s->auxBus[bus]); + alMainBusParam(s->mainBus, AL_FILTER_ADD_SOURCE, &s->auxBus[bus].fx[0]); + return (ALFxRef)&s->auxBus[bus].fx[0]; +} diff --git a/src/libultra/audio/syndelete.c b/src/libultra/audio/syndelete.c index 8b13789179..7af0d50090 100644 --- a/src/libultra/audio/syndelete.c +++ b/src/libultra/audio/syndelete.c @@ -1 +1,5 @@ +#include "synthInternals.h" +void alSynDelete(ALSynth* drvr) { + drvr->head = NULL; +} diff --git a/src/libultra/audio/synthInternals.h b/src/libultra/audio/synthInternals.h new file mode 100644 index 0000000000..5fa8108f57 --- /dev/null +++ b/src/libultra/audio/synthInternals.h @@ -0,0 +1,312 @@ +#ifndef __audioInternals__ +#define __audioInternals__ + +#include "libaudio.h" + +/** + * filter message ids + */ +enum { + AL_FILTER_FREE_VOICE, + AL_FILTER_SET_SOURCE, + AL_FILTER_ADD_SOURCE, + AL_FILTER_ADD_UPDATE, + AL_FILTER_RESET, + AL_FILTER_SET_WAVETABLE, + AL_FILTER_SET_DRAM, + AL_FILTER_SET_PITCH, + AL_FILTER_SET_UNITY_PITCH, + AL_FILTER_START, + AL_FILTER_SET_STATE, + AL_FILTER_SET_VOLUME, + AL_FILTER_SET_PAN, + AL_FILTER_START_VOICE_ALT, + AL_FILTER_START_VOICE, + AL_FILTER_STOP_VOICE, + AL_FILTER_SET_FXAMT +}; + +#define AL_MAX_RSP_SAMPLES 160 + +/** + * buffer locations based on AL_MAX_RSP_SAMPLES + */ +#define AL_DECODER_IN 0x000 +#define AL_RESAMPLER_OUT 0x000 +#define AL_TEMP_0 0x000 +#define AL_DECODER_OUT 0x140 +#define AL_TEMP_1 0x140 +#define AL_TEMP_2 0x280 +#define AL_MAIN_L_OUT 0x440 +#define AL_MAIN_R_OUT 0x580 +#define AL_AUX_L_OUT 0x6C0 +#define AL_AUX_R_OUT 0x800 + +/** + * filter types + */ +enum { + AL_ADPCM, + AL_RESAMPLE, + AL_BUFFER, + AL_SAVE, + AL_ENVMIX, + AL_FX, + AL_AUXBUS, + AL_MAINBUS +}; + +typedef struct ALParam_s { + struct ALParam_s* next; + s32 delta; + s16 type; + union { + f32 f; + s32 i; + } data; + union { + f32 f; + s32 i; + } moredata; + union { + f32 f; + s32 i; + } stillmoredata; + union { + f32 f; + s32 i; + } yetstillmoredata; +} ALParam; + +typedef struct { + struct ALParam_s* next; + s32 delta; + s16 type; + s16 unity; // disable resampler + f32 pitch; + s16 volume; + ALPan pan; + u8 fxMix; + s32 samples; + struct ALWaveTable_s* wave; +} ALStartParamAlt; + +typedef struct { + struct ALParam_s* next; + s32 delta; + s16 type; + s16 unity; // disable resampler + struct ALWaveTable_s* wave; +} ALStartParam; + +typedef struct { + struct ALParam_s* next; + s32 delta; + s16 type; + struct PVoice_s* pvoice; +} ALFreeParam; + +typedef Acmd* (*ALCmdHandler)(void*, s16*, s32, s32, Acmd*); +typedef s32 (*ALSetParam)(void*, s32, void*); + +typedef struct ALFilter_s { + struct ALFilter_s* source; + ALCmdHandler handler; + ALSetParam setParam; + s16 inp; + s16 outp; + s32 type; +} ALFilter; + +void alFilterNew(ALFilter* f, ALCmdHandler h, ALSetParam s, s32 type); + +// Depends on number of subframes per frame and loop length +#define AL_MAX_ADPCM_STATES 3 + +typedef struct { + ALFilter filter; + ADPCM_STATE* state; + ADPCM_STATE* lstate; + ALRawLoop loop; + struct ALWaveTable_s* table; + s32 bookSize; + ALDMAproc dma; + void* dmaState; + s32 sample; + s32 lastsam; + s32 first; + s32 memin; +} ALLoadFilter; + +void alLoadNew(ALLoadFilter* f, ALDMANew dmaNew, ALHeap* hp); +Acmd* alAdpcmPull(void* filter, s16* outp, s32 outCount, s32 sampleOffset, Acmd* p); +Acmd* alRaw16Pull(void* filter, s16* outp, s32 outCount, s32 sampleOffset, Acmd* p); +s32 alLoadParam(void* filter, s32 paramID, void* param); + +typedef struct ALResampler_s { + ALFilter filter; + RESAMPLE_STATE* state; + f32 ratio; + s32 upitch; + f32 delta; + s32 first; + ALParam* ctrlList; + ALParam* ctrlTail; + s32 motion; +} ALResampler; + +typedef struct { + s16 fc; + s16 fgain; + union { + s16 fccoef[16]; + s64 force_aligned; + } fcvec; + POLEF_STATE* fstate; + s32 first; +} ALLowPass; + +typedef struct { + u32 input; + u32 output; + s16 ffcoef; + s16 fbcoef; + s16 gain; + f32 rsinc; + f32 rsval; + s32 rsdelta; + f32 rsgain; + ALLowPass* lp; + ALResampler* rs; +} ALDelay; + +typedef s32 (*ALSetFXParam)(void*, s32, void*); +typedef struct { + struct ALFilter_s filter; + s16* base; + s16* input; + u32 length; + ALDelay* delay; + u8 section_count; + ALSetFXParam paramHdl; +} ALFx; + +void alFxNew(ALFx* r, ALSynConfig* c, ALHeap* hp); +Acmd* alFxPull(void* filter, s16* outp, s32 outCount, s32 sampleOffset, Acmd* p); +s32 alFxParam(void* filter, s32 paramID, void* param); +s32 alFxParamHdl(void* filter, s32 paramID, void* param); + +#define AL_MAX_MAIN_BUS_SOURCES 1 +typedef struct ALMainBus_s { + ALFilter filter; + s32 sourceCount; + s32 maxSources; + ALFilter** sources; +} ALMainBus; + +void alMainBusNew(ALMainBus* m, void* sources, s32 maxSources); +Acmd* alMainBusPull(void* filter, s16* outp, s32 outCount, s32 sampleOffset, Acmd* p); +s32 alMainBusParam(void* filter, s32 paramID, void* param); + +#define AL_MAX_AUX_BUS_SOURCES 8 +#define AL_MAX_AUX_BUS_FX 1 +typedef struct ALAuxBus_s { + ALFilter filter; + s32 sourceCount; + s32 maxSources; + ALFilter** sources; + ALFx fx[AL_MAX_AUX_BUS_FX]; +} ALAuxBus; + +void alAuxBusNew(ALAuxBus* m, void* sources, s32 maxSources); +Acmd* alAuxBusPull(void* filter, s16* outp, s32 outCount, s32 sampleOffset, Acmd* p); +s32 alAuxBusParam(void* filter, s32 paramID, void* param); + +void alResampleNew(ALResampler* r, ALHeap* hp); +Acmd* alResamplePull(void* filter, s16* outp, s32 outCnt, s32 sampleOffset, Acmd* p); +s32 alResampleParam(void* filter, s32 paramID, void* param); + +typedef struct ALSave_s { + ALFilter filter; + s32 dramout; + s32 first; +} ALSave; + +void alSaveNew(ALSave* f); +Acmd* alSavePull(void* filter, s16* outp, s32 outCount, s32 sampleOffset, Acmd* p); +s32 alSaveParam(void* filter, s32 paramID, void* param); + +typedef struct ALEnvMixer_s { + ALFilter filter; + ENVMIX_STATE* state; + s16 pan; + s16 volume; + s16 cvolL; + s16 cvolR; + s16 dryamt; + s16 wetamt; + u16 lratl; + s16 lratm; + s16 ltgt; + u16 rratl; + s16 rratm; + s16 rtgt; + s32 delta; + s32 segEnd; + s32 first; + ALParam* ctrlList; + ALParam* ctrlTail; + ALFilter** sources; + s32 motion; +} ALEnvMixer; + +void alEnvmixerNew(ALEnvMixer* e, ALHeap* hp); +Acmd* alEnvmixerPull(void* filter, s16* outp, s32 outCount, s32 sampleOffset, Acmd* p); +s32 alEnvmixerParam(void* filter, s32 paramID, void* param); + + +/** + * heap stuff + */ + +typedef struct { + s32 magic; // check structure integrety + s32 size; // size of this allocated block + u8* file; // file that this alloc was called from + s32 line; // line that it was called from + s32 count; // heap call number + s32 pad0; + s32 pad1; + s32 pad2; // Make it 32 bytes +} HeapInfo; + +// DCache line size (-1) +#define AL_CACHE_ALIGN 15 + +/** + * synth stuff + */ + +typedef struct PVoice_s { + ALLink node; + struct ALVoice_s* vvoice; + ALFilter* channelKnob; + ALLoadFilter decoder; + ALResampler resampler; + ALEnvMixer envmixer; + s32 offset; +} PVoice; + +// prototypes for private driver functions + +ALParam* __allocParam(void); +void __freeParam(ALParam* param); +void _freePVoice(ALSynth* drvr, PVoice* pvoice); +void _collectPVoices(ALSynth* drvr); + +s32 _timeToSamples(ALSynth* synth, s32 micros); +ALMicroTime _samplesToTime(ALSynth* synth, s32 samples); + +void _init_lpfilter(ALLowPass* lp); + +#endif diff --git a/src/libultra/audio/synthesizer.c b/src/libultra/audio/synthesizer.c index 8b13789179..62d5677ecd 100644 --- a/src/libultra/audio/synthesizer.c +++ b/src/libultra/audio/synthesizer.c @@ -1 +1,219 @@ +#include "synthInternals.h" +#ifndef MIN +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#endif + +static s32 __nextSampleTime(ALSynth* drvr, ALPlayer** client); +static s32 _timeToSamplesNoRound(ALSynth* synth, s32 micros); + +void alSynNew(ALSynth* drvr, ALSynConfig* c) { + s32 i; + ALVoice* vv; + PVoice* pv; + ALVoice* vvoices; + PVoice* pvoices; + ALHeap* hp = c->heap; + ALSave* save; + ALFilter* sources; + ALParam* params; + ALParam* paramPtr; + + drvr->head = NULL; + drvr->numPVoices = c->maxPVoices; + drvr->curSamples = 0; + drvr->paramSamples = 0; + drvr->outputRate = c->outputRate; + drvr->maxOutSamples = AL_MAX_RSP_SAMPLES; + drvr->dma = (ALDMANew)c->dmaproc; + + save = alHeapAlloc(hp, 1, sizeof(ALSave)); + alSaveNew(save); + drvr->outputFilter = &save->filter; + + // allocate and initialize the auxilliary effects bus. at present we only support 1 effects bus. + drvr->auxBus = alHeapAlloc(hp, 1, sizeof(ALAuxBus)); + drvr->maxAuxBusses = 1; + sources = alHeapAlloc(hp, c->maxPVoices, sizeof(ALFilter*)); + alAuxBusNew(drvr->auxBus, sources, c->maxPVoices); + + // allocate and initialize the main bus. + drvr->mainBus = alHeapAlloc(hp, 1, sizeof(ALMainBus)); + sources = alHeapAlloc(hp, c->maxPVoices, sizeof(ALFilter*)); + alMainBusNew(drvr->mainBus, sources, c->maxPVoices); + + if (c->fxType != AL_FX_NONE) { + // Allocate an effect and set parameters + alSynAllocFX(drvr, 0, c, hp); + } else { + // Connect the aux bus to the main bus + alMainBusParam(drvr->mainBus, AL_FILTER_ADD_SOURCE, &drvr->auxBus[0]); + } + + // Build the physical voice lists + drvr->pFreeList.next = NULL; + drvr->pFreeList.prev = NULL; + drvr->pLameList.next = NULL; + drvr->pLameList.prev = NULL; + drvr->pAllocList.next = NULL; + drvr->pAllocList.prev = NULL; + + pvoices = alHeapAlloc(hp, c->maxPVoices, sizeof(PVoice)); + for (i = 0; i < c->maxPVoices; i++) { + pv = &pvoices[i]; + alLink(&pv->node, &drvr->pFreeList); + pv->vvoice = NULL; + + alLoadNew(&pv->decoder, drvr->dma, hp); + alLoadParam(&pv->decoder, AL_FILTER_SET_SOURCE, NULL); + + alResampleNew(&pv->resampler, hp); + alResampleParam(&pv->resampler, AL_FILTER_SET_SOURCE, &pv->decoder); + + alEnvmixerNew(&pv->envmixer, hp); + alEnvmixerParam(&pv->envmixer, AL_FILTER_SET_SOURCE, &pv->resampler); + + alAuxBusParam(drvr->auxBus, AL_FILTER_ADD_SOURCE, &pv->envmixer); + + pv->channelKnob = &pv->envmixer.filter; + } + + alSaveParam(save, AL_FILTER_SET_SOURCE, drvr->mainBus); + + // build the parameter update list + params = alHeapAlloc(hp, c->maxUpdates, sizeof(ALParam)); + drvr->paramList = NULL; + for (i = 0; i < c->maxUpdates; i++) { + paramPtr = ¶ms[i]; + paramPtr->next = drvr->paramList; + drvr->paramList = paramPtr; + } + drvr->heap = hp; +} + +/** + * slAudioFrame() is called every video frame, and is based on the video + * frame interrupt. It is assumed to be an accurate time source for the + * clients. + */ +Acmd* alAudioFrame(Acmd* cmdList, s32* cmdLen, s16* outBuf, s32 outLen) { + ALPlayer* client; + ALFilter* output; + ALSynth* drvr = &alGlobals->drvr; + s16 tmp = 0; // Starting buffer in DMEM + Acmd* cmdlEnd = cmdList; + Acmd* cmdPtr; + s32 nOut; + s16* lOutBuf = outBuf; + + if (drvr->head == NULL) { + // nothing to do + *cmdLen = 0; + return cmdList; + } + + // run down list of clients and execute callback if needed this + // subframe. Here we do all the work for the frame at the + // start. Time offsets that occur before the next frame are + // executed "early". + // + // paramSamples = time of next parameter change. + // curSamples = current sample time. + // so paramSamples - curSamples is the time until the next parameter change. + // if the next parameter change occurs within this frame time (outLen), + // then call back the client that contains the parameter change. + // Note, paramSamples must be rounded down to 16 sample boundary for use + // during the client handler. + + for (drvr->paramSamples = __nextSampleTime(drvr, &client); drvr->paramSamples - drvr->curSamples < outLen; + drvr->paramSamples = __nextSampleTime(drvr, &client)) { + drvr->paramSamples &= ~0xF; + client->samplesLeft += _timeToSamplesNoRound(drvr, (*client->handler)(client)); + } + + // for safety's sake, always store paramSamples aligned to 16 sample boundary. + // this way, if an voice handler routine gets called outside the ALVoiceHandler + // routine (alSynAllocVoice) it will get timestamped with an aligned value and + // will be processed immediately next audio frame. + drvr->paramSamples &= ~0xF; + + // Now build the command list in small chunks + while (outLen > 0) { + nOut = MIN(drvr->maxOutSamples, outLen); + + // construct the command list for each physical voice by calling the head of the filter chain. + cmdPtr = cmdlEnd; + aSegment(cmdPtr++, 0, 0); + output = drvr->outputFilter; + (*output->setParam)(output, AL_FILTER_SET_DRAM, lOutBuf); + cmdlEnd = (*output->handler)(output, &tmp, nOut, drvr->curSamples, cmdPtr); + + outLen -= nOut; + lOutBuf += nOut << 1; // For Stereo + drvr->curSamples += nOut; + } + *cmdLen = (s32)(cmdlEnd - cmdList); + + _collectPVoices(drvr); // collect free physical voices + return cmdlEnd; +} + +ALParam* __allocParam(void) { + ALParam* update = NULL; + ALSynth* drvr = &alGlobals->drvr; + + if (drvr->paramList != NULL) { + update = drvr->paramList; + drvr->paramList = drvr->paramList->next; + update->next = NULL; + } + return update; +} + +void __freeParam(ALParam* param) { + ALSynth* drvr = &alGlobals->drvr; + param->next = drvr->paramList; + drvr->paramList = param; +} + +void _collectPVoices(ALSynth* drvr) { + ALLink* dl; + PVoice* pv; + + while ((dl = drvr->pLameList.next) != NULL) { + pv = (PVoice*)dl; + alUnlink(&pv->node); + alLink(&pv->node, &drvr->pFreeList); + } +} + +void _freePVoice(ALSynth* drvr, PVoice* pvoice) { + // move the voice from the allocated list to the lame list + alUnlink(&pvoice->node); + alLink(&pvoice->node, &drvr->pLameList); +} + +static s32 _timeToSamplesNoRound(ALSynth* synth, s32 micros) { + // Add 0.5 to adjust the average affect of the truncation error produced by casting a float to an int. + f32 tmp = ((f32)micros) * synth->outputRate / 1000000.0 + 0.5; + return (s32)tmp; +} + +s32 _timeToSamples(ALSynth* synth, s32 micros) { + return _timeToSamplesNoRound(synth, micros) & ~0xF; +} + +static s32 __nextSampleTime(ALSynth* drvr, ALPlayer** client) { + ALMicroTime delta = 0x7FFFFFFF; // max delta for s32 + ALPlayer* cl; + + *client = NULL; + + for (cl = drvr->head; cl != NULL; cl = cl->next) { + if (cl->samplesLeft - drvr->curSamples < delta) { + *client = cl; + delta = cl->samplesLeft - drvr->curSamples; + } + } + return (*client)->samplesLeft; +} diff --git a/src/libultra/bb/sa/common.c b/src/libultra/bb/sa/common.c index 8b13789179..667af02b7f 100644 --- a/src/libultra/bb/sa/common.c +++ b/src/libultra/bb/sa/common.c @@ -1 +1,42 @@ +#include "libc/stddef.h" +int strcmp(const char* s, const char* t) { + while (*s == *t) { + if (*s == '\0') { + return 0; + } + s++; + t++; + } + + return *s - *t; +} + +void* memset(char* s, int c, size_t n) { + size_t i; + + for (i = 0; i < n; i++) { + s[i] = c; + } + + return s; +} + +int strncmp(const char* s, const char* t, int n) { + int i; + + for (i = 0; (*s == *t) && (i < n); i++) { + if (*s == '\0') { + if (*t == '\0') { + return 0; + } + break; + } + if (*t == '\0') { + break; + } + s++; + t++; + } + return (i != n) ? *s - *t : 0; +} diff --git a/src/libultra/io/controller.c b/src/libultra/io/controller.c index c6c8d83ca3..3a2dc9a172 100644 --- a/src/libultra/io/controller.c +++ b/src/libultra/io/controller.c @@ -4,7 +4,9 @@ OSPifRam __osContPifRam; u8 __osContLastCmd; u8 __osMaxControllers; // always 4 +#ifndef BBPLAYER OSTimer __osEepromTimer; +#endif OSMesgQueue __osEepromTimerMsgQueue; OSMesg __osEepromTimerMsg; diff --git a/src/libultra/io/motor.c b/src/libultra/io/motor.c index 252e93875a..7350ef9210 100644 --- a/src/libultra/io/motor.c +++ b/src/libultra/io/motor.c @@ -2,9 +2,12 @@ #define MOTOR_ID 0x80 +#ifndef BBPLAYER OSPifRam __MotorDataBuf[MAXCONTROLLERS]; +#endif s32 __osMotorAccess(OSPfs* pfs, s32 vibrate) { +#ifndef BBPLAYER s32 i; s32 ret; u8* ptr = (u8*)&__MotorDataBuf[pfs->channel]; @@ -43,8 +46,12 @@ s32 __osMotorAccess(OSPfs* pfs, s32 vibrate) { __osSiRelAccess(); return ret; +#else + return PFS_ERR_INVALID; +#endif } +#ifndef BBPLAYER void _MakeMotorData(s32 channel, OSPifRam* mdata) { u8* ptr = (u8*)mdata; __OSContRamReadFormat ramreadformat; @@ -67,8 +74,10 @@ void _MakeMotorData(s32 channel, OSPifRam* mdata) { ptr += sizeof(ramreadformat); *ptr = CONT_CMD_END; } +#endif s32 osMotorInit(OSMesgQueue* ctrlrqueue, OSPfs* pfs, s32 channel) { +#ifndef BBPLAYER s32 ret; u8 temp[BLOCKSIZE]; @@ -123,4 +132,7 @@ s32 osMotorInit(OSMesgQueue* ctrlrqueue, OSPfs* pfs, s32 channel) { pfs->status = PFS_MOTOR_INITIALIZED; return 0; // "Recognized rumble pak" +#else + return PFS_ERR_DEVICE; +#endif } diff --git a/src/libultra/io/piacs.c b/src/libultra/io/piacs.c index 0ffa3448c4..cff131f690 100644 --- a/src/libultra/io/piacs.c +++ b/src/libultra/io/piacs.c @@ -1,7 +1,7 @@ #include "global.h" u32 __osPiAccessQueueEnabled = false; -OSMesg piAccessBuf[1]; +static OSMesg piAccessBuf[1]; OSMesgQueue __osPiAccessQueue; void __osPiCreateAccessQueue(void) { diff --git a/src/libultra/io/pimgr.c b/src/libultra/io/pimgr.c index 7a0b68f8dc..6b006d7aa8 100644 --- a/src/libultra/io/pimgr.c +++ b/src/libultra/io/pimgr.c @@ -6,11 +6,10 @@ OSDevMgr __osPiDevMgr = { 0 }; OSPiHandle __Dom1SpeedParam; OSPiHandle __Dom2SpeedParam; -OSThread piThread; -STACK(piStackThread, 0x1000); -OSMesgQueue piEventQueue; -OSMesg piEventBuf[2]; -OSThread __osThreadSave; +static OSThread piThread; +static STACK(piThreadStack, 0x1000); +static OSMesgQueue piEventQueue; +static OSMesg piEventBuf[2]; OSPiHandle* __osPiTable = NULL; OSPiHandle* __osCurrentHandle[] = { @@ -47,7 +46,7 @@ void osCreatePiManager(OSPri pri, OSMesgQueue* cmdQueue, OSMesg* cmdBuf, s32 cmd __osPiDevMgr.dma = __osPiRawStartDma; __osPiDevMgr.edma = __osEPiRawStartDma; - osCreateThread(&piThread, 0, __osDevMgrMain, (void*)&__osPiDevMgr, STACK_TOP(piStackThread), pri); + osCreateThread(&piThread, 0, __osDevMgrMain, (void*)&__osPiDevMgr, STACK_TOP(piThreadStack), pri); osStartThread(&piThread); __osRestoreInt(prevInt); diff --git a/src/libultra/io/siacs.c b/src/libultra/io/siacs.c index c814867bd8..9f528feeff 100644 --- a/src/libultra/io/siacs.c +++ b/src/libultra/io/siacs.c @@ -1,6 +1,6 @@ #include "global.h" -OSMesg siAccessBuf[1]; +static OSMesg siAccessBuf[1]; OSMesgQueue __osSiAccessQueue; u32 __osSiAccessQueueEnabled = false; diff --git a/src/libultra/io/vimgr.c b/src/libultra/io/vimgr.c index d9b3fc4355..a075ebf4f7 100644 --- a/src/libultra/io/vimgr.c +++ b/src/libultra/io/vimgr.c @@ -2,12 +2,12 @@ #include "stack.h" #include "ultra64/internal.h" -OSThread viThread; -STACK(viThreadStack, 0x1000); -OSMesgQueue viEventQueue; -OSMesg viEventBuf[5]; -OSIoMesg viRetraceMsg; -OSIoMesg viCounterMsg; +static OSThread viThread; +static STACK(viThreadStack, 0x1000); +static OSMesgQueue viEventQueue; +static OSMesg viEventBuf[5]; +static OSIoMesg viRetraceMsg; +static OSIoMesg viCounterMsg; OSDevMgr __osViDevMgr = { 0 }; u32 __additional_scanline = 0; diff --git a/src/libultra/mgu/normalize.s b/src/libultra/mgu/normalize.s index 8174527f2c..d94748bced 100644 --- a/src/libultra/mgu/normalize.s +++ b/src/libultra/mgu/normalize.s @@ -8,20 +8,24 @@ LEAF(guNormalize) lwc1 ft0, (a0) lwc1 ft1, (a1) lwc1 ft2, (a2) +.set noreorder mul.s ft3, ft0, ft0 li.s t0, 1.0 mul.s ft4, ft1, ft1 add.s ft5, ft3, ft4 mul.s ft4, ft2, ft2 +.set reorder add.s ft3, ft4, ft5 mtc1 t0, ft5 sqrt.s ft4, ft3 div.s ft3, ft5, ft4 +.set noreorder mul.s ft4, ft0, ft3 nop mul.s ft5, ft1, ft3 nop mul.s ft0, ft2, ft3 +.set reorder swc1 ft4, (a0) swc1 ft5, (a1) swc1 ft0, (a2) diff --git a/src/libultra/os/kdebugserver.c b/src/libultra/os/kdebugserver.c new file mode 100644 index 0000000000..2f7abe20d2 --- /dev/null +++ b/src/libultra/os/kdebugserver.c @@ -0,0 +1,3 @@ +#include "ultra64.h" + +OSThread __osThreadSave; diff --git a/src/libultra/os/parameters.s b/src/libultra/os/parameters.s index 8fb324d240..22d26beae6 100644 --- a/src/libultra/os/parameters.s +++ b/src/libultra/os/parameters.s @@ -41,7 +41,7 @@ IPL_SYMBOL(__osBbStateName, 0x800003A4, 0x10) IPL_SYMBOL(__osBbStateDirty, 0x800003B4, 4) IPL_SYMBOL(__osBbAuxDataLimit, 0x800003B8, 4) -.space 0x30 +.space 0x10 #endif diff --git a/src/libultra/os/settimer.c b/src/libultra/os/settimer.c index c5632e82c2..3c4c644078 100644 --- a/src/libultra/os/settimer.c +++ b/src/libultra/os/settimer.c @@ -1,3 +1,6 @@ +#include "ultra64.h" +#include "attributes.h" + #include "global.h" s32 osSetTimer(OSTimer* timer, OSTime countdown, OSTime interval, OSMesgQueue* mq, OSMesg msg) { diff --git a/src/makerom/rom_header.s b/src/makerom/rom_header.s index 2edf871c40..e78e65fde9 100644 --- a/src/makerom/rom_header.s +++ b/src/makerom/rom_header.s @@ -27,6 +27,8 @@ /* 0x3E */ REGION(JP) #elif OOT_REGION == REGION_EU /* 0x3E */ REGION(PAL) +#else +#error "Unknown OOT_REGION" #endif /* 0x3F */ GAME_REVISION(OOT_REVISION) diff --git a/src/n64dd/n64dd_801C8000.c b/src/n64dd/n64dd_801C8000.c index 9b0a4b3adc..8c6c91a9ce 100644 --- a/src/n64dd/n64dd_801C8000.c +++ b/src/n64dd/n64dd_801C8000.c @@ -1,7 +1,7 @@ // Does some command processing -#include "global.h" #include "n64dd.h" #include "versions.h" +#include "z_locale.h" void func_801C8554(void); void func_801C8578(void* arg0, void* arg1, OSId id, void* sp, OSPri pri); diff --git a/src/n64dd/n64dd_801C8940.c b/src/n64dd/n64dd_801C8940.c index 437a23dcf2..a0d1ff84b3 100644 --- a/src/n64dd/n64dd_801C8940.c +++ b/src/n64dd/n64dd_801C8940.c @@ -1,6 +1,9 @@ // Lower-level command processing in a background thread -#include "global.h" #include "n64dd.h" +#include "libc64/sleep.h" +#include "attributes.h" + +#include "global.h" s32 D_801D2EA0 = 0; u8* D_801D2EA4 = NULL; diff --git a/src/n64dd/n64dd_801C9B70.c b/src/n64dd/n64dd_801C9B70.c index d7d2f63849..2437904c37 100644 --- a/src/n64dd/n64dd_801C9B70.c +++ b/src/n64dd/n64dd_801C9B70.c @@ -1,6 +1,6 @@ // User-facing error handling -#include "global.h" #include "n64dd.h" +#include "z_locale.h" u8 B_801E0F80[0x600]; u8 B_801E1580[0x2800]; diff --git a/src/n64dd/n64dd_801CA0B0.c b/src/n64dd/n64dd_801CA0B0.c index 8758e0fd62..d564d46caa 100644 --- a/src/n64dd/n64dd_801CA0B0.c +++ b/src/n64dd/n64dd_801CA0B0.c @@ -1,5 +1,8 @@ -#include "global.h" #include "n64dd.h" +#include "libc64/aprintf.h" +#include "attributes.h" + +#include "global.h" // Draws text to framebuffer typedef struct struct_801CA704 { diff --git a/src/n64dd/z_n64dd.c b/src/n64dd/z_n64dd.c index 3524cd348e..17aff6416c 100644 --- a/src/n64dd/z_n64dd.c +++ b/src/n64dd/z_n64dd.c @@ -1,11 +1,16 @@ // Main interface for the 64DD from the rest of the game. Starts background // threads and provides functions to submit commands to them. -#include "global.h" +#include "libc64/sleep.h" #include "fault.h" +#include "irqmgr.h" +#include "line_numbers.h" #include "n64dd.h" #include "stack.h" +#include "stackcheck.h" +#include "sys_freeze.h" #include "versions.h" -#include "line_numbers.h" +#include "z64audio.h" +#include "z64thread.h" #pragma increment_block_number "ntsc-1.0:128 ntsc-1.1:128 ntsc-1.2:128 pal-1.0:128 pal-1.1:128" diff --git a/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.c b/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.c index c79f9b0aa1..f9c6f71d25 100644 --- a/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.c +++ b/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.c @@ -1,4 +1,16 @@ #include "z_arms_hook.h" + +#include "libc64/math64.h" +#include "controller.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sfx.h" +#include "sys_math.h" +#include "sys_matrix.h" +#include "z64play.h" +#include "z64player.h" +#include "z_lib.h" + #include "assets/objects/object_link_boy/object_link_boy.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.h b/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.h index c1c5790fd9..ad50194506 100644 --- a/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.h +++ b/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.h @@ -2,11 +2,12 @@ #define Z_ARMS_HOOK_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" +#include "z64player.h" struct ArmsHook; -typedef void (*ArmsHookActionFunc)(struct ArmsHook*, PlayState*); +typedef void (*ArmsHookActionFunc)(struct ArmsHook*, struct PlayState*); typedef struct ArmsHook { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.c b/src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.c index 9fec296d7a..a92c226117 100644 --- a/src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.c +++ b/src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.c @@ -7,6 +7,15 @@ #include "z_arrow_fire.h" #include "overlays/actors/ovl_En_Arrow/z_en_arrow.h" +#include "libu64/debug.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" + #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_UPDATE_DURING_OCARINA) void ArrowFire_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.h b/src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.h index 44af3decf3..a04b496a11 100644 --- a/src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.h +++ b/src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.h @@ -2,11 +2,11 @@ #define Z_ARROW_FIRE_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ArrowFire; -typedef void (*ArrowFireActionFunc)(struct ArrowFire*, PlayState*); +typedef void (*ArrowFireActionFunc)(struct ArrowFire*, struct PlayState*); typedef struct ArrowFire { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.c b/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.c index 326486aee0..953e0a333c 100644 --- a/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.c +++ b/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.c @@ -5,9 +5,17 @@ */ #include "z_arrow_ice.h" - #include "overlays/actors/ovl_En_Arrow/z_en_arrow.h" +#include "libu64/debug.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" + #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_UPDATE_DURING_OCARINA) void ArrowIce_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.h b/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.h index 1a6ed24b36..7494aefa9d 100644 --- a/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.h +++ b/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.h @@ -2,11 +2,11 @@ #define Z_ARROW_ICE_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ArrowIce; -typedef void (*ArrowIceActionFunc)(struct ArrowIce*, PlayState*); +typedef void (*ArrowIceActionFunc)(struct ArrowIce*, struct PlayState*); typedef struct ArrowIce { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Arrow_Light/z_arrow_light.c b/src/overlays/actors/ovl_Arrow_Light/z_arrow_light.c index 6922b5ba68..100b8c20c1 100644 --- a/src/overlays/actors/ovl_Arrow_Light/z_arrow_light.c +++ b/src/overlays/actors/ovl_Arrow_Light/z_arrow_light.c @@ -5,9 +5,17 @@ */ #include "z_arrow_light.h" - #include "overlays/actors/ovl_En_Arrow/z_en_arrow.h" +#include "libu64/debug.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" + #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_UPDATE_DURING_OCARINA) void ArrowLight_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_Arrow_Light/z_arrow_light.h b/src/overlays/actors/ovl_Arrow_Light/z_arrow_light.h index 78bef515e5..ee4b678961 100644 --- a/src/overlays/actors/ovl_Arrow_Light/z_arrow_light.h +++ b/src/overlays/actors/ovl_Arrow_Light/z_arrow_light.h @@ -2,11 +2,11 @@ #define Z_ARROW_LIGHT_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ArrowLight; -typedef void (*ArrowLightActionFunc)(struct ArrowLight*, PlayState*); +typedef void (*ArrowLightActionFunc)(struct ArrowLight*, struct PlayState*); typedef struct ArrowLight { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Bg_Bdan_Objects/z_bg_bdan_objects.c b/src/overlays/actors/ovl_Bg_Bdan_Objects/z_bg_bdan_objects.c index bcc7651687..c927465569 100644 --- a/src/overlays/actors/ovl_Bg_Bdan_Objects/z_bg_bdan_objects.c +++ b/src/overlays/actors/ovl_Bg_Bdan_Objects/z_bg_bdan_objects.c @@ -5,7 +5,19 @@ */ #include "z_bg_bdan_objects.h" + +#include "ichain.h" +#include "one_point_cutscene.h" #include "quake.h" +#include "rumble.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_bdan_objects/object_bdan_objects.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Bg_Bdan_Objects/z_bg_bdan_objects.h b/src/overlays/actors/ovl_Bg_Bdan_Objects/z_bg_bdan_objects.h index 6c802bb3f6..e8729bb983 100644 --- a/src/overlays/actors/ovl_Bg_Bdan_Objects/z_bg_bdan_objects.h +++ b/src/overlays/actors/ovl_Bg_Bdan_Objects/z_bg_bdan_objects.h @@ -2,7 +2,7 @@ #define Z_BG_BDAN_OBJECTS_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgBdanObjects; @@ -13,7 +13,7 @@ typedef enum BgBdanObjectsType { JABU_OBJECTS_TYPE_FALLING_PLATFORM } BgBdanObjectsType; -typedef void (*BgBdanObjectsActionFunc)(struct BgBdanObjects*, PlayState*); +typedef void (*BgBdanObjectsActionFunc)(struct BgBdanObjects*, struct PlayState*); typedef struct BgBdanObjects { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Bdan_Switch/z_bg_bdan_switch.c b/src/overlays/actors/ovl_Bg_Bdan_Switch/z_bg_bdan_switch.c index f09d24d536..4fdf0d7dea 100644 --- a/src/overlays/actors/ovl_Bg_Bdan_Switch/z_bg_bdan_switch.c +++ b/src/overlays/actors/ovl_Bg_Bdan_Switch/z_bg_bdan_switch.c @@ -5,6 +5,16 @@ */ #include "z_bg_bdan_switch.h" + +#include "ichain.h" +#include "rumble.h" +#include "one_point_cutscene.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_bdan_objects/object_bdan_objects.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED @@ -110,7 +120,7 @@ void BgBdanSwitch_InitDynaPoly(BgBdanSwitch* this, PlayState* play, CollisionHea void BgBdanSwitch_InitCollision(BgBdanSwitch* this, PlayState* play) { Actor* actor = &this->dyna.actor; Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, actor, &sJntSphInit, this->colliderItems); + Collider_SetJntSph(play, &this->collider, actor, &sJntSphInit, this->colliderElements); } void func_8086D0EC(BgBdanSwitch* this) { diff --git a/src/overlays/actors/ovl_Bg_Bdan_Switch/z_bg_bdan_switch.h b/src/overlays/actors/ovl_Bg_Bdan_Switch/z_bg_bdan_switch.h index b7914a4f0d..f86ef79e3e 100644 --- a/src/overlays/actors/ovl_Bg_Bdan_Switch/z_bg_bdan_switch.h +++ b/src/overlays/actors/ovl_Bg_Bdan_Switch/z_bg_bdan_switch.h @@ -2,7 +2,7 @@ #define Z_BG_BDAN_SWITCH_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" typedef enum BgBdanSwitchType { /* 0x00 */ BLUE, @@ -14,13 +14,13 @@ typedef enum BgBdanSwitchType { struct BgBdanSwitch; -typedef void (*BgBdanSwitchActionFunc)(struct BgBdanSwitch*, PlayState*); +typedef void (*BgBdanSwitchActionFunc)(struct BgBdanSwitch*, struct PlayState*); typedef struct BgBdanSwitch { /* 0x0000 */ DynaPolyActor dyna; /* 0x0164 */ BgBdanSwitchActionFunc actionFunc; /* 0x0168 */ ColliderJntSph collider; - /* 0x0188 */ ColliderJntSphElement colliderItems[1]; + /* 0x0188 */ ColliderJntSphElement colliderElements[1]; /* 0x01C8 */ f32 unk_1C8; /* 0x01CC */ s16 unk_1CC; /* 0x01CE */ char unk_1CE[0x2]; diff --git a/src/overlays/actors/ovl_Bg_Bom_Guard/z_bg_bom_guard.c b/src/overlays/actors/ovl_Bg_Bom_Guard/z_bg_bom_guard.c index cfbd466021..ae816120b4 100644 --- a/src/overlays/actors/ovl_Bg_Bom_Guard/z_bg_bom_guard.c +++ b/src/overlays/actors/ovl_Bg_Bom_Guard/z_bg_bom_guard.c @@ -6,8 +6,12 @@ #include "z_bg_bom_guard.h" #include "overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.h" -#include "assets/objects/object_bowl/object_bowl.h" + +#include "regs.h" #include "terminal.h" +#include "z64play.h" + +#include "assets/objects/object_bowl/object_bowl.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Bg_Bom_Guard/z_bg_bom_guard.h b/src/overlays/actors/ovl_Bg_Bom_Guard/z_bg_bom_guard.h index 9df9ab2670..47e167de8a 100644 --- a/src/overlays/actors/ovl_Bg_Bom_Guard/z_bg_bom_guard.h +++ b/src/overlays/actors/ovl_Bg_Bom_Guard/z_bg_bom_guard.h @@ -2,11 +2,11 @@ #define Z_BG_BOM_GUARD_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgBomGuard; -typedef void (*BgBomGuardActionFunc)(struct BgBomGuard*, PlayState*); +typedef void (*BgBomGuardActionFunc)(struct BgBomGuard*, struct PlayState*); typedef struct BgBomGuard { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Bombwall/z_bg_bombwall.c b/src/overlays/actors/ovl_Bg_Bombwall/z_bg_bombwall.c index 756677b225..b97d4c80bc 100644 --- a/src/overlays/actors/ovl_Bg_Bombwall/z_bg_bombwall.c +++ b/src/overlays/actors/ovl_Bg_Bombwall/z_bg_bombwall.c @@ -5,6 +5,12 @@ */ #include "z_bg_bombwall.h" +#include "libc64/qrand.h" +#include "ichain.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/gameplay_field_keep/gameplay_field_keep.h" #define FLAGS ACTOR_FLAG_IGNORE_POINT_LIGHTS @@ -128,7 +134,7 @@ void BgBombwall_Init(Actor* thisx, PlayState* play) { BgBombwall_InitDynapoly(this, play); this->unk_2A2 |= 2; Collider_InitTris(play, &this->collider); - Collider_SetTris(play, &this->collider, &this->dyna.actor, &sTrisInit, this->colliderItems); + Collider_SetTris(play, &this->collider, &this->dyna.actor, &sTrisInit, this->colliderElements); for (i = 0; i <= 2; i++) { for (j = 0; j <= 2; j++) { diff --git a/src/overlays/actors/ovl_Bg_Bombwall/z_bg_bombwall.h b/src/overlays/actors/ovl_Bg_Bombwall/z_bg_bombwall.h index f5c9cd2b51..8cd1bb879f 100644 --- a/src/overlays/actors/ovl_Bg_Bombwall/z_bg_bombwall.h +++ b/src/overlays/actors/ovl_Bg_Bombwall/z_bg_bombwall.h @@ -2,16 +2,16 @@ #define Z_BG_BOMBWALL_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgBombwall; -typedef void (*BgBombwallActionFunc)(struct BgBombwall*, PlayState*); +typedef void (*BgBombwallActionFunc)(struct BgBombwall*, struct PlayState*); typedef struct BgBombwall { /* 0x0000 */ DynaPolyActor dyna; /* 0x0164 */ ColliderTris collider; - /* 0x0184 */ ColliderTrisElement colliderItems[3]; + /* 0x0184 */ ColliderTrisElement colliderElements[3]; /* 0x0298 */ BgBombwallActionFunc actionFunc; /* 0x029C */ Gfx* dList; /* 0x02A0 */ s16 unk_2A0; diff --git a/src/overlays/actors/ovl_Bg_Bowl_Wall/z_bg_bowl_wall.c b/src/overlays/actors/ovl_Bg_Bowl_Wall/z_bg_bowl_wall.c index a43804fa93..377efc13e8 100644 --- a/src/overlays/actors/ovl_Bg_Bowl_Wall/z_bg_bowl_wall.c +++ b/src/overlays/actors/ovl_Bg_Bowl_Wall/z_bg_bowl_wall.c @@ -7,9 +7,19 @@ #include "z_bg_bowl_wall.h" #include "overlays/actors/ovl_En_Wall_Tubo/z_en_wall_tubo.h" #include "overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.h" -#include "assets/objects/object_bowl/object_bowl.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "sfx.h" #include "quake.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + +#include "assets/objects/object_bowl/object_bowl.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_Bg_Bowl_Wall/z_bg_bowl_wall.h b/src/overlays/actors/ovl_Bg_Bowl_Wall/z_bg_bowl_wall.h index 12a4bdf3a4..ac743fe7f1 100644 --- a/src/overlays/actors/ovl_Bg_Bowl_Wall/z_bg_bowl_wall.h +++ b/src/overlays/actors/ovl_Bg_Bowl_Wall/z_bg_bowl_wall.h @@ -2,12 +2,12 @@ #define Z_BG_BOWL_WALL_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" #include "overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.h" struct BgBowlWall; -typedef void (*BgBowlWallActionFunc)(struct BgBowlWall*, PlayState*); +typedef void (*BgBowlWallActionFunc)(struct BgBowlWall*, struct PlayState*); typedef struct BgBowlWall { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.c b/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.c index 39f9dce855..f36d251f45 100644 --- a/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.c +++ b/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.c @@ -5,6 +5,20 @@ */ #include "z_bg_breakwall.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "regs.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/scenes/dungeons/ddan/ddan_scene.h" #include "assets/objects/object_bwall/object_bwall.h" #include "assets/objects/object_kingdodongo/object_kingdodongo.h" diff --git a/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.h b/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.h index c6dcab1b4f..02ab43a5fc 100644 --- a/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.h +++ b/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.h @@ -2,11 +2,11 @@ #define Z_BG_BREAKWALL_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgBreakwall; -typedef void (*BgBreakwallActionFunc)(struct BgBreakwall*, PlayState*); +typedef void (*BgBreakwallActionFunc)(struct BgBreakwall*, struct PlayState*); typedef struct BgBreakwall { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Ddan_Jd/z_bg_ddan_jd.c b/src/overlays/actors/ovl_Bg_Ddan_Jd/z_bg_ddan_jd.c index c1168182d8..fb910b56fd 100644 --- a/src/overlays/actors/ovl_Bg_Ddan_Jd/z_bg_ddan_jd.c +++ b/src/overlays/actors/ovl_Bg_Ddan_Jd/z_bg_ddan_jd.c @@ -5,6 +5,14 @@ */ #include "z_bg_ddan_jd.h" + +#include "ichain.h" +#include "one_point_cutscene.h" +#include "rand.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_ddan_objects/object_ddan_objects.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_Bg_Ddan_Jd/z_bg_ddan_jd.h b/src/overlays/actors/ovl_Bg_Ddan_Jd/z_bg_ddan_jd.h index 6497657943..48e695b47d 100644 --- a/src/overlays/actors/ovl_Bg_Ddan_Jd/z_bg_ddan_jd.h +++ b/src/overlays/actors/ovl_Bg_Ddan_Jd/z_bg_ddan_jd.h @@ -2,11 +2,11 @@ #define Z_BG_DDAN_JD_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgDdanJd; -typedef void (*BgDdanJdActionFunc)(struct BgDdanJd*, PlayState*); +typedef void (*BgDdanJdActionFunc)(struct BgDdanJd*, struct PlayState*); typedef struct BgDdanJd { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Ddan_Kd/z_bg_ddan_kd.c b/src/overlays/actors/ovl_Bg_Ddan_Kd/z_bg_ddan_kd.c index e542f69705..74e9b63fec 100644 --- a/src/overlays/actors/ovl_Bg_Ddan_Kd/z_bg_ddan_kd.c +++ b/src/overlays/actors/ovl_Bg_Ddan_Kd/z_bg_ddan_kd.c @@ -5,6 +5,16 @@ */ #include "z_bg_ddan_kd.h" + +#include "libc64/qrand.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "rand.h" +#include "rumble.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_ddan_objects/object_ddan_objects.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Bg_Ddan_Kd/z_bg_ddan_kd.h b/src/overlays/actors/ovl_Bg_Ddan_Kd/z_bg_ddan_kd.h index 2e80b64cb9..fca0119052 100644 --- a/src/overlays/actors/ovl_Bg_Ddan_Kd/z_bg_ddan_kd.h +++ b/src/overlays/actors/ovl_Bg_Ddan_Kd/z_bg_ddan_kd.h @@ -2,11 +2,11 @@ #define Z_BG_DDAN_KD_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgDdanKd; -typedef void (*BgDdanKdActionFunc)(struct BgDdanKd*, PlayState*); +typedef void (*BgDdanKdActionFunc)(struct BgDdanKd*, struct PlayState*); typedef struct BgDdanKd { /* 0x0000 */ DynaPolyActor dyna; 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 747a03d93f..15adb7bf94 100644 --- a/src/overlays/actors/ovl_Bg_Dodoago/z_bg_dodoago.c +++ b/src/overlays/actors/ovl_Bg_Dodoago/z_bg_dodoago.c @@ -6,8 +6,26 @@ #include "z_bg_dodoago.h" #include "overlays/actors/ovl_En_Bom/z_en_bom.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "macros.h" +#include "one_point_cutscene.h" +#include "rand.h" +#include "rumble.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_ddan_objects/object_ddan_objects.h" +#pragma increment_block_number "ntsc-1.0:128 ntsc-1.1:128 ntsc-1.2:128 pal-1.0:128 pal-1.1:128" + #define FLAGS 0 void BgDodoago_Init(Actor* thisx, PlayState* play); @@ -125,12 +143,12 @@ void BgDodoago_Init(Actor* thisx, PlayState* play) { return; } - Collider_InitCylinder(play, &this->colliderMain); - Collider_InitCylinder(play, &this->colliderLeft); - Collider_InitCylinder(play, &this->colliderRight); - Collider_SetCylinder(play, &this->colliderMain, &this->dyna.actor, &sColCylinderInitMain); - Collider_SetCylinder(play, &this->colliderLeft, &this->dyna.actor, &sColCylinderInitLeftRight); - Collider_SetCylinder(play, &this->colliderRight, &this->dyna.actor, &sColCylinderInitLeftRight); + 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); BgDodoago_SetupAction(this, BgDodoago_WaitExplosives); sDisableBombCatcher = false; @@ -140,13 +158,13 @@ void BgDodoago_Destroy(Actor* thisx, PlayState* play) { BgDodoago* this = (BgDodoago*)thisx; DynaPoly_DeleteBgActor(play, &play->colCtx.dyna, this->dyna.bgId); - Collider_DestroyCylinder(play, &this->colliderMain); - Collider_DestroyCylinder(play, &this->colliderLeft); - Collider_DestroyCylinder(play, &this->colliderRight); + Collider_DestroyCylinder(play, &this->mainCollider); + Collider_DestroyCylinder(play, &this->leftCollider); + Collider_DestroyCylinder(play, &this->rightCollider); } void BgDodoago_WaitExplosives(BgDodoago* this, PlayState* play) { - Actor* explosive = Actor_GetCollidedExplosive(play, &this->colliderMain.base); + Actor* explosive = Actor_GetCollidedExplosive(play, &this->mainCollider.base); if (explosive != NULL) { this->state = @@ -183,21 +201,21 @@ void BgDodoago_WaitExplosives(BgDodoago* this, PlayState* play) { sTimer = 50; } } else if (Flags_GetEventChkInf(EVENTCHKINF_B0)) { - Collider_UpdateCylinder(&this->dyna.actor, &this->colliderMain); - Collider_UpdateCylinder(&this->dyna.actor, &this->colliderLeft); - Collider_UpdateCylinder(&this->dyna.actor, &this->colliderRight); + Collider_UpdateCylinder(&this->dyna.actor, &this->mainCollider); + Collider_UpdateCylinder(&this->dyna.actor, &this->leftCollider); + Collider_UpdateCylinder(&this->dyna.actor, &this->rightCollider); - this->colliderMain.dim.pos.z += 200; + this->mainCollider.dim.pos.z += 200; - this->colliderLeft.dim.pos.z += 215; - this->colliderLeft.dim.pos.x += 90; + this->leftCollider.dim.pos.z += 215; + this->leftCollider.dim.pos.x += 90; - this->colliderRight.dim.pos.z += 215; - this->colliderRight.dim.pos.x -= 90; + this->rightCollider.dim.pos.z += 215; + this->rightCollider.dim.pos.x -= 90; - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderMain.base); - CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderLeft.base); - CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderRight.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->mainCollider.base); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->leftCollider.base); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->rightCollider.base); } } @@ -275,15 +293,15 @@ void BgDodoago_Update(Actor* thisx, PlayState* play) { if (this->dyna.actor.parent == NULL) { // this is a "bomb catcher", it kills the XZ speed and sets the timer for bombs that are dropped through the // holes in the bridge above the skull - if ((this->colliderLeft.base.ocFlags1 & OC1_HIT) || (this->colliderRight.base.ocFlags1 & OC1_HIT)) { + if ((this->leftCollider.base.ocFlags1 & OC1_HIT) || (this->rightCollider.base.ocFlags1 & OC1_HIT)) { - if (this->colliderLeft.base.ocFlags1 & OC1_HIT) { - actor = this->colliderLeft.base.oc; + if (this->leftCollider.base.ocFlags1 & OC1_HIT) { + actor = this->leftCollider.base.oc; } else { - actor = this->colliderRight.base.oc; + actor = this->rightCollider.base.oc; } - this->colliderLeft.base.ocFlags1 &= ~OC1_HIT; - this->colliderRight.base.ocFlags1 &= ~OC1_HIT; + this->leftCollider.base.ocFlags1 &= ~OC1_HIT; + this->rightCollider.base.ocFlags1 &= ~OC1_HIT; if (actor->category == ACTORCAT_EXPLOSIVE && actor->id == ACTOR_EN_BOM && actor->params == 0) { bomb = (EnBom*)actor; diff --git a/src/overlays/actors/ovl_Bg_Dodoago/z_bg_dodoago.h b/src/overlays/actors/ovl_Bg_Dodoago/z_bg_dodoago.h index 2c8e873ba7..9f361a3ccb 100644 --- a/src/overlays/actors/ovl_Bg_Dodoago/z_bg_dodoago.h +++ b/src/overlays/actors/ovl_Bg_Dodoago/z_bg_dodoago.h @@ -2,7 +2,7 @@ #define Z_BG_DODOAGO_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" typedef enum BgDodoagoEye { /* 0 */ BGDODOAGO_EYE_LEFT, @@ -11,14 +11,14 @@ typedef enum BgDodoagoEye { struct BgDodoago; -typedef void (*BgDodoagoActionFunc)(struct BgDodoago*, PlayState*); +typedef void (*BgDodoagoActionFunc)(struct BgDodoago*, struct PlayState*); typedef struct BgDodoago { /* 0x0000 */ DynaPolyActor dyna; /* 0x0164 */ s16 state; // BgDodoagoEye or a timer-like value - /* 0x0168 */ ColliderCylinder colliderMain; // Used to detect explosions for lighting the eyes - /* 0x01B4 */ ColliderCylinder colliderLeft; // OC-colliding bombs have their xz speed cleared and timer set - /* 0x0200 */ ColliderCylinder colliderRight; // same as colliderLeft + /* 0x0168 */ ColliderCylinder mainCollider; // Used to detect explosions for lighting the eyes + /* 0x01B4 */ ColliderCylinder leftCollider; // OC-colliding bombs have their xz speed cleared and timer set + /* 0x0200 */ ColliderCylinder rightCollider; // same as colliderLeft /* 0x024C */ BgDodoagoActionFunc actionFunc; } BgDodoago; // size = 0x0250 diff --git a/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c b/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c index c8877e0e64..eb35f52494 100644 --- a/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c +++ b/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c @@ -5,10 +5,26 @@ */ #include "z_bg_dy_yoseizo.h" -#include "assets/objects/object_dy_obj/object_dy_obj.h" +#include "overlays/actors/ovl_Demo_Effect/z_demo_effect.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "one_point_cutscene.h" +#include "rand.h" +#include "regs.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" #include "versions.h" -#include "overlays/actors/ovl_Demo_Effect/z_demo_effect.h" +#include "z_lib.h" +#include "z64ocarina.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/object_dy_obj/object_dy_obj.h" #include "assets/scenes/indoors/yousei_izumi_yoko/yousei_izumi_yoko_scene.h" #include "assets/scenes/indoors/daiyousei_izumi/daiyousei_izumi_scene.h" diff --git a/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.h b/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.h index fd7aebb3a4..f799bf9278 100644 --- a/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.h +++ b/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.h @@ -2,13 +2,13 @@ #define Z_BG_DY_YOSEIZO_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" #include "overlays/actors/ovl_En_Dy_Extra/z_en_dy_extra.h" #include "overlays/actors/ovl_En_Ex_Item/z_en_ex_item.h" struct BgDyYoseizo; -typedef void (*BgDyYoseizoActionFunc)(struct BgDyYoseizo*, PlayState*); +typedef void (*BgDyYoseizoActionFunc)(struct BgDyYoseizo*, struct PlayState*); #define BG_DY_YOSEIZO_EFFECT_COUNT 200 diff --git a/src/overlays/actors/ovl_Bg_Ganon_Otyuka/z_bg_ganon_otyuka.c b/src/overlays/actors/ovl_Bg_Ganon_Otyuka/z_bg_ganon_otyuka.c index 5db5debc6a..7a84de3cb4 100644 --- a/src/overlays/actors/ovl_Bg_Ganon_Otyuka/z_bg_ganon_otyuka.c +++ b/src/overlays/actors/ovl_Bg_Ganon_Otyuka/z_bg_ganon_otyuka.c @@ -6,7 +6,18 @@ #include "z_bg_ganon_otyuka.h" #include "overlays/actors/ovl_Boss_Ganon/z_boss_ganon.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_Bg_Ganon_Otyuka/z_bg_ganon_otyuka.h b/src/overlays/actors/ovl_Bg_Ganon_Otyuka/z_bg_ganon_otyuka.h index 376130ae54..9d0c4bcfaf 100644 --- a/src/overlays/actors/ovl_Bg_Ganon_Otyuka/z_bg_ganon_otyuka.h +++ b/src/overlays/actors/ovl_Bg_Ganon_Otyuka/z_bg_ganon_otyuka.h @@ -2,7 +2,7 @@ #define Z_BG_GANON_OTYUKA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" #define OTYUKA_SIDE_EAST (1 << 0) #define OTYUKA_SIDE_WEST (1 << 1) @@ -12,7 +12,7 @@ struct BgGanonOtyuka; -typedef void (*BgGanonOtyukaActionFunc)(struct BgGanonOtyuka*, PlayState*); +typedef void (*BgGanonOtyukaActionFunc)(struct BgGanonOtyuka*, struct PlayState*); typedef struct BgGanonOtyuka { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Gate_Shutter/z_bg_gate_shutter.c b/src/overlays/actors/ovl_Bg_Gate_Shutter/z_bg_gate_shutter.c index 8988aea020..9385ed95bf 100644 --- a/src/overlays/actors/ovl_Bg_Gate_Shutter/z_bg_gate_shutter.c +++ b/src/overlays/actors/ovl_Bg_Gate_Shutter/z_bg_gate_shutter.c @@ -5,8 +5,17 @@ */ #include "z_bg_gate_shutter.h" -#include "assets/objects/object_spot01_matoyab/object_spot01_matoyab.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64save.h" + +#include "assets/objects/object_spot01_matoyab/object_spot01_matoyab.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Bg_Gate_Shutter/z_bg_gate_shutter.h b/src/overlays/actors/ovl_Bg_Gate_Shutter/z_bg_gate_shutter.h index cad1651215..6f9f53a546 100644 --- a/src/overlays/actors/ovl_Bg_Gate_Shutter/z_bg_gate_shutter.h +++ b/src/overlays/actors/ovl_Bg_Gate_Shutter/z_bg_gate_shutter.h @@ -2,11 +2,11 @@ #define Z_BG_GATE_SHUTTER_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgGateShutter; -typedef void (*BgGateShutterActionFunc)(struct BgGateShutter*, PlayState*); +typedef void (*BgGateShutterActionFunc)(struct BgGateShutter*, struct PlayState*); typedef struct BgGateShutter { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Gjyo_Bridge/z_bg_gjyo_bridge.c b/src/overlays/actors/ovl_Bg_Gjyo_Bridge/z_bg_gjyo_bridge.c index d6272b9aea..6c0f01b322 100644 --- a/src/overlays/actors/ovl_Bg_Gjyo_Bridge/z_bg_gjyo_bridge.c +++ b/src/overlays/actors/ovl_Bg_Gjyo_Bridge/z_bg_gjyo_bridge.c @@ -5,6 +5,16 @@ */ #include "z_bg_gjyo_bridge.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "segmented_address.h" +#include "sys_matrix.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_gjyo_objects/object_gjyo_objects.h" #include "assets/scenes/overworld/ganon_tou/ganon_tou_scene.h" diff --git a/src/overlays/actors/ovl_Bg_Gjyo_Bridge/z_bg_gjyo_bridge.h b/src/overlays/actors/ovl_Bg_Gjyo_Bridge/z_bg_gjyo_bridge.h index 0ca02453bf..312dcdee72 100644 --- a/src/overlays/actors/ovl_Bg_Gjyo_Bridge/z_bg_gjyo_bridge.h +++ b/src/overlays/actors/ovl_Bg_Gjyo_Bridge/z_bg_gjyo_bridge.h @@ -2,11 +2,11 @@ #define Z_BG_GJYO_BRIDGE_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgGjyoBridge; -typedef void (*BgGjyoBridgeActionFunc)(struct BgGjyoBridge*, PlayState*); +typedef void (*BgGjyoBridgeActionFunc)(struct BgGjyoBridge*, struct PlayState*); typedef struct BgGjyoBridge { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Gnd_Darkmeiro/z_bg_gnd_darkmeiro.c b/src/overlays/actors/ovl_Bg_Gnd_Darkmeiro/z_bg_gnd_darkmeiro.c index b35f1ef36f..b05734104c 100644 --- a/src/overlays/actors/ovl_Bg_Gnd_Darkmeiro/z_bg_gnd_darkmeiro.c +++ b/src/overlays/actors/ovl_Bg_Gnd_Darkmeiro/z_bg_gnd_darkmeiro.c @@ -5,6 +5,12 @@ */ #include "z_bg_gnd_darkmeiro.h" + +#include "gfx.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_demo_kekkai/object_demo_kekkai.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_Bg_Gnd_Darkmeiro/z_bg_gnd_darkmeiro.h b/src/overlays/actors/ovl_Bg_Gnd_Darkmeiro/z_bg_gnd_darkmeiro.h index 39fb42a3aa..3124be292e 100644 --- a/src/overlays/actors/ovl_Bg_Gnd_Darkmeiro/z_bg_gnd_darkmeiro.h +++ b/src/overlays/actors/ovl_Bg_Gnd_Darkmeiro/z_bg_gnd_darkmeiro.h @@ -2,11 +2,11 @@ #define Z_BG_GND_DARKMEIRO_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgGndDarkmeiro; -typedef void (*BgGndDarkmeiroUpdateFunc)(struct BgGndDarkmeiro*, PlayState*); +typedef void (*BgGndDarkmeiroUpdateFunc)(struct BgGndDarkmeiro*, struct PlayState*); typedef struct BgGndDarkmeiro { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Gnd_Firemeiro/z_bg_gnd_firemeiro.c b/src/overlays/actors/ovl_Bg_Gnd_Firemeiro/z_bg_gnd_firemeiro.c index ad336d6fcf..c49697f627 100644 --- a/src/overlays/actors/ovl_Bg_Gnd_Firemeiro/z_bg_gnd_firemeiro.c +++ b/src/overlays/actors/ovl_Bg_Gnd_Firemeiro/z_bg_gnd_firemeiro.c @@ -5,6 +5,15 @@ */ #include "z_bg_gnd_firemeiro.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_demo_kekkai/object_demo_kekkai.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_Bg_Gnd_Firemeiro/z_bg_gnd_firemeiro.h b/src/overlays/actors/ovl_Bg_Gnd_Firemeiro/z_bg_gnd_firemeiro.h index 60a2254cf3..bebb77303f 100644 --- a/src/overlays/actors/ovl_Bg_Gnd_Firemeiro/z_bg_gnd_firemeiro.h +++ b/src/overlays/actors/ovl_Bg_Gnd_Firemeiro/z_bg_gnd_firemeiro.h @@ -2,11 +2,11 @@ #define Z_BG_GND_FIREMEIRO_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgGndFiremeiro; -typedef void (*BgGndFiremeiroActionFunc)(struct BgGndFiremeiro*, PlayState*); +typedef void (*BgGndFiremeiroActionFunc)(struct BgGndFiremeiro*, struct PlayState*); typedef struct BgGndFiremeiro { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Gnd_Iceblock/z_bg_gnd_iceblock.c b/src/overlays/actors/ovl_Bg_Gnd_Iceblock/z_bg_gnd_iceblock.c index 0711124304..8b026839f7 100644 --- a/src/overlays/actors/ovl_Bg_Gnd_Iceblock/z_bg_gnd_iceblock.c +++ b/src/overlays/actors/ovl_Bg_Gnd_Iceblock/z_bg_gnd_iceblock.c @@ -5,6 +5,17 @@ */ #include "z_bg_gnd_iceblock.h" + +#include "libc64/qrand.h" +#include "libu64/debug.h" +#include "ichain.h" +#include "rand.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_demo_kekkai/object_demo_kekkai.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_Bg_Gnd_Iceblock/z_bg_gnd_iceblock.h b/src/overlays/actors/ovl_Bg_Gnd_Iceblock/z_bg_gnd_iceblock.h index 1d9da28f7b..86e3aa4f62 100644 --- a/src/overlays/actors/ovl_Bg_Gnd_Iceblock/z_bg_gnd_iceblock.h +++ b/src/overlays/actors/ovl_Bg_Gnd_Iceblock/z_bg_gnd_iceblock.h @@ -2,11 +2,11 @@ #define Z_BG_GND_ICEBLOCK_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgGndIceblock; -typedef void (*BgGndIceblockActionFunc)(struct BgGndIceblock*, PlayState*); +typedef void (*BgGndIceblockActionFunc)(struct BgGndIceblock*, struct PlayState*); typedef struct BgGndIceblock { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Gnd_Nisekabe/z_bg_gnd_nisekabe.c b/src/overlays/actors/ovl_Bg_Gnd_Nisekabe/z_bg_gnd_nisekabe.c index 7a19324501..ab2b0ce919 100644 --- a/src/overlays/actors/ovl_Bg_Gnd_Nisekabe/z_bg_gnd_nisekabe.c +++ b/src/overlays/actors/ovl_Bg_Gnd_Nisekabe/z_bg_gnd_nisekabe.c @@ -5,6 +5,9 @@ */ #include "z_bg_gnd_nisekabe.h" + +#include "z64play.h" + #include "assets/objects/object_demo_kekkai/object_demo_kekkai.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Bg_Gnd_Nisekabe/z_bg_gnd_nisekabe.h b/src/overlays/actors/ovl_Bg_Gnd_Nisekabe/z_bg_gnd_nisekabe.h index 32da8fa085..291a0e4ea1 100644 --- a/src/overlays/actors/ovl_Bg_Gnd_Nisekabe/z_bg_gnd_nisekabe.h +++ b/src/overlays/actors/ovl_Bg_Gnd_Nisekabe/z_bg_gnd_nisekabe.h @@ -2,7 +2,7 @@ #define Z_BG_GND_NISEKABE_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgGndNisekabe; diff --git a/src/overlays/actors/ovl_Bg_Gnd_Soulmeiro/z_bg_gnd_soulmeiro.c b/src/overlays/actors/ovl_Bg_Gnd_Soulmeiro/z_bg_gnd_soulmeiro.c index 3ed190587d..889d4f9551 100644 --- a/src/overlays/actors/ovl_Bg_Gnd_Soulmeiro/z_bg_gnd_soulmeiro.c +++ b/src/overlays/actors/ovl_Bg_Gnd_Soulmeiro/z_bg_gnd_soulmeiro.c @@ -5,8 +5,19 @@ */ #include "z_bg_gnd_soulmeiro.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/object_demo_kekkai/object_demo_kekkai.h" -#include "global.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Bg_Gnd_Soulmeiro/z_bg_gnd_soulmeiro.h b/src/overlays/actors/ovl_Bg_Gnd_Soulmeiro/z_bg_gnd_soulmeiro.h index cbf9b854d4..d2e039c8ad 100644 --- a/src/overlays/actors/ovl_Bg_Gnd_Soulmeiro/z_bg_gnd_soulmeiro.h +++ b/src/overlays/actors/ovl_Bg_Gnd_Soulmeiro/z_bg_gnd_soulmeiro.h @@ -2,11 +2,11 @@ #define Z_BG_GND_SOULMEIRO_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgGndSoulmeiro; -typedef void (*BgGndSoulmeiroActionFunc)(struct BgGndSoulmeiro*, PlayState*); +typedef void (*BgGndSoulmeiroActionFunc)(struct BgGndSoulmeiro*, struct PlayState*); typedef struct BgGndSoulmeiro { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Bg_Haka/z_bg_haka.c b/src/overlays/actors/ovl_Bg_Haka/z_bg_haka.c index 7e2401acb1..f20af0b9f8 100644 --- a/src/overlays/actors/ovl_Bg_Haka/z_bg_haka.c +++ b/src/overlays/actors/ovl_Bg_Haka/z_bg_haka.c @@ -5,6 +5,17 @@ */ #include "z_bg_haka.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_haka/object_haka.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Bg_Haka/z_bg_haka.h b/src/overlays/actors/ovl_Bg_Haka/z_bg_haka.h index 093cab70fa..b95f5c0f8e 100644 --- a/src/overlays/actors/ovl_Bg_Haka/z_bg_haka.h +++ b/src/overlays/actors/ovl_Bg_Haka/z_bg_haka.h @@ -2,11 +2,11 @@ #define Z_BG_HAKA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgHaka; -typedef void (*BgHakaActionFunc)(struct BgHaka*, PlayState*); +typedef void (*BgHakaActionFunc)(struct BgHaka*, struct PlayState*); typedef struct BgHaka { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Haka_Gate/z_bg_haka_gate.c b/src/overlays/actors/ovl_Bg_Haka_Gate/z_bg_haka_gate.c index f7f31748a6..9ef689694f 100644 --- a/src/overlays/actors/ovl_Bg_Haka_Gate/z_bg_haka_gate.c +++ b/src/overlays/actors/ovl_Bg_Haka_Gate/z_bg_haka_gate.c @@ -5,6 +5,18 @@ */ #include "z_bg_haka_gate.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_haka_objects/object_haka_objects.h" diff --git a/src/overlays/actors/ovl_Bg_Haka_Gate/z_bg_haka_gate.h b/src/overlays/actors/ovl_Bg_Haka_Gate/z_bg_haka_gate.h index 1297692754..6c926d4354 100644 --- a/src/overlays/actors/ovl_Bg_Haka_Gate/z_bg_haka_gate.h +++ b/src/overlays/actors/ovl_Bg_Haka_Gate/z_bg_haka_gate.h @@ -2,11 +2,11 @@ #define Z_BG_HAKA_GATE_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgHakaGate; -typedef void (*BgHakaGateActionFunc)(struct BgHakaGate*, PlayState*); +typedef void (*BgHakaGateActionFunc)(struct BgHakaGate*, struct PlayState*); typedef struct BgHakaGate { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Haka_Huta/z_bg_haka_huta.c b/src/overlays/actors/ovl_Bg_Haka_Huta/z_bg_haka_huta.c index 757e9ecb11..63ef8e5153 100644 --- a/src/overlays/actors/ovl_Bg_Haka_Huta/z_bg_haka_huta.c +++ b/src/overlays/actors/ovl_Bg_Haka_Huta/z_bg_haka_huta.c @@ -5,9 +5,20 @@ */ #include "z_bg_haka_huta.h" -#include "assets/objects/object_hakach_objects/object_hakach_objects.h" #include "overlays/actors/ovl_En_Rd/z_en_rd.h" + +#include "libc64/qrand.h" +#include "ichain.h" +#include "one_point_cutscene.h" #include "quake.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + +#include "assets/objects/object_hakach_objects/object_hakach_objects.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Bg_Haka_Huta/z_bg_haka_huta.h b/src/overlays/actors/ovl_Bg_Haka_Huta/z_bg_haka_huta.h index 8897772b01..e1ce3a0946 100644 --- a/src/overlays/actors/ovl_Bg_Haka_Huta/z_bg_haka_huta.h +++ b/src/overlays/actors/ovl_Bg_Haka_Huta/z_bg_haka_huta.h @@ -2,11 +2,11 @@ #define Z_BG_HAKA_HUTA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgHakaHuta; -typedef void (*BgHakaHutaActionFunc)(struct BgHakaHuta*, PlayState*); +typedef void (*BgHakaHutaActionFunc)(struct BgHakaHuta*, struct PlayState*); typedef struct BgHakaHuta { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Haka_Megane/z_bg_haka_megane.c b/src/overlays/actors/ovl_Bg_Haka_Megane/z_bg_haka_megane.c index dad34f592d..3d67136b73 100644 --- a/src/overlays/actors/ovl_Bg_Haka_Megane/z_bg_haka_megane.c +++ b/src/overlays/actors/ovl_Bg_Haka_Megane/z_bg_haka_megane.c @@ -5,6 +5,10 @@ */ #include "z_bg_haka_megane.h" + +#include "ichain.h" +#include "z64play.h" + #include "assets/objects/object_hakach_objects/object_hakach_objects.h" #include "assets/objects/object_haka_objects/object_haka_objects.h" diff --git a/src/overlays/actors/ovl_Bg_Haka_Megane/z_bg_haka_megane.h b/src/overlays/actors/ovl_Bg_Haka_Megane/z_bg_haka_megane.h index e82c0a97c6..bb7711c7b5 100644 --- a/src/overlays/actors/ovl_Bg_Haka_Megane/z_bg_haka_megane.h +++ b/src/overlays/actors/ovl_Bg_Haka_Megane/z_bg_haka_megane.h @@ -2,11 +2,11 @@ #define Z_BG_HAKA_MEGANE_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgHakaMegane; -typedef void (*BgHakaMeganeActionFunc)(struct BgHakaMegane*, PlayState*); +typedef void (*BgHakaMeganeActionFunc)(struct BgHakaMegane*, struct PlayState*); typedef struct BgHakaMegane { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Haka_MeganeBG/z_bg_haka_meganebg.c b/src/overlays/actors/ovl_Bg_Haka_MeganeBG/z_bg_haka_meganebg.c index f0f23b3131..7b06abe5ab 100644 --- a/src/overlays/actors/ovl_Bg_Haka_MeganeBG/z_bg_haka_meganebg.c +++ b/src/overlays/actors/ovl_Bg_Haka_MeganeBG/z_bg_haka_meganebg.c @@ -5,6 +5,13 @@ */ #include "z_bg_haka_meganebg.h" + +#include "ichain.h" +#include "one_point_cutscene.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_haka_objects/object_haka_objects.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Bg_Haka_MeganeBG/z_bg_haka_meganebg.h b/src/overlays/actors/ovl_Bg_Haka_MeganeBG/z_bg_haka_meganebg.h index 933c49fbba..4a11b26b7d 100644 --- a/src/overlays/actors/ovl_Bg_Haka_MeganeBG/z_bg_haka_meganebg.h +++ b/src/overlays/actors/ovl_Bg_Haka_MeganeBG/z_bg_haka_meganebg.h @@ -2,11 +2,11 @@ #define Z_BG_HAKA_MEGANEBG_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgHakaMeganeBG; -typedef void (*BgHakaMeganeBGActionFunc)(struct BgHakaMeganeBG*, PlayState*); +typedef void (*BgHakaMeganeBGActionFunc)(struct BgHakaMeganeBG*, struct PlayState*); typedef struct BgHakaMeganeBG { /* 0x0000 */ DynaPolyActor dyna; 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 fff0314d44..f11973a86f 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 @@ -5,6 +5,14 @@ */ #include "z_bg_haka_sgami.h" + +#include "ichain.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_haka_objects/object_haka_objects.h" #include "assets/objects/object_ice_objects/object_ice_objects.h" @@ -147,12 +155,12 @@ void BgHakaSgami_Init(Actor* thisx, PlayState* play) { Collider_InitTris(play, colliderScythe); Collider_SetTris(play, colliderScythe, thisx, &sTrisInit, this->colliderScytheItems); - Collider_InitCylinder(play, &this->colliderScytheCenter); - Collider_SetCylinder(play, &this->colliderScytheCenter, thisx, &sCylinderInit); + Collider_InitCylinder(play, &this->scytheCenterCollider); + Collider_SetCylinder(play, &this->scytheCenterCollider, thisx, &sCylinderInit); - this->colliderScytheCenter.dim.pos.x = thisx->world.pos.x; - this->colliderScytheCenter.dim.pos.y = thisx->world.pos.y; - this->colliderScytheCenter.dim.pos.z = thisx->world.pos.z; + this->scytheCenterCollider.dim.pos.x = thisx->world.pos.x; + this->scytheCenterCollider.dim.pos.y = thisx->world.pos.y; + this->scytheCenterCollider.dim.pos.z = thisx->world.pos.z; CollisionCheck_SetInfo(&thisx->colChkInfo, NULL, &sColChkInfoInit); @@ -173,8 +181,8 @@ void BgHakaSgami_Init(Actor* thisx, PlayState* play) { thisx->flags &= ~ACTOR_FLAG_ATTENTION_ENABLED; } else { this->requiredObjectSlot = Object_GetSlot(&play->objectCtx, OBJECT_ICE_OBJECTS); - this->colliderScytheCenter.dim.radius = 30; - this->colliderScytheCenter.dim.height = 70; + this->scytheCenterCollider.dim.radius = 30; + this->scytheCenterCollider.dim.height = 70; Actor_SetFocus(thisx, 40.0f); } @@ -192,7 +200,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_DestroyCylinder(play, &this->colliderScytheCenter); + Collider_DestroyCylinder(play, &this->scytheCenterCollider); } void BgHakaSgami_SetupSpin(BgHakaSgami* this, PlayState* play) { @@ -281,7 +289,7 @@ void BgHakaSgami_Spin(BgHakaSgami* this, PlayState* play) { } CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderScythe.base); - CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderScytheCenter.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 d13418053e..53c0b63400 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 @@ -2,11 +2,11 @@ #define Z_BG_HAKA_SGAMI_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgHakaSgami; -typedef void (*BgHakaSgamiActionFunc)(struct BgHakaSgami*, PlayState*); +typedef void (*BgHakaSgamiActionFunc)(struct BgHakaSgami*, struct PlayState*); typedef struct BgHakaSgami { /* 0x0000 */ Actor actor; @@ -15,7 +15,7 @@ typedef struct BgHakaSgami { /* 0x0151 */ s8 unk_151; /* 0x0152 */ s16 timer; /* 0x0154 */ s32 blureEffectIndex[2]; - /* 0x015C */ ColliderCylinder colliderScytheCenter; + /* 0x015C */ ColliderCylinder scytheCenterCollider; /* 0x01A8 */ ColliderTris colliderScythe; /* 0x01C8 */ ColliderTrisElement colliderScytheItems[4]; } BgHakaSgami; // size = 0x0338 diff --git a/src/overlays/actors/ovl_Bg_Haka_Ship/z_bg_haka_ship.c b/src/overlays/actors/ovl_Bg_Haka_Ship/z_bg_haka_ship.c index 5a9a06d5c8..b28c155edd 100644 --- a/src/overlays/actors/ovl_Bg_Haka_Ship/z_bg_haka_ship.c +++ b/src/overlays/actors/ovl_Bg_Haka_Ship/z_bg_haka_ship.c @@ -5,6 +5,17 @@ */ #include "z_bg_haka_ship.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64skin_matrix.h" + #include "assets/objects/object_haka_objects/object_haka_objects.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_Bg_Haka_Ship/z_bg_haka_ship.h b/src/overlays/actors/ovl_Bg_Haka_Ship/z_bg_haka_ship.h index 303247015e..e6ede3d2b3 100644 --- a/src/overlays/actors/ovl_Bg_Haka_Ship/z_bg_haka_ship.h +++ b/src/overlays/actors/ovl_Bg_Haka_Ship/z_bg_haka_ship.h @@ -2,11 +2,11 @@ #define Z_BG_HAKA_SHIP_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgHakaShip; -typedef void (*BgHakaShipActionFunc)(struct BgHakaShip*, PlayState*); +typedef void (*BgHakaShipActionFunc)(struct BgHakaShip*, struct PlayState*); typedef struct BgHakaShip { /* 0x0000 */ DynaPolyActor dyna; 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 761be4b154..cf34101f56 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 @@ -5,6 +5,17 @@ */ #include "z_bg_haka_trap.h" + +#include "ichain.h" +#include "rand.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64skin_matrix.h" + #include "assets/objects/object_haka_objects/object_haka_objects.h" #define FLAGS 0 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 a6a34dd426..0ef71acec9 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 @@ -2,7 +2,7 @@ #define Z_BG_HAKA_TRAP_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" typedef enum HakaTrapType { /* 0x00 */ HAKA_TRAP_GUILLOTINE_SLOW, @@ -15,7 +15,7 @@ typedef enum HakaTrapType { struct BgHakaTrap; -typedef void (*BgHakaTrapActionFunc)(struct BgHakaTrap*, PlayState*); +typedef void (*BgHakaTrapActionFunc)(struct BgHakaTrap*, struct PlayState*); typedef struct BgHakaTrap { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Haka_Tubo/z_bg_haka_tubo.c b/src/overlays/actors/ovl_Bg_Haka_Tubo/z_bg_haka_tubo.c index 54d6501821..df7c95b0e9 100644 --- a/src/overlays/actors/ovl_Bg_Haka_Tubo/z_bg_haka_tubo.c +++ b/src/overlays/actors/ovl_Bg_Haka_Tubo/z_bg_haka_tubo.c @@ -5,6 +5,18 @@ */ #include "z_bg_haka_tubo.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_haka_objects/object_haka_objects.h" diff --git a/src/overlays/actors/ovl_Bg_Haka_Tubo/z_bg_haka_tubo.h b/src/overlays/actors/ovl_Bg_Haka_Tubo/z_bg_haka_tubo.h index fbed37aa20..a0caba8c23 100644 --- a/src/overlays/actors/ovl_Bg_Haka_Tubo/z_bg_haka_tubo.h +++ b/src/overlays/actors/ovl_Bg_Haka_Tubo/z_bg_haka_tubo.h @@ -2,11 +2,11 @@ #define Z_BG_HAKA_TUBO_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgHakaTubo; -typedef void (*BgHakaTuboActionFunc)(struct BgHakaTubo*, PlayState*); +typedef void (*BgHakaTuboActionFunc)(struct BgHakaTubo*, struct PlayState*); typedef struct BgHakaTubo { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Haka_Water/z_bg_haka_water.c b/src/overlays/actors/ovl_Bg_Haka_Water/z_bg_haka_water.c index 49f42262b7..581af06120 100644 --- a/src/overlays/actors/ovl_Bg_Haka_Water/z_bg_haka_water.c +++ b/src/overlays/actors/ovl_Bg_Haka_Water/z_bg_haka_water.c @@ -5,6 +5,15 @@ */ #include "z_bg_haka_water.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_hakach_objects/object_hakach_objects.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_Bg_Haka_Water/z_bg_haka_water.h b/src/overlays/actors/ovl_Bg_Haka_Water/z_bg_haka_water.h index b89d0fa522..a34a043590 100644 --- a/src/overlays/actors/ovl_Bg_Haka_Water/z_bg_haka_water.h +++ b/src/overlays/actors/ovl_Bg_Haka_Water/z_bg_haka_water.h @@ -2,11 +2,11 @@ #define Z_BG_HAKA_WATER_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgHakaWater; -typedef void (*BgHakaWaterActionFunc)(struct BgHakaWater*, PlayState*); +typedef void (*BgHakaWaterActionFunc)(struct BgHakaWater*, struct PlayState*); typedef struct BgHakaWater { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Bg_Haka_Zou/z_bg_haka_zou.c b/src/overlays/actors/ovl_Bg_Haka_Zou/z_bg_haka_zou.c index f328a2d6df..8064cae2d4 100644 --- a/src/overlays/actors/ovl_Bg_Haka_Zou/z_bg_haka_zou.c +++ b/src/overlays/actors/ovl_Bg_Haka_Zou/z_bg_haka_zou.c @@ -5,6 +5,16 @@ */ #include "z_bg_haka_zou.h" + +#include "libc64/qrand.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "rand.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/object_hakach_objects/object_hakach_objects.h" #include "assets/objects/object_haka_objects/object_haka_objects.h" diff --git a/src/overlays/actors/ovl_Bg_Haka_Zou/z_bg_haka_zou.h b/src/overlays/actors/ovl_Bg_Haka_Zou/z_bg_haka_zou.h index 6eb5ddcaea..2c8f9a4834 100644 --- a/src/overlays/actors/ovl_Bg_Haka_Zou/z_bg_haka_zou.h +++ b/src/overlays/actors/ovl_Bg_Haka_Zou/z_bg_haka_zou.h @@ -2,11 +2,11 @@ #define Z_BG_HAKA_ZOU_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgHakaZou; -typedef void (*BgHakaZouActionFunc)(struct BgHakaZou*, PlayState*); +typedef void (*BgHakaZouActionFunc)(struct BgHakaZou*, struct PlayState*); typedef struct BgHakaZou { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Heavy_Block/z_bg_heavy_block.c b/src/overlays/actors/ovl_Bg_Heavy_Block/z_bg_heavy_block.c index 34587ad303..ba6d3f526a 100644 --- a/src/overlays/actors/ovl_Bg_Heavy_Block/z_bg_heavy_block.c +++ b/src/overlays/actors/ovl_Bg_Heavy_Block/z_bg_heavy_block.c @@ -5,10 +5,25 @@ */ #include "z_bg_heavy_block.h" -#include "global.h" -#include "assets/objects/object_heavy_object/object_heavy_object.h" + +#include "libu64/debug.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" #include "quake.h" +#include "rand.h" +#include "rumble.h" +#include "sfx.h" +#include "sys_math.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + +#include "assets/objects/object_heavy_object/object_heavy_object.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Bg_Hidan_Curtain/z_bg_hidan_curtain.c b/src/overlays/actors/ovl_Bg_Hidan_Curtain/z_bg_hidan_curtain.c index 368ccedffa..a20a0a0421 100644 --- a/src/overlays/actors/ovl_Bg_Hidan_Curtain/z_bg_hidan_curtain.c +++ b/src/overlays/actors/ovl_Bg_Hidan_Curtain/z_bg_hidan_curtain.c @@ -5,6 +5,17 @@ */ #include "z_bg_hidan_curtain.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "one_point_cutscene.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Bg_Hidan_Curtain/z_bg_hidan_curtain.h b/src/overlays/actors/ovl_Bg_Hidan_Curtain/z_bg_hidan_curtain.h index 54a99a7960..14502cba68 100644 --- a/src/overlays/actors/ovl_Bg_Hidan_Curtain/z_bg_hidan_curtain.h +++ b/src/overlays/actors/ovl_Bg_Hidan_Curtain/z_bg_hidan_curtain.h @@ -2,11 +2,11 @@ #define Z_BG_HIDAN_CURTAIN_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgHidanCurtain; -typedef void (*BgHidanCurtainActionFunc)(struct BgHidanCurtain*, PlayState*); +typedef void (*BgHidanCurtainActionFunc)(struct BgHidanCurtain*, struct PlayState*); typedef struct BgHidanCurtain { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Bg_Hidan_Dalm/z_bg_hidan_dalm.c b/src/overlays/actors/ovl_Bg_Hidan_Dalm/z_bg_hidan_dalm.c index d7868a5cc6..885967c2bb 100644 --- a/src/overlays/actors/ovl_Bg_Hidan_Dalm/z_bg_hidan_dalm.c +++ b/src/overlays/actors/ovl_Bg_Hidan_Dalm/z_bg_hidan_dalm.c @@ -5,6 +5,16 @@ */ #include "z_bg_hidan_dalm.h" + +#include "libc64/qrand.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_hidan_objects/object_hidan_objects.h" #define FLAGS 0 @@ -104,7 +114,7 @@ void BgHidanDalm_Init(Actor* thisx, PlayState* play) { CollisionHeader_GetVirtual(&gFireTempleHammerableTotemCol, &colHeader); this->dyna.bgId = DynaPoly_SetBgActor(play, &play->colCtx.dyna, thisx, colHeader); Collider_InitTris(play, &this->collider); - Collider_SetTris(play, &this->collider, thisx, &sTrisInit, this->colliderItems); + Collider_SetTris(play, &this->collider, thisx, &sTrisInit, this->colliderElements); this->switchFlag = PARAMS_GET_U(thisx->params, 8, 8); thisx->params &= 0xFF; diff --git a/src/overlays/actors/ovl_Bg_Hidan_Dalm/z_bg_hidan_dalm.h b/src/overlays/actors/ovl_Bg_Hidan_Dalm/z_bg_hidan_dalm.h index 1ded5bdcb7..83cabfaab4 100644 --- a/src/overlays/actors/ovl_Bg_Hidan_Dalm/z_bg_hidan_dalm.h +++ b/src/overlays/actors/ovl_Bg_Hidan_Dalm/z_bg_hidan_dalm.h @@ -2,18 +2,18 @@ #define Z_BG_HIDAN_DALM_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgHidanDalm; -typedef void (*BgHidanDalmActionFunc)(struct BgHidanDalm*, PlayState*); +typedef void (*BgHidanDalmActionFunc)(struct BgHidanDalm*, struct PlayState*); typedef struct BgHidanDalm { /* 0x0000 */ DynaPolyActor dyna; /* 0x0164 */ BgHidanDalmActionFunc actionFunc; /* 0x0168 */ u8 switchFlag; /* 0x016C */ ColliderTris collider; - /* 0x018C */ ColliderTrisElement colliderItems[4]; + /* 0x018C */ ColliderTrisElement colliderElements[4]; } BgHidanDalm; // size = 0x02FC #endif diff --git a/src/overlays/actors/ovl_Bg_Hidan_Firewall/z_bg_hidan_firewall.c b/src/overlays/actors/ovl_Bg_Hidan_Firewall/z_bg_hidan_firewall.c index f083db4284..9394d4017b 100644 --- a/src/overlays/actors/ovl_Bg_Hidan_Firewall/z_bg_hidan_firewall.c +++ b/src/overlays/actors/ovl_Bg_Hidan_Firewall/z_bg_hidan_firewall.c @@ -5,6 +5,16 @@ */ #include "z_bg_hidan_firewall.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_hidan_objects/object_hidan_objects.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Bg_Hidan_Firewall/z_bg_hidan_firewall.h b/src/overlays/actors/ovl_Bg_Hidan_Firewall/z_bg_hidan_firewall.h index ab60763f7a..35e643279e 100644 --- a/src/overlays/actors/ovl_Bg_Hidan_Firewall/z_bg_hidan_firewall.h +++ b/src/overlays/actors/ovl_Bg_Hidan_Firewall/z_bg_hidan_firewall.h @@ -2,11 +2,11 @@ #define Z_BG_HIDAN_FIREWALL_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgHidanFirewall; -typedef void (*BgHidanFirewallActionFunc)(struct BgHidanFirewall*, PlayState*); +typedef void (*BgHidanFirewallActionFunc)(struct BgHidanFirewall*, struct PlayState*); typedef struct BgHidanFirewall { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Bg_Hidan_Fslift/z_bg_hidan_fslift.c b/src/overlays/actors/ovl_Bg_Hidan_Fslift/z_bg_hidan_fslift.c index 43525d92f7..2616f14ace 100644 --- a/src/overlays/actors/ovl_Bg_Hidan_Fslift/z_bg_hidan_fslift.c +++ b/src/overlays/actors/ovl_Bg_Hidan_Fslift/z_bg_hidan_fslift.c @@ -5,6 +5,12 @@ */ #include "z_bg_hidan_fslift.h" + +#include "ichain.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_hidan_objects/object_hidan_objects.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Bg_Hidan_Fslift/z_bg_hidan_fslift.h b/src/overlays/actors/ovl_Bg_Hidan_Fslift/z_bg_hidan_fslift.h index e1906d1f40..e21de9fca2 100644 --- a/src/overlays/actors/ovl_Bg_Hidan_Fslift/z_bg_hidan_fslift.h +++ b/src/overlays/actors/ovl_Bg_Hidan_Fslift/z_bg_hidan_fslift.h @@ -2,11 +2,11 @@ #define Z_BG_HIDAN_FSLIFT_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgHidanFslift; -typedef void (*BgHidanFsliftActionFunc)(struct BgHidanFslift*, PlayState*); +typedef void (*BgHidanFsliftActionFunc)(struct BgHidanFslift*, struct PlayState*); typedef struct BgHidanFslift { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Hidan_Fwbig/z_bg_hidan_fwbig.c b/src/overlays/actors/ovl_Bg_Hidan_Fwbig/z_bg_hidan_fwbig.c index fef4a8d863..47849aa850 100644 --- a/src/overlays/actors/ovl_Bg_Hidan_Fwbig/z_bg_hidan_fwbig.c +++ b/src/overlays/actors/ovl_Bg_Hidan_Fwbig/z_bg_hidan_fwbig.c @@ -6,6 +6,19 @@ */ #include "z_bg_hidan_fwbig.h" + +#include "ichain.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "one_point_cutscene.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_hidan_objects/object_hidan_objects.h" diff --git a/src/overlays/actors/ovl_Bg_Hidan_Fwbig/z_bg_hidan_fwbig.h b/src/overlays/actors/ovl_Bg_Hidan_Fwbig/z_bg_hidan_fwbig.h index 9bf96e22d3..ce1f016125 100644 --- a/src/overlays/actors/ovl_Bg_Hidan_Fwbig/z_bg_hidan_fwbig.h +++ b/src/overlays/actors/ovl_Bg_Hidan_Fwbig/z_bg_hidan_fwbig.h @@ -2,11 +2,11 @@ #define Z_BG_HIDAN_FWBIG_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgHidanFwbig; -typedef void (*BgHidanFwbigActionFunc)(struct BgHidanFwbig*, PlayState*); +typedef void (*BgHidanFwbigActionFunc)(struct BgHidanFwbig*, struct PlayState*); typedef struct BgHidanFwbig { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Bg_Hidan_Hamstep/z_bg_hidan_hamstep.c b/src/overlays/actors/ovl_Bg_Hidan_Hamstep/z_bg_hidan_hamstep.c index 4888bc381f..92ba5dd5b0 100644 --- a/src/overlays/actors/ovl_Bg_Hidan_Hamstep/z_bg_hidan_hamstep.c +++ b/src/overlays/actors/ovl_Bg_Hidan_Hamstep/z_bg_hidan_hamstep.c @@ -5,9 +5,21 @@ */ #include "z_bg_hidan_hamstep.h" -#include "versions.h" -#include "assets/objects/object_hidan_objects/object_hidan_objects.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" #include "quake.h" +#include "regs.h" +#include "rumble.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "versions.h" +#include "z_lib.h" +#include "z64play.h" + +#include "assets/objects/object_hidan_objects/object_hidan_objects.h" #define FLAGS 0 @@ -141,7 +153,7 @@ void BgHidanHamstep_Init(Actor* thisx, PlayState* play) { if (PARAMS_GET_U(this->dyna.actor.params, 0, 8) == 0) { Collider_InitTris(play, &this->collider); - Collider_SetTris(play, &this->collider, &this->dyna.actor, &sTrisInit, this->colliderItems); + Collider_SetTris(play, &this->collider, &this->dyna.actor, &sTrisInit, this->colliderElements); for (i = 0; i < 2; i++) { for (i2 = 0; i2 < 3; i2++) { diff --git a/src/overlays/actors/ovl_Bg_Hidan_Hamstep/z_bg_hidan_hamstep.h b/src/overlays/actors/ovl_Bg_Hidan_Hamstep/z_bg_hidan_hamstep.h index eca062fa95..faf1db7577 100644 --- a/src/overlays/actors/ovl_Bg_Hidan_Hamstep/z_bg_hidan_hamstep.h +++ b/src/overlays/actors/ovl_Bg_Hidan_Hamstep/z_bg_hidan_hamstep.h @@ -2,16 +2,16 @@ #define Z_BG_HIDAN_HAMSTEP_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgHidanHamstep; -typedef void (*BgHidanHamstepActionFunc)(struct BgHidanHamstep*, PlayState*); +typedef void (*BgHidanHamstepActionFunc)(struct BgHidanHamstep*, struct PlayState*); typedef struct BgHidanHamstep { /* 0x0000 */ DynaPolyActor dyna; /* 0x0164 */ ColliderTris collider; - /* 0x0184 */ ColliderTrisElement colliderItems[2]; + /* 0x0184 */ ColliderTrisElement colliderElements[2]; /* 0x023C */ BgHidanHamstepActionFunc actionFunc; /* 0x0240 */ s32 action; /* 0x0244 */ s32 unk_244; diff --git a/src/overlays/actors/ovl_Bg_Hidan_Hrock/z_bg_hidan_hrock.c b/src/overlays/actors/ovl_Bg_Hidan_Hrock/z_bg_hidan_hrock.c index 53ce9892e9..a4fd5fab33 100644 --- a/src/overlays/actors/ovl_Bg_Hidan_Hrock/z_bg_hidan_hrock.c +++ b/src/overlays/actors/ovl_Bg_Hidan_Hrock/z_bg_hidan_hrock.c @@ -5,6 +5,13 @@ */ #include "z_bg_hidan_hrock.h" + +#include "ichain.h" +#include "rumble.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_hidan_objects/object_hidan_objects.h" #define FLAGS 0 @@ -88,7 +95,7 @@ void BgHidanHrock_Init(Actor* thisx, PlayState* play) { this->unk_16A = PARAMS_GET_U(thisx->params, 0, 6); thisx->params = PARAMS_GET_U(thisx->params, 8, 8); Collider_InitTris(play, &this->collider); - Collider_SetTris(play, &this->collider, thisx, &sTrisInit, this->colliderItems); + Collider_SetTris(play, &this->collider, thisx, &sTrisInit, this->colliderElements); DynaPolyActor_Init(&this->dyna, 0); sinRotY = Math_SinS(thisx->shape.rot.y); diff --git a/src/overlays/actors/ovl_Bg_Hidan_Hrock/z_bg_hidan_hrock.h b/src/overlays/actors/ovl_Bg_Hidan_Hrock/z_bg_hidan_hrock.h index 9835f68873..955ddd5dfc 100644 --- a/src/overlays/actors/ovl_Bg_Hidan_Hrock/z_bg_hidan_hrock.h +++ b/src/overlays/actors/ovl_Bg_Hidan_Hrock/z_bg_hidan_hrock.h @@ -2,11 +2,11 @@ #define Z_BG_HIDAN_HROCK_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgHidanHrock; -typedef void (*BgHidanHrockActionFunc)(struct BgHidanHrock*, PlayState*); +typedef void (*BgHidanHrockActionFunc)(struct BgHidanHrock*, struct PlayState*); typedef struct BgHidanHrock { /* 0x0000 */ DynaPolyActor dyna; @@ -14,7 +14,7 @@ typedef struct BgHidanHrock { /* 0x0168 */ s16 unk_168; /* 0x016A */ u8 unk_16A; /* 0x016C */ ColliderTris collider; - /* 0x018C */ ColliderTrisElement colliderItems[2]; + /* 0x018C */ ColliderTrisElement colliderElements[2]; } BgHidanHrock; // size = 0x0244 #endif diff --git a/src/overlays/actors/ovl_Bg_Hidan_Kousi/z_bg_hidan_kousi.c b/src/overlays/actors/ovl_Bg_Hidan_Kousi/z_bg_hidan_kousi.c index e5e49a947f..bce57124eb 100644 --- a/src/overlays/actors/ovl_Bg_Hidan_Kousi/z_bg_hidan_kousi.c +++ b/src/overlays/actors/ovl_Bg_Hidan_Kousi/z_bg_hidan_kousi.c @@ -5,6 +5,16 @@ */ #include "z_bg_hidan_kousi.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_hidan_objects/object_hidan_objects.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Bg_Hidan_Kousi/z_bg_hidan_kousi.h b/src/overlays/actors/ovl_Bg_Hidan_Kousi/z_bg_hidan_kousi.h index 94a5aad2a9..112b8dc09a 100644 --- a/src/overlays/actors/ovl_Bg_Hidan_Kousi/z_bg_hidan_kousi.h +++ b/src/overlays/actors/ovl_Bg_Hidan_Kousi/z_bg_hidan_kousi.h @@ -2,11 +2,11 @@ #define Z_BG_HIDAN_KOUSI_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgHidanKousi; -typedef void (*BgHidanKousiActionFunc)(struct BgHidanKousi*, PlayState*); +typedef void (*BgHidanKousiActionFunc)(struct BgHidanKousi*, struct PlayState*); typedef struct BgHidanKousi { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Hidan_Kowarerukabe/z_bg_hidan_kowarerukabe.c b/src/overlays/actors/ovl_Bg_Hidan_Kowarerukabe/z_bg_hidan_kowarerukabe.c index aaba19888f..27312b4fae 100644 --- a/src/overlays/actors/ovl_Bg_Hidan_Kowarerukabe/z_bg_hidan_kowarerukabe.c +++ b/src/overlays/actors/ovl_Bg_Hidan_Kowarerukabe/z_bg_hidan_kowarerukabe.c @@ -5,8 +5,19 @@ */ #include "z_bg_hidan_kowarerukabe.h" -#include "assets/objects/gameplay_dangeon_keep/gameplay_dangeon_keep.h" #include "overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + +#include "assets/objects/gameplay_dangeon_keep/gameplay_dangeon_keep.h" #include "assets/objects/object_hidan_objects/object_hidan_objects.h" #define FLAGS 0 @@ -92,7 +103,7 @@ void BgHidanKowarerukabe_InitColliderSphere(BgHidanKowarerukabe* this, PlayState s32 pad; Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, &this->dyna.actor, &sJntSphInit, this->colliderItems); + Collider_SetJntSph(play, &this->collider, &this->dyna.actor, &sJntSphInit, this->colliderElements); this->collider.elements[0].dim.modelSphere.radius = sphereRadii[PARAMS_GET_U(this->dyna.actor.params, 0, 8)]; this->collider.elements[0].dim.modelSphere.center.y = sphereYPositions[PARAMS_GET_U(this->dyna.actor.params, 0, 8)]; diff --git a/src/overlays/actors/ovl_Bg_Hidan_Kowarerukabe/z_bg_hidan_kowarerukabe.h b/src/overlays/actors/ovl_Bg_Hidan_Kowarerukabe/z_bg_hidan_kowarerukabe.h index 5b59c09ebe..7257a210f1 100644 --- a/src/overlays/actors/ovl_Bg_Hidan_Kowarerukabe/z_bg_hidan_kowarerukabe.h +++ b/src/overlays/actors/ovl_Bg_Hidan_Kowarerukabe/z_bg_hidan_kowarerukabe.h @@ -2,14 +2,14 @@ #define Z_BG_HIDAN_KOWARERUKABE_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgHidanKowarerukabe; typedef struct BgHidanKowarerukabe { /* 0x0000 */ DynaPolyActor dyna; /* 0x0164 */ ColliderJntSph collider; - /* 0x0184 */ ColliderJntSphElement colliderItems[1]; + /* 0x0184 */ ColliderJntSphElement colliderElements[1]; } BgHidanKowarerukabe; // size = 0x01C4 #endif diff --git a/src/overlays/actors/ovl_Bg_Hidan_Rock/z_bg_hidan_rock.c b/src/overlays/actors/ovl_Bg_Hidan_Rock/z_bg_hidan_rock.c index e115fb77f9..bf5bc52317 100644 --- a/src/overlays/actors/ovl_Bg_Hidan_Rock/z_bg_hidan_rock.c +++ b/src/overlays/actors/ovl_Bg_Hidan_Rock/z_bg_hidan_rock.c @@ -5,6 +5,19 @@ */ #include "z_bg_hidan_rock.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rumble.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64skin_matrix.h" + #include "assets/objects/object_hidan_objects/object_hidan_objects.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Bg_Hidan_Rock/z_bg_hidan_rock.h b/src/overlays/actors/ovl_Bg_Hidan_Rock/z_bg_hidan_rock.h index 35ba9ef625..aa8d6ca874 100644 --- a/src/overlays/actors/ovl_Bg_Hidan_Rock/z_bg_hidan_rock.h +++ b/src/overlays/actors/ovl_Bg_Hidan_Rock/z_bg_hidan_rock.h @@ -2,11 +2,11 @@ #define Z_BG_HIDAN_ROCK_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgHidanRock; -typedef void (*BgHidanRockActionFunc)(struct BgHidanRock*, PlayState*); +typedef void (*BgHidanRockActionFunc)(struct BgHidanRock*, struct PlayState*); typedef struct BgHidanRock { /* 0x0000 */ DynaPolyActor dyna; 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 8c212e87b1..715ecc5fba 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 @@ -5,6 +5,16 @@ */ #include "z_bg_hidan_rsekizou.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_hidan_objects/object_hidan_objects.h" #define FLAGS 0 @@ -131,8 +141,8 @@ void BgHidanRsekizou_Init(Actor* thisx, PlayState* play) { CollisionHeader_GetVirtual(&gFireTempleSpinningFlamethrowerCol, &colHeader); this->dyna.bgId = DynaPoly_SetBgActor(play, &play->colCtx.dyna, &this->dyna.actor, colHeader); Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, &this->dyna.actor, &sJntSphInit, this->colliderItems); - for (i = 0; i < ARRAY_COUNT(this->colliderItems); i++) { + Collider_SetJntSph(play, &this->collider, &this->dyna.actor, &sJntSphInit, this->colliderElements); + for (i = 0; i < ARRAY_COUNT(this->colliderElements); i++) { this->collider.elements[i].dim.worldSphere.radius = this->collider.elements[i].dim.modelSphere.radius; } this->burnFrame = 0; @@ -168,7 +178,7 @@ void BgHidanRsekizou_Update(Actor* thisx, PlayState* play) { yawSine = Math_SinS(this->dyna.actor.shape.rot.y); yawCosine = Math_CosS(this->dyna.actor.shape.rot.y); - for (i = 0; i < ARRAY_COUNT(this->colliderItems); i++) { + 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; @@ -234,7 +244,7 @@ void BgHidanRsekizou_Draw(Actor* thisx, PlayState* play) { MATRIX_FINALIZE_AND_LOAD(POLY_OPA_DISP++, play->state.gfxCtx, "../z_bg_hidan_rsekizou.c", 568); gSPDisplayList(POLY_OPA_DISP++, gFireTempleSpinningFlamethrowerDL); - Matrix_MtxFCopy(&mf, &gMtxFClear); + Matrix_MtxFCopy(&mf, &gIdentityMtxF); POLY_XLU_DISP = Gfx_SetupDL(POLY_XLU_DISP, SETUPDL_20); diff --git a/src/overlays/actors/ovl_Bg_Hidan_Rsekizou/z_bg_hidan_rsekizou.h b/src/overlays/actors/ovl_Bg_Hidan_Rsekizou/z_bg_hidan_rsekizou.h index cfbd5d3e5e..82725e4fc1 100644 --- a/src/overlays/actors/ovl_Bg_Hidan_Rsekizou/z_bg_hidan_rsekizou.h +++ b/src/overlays/actors/ovl_Bg_Hidan_Rsekizou/z_bg_hidan_rsekizou.h @@ -2,7 +2,7 @@ #define Z_BG_HIDAN_RSEKIZOU_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgHidanRsekizou; @@ -11,7 +11,7 @@ typedef struct BgHidanRsekizou { /* 0x0164 */ s16 bendFrame; /* 0x0166 */ s16 burnFrame; /* 0x0168 */ ColliderJntSph collider; - /* 0x0188 */ ColliderJntSphElement colliderItems[6]; + /* 0x0188 */ ColliderJntSphElement colliderElements[6]; } BgHidanRsekizou; // size = 0x0308 #endif diff --git a/src/overlays/actors/ovl_Bg_Hidan_Sekizou/z_bg_hidan_sekizou.c b/src/overlays/actors/ovl_Bg_Hidan_Sekizou/z_bg_hidan_sekizou.c index 4f0bc29e67..1c86d7d851 100644 --- a/src/overlays/actors/ovl_Bg_Hidan_Sekizou/z_bg_hidan_sekizou.c +++ b/src/overlays/actors/ovl_Bg_Hidan_Sekizou/z_bg_hidan_sekizou.c @@ -5,6 +5,17 @@ */ #include "z_bg_hidan_sekizou.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_hidan_objects/object_hidan_objects.h" #define FLAGS 0 @@ -154,8 +165,8 @@ void BgHidanSekizou_Init(Actor* thisx, PlayState* play) { Actor_ProcessInitChain(&this->dyna.actor, sInitChain); DynaPolyActor_Init(&this->dyna, 0); Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, &this->dyna.actor, &sJntSphInit, this->elements); - for (i = 0; i < ARRAY_COUNT(this->elements); i++) { + Collider_SetJntSph(play, &this->collider, &this->dyna.actor, &sJntSphInit, this->colliderElements); + for (i = 0; i < ARRAY_COUNT(this->colliderElements); i++) { this->collider.elements[i].dim.worldSphere.radius = this->collider.elements[i].dim.modelSphere.radius; } if (this->dyna.actor.params == 0) { @@ -210,7 +221,7 @@ void func_8088D434(BgHidanSekizou* this, PlayState* play) { } } } - for (i = 3 * phi_s4; i < ARRAY_COUNT(this->elements); i++) { + for (i = 3 * phi_s4; i < ARRAY_COUNT(this->colliderElements); i++) { this->collider.elements[i].base.atElemFlags &= ~ATELEM_ON; this->collider.elements[i].base.ocElemFlags &= ~OCELEM_ON; } @@ -349,7 +360,7 @@ Gfx* func_8088DC50(PlayState* play, BgHidanSekizou* this, s16 arg2, s16 arg3, Gf } temp_f20 = Math_SinS(arg2); temp_f22 = Math_CosS(arg2); - Matrix_MtxFCopy(&sp68, &gMtxFClear); + Matrix_MtxFCopy(&sp68, &gIdentityMtxF); temp_v1 = Camera_GetCamDirYaw(GET_ACTIVE_CAM(play)) - arg2; if (ABS(temp_v1) < 0x4000) { diff --git a/src/overlays/actors/ovl_Bg_Hidan_Sekizou/z_bg_hidan_sekizou.h b/src/overlays/actors/ovl_Bg_Hidan_Sekizou/z_bg_hidan_sekizou.h index 86b9427df2..c898f9d934 100644 --- a/src/overlays/actors/ovl_Bg_Hidan_Sekizou/z_bg_hidan_sekizou.h +++ b/src/overlays/actors/ovl_Bg_Hidan_Sekizou/z_bg_hidan_sekizou.h @@ -2,11 +2,11 @@ #define Z_BG_HIDAN_SEKIZOU_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgHidanSekizou; -typedef void (*BgHidanSekizouUpdateFunc)(struct BgHidanSekizou*, PlayState*); +typedef void (*BgHidanSekizouUpdateFunc)(struct BgHidanSekizou*, struct PlayState*); typedef struct BgHidanSekizou { /* 0x0000 */ DynaPolyActor dyna; @@ -14,7 +14,7 @@ typedef struct BgHidanSekizou { /* 0x0168 */ s16 unk_168[4]; /* 0x0170 */ s16 unk_170; /* 0x0174 */ ColliderJntSph collider; - /* 0x0194 */ ColliderJntSphElement elements[6]; + /* 0x0194 */ ColliderJntSphElement colliderElements[6]; } BgHidanSekizou; // size = 0x0314 #endif diff --git a/src/overlays/actors/ovl_Bg_Hidan_Sima/z_bg_hidan_sima.c b/src/overlays/actors/ovl_Bg_Hidan_Sima/z_bg_hidan_sima.c index 06f5b2a308..20b3717087 100644 --- a/src/overlays/actors/ovl_Bg_Hidan_Sima/z_bg_hidan_sima.c +++ b/src/overlays/actors/ovl_Bg_Hidan_Sima/z_bg_hidan_sima.c @@ -5,6 +5,18 @@ */ #include "z_bg_hidan_sima.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rumble.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_hidan_objects/object_hidan_objects.h" #define FLAGS 0 @@ -95,7 +107,7 @@ void BgHidanSima_Init(Actor* thisx, PlayState* play) { } this->dyna.bgId = DynaPoly_SetBgActor(play, &play->colCtx.dyna, &this->dyna.actor, colHeader); Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, &this->dyna.actor, &sJntSphInit, this->elements); + Collider_SetJntSph(play, &this->collider, &this->dyna.actor, &sJntSphInit, this->colliderElements); for (i = 0; i < ARRAY_COUNT(sJntSphElementsInit); i++) { this->collider.elements[i].dim.worldSphere.radius = this->collider.elements[i].dim.modelSphere.radius; } @@ -233,7 +245,7 @@ Gfx* func_8088EB54(PlayState* play, BgHidanSima* this, Gfx* gfx) { f32 sin; s32 pad[2]; - Matrix_MtxFCopy(&mtxF, &gMtxFClear); + Matrix_MtxFCopy(&mtxF, &gIdentityMtxF); cos = Math_CosS(this->dyna.actor.world.rot.y + 0x8000); sin = Math_SinS(this->dyna.actor.world.rot.y + 0x8000); diff --git a/src/overlays/actors/ovl_Bg_Hidan_Sima/z_bg_hidan_sima.h b/src/overlays/actors/ovl_Bg_Hidan_Sima/z_bg_hidan_sima.h index 927391110b..dd64b556b0 100644 --- a/src/overlays/actors/ovl_Bg_Hidan_Sima/z_bg_hidan_sima.h +++ b/src/overlays/actors/ovl_Bg_Hidan_Sima/z_bg_hidan_sima.h @@ -2,18 +2,18 @@ #define Z_BG_HIDAN_SIMA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgHidanSima; -typedef void (*BgHidanSimaActionFunc)(struct BgHidanSima*, PlayState*); +typedef void (*BgHidanSimaActionFunc)(struct BgHidanSima*, struct PlayState*); typedef struct BgHidanSima { /* 0x0000 */ DynaPolyActor dyna; /* 0x0164 */ BgHidanSimaActionFunc actionFunc; /* 0x0168 */ s16 timer; /* 0x016C */ ColliderJntSph collider; - /* 0x018C */ ColliderJntSphElement elements[2]; + /* 0x018C */ ColliderJntSphElement colliderElements[2]; } BgHidanSima; // size = 0x020C #endif diff --git a/src/overlays/actors/ovl_Bg_Hidan_Syoku/z_bg_hidan_syoku.c b/src/overlays/actors/ovl_Bg_Hidan_Syoku/z_bg_hidan_syoku.c index e1a7007068..d21b1e8212 100644 --- a/src/overlays/actors/ovl_Bg_Hidan_Syoku/z_bg_hidan_syoku.c +++ b/src/overlays/actors/ovl_Bg_Hidan_Syoku/z_bg_hidan_syoku.c @@ -5,6 +5,11 @@ */ #include "z_bg_hidan_syoku.h" + +#include "ichain.h" +#include "sfx.h" +#include "z64play.h" + #include "assets/objects/object_hidan_objects/object_hidan_objects.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Bg_Hidan_Syoku/z_bg_hidan_syoku.h b/src/overlays/actors/ovl_Bg_Hidan_Syoku/z_bg_hidan_syoku.h index 61e3520b76..2ce3fbfd4e 100644 --- a/src/overlays/actors/ovl_Bg_Hidan_Syoku/z_bg_hidan_syoku.h +++ b/src/overlays/actors/ovl_Bg_Hidan_Syoku/z_bg_hidan_syoku.h @@ -2,11 +2,11 @@ #define Z_BG_HIDAN_SYOKU_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgHidanSyoku; -typedef void (*BgHidanSyokuActionFunc)(struct BgHidanSyoku*, PlayState*); +typedef void (*BgHidanSyokuActionFunc)(struct BgHidanSyoku*, struct PlayState*); typedef struct BgHidanSyoku { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Ice_Objects/z_bg_ice_objects.c b/src/overlays/actors/ovl_Bg_Ice_Objects/z_bg_ice_objects.c index 15163c9842..6bfd39e4e5 100644 --- a/src/overlays/actors/ovl_Bg_Ice_Objects/z_bg_ice_objects.c +++ b/src/overlays/actors/ovl_Bg_Ice_Objects/z_bg_ice_objects.c @@ -5,6 +5,16 @@ */ #include "z_bg_ice_objects.h" + +#include "libc64/qrand.h" +#include "ichain.h" +#include "rand.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_ice_objects/object_ice_objects.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Bg_Ice_Objects/z_bg_ice_objects.h b/src/overlays/actors/ovl_Bg_Ice_Objects/z_bg_ice_objects.h index 13a2334c39..364b087852 100644 --- a/src/overlays/actors/ovl_Bg_Ice_Objects/z_bg_ice_objects.h +++ b/src/overlays/actors/ovl_Bg_Ice_Objects/z_bg_ice_objects.h @@ -2,11 +2,11 @@ #define Z_BG_ICE_OBJECTS_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgIceObjects; -typedef void (*BgIceObjectsActionFunc) (struct BgIceObjects*, PlayState*); +typedef void (*BgIceObjectsActionFunc) (struct BgIceObjects*, struct PlayState*); typedef struct BgIceObjects { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Ice_Shelter/z_bg_ice_shelter.c b/src/overlays/actors/ovl_Bg_Ice_Shelter/z_bg_ice_shelter.c index 39c891ab4f..0b19f74e6a 100644 --- a/src/overlays/actors/ovl_Bg_Ice_Shelter/z_bg_ice_shelter.c +++ b/src/overlays/actors/ovl_Bg_Ice_Shelter/z_bg_ice_shelter.c @@ -5,6 +5,17 @@ */ #include "z_bg_ice_shelter.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/object_ice_objects/object_ice_objects.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Bg_Ice_Shelter/z_bg_ice_shelter.h b/src/overlays/actors/ovl_Bg_Ice_Shelter/z_bg_ice_shelter.h index 765b017b32..30286a64d1 100644 --- a/src/overlays/actors/ovl_Bg_Ice_Shelter/z_bg_ice_shelter.h +++ b/src/overlays/actors/ovl_Bg_Ice_Shelter/z_bg_ice_shelter.h @@ -2,11 +2,11 @@ #define Z_BG_ICE_SHELTER_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgIceShelter; -typedef void (*BgIceShelterActionFunc)(struct BgIceShelter*, PlayState*); +typedef void (*BgIceShelterActionFunc)(struct BgIceShelter*, struct PlayState*); typedef enum RedIceType { /* 0 */ RED_ICE_LARGE, // Large red ice block diff --git a/src/overlays/actors/ovl_Bg_Ice_Shutter/z_bg_ice_shutter.c b/src/overlays/actors/ovl_Bg_Ice_Shutter/z_bg_ice_shutter.c index d00358e230..20176f2758 100644 --- a/src/overlays/actors/ovl_Bg_Ice_Shutter/z_bg_ice_shutter.c +++ b/src/overlays/actors/ovl_Bg_Ice_Shutter/z_bg_ice_shutter.c @@ -5,6 +5,13 @@ */ #include "z_bg_ice_shutter.h" + +#include "ichain.h" +#include "one_point_cutscene.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_ice_objects/object_ice_objects.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Bg_Ice_Shutter/z_bg_ice_shutter.h b/src/overlays/actors/ovl_Bg_Ice_Shutter/z_bg_ice_shutter.h index db8a7ff61c..aad63d435b 100644 --- a/src/overlays/actors/ovl_Bg_Ice_Shutter/z_bg_ice_shutter.h +++ b/src/overlays/actors/ovl_Bg_Ice_Shutter/z_bg_ice_shutter.h @@ -2,11 +2,11 @@ #define Z_BG_ICE_SHUTTER_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgIceShutter; -typedef void (*BgIceShutterActionFunc)(struct BgIceShutter*, PlayState*); +typedef void (*BgIceShutterActionFunc)(struct BgIceShutter*, struct PlayState*); typedef struct BgIceShutter { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Ice_Turara/z_bg_ice_turara.c b/src/overlays/actors/ovl_Bg_Ice_Turara/z_bg_ice_turara.c index 094f585645..8fb200aca5 100644 --- a/src/overlays/actors/ovl_Bg_Ice_Turara/z_bg_ice_turara.c +++ b/src/overlays/actors/ovl_Bg_Ice_Turara/z_bg_ice_turara.c @@ -5,6 +5,15 @@ */ #include "z_bg_ice_turara.h" + +#include "libc64/qrand.h" +#include "ichain.h" +#include "rand.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/object_ice_objects/object_ice_objects.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Bg_Ice_Turara/z_bg_ice_turara.h b/src/overlays/actors/ovl_Bg_Ice_Turara/z_bg_ice_turara.h index eaa6cc843f..46a78eb738 100644 --- a/src/overlays/actors/ovl_Bg_Ice_Turara/z_bg_ice_turara.h +++ b/src/overlays/actors/ovl_Bg_Ice_Turara/z_bg_ice_turara.h @@ -2,11 +2,11 @@ #define Z_BG_ICE_TURARA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgIceTurara; -typedef void (*BgIceTuraraActionFunc)(struct BgIceTurara*, PlayState*); +typedef void (*BgIceTuraraActionFunc)(struct BgIceTurara*, struct PlayState*); typedef enum BgIceTuraraType { /* 0 */ TURARA_STALAGMITE, diff --git a/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c b/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c index a47a704a8f..aaa5a897ab 100644 --- a/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c +++ b/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c @@ -5,6 +5,14 @@ */ #include "z_bg_ingate.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_ingate/object_ingate.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.h b/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.h index 2137cc6464..c9f46446ab 100644 --- a/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.h +++ b/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.h @@ -2,11 +2,11 @@ #define Z_BG_INGATE_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgInGate; -typedef void (*BgInGateActionFunc)(struct BgInGate*, PlayState*); +typedef void (*BgInGateActionFunc)(struct BgInGate*, struct PlayState*); typedef struct BgInGate { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Jya_1flift/z_bg_jya_1flift.c b/src/overlays/actors/ovl_Bg_Jya_1flift/z_bg_jya_1flift.c index 7963199d74..94fd0883d4 100644 --- a/src/overlays/actors/ovl_Bg_Jya_1flift/z_bg_jya_1flift.c +++ b/src/overlays/actors/ovl_Bg_Jya_1flift/z_bg_jya_1flift.c @@ -5,6 +5,13 @@ */ #include "z_bg_jya_1flift.h" + +#include "ichain.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_jya_obj/object_jya_obj.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Bg_Jya_1flift/z_bg_jya_1flift.h b/src/overlays/actors/ovl_Bg_Jya_1flift/z_bg_jya_1flift.h index 31ce5a7f4d..8d772757bf 100644 --- a/src/overlays/actors/ovl_Bg_Jya_1flift/z_bg_jya_1flift.h +++ b/src/overlays/actors/ovl_Bg_Jya_1flift/z_bg_jya_1flift.h @@ -2,11 +2,11 @@ #define Z_BG_JYA_1FLIFT_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgJya1flift; -typedef void (*BgJya1fliftActionFunc)(struct BgJya1flift*, PlayState*); +typedef void (*BgJya1fliftActionFunc)(struct BgJya1flift*, struct PlayState*); typedef struct BgJya1flift { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Jya_Amishutter/z_bg_jya_amishutter.c b/src/overlays/actors/ovl_Bg_Jya_Amishutter/z_bg_jya_amishutter.c index 23f5658ce8..e97451e861 100644 --- a/src/overlays/actors/ovl_Bg_Jya_Amishutter/z_bg_jya_amishutter.c +++ b/src/overlays/actors/ovl_Bg_Jya_Amishutter/z_bg_jya_amishutter.c @@ -5,6 +5,12 @@ */ #include "z_bg_jya_amishutter.h" + +#include "ichain.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_jya_obj/object_jya_obj.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Bg_Jya_Amishutter/z_bg_jya_amishutter.h b/src/overlays/actors/ovl_Bg_Jya_Amishutter/z_bg_jya_amishutter.h index e15a42fe88..1dad4c1543 100644 --- a/src/overlays/actors/ovl_Bg_Jya_Amishutter/z_bg_jya_amishutter.h +++ b/src/overlays/actors/ovl_Bg_Jya_Amishutter/z_bg_jya_amishutter.h @@ -2,7 +2,7 @@ #define Z_BG_JYA_AMISHUTTER_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgJyaAmishutter; diff --git a/src/overlays/actors/ovl_Bg_Jya_Bigmirror/z_bg_jya_bigmirror.c b/src/overlays/actors/ovl_Bg_Jya_Bigmirror/z_bg_jya_bigmirror.c index ecdf4aa4de..7a3606213a 100644 --- a/src/overlays/actors/ovl_Bg_Jya_Bigmirror/z_bg_jya_bigmirror.c +++ b/src/overlays/actors/ovl_Bg_Jya_Bigmirror/z_bg_jya_bigmirror.c @@ -5,6 +5,13 @@ */ #include "z_bg_jya_bigmirror.h" +#include "overlays/actors/ovl_Bg_Jya_Cobra/z_bg_jya_cobra.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sys_matrix.h" +#include "z64play.h" + #include "assets/objects/object_jya_obj/object_jya_obj.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_Bg_Jya_Bigmirror/z_bg_jya_bigmirror.h b/src/overlays/actors/ovl_Bg_Jya_Bigmirror/z_bg_jya_bigmirror.h index 52f2b95930..56b6d8db07 100644 --- a/src/overlays/actors/ovl_Bg_Jya_Bigmirror/z_bg_jya_bigmirror.h +++ b/src/overlays/actors/ovl_Bg_Jya_Bigmirror/z_bg_jya_bigmirror.h @@ -2,8 +2,7 @@ #define Z_BG_JYA_BIGMIRROR_H #include "ultra64.h" -#include "global.h" -#include "overlays/actors/ovl_Bg_Jya_Cobra/z_bg_jya_cobra.h" +#include "z64actor.h" #define BIGMIR_PUZZLE_COBRA1_SOLVED (1 << 0) #define BIGMIR_PUZZLE_COBRA2_SOLVED (1 << 1) @@ -15,7 +14,7 @@ struct BgJyaBigmirror; typedef struct BigmirrorCobra { - /* 0x00 */ BgJyaCobra* cobra; + /* 0x00 */ struct BgJyaCobra* cobra; /* 0x04 */ s16 rotY; } BigmirrorCobra; // size = 0x08 diff --git a/src/overlays/actors/ovl_Bg_Jya_Block/z_bg_jya_block.c b/src/overlays/actors/ovl_Bg_Jya_Block/z_bg_jya_block.c index eea63927ed..946db1b05c 100644 --- a/src/overlays/actors/ovl_Bg_Jya_Block/z_bg_jya_block.c +++ b/src/overlays/actors/ovl_Bg_Jya_Block/z_bg_jya_block.c @@ -5,6 +5,16 @@ */ #include "z_bg_jya_block.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "segmented_address.h" +#include "sys_matrix.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/gameplay_dangeon_keep/gameplay_dangeon_keep.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Bg_Jya_Block/z_bg_jya_block.h b/src/overlays/actors/ovl_Bg_Jya_Block/z_bg_jya_block.h index 2d58de5c12..641141945a 100644 --- a/src/overlays/actors/ovl_Bg_Jya_Block/z_bg_jya_block.h +++ b/src/overlays/actors/ovl_Bg_Jya_Block/z_bg_jya_block.h @@ -2,7 +2,7 @@ #define Z_BG_JYA_BLOCK_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgJyaBlock; diff --git a/src/overlays/actors/ovl_Bg_Jya_Bombchuiwa/z_bg_jya_bombchuiwa.c b/src/overlays/actors/ovl_Bg_Jya_Bombchuiwa/z_bg_jya_bombchuiwa.c index cd177d8044..5b1c869eac 100644 --- a/src/overlays/actors/ovl_Bg_Jya_Bombchuiwa/z_bg_jya_bombchuiwa.c +++ b/src/overlays/actors/ovl_Bg_Jya_Bombchuiwa/z_bg_jya_bombchuiwa.c @@ -1,5 +1,17 @@ #include "z_bg_jya_bombchuiwa.h" #include "overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/object_jya_obj/object_jya_obj.h" #define FLAGS ACTOR_FLAG_ATTENTION_ENABLED @@ -65,7 +77,7 @@ void BgJyaBombchuiwa_SetupCollider(BgJyaBombchuiwa* this, PlayState* play) { s32 pad; Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, &this->colliderItems); + Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderElements); } void BgJyaBombchuiwa_SetDrawFlags(BgJyaBombchuiwa* this, u8 drawFlags) { diff --git a/src/overlays/actors/ovl_Bg_Jya_Bombchuiwa/z_bg_jya_bombchuiwa.h b/src/overlays/actors/ovl_Bg_Jya_Bombchuiwa/z_bg_jya_bombchuiwa.h index e936167100..ad9b9c33db 100644 --- a/src/overlays/actors/ovl_Bg_Jya_Bombchuiwa/z_bg_jya_bombchuiwa.h +++ b/src/overlays/actors/ovl_Bg_Jya_Bombchuiwa/z_bg_jya_bombchuiwa.h @@ -2,17 +2,17 @@ #define Z_BG_JYA_BOMBCHUIWA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgJyaBombchuiwa; -typedef void (*BgJyaBombchuiwaActionFunc)(struct BgJyaBombchuiwa*, PlayState*); +typedef void (*BgJyaBombchuiwaActionFunc)(struct BgJyaBombchuiwa*, struct PlayState*); typedef struct BgJyaBombchuiwa { /* 0x0000 */ Actor actor; /* 0x014C */ BgJyaBombchuiwaActionFunc actionFunc; /* 0x0150 */ ColliderJntSph collider; - /* 0x0170 */ ColliderJntSphElement colliderItems; + /* 0x0170 */ ColliderJntSphElement colliderElements[1]; /* 0x01B0 */ f32 lightRayIntensity; /* 0x01B4 */ s16 timer; /* 0x01B6 */ u8 drawFlags; // Used to determine how the actor is drawn. diff --git a/src/overlays/actors/ovl_Bg_Jya_Bombiwa/z_bg_jya_bombiwa.c b/src/overlays/actors/ovl_Bg_Jya_Bombiwa/z_bg_jya_bombiwa.c index c94ee924b1..ea2dd59eb2 100644 --- a/src/overlays/actors/ovl_Bg_Jya_Bombiwa/z_bg_jya_bombiwa.c +++ b/src/overlays/actors/ovl_Bg_Jya_Bombiwa/z_bg_jya_bombiwa.c @@ -6,8 +6,15 @@ #include "z_bg_jya_bombiwa.h" #include "overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h" -#include "assets/objects/object_jya_obj/object_jya_obj.h" + +#include "libc64/qrand.h" +#include "ichain.h" +#include "sfx.h" #include "terminal.h" +#include "z64effect.h" +#include "z64play.h" + +#include "assets/objects/object_jya_obj/object_jya_obj.h" #define FLAGS 0 @@ -85,7 +92,7 @@ void BgJyaBombiwa_InitCollider(BgJyaBombiwa* this, PlayState* play) { s32 pad; Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, &this->dyna.actor, &sJntSphInit, this->colliderItems); + Collider_SetJntSph(play, &this->collider, &this->dyna.actor, &sJntSphInit, this->colliderElements); } void BgJyaBombiwa_Init(Actor* thisx, PlayState* play) { diff --git a/src/overlays/actors/ovl_Bg_Jya_Bombiwa/z_bg_jya_bombiwa.h b/src/overlays/actors/ovl_Bg_Jya_Bombiwa/z_bg_jya_bombiwa.h index 879291f87c..9f06d9a1d6 100644 --- a/src/overlays/actors/ovl_Bg_Jya_Bombiwa/z_bg_jya_bombiwa.h +++ b/src/overlays/actors/ovl_Bg_Jya_Bombiwa/z_bg_jya_bombiwa.h @@ -2,8 +2,7 @@ #define Z_BG_JYA_BOMBIWA_H #include "ultra64.h" -#include "global.h" - +#include "z64actor.h" struct BgJyaBombiwa; @@ -11,7 +10,7 @@ typedef struct BgJyaBombiwa { /* 0x0000 */ DynaPolyActor dyna; /* 0x0164 */ s32 unk_164; /* 0x0168 */ ColliderJntSph collider; - /* 0x0188 */ ColliderJntSphElement colliderItems[1]; + /* 0x0188 */ ColliderJntSphElement colliderElements[1]; } BgJyaBombiwa; // size = 0x01C8 #endif diff --git a/src/overlays/actors/ovl_Bg_Jya_Cobra/z_bg_jya_cobra.c b/src/overlays/actors/ovl_Bg_Jya_Cobra/z_bg_jya_cobra.c index c32bd92896..6380e0cf6a 100644 --- a/src/overlays/actors/ovl_Bg_Jya_Cobra/z_bg_jya_cobra.c +++ b/src/overlays/actors/ovl_Bg_Jya_Cobra/z_bg_jya_cobra.c @@ -1,8 +1,18 @@ #include "z_bg_jya_cobra.h" #include "overlays/actors/ovl_Bg_Jya_Bigmirror/z_bg_jya_bigmirror.h" #include "overlays/actors/ovl_Mir_Ray/z_mir_ray.h" -#include "assets/objects/object_jya_obj/object_jya_obj.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" + +#include "assets/objects/object_jya_obj/object_jya_obj.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Bg_Jya_Cobra/z_bg_jya_cobra.h b/src/overlays/actors/ovl_Bg_Jya_Cobra/z_bg_jya_cobra.h index 8722bcc2ce..32266e2ac4 100644 --- a/src/overlays/actors/ovl_Bg_Jya_Cobra/z_bg_jya_cobra.h +++ b/src/overlays/actors/ovl_Bg_Jya_Cobra/z_bg_jya_cobra.h @@ -2,11 +2,11 @@ #define Z_BG_JYA_COBRA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgJyaCobra; -typedef void (*BgJyaCobraActionFunc)(struct BgJyaCobra*, PlayState*); +typedef void (*BgJyaCobraActionFunc)(struct BgJyaCobra*, struct PlayState*); #define COBRA_SHADOW_TEX_WIDTH 64 #define COBRA_SHADOW_TEX_HEIGHT 64 diff --git a/src/overlays/actors/ovl_Bg_Jya_Goroiwa/z_bg_jya_goroiwa.c b/src/overlays/actors/ovl_Bg_Jya_Goroiwa/z_bg_jya_goroiwa.c index 9122ebfcf9..6d6b13efb8 100644 --- a/src/overlays/actors/ovl_Bg_Jya_Goroiwa/z_bg_jya_goroiwa.c +++ b/src/overlays/actors/ovl_Bg_Jya_Goroiwa/z_bg_jya_goroiwa.c @@ -6,6 +6,13 @@ */ #include "z_bg_jya_goroiwa.h" + +#include "ichain.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_goroiwa/object_goroiwa.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED @@ -83,7 +90,7 @@ void BgJyaGoroiwa_InitCollider(BgJyaGoroiwa* this, PlayState* play) { s32 pad; Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, &this->colliderItem); + Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderElements); BgJyaGoroiwa_UpdateCollider(this); this->collider.elements[0].dim.worldSphere.radius = 58; } diff --git a/src/overlays/actors/ovl_Bg_Jya_Goroiwa/z_bg_jya_goroiwa.h b/src/overlays/actors/ovl_Bg_Jya_Goroiwa/z_bg_jya_goroiwa.h index 2722475480..35f4c971c9 100644 --- a/src/overlays/actors/ovl_Bg_Jya_Goroiwa/z_bg_jya_goroiwa.h +++ b/src/overlays/actors/ovl_Bg_Jya_Goroiwa/z_bg_jya_goroiwa.h @@ -2,17 +2,17 @@ #define Z_BG_JYA_GOROIWA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgJyaGoroiwa; -typedef void (*BgJyaGoroiwaFunc)(struct BgJyaGoroiwa*, PlayState*); +typedef void (*BgJyaGoroiwaFunc)(struct BgJyaGoroiwa*, struct PlayState*); typedef struct BgJyaGoroiwa { /* 0x0000 */ Actor actor; /* 0x014C */ BgJyaGoroiwaFunc actionFunc; /* 0x0150 */ ColliderJntSph collider; - /* 0x0170 */ ColliderJntSphElement colliderItem; + /* 0x0170 */ ColliderJntSphElement colliderElements[1]; /* 0x01B0 */ f32 speedFactor; /* 0x01B4 */ s16 hasHit; /* 0x01B6 */ s16 waitTimer; diff --git a/src/overlays/actors/ovl_Bg_Jya_Haheniron/z_bg_jya_haheniron.c b/src/overlays/actors/ovl_Bg_Jya_Haheniron/z_bg_jya_haheniron.c index f327e15f8c..f19f5f9baf 100644 --- a/src/overlays/actors/ovl_Bg_Jya_Haheniron/z_bg_jya_haheniron.c +++ b/src/overlays/actors/ovl_Bg_Jya_Haheniron/z_bg_jya_haheniron.c @@ -6,6 +6,14 @@ #include "z_bg_jya_haheniron.h" #include "overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h" + +#include "libc64/qrand.h" +#include "ichain.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/object_jya_iron/object_jya_iron.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED @@ -79,7 +87,7 @@ void BgJyaHaheniron_ColliderInit(BgJyaHaheniron* this, PlayState* play) { s32 pad; Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderItems); + Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderElements); } void BgJyaHaheniron_SpawnFragments(PlayState* play, Vec3f* vec1, Vec3f* vec2) { diff --git a/src/overlays/actors/ovl_Bg_Jya_Haheniron/z_bg_jya_haheniron.h b/src/overlays/actors/ovl_Bg_Jya_Haheniron/z_bg_jya_haheniron.h index 60f9c6ef9e..2da7d3673f 100644 --- a/src/overlays/actors/ovl_Bg_Jya_Haheniron/z_bg_jya_haheniron.h +++ b/src/overlays/actors/ovl_Bg_Jya_Haheniron/z_bg_jya_haheniron.h @@ -2,17 +2,17 @@ #define Z_BG_JYA_HAHENIRON_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgJyaHaheniron; -typedef void (*BgJyaHahenironActionFunc)(struct BgJyaHaheniron*, PlayState*); +typedef void (*BgJyaHahenironActionFunc)(struct BgJyaHaheniron*, struct PlayState*); typedef struct BgJyaHaheniron { /* 0x0000 */ Actor actor; /* 0x014C */ BgJyaHahenironActionFunc actionFunc; /* 0x0150 */ ColliderJntSph collider; - /* 0x0170 */ ColliderJntSphElement colliderItems[1]; + /* 0x0170 */ ColliderJntSphElement colliderElements[1]; /* 0x01B0 */ s16 timer; } BgJyaHaheniron; // size = 0x01B4 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 e5a8e139ba..3ecb0cb2f8 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 @@ -5,9 +5,18 @@ */ #include "z_bg_jya_ironobj.h" -#include "assets/objects/object_jya_iron/object_jya_iron.h" #include "overlays/actors/ovl_En_Ik/z_en_ik.h" +#include "libc64/qrand.h" +#include "ichain.h" +#include "sfx.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + +#include "assets/objects/object_jya_iron/object_jya_iron.h" + #define FLAGS 0 typedef void (*BgJyaIronobjIkFunc)(BgJyaIronobj*, PlayState*, EnIk*); @@ -80,13 +89,13 @@ static InitChainEntry sInitChain[] = { static CollisionHeader* sCollisionHeaders[] = { &gPillarCol, &gThroneCol }; void BgJyaIronobj_InitCylinder(BgJyaIronobj* this, PlayState* play) { - ColliderCylinder* colCylinder = &this->colCylinder; + ColliderCylinder* colCylinder = &this->colliderCylinder; Collider_InitCylinder(play, colCylinder); Collider_SetCylinder(play, colCylinder, &this->dyna.actor, &sCylinderInit); if (PARAMS_GET_U(this->dyna.actor.params, 0, 1) == 1) { - this->colCylinder.dim.radius = 40; - this->colCylinder.dim.height = 100; + this->colliderCylinder.dim.radius = 40; + this->colliderCylinder.dim.height = 100; } Collider_UpdateCylinder(&this->dyna.actor, colCylinder); } @@ -235,7 +244,7 @@ void BgJyaIronobj_Init(Actor* thisx, PlayState* play) { void BgJyaIronobj_Destroy(Actor* thisx, PlayState* play) { BgJyaIronobj* this = (BgJyaIronobj*)thisx; - Collider_DestroyCylinder(play, &this->colCylinder); + Collider_DestroyCylinder(play, &this->colliderCylinder); DynaPoly_DeleteBgActor(play, &play->colCtx.dyna, this->dyna.bgId); } @@ -249,9 +258,9 @@ void func_808992E8(BgJyaIronobj* this, PlayState* play) { Vec3f dropPos; s32 i; - if (this->colCylinder.base.acFlags & AC_HIT) { - actor = this->colCylinder.base.ac; - this->colCylinder.base.acFlags &= ~AC_HIT; + if (this->colliderCylinder.base.acFlags & AC_HIT) { + actor = this->colliderCylinder.base.ac; + this->colliderCylinder.base.acFlags &= ~AC_HIT; if (actor != NULL && actor->id == ACTOR_EN_IK) { particleFunc[PARAMS_GET_U(this->dyna.actor.params, 0, 1)](this, play, (EnIk*)actor); SfxSource_PlaySfxAtFixedWorldPos(play, &this->dyna.actor.world.pos, 80, NA_SE_EN_IRONNACK_BREAK_PILLAR); @@ -266,7 +275,7 @@ void func_808992E8(BgJyaIronobj* this, PlayState* play) { return; } } else { - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colCylinder.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderCylinder.base); } } diff --git a/src/overlays/actors/ovl_Bg_Jya_Ironobj/z_bg_jya_ironobj.h b/src/overlays/actors/ovl_Bg_Jya_Ironobj/z_bg_jya_ironobj.h index a8189049af..9768aec2a5 100644 --- a/src/overlays/actors/ovl_Bg_Jya_Ironobj/z_bg_jya_ironobj.h +++ b/src/overlays/actors/ovl_Bg_Jya_Ironobj/z_bg_jya_ironobj.h @@ -2,16 +2,16 @@ #define Z_BG_JYA_IRONOBJ_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgJyaIronobj; -typedef void (*BgJyaIronobjActionFunc)(struct BgJyaIronobj*, PlayState*); +typedef void (*BgJyaIronobjActionFunc)(struct BgJyaIronobj*, struct PlayState*); typedef struct BgJyaIronobj { /* 0x0000 */ DynaPolyActor dyna; /* 0x0164 */ BgJyaIronobjActionFunc actionFunc; - /* 0x0168 */ ColliderCylinder colCylinder; + /* 0x0168 */ ColliderCylinder colliderCylinder; } BgJyaIronobj; // size = 0x01B4 #endif diff --git a/src/overlays/actors/ovl_Bg_Jya_Kanaami/z_bg_jya_kanaami.c b/src/overlays/actors/ovl_Bg_Jya_Kanaami/z_bg_jya_kanaami.c index 459e3f11af..7aead74061 100644 --- a/src/overlays/actors/ovl_Bg_Jya_Kanaami/z_bg_jya_kanaami.c +++ b/src/overlays/actors/ovl_Bg_Jya_Kanaami/z_bg_jya_kanaami.c @@ -5,8 +5,15 @@ */ #include "z_bg_jya_kanaami.h" -#include "assets/objects/object_jya_obj/object_jya_obj.h" + +#include "ichain.h" +#include "one_point_cutscene.h" #include "quake.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64play.h" + +#include "assets/objects/object_jya_obj/object_jya_obj.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Bg_Jya_Kanaami/z_bg_jya_kanaami.h b/src/overlays/actors/ovl_Bg_Jya_Kanaami/z_bg_jya_kanaami.h index 6e5d670fde..a125e8ef53 100644 --- a/src/overlays/actors/ovl_Bg_Jya_Kanaami/z_bg_jya_kanaami.h +++ b/src/overlays/actors/ovl_Bg_Jya_Kanaami/z_bg_jya_kanaami.h @@ -2,11 +2,11 @@ #define Z_BG_JYA_KANAAMI_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgJyaKanaami; -typedef void (*BgJyaKanaamiActionFunc)(struct BgJyaKanaami*, PlayState*); +typedef void (*BgJyaKanaamiActionFunc)(struct BgJyaKanaami*, struct PlayState*); typedef struct BgJyaKanaami { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Jya_Lift/z_bg_jya_lift.c b/src/overlays/actors/ovl_Bg_Jya_Lift/z_bg_jya_lift.c index 2d1092c8e5..50571f8ac5 100644 --- a/src/overlays/actors/ovl_Bg_Jya_Lift/z_bg_jya_lift.c +++ b/src/overlays/actors/ovl_Bg_Jya_Lift/z_bg_jya_lift.c @@ -5,6 +5,13 @@ */ #include "z_bg_jya_lift.h" + +#include "ichain.h" +#include "one_point_cutscene.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_jya_obj/object_jya_obj.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Bg_Jya_Lift/z_bg_jya_lift.h b/src/overlays/actors/ovl_Bg_Jya_Lift/z_bg_jya_lift.h index b6c951dc18..ea9abac2bf 100644 --- a/src/overlays/actors/ovl_Bg_Jya_Lift/z_bg_jya_lift.h +++ b/src/overlays/actors/ovl_Bg_Jya_Lift/z_bg_jya_lift.h @@ -2,10 +2,10 @@ #define Z_BG_JYA_LIFT_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgJyaLift; -typedef void (*BgJyaLiftActionFunc)(struct BgJyaLift*, PlayState*); +typedef void (*BgJyaLiftActionFunc)(struct BgJyaLift*, struct PlayState*); typedef struct BgJyaLift { /* 0x000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Jya_Megami/z_bg_jya_megami.c b/src/overlays/actors/ovl_Bg_Jya_Megami/z_bg_jya_megami.c index 546f8c8d64..4e9d88d7ce 100644 --- a/src/overlays/actors/ovl_Bg_Jya_Megami/z_bg_jya_megami.c +++ b/src/overlays/actors/ovl_Bg_Jya_Megami/z_bg_jya_megami.c @@ -6,6 +6,19 @@ #include "z_bg_jya_megami.h" #include "overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/object_jya_obj/object_jya_obj.h" #define FLAGS 0 @@ -123,7 +136,7 @@ void BgJyaMegami_InitCollider(BgJyaMegami* this, PlayState* play) { s32 pad; Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, &this->dyna.actor, &sJntSphInit, &this->colliderItem); + Collider_SetJntSph(play, &this->collider, &this->dyna.actor, &sJntSphInit, this->colliderElements); } void BgJyaMegami_SpawnEffect(PlayState* play, Vec3f* pos, Vec3f* velocity, s32 num, s32 arg4) { diff --git a/src/overlays/actors/ovl_Bg_Jya_Megami/z_bg_jya_megami.h b/src/overlays/actors/ovl_Bg_Jya_Megami/z_bg_jya_megami.h index b24f236013..e297ebb63a 100644 --- a/src/overlays/actors/ovl_Bg_Jya_Megami/z_bg_jya_megami.h +++ b/src/overlays/actors/ovl_Bg_Jya_Megami/z_bg_jya_megami.h @@ -2,11 +2,11 @@ #define Z_BG_JYA_MEGAMI_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgJyaMegami; -typedef void (*BgJyaMegamiActionFunc)(struct BgJyaMegami*, PlayState*); +typedef void (*BgJyaMegamiActionFunc)(struct BgJyaMegami*, struct PlayState*); typedef struct BgJyaMegamiPiece { /* 0x00 */ Vec3f pos; @@ -19,7 +19,7 @@ typedef struct BgJyaMegami { /* 0x0000 */ DynaPolyActor dyna; /* 0x0164 */ BgJyaMegamiActionFunc actionFunc; /* 0x0168 */ ColliderJntSph collider; - /* 0x0188 */ ColliderJntSphElement colliderItem; + /* 0x0188 */ ColliderJntSphElement colliderElements[1]; /* 0x01C8 */ s16 lightTimer; /* 0x01CA */ s16 explosionTimer; /* 0x01CC */ s16 crumbleIndex; diff --git a/src/overlays/actors/ovl_Bg_Jya_Zurerukabe/z_bg_jya_zurerukabe.c b/src/overlays/actors/ovl_Bg_Jya_Zurerukabe/z_bg_jya_zurerukabe.c index bbdc93c2f8..4dea268824 100644 --- a/src/overlays/actors/ovl_Bg_Jya_Zurerukabe/z_bg_jya_zurerukabe.c +++ b/src/overlays/actors/ovl_Bg_Jya_Zurerukabe/z_bg_jya_zurerukabe.c @@ -5,8 +5,15 @@ */ #include "z_bg_jya_zurerukabe.h" -#include "assets/objects/object_jya_obj/object_jya_obj.h" + +#include "ichain.h" +#include "sfx.h" #include "terminal.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" + +#include "assets/objects/object_jya_obj/object_jya_obj.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Bg_Jya_Zurerukabe/z_bg_jya_zurerukabe.h b/src/overlays/actors/ovl_Bg_Jya_Zurerukabe/z_bg_jya_zurerukabe.h index 683f681999..d9d920f57b 100644 --- a/src/overlays/actors/ovl_Bg_Jya_Zurerukabe/z_bg_jya_zurerukabe.h +++ b/src/overlays/actors/ovl_Bg_Jya_Zurerukabe/z_bg_jya_zurerukabe.h @@ -2,11 +2,11 @@ #define Z_BG_JYA_ZURERUKABE_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgJyaZurerukabe; -typedef void (*BgJyaZurerukabeActionFunc)(struct BgJyaZurerukabe*, PlayState*); +typedef void (*BgJyaZurerukabeActionFunc)(struct BgJyaZurerukabe*, struct PlayState*); typedef struct BgJyaZurerukabe { /* 0x0000 */ DynaPolyActor dyna; 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 e44f561d83..79102a7c12 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 @@ -5,6 +5,15 @@ */ #include "z_bg_menkuri_eye.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_menkuri_objects/object_menkuri_objects.h" #define FLAGS ACTOR_FLAG_DRAW_CULLING_DISABLED @@ -65,7 +74,7 @@ void BgMenkuriEye_Init(Actor* thisx, PlayState* play) { Actor_ProcessInitChain(&this->actor, sInitChain); Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderItems); + Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderElements); 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; diff --git a/src/overlays/actors/ovl_Bg_Menkuri_Eye/z_bg_menkuri_eye.h b/src/overlays/actors/ovl_Bg_Menkuri_Eye/z_bg_menkuri_eye.h index cf27ca1827..69f1e32eab 100644 --- a/src/overlays/actors/ovl_Bg_Menkuri_Eye/z_bg_menkuri_eye.h +++ b/src/overlays/actors/ovl_Bg_Menkuri_Eye/z_bg_menkuri_eye.h @@ -2,7 +2,7 @@ #define Z_BG_MENKURI_EYE_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgMenkuriEye; @@ -10,7 +10,7 @@ typedef struct BgMenkuriEye { /* 0x0000 */ Actor actor; /* 0x014C */ s16 framesUntilDisable; /* 0x0150 */ ColliderJntSph collider; - /* 0x0170 */ ColliderJntSphElement colliderItems[1]; + /* 0x0170 */ ColliderJntSphElement colliderElements[1]; } BgMenkuriEye; // size = 0x01B0 #endif diff --git a/src/overlays/actors/ovl_Bg_Menkuri_Kaiten/z_bg_menkuri_kaiten.c b/src/overlays/actors/ovl_Bg_Menkuri_Kaiten/z_bg_menkuri_kaiten.c index cb3c724cf5..ee3f35a1db 100644 --- a/src/overlays/actors/ovl_Bg_Menkuri_Kaiten/z_bg_menkuri_kaiten.c +++ b/src/overlays/actors/ovl_Bg_Menkuri_Kaiten/z_bg_menkuri_kaiten.c @@ -5,6 +5,11 @@ */ #include "z_bg_menkuri_kaiten.h" + +#include "ichain.h" +#include "sfx.h" +#include "z64play.h" + #include "assets/objects/object_menkuri_objects/object_menkuri_objects.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_Bg_Menkuri_Kaiten/z_bg_menkuri_kaiten.h b/src/overlays/actors/ovl_Bg_Menkuri_Kaiten/z_bg_menkuri_kaiten.h index c65b08d6e9..5bcdbf8ec4 100644 --- a/src/overlays/actors/ovl_Bg_Menkuri_Kaiten/z_bg_menkuri_kaiten.h +++ b/src/overlays/actors/ovl_Bg_Menkuri_Kaiten/z_bg_menkuri_kaiten.h @@ -2,7 +2,7 @@ #define Z_BG_MENKURI_KAITEN_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgMenkuriKaiten; diff --git a/src/overlays/actors/ovl_Bg_Menkuri_Nisekabe/z_bg_menkuri_nisekabe.c b/src/overlays/actors/ovl_Bg_Menkuri_Nisekabe/z_bg_menkuri_nisekabe.c index 589ecd6d7a..0bc0649065 100644 --- a/src/overlays/actors/ovl_Bg_Menkuri_Nisekabe/z_bg_menkuri_nisekabe.c +++ b/src/overlays/actors/ovl_Bg_Menkuri_Nisekabe/z_bg_menkuri_nisekabe.c @@ -5,6 +5,9 @@ */ #include "z_bg_menkuri_nisekabe.h" + +#include "z64play.h" + #include "assets/objects/object_menkuri_objects/object_menkuri_objects.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Bg_Menkuri_Nisekabe/z_bg_menkuri_nisekabe.h b/src/overlays/actors/ovl_Bg_Menkuri_Nisekabe/z_bg_menkuri_nisekabe.h index f7cb56a5bf..54cce56eff 100644 --- a/src/overlays/actors/ovl_Bg_Menkuri_Nisekabe/z_bg_menkuri_nisekabe.h +++ b/src/overlays/actors/ovl_Bg_Menkuri_Nisekabe/z_bg_menkuri_nisekabe.h @@ -2,7 +2,7 @@ #define Z_BG_MENKURI_NISEKABE_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgMenkuriNisekabe; 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 2bcc1974b2..787739822f 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 @@ -6,6 +6,16 @@ #include "z_bg_mizu_bwall.h" #include "overlays/actors/ovl_Bg_Mizu_Water/z_bg_mizu_water.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_mizu_objects/object_mizu_objects.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED @@ -196,7 +206,8 @@ void BgMizuBwall_Init(Actor* thisx, PlayState* play) { this->actionFunc = BgMizuBwall_DoNothing; } else { Collider_InitTris(play, &this->collider); - if (!Collider_SetTris(play, &this->collider, &this->dyna.actor, &sTrisInitFloor, this->elements)) { + if (!Collider_SetTris(play, &this->collider, &this->dyna.actor, &sTrisInitFloor, + this->colliderElements)) { PRINTF("Error : コリジョンデータセット失敗(%s %d)(arg_data 0x%04x)\n", "../z_bg_mizu_bwall.c", 484, this->dyna.actor.params); Actor_Kill(&this->dyna.actor); @@ -235,7 +246,8 @@ void BgMizuBwall_Init(Actor* thisx, PlayState* play) { this->actionFunc = BgMizuBwall_DoNothing; } else { Collider_InitTris(play, &this->collider); - if (!Collider_SetTris(play, &this->collider, &this->dyna.actor, &sTrisInitRutoWall, this->elements)) { + if (!Collider_SetTris(play, &this->collider, &this->dyna.actor, &sTrisInitRutoWall, + this->colliderElements)) { PRINTF("Error : コリジョンデータセット失敗(%s %d)(arg_data 0x%04x)\n", "../z_bg_mizu_bwall.c", 558, this->dyna.actor.params); Actor_Kill(&this->dyna.actor); @@ -274,7 +286,8 @@ void BgMizuBwall_Init(Actor* thisx, PlayState* play) { this->actionFunc = BgMizuBwall_DoNothing; } else { Collider_InitTris(play, &this->collider); - if (!Collider_SetTris(play, &this->collider, &this->dyna.actor, &sTrisInitUnusedWall, this->elements)) { + if (!Collider_SetTris(play, &this->collider, &this->dyna.actor, &sTrisInitUnusedWall, + this->colliderElements)) { PRINTF("Error : コリジョンデータセット失敗(%s %d)(arg_data 0x%04x)\n", "../z_bg_mizu_bwall.c", 638, this->dyna.actor.params); Actor_Kill(&this->dyna.actor); @@ -316,7 +329,7 @@ void BgMizuBwall_Init(Actor* thisx, PlayState* play) { } else { Collider_InitTris(play, &this->collider); if (!Collider_SetTris(play, &this->collider, &this->dyna.actor, &sTrisInitStingerWall, - this->elements)) { + this->colliderElements)) { PRINTF("Error : コリジョンデータセット失敗(%s %d)(arg_data 0x%04x)\n", "../z_bg_mizu_bwall.c", 724, this->dyna.actor.params); Actor_Kill(&this->dyna.actor); @@ -358,7 +371,7 @@ void BgMizuBwall_Init(Actor* thisx, PlayState* play) { } else { Collider_InitTris(play, &this->collider); if (!Collider_SetTris(play, &this->collider, &this->dyna.actor, &sTrisInitStingerWall, - this->elements)) { + this->colliderElements)) { PRINTF("Error : コリジョンデータセット失敗(%s %d)(arg_data 0x%04x)\n", "../z_bg_mizu_bwall.c", 798, this->dyna.actor.params); Actor_Kill(&this->dyna.actor); diff --git a/src/overlays/actors/ovl_Bg_Mizu_Bwall/z_bg_mizu_bwall.h b/src/overlays/actors/ovl_Bg_Mizu_Bwall/z_bg_mizu_bwall.h index d5eeaad344..aacbf321a5 100644 --- a/src/overlays/actors/ovl_Bg_Mizu_Bwall/z_bg_mizu_bwall.h +++ b/src/overlays/actors/ovl_Bg_Mizu_Bwall/z_bg_mizu_bwall.h @@ -2,16 +2,16 @@ #define Z_BG_MIZU_BWALL_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgMizuBwall; -typedef void (*BgMizuBwallActionFunc)(struct BgMizuBwall*, PlayState*); +typedef void (*BgMizuBwallActionFunc)(struct BgMizuBwall*, struct PlayState*); typedef struct BgMizuBwall { /* 0x0000 */ DynaPolyActor dyna; /* 0x0164 */ ColliderTris collider; - /* 0x0184 */ ColliderTrisElement elements[3]; // only ever uses 2 + /* 0x0184 */ ColliderTrisElement colliderElements[3]; // only ever uses 2 /* 0x0298 */ BgMizuBwallActionFunc actionFunc; /* 0x029C */ f32 yRot; /* 0x02A0 */ s32 scrollAlpha1; diff --git a/src/overlays/actors/ovl_Bg_Mizu_Movebg/z_bg_mizu_movebg.c b/src/overlays/actors/ovl_Bg_Mizu_Movebg/z_bg_mizu_movebg.c index 095ab67e43..ae1dd32bc6 100644 --- a/src/overlays/actors/ovl_Bg_Mizu_Movebg/z_bg_mizu_movebg.c +++ b/src/overlays/actors/ovl_Bg_Mizu_Movebg/z_bg_mizu_movebg.c @@ -6,6 +6,16 @@ #include "z_bg_mizu_movebg.h" #include "overlays/actors/ovl_Bg_Mizu_Water/z_bg_mizu_water.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_mizu_objects/object_mizu_objects.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Bg_Mizu_Movebg/z_bg_mizu_movebg.h b/src/overlays/actors/ovl_Bg_Mizu_Movebg/z_bg_mizu_movebg.h index 1a378f13a5..75a50e864e 100644 --- a/src/overlays/actors/ovl_Bg_Mizu_Movebg/z_bg_mizu_movebg.h +++ b/src/overlays/actors/ovl_Bg_Mizu_Movebg/z_bg_mizu_movebg.h @@ -2,7 +2,7 @@ #define Z_BG_MIZU_MOVEBG_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" typedef enum BgMizuMovebgType { /* 0 */ MIZUMOVEBG_TYPE_FLOATING_PLATFORM_OUTSIDE_CENTER_PILLAR, @@ -18,7 +18,7 @@ typedef enum BgMizuMovebgType { struct BgMizuMovebg; -typedef void (*BgMizuMovebgActionFunc)(struct BgMizuMovebg*, PlayState*); +typedef void (*BgMizuMovebgActionFunc)(struct BgMizuMovebg*, struct PlayState*); typedef struct BgMizuMovebg { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Mizu_Shutter/z_bg_mizu_shutter.c b/src/overlays/actors/ovl_Bg_Mizu_Shutter/z_bg_mizu_shutter.c index 585f85f6f5..ed8fae2784 100644 --- a/src/overlays/actors/ovl_Bg_Mizu_Shutter/z_bg_mizu_shutter.c +++ b/src/overlays/actors/ovl_Bg_Mizu_Shutter/z_bg_mizu_shutter.c @@ -1,4 +1,15 @@ #include "z_bg_mizu_shutter.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "rumble.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_mizu_objects/object_mizu_objects.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Bg_Mizu_Shutter/z_bg_mizu_shutter.h b/src/overlays/actors/ovl_Bg_Mizu_Shutter/z_bg_mizu_shutter.h index cc42e4ddf3..bcba73f531 100644 --- a/src/overlays/actors/ovl_Bg_Mizu_Shutter/z_bg_mizu_shutter.h +++ b/src/overlays/actors/ovl_Bg_Mizu_Shutter/z_bg_mizu_shutter.h @@ -2,7 +2,7 @@ #define Z_BG_MIZU_SHUTTER_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" #define BGMIZUSHUTTER_GET_SIZE(thisx) PARAMS_GET_U((u16)(thisx)->params, 12, 4) #define BGMIZUSHUTTER_GET_TIMER(thisx) PARAMS_GET_U((u16)(thisx)->params, 6, 6) @@ -12,7 +12,7 @@ struct BgMizuShutter; -typedef void (*BgMizuShutterActionFunc)(struct BgMizuShutter*, PlayState*); +typedef void (*BgMizuShutterActionFunc)(struct BgMizuShutter*, struct PlayState*); typedef struct BgMizuShutter { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Mizu_Uzu/z_bg_mizu_uzu.c b/src/overlays/actors/ovl_Bg_Mizu_Uzu/z_bg_mizu_uzu.c index 9f1884ea49..3072207ece 100644 --- a/src/overlays/actors/ovl_Bg_Mizu_Uzu/z_bg_mizu_uzu.c +++ b/src/overlays/actors/ovl_Bg_Mizu_Uzu/z_bg_mizu_uzu.c @@ -5,6 +5,12 @@ */ #include "z_bg_mizu_uzu.h" + +#include "ichain.h" +#include "sfx.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_mizu_objects/object_mizu_objects.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Bg_Mizu_Uzu/z_bg_mizu_uzu.h b/src/overlays/actors/ovl_Bg_Mizu_Uzu/z_bg_mizu_uzu.h index 94e6b3c9d1..f8fe16ccd7 100644 --- a/src/overlays/actors/ovl_Bg_Mizu_Uzu/z_bg_mizu_uzu.h +++ b/src/overlays/actors/ovl_Bg_Mizu_Uzu/z_bg_mizu_uzu.h @@ -2,11 +2,11 @@ #define Z_BG_MIZU_UZU_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgMizuUzu; -typedef void (*BgMizuUzuActionFunc)(struct BgMizuUzu*, PlayState*); +typedef void (*BgMizuUzuActionFunc)(struct BgMizuUzu*, struct PlayState*); typedef struct BgMizuUzu { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Mizu_Water/z_bg_mizu_water.c b/src/overlays/actors/ovl_Bg_Mizu_Water/z_bg_mizu_water.c index 68f551be8b..5a59ddd683 100644 --- a/src/overlays/actors/ovl_Bg_Mizu_Water/z_bg_mizu_water.c +++ b/src/overlays/actors/ovl_Bg_Mizu_Water/z_bg_mizu_water.c @@ -5,6 +5,18 @@ */ #include "z_bg_mizu_water.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "regs.h" +#include "rumble.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_mizu_objects/object_mizu_objects.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_Bg_Mizu_Water/z_bg_mizu_water.h b/src/overlays/actors/ovl_Bg_Mizu_Water/z_bg_mizu_water.h index 21196022f8..26eb33d0d8 100644 --- a/src/overlays/actors/ovl_Bg_Mizu_Water/z_bg_mizu_water.h +++ b/src/overlays/actors/ovl_Bg_Mizu_Water/z_bg_mizu_water.h @@ -2,11 +2,11 @@ #define Z_BG_MIZU_WATER_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgMizuWater; -typedef void (*BgMizuWaterActionFunc)(struct BgMizuWater*, PlayState*); +typedef void (*BgMizuWaterActionFunc)(struct BgMizuWater*, struct PlayState*); typedef struct BgMizuWater { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Bg_Mjin/z_bg_mjin.c b/src/overlays/actors/ovl_Bg_Mjin/z_bg_mjin.c index 69bbc3506c..6fa9814a1b 100644 --- a/src/overlays/actors/ovl_Bg_Mjin/z_bg_mjin.c +++ b/src/overlays/actors/ovl_Bg_Mjin/z_bg_mjin.c @@ -5,6 +5,14 @@ */ #include "z_bg_mjin.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "segmented_address.h" +#include "sys_matrix.h" +#include "z64play.h" + #include "assets/objects/object_mjin/object_mjin.h" #include "assets/objects/object_mjin_wind/object_mjin_wind.h" #include "assets/objects/object_mjin_soul/object_mjin_soul.h" diff --git a/src/overlays/actors/ovl_Bg_Mjin/z_bg_mjin.h b/src/overlays/actors/ovl_Bg_Mjin/z_bg_mjin.h index 03e18fbb76..1ed19aa2a4 100644 --- a/src/overlays/actors/ovl_Bg_Mjin/z_bg_mjin.h +++ b/src/overlays/actors/ovl_Bg_Mjin/z_bg_mjin.h @@ -2,11 +2,11 @@ #define Z_BG_MJIN_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgMjin; -typedef void (*BgMjinActionFunc)(struct BgMjin*, PlayState*); +typedef void (*BgMjinActionFunc)(struct BgMjin*, struct PlayState*); typedef struct BgMjin { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Mori_Bigst/z_bg_mori_bigst.c b/src/overlays/actors/ovl_Bg_Mori_Bigst/z_bg_mori_bigst.c index 7b02395228..9bc16b1fe4 100644 --- a/src/overlays/actors/ovl_Bg_Mori_Bigst/z_bg_mori_bigst.c +++ b/src/overlays/actors/ovl_Bg_Mori_Bigst/z_bg_mori_bigst.c @@ -5,8 +5,18 @@ */ #include "z_bg_mori_bigst.h" -#include "assets/objects/object_mori_objects/object_mori_objects.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" #include "quake.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z64play.h" +#include "z64player.h" + +#include "assets/objects/object_mori_objects/object_mori_objects.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Bg_Mori_Bigst/z_bg_mori_bigst.h b/src/overlays/actors/ovl_Bg_Mori_Bigst/z_bg_mori_bigst.h index c71eac7ab1..f37499b2f7 100644 --- a/src/overlays/actors/ovl_Bg_Mori_Bigst/z_bg_mori_bigst.h +++ b/src/overlays/actors/ovl_Bg_Mori_Bigst/z_bg_mori_bigst.h @@ -2,11 +2,11 @@ #define Z_BG_MORI_BIGST_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgMoriBigst; -typedef void (*BgMoriBigstActionFunc)(struct BgMoriBigst*, PlayState*); +typedef void (*BgMoriBigstActionFunc)(struct BgMoriBigst*, struct PlayState*); typedef struct BgMoriBigst { /* 0x0000 */ DynaPolyActor dyna; 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 b441ed008c..53206ecf72 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 @@ -1,4 +1,15 @@ #include "z_bg_mori_elevator.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z64audio.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_mori_objects/object_mori_objects.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Bg_Mori_Elevator/z_bg_mori_elevator.h b/src/overlays/actors/ovl_Bg_Mori_Elevator/z_bg_mori_elevator.h index e7bcc5018e..42e45d56fc 100644 --- a/src/overlays/actors/ovl_Bg_Mori_Elevator/z_bg_mori_elevator.h +++ b/src/overlays/actors/ovl_Bg_Mori_Elevator/z_bg_mori_elevator.h @@ -2,11 +2,11 @@ #define Z_BG_MORI_ELEVATOR_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgMoriElevator; -typedef void (*BgMoriElevatorActionFunc)(struct BgMoriElevator*, PlayState*); +typedef void (*BgMoriElevatorActionFunc)(struct BgMoriElevator*, struct PlayState*); typedef struct BgMoriElevator { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Mori_Hashigo/z_bg_mori_hashigo.c b/src/overlays/actors/ovl_Bg_Mori_Hashigo/z_bg_mori_hashigo.c index 53bc3b6b47..b75117adca 100644 --- a/src/overlays/actors/ovl_Bg_Mori_Hashigo/z_bg_mori_hashigo.c +++ b/src/overlays/actors/ovl_Bg_Mori_Hashigo/z_bg_mori_hashigo.c @@ -5,6 +5,14 @@ */ #include "z_bg_mori_hashigo.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_mori_objects/object_mori_objects.h" #define FLAGS 0 @@ -102,7 +110,7 @@ void BgMoriHashigo_InitCollider(BgMoriHashigo* this, PlayState* play) { s32 pad; Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, &this->dyna.actor, &sJntSphInit, this->colliderItems); + Collider_SetJntSph(play, &this->collider, &this->dyna.actor, &sJntSphInit, this->colliderElements); this->collider.elements[0].dim.worldSphere.center.x = (s16)this->dyna.actor.world.pos.x; this->collider.elements[0].dim.worldSphere.center.y = (s16)this->dyna.actor.world.pos.y + 21; diff --git a/src/overlays/actors/ovl_Bg_Mori_Hashigo/z_bg_mori_hashigo.h b/src/overlays/actors/ovl_Bg_Mori_Hashigo/z_bg_mori_hashigo.h index 4e6e93a5de..e14aec45e1 100644 --- a/src/overlays/actors/ovl_Bg_Mori_Hashigo/z_bg_mori_hashigo.h +++ b/src/overlays/actors/ovl_Bg_Mori_Hashigo/z_bg_mori_hashigo.h @@ -2,16 +2,16 @@ #define Z_BG_MORI_HASHIGO_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgMoriHashigo; -typedef void (*BgMoriHashigoActionFunc)(struct BgMoriHashigo*, PlayState*); +typedef void (*BgMoriHashigoActionFunc)(struct BgMoriHashigo*, struct PlayState*); typedef struct BgMoriHashigo { /* 0x0000 */ DynaPolyActor dyna; /* 0x0164 */ ColliderJntSph collider; - /* 0x0184 */ ColliderJntSphElement colliderItems[1]; + /* 0x0184 */ ColliderJntSphElement colliderElements[1]; /* 0x01C4 */ BgMoriHashigoActionFunc actionFunc; /* 0x01C8 */ s16 hitTimer; /* 0x01CA */ s16 bounceCounter; diff --git a/src/overlays/actors/ovl_Bg_Mori_Hashira4/z_bg_mori_hashira4.c b/src/overlays/actors/ovl_Bg_Mori_Hashira4/z_bg_mori_hashira4.c index c5f634640e..9f3b50dadb 100644 --- a/src/overlays/actors/ovl_Bg_Mori_Hashira4/z_bg_mori_hashira4.c +++ b/src/overlays/actors/ovl_Bg_Mori_Hashira4/z_bg_mori_hashira4.c @@ -5,6 +5,16 @@ */ #include "z_bg_mori_hashira4.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_mori_objects/object_mori_objects.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Bg_Mori_Hashira4/z_bg_mori_hashira4.h b/src/overlays/actors/ovl_Bg_Mori_Hashira4/z_bg_mori_hashira4.h index a36a6ef36b..e4ab5a2d85 100644 --- a/src/overlays/actors/ovl_Bg_Mori_Hashira4/z_bg_mori_hashira4.h +++ b/src/overlays/actors/ovl_Bg_Mori_Hashira4/z_bg_mori_hashira4.h @@ -2,11 +2,11 @@ #define Z_BG_MORI_HASHIRA4_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgMoriHashira4; -typedef void (*BgMoriHashira4ActionFunc)(struct BgMoriHashira4*, PlayState*); +typedef void (*BgMoriHashira4ActionFunc)(struct BgMoriHashira4*, struct PlayState*); typedef struct BgMoriHashira4 { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Mori_Hineri/z_bg_mori_hineri.c b/src/overlays/actors/ovl_Bg_Mori_Hineri/z_bg_mori_hineri.c index 70e60eacf4..92fc3c57a8 100644 --- a/src/overlays/actors/ovl_Bg_Mori_Hineri/z_bg_mori_hineri.c +++ b/src/overlays/actors/ovl_Bg_Mori_Hineri/z_bg_mori_hineri.c @@ -5,7 +5,19 @@ */ #include "z_bg_mori_hineri.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "sfx.h" +#include "sys_matrix.h" #include "versions.h" +#include "z_lib.h" +#include "z64curve.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_box/object_box.h" #include "assets/objects/object_mori_hineri1/object_mori_hineri1.h" diff --git a/src/overlays/actors/ovl_Bg_Mori_Hineri/z_bg_mori_hineri.h b/src/overlays/actors/ovl_Bg_Mori_Hineri/z_bg_mori_hineri.h index 468bb29656..b9a29df504 100644 --- a/src/overlays/actors/ovl_Bg_Mori_Hineri/z_bg_mori_hineri.h +++ b/src/overlays/actors/ovl_Bg_Mori_Hineri/z_bg_mori_hineri.h @@ -2,14 +2,14 @@ #define Z_BG_MORI_HINERI_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgMoriHineri; // Due to a unique access pattern, this param cannot use the generic "PARAMS_GET_U" macros #define TWISTED_HALLWAY_GET_PARAM_15(thisx) (((thisx)->params & (NBITS_TO_MASK(1) << (15))) >> ((15) - (1))) -typedef void (*BgMoriHineriActionFunc)(struct BgMoriHineri*, PlayState*); +typedef void (*BgMoriHineriActionFunc)(struct BgMoriHineri*, struct PlayState*); typedef struct BgMoriHineri { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Mori_Idomizu/z_bg_mori_idomizu.c b/src/overlays/actors/ovl_Bg_Mori_Idomizu/z_bg_mori_idomizu.c index 9af9f14f2f..051e7c6874 100644 --- a/src/overlays/actors/ovl_Bg_Mori_Idomizu/z_bg_mori_idomizu.c +++ b/src/overlays/actors/ovl_Bg_Mori_Idomizu/z_bg_mori_idomizu.c @@ -5,6 +5,15 @@ */ #include "z_bg_mori_idomizu.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "one_point_cutscene.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_mori_objects/object_mori_objects.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_Bg_Mori_Idomizu/z_bg_mori_idomizu.h b/src/overlays/actors/ovl_Bg_Mori_Idomizu/z_bg_mori_idomizu.h index 3e7036ec4b..4348622425 100644 --- a/src/overlays/actors/ovl_Bg_Mori_Idomizu/z_bg_mori_idomizu.h +++ b/src/overlays/actors/ovl_Bg_Mori_Idomizu/z_bg_mori_idomizu.h @@ -2,11 +2,11 @@ #define Z_BG_MORI_IDOMIZU_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgMoriIdomizu; -typedef void (*BgMoriIdomizuActionFunc)(struct BgMoriIdomizu*, PlayState*); +typedef void (*BgMoriIdomizuActionFunc)(struct BgMoriIdomizu*, struct PlayState*); typedef struct BgMoriIdomizu { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/z_bg_mori_kaitenkabe.c b/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/z_bg_mori_kaitenkabe.c index 910a2bd285..8bf43c9a18 100644 --- a/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/z_bg_mori_kaitenkabe.c +++ b/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/z_bg_mori_kaitenkabe.c @@ -5,6 +5,16 @@ */ #include "z_bg_mori_kaitenkabe.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_mori_objects/object_mori_objects.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/z_bg_mori_kaitenkabe.h b/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/z_bg_mori_kaitenkabe.h index 7bd6939d3f..91c0d65a80 100644 --- a/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/z_bg_mori_kaitenkabe.h +++ b/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/z_bg_mori_kaitenkabe.h @@ -2,11 +2,11 @@ #define Z_BG_MORI_KAITENKABE_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgMoriKaitenkabe; -typedef void (*BgMoriKaitenkabeActionFunc)(struct BgMoriKaitenkabe*, PlayState*); +typedef void (*BgMoriKaitenkabeActionFunc)(struct BgMoriKaitenkabe*, struct PlayState*); typedef struct BgMoriKaitenkabe { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Mori_Rakkatenjo/z_bg_mori_rakkatenjo.c b/src/overlays/actors/ovl_Bg_Mori_Rakkatenjo/z_bg_mori_rakkatenjo.c index 61bbf6b9ef..b331b15b27 100644 --- a/src/overlays/actors/ovl_Bg_Mori_Rakkatenjo/z_bg_mori_rakkatenjo.c +++ b/src/overlays/actors/ovl_Bg_Mori_Rakkatenjo/z_bg_mori_rakkatenjo.c @@ -5,8 +5,19 @@ */ #include "z_bg_mori_rakkatenjo.h" -#include "assets/objects/object_mori_objects/object_mori_objects.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" #include "quake.h" +#include "rumble.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" + +#include "assets/objects/object_mori_objects/object_mori_objects.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_Bg_Mori_Rakkatenjo/z_bg_mori_rakkatenjo.h b/src/overlays/actors/ovl_Bg_Mori_Rakkatenjo/z_bg_mori_rakkatenjo.h index 97bdbc0bfd..657baefc53 100644 --- a/src/overlays/actors/ovl_Bg_Mori_Rakkatenjo/z_bg_mori_rakkatenjo.h +++ b/src/overlays/actors/ovl_Bg_Mori_Rakkatenjo/z_bg_mori_rakkatenjo.h @@ -2,11 +2,11 @@ #define Z_BG_MORI_RAKKATENJO_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgMoriRakkatenjo; -typedef void (*BgMoriRakkatenjoActionFunction)(struct BgMoriRakkatenjo*, PlayState*); +typedef void (*BgMoriRakkatenjoActionFunction)(struct BgMoriRakkatenjo*, struct PlayState*); typedef struct BgMoriRakkatenjo { /* 0x0000 */ DynaPolyActor dyna; 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 7199ec25b5..eda5a530eb 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 @@ -5,6 +5,21 @@ */ #include "z_bg_po_event.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "rand.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_po_sisters/object_po_sisters.h" #define FLAGS 0 @@ -202,7 +217,7 @@ void BgPoEvent_Init(Actor* thisx, PlayState* play) { if (this->type >= 2) { Collider_InitTris(play, &this->collider); - Collider_SetTris(play, &this->collider, thisx, &sTrisInit, this->colliderItems); + Collider_SetTris(play, &this->collider, thisx, &sTrisInit, this->colliderElements); if (Flags_GetSwitch(play, thisx->params)) { Actor_Kill(thisx); } else { diff --git a/src/overlays/actors/ovl_Bg_Po_Event/z_bg_po_event.h b/src/overlays/actors/ovl_Bg_Po_Event/z_bg_po_event.h index 412c187227..78fe7fc966 100644 --- a/src/overlays/actors/ovl_Bg_Po_Event/z_bg_po_event.h +++ b/src/overlays/actors/ovl_Bg_Po_Event/z_bg_po_event.h @@ -2,11 +2,11 @@ #define Z_BG_PO_EVENT_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgPoEvent; -typedef void (*BgPoEventActionFunc)(struct BgPoEvent*, PlayState*); +typedef void (*BgPoEventActionFunc)(struct BgPoEvent*, struct PlayState*); typedef struct BgPoEvent { /* 0x0000 */ DynaPolyActor dyna; @@ -16,7 +16,7 @@ typedef struct BgPoEvent { /* 0x016A */ s8 direction; /* 0x016C */ s16 timer; /* 0x0170 */ ColliderTris collider; - /* 0x0190 */ ColliderTrisElement colliderItems[2]; + /* 0x0190 */ ColliderTrisElement colliderElements[2]; } BgPoEvent; // size = 0x0248 #endif diff --git a/src/overlays/actors/ovl_Bg_Po_Syokudai/z_bg_po_syokudai.c b/src/overlays/actors/ovl_Bg_Po_Syokudai/z_bg_po_syokudai.c index 9dae9b2a5d..e5b8edea9d 100644 --- a/src/overlays/actors/ovl_Bg_Po_Syokudai/z_bg_po_syokudai.c +++ b/src/overlays/actors/ovl_Bg_Po_Syokudai/z_bg_po_syokudai.c @@ -5,6 +5,16 @@ */ #include "z_bg_po_syokudai.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z64light.h" +#include "z64play.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_syokudai/object_syokudai.h" diff --git a/src/overlays/actors/ovl_Bg_Po_Syokudai/z_bg_po_syokudai.h b/src/overlays/actors/ovl_Bg_Po_Syokudai/z_bg_po_syokudai.h index 8bb84f0fe5..a6186dcbe7 100644 --- a/src/overlays/actors/ovl_Bg_Po_Syokudai/z_bg_po_syokudai.h +++ b/src/overlays/actors/ovl_Bg_Po_Syokudai/z_bg_po_syokudai.h @@ -2,7 +2,8 @@ #define Z_BG_PO_SYOKUDAI_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" +#include "z64light.h" struct BgPoSyokudai; diff --git a/src/overlays/actors/ovl_Bg_Pushbox/z_bg_pushbox.c b/src/overlays/actors/ovl_Bg_Pushbox/z_bg_pushbox.c index 7d9ef63e60..3392a15f60 100644 --- a/src/overlays/actors/ovl_Bg_Pushbox/z_bg_pushbox.c +++ b/src/overlays/actors/ovl_Bg_Pushbox/z_bg_pushbox.c @@ -5,6 +5,14 @@ */ #include "z_bg_pushbox.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_pu_box/object_pu_box.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Bg_Pushbox/z_bg_pushbox.h b/src/overlays/actors/ovl_Bg_Pushbox/z_bg_pushbox.h index 577ebaabb6..38cd6857d9 100644 --- a/src/overlays/actors/ovl_Bg_Pushbox/z_bg_pushbox.h +++ b/src/overlays/actors/ovl_Bg_Pushbox/z_bg_pushbox.h @@ -2,11 +2,11 @@ #define Z_BG_PUSHBOX_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgPushbox; -typedef void (*BgPushboxActionFunc)(struct BgPushbox*, PlayState*); +typedef void (*BgPushboxActionFunc)(struct BgPushbox*, struct PlayState*); typedef struct BgPushbox { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Relay_Objects/z_bg_relay_objects.c b/src/overlays/actors/ovl_Bg_Relay_Objects/z_bg_relay_objects.c index 710e3dadfc..8bcdf5be1d 100644 --- a/src/overlays/actors/ovl_Bg_Relay_Objects/z_bg_relay_objects.c +++ b/src/overlays/actors/ovl_Bg_Relay_Objects/z_bg_relay_objects.c @@ -5,6 +5,17 @@ */ #include "z_bg_relay_objects.h" + +#include "ichain.h" +#include "rumble.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64cutscene_flags.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_relay_objects/object_relay_objects.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Bg_Relay_Objects/z_bg_relay_objects.h b/src/overlays/actors/ovl_Bg_Relay_Objects/z_bg_relay_objects.h index 802d840649..25db5cc5f6 100644 --- a/src/overlays/actors/ovl_Bg_Relay_Objects/z_bg_relay_objects.h +++ b/src/overlays/actors/ovl_Bg_Relay_Objects/z_bg_relay_objects.h @@ -2,11 +2,11 @@ #define Z_BG_RELAY_OBJECTS_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgRelayObjects; -typedef void (*BgRelayObjectsActionFunc)(struct BgRelayObjects*, PlayState*); +typedef void (*BgRelayObjectsActionFunc)(struct BgRelayObjects*, struct PlayState*); typedef struct BgRelayObjects { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Spot00_Break/z_bg_spot00_break.c b/src/overlays/actors/ovl_Bg_Spot00_Break/z_bg_spot00_break.c index 3eb461a52f..4a3a760d92 100644 --- a/src/overlays/actors/ovl_Bg_Spot00_Break/z_bg_spot00_break.c +++ b/src/overlays/actors/ovl_Bg_Spot00_Break/z_bg_spot00_break.c @@ -5,6 +5,11 @@ */ #include "z_bg_spot00_break.h" + +#include "ichain.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_spot00_break/object_spot00_break.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Bg_Spot00_Break/z_bg_spot00_break.h b/src/overlays/actors/ovl_Bg_Spot00_Break/z_bg_spot00_break.h index de282476d9..17e45aa918 100644 --- a/src/overlays/actors/ovl_Bg_Spot00_Break/z_bg_spot00_break.h +++ b/src/overlays/actors/ovl_Bg_Spot00_Break/z_bg_spot00_break.h @@ -2,7 +2,7 @@ #define Z_BG_SPOT00_BREAK_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgSpot00Break; diff --git a/src/overlays/actors/ovl_Bg_Spot00_Hanebasi/z_bg_spot00_hanebasi.c b/src/overlays/actors/ovl_Bg_Spot00_Hanebasi/z_bg_spot00_hanebasi.c index 3e483e8ee1..6d4ecb5845 100644 --- a/src/overlays/actors/ovl_Bg_Spot00_Hanebasi/z_bg_spot00_hanebasi.c +++ b/src/overlays/actors/ovl_Bg_Spot00_Hanebasi/z_bg_spot00_hanebasi.c @@ -5,8 +5,22 @@ */ #include "z_bg_spot00_hanebasi.h" -#include "assets/objects/object_spot00_objects/object_spot00_objects.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64cutscene_flags.h" +#include "z64light.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" +#include "assets/objects/object_spot00_objects/object_spot00_objects.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Bg_Spot00_Hanebasi/z_bg_spot00_hanebasi.h b/src/overlays/actors/ovl_Bg_Spot00_Hanebasi/z_bg_spot00_hanebasi.h index fc6427ae82..7780bea692 100644 --- a/src/overlays/actors/ovl_Bg_Spot00_Hanebasi/z_bg_spot00_hanebasi.h +++ b/src/overlays/actors/ovl_Bg_Spot00_Hanebasi/z_bg_spot00_hanebasi.h @@ -2,11 +2,12 @@ #define Z_BG_SPOT00_HANEBASI_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" +#include "z64light.h" struct BgSpot00Hanebasi; -typedef void (*BgSpot00HanebasiActionFunc)(struct BgSpot00Hanebasi*, PlayState*); +typedef void (*BgSpot00HanebasiActionFunc)(struct BgSpot00Hanebasi*, struct PlayState*); typedef struct BgSpot00Hanebasi { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Spot01_Fusya/z_bg_spot01_fusya.c b/src/overlays/actors/ovl_Bg_Spot01_Fusya/z_bg_spot01_fusya.c index d8b3cfaba7..33f96d5476 100644 --- a/src/overlays/actors/ovl_Bg_Spot01_Fusya/z_bg_spot01_fusya.c +++ b/src/overlays/actors/ovl_Bg_Spot01_Fusya/z_bg_spot01_fusya.c @@ -5,6 +5,16 @@ */ #include "z_bg_spot01_fusya.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_spot01_objects/object_spot01_objects.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Bg_Spot01_Fusya/z_bg_spot01_fusya.h b/src/overlays/actors/ovl_Bg_Spot01_Fusya/z_bg_spot01_fusya.h index 1e7a831316..e232c6a907 100644 --- a/src/overlays/actors/ovl_Bg_Spot01_Fusya/z_bg_spot01_fusya.h +++ b/src/overlays/actors/ovl_Bg_Spot01_Fusya/z_bg_spot01_fusya.h @@ -2,11 +2,11 @@ #define Z_BG_SPOT01_FUSYA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgSpot01Fusya; -typedef void (*BgSpot01FusyaActionFunc)(struct BgSpot01Fusya*, PlayState*); +typedef void (*BgSpot01FusyaActionFunc)(struct BgSpot01Fusya*, struct PlayState*); typedef struct BgSpot01Fusya { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Bg_Spot01_Idohashira/z_bg_spot01_idohashira.c b/src/overlays/actors/ovl_Bg_Spot01_Idohashira/z_bg_spot01_idohashira.c index ba1ff57d87..d5a21a8b6b 100644 --- a/src/overlays/actors/ovl_Bg_Spot01_Idohashira/z_bg_spot01_idohashira.c +++ b/src/overlays/actors/ovl_Bg_Spot01_Idohashira/z_bg_spot01_idohashira.c @@ -5,8 +5,20 @@ */ #include "z_bg_spot01_idohashira.h" -#include "assets/objects/object_spot01_objects/object_spot01_objects.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "regs.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64save.h" + +#include "assets/objects/object_spot01_objects/object_spot01_objects.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Bg_Spot01_Idohashira/z_bg_spot01_idohashira.h b/src/overlays/actors/ovl_Bg_Spot01_Idohashira/z_bg_spot01_idohashira.h index ae456de8fb..8d177d3317 100644 --- a/src/overlays/actors/ovl_Bg_Spot01_Idohashira/z_bg_spot01_idohashira.h +++ b/src/overlays/actors/ovl_Bg_Spot01_Idohashira/z_bg_spot01_idohashira.h @@ -2,12 +2,12 @@ #define Z_BG_SPOT01_IDOHASHIRA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgSpot01Idohashira; -typedef void (*BgSpot01IdohashiraActionFunc)(struct BgSpot01Idohashira*, PlayState*); -typedef void (*BgSpot01IdohashiraDrawFunc)(struct BgSpot01Idohashira*, PlayState*); +typedef void (*BgSpot01IdohashiraActionFunc)(struct BgSpot01Idohashira*, struct PlayState*); +typedef void (*BgSpot01IdohashiraDrawFunc)(struct BgSpot01Idohashira*, struct PlayState*); typedef struct BgSpot01Idohashira { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Spot01_Idomizu/z_bg_spot01_idomizu.c b/src/overlays/actors/ovl_Bg_Spot01_Idomizu/z_bg_spot01_idomizu.c index f2c89a41de..5329d2e0f6 100644 --- a/src/overlays/actors/ovl_Bg_Spot01_Idomizu/z_bg_spot01_idomizu.c +++ b/src/overlays/actors/ovl_Bg_Spot01_Idomizu/z_bg_spot01_idomizu.c @@ -5,6 +5,16 @@ */ #include "z_bg_spot01_idomizu.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_spot01_objects/object_spot01_objects.h" #define FLAGS ACTOR_FLAG_DRAW_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Bg_Spot01_Idomizu/z_bg_spot01_idomizu.h b/src/overlays/actors/ovl_Bg_Spot01_Idomizu/z_bg_spot01_idomizu.h index 3c5929714a..3d4ff68a6f 100644 --- a/src/overlays/actors/ovl_Bg_Spot01_Idomizu/z_bg_spot01_idomizu.h +++ b/src/overlays/actors/ovl_Bg_Spot01_Idomizu/z_bg_spot01_idomizu.h @@ -2,11 +2,11 @@ #define Z_BG_SPOT01_IDOMIZU_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgSpot01Idomizu; -typedef void (*BgSpot01IdomizuActionFunc)(struct BgSpot01Idomizu*, PlayState*); +typedef void (*BgSpot01IdomizuActionFunc)(struct BgSpot01Idomizu*, struct PlayState*); typedef struct BgSpot01Idomizu { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Bg_Spot01_Idosoko/z_bg_spot01_idosoko.c b/src/overlays/actors/ovl_Bg_Spot01_Idosoko/z_bg_spot01_idosoko.c index 1bad86dd46..6dbdd910d5 100644 --- a/src/overlays/actors/ovl_Bg_Spot01_Idosoko/z_bg_spot01_idosoko.c +++ b/src/overlays/actors/ovl_Bg_Spot01_Idosoko/z_bg_spot01_idosoko.c @@ -5,6 +5,14 @@ */ #include "z_bg_spot01_idosoko.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sys_matrix.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_spot01_matoya/object_spot01_matoya.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Bg_Spot01_Idosoko/z_bg_spot01_idosoko.h b/src/overlays/actors/ovl_Bg_Spot01_Idosoko/z_bg_spot01_idosoko.h index c17b0a43ed..44981abc07 100644 --- a/src/overlays/actors/ovl_Bg_Spot01_Idosoko/z_bg_spot01_idosoko.h +++ b/src/overlays/actors/ovl_Bg_Spot01_Idosoko/z_bg_spot01_idosoko.h @@ -2,11 +2,11 @@ #define Z_BG_SPOT01_IDOSOKO_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgSpot01Idosoko; -typedef void (*BgSpot01IdosokoActionFunc)(struct BgSpot01Idosoko*, PlayState*); +typedef void (*BgSpot01IdosokoActionFunc)(struct BgSpot01Idosoko*, struct PlayState*); typedef struct BgSpot01Idosoko { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Spot01_Objects2/z_bg_spot01_objects2.c b/src/overlays/actors/ovl_Bg_Spot01_Objects2/z_bg_spot01_objects2.c index 2ee4c58283..4b7e9eed8a 100644 --- a/src/overlays/actors/ovl_Bg_Spot01_Objects2/z_bg_spot01_objects2.c +++ b/src/overlays/actors/ovl_Bg_Spot01_Objects2/z_bg_spot01_objects2.c @@ -5,6 +5,12 @@ */ #include "z_bg_spot01_objects2.h" + +#include "ichain.h" +#include "segmented_address.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_spot01_matoya/object_spot01_matoya.h" #include "assets/objects/object_spot01_matoyab/object_spot01_matoyab.h" diff --git a/src/overlays/actors/ovl_Bg_Spot01_Objects2/z_bg_spot01_objects2.h b/src/overlays/actors/ovl_Bg_Spot01_Objects2/z_bg_spot01_objects2.h index d1d96d045b..7ffc3094fe 100644 --- a/src/overlays/actors/ovl_Bg_Spot01_Objects2/z_bg_spot01_objects2.h +++ b/src/overlays/actors/ovl_Bg_Spot01_Objects2/z_bg_spot01_objects2.h @@ -2,11 +2,11 @@ #define Z_BG_SPOT01_OBJECTS2_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgSpot01Objects2; -typedef void (*BgSpot01Objects2ActionFunc)(struct BgSpot01Objects2*, PlayState*); +typedef void (*BgSpot01Objects2ActionFunc)(struct BgSpot01Objects2*, struct PlayState*); typedef struct BgSpot01Objects2 { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Spot02_Objects/z_bg_spot02_objects.c b/src/overlays/actors/ovl_Bg_Spot02_Objects/z_bg_spot02_objects.c index a0d74b4eda..795df90151 100644 --- a/src/overlays/actors/ovl_Bg_Spot02_Objects/z_bg_spot02_objects.c +++ b/src/overlays/actors/ovl_Bg_Spot02_Objects/z_bg_spot02_objects.c @@ -5,6 +5,20 @@ */ #include "z_bg_spot02_objects.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_spot02_objects/object_spot02_objects.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_Bg_Spot02_Objects/z_bg_spot02_objects.h b/src/overlays/actors/ovl_Bg_Spot02_Objects/z_bg_spot02_objects.h index 873fe15a52..42d4e45b08 100644 --- a/src/overlays/actors/ovl_Bg_Spot02_Objects/z_bg_spot02_objects.h +++ b/src/overlays/actors/ovl_Bg_Spot02_Objects/z_bg_spot02_objects.h @@ -2,11 +2,11 @@ #define Z_BG_SPOT02_OBJECTS_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgSpot02Objects; -typedef void (*BgSpot02ObjectsActionFunc)(struct BgSpot02Objects*, PlayState*); +typedef void (*BgSpot02ObjectsActionFunc)(struct BgSpot02Objects*, struct PlayState*); typedef struct BgSpot02Objects { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Spot03_Taki/z_bg_spot03_taki.c b/src/overlays/actors/ovl_Bg_Spot03_Taki/z_bg_spot03_taki.c index fccae09ba4..501a677359 100644 --- a/src/overlays/actors/ovl_Bg_Spot03_Taki/z_bg_spot03_taki.c +++ b/src/overlays/actors/ovl_Bg_Spot03_Taki/z_bg_spot03_taki.c @@ -5,6 +5,16 @@ */ #include "z_bg_spot03_taki.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "segmented_address.h" +#include "sys_matrix.h" +#include "z64audio.h" +#include "z64play.h" + #include "assets/objects/object_spot03_object/object_spot03_object.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_Bg_Spot03_Taki/z_bg_spot03_taki.h b/src/overlays/actors/ovl_Bg_Spot03_Taki/z_bg_spot03_taki.h index f6e3daab16..45ad4de4f2 100644 --- a/src/overlays/actors/ovl_Bg_Spot03_Taki/z_bg_spot03_taki.h +++ b/src/overlays/actors/ovl_Bg_Spot03_Taki/z_bg_spot03_taki.h @@ -2,7 +2,7 @@ #define Z_BG_SPOT03_TAKI_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" typedef enum BgSpot03TakiState { WATERFALL_CLOSED, @@ -14,7 +14,7 @@ typedef enum BgSpot03TakiState { struct BgSpot03Taki; -typedef void (*BgSpot03TakiActionFunc)(struct BgSpot03Taki*, PlayState*); +typedef void (*BgSpot03TakiActionFunc)(struct BgSpot03Taki*, struct PlayState*); typedef struct BgSpot03Taki { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Spot05_Soko/z_bg_spot05_soko.c b/src/overlays/actors/ovl_Bg_Spot05_Soko/z_bg_spot05_soko.c index 93c30e65af..edb253568d 100644 --- a/src/overlays/actors/ovl_Bg_Spot05_Soko/z_bg_spot05_soko.c +++ b/src/overlays/actors/ovl_Bg_Spot05_Soko/z_bg_spot05_soko.c @@ -5,6 +5,14 @@ */ #include "z_bg_spot05_soko.h" + +#include "ichain.h" +#include "one_point_cutscene.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_spot05_objects/object_spot05_objects.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Bg_Spot05_Soko/z_bg_spot05_soko.h b/src/overlays/actors/ovl_Bg_Spot05_Soko/z_bg_spot05_soko.h index 849e5b2263..1aae818797 100644 --- a/src/overlays/actors/ovl_Bg_Spot05_Soko/z_bg_spot05_soko.h +++ b/src/overlays/actors/ovl_Bg_Spot05_Soko/z_bg_spot05_soko.h @@ -2,11 +2,11 @@ #define Z_BG_SPOT05_SOKO_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgSpot05Soko; -typedef void (*BgSpot05SokoActionFunc)(struct BgSpot05Soko*, PlayState*); +typedef void (*BgSpot05SokoActionFunc)(struct BgSpot05Soko*, struct PlayState*); typedef struct BgSpot05Soko { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Spot06_Objects/z_bg_spot06_objects.c b/src/overlays/actors/ovl_Bg_Spot06_Objects/z_bg_spot06_objects.c index d06e292e12..45b2b1e9f2 100644 --- a/src/overlays/actors/ovl_Bg_Spot06_Objects/z_bg_spot06_objects.c +++ b/src/overlays/actors/ovl_Bg_Spot06_Objects/z_bg_spot06_objects.c @@ -5,6 +5,19 @@ */ #include "z_bg_spot06_objects.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "rand.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_spot06_objects/object_spot06_objects.h" #define FLAGS ACTOR_FLAG_HOOKSHOT_PULLS_ACTOR @@ -56,7 +69,7 @@ ActorProfile Bg_Spot06_Objects_Profile = { /**/ BgSpot06Objects_Draw, }; -static ColliderJntSphElementInit sJntSphItemsInit[1] = { +static ColliderJntSphElementInit sJntSphElementsInit[1] = { { { ELEM_MATERIAL_UNK0, @@ -80,7 +93,7 @@ static ColliderJntSphInit sJntSphInit = { COLSHAPE_JNTSPH, }, 1, - sJntSphItemsInit, + sJntSphElementsInit, }; static InitChainEntry sInitChain[] = { @@ -121,7 +134,7 @@ void BgSpot06Objects_Init(Actor* thisx, PlayState* play) { case LHO_WATER_TEMPLE_ENTRANCE_LOCK: Actor_ProcessInitChain(thisx, sInitChain); Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, thisx, &sJntSphInit, this->colliderItem); + Collider_SetJntSph(play, &this->collider, thisx, &sJntSphInit, this->colliderElements); if (LINK_IS_ADULT && Flags_GetSwitch(play, this->switchFlag)) { if (!GET_EVENTCHKINF(EVENTCHKINF_RESTORED_LAKE_HYLIA)) { diff --git a/src/overlays/actors/ovl_Bg_Spot06_Objects/z_bg_spot06_objects.h b/src/overlays/actors/ovl_Bg_Spot06_Objects/z_bg_spot06_objects.h index 08fdf1e9af..cbdc1054f8 100644 --- a/src/overlays/actors/ovl_Bg_Spot06_Objects/z_bg_spot06_objects.h +++ b/src/overlays/actors/ovl_Bg_Spot06_Objects/z_bg_spot06_objects.h @@ -2,11 +2,11 @@ #define Z_BG_SPOT06_OBJECTS_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgSpot06Objects; -typedef void (*BgSpot06ObjectsActionFunc)(struct BgSpot06Objects*, PlayState*); +typedef void (*BgSpot06ObjectsActionFunc)(struct BgSpot06Objects*, struct PlayState*); typedef struct BgSpot06Objects { /* 0x0000 */ DynaPolyActor dyna; @@ -15,7 +15,7 @@ typedef struct BgSpot06Objects { /* 0x016A */ s16 timer; /* 0x016C */ f32 lakeHyliaWaterLevel; /* 0x0170 */ ColliderJntSph collider; - /* 0x0190 */ ColliderJntSphElement colliderItem[1]; + /* 0x0190 */ ColliderJntSphElement colliderElements[1]; } BgSpot06Objects; // size = 0x01D0 #endif diff --git a/src/overlays/actors/ovl_Bg_Spot07_Taki/z_bg_spot07_taki.c b/src/overlays/actors/ovl_Bg_Spot07_Taki/z_bg_spot07_taki.c index 04d06a57a5..afb9d02972 100644 --- a/src/overlays/actors/ovl_Bg_Spot07_Taki/z_bg_spot07_taki.c +++ b/src/overlays/actors/ovl_Bg_Spot07_Taki/z_bg_spot07_taki.c @@ -5,7 +5,15 @@ */ #include "z_bg_spot07_taki.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sys_matrix.h" #include "versions.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_spot07_object/object_spot07_object.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_Bg_Spot07_Taki/z_bg_spot07_taki.h b/src/overlays/actors/ovl_Bg_Spot07_Taki/z_bg_spot07_taki.h index dcf6ef8edc..30872233ad 100644 --- a/src/overlays/actors/ovl_Bg_Spot07_Taki/z_bg_spot07_taki.h +++ b/src/overlays/actors/ovl_Bg_Spot07_Taki/z_bg_spot07_taki.h @@ -2,11 +2,11 @@ #define Z_BG_SPOT07_TAKI_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgSpot07Taki; -typedef void (*BgSpot07TakiActionFunc)(struct BgSpot07Taki*, PlayState*); +typedef void (*BgSpot07TakiActionFunc)(struct BgSpot07Taki*, struct PlayState*); typedef struct BgSpot07Taki { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Spot08_Bakudankabe/z_bg_spot08_bakudankabe.c b/src/overlays/actors/ovl_Bg_Spot08_Bakudankabe/z_bg_spot08_bakudankabe.c index 7d44d616d2..b54226cec8 100644 --- a/src/overlays/actors/ovl_Bg_Spot08_Bakudankabe/z_bg_spot08_bakudankabe.c +++ b/src/overlays/actors/ovl_Bg_Spot08_Bakudankabe/z_bg_spot08_bakudankabe.c @@ -5,9 +5,17 @@ */ #include "z_bg_spot08_bakudankabe.h" -#include "assets/objects/object_spot08_obj/object_spot08_obj.h" #include "overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h" + +#include "libc64/qrand.h" +#include "ichain.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/gameplay_field_keep/gameplay_field_keep.h" +#include "assets/objects/object_spot08_obj/object_spot08_obj.h" #define FLAGS ACTOR_FLAG_IGNORE_POINT_LIGHTS @@ -97,7 +105,7 @@ void func_808B02D0(BgSpot08Bakudankabe* this, PlayState* play) { s32 pad; Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, &this->dyna.actor, &sJntSphInit, this->colliderItems); + Collider_SetJntSph(play, &this->collider, &this->dyna.actor, &sJntSphInit, this->colliderElements); } void func_808B0324(BgSpot08Bakudankabe* this, PlayState* play) { diff --git a/src/overlays/actors/ovl_Bg_Spot08_Bakudankabe/z_bg_spot08_bakudankabe.h b/src/overlays/actors/ovl_Bg_Spot08_Bakudankabe/z_bg_spot08_bakudankabe.h index 3be139505d..a0436ea9ea 100644 --- a/src/overlays/actors/ovl_Bg_Spot08_Bakudankabe/z_bg_spot08_bakudankabe.h +++ b/src/overlays/actors/ovl_Bg_Spot08_Bakudankabe/z_bg_spot08_bakudankabe.h @@ -2,14 +2,14 @@ #define Z_BG_SPOT08_BAKUDANKABE_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgSpot08Bakudankabe; typedef struct BgSpot08Bakudankabe { /* 0x0000 */ DynaPolyActor dyna; /* 0x0164 */ ColliderJntSph collider; - /* 0x0184 */ ColliderJntSphElement colliderItems[3]; + /* 0x0184 */ ColliderJntSphElement colliderElements[3]; } BgSpot08Bakudankabe; // size = 0x0244 #endif diff --git a/src/overlays/actors/ovl_Bg_Spot08_Iceblock/z_bg_spot08_iceblock.c b/src/overlays/actors/ovl_Bg_Spot08_Iceblock/z_bg_spot08_iceblock.c index dfaa807a93..4f0bb37567 100644 --- a/src/overlays/actors/ovl_Bg_Spot08_Iceblock/z_bg_spot08_iceblock.c +++ b/src/overlays/actors/ovl_Bg_Spot08_Iceblock/z_bg_spot08_iceblock.c @@ -5,6 +5,17 @@ */ #include "z_bg_spot08_iceblock.h" + +#include "libc64/math64.h" +#include "libc64/qrand.h" +#include "ichain.h" +#include "sys_math3d.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_spot08_obj/object_spot08_obj.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Bg_Spot08_Iceblock/z_bg_spot08_iceblock.h b/src/overlays/actors/ovl_Bg_Spot08_Iceblock/z_bg_spot08_iceblock.h index a59e3a3561..1a3f920c3e 100644 --- a/src/overlays/actors/ovl_Bg_Spot08_Iceblock/z_bg_spot08_iceblock.h +++ b/src/overlays/actors/ovl_Bg_Spot08_Iceblock/z_bg_spot08_iceblock.h @@ -2,11 +2,11 @@ #define Z_BG_SPOT08_ICEBLOCK_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgSpot08Iceblock; -typedef void (*BgSpot08IceblockActionFunc)(struct BgSpot08Iceblock*, PlayState*); +typedef void (*BgSpot08IceblockActionFunc)(struct BgSpot08Iceblock*, struct PlayState*); typedef struct BgSpot08Iceblock { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Spot09_Obj/z_bg_spot09_obj.c b/src/overlays/actors/ovl_Bg_Spot09_Obj/z_bg_spot09_obj.c index 00ca47644f..449091faa0 100644 --- a/src/overlays/actors/ovl_Bg_Spot09_Obj/z_bg_spot09_obj.c +++ b/src/overlays/actors/ovl_Bg_Spot09_Obj/z_bg_spot09_obj.c @@ -5,6 +5,14 @@ */ #include "z_bg_spot09_obj.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sys_matrix.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_spot09_obj/object_spot09_obj.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Bg_Spot09_Obj/z_bg_spot09_obj.h b/src/overlays/actors/ovl_Bg_Spot09_Obj/z_bg_spot09_obj.h index a09ce32eda..491d7380c2 100644 --- a/src/overlays/actors/ovl_Bg_Spot09_Obj/z_bg_spot09_obj.h +++ b/src/overlays/actors/ovl_Bg_Spot09_Obj/z_bg_spot09_obj.h @@ -2,7 +2,7 @@ #define Z_BG_SPOT09_OBJ_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgSpot09Obj; diff --git a/src/overlays/actors/ovl_Bg_Spot11_Bakudankabe/z_bg_spot11_bakudankabe.c b/src/overlays/actors/ovl_Bg_Spot11_Bakudankabe/z_bg_spot11_bakudankabe.c index d0568c23c8..1aafed8831 100644 --- a/src/overlays/actors/ovl_Bg_Spot11_Bakudankabe/z_bg_spot11_bakudankabe.c +++ b/src/overlays/actors/ovl_Bg_Spot11_Bakudankabe/z_bg_spot11_bakudankabe.c @@ -6,6 +6,13 @@ #include "z_bg_spot11_bakudankabe.h" #include "overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h" + +#include "libc64/qrand.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/object_spot11_obj/object_spot11_obj.h" #include "assets/objects/gameplay_field_keep/gameplay_field_keep.h" diff --git a/src/overlays/actors/ovl_Bg_Spot11_Bakudankabe/z_bg_spot11_bakudankabe.h b/src/overlays/actors/ovl_Bg_Spot11_Bakudankabe/z_bg_spot11_bakudankabe.h index b18f5c084b..5dedab77d5 100644 --- a/src/overlays/actors/ovl_Bg_Spot11_Bakudankabe/z_bg_spot11_bakudankabe.h +++ b/src/overlays/actors/ovl_Bg_Spot11_Bakudankabe/z_bg_spot11_bakudankabe.h @@ -2,7 +2,7 @@ #define Z_BG_SPOT11_BAKUDANKABE_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgSpot11Bakudankabe; diff --git a/src/overlays/actors/ovl_Bg_Spot11_Oasis/z_bg_spot11_oasis.c b/src/overlays/actors/ovl_Bg_Spot11_Oasis/z_bg_spot11_oasis.c index 05987f0921..1af76df476 100644 --- a/src/overlays/actors/ovl_Bg_Spot11_Oasis/z_bg_spot11_oasis.c +++ b/src/overlays/actors/ovl_Bg_Spot11_Oasis/z_bg_spot11_oasis.c @@ -6,6 +6,21 @@ #include "z_bg_spot11_oasis.h" #include "overlays/actors/ovl_En_Elf/z_en_elf.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "sfx.h" +#include "sys_math3d.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64cutscene_flags.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_spot11_obj/object_spot11_obj.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Bg_Spot11_Oasis/z_bg_spot11_oasis.h b/src/overlays/actors/ovl_Bg_Spot11_Oasis/z_bg_spot11_oasis.h index cae716a00a..0f0ed97e6e 100644 --- a/src/overlays/actors/ovl_Bg_Spot11_Oasis/z_bg_spot11_oasis.h +++ b/src/overlays/actors/ovl_Bg_Spot11_Oasis/z_bg_spot11_oasis.h @@ -2,11 +2,11 @@ #define Z_BG_SPOT11_OASIS_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgSpot11Oasis; -typedef void (*BgSpot11OasisActionFunc)(struct BgSpot11Oasis*, PlayState*); +typedef void (*BgSpot11OasisActionFunc)(struct BgSpot11Oasis*, struct PlayState*); typedef struct BgSpot11Oasis { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Bg_Spot12_Gate/z_bg_spot12_gate.c b/src/overlays/actors/ovl_Bg_Spot12_Gate/z_bg_spot12_gate.c index b01eb98174..9a36eb287d 100644 --- a/src/overlays/actors/ovl_Bg_Spot12_Gate/z_bg_spot12_gate.c +++ b/src/overlays/actors/ovl_Bg_Spot12_Gate/z_bg_spot12_gate.c @@ -5,8 +5,15 @@ */ #include "z_bg_spot12_gate.h" -#include "assets/objects/object_spot12_obj/object_spot12_obj.h" + +#include "ichain.h" +#include "one_point_cutscene.h" #include "quake.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64play.h" + +#include "assets/objects/object_spot12_obj/object_spot12_obj.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Bg_Spot12_Gate/z_bg_spot12_gate.h b/src/overlays/actors/ovl_Bg_Spot12_Gate/z_bg_spot12_gate.h index 2e9989fc21..bb9ef25cf5 100644 --- a/src/overlays/actors/ovl_Bg_Spot12_Gate/z_bg_spot12_gate.h +++ b/src/overlays/actors/ovl_Bg_Spot12_Gate/z_bg_spot12_gate.h @@ -2,11 +2,11 @@ #define Z_BG_SPOT12_GATE_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgSpot12Gate; -typedef void (*BgSpot12GateActionFunc)(struct BgSpot12Gate*, PlayState*); +typedef void (*BgSpot12GateActionFunc)(struct BgSpot12Gate*, struct PlayState*); typedef struct BgSpot12Gate { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Spot12_Saku/z_bg_spot12_saku.c b/src/overlays/actors/ovl_Bg_Spot12_Saku/z_bg_spot12_saku.c index 7fc67b38df..1edeb59461 100644 --- a/src/overlays/actors/ovl_Bg_Spot12_Saku/z_bg_spot12_saku.c +++ b/src/overlays/actors/ovl_Bg_Spot12_Saku/z_bg_spot12_saku.c @@ -5,6 +5,13 @@ */ #include "z_bg_spot12_saku.h" + +#include "ichain.h" +#include "one_point_cutscene.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_spot12_obj/object_spot12_obj.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Bg_Spot12_Saku/z_bg_spot12_saku.h b/src/overlays/actors/ovl_Bg_Spot12_Saku/z_bg_spot12_saku.h index d96967300c..7ed7751ede 100644 --- a/src/overlays/actors/ovl_Bg_Spot12_Saku/z_bg_spot12_saku.h +++ b/src/overlays/actors/ovl_Bg_Spot12_Saku/z_bg_spot12_saku.h @@ -2,11 +2,11 @@ #define Z_BG_SPOT12_SAKU_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgSpot12Saku; -typedef void (*BgSpot12SakuActionFunc)(struct BgSpot12Saku*, PlayState*); +typedef void (*BgSpot12SakuActionFunc)(struct BgSpot12Saku*, struct PlayState*); typedef struct BgSpot12Saku { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Spot15_Rrbox/z_bg_spot15_rrbox.c b/src/overlays/actors/ovl_Bg_Spot15_Rrbox/z_bg_spot15_rrbox.c index b2c8f61b80..02dbe68e3a 100644 --- a/src/overlays/actors/ovl_Bg_Spot15_Rrbox/z_bg_spot15_rrbox.c +++ b/src/overlays/actors/ovl_Bg_Spot15_Rrbox/z_bg_spot15_rrbox.c @@ -5,6 +5,15 @@ */ #include "z_bg_spot15_rrbox.h" + +#include "ichain.h" +#include "sfx.h" +#include "sys_math3d.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_spot15_obj/object_spot15_obj.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Bg_Spot15_Rrbox/z_bg_spot15_rrbox.h b/src/overlays/actors/ovl_Bg_Spot15_Rrbox/z_bg_spot15_rrbox.h index 745c65629f..d0534e1e73 100644 --- a/src/overlays/actors/ovl_Bg_Spot15_Rrbox/z_bg_spot15_rrbox.h +++ b/src/overlays/actors/ovl_Bg_Spot15_Rrbox/z_bg_spot15_rrbox.h @@ -2,11 +2,11 @@ #define Z_BG_SPOT15_RRBOX_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgSpot15Rrbox; -typedef void (*BgSpot15RrboxActionFunc)(struct BgSpot15Rrbox*, PlayState*); +typedef void (*BgSpot15RrboxActionFunc)(struct BgSpot15Rrbox*, struct PlayState*); typedef struct BgSpot15Rrbox { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Spot15_Saku/z_bg_spot15_saku.c b/src/overlays/actors/ovl_Bg_Spot15_Saku/z_bg_spot15_saku.c index ca52b057bb..c053a6c2d1 100644 --- a/src/overlays/actors/ovl_Bg_Spot15_Saku/z_bg_spot15_saku.c +++ b/src/overlays/actors/ovl_Bg_Spot15_Saku/z_bg_spot15_saku.c @@ -5,6 +5,14 @@ */ #include "z_bg_spot15_saku.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_spot15_obj/object_spot15_obj.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Bg_Spot15_Saku/z_bg_spot15_saku.h b/src/overlays/actors/ovl_Bg_Spot15_Saku/z_bg_spot15_saku.h index f7ac8d09ca..35fcbee90e 100644 --- a/src/overlays/actors/ovl_Bg_Spot15_Saku/z_bg_spot15_saku.h +++ b/src/overlays/actors/ovl_Bg_Spot15_Saku/z_bg_spot15_saku.h @@ -2,11 +2,11 @@ #define Z_BG_SPOT15_SAKU_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgSpot15Saku; -typedef void (*BgSpot15SakuActionFunc)(struct BgSpot15Saku*, PlayState*); +typedef void (*BgSpot15SakuActionFunc)(struct BgSpot15Saku*, struct PlayState*); typedef struct BgSpot15Saku { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Spot16_Bombstone/z_bg_spot16_bombstone.c b/src/overlays/actors/ovl_Bg_Spot16_Bombstone/z_bg_spot16_bombstone.c index f7ba17ed02..b014d7faff 100644 --- a/src/overlays/actors/ovl_Bg_Spot16_Bombstone/z_bg_spot16_bombstone.c +++ b/src/overlays/actors/ovl_Bg_Spot16_Bombstone/z_bg_spot16_bombstone.c @@ -1,9 +1,25 @@ #include "z_bg_spot16_bombstone.h" -#include "assets/objects/object_spot16_obj/object_spot16_obj.h" -#include "assets/objects/object_bombiwa/object_bombiwa.h" #include "overlays/actors/ovl_En_Bombf/z_en_bombf.h" #include "overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h" +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "regs.h" +#include "sfx.h" +#include "sys_math3d.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/object_spot16_obj/object_spot16_obj.h" +#include "assets/objects/object_bombiwa/object_bombiwa.h" + #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED void BgSpot16Bombstone_Init(Actor* thisx, PlayState* play); @@ -152,7 +168,7 @@ void func_808B4C4C(BgSpot16Bombstone* this, PlayState* play) { s32 pad; Collider_InitJntSph(play, &this->colliderJntSph); - Collider_SetJntSph(play, &this->colliderJntSph, &this->actor, &sJntSphInit, this->colliderElements); + Collider_SetJntSph(play, &this->colliderJntSph, &this->actor, &sJntSphInit, this->colliderJntSphElements); this->colliderJntSph.elements[0].dim.worldSphere.center.x = this->actor.world.pos.x; this->colliderJntSph.elements[0].dim.worldSphere.center.y = this->actor.world.pos.y + 50.0f; this->colliderJntSph.elements[0].dim.worldSphere.center.z = this->actor.world.pos.z; diff --git a/src/overlays/actors/ovl_Bg_Spot16_Bombstone/z_bg_spot16_bombstone.h b/src/overlays/actors/ovl_Bg_Spot16_Bombstone/z_bg_spot16_bombstone.h index 01fb4cc3e0..577bd3863b 100644 --- a/src/overlays/actors/ovl_Bg_Spot16_Bombstone/z_bg_spot16_bombstone.h +++ b/src/overlays/actors/ovl_Bg_Spot16_Bombstone/z_bg_spot16_bombstone.h @@ -2,11 +2,11 @@ #define Z_BG_SPOT16_BOMBSTONE_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgSpot16Bombstone; -typedef void (*BgSpot16BombstoneActionFunc)(struct BgSpot16Bombstone*, PlayState*); +typedef void (*BgSpot16BombstoneActionFunc)(struct BgSpot16Bombstone*, struct PlayState*); typedef struct BgSpot16Bombstone { /* 0x0000 */ Actor actor; @@ -18,7 +18,7 @@ typedef struct BgSpot16Bombstone { /* 0x015C */ f32 sinRotation; /* 0x0160 */ f32 cosRotation; /* 0x0164 */ ColliderJntSph colliderJntSph; - /* 0x0184 */ ColliderJntSphElement colliderElements[1]; + /* 0x0184 */ ColliderJntSphElement colliderJntSphElements[1]; /* 0x01C4 */ ColliderCylinder colliderCylinder; /* 0x0210 */ s16 unk_210; /* 0x0212 */ s16 unk_212; diff --git a/src/overlays/actors/ovl_Bg_Spot16_Doughnut/z_bg_spot16_doughnut.c b/src/overlays/actors/ovl_Bg_Spot16_Doughnut/z_bg_spot16_doughnut.c index b71c0fd137..c6cf246bca 100644 --- a/src/overlays/actors/ovl_Bg_Spot16_Doughnut/z_bg_spot16_doughnut.c +++ b/src/overlays/actors/ovl_Bg_Spot16_Doughnut/z_bg_spot16_doughnut.c @@ -5,8 +5,16 @@ */ #include "z_bg_spot16_doughnut.h" -#include "assets/objects/object_efc_doughnut/object_efc_doughnut.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z64play.h" +#include "z64save.h" + +#include "assets/objects/object_efc_doughnut/object_efc_doughnut.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Bg_Spot16_Doughnut/z_bg_spot16_doughnut.h b/src/overlays/actors/ovl_Bg_Spot16_Doughnut/z_bg_spot16_doughnut.h index 051e45cf58..3b7008ef2d 100644 --- a/src/overlays/actors/ovl_Bg_Spot16_Doughnut/z_bg_spot16_doughnut.h +++ b/src/overlays/actors/ovl_Bg_Spot16_Doughnut/z_bg_spot16_doughnut.h @@ -2,7 +2,7 @@ #define Z_BG_SPOT16_DOUGHNUT_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgSpot16Doughnut; diff --git a/src/overlays/actors/ovl_Bg_Spot17_Bakudankabe/z_bg_spot17_bakudankabe.c b/src/overlays/actors/ovl_Bg_Spot17_Bakudankabe/z_bg_spot17_bakudankabe.c index c6eafbdd47..03f7b4514b 100644 --- a/src/overlays/actors/ovl_Bg_Spot17_Bakudankabe/z_bg_spot17_bakudankabe.c +++ b/src/overlays/actors/ovl_Bg_Spot17_Bakudankabe/z_bg_spot17_bakudankabe.c @@ -6,6 +6,17 @@ #include "z_bg_spot17_bakudankabe.h" #include "overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/object_spot17_obj/object_spot17_obj.h" #include "assets/objects/gameplay_field_keep/gameplay_field_keep.h" diff --git a/src/overlays/actors/ovl_Bg_Spot17_Bakudankabe/z_bg_spot17_bakudankabe.h b/src/overlays/actors/ovl_Bg_Spot17_Bakudankabe/z_bg_spot17_bakudankabe.h index 8928435408..fd88416ddf 100644 --- a/src/overlays/actors/ovl_Bg_Spot17_Bakudankabe/z_bg_spot17_bakudankabe.h +++ b/src/overlays/actors/ovl_Bg_Spot17_Bakudankabe/z_bg_spot17_bakudankabe.h @@ -2,7 +2,7 @@ #define Z_BG_SPOT17_BAKUDANKABE_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgSpot17Bakudankabe; diff --git a/src/overlays/actors/ovl_Bg_Spot17_Funen/z_bg_spot17_funen.c b/src/overlays/actors/ovl_Bg_Spot17_Funen/z_bg_spot17_funen.c index 8ee2e9dadf..84973d0b11 100644 --- a/src/overlays/actors/ovl_Bg_Spot17_Funen/z_bg_spot17_funen.c +++ b/src/overlays/actors/ovl_Bg_Spot17_Funen/z_bg_spot17_funen.c @@ -5,6 +5,13 @@ */ #include "z_bg_spot17_funen.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sys_matrix.h" +#include "z64play.h" + #include "assets/objects/object_spot17_obj/object_spot17_obj.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_Bg_Spot17_Funen/z_bg_spot17_funen.h b/src/overlays/actors/ovl_Bg_Spot17_Funen/z_bg_spot17_funen.h index 6a44fa14cf..737719ea28 100644 --- a/src/overlays/actors/ovl_Bg_Spot17_Funen/z_bg_spot17_funen.h +++ b/src/overlays/actors/ovl_Bg_Spot17_Funen/z_bg_spot17_funen.h @@ -2,7 +2,7 @@ #define Z_BG_SPOT17_FUNEN_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgSpot17Funen; diff --git a/src/overlays/actors/ovl_Bg_Spot18_Basket/z_bg_spot18_basket.c b/src/overlays/actors/ovl_Bg_Spot18_Basket/z_bg_spot18_basket.c index 566d4342b5..2f36cd5034 100644 --- a/src/overlays/actors/ovl_Bg_Spot18_Basket/z_bg_spot18_basket.c +++ b/src/overlays/actors/ovl_Bg_Spot18_Basket/z_bg_spot18_basket.c @@ -1,6 +1,18 @@ #include "z_bg_spot18_basket.h" -#include "assets/objects/object_spot18_obj/object_spot18_obj.h" + +#include "libc64/qrand.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "sfx.h" +#include "sys_math3d.h" #include "terminal.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64effect.h" +#include "z64play.h" + +#include "assets/objects/object_spot18_obj/object_spot18_obj.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED @@ -78,7 +90,7 @@ void func_808B7710(Actor* thisx, PlayState* play) { BgSpot18Basket* this = (BgSpot18Basket*)thisx; Collider_InitJntSph(play, &this->colliderJntSph); - Collider_SetJntSph(play, &this->colliderJntSph, &this->dyna.actor, &sJntSphInit, this->ColliderJntSphElements); + Collider_SetJntSph(play, &this->colliderJntSph, &this->dyna.actor, &sJntSphInit, this->colliderJntSphElements); this->dyna.actor.colChkInfo.mass = MASS_IMMOVABLE; } diff --git a/src/overlays/actors/ovl_Bg_Spot18_Basket/z_bg_spot18_basket.h b/src/overlays/actors/ovl_Bg_Spot18_Basket/z_bg_spot18_basket.h index 21f4bc4f23..460a56fb12 100644 --- a/src/overlays/actors/ovl_Bg_Spot18_Basket/z_bg_spot18_basket.h +++ b/src/overlays/actors/ovl_Bg_Spot18_Basket/z_bg_spot18_basket.h @@ -2,16 +2,16 @@ #define Z_BG_SPOT18_BASKET_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgSpot18Basket; -typedef void (*BgSpot18BasketActionFunc)(struct BgSpot18Basket*, PlayState*); +typedef void (*BgSpot18BasketActionFunc)(struct BgSpot18Basket*, struct PlayState*); typedef struct BgSpot18Basket { /* 0x0000 */ DynaPolyActor dyna; /* 0x0164 */ ColliderJntSph colliderJntSph; - /* 0x0184 */ ColliderJntSphElement ColliderJntSphElements[2]; + /* 0x0184 */ ColliderJntSphElement colliderJntSphElements[2]; /* 0x0204 */ BgSpot18BasketActionFunc actionFunc; /* 0x0208 */ f32 unk_208; /* 0x020C */ s16 unk_20C; diff --git a/src/overlays/actors/ovl_Bg_Spot18_Futa/z_bg_spot18_futa.c b/src/overlays/actors/ovl_Bg_Spot18_Futa/z_bg_spot18_futa.c index cec6266a2e..21bc50671c 100644 --- a/src/overlays/actors/ovl_Bg_Spot18_Futa/z_bg_spot18_futa.c +++ b/src/overlays/actors/ovl_Bg_Spot18_Futa/z_bg_spot18_futa.c @@ -5,6 +5,11 @@ */ #include "z_bg_spot18_futa.h" + +#include "ichain.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_spot18_obj/object_spot18_obj.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Bg_Spot18_Futa/z_bg_spot18_futa.h b/src/overlays/actors/ovl_Bg_Spot18_Futa/z_bg_spot18_futa.h index 1150611cd2..ff0c2cf8ac 100644 --- a/src/overlays/actors/ovl_Bg_Spot18_Futa/z_bg_spot18_futa.h +++ b/src/overlays/actors/ovl_Bg_Spot18_Futa/z_bg_spot18_futa.h @@ -2,7 +2,7 @@ #define Z_BG_SPOT18_FUTA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgSpot18Futa; diff --git a/src/overlays/actors/ovl_Bg_Spot18_Obj/z_bg_spot18_obj.c b/src/overlays/actors/ovl_Bg_Spot18_Obj/z_bg_spot18_obj.c index 505797f7e9..7012e9023c 100644 --- a/src/overlays/actors/ovl_Bg_Spot18_Obj/z_bg_spot18_obj.c +++ b/src/overlays/actors/ovl_Bg_Spot18_Obj/z_bg_spot18_obj.c @@ -6,6 +6,15 @@ */ #include "z_bg_spot18_obj.h" + +#include "ichain.h" +#include "sfx.h" +#include "sys_math3d.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_spot18_obj/object_spot18_obj.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Bg_Spot18_Obj/z_bg_spot18_obj.h b/src/overlays/actors/ovl_Bg_Spot18_Obj/z_bg_spot18_obj.h index 5e000f646d..bfa758afd7 100644 --- a/src/overlays/actors/ovl_Bg_Spot18_Obj/z_bg_spot18_obj.h +++ b/src/overlays/actors/ovl_Bg_Spot18_Obj/z_bg_spot18_obj.h @@ -2,12 +2,12 @@ #define Z_BG_SPOT18_OBJ_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgSpot18Obj; -typedef void (*BgSpot18ObjActionFunc)(struct BgSpot18Obj*, PlayState*); -typedef s32 (*BgSpot18ObjInitFunc)(struct BgSpot18Obj*, PlayState*); +typedef void (*BgSpot18ObjActionFunc)(struct BgSpot18Obj*, struct PlayState*); +typedef s32 (*BgSpot18ObjInitFunc)(struct BgSpot18Obj*, struct PlayState*); typedef struct BgSpot18Obj { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Spot18_Shutter/z_bg_spot18_shutter.c b/src/overlays/actors/ovl_Bg_Spot18_Shutter/z_bg_spot18_shutter.c index a078991b46..a92e53a4f2 100644 --- a/src/overlays/actors/ovl_Bg_Spot18_Shutter/z_bg_spot18_shutter.c +++ b/src/overlays/actors/ovl_Bg_Spot18_Shutter/z_bg_spot18_shutter.c @@ -5,6 +5,14 @@ */ #include "z_bg_spot18_shutter.h" + +#include "ichain.h" +#include "one_point_cutscene.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_spot18_obj/object_spot18_obj.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_Bg_Spot18_Shutter/z_bg_spot18_shutter.h b/src/overlays/actors/ovl_Bg_Spot18_Shutter/z_bg_spot18_shutter.h index 161fa9bc97..737d30bdbb 100644 --- a/src/overlays/actors/ovl_Bg_Spot18_Shutter/z_bg_spot18_shutter.h +++ b/src/overlays/actors/ovl_Bg_Spot18_Shutter/z_bg_spot18_shutter.h @@ -2,11 +2,11 @@ #define Z_BG_SPOT18_SHUTTER_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgSpot18Shutter; -typedef void (*BgSpot18ShutterActionFunc)(struct BgSpot18Shutter*, PlayState*); +typedef void (*BgSpot18ShutterActionFunc)(struct BgSpot18Shutter*, struct PlayState*); typedef struct BgSpot18Shutter { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Sst_Floor/z_bg_sst_floor.c b/src/overlays/actors/ovl_Bg_Sst_Floor/z_bg_sst_floor.c index 5d96a0d750..1ddffb6c98 100644 --- a/src/overlays/actors/ovl_Bg_Sst_Floor/z_bg_sst_floor.c +++ b/src/overlays/actors/ovl_Bg_Sst_Floor/z_bg_sst_floor.c @@ -5,6 +5,17 @@ */ #include "z_bg_sst_floor.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_sst/object_sst.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_Bg_Sst_Floor/z_bg_sst_floor.h b/src/overlays/actors/ovl_Bg_Sst_Floor/z_bg_sst_floor.h index 9149f9214b..eb4abfa662 100644 --- a/src/overlays/actors/ovl_Bg_Sst_Floor/z_bg_sst_floor.h +++ b/src/overlays/actors/ovl_Bg_Sst_Floor/z_bg_sst_floor.h @@ -2,7 +2,7 @@ #define Z_BG_SST_FLOOR_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgSstFloor; diff --git a/src/overlays/actors/ovl_Bg_Toki_Hikari/z_bg_toki_hikari.c b/src/overlays/actors/ovl_Bg_Toki_Hikari/z_bg_toki_hikari.c index 4ed9f8854c..47550f22bd 100644 --- a/src/overlays/actors/ovl_Bg_Toki_Hikari/z_bg_toki_hikari.c +++ b/src/overlays/actors/ovl_Bg_Toki_Hikari/z_bg_toki_hikari.c @@ -5,6 +5,14 @@ */ #include "z_bg_toki_hikari.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sys_matrix.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_toki_objects/object_toki_objects.h" #define FLAGS ACTOR_FLAG_DRAW_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Bg_Toki_Hikari/z_bg_toki_hikari.h b/src/overlays/actors/ovl_Bg_Toki_Hikari/z_bg_toki_hikari.h index b4c62dba99..3c49b61cca 100644 --- a/src/overlays/actors/ovl_Bg_Toki_Hikari/z_bg_toki_hikari.h +++ b/src/overlays/actors/ovl_Bg_Toki_Hikari/z_bg_toki_hikari.h @@ -2,11 +2,11 @@ #define Z_BG_TOKI_HIKARI_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgTokiHikari; -typedef void (*BgTokiHikariActionFunc)(struct BgTokiHikari*, PlayState*); +typedef void (*BgTokiHikariActionFunc)(struct BgTokiHikari*, struct PlayState*); typedef struct BgTokiHikari { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd.c b/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd.c index 8dcc00db30..a3a3856969 100644 --- a/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd.c +++ b/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd.c @@ -5,6 +5,19 @@ */ #include "z_bg_toki_swd.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "seqcmd.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z64cutscene_flags.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_toki_objects/object_toki_objects.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd.h b/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd.h index 0a16201e60..5fdb9e0692 100644 --- a/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd.h +++ b/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd.h @@ -2,11 +2,11 @@ #define Z_BG_TOKI_SWD_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgTokiSwd; -typedef void (*BgTokiSwdActionFunc)(struct BgTokiSwd*, PlayState*); +typedef void (*BgTokiSwdActionFunc)(struct BgTokiSwd*, struct PlayState*); typedef struct BgTokiSwd { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_1.c b/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_1.c index f11a8a551a..123a797a73 100644 --- a/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_1.c +++ b/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_1.c @@ -1,5 +1,5 @@ -#include "z_bg_toki_swd.h" #include "z64cutscene_commands.h" +#include "z64player.h" // clang-format off CutsceneData gPullMasterSwordCs[] = { diff --git a/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_2.c b/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_2.c index de138790da..3e27901701 100644 --- a/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_2.c +++ b/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_2.c @@ -1,5 +1,5 @@ -#include "z_bg_toki_swd.h" #include "z64cutscene_commands.h" +#include "z64player.h" // clang-format off CutsceneData gPlaceMasterSwordCs[] = { diff --git a/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_3.c b/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_3.c index c6c5e4eb60..3e5ccb4ea6 100644 --- a/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_3.c +++ b/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_3.c @@ -1,5 +1,5 @@ -#include "z_bg_toki_swd.h" #include "z64cutscene_commands.h" +#include "z64player.h" // clang-format off CutsceneData gRevealMasterSwordCs[] = { diff --git a/src/overlays/actors/ovl_Bg_Treemouth/z_bg_treemouth.c b/src/overlays/actors/ovl_Bg_Treemouth/z_bg_treemouth.c index d245fce7cd..5a544c3015 100644 --- a/src/overlays/actors/ovl_Bg_Treemouth/z_bg_treemouth.c +++ b/src/overlays/actors/ovl_Bg_Treemouth/z_bg_treemouth.c @@ -5,10 +5,22 @@ */ #include "z_bg_treemouth.h" -#include "versions.h" -#include "assets/objects/object_spot04_objects/object_spot04_objects.h" #include "overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.h" +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "versions.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/object_spot04_objects/object_spot04_objects.h" + #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) void BgTreemouth_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_Bg_Treemouth/z_bg_treemouth.h b/src/overlays/actors/ovl_Bg_Treemouth/z_bg_treemouth.h index dc5a5f545f..7fea6f8e77 100644 --- a/src/overlays/actors/ovl_Bg_Treemouth/z_bg_treemouth.h +++ b/src/overlays/actors/ovl_Bg_Treemouth/z_bg_treemouth.h @@ -2,11 +2,11 @@ #define Z_BG_TREEMOUTH_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgTreemouth; -typedef void (*BgTreemouthActionFunc)(struct BgTreemouth*, PlayState*); +typedef void (*BgTreemouthActionFunc)(struct BgTreemouth*, struct PlayState*); typedef struct BgTreemouth { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Treemouth/z_bg_treemouth_cutscene_data.c b/src/overlays/actors/ovl_Bg_Treemouth/z_bg_treemouth_cutscene_data.c index 020b2972b1..c254318d42 100644 --- a/src/overlays/actors/ovl_Bg_Treemouth/z_bg_treemouth_cutscene_data.c +++ b/src/overlays/actors/ovl_Bg_Treemouth/z_bg_treemouth_cutscene_data.c @@ -1,5 +1,6 @@ -#include "z_bg_treemouth.h" +#include "sequence.h" #include "z64cutscene_commands.h" +#include "z64player.h" // clang-format off CutsceneData gDekuTreeMeetingCs[] = { diff --git a/src/overlays/actors/ovl_Bg_Umajump/z_bg_umajump.c b/src/overlays/actors/ovl_Bg_Umajump/z_bg_umajump.c index dbd5148b74..63a73aaf4e 100644 --- a/src/overlays/actors/ovl_Bg_Umajump/z_bg_umajump.c +++ b/src/overlays/actors/ovl_Bg_Umajump/z_bg_umajump.c @@ -5,6 +5,12 @@ */ #include "z_bg_umajump.h" + +#include "ichain.h" +#include "regs.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_umajump/object_umajump.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Bg_Umajump/z_bg_umajump.h b/src/overlays/actors/ovl_Bg_Umajump/z_bg_umajump.h index 19142ec4c8..067b5195c8 100644 --- a/src/overlays/actors/ovl_Bg_Umajump/z_bg_umajump.h +++ b/src/overlays/actors/ovl_Bg_Umajump/z_bg_umajump.h @@ -2,7 +2,7 @@ #define Z_BG_UMAJUMP_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgUmaJump; diff --git a/src/overlays/actors/ovl_Bg_Vb_Sima/z_bg_vb_sima.c b/src/overlays/actors/ovl_Bg_Vb_Sima/z_bg_vb_sima.c index 87e6c54ed4..679519f1be 100644 --- a/src/overlays/actors/ovl_Bg_Vb_Sima/z_bg_vb_sima.c +++ b/src/overlays/actors/ovl_Bg_Vb_Sima/z_bg_vb_sima.c @@ -5,9 +5,21 @@ */ #include "z_bg_vb_sima.h" -#include "assets/objects/object_fd/object_fd.h" #include "overlays/actors/ovl_Boss_Fd/z_boss_fd.h" +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + +#include "assets/objects/object_fd/object_fd.h" + #define FLAGS 0 void BgVbSima_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_Bg_Vb_Sima/z_bg_vb_sima.h b/src/overlays/actors/ovl_Bg_Vb_Sima/z_bg_vb_sima.h index c279ae393c..1dcee1b596 100644 --- a/src/overlays/actors/ovl_Bg_Vb_Sima/z_bg_vb_sima.h +++ b/src/overlays/actors/ovl_Bg_Vb_Sima/z_bg_vb_sima.h @@ -2,7 +2,7 @@ #define Z_BG_VB_SIMA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgVbSima; diff --git a/src/overlays/actors/ovl_Bg_Ydan_Hasi/z_bg_ydan_hasi.c b/src/overlays/actors/ovl_Bg_Ydan_Hasi/z_bg_ydan_hasi.c index df6e12f851..f759a98148 100644 --- a/src/overlays/actors/ovl_Bg_Ydan_Hasi/z_bg_ydan_hasi.c +++ b/src/overlays/actors/ovl_Bg_Ydan_Hasi/z_bg_ydan_hasi.c @@ -5,6 +5,16 @@ */ #include "z_bg_ydan_hasi.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_ydan_objects/object_ydan_objects.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_Bg_Ydan_Hasi/z_bg_ydan_hasi.h b/src/overlays/actors/ovl_Bg_Ydan_Hasi/z_bg_ydan_hasi.h index 616cd4250a..a308c6ebc0 100644 --- a/src/overlays/actors/ovl_Bg_Ydan_Hasi/z_bg_ydan_hasi.h +++ b/src/overlays/actors/ovl_Bg_Ydan_Hasi/z_bg_ydan_hasi.h @@ -2,11 +2,11 @@ #define Z_BG_YDAN_HASI_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgYdanHasi; -typedef void (*BgYdanHasiActionFunc)(struct BgYdanHasi*, PlayState*); +typedef void (*BgYdanHasiActionFunc)(struct BgYdanHasi*, struct PlayState*); typedef struct BgYdanHasi { /* 0x0000 */ DynaPolyActor dyna; 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 2b799465ce..becd2a11cc 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 @@ -5,6 +5,13 @@ */ #include "z_bg_ydan_maruta.h" + +#include "ichain.h" +#include "one_point_cutscene.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_ydan_objects/object_ydan_objects.h" #define FLAGS 0 @@ -86,7 +93,7 @@ void BgYdanMaruta_Init(Actor* thisx, PlayState* play) { Actor_ProcessInitChain(&this->dyna.actor, sInitChain); Collider_InitTris(play, &this->collider); - Collider_SetTris(play, &this->collider, &this->dyna.actor, &sTrisInit, this->elements); + Collider_SetTris(play, &this->collider, &this->dyna.actor, &sTrisInit, this->colliderElements); this->switchFlag = PARAMS_GET_U(this->dyna.actor.params, 0, 16); thisx->params = PARAMS_GET_U(thisx->params, 8, 8); // thisx is required to match here diff --git a/src/overlays/actors/ovl_Bg_Ydan_Maruta/z_bg_ydan_maruta.h b/src/overlays/actors/ovl_Bg_Ydan_Maruta/z_bg_ydan_maruta.h index 72b753b83e..450c550b3a 100644 --- a/src/overlays/actors/ovl_Bg_Ydan_Maruta/z_bg_ydan_maruta.h +++ b/src/overlays/actors/ovl_Bg_Ydan_Maruta/z_bg_ydan_maruta.h @@ -2,11 +2,11 @@ #define Z_BG_YDAN_MARUTA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgYdanMaruta; -typedef void (*BgYdanMarutaActionFunc)(struct BgYdanMaruta*, PlayState*); +typedef void (*BgYdanMarutaActionFunc)(struct BgYdanMaruta*, struct PlayState*); typedef struct BgYdanMaruta { /* 0x0000 */ DynaPolyActor dyna; @@ -14,7 +14,7 @@ typedef struct BgYdanMaruta { /* 0x0168 */ u8 switchFlag; /* 0x016A */ s16 unk_16A; /* 0x016C */ ColliderTris collider; - /* 0x018C */ ColliderTrisElement elements[2]; + /* 0x018C */ ColliderTrisElement colliderElements[2]; } BgYdanMaruta; // size = 0x0244 #endif 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 2d9b6f9296..0034cfb4ca 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 @@ -5,6 +5,21 @@ */ #include "z_bg_ydan_sp.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "rand.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_ydan_objects/object_ydan_objects.h" #define FLAGS 0 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 e134ac6f2c..b2138e23a5 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 @@ -2,11 +2,11 @@ #define Z_BG_YDAN_SP_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgYdanSp; -typedef void (*BgYdanSpActionFunc)(struct BgYdanSp*, PlayState*); +typedef void (*BgYdanSpActionFunc)(struct BgYdanSp*, struct PlayState*); typedef struct BgYdanSp { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Zg/z_bg_zg.c b/src/overlays/actors/ovl_Bg_Zg/z_bg_zg.c index 958e3c3f4f..68bacc26c8 100644 --- a/src/overlays/actors/ovl_Bg_Zg/z_bg_zg.c +++ b/src/overlays/actors/ovl_Bg_Zg/z_bg_zg.c @@ -5,8 +5,17 @@ */ #include "z_bg_zg.h" -#include "assets/objects/object_zg/object_zg.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "regs.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z64play.h" + +#include "assets/objects/object_zg/object_zg.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Bg_Zg/z_bg_zg.h b/src/overlays/actors/ovl_Bg_Zg/z_bg_zg.h index a5355defd5..c7f1add3a5 100644 --- a/src/overlays/actors/ovl_Bg_Zg/z_bg_zg.h +++ b/src/overlays/actors/ovl_Bg_Zg/z_bg_zg.h @@ -2,12 +2,12 @@ #define Z_BG_ZG_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BgZg; -typedef void (*BgZgActionFunc)(struct BgZg*, PlayState*); -typedef void (*BgZgDrawFunc)(struct BgZg*, PlayState*); +typedef void (*BgZgActionFunc)(struct BgZg*, struct PlayState*); +typedef void (*BgZgDrawFunc)(struct BgZg*, struct PlayState*); typedef struct BgZg { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.c b/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.c index ee1142b45a..bfc700c6dc 100644 --- a/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.c +++ b/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.c @@ -1,6 +1,27 @@ #include "z_boss_dodongo.h" -#include "assets/objects/object_kingdodongo/object_kingdodongo.h" #include "overlays/actors/ovl_Door_Warp1/z_door_warp1.h" + +#include "libc64/math64.h" +#include "libc64/qrand.h" +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "regs.h" +#include "rumble.h" +#include "segmented_address.h" +#include "seqcmd.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/object_kingdodongo/object_kingdodongo.h" #include "assets/scenes/dungeons/ddan_boss/ddan_boss_room_1.h" #define FLAGS \ @@ -48,6 +69,7 @@ ActorProfile Boss_Dodongo_Profile = { }; #include "z_boss_dodongo_data.inc.c" +#include "assets/overlays/ovl_Boss_Dodongo/ovl_Boss_Dodongo.c" static InitChainEntry sInitChain[] = { ICHAIN_U8(attentionRangeType, ATTENTION_RANGE_5, ICHAIN_CONTINUE), @@ -200,7 +222,7 @@ void BossDodongo_Init(Actor* thisx, PlayState* play) { this->unk_224 = 2.0f; this->unk_228 = 9200.0f; Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->items); + Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderElements); if (Flags_GetClear(play, play->roomCtx.curRoom.num)) { // KD is dead u16* temp_s1_3 = SEGMENTED_TO_VIRTUAL(gDodongosCavernBossLavaFloorTex); diff --git a/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.h b/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.h index dc5398598d..191487f13f 100644 --- a/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.h +++ b/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.h @@ -2,11 +2,11 @@ #define Z_BOSS_DODONGO_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BossDodongo; -typedef void (*BossDodongoActionFunc)(struct BossDodongo*, PlayState*); +typedef void (*BossDodongoActionFunc)(struct BossDodongo*, struct PlayState*); #define BOSS_DODONGO_EFFECT_COUNT 80 @@ -96,7 +96,7 @@ typedef struct BossDodongo { /* 0x0428 */ Vec3f subCamEye; /* 0x0434 */ Vec3f subCamAt; /* 0x0440 */ ColliderJntSph collider; - /* 0x0460 */ ColliderJntSphElement items[19]; + /* 0x0460 */ ColliderJntSphElement colliderElements[19]; /* 0x0920 */ BossDodongoEffect effects[BOSS_DODONGO_EFFECT_COUNT]; } BossDodongo; // size = 0x1820 diff --git a/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo_data.inc.c b/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo_data.inc.c index d4ac8f7f03..3d0061bb35 100644 --- a/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo_data.inc.c +++ b/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo_data.inc.c @@ -1,4 +1,4 @@ -#include "z_boss_dodongo.h" +#include "z64collision_check.h" static u8 D_808C7000[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, @@ -236,5 +236,3 @@ static ColliderJntSphInit sJntSphInit = { }; static Vec3f sUnkZeroVec = { 0.0f, 0.0f, 0.0f }; - -#include "assets/overlays/ovl_Boss_Dodongo/ovl_Boss_Dodongo.c" 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 1dfc472a45..aad89ee93f 100644 --- a/src/overlays/actors/ovl_Boss_Fd/z_boss_fd.c +++ b/src/overlays/actors/ovl_Boss_Fd/z_boss_fd.c @@ -5,12 +5,31 @@ */ #include "z_boss_fd.h" -#include "assets/objects/object_fd/object_fd.h" #include "overlays/actors/ovl_En_Vb_Ball/z_en_vb_ball.h" #include "overlays/actors/ovl_Bg_Vb_Sima/z_bg_vb_sima.h" #include "overlays/actors/ovl_Boss_Fd2/z_boss_fd2.h" #include "overlays/actors/ovl_Door_Warp1/z_door_warp1.h" + +#include "libc64/math64.h" +#include "libc64/qrand.h" +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "segmented_address.h" +#include "seqcmd.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" +#include "assets/objects/object_fd/object_fd.h" #define FLAGS \ (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED | \ @@ -193,7 +212,7 @@ void BossFd_Init(Actor* thisx, PlayState* play) { this->actor.world.pos.x = this->actor.world.pos.z = 0.0f; this->actor.world.pos.y = -200.0f; Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->elements); + Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderElements); for (i = 0; i < 100; i++) { this->bodySegsPos[i].x = this->actor.world.pos.x; diff --git a/src/overlays/actors/ovl_Boss_Fd/z_boss_fd.h b/src/overlays/actors/ovl_Boss_Fd/z_boss_fd.h index dd1cbc8f0a..1ec72040c9 100644 --- a/src/overlays/actors/ovl_Boss_Fd/z_boss_fd.h +++ b/src/overlays/actors/ovl_Boss_Fd/z_boss_fd.h @@ -2,11 +2,11 @@ #define Z_BOSS_FD_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BossFd; -typedef void (*BossFdActionFunc)(struct BossFd*, PlayState*); +typedef void (*BossFdActionFunc)(struct BossFd*, struct PlayState*); typedef enum BossFdActionState { /* -1 */ BOSSFD_WAIT_INTRO = -1, @@ -175,7 +175,7 @@ typedef struct BossFd { /* 0x1488 */ f32 subCamAtYOffset; /* 0x148C */ f32 subCamShake; /* 0x1490 */ ColliderJntSph collider; - /* 0x14B0 */ ColliderJntSphElement elements[19]; + /* 0x14B0 */ ColliderJntSphElement colliderElements[19]; /* 0x1970 */ BossFdEffect effects[BOSSFD_EFFECT_COUNT]; } BossFd; // size = 0x43A0 diff --git a/src/overlays/actors/ovl_Boss_Fd/z_boss_fd_colchk.inc.c b/src/overlays/actors/ovl_Boss_Fd/z_boss_fd_colchk.inc.c index 83aa550fde..1012117e52 100644 --- a/src/overlays/actors/ovl_Boss_Fd/z_boss_fd_colchk.inc.c +++ b/src/overlays/actors/ovl_Boss_Fd/z_boss_fd_colchk.inc.c @@ -1,6 +1,6 @@ -#include "global.h" +#include "z64collision_check.h" -static ColliderJntSphElementInit sJntSphItemsInit[19] = { +static ColliderJntSphElementInit sJntSphElementsInit[19] = { { { ELEM_MATERIAL_UNK3, @@ -222,5 +222,5 @@ static ColliderJntSphInit sJntSphInit = { COLSHAPE_JNTSPH, }, 19, - sJntSphItemsInit, + sJntSphElementsInit, }; diff --git a/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2.c b/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2.c index bf270508c4..27c5d82e96 100644 --- a/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2.c +++ b/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2.c @@ -5,10 +5,26 @@ */ #include "z_boss_fd2.h" -#include "assets/objects/object_fd2/object_fd2.h" #include "overlays/actors/ovl_Boss_Fd/z_boss_fd.h" #include "overlays/actors/ovl_Door_Warp1/z_door_warp1.h" + +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "segmented_address.h" +#include "seqcmd.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_math.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" + +#include "assets/objects/object_fd2/object_fd2.h" #define FLAGS \ (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED | \ @@ -185,7 +201,7 @@ void BossFd2_Init(Actor* thisx, PlayState* play) { this->actionFunc = BossFd2_Wait; } Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->elements); + Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderElements); } void BossFd2_Destroy(Actor* thisx, PlayState* play) { @@ -816,7 +832,7 @@ void BossFd2_CollisionCheck(BossFd2* this, PlayState* play) { if (this->actionFunc == BossFd2_ClawSwipe) { Player* player = GET_PLAYER(play); - for (i = 0; i < ARRAY_COUNT(this->elements); i++) { + for (i = 0; i < ARRAY_COUNT(this->colliderElements); i++) { if (this->collider.elements[i].base.atElemFlags & ATELEM_HIT) { this->collider.elements[i].base.atElemFlags &= ~ATELEM_HIT; Actor_PlaySfx(&player->actor, NA_SE_PL_BODY_HIT); diff --git a/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2.h b/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2.h index f2d3ff45ad..d9fbde0ada 100644 --- a/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2.h +++ b/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2.h @@ -2,11 +2,11 @@ #define Z_BOSS_FD2_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BossFd2; -typedef void (*BossFd2ActionFunc)(struct BossFd2*, PlayState*); +typedef void (*BossFd2ActionFunc)(struct BossFd2*, struct PlayState*); typedef enum BossFd2Signal { /* 0 */ FD2_SIGNAL_NONE, @@ -83,7 +83,7 @@ typedef struct BossFd2 { /* 0x1414 */ f32 subCamAtYOffset; /* 0x1418 */ f32 subCamShake; /* 0x141C */ ColliderJntSph collider; - /* 0x143C */ ColliderJntSphElement elements[9]; + /* 0x143C */ ColliderJntSphElement colliderElements[9]; } BossFd2; // size = 0x167C #endif diff --git a/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2_colchk.inc.c b/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2_colchk.inc.c index 1098d44c3f..3a432692fe 100644 --- a/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2_colchk.inc.c +++ b/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2_colchk.inc.c @@ -1,4 +1,4 @@ -#include "global.h" +#include "z64collision_check.h" static ColliderJntSphElementInit sJntSphElementsInit[9] = { { 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 801bd998e1..97bf27b6f9 100644 --- a/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.c +++ b/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.c @@ -1,10 +1,31 @@ #include "z_boss_ganon.h" -#include "versions.h" -#include "assets/overlays/ovl_Boss_Ganon/ovl_Boss_Ganon.h" #include "overlays/actors/ovl_En_Ganon_Mant/z_en_ganon_mant.h" #include "overlays/actors/ovl_En_Zl3/z_en_zl3.h" #include "overlays/actors/ovl_Bg_Ganon_Otyuka/z_bg_ganon_otyuka.h" #include "overlays/actors/ovl_En_Bom/z_en_bom.h" + +#include "libc64/math64.h" +#include "libc64/qrand.h" +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "rumble.h" +#include "segmented_address.h" +#include "seqcmd.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_math.h" +#include "sys_matrix.h" +#include "versions.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/overlays/ovl_Boss_Ganon/ovl_Boss_Ganon.h" #include "assets/objects/object_ganon/object_ganon.h" #include "assets/objects/object_ganon_anime1/object_ganon_anime1.h" #include "assets/objects/object_ganon_anime2/object_ganon_anime2.h" @@ -103,22 +124,22 @@ static ColliderCylinderInit sLightBallCylinderInit = { static u8 D_808E4C58[] = { 0, 12, 10, 12, 14, 16, 12, 14, 16, 12, 14, 16, 12, 14, 16, 10, 16, 14 }; static Vec3f sZeroVec = { 0.0f, 0.0f, 0.0f }; -#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: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 ique-cn:0" \ + "ntsc-1.0:0 ntsc-1.1:0 ntsc-1.2:0 pal-1.0:0 pal-1.1:0" 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" \ - "ntsc-1.0:128 ntsc-1.1:128 ntsc-1.2:128 pal-1.0:128 pal-1.1:128" + "ique-cn:192 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; static s32 sSeed3; #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" \ - "ntsc-1.0:128 ntsc-1.1:128 ntsc-1.2:128 pal-1.0:128 pal-1.1:128" + "ique-cn:192 ntsc-1.0:128 ntsc-1.1:128 ntsc-1.2:128 pal-1.0:128 pal-1.1:128" static BossGanon* sGanondorf; diff --git a/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.h b/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.h index e0f093455b..eb7fc2e2bf 100644 --- a/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.h +++ b/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.h @@ -2,11 +2,11 @@ #define Z_BOSS_GANON_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BossGanon; -typedef void (*BossGanonActionFunc)(struct BossGanon*, PlayState*); +typedef void (*BossGanonActionFunc)(struct BossGanon*, struct PlayState*); typedef enum GanondorfLimb { /* 0 */ GANONDORF_LIMB_NONE, diff --git a/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.c b/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.c index 1e0a73a899..8ab8cf84b5 100644 --- a/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.c +++ b/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.c @@ -1,14 +1,36 @@ #include "z_boss_ganon2.h" -#include "versions.h" #include "overlays/actors/ovl_Boss_Ganon/z_boss_ganon.h" #include "overlays/actors/ovl_Demo_Gj/z_demo_gj.h" #include "overlays/actors/ovl_En_Zl3/z_en_zl3.h" + +#include "libc64/qrand.h" +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "rumble.h" +#include "segmented_address.h" +#include "seqcmd.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_math.h" +#include "sys_matrix.h" +#include "versions.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_ganon/object_ganon.h" #include "assets/objects/object_ganon2/object_ganon2.h" #include "assets/objects/object_ganon_anime3/object_ganon_anime3.h" #include "assets/objects/object_geff/object_geff.h" #include "assets/overlays/ovl_Boss_Ganon2/ovl_Boss_Ganon2.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: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 | \ ACTOR_FLAG_DRAW_CULLING_DISABLED) @@ -69,7 +91,7 @@ static Vec3f D_80906D6C = { 0.0f, 0.0f, 500.0f }; static u8 D_80906D78 = 0; -static ColliderJntSphElementInit sJntSphItemsInit1[] = { +static ColliderJntSphElementInit sJntSphElementsInit1[] = { { { ELEM_MATERIAL_UNK0, @@ -257,11 +279,11 @@ static ColliderJntSphInit sJntSphInit1 = { OC2_FIRST_ONLY | OC2_TYPE_1, COLSHAPE_JNTSPH, }, - ARRAY_COUNT(sJntSphItemsInit1), - sJntSphItemsInit1, + ARRAY_COUNT(sJntSphElementsInit1), + sJntSphElementsInit1, }; -static ColliderJntSphElementInit sJntSphItemsInit2[] = { +static ColliderJntSphElementInit sJntSphElementsInit2[] = { { { ELEM_MATERIAL_UNK2, @@ -295,8 +317,8 @@ static ColliderJntSphInit sJntSphInit2 = { OC2_TYPE_1, COLSHAPE_JNTSPH, }, - ARRAY_COUNT(sJntSphItemsInit2), - sJntSphItemsInit2, + ARRAY_COUNT(sJntSphElementsInit2), + sJntSphElementsInit2, }; static Vec3f D_8090EB20; diff --git a/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.h b/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.h index 4c4c6f6fbe..c72fbd1e25 100644 --- a/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.h +++ b/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.h @@ -2,11 +2,11 @@ #define Z_BOSS_GANON2_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BossGanon2; -typedef void (*BossGanon2ActionFunc)(struct BossGanon2*, PlayState*); +typedef void (*BossGanon2ActionFunc)(struct BossGanon2*, struct PlayState*); typedef enum GanonLimb { /* 0 */ GANON_LIMB_NONE, diff --git a/src/overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.c b/src/overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.c index 7473f8d2d8..cc30350bc4 100644 --- a/src/overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.c +++ b/src/overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.c @@ -5,13 +5,32 @@ */ #include "z_boss_ganondrof.h" -#include "assets/objects/object_gnd/object_gnd.h" #include "overlays/actors/ovl_En_fHG/z_en_fhg.h" #include "overlays/actors/ovl_En_Fhg_Fire/z_en_fhg_fire.h" #include "overlays/effects/ovl_Effect_Ss_Fhg_Flash/z_eff_ss_fhg_flash.h" #include "overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.h" #include "overlays/actors/ovl_Door_Warp1/z_door_warp1.h" +#include "libc64/math64.h" +#include "libc64/qrand.h" +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "segmented_address.h" +#include "seqcmd.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64light.h" +#include "z64play.h" +#include "z64player.h" + +#include "assets/objects/object_gnd/object_gnd.h" + #define FLAGS \ (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED | \ ACTOR_FLAG_DRAW_CULLING_DISABLED) @@ -294,10 +313,10 @@ void BossGanondrof_Init(Actor* thisx, PlayState* play) { BossGanondrof_SetupPaintings(this); } - Collider_InitCylinder(play, &this->colliderBody); - Collider_InitCylinder(play, &this->colliderSpear); - Collider_SetCylinder(play, &this->colliderBody, &this->actor, &sCylinderInitBody); - Collider_SetCylinder(play, &this->colliderSpear, &this->actor, &sCylinderInitSpear); + Collider_InitCylinder(play, &this->bodyCollider); + Collider_InitCylinder(play, &this->spearCollider); + Collider_SetCylinder(play, &this->bodyCollider, &this->actor, &sCylinderInitBody); + Collider_SetCylinder(play, &this->spearCollider, &this->actor, &sCylinderInitSpear); this->actor.flags &= ~ACTOR_FLAG_ATTENTION_ENABLED; if (Flags_GetClear(play, play->roomCtx.curRoom.num)) { Actor_Kill(&this->actor); @@ -317,8 +336,8 @@ void BossGanondrof_Destroy(Actor* thisx, PlayState* play) { PRINTF("DT1\n"); SkelAnime_Free(&this->skelAnime, play); - Collider_DestroyCylinder(play, &this->colliderBody); - Collider_DestroyCylinder(play, &this->colliderSpear); + Collider_DestroyCylinder(play, &this->bodyCollider); + Collider_DestroyCylinder(play, &this->spearCollider); if (this->actor.params == GND_REAL_BOSS) { LightContext_RemoveLight(play, &play->lightCtx, this->lightNode); } @@ -461,9 +480,9 @@ void BossGanondrof_Paintings(BossGanondrof* this, PlayState* play) { if (this->flyMode != GND_FLY_PAINTING) { BossGanondrof_SetupNeutral(this, -20.0f); this->timers[0] = 100; - this->colliderBody.dim.radius = 20; - this->colliderBody.dim.height = 60; - this->colliderBody.dim.yShift = -33; + this->bodyCollider.dim.radius = 20; + this->bodyCollider.dim.height = 60; + this->bodyCollider.dim.yShift = -33; Actor_PlaySfx(&this->actor, NA_SE_EN_FANTOM_LAUGH); this->actor.naviEnemyId = NAVI_ENEMY_PHANTOM_GANON_PHASE_2; } else { @@ -775,7 +794,7 @@ void BossGanondrof_SetupBlock(BossGanondrof* this, PlayState* play) { } void BossGanondrof_Block(BossGanondrof* this, PlayState* play) { - this->colliderBody.base.colMaterial = COL_MATERIAL_METAL; + this->bodyCollider.base.colMaterial = COL_MATERIAL_METAL; SkelAnime_Update(&this->skelAnime); this->actor.world.pos.x += this->actor.velocity.x; this->actor.world.pos.z += this->actor.velocity.z; @@ -804,7 +823,7 @@ void BossGanondrof_Charge(BossGanondrof* this, PlayState* play) { f32 dxCenter = thisx->world.pos.x - GND_BOSSROOM_CENTER_X; f32 dzCenter = thisx->world.pos.z - GND_BOSSROOM_CENTER_Z; - this->colliderBody.base.colMaterial = COL_MATERIAL_METAL; + this->bodyCollider.base.colMaterial = COL_MATERIAL_METAL; SkelAnime_Update(&this->skelAnime); switch (this->work[GND_ACTION_STATE]) { case CHARGE_WINDUP: @@ -1231,13 +1250,13 @@ void BossGanondrof_CollisionCheck(BossGanondrof* this, PlayState* play) { if (this->work[GND_INVINC_TIMER] != 0) { this->work[GND_INVINC_TIMER]--; this->returnCount = 0; - this->colliderBody.base.acFlags &= ~AC_HIT; + this->bodyCollider.base.acFlags &= ~AC_HIT; } else { - acHit = this->colliderBody.base.acFlags & AC_HIT; + acHit = this->bodyCollider.base.acFlags & AC_HIT; if ((acHit && ((s8)this->actor.colChkInfo.health > 0)) || (this->returnCount != 0)) { if (acHit) { - this->colliderBody.base.acFlags &= ~AC_HIT; - acHitElem = this->colliderBody.elem.acHitElem; + this->bodyCollider.base.acFlags &= ~AC_HIT; + acHitElem = this->bodyCollider.elem.acHitElem; } if (this->flyMode != GND_FLY_PAINTING) { if (acHit && (this->actionFunc != BossGanondrof_Stunned) && @@ -1300,7 +1319,7 @@ void BossGanondrof_Update(Actor* thisx, PlayState* play) { PRINTF("MOVE START %d\n", this->actor.params); this->actor.flags &= ~ACTOR_FLAG_HOOKSHOT_PULLS_PLAYER; - this->colliderBody.base.colMaterial = COL_MATERIAL_HIT3; + this->bodyCollider.base.colMaterial = COL_MATERIAL_HIT3; if (this->killActor) { Actor_Kill(&this->actor); return; @@ -1328,20 +1347,20 @@ void BossGanondrof_Update(Actor* thisx, PlayState* play) { } PRINTF("MOVE END\n"); - BossGanondrof_SetColliderPos(&this->targetPos, &this->colliderBody); - BossGanondrof_SetColliderPos(&this->spearTip, &this->colliderSpear); + BossGanondrof_SetColliderPos(&this->targetPos, &this->bodyCollider); + BossGanondrof_SetColliderPos(&this->spearTip, &this->spearCollider); if ((this->flyMode == GND_FLY_PAINTING) && !horse->bossGndInPainting) { - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderBody.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->bodyCollider.base); } if ((this->actionFunc == BossGanondrof_Stunned) && (this->timers[0] > 1)) { - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderBody.base); - CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderBody.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->bodyCollider.base); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->bodyCollider.base); } else if (this->actionFunc == BossGanondrof_Block) { - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderBody.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->bodyCollider.base); } else if (this->actionFunc == BossGanondrof_Charge) { - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderBody.base); - CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderBody.base); - CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderSpear.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->bodyCollider.base); + CollisionCheck_SetAT(play, &play->colChkCtx, &this->bodyCollider.base); + CollisionCheck_SetAT(play, &play->colChkCtx, &this->spearCollider.base); } this->actor.focus.pos = this->targetPos; diff --git a/src/overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.h b/src/overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.h index 142aea02b6..1fed43e428 100644 --- a/src/overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.h +++ b/src/overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.h @@ -2,11 +2,12 @@ #define Z_BOSS_GANONDROF_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" +#include "z64light.h" struct BossGanondrof; -typedef void (*BossGanondrofActionFunc)(struct BossGanondrof*, PlayState*); +typedef void (*BossGanondrofActionFunc)(struct BossGanondrof*, struct PlayState*); #define GND_REAL_BOSS 1 #define GND_FAKE_BOSS 10 @@ -97,8 +98,8 @@ typedef struct BossGanondrof { /* 0x0454 */ f32 rideRotY[30]; // possibly only 25 used /* 0x04CC */ LightNode* lightNode; /* 0x04D0 */ LightInfo lightInfo; - /* 0x04E0 */ ColliderCylinder colliderBody; - /* 0x052C */ ColliderCylinder colliderSpear; + /* 0x04E0 */ ColliderCylinder bodyCollider; + /* 0x052C */ ColliderCylinder spearCollider; } BossGanondrof; // size = 0x0578 #endif diff --git a/src/overlays/actors/ovl_Boss_Goma/z_boss_goma.c b/src/overlays/actors/ovl_Boss_Goma/z_boss_goma.c index a2d5a34db4..c1719b8e6d 100644 --- a/src/overlays/actors/ovl_Boss_Goma/z_boss_goma.c +++ b/src/overlays/actors/ovl_Boss_Goma/z_boss_goma.c @@ -1,9 +1,36 @@ +/* + * File: z_boss_goma.c + * Overlay: ovl_Boss_Goma + * Description: Gohma + */ + #include "z_boss_goma.h" -#include "assets/objects/object_goma/object_goma.h" #include "overlays/actors/ovl_En_Goma/z_en_goma.h" #include "overlays/actors/ovl_Door_Shutter/z_door_shutter.h" #include "overlays/actors/ovl_Door_Warp1/z_door_warp1.h" +#include "libc64/math64.h" +#include "libc64/qrand.h" +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "rumble.h" +#include "segmented_address.h" +#include "seqcmd.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64environment.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/object_goma/object_goma.h" + #define FLAGS \ (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED | \ ACTOR_FLAG_DRAW_CULLING_DISABLED) @@ -63,7 +90,7 @@ ActorProfile Boss_Goma_Profile = { /**/ BossGoma_Draw, }; -static ColliderJntSphElementInit sColliderJntSphElementInit[13] = { +static ColliderJntSphElementInit sColliderJntSphElementsInit[13] = { { { ELEM_MATERIAL_UNK3, @@ -219,7 +246,7 @@ static ColliderJntSphInit sColliderJntSphInit = { COLSHAPE_JNTSPH, }, 13, - sColliderJntSphElementInit, + sColliderJntSphElementsInit, }; static u8 sClearPixelTableFirstPass[16 * 16] = { @@ -359,7 +386,7 @@ void BossGoma_Init(Actor* thisx, PlayState* play) { this->actor.colChkInfo.health = 10; this->actor.colChkInfo.mass = MASS_IMMOVABLE; Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, &this->actor, &sColliderJntSphInit, this->colliderItems); + Collider_SetJntSph(play, &this->collider, &this->actor, &sColliderJntSphInit, this->colliderElements); if (Flags_GetClear(play, play->roomCtx.curRoom.num)) { Actor_Kill(&this->actor); diff --git a/src/overlays/actors/ovl_Boss_Goma/z_boss_goma.h b/src/overlays/actors/ovl_Boss_Goma/z_boss_goma.h index 5931f9ca3d..4e4c8ea955 100644 --- a/src/overlays/actors/ovl_Boss_Goma/z_boss_goma.h +++ b/src/overlays/actors/ovl_Boss_Goma/z_boss_goma.h @@ -2,11 +2,11 @@ #define Z_BOSS_GOMA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BossGoma; -typedef void (*BossGomaActionFunc)(struct BossGoma*, PlayState*); +typedef void (*BossGomaActionFunc)(struct BossGoma*, struct PlayState*); typedef enum BossGomaLimb { /* 0 */ BOSSGOMA_LIMB_NONE, @@ -150,7 +150,7 @@ typedef struct BossGoma { /* 0x02A8 */ Vec3f defeatedLimbPositions[100]; // only 85/86 first indices actually used /* 0x0758 */ u8 deadLimbsState[100]; // only 85/90 first indices actually used /* 0x07BC */ ColliderJntSph collider; - /* 0x07DC */ ColliderJntSphElement colliderItems[13]; + /* 0x07DC */ ColliderJntSphElement colliderElements[13]; } BossGoma; // size = 0x0B1C #endif 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 fc82d8000e..cbb82fd9a6 100644 --- a/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.c +++ b/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.c @@ -5,10 +5,37 @@ */ #include "z_boss_mo.h" -#include "assets/objects/object_mo/object_mo.h" #include "overlays/actors/ovl_Door_Warp1/z_door_warp1.h" -#include "assets/objects/gameplay_keep/gameplay_keep.h" + +#include "libc64/math64.h" +#include "libc64/qrand.h" +#include "attributes.h" +#include "controller.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "letterbox.h" +#include "rand.h" +#include "regs.h" +#include "rumble.h" +#include "segmented_address.h" +#include "seqcmd.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" +#include "z64skin_matrix.h" + +#include "global.h" + +#include "assets/objects/gameplay_keep/gameplay_keep.h" +#include "assets/objects/object_mo/object_mo.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" \ "pal-1.0:128 pal-1.1:128" @@ -389,7 +416,7 @@ void BossMo_Init(Actor* thisx, PlayState* play2) { this->actor.world.pos.y = MO_WATER_LEVEL(play); this->actor.prevPos = this->targetPos = this->actor.world.pos; Collider_InitJntSph(play, &this->tentCollider); - Collider_SetJntSph(play, &this->tentCollider, &this->actor, &sJntSphInit, this->tentElements); + Collider_SetJntSph(play, &this->tentCollider, &this->actor, &sJntSphInit, this->tentColliderElements); this->tentMaxAngle = 1.0f; } } @@ -1151,7 +1178,7 @@ void BossMo_TentCollisionCheck(BossMo* this, PlayState* play) { s16 i2; ColliderElement* acHitElem; - for (i1 = 0; i1 < ARRAY_COUNT(this->tentElements); i1++) { + for (i1 = 0; i1 < ARRAY_COUNT(this->tentColliderElements); i1++) { if (this->tentCollider.elements[i1].base.acElemFlags & ACELEM_HIT) { for (i2 = 0; i2 < 19; i2++) { diff --git a/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.h b/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.h index 1b7641817e..88867ceeda 100644 --- a/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.h +++ b/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.h @@ -2,11 +2,11 @@ #define Z_BOSS_MO_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BossMo; -typedef void (*BossMoActionFunc)(struct BossMo*, PlayState*); +typedef void (*BossMoActionFunc)(struct BossMo*, struct PlayState*); typedef enum BossMoTentS16Var { /* 0 */ MO_TENT_ACTION_STATE, @@ -124,7 +124,7 @@ typedef struct BossMo { /* 0x100C */ f32 subCamYawShake; /* 0x1010 */ Vec3f tentTipPos; /* 0x101C */ ColliderJntSph tentCollider; - /* 0x103C */ ColliderJntSphElement tentElements[19]; + /* 0x103C */ ColliderJntSphElement tentColliderElements[19]; /* 0x14FC */ ColliderCylinder coreCollider; /* 0x1548 */ char unk_1548[0x44]; } BossMo; // size = 0x158C diff --git a/src/overlays/actors/ovl_Boss_Mo/z_boss_mo_colchk.inc.c b/src/overlays/actors/ovl_Boss_Mo/z_boss_mo_colchk.inc.c index 58d807607c..1148cf1a99 100644 --- a/src/overlays/actors/ovl_Boss_Mo/z_boss_mo_colchk.inc.c +++ b/src/overlays/actors/ovl_Boss_Mo/z_boss_mo_colchk.inc.c @@ -1,5 +1,4 @@ -#include "global.h" -#include "z_boss_mo.h" +#include "z64collision_check.h" static ColliderJntSphElementInit sJntSphElementsInit[19] = { { diff --git a/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.c b/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.c index ea77056756..1425b63c8b 100644 --- a/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.c +++ b/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.c @@ -5,13 +5,34 @@ */ #include "z_boss_sst.h" -#include "versions.h" -#include "assets/objects/object_sst/object_sst.h" -#include "assets/objects/gameplay_keep/gameplay_keep.h" #include "overlays/actors/ovl_Bg_Sst_Floor/z_bg_sst_floor.h" #include "overlays/actors/ovl_Door_Warp1/z_door_warp1.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" \ +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "rumble.h" +#include "segmented_address.h" +#include "seqcmd.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_math3d.h" +#include "sys_matrix.h" +#include "versions.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" +#include "z64skin_matrix.h" + +#include "assets/objects/object_sst/object_sst.h" +#include "assets/objects/gameplay_keep/gameplay_keep.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:128" \ "pal-1.0:128 pal-1.1:128" #define FLAGS \ @@ -274,7 +295,7 @@ void BossSst_Init(Actor* thisx, PlayState* play2) { BossSst* this = (BossSst*)thisx; Actor_ProcessInitChain(&this->actor, sInitChain); - Collider_InitCylinder(play, &this->colliderCyl); + Collider_InitCylinder(play, &this->colliderCylinder); Collider_InitJntSph(play, &this->colliderJntSph); CollisionCheck_SetInfo(&this->actor.colChkInfo, &sDamageTable, &sColChkInfoInit); Flags_SetSwitch(play, 0x14); @@ -284,8 +305,8 @@ void BossSst_Init(Actor* thisx, PlayState* play2) { SkelAnime_InitFlex(play, &this->skelAnime, &gBongoHeadSkel, &gBongoHeadEyeOpenIdleAnim, this->jointTable, this->morphTable, 45); ActorShape_Init(&this->actor.shape, 70000.0f, ActorShadow_DrawCircle, 95.0f); - Collider_SetJntSph(play, &this->colliderJntSph, &this->actor, &sJntSphInitHead, this->colliderItems); - Collider_SetCylinder(play, &this->colliderCyl, &this->actor, &sCylinderInitHead); + Collider_SetJntSph(play, &this->colliderJntSph, &this->actor, &sJntSphInitHead, this->colliderJntSphElements); + Collider_SetCylinder(play, &this->colliderCylinder, &this->actor, &sCylinderInitHead); sHead = this; this->actor.world.pos.x = ROOM_CENTER_X + 50.0f; this->actor.world.pos.y = ROOM_CENTER_Y + 0.0f; @@ -317,8 +338,8 @@ void BossSst_Init(Actor* thisx, PlayState* play2) { Actor_ChangeCategory(play, &play->actorCtx, &this->actor, ACTORCAT_BOSS); } } else { - Collider_SetJntSph(play, &this->colliderJntSph, &this->actor, &sJntSphInitHand, this->colliderItems); - Collider_SetCylinder(play, &this->colliderCyl, &this->actor, &sCylinderInitHand); + Collider_SetJntSph(play, &this->colliderJntSph, &this->actor, &sJntSphInitHand, this->colliderJntSphElements); + Collider_SetCylinder(play, &this->colliderCylinder, &this->actor, &sCylinderInitHand); if (this->actor.params == BONGO_LEFT_HAND) { SkelAnime_InitFlex(play, &this->skelAnime, &gBongoLeftHandSkel, &gBongoLeftHandIdleAnim, this->jointTable, this->morphTable, 27); @@ -343,7 +364,7 @@ void BossSst_Destroy(Actor* thisx, PlayState* play) { BossSst* this = (BossSst*)thisx; Collider_DestroyJntSph(play, &this->colliderJntSph); - Collider_DestroyCylinder(play, &this->colliderCyl); + Collider_DestroyCylinder(play, &this->colliderCylinder); Audio_StopSfxByPos(&this->center); } @@ -705,7 +726,7 @@ void BossSst_HeadDamagedHand(BossSst* this, PlayState* play) { void BossSst_HeadSetupReadyCharge(BossSst* this) { Animation_MorphToLoop(&this->skelAnime, &gBongoHeadEyeOpenIdleAnim, -5.0f); this->actor.speed = 0.0f; - this->colliderCyl.base.acFlags |= AC_ON; + this->colliderCylinder.base.acFlags |= AC_ON; this->actionFunc = BossSst_HeadReadyCharge; } @@ -781,7 +802,7 @@ void BossSst_HeadSetupEndCharge(BossSst* this) { Animation_MorphToLoop(&this->skelAnime, &gBongoHeadEyeCloseIdleAnim, -20.0f); this->targetYaw = Actor_WorldYawTowardPoint(&this->actor, &sRoomCenter); this->colliderJntSph.base.atFlags &= ~(AT_ON | AT_HIT); - this->colliderCyl.base.acFlags &= ~AC_ON; + this->colliderCylinder.base.acFlags &= ~AC_ON; this->radius *= -1.0f; this->actionFunc = BossSst_HeadEndCharge; } @@ -798,7 +819,7 @@ void BossSst_HeadEndCharge(BossSst* this, PlayState* play) { void BossSst_HeadSetupFrozenHand(BossSst* this) { Animation_MorphToLoop(&this->skelAnime, &gBongoHeadEyeOpenIdleAnim, -5.0f); this->ready = false; - this->colliderCyl.base.acFlags |= AC_ON; + this->colliderCylinder.base.acFlags |= AC_ON; this->actionFunc = BossSst_HeadFrozenHand; } @@ -811,7 +832,7 @@ void BossSst_HeadFrozenHand(BossSst* this, PlayState* play) { void BossSst_HeadSetupUnfreezeHand(BossSst* this) { Animation_MorphToPlayOnce(&this->skelAnime, &gBongoHeadEyeCloseAnim, -5.0f); - this->colliderCyl.base.acFlags &= ~AC_ON; + this->colliderCylinder.base.acFlags &= ~AC_ON; this->actionFunc = BossSst_HeadUnfreezeHand; } @@ -826,7 +847,7 @@ void BossSst_HeadSetupStunned(BossSst* this) { Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_OPA, Animation_GetLastFrame(&gBongoHeadKnockoutAnim)); this->colliderJntSph.base.atFlags &= ~(AT_ON | AT_HIT); - this->colliderCyl.base.acFlags &= ~AC_ON; + this->colliderCylinder.base.acFlags &= ~AC_ON; this->vVanish = false; this->actor.flags &= ~ACTOR_FLAG_REACT_TO_LENS; BossSst_HeadSfx(this, NA_SE_EN_SHADEST_FREEZE); @@ -878,8 +899,8 @@ void BossSst_HeadStunned(BossSst* this, PlayState* play) { void BossSst_HeadSetupVulnerable(BossSst* this) { Animation_MorphToLoop(&this->skelAnime, &gBongoHeadStunnedAnim, -5.0f); - this->colliderCyl.base.acFlags |= AC_ON; - this->colliderCyl.elem.acDmgInfo.dmgFlags = DMG_SWORD | DMG_DEKU_STICK; + this->colliderCylinder.base.acFlags |= AC_ON; + this->colliderCylinder.elem.acDmgInfo.dmgFlags = DMG_SWORD | DMG_DEKU_STICK; this->actor.speed = 0.0f; this->colliderJntSph.elements[10].base.acElemFlags |= (ACELEM_ON | ACELEM_HOOKABLE); this->colliderJntSph.elements[0].base.acElemFlags &= ~ACELEM_ON; @@ -920,7 +941,7 @@ void BossSst_HeadSetupDamage(BossSst* this) { Animation_GetLastFrame(&gBongoHeadDamageAnim)); Actor_SetColorFilter(&sHands[RIGHT]->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, Animation_GetLastFrame(&gBongoHeadDamageAnim)); - this->colliderCyl.base.acFlags &= ~AC_ON; + this->colliderCylinder.base.acFlags &= ~AC_ON; BossSst_HeadSfx(this, NA_SE_EN_SHADEST_DAMAGE); this->actionFunc = BossSst_HeadDamage; } @@ -937,8 +958,8 @@ void BossSst_HeadDamage(BossSst* this, PlayState* play) { void BossSst_HeadSetupRecover(BossSst* this) { Animation_MorphToPlayOnce(&this->skelAnime, &gBongoHeadRecoverAnim, -5.0f); - this->colliderCyl.base.acFlags &= ~AC_ON; - this->colliderCyl.elem.acDmgInfo.dmgFlags = DMG_DEFAULT; + this->colliderCylinder.base.acFlags &= ~AC_ON; + this->colliderCylinder.elem.acDmgInfo.dmgFlags = DMG_DEFAULT; this->colliderJntSph.elements[10].base.acElemFlags &= ~(ACELEM_ON | ACELEM_HOOKABLE); this->colliderJntSph.elements[0].base.acElemFlags |= ACELEM_ON; this->vVanish = true; @@ -1024,7 +1045,7 @@ void BossSst_HeadSetupDeath(BossSst* this, PlayState* play) { Actor_SetColorFilter(&sHands[LEFT]->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 60); Actor_SetColorFilter(&sHands[RIGHT]->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 60); this->timer = 60; - this->colliderCyl.base.acFlags &= ~AC_ON; + this->colliderCylinder.base.acFlags &= ~AC_ON; this->colliderJntSph.base.ocFlags1 &= ~OC1_ON; sHands[LEFT]->colliderJntSph.base.ocFlags1 &= ~OC1_ON; sHands[RIGHT]->colliderJntSph.base.ocFlags1 &= ~OC1_ON; @@ -1514,9 +1535,9 @@ void BossSst_HandSlam(BossSst* this, PlayState* play) { this->ready = true; Actor_PlaySfx(&this->actor, NA_SE_EN_SHADEST_TAIKO_LOW); BossSst_SpawnShockwave(this); - this->colliderCyl.base.atFlags |= AT_ON; - Collider_UpdateCylinder(&this->actor, &this->colliderCyl); - this->colliderCyl.dim.radius = sCylinderInitHand.dim.radius; + this->colliderCylinder.base.atFlags |= AT_ON; + Collider_UpdateCylinder(&this->actor, &this->colliderCylinder); + this->colliderCylinder.dim.radius = sCylinderInitHand.dim.radius; } } @@ -2560,8 +2581,8 @@ void BossSst_HandCollisionCheck(BossSst* this, PlayState* play) { } void BossSst_HeadCollisionCheck(BossSst* this, PlayState* play) { - if (this->colliderCyl.base.acFlags & AC_HIT) { - this->colliderCyl.base.acFlags &= ~AC_HIT; + if (this->colliderCylinder.base.acFlags & AC_HIT) { + this->colliderCylinder.base.acFlags &= ~AC_HIT; if ((this->actor.colChkInfo.damageEffect != 0) || (this->actor.colChkInfo.damage != 0)) { if (this->actionFunc == BossSst_HeadVulnerable) { if (Actor_ApplyDamage(&this->actor) == 0) { @@ -2593,13 +2614,13 @@ void BossSst_UpdateHand(Actor* thisx, PlayState* play) { BossSst* this = (BossSst*)thisx; BossSstHandTrail* trail; - if (this->colliderCyl.base.atFlags & AT_ON) { + if (this->colliderCylinder.base.atFlags & AT_ON) { if ((this->effects[0].move < 5) || (this->actor.xzDistToPlayer < ((this->effects[2].scale * 0.01f) * sCylinderInitHand.dim.radius)) || - (this->colliderCyl.base.atFlags & AT_HIT)) { - this->colliderCyl.base.atFlags &= ~(AT_ON | AT_HIT); + (this->colliderCylinder.base.atFlags & AT_HIT)) { + this->colliderCylinder.base.atFlags &= ~(AT_ON | AT_HIT); } else { - this->colliderCyl.dim.radius = (this->effects[0].scale * 0.01f) * sCylinderInitHand.dim.radius; + this->colliderCylinder.dim.radius = (this->effects[0].scale * 0.01f) * sCylinderInitHand.dim.radius; } } @@ -2626,8 +2647,8 @@ void BossSst_UpdateHand(Actor* thisx, PlayState* play) { CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderJntSph.base); } - if (this->colliderCyl.base.atFlags & AT_ON) { - CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderCyl.base); + if (this->colliderCylinder.base.atFlags & AT_ON) { + CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderCylinder.base); } if ((HAND_STATE(this) != HAND_DEATH) && (HAND_STATE(this) != HAND_WAIT) && (HAND_STATE(this) != HAND_BEAT) && @@ -2674,14 +2695,14 @@ void BossSst_UpdateHead(Actor* thisx, PlayState* play2) { } #if OOT_VERSION < NTSC_1_2 - if (this->colliderCyl.base.acFlags & AC_ON) { - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderCyl.base); + if (this->colliderCylinder.base.acFlags & AC_ON) { + CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderCylinder.base); } CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderJntSph.base); #else if ((this->actionFunc != BossSst_HeadLurk) && (this->actionFunc != BossSst_HeadIntro)) { - if (this->colliderCyl.base.acFlags & AC_ON) { - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderCyl.base); + if (this->colliderCylinder.base.acFlags & AC_ON) { + CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderCylinder.base); } CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderJntSph.base); } @@ -2862,9 +2883,9 @@ void BossSst_PostHeadDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* ro if (limbIndex == 8) { Matrix_MultVec3f(&zeroVec, &this->actor.focus.pos); Matrix_MultVec3f(&headVec, &headPos); - this->colliderCyl.dim.pos.x = headPos.x; - this->colliderCyl.dim.pos.y = headPos.y; - this->colliderCyl.dim.pos.z = headPos.z; + this->colliderCylinder.dim.pos.x = headPos.x; + this->colliderCylinder.dim.pos.y = headPos.y; + this->colliderCylinder.dim.pos.z = headPos.z; } Collider_UpdateSpheres(limbIndex, &this->colliderJntSph); diff --git a/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.h b/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.h index f064f2b842..caf4891ccb 100644 --- a/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.h +++ b/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.h @@ -2,11 +2,11 @@ #define Z_BOSS_SST_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BossSst; -typedef void (*BossSstActionFunc)(struct BossSst*, PlayState*); +typedef void (*BossSstActionFunc)(struct BossSst*, struct PlayState*); #define BOSS_SST_EFFECT_COUNT 18 @@ -46,8 +46,8 @@ typedef struct BossSst { /* 0x03C4 */ f32 radius; /* 0x03C8 */ Vec3f center; /* 0x03D4 */ ColliderJntSph colliderJntSph; - /* 0x03F4 */ ColliderJntSphElement colliderItems[11]; - /* 0x06B4 */ ColliderCylinder colliderCyl; + /* 0x03F4 */ ColliderJntSphElement colliderJntSphElements[11]; + /* 0x06B4 */ ColliderCylinder colliderCylinder; /* 0x0700 */ BossSstEffect effects[BOSS_SST_EFFECT_COUNT]; /* 0x09D0 */ s16 trailIndex; /* 0x09D2 */ s16 trailCount; diff --git a/src/overlays/actors/ovl_Boss_Sst/z_boss_sst_colchk.inc.c b/src/overlays/actors/ovl_Boss_Sst/z_boss_sst_colchk.inc.c index cc06356aa8..0016ff93d5 100644 --- a/src/overlays/actors/ovl_Boss_Sst/z_boss_sst_colchk.inc.c +++ b/src/overlays/actors/ovl_Boss_Sst/z_boss_sst_colchk.inc.c @@ -1,6 +1,6 @@ -#include "z_boss_sst.h" +#include "z64collision_check.h" -static ColliderJntSphElementInit sJntSphItemsInitHand[11] = { +static ColliderJntSphElementInit sJntSphElementsInitHand[11] = { { { ELEM_MATERIAL_UNK1, @@ -134,10 +134,10 @@ static ColliderJntSphInit sJntSphInitHand = { COLSHAPE_JNTSPH, }, 11, - sJntSphItemsInitHand, + sJntSphElementsInitHand, }; -static ColliderJntSphElementInit sJntSphItemsInitHead[11] = { +static ColliderJntSphElementInit sJntSphElementsInitHead[11] = { { { ELEM_MATERIAL_UNK1, @@ -271,7 +271,7 @@ static ColliderJntSphInit sJntSphInitHead = { COLSHAPE_JNTSPH, }, 11, - sJntSphItemsInitHead, + sJntSphElementsInitHead, }; static ColliderCylinderInit sCylinderInitHead = { 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 110c3325e9..50bb35218a 100644 --- a/src/overlays/actors/ovl_Boss_Tw/z_boss_tw.c +++ b/src/overlays/actors/ovl_Boss_Tw/z_boss_tw.c @@ -1,7 +1,28 @@ #include "z_boss_tw.h" +#include "overlays/actors/ovl_Door_Warp1/z_door_warp1.h" + +#include "libc64/math64.h" +#include "libc64/qrand.h" +#include "attributes.h" +#include "controller.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "rumble.h" +#include "segmented_address.h" +#include "seqcmd.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" +#include "z64skin_matrix.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_tw/object_tw.h" -#include "overlays/actors/ovl_Door_Warp1/z_door_warp1.h" #define FLAGS \ (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED | \ diff --git a/src/overlays/actors/ovl_Boss_Tw/z_boss_tw.h b/src/overlays/actors/ovl_Boss_Tw/z_boss_tw.h index eb2a4ef74c..df62aeff37 100644 --- a/src/overlays/actors/ovl_Boss_Tw/z_boss_tw.h +++ b/src/overlays/actors/ovl_Boss_Tw/z_boss_tw.h @@ -2,11 +2,11 @@ #define Z_BOSS_TW_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BossTw; -typedef void (*BossTwActionFunc)(struct BossTw* this, PlayState* play); +typedef void (*BossTwActionFunc)(struct BossTw* this, struct PlayState* play); typedef enum TwWork { /* 0 */ CS_TIMER_1, diff --git a/src/overlays/actors/ovl_Boss_Va/z_boss_va.c b/src/overlays/actors/ovl_Boss_Va/z_boss_va.c index e6ac36d486..d5454d30e8 100644 --- a/src/overlays/actors/ovl_Boss_Va/z_boss_va.c +++ b/src/overlays/actors/ovl_Boss_Va/z_boss_va.c @@ -5,12 +5,31 @@ */ #include "z_boss_va.h" -#include "assets/objects/object_bv/object_bv.h" #include "overlays/actors/ovl_En_Boom/z_en_boom.h" + +#include "libc64/qrand.h" +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "regs.h" +#include "segmented_address.h" +#include "seqcmd.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_math.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" +#include "assets/objects/object_bv/object_bv.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" \ - "ntsc-1.2:128 pal-1.0:128 pal-1.1: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 | \ @@ -612,7 +631,9 @@ void BossVa_Init(Actor* thisx, PlayState* play2) { break; default: this->actor.flags |= ACTOR_FLAG_SFX_FOR_PLAYER_BODY_HIT; - SkelAnime_Init(play, &this->skelAnime, &gBarinadeBariSkel, &gBarinadeBariAnim, NULL, NULL, 0); + //! @bug Flex skeleton is used as normal skeleton + SkelAnime_Init(play, &this->skelAnime, (SkeletonHeader*)&gBarinadeBariSkel, &gBarinadeBariAnim, NULL, NULL, + 0); this->actor.shape.yOffset = 400.0f; break; case BOSSVA_DOOR: @@ -680,8 +701,8 @@ void BossVa_Init(Actor* thisx, PlayState* play2) { } this->zapHeadPos.x = 1.0f; - Collider_InitCylinder(play, &this->colliderBody); - Collider_SetCylinder(play, &this->colliderBody, &this->actor, &sCylinderInit); + Collider_InitCylinder(play, &this->bodyCollider); + Collider_SetCylinder(play, &this->bodyCollider, &this->actor, &sCylinderInit); for (i = BOSSVA_ZAPPER_3; i >= BOSSVA_SUPPORT_1; i--) { Actor_SpawnAsChild( @@ -702,8 +723,9 @@ void BossVa_Init(Actor* thisx, PlayState* play2) { case BOSSVA_SUPPORT_1: case BOSSVA_SUPPORT_2: case BOSSVA_SUPPORT_3: - Collider_InitJntSph(play, &this->colliderSph); - Collider_SetJntSph(play, &this->colliderSph, &this->actor, &sJntSphInitSupport, this->elements); + Collider_InitJntSph(play, &this->colliderJntSph); + Collider_SetJntSph(play, &this->colliderJntSph, &this->actor, &sJntSphInitSupport, + this->colliderJntSphElements); if (sCsState < BOSSVA_BATTLE) { BossVa_SetupSupportIntro(this, play); } else { @@ -731,8 +753,9 @@ void BossVa_Init(Actor* thisx, PlayState* play2) { BossVa_SetupDoor(this, play); break; default: - Collider_InitJntSph(play, &this->colliderSph); - Collider_SetJntSph(play, &this->colliderSph, &this->actor, &sJntSphInitBari, this->elements); + Collider_InitJntSph(play, &this->colliderJntSph); + Collider_SetJntSph(play, &this->colliderJntSph, &this->actor, &sJntSphInitBari, + this->colliderJntSphElements); Collider_InitQuad(play, &this->colliderLightning); Collider_SetQuad(play, &this->colliderLightning, &this->actor, &sQuadInit); this->unk_1D8.x = 1.0f; @@ -752,8 +775,8 @@ void BossVa_Destroy(Actor* thisx, PlayState* play) { BossVa* this = (BossVa*)thisx; SkelAnime_Free(&this->skelAnime, play); - Collider_DestroyJntSph(play, &this->colliderSph); - Collider_DestroyCylinder(play, &this->colliderBody); + Collider_DestroyJntSph(play, &this->colliderJntSph); + Collider_DestroyCylinder(play, &this->bodyCollider); } void BossVa_SetupIntro(BossVa* this) { @@ -1071,9 +1094,9 @@ void BossVa_BodyPhase1(BossVa* this, PlayState* play) { } } - if (this->colliderBody.base.atFlags & AT_HIT) { - this->colliderBody.base.atFlags &= ~AT_HIT; - if (this->colliderBody.base.at == &player->actor) { + if (this->bodyCollider.base.atFlags & AT_HIT) { + this->bodyCollider.base.atFlags &= ~AT_HIT; + if (this->bodyCollider.base.at == &player->actor) { Actor_SetPlayerKnockbackLargeNoDamage(play, &this->actor, 8.0f, this->actor.yawTowardsPlayer, 8.0f); } } @@ -1101,9 +1124,9 @@ void BossVa_BodyPhase1(BossVa* this, PlayState* play) { Actor_PlaySfx(&this->actor, NA_SE_EN_BALINADE_BL_SPARK - SFX_FLAG); } - Collider_UpdateCylinder(&this->actor, &this->colliderBody); - CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderBody.base); - CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderBody.base); + Collider_UpdateCylinder(&this->actor, &this->bodyCollider); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->bodyCollider.base); + CollisionCheck_SetAT(play, &play->colChkCtx, &this->bodyCollider.base); func_800F436C(&this->actor.projectedPos, NA_SE_EN_BALINADE_LEVEL - SFX_FLAG, 1.0f); } @@ -1133,17 +1156,17 @@ void BossVa_BodyPhase2(BossVa* this, PlayState* play) { Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_OPA, 160); this->actor.colorFilterTimer = this->invincibilityTimer; } else { - this->colliderBody.elem.acDmgInfo.dmgFlags = DMG_BOOMERANG; + this->bodyCollider.elem.acDmgInfo.dmgFlags = DMG_BOOMERANG; } } - if (this->colliderBody.base.acFlags & AC_HIT) { - this->colliderBody.base.acFlags &= ~AC_HIT; + if (this->bodyCollider.base.acFlags & AC_HIT) { + this->bodyCollider.base.acFlags &= ~AC_HIT; - if (this->colliderBody.base.ac->id == ACTOR_EN_BOOM) { + if (this->bodyCollider.base.ac->id == ACTOR_EN_BOOM) { sPhase2Timer &= 0xFE00; Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_OPA, 160); - this->colliderBody.elem.acDmgInfo.dmgFlags = DMG_SWORD | DMG_BOOMERANG | DMG_DEKU_STICK; + this->bodyCollider.elem.acDmgInfo.dmgFlags = DMG_SWORD | DMG_BOOMERANG | DMG_DEKU_STICK; } else { sKillBari++; if ((this->actor.colorFilterTimer != 0) && !(this->actor.colorFilterParams & 0x4000)) { @@ -1161,11 +1184,11 @@ void BossVa_BodyPhase2(BossVa* this, PlayState* play) { Actor_PlaySfx(&this->actor, NA_SE_EN_BALINADE_FAINT); } - if (this->colliderBody.base.atFlags & AT_HIT) { - this->colliderBody.base.atFlags &= ~AT_HIT; + if (this->bodyCollider.base.atFlags & AT_HIT) { + this->bodyCollider.base.atFlags &= ~AT_HIT; sPhase2Timer = (sPhase2Timer + 0x18) & 0xFFF0; - if (this->colliderBody.base.at == &player->actor) { + if (this->bodyCollider.base.at == &player->actor) { Actor_SetPlayerKnockbackLargeNoDamage(play, &this->actor, 8.0f, this->actor.yawTowardsPlayer, 8.0f); Actor_PlaySfx(&player->actor, NA_SE_PL_BODY_HIT); } @@ -1209,14 +1232,14 @@ void BossVa_BodyPhase2(BossVa* this, PlayState* play) { this->actor.focus.pos = this->actor.world.pos; this->actor.focus.pos.y += 45.0f; - Collider_UpdateCylinder(&this->actor, &this->colliderBody); - CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderBody.base); + Collider_UpdateCylinder(&this->actor, &this->bodyCollider); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->bodyCollider.base); if (this->actor.colorFilterTimer == 0) { - CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderBody.base); + CollisionCheck_SetAT(play, &play->colChkCtx, &this->bodyCollider.base); } if ((this->actor.colorFilterTimer == 0) || !(this->actor.colorFilterParams & 0x4000)) { - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderBody.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->bodyCollider.base); } func_800F436C(&this->actor.projectedPos, NA_SE_EN_BALINADE_LEVEL - SFX_FLAG, @@ -1224,7 +1247,7 @@ void BossVa_BodyPhase2(BossVa* this, PlayState* play) { } void BossVa_SetupBodyPhase3(BossVa* this) { - this->colliderBody.elem.acDmgInfo.dmgFlags = DMG_BOOMERANG; + this->bodyCollider.elem.acDmgInfo.dmgFlags = DMG_BOOMERANG; this->actor.speed = 0.0f; sPhase3StopMoving = false; BossVa_SetupAction(this, BossVa_BodyPhase3); @@ -1239,16 +1262,16 @@ void BossVa_BodyPhase3(BossVa* this, PlayState* play) { sp62 = Math_Vec3f_Yaw(&this->actor.world.pos, &this->actor.home.pos); this->unk_1B0 += 0xCE4; this->bodyGlow = (s16)(Math_SinS(this->unk_1B0) * 50.0f) + 150; - if (this->colliderBody.base.atFlags & AT_HIT) { - this->colliderBody.base.atFlags &= ~AT_HIT; - if (this->colliderBody.base.at == &player->actor) { + if (this->bodyCollider.base.atFlags & AT_HIT) { + this->bodyCollider.base.atFlags &= ~AT_HIT; + if (this->bodyCollider.base.at == &player->actor) { Actor_SetPlayerKnockbackLargeNoDamage(play, &this->actor, 8.0f, this->actor.yawTowardsPlayer, 8.0f); this->actor.world.rot.y += (s16)Rand_CenteredFloat(0x2EE0) + 0x8000; Actor_PlaySfx(&player->actor, NA_SE_PL_BODY_HIT); } } - if (this->colliderBody.base.acFlags & AC_HIT) { + if (this->bodyCollider.base.acFlags & AC_HIT) { this->skelAnime.curFrame = 0.0f; Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_OPA, 12); Actor_PlaySfx(&this->actor, NA_SE_EN_BALINADE_FAINT); @@ -1326,11 +1349,11 @@ void BossVa_BodyPhase3(BossVa* this, PlayState* play) { Actor_PlaySfx(&this->actor, NA_SE_EN_BALINADE_BL_SPARK - SFX_FLAG); } - Collider_UpdateCylinder(&this->actor, &this->colliderBody); - CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderBody.base); - CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderBody.base); + Collider_UpdateCylinder(&this->actor, &this->bodyCollider); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->bodyCollider.base); + CollisionCheck_SetAT(play, &play->colChkCtx, &this->bodyCollider.base); if (this->timer == 0) { - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderBody.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->bodyCollider.base); } func_800F436C(&this->actor.projectedPos, NA_SE_EN_BALINADE_LEVEL - SFX_FLAG, @@ -1349,7 +1372,7 @@ void BossVa_SetupBodyPhase4(BossVa* this, PlayState* play) { this->timer = -30; } - this->colliderBody.dim.radius = 55; + this->bodyCollider.dim.radius = 55; BossVa_SetupAction(this, BossVa_BodyPhase4); } @@ -1360,9 +1383,9 @@ void BossVa_BodyPhase4(BossVa* this, PlayState* play) { this->unk_1B0 = (this->unk_1B0 + (s16)((sFightPhase - PHASE_4 + 1) * 1000.0f)) + 0xCE4; this->bodyGlow = (s16)(Math_SinS(this->unk_1B0) * 50.0f) + 150; - if (this->colliderBody.base.atFlags & AT_HIT) { - this->colliderBody.base.atFlags &= ~AT_HIT; - if (this->colliderBody.base.at == &player->actor) { + if (this->bodyCollider.base.atFlags & AT_HIT) { + this->bodyCollider.base.atFlags &= ~AT_HIT; + if (this->bodyCollider.base.at == &player->actor) { Actor_SetPlayerKnockbackLargeNoDamage(play, &this->actor, 8.0f, this->actor.yawTowardsPlayer, 8.0f); this->actor.world.rot.y += (s16)Rand_CenteredFloat(0x2EE0) + 0x8000; Actor_PlaySfx(&player->actor, NA_SE_PL_BODY_HIT); @@ -1372,8 +1395,8 @@ void BossVa_BodyPhase4(BossVa* this, PlayState* play) { Actor_PlaySfx(&this->actor, NA_SE_EN_BALINADE_BL_SPARK - SFX_FLAG); } - if (this->colliderBody.base.acFlags & AC_HIT) { - this->colliderBody.base.acFlags &= ~AC_HIT; + if (this->bodyCollider.base.acFlags & AC_HIT) { + this->bodyCollider.base.acFlags &= ~AC_HIT; this->skelAnime.curFrame = 0.0f; if (this->timer >= 0) { if (this->invincibilityTimer == 0) { @@ -1403,8 +1426,8 @@ void BossVa_BodyPhase4(BossVa* this, PlayState* play) { Actor_PlaySfx(&this->actor, NA_SE_EN_BALINADE_FAINT); } } - } else if (this->colliderBody.base.ac->id == ACTOR_EN_BOOM) { - boomerang = (EnBoom*)this->colliderBody.base.ac; + } else if (this->bodyCollider.base.ac->id == ACTOR_EN_BOOM) { + boomerang = (EnBoom*)this->bodyCollider.base.ac; boomerang->returnTimer = 0; boomerang->moveTo = &player->actor; boomerang->actor.world.rot.y = boomerang->actor.yawTowardsPlayer; @@ -1428,7 +1451,7 @@ void BossVa_BodyPhase4(BossVa* this, PlayState* play) { } Math_SmoothStepToF(&this->actor.speed, ((sFightPhase - PHASE_4 + 1) * 1.5f) + 4.0f, 1.0f, 0.25f, 0.0f); } - this->colliderBody.elem.acDmgInfo.dmgFlags = DMG_BOOMERANG; + this->bodyCollider.elem.acDmgInfo.dmgFlags = DMG_BOOMERANG; } else { Math_SmoothStepToS(&this->vaBodySpinRate, 0, 1, 0x96, 0); if (this->timer > 0) { @@ -1436,7 +1459,7 @@ void BossVa_BodyPhase4(BossVa* this, PlayState* play) { this->timer = 35; } Math_SmoothStepToF(&this->actor.shape.yOffset, -480.0f, 1.0f, 30.0f, 0.0f); - this->colliderBody.elem.acDmgInfo.dmgFlags = DMG_SWORD | DMG_BOOMERANG | DMG_DEKU_STICK; + this->bodyCollider.elem.acDmgInfo.dmgFlags = DMG_SWORD | DMG_BOOMERANG | DMG_DEKU_STICK; this->timer--; } else { if ((player->stateFlags1 & PLAYER_STATE1_26) && (this->timer < -60)) { @@ -1498,13 +1521,13 @@ void BossVa_BodyPhase4(BossVa* this, PlayState* play) { } Actor_UpdateBgCheckInfo(play, &this->actor, 30.0f, 70.0f, 0.0f, UPDBGCHECKINFO_FLAG_0); - Collider_UpdateCylinder(&this->actor, &this->colliderBody); - CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderBody.base); + Collider_UpdateCylinder(&this->actor, &this->bodyCollider); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->bodyCollider.base); if (this->invincibilityTimer == 0) { - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderBody.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->bodyCollider.base); } if ((this->vaBodySpinRate > 0x3E8) || (this->actor.shape.yOffset < -1200.0f)) { - CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderBody.base); + CollisionCheck_SetAT(play, &play->colChkCtx, &this->bodyCollider.base); } func_800F436C(&this->actor.projectedPos, NA_SE_EN_BALINADE_LEVEL - SFX_FLAG, (this->vaBodySpinRate * 0.00025f) + 1.0f); @@ -1745,11 +1768,11 @@ void BossVa_SupportAttached(BossVa* this, PlayState* play) { Actor_PlaySfx(&this->actor, NA_SE_EN_BALINADE_BL_SPARK - SFX_FLAG); } - if (this->colliderSph.base.acFlags & AC_HIT) { + if (this->colliderJntSph.base.acFlags & AC_HIT) { BossVa_SetupSupportCut(this, play); } else { if (this->actor.colorFilterTimer == 0) { - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderSph.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderJntSph.base); } if ((this->timer % 2) == 0) { @@ -2548,23 +2571,23 @@ void BossVa_BariPhase3Attack(BossVa* this, PlayState* play) { Math_SmoothStepToS(&this->vaBariUnused.z, this->vaBariUnused.x, 1, 0x1E, 0); this->vaBariUnused.y += this->vaBariUnused.z; - if ((this->colliderLightning.base.atFlags & AT_HIT) || (this->colliderSph.base.atFlags & AT_HIT)) { - if ((this->colliderLightning.base.at == &player->actor) || (this->colliderSph.base.at == &player->actor)) { + if ((this->colliderLightning.base.atFlags & AT_HIT) || (this->colliderJntSph.base.atFlags & AT_HIT)) { + if ((this->colliderLightning.base.at == &player->actor) || (this->colliderJntSph.base.at == &player->actor)) { Actor_SetPlayerKnockbackLargeNoDamage(play, &this->actor, 8.0f, GET_BODY(this)->actor.yawTowardsPlayer, 8.0f); Actor_PlaySfx(&player->actor, NA_SE_PL_BODY_HIT); - this->colliderSph.base.at = NULL; + this->colliderJntSph.base.at = NULL; this->colliderLightning.base.at = NULL; } this->colliderLightning.base.atFlags &= ~AT_HIT; - this->colliderSph.base.atFlags &= ~AT_HIT; + this->colliderJntSph.base.atFlags &= ~AT_HIT; } - if (this->colliderSph.base.acFlags & AC_HIT) { - this->colliderSph.base.acFlags &= ~AC_HIT; - if ((this->colliderSph.base.ac->id == ACTOR_EN_BOOM) && (sp52 >= 128)) { - boomerang = (EnBoom*)this->colliderSph.base.ac; + if (this->colliderJntSph.base.acFlags & AC_HIT) { + this->colliderJntSph.base.acFlags &= ~AC_HIT; + if ((this->colliderJntSph.base.ac->id == ACTOR_EN_BOOM) && (sp52 >= 128)) { + boomerang = (EnBoom*)this->colliderJntSph.base.ac; boomerang->returnTimer = 0; boomerang->moveTo = &player->actor; boomerang->actor.world.rot.y = boomerang->actor.yawTowardsPlayer; @@ -2587,14 +2610,14 @@ void BossVa_BariPhase3Attack(BossVa* this, PlayState* play) { if (sp52 >= 128) { BossVa_Spark(play, this, 1, 75, 15.0f, 7.0f, SPARK_TETHER, 1.0f, true); - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderSph.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderJntSph.base); sPhase3StopMoving = false; } else { sPhase3StopMoving = true; } CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderLightning.base); - CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderSph.base); + CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderJntSph.base); if ((play->gameplayFrames % 4) == 0) { Math_SmoothStepToS(&this->unk_1F0, 0x78, 1, 0xA, 0); } @@ -2644,17 +2667,17 @@ void BossVa_BariPhase2Attack(BossVa* this, PlayState* play) { return; } - if ((this->colliderLightning.base.atFlags & AT_HIT) || (this->colliderSph.base.atFlags & AT_HIT)) { - if ((this->colliderLightning.base.at == &player->actor) || (this->colliderSph.base.at == &player->actor)) { + if ((this->colliderLightning.base.atFlags & AT_HIT) || (this->colliderJntSph.base.atFlags & AT_HIT)) { + if ((this->colliderLightning.base.at == &player->actor) || (this->colliderJntSph.base.at == &player->actor)) { Actor_SetPlayerKnockbackLargeNoDamage(play, &this->actor, 8.0f, GET_BODY(this)->actor.yawTowardsPlayer, 8.0f); Actor_PlaySfx(&player->actor, NA_SE_PL_BODY_HIT); - this->colliderSph.base.at = NULL; + this->colliderJntSph.base.at = NULL; this->colliderLightning.base.at = NULL; } this->colliderLightning.base.atFlags &= ~AT_HIT; - this->colliderSph.base.atFlags &= ~AT_HIT; + this->colliderJntSph.base.atFlags &= ~AT_HIT; } Math_SmoothStepToF(&this->actor.world.pos.y, 4.0f, 1.0f, 2.0f, 0.0f); @@ -2675,11 +2698,11 @@ void BossVa_BariPhase2Attack(BossVa* this, PlayState* play) { Math_SmoothStepToF(&this->unk_1A0, (Math_SinS(sPhase2Timer * 0x190) * sp4C) + 320.0f, 1.0f, 10.0f, 0.0f); Math_SmoothStepToS(&this->unk_1AC, sp50 + 0x1F4, 1, 0x3C, 0); this->actor.world.pos.y += 2.0f * Math_SinF(this->unk_1A4); - if (this->colliderSph.base.acFlags & AC_HIT) { - this->colliderSph.base.acFlags &= ~AC_HIT; + if (this->colliderJntSph.base.acFlags & AC_HIT) { + this->colliderJntSph.base.acFlags &= ~AC_HIT; - if ((this->colliderSph.base.ac->id == ACTOR_EN_BOOM) && (sp52 >= 64)) { - boomerang = (EnBoom*)this->colliderSph.base.ac; + if ((this->colliderJntSph.base.ac->id == ACTOR_EN_BOOM) && (sp52 >= 64)) { + boomerang = (EnBoom*)this->colliderJntSph.base.ac; boomerang->returnTimer = 0; boomerang->moveTo = &player->actor; boomerang->actor.world.rot.y = boomerang->actor.yawTowardsPlayer; @@ -2688,7 +2711,7 @@ void BossVa_BariPhase2Attack(BossVa* this, PlayState* play) { } CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderLightning.base); - CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderSph.base); + CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderJntSph.base); } else { this->actor.flags |= ACTOR_FLAG_ATTENTION_ENABLED; Math_SmoothStepToS(&this->unk_1AC, sp50 + 150, 1, 0x3C, 0); @@ -2703,13 +2726,13 @@ void BossVa_BariPhase2Attack(BossVa* this, PlayState* play) { } this->actor.world.pos.y += Math_SinF(this->unk_1A4) * 4.0f; - if (this->colliderSph.base.acFlags & AC_HIT) { + if (this->colliderJntSph.base.acFlags & AC_HIT) { BossVa_KillBari(this, play); } } Math_SmoothStepToS(&this->actor.shape.rot.x, 0, 1, 0x5DC, 0); - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderSph.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderJntSph.base); if ((play->gameplayFrames % 4) == 0) { Math_SmoothStepToS(&this->unk_1F0, 0x78, 1, 0xA, 0); } @@ -2742,7 +2765,7 @@ void BossVa_BariPhase3Stunned(BossVa* this, PlayState* play) { Vec3f sp40 = GET_BODY(this)->unk_1D8; this->actor.world.rot.x = Math_Vec3f_Pitch(&GET_BODY(this)->actor.world.pos, &this->actor.world.pos); - if (this->colliderSph.base.acFlags & AC_HIT) { + if (this->colliderJntSph.base.acFlags & AC_HIT) { BossVa_KillBari(this, play); return; } @@ -2750,7 +2773,7 @@ void BossVa_BariPhase3Stunned(BossVa* this, PlayState* play) { this->unk_1A4 += Rand_ZeroOne() * 0.5f; Math_SmoothStepToF(&this->actor.world.pos.y, 4.0f, 1.0f, 2.0f, 0.0f); this->actor.world.pos.y += Math_SinF(this->unk_1A4) * 3.0f; - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderSph.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderJntSph.base); if ((play->gameplayFrames % 4) == 0) { Math_SmoothStepToS(&this->unk_1F0, 0x28, 1, 0xA, 0); BossVa_Spark(play, this, 1, this->unk_1F0, 25.0f, 20.0f, SPARK_BARI, 2.0f, true); @@ -2819,10 +2842,10 @@ void BossVa_Update(Actor* thisx, PlayState* play2) { switch (this->actor.params) { case BOSSVA_BODY: - if (this->colliderBody.base.acFlags & AC_HIT) { - this->colliderBody.base.acFlags &= ~AC_HIT; - if (this->colliderBody.base.ac->id == ACTOR_EN_BOOM) { - boomerang = (EnBoom*)this->colliderBody.base.ac; + if (this->bodyCollider.base.acFlags & AC_HIT) { + this->bodyCollider.base.acFlags &= ~AC_HIT; + if (this->bodyCollider.base.ac->id == ACTOR_EN_BOOM) { + boomerang = (EnBoom*)this->bodyCollider.base.ac; boomerang->returnTimer = 0; } } @@ -2972,7 +2995,7 @@ void BossVa_SupportPostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec switch (limbIndex) { case 4: Matrix_MultVec3f(&sZeroVec, &this->actor.focus.pos); - Collider_UpdateSpheres(0, &this->colliderSph); + Collider_UpdateSpheres(0, &this->colliderJntSph); break; case 7: Matrix_MultVec3f(&sZeroVec, &this->armTip); @@ -3228,7 +3251,7 @@ void BossVa_Draw(Actor* thisx, PlayState* play) { if (!this->isDead) { SkelAnime_DrawOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, BossVa_BariOverrideLimbDraw, BossVa_BariPostLimbDraw, this); - Collider_UpdateSpheres(0, &this->colliderSph); + Collider_UpdateSpheres(0, &this->colliderJntSph); if (sCsState < BOSSVA_BATTLE) { spBC = GET_BODY(this)->actor.world.pos; } else { diff --git a/src/overlays/actors/ovl_Boss_Va/z_boss_va.h b/src/overlays/actors/ovl_Boss_Va/z_boss_va.h index f5e6c8a896..628831ad2f 100644 --- a/src/overlays/actors/ovl_Boss_Va/z_boss_va.h +++ b/src/overlays/actors/ovl_Boss_Va/z_boss_va.h @@ -2,11 +2,11 @@ #define Z_BOSS_VA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct BossVa; -typedef void (*BossVaActionFunc)(struct BossVa*, PlayState*); +typedef void (*BossVaActionFunc)(struct BossVa*, struct PlayState*); typedef struct BossVa { /* 0x0000 */ Actor actor; @@ -41,9 +41,9 @@ typedef struct BossVa { /* 0x01FC */ Vec3f effectPos[10]; /* 0x0274 */ Vec3f unk_274; // Unused body position /* 0x0280 */ Vec3f unk_280; // Unused body position - /* 0x028C */ ColliderCylinder colliderBody; - /* 0x02D8 */ ColliderJntSph colliderSph; - /* 0x02F8 */ ColliderJntSphElement elements[1]; + /* 0x028C */ ColliderCylinder bodyCollider; + /* 0x02D8 */ ColliderJntSph colliderJntSph; + /* 0x02F8 */ ColliderJntSphElement colliderJntSphElements[1]; /* 0x0338 */ ColliderQuad colliderLightning; } BossVa; // size = 0x03B8 diff --git a/src/overlays/actors/ovl_Demo_6K/z_demo_6k.c b/src/overlays/actors/ovl_Demo_6K/z_demo_6k.c index 7657cf7432..d61720cdf6 100644 --- a/src/overlays/actors/ovl_Demo_6K/z_demo_6k.c +++ b/src/overlays/actors/ovl_Demo_6K/z_demo_6k.c @@ -5,11 +5,26 @@ */ #include "z_demo_6k.h" +#include "overlays/actors/ovl_Eff_Dust/z_eff_dust.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "segmented_address.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64effect.h" +#include "z64light.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_demo_6k/object_demo_6k.h" #include "assets/objects/object_gnd_magic/object_gnd_magic.h" -#include "overlays/actors/ovl_Eff_Dust/z_eff_dust.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Demo_6K/z_demo_6k.h b/src/overlays/actors/ovl_Demo_6K/z_demo_6k.h index 09d9c175fb..5849ccc236 100644 --- a/src/overlays/actors/ovl_Demo_6K/z_demo_6k.h +++ b/src/overlays/actors/ovl_Demo_6K/z_demo_6k.h @@ -2,11 +2,12 @@ #define Z_DEMO_6K_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" +#include "z64light.h" struct Demo6K; -typedef void (*Demo6KActionFunc)(struct Demo6K*, PlayState*); +typedef void (*Demo6KActionFunc)(struct Demo6K*, struct PlayState*); typedef struct Demo6K { /* 0x0000 */ Actor actor; 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 a5e7139f07..9a1993da17 100644 --- a/src/overlays/actors/ovl_Demo_Du/z_demo_du.c +++ b/src/overlays/actors/ovl_Demo_Du/z_demo_du.c @@ -1,8 +1,21 @@ #include "z_demo_du.h" -#include "assets/objects/object_du/object_du.h" #include "overlays/actors/ovl_Demo_Effect/z_demo_effect.h" #include "overlays/actors/ovl_Door_Warp1/z_door_warp1.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "regs.h" +#include "segmented_address.h" +#include "sfx.h" #include "terminal.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/object_du/object_du.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Demo_Du/z_demo_du.h b/src/overlays/actors/ovl_Demo_Du/z_demo_du.h index d46f03145e..ede2756e05 100644 --- a/src/overlays/actors/ovl_Demo_Du/z_demo_du.h +++ b/src/overlays/actors/ovl_Demo_Du/z_demo_du.h @@ -2,7 +2,7 @@ #define Z_DEMO_DU_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct DemoDu; diff --git a/src/overlays/actors/ovl_Demo_Du/z_demo_du_cutscene_data.inc.c b/src/overlays/actors/ovl_Demo_Du/z_demo_du_cutscene_data.inc.c index 06dbb35c11..ad83a24185 100644 --- a/src/overlays/actors/ovl_Demo_Du/z_demo_du_cutscene_data.inc.c +++ b/src/overlays/actors/ovl_Demo_Du/z_demo_du_cutscene_data.inc.c @@ -1,5 +1,6 @@ -#include "z_demo_du.h" +#include "sequence.h" #include "z64cutscene_commands.h" +#include "z64player.h" // clang-format off static CutsceneData gFireMedallionCs[] = { 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 3f19529df0..303c4f7240 100644 --- a/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.c +++ b/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.c @@ -5,7 +5,15 @@ */ #include "z_demo_ec.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" #include "terminal.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_zo/object_zo.h" #include "assets/objects/object_ec/object_ec.h" #include "assets/objects/object_ma2/object_ma2.h" diff --git a/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.h b/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.h index fe71483505..494338b27d 100644 --- a/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.h +++ b/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.h @@ -2,13 +2,13 @@ #define Z_DEMO_EC_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct DemoEc; -typedef void (*DemoEcInitFunc)(struct DemoEc*, PlayState*); -typedef void (*DemoEcUpdateFunc)(struct DemoEc*, PlayState*); -typedef void (*DemoEcDrawFunc)(struct DemoEc*, PlayState*); +typedef void (*DemoEcInitFunc)(struct DemoEc*, struct PlayState*); +typedef void (*DemoEcUpdateFunc)(struct DemoEc*, struct PlayState*); +typedef void (*DemoEcDrawFunc)(struct DemoEc*, struct PlayState*); typedef struct DemoEc { /* 0x0000 */ Actor actor; 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 9ed730455f..78517cad0f 100644 --- a/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.c +++ b/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.c @@ -1,6 +1,27 @@ #include "z_demo_effect.h" + +#include "libc64/math64.h" +#include "libc64/qrand.h" +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "segmented_address.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_math.h" +#include "sys_matrix.h" #include "terminal.h" #include "versions.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64curve.h" +#include "z64draw.h" +#include "z64cutscene_flags.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_efc_crystal_light/object_efc_crystal_light.h" #include "assets/objects/object_efc_fire_ball/object_efc_fire_ball.h" diff --git a/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.h b/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.h index d3c2768bdb..12b22a1ad5 100644 --- a/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.h +++ b/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.h @@ -2,11 +2,12 @@ #define Z_DEMO_EFFECT_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" +#include "z64curve.h" struct DemoEffect; -typedef void (*DemoEffectFunc)(struct DemoEffect*, PlayState*); +typedef void (*DemoEffectFunc)(struct DemoEffect*, struct PlayState*); typedef struct DemoEffectFireBall { /* 0x00 */ u8 timer; 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 caae4cff14..55713d4134 100644 --- a/src/overlays/actors/ovl_Demo_Ext/z_demo_ext.c +++ b/src/overlays/actors/ovl_Demo_Ext/z_demo_ext.c @@ -5,7 +5,16 @@ */ #include "z_demo_ext.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "regs.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z64play.h" +#include "z64skin.h" + #include "assets/objects/object_fhg/object_fhg.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Demo_Ext/z_demo_ext.h b/src/overlays/actors/ovl_Demo_Ext/z_demo_ext.h index dbed1bf1f9..2eadc4af69 100644 --- a/src/overlays/actors/ovl_Demo_Ext/z_demo_ext.h +++ b/src/overlays/actors/ovl_Demo_Ext/z_demo_ext.h @@ -2,12 +2,12 @@ #define Z_DEMO_EXT_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct DemoExt; -typedef void (*DemoExtActionFunc)(struct DemoExt*, PlayState*); -typedef void (*DemoExtDrawFunc)(Actor*, PlayState*); +typedef void (*DemoExtActionFunc)(struct DemoExt*, struct PlayState*); +typedef void (*DemoExtDrawFunc)(Actor*, struct PlayState*); typedef struct DemoExt { /* 0x0000 */ Actor actor; 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 f0b240070d..b70210c38a 100644 --- a/src/overlays/actors/ovl_Demo_Geff/z_demo_geff.c +++ b/src/overlays/actors/ovl_Demo_Geff/z_demo_geff.c @@ -5,8 +5,17 @@ */ #include "z_demo_geff.h" -#include "assets/objects/object_geff/object_geff.h" +#include "overlays/actors/ovl_Demo_Gt/z_demo_gt.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "regs.h" +#include "segmented_address.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z64play.h" + +#include "assets/objects/object_geff/object_geff.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_Demo_Geff/z_demo_geff.h b/src/overlays/actors/ovl_Demo_Geff/z_demo_geff.h index ca719594ad..03c6110fae 100644 --- a/src/overlays/actors/ovl_Demo_Geff/z_demo_geff.h +++ b/src/overlays/actors/ovl_Demo_Geff/z_demo_geff.h @@ -2,22 +2,20 @@ #define Z_DEMO_GEFF_H #include "ultra64.h" -#include "global.h" - -#include "../ovl_Demo_Gt/z_demo_gt.h" +#include "z64actor.h" struct DemoGeff; -typedef void (*DemoGeffInitFunc)(struct DemoGeff*, PlayState*); -typedef void (*DemoGeffActionFunc)(struct DemoGeff*, PlayState*); -typedef void (*DemoGeffDrawFunc)(struct DemoGeff*, PlayState*); +typedef void (*DemoGeffInitFunc)(struct DemoGeff*, struct PlayState*); +typedef void (*DemoGeffActionFunc)(struct DemoGeff*, struct PlayState*); +typedef void (*DemoGeffDrawFunc)(struct DemoGeff*, struct PlayState*); typedef struct DemoGeff { /* 0x0000 */ Actor actor; /* 0x014C */ s32 action; /* 0x0150 */ s32 drawConfig; /* 0x0154 */ s32 objectSlot; - /* 0x0158 */ DemoGt* demoGt; + /* 0x0158 */ struct DemoGt* demoGt; /* 0x015C */ f32 deltaPosX; /* 0x0160 */ f32 deltaPosY; /* 0x0164 */ f32 deltaPosZ; 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 ae85f3ce89..1cfb0ef82b 100644 --- a/src/overlays/actors/ovl_Demo_Gj/z_demo_gj.c +++ b/src/overlays/actors/ovl_Demo_Gj/z_demo_gj.c @@ -5,8 +5,25 @@ */ #include "z_demo_gj.h" -#include "assets/objects/object_gj/object_gj.h" + +#include "libc64/math64.h" +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "regs.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64draw.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/object_gj/object_gj.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) @@ -112,19 +129,19 @@ s32 DemoGj_HitByExplosion(DemoGj* this, PlayState* play, ColliderCylinder* cylin void DemoGj_DestroyCylinder(DemoGj* this, PlayState* play) { switch (DemoGj_GetType(this)) { case DEMOGJ_TYPE_DESTRUCTABLE_RUBBLE_1: - Collider_DestroyCylinder(play, &this->cylinders[0]); - Collider_DestroyCylinder(play, &this->cylinders[1]); - Collider_DestroyCylinder(play, &this->cylinders[2]); + Collider_DestroyCylinder(play, &this->colliderCylinders[0]); + Collider_DestroyCylinder(play, &this->colliderCylinders[1]); + Collider_DestroyCylinder(play, &this->colliderCylinders[2]); break; case DEMOGJ_TYPE_DESTRUCTABLE_RUBBLE_2: - Collider_DestroyCylinder(play, &this->cylinders[0]); - Collider_DestroyCylinder(play, &this->cylinders[1]); - Collider_DestroyCylinder(play, &this->cylinders[2]); + Collider_DestroyCylinder(play, &this->colliderCylinders[0]); + Collider_DestroyCylinder(play, &this->colliderCylinders[1]); + Collider_DestroyCylinder(play, &this->colliderCylinders[2]); break; case DEMOGJ_TYPE_DESTRUCTABLE_RUBBLE_TALL: - Collider_DestroyCylinder(play, &this->cylinders[0]); + Collider_DestroyCylinder(play, &this->colliderCylinders[0]); break; } } @@ -971,9 +988,9 @@ void DemoGj_DrawRubbleAroundArena(DemoGj* this, PlayState* play) { // Inits the three cylinders with `sCylinderInit1` void DemoGj_InitDestructableRubble1(DemoGj* this, PlayState* play) { DemoGj_InitSetIndices(this, play, 15, 0, NULL); - DemoGj_InitCylinder(this, play, &this->cylinders[0], &sCylinderInit1); - DemoGj_InitCylinder(this, play, &this->cylinders[1], &sCylinderInit1); - DemoGj_InitCylinder(this, play, &this->cylinders[2], &sCylinderInit1); + DemoGj_InitCylinder(this, play, &this->colliderCylinders[0], &sCylinderInit1); + DemoGj_InitCylinder(this, play, &this->colliderCylinders[1], &sCylinderInit1); + DemoGj_InitCylinder(this, play, &this->colliderCylinders[2], &sCylinderInit1); } #if DEBUG_FEATURES @@ -986,9 +1003,9 @@ void DemoGj_DoNothing1(DemoGj* this, PlayState* play) { * Used by DEMOGJ_TYPE_DESTRUCTABLE_RUBBLE_1 */ void func_8097AEE8(DemoGj* this, PlayState* play) { - ColliderCylinder* cylinder0 = &this->cylinders[0]; - ColliderCylinder* cylinder1 = &this->cylinders[1]; - ColliderCylinder* cylinder2 = &this->cylinders[2]; + ColliderCylinder* cylinder0 = &this->colliderCylinders[0]; + ColliderCylinder* cylinder1 = &this->colliderCylinders[1]; + ColliderCylinder* cylinder2 = &this->colliderCylinders[2]; Vec3f* actorPos = &this->dyna.actor.world.pos; s32 pad; s16 theta = this->dyna.actor.world.rot.y; @@ -1010,9 +1027,9 @@ void func_8097AEE8(DemoGj* this, PlayState* play) { void DemoGj_SetCylindersAsAC(DemoGj* this, PlayState* play) { s32 pad[2]; - Collider* cylinder0 = &this->cylinders[0].base; - Collider* cylinder1 = &this->cylinders[1].base; - Collider* cylinder2 = &this->cylinders[2].base; + Collider* cylinder0 = &this->colliderCylinders[0].base; + Collider* cylinder1 = &this->colliderCylinders[1].base; + Collider* cylinder2 = &this->colliderCylinders[2].base; s32 pad2[3]; CollisionCheck_SetAC(play, &play->colChkCtx, cylinder0); @@ -1044,13 +1061,13 @@ void func_8097B128(DemoGj* this, PlayState* play) { } s32 DemoGj_HasCylinderAnyExploded(DemoGj* this, PlayState* play) { - if (DemoGj_HitByExplosion(this, play, &this->cylinders[0])) { + if (DemoGj_HitByExplosion(this, play, &this->colliderCylinders[0])) { return true; } - if (DemoGj_HitByExplosion(this, play, &this->cylinders[1])) { + if (DemoGj_HitByExplosion(this, play, &this->colliderCylinders[1])) { return true; } - if (DemoGj_HitByExplosion(this, play, &this->cylinders[2])) { + if (DemoGj_HitByExplosion(this, play, &this->colliderCylinders[2])) { return true; } return false; @@ -1108,9 +1125,9 @@ void DemoGj_DrawDestructableRubble1(DemoGj* this, PlayState* play) { // Inits the three cylinders with `sCylinderInit2` void DemoGj_InitDestructableRubble2(DemoGj* this, PlayState* play) { DemoGj_InitSetIndices(this, play, 16, 0, NULL); - DemoGj_InitCylinder(this, play, &this->cylinders[0], &sCylinderInit2); - DemoGj_InitCylinder(this, play, &this->cylinders[1], &sCylinderInit2); - DemoGj_InitCylinder(this, play, &this->cylinders[2], &sCylinderInit2); + DemoGj_InitCylinder(this, play, &this->colliderCylinders[0], &sCylinderInit2); + DemoGj_InitCylinder(this, play, &this->colliderCylinders[1], &sCylinderInit2); + DemoGj_InitCylinder(this, play, &this->colliderCylinders[2], &sCylinderInit2); } #if DEBUG_FEATURES @@ -1120,9 +1137,9 @@ 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->cylinders[0]; - ColliderCylinder* cylinder1 = &this->cylinders[1]; - ColliderCylinder* cylinder2 = &this->cylinders[2]; + ColliderCylinder* cylinder0 = &this->colliderCylinders[0]; + ColliderCylinder* cylinder1 = &this->colliderCylinders[1]; + ColliderCylinder* cylinder2 = &this->colliderCylinders[2]; Vec3f* actorPos = &this->dyna.actor.world.pos; s32 pad; s16 theta = this->dyna.actor.world.rot.y; @@ -1144,9 +1161,9 @@ void func_8097B450(DemoGj* this, PlayState* play) { void DemoGj_SetCylindersAsAC2(DemoGj* this, PlayState* play) { s32 pad[2]; - Collider* cylinder0 = &this->cylinders[0].base; - Collider* cylinder1 = &this->cylinders[1].base; - Collider* cylinder2 = &this->cylinders[2].base; + Collider* cylinder0 = &this->colliderCylinders[0].base; + Collider* cylinder1 = &this->colliderCylinders[1].base; + Collider* cylinder2 = &this->colliderCylinders[2].base; s32 pad2[3]; CollisionCheck_SetAC(play, &play->colChkCtx, cylinder0); @@ -1156,13 +1173,13 @@ void DemoGj_SetCylindersAsAC2(DemoGj* this, PlayState* play) { // Does the same as `DemoGj_HasCylinderAnyExploded` s32 DemoGj_HasCylinderAnyExploded2(DemoGj* this, PlayState* play) { - if (DemoGj_HitByExplosion(this, play, &this->cylinders[0])) { + if (DemoGj_HitByExplosion(this, play, &this->colliderCylinders[0])) { return true; } - if (DemoGj_HitByExplosion(this, play, &this->cylinders[1])) { + if (DemoGj_HitByExplosion(this, play, &this->colliderCylinders[1])) { return true; } - if (DemoGj_HitByExplosion(this, play, &this->cylinders[2])) { + if (DemoGj_HitByExplosion(this, play, &this->colliderCylinders[2])) { return true; } return false; @@ -1243,7 +1260,7 @@ void DemoGj_DemoGj_InitDestructableRubble2(DemoGj* this, PlayState* play) { // Inits the first cylinder (only that one) with `sCylinderInit3` void DemoGj_InitDestructableRubbleTall(DemoGj* this, PlayState* play) { DemoGj_InitSetIndices(this, play, 17, 0, NULL); - DemoGj_InitCylinder(this, play, &this->cylinders[0], &sCylinderInit3); + DemoGj_InitCylinder(this, play, &this->colliderCylinders[0], &sCylinderInit3); } #if DEBUG_FEATURES @@ -1285,7 +1302,7 @@ void func_8097B9BC(DemoGj* this, PlayState* play) { */ void func_8097BA48(DemoGj* this, PlayState* play) { Actor* thisx = &this->dyna.actor; - ColliderCylinder* cylinder = &this->cylinders[0]; + ColliderCylinder* cylinder = &this->colliderCylinders[0]; s32 pad[2]; if (func_809797E4(this, 4)) { diff --git a/src/overlays/actors/ovl_Demo_Gj/z_demo_gj.h b/src/overlays/actors/ovl_Demo_Gj/z_demo_gj.h index a29362c9e8..313788893f 100644 --- a/src/overlays/actors/ovl_Demo_Gj/z_demo_gj.h +++ b/src/overlays/actors/ovl_Demo_Gj/z_demo_gj.h @@ -2,7 +2,7 @@ #define Z_DEMO_GJ_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" #include "overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.h" @@ -17,7 +17,7 @@ typedef struct DemoGj { /* 0x0178 */ BossGanon2* ganon; /* 0x017C */ s32 isTransformedIntoGanon; // flag /* 0x0180 */ s32 isRotated; // flag - /* 0x0184 */ ColliderCylinder cylinders[3]; + /* 0x0184 */ ColliderCylinder colliderCylinders[3]; /* 0x0268 */ s32 killFlag; // This actor never sets this flag, but it reads it. If set to `true` and the actor type is DEMOGJ_TYPE_DESTRUCTABLE_RUBBLE_1, DEMOGJ_TYPE_DESTRUCTABLE_RUBBLE_2 or DEMOGJ_TYPE_DESTRUCTABLE_RUBBLE_TALL, then the actor will be killed and will drop the specified amount of collectibles. /* 0x026C */ Vec3f unk_26C; // This actor never sets this. Specifies which direction will this actor explode when killed using `killFlag`. } DemoGj; // size = 0x0278 diff --git a/src/overlays/actors/ovl_Demo_Go/z_demo_go.c b/src/overlays/actors/ovl_Demo_Go/z_demo_go.c index 01c173dcc4..139e38a45f 100644 --- a/src/overlays/actors/ovl_Demo_Go/z_demo_go.c +++ b/src/overlays/actors/ovl_Demo_Go/z_demo_go.c @@ -5,8 +5,18 @@ */ #include "z_demo_go.h" -#include "assets/objects/object_oF1d_map/object_oF1d_map.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "regs.h" +#include "segmented_address.h" +#include "sfx.h" #include "terminal.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64skin_matrix.h" + +#include "assets/objects/object_oF1d_map/object_oF1d_map.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Demo_Go/z_demo_go.h b/src/overlays/actors/ovl_Demo_Go/z_demo_go.h index 969fdd8e07..9abd5ed41c 100644 --- a/src/overlays/actors/ovl_Demo_Go/z_demo_go.h +++ b/src/overlays/actors/ovl_Demo_Go/z_demo_go.h @@ -2,12 +2,12 @@ #define Z_DEMO_GO_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct DemoGo; -typedef void (*DemoGoActionFunc)(struct DemoGo*, PlayState*); -typedef void (*DemoGoDrawFunc)(struct DemoGo*, PlayState*); +typedef void (*DemoGoActionFunc)(struct DemoGo*, struct PlayState*); +typedef void (*DemoGoDrawFunc)(struct DemoGo*, struct PlayState*); typedef struct DemoGo { /* 0x0000 */ Actor 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 a878a21f1f..7b86c2bc25 100644 --- a/src/overlays/actors/ovl_Demo_Gt/z_demo_gt.c +++ b/src/overlays/actors/ovl_Demo_Gt/z_demo_gt.c @@ -1,11 +1,25 @@ #include "z_demo_gt.h" +#include "overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h" +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "regs.h" +#include "rumble.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "terminal.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64effect.h" #include "z64frame_advance.h" +#include "z64play.h" +#include "z64save.h" #include "assets/objects/object_gt/object_gt.h" #include "assets/objects/object_geff/object_geff.h" -#include "terminal.h" -#include "overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_Demo_Gt/z_demo_gt.h b/src/overlays/actors/ovl_Demo_Gt/z_demo_gt.h index 18b968b15c..910c265939 100644 --- a/src/overlays/actors/ovl_Demo_Gt/z_demo_gt.h +++ b/src/overlays/actors/ovl_Demo_Gt/z_demo_gt.h @@ -2,12 +2,12 @@ #define Z_DEMO_GT_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct DemoGt; -typedef void (*DemoGtUpdateFunc)(struct DemoGt*, PlayState*); -typedef void (*DemoGtDrawFunc)(Actor*, PlayState*); +typedef void (*DemoGtUpdateFunc)(struct DemoGt*, struct PlayState*); +typedef void (*DemoGtDrawFunc)(struct Actor*, struct PlayState*); typedef struct DemoGt { /* 0x0000 */ DynaPolyActor dyna; 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 82db3d7fa6..cab53df6ac 100644 --- a/src/overlays/actors/ovl_Demo_Ik/z_demo_ik.c +++ b/src/overlays/actors/ovl_Demo_Ik/z_demo_ik.c @@ -1,5 +1,13 @@ #include "z_demo_ik.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/object_ik/object_ik.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED @@ -159,7 +167,7 @@ void DemoIk_MoveToStartPos(DemoIk* this, PlayState* play, s32 cueChannel) { void DemoIk_Type1Init(DemoIk* this, PlayState* play) { s32 pad[3]; - SkeletonHeader* skeleton; + FlexSkeletonHeader* skeleton; AnimationHeader* animation; f32 phi_f0; @@ -181,7 +189,8 @@ void DemoIk_Type1Init(DemoIk* this, PlayState* play) { // No break is required for matching } ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, phi_f0); - SkelAnime_Init(play, &this->skelAnime, skeleton, NULL, this->jointTable, this->morphTable, 2); + //! @bug Flex skeleton is used as normal skeleton + SkelAnime_Init(play, &this->skelAnime, (SkeletonHeader*)skeleton, NULL, this->jointTable, this->morphTable, 2); Animation_Change(&this->skelAnime, animation, 1.0f, 0.0f, Animation_GetLastFrame(animation), ANIMMODE_ONCE, 0.0f); } diff --git a/src/overlays/actors/ovl_Demo_Ik/z_demo_ik.h b/src/overlays/actors/ovl_Demo_Ik/z_demo_ik.h index 3b21af5665..b4f2ca74ea 100644 --- a/src/overlays/actors/ovl_Demo_Ik/z_demo_ik.h +++ b/src/overlays/actors/ovl_Demo_Ik/z_demo_ik.h @@ -2,12 +2,12 @@ #define Z_DEMO_IK_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct DemoIk; -typedef void (*DemoIkActionFunc)(struct DemoIk* this, PlayState* play); -typedef void (*DemoIkDrawFunc)(struct DemoIk* this, PlayState* play); +typedef void (*DemoIkActionFunc)(struct DemoIk* this, struct PlayState* play); +typedef void (*DemoIkDrawFunc)(struct DemoIk* this, struct PlayState* play); typedef struct DemoIk { /* 0x0000 */ Actor actor; 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 7e359f6625..95d68dd2b5 100644 --- a/src/overlays/actors/ovl_Demo_Im/z_demo_im.c +++ b/src/overlays/actors/ovl_Demo_Im/z_demo_im.c @@ -7,9 +7,21 @@ #include "z_demo_im.h" #include "overlays/actors/ovl_En_Arrow/z_en_arrow.h" #include "overlays/actors/ovl_Door_Warp1/z_door_warp1.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "regs.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "terminal.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/scenes/indoors/nakaniwa/nakaniwa_scene.h" #include "assets/objects/object_im/object_im.h" -#include "terminal.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_UPDATE_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_Demo_Im/z_demo_im.h b/src/overlays/actors/ovl_Demo_Im/z_demo_im.h index 94744969be..9477c21d8f 100644 --- a/src/overlays/actors/ovl_Demo_Im/z_demo_im.h +++ b/src/overlays/actors/ovl_Demo_Im/z_demo_im.h @@ -2,12 +2,12 @@ #define Z_DEMO_IM_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct DemoIm; -typedef void (*DemoImActionFunc)(struct DemoIm*, PlayState*); -typedef void (*DemoImDrawFunc)(struct DemoIm*, PlayState*); +typedef void (*DemoImActionFunc)(struct DemoIm*, struct PlayState*); +typedef void (*DemoImDrawFunc)(struct DemoIm*, struct PlayState*); typedef enum ImpaLimb { /* 0x00 */ IMPA_LIMB_NONE, diff --git a/src/overlays/actors/ovl_Demo_Im/z_demo_im_cutscene_data.inc.c b/src/overlays/actors/ovl_Demo_Im/z_demo_im_cutscene_data.inc.c index f56097680c..7a9a0dde84 100644 --- a/src/overlays/actors/ovl_Demo_Im/z_demo_im_cutscene_data.inc.c +++ b/src/overlays/actors/ovl_Demo_Im/z_demo_im_cutscene_data.inc.c @@ -1,4 +1,4 @@ -#include "z_demo_im.h" +#include "sequence.h" #include "z64cutscene_commands.h" // clang-format off 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 a1253dbae6..e3ac3e78fe 100644 --- a/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.c +++ b/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.c @@ -1,13 +1,28 @@ #include "z_demo_kankyo.h" -#include "global.h" + +#include "libc64/qrand.h" +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" #include "versions.h" +#include "z_lib.h" #include "z64cutscene_commands.h" +#include "z64cutscene_flags.h" +#include "z64cutscene_spline.h" +#include "z64olib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #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: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:128 ntsc-1.1:128 ntsc-1.2:128" +#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" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data1.c b/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data1.c index 3a0a95a907..4e17a4a53c 100644 --- a/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data1.c +++ b/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data1.c @@ -1,4 +1,3 @@ -#include "z_demo_kankyo.h" #include "z64cutscene_commands.h" // clang-format off diff --git a/src/overlays/actors/ovl_Demo_Kekkai/z_demo_kekkai.c b/src/overlays/actors/ovl_Demo_Kekkai/z_demo_kekkai.c index 8c6ded1651..2a79aef458 100644 --- a/src/overlays/actors/ovl_Demo_Kekkai/z_demo_kekkai.c +++ b/src/overlays/actors/ovl_Demo_Kekkai/z_demo_kekkai.c @@ -5,6 +5,21 @@ */ #include "z_demo_kekkai.h" + +#include "libu64/debug.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "segmented_address.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_demo_kekkai/object_demo_kekkai.h" #include "assets/scenes/dungeons/ganontika/ganontika_scene.h" diff --git a/src/overlays/actors/ovl_Demo_Kekkai/z_demo_kekkai.h b/src/overlays/actors/ovl_Demo_Kekkai/z_demo_kekkai.h index 8e396c4ec6..182b1d587c 100644 --- a/src/overlays/actors/ovl_Demo_Kekkai/z_demo_kekkai.h +++ b/src/overlays/actors/ovl_Demo_Kekkai/z_demo_kekkai.h @@ -2,11 +2,11 @@ #define Z_DEMO_KEKKAI_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct DemoKekkai; -typedef void (*DemoKekkaiUpdateFunc)(struct DemoKekkai* this, PlayState* play); +typedef void (*DemoKekkaiUpdateFunc)(struct DemoKekkai* this, struct PlayState* play); typedef struct DemoKekkai { /* 0x0000 */ Actor actor; 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 36e521701b..3b6ed448d8 100644 --- a/src/overlays/actors/ovl_Demo_Sa/z_demo_sa.c +++ b/src/overlays/actors/ovl_Demo_Sa/z_demo_sa.c @@ -7,9 +7,20 @@ #include "z_demo_sa.h" #include "overlays/actors/ovl_En_Elf/z_en_elf.h" #include "overlays/actors/ovl_Door_Warp1/z_door_warp1.h" -#include "assets/objects/object_sa/object_sa.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "regs.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sequence.h" #include "terminal.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/object_sa/object_sa.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Demo_Sa/z_demo_sa.h b/src/overlays/actors/ovl_Demo_Sa/z_demo_sa.h index 1f66c4fec3..639d50a634 100644 --- a/src/overlays/actors/ovl_Demo_Sa/z_demo_sa.h +++ b/src/overlays/actors/ovl_Demo_Sa/z_demo_sa.h @@ -2,12 +2,12 @@ #define Z_DEMO_SA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct DemoSa; -typedef void (*DemoSaActionFunc)(struct DemoSa*, PlayState*); -typedef void (*DemoSaDrawFunc)(struct DemoSa*, PlayState*); +typedef void (*DemoSaActionFunc)(struct DemoSa*, struct PlayState*); +typedef void (*DemoSaDrawFunc)(struct DemoSa*, struct PlayState*); typedef struct DemoSa { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Demo_Shd/z_demo_shd.c b/src/overlays/actors/ovl_Demo_Shd/z_demo_shd.c index d5cb025e46..549daf0db7 100644 --- a/src/overlays/actors/ovl_Demo_Shd/z_demo_shd.c +++ b/src/overlays/actors/ovl_Demo_Shd/z_demo_shd.c @@ -6,6 +6,13 @@ #include "z_demo_shd.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sequence.h" +#include "sys_matrix.h" +#include "z64audio.h" +#include "z64play.h" + #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) void DemoShd_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_Demo_Shd/z_demo_shd.h b/src/overlays/actors/ovl_Demo_Shd/z_demo_shd.h index fe9198f624..eb62a3983f 100644 --- a/src/overlays/actors/ovl_Demo_Shd/z_demo_shd.h +++ b/src/overlays/actors/ovl_Demo_Shd/z_demo_shd.h @@ -2,11 +2,11 @@ #define Z_DEMO_SHD_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct DemoShd; -typedef void (*DemoShdActionFunc)(struct DemoShd*, PlayState*); +typedef void (*DemoShdActionFunc)(struct DemoShd*, struct PlayState*); typedef struct DemoShd { /* 0x0000 */ Actor actor; 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 67adb46e78..dcafdfed20 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 @@ -1,5 +1,13 @@ #include "z_demo_tre_lgt.h" #include "overlays/actors/ovl_En_Box/z_en_box.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sfx.h" +#include "z64curve.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_box/object_box.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Demo_Tre_Lgt/z_demo_tre_lgt.h b/src/overlays/actors/ovl_Demo_Tre_Lgt/z_demo_tre_lgt.h index 0cad6996d9..47f6c35642 100644 --- a/src/overlays/actors/ovl_Demo_Tre_Lgt/z_demo_tre_lgt.h +++ b/src/overlays/actors/ovl_Demo_Tre_Lgt/z_demo_tre_lgt.h @@ -2,11 +2,12 @@ #define Z_DEMO_TRE_LGT_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" +#include "z64curve.h" struct DemoTreLgt; -typedef void (*DemoTreLgtActionFunc)(struct DemoTreLgt*, PlayState*); +typedef void (*DemoTreLgtActionFunc)(struct DemoTreLgt*, struct PlayState*); typedef struct DemoTreLgt { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Door_Ana/z_door_ana.c b/src/overlays/actors/ovl_Door_Ana/z_door_ana.c index 40f4878831..4034dafc91 100644 --- a/src/overlays/actors/ovl_Door_Ana/z_door_ana.c +++ b/src/overlays/actors/ovl_Door_Ana/z_door_ana.c @@ -5,6 +5,17 @@ */ #include "z_door_ana.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64cutscene_flags.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/gameplay_field_keep/gameplay_field_keep.h" #define FLAGS ACTOR_FLAG_UPDATE_DURING_OCARINA diff --git a/src/overlays/actors/ovl_Door_Ana/z_door_ana.h b/src/overlays/actors/ovl_Door_Ana/z_door_ana.h index 51c24b84af..0092bd8f1a 100644 --- a/src/overlays/actors/ovl_Door_Ana/z_door_ana.h +++ b/src/overlays/actors/ovl_Door_Ana/z_door_ana.h @@ -2,11 +2,11 @@ #define Z_DOOR_ANA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct DoorAna; -typedef void (*DoorAnaActionFunc)(struct DoorAna*, PlayState*); +typedef void (*DoorAnaActionFunc)(struct DoorAna*, struct PlayState*); typedef struct DoorAna { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Door_Gerudo/z_door_gerudo.c b/src/overlays/actors/ovl_Door_Gerudo/z_door_gerudo.c index 360f4aedec..2f9f4e1183 100644 --- a/src/overlays/actors/ovl_Door_Gerudo/z_door_gerudo.c +++ b/src/overlays/actors/ovl_Door_Gerudo/z_door_gerudo.c @@ -5,6 +5,17 @@ */ #include "z_door_gerudo.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_door_gerudo/object_door_gerudo.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Door_Gerudo/z_door_gerudo.h b/src/overlays/actors/ovl_Door_Gerudo/z_door_gerudo.h index c00a0fa669..efd2959767 100644 --- a/src/overlays/actors/ovl_Door_Gerudo/z_door_gerudo.h +++ b/src/overlays/actors/ovl_Door_Gerudo/z_door_gerudo.h @@ -2,11 +2,11 @@ #define Z_DOOR_GERUDO_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct DoorGerudo; -typedef void (*DoorGerudoActionFunc)(struct DoorGerudo*, PlayState*); +typedef void (*DoorGerudoActionFunc)(struct DoorGerudo*, struct PlayState*); typedef struct DoorGerudo { /* 0x0000 */ SLIDING_DOOR_ACTOR_BASE; diff --git a/src/overlays/actors/ovl_Door_Killer/z_door_killer.c b/src/overlays/actors/ovl_Door_Killer/z_door_killer.c index 0f2d3163ec..7c00f0118c 100644 --- a/src/overlays/actors/ovl_Door_Killer/z_door_killer.c +++ b/src/overlays/actors/ovl_Door_Killer/z_door_killer.c @@ -5,6 +5,17 @@ */ #include "z_door_killer.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "segmented_address.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_hidan_objects/object_hidan_objects.h" #include "assets/objects/object_mizu_objects/object_mizu_objects.h" @@ -61,7 +72,7 @@ static ColliderCylinderInit sCylinderInit = { { 20, 100, 0, { 0, 0, 0 } }, }; -static ColliderJntSphElementInit sJntSphItemsInit[1] = { +static ColliderJntSphElementInit sJntSphElementsInit[1] = { { { ELEM_MATERIAL_UNK0, @@ -85,7 +96,7 @@ static ColliderJntSphInit sJntSphInit = { COLSHAPE_JNTSPH, }, 1, - sJntSphItemsInit, + sJntSphElementsInit, }; static DoorKillerTextureEntry sDoorTextures[4] = { @@ -137,7 +148,7 @@ void DoorKiller_Init(Actor* thisx, PlayState* play2) { Collider_InitCylinder(play, &this->colliderCylinder); Collider_SetCylinder(play, &this->colliderCylinder, &this->actor, &sCylinderInit); Collider_InitJntSph(play, &this->colliderJntSph); - Collider_SetJntSph(play, &this->colliderJntSph, &this->actor, &sJntSphInit, this->colliderJntSphItems); + Collider_SetJntSph(play, &this->colliderJntSph, &this->actor, &sJntSphInit, this->colliderJntSphElements); this->colliderJntSph.elements[0].dim.worldSphere.radius = 80; this->colliderJntSph.elements[0].dim.worldSphere.center.x = (s16)this->actor.world.pos.x; this->colliderJntSph.elements[0].dim.worldSphere.center.y = (s16)this->actor.world.pos.y + 50; diff --git a/src/overlays/actors/ovl_Door_Killer/z_door_killer.h b/src/overlays/actors/ovl_Door_Killer/z_door_killer.h index 597624df1e..32eaaeb014 100644 --- a/src/overlays/actors/ovl_Door_Killer/z_door_killer.h +++ b/src/overlays/actors/ovl_Door_Killer/z_door_killer.h @@ -2,7 +2,7 @@ #define Z_DOOR_KILLER_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" /* * Associated switch flag: (params >> 8) & 0x3F @@ -16,7 +16,7 @@ typedef struct DoorKillerTextureEntry { struct DoorKiller; -typedef void (*DoorKillerActionFunc)(struct DoorKiller*, PlayState*); +typedef void (*DoorKillerActionFunc)(struct DoorKiller*, struct PlayState*); typedef struct DoorKiller { /* 0x0000 */ DOOR_ACTOR_BASE; @@ -28,7 +28,7 @@ typedef struct DoorKiller { /* 0x021C */ u8 requiredObjectSlot; /* 0x021D */ u8 textureEntryIndex; /* 0x0220 */ ColliderJntSph colliderJntSph; - /* 0x0240 */ ColliderJntSphElement colliderJntSphItems[1]; + /* 0x0240 */ ColliderJntSphElement colliderJntSphElements[1]; /* 0x0280 */ DoorKillerActionFunc actionFunc; } DoorKiller; // size = 0x0284 diff --git a/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c b/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c index 0bb5e1074a..1252d7db59 100644 --- a/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c +++ b/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c @@ -6,15 +6,29 @@ #include "z_door_shutter.h" #include "overlays/actors/ovl_Boss_Goma/z_boss_goma.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "rumble.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" #include "quake.h" #include "versions.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" +#include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_gnd/object_gnd.h" #include "assets/objects/object_goma/object_goma.h" #include "assets/objects/object_ydan_objects/object_ydan_objects.h" #include "assets/objects/object_ddan_objects/object_ddan_objects.h" #include "assets/objects/object_bdan_objects/object_bdan_objects.h" -#include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_bdoor/object_bdoor.h" #include "assets/objects/object_hidan_objects/object_hidan_objects.h" #include "assets/objects/object_ganon_objects/object_ganon_objects.h" diff --git a/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.h b/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.h index 83660c5930..8ab1c8a4c7 100644 --- a/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.h +++ b/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.h @@ -2,7 +2,7 @@ #define Z_DOOR_SHUTTER_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" /** * Actor Parameters @@ -39,7 +39,7 @@ typedef enum DoorShutterType { struct DoorShutter; -typedef void (*DoorShutterActionFunc)(struct DoorShutter*, PlayState*); +typedef void (*DoorShutterActionFunc)(struct DoorShutter*, struct PlayState*); typedef struct DoorShutter { /* 0x0000 */ SLIDING_DOOR_ACTOR_BASE; diff --git a/src/overlays/actors/ovl_Door_Toki/z_door_toki.c b/src/overlays/actors/ovl_Door_Toki/z_door_toki.c index bf423a09b5..ceef1f93f6 100644 --- a/src/overlays/actors/ovl_Door_Toki/z_door_toki.c +++ b/src/overlays/actors/ovl_Door_Toki/z_door_toki.c @@ -5,6 +5,11 @@ */ #include "z_door_toki.h" + +#include "ichain.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_toki_objects/object_toki_objects.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Door_Toki/z_door_toki.h b/src/overlays/actors/ovl_Door_Toki/z_door_toki.h index 35d4d4f91c..8e276c56bd 100644 --- a/src/overlays/actors/ovl_Door_Toki/z_door_toki.h +++ b/src/overlays/actors/ovl_Door_Toki/z_door_toki.h @@ -2,7 +2,7 @@ #define Z_DOOR_TOKI_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct DoorToki; 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 eabca6816f..b75f85d3e9 100644 --- a/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c +++ b/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c @@ -1,4 +1,19 @@ #include "z_door_warp1.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "seqcmd.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64light.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_warp1/object_warp1.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.h b/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.h index b41e952e89..ff8a89d9b1 100644 --- a/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.h +++ b/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.h @@ -2,7 +2,8 @@ #define Z_DOOR_WARP1_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" +#include "z64light.h" struct DoorWarp1; @@ -31,7 +32,7 @@ typedef enum DoorWarp1RutoState { /* 5 */ WARP_BLUE_RUTO_STATE_WARPING // set by warp, after closing dialog } DoorWarp1RutoState; -typedef void (*DoorWarp1ActionFunc)(struct DoorWarp1*, PlayState*); +typedef void (*DoorWarp1ActionFunc)(struct DoorWarp1*, struct PlayState*); typedef struct DoorWarp1 { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Efc_Erupc/z_efc_erupc.c b/src/overlays/actors/ovl_Efc_Erupc/z_efc_erupc.c index ae7c4a807a..677458f186 100644 --- a/src/overlays/actors/ovl_Efc_Erupc/z_efc_erupc.c +++ b/src/overlays/actors/ovl_Efc_Erupc/z_efc_erupc.c @@ -1,4 +1,16 @@ #include "z_efc_erupc.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "sfx.h" +#include "sequence.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_efc_erupc/object_efc_erupc.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_Efc_Erupc/z_efc_erupc.h b/src/overlays/actors/ovl_Efc_Erupc/z_efc_erupc.h index 6d14c32d76..888d9580ef 100644 --- a/src/overlays/actors/ovl_Efc_Erupc/z_efc_erupc.h +++ b/src/overlays/actors/ovl_Efc_Erupc/z_efc_erupc.h @@ -2,11 +2,11 @@ #define Z_EFC_ERUPC_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EfcErupc; -typedef void (*EfcErupcActionFunc)(struct EfcErupc*, PlayState*); +typedef void (*EfcErupcActionFunc)(struct EfcErupc*, struct PlayState*); #define EFC_ERUPC_EFFECT_COUNT 100 diff --git a/src/overlays/actors/ovl_Eff_Dust/z_eff_dust.c b/src/overlays/actors/ovl_Eff_Dust/z_eff_dust.c index f23a974a32..e8f9f26841 100644 --- a/src/overlays/actors/ovl_Eff_Dust/z_eff_dust.c +++ b/src/overlays/actors/ovl_Eff_Dust/z_eff_dust.c @@ -5,6 +5,18 @@ */ #include "z_eff_dust.h" + +#include "libc64/malloc.h" +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "segmented_address.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_Eff_Dust/z_eff_dust.h b/src/overlays/actors/ovl_Eff_Dust/z_eff_dust.h index e77a8e0223..153b6d4e2a 100644 --- a/src/overlays/actors/ovl_Eff_Dust/z_eff_dust.h +++ b/src/overlays/actors/ovl_Eff_Dust/z_eff_dust.h @@ -2,12 +2,12 @@ #define Z_EFF_DUST_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EffDust; -typedef void (*EffDustActionFunc)(struct EffDust*, PlayState*); -typedef void (*EffDustDrawFunc)(Actor*, PlayState*); +typedef void (*EffDustActionFunc)(struct EffDust*, struct PlayState*); +typedef void (*EffDustDrawFunc)(Actor*, struct PlayState*); typedef struct EffDust { /* 0x0000 */ Actor actor; 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 a4ebdfb131..5165520c6d 100644 --- a/src/overlays/actors/ovl_Elf_Msg/z_elf_msg.c +++ b/src/overlays/actors/ovl_Elf_Msg/z_elf_msg.c @@ -5,8 +5,17 @@ */ #include "z_elf_msg.h" -#include "global.h" + +#include "libu64/debug.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "regs.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z64play.h" +#include "z64player.h" + #include "overlays/actors/ovl_En_Elf/z_en_elf.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Elf_Msg2/z_elf_msg2.c b/src/overlays/actors/ovl_Elf_Msg2/z_elf_msg2.c index 0f0edc34e5..562eef8a42 100644 --- a/src/overlays/actors/ovl_Elf_Msg2/z_elf_msg2.c +++ b/src/overlays/actors/ovl_Elf_Msg2/z_elf_msg2.c @@ -5,7 +5,15 @@ */ #include "z_elf_msg2.h" + +#include "libu64/debug.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "regs.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z64play.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Elf_Msg2/z_elf_msg2.h b/src/overlays/actors/ovl_Elf_Msg2/z_elf_msg2.h index 802769f2b7..5a0a693415 100644 --- a/src/overlays/actors/ovl_Elf_Msg2/z_elf_msg2.h +++ b/src/overlays/actors/ovl_Elf_Msg2/z_elf_msg2.h @@ -2,11 +2,11 @@ #define Z_ELF_MSG2_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ElfMsg2; -typedef void (*ElfMsg2ActionFunc)(struct ElfMsg2*, PlayState*); +typedef void (*ElfMsg2ActionFunc)(struct ElfMsg2*, struct PlayState*); typedef struct ElfMsg2 { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Am/z_en_am.c b/src/overlays/actors/ovl_En_Am/z_en_am.c index 6f793ba1a3..3f7649ea7e 100644 --- a/src/overlays/actors/ovl_En_Am/z_en_am.c +++ b/src/overlays/actors/ovl_En_Am/z_en_am.c @@ -5,9 +5,23 @@ */ #include "z_en_am.h" -#include "assets/objects/object_am/object_am.h" #include "overlays/actors/ovl_En_Bom/z_en_bom.h" +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + +#include "assets/objects/object_am/object_am.h" + #define FLAGS \ (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED | \ ACTOR_FLAG_CAN_PRESS_SWITCHES) diff --git a/src/overlays/actors/ovl_En_Am/z_en_am.h b/src/overlays/actors/ovl_En_Am/z_en_am.h index 8bac3338da..2903a3b6ea 100644 --- a/src/overlays/actors/ovl_En_Am/z_en_am.h +++ b/src/overlays/actors/ovl_En_Am/z_en_am.h @@ -2,11 +2,11 @@ #define Z_EN_AM_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnAm; -typedef void (*EnAmActionFunc)(struct EnAm*, PlayState*); +typedef void (*EnAmActionFunc)(struct EnAm*, struct PlayState*); typedef struct EnAm { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_En_Ani/z_en_ani.c b/src/overlays/actors/ovl_En_Ani/z_en_ani.c index 242afc095f..8bfcc38fac 100644 --- a/src/overlays/actors/ovl_En_Ani/z_en_ani.c +++ b/src/overlays/actors/ovl_En_Ani/z_en_ani.c @@ -5,6 +5,18 @@ */ #include "z_en_ani.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64face_reaction.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_ani/object_ani.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) diff --git a/src/overlays/actors/ovl_En_Ani/z_en_ani.h b/src/overlays/actors/ovl_En_Ani/z_en_ani.h index 99bad6e1cc..454a7bd8d2 100644 --- a/src/overlays/actors/ovl_En_Ani/z_en_ani.h +++ b/src/overlays/actors/ovl_En_Ani/z_en_ani.h @@ -2,11 +2,11 @@ #define Z_EN_ANI_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnAni; -typedef void (*EnAniActionFunc)(struct EnAni*, PlayState*); +typedef void (*EnAniActionFunc)(struct EnAni*, struct PlayState*); typedef struct EnAni { /* 0x0000 */ Actor actor; 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 5773eb17ba..d68f1c8502 100644 --- a/src/overlays/actors/ovl_En_Anubice/z_en_anubice.c +++ b/src/overlays/actors/ovl_En_Anubice/z_en_anubice.c @@ -5,10 +5,23 @@ */ #include "z_en_anubice.h" -#include "assets/objects/object_anubice/object_anubice.h" #include "overlays/actors/ovl_En_Anubice_Tag/z_en_anubice_tag.h" #include "overlays/actors/ovl_Bg_Hidan_Curtain/z_bg_hidan_curtain.h" + +#include "libc64/math64.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + +#include "assets/objects/object_anubice/object_anubice.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Anubice/z_en_anubice.h b/src/overlays/actors/ovl_En_Anubice/z_en_anubice.h index 5f3ec8b134..51cd02d1ef 100644 --- a/src/overlays/actors/ovl_En_Anubice/z_en_anubice.h +++ b/src/overlays/actors/ovl_En_Anubice/z_en_anubice.h @@ -2,8 +2,7 @@ #define Z_EN_ANUBICE_H #include "ultra64.h" -#include "global.h" -#include "overlays/actors/ovl_Bg_Hidan_Curtain/z_bg_hidan_curtain.h" +#include "z64actor.h" struct EnAnubice; @@ -54,7 +53,7 @@ typedef struct EnAnubice { /* 0x028C */ Vec3f fireballRot; /* 0x0298 */ Vec3f home; /* 0x02A4 */ Vec3f knockbackRecoveryVelocity; - /* 0x02B0 */ BgHidanCurtain* flameCircles[5]; + /* 0x02B0 */ struct BgHidanCurtain* flameCircles[5]; /* 0x02C4 */ char unk_2C4[0x4]; // Possibly another element of flameCircles /* 0x02C8 */ ColliderCylinder collider; } EnAnubice; // size = 0x0314 diff --git a/src/overlays/actors/ovl_En_Anubice_Fire/z_en_anubice_fire.c b/src/overlays/actors/ovl_En_Anubice_Fire/z_en_anubice_fire.c index 9e408a3350..480940dc44 100644 --- a/src/overlays/actors/ovl_En_Anubice_Fire/z_en_anubice_fire.c +++ b/src/overlays/actors/ovl_En_Anubice_Fire/z_en_anubice_fire.c @@ -5,6 +5,19 @@ */ #include "z_en_anubice_fire.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_anubice/object_anubice.h" @@ -55,8 +68,8 @@ void EnAnubiceFire_Init(Actor* thisx, PlayState* play) { EnAnubiceFire* this = (EnAnubiceFire*)thisx; s32 i; - Collider_InitCylinder(play, &this->cylinder); - Collider_SetCylinder(play, &this->cylinder, &this->actor, &sCylinderInit); + Collider_InitCylinder(play, &this->colliderCylinder); + Collider_SetCylinder(play, &this->colliderCylinder, &this->actor, &sCylinderInit); this->unk_15A = 30; this->unk_154 = 2.0f; @@ -73,7 +86,7 @@ void EnAnubiceFire_Init(Actor* thisx, PlayState* play) { void EnAnubiceFire_Destroy(Actor* thisx, PlayState* play) { EnAnubiceFire* this = (EnAnubiceFire*)thisx; - Collider_DestroyCylinder(play, &this->cylinder); + Collider_DestroyCylinder(play, &this->colliderCylinder); } void func_809B26EC(EnAnubiceFire* this, PlayState* play) { @@ -108,12 +121,12 @@ void func_809B27D8(EnAnubiceFire* this, PlayState* play) { Math_ApproachF(&this->scale, this->unk_154, 0.2f, 0.4f); if ((this->unk_15A == 0) && (this->scale < 0.1f)) { Actor_Kill(&this->actor); - } else if ((this->actor.params == 0) && (this->cylinder.base.atFlags & AT_BOUNCED)) { + } else if ((this->actor.params == 0) && (this->colliderCylinder.base.atFlags & AT_BOUNCED)) { if (Player_HasMirrorShieldEquipped(play)) { Actor_PlaySfx(&this->actor, NA_SE_IT_SHIELD_REFLECT_SW); - this->cylinder.base.atFlags &= ~(AT_HIT | AT_BOUNCED | AT_TYPE_ENEMY); - this->cylinder.base.atFlags |= AT_TYPE_PLAYER; - this->cylinder.elem.atDmgInfo.dmgFlags = DMG_DEKU_STICK; + this->colliderCylinder.base.atFlags &= ~(AT_HIT | AT_BOUNCED | AT_TYPE_ENEMY); + this->colliderCylinder.base.atFlags |= AT_TYPE_PLAYER; + this->colliderCylinder.elem.atDmgInfo.dmgFlags = DMG_DEKU_STICK; this->unk_15A = 30; this->actor.params = 1; this->actor.velocity.x *= -1.0f; @@ -195,14 +208,14 @@ void EnAnubiceFire_Update(Actor* thisx, PlayState* play) { UPDBGCHECKINFO_FLAG_0 | UPDBGCHECKINFO_FLAG_2 | UPDBGCHECKINFO_FLAG_3 | UPDBGCHECKINFO_FLAG_4); if (!(this->scale < 0.6f || this->actionFunc == func_809B2B48)) { - this->cylinder.dim.radius = this->scale * 15.0f + 5.0f; - this->cylinder.dim.height = this->scale * 15.0f + 5.0f; - this->cylinder.dim.yShift = this->scale * -0.75f + -15.0f; + this->colliderCylinder.dim.radius = this->scale * 15.0f + 5.0f; + this->colliderCylinder.dim.height = this->scale * 15.0f + 5.0f; + this->colliderCylinder.dim.yShift = this->scale * -0.75f + -15.0f; if (this->unk_15A != 0) { - Collider_UpdateCylinder(&this->actor, &this->cylinder); - CollisionCheck_SetAT(play, &play->colChkCtx, &this->cylinder.base); - CollisionCheck_SetAC(play, &play->colChkCtx, &this->cylinder.base); + Collider_UpdateCylinder(&this->actor, &this->colliderCylinder); + CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderCylinder.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderCylinder.base); } if (BgCheck_SphVsFirstPoly(&play->colCtx, &this->actor.world.pos, 30.0f)) { diff --git a/src/overlays/actors/ovl_En_Anubice_Fire/z_en_anubice_fire.h b/src/overlays/actors/ovl_En_Anubice_Fire/z_en_anubice_fire.h index 8119efa7a5..34072a43b5 100644 --- a/src/overlays/actors/ovl_En_Anubice_Fire/z_en_anubice_fire.h +++ b/src/overlays/actors/ovl_En_Anubice_Fire/z_en_anubice_fire.h @@ -2,11 +2,11 @@ #define Z_EN_ANUBICE_FIRE_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnAnubiceFire; -typedef void (*EnAnubiceFireActionFunc)(struct EnAnubiceFire*, PlayState*); +typedef void (*EnAnubiceFireActionFunc)(struct EnAnubiceFire*, struct PlayState*); typedef struct EnAnubiceFire { /* 0x0000 */ Actor actor; @@ -18,7 +18,7 @@ typedef struct EnAnubiceFire { /* 0x015C */ s16 unk_15C; /* 0x015E */ s16 unk_15E; /* 0x0178 */ Vec3f unk_160[6]; - /* 0x01A8 */ ColliderCylinder cylinder; + /* 0x01A8 */ ColliderCylinder colliderCylinder; } EnAnubiceFire; // size = 0x01F4 #endif 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 b54dc180bc..bdb3c312c0 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 @@ -5,7 +5,13 @@ */ #include "z_en_anubice_tag.h" +#include "overlays/actors/ovl_En_Anubice/z_en_anubice.h" + +#include "regs.h" #include "terminal.h" +#include "z_lib.h" +#include "z64debug_display.h" +#include "z64play.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_En_Anubice_Tag/z_en_anubice_tag.h b/src/overlays/actors/ovl_En_Anubice_Tag/z_en_anubice_tag.h index 0147b30cd5..026d4d0199 100644 --- a/src/overlays/actors/ovl_En_Anubice_Tag/z_en_anubice_tag.h +++ b/src/overlays/actors/ovl_En_Anubice_Tag/z_en_anubice_tag.h @@ -2,17 +2,16 @@ #define Z_EN_ANUBICE_TAG_H #include "ultra64.h" -#include "global.h" -#include "overlays/actors/ovl_En_Anubice/z_en_anubice.h" +#include "z64actor.h" struct EnAnubiceTag; -typedef void (*EnAnubiceTagActionFunc)(struct EnAnubiceTag*, PlayState*); +typedef void (*EnAnubiceTagActionFunc)(struct EnAnubiceTag*, struct PlayState*); typedef struct EnAnubiceTag { /* 0x0000 */ Actor actor; /* 0x014C */ EnAnubiceTagActionFunc actionFunc; - /* 0x0150 */ EnAnubice* anubis; + /* 0x0150 */ struct EnAnubice* anubis; /* 0x0154 */ f32 extraTriggerRange; } EnAnubiceTag; // size = 0x0158 diff --git a/src/overlays/actors/ovl_En_Arow_Trap/z_en_arow_trap.c b/src/overlays/actors/ovl_En_Arow_Trap/z_en_arow_trap.c index d44d380430..d4de5191ef 100644 --- a/src/overlays/actors/ovl_En_Arow_Trap/z_en_arow_trap.c +++ b/src/overlays/actors/ovl_En_Arow_Trap/z_en_arow_trap.c @@ -6,6 +6,9 @@ #include "z_en_arow_trap.h" #include "overlays/actors/ovl_En_Arrow/z_en_arrow.h" + +#include "z64play.h" + #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED void EnArowTrap_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_En_Arow_Trap/z_en_arow_trap.h b/src/overlays/actors/ovl_En_Arow_Trap/z_en_arow_trap.h index e29f84d2b2..ba91505088 100644 --- a/src/overlays/actors/ovl_En_Arow_Trap/z_en_arow_trap.h +++ b/src/overlays/actors/ovl_En_Arow_Trap/z_en_arow_trap.h @@ -2,8 +2,7 @@ #define Z_EN_AROW_TRAP_H #include "ultra64.h" -#include "global.h" -#include "z64.h" +#include "z64actor.h" struct EnArowTrap; 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 669e5ed1fb..9000417a23 100644 --- a/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c +++ b/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c @@ -5,7 +5,21 @@ */ #include "z_en_arrow.h" -#include "global.h" + +#include "libc64/qrand.h" +#include "libu64/debug.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "regs.h" +#include "sfx.h" +#include "sys_math.h" +#include "sys_math3d.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.c b/src/overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.c index d215d02cf3..4a3a32663a 100644 --- a/src/overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.c +++ b/src/overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.c @@ -5,10 +5,22 @@ */ #include "z_en_attack_niw.h" -#include "versions.h" -#include "assets/objects/object_niw/object_niw.h" #include "overlays/actors/ovl_En_Niw/z_en_niw.h" +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "sfx.h" +#include "versions.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + +#include "assets/objects/object_niw/object_niw.h" + #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED void EnAttackNiw_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.h b/src/overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.h index 381b6a2aae..a4d361542d 100644 --- a/src/overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.h +++ b/src/overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.h @@ -2,11 +2,11 @@ #define Z_EN_ATTACK_NIW_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnAttackNiw; -typedef void (*EnAttackNiwActionFunc)(struct EnAttackNiw*, PlayState*); +typedef void (*EnAttackNiwActionFunc)(struct EnAttackNiw*, struct PlayState*); typedef struct EnAttackNiw { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Ba/z_en_ba.c b/src/overlays/actors/ovl_En_Ba/z_en_ba.c index 098980836e..a149d3c63d 100644 --- a/src/overlays/actors/ovl_En_Ba/z_en_ba.c +++ b/src/overlays/actors/ovl_En_Ba/z_en_ba.c @@ -5,6 +5,20 @@ */ #include "z_en_ba.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_math.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_bxa/object_bxa.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED) @@ -37,7 +51,7 @@ ActorProfile En_Ba_Profile = { static Vec3f D_809B8080 = { 0.0f, 0.0f, 32.0f }; -static ColliderJntSphElementInit sJntSphElementInit[2] = { +static ColliderJntSphElementInit sJntSphElementsInit[2] = { { { ELEM_MATERIAL_UNK0, @@ -72,7 +86,7 @@ static ColliderJntSphInit sJntSphInit = { COLSHAPE_JNTSPH, }, 2, - sJntSphElementInit, + sJntSphElementsInit, }; void EnBa_SetupAction(EnBa* this, EnBaActionFunc actionFunc) { @@ -118,7 +132,7 @@ void EnBa_Init(Actor* thisx, PlayState* play) { this->actor.colChkInfo.health = 4; this->actor.colChkInfo.mass = MASS_HEAVY; Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderItems); + Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderElements); } else { Actor_SetScale(&this->actor, 0.021f); EnBa_SetupFallAsBlob(this); diff --git a/src/overlays/actors/ovl_En_Ba/z_en_ba.h b/src/overlays/actors/ovl_En_Ba/z_en_ba.h index f39fa33995..dc3b8cb3f6 100644 --- a/src/overlays/actors/ovl_En_Ba/z_en_ba.h +++ b/src/overlays/actors/ovl_En_Ba/z_en_ba.h @@ -2,11 +2,11 @@ #define Z_EN_BA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnBa; -typedef void (*EnBaActionFunc)(struct EnBa*, PlayState*); +typedef void (*EnBaActionFunc)(struct EnBa*, struct PlayState*); typedef enum EnBaType { /* 0x00 */ EN_BA_TENTACLE_RED, @@ -31,7 +31,7 @@ typedef struct EnBa { /* 0x031A */ s16 unk_31A; /* 0x031C */ s16 unk_31C; /* 0x0320 */ ColliderJntSph collider; - /* 0x0340 */ ColliderJntSphElement colliderItems[2]; + /* 0x0340 */ ColliderJntSphElement colliderElements[2]; } EnBa; // size = 0x03C0 #endif diff --git a/src/overlays/actors/ovl_En_Bb/z_en_bb.c b/src/overlays/actors/ovl_En_Bb/z_en_bb.c index 26af25354a..18dad81519 100644 --- a/src/overlays/actors/ovl_En_Bb/z_en_bb.c +++ b/src/overlays/actors/ovl_En_Bb/z_en_bb.c @@ -5,6 +5,22 @@ */ #include "z_en_bb.h" + +#include "libc64/qrand.h" +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_math.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_Bb/object_Bb.h" @@ -209,7 +225,7 @@ ActorProfile En_Bb_Profile = { /**/ EnBb_Draw, }; -static ColliderJntSphElementInit sJntSphElementInit[1] = { +static ColliderJntSphElementInit sJntSphElementsInit[1] = { { { ELEM_MATERIAL_UNK0, @@ -233,7 +249,7 @@ static ColliderJntSphInit sJntSphInit = { COLSHAPE_JNTSPH, }, 1, - sJntSphElementInit, + sJntSphElementsInit, }; static InitChainEntry sInitChain[] = { @@ -319,7 +335,7 @@ void EnBb_Init(Actor* thisx, PlayState* play) { this->unk_254 = 0; thisx->colChkInfo.health = 4; Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, thisx, &sJntSphInit, this->elements); + Collider_SetJntSph(play, &this->collider, thisx, &sJntSphInit, this->colliderElements); this->actionState = PARAMS_GET_NOMASK(thisx->params, 8); diff --git a/src/overlays/actors/ovl_En_Bb/z_en_bb.h b/src/overlays/actors/ovl_En_Bb/z_en_bb.h index 9908690e06..0b7e85c461 100644 --- a/src/overlays/actors/ovl_En_Bb/z_en_bb.h +++ b/src/overlays/actors/ovl_En_Bb/z_en_bb.h @@ -2,11 +2,11 @@ #define Z_EN_BB_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnBb; -typedef void (*EnBbActionFunc)(struct EnBb*, PlayState*); +typedef void (*EnBbActionFunc)(struct EnBb*, struct PlayState*); typedef struct EnBb { /* 0x0000 */ Actor actor; @@ -41,7 +41,7 @@ typedef struct EnBb { /* 0x02A8 */ s16 fireIceTimer; /* 0x02AA */ u8 dmgEffect; /* 0x02AC */ ColliderJntSph collider; - /* 0x02CC */ ColliderJntSphElement elements[1]; + /* 0x02CC */ ColliderJntSphElement colliderElements[1]; /* 0x030C */ BodyBreak bodyBreak; /* 0x0324 */ Actor* targetActor; } EnBb; // size = 0x0328 diff --git a/src/overlays/actors/ovl_En_Bdfire/z_en_bdfire.c b/src/overlays/actors/ovl_En_Bdfire/z_en_bdfire.c index 58fcf61505..d5c951d346 100644 --- a/src/overlays/actors/ovl_En_Bdfire/z_en_bdfire.c +++ b/src/overlays/actors/ovl_En_Bdfire/z_en_bdfire.c @@ -5,6 +5,19 @@ */ #include "z_en_bdfire.h" +#include "overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64light.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_kingdodongo/object_kingdodongo.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Bdfire/z_en_bdfire.h b/src/overlays/actors/ovl_En_Bdfire/z_en_bdfire.h index 93b37e3b1a..876a790d71 100644 --- a/src/overlays/actors/ovl_En_Bdfire/z_en_bdfire.h +++ b/src/overlays/actors/ovl_En_Bdfire/z_en_bdfire.h @@ -2,13 +2,13 @@ #define Z_EN_BDFIRE_H #include "ultra64.h" -#include "global.h" -#include "overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.h" +#include "z64actor.h" +#include "z64light.h" struct EnBdfire; -typedef void (*EnBdfireActionFunc)(struct EnBdfire*, PlayState*); -typedef void (*EnBdfireDrawFunc)(struct EnBdfire*, PlayState*); +typedef void (*EnBdfireActionFunc)(struct EnBdfire*, struct PlayState*); +typedef void (*EnBdfireDrawFunc)(struct EnBdfire*, struct PlayState*); typedef struct EnBdfire { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.c b/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.c index 1bb808abaf..a321a43a0e 100644 --- a/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.c +++ b/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.c @@ -1,4 +1,21 @@ #include "z_en_bigokuta.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "rumble.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_bigokuta/object_bigokuta.h" #define FLAGS \ @@ -44,7 +61,7 @@ ActorProfile En_Bigokuta_Profile = { /**/ EnBigokuta_Draw, }; -static ColliderJntSphElementInit sJntSphElementInit[1] = { +static ColliderJntSphElementInit sJntSphElementsInit[1] = { { { ELEM_MATERIAL_UNK1, @@ -67,8 +84,8 @@ static ColliderJntSphInit sJntSphInit = { OC2_TYPE_1, COLSHAPE_JNTSPH, }, - ARRAY_COUNT(sJntSphElementInit), - sJntSphElementInit, + ARRAY_COUNT(sJntSphElementsInit), + sJntSphElementsInit, }; static ColliderCylinderInit sCylinderInit[] = { @@ -165,13 +182,13 @@ void EnBigokuta_Init(Actor* thisx, PlayState* play) { this->jointTable, this->morphTable, 20); Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, &this->element); + Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderElements); this->collider.elements[0].dim.worldSphere.radius = this->collider.elements[0].dim.modelSphere.radius; for (i = 0; i < ARRAY_COUNT(sCylinderInit); i++) { - Collider_InitCylinder(play, &this->cylinder[i]); - Collider_SetCylinder(play, &this->cylinder[i], &this->actor, &sCylinderInit[i]); + Collider_InitCylinder(play, &this->colliderCylinders[i]); + Collider_SetCylinder(play, &this->colliderCylinders[i], &this->actor, &sCylinderInit[i]); } CollisionCheck_SetInfo(&this->actor.colChkInfo, &sDamageTable, sColChkInfoInit); @@ -194,8 +211,8 @@ void EnBigokuta_Destroy(Actor* thisx, PlayState* play) { s32 i; Collider_DestroyJntSph(play, &this->collider); - for (i = 0; i < ARRAY_COUNT(this->cylinder); i++) { - Collider_DestroyCylinder(play, &this->cylinder[i]); + for (i = 0; i < ARRAY_COUNT(this->colliderCylinders); i++) { + Collider_DestroyCylinder(play, &this->colliderCylinders[i]); } } @@ -307,7 +324,7 @@ void func_809BD3F8(EnBigokuta* this) { this->unk_198 = 80; this->unk_19A = this->unk_194 * -0x200; func_809BCE3C(this); - this->cylinder[0].base.atFlags |= AT_ON; + this->colliderCylinders[0].base.atFlags |= AT_ON; this->collider.base.acFlags |= AC_ON; this->actionFunc = func_809BDC08; } @@ -325,7 +342,7 @@ void func_809BD4A4(EnBigokuta* this) { this->actor.world.rot.x = this->actor.shape.rot.y + 0x8000; this->unk_19A = this->unk_194 * 0x200; this->collider.base.acFlags &= ~AC_ON; - this->cylinder[0].base.atFlags |= AT_ON; + this->colliderCylinders[0].base.atFlags |= AT_ON; this->actionFunc = func_809BDFC8; } @@ -333,7 +350,7 @@ void func_809BD524(EnBigokuta* this) { Animation_MorphToPlayOnce(&this->skelAnime, &object_bigokuta_Anim_000D1C, -5.0f); this->unk_196 = 80; this->unk_19A = 0; - this->cylinder[0].base.atFlags |= AT_ON; + this->colliderCylinders[0].base.atFlags |= AT_ON; Actor_PlaySfx(&this->actor, NA_SE_EN_DAIOCTA_MAHI); if (this->collider.elements[0].base.acHitElem->atDmgInfo.dmgFlags & DMG_DEKU_NUT) { this->unk_195 = true; @@ -350,7 +367,7 @@ void func_809BD5E0(EnBigokuta* this) { Animation_MorphToPlayOnce(&this->skelAnime, &object_bigokuta_Anim_000444, -5.0f); this->unk_196 = 24; this->unk_19A = 0; - this->cylinder[0].base.atFlags &= ~AT_ON; + this->colliderCylinders[0].base.atFlags &= ~AT_ON; Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 24); this->actionFunc = func_809BE180; } @@ -386,7 +403,7 @@ void func_809BD768(EnBigokuta* this) { this->unk_194 = Rand_ZeroOne() < 0.5f ? -1 : 1; this->unk_19A = 0; this->actor.flags &= ~ACTOR_FLAG_ATTENTION_ENABLED; - this->cylinder[0].base.atFlags &= ~AT_ON; + this->colliderCylinders[0].base.atFlags &= ~AT_ON; Actor_PlaySfx(&this->actor, NA_SE_EN_DAIOCTA_SINK); this->actionFunc = func_809BE4A4; } @@ -582,12 +599,12 @@ void func_809BE058(EnBigokuta* this, PlayState* play) { SkelAnime_Update(&this->skelAnime); - if ((this->collider.base.ocFlags1 & OC1_HIT) || (this->cylinder[0].base.ocFlags1 & OC1_HIT) || - (this->cylinder[1].base.ocFlags1 & OC1_HIT)) { + if ((this->collider.base.ocFlags1 & OC1_HIT) || (this->colliderCylinders[0].base.ocFlags1 & OC1_HIT) || + (this->colliderCylinders[1].base.ocFlags1 & OC1_HIT)) { speedXZ = CLAMP_MIN(player->actor.speed, 1.0f); if (!(this->collider.base.ocFlags1 & OC1_HIT)) { - this->cylinder[0].base.ocFlags1 &= ~OC1_HIT; - this->cylinder[1].base.ocFlags1 &= ~OC1_HIT; + this->colliderCylinders[0].base.ocFlags1 &= ~OC1_HIT; + this->colliderCylinders[1].base.ocFlags1 &= ~OC1_HIT; speedXZ *= -1.0f; } player->actor.world.pos.x -= speedXZ * Math_SinS(this->actor.shape.rot.y); @@ -705,12 +722,12 @@ void func_809BE568(EnBigokuta* this) { this->collider.elements[0].dim.worldSphere.center.y = this->actor.world.pos.y + this->collider.elements[0].dim.modelSphere.center.y; - for (i = 0; i < ARRAY_COUNT(this->cylinder); i++) { - this->cylinder[i].dim.pos.x = + for (i = 0; i < ARRAY_COUNT(this->colliderCylinders); i++) { + this->colliderCylinders[i].dim.pos.x = this->actor.world.pos.x + sCylinderInit[i].dim.pos.z * sin + sCylinderInit[i].dim.pos.x * cos; - this->cylinder[i].dim.pos.z = + this->colliderCylinders[i].dim.pos.z = this->actor.world.pos.z + sCylinderInit[i].dim.pos.z * cos - sCylinderInit[i].dim.pos.x * sin; - this->cylinder[i].dim.pos.y = this->actor.world.pos.y; + this->colliderCylinders[i].dim.pos.y = this->actor.world.pos.y; } } @@ -718,10 +735,10 @@ void func_809BE798(EnBigokuta* this, PlayState* play) { s16 effectRot; s16 yawDiff; - if ((this->cylinder[0].base.atFlags & AT_HIT) || (this->cylinder[1].base.atFlags & AT_HIT) || + if ((this->colliderCylinders[0].base.atFlags & AT_HIT) || (this->colliderCylinders[1].base.atFlags & AT_HIT) || (this->collider.base.atFlags & AT_HIT)) { - this->cylinder[0].base.atFlags &= ~AT_HIT; - this->cylinder[1].base.atFlags &= ~AT_HIT; + this->colliderCylinders[0].base.atFlags &= ~AT_HIT; + this->colliderCylinders[1].base.atFlags &= ~AT_HIT; this->collider.base.atFlags &= ~AT_HIT; yawDiff = this->actor.yawTowardsPlayer - this->actor.world.rot.y; if (yawDiff > 0x4000) { @@ -782,19 +799,19 @@ void EnBigokuta_Update(Actor* thisx, PlayState* play2) { Camera_RequestSetting(play->cameraPtrs[CAM_ID_MAIN], CAM_SET_BIG_OCTO); Camera_UnsetStateFlag(play->cameraPtrs[CAM_ID_MAIN], CAM_STATE_CHECK_BG); - if (this->cylinder[0].base.atFlags & AT_ON) { + if (this->colliderCylinders[0].base.atFlags & AT_ON) { if (this->actionFunc != func_809BE058) { - for (i = 0; i < ARRAY_COUNT(this->cylinder); i++) { - CollisionCheck_SetAT(play, &play->colChkCtx, &this->cylinder[i].base); + for (i = 0; i < ARRAY_COUNT(this->colliderCylinders); i++) { + CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderCylinders[i].base); } this->actor.flags |= ACTOR_FLAG_SFX_FOR_PLAYER_BODY_HIT; } else { - for (i = 0; i < ARRAY_COUNT(this->cylinder); i++) { - CollisionCheck_SetOC(play, &play->colChkCtx, &this->cylinder[i].base); + for (i = 0; i < ARRAY_COUNT(this->colliderCylinders); i++) { + CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderCylinders[i].base); } } - for (i = 0; i < ARRAY_COUNT(this->cylinder); i++) { - CollisionCheck_SetAC(play, &play->colChkCtx, &this->cylinder[i].base); + for (i = 0; i < ARRAY_COUNT(this->colliderCylinders); i++) { + CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderCylinders[i].base); } if (this->collider.base.acFlags & AC_ON) { CollisionCheck_SetAC(play, &play->colChkCtx, &this->collider.base); diff --git a/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.h b/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.h index fc6ca9ac7a..c04da49c86 100644 --- a/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.h +++ b/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.h @@ -2,11 +2,11 @@ #define Z_EN_BIGOKUTA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnBigokuta; -typedef void (*EnBigokutaActionFunc)(struct EnBigokuta*, PlayState*); +typedef void (*EnBigokutaActionFunc)(struct EnBigokuta*, struct PlayState*); typedef struct EnBigokuta { /* 0x0000 */ Actor actor; @@ -20,8 +20,8 @@ typedef struct EnBigokuta { /* 0x019C */ Vec3s jointTable[20]; /* 0x0214 */ Vec3s morphTable[20]; /* 0x028C */ ColliderJntSph collider; - /* 0x02AC */ ColliderJntSphElement element; - /* 0x02EC */ ColliderCylinder cylinder[2]; + /* 0x02AC */ ColliderJntSphElement colliderElements[1]; + /* 0x02EC */ ColliderCylinder colliderCylinders[2]; } EnBigokuta; // size = 0x0384 #endif diff --git a/src/overlays/actors/ovl_En_Bili/z_en_bili.c b/src/overlays/actors/ovl_En_Bili/z_en_bili.c index 8e9eba0c60..82f7b62796 100644 --- a/src/overlays/actors/ovl_En_Bili/z_en_bili.c +++ b/src/overlays/actors/ovl_En_Bili/z_en_bili.c @@ -5,7 +5,21 @@ */ #include "z_en_bili.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" #include "versions.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/object_bl/object_bl.h" #define FLAGS \ diff --git a/src/overlays/actors/ovl_En_Bili/z_en_bili.h b/src/overlays/actors/ovl_En_Bili/z_en_bili.h index 0882a288c0..3199639c9d 100644 --- a/src/overlays/actors/ovl_En_Bili/z_en_bili.h +++ b/src/overlays/actors/ovl_En_Bili/z_en_bili.h @@ -2,11 +2,11 @@ #define Z_EN_BILI_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnBili; -typedef void (*EnBiliActionFunc)(struct EnBili*, PlayState*); +typedef void (*EnBiliActionFunc)(struct EnBili*, struct PlayState*); typedef enum EnBiliLimb { /* 0 */ EN_BILI_LIMB_NONE, diff --git a/src/overlays/actors/ovl_En_Bird/z_en_bird.c b/src/overlays/actors/ovl_En_Bird/z_en_bird.c index 6ca50edeeb..c93d682ee1 100644 --- a/src/overlays/actors/ovl_En_Bird/z_en_bird.c +++ b/src/overlays/actors/ovl_En_Bird/z_en_bird.c @@ -5,6 +5,11 @@ */ #include "z_en_bird.h" + +#include "ichain.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_bird/object_bird.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_En_Bird/z_en_bird.h b/src/overlays/actors/ovl_En_Bird/z_en_bird.h index 1cc9858b13..beaf60a3d4 100644 --- a/src/overlays/actors/ovl_En_Bird/z_en_bird.h +++ b/src/overlays/actors/ovl_En_Bird/z_en_bird.h @@ -2,11 +2,11 @@ #define Z_EN_BIRD_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnBird; -typedef void (*EnBirdActionFunc)(struct EnBird*, PlayState*); +typedef void (*EnBirdActionFunc)(struct EnBird*, struct PlayState*); typedef struct EnBird { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Blkobj/z_en_blkobj.c b/src/overlays/actors/ovl_En_Blkobj/z_en_blkobj.c index 2e1141ffea..1d8d606cf3 100644 --- a/src/overlays/actors/ovl_En_Blkobj/z_en_blkobj.c +++ b/src/overlays/actors/ovl_En_Blkobj/z_en_blkobj.c @@ -5,6 +5,14 @@ */ #include "z_en_blkobj.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sys_matrix.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_blkobj/object_blkobj.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Blkobj/z_en_blkobj.h b/src/overlays/actors/ovl_En_Blkobj/z_en_blkobj.h index 4218c64664..babddb4e5d 100644 --- a/src/overlays/actors/ovl_En_Blkobj/z_en_blkobj.h +++ b/src/overlays/actors/ovl_En_Blkobj/z_en_blkobj.h @@ -2,11 +2,11 @@ #define Z_EN_BLKOBJ_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnBlkobj; -typedef void (*EnBlkobjActionFunc)(struct EnBlkobj*, PlayState*); +typedef void (*EnBlkobjActionFunc)(struct EnBlkobj*, struct PlayState*); typedef struct EnBlkobj { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_En_Bom/z_en_bom.c b/src/overlays/actors/ovl_En_Bom/z_en_bom.c index a542cbfcb0..31acad8cec 100644 --- a/src/overlays/actors/ovl_En_Bom/z_en_bom.c +++ b/src/overlays/actors/ovl_En_Bom/z_en_bom.c @@ -6,6 +6,18 @@ #include "z_en_bom.h" #include "overlays/effects/ovl_Effect_Ss_Dead_Sound/z_eff_ss_dead_sound.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rumble.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) @@ -100,8 +112,8 @@ void EnBom_Init(Actor* thisx, PlayState* play) { Collider_InitCylinder(play, &this->bombCollider); Collider_InitJntSph(play, &this->explosionCollider); Collider_SetCylinder(play, &this->bombCollider, thisx, &sCylinderInit); - Collider_SetJntSph(play, &this->explosionCollider, thisx, &sJntSphInit, &this->explosionColliderItems[0]); - this->explosionColliderItems[0].base.atDmgInfo.damage += (thisx->shape.rot.z & 0xFF00) >> 8; + Collider_SetJntSph(play, &this->explosionCollider, thisx, &sJntSphInit, &this->explosionColliderElements[0]); + this->explosionColliderElements[0].base.atDmgInfo.damage += (thisx->shape.rot.z & 0xFF00) >> 8; thisx->shape.rot.z &= 0xFF; if (thisx->shape.rot.z & 0x80) { diff --git a/src/overlays/actors/ovl_En_Bom/z_en_bom.h b/src/overlays/actors/ovl_En_Bom/z_en_bom.h index df49b0ce1e..88c8feef5c 100644 --- a/src/overlays/actors/ovl_En_Bom/z_en_bom.h +++ b/src/overlays/actors/ovl_En_Bom/z_en_bom.h @@ -2,7 +2,7 @@ #define Z_EN_BOM_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnBom; @@ -12,7 +12,7 @@ typedef struct EnBom { /* 0x0000 */ Actor actor; /* 0x014C */ ColliderCylinder bombCollider; /* 0x0198 */ ColliderJntSph explosionCollider; - /* 0x01B8 */ ColliderJntSphElement explosionColliderItems[1]; + /* 0x01B8 */ ColliderJntSphElement explosionColliderElements[1]; /* 0x01F8 */ s16 timer; /* 0x01FA */ s16 flashSpeedScale; /* 0x01FC */ f32 flashIntensity; 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 4df7b35ce3..8edeca7cf5 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 @@ -1,7 +1,19 @@ #include "z_en_bom_bowl_man.h" -#include "terminal.h" #include "overlays/actors/ovl_En_Syateki_Niw/z_en_syateki_niw.h" -#include "overlays/actors/ovl_En_Ex_Item/z_en_ex_item.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "one_point_cutscene.h" +#include "rand.h" +#include "regs.h" +#include "segmented_address.h" +#include "sfx.h" +#include "terminal.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_bg/object_bg.h" #define FLAGS \ diff --git a/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.h b/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.h index fada65b556..ffc4ae9efc 100644 --- a/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.h +++ b/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.h @@ -2,13 +2,13 @@ #define Z_EN_BOM_BOWL_MAN_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" #include "overlays/actors/ovl_En_Ex_Item/z_en_ex_item.h" #include "overlays/actors/ovl_En_Bom_Bowl_Pit/z_en_bom_bowl_pit.h" struct EnBomBowlMan; -typedef void (*EnBomBowlManActionFunc)(struct EnBomBowlMan*, PlayState*); +typedef void (*EnBomBowlManActionFunc)(struct EnBomBowlMan*, struct PlayState*); typedef struct EnBomBowlMan { /* 0x0000 */ Actor actor; 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 17657586c9..20ea5fb0db 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 @@ -1,7 +1,13 @@ #include "z_en_bom_bowl_pit.h" -#include "terminal.h" #include "overlays/actors/ovl_En_Bom_Chu/z_en_bom_chu.h" -#include "overlays/actors/ovl_En_Ex_Item/z_en_ex_item.h" + +#include "regs.h" +#include "sfx.h" +#include "terminal.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_En_Bom_Bowl_Pit/z_en_bom_bowl_pit.h b/src/overlays/actors/ovl_En_Bom_Bowl_Pit/z_en_bom_bowl_pit.h index a4e838ff49..711518848f 100644 --- a/src/overlays/actors/ovl_En_Bom_Bowl_Pit/z_en_bom_bowl_pit.h +++ b/src/overlays/actors/ovl_En_Bom_Bowl_Pit/z_en_bom_bowl_pit.h @@ -2,12 +2,12 @@ #define Z_EN_BOM_BOWL_PIT_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" #include "overlays/actors/ovl_En_Ex_Item/z_en_ex_item.h" struct EnBomBowlPit; -typedef void (*EnBomBowlPitActionFunc)(struct EnBomBowlPit*, PlayState*); +typedef void (*EnBomBowlPitActionFunc)(struct EnBomBowlPit*, struct PlayState*); typedef struct EnBomBowlPit { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Bom_Chu/z_en_bom_chu.c b/src/overlays/actors/ovl_En_Bom_Chu/z_en_bom_chu.c index 9f4263d8cd..3af6e87eca 100644 --- a/src/overlays/actors/ovl_En_Bom_Chu/z_en_bom_chu.c +++ b/src/overlays/actors/ovl_En_Bom_Chu/z_en_bom_chu.c @@ -1,5 +1,19 @@ #include "z_en_bom_chu.h" #include "overlays/actors/ovl_En_Bom/z_en_bom.h" + +#include "libc64/math64.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "sfx.h" +#include "sys_math3d.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED @@ -27,7 +41,7 @@ ActorProfile En_Bom_Chu_Profile = { /**/ EnBomChu_Draw, }; -static ColliderJntSphElementInit sJntSphElemInit[] = { +static ColliderJntSphElementInit sJntSphElementsInit[] = { { { ELEM_MATERIAL_UNK0, @@ -50,8 +64,8 @@ static ColliderJntSphInit sJntSphInit = { OC2_TYPE_2, COLSHAPE_JNTSPH, }, - ARRAY_COUNT(sJntSphElemInit), - sJntSphElemInit, + ARRAY_COUNT(sJntSphElementsInit), + sJntSphElementsInit, }; static InitChainEntry sInitChain[] = { diff --git a/src/overlays/actors/ovl_En_Bom_Chu/z_en_bom_chu.h b/src/overlays/actors/ovl_En_Bom_Chu/z_en_bom_chu.h index 7e2154a0a6..38ca8d20c6 100644 --- a/src/overlays/actors/ovl_En_Bom_Chu/z_en_bom_chu.h +++ b/src/overlays/actors/ovl_En_Bom_Chu/z_en_bom_chu.h @@ -2,11 +2,11 @@ #define Z_EN_BOM_CHU_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnBomChu; -typedef void (*EnBomChuActionFunc)(struct EnBomChu*, PlayState*); +typedef void (*EnBomChuActionFunc)(struct EnBomChu*, struct PlayState*); typedef struct EnBomChu { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Bombf/z_en_bombf.c b/src/overlays/actors/ovl_En_Bombf/z_en_bombf.c index 34dd30010e..ed1d7eed79 100644 --- a/src/overlays/actors/ovl_En_Bombf/z_en_bombf.c +++ b/src/overlays/actors/ovl_En_Bombf/z_en_bombf.c @@ -5,9 +5,22 @@ */ #include "z_en_bombf.h" -#include "assets/objects/object_bombf/object_bombf.h" #include "overlays/effects/ovl_Effect_Ss_Dead_Sound/z_eff_ss_dead_sound.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "regs.h" +#include "rumble.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + +#include "assets/objects/object_bombf/object_bombf.h" + #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_UPDATE_CULLING_DISABLED) void EnBombf_Init(Actor* thisx, PlayState* play); @@ -94,7 +107,7 @@ void EnBombf_Init(Actor* thisx, PlayState* play) { Collider_InitCylinder(play, &this->bombCollider); Collider_InitJntSph(play, &this->explosionCollider); Collider_SetCylinder(play, &this->bombCollider, thisx, &sCylinderInit); - Collider_SetJntSph(play, &this->explosionCollider, thisx, &sJntSphInit, &this->explosionColliderItems[0]); + Collider_SetJntSph(play, &this->explosionCollider, thisx, &sJntSphInit, &this->explosionColliderElements[0]); if (thisx->params == BOMBFLOWER_BODY) { shapeUnk10 = 1000.0f; diff --git a/src/overlays/actors/ovl_En_Bombf/z_en_bombf.h b/src/overlays/actors/ovl_En_Bombf/z_en_bombf.h index 14bc9c6ece..840da79c19 100644 --- a/src/overlays/actors/ovl_En_Bombf/z_en_bombf.h +++ b/src/overlays/actors/ovl_En_Bombf/z_en_bombf.h @@ -2,7 +2,7 @@ #define Z_EN_BOMBF_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnBombf; @@ -12,7 +12,7 @@ typedef struct EnBombf { /* 0x0000 */ Actor actor; /* 0x014C */ ColliderCylinder bombCollider; /* 0x0198 */ ColliderJntSph explosionCollider; - /* 0x01B8 */ ColliderJntSphElement explosionColliderItems[1]; + /* 0x01B8 */ ColliderJntSphElement explosionColliderElements[1]; /* 0x01F8 */ s16 timer; /* 0x01FC */ EnBombfActionFunc actionFunc; /* 0x0200 */ s32 isFuseEnabled; // enables the ability to ignite and tick down to explode diff --git a/src/overlays/actors/ovl_En_Boom/z_en_boom.c b/src/overlays/actors/ovl_En_Boom/z_en_boom.c index 982df71a03..b9dcbacb76 100644 --- a/src/overlays/actors/ovl_En_Boom/z_en_boom.c +++ b/src/overlays/actors/ovl_En_Boom/z_en_boom.c @@ -5,7 +5,16 @@ */ #include "z_en_boom.h" -#include "global.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Box/z_en_box.c b/src/overlays/actors/ovl_En_Box/z_en_box.c index 2d7c748b47..ac30a23d5f 100644 --- a/src/overlays/actors/ovl_En_Box/z_en_box.c +++ b/src/overlays/actors/ovl_En_Box/z_en_box.c @@ -1,6 +1,24 @@ #include "z_en_box.h" -#include "global.h" #include "overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_math3d.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64curve.h" +#include "z64effect.h" +#include "z64ocarina.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_box/object_box.h" #define FLAGS 0 @@ -171,7 +189,9 @@ void EnBox_Init(Actor* thisx, PlayState* play2) { this->dyna.actor.world.rot.y += 0x8000; this->dyna.actor.home.rot.z = this->dyna.actor.world.rot.z = this->dyna.actor.shape.rot.z = 0; - SkelAnime_Init(play, &this->skelanime, &gTreasureChestSkel, anim, this->jointTable, this->morphTable, 5); + //! @bug Flex skeleton is used as normal skeleton + SkelAnime_Init(play, &this->skelanime, (SkeletonHeader*)&gTreasureChestSkel, anim, this->jointTable, + this->morphTable, 5); Animation_Change(&this->skelanime, anim, 1.5f, animFrameStart, endFrame, ANIMMODE_ONCE, 0.0f); switch (this->type) { diff --git a/src/overlays/actors/ovl_En_Brob/z_en_brob.c b/src/overlays/actors/ovl_En_Brob/z_en_brob.c index 89edf9c5f6..436f4740c5 100644 --- a/src/overlays/actors/ovl_En_Brob/z_en_brob.c +++ b/src/overlays/actors/ovl_En_Brob/z_en_brob.c @@ -5,6 +5,15 @@ */ #include "z_en_brob.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/object_brob/object_brob.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE) diff --git a/src/overlays/actors/ovl_En_Brob/z_en_brob.h b/src/overlays/actors/ovl_En_Brob/z_en_brob.h index a3dd0c8f8a..02516f4e9b 100644 --- a/src/overlays/actors/ovl_En_Brob/z_en_brob.h +++ b/src/overlays/actors/ovl_En_Brob/z_en_brob.h @@ -2,11 +2,11 @@ #define Z_EN_BROB_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnBrob; -typedef void (*EnBrobActionFunc)(struct EnBrob* this, PlayState* play); +typedef void (*EnBrobActionFunc)(struct EnBrob* this, struct PlayState* play); typedef struct EnBrob { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_En_Bubble/z_en_bubble.c b/src/overlays/actors/ovl_En_Bubble/z_en_bubble.c index 466ebfce65..79860d7f7f 100644 --- a/src/overlays/actors/ovl_En_Bubble/z_en_bubble.c +++ b/src/overlays/actors/ovl_En_Bubble/z_en_bubble.c @@ -1,4 +1,16 @@ #include "z_en_bubble.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sfx.h" +#include "sys_math3d.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/object_bubble/object_bubble.h" #define FLAGS ACTOR_FLAG_ATTENTION_ENABLED @@ -95,7 +107,7 @@ void EnBubble_SetDimensions(EnBubble* this, f32 dim) { } u32 func_809CBCBC(EnBubble* this) { - ColliderElement* elem = &this->colliderSphere.elements[0].base; + ColliderElement* elem = &this->colliderJntSph.elements[0].base; elem->atDmgInfo.dmgFlags = DMG_EXPLOSIVE; elem->atDmgInfo.effect = 0; @@ -112,7 +124,7 @@ u32 func_809CBCEC(EnBubble* this) { } void EnBubble_DamagePlayer(EnBubble* this, PlayState* play) { - s32 damage = -this->colliderSphere.elements[0].base.atDmgInfo.damage; + s32 damage = -this->colliderJntSph.elements[0].base.atDmgInfo.damage; play->damagePlayer(play, damage); Actor_SetPlayerKnockbackSmallNoDamage(play, &this->actor, 6.0f, this->actor.yawTowardsPlayer, 6.0f); @@ -206,8 +218,8 @@ void EnBubble_Fly(EnBubble* this, PlayState* play) { s32 bgId; u8 bounceCount; - if (this->colliderSphere.elements[1].base.acElemFlags & ACELEM_HIT) { - attackerActor = this->colliderSphere.base.ac; + if (this->colliderJntSph.elements[1].base.acElemFlags & ACELEM_HIT) { + attackerActor = this->colliderJntSph.base.ac; this->normalizedAttackerVelocity = attackerActor->velocity; EnBubble_Vec3fNormalize(&this->normalizedAttackerVelocity); this->velocityFromAttack.x += (this->normalizedAttackerVelocity.x * 3.0f); @@ -280,14 +292,14 @@ void EnBubble_Fly(EnBubble* this, PlayState* play) { } u32 func_809CC648(EnBubble* this) { - if (((this->colliderSphere.base.acFlags & AC_HIT) != 0) == false) { + if (((this->colliderJntSph.base.acFlags & AC_HIT) != 0) == false) { return false; } - this->colliderSphere.base.acFlags &= ~AC_HIT; - if (this->colliderSphere.elements[1].base.acElemFlags & ACELEM_HIT) { - this->unk_1F0.x = this->colliderSphere.base.ac->velocity.x / 10.0f; - this->unk_1F0.y = this->colliderSphere.base.ac->velocity.y / 10.0f; - this->unk_1F0.z = this->colliderSphere.base.ac->velocity.z / 10.0f; + this->colliderJntSph.base.acFlags &= ~AC_HIT; + if (this->colliderJntSph.elements[1].base.acElemFlags & ACELEM_HIT) { + this->unk_1F0.x = this->colliderJntSph.base.ac->velocity.x / 10.0f; + this->unk_1F0.y = this->colliderJntSph.base.ac->velocity.y / 10.0f; + this->unk_1F0.z = this->colliderJntSph.base.ac->velocity.z / 10.0f; this->graphicRotSpeed = 128.0f; this->graphicEccentricity = 0.48f; return false; @@ -300,8 +312,8 @@ u32 EnBubble_DetectPop(EnBubble* this, PlayState* play) { if (DECR(this->unk_208) != 0 || this->actionFunc == EnBubble_Pop) { return false; } - if (this->colliderSphere.base.ocFlags2 & OC2_HIT_PLAYER) { - this->colliderSphere.base.ocFlags2 &= ~OC2_HIT_PLAYER; + if (this->colliderJntSph.base.ocFlags2 & OC2_HIT_PLAYER) { + this->colliderJntSph.base.ocFlags2 &= ~OC2_HIT_PLAYER; EnBubble_DamagePlayer(this, play); this->unk_208 = 8; return true; @@ -314,7 +326,7 @@ void func_809CC774(EnBubble* this) { Vec3f src; Vec3f dest; - dim = &this->colliderSphere.elements[0].dim; + dim = &this->colliderJntSph.elements[0].dim; src.x = dim->modelSphere.center.x; src.y = dim->modelSphere.center.y; src.z = dim->modelSphere.center.z; @@ -324,7 +336,7 @@ void func_809CC774(EnBubble* this) { dim->worldSphere.center.y = dest.y; dim->worldSphere.center.z = dest.z; dim->worldSphere.radius = dim->modelSphere.radius * (1.0f + this->expansionWidth); - this->colliderSphere.elements[1].dim = *dim; + this->colliderJntSph.elements[1].dim = *dim; } void EnBubble_Init(Actor* thisx, PlayState* play) { @@ -332,8 +344,8 @@ void EnBubble_Init(Actor* thisx, PlayState* play) { u32 pad; ActorShape_Init(&this->actor.shape, 16.0f, ActorShadow_DrawCircle, 0.2f); - Collider_InitJntSph(play, &this->colliderSphere); - Collider_SetJntSph(play, &this->colliderSphere, &this->actor, &sJntSphInit, this->colliderSphereItems); + Collider_InitJntSph(play, &this->colliderJntSph); + Collider_SetJntSph(play, &this->colliderJntSph, &this->actor, &sJntSphInit, this->colliderJntSphElements); CollisionCheck_SetInfo2(&this->actor.colChkInfo, DamageTable_Get(9), &sColChkInfoInit2); this->actor.naviEnemyId = NAVI_ENEMY_SHABOM; this->bounceDirection.x = Rand_ZeroOne(); @@ -350,7 +362,7 @@ void EnBubble_Init(Actor* thisx, PlayState* play) { void EnBubble_Destroy(Actor* thisx, PlayState* play) { EnBubble* this = (EnBubble*)thisx; - Collider_DestroyJntSph(play, &this->colliderSphere); + Collider_DestroyJntSph(play, &this->colliderJntSph); } void EnBubble_Wait(EnBubble* this, PlayState* play) { @@ -360,8 +372,8 @@ void EnBubble_Wait(EnBubble* this, PlayState* play) { } else { EnBubble_Fly(this, play); this->actor.shape.yOffset = ((this->expansionHeight + 1.0f) * 16.0f); - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderSphere.base); - CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderSphere.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderJntSph.base); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderJntSph.base); } } @@ -389,8 +401,8 @@ void EnBubble_Regrow(EnBubble* this, PlayState* play) { if (func_809CC020(this)) { this->actionFunc = EnBubble_Wait; } - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderSphere.base); - CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderSphere.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderJntSph.base); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderJntSph.base); } void EnBubble_Update(Actor* thisx, PlayState* play) { diff --git a/src/overlays/actors/ovl_En_Bubble/z_en_bubble.h b/src/overlays/actors/ovl_En_Bubble/z_en_bubble.h index d753768811..9b183ae2bc 100644 --- a/src/overlays/actors/ovl_En_Bubble/z_en_bubble.h +++ b/src/overlays/actors/ovl_En_Bubble/z_en_bubble.h @@ -2,17 +2,17 @@ #define Z_EN_BUBBLE_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnBubble; -typedef void (*EnBubbleActionFunc)(struct EnBubble*, PlayState*); +typedef void (*EnBubbleActionFunc)(struct EnBubble*, struct PlayState*); typedef struct EnBubble { /* 0x0000 */ Actor actor; /* 0x014C */ EnBubbleActionFunc actionFunc; - /* 0x0150 */ ColliderJntSph colliderSphere; - /* 0x0170 */ ColliderJntSphElement colliderSphereItems[2]; + /* 0x0150 */ ColliderJntSph colliderJntSph; + /* 0x0170 */ ColliderJntSphElement colliderJntSphElements[2]; /* 0x01F0 */ Vec3f unk_1F0; // set but never used /* 0x01FC */ Vec3f unk_1FC; // randomly generated, set but never used /* 0x0208 */ s16 unk_208; // set to 8 when about to pop 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 b3deb35f9e..cd9776b988 100644 --- a/src/overlays/actors/ovl_En_Butte/z_en_butte.c +++ b/src/overlays/actors/ovl_En_Butte/z_en_butte.c @@ -6,6 +6,19 @@ #include "z_en_butte.h" #include "overlays/actors/ovl_En_Elf/z_en_elf.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_math3d.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/gameplay_field_keep/gameplay_field_keep.h" @@ -159,7 +172,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->colliderItems); + Collider_SetJntSph(play, &this->collider, &this->actor, &sColliderInit, this->colliderElements); this->actor.colChkInfo.mass = 0; this->unk_25C = Rand_ZeroOne() * 0xFFFF; this->unk_25E = Rand_ZeroOne() * 0xFFFF; diff --git a/src/overlays/actors/ovl_En_Butte/z_en_butte.h b/src/overlays/actors/ovl_En_Butte/z_en_butte.h index 1a34747dbd..1a1764520c 100644 --- a/src/overlays/actors/ovl_En_Butte/z_en_butte.h +++ b/src/overlays/actors/ovl_En_Butte/z_en_butte.h @@ -2,16 +2,16 @@ #define Z_EN_BUTTE_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnButte; -typedef void (*EnButteActionFunc)(struct EnButte*, PlayState*); +typedef void (*EnButteActionFunc)(struct EnButte*, struct PlayState*); typedef struct EnButte { /* 0x0000 */ Actor actor; /* 0x014C */ ColliderJntSph collider; - /* 0x016C */ ColliderJntSphElement colliderItems[1]; + /* 0x016C */ ColliderJntSphElement colliderElements[1]; /* 0x01AC */ SkelAnime skelAnime; /* 0x01F0 */ Vec3s jointTable[8]; /* 0x0220 */ Vec3s morphTable[8]; diff --git a/src/overlays/actors/ovl_En_Bw/z_en_bw.c b/src/overlays/actors/ovl_En_Bw/z_en_bw.c index 6ab5fd6fcf..0aad9cccae 100644 --- a/src/overlays/actors/ovl_En_Bw/z_en_bw.c +++ b/src/overlays/actors/ovl_En_Bw/z_en_bw.c @@ -5,7 +5,24 @@ */ #include "z_en_bw.h" + +#include "libc64/math64.h" +#include "libc64/qrand.h" +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_math.h" +#include "sys_matrix.h" #include "versions.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_bw/object_bw.h" diff --git a/src/overlays/actors/ovl_En_Bw/z_en_bw.h b/src/overlays/actors/ovl_En_Bw/z_en_bw.h index 5f74f70c4d..7c0698d22c 100644 --- a/src/overlays/actors/ovl_En_Bw/z_en_bw.h +++ b/src/overlays/actors/ovl_En_Bw/z_en_bw.h @@ -2,10 +2,10 @@ #define Z_EN_BW_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnBw; -typedef void (*EnBwActionFunc)(struct EnBw*, PlayState*); +typedef void (*EnBwActionFunc)(struct EnBw*, struct PlayState*); typedef enum TorchSlugLimb { /* 0 */ TORCH_SLUG_LIMB_NONE, diff --git a/src/overlays/actors/ovl_En_Bx/z_en_bx.c b/src/overlays/actors/ovl_En_Bx/z_en_bx.c index efc4d4f5cf..51896cbb7d 100644 --- a/src/overlays/actors/ovl_En_Bx/z_en_bx.c +++ b/src/overlays/actors/ovl_En_Bx/z_en_bx.c @@ -5,6 +5,19 @@ */ #include "z_en_bx.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_bxa/object_bxa.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_En_Bx/z_en_bx.h b/src/overlays/actors/ovl_En_Bx/z_en_bx.h index 189349a0f1..077def413d 100644 --- a/src/overlays/actors/ovl_En_Bx/z_en_bx.h +++ b/src/overlays/actors/ovl_En_Bx/z_en_bx.h @@ -2,7 +2,7 @@ #define Z_EN_BX_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnBx; 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 60594097ce..d6f0ab74e0 100644 --- a/src/overlays/actors/ovl_En_Changer/z_en_changer.c +++ b/src/overlays/actors/ovl_En_Changer/z_en_changer.c @@ -5,9 +5,16 @@ */ #include "z_en_changer.h" -#include "terminal.h" -#include "overlays/actors/ovl_Item_Etcetera/z_item_etcetera.h" +#include "overlays/actors/ovl_En_Box/z_en_box.h" #include "overlays/actors/ovl_En_Ex_Item/z_en_ex_item.h" +#include "overlays/actors/ovl_Item_Etcetera/z_item_etcetera.h" + +#include "rand.h" +#include "regs.h" +#include "terminal.h" +#include "z64debug_display.h" +#include "z64play.h" +#include "z64save.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_En_Changer/z_en_changer.h b/src/overlays/actors/ovl_En_Changer/z_en_changer.h index 75281b2343..6807287787 100644 --- a/src/overlays/actors/ovl_En_Changer/z_en_changer.h +++ b/src/overlays/actors/ovl_En_Changer/z_en_changer.h @@ -2,19 +2,18 @@ #define Z_EN_CHANGER_H #include "ultra64.h" -#include "global.h" -#include "overlays/actors/ovl_En_Box/z_en_box.h" +#include "z64actor.h" struct EnChanger; -typedef void (*EnChangerActionFunc)(struct EnChanger*, PlayState*); +typedef void (*EnChangerActionFunc)(struct EnChanger*, struct PlayState*); typedef struct EnChanger { /* 0x0000 */ Actor actor; /* 0x014C */ EnChangerActionFunc actionFunc; - /* 0x0150 */ EnBox* leftChest; - /* 0x0154 */ EnBox* rightChest; - /* 0x0158 */ EnBox* finalChest; + /* 0x0150 */ struct EnBox* leftChest; + /* 0x0154 */ struct EnBox* rightChest; + /* 0x0158 */ struct EnBox* finalChest; /* 0x015C */ s16 leftChestNum; /* 0x015E */ s16 rightChestNum; /* 0x0160 */ s16 leftChestGetItemId; diff --git a/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.c b/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.c index c6cf2c7ad3..619630cf7b 100644 --- a/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.c +++ b/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.c @@ -1,5 +1,17 @@ #include "z_en_clear_tag.h" +#include "libc64/math64.h" +#include "libc64/qrand.h" +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" + #define FLAGS \ (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED | \ ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.h b/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.h index 945a5462d6..6978941868 100644 --- a/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.h +++ b/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.h @@ -2,7 +2,7 @@ #define Z_EN_CLEAR_TAG_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnClearTag; diff --git a/src/overlays/actors/ovl_En_Cow/z_en_cow.c b/src/overlays/actors/ovl_En_Cow/z_en_cow.c index 30d16077f5..d459c93f6f 100644 --- a/src/overlays/actors/ovl_En_Cow/z_en_cow.c +++ b/src/overlays/actors/ovl_En_Cow/z_en_cow.c @@ -6,6 +6,18 @@ #include "z_en_cow.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "regs.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64ocarina.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) void EnCow_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_En_Cow/z_en_cow.h b/src/overlays/actors/ovl_En_Cow/z_en_cow.h index cdec79fca8..e5602967e1 100644 --- a/src/overlays/actors/ovl_En_Cow/z_en_cow.h +++ b/src/overlays/actors/ovl_En_Cow/z_en_cow.h @@ -2,7 +2,7 @@ #define Z_EN_COW_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" #include "assets/objects/object_cow/object_cow.h" #define COW_FLAG_PLAYER_NEARBY (1 << 1) @@ -23,7 +23,7 @@ typedef enum CowCollider { struct EnCow; -typedef void (*EnCowActionFunc)(struct EnCow*, PlayState*); +typedef void (*EnCowActionFunc)(struct EnCow*, struct PlayState*); typedef struct EnCow { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Crow/z_en_crow.c b/src/overlays/actors/ovl_En_Crow/z_en_crow.c index a2533df3d5..3ce86ff9d3 100644 --- a/src/overlays/actors/ovl_En_Crow/z_en_crow.c +++ b/src/overlays/actors/ovl_En_Crow/z_en_crow.c @@ -1,4 +1,16 @@ #include "z_en_crow.h" + +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_crow/object_crow.h" #define FLAGS \ @@ -112,7 +124,7 @@ void EnCrow_Init(Actor* thisx, PlayState* play) { Actor_ProcessInitChain(&this->actor, sInitChain); SkelAnime_InitFlex(play, &this->skelAnime, &gGuaySkel, &gGuayFlyAnim, this->jointTable, this->morphTable, 9); Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderItems); + Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderElements); this->collider.elements[0].dim.worldSphere.radius = sJntSphInit.elements[0].dim.modelSphere.radius; CollisionCheck_SetInfo(&this->actor.colChkInfo, &sDamageTable, &sColChkInfoInit); ActorShape_Init(&this->actor.shape, 2000.0f, ActorShadow_DrawCircle, 20.0f); diff --git a/src/overlays/actors/ovl_En_Crow/z_en_crow.h b/src/overlays/actors/ovl_En_Crow/z_en_crow.h index 87e9ae0542..fb13e7bca6 100644 --- a/src/overlays/actors/ovl_En_Crow/z_en_crow.h +++ b/src/overlays/actors/ovl_En_Crow/z_en_crow.h @@ -2,11 +2,11 @@ #define Z_EN_CROW_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnCrow; -typedef void (*EnCrowActionFunc)(struct EnCrow*, PlayState*); +typedef void (*EnCrowActionFunc)(struct EnCrow*, struct PlayState*); typedef struct EnCrow { /* 0x0000 */ Actor actor; @@ -19,7 +19,7 @@ typedef struct EnCrow { /* 0x01CA */ Vec3s jointTable[9]; /* 0x0200 */ Vec3s morphTable[9]; /* 0x0238 */ ColliderJntSph collider; - /* 0x0258 */ ColliderJntSphElement colliderItems[1]; + /* 0x0258 */ ColliderJntSphElement colliderElements[1]; } EnCrow; // size = 0x0298 #endif diff --git a/src/overlays/actors/ovl_En_Cs/z_en_cs.c b/src/overlays/actors/ovl_En_Cs/z_en_cs.c index 807abac5ec..8b74a6063e 100644 --- a/src/overlays/actors/ovl_En_Cs/z_en_cs.c +++ b/src/overlays/actors/ovl_En_Cs/z_en_cs.c @@ -1,4 +1,18 @@ #include "z_en_cs.h" + +#include "libc64/math64.h" +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64face_reaction.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_cs/object_cs.h" #include "assets/objects/object_link_child/object_link_child.h" diff --git a/src/overlays/actors/ovl_En_Cs/z_en_cs.h b/src/overlays/actors/ovl_En_Cs/z_en_cs.h index 843c8ad510..8e1d665f54 100644 --- a/src/overlays/actors/ovl_En_Cs/z_en_cs.h +++ b/src/overlays/actors/ovl_En_Cs/z_en_cs.h @@ -2,11 +2,11 @@ #define Z_EN_CS_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnCs; -typedef void (*EnCsActionFunc)(struct EnCs*, PlayState*); +typedef void (*EnCsActionFunc)(struct EnCs*, struct PlayState*); typedef struct EnCs { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c b/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c index 64b3cc1088..98a09bb25e 100644 --- a/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c +++ b/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c @@ -1,10 +1,27 @@ #include "z_en_daiku.h" #include "overlays/actors/ovl_En_GeldB/z_en_geldb.h" + +#include "libc64/math64.h" +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_daiku/object_daiku.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED) #define ENDAIKU_GET_TYPE(thisx) PARAMS_GET_U((thisx)->params, 0, 2) +#define ENDAIKU_GET_PATH_INDEX(thisx) PARAMS_GET_U((thisx)->params, 4, 4) +#define ENDAIKU_GET_DOOR_SWITCH_FLAG(thisx) PARAMS_GET_U((thisx)->params, 8, 6) typedef struct EnDaikuEscapeSubCamParam { Vec3f eyePosDeltaLocal; @@ -13,10 +30,10 @@ typedef struct EnDaikuEscapeSubCamParam { // state flags -// probably related to animating torso and head to look towards the player -#define ENDAIKU_STATEFLAG_1 (1 << 1) -// same -#define ENDAIKU_STATEFLAG_2 (1 << 2) +// the carpenter tracks the player position +#define ENDAIKU_STATEFLAG_TRACK_PLAYER (1 << 1) +// if tracking the player, track with the carpenter's full body +#define ENDAIKU_STATEFLAG_TRACK_WITH_FULL_BODY (1 << 2) // the gerudo guard appeared (after talking to the carpenter) #define ENDAIKU_STATEFLAG_GERUDOFIGHTING (1 << 3) // the gerudo guard was defeated @@ -121,9 +138,9 @@ typedef enum EnDaikuAnimation { } EnDaikuAnimation; static AnimationFrameCountInfo sAnimationInfo[] = { - { &object_daiku_Anim_001AB0, 1.0f, 0, 0 }, { &object_daiku_Anim_007DE0, 1.0f, 0, 0 }, - { &object_daiku_Anim_00885C, 1.0f, 0, 0 }, { &object_daiku_Anim_000C44, 1.0f, 0, 0 }, - { &object_daiku_Anim_008164, 1.0f, 0, 0 }, + { &object_daiku_Anim_001AB0, 1.0f, ANIMMODE_LOOP, 0 }, { &object_daiku_Anim_007DE0, 1.0f, ANIMMODE_LOOP, 0 }, + { &object_daiku_Anim_00885C, 1.0f, ANIMMODE_LOOP, 0 }, { &object_daiku_Anim_000C44, 1.0f, ANIMMODE_LOOP, 0 }, + { &object_daiku_Anim_008164, 1.0f, ANIMMODE_LOOP, 0 }, }; static EnDaikuEscapeSubCamParam sEscapeSubCamParams[] = { @@ -199,15 +216,15 @@ void EnDaiku_Init(Actor* thisx, PlayState* play) { if (play->sceneId == SCENE_THIEVES_HIDEOUT) { EnDaiku_ChangeAnim(this, ENDAIKU_ANIM_STAND, &this->currentAnimIndex); - this->stateFlags |= ENDAIKU_STATEFLAG_1 | ENDAIKU_STATEFLAG_2; + this->stateFlags |= ENDAIKU_STATEFLAG_TRACK_PLAYER | ENDAIKU_STATEFLAG_TRACK_WITH_FULL_BODY; this->actionFunc = EnDaiku_Jailed; } else { if (ENDAIKU_GET_TYPE(&this->actor) == ENDAIKU_TYPE1 || ENDAIKU_GET_TYPE(&this->actor) == ENDAIKU_TYPE3) { EnDaiku_ChangeAnim(this, ENDAIKU_ANIM_SIT, &this->currentAnimIndex); - this->stateFlags |= ENDAIKU_STATEFLAG_1; + this->stateFlags |= ENDAIKU_STATEFLAG_TRACK_PLAYER; } else { EnDaiku_ChangeAnim(this, ENDAIKU_ANIM_SHOUT, &this->currentAnimIndex); - this->stateFlags |= ENDAIKU_STATEFLAG_1 | ENDAIKU_STATEFLAG_2; + this->stateFlags |= ENDAIKU_STATEFLAG_TRACK_PLAYER | ENDAIKU_STATEFLAG_TRACK_WITH_FULL_BODY; } this->skelAnime.curFrame = (s32)(Rand_ZeroOne() * this->skelAnime.endFrame); @@ -257,17 +274,17 @@ s32 EnDaiku_UpdateTalking(EnDaiku* this, PlayState* play) { void EnDaiku_UpdateText(EnDaiku* this, PlayState* play) { s32 carpenterType; s32 rescuedCount; - s16 sp2E; - s16 sp2C; + s16 screenX; + s16 screenY; if (this->talkState == ENDAIKU_STATE_TALKING) { this->talkState = EnDaiku_UpdateTalking(this, play); } else if (Actor_TalkOfferAccepted(&this->actor, play)) { this->talkState = ENDAIKU_STATE_TALKING; } else { - Actor_GetScreenPos(play, &this->actor, &sp2E, &sp2C); - if (sp2E >= 0 && sp2E <= 320 && sp2C >= 0 && sp2C <= 240 && this->talkState == ENDAIKU_STATE_CAN_TALK && - Actor_OfferTalk(&this->actor, play, 100.0f) == 1) { + Actor_GetScreenPos(play, &this->actor, &screenX, &screenY); + if ((screenX >= 0) && (screenX <= SCREEN_WIDTH) && (screenY >= 0) && (screenY <= SCREEN_HEIGHT) && + (this->talkState == ENDAIKU_STATE_CAN_TALK) && (Actor_OfferTalk(&this->actor, play, 100.0f) == true)) { if (play->sceneId == SCENE_THIEVES_HIDEOUT) { if (this->stateFlags & ENDAIKU_STATEFLAG_GERUDODEFEATED) { rescuedCount = 0; @@ -352,8 +369,6 @@ void EnDaiku_TentIdle(EnDaiku* this, PlayState* play) { */ void EnDaiku_Jailed(EnDaiku* this, PlayState* play) { EnGeldB* gerudo; - s32 temp_t9; - s32 temp_v1; if (!(this->stateFlags & ENDAIKU_STATEFLAG_GERUDOFIGHTING)) { EnDaiku_UpdateText(this, play); @@ -379,7 +394,7 @@ void EnDaiku_Jailed(EnDaiku* this, PlayState* play) { void EnDaiku_WaitFreedom(EnDaiku* this, PlayState* play) { SkelAnime_Update(&this->skelAnime); - if (Flags_GetSwitch(play, PARAMS_GET_U(this->actor.params, 8, 6))) { + if (Flags_GetSwitch(play, ENDAIKU_GET_DOOR_SWITCH_FLAG(&this->actor))) { this->actor.flags |= ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY; EnDaiku_UpdateText(this, play); } @@ -398,7 +413,7 @@ void EnDaiku_InitEscape(EnDaiku* this, PlayState* play) { Audio_PlayFanfare(NA_BGM_APPEAR); EnDaiku_ChangeAnim(this, ENDAIKU_ANIM_RUN, &this->currentAnimIndex); - this->stateFlags &= ~(ENDAIKU_STATEFLAG_1 | ENDAIKU_STATEFLAG_2); + this->stateFlags &= ~(ENDAIKU_STATEFLAG_TRACK_PLAYER | ENDAIKU_STATEFLAG_TRACK_WITH_FULL_BODY); ENDAIKU_SET_CARPENTER_RESCUED(ENDAIKU_GET_TYPE(&this->actor)); @@ -407,7 +422,7 @@ void EnDaiku_InitEscape(EnDaiku* this, PlayState* play) { EnDaiku_InitSubCamera(this, play); exitLoop = false; - path = &play->pathList[PARAMS_GET_U(this->actor.params, 4, 4)]; + path = &play->pathList[ENDAIKU_GET_PATH_INDEX(&this->actor)]; while (!exitLoop) { pointPos = (Vec3s*)SEGMENTED_TO_VIRTUAL(path->points) + this->waypoint; dx = pointPos->x - this->actor.world.pos.x; @@ -524,7 +539,7 @@ void EnDaiku_EscapeRun(EnDaiku* this, PlayState* play) { f32 dxz; Vec3s* pointPos; - path = &play->pathList[PARAMS_GET_U(this->actor.params, 4, 4)]; + path = &play->pathList[ENDAIKU_GET_PATH_INDEX(&this->actor)]; pointPos = (Vec3s*)SEGMENTED_TO_VIRTUAL(path->points) + this->waypoint; dx = pointPos->x - this->actor.world.pos.x; dz = pointPos->z - this->actor.world.pos.z; @@ -574,12 +589,12 @@ void EnDaiku_Update(Actor* thisx, PlayState* play) { this->actionFunc(this, play); - if (this->stateFlags & ENDAIKU_STATEFLAG_1) { + if (this->stateFlags & ENDAIKU_STATEFLAG_TRACK_PLAYER) { this->interactInfo.trackPos.x = player->actor.focus.pos.x; this->interactInfo.trackPos.y = player->actor.focus.pos.y; this->interactInfo.trackPos.z = player->actor.focus.pos.z; - if (this->stateFlags & ENDAIKU_STATEFLAG_2) { + if (this->stateFlags & ENDAIKU_STATEFLAG_TRACK_WITH_FULL_BODY) { Npc_TrackPoint(&this->actor, &this->interactInfo, 0, NPC_TRACKING_FULL_BODY); } else { Npc_TrackPoint(&this->actor, &this->interactInfo, 0, NPC_TRACKING_HEAD_AND_TORSO); diff --git a/src/overlays/actors/ovl_En_Daiku/z_en_daiku.h b/src/overlays/actors/ovl_En_Daiku/z_en_daiku.h index 69136f6a92..b191c1d79f 100644 --- a/src/overlays/actors/ovl_En_Daiku/z_en_daiku.h +++ b/src/overlays/actors/ovl_En_Daiku/z_en_daiku.h @@ -2,11 +2,11 @@ #define Z_EN_DAIKU_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnDaiku; -typedef void (*EnDaikuActionFunc)(struct EnDaiku*, PlayState*); +typedef void (*EnDaikuActionFunc)(struct EnDaiku*, struct PlayState*); typedef enum EnDaikuType { ENDAIKU_TYPE0, diff --git a/src/overlays/actors/ovl_En_Daiku_Kakariko/z_en_daiku_kakariko.c b/src/overlays/actors/ovl_En_Daiku_Kakariko/z_en_daiku_kakariko.c index 6b27191f79..c5eb8ff56b 100644 --- a/src/overlays/actors/ovl_En_Daiku_Kakariko/z_en_daiku_kakariko.c +++ b/src/overlays/actors/ovl_En_Daiku_Kakariko/z_en_daiku_kakariko.c @@ -5,10 +5,27 @@ */ #include "z_en_daiku_kakariko.h" + +#include "libc64/math64.h" +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64face_reaction.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_daiku/object_daiku.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED) +#define ENDAIKUKAKARIKO_GET_TYPE(thisx) PARAMS_GET_U((thisx)->params, 0, 2) +#define ENDAIKUKAKARIKO_GET_PATH_INDEX(thisx) PARAMS_GET_U((thisx)->params, 8, 8) + typedef enum KakarikoCarpenterType { /* 0x0 */ CARPENTER_ICHIRO, // Red and purple pants, normal hair /* 0x1 */ CARPENTER_SABOORO, // Light blue pants @@ -103,9 +120,12 @@ typedef enum EnDaikuKakarikoAnimation { } EnDaikuKakarikoAnimation; static AnimationFrameCountInfo sAnimationInfo[] = { - { &object_daiku_Anim_001AB0, 1.0f, 2, -7.0f }, { &object_daiku_Anim_007DE0, 1.0f, 0, -7.0f }, - { &object_daiku_Anim_00885C, 1.0f, 0, -7.0f }, { &object_daiku_Anim_000C44, 1.0f, 0, -7.0f }, - { &object_daiku_Anim_000600, 1.0f, 0, -7.0f }, { &object_daiku_Anim_008164, 1.0f, 0, -7.0f }, + { &object_daiku_Anim_001AB0, 1.0f, ANIMMODE_ONCE, -7.0f }, + { &object_daiku_Anim_007DE0, 1.0f, ANIMMODE_LOOP, -7.0f }, + { &object_daiku_Anim_00885C, 1.0f, ANIMMODE_LOOP, -7.0f }, + { &object_daiku_Anim_000C44, 1.0f, ANIMMODE_LOOP, -7.0f }, + { &object_daiku_Anim_000600, 1.0f, ANIMMODE_LOOP, -7.0f }, + { &object_daiku_Anim_008164, 1.0f, ANIMMODE_LOOP, -7.0f }, }; void EnDaikuKakariko_ChangeAnim(EnDaikuKakariko* this, s32 index, s32* currentIndex) { @@ -133,7 +153,7 @@ void EnDaikuKakariko_Init(Actor* thisx, PlayState* play) { case SCENE_KAKARIKO_VILLAGE: if (IS_DAY) { this->flags |= 1; - this->flags |= initFlags[PARAMS_GET_U(this->actor.params, 0, 2)]; + this->flags |= initFlags[ENDAIKUKAKARIKO_GET_TYPE(&this->actor)]; } break; case SCENE_KAKARIKO_CENTER_GUEST_HOUSE: @@ -184,8 +204,8 @@ void EnDaikuKakariko_Init(Actor* thisx, PlayState* play) { this->actionFunc = EnDaikuKakariko_Run; } else { if (this->flags & 8) { - if ((PARAMS_GET_U(this->actor.params, 0, 2) == CARPENTER_SABOORO) || - (PARAMS_GET_U(this->actor.params, 0, 2) == CARPENTER_SHIRO)) { + if ((ENDAIKUKAKARIKO_GET_TYPE(&this->actor) == CARPENTER_SABOORO) || + (ENDAIKUKAKARIKO_GET_TYPE(&this->actor) == CARPENTER_SHIRO)) { EnDaikuKakariko_ChangeAnim(this, ENDAIKUKAKARIKO_ANIM_5, &this->currentAnimIndex); this->flags |= 0x800; } else { @@ -233,23 +253,23 @@ void EnDaikuKakariko_HandleTalking(EnDaikuKakariko* this, PlayState* play) { MASK_REACTION_SET_CARPENTER_3, MASK_REACTION_SET_CARPENTER_4, }; - s16 sp26; - s16 sp24; + s16 screenX; + s16 screenY; if (this->talkState == 2) { this->talkState = EnDaikuKakariko_GetTalkState(this, play); } else if (Actor_TalkOfferAccepted(&this->actor, play)) { this->talkState = 2; } else { - Actor_GetScreenPos(play, &this->actor, &sp26, &sp24); + Actor_GetScreenPos(play, &this->actor, &screenX, &screenY); - if ((sp26 >= 0) && (sp26 <= 320) && (sp24 >= 0) && (sp24 <= 240) && (this->talkState == 0) && - (Actor_OfferTalk(&this->actor, play, 100.0f) == 1)) { + if ((screenX >= 0) && (screenX <= SCREEN_WIDTH) && (screenY >= 0) && (screenY <= SCREEN_HEIGHT) && + (this->talkState == 0) && (Actor_OfferTalk(&this->actor, play, 100.0f) == true)) { this->actor.textId = - MaskReaction_GetTextId(play, sMaskReactionSets[PARAMS_GET_U(this->actor.params, 0, 2)]); + MaskReaction_GetTextId(play, sMaskReactionSets[ENDAIKUKAKARIKO_GET_TYPE(&this->actor)]); if (this->actor.textId == 0) { - switch (PARAMS_GET_U(this->actor.params, 0, 2)) { + switch (ENDAIKUKAKARIKO_GET_TYPE(&this->actor)) { case 0: if (this->flags & 8) { this->actor.textId = 0x5076; @@ -366,7 +386,7 @@ void EnDaikuKakariko_Run(EnDaikuKakariko* this, PlayState* play) { s32 run; do { - path = &play->pathList[PARAMS_GET_U(this->actor.params, 8, 8)]; + path = &play->pathList[ENDAIKUKAKARIKO_GET_PATH_INDEX(&this->actor)]; pathPos = &((Vec3s*)SEGMENTED_TO_VIRTUAL(path->points))[this->waypoint]; xDist = pathPos->x - this->actor.world.pos.x; zDist = pathPos->z - this->actor.world.pos.z; @@ -538,7 +558,7 @@ void EnDaikuKakariko_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, V if (limbIndex == 15) { Matrix_MultVec3f(&unkVec, &this->actor.focus.pos); - gSPDisplayList(POLY_OPA_DISP++, carpenterHeadDLists[PARAMS_GET_U(this->actor.params, 0, 2)]); + gSPDisplayList(POLY_OPA_DISP++, carpenterHeadDLists[ENDAIKUKAKARIKO_GET_TYPE(&this->actor)]); } CLOSE_DISPS(play->state.gfxCtx, "../z_en_daiku_kakariko.c", 1113); @@ -551,13 +571,13 @@ void EnDaikuKakariko_Draw(Actor* thisx, PlayState* play) { Gfx_SetupDL_25Opa(play->state.gfxCtx); - if (PARAMS_GET_U(thisx->params, 0, 2) == CARPENTER_ICHIRO) { + if (ENDAIKUKAKARIKO_GET_TYPE(thisx) == CARPENTER_ICHIRO) { gDPSetEnvColor(POLY_OPA_DISP++, 170, 10, 70, 255); - } else if (PARAMS_GET_U(thisx->params, 0, 2) == CARPENTER_SABOORO) { + } else if (ENDAIKUKAKARIKO_GET_TYPE(thisx) == CARPENTER_SABOORO) { gDPSetEnvColor(POLY_OPA_DISP++, 170, 200, 255, 255); - } else if (PARAMS_GET_U(thisx->params, 0, 2) == CARPENTER_JIRO) { + } else if (ENDAIKUKAKARIKO_GET_TYPE(thisx) == CARPENTER_JIRO) { gDPSetEnvColor(POLY_OPA_DISP++, 0, 230, 70, 255); - } else if (PARAMS_GET_U(thisx->params, 0, 2) == CARPENTER_SHIRO) { + } else if (ENDAIKUKAKARIKO_GET_TYPE(thisx) == CARPENTER_SHIRO) { gDPSetEnvColor(POLY_OPA_DISP++, 200, 0, 150, 255); } diff --git a/src/overlays/actors/ovl_En_Daiku_Kakariko/z_en_daiku_kakariko.h b/src/overlays/actors/ovl_En_Daiku_Kakariko/z_en_daiku_kakariko.h index 5d3596d58f..1395b6e259 100644 --- a/src/overlays/actors/ovl_En_Daiku_Kakariko/z_en_daiku_kakariko.h +++ b/src/overlays/actors/ovl_En_Daiku_Kakariko/z_en_daiku_kakariko.h @@ -2,11 +2,11 @@ #define Z_EN_DAIKU_KAKARIKO_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnDaikuKakariko; -typedef void (*EnDaikuKakarikoActionFunc)(struct EnDaikuKakariko*, PlayState*); +typedef void (*EnDaikuKakarikoActionFunc)(struct EnDaikuKakariko*, struct PlayState*); typedef struct EnDaikuKakariko { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Dekubaba/z_en_dekubaba.c b/src/overlays/actors/ovl_En_Dekubaba/z_en_dekubaba.c index a770abcb63..ab7b8e4285 100644 --- a/src/overlays/actors/ovl_En_Dekubaba/z_en_dekubaba.c +++ b/src/overlays/actors/ovl_En_Dekubaba/z_en_dekubaba.c @@ -1,8 +1,21 @@ #include "z_en_dekubaba.h" -#include "assets/objects/object_dekubaba/object_dekubaba.h" -#include "assets/objects/gameplay_keep/gameplay_keep.h" #include "overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/gameplay_keep/gameplay_keep.h" +#include "assets/objects/object_dekubaba/object_dekubaba.h" + #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE) void EnDekubaba_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_En_Dekubaba/z_en_dekubaba.h b/src/overlays/actors/ovl_En_Dekubaba/z_en_dekubaba.h index b1d53307ce..46a8b8dbdf 100644 --- a/src/overlays/actors/ovl_En_Dekubaba/z_en_dekubaba.h +++ b/src/overlays/actors/ovl_En_Dekubaba/z_en_dekubaba.h @@ -2,11 +2,11 @@ #define Z_EN_DEKUBABA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnDekubaba; -typedef void (*EnDekubabaActionFunc)(struct EnDekubaba*, PlayState*); +typedef void (*EnDekubabaActionFunc)(struct EnDekubaba*, struct PlayState*); typedef enum DekuBabaType { /* 0 */ DEKUBABA_NORMAL, @@ -25,7 +25,7 @@ typedef struct EnDekubaba { /* 0x01D0 */ Vec3s jointTable[8]; /* 0x0200 */ Vec3s morphTable[8]; /* 0x0230 */ f32 size; // Used everywhere to rescale offsets etc. for Big ones - /* 0x0234 */ CollisionPoly* boundFloor; + /* 0x0234 */ struct CollisionPoly* boundFloor; /* 0x0238 */ ColliderJntSph collider; /* 0x0258 */ ColliderJntSphElement colliderElements[7]; } EnDekubaba; // size = 0x0418 diff --git a/src/overlays/actors/ovl_En_Dekunuts/z_en_dekunuts.c b/src/overlays/actors/ovl_En_Dekunuts/z_en_dekunuts.c index c21d760eb9..cf498eb726 100644 --- a/src/overlays/actors/ovl_En_Dekunuts/z_en_dekunuts.c +++ b/src/overlays/actors/ovl_En_Dekunuts/z_en_dekunuts.c @@ -6,6 +6,15 @@ #include "z_en_dekunuts.h" #include "overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.h" + +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/object_dekunuts/object_dekunuts.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE) diff --git a/src/overlays/actors/ovl_En_Dekunuts/z_en_dekunuts.h b/src/overlays/actors/ovl_En_Dekunuts/z_en_dekunuts.h index 6beefc7c3b..76f23bdecf 100644 --- a/src/overlays/actors/ovl_En_Dekunuts/z_en_dekunuts.h +++ b/src/overlays/actors/ovl_En_Dekunuts/z_en_dekunuts.h @@ -2,11 +2,11 @@ #define Z_EN_DEKUNUTS_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnDekunuts; -typedef void (*EnDekunutsActionFunc)(struct EnDekunuts*, PlayState*); +typedef void (*EnDekunutsActionFunc)(struct EnDekunuts*, struct PlayState*); typedef struct EnDekunuts { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Dh/z_en_dh.c b/src/overlays/actors/ovl_En_Dh/z_en_dh.c index d0b44336bf..34acb2d982 100644 --- a/src/overlays/actors/ovl_En_Dh/z_en_dh.c +++ b/src/overlays/actors/ovl_En_Dh/z_en_dh.c @@ -1,4 +1,29 @@ +/* + * File: z_en_dh.c + * Overlay: ovl_En_Dh + * Description: Dead Hand + */ + #include "z_en_dh.h" + +#include "libc64/qrand.h" +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_math.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_dh/object_dh.h" #define FLAGS \ @@ -153,8 +178,8 @@ void EnDh_Init(Actor* thisx, PlayState* play) { this->actor.flags &= ~ACTOR_FLAG_ATTENTION_ENABLED; Collider_InitCylinder(play, &this->collider1); Collider_SetCylinder(play, &this->collider1, &this->actor, &sCylinderInit); - Collider_InitJntSph(play, &this->collider2); - Collider_SetJntSph(play, &this->collider2, &this->actor, &sJntSphInit, this->elements); + Collider_InitJntSph(play, &this->colliderJntSph); + Collider_SetJntSph(play, &this->colliderJntSph, &this->actor, &sJntSphInit, this->colliderJntSphElements); EnDh_SetupWait(this); } @@ -164,7 +189,7 @@ void EnDh_Destroy(Actor* thisx, PlayState* play) { func_800F5B58(); Collider_DestroyCylinder(play, &this->collider1); - Collider_DestroyJntSph(play, &this->collider2); + Collider_DestroyJntSph(play, &this->colliderJntSph); } void EnDh_SpawnDebris(PlayState* play, EnDh* this, Vec3f* spawnPos, f32 spread, s32 arg4, f32 accelXZ, f32 scale) { @@ -304,8 +329,10 @@ void EnDh_Attack(EnDh* this, PlayState* play) { Animation_Change(&this->skelAnime, &object_dh_Anim_004658, -1.0f, this->skelAnime.curFrame, 0.0f, ANIMMODE_ONCE, -4.0f); this->actionState = 4; - this->collider2.base.atFlags = this->collider2.elements[0].base.atElemFlags = AT_NONE; // also ATELEM_NONE - this->collider2.elements[0].base.atDmgInfo.dmgFlags = this->collider2.elements[0].base.atDmgInfo.damage = 0; + this->colliderJntSph.base.atFlags = this->colliderJntSph.elements[0].base.atElemFlags = + AT_NONE; // also ATELEM_NONE + this->colliderJntSph.elements[0].base.atDmgInfo.dmgFlags = + this->colliderJntSph.elements[0].base.atDmgInfo.damage = 0; } switch (this->actionState) { case 1: @@ -318,20 +345,20 @@ void EnDh_Attack(EnDh* this, PlayState* play) { break; case 2: if (this->skelAnime.curFrame >= 4.0f) { - this->collider2.base.atFlags = this->collider2.elements[0].base.atElemFlags = + this->colliderJntSph.base.atFlags = this->colliderJntSph.elements[0].base.atElemFlags = AT_ON | AT_TYPE_ENEMY; // also ATELEM_ON | ATELEM_SFX_WOOD - this->collider2.elements[0].base.atDmgInfo.dmgFlags = DMG_DEFAULT; - this->collider2.elements[0].base.atDmgInfo.damage = 8; + this->colliderJntSph.elements[0].base.atDmgInfo.dmgFlags = DMG_DEFAULT; + this->colliderJntSph.elements[0].base.atDmgInfo.damage = 8; } - if (this->collider2.base.atFlags & AT_BOUNCED) { - this->collider2.base.atFlags &= ~(AT_HIT | AT_BOUNCED); - this->collider2.base.atFlags = this->collider2.elements[0].base.atElemFlags = + if (this->colliderJntSph.base.atFlags & AT_BOUNCED) { + this->colliderJntSph.base.atFlags &= ~(AT_HIT | AT_BOUNCED); + this->colliderJntSph.base.atFlags = this->colliderJntSph.elements[0].base.atElemFlags = AT_NONE; // also ATELEM_NONE - this->collider2.elements[0].base.atDmgInfo.dmgFlags = - this->collider2.elements[0].base.atDmgInfo.damage = 0; + this->colliderJntSph.elements[0].base.atDmgInfo.dmgFlags = + this->colliderJntSph.elements[0].base.atDmgInfo.damage = 0; this->actionState++; - } else if (this->collider2.base.atFlags & AT_HIT) { - this->collider2.base.atFlags &= ~AT_HIT; + } else if (this->colliderJntSph.base.atFlags & AT_HIT) { + this->colliderJntSph.base.atFlags &= ~AT_HIT; Actor_SetPlayerKnockbackLargeNoDamage(play, &this->actor, 8.0f, this->actor.shape.rot.y, 8.0f); } break; @@ -346,10 +373,10 @@ void EnDh_Attack(EnDh* this, PlayState* play) { Animation_Change(&this->skelAnime, &object_dh_Anim_004658, -1.0f, Animation_GetLastFrame(&object_dh_Anim_004658), 0.0f, ANIMMODE_ONCE, -4.0f); this->actionState++; - this->collider2.base.atFlags = this->collider2.elements[0].base.atElemFlags = + this->colliderJntSph.base.atFlags = this->colliderJntSph.elements[0].base.atElemFlags = AT_NONE; // also ATELEM_NONE - this->collider2.elements[0].base.atDmgInfo.dmgFlags = - this->collider2.elements[0].base.atDmgInfo.damage = 0; + this->colliderJntSph.elements[0].base.atDmgInfo.dmgFlags = + this->colliderJntSph.elements[0].base.atDmgInfo.damage = 0; } break; case 5: @@ -478,11 +505,13 @@ void EnDh_CollisionCheck(EnDh* this, PlayState* play) { Player* player = GET_PLAYER(play); s32 lastHealth; - if ((this->collider2.base.acFlags & AC_HIT) && !this->retreat) { - this->collider2.base.acFlags &= ~AC_HIT; + if ((this->colliderJntSph.base.acFlags & AC_HIT) && !this->retreat) { + this->colliderJntSph.base.acFlags &= ~AC_HIT; if ((this->actor.colChkInfo.damageEffect != 0) && (this->actor.colChkInfo.damageEffect != 6)) { - this->collider2.base.atFlags = this->collider2.elements[0].base.atElemFlags = AT_NONE; // also ATELEM_NONE - this->collider2.elements[0].base.atDmgInfo.dmgFlags = this->collider2.elements[0].base.atDmgInfo.damage = 0; + this->colliderJntSph.base.atFlags = this->colliderJntSph.elements[0].base.atElemFlags = + AT_NONE; // also ATELEM_NONE + this->colliderJntSph.elements[0].base.atDmgInfo.dmgFlags = + this->colliderJntSph.elements[0].base.atDmgInfo.damage = 0; if (player->unk_844 != 0) { this->unk_258 = player->unk_845; } @@ -527,13 +556,13 @@ void EnDh_Update(Actor* thisx, PlayState* play) { if (((this->curAction != DH_DAMAGE) && (this->actor.shape.yOffset == 0.0f)) || ((player->unk_844 != 0) && (player->unk_845 != this->unk_258))) { - CollisionCheck_SetAC(play, &play->colChkCtx, &this->collider2.base); - CollisionCheck_SetAT(play, &play->colChkCtx, &this->collider2.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderJntSph.base); + CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderJntSph.base); CollisionCheck_SetAT(play, &play->colChkCtx, &this->collider1.base); } } else { CollisionCheck_SetOC(play, &play->colChkCtx, &this->collider1.base); - CollisionCheck_SetOC(play, &play->colChkCtx, &this->collider2.base); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderJntSph.base); } } @@ -545,7 +574,7 @@ void EnDh_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Matrix_MultVec3f(&headOffset, &this->headPos); Matrix_Push(); Matrix_Translate(headOffset.x, headOffset.y, headOffset.z, MTXMODE_APPLY); - Collider_UpdateSpheres(1, &this->collider2); + Collider_UpdateSpheres(1, &this->colliderJntSph); Matrix_Pop(); } } diff --git a/src/overlays/actors/ovl_En_Dh/z_en_dh.h b/src/overlays/actors/ovl_En_Dh/z_en_dh.h index 21872aafce..0feb3069b5 100644 --- a/src/overlays/actors/ovl_En_Dh/z_en_dh.h +++ b/src/overlays/actors/ovl_En_Dh/z_en_dh.h @@ -2,11 +2,11 @@ #define Z_EN_DH_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnDh; -typedef void (*EnDhActionFunc)(struct EnDh*, PlayState*); +typedef void (*EnDhActionFunc)(struct EnDh*, struct PlayState*); typedef struct EnDh { /* 0x0000 */ Actor actor; @@ -24,8 +24,8 @@ typedef struct EnDh { /* 0x025C */ s16 timer; /* 0x025E */ s16 dirtWavePhase; /* 0x0260 */ ColliderCylinder collider1; - /* 0x02AC */ ColliderJntSph collider2; - /* 0x02CC */ ColliderJntSphElement elements[1]; + /* 0x02AC */ ColliderJntSph colliderJntSph; + /* 0x02CC */ ColliderJntSphElement colliderJntSphElements[1]; /* 0x030C */ Vec3f headPos; /* 0x0318 */ f32 dirtWaveSpread; /* 0x031C */ f32 dirtWaveHeight; diff --git a/src/overlays/actors/ovl_En_Dha/z_en_dha.c b/src/overlays/actors/ovl_En_Dha/z_en_dha.c index 8ecca0200a..5754d8ae1e 100644 --- a/src/overlays/actors/ovl_En_Dha/z_en_dha.c +++ b/src/overlays/actors/ovl_En_Dha/z_en_dha.c @@ -5,8 +5,21 @@ */ #include "z_en_dha.h" -#include "versions.h" #include "overlays/actors/ovl_En_Dh/z_en_dh.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "versions.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_dh/object_dh.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED) @@ -166,7 +179,7 @@ void EnDha_Init(Actor* thisx, PlayState* play) { this->actor.colChkInfo.health = 8; this->limbAngleX[0] = -0x4000; Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderItem); + Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderElements); this->actor.flags &= ~ACTOR_FLAG_ATTENTION_ENABLED; EnDha_SetupWait(this); diff --git a/src/overlays/actors/ovl_En_Dha/z_en_dha.h b/src/overlays/actors/ovl_En_Dha/z_en_dha.h index 2ef37c54c9..f7cbd78d7b 100644 --- a/src/overlays/actors/ovl_En_Dha/z_en_dha.h +++ b/src/overlays/actors/ovl_En_Dha/z_en_dha.h @@ -2,11 +2,11 @@ #define Z_EN_DHA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnDha; -typedef void (*EnDhaActionFunc)(struct EnDha*, PlayState*); +typedef void (*EnDhaActionFunc)(struct EnDha*, struct PlayState*); typedef struct EnDha { /* 0x0000 */ Actor actor; @@ -24,7 +24,7 @@ typedef struct EnDha { /* 0x01DC */ Vec3f handPos[2]; /* 0x01F4 */ Vec3f armPos; /* 0x0200 */ ColliderJntSph collider; - /* 0x0220 */ ColliderJntSphElement colliderItem[5]; + /* 0x0220 */ ColliderJntSphElement colliderElements[5]; } EnDha; // size = 0x0360 #endif 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 504b26eaa9..6de6666028 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 @@ -6,8 +6,25 @@ #include "z_en_diving_game.h" #include "overlays/actors/ovl_En_Ex_Ruppy/z_en_ex_ruppy.h" -#include "assets/objects/object_zo/object_zo.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "regs.h" +#include "segmented_address.h" +#include "sequence.h" +#include "sfx.h" #include "terminal.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64effect.h" +#include "z64face_reaction.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/object_zo/object_zo.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Diving_Game/z_en_diving_game.h b/src/overlays/actors/ovl_En_Diving_Game/z_en_diving_game.h index c873e075e3..ccc211dc8b 100644 --- a/src/overlays/actors/ovl_En_Diving_Game/z_en_diving_game.h +++ b/src/overlays/actors/ovl_En_Diving_Game/z_en_diving_game.h @@ -2,11 +2,11 @@ #define Z_EN_DIVING_GAME_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnDivingGame; -typedef void (*EnDivingGameActionFunc)(struct EnDivingGame*, PlayState*); +typedef void (*EnDivingGameActionFunc)(struct EnDivingGame*, struct PlayState*); typedef struct EnDivingGame { /* 0x0000 */ Actor actor; 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 5aa697f494..cc823ecdcb 100644 --- a/src/overlays/actors/ovl_En_Dns/z_en_dns.c +++ b/src/overlays/actors/ovl_En_Dns/z_en_dns.c @@ -5,7 +5,20 @@ */ #include "z_en_dns.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" #include "terminal.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/object_shopnuts/object_shopnuts.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) diff --git a/src/overlays/actors/ovl_En_Dns/z_en_dns.h b/src/overlays/actors/ovl_En_Dns/z_en_dns.h index d86e96eb43..3a91a5362a 100644 --- a/src/overlays/actors/ovl_En_Dns/z_en_dns.h +++ b/src/overlays/actors/ovl_En_Dns/z_en_dns.h @@ -2,7 +2,7 @@ #define Z_EN_DNS_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" #include "assets/objects/object_shopnuts/object_shopnuts.h" #define DNS_GET_TYPE(thisx) ((thisx)->params) @@ -37,7 +37,7 @@ typedef enum EnDnsAnimation { struct EnDns; -typedef void (*EnDnsActionFunc)(struct EnDns*, PlayState*); +typedef void (*EnDnsActionFunc)(struct EnDns*, struct PlayState*); typedef u32 (*EnDnsCanBuyFunc)(struct EnDns*); typedef void (*EnDnsPaymentFunc)(struct EnDns*); 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 ad1eb7e58f..e23c50b448 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 @@ -5,10 +5,23 @@ */ #include "z_en_dnt_demo.h" - #include "overlays/actors/ovl_En_Dnt_Jiji/z_en_dnt_jiji.h" #include "overlays/actors/ovl_En_Dnt_Nomal/z_en_dnt_nomal.h" + +#include "attributes.h" +#include "one_point_cutscene.h" +#include "rand.h" +#include "regs.h" +#include "seqcmd.h" +#include "sequence.h" +#include "sfx.h" #include "terminal.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64debug_display.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_En_Dnt_Demo/z_en_dnt_demo.h b/src/overlays/actors/ovl_En_Dnt_Demo/z_en_dnt_demo.h index 607810629c..29c302aed2 100644 --- a/src/overlays/actors/ovl_En_Dnt_Demo/z_en_dnt_demo.h +++ b/src/overlays/actors/ovl_En_Dnt_Demo/z_en_dnt_demo.h @@ -2,11 +2,11 @@ #define Z_EN_DNT_DEMO_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnDntDemo; -typedef void (*EnDntDemoActionFunc)(struct EnDntDemo*, PlayState*); +typedef void (*EnDntDemoActionFunc)(struct EnDntDemo*, struct PlayState*); typedef struct EnDntDemo { /* 0x0000 */ Actor actor; 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 9f88469f2b..b0be17234b 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 @@ -5,10 +5,28 @@ */ #include "z_en_dnt_jiji.h" -#include "assets/objects/object_dns/object_dns.h" #include "overlays/actors/ovl_En_Dnt_Demo/z_en_dnt_demo.h" #include "overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.h" + +#include "libc64/math64.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "one_point_cutscene.h" +#include "rand.h" +#include "regs.h" +#include "segmented_address.h" +#include "seqcmd.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/object_dns/object_dns.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Dnt_Jiji/z_en_dnt_jiji.h b/src/overlays/actors/ovl_En_Dnt_Jiji/z_en_dnt_jiji.h index 20199a7c2e..540a8951a3 100644 --- a/src/overlays/actors/ovl_En_Dnt_Jiji/z_en_dnt_jiji.h +++ b/src/overlays/actors/ovl_En_Dnt_Jiji/z_en_dnt_jiji.h @@ -2,11 +2,11 @@ #define Z_EN_DNT_JIJI_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnDntJiji; -typedef void (*EnDntJijiActionFunc)(struct EnDntJiji*, PlayState*); +typedef void (*EnDntJijiActionFunc)(struct EnDntJiji*, struct PlayState*); typedef struct EnDntJiji { /* 0x0000 */ Actor actor; 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 b1631fe434..bcf0978433 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 @@ -5,14 +5,30 @@ */ #include "z_en_dnt_nomal.h" -#include "assets/objects/object_dnk/object_dnk.h" #include "overlays/actors/ovl_En_Dnt_Demo/z_en_dnt_demo.h" #include "overlays/actors/ovl_En_Ex_Ruppy/z_en_ex_ruppy.h" #include "overlays/actors/ovl_En_Ex_Item/z_en_ex_item.h" #include "overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.h" -#include "assets/objects/object_hintnuts/object_hintnuts.h" + +#include "libc64/math64.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "one_point_cutscene.h" +#include "rand.h" +#include "regs.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" #include "versions.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/object_dnk/object_dnk.h" +#include "assets/objects/object_hintnuts/object_hintnuts.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) @@ -134,16 +150,16 @@ void EnDntNomal_Init(Actor* thisx, PlayState* play) { PRINTF("\n\n"); // "Deku Scrub target" PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ デグナッツ的当て ☆☆☆☆☆ \n" VT_RST); - Collider_InitQuad(play, &this->targetQuad); - Collider_SetQuad(play, &this->targetQuad, &this->actor, &sTargetQuadInit); + 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); - Collider_InitCylinder(play, &this->bodyCyl); - Collider_SetCylinder(play, &this->bodyCyl, &this->actor, &sBodyCylinderInit); + Collider_InitCylinder(play, &this->bodyColliderCylinder); + Collider_SetCylinder(play, &this->bodyColliderCylinder, &this->actor, &sBodyCylinderInit); this->objectId = OBJECT_DNK; } if (this->objectId >= 0) { @@ -167,9 +183,9 @@ void EnDntNomal_Destroy(Actor* thisx, PlayState* play) { EnDntNomal* this = (EnDntNomal*)thisx; if (this->type == ENDNTNOMAL_TARGET) { - Collider_DestroyQuad(play, &this->targetQuad); + Collider_DestroyQuad(play, &this->targetColliderQuad); } else { - Collider_DestroyCylinder(play, &this->bodyCyl); + Collider_DestroyCylinder(play, &this->bodyColliderCylinder); } } @@ -181,8 +197,9 @@ void EnDntNomal_WaitForObject(EnDntNomal* this, PlayState* play) { this->actor.gravity = -2.0f; Actor_SetScale(&this->actor, 0.01f); if (this->type == ENDNTNOMAL_TARGET) { - SkelAnime_Init(play, &this->skelAnime, &gHintNutsSkel, &gHintNutsBurrowAnim, this->jointTable, - this->morphTable, 10); + //! @bug Flex skeleton is used as normal skeleton + SkelAnime_Init(play, &this->skelAnime, (SkeletonHeader*)&gHintNutsSkel, &gHintNutsBurrowAnim, + this->jointTable, this->morphTable, 10); this->actor.draw = EnDntNomal_DrawTargetScrub; } else { SkelAnime_Init(play, &this->skelAnime, &gDntStageSkel, &gDntStageHideAnim, this->jointTable, @@ -241,16 +258,16 @@ void EnDntNomal_TargetWait(EnDntNomal* this, PlayState* play) { SkelAnime_Update(&this->skelAnime); #if OOT_VERSION < PAL_1_0 - if (this->targetQuad.base.acFlags & AC_HIT) + if (this->targetColliderQuad.base.acFlags & AC_HIT) #else - if ((this->targetQuad.base.acFlags & AC_HIT) || BREG(0)) + if ((this->targetColliderQuad.base.acFlags & AC_HIT) || BREG(0)) #endif { - this->targetQuad.base.acFlags &= ~AC_HIT; + this->targetColliderQuad.base.acFlags &= ~AC_HIT; - dx = fabsf(targetX - this->targetQuad.elem.acDmgInfo.hitPos.x); - dy = fabsf(targetY - this->targetQuad.elem.acDmgInfo.hitPos.y); - dz = fabsf(targetZ - this->targetQuad.elem.acDmgInfo.hitPos.z); + dx = fabsf(targetX - this->targetColliderQuad.elem.acDmgInfo.hitPos.x); + dy = fabsf(targetY - this->targetColliderQuad.elem.acDmgInfo.hitPos.y); + dz = fabsf(targetZ - this->targetColliderQuad.elem.acDmgInfo.hitPos.z); scoreVel.y = 5.0f; @@ -839,13 +856,13 @@ void EnDntNomal_Update(Actor* thisx, PlayState* play) { UPDBGCHECKINFO_FLAG_0 | UPDBGCHECKINFO_FLAG_2 | UPDBGCHECKINFO_FLAG_3 | UPDBGCHECKINFO_FLAG_4); if (this->type == ENDNTNOMAL_TARGET) { - Collider_SetQuadVertices(&this->targetQuad, &this->targetVtx[0], &this->targetVtx[1], &this->targetVtx[2], - &this->targetVtx[3]); - CollisionCheck_SetAC(play, &play->colChkCtx, &this->targetQuad.base); + Collider_SetQuadVertices(&this->targetColliderQuad, &this->targetVtx[0], &this->targetVtx[1], + &this->targetVtx[2], &this->targetVtx[3]); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->targetColliderQuad.base); } else { - Collider_UpdateCylinder(&this->actor, &this->bodyCyl); + Collider_UpdateCylinder(&this->actor, &this->bodyColliderCylinder); if (this->isSolid) { - CollisionCheck_SetOC(play, &play->colChkCtx, &this->bodyCyl.base); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->bodyColliderCylinder.base); } } } diff --git a/src/overlays/actors/ovl_En_Dnt_Nomal/z_en_dnt_nomal.h b/src/overlays/actors/ovl_En_Dnt_Nomal/z_en_dnt_nomal.h index 13974bb1b1..21f77798a0 100644 --- a/src/overlays/actors/ovl_En_Dnt_Nomal/z_en_dnt_nomal.h +++ b/src/overlays/actors/ovl_En_Dnt_Nomal/z_en_dnt_nomal.h @@ -2,11 +2,11 @@ #define Z_EN_DNT_NOMAL_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnDntNomal; -typedef void (*EnDntNomalActionFunc)(struct EnDntNomal*, PlayState*); +typedef void (*EnDntNomalActionFunc)(struct EnDntNomal*, struct PlayState*); typedef struct EnDntNomal { /* 0x0000 */ Actor actor; @@ -38,8 +38,8 @@ typedef struct EnDntNomal { /* 0x0279 */ s8 requiredObjectSlot; /* 0x027C */ Vec3f mouthPos; /* 0x0288 */ Vec3f targetPos; - /* 0x0294 */ ColliderQuad targetQuad; - /* 0x0314 */ ColliderCylinder bodyCyl; + /* 0x0294 */ ColliderQuad targetColliderQuad; + /* 0x0314 */ ColliderCylinder bodyColliderCylinder; } EnDntNomal; // size = 0x0360 #define ENDNTNOMAL_TARGET 0 diff --git a/src/overlays/actors/ovl_En_Dodojr/z_en_dodojr.c b/src/overlays/actors/ovl_En_Dodojr/z_en_dodojr.c index 5438c03f4b..1d967ed5fa 100644 --- a/src/overlays/actors/ovl_En_Dodojr/z_en_dodojr.c +++ b/src/overlays/actors/ovl_En_Dodojr/z_en_dodojr.c @@ -6,6 +6,18 @@ #include "z_en_dodojr.h" #include "overlays/actors/ovl_En_Bom/z_en_bom.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_dodojr/object_dodojr.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE) diff --git a/src/overlays/actors/ovl_En_Dodojr/z_en_dodojr.h b/src/overlays/actors/ovl_En_Dodojr/z_en_dodojr.h index bef171c584..615304cb01 100644 --- a/src/overlays/actors/ovl_En_Dodojr/z_en_dodojr.h +++ b/src/overlays/actors/ovl_En_Dodojr/z_en_dodojr.h @@ -2,11 +2,11 @@ #define Z_EN_DODOJR_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnDodojr; -typedef void (*EnDodojrActionFunc)(struct EnDodojr*, PlayState*); +typedef void (*EnDodojrActionFunc)(struct EnDodojr*, struct PlayState*); typedef struct EnDodojr { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.c b/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.c index 5cd7fec6c5..5d013911eb 100644 --- a/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.c +++ b/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.c @@ -1,6 +1,21 @@ #include "z_en_dodongo.h" #include "overlays/actors/ovl_En_Bom/z_en_bom.h" #include "overlays/actors/ovl_En_Bombf/z_en_bombf.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "sfx.h" +#include "sys_math.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_dodongo/object_dodongo.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED) @@ -322,10 +337,10 @@ void EnDodongo_Init(Actor* thisx, PlayState* play) { this->actor.colChkInfo.damageTable = &sDamageTable; Collider_InitQuad(play, &this->colliderAT); Collider_InitTris(play, &this->colliderHard); - Collider_InitJntSph(play, &this->colliderBody); + Collider_InitJntSph(play, &this->bodyCollider); Collider_SetQuad(play, &this->colliderAT, &this->actor, &sAttackQuadInit); Collider_SetTris(play, &this->colliderHard, &this->actor, &sHardTrisInit, this->trisElements); - Collider_SetJntSph(play, &this->colliderBody, &this->actor, &sBodyJntSphInit, this->sphElements); + Collider_SetJntSph(play, &this->bodyCollider, &this->actor, &sBodyJntSphInit, this->bodyColliderElements); blureInit.p1StartColor[0] = blureInit.p1StartColor[1] = blureInit.p1StartColor[2] = blureInit.p1StartColor[3] = blureInit.p2StartColor[0] = blureInit.p2StartColor[1] = blureInit.p2StartColor[2] = blureInit.p1EndColor[0] = @@ -351,7 +366,7 @@ void EnDodongo_Destroy(Actor* thisx, PlayState* play) { Effect_Delete(play, this->blureIdx); Collider_DestroyTris(play, &this->colliderHard); - Collider_DestroyJntSph(play, &this->colliderBody); + Collider_DestroyJntSph(play, &this->bodyCollider); Collider_DestroyQuad(play, &this->colliderAT); } @@ -490,9 +505,9 @@ void EnDodongo_SwallowBomb(EnDodongo* this, PlayState* play) { deathFireAccel.x = deathFireVel.x * -0.1f; deathFireAccel.y = deathFireVel.y * -0.1f; deathFireAccel.z = deathFireVel.z * -0.1f; - pos.x = this->sphElements[0].dim.worldSphere.center.x + deathFireVel.x; - pos.y = this->sphElements[0].dim.worldSphere.center.y + deathFireVel.y; - pos.z = this->sphElements[0].dim.worldSphere.center.z + deathFireVel.z; + pos.x = this->bodyColliderElements[0].dim.worldSphere.center.x + deathFireVel.x; + pos.y = this->bodyColliderElements[0].dim.worldSphere.center.y + deathFireVel.y; + pos.z = this->bodyColliderElements[0].dim.worldSphere.center.z + deathFireVel.z; func_8002836C(play, &pos, &deathFireVel, &deathFireAccel, &this->bombSmokePrimColor, &this->bombSmokeEnvColor, 400, 10, 10); } @@ -605,13 +620,13 @@ void EnDodongo_SweepTail(EnDodongo* this, PlayState* play) { if (SkelAnime_Update(&this->skelAnime)) { if ((this->timer != 0) || (ABS(yawDiff1) < 0x4000)) { - this->sphElements[2].base.atElemFlags = ATELEM_NONE; - this->sphElements[1].base.atElemFlags = ATELEM_NONE; - this->colliderBody.base.atFlags = AT_NONE; - this->sphElements[2].base.atDmgInfo.dmgFlags = 0; - this->sphElements[1].base.atDmgInfo.dmgFlags = 0; - this->sphElements[2].base.atDmgInfo.damage = 0; - this->sphElements[1].base.atDmgInfo.damage = 0; + this->bodyColliderElements[2].base.atElemFlags = ATELEM_NONE; + this->bodyColliderElements[1].base.atElemFlags = ATELEM_NONE; + this->bodyCollider.base.atFlags = AT_NONE; + this->bodyColliderElements[2].base.atDmgInfo.dmgFlags = 0; + this->bodyColliderElements[1].base.atDmgInfo.dmgFlags = 0; + this->bodyColliderElements[2].base.atDmgInfo.damage = 0; + this->bodyColliderElements[1].base.atDmgInfo.damage = 0; EnDodongo_SetupBreatheFire(this); this->timer = Rand_S16Offset(5, 10); } else { @@ -628,33 +643,36 @@ void EnDodongo_SweepTail(EnDodongo* this, PlayState* play) { Actor_PlaySfx(&this->actor, NA_SE_EN_DODO_J_TAIL); Animation_PlayOnceSetSpeed(&this->skelAnime, animation, 2.0f); this->timer = 18; - this->colliderBody.base.atFlags = this->sphElements[1].base.atElemFlags = - this->sphElements[2].base.atElemFlags = AT_ON | AT_TYPE_ENEMY; // also ATELEM_ON | ATELEM_SFX_WOOD - this->sphElements[1].base.atDmgInfo.dmgFlags = this->sphElements[2].base.atDmgInfo.dmgFlags = DMG_DEFAULT; - this->sphElements[1].base.atDmgInfo.damage = this->sphElements[2].base.atDmgInfo.damage = 8; + this->bodyCollider.base.atFlags = this->bodyColliderElements[1].base.atElemFlags = + this->bodyColliderElements[2].base.atElemFlags = + AT_ON | AT_TYPE_ENEMY; // also ATELEM_ON | ATELEM_SFX_WOOD + this->bodyColliderElements[1].base.atDmgInfo.dmgFlags = + this->bodyColliderElements[2].base.atDmgInfo.dmgFlags = DMG_DEFAULT; + this->bodyColliderElements[1].base.atDmgInfo.damage = this->bodyColliderElements[2].base.atDmgInfo.damage = + 8; } } else if (this->timer > 1) { Vec3f tailPos; this->timer--; this->actor.shape.rot.y = this->actor.world.rot.y += this->tailSwipeSpeed; - tailPos.x = this->sphElements[1].dim.worldSphere.center.x; - tailPos.y = this->sphElements[1].dim.worldSphere.center.y; - tailPos.z = this->sphElements[1].dim.worldSphere.center.z; + tailPos.x = this->bodyColliderElements[1].dim.worldSphere.center.x; + tailPos.y = this->bodyColliderElements[1].dim.worldSphere.center.y; + tailPos.z = this->bodyColliderElements[1].dim.worldSphere.center.z; Actor_SpawnFloorDustRing(play, &this->actor, &tailPos, 5.0f, 2, 2.0f, 100, 15, false); - tailPos.x = this->sphElements[2].dim.worldSphere.center.x; - tailPos.y = this->sphElements[2].dim.worldSphere.center.y; - tailPos.z = this->sphElements[2].dim.worldSphere.center.z; + tailPos.x = this->bodyColliderElements[2].dim.worldSphere.center.x; + tailPos.y = this->bodyColliderElements[2].dim.worldSphere.center.y; + tailPos.z = this->bodyColliderElements[2].dim.worldSphere.center.z; Actor_SpawnFloorDustRing(play, &this->actor, &tailPos, 5.0f, 2, 2.0f, 100, 15, false); - if (this->colliderBody.base.atFlags & AT_HIT) { + if (this->bodyCollider.base.atFlags & AT_HIT) { Player* player = GET_PLAYER(play); - if (this->colliderBody.base.at == &player->actor) { + if (this->bodyCollider.base.at == &player->actor) { Actor_PlaySfx(&player->actor, NA_SE_PL_BODY_HIT); } } - CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderBody.base); + CollisionCheck_SetAT(play, &play->colChkCtx, &this->bodyCollider.base); } } @@ -711,10 +729,10 @@ void EnDodongo_Stunned(EnDodongo* this, PlayState* play) { void EnDodongo_CollisionCheck(EnDodongo* this, PlayState* play) { if (this->colliderHard.base.acFlags & AC_BOUNCED) { this->colliderHard.base.acFlags &= ~AC_BOUNCED; - this->colliderBody.base.acFlags &= ~AC_HIT; - } else if ((this->colliderBody.base.acFlags & AC_HIT) && (this->actionState > DODONGO_DEATH)) { - this->colliderBody.base.acFlags &= ~AC_HIT; - Actor_SetDropFlagJntSph(&this->actor, &this->colliderBody, false); + this->bodyCollider.base.acFlags &= ~AC_HIT; + } else if ((this->bodyCollider.base.acFlags & AC_HIT) && (this->actionState > DODONGO_DEATH)) { + this->bodyCollider.base.acFlags &= ~AC_HIT; + Actor_SetDropFlagJntSph(&this->actor, &this->bodyCollider, false); if (this->actor.colChkInfo.damageEffect != 0xE) { this->damageEffect = this->actor.colChkInfo.damageEffect; if ((this->actor.colChkInfo.damageEffect == 1) || (this->actor.colChkInfo.damageEffect == 0xF)) { @@ -775,12 +793,12 @@ void EnDodongo_Update(Actor* thisx, PlayState* play) { Actor_PlaySfx(&this->actor, NA_SE_EN_RIZA_DOWN); } } - CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderBody.base); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->bodyCollider.base); if (this->actionState != DODONGO_DEATH) { CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderHard.base); } if (this->actionState > DODONGO_DEATH) { - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderBody.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->bodyCollider.base); } if ((this->actionState >= DODONGO_IDLE) && EnDodongo_AteBomb(this, play)) { EnDodongo_SetupSwallowBomb(this); @@ -837,7 +855,7 @@ void EnDodongo_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* Vec3f mouthOffset = { 1800.0f, 1200.0f, 0.0f }; Vec3f headOffset = { 1500.0f, 300.0f, 0.0f }; - Collider_UpdateSpheres(limbIndex, &this->colliderBody); + Collider_UpdateSpheres(limbIndex, &this->bodyCollider); switch (limbIndex) { case 2: diff --git a/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.h b/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.h index 664b175799..7785030d49 100644 --- a/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.h +++ b/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.h @@ -2,11 +2,11 @@ #define Z_EN_DODONGO_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnDodongo; -typedef void (*EnDodongoActionFunc)(struct EnDodongo*, PlayState*); +typedef void (*EnDodongoActionFunc)(struct EnDodongo*, struct PlayState*); typedef struct EnDodongo { /* 0x0000 */ Actor actor; @@ -35,8 +35,8 @@ typedef struct EnDodongo { /* 0x03D4 */ ColliderQuad colliderAT; /* 0x0454 */ ColliderTris colliderHard; /* 0x0474 */ ColliderTrisElement trisElements[3]; - /* 0x0588 */ ColliderJntSph colliderBody; - /* 0x05A8 */ ColliderJntSphElement sphElements[6]; + /* 0x0588 */ ColliderJntSph bodyCollider; + /* 0x05A8 */ ColliderJntSphElement bodyColliderElements[6]; } EnDodongo; // size = 0x0728 typedef enum EnDodongoParam { diff --git a/src/overlays/actors/ovl_En_Dog/z_en_dog.c b/src/overlays/actors/ovl_En_Dog/z_en_dog.c index 49b8c83ba3..0255b01626 100644 --- a/src/overlays/actors/ovl_En_Dog/z_en_dog.c +++ b/src/overlays/actors/ovl_En_Dog/z_en_dog.c @@ -5,6 +5,14 @@ */ #include "z_en_dog.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_dog/object_dog.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_En_Dog/z_en_dog.h b/src/overlays/actors/ovl_En_Dog/z_en_dog.h index dec2b5c180..c3cdfd913b 100644 --- a/src/overlays/actors/ovl_En_Dog/z_en_dog.h +++ b/src/overlays/actors/ovl_En_Dog/z_en_dog.h @@ -2,18 +2,18 @@ #define Z_EN_DOG_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnDog; -typedef void (*EnDogActionFunc)(struct EnDog*, PlayState*); +typedef void (*EnDogActionFunc)(struct EnDog*, struct PlayState*); typedef struct EnDog { /* 0x0000 */ Actor actor; /* 0x014C */ SkelAnime skelAnime; /* 0x0190 */ EnDogActionFunc actionFunc; /* 0x0194 */ ColliderCylinder collider; - /* 0x01E0 */ Path* path; + /* 0x01E0 */ struct Path* path; /* 0x01E4 */ u8 reverse; /* 0x01E6 */ s16 waypoint; /* 0x01E8 */ s16 unusedAngle; diff --git a/src/overlays/actors/ovl_En_Door/z_en_door.c b/src/overlays/actors/ovl_En_Door/z_en_door.c index 4d650f0a1b..b3f71481d9 100644 --- a/src/overlays/actors/ovl_En_Door/z_en_door.c +++ b/src/overlays/actors/ovl_En_Door/z_en_door.c @@ -5,7 +5,18 @@ */ #include "z_en_door.h" -#include "global.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/gameplay_field_keep/gameplay_field_keep.h" #include "assets/objects/object_hidan_objects/object_hidan_objects.h" diff --git a/src/overlays/actors/ovl_En_Ds/z_en_ds.c b/src/overlays/actors/ovl_En_Ds/z_en_ds.c index c76713a756..3c879ee1ac 100644 --- a/src/overlays/actors/ovl_En_Ds/z_en_ds.c +++ b/src/overlays/actors/ovl_En_Ds/z_en_ds.c @@ -5,6 +5,16 @@ */ #include "z_en_ds.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_ds/object_ds.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) diff --git a/src/overlays/actors/ovl_En_Ds/z_en_ds.h b/src/overlays/actors/ovl_En_Ds/z_en_ds.h index 8f10ce8285..9c7df969c6 100644 --- a/src/overlays/actors/ovl_En_Ds/z_en_ds.h +++ b/src/overlays/actors/ovl_En_Ds/z_en_ds.h @@ -2,11 +2,11 @@ #define Z_EN_DS_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnDs; -typedef void (*EnDsActionFunc)(struct EnDs*, PlayState*); +typedef void (*EnDsActionFunc)(struct EnDs*, struct PlayState*); typedef struct EnDs { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Du/z_en_du.c b/src/overlays/actors/ovl_En_Du/z_en_du.c index 5e391c4234..b6b3b06148 100644 --- a/src/overlays/actors/ovl_En_Du/z_en_du.c +++ b/src/overlays/actors/ovl_En_Du/z_en_du.c @@ -1,4 +1,19 @@ #include "z_en_du.h" + +#include "gfx.h" +#include "one_point_cutscene.h" +#include "segmented_address.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64face_reaction.h" +#include "z64ocarina.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_du/object_du.h" #include "assets/scenes/overworld/spot18/spot18_scene.h" diff --git a/src/overlays/actors/ovl_En_Du/z_en_du.h b/src/overlays/actors/ovl_En_Du/z_en_du.h index 541b4368e8..9e3ecb8805 100644 --- a/src/overlays/actors/ovl_En_Du/z_en_du.h +++ b/src/overlays/actors/ovl_En_Du/z_en_du.h @@ -2,11 +2,11 @@ #define Z_EN_DU_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnDu; -typedef void (*EnDuActionFunc)(struct EnDu*, PlayState*); +typedef void (*EnDuActionFunc)(struct EnDu*, struct PlayState*); typedef struct EnDu { /* 0x0000 */ Actor actor; 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 836610b781..59a8b41ec6 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 @@ -5,8 +5,17 @@ */ #include "z_en_dy_extra.h" -#include "assets/objects/object_dy_obj/object_dy_obj.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64play.h" + +#include "assets/objects/object_dy_obj/object_dy_obj.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Dy_Extra/z_en_dy_extra.h b/src/overlays/actors/ovl_En_Dy_Extra/z_en_dy_extra.h index 0a6ce3c3a8..cf0fba2ea1 100644 --- a/src/overlays/actors/ovl_En_Dy_Extra/z_en_dy_extra.h +++ b/src/overlays/actors/ovl_En_Dy_Extra/z_en_dy_extra.h @@ -2,11 +2,11 @@ #define Z_EN_DY_EXTRA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnDyExtra; -typedef void (*EnDyExtraActionFunc)(struct EnDyExtra*, PlayState*); +typedef void (*EnDyExtraActionFunc)(struct EnDyExtra*, struct PlayState*); typedef struct EnDyExtra { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Eg/z_en_eg.c b/src/overlays/actors/ovl_En_Eg/z_en_eg.c index c646cdf249..9023f99eac 100644 --- a/src/overlays/actors/ovl_En_Eg/z_en_eg.c +++ b/src/overlays/actors/ovl_En_Eg/z_en_eg.c @@ -5,7 +5,15 @@ */ #include "z_en_eg.h" + +#include "regs.h" +#include "seqcmd.h" +#include "sequence.h" +#include "sfx.h" #include "terminal.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64save.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_En_Eg/z_en_eg.h b/src/overlays/actors/ovl_En_Eg/z_en_eg.h index ad02d8a6b7..c42994f61c 100644 --- a/src/overlays/actors/ovl_En_Eg/z_en_eg.h +++ b/src/overlays/actors/ovl_En_Eg/z_en_eg.h @@ -2,11 +2,11 @@ #define Z_EN_EG_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnEg; -typedef void (*EnEgActionFunc)(struct EnEg*, PlayState*); +typedef void (*EnEgActionFunc)(struct EnEg*, struct PlayState*); typedef struct EnEg { /* 0x0000 */ Actor actor; 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 554512b148..d60d91c222 100644 --- a/src/overlays/actors/ovl_En_Eiyer/z_en_eiyer.c +++ b/src/overlays/actors/ovl_En_Eiyer/z_en_eiyer.c @@ -1,4 +1,16 @@ #include "z_en_eiyer.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_ei/object_ei.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE) diff --git a/src/overlays/actors/ovl_En_Eiyer/z_en_eiyer.h b/src/overlays/actors/ovl_En_Eiyer/z_en_eiyer.h index 7f756596aa..7626924496 100644 --- a/src/overlays/actors/ovl_En_Eiyer/z_en_eiyer.h +++ b/src/overlays/actors/ovl_En_Eiyer/z_en_eiyer.h @@ -2,11 +2,11 @@ #define Z_EN_EIYER_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnEiyer; -typedef void (*EnEiyerActionFunc)(struct EnEiyer*, PlayState*); +typedef void (*EnEiyerActionFunc)(struct EnEiyer*, struct PlayState*); typedef struct EnEiyer { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Elf/z_en_elf.c b/src/overlays/actors/ovl_En_Elf/z_en_elf.c index cd3658756e..58cd30f3ff 100644 --- a/src/overlays/actors/ovl_En_Elf/z_en_elf.c +++ b/src/overlays/actors/ovl_En_Elf/z_en_elf.c @@ -5,7 +5,28 @@ */ #include "z_en_elf.h" -#include "global.h" +#include "overlays/actors/ovl_Elf_Msg/z_elf_msg.h" + +#include "libc64/qrand.h" +#include "libu64/debug.h" +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "regs.h" +#include "sfx.h" +#include "sys_math.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64effect.h" +#include "z64light.h" +#include "z64play.h" +#include "z64player.h" +#include "z64quest_hint.h" +#include "z64save.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED | ACTOR_FLAG_UPDATE_DURING_OCARINA) diff --git a/src/overlays/actors/ovl_En_Elf/z_en_elf.h b/src/overlays/actors/ovl_En_Elf/z_en_elf.h index 2190065f71..60e9940d75 100644 --- a/src/overlays/actors/ovl_En_Elf/z_en_elf.h +++ b/src/overlays/actors/ovl_En_Elf/z_en_elf.h @@ -4,7 +4,6 @@ #include "ultra64.h" #include "z64actor.h" #include "z64light.h" -#include "overlays/actors/ovl_Elf_Msg/z_elf_msg.h" struct EnElf; @@ -23,7 +22,7 @@ typedef struct EnElf { /* 0x0278 */ LightInfo lightInfoNoGlow; /* 0x0288 */ LightNode* lightNodeNoGlow; /* 0x028C */ Vec3f unk_28C; - /* 0x0298 */ ElfMsg* elfMsg; + /* 0x0298 */ struct ElfMsg* elfMsg; /* 0x029C */ f32 unk_29C; /* 0x02A0 */ f32 unk_2A0; /* 0x02A4 */ f32 unk_2A4; diff --git a/src/overlays/actors/ovl_En_Encount1/z_en_encount1.c b/src/overlays/actors/ovl_En_Encount1/z_en_encount1.c index e513de558e..b60eb08a6d 100644 --- a/src/overlays/actors/ovl_En_Encount1/z_en_encount1.c +++ b/src/overlays/actors/ovl_En_Encount1/z_en_encount1.c @@ -1,6 +1,15 @@ #include "z_en_encount1.h" -#include "terminal.h" #include "overlays/actors/ovl_En_Tite/z_en_tite.h" +#include "overlays/actors/ovl_En_Reeba/z_en_reeba.h" + +#include "rand.h" +#include "regs.h" +#include "terminal.h" +#include "z_lib.h" +#include "z64debug_display.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_LOCK_ON_DISABLED) diff --git a/src/overlays/actors/ovl_En_Encount1/z_en_encount1.h b/src/overlays/actors/ovl_En_Encount1/z_en_encount1.h index 2dc033f98c..b9c8c1d882 100644 --- a/src/overlays/actors/ovl_En_Encount1/z_en_encount1.h +++ b/src/overlays/actors/ovl_En_Encount1/z_en_encount1.h @@ -2,14 +2,13 @@ #define Z_EN_ENCOUNT1_H #include "ultra64.h" -#include "global.h" -#include "overlays/actors/ovl_En_Reeba/z_en_reeba.h" +#include "z64actor.h" #define SPAWNER_PARAMS(type, number, total) ((type << 0xB) | (number << 0x6) | total) struct EnEncount1; -typedef void (*EnEncount1UpdateFunc)(struct EnEncount1*, PlayState*); +typedef void (*EnEncount1UpdateFunc)(struct EnEncount1*, struct PlayState*); typedef struct EnEncount1 { /* 0x0000 */ Actor actor; @@ -27,7 +26,7 @@ typedef struct EnEncount1 { /* 0x0164 */ s16 timer; /* 0x0166 */ u8 reduceLeevers; /* 0x0168 */ f32 spawnRange; - /* 0x016C */ EnReeba* bigLeever; + /* 0x016C */ struct EnReeba* bigLeever; } EnEncount1; // size = 0x0170 typedef enum EnEncount1type { 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 d0ba211fda..0fd64079e6 100644 --- a/src/overlays/actors/ovl_En_Encount2/z_en_encount2.c +++ b/src/overlays/actors/ovl_En_Encount2/z_en_encount2.c @@ -1,7 +1,19 @@ #include "z_en_encount2.h" #include "overlays/actors/ovl_En_Fire_Rock/z_en_fire_rock.h" + +#include "libc64/qrand.h" +#include "attributes.h" +#include "gfx.h" #include "quake.h" +#include "rand.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_efc_star_field/object_efc_star_field.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Encount2/z_en_encount2.h b/src/overlays/actors/ovl_En_Encount2/z_en_encount2.h index c3e0a0655e..c91c7a7512 100644 --- a/src/overlays/actors/ovl_En_Encount2/z_en_encount2.h +++ b/src/overlays/actors/ovl_En_Encount2/z_en_encount2.h @@ -2,11 +2,11 @@ #define Z_EN_ENCOUNT2_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnEncount2; -typedef void (*EnEncount2ActionFunc)(struct EnEncount2*, PlayState*); +typedef void (*EnEncount2ActionFunc)(struct EnEncount2*, struct PlayState*); #define EN_ENCOUNT2_EFFECT_COUNT 50 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 fea14bc560..b7232a5c45 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 @@ -6,8 +6,21 @@ #include "z_en_ex_item.h" #include "overlays/actors/ovl_En_Bom_Bowl_Pit/z_en_bom_bowl_pit.h" -#include "assets/objects/gameplay_keep/gameplay_keep.h" + +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64draw.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/gameplay_keep/gameplay_keep.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Ex_Item/z_en_ex_item.h b/src/overlays/actors/ovl_En_Ex_Item/z_en_ex_item.h index 1dd06afcbd..eba20bc116 100644 --- a/src/overlays/actors/ovl_En_Ex_Item/z_en_ex_item.h +++ b/src/overlays/actors/ovl_En_Ex_Item/z_en_ex_item.h @@ -2,12 +2,12 @@ #define Z_EN_EX_ITEM_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnExItem; -typedef void (*EnExItemActionFunc)(struct EnExItem* this, PlayState* play); -typedef void (*EnExItemLightFunc)(Actor*, PlayState*, s32); +typedef void (*EnExItemActionFunc)(struct EnExItem* this, struct PlayState* play); +typedef void (*EnExItemLightFunc)(Actor*, struct PlayState*, s32); typedef struct EnExItem { /* 0x0000 */ Actor 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 55f97c3686..88e2d884c2 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 @@ -1,6 +1,20 @@ #include "z_en_ex_ruppy.h" +#include "overlays/actors/ovl_En_Diving_Game/z_en_diving_game.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" -#include "../ovl_En_Diving_Game/z_en_diving_game.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_En_Ex_Ruppy/z_en_ex_ruppy.h b/src/overlays/actors/ovl_En_Ex_Ruppy/z_en_ex_ruppy.h index 33dcca4447..7ba20450e8 100644 --- a/src/overlays/actors/ovl_En_Ex_Ruppy/z_en_ex_ruppy.h +++ b/src/overlays/actors/ovl_En_Ex_Ruppy/z_en_ex_ruppy.h @@ -2,11 +2,11 @@ #define Z_EN_EX_RUPPY_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnExRuppy; -typedef void (*EnExRuppyActionFunc)(struct EnExRuppy*, PlayState*); +typedef void (*EnExRuppyActionFunc)(struct EnExRuppy*, struct PlayState*); typedef struct EnExRuppy { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Fd/z_en_fd.c b/src/overlays/actors/ovl_En_Fd/z_en_fd.c index 785b4937aa..26848dd956 100644 --- a/src/overlays/actors/ovl_En_Fd/z_en_fd.c +++ b/src/overlays/actors/ovl_En_Fd/z_en_fd.c @@ -5,7 +5,21 @@ */ #include "z_en_fd.h" + +#include "libc64/math64.h" +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" #include "versions.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_fw/object_fw.h" @@ -460,7 +474,7 @@ void EnFd_Init(Actor* thisx, PlayState* play) { SkelAnime_InitFlex(play, &this->skelAnime, &gFlareDancerSkel, NULL, this->jointTable, this->morphTable, 27); ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 32.0f); Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colSphs); + Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderElements); CollisionCheck_SetInfo2(&this->actor.colChkInfo, DamageTable_Get(0xF), &sColChkInit); this->actor.flags &= ~ACTOR_FLAG_ATTENTION_ENABLED; this->actor.flags |= ACTOR_FLAG_SFX_FOR_PLAYER_BODY_HIT; diff --git a/src/overlays/actors/ovl_En_Fd/z_en_fd.h b/src/overlays/actors/ovl_En_Fd/z_en_fd.h index 3559410526..3fc40a54cf 100644 --- a/src/overlays/actors/ovl_En_Fd/z_en_fd.h +++ b/src/overlays/actors/ovl_En_Fd/z_en_fd.h @@ -2,11 +2,11 @@ #define Z_EN_FD_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnFd; -typedef void (*EnFdActionFunc)(struct EnFd* this, PlayState* play); +typedef void (*EnFdActionFunc)(struct EnFd* this, struct PlayState* play); typedef enum FDEffectType { FD_EFFECT_NONE, @@ -34,7 +34,7 @@ typedef struct EnFd { /* 0x014C */ SkelAnime skelAnime; /* 0x0190 */ EnFdActionFunc actionFunc; /* 0x0194 */ ColliderJntSph collider; - /* 0x01B4 */ ColliderJntSphElement colSphs[12]; + /* 0x01B4 */ ColliderJntSphElement colliderElements[12]; /* 0x04B4 */ u8 coreActive; /* 0x04B6 */ s16 initYawToInitPos; /* 0x04B8 */ s16 curYawToInitPos; diff --git a/src/overlays/actors/ovl_En_Fd_Fire/z_en_fd_fire.c b/src/overlays/actors/ovl_En_Fd_Fire/z_en_fd_fire.c index d408b7b9ac..815d8c654d 100644 --- a/src/overlays/actors/ovl_En_Fd_Fire/z_en_fd_fire.c +++ b/src/overlays/actors/ovl_En_Fd_Fire/z_en_fd_fire.c @@ -1,4 +1,13 @@ #include "z_en_fd_fire.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Fd_Fire/z_en_fd_fire.h b/src/overlays/actors/ovl_En_Fd_Fire/z_en_fd_fire.h index 414fdf997a..d027a07972 100644 --- a/src/overlays/actors/ovl_En_Fd_Fire/z_en_fd_fire.h +++ b/src/overlays/actors/ovl_En_Fd_Fire/z_en_fd_fire.h @@ -2,11 +2,11 @@ #define Z_EN_FD_FIRE_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnFdFire; -typedef void (*EnFdFireActionFunc)(struct EnFdFire* this, PlayState* play); +typedef void (*EnFdFireActionFunc)(struct EnFdFire* this, struct PlayState* play); typedef struct EnFdFire { /* 0x0000 */ Actor actor; 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 aa3f190cee..308c9f5137 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 @@ -5,12 +5,28 @@ */ #include "z_en_fhg_fire.h" -#include "assets/objects/object_fhg/object_fhg.h" -#include "assets/objects/gameplay_keep/gameplay_keep.h" #include "overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.h" #include "overlays/actors/ovl_En_fHG/z_en_fhg.h" #include "overlays/effects/ovl_Effect_Ss_Fhg_Flash/z_eff_ss_fhg_flash.h" +#include "libc64/math64.h" +#include "libc64/qrand.h" +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "rumble.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + +#include "assets/objects/gameplay_keep/gameplay_keep.h" +#include "assets/objects/object_fhg/object_fhg.h" + #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) typedef enum StrikeMode { diff --git a/src/overlays/actors/ovl_En_Fhg_Fire/z_en_fhg_fire.h b/src/overlays/actors/ovl_En_Fhg_Fire/z_en_fhg_fire.h index ac2682aaf1..59136f7dfd 100644 --- a/src/overlays/actors/ovl_En_Fhg_Fire/z_en_fhg_fire.h +++ b/src/overlays/actors/ovl_En_Fhg_Fire/z_en_fhg_fire.h @@ -2,11 +2,12 @@ #define Z_EN_FHG_FIRE_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" +#include "z64light.h" struct EnFhgFire; -typedef void (*EnFhgFireUpdateFunc)(struct EnFhgFire*, PlayState*); +typedef void (*EnFhgFireUpdateFunc)(struct EnFhgFire*, struct PlayState*); typedef enum FhgFireParam { /* 1 */ FHGFIRE_LIGHTNING_STRIKE = 1, 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 2f7cd50862..f9af6f916d 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 @@ -1,6 +1,20 @@ #include "z_en_fire_rock.h" #include "overlays/actors/ovl_En_Encount2/z_en_encount2.h" + +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "regs.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64debug_display.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_efc_star_field/object_efc_star_field.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Fire_Rock/z_en_fire_rock.h b/src/overlays/actors/ovl_En_Fire_Rock/z_en_fire_rock.h index 6e387bdb39..9b88eaa2c0 100644 --- a/src/overlays/actors/ovl_En_Fire_Rock/z_en_fire_rock.h +++ b/src/overlays/actors/ovl_En_Fire_Rock/z_en_fire_rock.h @@ -2,7 +2,7 @@ #define Z_EN_FIRE_ROCK_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" #include "overlays/actors/ovl_En_Encount2/z_en_encount2.h" @@ -17,7 +17,7 @@ typedef enum EnFireRockType { struct EnFireRock; -typedef void (*EnFireRockActionFunc)(struct EnFireRock*, PlayState*); +typedef void (*EnFireRockActionFunc)(struct EnFireRock*, struct PlayState*); typedef struct EnFireRock { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Firefly/z_en_firefly.c b/src/overlays/actors/ovl_En_Firefly/z_en_firefly.c index 6a72e29224..e674ee9bf5 100644 --- a/src/overlays/actors/ovl_En_Firefly/z_en_firefly.c +++ b/src/overlays/actors/ovl_En_Firefly/z_en_firefly.c @@ -5,10 +5,24 @@ */ #include "z_en_firefly.h" -#include "versions.h" -#include "assets/objects/object_firefly/object_firefly.h" #include "overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.h" +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "versions.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + +#include "assets/objects/object_firefly/object_firefly.h" + #define FLAGS \ (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_IGNORE_QUAKE | ACTOR_FLAG_CAN_ATTACH_TO_ARROW) @@ -145,7 +159,7 @@ void EnFirefly_Init(Actor* thisx, PlayState* play) { ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 25.0f); SkelAnime_Init(play, &this->skelAnime, &gKeeseSkeleton, &gKeeseFlyAnim, this->jointTable, this->morphTable, 28); Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderItems); + Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderElements); CollisionCheck_SetInfo(&this->actor.colChkInfo, &sDamageTable, &sColChkInfoInit); if (PARAMS_GET_NOSHIFT(this->actor.params, 15, 1) != 0) { diff --git a/src/overlays/actors/ovl_En_Firefly/z_en_firefly.h b/src/overlays/actors/ovl_En_Firefly/z_en_firefly.h index 165cc5c26e..7638036a82 100644 --- a/src/overlays/actors/ovl_En_Firefly/z_en_firefly.h +++ b/src/overlays/actors/ovl_En_Firefly/z_en_firefly.h @@ -2,11 +2,11 @@ #define Z_EN_FIREFLY_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnFirefly; -typedef void (*EnFireflyActionFunc)(struct EnFirefly*, PlayState*); +typedef void (*EnFireflyActionFunc)(struct EnFirefly*, struct PlayState*); typedef struct EnFirefly { /* 0x0000 */ Actor actor; @@ -21,7 +21,7 @@ typedef struct EnFirefly { /* 0x0266 */ Vec3s morphTable[28]; /* 0x0310 */ f32 maxAltitude; /* 0x0314 */ ColliderJntSph collider; - /* 0x0344 */ ColliderJntSphElement colliderItems[1]; + /* 0x0344 */ ColliderJntSphElement colliderElements[1]; } EnFirefly; // size = 0x0374 typedef enum KeeseType { 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 8ef16187f3..6634d2cf2c 100644 --- a/src/overlays/actors/ovl_En_Fish/z_en_fish.c +++ b/src/overlays/actors/ovl_En_Fish/z_en_fish.c @@ -5,9 +5,19 @@ */ #include "z_en_fish.h" -#include "global.h" -#include "assets/objects/gameplay_keep/gameplay_keep.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" #include "terminal.h" +#include "z_lib.h" +#include "z64item.h" +#include "z64play.h" +#include "z64player.h" + +#include "assets/objects/gameplay_keep/gameplay_keep.h" #define FLAGS 0 @@ -135,7 +145,7 @@ void EnFish_Init(Actor* thisx, PlayState* play) { Actor_ProcessInitChain(&this->actor, sInitChain); SkelAnime_InitFlex(play, &this->skelAnime, &gFishSkel, &gFishInWaterAnim, this->jointTable, this->morphTable, 7); Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderItems); + Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderElements); this->actor.colChkInfo.mass = 50; this->slowPhase = Rand_ZeroOne() * (0xFFFF + 0.5f); this->fastPhase = Rand_ZeroOne() * (0xFFFF + 0.5f); diff --git a/src/overlays/actors/ovl_En_Fish/z_en_fish.h b/src/overlays/actors/ovl_En_Fish/z_en_fish.h index 01cdbd0b36..d75de5b0a5 100644 --- a/src/overlays/actors/ovl_En_Fish/z_en_fish.h +++ b/src/overlays/actors/ovl_En_Fish/z_en_fish.h @@ -11,7 +11,7 @@ typedef void (*EnFishActionFunc)(struct EnFish*, struct PlayState*); typedef struct EnFish { /* 0x0000 */ Actor actor; /* 0x014C */ ColliderJntSph collider; - /* 0x016C */ ColliderJntSphElement colliderItems[1]; + /* 0x016C */ ColliderJntSphElement colliderElements[1]; /* 0x01AC */ SkelAnime skelAnime; /* 0x01F0 */ Vec3s jointTable[7]; /* 0x021A */ Vec3s morphTable[7]; 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 035a825073..d365822f59 100644 --- a/src/overlays/actors/ovl_En_Floormas/z_en_floormas.c +++ b/src/overlays/actors/ovl_En_Floormas/z_en_floormas.c @@ -5,6 +5,19 @@ */ #include "z_en_floormas.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_wallmaster/object_wallmaster.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_HOOKSHOT_PULLS_PLAYER) diff --git a/src/overlays/actors/ovl_En_Floormas/z_en_floormas.h b/src/overlays/actors/ovl_En_Floormas/z_en_floormas.h index 4c30b8773b..4aefd1ad97 100644 --- a/src/overlays/actors/ovl_En_Floormas/z_en_floormas.h +++ b/src/overlays/actors/ovl_En_Floormas/z_en_floormas.h @@ -2,11 +2,11 @@ #define Z_EN_FLOORMAS_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" typedef struct EnFloormas EnFloormas; -typedef void (*EnFloormasActionFunc)(EnFloormas* this, PlayState* play); +typedef void (*EnFloormasActionFunc)(EnFloormas* this, struct PlayState* play); struct EnFloormas{ /* 0x0000 */ Actor actor; 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 ee133164c2..9bfa0c0ff2 100644 --- a/src/overlays/actors/ovl_En_Fr/z_en_fr.c +++ b/src/overlays/actors/ovl_En_Fr/z_en_fr.c @@ -1,6 +1,29 @@ #include "z_en_fr.h" -#include "assets/objects/gameplay_field_keep/gameplay_field_keep.h" + +#include "controller.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "rand.h" +#include "regs.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64debug_display.h" +#include "z64effect.h" +#include "z64light.h" +#include "z64ocarina.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "global.h" + +#include "assets/objects/gameplay_field_keep/gameplay_field_keep.h" #include "assets/objects/object_fr/object_fr.h" #define FLAGS \ diff --git a/src/overlays/actors/ovl_En_Fr/z_en_fr.h b/src/overlays/actors/ovl_En_Fr/z_en_fr.h index 95a365dd9b..2bed02b4a0 100644 --- a/src/overlays/actors/ovl_En_Fr/z_en_fr.h +++ b/src/overlays/actors/ovl_En_Fr/z_en_fr.h @@ -2,11 +2,12 @@ #define Z_EN_FR_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" +#include "z64light.h" struct EnFr; -typedef void (*EnFrActionFunc)(struct EnFr*, PlayState*); +typedef void (*EnFrActionFunc)(struct EnFr*, struct PlayState*); typedef void (*EnFrBlinkFunc)(struct EnFr*); typedef enum FrogType { diff --git a/src/overlays/actors/ovl_En_Fu/z_en_fu.c b/src/overlays/actors/ovl_En_Fu/z_en_fu.c index 8069e6cb26..24818477d7 100644 --- a/src/overlays/actors/ovl_En_Fu/z_en_fu.c +++ b/src/overlays/actors/ovl_En_Fu/z_en_fu.c @@ -5,6 +5,19 @@ */ #include "z_en_fu.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64face_reaction.h" +#include "z64ocarina.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_fu/object_fu.h" #include "assets/scenes/indoors/hakasitarelay/hakasitarelay_scene.h" diff --git a/src/overlays/actors/ovl_En_Fu/z_en_fu.h b/src/overlays/actors/ovl_En_Fu/z_en_fu.h index dbbcacfc54..af90b2cf05 100644 --- a/src/overlays/actors/ovl_En_Fu/z_en_fu.h +++ b/src/overlays/actors/ovl_En_Fu/z_en_fu.h @@ -2,11 +2,11 @@ #define Z_EN_FU_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnFu; -typedef void (*EnFuActionFunc)(struct EnFu*, PlayState*); +typedef void (*EnFuActionFunc)(struct EnFu*, struct PlayState*); typedef enum EnFuLimb { /* 0x00 */ FU_LIMB_ROOT, diff --git a/src/overlays/actors/ovl_En_Fw/z_en_fw.c b/src/overlays/actors/ovl_En_Fw/z_en_fw.c index bb11ab8f58..b9a678d699 100644 --- a/src/overlays/actors/ovl_En_Fw/z_en_fw.c +++ b/src/overlays/actors/ovl_En_Fw/z_en_fw.c @@ -5,9 +5,22 @@ */ #include "z_en_fw.h" -#include "assets/objects/object_fw/object_fw.h" #include "overlays/actors/ovl_En_Bom/z_en_bom.h" + +#include "libc64/math64.h" +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" +#include "assets/objects/object_fw/object_fw.h" #define FLAGS \ (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED | \ @@ -193,7 +206,7 @@ void EnFw_Init(Actor* thisx, PlayState* play) { Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENFW_ANIM_0); ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 20.0f); Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->sphs); + Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderElements); CollisionCheck_SetInfo2(&this->actor.colChkInfo, DamageTable_Get(0x10), &D_80A1FB94); Actor_SetScale(&this->actor, 0.01f); this->runDirection = -this->actor.params; diff --git a/src/overlays/actors/ovl_En_Fw/z_en_fw.h b/src/overlays/actors/ovl_En_Fw/z_en_fw.h index 7940a98157..b19f967111 100644 --- a/src/overlays/actors/ovl_En_Fw/z_en_fw.h +++ b/src/overlays/actors/ovl_En_Fw/z_en_fw.h @@ -2,11 +2,11 @@ #define Z_EN_FW_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnFw; -typedef void (*EnFwActionFunc)(struct EnFw* this, PlayState* play); +typedef void (*EnFwActionFunc)(struct EnFw* this, struct PlayState* play); #define EN_FW_EFFECT_COUNT 20 @@ -28,7 +28,7 @@ typedef struct EnFw { /* 0x014C */ SkelAnime skelAnime; /* 0x0190 */ EnFwActionFunc actionFunc; /* 0x0194 */ ColliderJntSph collider; - /* 0x01B4 */ ColliderJntSphElement sphs[1]; + /* 0x01B4 */ ColliderJntSphElement colliderElements[1]; /* 0x01F4 */ Vec3f bompPos; /* 0x0200 */ u8 lastDmgHook; /* 0x0202 */ s16 runDirection; diff --git a/src/overlays/actors/ovl_En_Fz/z_en_fz.c b/src/overlays/actors/ovl_En_Fz/z_en_fz.c index af3ca60170..6ded127aef 100644 --- a/src/overlays/actors/ovl_En_Fz/z_en_fz.c +++ b/src/overlays/actors/ovl_En_Fz/z_en_fz.c @@ -1,4 +1,17 @@ #include "z_en_fz.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/object_fz/object_fz.h" #define FLAGS \ diff --git a/src/overlays/actors/ovl_En_Fz/z_en_fz.h b/src/overlays/actors/ovl_En_Fz/z_en_fz.h index a7fa2d7134..277e039e2d 100644 --- a/src/overlays/actors/ovl_En_Fz/z_en_fz.h +++ b/src/overlays/actors/ovl_En_Fz/z_en_fz.h @@ -2,11 +2,11 @@ #define Z_EN_FZ_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnFz; -typedef void (*EnFzActionFunc)(struct EnFz*, PlayState*); +typedef void (*EnFzActionFunc)(struct EnFz*, struct PlayState*); typedef void (*EnFzSpawnIceSmokeFunc)(struct EnFz*); typedef struct EnFzEffect { 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 8cfec63ce1..cbc6fff801 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 @@ -5,10 +5,28 @@ */ #include "z_en_g_switch.h" -#include "terminal.h" #include "overlays/actors/ovl_En_Syateki_Itm/z_en_syateki_itm.h" #include "overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h" #include "overlays/effects/ovl_Effect_Ss_HitMark/z_eff_ss_hitmark.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "regs.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "terminal.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64debug_display.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_tsubo/object_tsubo.h" diff --git a/src/overlays/actors/ovl_En_G_Switch/z_en_g_switch.h b/src/overlays/actors/ovl_En_G_Switch/z_en_g_switch.h index 58e19ea9c1..c680fb1440 100644 --- a/src/overlays/actors/ovl_En_G_Switch/z_en_g_switch.h +++ b/src/overlays/actors/ovl_En_G_Switch/z_en_g_switch.h @@ -2,11 +2,11 @@ #define Z_EN_G_SWITCH_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnGSwitch; -typedef void (*EnGSwitchActionFunc)(struct EnGSwitch*, PlayState*); +typedef void (*EnGSwitchActionFunc)(struct EnGSwitch*, struct PlayState*); typedef enum EnGSwitchMoveMode { /* 0 */ GSWITCH_NONE, diff --git a/src/overlays/actors/ovl_En_Ganon_Mant/z_en_ganon_mant.c b/src/overlays/actors/ovl_En_Ganon_Mant/z_en_ganon_mant.c index 6e323a62c8..ca06391dcf 100644 --- a/src/overlays/actors/ovl_En_Ganon_Mant/z_en_ganon_mant.c +++ b/src/overlays/actors/ovl_En_Ganon_Mant/z_en_ganon_mant.c @@ -5,6 +5,15 @@ */ #include "z_en_ganon_mant.h" + +#include "gfx.h" +#include "rand.h" +#include "segmented_address.h" +#include "sys_math.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" + #include "overlays/actors/ovl_Boss_Ganon/z_boss_ganon.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Ganon_Mant/z_en_ganon_mant.h b/src/overlays/actors/ovl_En_Ganon_Mant/z_en_ganon_mant.h index f319bfbf83..61bf1826bc 100644 --- a/src/overlays/actors/ovl_En_Ganon_Mant/z_en_ganon_mant.h +++ b/src/overlays/actors/ovl_En_Ganon_Mant/z_en_ganon_mant.h @@ -2,7 +2,7 @@ #define Z_EN_GANON_MANT_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnGanonMant; diff --git a/src/overlays/actors/ovl_En_Ganon_Organ/z_en_ganon_organ.c b/src/overlays/actors/ovl_En_Ganon_Organ/z_en_ganon_organ.c index d64111fb9d..30f18393a0 100644 --- a/src/overlays/actors/ovl_En_Ganon_Organ/z_en_ganon_organ.c +++ b/src/overlays/actors/ovl_En_Ganon_Organ/z_en_ganon_organ.c @@ -5,6 +5,12 @@ */ #include "z_en_ganon_organ.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sys_matrix.h" +#include "z64play.h" + #include "overlays/actors/ovl_Boss_Ganon/z_boss_ganon.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Ganon_Organ/z_en_ganon_organ.h b/src/overlays/actors/ovl_En_Ganon_Organ/z_en_ganon_organ.h index 0c301bddca..8d20bee4d3 100644 --- a/src/overlays/actors/ovl_En_Ganon_Organ/z_en_ganon_organ.h +++ b/src/overlays/actors/ovl_En_Ganon_Organ/z_en_ganon_organ.h @@ -2,7 +2,7 @@ #define Z_EN_GANON_ORGAN_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnGanonOrgan; diff --git a/src/overlays/actors/ovl_En_Gb/z_en_gb.c b/src/overlays/actors/ovl_En_Gb/z_en_gb.c index 388a11cc30..0bc9d51d95 100644 --- a/src/overlays/actors/ovl_En_Gb/z_en_gb.c +++ b/src/overlays/actors/ovl_En_Gb/z_en_gb.c @@ -5,6 +5,21 @@ */ #include "z_en_gb.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64light.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_ps/object_ps.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) diff --git a/src/overlays/actors/ovl_En_Gb/z_en_gb.h b/src/overlays/actors/ovl_En_Gb/z_en_gb.h index 4005075c4c..24b7d30560 100644 --- a/src/overlays/actors/ovl_En_Gb/z_en_gb.h +++ b/src/overlays/actors/ovl_En_Gb/z_en_gb.h @@ -2,11 +2,12 @@ #define Z_EN_GB_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" +#include "z64light.h" struct EnGb; -typedef void (*EnGbActionFunc)(struct EnGb*, PlayState*); +typedef void (*EnGbActionFunc)(struct EnGb*, struct PlayState*); typedef struct EnGbCagedSoulInfo { /* 0x00 */ Color_RGBA8 prim; 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 6f526c242e..799777c9fd 100644 --- a/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c +++ b/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c @@ -5,8 +5,21 @@ */ #include "z_en_ge1.h" -#include "z64horse.h" + +#include "libu64/debug.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64face_reaction.h" +#include "z64horse.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_ge1/object_ge1.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) diff --git a/src/overlays/actors/ovl_En_Ge1/z_en_ge1.h b/src/overlays/actors/ovl_En_Ge1/z_en_ge1.h index 7fb1692f62..6aaaf2ab37 100644 --- a/src/overlays/actors/ovl_En_Ge1/z_en_ge1.h +++ b/src/overlays/actors/ovl_En_Ge1/z_en_ge1.h @@ -2,12 +2,12 @@ #define Z_EN_GE1_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnGe1; typedef void (*EnGe1AnimFunc)(struct EnGe1*); -typedef void (*EnGe1ActionFunc)(struct EnGe1*, PlayState*); +typedef void (*EnGe1ActionFunc)(struct EnGe1*, struct PlayState*); typedef enum EnGe1Type { /* 0x00 */ GE1_TYPE_GATE_GUARD, 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 0df133fe4f..2ff3ec7b51 100644 --- a/src/overlays/actors/ovl_En_Ge2/z_en_ge2.c +++ b/src/overlays/actors/ovl_En_Ge2/z_en_ge2.c @@ -5,8 +5,20 @@ */ #include "z_en_ge2.h" -#include "z64horse.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64horse.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_gla/object_gla.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Ge2/z_en_ge2.h b/src/overlays/actors/ovl_En_Ge2/z_en_ge2.h index 7c78ad91a6..b453531040 100644 --- a/src/overlays/actors/ovl_En_Ge2/z_en_ge2.h +++ b/src/overlays/actors/ovl_En_Ge2/z_en_ge2.h @@ -2,11 +2,11 @@ #define Z_EN_GE2_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnGe2; -typedef void (*EnGe2ActionFunc)(struct EnGe2*, PlayState*); +typedef void (*EnGe2ActionFunc)(struct EnGe2*, struct PlayState*); typedef struct EnGe2 { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Ge3/z_en_ge3.c b/src/overlays/actors/ovl_En_Ge3/z_en_ge3.c index 614936d3bc..5e0783bc30 100644 --- a/src/overlays/actors/ovl_En_Ge3/z_en_ge3.c +++ b/src/overlays/actors/ovl_En_Ge3/z_en_ge3.c @@ -5,8 +5,19 @@ */ #include "z_en_ge3.h" -#include "assets/objects/object_geldb/object_geldb.h" + +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sys_matrix.h" #include "versions.h" +#include "z_lib.h" +#include "z64item.h" +#include "z64play.h" +#include "z64player.h" + +#include "assets/objects/object_geldb/object_geldb.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Ge3/z_en_ge3.h b/src/overlays/actors/ovl_En_Ge3/z_en_ge3.h index 4bb5c7b3fc..d767ba6d9a 100644 --- a/src/overlays/actors/ovl_En_Ge3/z_en_ge3.h +++ b/src/overlays/actors/ovl_En_Ge3/z_en_ge3.h @@ -2,12 +2,12 @@ #define Z_EN_GE3_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" #include "overlays/actors/ovl_En_GeldB/z_en_geldb.h" struct EnGe3; -typedef void (*EnGe3ActionFunc)(struct EnGe3*, PlayState*); +typedef void (*EnGe3ActionFunc)(struct EnGe3*, struct PlayState*); typedef struct EnGe3 { /* 0x0000 */ Actor actor; 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 8ecd36af5e..33b53f4dcd 100644 --- a/src/overlays/actors/ovl_En_GeldB/z_en_geldb.c +++ b/src/overlays/actors/ovl_En_GeldB/z_en_geldb.c @@ -5,6 +5,24 @@ */ #include "z_en_geldb.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "segmented_address.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_geldb/object_geldb.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_GeldB/z_en_geldb.h b/src/overlays/actors/ovl_En_GeldB/z_en_geldb.h index 8ca9f1ac6a..e1a7ff3ea0 100644 --- a/src/overlays/actors/ovl_En_GeldB/z_en_geldb.h +++ b/src/overlays/actors/ovl_En_GeldB/z_en_geldb.h @@ -2,7 +2,7 @@ #define Z_EN_GELDB_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnGeldB; @@ -34,7 +34,7 @@ typedef enum EnGeldBLimb { /* 0x18 */ GELDB_LIMB_MAX } EnGeldBLimb; -typedef void (*EnGeldBActionFunc)(struct EnGeldB*, PlayState*); +typedef void (*EnGeldBActionFunc)(struct EnGeldB*, struct PlayState*); typedef struct EnGeldB { /* 0x0000 */ Actor actor; 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 4ad132c690..08c47da269 100644 --- a/src/overlays/actors/ovl_En_GirlA/z_en_girla.c +++ b/src/overlays/actors/ovl_En_GirlA/z_en_girla.c @@ -5,7 +5,14 @@ */ #include "z_en_girla.h" + +#include "rand.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64draw.h" +#include "z64play.h" +#include "z64save.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_GirlA/z_en_girla.h b/src/overlays/actors/ovl_En_GirlA/z_en_girla.h index 971d0109c4..504837044e 100644 --- a/src/overlays/actors/ovl_En_GirlA/z_en_girla.h +++ b/src/overlays/actors/ovl_En_GirlA/z_en_girla.h @@ -2,14 +2,14 @@ #define Z_EN_GIRLA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnGirlA; -typedef void (*EnGirlAActionFunc)(struct EnGirlA*, PlayState*); -typedef void (*EnGirlA2Func)(PlayState*, struct EnGirlA*); -typedef void (*EnGirlA3Func)(Actor*, PlayState*, s32); -typedef s32 (*EnGirlA4Func)(PlayState*, struct EnGirlA*); +typedef void (*EnGirlAActionFunc)(struct EnGirlA*, struct PlayState*); +typedef void (*EnGirlA2Func)(struct PlayState*, struct EnGirlA*); +typedef void (*EnGirlA3Func)(Actor*, struct PlayState*, s32); +typedef s32 (*EnGirlA4Func)(struct PlayState*, struct EnGirlA*); typedef struct EnGirlA { /* 0x0000 */ Actor actor; 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 3ed42e5119..75bf9b4357 100644 --- a/src/overlays/actors/ovl_En_Gm/z_en_gm.c +++ b/src/overlays/actors/ovl_En_Gm/z_en_gm.c @@ -5,9 +5,21 @@ */ #include "z_en_gm.h" + +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "segmented_address.h" +#include "sys_matrix.h" +#include "terminal.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_oF1d_map/object_oF1d_map.h" #include "assets/objects/object_gm/object_gm.h" -#include "terminal.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Gm/z_en_gm.h b/src/overlays/actors/ovl_En_Gm/z_en_gm.h index 3cfedca015..d5234bde14 100644 --- a/src/overlays/actors/ovl_En_Gm/z_en_gm.h +++ b/src/overlays/actors/ovl_En_Gm/z_en_gm.h @@ -2,12 +2,12 @@ #define Z_EN_GM_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnGm; -typedef void (*EnGmUpdateFunc)(struct EnGm*, PlayState*); -typedef void (*EnGmActionFunc)(struct EnGm*, PlayState*); +typedef void (*EnGmUpdateFunc)(struct EnGm*, struct PlayState*); +typedef void (*EnGmActionFunc)(struct EnGm*, struct PlayState*); typedef struct EnGm { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Go/z_en_go.c b/src/overlays/actors/ovl_En_Go/z_en_go.c index 7a50157de5..4f7f47630f 100644 --- a/src/overlays/actors/ovl_En_Go/z_en_go.c +++ b/src/overlays/actors/ovl_En_Go/z_en_go.c @@ -1,5 +1,20 @@ #include "z_en_go.h" #include "overlays/actors/ovl_En_Bom/z_en_bom.h" + +#include "libc64/math64.h" +#include "libc64/qrand.h" +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "one_point_cutscene.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_oF1d_map/object_oF1d_map.h" diff --git a/src/overlays/actors/ovl_En_Go/z_en_go.h b/src/overlays/actors/ovl_En_Go/z_en_go.h index bd673c9521..691472aef6 100644 --- a/src/overlays/actors/ovl_En_Go/z_en_go.h +++ b/src/overlays/actors/ovl_En_Go/z_en_go.h @@ -2,13 +2,13 @@ #define Z_EN_GO_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnGo; -typedef void (*EnGoActionFunc)(struct EnGo*, PlayState*); -typedef u16 (*callback1_80A3ED24)(PlayState*, struct EnGo*); -typedef s16 (*callback2_80A3ED24)(PlayState*, struct EnGo*); +typedef void (*EnGoActionFunc)(struct EnGo*, struct PlayState*); +typedef u16 (*callback1_80A3ED24)(struct PlayState*, struct EnGo*); +typedef s16 (*callback2_80A3ED24)(struct PlayState*, struct EnGo*); // WIP type docs // /* 0x00 */ GORON1_CITY_LINK, diff --git a/src/overlays/actors/ovl_En_Go2/z_en_go2.c b/src/overlays/actors/ovl_En_Go2/z_en_go2.c index 50680850d0..9c15e9e7a3 100644 --- a/src/overlays/actors/ovl_En_Go2/z_en_go2.c +++ b/src/overlays/actors/ovl_En_Go2/z_en_go2.c @@ -1,9 +1,26 @@ #include "z_en_go2.h" #include "overlays/actors/ovl_En_Bom/z_en_bom.h" + +#include "libc64/qrand.h" +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "one_point_cutscene.h" +#include "quake.h" +#include "segmented_address.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "versions.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64face_reaction.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_oF1d_map/object_oF1d_map.h" -#include "quake.h" -#include "versions.h" #define FLAGS \ (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED | \ diff --git a/src/overlays/actors/ovl_En_Go2/z_en_go2.h b/src/overlays/actors/ovl_En_Go2/z_en_go2.h index 6fb6229355..0c49a30363 100644 --- a/src/overlays/actors/ovl_En_Go2/z_en_go2.h +++ b/src/overlays/actors/ovl_En_Go2/z_en_go2.h @@ -2,12 +2,12 @@ #define Z_EN_GO2_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" #include "overlays/actors/ovl_En_Go/z_en_go.h" struct EnGo2; -typedef void (*EnGo2ActionFunc)(struct EnGo2*, PlayState*); +typedef void (*EnGo2ActionFunc)(struct EnGo2*, struct PlayState*); typedef enum GoronType { /* 0x00 */ GORON_CITY_ROLLING_BIG, @@ -73,7 +73,7 @@ typedef struct EnGo2 { /* 0x0190 */ EnGo2ActionFunc actionFunc; /* 0x0194 */ NpcInteractInfo interactInfo; /* 0x01BC */ ColliderCylinder collider; - /* 0x0208 */ Path* path; + /* 0x0208 */ struct Path* path; /* 0x020C */ u8 unk_20C; // counter for GORON_CITY_LINK animation /* 0x020D */ u8 dialogState; /* 0x020E */ u8 reverse; diff --git a/src/overlays/actors/ovl_En_Goma/z_en_goma.c b/src/overlays/actors/ovl_En_Goma/z_en_goma.c index 06be045412..82175795bd 100644 --- a/src/overlays/actors/ovl_En_Goma/z_en_goma.c +++ b/src/overlays/actors/ovl_En_Goma/z_en_goma.c @@ -1,9 +1,30 @@ +/* + * File: z_en_goma.c + * Overlay: ovl_En_Goma + * Description: Gohma Larva + */ + #include "z_en_goma.h" -#include "assets/objects/gameplay_dangeon_keep/gameplay_dangeon_keep.h" -#include "assets/objects/object_gol/object_gol.h" #include "overlays/actors/ovl_Boss_Goma/z_boss_goma.h" #include "overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.h" +#include "libc64/math64.h" +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + +#include "assets/objects/gameplay_dangeon_keep/gameplay_dangeon_keep.h" +#include "assets/objects/object_gol/object_gol.h" + #define FLAGS \ (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED | \ ACTOR_FLAG_DRAW_CULLING_DISABLED) @@ -164,10 +185,10 @@ void EnGoma_Init(Actor* thisx, PlayState* play) { this->eggScale = 1.0f; this->eggSquishAngle = Rand_ZeroOne() * 1000.0f; this->actionTimer = 50; - Collider_InitCylinder(play, &this->colCyl1); - Collider_SetCylinder(play, &this->colCyl1, &this->actor, &D_80A4B7A0); - Collider_InitCylinder(play, &this->colCyl2); - Collider_SetCylinder(play, &this->colCyl2, &this->actor, &D_80A4B7CC); + Collider_InitCylinder(play, &this->colliderCylinder1); + Collider_SetCylinder(play, &this->colliderCylinder1, &this->actor, &D_80A4B7A0); + Collider_InitCylinder(play, &this->colliderCylinder2); + Collider_SetCylinder(play, &this->colliderCylinder2, &this->actor, &D_80A4B7CC); } } @@ -175,8 +196,8 @@ void EnGoma_Destroy(Actor* thisx, PlayState* play) { EnGoma* this = (EnGoma*)thisx; if (this->actor.params < 10) { - Collider_DestroyCylinder(play, &this->colCyl1); - Collider_DestroyCylinder(play, &this->colCyl2); + Collider_DestroyCylinder(play, &this->colliderCylinder1); + Collider_DestroyCylinder(play, &this->colliderCylinder2); } } @@ -614,15 +635,15 @@ void EnGoma_UpdateHit(EnGoma* this, PlayState* play) { ColliderElement* acHitElem; u8 swordDamage; - if ((this->colCyl1.base.atFlags & AT_HIT) && this->actionFunc == EnGoma_Jump) { + if ((this->colliderCylinder1.base.atFlags & AT_HIT) && this->actionFunc == EnGoma_Jump) { EnGoma_SetupLand(this); this->actor.speed = 0.0f; this->actor.velocity.y = 0.0f; } - if ((this->colCyl2.base.acFlags & AC_HIT) && (s8)this->actor.colChkInfo.health > 0) { - acHitElem = this->colCyl2.elem.acHitElem; - this->colCyl2.base.acFlags &= ~AC_HIT; + if ((this->colliderCylinder2.base.acFlags & AC_HIT) && (s8)this->actor.colChkInfo.health > 0) { + acHitElem = this->colliderCylinder2.elem.acHitElem; + this->colliderCylinder2.base.acFlags &= ~AC_HIT; if (this->gomaType == ENGOMA_NORMAL) { u32 dmgFlags = acHitElem->atDmgInfo.dmgFlags; @@ -732,20 +753,20 @@ void EnGoma_Update(Actor* thisx, PlayState* play) { EnGoma_UpdateEyeEnvColor(this); this->visualState = 1; if (player->meleeWeaponState != 0) { - this->colCyl2.dim.radius = 35; - this->colCyl2.dim.height = 35; - this->colCyl2.dim.yShift = 0; + this->colliderCylinder2.dim.radius = 35; + this->colliderCylinder2.dim.height = 35; + this->colliderCylinder2.dim.yShift = 0; } else { - this->colCyl2.dim.radius = 15; - this->colCyl2.dim.height = 30; - this->colCyl2.dim.yShift = 10; + this->colliderCylinder2.dim.radius = 15; + this->colliderCylinder2.dim.height = 30; + this->colliderCylinder2.dim.yShift = 10; } if (this->invincibilityTimer == 0) { - Collider_UpdateCylinder(&this->actor, &this->colCyl1); - Collider_UpdateCylinder(&this->actor, &this->colCyl2); - CollisionCheck_SetOC(play, &play->colChkCtx, &this->colCyl1.base); - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colCyl2.base); - CollisionCheck_SetAT(play, &play->colChkCtx, &this->colCyl1.base); + Collider_UpdateCylinder(&this->actor, &this->colliderCylinder1); + Collider_UpdateCylinder(&this->actor, &this->colliderCylinder2); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderCylinder1.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderCylinder2.base); + CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderCylinder1.base); } } } diff --git a/src/overlays/actors/ovl_En_Goma/z_en_goma.h b/src/overlays/actors/ovl_En_Goma/z_en_goma.h index a0a97f20fb..6b2f7cf309 100644 --- a/src/overlays/actors/ovl_En_Goma/z_en_goma.h +++ b/src/overlays/actors/ovl_En_Goma/z_en_goma.h @@ -2,7 +2,7 @@ #define Z_EN_GOMA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" typedef enum GomaType { /* 0 */ ENGOMA_NORMAL, @@ -13,7 +13,7 @@ typedef enum GomaType { struct EnGoma; -typedef void (*EnGomaActionFunc)(struct EnGoma*, PlayState*); +typedef void (*EnGomaActionFunc)(struct EnGoma*, struct PlayState*); typedef enum EnGomaLimb { /* 0 */ GOMA_LIMB_NONE, @@ -73,8 +73,8 @@ typedef struct EnGoma { /* 0x2F8 */ s16 stunTimer; /* 0x2FC */ Vec3f shieldKnockbackVel; /* 0x308 */ Gfx* bossLimbDL; // set by z_boss_goma - /* 0x30C */ ColliderCylinder colCyl1; - /* 0x358 */ ColliderCylinder colCyl2; + /* 0x30C */ ColliderCylinder colliderCylinder1; + /* 0x358 */ ColliderCylinder colliderCylinder2; } EnGoma; // size = 0x03A4 #endif 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 56f7b6d975..bf25b3bc5d 100644 --- a/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.c +++ b/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.c @@ -6,10 +6,23 @@ #include "z_en_goroiwa.h" #include "overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h" + +#include "libc64/qrand.h" +#include "ichain.h" +#include "quake.h" +#include "regs.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_math3d.h" +#include "sys_matrix.h" +#include "terminal.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_goroiwa/object_goroiwa.h" -#include "quake.h" -#include "terminal.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED @@ -105,7 +118,7 @@ void EnGoroiwa_InitCollider(EnGoroiwa* this, PlayState* play) { s32 pad; Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderItems); + Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderElements); EnGoroiwa_UpdateCollider(this); this->collider.elements[0].dim.worldSphere.radius = 58; } diff --git a/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.h b/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.h index 6285432936..26a5810a2d 100644 --- a/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.h +++ b/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.h @@ -2,17 +2,17 @@ #define Z_EN_GOROIWA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnGoroiwa; -typedef void (*EnGoroiwaActionFunc)(struct EnGoroiwa*, PlayState*); +typedef void (*EnGoroiwaActionFunc)(struct EnGoroiwa*, struct PlayState*); typedef struct EnGoroiwa { /* 0x0000 */ Actor actor; /* 0x014C */ EnGoroiwaActionFunc actionFunc; /* 0x0150 */ ColliderJntSph collider; - /* 0x0170 */ ColliderJntSphElement colliderItems[1]; + /* 0x0170 */ ColliderJntSphElement colliderElements[1]; /* 0x01B0 */ Vec3f prevUnitRollAxis; /* 0x01BC */ f32 prevRollAngleDiff; /* 0x01C0 */ f32 rollRotSpeed; diff --git a/src/overlays/actors/ovl_En_Gs/z_en_gs.c b/src/overlays/actors/ovl_En_Gs/z_en_gs.c index 46d470c330..4e590217f0 100644 --- a/src/overlays/actors/ovl_En_Gs/z_en_gs.c +++ b/src/overlays/actors/ovl_En_Gs/z_en_gs.c @@ -5,9 +5,23 @@ */ #include "z_en_gs.h" -#include "assets/objects/object_gs/object_gs.h" #include "overlays/actors/ovl_En_Elf/z_en_elf.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "regs.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64ocarina.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" +#include "assets/objects/object_gs/object_gs.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_DURING_OCARINA) diff --git a/src/overlays/actors/ovl_En_Gs/z_en_gs.h b/src/overlays/actors/ovl_En_Gs/z_en_gs.h index 47edd278db..d7abdc676f 100644 --- a/src/overlays/actors/ovl_En_Gs/z_en_gs.h +++ b/src/overlays/actors/ovl_En_Gs/z_en_gs.h @@ -2,11 +2,11 @@ #define Z_EN_GS_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnGs; -typedef void (*EnGsActionFunc)(struct EnGs*, PlayState*); +typedef void (*EnGsActionFunc)(struct EnGs*, struct PlayState*); typedef struct EnGs { /* 0x0000 */ Actor actor; 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 5c0a14f9d0..117f891c10 100644 --- a/src/overlays/actors/ovl_En_Guest/z_en_guest.c +++ b/src/overlays/actors/ovl_En_Guest/z_en_guest.c @@ -5,9 +5,21 @@ */ #include "z_en_guest.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "segmented_address.h" +#include "sys_matrix.h" +#include "terminal.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_os_anime/object_os_anime.h" #include "assets/objects/object_boj/object_boj.h" -#include "terminal.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Guest/z_en_guest.h b/src/overlays/actors/ovl_En_Guest/z_en_guest.h index 2130ebc74e..92dbc72d5c 100644 --- a/src/overlays/actors/ovl_En_Guest/z_en_guest.h +++ b/src/overlays/actors/ovl_En_Guest/z_en_guest.h @@ -2,11 +2,11 @@ #define Z_EN_GUEST_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnGuest; -typedef void (*EnGuestActionFunc)(struct EnGuest* this, PlayState* play); +typedef void (*EnGuestActionFunc)(struct EnGuest* this, struct PlayState* play); typedef struct EnGuest { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Hata/z_en_hata.c b/src/overlays/actors/ovl_En_Hata/z_en_hata.c index 6cdb51f59b..27cd1341ce 100644 --- a/src/overlays/actors/ovl_En_Hata/z_en_hata.c +++ b/src/overlays/actors/ovl_En_Hata/z_en_hata.c @@ -5,6 +5,15 @@ */ #include "z_en_hata.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_hata/object_hata.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_En_Hata/z_en_hata.h b/src/overlays/actors/ovl_En_Hata/z_en_hata.h index e098bcaab3..82f6ba1a8b 100644 --- a/src/overlays/actors/ovl_En_Hata/z_en_hata.h +++ b/src/overlays/actors/ovl_En_Hata/z_en_hata.h @@ -2,7 +2,7 @@ #define Z_EN_HATA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" typedef enum EnHataLimb { 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 0bc4ac8119..7f5af16a74 100644 --- a/src/overlays/actors/ovl_En_Heishi1/z_en_heishi1.c +++ b/src/overlays/actors/ovl_En_Heishi1/z_en_heishi1.c @@ -5,8 +5,24 @@ */ #include "z_en_heishi1.h" -#include "assets/objects/object_sd/object_sd.h" + +#include "libc64/math64.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "regs.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64debug_display.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/object_sd/object_sd.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_En_Heishi1/z_en_heishi1.h b/src/overlays/actors/ovl_En_Heishi1/z_en_heishi1.h index 93bc570223..bc1837241e 100644 --- a/src/overlays/actors/ovl_En_Heishi1/z_en_heishi1.h +++ b/src/overlays/actors/ovl_En_Heishi1/z_en_heishi1.h @@ -2,11 +2,11 @@ #define Z_EN_HEISHI1_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnHeishi1; -typedef void (*EnHeishi1ActionFunc)(struct EnHeishi1*, PlayState*); +typedef void (*EnHeishi1ActionFunc)(struct EnHeishi1*, struct PlayState*); typedef struct EnHeishi1 { /* 0x0000 */ Actor actor; 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 b31974f3b3..d9428562fe 100644 --- a/src/overlays/actors/ovl_En_Heishi2/z_en_heishi2.c +++ b/src/overlays/actors/ovl_En_Heishi2/z_en_heishi2.c @@ -4,13 +4,25 @@ * Description: Hyrulian Guards */ -#include "terminal.h" #include "z_en_heishi2.h" +#include "overlays/actors/ovl_Bg_Gate_Shutter/z_bg_gate_shutter.h" +#include "overlays/actors/ovl_Bg_Spot15_Saku/z_bg_spot15_saku.h" +#include "overlays/actors/ovl_En_Bom/z_en_bom.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "terminal.h" +#include "z_lib.h" +#include "z64face_reaction.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_sd/object_sd.h" #include "assets/objects/object_link_child/object_link_child.h" -#include "overlays/actors/ovl_Bg_Gate_Shutter/z_bg_gate_shutter.h" -#include "overlays/actors/ovl_En_Bom/z_en_bom.h" -#include "overlays/actors/ovl_Bg_Spot15_Saku/z_bg_spot15_saku.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) diff --git a/src/overlays/actors/ovl_En_Heishi2/z_en_heishi2.h b/src/overlays/actors/ovl_En_Heishi2/z_en_heishi2.h index b4f6ea5e7b..3753012bee 100644 --- a/src/overlays/actors/ovl_En_Heishi2/z_en_heishi2.h +++ b/src/overlays/actors/ovl_En_Heishi2/z_en_heishi2.h @@ -2,12 +2,12 @@ #define Z_EN_HEISHI2_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnHeishi2; -typedef void (*EnHeishi2ActionFunc)(struct EnHeishi2*, PlayState*); +typedef void (*EnHeishi2ActionFunc)(struct EnHeishi2*, struct PlayState*); typedef struct EnHeishi2 { /* 0x0000 */ Actor actor; 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 8a10e8f96e..91ccd4d516 100644 --- a/src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.c +++ b/src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.c @@ -5,9 +5,18 @@ */ #include "z_en_heishi3.h" -#include "assets/objects/object_sd/object_sd.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sfx.h" #include "terminal.h" #include "versions.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/object_sd/object_sd.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.h b/src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.h index 63b4311393..57eb11c61c 100644 --- a/src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.h +++ b/src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.h @@ -2,11 +2,11 @@ #define Z_EN_HEISHI3_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnHeishi3; -typedef void (*EnHeishi3ActionFunc)(struct EnHeishi3*, PlayState*); +typedef void (*EnHeishi3ActionFunc)(struct EnHeishi3*, struct PlayState*); typedef struct EnHeishi3 { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Heishi4/z_en_heishi4.c b/src/overlays/actors/ovl_En_Heishi4/z_en_heishi4.c index 51588714c8..b139288ba1 100644 --- a/src/overlays/actors/ovl_En_Heishi4/z_en_heishi4.c +++ b/src/overlays/actors/ovl_En_Heishi4/z_en_heishi4.c @@ -1,6 +1,14 @@ #include "z_en_heishi4.h" -#include "assets/objects/object_sd/object_sd.h" + +#include "gfx.h" +#include "gfx_setupdl.h" #include "terminal.h" +#include "z64face_reaction.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/object_sd/object_sd.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) diff --git a/src/overlays/actors/ovl_En_Heishi4/z_en_heishi4.h b/src/overlays/actors/ovl_En_Heishi4/z_en_heishi4.h index 48e09ca458..9ab928fe3e 100644 --- a/src/overlays/actors/ovl_En_Heishi4/z_en_heishi4.h +++ b/src/overlays/actors/ovl_En_Heishi4/z_en_heishi4.h @@ -2,7 +2,7 @@ #define Z_EN_HEISHI4_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" typedef enum Heishi4Type { /* 0x00 */ HEISHI4_AT_KAKARIKO_ENTRANCE, @@ -13,7 +13,7 @@ typedef enum Heishi4Type { struct EnHeishi4; -typedef void (*EnHeishi4ActionFunc)(struct EnHeishi4*, PlayState*); +typedef void (*EnHeishi4ActionFunc)(struct EnHeishi4*, struct PlayState*); typedef struct EnHeishi4 { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Hintnuts/z_en_hintnuts.c b/src/overlays/actors/ovl_En_Hintnuts/z_en_hintnuts.c index 541e8b8519..454f83c2d0 100644 --- a/src/overlays/actors/ovl_En_Hintnuts/z_en_hintnuts.c +++ b/src/overlays/actors/ovl_En_Hintnuts/z_en_hintnuts.c @@ -5,6 +5,13 @@ */ #include "z_en_hintnuts.h" + +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_hintnuts/object_hintnuts.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE) @@ -78,8 +85,9 @@ void EnHintnuts_Init(Actor* thisx, PlayState* play) { this->actor.flags &= ~(ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE); } else { ActorShape_Init(&this->actor.shape, 0x0, ActorShadow_DrawCircle, 35.0f); - SkelAnime_Init(play, &this->skelAnime, &gHintNutsSkel, &gHintNutsStandAnim, this->jointTable, this->morphTable, - 10); + //! @bug Flex skeleton is used as normal skeleton + SkelAnime_Init(play, &this->skelAnime, (SkeletonHeader*)&gHintNutsSkel, &gHintNutsStandAnim, this->jointTable, + this->morphTable, 10); Collider_InitCylinder(play, &this->collider); Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit); CollisionCheck_SetInfo(&this->actor.colChkInfo, NULL, &sColChkInfoInit); diff --git a/src/overlays/actors/ovl_En_Hintnuts/z_en_hintnuts.h b/src/overlays/actors/ovl_En_Hintnuts/z_en_hintnuts.h index fcc0201659..a24b387fe1 100644 --- a/src/overlays/actors/ovl_En_Hintnuts/z_en_hintnuts.h +++ b/src/overlays/actors/ovl_En_Hintnuts/z_en_hintnuts.h @@ -2,11 +2,11 @@ #define Z_EN_HINTNUTS_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnHintnuts; -typedef void (*EnHintnutsActionFunc)(struct EnHintnuts*, PlayState*); +typedef void (*EnHintnutsActionFunc)(struct EnHintnuts*, struct PlayState*); typedef struct EnHintnuts { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Holl/z_en_holl.c b/src/overlays/actors/ovl_En_Holl/z_en_holl.c index c17ff7e58f..c3f8fa40ad 100644 --- a/src/overlays/actors/ovl_En_Holl/z_en_holl.c +++ b/src/overlays/actors/ovl_En_Holl/z_en_holl.c @@ -1,5 +1,14 @@ #include "z_en_holl.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED /* diff --git a/src/overlays/actors/ovl_En_Holl/z_en_holl.h b/src/overlays/actors/ovl_En_Holl/z_en_holl.h index 2c87dc346b..4a9409373a 100644 --- a/src/overlays/actors/ovl_En_Holl/z_en_holl.h +++ b/src/overlays/actors/ovl_En_Holl/z_en_holl.h @@ -2,7 +2,7 @@ #define Z_EN_HOLL_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" #define ENHOLL_GET_TYPE(thisx) PARAMS_GET_U((thisx)->params, 6, 3) #define ENHOLL_GET_SWITCH_FLAG(thisx) PARAMS_GET_U((thisx)->params, 0, 6) @@ -35,7 +35,7 @@ typedef enum EnHollType { struct EnHoll; -typedef void (*EnHollActionFunc)(struct EnHoll*, PlayState*); +typedef void (*EnHollActionFunc)(struct EnHoll*, struct PlayState*); typedef struct EnHoll { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Honotrap/z_en_honotrap.c b/src/overlays/actors/ovl_En_Honotrap/z_en_honotrap.c index 9a77366416..bdee0a8ad0 100644 --- a/src/overlays/actors/ovl_En_Honotrap/z_en_honotrap.c +++ b/src/overlays/actors/ovl_En_Honotrap/z_en_honotrap.c @@ -5,6 +5,21 @@ */ #include "z_en_honotrap.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_math.h" +#include "sys_math3d.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/gameplay_dangeon_keep/gameplay_dangeon_keep.h" diff --git a/src/overlays/actors/ovl_En_Honotrap/z_en_honotrap.h b/src/overlays/actors/ovl_En_Honotrap/z_en_honotrap.h index f1b085686c..debd2bfb7c 100644 --- a/src/overlays/actors/ovl_En_Honotrap/z_en_honotrap.h +++ b/src/overlays/actors/ovl_En_Honotrap/z_en_honotrap.h @@ -2,11 +2,11 @@ #define Z_EN_HONOTRAP_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnHonotrap; -typedef void (*EnHonotrapActionFunc)(struct EnHonotrap*, PlayState*); +typedef void (*EnHonotrapActionFunc)(struct EnHonotrap*, struct PlayState*); typedef union EnHonotrapCollider { struct { diff --git a/src/overlays/actors/ovl_En_Horse/z_en_horse.c b/src/overlays/actors/ovl_En_Horse/z_en_horse.c index cf678bf1bc..9f8a3d8b1d 100644 --- a/src/overlays/actors/ovl_En_Horse/z_en_horse.c +++ b/src/overlays/actors/ovl_En_Horse/z_en_horse.c @@ -5,10 +5,31 @@ */ #include "z_en_horse.h" -#include "z64horse.h" -#include "global.h" -#include "versions.h" #include "overlays/actors/ovl_En_In/z_en_in.h" + +#include "libc64/math64.h" +#include "libc64/qrand.h" +#include "controller.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "regs.h" +#include "rumble.h" +#include "segmented_address.h" +#include "seqcmd.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_math3d.h" +#include "versions.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64effect.h" +#include "z64horse.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" +#include "z64skin_matrix.h" + #include "assets/objects/object_horse/object_horse.h" #include "assets/objects/object_hni/object_hni.h" #include "assets/scenes/overworld/spot09/spot09_scene.h" @@ -121,7 +142,7 @@ static ColliderCylinderInit sCylinderInit2 = { { 20, 70, 0, { 0, 0, 0 } }, }; -static ColliderJntSphElementInit sJntSphItemsInit[1] = { +static ColliderJntSphElementInit sJntSphElementsInit[1] = { { { ELEM_MATERIAL_UNK0, @@ -145,7 +166,7 @@ static ColliderJntSphInit sJntSphInit = { COLSHAPE_JNTSPH, }, 1, - sJntSphItemsInit, + sJntSphElementsInit, }; static CollisionCheckInfoInit D_80A65F38 = { 10, 35, 100, MASS_HEAVY }; @@ -561,7 +582,7 @@ void EnHorse_UpdateIngoRaceInfo(EnHorse* this, PlayState* play, RaceInfo* raceIn EnHorse_RotateToPoint(this, play, &curWaypointPos, 400); if (distSq < SQ(300.0f)) { - if (this->actor.xzDistToPlayer < 130.0f || this->jntSph.elements[0].base.ocElemFlags & OCELEM_HIT) { + if (this->actor.xzDistToPlayer < 130.0f || this->colliderJntSph.elements[0].base.ocElemFlags & OCELEM_HIT) { s32 pad; if (Math_SinS(this->actor.yawTowardsPlayer - this->actor.world.rot.y) > 0.0f) { @@ -818,12 +839,12 @@ void EnHorse_Init(Actor* thisx, PlayState* play2) { ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawHorse, 20.0f); this->action = ENHORSE_ACT_IDLE; this->actor.speed = 0.0f; - Collider_InitCylinder(play, &this->cyl1); - Collider_SetCylinder(play, &this->cyl1, &this->actor, &sCylinderInit1); - Collider_InitCylinder(play, &this->cyl2); - Collider_SetCylinder(play, &this->cyl2, &this->actor, &sCylinderInit2); - Collider_InitJntSph(play, &this->jntSph); - Collider_SetJntSph(play, &this->jntSph, &this->actor, &sJntSphInit, &this->jntSphList); + Collider_InitCylinder(play, &this->colliderCylinder1); + Collider_SetCylinder(play, &this->colliderCylinder1, &this->actor, &sCylinderInit1); + Collider_InitCylinder(play, &this->colliderCylinder2); + Collider_SetCylinder(play, &this->colliderCylinder2, &this->actor, &sCylinderInit2); + Collider_InitJntSph(play, &this->colliderJntSph); + Collider_SetJntSph(play, &this->colliderJntSph, &this->actor, &sJntSphInit, this->colliderJntSphElements); CollisionCheck_SetInfo(&this->actor.colChkInfo, DamageTable_Get(0xB), &D_80A65F38); this->actor.focus.pos = this->actor.world.pos; this->actor.focus.pos.y += 70.0f; @@ -906,9 +927,9 @@ void EnHorse_Destroy(Actor* thisx, PlayState* play) { Audio_StopSfxByPos(&this->unk_21C); } Skin_Free(play, &this->skin); - Collider_DestroyCylinder(play, &this->cyl1); - Collider_DestroyCylinder(play, &this->cyl2); - Collider_DestroyJntSph(play, &this->jntSph); + Collider_DestroyCylinder(play, &this->colliderCylinder1); + Collider_DestroyCylinder(play, &this->colliderCylinder2); + Collider_DestroyJntSph(play, &this->colliderJntSph); } void EnHorse_RotateToPlayer(EnHorse* this, PlayState* play) { @@ -927,9 +948,9 @@ void EnHorse_Freeze(EnHorse* this) { } this->prevAction = this->action; this->action = ENHORSE_ACT_FROZEN; - this->cyl1.base.ocFlags1 &= ~OC1_ON; - this->cyl2.base.ocFlags1 &= ~OC1_ON; - this->jntSph.base.ocFlags1 &= ~OC1_ON; + this->colliderCylinder1.base.ocFlags1 &= ~OC1_ON; + this->colliderCylinder2.base.ocFlags1 &= ~OC1_ON; + this->colliderJntSph.base.ocFlags1 &= ~OC1_ON; this->animationIdx = ENHORSE_ANIM_IDLE; } } @@ -943,9 +964,9 @@ void EnHorse_Frozen(EnHorse* this, PlayState* play) { this->actor.speed = 0.0f; this->noInputTimer--; if (this->noInputTimer < 0) { - this->cyl1.base.ocFlags1 |= OC1_ON; - this->cyl2.base.ocFlags1 |= OC1_ON; - this->jntSph.base.ocFlags1 |= OC1_ON; + this->colliderCylinder1.base.ocFlags1 |= OC1_ON; + this->colliderCylinder2.base.ocFlags1 |= OC1_ON; + this->colliderJntSph.base.ocFlags1 |= OC1_ON; if (this->playerControlled == true) { this->stateFlags &= ~ENHORSE_FLAG_7; if (this->actor.params == HORSE_PTYPE_4) { @@ -1728,9 +1749,9 @@ void EnHorse_HighJump(EnHorse* this, PlayState* play) { } void EnHorse_InitInactive(EnHorse* this) { - this->cyl1.base.ocFlags1 &= ~OC1_ON; - this->cyl2.base.ocFlags1 &= ~OC1_ON; - this->jntSph.base.ocFlags1 &= ~OC1_ON; + this->colliderCylinder1.base.ocFlags1 &= ~OC1_ON; + this->colliderCylinder2.base.ocFlags1 &= ~OC1_ON; + this->colliderJntSph.base.ocFlags1 &= ~OC1_ON; this->action = ENHORSE_ACT_INACTIVE; this->animationIdx = ENHORSE_ANIM_WALK; this->stateFlags |= ENHORSE_INACTIVE; @@ -1762,9 +1783,9 @@ void EnHorse_Inactive(EnHorse* this, PlayState* play2) { this->followTimer = 0; EnHorse_SetFollowAnimation(this, play); this->actor.params = HORSE_PTYPE_0; - this->cyl1.base.ocFlags1 |= OC1_ON; - this->cyl2.base.ocFlags1 |= OC1_ON; - this->jntSph.base.ocFlags1 |= OC1_ON; + this->colliderCylinder1.base.ocFlags1 |= OC1_ON; + this->colliderCylinder2.base.ocFlags1 |= OC1_ON; + this->colliderJntSph.base.ocFlags1 |= OC1_ON; } } @@ -3548,12 +3569,12 @@ void EnHorse_Update(Actor* thisx, PlayState* play2) { this->rider->shape.rot.y = thisx->shape.rot.y; } } - if (this->jntSph.elements[0].base.ocElemFlags & OCELEM_HIT) { + if (this->colliderJntSph.elements[0].base.ocElemFlags & OCELEM_HIT) { if (thisx->speed > 6.0f) { thisx->speed -= 1.0f; } } - if (this->jntSph.base.acFlags & AC_HIT) { + if (this->colliderJntSph.base.acFlags & AC_HIT) { this->unk_21C = this->unk_228; if (this->stateFlags & ENHORSE_DRAW) { Audio_PlaySfxGeneral(NA_SE_EV_HORSE_NEIGH, &this->unk_21C, 4, &gSfxDefaultFreqAndVolScale, @@ -3563,17 +3584,21 @@ void EnHorse_Update(Actor* thisx, PlayState* play2) { if (this->action != ENHORSE_ACT_INGO_RACE) { EnHorse_TiltBody(this, play); } - Collider_UpdateCylinder(thisx, &this->cyl1); - Collider_UpdateCylinder(thisx, &this->cyl2); + Collider_UpdateCylinder(thisx, &this->colliderCylinder1); + Collider_UpdateCylinder(thisx, &this->colliderCylinder2); // Required to match - this->cyl1.dim.pos.x = this->cyl1.dim.pos.x + (s16)(Math_SinS(thisx->shape.rot.y) * 11.0f); - this->cyl1.dim.pos.z = this->cyl1.dim.pos.z + (s16)(Math_CosS(thisx->shape.rot.y) * 11.0f); - this->cyl2.dim.pos.x = this->cyl2.dim.pos.x + (s16)(Math_SinS(thisx->shape.rot.y) * -18.0f); - this->cyl2.dim.pos.z = this->cyl2.dim.pos.z + (s16)(Math_CosS(thisx->shape.rot.y) * -18.0f); - CollisionCheck_SetAT(play, &play->colChkCtx, &this->cyl1.base); - CollisionCheck_SetOC(play, &play->colChkCtx, &this->cyl1.base); - CollisionCheck_SetOC(play, &play->colChkCtx, &this->cyl2.base); + this->colliderCylinder1.dim.pos.x = + this->colliderCylinder1.dim.pos.x + (s16)(Math_SinS(thisx->shape.rot.y) * 11.0f); + this->colliderCylinder1.dim.pos.z = + this->colliderCylinder1.dim.pos.z + (s16)(Math_CosS(thisx->shape.rot.y) * 11.0f); + this->colliderCylinder2.dim.pos.x = + this->colliderCylinder2.dim.pos.x + (s16)(Math_SinS(thisx->shape.rot.y) * -18.0f); + this->colliderCylinder2.dim.pos.z = + this->colliderCylinder2.dim.pos.z + (s16)(Math_CosS(thisx->shape.rot.y) * -18.0f); + CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderCylinder1.base); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderCylinder1.base); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderCylinder2.base); if ((player->stateFlags1 & PLAYER_STATE1_0) && player->rideActor != NULL) { if (play->sceneId != SCENE_LON_LON_RANCH || (play->sceneId == SCENE_LON_LON_RANCH && (thisx->world.pos.z < -2400.0f))) { @@ -3617,9 +3642,9 @@ void EnHorse_Update(Actor* thisx, PlayState* play2) { } if (thisx->speed >= 5.0f) { - this->cyl1.base.atFlags |= AT_ON; + this->colliderCylinder1.base.atFlags |= AT_ON; } else { - this->cyl1.base.atFlags &= ~AT_ON; + this->colliderCylinder1.base.atFlags &= ~AT_ON; } if (gSaveContext.save.entranceIndex != ENTR_LON_LON_RANCH_0 || gSaveContext.sceneLayer != 9) { @@ -3814,17 +3839,17 @@ void EnHorse_PostDraw(Actor* thisx, PlayState* play, Skin* skin) { } } - for (i = 0; i < this->jntSph.count; i++) { - center.x = this->jntSph.elements[i].dim.modelSphere.center.x; - center.y = this->jntSph.elements[i].dim.modelSphere.center.y; - center.z = this->jntSph.elements[i].dim.modelSphere.center.z; + for (i = 0; i < this->colliderJntSph.count; i++) { + center.x = this->colliderJntSph.elements[i].dim.modelSphere.center.x; + center.y = this->colliderJntSph.elements[i].dim.modelSphere.center.y; + center.z = this->colliderJntSph.elements[i].dim.modelSphere.center.z; - Skin_GetLimbPos(skin, this->jntSph.elements[i].dim.limb, ¢er, &newCenter); - this->jntSph.elements[i].dim.worldSphere.center.x = newCenter.x; - this->jntSph.elements[i].dim.worldSphere.center.y = newCenter.y; - this->jntSph.elements[i].dim.worldSphere.center.z = newCenter.z; - this->jntSph.elements[i].dim.worldSphere.radius = - this->jntSph.elements[i].dim.modelSphere.radius * this->jntSph.elements[i].dim.scale; + Skin_GetLimbPos(skin, this->colliderJntSph.elements[i].dim.limb, ¢er, &newCenter); + this->colliderJntSph.elements[i].dim.worldSphere.center.x = newCenter.x; + this->colliderJntSph.elements[i].dim.worldSphere.center.y = newCenter.y; + this->colliderJntSph.elements[i].dim.worldSphere.center.z = newCenter.z; + this->colliderJntSph.elements[i].dim.worldSphere.radius = + this->colliderJntSph.elements[i].dim.modelSphere.radius * this->colliderJntSph.elements[i].dim.scale; } //! @bug Setting colliders in a draw function allows for duplicate entries to be added to their respective lists @@ -3832,8 +3857,8 @@ void EnHorse_PostDraw(Actor* thisx, PlayState* play, Skin* skin) { //! Actors will draw for a couple of frames between the pauses, but some important logic updates will not occur. //! In the case of OC, this can cause unwanted effects such as a very large amount of displacement being applied to //! a colliding actor. - CollisionCheck_SetOC(play, &play->colChkCtx, &this->jntSph.base); - CollisionCheck_SetAC(play, &play->colChkCtx, &this->jntSph.base); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderJntSph.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderJntSph.base); } // unused diff --git a/src/overlays/actors/ovl_En_Horse/z_en_horse.h b/src/overlays/actors/ovl_En_Horse/z_en_horse.h index 059cf67682..0eed5c001c 100644 --- a/src/overlays/actors/ovl_En_Horse/z_en_horse.h +++ b/src/overlays/actors/ovl_En_Horse/z_en_horse.h @@ -140,10 +140,10 @@ typedef struct EnHorse { /* 0x0264 */ Vec2f curStick; /* 0x026C */ Vec2f lastStick; /* 0x0274 */ f32 jumpStartY; - /* 0x0278 */ ColliderCylinder cyl1; - /* 0x02C4 */ ColliderCylinder cyl2; - /* 0x0310 */ ColliderJntSph jntSph; - /* 0x0330 */ ColliderJntSphElement jntSphList; + /* 0x0278 */ ColliderCylinder colliderCylinder1; + /* 0x02C4 */ ColliderCylinder colliderCylinder2; + /* 0x0310 */ ColliderJntSph colliderJntSph; + /* 0x0330 */ ColliderJntSphElement colliderJntSphElements[1]; /* 0x0370 */ u32 playerDir; /* 0x0374 */ s16 unk_374; /* 0x0376 */ s16 angleToPlayer; 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 23c583a8dc..b306f11a84 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 @@ -6,7 +6,18 @@ #include "z_en_horse_game_check.h" #include "overlays/actors/ovl_En_Horse/z_en_horse.h" + +#include "libu64/debug.h" #include "line_numbers.h" +#include "regs.h" +#include "sfx.h" +#include "seqcmd.h" +#include "sequence.h" +#include "sys_math3d.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.h b/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.h index 96834860e3..84ab117216 100644 --- a/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.h +++ b/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.h @@ -2,11 +2,11 @@ #define Z_EN_HORSE_GAME_CHECK_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnHorseGameCheckBase; -typedef s32 (*EnHorseGameCheckFunc)(struct EnHorseGameCheckBase* this, PlayState* play); +typedef s32 (*EnHorseGameCheckFunc)(struct EnHorseGameCheckBase* this, struct PlayState* play); typedef struct EnHorseGameCheckBase { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Horse_Ganon/z_en_horse_ganon.c b/src/overlays/actors/ovl_En_Horse_Ganon/z_en_horse_ganon.c index 0ce01f2d6e..e1991688a1 100644 --- a/src/overlays/actors/ovl_En_Horse_Ganon/z_en_horse_ganon.c +++ b/src/overlays/actors/ovl_En_Horse_Ganon/z_en_horse_ganon.c @@ -5,6 +5,18 @@ */ #include "z_en_horse_ganon.h" + +#include "libc64/math64.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_math3d.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64skin.h" + #include "assets/objects/object_horse_ganon/object_horse_ganon.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED @@ -181,10 +193,10 @@ void EnHorseGanon_Init(Actor* thisx, PlayState* play) { this->currentAnimation = 0; Animation_PlayOnce(&this->skin.skelAnime, sAnimations[0]); - Collider_InitCylinder(play, &this->colliderBody); - Collider_SetCylinder(play, &this->colliderBody, &this->actor, &sCylinderInit); - Collider_InitJntSph(play, &this->colliderHead); - Collider_SetJntSph(play, &this->colliderHead, &this->actor, &sJntSphInit, this->headElements); + Collider_InitCylinder(play, &this->bodyCollider); + Collider_SetCylinder(play, &this->bodyCollider, &this->actor, &sCylinderInit); + Collider_InitJntSph(play, &this->headCollider); + Collider_SetJntSph(play, &this->headCollider, &this->actor, &sJntSphInit, this->headColliderElements); CollisionCheck_SetInfo(&this->actor.colChkInfo, NULL, &sColChkInfoInit); func_80A68AC4(this); @@ -194,8 +206,8 @@ void EnHorseGanon_Destroy(Actor* thisx, PlayState* play) { EnHorseGanon* this = (EnHorseGanon*)thisx; Skin_Free(play, &this->skin); - Collider_DestroyCylinder(play, &this->colliderBody); - Collider_DestroyJntSph(play, &this->colliderHead); + Collider_DestroyCylinder(play, &this->bodyCollider); + Collider_DestroyJntSph(play, &this->headCollider); } void func_80A68AC4(EnHorseGanon* this) { @@ -293,8 +305,8 @@ void EnHorseGanon_Update(Actor* thisx, PlayState* play) { UPDBGCHECKINFO_FLAG_4); this->actor.focus.pos = this->actor.world.pos; this->actor.focus.pos.y += 70.0f; - Collider_UpdateCylinder(&this->actor, &this->colliderBody); - CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderBody.base); + Collider_UpdateCylinder(&this->actor, &this->bodyCollider); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->bodyCollider.base); } void EnHorseGanon_PostDraw(Actor* thisx, PlayState* play, Skin* skin) { @@ -303,23 +315,23 @@ void EnHorseGanon_PostDraw(Actor* thisx, PlayState* play, Skin* skin) { EnHorseGanon* this = (EnHorseGanon*)thisx; s32 index; - for (index = 0; index < this->colliderHead.count; index++) { - sp4C.x = this->colliderHead.elements[index].dim.modelSphere.center.x; - sp4C.y = this->colliderHead.elements[index].dim.modelSphere.center.y; - sp4C.z = this->colliderHead.elements[index].dim.modelSphere.center.z; + for (index = 0; index < this->headCollider.count; index++) { + sp4C.x = this->headCollider.elements[index].dim.modelSphere.center.x; + sp4C.y = this->headCollider.elements[index].dim.modelSphere.center.y; + sp4C.z = this->headCollider.elements[index].dim.modelSphere.center.z; - Skin_GetLimbPos(skin, this->colliderHead.elements[index].dim.limb, &sp4C, &sp40); + Skin_GetLimbPos(skin, this->headCollider.elements[index].dim.limb, &sp4C, &sp40); - this->colliderHead.elements[index].dim.worldSphere.center.x = sp40.x; - this->colliderHead.elements[index].dim.worldSphere.center.y = sp40.y; - this->colliderHead.elements[index].dim.worldSphere.center.z = sp40.z; + this->headCollider.elements[index].dim.worldSphere.center.x = sp40.x; + this->headCollider.elements[index].dim.worldSphere.center.y = sp40.y; + this->headCollider.elements[index].dim.worldSphere.center.z = sp40.z; - this->colliderHead.elements[index].dim.worldSphere.radius = - this->colliderHead.elements[index].dim.modelSphere.radius * this->colliderHead.elements[index].dim.scale; + this->headCollider.elements[index].dim.worldSphere.radius = + this->headCollider.elements[index].dim.modelSphere.radius * this->headCollider.elements[index].dim.scale; } //! @bug see relevant comment in `EnHorse_SkinCallback1` - CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderHead.base); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->headCollider.base); } void EnHorseGanon_Draw(Actor* thisx, PlayState* play) { diff --git a/src/overlays/actors/ovl_En_Horse_Ganon/z_en_horse_ganon.h b/src/overlays/actors/ovl_En_Horse_Ganon/z_en_horse_ganon.h index 8083adeee6..473f6cecb4 100644 --- a/src/overlays/actors/ovl_En_Horse_Ganon/z_en_horse_ganon.h +++ b/src/overlays/actors/ovl_En_Horse_Ganon/z_en_horse_ganon.h @@ -2,11 +2,12 @@ #define Z_EN_HORSE_GANON_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" +#include "z64skin.h" struct EnHorseGanon; -typedef void (*EnHorseGanonActionFunc)(struct EnHorseGanon*, PlayState*); +typedef void (*EnHorseGanonActionFunc)(struct EnHorseGanon*, struct PlayState*); typedef struct EnHorseGanon { /* 0x0000 */ Actor actor; @@ -19,9 +20,9 @@ typedef struct EnHorseGanon { /* 0x01F0 */ u8 unk_1F0[0x04]; /* 0x01F4 */ f32 unk_1F4; /* 0x01F8 */ u8 unk_1F8[0x04]; - /* 0x01FC */ ColliderCylinder colliderBody; - /* 0x0248 */ ColliderJntSph colliderHead; - /* 0x0268 */ ColliderJntSphElement headElements[1]; + /* 0x01FC */ ColliderCylinder bodyCollider; + /* 0x0248 */ ColliderJntSph headCollider; + /* 0x0268 */ ColliderJntSphElement headColliderElements[1]; } EnHorseGanon; // size = 0x02A8 #endif diff --git a/src/overlays/actors/ovl_En_Horse_Link_Child/z_en_horse_link_child.c b/src/overlays/actors/ovl_En_Horse_Link_Child/z_en_horse_link_child.c index 64f03bd865..ca7f014e35 100644 --- a/src/overlays/actors/ovl_En_Horse_Link_Child/z_en_horse_link_child.c +++ b/src/overlays/actors/ovl_En_Horse_Link_Child/z_en_horse_link_child.c @@ -4,18 +4,24 @@ * Description: Young Epona */ -#include "global.h" +#include "z_en_horse_link_child.h" + #include "gfx.h" #include "gfx_setupdl.h" #include "ichain.h" #include "rand.h" #include "regs.h" +#include "segmented_address.h" #include "sfx.h" +#include "sys_math3d.h" +#include "z_lib.h" #include "z64actor.h" #include "z64horse.h" #include "z64player.h" #include "z64play.h" -#include "z_en_horse_link_child.h" +#include "z64save.h" +#include "z64skin.h" + #include "assets/objects/object_horse_link_child/object_horse_link_child.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_UPDATE_DURING_OCARINA) @@ -66,7 +72,7 @@ static ColliderCylinderInitType1 sCylinderInit = { { 20, 100, 0, { 0, 0, 0 } }, }; -static ColliderJntSphElementInit sJntSphElementInit[1] = { +static ColliderJntSphElementInit sJntSphElementsInit[1] = { { { ELEM_MATERIAL_UNK0, @@ -90,7 +96,7 @@ static ColliderJntSphInit sJntSphInit = { COLSHAPE_JNTSPH, }, 1, - sJntSphElementInit, + sJntSphElementsInit, }; static CollisionCheckInfoInit sColCheckInfoInit = { 10, 35, 100, MASS_HEAVY }; @@ -168,7 +174,7 @@ void EnHorseLinkChild_Init(Actor* thisx, PlayState* play) { Collider_InitCylinder(play, &this->bodyCollider); Collider_SetCylinderType1(play, &this->bodyCollider, &this->actor, &sCylinderInit); Collider_InitJntSph(play, &this->headCollider); - Collider_SetJntSph(play, &this->headCollider, &this->actor, &sJntSphInit, this->headElements); + Collider_SetJntSph(play, &this->headCollider, &this->actor, &sJntSphInit, this->headColliderElements); CollisionCheck_SetInfo(&this->actor.colChkInfo, NULL, &sColCheckInfoInit); this->unk_1F0 = 0; this->eyeTexIndex = 0; diff --git a/src/overlays/actors/ovl_En_Horse_Link_Child/z_en_horse_link_child.h b/src/overlays/actors/ovl_En_Horse_Link_Child/z_en_horse_link_child.h index 3ad5a449af..a4e9b512d7 100644 --- a/src/overlays/actors/ovl_En_Horse_Link_Child/z_en_horse_link_child.h +++ b/src/overlays/actors/ovl_En_Horse_Link_Child/z_en_horse_link_child.h @@ -20,7 +20,7 @@ typedef struct EnHorseLinkChild { /* 0x01F0 */ s32 unk_1F0; /* 0x01F4 */ ColliderCylinder bodyCollider; /* 0x0240 */ ColliderJntSph headCollider; - /* 0x0260 */ ColliderJntSphElement headElements[1]; + /* 0x0260 */ ColliderJntSphElement headColliderElements[1]; /* 0x02A0 */ s32 unk_2A0; } EnHorseLinkChild; // size = 0x02A4 diff --git a/src/overlays/actors/ovl_En_Horse_Normal/z_en_horse_normal.c b/src/overlays/actors/ovl_En_Horse_Normal/z_en_horse_normal.c index c760dc54d7..1ddc46944b 100644 --- a/src/overlays/actors/ovl_En_Horse_Normal/z_en_horse_normal.c +++ b/src/overlays/actors/ovl_En_Horse_Normal/z_en_horse_normal.c @@ -5,6 +5,22 @@ */ #include "z_en_horse_normal.h" + +#include "libc64/math64.h" +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "regs.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64save.h" +#include "z64skin.h" +#include "z64skin_matrix.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_horse_normal/object_horse_normal.h" @@ -197,7 +213,7 @@ void EnHorseNormal_Init(Actor* thisx, PlayState* play) { Collider_InitCylinder(play, &this->bodyCollider); Collider_SetCylinder(play, &this->bodyCollider, &this->actor, &sCylinderInit1); Collider_InitJntSph(play, &this->headCollider); - Collider_SetJntSph(play, &this->headCollider, &this->actor, &sJntSphInit, this->headElements); + Collider_SetJntSph(play, &this->headCollider, &this->actor, &sJntSphInit, this->headColliderElements); Collider_InitCylinder(play, &this->cloneCollider); Collider_SetCylinder(play, &this->cloneCollider, &this->actor, &sCylinderInit2); CollisionCheck_SetInfo(&this->actor.colChkInfo, NULL, &sColChkInfoInit); @@ -706,7 +722,7 @@ void EnHorseNormal_Draw(Actor* thisx, PlayState* play2) { if (mtx == NULL) { return; } - gSPMatrix(POLY_OPA_DISP++, &gMtxClear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(POLY_OPA_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPMatrix(POLY_OPA_DISP++, mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); func_800A63CC(&this->actor, play, &this->skin, NULL, NULL, true, 0, SKIN_DRAW_FLAG_CUSTOM_TRANSFORMS | SKIN_DRAW_FLAG_CUSTOM_MATRIX); diff --git a/src/overlays/actors/ovl_En_Horse_Normal/z_en_horse_normal.h b/src/overlays/actors/ovl_En_Horse_Normal/z_en_horse_normal.h index f9445eb186..01ddd44608 100644 --- a/src/overlays/actors/ovl_En_Horse_Normal/z_en_horse_normal.h +++ b/src/overlays/actors/ovl_En_Horse_Normal/z_en_horse_normal.h @@ -2,11 +2,12 @@ #define Z_EN_HORSE_NORMAL_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" +#include "z64skin.h" struct EnHorseNormal; -typedef void (*EnHorseNormalActionFunc)(struct EnHorseNormal*, PlayState*); +typedef void (*EnHorseNormalActionFunc)(struct EnHorseNormal*, struct PlayState*); typedef struct EnHorseNormal { /* 0x0000 */ Actor actor; @@ -26,7 +27,7 @@ typedef struct EnHorseNormal { /* 0x0224 */ char unk_224[0x04]; /* 0x0228 */ ColliderCylinder bodyCollider; /* 0x0274 */ ColliderJntSph headCollider; - /* 0x0294 */ ColliderJntSphElement headElements[1]; + /* 0x0294 */ ColliderJntSphElement headColliderElements[1]; /* 0x02D4 */ ColliderCylinder cloneCollider; /* 0x0320 */ char unk_320[0x04]; /* 0x0324 */ s32 waypoint; diff --git a/src/overlays/actors/ovl_En_Horse_Zelda/z_en_horse_zelda.c b/src/overlays/actors/ovl_En_Horse_Zelda/z_en_horse_zelda.c index 04b7b19336..059f88c3ae 100644 --- a/src/overlays/actors/ovl_En_Horse_Zelda/z_en_horse_zelda.c +++ b/src/overlays/actors/ovl_En_Horse_Zelda/z_en_horse_zelda.c @@ -5,6 +5,17 @@ */ #include "z_en_horse_zelda.h" + +#include "libc64/math64.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_math3d.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_horse_zelda/object_horse_zelda.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED @@ -163,8 +174,8 @@ void EnHorseZelda_Init(Actor* thisx, PlayState* play) { Animation_PlayOnce(&this->skin.skelAnime, sAnimationHeaders[0]); Collider_InitCylinder(play, &this->colliderCylinder); Collider_SetCylinderType1(play, &this->colliderCylinder, &this->actor, &sCylinderInit); - Collider_InitJntSph(play, &this->colliderSphere); - Collider_SetJntSph(play, &this->colliderSphere, &this->actor, &sJntSphInit, &this->colliderSphereItem); + Collider_InitJntSph(play, &this->colliderJntSph); + Collider_SetJntSph(play, &this->colliderJntSph, &this->actor, &sJntSphInit, this->colliderJntSphElements); CollisionCheck_SetInfo(&this->actor.colChkInfo, NULL, &sColChkInfoInit); this->animationIndex = 0; EnHorseZelda_SetupStop(this); @@ -174,7 +185,7 @@ void EnHorseZelda_Destroy(Actor* thisx, PlayState* play) { EnHorseZelda* this = (EnHorseZelda*)thisx; Collider_DestroyCylinder(play, &this->colliderCylinder); - Collider_DestroyJntSph(play, &this->colliderSphere); + Collider_DestroyJntSph(play, &this->colliderJntSph); Skin_Free(play, &this->skin); } @@ -250,23 +261,23 @@ void EnHorseZelda_PostDraw(Actor* thisx, PlayState* play, Skin* skin) { EnHorseZelda* this = (EnHorseZelda*)thisx; s32 i; - for (i = 0; i < this->colliderSphere.count; i++) { - offset.x = this->colliderSphere.elements[i].dim.modelSphere.center.x; - offset.y = this->colliderSphere.elements[i].dim.modelSphere.center.y; - offset.z = this->colliderSphere.elements[i].dim.modelSphere.center.z; + for (i = 0; i < this->colliderJntSph.count; i++) { + offset.x = this->colliderJntSph.elements[i].dim.modelSphere.center.x; + offset.y = this->colliderJntSph.elements[i].dim.modelSphere.center.y; + offset.z = this->colliderJntSph.elements[i].dim.modelSphere.center.z; - Skin_GetLimbPos(skin, this->colliderSphere.elements[i].dim.limb, &offset, &dst); + Skin_GetLimbPos(skin, this->colliderJntSph.elements[i].dim.limb, &offset, &dst); - this->colliderSphere.elements[i].dim.worldSphere.center.x = dst.x; - this->colliderSphere.elements[i].dim.worldSphere.center.y = dst.y; - this->colliderSphere.elements[i].dim.worldSphere.center.z = dst.z; + this->colliderJntSph.elements[i].dim.worldSphere.center.x = dst.x; + this->colliderJntSph.elements[i].dim.worldSphere.center.y = dst.y; + this->colliderJntSph.elements[i].dim.worldSphere.center.z = dst.z; - this->colliderSphere.elements[i].dim.worldSphere.radius = - this->colliderSphere.elements[i].dim.modelSphere.radius * this->colliderSphere.elements[i].dim.scale; + this->colliderJntSph.elements[i].dim.worldSphere.radius = + this->colliderJntSph.elements[i].dim.modelSphere.radius * this->colliderJntSph.elements[i].dim.scale; } //! @bug see relevant comment in `EnHorse_SkinCallback1` - CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderSphere.base); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderJntSph.base); } void EnHorseZelda_Draw(Actor* thisx, PlayState* play) { diff --git a/src/overlays/actors/ovl_En_Horse_Zelda/z_en_horse_zelda.h b/src/overlays/actors/ovl_En_Horse_Zelda/z_en_horse_zelda.h index 7ce6cace3a..86b851c77b 100644 --- a/src/overlays/actors/ovl_En_Horse_Zelda/z_en_horse_zelda.h +++ b/src/overlays/actors/ovl_En_Horse_Zelda/z_en_horse_zelda.h @@ -2,11 +2,12 @@ #define Z_EN_HORSE_ZELDA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" +#include "z64skin.h" struct EnHorseZelda; -typedef void (*EnHorseZeldaActionFunc)(struct EnHorseZelda*, PlayState*); +typedef void (*EnHorseZeldaActionFunc)(struct EnHorseZelda*, struct PlayState*); typedef struct EnHorseZelda { /* 0x0000 */ Actor actor; @@ -19,8 +20,8 @@ typedef struct EnHorseZelda { /* 0x01F4 */ f32 floorYForwards; /* 0x01F8 */ char unk_1F8[0x4]; /* 0x01FC */ ColliderCylinder colliderCylinder; - /* 0x0248 */ ColliderJntSph colliderSphere; - /* 0x0268 */ ColliderJntSphElement colliderSphereItem; + /* 0x0248 */ ColliderJntSph colliderJntSph; + /* 0x0268 */ ColliderJntSphElement colliderJntSphElements[1]; } EnHorseZelda; // size = 0x02A8 #endif 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 66d12bafb2..88a548a41a 100644 --- a/src/overlays/actors/ovl_En_Hs/z_en_hs.c +++ b/src/overlays/actors/ovl_En_Hs/z_en_hs.c @@ -5,7 +5,17 @@ */ #include "z_en_hs.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_hs/object_hs.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) diff --git a/src/overlays/actors/ovl_En_Hs/z_en_hs.h b/src/overlays/actors/ovl_En_Hs/z_en_hs.h index f4b89ce153..f938b51518 100644 --- a/src/overlays/actors/ovl_En_Hs/z_en_hs.h +++ b/src/overlays/actors/ovl_En_Hs/z_en_hs.h @@ -2,11 +2,11 @@ #define Z_EN_HS_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnHs; -typedef void (*EnHsActionFunc)(struct EnHs*, PlayState*); +typedef void (*EnHsActionFunc)(struct EnHs*, struct PlayState*); typedef struct EnHs { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Hs2/z_en_hs2.c b/src/overlays/actors/ovl_En_Hs2/z_en_hs2.c index b1b04107f0..4914be17ed 100644 --- a/src/overlays/actors/ovl_En_Hs2/z_en_hs2.c +++ b/src/overlays/actors/ovl_En_Hs2/z_en_hs2.c @@ -5,7 +5,15 @@ */ #include "z_en_hs2.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64face_reaction.h" +#include "z64play.h" + #include "assets/objects/object_hs/object_hs.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) diff --git a/src/overlays/actors/ovl_En_Hs2/z_en_hs2.h b/src/overlays/actors/ovl_En_Hs2/z_en_hs2.h index e2f66f79c3..dec1533f89 100644 --- a/src/overlays/actors/ovl_En_Hs2/z_en_hs2.h +++ b/src/overlays/actors/ovl_En_Hs2/z_en_hs2.h @@ -2,11 +2,11 @@ #define Z_EN_HS2_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnHs2; -typedef void (*EnHs2ActionFunc)(struct EnHs2*, PlayState*); +typedef void (*EnHs2ActionFunc)(struct EnHs2*, struct PlayState*); typedef struct EnHs2 { /* 0x0000 */ Actor actor; 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 2aa163d0fb..3af23db48b 100644 --- a/src/overlays/actors/ovl_En_Hy/z_en_hy.c +++ b/src/overlays/actors/ovl_En_Hy/z_en_hy.c @@ -5,7 +5,22 @@ */ #include "z_en_hy.h" + +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" #include "versions.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64face_reaction.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_aob/object_aob.h" #include "assets/objects/object_ahg/object_ahg.h" #include "assets/objects/object_bob/object_bob.h" diff --git a/src/overlays/actors/ovl_En_Hy/z_en_hy.h b/src/overlays/actors/ovl_En_Hy/z_en_hy.h index a5c04ed3ab..50bdc90933 100644 --- a/src/overlays/actors/ovl_En_Hy/z_en_hy.h +++ b/src/overlays/actors/ovl_En_Hy/z_en_hy.h @@ -2,7 +2,7 @@ #define Z_EN_HY_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" #define ENHY_GET_TYPE(thisx) PARAMS_GET_S((thisx)->params, 0, 7) #define ENHY_GET_PATH_INDEX(thisx) PARAMS_GET_S((thisx)->params, 7, 4) @@ -54,7 +54,7 @@ typedef enum EnHyLimb { struct EnHy; -typedef void (*EnHyActionFunc)(struct EnHy*, PlayState*); +typedef void (*EnHyActionFunc)(struct EnHy*, struct PlayState*); typedef struct EnHy { /* 0x0000 */ Actor actor; @@ -68,7 +68,7 @@ typedef struct EnHy { /* 0x0199 */ s8 objectSlotOsAnime; /* 0x019C */ ColliderCylinder collider; /* 0x01E8 */ NpcInteractInfo interactInfo; - /* 0x0210 */ Path* path; + /* 0x0210 */ struct Path* path; /* 0x0214 */ s8 waypoint; /* 0x0215 */ s8 playedSfx; /* 0x0216 */ char unk_216[2]; // unused 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 a0fc6e7bde..4c230f210b 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 @@ -5,6 +5,19 @@ */ #include "z_en_ice_hono.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64item.h" +#include "z64light.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_En_Ice_Hono/z_en_ice_hono.h b/src/overlays/actors/ovl_En_Ice_Hono/z_en_ice_hono.h index e5ad5fd1cf..ea975199aa 100644 --- a/src/overlays/actors/ovl_En_Ice_Hono/z_en_ice_hono.h +++ b/src/overlays/actors/ovl_En_Ice_Hono/z_en_ice_hono.h @@ -2,11 +2,12 @@ #define Z_EN_ICE_HONO_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" +#include "z64light.h" struct EnIceHono; -typedef void (*EnIceHonoActionFunc)(struct EnIceHono*, PlayState*); +typedef void (*EnIceHonoActionFunc)(struct EnIceHono*, struct PlayState*); typedef struct EnIceHono { /* 0x0000 */ Actor actor; 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 e95e5d4fac..61573e535f 100644 --- a/src/overlays/actors/ovl_En_Ik/z_en_ik.c +++ b/src/overlays/actors/ovl_En_Ik/z_en_ik.c @@ -5,10 +5,28 @@ */ #include "z_en_ik.h" -#include "assets/scenes/dungeons/jyasinboss/jyasinboss_scene.h" -#include "assets/objects/object_ik/object_ik.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "rumble.h" +#include "sfx.h" +#include "sequence.h" +#include "sys_matrix.h" #include "terminal.h" #include "versions.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" +#include "z64skin_matrix.h" + +#include "assets/scenes/dungeons/jyasinboss/jyasinboss_scene.h" +#include "assets/objects/object_ik/object_ik.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED 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 70c45063b5..a0ecd34d0f 100644 --- a/src/overlays/actors/ovl_En_Ik/z_en_ik.h +++ b/src/overlays/actors/ovl_En_Ik/z_en_ik.h @@ -2,11 +2,11 @@ #define Z_EN_IK_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnIk; -typedef void (*EnIkActionFunc)(struct EnIk*, PlayState*); +typedef void (*EnIkActionFunc)(struct EnIk*, struct PlayState*); #define IK_GET_UPPER_PARAMS(thisx) PARAMS_GET_NOSHIFT(this->actor.params, 8, 8) #define IK_GET_ARMOR_TYPE(thisx) PARAMS_GET_U((thisx)->params, 0, 8) diff --git a/src/overlays/actors/ovl_En_In/z_en_in.c b/src/overlays/actors/ovl_En_In/z_en_in.c index 36d9634f91..2a156b5816 100644 --- a/src/overlays/actors/ovl_En_In/z_en_in.c +++ b/src/overlays/actors/ovl_En_In/z_en_in.c @@ -1,6 +1,23 @@ #include "z_en_in.h" -#include "versions.h" #include "overlays/actors/ovl_En_Horse/z_en_horse.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "letterbox.h" +#include "regs.h" +#include "segmented_address.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "versions.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64face_reaction.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_in/object_in.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_In/z_en_in.h b/src/overlays/actors/ovl_En_In/z_en_in.h index 84b5db8bac..00774d0ddb 100644 --- a/src/overlays/actors/ovl_En_In/z_en_in.h +++ b/src/overlays/actors/ovl_En_In/z_en_in.h @@ -2,11 +2,11 @@ #define Z_EN_IN_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnIn; -typedef void (*EnInActionFunc)(struct EnIn*, PlayState*); +typedef void (*EnInActionFunc)(struct EnIn*, struct PlayState*); typedef enum IngoLimb { /* 0x00 */ INGO_LIMB_NONE, 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 4740bbc791..9135ccd110 100644 --- a/src/overlays/actors/ovl_En_Insect/z_en_insect.c +++ b/src/overlays/actors/ovl_En_Insect/z_en_insect.c @@ -5,8 +5,21 @@ */ #include "z_en_insect.h" -#include "global.h" +#include "overlays/actors/ovl_Obj_Makekinsuta/z_obj_makekinsuta.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_math3d.h" #include "terminal.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define FLAGS 0 @@ -55,7 +68,7 @@ ActorProfile En_Insect_Profile = { /**/ EnInsect_Draw, }; -static ColliderJntSphElementInit sColliderItemInit[1] = { +static ColliderJntSphElementInit sColliderElementsInit[1] = { { { ELEM_MATERIAL_UNK0, @@ -79,7 +92,7 @@ static ColliderJntSphInit sColliderInit = { COLSHAPE_JNTSPH, }, 1, - sColliderItemInit, + sColliderElementsInit, }; /** @@ -192,7 +205,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->colliderItem); + Collider_SetJntSph(play, &this->collider, &this->actor, &sColliderInit, this->colliderElements); this->actor.colChkInfo.mass = 30; diff --git a/src/overlays/actors/ovl_En_Insect/z_en_insect.h b/src/overlays/actors/ovl_En_Insect/z_en_insect.h index 31d2c1d050..7bf443a2ea 100644 --- a/src/overlays/actors/ovl_En_Insect/z_en_insect.h +++ b/src/overlays/actors/ovl_En_Insect/z_en_insect.h @@ -3,7 +3,6 @@ #include "ultra64.h" #include "z64actor.h" -#include "overlays/actors/ovl_Obj_Makekinsuta/z_obj_makekinsuta.h" struct EnInsect; @@ -22,7 +21,7 @@ typedef void (*EnInsectActionFunc)(struct EnInsect*, struct PlayState*); typedef struct EnInsect { /* 0x0000 */ Actor actor; /* 0x014C */ ColliderJntSph collider; - /* 0x016C */ ColliderJntSphElement colliderItem; + /* 0x016C */ ColliderJntSphElement colliderElements[1]; /* 0x01AC */ SkelAnime skelAnime; /* 0x01F0 */ Vec3s jointTable[24]; /* 0x0280 */ Vec3s morphTable[24]; @@ -33,7 +32,7 @@ typedef struct EnInsect { /* 0x031A */ s16 actionTimer; /* 0x031C */ s16 lifeTimer; /* 0x031E */ s16 crawlSoundDelay; - /* 0x0320 */ ObjMakekinsuta* soilActor; + /* 0x0320 */ struct ObjMakekinsuta* soilActor; /* 0x0324 */ f32 unk_324; /* 0x0328 */ s16 unk_328; /* 0x032A */ u8 unk_32A; 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 7e84670426..41058b811a 100644 --- a/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c +++ b/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c @@ -7,9 +7,24 @@ #include "z_en_ishi.h" #include "overlays/actors/ovl_En_Insect/z_en_insect.h" #include "overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h" -#include "assets/objects/gameplay_field_keep/gameplay_field_keep.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "rumble.h" +#include "sfx.h" +#include "sys_matrix.h" #include "quake.h" #include "terminal.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64item.h" +#include "z64play.h" + +#include "assets/objects/gameplay_field_keep/gameplay_field_keep.h" #define FLAGS ACTOR_FLAG_THROW_ONLY diff --git a/src/overlays/actors/ovl_En_Ishi/z_en_ishi.h b/src/overlays/actors/ovl_En_Ishi/z_en_ishi.h index f4469ea7bc..731929a384 100644 --- a/src/overlays/actors/ovl_En_Ishi/z_en_ishi.h +++ b/src/overlays/actors/ovl_En_Ishi/z_en_ishi.h @@ -2,7 +2,7 @@ #define Z_EN_ISHI_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" // The switch flag value for this actor is constructed in a unique way. // There are two separate param values which get OR'd together to create one final switch flag index. @@ -25,9 +25,9 @@ typedef enum EnIshiType { struct EnIshi; -typedef void (*EnIshiActionFunc)(struct EnIshi*, PlayState*); -typedef void (*EnIshiEffectSpawnFunc)(struct EnIshi*, PlayState*); -typedef void (*EnIshiDrawFunc)(struct EnIshi*, PlayState*); +typedef void (*EnIshiActionFunc)(struct EnIshi*, struct PlayState*); +typedef void (*EnIshiEffectSpawnFunc)(struct EnIshi*, struct PlayState*); +typedef void (*EnIshiDrawFunc)(struct EnIshi*, struct PlayState*); typedef struct EnIshi { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_It/z_en_it.c b/src/overlays/actors/ovl_En_It/z_en_it.c index 312ceec96e..975fe8411f 100644 --- a/src/overlays/actors/ovl_En_It/z_en_it.c +++ b/src/overlays/actors/ovl_En_It/z_en_it.c @@ -6,6 +6,8 @@ #include "z_en_it.h" +#include "z64play.h" + #define FLAGS 0 void EnIt_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_En_It/z_en_it.h b/src/overlays/actors/ovl_En_It/z_en_it.h index fb150fcb0d..9f1f794e4f 100644 --- a/src/overlays/actors/ovl_En_It/z_en_it.h +++ b/src/overlays/actors/ovl_En_It/z_en_it.h @@ -2,7 +2,7 @@ #define Z_EN_IT_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnIt; diff --git a/src/overlays/actors/ovl_En_Jj/z_en_jj.c b/src/overlays/actors/ovl_En_Jj/z_en_jj.c index a03c20c9ea..3f6b3c587c 100644 --- a/src/overlays/actors/ovl_En_Jj/z_en_jj.c +++ b/src/overlays/actors/ovl_En_Jj/z_en_jj.c @@ -5,9 +5,21 @@ */ #include "z_en_jj.h" -#include "assets/objects/object_jj/object_jj.h" #include "overlays/actors/ovl_Eff_Dust/z_eff_dust.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/object_jj/object_jj.h" + #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) typedef enum EnJjEyeState { diff --git a/src/overlays/actors/ovl_En_Jj/z_en_jj.h b/src/overlays/actors/ovl_En_Jj/z_en_jj.h index c5d6241204..9ac2df8bb4 100644 --- a/src/overlays/actors/ovl_En_Jj/z_en_jj.h +++ b/src/overlays/actors/ovl_En_Jj/z_en_jj.h @@ -2,11 +2,11 @@ #define Z_EN_JJ_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnJj; -typedef void (*EnJjActionFunc)(struct EnJj*, PlayState*); +typedef void (*EnJjActionFunc)(struct EnJj*, struct PlayState*); typedef struct EnJj { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_En_Js/z_en_js.c b/src/overlays/actors/ovl_En_Js/z_en_js.c index 6cd5163aec..f5aee34c6a 100644 --- a/src/overlays/actors/ovl_En_Js/z_en_js.c +++ b/src/overlays/actors/ovl_En_Js/z_en_js.c @@ -5,6 +5,15 @@ */ #include "z_en_js.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "regs.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_js/object_js.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) diff --git a/src/overlays/actors/ovl_En_Js/z_en_js.h b/src/overlays/actors/ovl_En_Js/z_en_js.h index f1e356b2c1..e1e22f547d 100644 --- a/src/overlays/actors/ovl_En_Js/z_en_js.h +++ b/src/overlays/actors/ovl_En_Js/z_en_js.h @@ -2,11 +2,11 @@ #define Z_EN_JS_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnJs; -typedef void (*EnJsActionFunc)(struct EnJs*, PlayState*); +typedef void (*EnJsActionFunc)(struct EnJs*, struct PlayState*); typedef struct EnJs { /* 0x0000 */ Actor actor; 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 6650e31715..2d0ed48af9 100644 --- a/src/overlays/actors/ovl_En_Jsjutan/z_en_jsjutan.c +++ b/src/overlays/actors/ovl_En_Jsjutan/z_en_jsjutan.c @@ -7,6 +7,16 @@ #include "z_en_jsjutan.h" #include "overlays/actors/ovl_En_Bom/z_en_bom.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sys_math.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) void EnJsjutan_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_En_Jsjutan/z_en_jsjutan.h b/src/overlays/actors/ovl_En_Jsjutan/z_en_jsjutan.h index 63a694bad6..b6c4b07591 100644 --- a/src/overlays/actors/ovl_En_Jsjutan/z_en_jsjutan.h +++ b/src/overlays/actors/ovl_En_Jsjutan/z_en_jsjutan.h @@ -2,7 +2,7 @@ #define Z_EN_JSJUTAN_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnJsjutan; 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 d5ada18305..7a38ebc937 100644 --- a/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c +++ b/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c @@ -5,7 +5,20 @@ */ #include "z_en_kakasi.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "one_point_cutscene.h" +#include "rand.h" +#include "regs.h" +#include "sfx.h" #include "terminal.h" +#include "z_lib.h" +#include "z64ocarina.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_ka/object_ka.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_DURING_OCARINA) diff --git a/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.h b/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.h index ceef6afe9c..c2eff368ca 100644 --- a/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.h +++ b/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.h @@ -2,11 +2,11 @@ #define Z_EN_KAKASI_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnKakasi; -typedef void (*EnKakasiFunc)(struct EnKakasi*, PlayState*); +typedef void (*EnKakasiFunc)(struct EnKakasi*, struct PlayState*); typedef struct EnKakasi { /* 0x0000 */ Actor actor; 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 45a9390f63..d2b70ada73 100644 --- a/src/overlays/actors/ovl_En_Kakasi2/z_en_kakasi2.c +++ b/src/overlays/actors/ovl_En_Kakasi2/z_en_kakasi2.c @@ -5,7 +5,19 @@ */ #include "z_en_kakasi2.h" + +#include "gfx_setupdl.h" +#include "one_point_cutscene.h" +#include "regs.h" +#include "sfx.h" #include "terminal.h" +#include "z_lib.h" +#include "z64debug_display.h" +#include "z64ocarina.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_ka/object_ka.h" #define FLAGS \ diff --git a/src/overlays/actors/ovl_En_Kakasi2/z_en_kakasi2.h b/src/overlays/actors/ovl_En_Kakasi2/z_en_kakasi2.h index 9309c16725..c3398d7e7f 100644 --- a/src/overlays/actors/ovl_En_Kakasi2/z_en_kakasi2.h +++ b/src/overlays/actors/ovl_En_Kakasi2/z_en_kakasi2.h @@ -2,11 +2,11 @@ #define Z_EN_KAKASI2_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnKakasi2; -typedef void (*EnKakasi2ActionFunc)(struct EnKakasi2*, PlayState*); +typedef void (*EnKakasi2ActionFunc)(struct EnKakasi2*, struct PlayState*); typedef struct EnKakasi2 { /* 0x0000 */ Actor actor; 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 c670a19efb..6ae299d966 100644 --- a/src/overlays/actors/ovl_En_Kakasi3/z_en_kakasi3.c +++ b/src/overlays/actors/ovl_En_Kakasi3/z_en_kakasi3.c @@ -5,7 +5,20 @@ */ #include "z_en_kakasi3.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "one_point_cutscene.h" +#include "rand.h" +#include "regs.h" +#include "sfx.h" #include "terminal.h" +#include "z_lib.h" +#include "z64ocarina.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_ka/object_ka.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_DURING_OCARINA) diff --git a/src/overlays/actors/ovl_En_Kakasi3/z_en_kakasi3.h b/src/overlays/actors/ovl_En_Kakasi3/z_en_kakasi3.h index f402ab5ded..e09b98a9fb 100644 --- a/src/overlays/actors/ovl_En_Kakasi3/z_en_kakasi3.h +++ b/src/overlays/actors/ovl_En_Kakasi3/z_en_kakasi3.h @@ -2,11 +2,11 @@ #define Z_EN_KAKASI3_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnKakasi3; -typedef void (*EnKakasi3ActionFunc)(struct EnKakasi3*, PlayState*); +typedef void (*EnKakasi3ActionFunc)(struct EnKakasi3*, struct PlayState*); typedef struct EnKakasi3 { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Kanban/z_en_kanban.c b/src/overlays/actors/ovl_En_Kanban/z_en_kanban.c index 03242220e0..5c2b652437 100644 --- a/src/overlays/actors/ovl_En_Kanban/z_en_kanban.c +++ b/src/overlays/actors/ovl_En_Kanban/z_en_kanban.c @@ -5,10 +5,26 @@ */ #include "z_en_kanban.h" -#include "global.h" + +#include "libc64/math64.h" +#include "libc64/qrand.h" +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "terminal.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64ocarina.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_kanban/object_kanban.h" -#include "terminal.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Kanban/z_en_kanban_gfx.inc.c b/src/overlays/actors/ovl_En_Kanban/z_en_kanban_gfx.inc.c index c38e9df942..3dca1d6259 100644 --- a/src/overlays/actors/ovl_En_Kanban/z_en_kanban_gfx.inc.c +++ b/src/overlays/actors/ovl_En_Kanban/z_en_kanban_gfx.inc.c @@ -1,4 +1,4 @@ -#include "z_en_kanban.h" +#include "ultra64.h" static u16 sShadowTexFlags[] = { 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x000, 0x100, diff --git a/src/overlays/actors/ovl_En_Karebaba/z_en_karebaba.c b/src/overlays/actors/ovl_En_Karebaba/z_en_karebaba.c index cdba59e661..be3b0eacb5 100644 --- a/src/overlays/actors/ovl_En_Karebaba/z_en_karebaba.c +++ b/src/overlays/actors/ovl_En_Karebaba/z_en_karebaba.c @@ -5,9 +5,21 @@ */ #include "z_en_karebaba.h" +#include "overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_dekubaba/object_dekubaba.h" #include "assets/objects/gameplay_keep/gameplay_keep.h" -#include "overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE) diff --git a/src/overlays/actors/ovl_En_Karebaba/z_en_karebaba.h b/src/overlays/actors/ovl_En_Karebaba/z_en_karebaba.h index 0687ade588..97b04f1a7f 100644 --- a/src/overlays/actors/ovl_En_Karebaba/z_en_karebaba.h +++ b/src/overlays/actors/ovl_En_Karebaba/z_en_karebaba.h @@ -2,11 +2,11 @@ #define Z_EN_KAREBABA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnKarebaba; -typedef void (*EnKarebabaActionFunc)(struct EnKarebaba*, PlayState*); +typedef void (*EnKarebabaActionFunc)(struct EnKarebaba*, struct PlayState*); typedef struct EnKarebaba { /* 0x0000 */ Actor actor; @@ -14,7 +14,7 @@ typedef struct EnKarebaba { /* 0x0190 */ EnKarebabaActionFunc actionFunc; /* 0x0194 */ Vec3s jointTable[8]; /* 0x01C4 */ Vec3s morphTable[8]; - /* 0x01F4 */ CollisionPoly* boundFloor; + /* 0x01F4 */ struct CollisionPoly* boundFloor; /* 0x01F8 */ ColliderCylinder headCollider; /* 0x0244 */ ColliderCylinder bodyCollider; } EnKarebaba; // size = 0x0290 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 32f3829721..4426d8c4f7 100644 --- a/src/overlays/actors/ovl_En_Ko/z_en_ko.c +++ b/src/overlays/actors/ovl_En_Ko/z_en_ko.c @@ -5,12 +5,24 @@ */ #include "z_en_ko.h" + +#include "attributes.h" +#include "gfx.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "terminal.h" +#include "versions.h" +#include "z_lib.h" +#include "z64face_reaction.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_fa/object_fa.h" #include "assets/objects/object_os_anime/object_os_anime.h" #include "assets/objects/object_km1/object_km1.h" #include "assets/objects/object_kw1/object_kw1.h" -#include "terminal.h" -#include "versions.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Ko/z_en_ko.h b/src/overlays/actors/ovl_En_Ko/z_en_ko.h index 085e9aca54..d9531e57e6 100644 --- a/src/overlays/actors/ovl_En_Ko/z_en_ko.h +++ b/src/overlays/actors/ovl_En_Ko/z_en_ko.h @@ -2,11 +2,11 @@ #define Z_EN_KO_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnKo; -typedef void (*EnKoActionFunc)(struct EnKo*, PlayState*); +typedef void (*EnKoActionFunc)(struct EnKo*, struct PlayState*); typedef struct EnKo { /* 0x0000 */ Actor actor; @@ -17,7 +17,7 @@ typedef struct EnKo { /* 0x0196 */ s8 legsObjectSlot; /* 0x0197 */ s8 osAnimeObjectSlot; /* 0x0198 */ ColliderCylinder collider; - /* 0x01E4 */ Path* path; + /* 0x01E4 */ struct Path* path; /* 0x01E8 */ NpcInteractInfo interactInfo; /* 0x0210 */ u8 unk_210; // block trade quest sfx /* 0x0212 */ s16 forestQuestState; 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 e46125878e..eb6b0f1c23 100644 --- a/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c +++ b/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c @@ -7,10 +7,20 @@ #include "z_en_kusa.h" #include "overlays/actors/ovl_En_Insect/z_en_insect.h" #include "overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h" + +#include "libc64/qrand.h" +#include "ichain.h" +#include "rand.h" +#include "sfx.h" +#include "terminal.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/gameplay_field_keep/gameplay_field_keep.h" #include "assets/objects/object_kusa/object_kusa.h" -#include "terminal.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_THROW_ONLY) diff --git a/src/overlays/actors/ovl_En_Kusa/z_en_kusa.h b/src/overlays/actors/ovl_En_Kusa/z_en_kusa.h index 4a895fe15a..a375581cf9 100644 --- a/src/overlays/actors/ovl_En_Kusa/z_en_kusa.h +++ b/src/overlays/actors/ovl_En_Kusa/z_en_kusa.h @@ -2,11 +2,11 @@ #define Z_EN_KUSA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnKusa; -typedef void (*EnKusaActionFunc)(struct EnKusa*, PlayState*); +typedef void (*EnKusaActionFunc)(struct EnKusa*, struct PlayState*); typedef enum EnKusaType { /* 0 */ ENKUSA_TYPE_0, diff --git a/src/overlays/actors/ovl_En_Kz/z_en_kz.c b/src/overlays/actors/ovl_En_Kz/z_en_kz.c index a4aaf4e1ca..7caa735739 100644 --- a/src/overlays/actors/ovl_En_Kz/z_en_kz.c +++ b/src/overlays/actors/ovl_En_Kz/z_en_kz.c @@ -5,7 +5,21 @@ */ #include "z_en_kz.h" + +#include "libc64/math64.h" +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" #include "versions.h" +#include "z_lib.h" +#include "z64face_reaction.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_kz/object_kz.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) diff --git a/src/overlays/actors/ovl_En_Kz/z_en_kz.h b/src/overlays/actors/ovl_En_Kz/z_en_kz.h index b5cd380791..933fbe2617 100644 --- a/src/overlays/actors/ovl_En_Kz/z_en_kz.h +++ b/src/overlays/actors/ovl_En_Kz/z_en_kz.h @@ -2,11 +2,11 @@ #define Z_EN_KZ_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnKz; -typedef void (*EnKzActionFunc)(struct EnKz*, PlayState*); +typedef void (*EnKzActionFunc)(struct EnKz*, struct PlayState*); typedef struct EnKz { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Light/z_en_light.c b/src/overlays/actors/ovl_En_Light/z_en_light.c index 33d671a95f..f0cc5dddc6 100644 --- a/src/overlays/actors/ovl_En_Light/z_en_light.c +++ b/src/overlays/actors/ovl_En_Light/z_en_light.c @@ -5,6 +5,17 @@ */ #include "z_en_light.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64light.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/gameplay_dangeon_keep/gameplay_dangeon_keep.h" diff --git a/src/overlays/actors/ovl_En_Light/z_en_light.h b/src/overlays/actors/ovl_En_Light/z_en_light.h index 1cbf786b00..035471f47d 100644 --- a/src/overlays/actors/ovl_En_Light/z_en_light.h +++ b/src/overlays/actors/ovl_En_Light/z_en_light.h @@ -2,7 +2,8 @@ #define Z_EN_LIGHT_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" +#include "z64light.h" struct EnLight; diff --git a/src/overlays/actors/ovl_En_Lightbox/z_en_lightbox.c b/src/overlays/actors/ovl_En_Lightbox/z_en_lightbox.c index c2b6ca1d6c..b4bd3af91b 100644 --- a/src/overlays/actors/ovl_En_Lightbox/z_en_lightbox.c +++ b/src/overlays/actors/ovl_En_Lightbox/z_en_lightbox.c @@ -5,6 +5,12 @@ */ #include "z_en_lightbox.h" + +#include "regs.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_lightbox/object_lightbox.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_En_Lightbox/z_en_lightbox.h b/src/overlays/actors/ovl_En_Lightbox/z_en_lightbox.h index e24afd44e1..c09c77f850 100644 --- a/src/overlays/actors/ovl_En_Lightbox/z_en_lightbox.h +++ b/src/overlays/actors/ovl_En_Lightbox/z_en_lightbox.h @@ -2,7 +2,7 @@ #define Z_EN_LIGHTBOX_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnLightbox; diff --git a/src/overlays/actors/ovl_En_M_Fire1/z_en_m_fire1.c b/src/overlays/actors/ovl_En_M_Fire1/z_en_m_fire1.c index 9acedc1552..2097bb9d26 100644 --- a/src/overlays/actors/ovl_En_M_Fire1/z_en_m_fire1.c +++ b/src/overlays/actors/ovl_En_M_Fire1/z_en_m_fire1.c @@ -6,6 +6,9 @@ #include "z_en_m_fire1.h" +#include "z_lib.h" +#include "z64play.h" + #define FLAGS 0 void EnMFire1_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_En_M_Fire1/z_en_m_fire1.h b/src/overlays/actors/ovl_En_M_Fire1/z_en_m_fire1.h index 10d3e3fef7..59ebb44318 100644 --- a/src/overlays/actors/ovl_En_M_Fire1/z_en_m_fire1.h +++ b/src/overlays/actors/ovl_En_M_Fire1/z_en_m_fire1.h @@ -2,7 +2,7 @@ #define Z_EN_M_FIRE1_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnMFire1; diff --git a/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.c b/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.c index eb7745aa86..ba34f9adcc 100644 --- a/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.c +++ b/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.c @@ -1,4 +1,17 @@ #include "z_en_m_thunder.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rumble.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64light.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.h b/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.h index 4cb7ad215c..8c7cdd7a1f 100644 --- a/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.h +++ b/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.h @@ -2,11 +2,12 @@ #define Z_EN_M_THUNDER_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" +#include "z64light.h" struct EnMThunder; -typedef void (*EnMThunderActionFunc)(struct EnMThunder*, PlayState*); +typedef void (*EnMThunderActionFunc)(struct EnMThunder*, struct PlayState*); typedef struct EnMThunder { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Ma1/z_en_ma1.c b/src/overlays/actors/ovl_En_Ma1/z_en_ma1.c index df3f6ac1ce..a885387727 100644 --- a/src/overlays/actors/ovl_En_Ma1/z_en_ma1.c +++ b/src/overlays/actors/ovl_En_Ma1/z_en_ma1.c @@ -5,6 +5,20 @@ */ #include "z_en_ma1.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sequence.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64face_reaction.h" +#include "z64ocarina.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_ma1/object_ma1.h" #define FLAGS \ diff --git a/src/overlays/actors/ovl_En_Ma1/z_en_ma1.h b/src/overlays/actors/ovl_En_Ma1/z_en_ma1.h index ef69c0c8e4..3664fc98a8 100644 --- a/src/overlays/actors/ovl_En_Ma1/z_en_ma1.h +++ b/src/overlays/actors/ovl_En_Ma1/z_en_ma1.h @@ -2,11 +2,11 @@ #define Z_EN_MA1_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnMa1; -typedef void (*EnMa1ActionFunc)(struct EnMa1*, PlayState*); +typedef void (*EnMa1ActionFunc)(struct EnMa1*, struct PlayState*); typedef struct EnMa1 { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Ma2/z_en_ma2.c b/src/overlays/actors/ovl_En_Ma2/z_en_ma2.c index a4a4a17049..aed88bb92c 100644 --- a/src/overlays/actors/ovl_En_Ma2/z_en_ma2.c +++ b/src/overlays/actors/ovl_En_Ma2/z_en_ma2.c @@ -1,4 +1,19 @@ #include "z_en_ma2.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64face_reaction.h" +#include "z64ocarina.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_ma2/object_ma2.h" #define FLAGS \ diff --git a/src/overlays/actors/ovl_En_Ma2/z_en_ma2.h b/src/overlays/actors/ovl_En_Ma2/z_en_ma2.h index 390c61da21..81fddf7672 100644 --- a/src/overlays/actors/ovl_En_Ma2/z_en_ma2.h +++ b/src/overlays/actors/ovl_En_Ma2/z_en_ma2.h @@ -2,11 +2,11 @@ #define Z_EN_MA2_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnMa2; -typedef void (*EnMa2ActionFunc)(struct EnMa2*, PlayState*); +typedef void (*EnMa2ActionFunc)(struct EnMa2*, struct PlayState*); typedef enum AdultMalonLimb { /* 0x00 */ MALON_ADULT_LIMB_NONE, diff --git a/src/overlays/actors/ovl_En_Ma3/z_en_ma3.c b/src/overlays/actors/ovl_En_Ma3/z_en_ma3.c index 3376f9e8cc..f50b196280 100644 --- a/src/overlays/actors/ovl_En_Ma3/z_en_ma3.c +++ b/src/overlays/actors/ovl_En_Ma3/z_en_ma3.c @@ -5,8 +5,21 @@ */ #include "z_en_ma3.h" -#include "assets/objects/object_ma2/object_ma2.h" + +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sequence.h" +#include "sys_matrix.h" +#include "z_lib.h" #include "versions.h" +#include "z64audio.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/object_ma2/object_ma2.h" #define FLAGS \ (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED | \ diff --git a/src/overlays/actors/ovl_En_Ma3/z_en_ma3.h b/src/overlays/actors/ovl_En_Ma3/z_en_ma3.h index 2b9dea812d..ecf637561e 100644 --- a/src/overlays/actors/ovl_En_Ma3/z_en_ma3.h +++ b/src/overlays/actors/ovl_En_Ma3/z_en_ma3.h @@ -2,11 +2,11 @@ #define Z_EN_MA3_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnMa3; -typedef void (*EnMa3ActionFunc)(struct EnMa3*, PlayState*); +typedef void (*EnMa3ActionFunc)(struct EnMa3*, struct PlayState*); typedef enum AdultMalonLimb { /* 0x00 */ MALON_ADULT_LIMB_NONE, diff --git a/src/overlays/actors/ovl_En_Mag/z_en_mag.c b/src/overlays/actors/ovl_En_Mag/z_en_mag.c index 8de1d3058d..3431445989 100644 --- a/src/overlays/actors/ovl_En_Mag/z_en_mag.c +++ b/src/overlays/actors/ovl_En_Mag/z_en_mag.c @@ -5,12 +5,24 @@ */ #include "z_en_mag.h" -#include "versions.h" -#include "assets/objects/object_mag/object_mag.h" + +#include "controller.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "gfxalloc.h" #if PLATFORM_N64 #include "n64dd.h" #endif +#include "regs.h" +#include "sfx.h" #include "versions.h" +#include "z64audio.h" +#include "z64cutscene_flags.h" +#include "z64play.h" +#include "z64save.h" +#include "z64ss_sram.h" + +#include "assets/objects/object_mag/object_mag.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) @@ -33,10 +45,13 @@ ActorProfile En_Mag_Profile = { static s16 sDelayTimer = 0; -#if OOT_VERSION < GC_US +#if OOT_VERSION < GC_US || PLATFORM_IQUE void EnMag_ResetSram(void) { static u8 buffer[0x2000]; + PRINTF(T("\n\n\n==========\n SRAM初期化\n\n==========\n\n\n", + "\n\n\n==========\n SRAM initialization\n\n==========\n\n\n")); + bzero(buffer, 0x800); SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000), buffer, 0x800, 1); SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000800), buffer, 0x800, 1); @@ -55,14 +70,14 @@ void EnMag_ResetSram(void) { SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8007000), buffer, 0x800, 1); SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8007800), buffer, 0x800, 1); - gSaveContext.audioSetting = 0; - gSaveContext.zTargetSetting = 0; - func_800F6700(gSaveContext.audioSetting); + gSaveContext.soundSetting = gSaveContext.zTargetSetting = 0; // SOUND_SETTING_STEREO/Z_TARGET_SETTING_SWITCH + Audio_SetSoundMode(gSaveContext.soundSetting); } #endif void EnMag_Init(Actor* thisx, PlayState* play) { EnMag* this = (EnMag*)thisx; + Font* font = &this->font; YREG(1) = 63; YREG(3) = 80; @@ -131,7 +146,7 @@ void EnMag_Init(Actor* thisx, PlayState* play) { gSaveContext.transWipeSpeed = 255; } - Font_LoadOrderedFont(&this->font); + Font_LoadOrderedFont(font); this->unk_E316 = 0; this->unk_E318 = 0; @@ -142,18 +157,19 @@ void EnMag_Init(Actor* thisx, PlayState* play) { void EnMag_Destroy(Actor* thisx, PlayState* play) { } -#if OOT_VERSION < GC_US +#if OOT_VERSION < GC_US || PLATFORM_IQUE void EnMag_CheckSramResetCode(PlayState* play, EnMag* this) { static s32 sSramResetCode[] = { BTN_DUP, BTN_DDOWN, BTN_DLEFT, BTN_DRIGHT, BTN_START, BTN_B, BTN_CDOWN, BTN_L, BTN_CRIGHT, BTN_CLEFT, BTN_A, BTN_CUP, BTN_R, BTN_Z, }; + Input* input = &play->state.input[2]; s32 var_v1; var_v1 = play->state.input[2].cur.button & (BTN_A | BTN_B | BTN_Z | BTN_START | BTN_DUP | BTN_DDOWN | BTN_DLEFT | BTN_DRIGHT | BTN_L | BTN_R | BTN_CUP | BTN_CDOWN | BTN_CLEFT | BTN_CRIGHT); - if (this->unk_E31C == var_v1) { + if (var_v1 == this->unk_E31C) { this->unk_E320--; if (this->unk_E320 < 0) { this->unk_E320 = 1; @@ -166,13 +182,13 @@ void EnMag_CheckSramResetCode(PlayState* play, EnMag* this) { } if (this->unk_E316 < 4) { - if (sSramResetCode[this->unk_E316] & var_v1) { + if (var_v1 & sSramResetCode[this->unk_E316]) { this->unk_E316++; } else if (var_v1 != 0) { this->unk_E316 = 0; } } else { - if (CHECK_BTN_ALL(play->state.input[2].press.button, sSramResetCode[this->unk_E316])) { + if (CHECK_BTN_ALL(input->press.button, sSramResetCode[this->unk_E316])) { this->unk_E316++; } else if (var_v1 != 0) { this->unk_E316 = 0; @@ -187,18 +203,18 @@ void EnMag_CheckSramResetCode(PlayState* play, EnMag* this) { #endif void EnMag_Update(Actor* thisx, PlayState* play) { - s32 pad[2]; + s32 pad; + Input* input = &play->state.input[0]; EnMag* this = (EnMag*)thisx; -#if OOT_VERSION < GC_US +#if OOT_VERSION < GC_US || PLATFORM_IQUE EnMag_CheckSramResetCode(play, this); #endif if (gSaveContext.fileNum != 0xFEDC) { if (this->globalState < MAG_STATE_DISPLAY) { - if (CHECK_BTN_ALL(play->state.input[0].press.button, BTN_START) || - CHECK_BTN_ALL(play->state.input[0].press.button, BTN_A) || - CHECK_BTN_ALL(play->state.input[0].press.button, BTN_B)) { + if (CHECK_BTN_ALL(input->press.button, BTN_START) || CHECK_BTN_ALL(input->press.button, BTN_A) || + CHECK_BTN_ALL(input->press.button, BTN_B)) { Audio_PlaySfxGeneral(NA_SE_SY_PIECE_OF_HEART, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); @@ -232,9 +248,8 @@ void EnMag_Update(Actor* thisx, PlayState* play) { } } else if (this->globalState >= MAG_STATE_DISPLAY) { if (sDelayTimer == 0) { - if (CHECK_BTN_ALL(play->state.input[0].press.button, BTN_START) || - CHECK_BTN_ALL(play->state.input[0].press.button, BTN_A) || - CHECK_BTN_ALL(play->state.input[0].press.button, BTN_B)) { + if (CHECK_BTN_ALL(input->press.button, BTN_START) || CHECK_BTN_ALL(input->press.button, BTN_A) || + CHECK_BTN_ALL(input->press.button, BTN_B)) { if (play->transitionTrigger != TRANS_TRIGGER_START) { Audio_SetCutsceneFlag(0); @@ -259,7 +274,7 @@ void EnMag_Update(Actor* thisx, PlayState* play) { if (this->globalState == MAG_STATE_FADE_IN) { if (this->effectFadeInState == 0) { -#if PLATFORM_N64 +#if !PLATFORM_GC this->effectPrimLodFrac += 0.8f; this->effectAlpha += 6.375f; #else @@ -289,7 +304,7 @@ void EnMag_Update(Actor* thisx, PlayState* play) { this->effectFadeInState = 1; } } else if (this->effectFadeInState == 1) { -#if PLATFORM_N64 +#if !PLATFORM_GC this->effectPrimLodFrac += 2.4f; #endif #if !OOT_MQ @@ -299,7 +314,7 @@ void EnMag_Update(Actor* thisx, PlayState* play) { this->effectPrimColor[0] += -2.125f; this->effectEnvColor[0] += -1.375f; #endif -#if !PLATFORM_N64 +#if PLATFORM_GC this->effectPrimLodFrac += 2.4f; #endif @@ -378,8 +393,8 @@ void EnMag_Update(Actor* thisx, PlayState* play) { } } -void EnMag_DrawTextureI8(Gfx** gfxP, void* texture, s16 texWidth, s16 texHeight, s16 rectLeft, s16 rectTop, - s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { +BAD_RETURN(s32) EnMag_DrawTextureI8(Gfx** gfxP, void* texture, s16 texWidth, s16 texHeight, s16 rectLeft, s16 rectTop, + s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy) { Gfx* gfx = *gfxP; gDPLoadTextureBlock(gfx++, texture, G_IM_FMT_I, G_IM_SIZ_8b, texWidth, texHeight, 0, G_TX_NOMIRROR | G_TX_WRAP, @@ -391,9 +406,10 @@ void EnMag_DrawTextureI8(Gfx** gfxP, void* texture, s16 texWidth, s16 texHeight, *gfxP = gfx; } -void EnMag_DrawEffectTextures(Gfx** gfxP, void* maskTex, void* effectTex, s16 maskWidth, s16 maskHeight, - s16 effectWidth, s16 effectHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, - s16 rectHeight, u16 dsdx, u16 dtdy, u16 shifts, u16 shiftt, u16 flag, EnMag* this) { +BAD_RETURN(s32) EnMag_DrawEffectTextures(Gfx** gfxP, void* maskTex, void* effectTex, s16 maskWidth, s16 maskHeight, + s16 effectWidth, s16 effectHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, + s16 rectHeight, u16 dsdx, u16 dtdy, u16 shifts, u16 shiftt, u16 flag, + EnMag* this) { Gfx* gfx = *gfxP; gDPLoadMultiBlock_4b(gfx++, maskTex, 0x0000, G_TX_RENDERTILE, G_IM_FMT_I, maskWidth, maskHeight, 0, @@ -514,13 +530,17 @@ void EnMag_DrawCharTexture(Gfx** gfxP, u8* texture, s32 rectLeft, s32 rectTop) { *gfxP = gfx; } +#if PLATFORM_IQUE +#include "assets/overlays/ovl_En_Mag/ovl_En_Mag.c" +#endif + // Title logo is shifted to the left in Master Quest #if !OOT_MQ #define LOGO_X_SHIFT 0 -#define JPN_SUBTITLE_X_SHIFT 0 +#define TITLE_X_SHIFT 0 #else #define LOGO_X_SHIFT (-8) -#define JPN_SUBTITLE_X_SHIFT (-32) +#define TITLE_X_SHIFT (-32) #endif void EnMag_DrawInner(Actor* thisx, PlayState* play, Gfx** gfxP) { @@ -532,10 +552,20 @@ void EnMag_DrawInner(Actor* thisx, PlayState* play, Gfx** gfxP) { FILENAME_UPPERCASE('N'), FILENAME_UPPERCASE('T'), FILENAME_UPPERCASE('R'), FILENAME_UPPERCASE('O'), FILENAME_UPPERCASE('L'), FILENAME_UPPERCASE('L'), FILENAME_UPPERCASE('E'), FILENAME_UPPERCASE('R'), }; + // For iQue, the word "PRESS" is drawn below as a Chinese character instead (gTitlePressCHN) static u8 pressStartFontIndices[] = { - FILENAME_UPPERCASE('P'), FILENAME_UPPERCASE('R'), FILENAME_UPPERCASE('E'), FILENAME_UPPERCASE('S'), - FILENAME_UPPERCASE('S'), FILENAME_UPPERCASE('S'), FILENAME_UPPERCASE('T'), FILENAME_UPPERCASE('A'), - FILENAME_UPPERCASE('R'), FILENAME_UPPERCASE('T'), +#if !PLATFORM_IQUE + FILENAME_UPPERCASE('P'), + FILENAME_UPPERCASE('R'), + FILENAME_UPPERCASE('E'), + FILENAME_UPPERCASE('S'), + FILENAME_UPPERCASE('S'), +#endif + FILENAME_UPPERCASE('S'), + FILENAME_UPPERCASE('T'), + FILENAME_UPPERCASE('A'), + FILENAME_UPPERCASE('R'), + FILENAME_UPPERCASE('T'), }; static void* effectMaskTextures[] = { gTitleEffectMask00Tex, gTitleEffectMask01Tex, gTitleEffectMask02Tex, @@ -568,11 +598,12 @@ void EnMag_DrawInner(Actor* thisx, PlayState* play, Gfx** gfxP) { 255); if ((s16)this->effectPrimLodFrac != 0) { - for (k = 0, i = 0, rectTop = 0; i < 3; i++, rectTop += 64) { + for (k = 0, i = 0, rectTop = 0; i < 3; i++) { for (j = 0, rectLeft = 64 + LOGO_X_SHIFT; j < 3; j++, k++, rectLeft += 64) { EnMag_DrawEffectTextures(&gfx, effectMaskTextures[k], gTitleFlameEffectTex, 64, 64, 32, 32, rectLeft, rectTop, 64, 64, 1024, 1024, 1, 1, k, this); } + rectTop += 64; } } @@ -639,9 +670,11 @@ void EnMag_DrawInner(Actor* thisx, PlayState* play, Gfx** gfxP) { #endif } - // TODO: implement for iQue -#if OOT_NTSC && !PLATFORM_IQUE - if (gSaveContext.language == LANGUAGE_JPN) { +#if OOT_NTSC +#if !PLATFORM_IQUE + if (gSaveContext.language == LANGUAGE_JPN) +#endif + { this->unk_E30C++; gDPPipeSync(gfx++); gDPSetCycleType(gfx++, G_CYC_2CYCLE); @@ -662,15 +695,21 @@ void EnMag_DrawInner(Actor* thisx, PlayState* play, Gfx** gfxP) { #endif if ((s16)this->subAlpha != 0) { +#if !PLATFORM_IQUE gDPLoadTextureBlock(gfx++, gTitleTitleJPNTex, G_IM_FMT_I, G_IM_SIZ_8b, 128, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD); +#else + gDPLoadTextureBlock(gfx++, gTitleTitleCHNTex, G_IM_FMT_I, G_IM_SIZ_8b, 128, 16, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOLOD); +#endif gDPLoadMultiBlock(gfx++, gTitleFlameEffectTex, 0x100, 1, G_IM_FMT_I, G_IM_SIZ_8b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, 2, 1); gDPSetTileSize(gfx++, 1, this->unk_E30C & 0x7F, this->effectScroll & 0x7F, (this->unk_E30C & 0x7F) + ((32 - 1) << 2), (this->effectScroll & 0x7F) + ((32 - 1) << 2)); - gSPTextureRectangle(gfx++, 424 + JPN_SUBTITLE_X_SHIFT, 576, 424 + JPN_SUBTITLE_X_SHIFT + 512, 576 + 64, - G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); + gSPTextureRectangle(gfx++, 424 + TITLE_X_SHIFT, 576, 424 + TITLE_X_SHIFT + 512, 576 + 64, G_TX_RENDERTILE, + 0, 0, 1 << 10, 1 << 10); } } #endif @@ -688,10 +727,12 @@ void EnMag_DrawInner(Actor* thisx, PlayState* play, Gfx** gfxP) { gDPLoadTextureBlock(gfx++, gTitleCopyright1998Tex, G_IM_FMT_IA, G_IM_SIZ_8b, 128, 16, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gSPTextureRectangle(gfx++, 94 << 2, 198 << 2, 222 << 2, 214 << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); #elif PLATFORM_GC && OOT_VERSION < GC_US gDPLoadTextureBlock(gfx++, gTitleCopyright19982002Tex, G_IM_FMT_IA, G_IM_SIZ_8b, 160, 16, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gSPTextureRectangle(gfx++, 78 << 2, 198 << 2, 238 << 2, 214 << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); #elif PLATFORM_GC && OOT_NTSC if (gSaveContext.language == LANGUAGE_JPN) { gDPLoadTextureBlock(gfx++, gTitleCopyright19982002Tex, G_IM_FMT_IA, G_IM_SIZ_8b, 160, 16, 0, @@ -702,18 +743,17 @@ void EnMag_DrawInner(Actor* thisx, PlayState* play, Gfx** gfxP) { G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); } + gSPTextureRectangle(gfx++, 78 << 2, 198 << 2, 238 << 2, 214 << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); #elif PLATFORM_GC && OOT_PAL gDPLoadTextureBlock(gfx++, gTitleCopyright19982003Tex, G_IM_FMT_IA, G_IM_SIZ_8b, 160, 16, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); -#elif PLATFORM_IQUE - // TODO: implement for iQue -#endif - -#if PLATFORM_N64 - gSPTextureRectangle(gfx++, 94 << 2, 198 << 2, 222 << 2, 214 << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); -#else gSPTextureRectangle(gfx++, 78 << 2, 198 << 2, 238 << 2, 214 << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); +#elif PLATFORM_IQUE + gDPLoadTextureBlock(gfx++, gTitleCopyright19982003IQueTex, G_IM_FMT_IA, G_IM_SIZ_8b, 128, 32, 0, + G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); + gSPTextureRectangle(gfx++, 94 << 2, 198 << 2, 222 << 2, 230 << 2, G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10); #endif } @@ -760,6 +800,7 @@ void EnMag_DrawInner(Actor* thisx, PlayState* play, Gfx** gfxP) { textAlpha = 255; } +#if !PLATFORM_IQUE // Text Shadow gDPPipeSync(gfx++); gDPSetCombineLERP(gfx++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, @@ -789,6 +830,41 @@ void EnMag_DrawInner(Actor* thisx, PlayState* play, Gfx** gfxP) { rectLeft += YREG(9); } } +#else + // Text Shadow + gDPPipeSync(gfx++); + gDPSetCombineLERP(gfx++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, + 0); + gDPSetPrimColor(gfx++, 0, 0, 0, 0, 0, textAlpha); + + rectLeft = YREG(7) + 1; + + rectLeft += YREG(8) * 2; + EnMag_DrawCharTexture(&gfx, (u8*)gTitlePressCHN, rectLeft, YREG(10) + 172); + rectLeft += YREG(9) + YREG(8); + + for (i = 0; i < ARRAY_COUNT(pressStartFontIndices); i++) { + EnMag_DrawCharTexture(&gfx, font->fontBuf + pressStartFontIndices[i] * FONT_CHAR_TEX_SIZE, rectLeft, + YREG(10) + 172); + rectLeft += YREG(8); + } + + // Actual Text + gDPPipeSync(gfx++); + gDPSetPrimColor(gfx++, 0, 0, YREG(4), YREG(5), YREG(6), textAlpha); + + rectLeft = YREG(7); + + rectLeft += YREG(8) * 2; + EnMag_DrawCharTexture(&gfx, (u8*)gTitlePressCHN, rectLeft, YREG(10) + 171); + rectLeft += YREG(9) + YREG(8); + + for (i = 0; i < ARRAY_COUNT(pressStartFontIndices); i++) { + EnMag_DrawCharTexture(&gfx, font->fontBuf + pressStartFontIndices[i] * FONT_CHAR_TEX_SIZE, rectLeft, + YREG(10) + 171); + rectLeft += YREG(8); + } +#endif } if (textFadeDirection != 0) { diff --git a/src/overlays/actors/ovl_En_Mag/z_en_mag.h b/src/overlays/actors/ovl_En_Mag/z_en_mag.h index e7c516c629..ace8427278 100644 --- a/src/overlays/actors/ovl_En_Mag/z_en_mag.h +++ b/src/overlays/actors/ovl_En_Mag/z_en_mag.h @@ -2,7 +2,8 @@ #define Z_EN_MAG_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" +#include "z64message.h" struct EnMag; 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 1e97b32486..485052002e 100644 --- a/src/overlays/actors/ovl_En_Mb/z_en_mb.c +++ b/src/overlays/actors/ovl_En_Mb/z_en_mb.c @@ -5,8 +5,24 @@ */ #include "z_en_mb.h" -#include "assets/objects/object_mb/object_mb.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "rumble.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" #include "versions.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + +#include "assets/objects/object_mb/object_mb.h" /* * This actor can have three behaviors: 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 66afb9eeb1..8c3ddc6029 100644 --- a/src/overlays/actors/ovl_En_Mb/z_en_mb.h +++ b/src/overlays/actors/ovl_En_Mb/z_en_mb.h @@ -2,11 +2,11 @@ #define Z_EN_MB_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnMb; -typedef void (*EnMbActionFunc)(struct EnMb*, PlayState*); +typedef void (*EnMbActionFunc)(struct EnMb*, struct PlayState*); typedef enum EnMbState { /* 0 */ ENMB_STATE_SPEAR_SPEARPATH_DAMAGED, diff --git a/src/overlays/actors/ovl_En_Md/z_en_md.c b/src/overlays/actors/ovl_En_Md/z_en_md.c index 93ba4f894c..296f4d42af 100644 --- a/src/overlays/actors/ovl_En_Md/z_en_md.c +++ b/src/overlays/actors/ovl_En_Md/z_en_md.c @@ -5,9 +5,23 @@ */ #include "z_en_md.h" -#include "assets/objects/object_md/object_md.h" #include "overlays/actors/ovl_En_Elf/z_en_elf.h" +#include "libc64/math64.h" +#include "attributes.h" +#include "gfx.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64face_reaction.h" +#include "z64ocarina.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/object_md/object_md.h" + #define FLAGS \ (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED | \ ACTOR_FLAG_UPDATE_DURING_OCARINA) diff --git a/src/overlays/actors/ovl_En_Md/z_en_md.h b/src/overlays/actors/ovl_En_Md/z_en_md.h index 6a78a24904..bfd9b0450a 100644 --- a/src/overlays/actors/ovl_En_Md/z_en_md.h +++ b/src/overlays/actors/ovl_En_Md/z_en_md.h @@ -2,7 +2,7 @@ #define Z_EN_MD_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnMd; @@ -27,7 +27,7 @@ typedef enum EnMdLimb { ENMD_LIMB_MAX } EnMdLimb; -typedef void (*EnMdActionFunc)(struct EnMd*, PlayState*); +typedef void (*EnMdActionFunc)(struct EnMd*, struct PlayState*); #define ENMD_GET_PATH_INDEX(this) PARAMS_GET_S(this->actor.params, 8, 8) #define ENMD_GET_PATH_INDEX_NOSHIFT(this) PARAMS_GET_NOSHIFT(this->actor.params, 8, 8) diff --git a/src/overlays/actors/ovl_En_Mk/z_en_mk.c b/src/overlays/actors/ovl_En_Mk/z_en_mk.c index df7708a699..f035f2d331 100644 --- a/src/overlays/actors/ovl_En_Mk/z_en_mk.c +++ b/src/overlays/actors/ovl_En_Mk/z_en_mk.c @@ -5,6 +5,17 @@ */ #include "z_en_mk.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64face_reaction.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_mk/object_mk.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Mk/z_en_mk.h b/src/overlays/actors/ovl_En_Mk/z_en_mk.h index 5b8a438a00..53df56b76a 100644 --- a/src/overlays/actors/ovl_En_Mk/z_en_mk.h +++ b/src/overlays/actors/ovl_En_Mk/z_en_mk.h @@ -2,11 +2,11 @@ #define Z_EN_MK_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnMk; -typedef void (*EnMkActionFunc)(struct EnMk*, PlayState*); +typedef void (*EnMkActionFunc)(struct EnMk*, struct PlayState*); typedef struct EnMk { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Mm/z_en_mm.c b/src/overlays/actors/ovl_En_Mm/z_en_mm.c index b081f8304c..75969dd224 100644 --- a/src/overlays/actors/ovl_En_Mm/z_en_mm.c +++ b/src/overlays/actors/ovl_En_Mm/z_en_mm.c @@ -5,6 +5,20 @@ */ #include "z_en_mm.h" + +#include "libc64/math64.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64face_reaction.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_mm/object_mm.h" #include "assets/objects/object_link_child/object_link_child.h" diff --git a/src/overlays/actors/ovl_En_Mm/z_en_mm.h b/src/overlays/actors/ovl_En_Mm/z_en_mm.h index 7646e1f044..555073753f 100644 --- a/src/overlays/actors/ovl_En_Mm/z_en_mm.h +++ b/src/overlays/actors/ovl_En_Mm/z_en_mm.h @@ -2,11 +2,11 @@ #define Z_EN_MM_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnMm; -typedef void (*EnMmActionFunc)(struct EnMm*, PlayState*); +typedef void (*EnMmActionFunc)(struct EnMm*, struct PlayState*); typedef struct EnMm { /* 0x0000 */ Actor actor; 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 3082b5c35d..3958fce494 100644 --- a/src/overlays/actors/ovl_En_Mm2/z_en_mm2.c +++ b/src/overlays/actors/ovl_En_Mm2/z_en_mm2.c @@ -5,7 +5,18 @@ */ #include "z_en_mm2.h" + +#include "libu64/debug.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "segmented_address.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_mm/object_mm.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Mm2/z_en_mm2.h b/src/overlays/actors/ovl_En_Mm2/z_en_mm2.h index a5edeb9cb5..8e48261d7c 100644 --- a/src/overlays/actors/ovl_En_Mm2/z_en_mm2.h +++ b/src/overlays/actors/ovl_En_Mm2/z_en_mm2.h @@ -2,11 +2,11 @@ #define Z_EN_MM2_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnMm2; -typedef void (*EnMm2ActionFunc)(struct EnMm2*, PlayState*); +typedef void (*EnMm2ActionFunc)(struct EnMm2*, struct PlayState*); typedef struct EnMm2 { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Ms/z_en_ms.c b/src/overlays/actors/ovl_En_Ms/z_en_ms.c index 35796e1eb7..32ac753571 100644 --- a/src/overlays/actors/ovl_En_Ms/z_en_ms.c +++ b/src/overlays/actors/ovl_En_Ms/z_en_ms.c @@ -5,6 +5,14 @@ */ #include "z_en_ms.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "z64face_reaction.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_ms/object_ms.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) diff --git a/src/overlays/actors/ovl_En_Ms/z_en_ms.h b/src/overlays/actors/ovl_En_Ms/z_en_ms.h index 53c6bbeaca..9ace7bc2d0 100644 --- a/src/overlays/actors/ovl_En_Ms/z_en_ms.h +++ b/src/overlays/actors/ovl_En_Ms/z_en_ms.h @@ -2,11 +2,11 @@ #define Z_EN_MS_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnMs; -typedef void (*EnMsActionFunc)(struct EnMs*, PlayState*); +typedef void (*EnMsActionFunc)(struct EnMs*, struct PlayState*); typedef struct EnMs { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Mu/z_en_mu.c b/src/overlays/actors/ovl_En_Mu/z_en_mu.c index dbe5e1b15c..7360dd7f18 100644 --- a/src/overlays/actors/ovl_En_Mu/z_en_mu.c +++ b/src/overlays/actors/ovl_En_Mu/z_en_mu.c @@ -5,6 +5,15 @@ */ #include "z_en_mu.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64face_reaction.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_mu/object_mu.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) @@ -58,21 +67,21 @@ void EnMu_SetupAction(EnMu* this, EnMuActionFunc actionFunc) { void EnMu_Interact(EnMu* this, PlayState* play) { u8 textIdOffset[] = { 0x42, 0x43, 0x3F, 0x41, 0x3E }; u8 bitmask[] = { - EVENTINF_20_MASK, EVENTINF_21_MASK, EVENTINF_22_MASK, EVENTINF_23_MASK, EVENTINF_24_MASK, + EVENTINF_MASK(EVENTINF_HAGGLING_TOWNSFOLK_MESG_0), EVENTINF_MASK(EVENTINF_HAGGLING_TOWNSFOLK_MESG_1), + EVENTINF_MASK(EVENTINF_HAGGLING_TOWNSFOLK_MESG_2), EVENTINF_MASK(EVENTINF_HAGGLING_TOWNSFOLK_MESG_3), + EVENTINF_MASK(EVENTINF_HAGGLING_TOWNSFOLK_MESG_4), }; - u8 textFlags; + u8 talkFlags; s32 randomIndex; s32 i; - textFlags = gSaveContext.eventInf[EVENTINF_INDEX_20_21_22_23_24] & - (EVENTINF_20_MASK | EVENTINF_21_MASK | EVENTINF_22_MASK | EVENTINF_23_MASK | EVENTINF_24_MASK); - gSaveContext.eventInf[EVENTINF_INDEX_20_21_22_23_24] &= - ~(EVENTINF_20_MASK | EVENTINF_21_MASK | EVENTINF_22_MASK | EVENTINF_23_MASK | EVENTINF_24_MASK); + talkFlags = GET_EVENTINF_ENMU_TALK_FLAGS(); + RESET_EVENTINF_ENMU_TALK_FLAGS(); randomIndex = (play->state.frames + (s32)(Rand_ZeroOne() * 5.0f)) % 5; + // Starting at randomIndex, scan sequentially for the next unspoken message for (i = 0; i < 5; i++) { - - if (!(textFlags & bitmask[randomIndex])) { + if (!(talkFlags & bitmask[randomIndex])) { break; } @@ -82,6 +91,7 @@ void EnMu_Interact(EnMu* this, PlayState* play) { } } + // If all 5 messages have been spoken, reset but prevent the last message from being repeated if (i == 5) { if (this->defaultTextId == (textIdOffset[randomIndex] | 0x7000)) { randomIndex++; @@ -89,13 +99,12 @@ void EnMu_Interact(EnMu* this, PlayState* play) { randomIndex = 0; } } - textFlags = 0; + talkFlags = 0; } - textFlags |= bitmask[randomIndex]; + talkFlags |= (u8)bitmask[randomIndex]; this->defaultTextId = textIdOffset[randomIndex] | 0x7000; - textFlags &= EVENTINF_20_MASK | EVENTINF_21_MASK | EVENTINF_22_MASK | EVENTINF_23_MASK | EVENTINF_24_MASK | 0xE0; - gSaveContext.eventInf[EVENTINF_INDEX_20_21_22_23_24] |= textFlags; + SET_EVENTINF_ENMU_TALK_FLAGS(talkFlags); } u16 EnMu_GetTextId(PlayState* play, Actor* thisx) { diff --git a/src/overlays/actors/ovl_En_Mu/z_en_mu.h b/src/overlays/actors/ovl_En_Mu/z_en_mu.h index 1b098eb417..417ce242b1 100644 --- a/src/overlays/actors/ovl_En_Mu/z_en_mu.h +++ b/src/overlays/actors/ovl_En_Mu/z_en_mu.h @@ -2,7 +2,7 @@ #define Z_EN_MU_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnMu; 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 983af06780..4b615342c0 100644 --- a/src/overlays/actors/ovl_En_Nb/z_en_nb.c +++ b/src/overlays/actors/ovl_En_Nb/z_en_nb.c @@ -5,10 +5,26 @@ */ #include "z_en_nb.h" -#include "terminal.h" -#include "assets/objects/object_nb/object_nb.h" #include "overlays/actors/ovl_Door_Warp1/z_door_warp1.h" +#include "libc64/math64.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "regs.h" +#include "segmented_address.h" +#include "seqcmd.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "terminal.h" +#include "z_lib.h" +#include "z64face_reaction.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/object_nb/object_nb.h" + #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED typedef enum EnNbAction { diff --git a/src/overlays/actors/ovl_En_Nb/z_en_nb.h b/src/overlays/actors/ovl_En_Nb/z_en_nb.h index 997af0f573..3ed08cbf8e 100644 --- a/src/overlays/actors/ovl_En_Nb/z_en_nb.h +++ b/src/overlays/actors/ovl_En_Nb/z_en_nb.h @@ -2,7 +2,7 @@ #define Z_EN_NB_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnNb; @@ -29,8 +29,8 @@ typedef enum EnNbLimb { /* 0x13 */ NB_LIMB_MAX } EnNbLimb; -typedef void (*EnNbActionFunc)(struct EnNb*, PlayState*); -typedef void (*EnNbDrawFunc)(struct EnNb*, PlayState*); +typedef void (*EnNbActionFunc)(struct EnNb*, struct PlayState*); +typedef void (*EnNbDrawFunc)(struct EnNb*, struct PlayState*); typedef struct EnNb { /* 0x0000 */ Actor actor; 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 144c76b2cb..00fde6a469 100644 --- a/src/overlays/actors/ovl_En_Niw/z_en_niw.c +++ b/src/overlays/actors/ovl_En_Niw/z_en_niw.c @@ -5,10 +5,28 @@ */ #include "z_en_niw.h" -#include "assets/objects/object_niw/object_niw.h" #include "overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.h" + +#include "libc64/math64.h" +#include "libc64/qrand.h" +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "rand.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" #include "versions.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/object_niw/object_niw.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_THROW_ONLY) diff --git a/src/overlays/actors/ovl_En_Niw/z_en_niw.h b/src/overlays/actors/ovl_En_Niw/z_en_niw.h index 283b6a52cd..a0f58d0a35 100644 --- a/src/overlays/actors/ovl_En_Niw/z_en_niw.h +++ b/src/overlays/actors/ovl_En_Niw/z_en_niw.h @@ -2,11 +2,11 @@ #define Z_EN_NIW_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnNiw; -typedef void (*EnNiwActionFunc)(struct EnNiw*, PlayState*); +typedef void (*EnNiwActionFunc)(struct EnNiw*, struct PlayState*); typedef struct EnNiwEffect { /* 0x0000 */ u8 type; diff --git a/src/overlays/actors/ovl_En_Niw_Girl/z_en_niw_girl.c b/src/overlays/actors/ovl_En_Niw_Girl/z_en_niw_girl.c index 6af946ddeb..2250042f84 100644 --- a/src/overlays/actors/ovl_En_Niw_Girl/z_en_niw_girl.c +++ b/src/overlays/actors/ovl_En_Niw_Girl/z_en_niw_girl.c @@ -5,8 +5,21 @@ */ #include "z_en_niw_girl.h" -#include "assets/objects/object_gr/object_gr.h" +#include "overlays/actors/ovl_En_Niw/z_en_niw.h" + +#include "libc64/math64.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "segmented_address.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/object_gr/object_gr.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Niw_Girl/z_en_niw_girl.h b/src/overlays/actors/ovl_En_Niw_Girl/z_en_niw_girl.h index e63e2df72f..422cf33e48 100644 --- a/src/overlays/actors/ovl_En_Niw_Girl/z_en_niw_girl.h +++ b/src/overlays/actors/ovl_En_Niw_Girl/z_en_niw_girl.h @@ -2,12 +2,11 @@ #define Z_EN_NIW_GIRL_H #include "ultra64.h" -#include "global.h" -#include "../ovl_En_Niw/z_en_niw.h" +#include "z64actor.h" struct EnNiwGirl; -typedef void (*EnNiwGirlActionFunc)(struct EnNiwGirl*, PlayState*); +typedef void (*EnNiwGirlActionFunc)(struct EnNiwGirl*, struct PlayState*); typedef struct EnNiwGirl { /* 0x0000 */ Actor actor; @@ -27,7 +26,7 @@ typedef struct EnNiwGirl { /* 0x027A */ s16 unk_27A; /* 0x027C */ f32 unk_27C; /* 0x0280 */ f32 unk_280; - /* 0x0284 */ EnNiw* chasedEnNiw; + /* 0x0284 */ struct EnNiw* chasedEnNiw; /* 0x0288 */ ColliderCylinder collider; /* 0x02D4 */ NpcInteractInfo interactInfo; } EnNiwGirl; // size = 0x02FC 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 0415f95bb9..33881ed73f 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 @@ -1,9 +1,23 @@ #include "z_en_niw_lady.h" -#include "assets/objects/object_ane/object_ane.h" -#include "assets/objects/object_os_anime/object_os_anime.h" #include "overlays/actors/ovl_En_Niw/z_en_niw.h" + +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "regs.h" +#include "segmented_address.h" +#include "sfx.h" #include "terminal.h" #include "versions.h" +#include "z_lib.h" +#include "z64face_reaction.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/object_ane/object_ane.h" +#include "assets/objects/object_os_anime/object_os_anime.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.h b/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.h index 7ecb165cca..a6167454da 100644 --- a/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.h +++ b/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.h @@ -2,11 +2,11 @@ #define Z_EN_NIW_LADY_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnNiwLady; -typedef void (*EnNiwLadyActionFunc)(struct EnNiwLady*, PlayState*); +typedef void (*EnNiwLadyActionFunc)(struct EnNiwLady*, struct PlayState*); typedef struct EnNiwLady { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Nutsball/z_en_nutsball.c b/src/overlays/actors/ovl_En_Nutsball/z_en_nutsball.c index 114971a1de..3511a3c45d 100644 --- a/src/overlays/actors/ovl_En_Nutsball/z_en_nutsball.c +++ b/src/overlays/actors/ovl_En_Nutsball/z_en_nutsball.c @@ -6,6 +6,16 @@ #include "z_en_nutsball.h" #include "overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_dekunuts/object_dekunuts.h" #include "assets/objects/object_hintnuts/object_hintnuts.h" #include "assets/objects/object_shopnuts/object_shopnuts.h" diff --git a/src/overlays/actors/ovl_En_Nutsball/z_en_nutsball.h b/src/overlays/actors/ovl_En_Nutsball/z_en_nutsball.h index 00fe77a05c..bcd4e0a936 100644 --- a/src/overlays/actors/ovl_En_Nutsball/z_en_nutsball.h +++ b/src/overlays/actors/ovl_En_Nutsball/z_en_nutsball.h @@ -2,7 +2,7 @@ #define Z_EN_NUTSBALL_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" #define NUTSBALL_GET_TYPE(thisx) ((thisx)->params) @@ -16,7 +16,7 @@ typedef enum EnNutsballType { struct EnNutsball; -typedef void (*EnNutsballActionFunc)(struct EnNutsball*, PlayState*); +typedef void (*EnNutsballActionFunc)(struct EnNutsball*, struct PlayState*); typedef struct EnNutsball { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Nwc/z_en_nwc.c b/src/overlays/actors/ovl_En_Nwc/z_en_nwc.c index a990438adb..a5f322def6 100644 --- a/src/overlays/actors/ovl_En_Nwc/z_en_nwc.c +++ b/src/overlays/actors/ovl_En_Nwc/z_en_nwc.c @@ -5,6 +5,14 @@ */ #include "z_en_nwc.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_nwc/object_nwc.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Nwc/z_en_nwc.h b/src/overlays/actors/ovl_En_Nwc/z_en_nwc.h index e927cb3b66..fbb64d1ca2 100644 --- a/src/overlays/actors/ovl_En_Nwc/z_en_nwc.h +++ b/src/overlays/actors/ovl_En_Nwc/z_en_nwc.h @@ -2,13 +2,13 @@ #define Z_EN_NWC_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnNwc; struct EnNwcChick; -typedef void (*EnNwcUpdateFunc)(struct EnNwc*, PlayState*); -typedef void (*EnNwcChickFunc)(struct EnNwcChick*, struct EnNwc*, PlayState*); +typedef void (*EnNwcUpdateFunc)(struct EnNwc*, struct PlayState*); +typedef void (*EnNwcChickFunc)(struct EnNwcChick*, struct EnNwc*, struct PlayState*); typedef struct EnNwcChick { /* 0x00 */ s8 type; @@ -21,8 +21,8 @@ typedef struct EnNwcChick { /* 0x2C */ f32 velY; /* 0x30 */ Vec3s rot; /* 0x36 */ u16 height; - /* 0x38 */ CollisionPoly* floorPoly; - /* 0x44 */ char unk_3C[0x20]; + /* 0x38 */ struct CollisionPoly* floorPoly; + /* 0x3C */ char unk_3C[0x20]; } EnNwcChick; // size = 0x5C typedef struct EnNwc { 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 e31bd37d52..bf71620dc3 100644 --- a/src/overlays/actors/ovl_En_Ny/z_en_ny.c +++ b/src/overlays/actors/ovl_En_Ny/z_en_ny.c @@ -1,4 +1,18 @@ #include "z_en_ny.h" + +#include "libc64/math64.h" +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/object_ny/object_ny.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE) @@ -110,7 +124,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->elements); + Collider_SetJntSph(play, &this->collider, &this->actor, &sColliderInit, this->colliderElements); ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 20.0f); this->unk_1CA = 0; this->unk_1D0 = 0; diff --git a/src/overlays/actors/ovl_En_Ny/z_en_ny.h b/src/overlays/actors/ovl_En_Ny/z_en_ny.h index 18c109cc51..03cace42fb 100644 --- a/src/overlays/actors/ovl_En_Ny/z_en_ny.h +++ b/src/overlays/actors/ovl_En_Ny/z_en_ny.h @@ -2,17 +2,17 @@ #define Z_EN_NY_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnNy; -typedef void (*EnNyActionFunc)(struct EnNy*, PlayState*); +typedef void (*EnNyActionFunc)(struct EnNy*, struct PlayState*); typedef struct EnNy { /* 0x0000 */ Actor actor; /* 0x014C */ EnNyActionFunc actionFunc; /* 0x0150 */ ColliderJntSph collider; - /* 0x0170 */ ColliderJntSphElement elements[1]; + /* 0x0170 */ ColliderJntSphElement colliderElements[1]; /* 0x01B0 */ char unk_1B0[0x18]; /* 0x01C8 */ s16 timer; /* 0x01CA */ s16 unk_1CA; diff --git a/src/overlays/actors/ovl_En_OE2/z_en_oe2.c b/src/overlays/actors/ovl_En_OE2/z_en_oe2.c index f89eb3ce99..f568d1812b 100644 --- a/src/overlays/actors/ovl_En_OE2/z_en_oe2.c +++ b/src/overlays/actors/ovl_En_OE2/z_en_oe2.c @@ -6,6 +6,8 @@ #include "z_en_oe2.h" +#include "z64play.h" + #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) void EnOE2_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_En_OE2/z_en_oe2.h b/src/overlays/actors/ovl_En_OE2/z_en_oe2.h index 635495bb7d..062e103819 100644 --- a/src/overlays/actors/ovl_En_OE2/z_en_oe2.h +++ b/src/overlays/actors/ovl_En_OE2/z_en_oe2.h @@ -2,11 +2,11 @@ #define Z_EN_OE2_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnOE2; -typedef void (*EnOE2ActionFunc)(struct EnOE2*, PlayState*); +typedef void (*EnOE2ActionFunc)(struct EnOE2*, struct PlayState*); typedef struct EnOE2 { /* 0x0000 */ Actor actor; 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 40eef58eb4..49c4756c29 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 @@ -5,10 +5,17 @@ */ #include "z_en_okarina_effect.h" + +#include "regs.h" +#include "sequence.h" #include "terminal.h" #include "versions.h" - +#include "z64audio.h" +#include "z64cutscene_flags.h" +#include "z64debug_display.h" #include "z64frame_advance.h" +#include "z64play.h" +#include "z64save.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_UPDATE_DURING_OCARINA) diff --git a/src/overlays/actors/ovl_En_Okarina_Effect/z_en_okarina_effect.h b/src/overlays/actors/ovl_En_Okarina_Effect/z_en_okarina_effect.h index f45c4a88ee..bca8c99234 100644 --- a/src/overlays/actors/ovl_En_Okarina_Effect/z_en_okarina_effect.h +++ b/src/overlays/actors/ovl_En_Okarina_Effect/z_en_okarina_effect.h @@ -2,11 +2,11 @@ #define Z_EN_OKARINA_EFFECT_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnOkarinaEffect; -typedef void (*EnOkarinaEffectActionFunc)(struct EnOkarinaEffect*, PlayState*); +typedef void (*EnOkarinaEffectActionFunc)(struct EnOkarinaEffect*, struct PlayState*); typedef struct EnOkarinaEffect { /* 0x0000 */ Actor actor; 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 96928130ae..c6ac85502c 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 @@ -5,10 +5,23 @@ */ #include "z_en_okarina_tag.h" -#include "assets/scenes/misc/hakaana_ouke/hakaana_ouke_scene.h" -#include "assets/scenes/overworld/spot02/spot02_scene.h" + +#include "attributes.h" +#include "regs.h" +#include "segmented_address.h" +#include "sfx.h" #include "terminal.h" #include "versions.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64debug_display.h" +#include "z64ocarina.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/scenes/misc/hakaana_ouke/hakaana_ouke_scene.h" +#include "assets/scenes/overworld/spot02/spot02_scene.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_UPDATE_DURING_OCARINA) diff --git a/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.h b/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.h index 1192d0cfce..76ac1581a5 100644 --- a/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.h +++ b/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.h @@ -2,11 +2,11 @@ #define Z_EN_OKARINA_TAG_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnOkarinaTag; -typedef void (*EnOkarinaTagActionFunc)(struct EnOkarinaTag*, PlayState*); +typedef void (*EnOkarinaTagActionFunc)(struct EnOkarinaTag*, struct PlayState*); typedef struct EnOkarinaTag { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag_cutscene_data.c b/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag_cutscene_data.c index f0c0b4d3b3..2ff69c780e 100644 --- a/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag_cutscene_data.c +++ b/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag_cutscene_data.c @@ -1,5 +1,6 @@ -#include "z_en_okarina_tag.h" +#include "sequence.h" #include "z64cutscene_commands.h" +#include "z64player.h" // clang-format off CutsceneData gWindmillSpinningFasterCs[] = { diff --git a/src/overlays/actors/ovl_En_Okuta/z_en_okuta.c b/src/overlays/actors/ovl_En_Okuta/z_en_okuta.c index 0baff94145..b7063e0f00 100644 --- a/src/overlays/actors/ovl_En_Okuta/z_en_okuta.c +++ b/src/overlays/actors/ovl_En_Okuta/z_en_okuta.c @@ -1,4 +1,18 @@ #include "z_en_okuta.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_okuta/object_okuta.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE) diff --git a/src/overlays/actors/ovl_En_Okuta/z_en_okuta.h b/src/overlays/actors/ovl_En_Okuta/z_en_okuta.h index 01c2ba1140..5409481022 100644 --- a/src/overlays/actors/ovl_En_Okuta/z_en_okuta.h +++ b/src/overlays/actors/ovl_En_Okuta/z_en_okuta.h @@ -2,11 +2,11 @@ #define Z_EN_OKUTA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnOkuta; -typedef void (*EnOkutaActionFunc)(struct EnOkuta*, PlayState*); +typedef void (*EnOkutaActionFunc)(struct EnOkuta*, struct PlayState*); typedef struct EnOkuta { /* 0x0000 */ Actor actor; 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 a083ef85d7..620d70e215 100644 --- a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c +++ b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c @@ -1,5 +1,22 @@ #include "z_en_ossan.h" +#include "overlays/actors/ovl_En_Elf/z_en_elf.h" +#include "overlays/actors/ovl_En_GirlA/z_en_girla.h" +#include "overlays/actors/ovl_En_Tana/z_en_tana.h" + +#include "libc64/qrand.h" +#include "controller.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "regs.h" +#include "segmented_address.h" +#include "sfx.h" #include "terminal.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_ossan/object_ossan.h" #include "assets/objects/object_oF1d_map/object_oF1d_map.h" @@ -7,7 +24,6 @@ #include "assets/objects/object_zo/object_zo.h" #include "assets/objects/object_rs/object_rs.h" #include "assets/objects/object_ds2/object_ds2.h" -#include "overlays/actors/ovl_En_Elf/z_en_elf.h" #include "assets/objects/object_masterkokiri/object_masterkokiri.h" #include "assets/objects/object_km1/object_km1.h" #include "assets/objects/object_mastergolon/object_mastergolon.h" diff --git a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.h b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.h index c2101e9d9e..7df4be57b8 100644 --- a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.h +++ b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.h @@ -2,17 +2,15 @@ #define Z_EN_OSSAN_H #include "ultra64.h" -#include "global.h" -#include "overlays/actors/ovl_En_Tana/z_en_tana.h" -#include "overlays/actors/ovl_En_GirlA/z_en_girla.h" +#include "z64actor.h" struct EnOssan; -typedef void (*EnOssanActionFunc)(struct EnOssan*, PlayState*); -typedef void (*EnOssanTalkOwnerFunc)(PlayState*); -typedef void (*EnOssanInitFunc)(struct EnOssan*, PlayState*); +typedef void (*EnOssanActionFunc)(struct EnOssan*, struct PlayState*); +typedef void (*EnOssanTalkOwnerFunc)(struct PlayState*); +typedef void (*EnOssanInitFunc)(struct EnOssan*, struct PlayState*); typedef s16 (*EnOssanGetGirlAParamsFunc)(s16); -typedef void (*EnOssanStateFunc)(struct EnOssan*, PlayState*, Player*); +typedef void (*EnOssanStateFunc)(struct EnOssan*, struct PlayState*, struct Player*); typedef struct StickDirectionPrompt { /* 0x00 */ u32 stickColorR; @@ -37,7 +35,7 @@ typedef struct EnOssan { /* 0x0000 */ Actor actor; /* 0x014C */ SkelAnime skelAnime; /* 0x0190 */ EnOssanActionFunc actionFunc; - /* 0x0194 */ void (*obj3ToSeg6Func)(struct EnOssan*, PlayState*); + /* 0x0194 */ void (*obj3ToSeg6Func)(struct EnOssan*, struct PlayState*); /* 0x0198 */ ColliderCylinder collider; // unused /* 0x01E4 */ s16 timer; /* 0x01E6 */ s16 delayTimer; @@ -53,11 +51,11 @@ typedef struct EnOssan { /* 0x01F8 */ void (*blinkFunc)(struct EnOssan*); /* 0x01FC */ s16 stateFlag; /* 0x01FE */ s16 tempStateFlag; - /* 0x0200 */ EnGirlA* shelfSlots[8]; + /* 0x0200 */ struct EnGirlA* shelfSlots[8]; // Shelves are indexed as such: /* 7 5 3 1 */ /* 6 4 2 0 */ - /* 0x0220 */ EnTana* shelves; + /* 0x0220 */ struct EnTana* shelves; /* 0x0224 */ s32 stickAccumX; /* 0x0228 */ s32 stickAccumY; /* 0x022C */ u8 moveHorizontal; diff --git a/src/overlays/actors/ovl_En_Owl/z_en_owl.c b/src/overlays/actors/ovl_En_Owl/z_en_owl.c index 46696027f4..827bf75c03 100644 --- a/src/overlays/actors/ovl_En_Owl/z_en_owl.c +++ b/src/overlays/actors/ovl_En_Owl/z_en_owl.c @@ -5,10 +5,29 @@ */ #include "z_en_owl.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "rand.h" +#include "segmented_address.h" +#include "seqcmd.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_math3d.h" +#include "sys_matrix.h" +#include "terminal.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_owl/object_owl.h" #include "assets/scenes/overworld/spot06/spot06_scene.h" #include "assets/scenes/overworld/spot16/spot16_scene.h" -#include "terminal.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Owl/z_en_owl.h b/src/overlays/actors/ovl_En_Owl/z_en_owl.h index 4f92ef1b41..2f9e0939f8 100644 --- a/src/overlays/actors/ovl_En_Owl/z_en_owl.h +++ b/src/overlays/actors/ovl_En_Owl/z_en_owl.h @@ -2,11 +2,11 @@ #define Z_EN_OWL_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnOwl; -typedef void (*EnOwlActionFunc)(struct EnOwl*, PlayState*); +typedef void (*EnOwlActionFunc)(struct EnOwl*, struct PlayState*); typedef void (*OwlFunc)(struct EnOwl*); typedef struct EnOwl { diff --git a/src/overlays/actors/ovl_En_Part/z_en_part.c b/src/overlays/actors/ovl_En_Part/z_en_part.c index 215442f52e..c10a8edcb4 100644 --- a/src/overlays/actors/ovl_En_Part/z_en_part.c +++ b/src/overlays/actors/ovl_En_Part/z_en_part.c @@ -5,6 +5,20 @@ */ #include "z_en_part.h" + +#include "libc64/qrand.h" +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_tite/object_tite.h" #include "assets/objects/object_ik/object_ik.h" diff --git a/src/overlays/actors/ovl_En_Part/z_en_part.h b/src/overlays/actors/ovl_En_Part/z_en_part.h index 3502d80a80..405e795e75 100644 --- a/src/overlays/actors/ovl_En_Part/z_en_part.h +++ b/src/overlays/actors/ovl_En_Part/z_en_part.h @@ -2,11 +2,11 @@ #define Z_EN_PART_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnPart; -typedef void (*EnPartActionFunc)(struct EnPart*, PlayState*); +typedef void (*EnPartActionFunc)(struct EnPart*, struct PlayState*); typedef struct EnPart { /* 0x000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Peehat/z_en_peehat.c b/src/overlays/actors/ovl_En_Peehat/z_en_peehat.c index 6265f2c5f3..2246b3df16 100644 --- a/src/overlays/actors/ovl_En_Peehat/z_en_peehat.c +++ b/src/overlays/actors/ovl_En_Peehat/z_en_peehat.c @@ -1,8 +1,24 @@ #include "z_en_peehat.h" -#include "assets/objects/object_peehat/object_peehat.h" #include "overlays/actors/ovl_En_Bom/z_en_bom.h" #include "overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.h" +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "sfx.h" +#include "sys_math.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/object_peehat/object_peehat.h" + #define FLAGS \ (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED | \ ACTOR_FLAG_SFX_FOR_PLAYER_BODY_HIT) @@ -74,7 +90,7 @@ static ColliderCylinderInit sCylinderInit = { { 50, 160, -70, { 0, 0, 0 } }, }; -static ColliderJntSphElementInit sJntSphElemInit[1] = { +static ColliderJntSphElementInit sJntSphElementsInit[1] = { { { ELEM_MATERIAL_UNK0, @@ -98,7 +114,7 @@ static ColliderJntSphInit sJntSphInit = { COLSHAPE_JNTSPH, }, 1, - sJntSphElemInit, + sJntSphElementsInit, }; static ColliderQuadInit sQuadInit = { @@ -203,12 +219,12 @@ void EnPeehat_Init(Actor* thisx, PlayState* play) { this->actor.colChkInfo.health = 6; this->actor.colChkInfo.damageTable = &sDamageTable; this->actor.floorHeight = this->actor.world.pos.y; - Collider_InitCylinder(play, &this->colCylinder); - Collider_SetCylinder(play, &this->colCylinder, &this->actor, &sCylinderInit); - Collider_InitQuad(play, &this->colQuad); - Collider_SetQuad(play, &this->colQuad, &this->actor, &sQuadInit); - Collider_InitJntSph(play, &this->colJntSph); - Collider_SetJntSph(play, &this->colJntSph, &this->actor, &sJntSphInit, this->colJntSphItemList); + Collider_InitCylinder(play, &this->colliderCylinder); + Collider_SetCylinder(play, &this->colliderCylinder, &this->actor, &sCylinderInit); + Collider_InitQuad(play, &this->colliderQuad); + Collider_SetQuad(play, &this->colliderQuad, &this->actor, &sQuadInit); + Collider_InitJntSph(play, &this->colliderJntSph); + Collider_SetJntSph(play, &this->colliderJntSph, &this->actor, &sJntSphInit, this->colliderJntSphElements); this->actor.naviEnemyId = NAVI_ENEMY_PEAHAT; this->xzDistToRise = 740.0f; @@ -230,12 +246,12 @@ void EnPeehat_Init(Actor* thisx, PlayState* play) { case PEAHAT_TYPE_LARVA: this->actor.scale.x = this->actor.scale.z = 0.006f; this->actor.scale.y = 0.003f; - this->colCylinder.dim.radius = 25; - this->colCylinder.dim.height = 15; - this->colCylinder.dim.yShift = -5; - this->colCylinder.elem.acDmgInfo.dmgFlags = DMG_ARROW | DMG_SLINGSHOT; - this->colQuad.base.atFlags = AT_ON | AT_TYPE_ENEMY; - this->colQuad.base.acFlags = AC_ON | AC_TYPE_PLAYER; + this->colliderCylinder.dim.radius = 25; + this->colliderCylinder.dim.height = 15; + this->colliderCylinder.dim.yShift = -5; + this->colliderCylinder.elem.acDmgInfo.dmgFlags = DMG_ARROW | DMG_SLINGSHOT; + this->colliderQuad.base.atFlags = AT_ON | AT_TYPE_ENEMY; + this->colliderQuad.base.acFlags = AC_ON | AC_TYPE_PLAYER; this->actor.naviEnemyId = NAVI_ENEMY_PEAHAT_LARVA; EnPeehat_Larva_SetStateSeekPlayer(this); break; @@ -246,8 +262,8 @@ void EnPeehat_Destroy(Actor* thisx, PlayState* play) { EnPeehat* this = (EnPeehat*)thisx; EnPeehat* parent; - Collider_DestroyCylinder(play, &this->colCylinder); - Collider_DestroyJntSph(play, &this->colJntSph); + Collider_DestroyCylinder(play, &this->colliderCylinder); + Collider_DestroyJntSph(play, &this->colliderJntSph); // If PEAHAT_TYPE_LARVA, decrement total larva spawned if (this->actor.params > 0) { @@ -280,7 +296,7 @@ void EnPeehat_SpawnDust(PlayState* play, EnPeehat* this, Vec3f* pos, f32 arg3, s * Handles being hit when on the ground */ void EnPeehat_HitWhenGrounded(EnPeehat* this, PlayState* play) { - this->colCylinder.base.acFlags &= ~AC_HIT; + this->colliderCylinder.base.acFlags &= ~AC_HIT; if ((play->gameplayFrames & 0xF) == 0) { Vec3f itemDropPos = this->actor.world.pos; @@ -292,7 +308,7 @@ void EnPeehat_HitWhenGrounded(EnPeehat* this, PlayState* play) { } else { s32 i; - this->colCylinder.base.acFlags &= ~AC_HIT; + this->colliderCylinder.base.acFlags &= ~AC_HIT; for (i = MAX_LARVA - this->unk_2FA; i > 0; i--) { Actor* larva = Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_EN_PEEHAT, @@ -318,7 +334,7 @@ void EnPeehat_Ground_SetStateGround(EnPeehat* this) { this->unk_2D4 = 0; this->unk_2FA = 0; this->state = PEAHAT_STATE_3; - this->colCylinder.base.acFlags &= ~AC_HIT; + this->colliderCylinder.base.acFlags &= ~AC_HIT; EnPeehat_SetupAction(this, EnPeehat_Ground_StateGround); } @@ -343,7 +359,7 @@ void EnPeehat_Ground_StateGround(EnPeehat* this, PlayState* play) { } else { Math_SmoothStepToF(&this->scaleShift, 0.0f, 1.0f, 0.005f, 0.0f); } - } else if (this->colCylinder.base.acFlags & AC_HIT) { + } else if (this->colliderCylinder.base.acFlags & AC_HIT) { EnPeehat_HitWhenGrounded(this, play); } } @@ -373,7 +389,7 @@ void EnPeehat_Flying_StateGrounded(EnPeehat* this, PlayState* play) { } else { Math_SmoothStepToF(&this->scaleShift, 0.0f, 1.0f, 0.005f, 0.0f); } - } else if (this->colCylinder.base.acFlags & AC_HIT) { + } else if (this->colliderCylinder.base.acFlags & AC_HIT) { EnPeehat_HitWhenGrounded(this, play); } } @@ -560,22 +576,22 @@ void EnPeehat_Larva_StateSeekPlayer(EnPeehat* this, PlayState* play) { this->bladeRot += this->bladeRotVel; Math_SmoothStepToF(&this->scaleShift, 0.075f, 1.0f, 0.005f, 0.0f); Actor_PlaySfx(&this->actor, NA_SE_EN_PIHAT_SM_FLY - SFX_FLAG); - if (this->colQuad.base.atFlags & AT_BOUNCED) { + if (this->colliderQuad.base.atFlags & AT_BOUNCED) { this->actor.colChkInfo.health = 0; - this->colQuad.base.acFlags &= ~AC_BOUNCED; + this->colliderQuad.base.acFlags &= ~AC_BOUNCED; EnPeehat_SetStateAttackRecoil(this); - } else if ((this->colQuad.base.atFlags & AT_HIT) || (this->colCylinder.base.acFlags & AC_HIT) || + } else if ((this->colliderQuad.base.atFlags & AT_HIT) || (this->colliderCylinder.base.acFlags & AC_HIT) || (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND)) { Player* player = GET_PLAYER(play); - this->colQuad.base.atFlags &= ~AT_HIT; - if (!(this->colCylinder.base.acFlags & AC_HIT) && &player->actor == this->colQuad.base.at) { + this->colliderQuad.base.atFlags &= ~AT_HIT; + if (!(this->colliderCylinder.base.acFlags & AC_HIT) && &player->actor == this->colliderQuad.base.at) { if (Rand_ZeroOne() > 0.5f) { this->actor.world.rot.y += 0x2000; } else { this->actor.world.rot.y -= 0x2000; } this->unk_2D4 = 40; - } else if (this->colCylinder.base.acFlags & AC_HIT || this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) { + } else if (this->colliderCylinder.base.acFlags & AC_HIT || this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) { Vec3f zeroVec = { 0, 0, 0 }; s32 i; for (i = 4; i >= 0; i--) { @@ -586,7 +602,7 @@ void EnPeehat_Larva_StateSeekPlayer(EnPeehat* this, PlayState* play) { EffectSsDeadDb_Spawn(play, &pos, &zeroVec, &zeroVec, 40, 7, 255, 255, 255, 255, 255, 0, 0, 1, 9, 1); } } - if (&player->actor != this->colQuad.base.at || this->colCylinder.base.acFlags & AC_HIT) { + if (&player->actor != this->colliderQuad.base.at || this->colliderCylinder.base.acFlags & AC_HIT) { if (!(this->actor.bgCheckFlags & BGCHECKFLAG_GROUND)) { EffectSsDeadSound_SpawnStationary(play, &this->actor.projectedPos, NA_SE_EN_PIHAT_SM_DEAD, 1, 1, 40); } @@ -879,13 +895,13 @@ void EnPeehat_StateExplode(EnPeehat* this, PlayState* play) { } void EnPeehat_Adult_CollisionCheck(EnPeehat* this, PlayState* play) { - if ((this->colCylinder.base.acFlags & AC_BOUNCED) || (this->colQuad.base.acFlags & AC_BOUNCED)) { - this->colQuad.base.acFlags &= ~AC_BOUNCED; - this->colCylinder.base.acFlags &= ~AC_BOUNCED; - this->colJntSph.base.acFlags &= ~AC_HIT; - } else if (this->colJntSph.base.acFlags & AC_HIT) { - this->colJntSph.base.acFlags &= ~AC_HIT; - Actor_SetDropFlagJntSph(&this->actor, &this->colJntSph, true); + if ((this->colliderCylinder.base.acFlags & AC_BOUNCED) || (this->colliderQuad.base.acFlags & AC_BOUNCED)) { + this->colliderQuad.base.acFlags &= ~AC_BOUNCED; + this->colliderCylinder.base.acFlags &= ~AC_BOUNCED; + this->colliderJntSph.base.acFlags &= ~AC_HIT; + } else if (this->colliderJntSph.base.acFlags & AC_HIT) { + this->colliderJntSph.base.acFlags &= ~AC_HIT; + Actor_SetDropFlagJntSph(&this->actor, &this->colliderJntSph, true); if (this->actor.colChkInfo.damageEffect == PEAHAT_DMG_EFF_NUT || this->actor.colChkInfo.damageEffect == PEAHAT_DMG_EFF_LIGHT_ICE_ARROW) { return; @@ -948,9 +964,9 @@ void EnPeehat_Update(Actor* thisx, PlayState* play) { // if PEAHAT_TYPE_GROUNDED if (thisx->params < 0) { // Set the Z-Target point on the Peahat's weak point - thisx->focus.pos.x = this->colJntSph.elements[0].dim.worldSphere.center.x; - thisx->focus.pos.y = this->colJntSph.elements[0].dim.worldSphere.center.y; - thisx->focus.pos.z = this->colJntSph.elements[0].dim.worldSphere.center.z; + thisx->focus.pos.x = this->colliderJntSph.elements[0].dim.worldSphere.center.x; + thisx->focus.pos.y = this->colliderJntSph.elements[0].dim.worldSphere.center.y; + thisx->focus.pos.z = this->colliderJntSph.elements[0].dim.worldSphere.center.z; if (this->state == PEAHAT_STATE_SEEK_PLAYER) { Math_SmoothStepToS(&thisx->shape.rot.x, 6000, 1, 300, 0); } else { @@ -959,21 +975,21 @@ void EnPeehat_Update(Actor* thisx, PlayState* play) { } else { thisx->focus.pos = thisx->world.pos; } - Collider_UpdateCylinder(thisx, &this->colCylinder); + Collider_UpdateCylinder(thisx, &this->colliderCylinder); if (thisx->colChkInfo.health > 0) { // If Adult Peahat if (thisx->params <= 0) { - CollisionCheck_SetOC(play, &play->colChkCtx, &this->colCylinder.base); - CollisionCheck_SetOC(play, &play->colChkCtx, &this->colJntSph.base); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderCylinder.base); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderJntSph.base); if (thisx->colorFilterTimer == 0 || !(thisx->colorFilterParams & 0x4000)) { if (this->state != PEAHAT_STATE_EXPLODE) { - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colJntSph.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderJntSph.base); } } } - if (thisx->params != PEAHAT_TYPE_FLYING && this->colQuad.base.atFlags & AT_HIT) { - this->colQuad.base.atFlags &= ~AT_HIT; - if (&player->actor == this->colQuad.base.at) { + if (thisx->params != PEAHAT_TYPE_FLYING && this->colliderQuad.base.atFlags & AT_HIT) { + this->colliderQuad.base.atFlags &= ~AT_HIT; + if (&player->actor == this->colliderQuad.base.at) { EnPeehat_SetStateAttackRecoil(this); } } @@ -981,8 +997,8 @@ void EnPeehat_Update(Actor* thisx, PlayState* play) { if (this->state == PEAHAT_STATE_15 || this->state == PEAHAT_STATE_SEEK_PLAYER || this->state == PEAHAT_STATE_FLY || this->state == PEAHAT_STATE_RETURN_HOME || this->state == PEAHAT_STATE_EXPLODE) { if (thisx->params != PEAHAT_TYPE_FLYING) { - CollisionCheck_SetAT(play, &play->colChkCtx, &this->colQuad.base); - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colQuad.base); + CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderQuad.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderQuad.base); } // if PEAHAT_TYPE_GROUNDED if (thisx->params < 0 && (thisx->flags & ACTOR_FLAG_INSIDE_CULLING_VOLUME)) { @@ -997,10 +1013,10 @@ void EnPeehat_Update(Actor* thisx, PlayState* play) { } } } else if (thisx->params != PEAHAT_TYPE_FLYING) { - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colCylinder.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderCylinder.base); } } else { - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colCylinder.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderCylinder.base); } Math_SmoothStepToF(&this->scaleShift, 0.0f, 1.0f, 0.001f, 0.0f); } @@ -1049,7 +1065,7 @@ void EnPeehat_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* r OPEN_DISPS(play->state.gfxCtx, "../z_en_peehat.c", 1981); Matrix_Push(); Matrix_Translate(-1000.0f, 0.0f, 0.0f, MTXMODE_APPLY); - Collider_UpdateSpheres(0, &this->colJntSph); + Collider_UpdateSpheres(0, &this->colliderJntSph); Matrix_Translate(500.0f, 0.0f, 0.0f, MTXMODE_APPLY); if (this->actor.colorFilterTimer != 0 && (this->actor.colorFilterParams & 0x4000)) { damageYRot = Math_SinS(this->actor.colorFilterTimer * 0x4E20) * 0.35f; @@ -1073,11 +1089,11 @@ void EnPeehat_Draw(Actor* thisx, PlayState* play) { SkelAnime_DrawOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, EnPeehat_OverrideLimbDraw, EnPeehat_PostLimbDraw, this); if (this->actor.speed != 0.0f || this->actor.velocity.y != 0.0f) { - Matrix_MultVec3f(&D_80AD285C[0], &this->colQuad.dim.quad[1]); - Matrix_MultVec3f(&D_80AD285C[1], &this->colQuad.dim.quad[0]); - Matrix_MultVec3f(&D_80AD285C[2], &this->colQuad.dim.quad[3]); - Matrix_MultVec3f(&D_80AD285C[3], &this->colQuad.dim.quad[2]); - Collider_SetQuadVertices(&this->colQuad, &this->colQuad.dim.quad[0], &this->colQuad.dim.quad[1], - &this->colQuad.dim.quad[2], &this->colQuad.dim.quad[3]); + Matrix_MultVec3f(&D_80AD285C[0], &this->colliderQuad.dim.quad[1]); + Matrix_MultVec3f(&D_80AD285C[1], &this->colliderQuad.dim.quad[0]); + Matrix_MultVec3f(&D_80AD285C[2], &this->colliderQuad.dim.quad[3]); + Matrix_MultVec3f(&D_80AD285C[3], &this->colliderQuad.dim.quad[2]); + Collider_SetQuadVertices(&this->colliderQuad, &this->colliderQuad.dim.quad[0], &this->colliderQuad.dim.quad[1], + &this->colliderQuad.dim.quad[2], &this->colliderQuad.dim.quad[3]); } } diff --git a/src/overlays/actors/ovl_En_Peehat/z_en_peehat.h b/src/overlays/actors/ovl_En_Peehat/z_en_peehat.h index 2449fc3405..deb24089f6 100644 --- a/src/overlays/actors/ovl_En_Peehat/z_en_peehat.h +++ b/src/overlays/actors/ovl_En_Peehat/z_en_peehat.h @@ -2,7 +2,7 @@ #define Z_EN_PEEHAT_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" typedef enum PeahatType { /* -1 */ PEAHAT_TYPE_GROUNDED = -1, @@ -12,7 +12,7 @@ typedef enum PeahatType { struct EnPeehat; -typedef void (*EnPeehatActionFunc)(struct EnPeehat*, PlayState*); +typedef void (*EnPeehatActionFunc)(struct EnPeehat*, struct PlayState*); typedef struct EnPeehat { /* 0x0000 */ Actor actor; @@ -38,10 +38,10 @@ typedef struct EnPeehat { /* 0x02FA */ s16 unk_2FA; // larva count (PEAHAT_TYPE_FLYING, PEAHAT_TYPE_GROUNDED), // shape rotation direction (PEAHAT_TYPE_GROUNDED) /* 0x02FC */ s16 animTimer; - /* 0x0300 */ ColliderCylinder colCylinder; - /* 0x034C */ ColliderJntSph colJntSph; - /* 0x036C */ ColliderJntSphElement colJntSphItemList[1]; - /* 0x03AC */ ColliderQuad colQuad; + /* 0x0300 */ ColliderCylinder colliderCylinder; + /* 0x034C */ ColliderJntSph colliderJntSph; + /* 0x036C */ ColliderJntSphElement colliderJntSphElements[1]; + /* 0x03AC */ ColliderQuad colliderQuad; } EnPeehat; // size = 0x042C #endif 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 fefa80aecc..57ef9a85b6 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 @@ -5,6 +5,18 @@ */ #include "z_en_po_desert.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64light.h" +#include "z64play.h" + #include "assets/objects/object_po_field/object_po_field.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_REACT_TO_LENS | ACTOR_FLAG_IGNORE_QUAKE) diff --git a/src/overlays/actors/ovl_En_Po_Desert/z_en_po_desert.h b/src/overlays/actors/ovl_En_Po_Desert/z_en_po_desert.h index aeb2503edc..3f93eeb01d 100644 --- a/src/overlays/actors/ovl_En_Po_Desert/z_en_po_desert.h +++ b/src/overlays/actors/ovl_En_Po_Desert/z_en_po_desert.h @@ -2,11 +2,12 @@ #define Z_EN_PO_DESERT_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" +#include "z64light.h" struct EnPoDesert; -typedef void (*EnPoDesertActionFunc)(struct EnPoDesert*, PlayState*); +typedef void (*EnPoDesertActionFunc)(struct EnPoDesert*, struct PlayState*); typedef struct EnPoDesert { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Po_Field/z_en_po_field.c b/src/overlays/actors/ovl_En_Po_Field/z_en_po_field.c index 00eff4a39f..30218e20e5 100644 --- a/src/overlays/actors/ovl_En_Po_Field/z_en_po_field.c +++ b/src/overlays/actors/ovl_En_Po_Field/z_en_po_field.c @@ -5,6 +5,21 @@ */ #include "z_en_po_field.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64light.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_po_field/object_po_field.h" @@ -143,8 +158,8 @@ static EnPoFieldInfo sPoFieldInfo[2] = { static Vec3f D_80AD714C = { 0.0f, 1400.0f, 0.0f }; -#pragma increment_block_number "gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128 ntsc-1.2:128 pal-1.0:128" \ - "pal-1.1:128" +#pragma increment_block_number "gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128 ntsc-1.0:128 ntsc-1.1:128" \ + "ntsc-1.2:128 pal-1.0:128 pal-1.1:128" static Vec3s sSpawnPositions[10]; static u8 sSpawnSwitchFlags[10]; diff --git a/src/overlays/actors/ovl_En_Po_Field/z_en_po_field.h b/src/overlays/actors/ovl_En_Po_Field/z_en_po_field.h index f07a9233d7..17e08ee999 100644 --- a/src/overlays/actors/ovl_En_Po_Field/z_en_po_field.h +++ b/src/overlays/actors/ovl_En_Po_Field/z_en_po_field.h @@ -2,11 +2,12 @@ #define Z_EN_PO_FIELD_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" +#include "z64light.h" struct EnPoField; -typedef void (*EnPoFieldActionFunc)(struct EnPoField*, PlayState*); +typedef void (*EnPoFieldActionFunc)(struct EnPoField*, struct PlayState*); typedef enum EnPoFieldSize { EN_PO_FIELD_SMALL, diff --git a/src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.c b/src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.c index e515efabed..983dbf0d71 100644 --- a/src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.c +++ b/src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.c @@ -6,6 +6,23 @@ #include "z_en_po_relay.h" #include "overlays/actors/ovl_En_Honotrap/z_en_honotrap.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_math3d.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64light.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_tk/object_tk.h" #define FLAGS \ diff --git a/src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.h b/src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.h index 70567ada79..e4a440d940 100644 --- a/src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.h +++ b/src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.h @@ -2,11 +2,12 @@ #define Z_EN_PO_RELAY_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" +#include "z64light.h" struct EnPoRelay; -typedef void (*EnPoRelayActionFunc)(struct EnPoRelay*, PlayState*); +typedef void (*EnPoRelayActionFunc)(struct EnPoRelay*, struct PlayState*); typedef struct EnPoRelay { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.c b/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.c index 3af363a28f..0f24ad4d0d 100644 --- a/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.c +++ b/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.c @@ -5,6 +5,23 @@ */ #include "z_en_po_sisters.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "one_point_cutscene.h" +#include "rand.h" +#include "sequence.h" +#include "sfx.h" +#include "ichain.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64effect.h" +#include "z64light.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_po_sisters/object_po_sisters.h" diff --git a/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.h b/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.h index 524f8a867f..bc25e9d035 100644 --- a/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.h +++ b/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.h @@ -2,11 +2,12 @@ #define Z_EN_PO_SISTERS_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" +#include "z64light.h" struct EnPoSisters; -typedef void (*EnPoSistersActionFunc)(struct EnPoSisters*, PlayState*); +typedef void (*EnPoSistersActionFunc)(struct EnPoSisters*, struct PlayState*); typedef struct EnPoSisters { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Poh/z_en_poh.c b/src/overlays/actors/ovl_En_Poh/z_en_poh.c index 2168c89e6b..fceb18ef7c 100644 --- a/src/overlays/actors/ovl_En_Poh/z_en_poh.c +++ b/src/overlays/actors/ovl_En_Poh/z_en_poh.c @@ -5,6 +5,21 @@ */ #include "z_en_poh.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64light.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_poh/object_poh.h" #include "assets/objects/object_po_composer/object_po_composer.h" @@ -75,7 +90,7 @@ static ColliderCylinderInit sCylinderInit = { { 20, 40, 20, { 0, 0, 0 } }, }; -static ColliderJntSphElementInit D_80AE1AA0[1] = { +static ColliderJntSphElementInit sJntSphElementsInit[1] = { { { ELEM_MATERIAL_UNK0, @@ -99,7 +114,7 @@ static ColliderJntSphInit sJntSphInit = { COLSHAPE_JNTSPH, }, 1, - D_80AE1AA0, + sJntSphElementsInit, }; static CollisionCheckInfoInit sColChkInfoInit = { 4, 25, 50, 40 }; @@ -189,14 +204,14 @@ void EnPoh_Init(Actor* thisx, PlayState* play) { Actor_ProcessInitChain(&this->actor, sInitChain); ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 30.0f); - Collider_InitJntSph(play, &this->colliderSph); - Collider_SetJntSph(play, &this->colliderSph, &this->actor, &sJntSphInit, &this->colliderSphItem); - this->colliderSph.elements[0].dim.worldSphere.radius = 0; - this->colliderSph.elements[0].dim.worldSphere.center.x = this->actor.world.pos.x; - this->colliderSph.elements[0].dim.worldSphere.center.y = this->actor.world.pos.y; - this->colliderSph.elements[0].dim.worldSphere.center.z = this->actor.world.pos.z; - Collider_InitCylinder(play, &this->colliderCyl); - Collider_SetCylinder(play, &this->colliderCyl, &this->actor, &sCylinderInit); + Collider_InitJntSph(play, &this->colliderJntSph); + Collider_SetJntSph(play, &this->colliderJntSph, &this->actor, &sJntSphInit, this->colliderJntSphElements); + this->colliderJntSph.elements[0].dim.worldSphere.radius = 0; + this->colliderJntSph.elements[0].dim.worldSphere.center.x = this->actor.world.pos.x; + this->colliderJntSph.elements[0].dim.worldSphere.center.y = this->actor.world.pos.y; + this->colliderJntSph.elements[0].dim.worldSphere.center.z = this->actor.world.pos.z; + Collider_InitCylinder(play, &this->colliderCylinder); + Collider_SetCylinder(play, &this->colliderCylinder, &this->actor, &sCylinderInit); CollisionCheck_SetInfo(&this->actor.colChkInfo, &sDamageTable, &sColChkInfoInit); this->unk_194 = 0; this->unk_195 = 32; @@ -249,8 +264,8 @@ void EnPoh_Destroy(Actor* thisx, PlayState* play) { EnPoh* this = (EnPoh*)thisx; LightContext_RemoveLight(play, &play->lightCtx, this->lightNode); - Collider_DestroyJntSph(play, &this->colliderSph); - Collider_DestroyCylinder(play, &this->colliderCyl); + Collider_DestroyJntSph(play, &this->colliderJntSph); + Collider_DestroyCylinder(play, &this->colliderCylinder); if (this->actor.params == EN_POH_RUPEE) { D_80AE1A50--; } @@ -294,12 +309,12 @@ void func_80ADE28C(EnPoh* this) { } else { Animation_PlayOnce(&this->skelAnime, &gPoeComposerDamagedAnim); } - if (this->colliderCyl.elem.acHitElem->atDmgInfo.dmgFlags & (DMG_ARROW | DMG_SLINGSHOT)) { - this->actor.world.rot.y = this->colliderCyl.base.ac->world.rot.y; + if (this->colliderCylinder.elem.acHitElem->atDmgInfo.dmgFlags & (DMG_ARROW | DMG_SLINGSHOT)) { + this->actor.world.rot.y = this->colliderCylinder.base.ac->world.rot.y; } else { - this->actor.world.rot.y = Actor_WorldYawTowardActor(&this->actor, this->colliderCyl.base.ac) + 0x8000; + this->actor.world.rot.y = Actor_WorldYawTowardActor(&this->actor, this->colliderCylinder.base.ac) + 0x8000; } - this->colliderCyl.base.acFlags &= ~AC_ON; + this->colliderCylinder.base.acFlags &= ~AC_ON; this->actor.speed = 5.0f; Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 16); this->actionFunc = func_80ADEECC; @@ -309,7 +324,7 @@ void func_80ADE368(EnPoh* this) { Animation_MorphToLoop(&this->skelAnime, this->info->fleeAnim, -5.0f); this->actor.speed = 5.0f; this->actor.world.rot.y = this->actor.shape.rot.y + 0x8000; - this->colliderCyl.base.acFlags |= AC_ON; + this->colliderCylinder.base.acFlags |= AC_ON; this->unk_198 = 200; this->actionFunc = func_80ADF894; } @@ -413,13 +428,13 @@ void func_80ADE6D4(EnPoh* this) { void EnPoh_Talk(EnPoh* this, PlayState* play) { this->actor.home.pos.y = this->actor.world.pos.y; Actor_SetFocus(&this->actor, -10.0f); - this->colliderCyl.dim.radius = 13; - this->colliderCyl.dim.height = 30; - this->colliderCyl.dim.yShift = 0; - this->colliderCyl.dim.pos.x = this->actor.world.pos.x; - this->colliderCyl.dim.pos.y = this->actor.world.pos.y - 20.0f; - this->colliderCyl.dim.pos.z = this->actor.world.pos.z; - this->colliderCyl.base.ocFlags1 = OC1_ON | OC1_TYPE_PLAYER; + this->colliderCylinder.dim.radius = 13; + this->colliderCylinder.dim.height = 30; + this->colliderCylinder.dim.yShift = 0; + this->colliderCylinder.dim.pos.x = this->actor.world.pos.x; + this->colliderCylinder.dim.pos.y = this->actor.world.pos.y - 20.0f; + this->colliderCylinder.dim.pos.z = this->actor.world.pos.z; + this->colliderCylinder.base.ocFlags1 = OC1_ON | OC1_TYPE_PLAYER; if (this->actor.params == EN_POH_FLAT || this->actor.params == EN_POH_SHARP) { if (CHECK_QUEST_ITEM(QUEST_SONG_SUN)) { this->actor.textId = 0x5000; @@ -777,12 +792,12 @@ void func_80ADFE80(EnPoh* this, PlayState* play) { this->actor.flags &= ~ACTOR_FLAG_TALK_OFFER_AUTO_ACCEPTED; return; } - if (this->colliderCyl.base.ocFlags1 & OC1_HIT) { + if (this->colliderCylinder.base.ocFlags1 & OC1_HIT) { this->actor.flags |= ACTOR_FLAG_TALK_OFFER_AUTO_ACCEPTED; Actor_OfferTalkNearColChkInfoCylinder(&this->actor, play); } else { this->actor.flags &= ~ACTOR_FLAG_TALK_OFFER_AUTO_ACCEPTED; - CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderCyl.base); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderCylinder.base); } this->actor.world.pos.y = Math_SinS(this->unk_195 * 0x800) * 5.0f + this->actor.home.pos.y; if (this->unk_195 != 0) { @@ -791,7 +806,7 @@ void func_80ADFE80(EnPoh* this, PlayState* play) { if (this->unk_195 == 0) { this->unk_195 = 32; } - this->colliderCyl.dim.pos.y = this->actor.world.pos.y - 20.0f; + this->colliderCylinder.dim.pos.y = this->actor.world.pos.y - 20.0f; Actor_SetFocus(&this->actor, -10.0f); Lights_PointNoGlowSetInfo(&this->lightInfo, this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, this->info->lightColor.r, this->info->lightColor.g, @@ -863,8 +878,8 @@ void EnPoh_TalkComposer(EnPoh* this, PlayState* play) { } void func_80AE032C(EnPoh* this, PlayState* play) { - if (this->colliderCyl.base.acFlags & AC_HIT) { - this->colliderCyl.base.acFlags &= ~AC_HIT; + if (this->colliderCylinder.base.acFlags & AC_HIT) { + this->colliderCylinder.base.acFlags &= ~AC_HIT; if (this->actor.colChkInfo.damageEffect != 0 || this->actor.colChkInfo.damage != 0) { if (Actor_ApplyDamage(&this->actor) == 0) { Enemy_StartFinishingBlow(play, &this->actor); @@ -918,12 +933,12 @@ void EnPoh_Update(Actor* thisx, PlayState* play) { SkelAnime_InitFlex(play, &this->skelAnime, &gPoeComposerSkel, &gPoeComposerFloatAnim, this->jointTable, this->morphTable, 12); this->actor.draw = EnPoh_DrawComposer; - this->colliderSph.elements[0].dim.limb = 9; - this->colliderSph.elements[0].dim.modelSphere.center.y *= -1; + this->colliderJntSph.elements[0].dim.limb = 9; + this->colliderJntSph.elements[0].dim.modelSphere.center.y *= -1; this->actor.shape.rot.y = this->actor.world.rot.y = -0x4000; - this->colliderCyl.dim.radius = 20; - this->colliderCyl.dim.height = 55; - this->colliderCyl.dim.yShift = 15; + this->colliderCylinder.dim.radius = 20; + this->colliderCylinder.dim.height = 55; + this->colliderCylinder.dim.yShift = 15; } this->actor.flags &= ~ACTOR_FLAG_UPDATE_CULLING_DISABLED; EnPoh_SetupInitialAction(this); @@ -988,8 +1003,8 @@ void EnPoh_UpdateLiving(Actor* thisx, PlayState* play) { Vec3f checkPos; s32 bgId; - if (this->colliderSph.base.atFlags & AT_HIT) { - this->colliderSph.base.atFlags &= ~AT_HIT; + if (this->colliderJntSph.base.atFlags & AT_HIT) { + this->colliderJntSph.base.atFlags &= ~AT_HIT; func_80ADE4C8(this); } func_80AE032C(this, play); @@ -998,14 +1013,14 @@ void EnPoh_UpdateLiving(Actor* thisx, PlayState* play) { Actor_MoveXZGravity(&this->actor); if (this->actionFunc == EnPoh_Attack && this->unk_198 < 10) { this->actor.flags |= ACTOR_FLAG_SFX_FOR_PLAYER_BODY_HIT; - CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderSph.base); + CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderJntSph.base); } - Collider_UpdateCylinder(&this->actor, &this->colliderCyl); - if ((this->colliderCyl.base.acFlags & AC_ON) && this->lightColor.a == 255) { - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderCyl.base); + Collider_UpdateCylinder(&this->actor, &this->colliderCylinder); + if ((this->colliderCylinder.base.acFlags & AC_ON) && this->lightColor.a == 255) { + CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderCylinder.base); } - CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderCyl.base); - CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderSph.base); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderCylinder.base); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderJntSph.base); Actor_SetFocus(&this->actor, 42.0f); if (this->actionFunc != func_80ADEECC && this->actionFunc != func_80ADF574) { if (this->actionFunc == func_80ADF894) { @@ -1044,7 +1059,7 @@ s32 EnPoh_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p void EnPoh_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx, Gfx** gfxP) { EnPoh* this = (EnPoh*)thisx; - Collider_UpdateSpheres(limbIndex, &this->colliderSph); + Collider_UpdateSpheres(limbIndex, &this->colliderJntSph); if (this->actionFunc == func_80ADF15C && this->unk_198 >= 2 && limbIndex == this->info->unk_7) { MATRIX_FINALIZE_AND_LOAD((*gfxP)++, play->state.gfxCtx, "../z_en_poh.c", 2460); gSPDisplayList((*gfxP)++, this->info->burnDisplayList); @@ -1060,9 +1075,9 @@ void EnPoh_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, this->actor.world.pos.y = this->unk_368.yw; this->actor.world.pos.z = this->unk_368.zw; } - Lights_PointGlowSetInfo(&this->lightInfo, this->colliderSph.elements[0].dim.worldSphere.center.x, - this->colliderSph.elements[0].dim.worldSphere.center.y, - this->colliderSph.elements[0].dim.worldSphere.center.z, this->envColor.r, + Lights_PointGlowSetInfo(&this->lightInfo, this->colliderJntSph.elements[0].dim.worldSphere.center.x, + this->colliderJntSph.elements[0].dim.worldSphere.center.y, + this->colliderJntSph.elements[0].dim.worldSphere.center.z, this->envColor.r, this->envColor.g, this->envColor.b, this->envColor.a * (200.0f / 255)); } } diff --git a/src/overlays/actors/ovl_En_Poh/z_en_poh.h b/src/overlays/actors/ovl_En_Poh/z_en_poh.h index 749047b75f..7e7db7d997 100644 --- a/src/overlays/actors/ovl_En_Poh/z_en_poh.h +++ b/src/overlays/actors/ovl_En_Poh/z_en_poh.h @@ -2,11 +2,12 @@ #define Z_EN_POH_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" +#include "z64light.h" struct EnPoh; -typedef void (*EnPohActionFunc)(struct EnPoh*, PlayState*); +typedef void (*EnPohActionFunc)(struct EnPoh*, struct PlayState*); typedef enum EnPohType { EN_POH_NORMAL, @@ -53,9 +54,9 @@ typedef struct EnPoh { /* 0x02A4 */ EnPohInfo* info; /* 0x02A8 */ LightNode* lightNode; /* 0x02AC */ LightInfo lightInfo; - /* 0x02BC */ ColliderCylinder colliderCyl; - /* 0x0308 */ ColliderJntSph colliderSph; - /* 0x0328 */ ColliderJntSphElement colliderSphItem; + /* 0x02BC */ ColliderCylinder colliderCylinder; + /* 0x0308 */ ColliderJntSph colliderJntSph; + /* 0x0328 */ ColliderJntSphElement colliderJntSphElements[1]; /* 0x0368 */ MtxF unk_368; } EnPoh; // size = 0x03A8 diff --git a/src/overlays/actors/ovl_En_Pu_box/z_en_pu_box.c b/src/overlays/actors/ovl_En_Pu_box/z_en_pu_box.c index 495046f95d..e984f316f7 100644 --- a/src/overlays/actors/ovl_En_Pu_box/z_en_pu_box.c +++ b/src/overlays/actors/ovl_En_Pu_box/z_en_pu_box.c @@ -5,6 +5,11 @@ */ #include "z_en_pu_box.h" + +#include "sfx.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_pu_box/object_pu_box.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_En_Pu_box/z_en_pu_box.h b/src/overlays/actors/ovl_En_Pu_box/z_en_pu_box.h index 0aa0aaaf4b..cd15c66c18 100644 --- a/src/overlays/actors/ovl_En_Pu_box/z_en_pu_box.h +++ b/src/overlays/actors/ovl_En_Pu_box/z_en_pu_box.h @@ -2,7 +2,7 @@ #define Z_EN_PU_BOX_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnPubox; diff --git a/src/overlays/actors/ovl_En_Rd/z_en_rd.c b/src/overlays/actors/ovl_En_Rd/z_en_rd.c index ee6734ea64..af9ed8f112 100644 --- a/src/overlays/actors/ovl_En_Rd/z_en_rd.c +++ b/src/overlays/actors/ovl_En_Rd/z_en_rd.c @@ -1,4 +1,26 @@ +/* + * File: z_en_rd.c + * Overlay: ovl_En_Rd + * Description: Redead and Gibdo + */ + #include "z_en_rd.h" + +#include "libc64/qrand.h" +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rumble.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_rd/object_rd.h" #define FLAGS \ diff --git a/src/overlays/actors/ovl_En_Rd/z_en_rd.h b/src/overlays/actors/ovl_En_Rd/z_en_rd.h index 4c46a5e1e1..5e9f328dee 100644 --- a/src/overlays/actors/ovl_En_Rd/z_en_rd.h +++ b/src/overlays/actors/ovl_En_Rd/z_en_rd.h @@ -2,11 +2,11 @@ #define Z_EN_RD_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnRd; -typedef void (*EnRdActionFunc)(struct EnRd*, PlayState*); +typedef void (*EnRdActionFunc)(struct EnRd*, struct PlayState*); #define REDEAD_GET_RDFLAGS(thisx) PARAMS_GET_S((thisx)->params, 8, 8) 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 1fbcc178ad..fb3f20bc6c 100644 --- a/src/overlays/actors/ovl_En_Reeba/z_en_reeba.c +++ b/src/overlays/actors/ovl_En_Reeba/z_en_reeba.c @@ -7,7 +7,22 @@ #include "z_en_reeba.h" #include "overlays/actors/ovl_En_Encount1/z_en_encount1.h" + +#include "libc64/qrand.h" +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "regs.h" +#include "sfx.h" #include "terminal.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64debug_display.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_reeba/object_reeba.h" #define FLAGS \ diff --git a/src/overlays/actors/ovl_En_Reeba/z_en_reeba.h b/src/overlays/actors/ovl_En_Reeba/z_en_reeba.h index 36173bf355..a357af86ef 100644 --- a/src/overlays/actors/ovl_En_Reeba/z_en_reeba.h +++ b/src/overlays/actors/ovl_En_Reeba/z_en_reeba.h @@ -2,11 +2,11 @@ #define Z_EN_REEBA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnReeba; -typedef void (*EnReebaActionFunc)(struct EnReeba*, PlayState*); +typedef void (*EnReebaActionFunc)(struct EnReeba*, struct PlayState*); typedef struct EnReeba { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_River_Sound/z_en_river_sound.c b/src/overlays/actors/ovl_En_River_Sound/z_en_river_sound.c index a3861adec4..871cf6668f 100644 --- a/src/overlays/actors/ovl_En_River_Sound/z_en_river_sound.c +++ b/src/overlays/actors/ovl_En_River_Sound/z_en_river_sound.c @@ -6,6 +6,15 @@ #include "z_en_river_sound.h" +#include "segmented_address.h" +#include "sequence.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) void EnRiverSound_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_En_River_Sound/z_en_river_sound.h b/src/overlays/actors/ovl_En_River_Sound/z_en_river_sound.h index c647185217..4332af6021 100644 --- a/src/overlays/actors/ovl_En_River_Sound/z_en_river_sound.h +++ b/src/overlays/actors/ovl_En_River_Sound/z_en_river_sound.h @@ -2,7 +2,7 @@ #define Z_EN_RIVER_SOUND_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnRiverSound; diff --git a/src/overlays/actors/ovl_En_Rl/z_en_rl.c b/src/overlays/actors/ovl_En_Rl/z_en_rl.c index 6d79ef6288..56e27591fc 100644 --- a/src/overlays/actors/ovl_En_Rl/z_en_rl.c +++ b/src/overlays/actors/ovl_En_Rl/z_en_rl.c @@ -5,7 +5,17 @@ */ #include "z_en_rl.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "regs.h" +#include "segmented_address.h" #include "terminal.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_rl/object_rl.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_En_Rl/z_en_rl.h b/src/overlays/actors/ovl_En_Rl/z_en_rl.h index 9aa6b9ae6c..9ce9949aa6 100644 --- a/src/overlays/actors/ovl_En_Rl/z_en_rl.h +++ b/src/overlays/actors/ovl_En_Rl/z_en_rl.h @@ -2,12 +2,12 @@ #define Z_EN_RL_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnRl; -typedef void (*EnRlActionFunc)(struct EnRl*, PlayState*); -typedef void (*EnRlDrawFunc)(struct EnRl*, PlayState*); +typedef void (*EnRlActionFunc)(struct EnRl*, struct PlayState*); +typedef void (*EnRlDrawFunc)(struct EnRl*, struct PlayState*); typedef struct EnRl { /* 0x0000 */ Actor actor; 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 ff67d09329..07bb916640 100644 --- a/src/overlays/actors/ovl_En_Rr/z_en_rr.c +++ b/src/overlays/actors/ovl_En_Rr/z_en_rr.c @@ -5,9 +5,25 @@ */ #include "z_en_rr.h" -#include "assets/objects/object_rr/object_rr.h" + +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "rumble.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" #include "versions.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/object_rr/object_rr.h" #define FLAGS \ (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED | \ diff --git a/src/overlays/actors/ovl_En_Rr/z_en_rr.h b/src/overlays/actors/ovl_En_Rr/z_en_rr.h index 44ac232668..f0ed5b5c30 100644 --- a/src/overlays/actors/ovl_En_Rr/z_en_rr.h +++ b/src/overlays/actors/ovl_En_Rr/z_en_rr.h @@ -2,11 +2,11 @@ #define Z_EN_RR_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnRr; -typedef void (*EnRrActionFunc)(struct EnRr*, PlayState*); +typedef void (*EnRrActionFunc)(struct EnRr*, struct PlayState*); typedef struct EnRrBodySegment { /* 0x00 */ f32 height; 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 3586ed73d7..16bc86f02a 100644 --- a/src/overlays/actors/ovl_En_Ru1/z_en_ru1.c +++ b/src/overlays/actors/ovl_En_Ru1/z_en_ru1.c @@ -5,10 +5,27 @@ */ #include "z_en_ru1.h" -#include "assets/objects/object_ru1/object_ru1.h" +#include "overlays/actors/ovl_Demo_Effect/z_demo_effect.h" + +#include "libc64/math64.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "regs.h" +#include "segmented_address.h" +#include "seqcmd.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" #include "versions.h" -#include "overlays/actors/ovl_Demo_Effect/z_demo_effect.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64face_reaction.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/object_ru1/object_ru1.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_CAN_PRESS_SWITCHES) diff --git a/src/overlays/actors/ovl_En_Ru1/z_en_ru1.h b/src/overlays/actors/ovl_En_Ru1/z_en_ru1.h index 8223bfda43..8778174ef5 100644 --- a/src/overlays/actors/ovl_En_Ru1/z_en_ru1.h +++ b/src/overlays/actors/ovl_En_Ru1/z_en_ru1.h @@ -2,16 +2,16 @@ #define Z_EN_RU1_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" #include "overlays/actors/ovl_Bg_Bdan_Objects/z_bg_bdan_objects.h" #include "overlays/actors/ovl_Door_Warp1/z_door_warp1.h" struct EnRu1; -typedef void (*EnRu1ActionFunc)(struct EnRu1*, PlayState*); -typedef void (*EnRu1DrawFunc)(struct EnRu1*, PlayState*); -typedef void (*EnRu1PreLimbDrawFunc)(struct EnRu1*, PlayState*, s32, Vec3s*); +typedef void (*EnRu1ActionFunc)(struct EnRu1*, struct PlayState*); +typedef void (*EnRu1DrawFunc)(struct EnRu1*, struct PlayState*); +typedef void (*EnRu1PreLimbDrawFunc)(struct EnRu1*, struct PlayState*, s32, Vec3s*); typedef struct EnRu1 { /* 0x0000 */ Actor actor; 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 eff82bc1ec..402bb2329a 100644 --- a/src/overlays/actors/ovl_En_Ru2/z_en_ru2.c +++ b/src/overlays/actors/ovl_En_Ru2/z_en_ru2.c @@ -5,9 +5,23 @@ */ #include "z_en_ru2.h" -#include "assets/objects/object_ru2/object_ru2.h" #include "overlays/actors/ovl_Door_Warp1/z_door_warp1.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "one_point_cutscene.h" +#include "regs.h" +#include "segmented_address.h" +#include "sequence.h" +#include "sfx.h" #include "terminal.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/object_ru2/object_ru2.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_En_Ru2/z_en_ru2.h b/src/overlays/actors/ovl_En_Ru2/z_en_ru2.h index 12333051b6..ca051d1800 100644 --- a/src/overlays/actors/ovl_En_Ru2/z_en_ru2.h +++ b/src/overlays/actors/ovl_En_Ru2/z_en_ru2.h @@ -2,15 +2,15 @@ #define Z_EN_RU2_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" #define ENRU2_GET_SWITCH_FLAG(thisx) PARAMS_GET_U(thisx->actor.params, 8, 8) #define ENRU2_GET_TYPE(thisx) PARAMS_GET_U(thisx->actor.params, 0, 8) struct EnRu2; -typedef void (*EnRu2ActionFunc)(struct EnRu2*, PlayState*); -typedef void (*EnRu2DrawFunc)(struct EnRu2*, PlayState*); +typedef void (*EnRu2ActionFunc)(struct EnRu2*, struct PlayState*); +typedef void (*EnRu2DrawFunc)(struct EnRu2*, struct PlayState*); typedef struct EnRu2 { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Sa/z_en_sa.c b/src/overlays/actors/ovl_En_Sa/z_en_sa.c index 59ac42285e..f1407355e9 100644 --- a/src/overlays/actors/ovl_En_Sa/z_en_sa.c +++ b/src/overlays/actors/ovl_En_Sa/z_en_sa.c @@ -1,5 +1,17 @@ #include "z_en_sa.h" #include "overlays/actors/ovl_En_Elf/z_en_elf.h" + +#include "attributes.h" +#include "gfx.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64face_reaction.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_sa/object_sa.h" #include "assets/scenes/overworld/spot04/spot04_scene.h" #include "assets/scenes/overworld/spot05/spot05_scene.h" diff --git a/src/overlays/actors/ovl_En_Sa/z_en_sa.h b/src/overlays/actors/ovl_En_Sa/z_en_sa.h index 27c2c740f0..0132877731 100644 --- a/src/overlays/actors/ovl_En_Sa/z_en_sa.h +++ b/src/overlays/actors/ovl_En_Sa/z_en_sa.h @@ -2,11 +2,11 @@ #define Z_EN_SA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnSa; -typedef void (*EnSaActionFunc)(struct EnSa*, PlayState*); +typedef void (*EnSaActionFunc)(struct EnSa*, struct PlayState*); typedef struct EnSa { /* 0x0000 */ Actor actor; 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 647d321273..d1a2d3715f 100644 --- a/src/overlays/actors/ovl_En_Sb/z_en_sb.c +++ b/src/overlays/actors/ovl_En_Sb/z_en_sb.c @@ -5,7 +5,17 @@ */ #include "z_en_sb.h" + +#include "attributes.h" +#include "ichain.h" +#include "rand.h" +#include "sfx.h" #include "terminal.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/object_sb/object_sb.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE) diff --git a/src/overlays/actors/ovl_En_Sb/z_en_sb.h b/src/overlays/actors/ovl_En_Sb/z_en_sb.h index a6dbd2cdf8..f2f0e42adb 100644 --- a/src/overlays/actors/ovl_En_Sb/z_en_sb.h +++ b/src/overlays/actors/ovl_En_Sb/z_en_sb.h @@ -2,11 +2,11 @@ #define Z_EN_SB_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnSb; -typedef void (*EnSbActionFunc)(struct EnSb*, PlayState*); +typedef void (*EnSbActionFunc)(struct EnSb*, struct PlayState*); typedef struct EnSb { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Scene_Change/z_en_scene_change.c b/src/overlays/actors/ovl_En_Scene_Change/z_en_scene_change.c index 26d322f9b5..425b30b8f4 100644 --- a/src/overlays/actors/ovl_En_Scene_Change/z_en_scene_change.c +++ b/src/overlays/actors/ovl_En_Scene_Change/z_en_scene_change.c @@ -6,6 +6,10 @@ #include "z_en_scene_change.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "z64play.h" + #define FLAGS 0 void EnSceneChange_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_En_Scene_Change/z_en_scene_change.h b/src/overlays/actors/ovl_En_Scene_Change/z_en_scene_change.h index 4add7d11ee..d1fcb16d90 100644 --- a/src/overlays/actors/ovl_En_Scene_Change/z_en_scene_change.h +++ b/src/overlays/actors/ovl_En_Scene_Change/z_en_scene_change.h @@ -2,11 +2,11 @@ #define Z_ITEM_SCENE_CHANGE_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnSceneChange; -typedef void (*EnSceneChangeActionFunc)(struct EnSceneChange*, PlayState*); +typedef void (*EnSceneChangeActionFunc)(struct EnSceneChange*, struct PlayState*); typedef struct EnSceneChange { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Sda/z_en_sda.c b/src/overlays/actors/ovl_En_Sda/z_en_sda.c index 62bd38cc11..95a1f773e6 100644 --- a/src/overlays/actors/ovl_En_Sda/z_en_sda.c +++ b/src/overlays/actors/ovl_En_Sda/z_en_sda.c @@ -6,6 +6,13 @@ #include "z_en_sda.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "regs.h" +#include "sys_matrix.h" +#include "z64play.h" +#include "z64player.h" + #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) void EnSda_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_En_Sda/z_en_sda.h b/src/overlays/actors/ovl_En_Sda/z_en_sda.h index 4dd2abd3a6..27cba99665 100644 --- a/src/overlays/actors/ovl_En_Sda/z_en_sda.h +++ b/src/overlays/actors/ovl_En_Sda/z_en_sda.h @@ -2,7 +2,7 @@ #define Z_EN_SDA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnSda; diff --git a/src/overlays/actors/ovl_En_Shopnuts/z_en_shopnuts.c b/src/overlays/actors/ovl_En_Shopnuts/z_en_shopnuts.c index 8eb853a808..4e082fcd47 100644 --- a/src/overlays/actors/ovl_En_Shopnuts/z_en_shopnuts.c +++ b/src/overlays/actors/ovl_En_Shopnuts/z_en_shopnuts.c @@ -5,6 +5,18 @@ */ #include "z_en_shopnuts.h" +#include "overlays/actors/ovl_En_Dns/z_en_dns.h" +#include "overlays/actors/ovl_En_Nutsball/z_en_nutsball.h" + +#include "gfx.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64save.h" + +#include "assets/objects/object_shopnuts/object_shopnuts.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE) diff --git a/src/overlays/actors/ovl_En_Shopnuts/z_en_shopnuts.h b/src/overlays/actors/ovl_En_Shopnuts/z_en_shopnuts.h index 33971269f7..8bea3a0a68 100644 --- a/src/overlays/actors/ovl_En_Shopnuts/z_en_shopnuts.h +++ b/src/overlays/actors/ovl_En_Shopnuts/z_en_shopnuts.h @@ -2,15 +2,14 @@ #define Z_EN_SHOPNUTS_H #include "ultra64.h" -#include "global.h" -#include "overlays/actors/ovl_En_Dns/z_en_dns.h" -#include "overlays/actors/ovl_En_Nutsball/z_en_nutsball.h" +#include "z64actor.h" +#include "assets/objects/object_shopnuts/object_shopnuts.h" struct EnShopnuts; #define SHOPNUTS_GET_TYPE(thisx) ((thisx)->params) -typedef void (*EnShopnutsActionFunc)(struct EnShopnuts*, PlayState*); +typedef void (*EnShopnutsActionFunc)(struct EnShopnuts*, struct PlayState*); typedef struct EnShopnuts { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Si/z_en_si.c b/src/overlays/actors/ovl_En_Si/z_en_si.c index fad66480db..d1597d0827 100644 --- a/src/overlays/actors/ovl_En_Si/z_en_si.c +++ b/src/overlays/actors/ovl_En_Si/z_en_si.c @@ -6,6 +6,14 @@ #include "z_en_si.h" +#include "sequence.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64draw.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOOKSHOT_PULLS_ACTOR) void EnSi_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_En_Si/z_en_si.h b/src/overlays/actors/ovl_En_Si/z_en_si.h index b52e831a30..a4ec863028 100644 --- a/src/overlays/actors/ovl_En_Si/z_en_si.h +++ b/src/overlays/actors/ovl_En_Si/z_en_si.h @@ -2,11 +2,11 @@ #define Z_EN_SI_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnSi; -typedef void (*EnSiActionFunc)(struct EnSi*, PlayState*); +typedef void (*EnSiActionFunc)(struct EnSi*, struct PlayState*); typedef struct EnSi { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Siofuki/z_en_siofuki.c b/src/overlays/actors/ovl_En_Siofuki/z_en_siofuki.c index 1a1093f229..ecdab8d5b2 100644 --- a/src/overlays/actors/ovl_En_Siofuki/z_en_siofuki.c +++ b/src/overlays/actors/ovl_En_Siofuki/z_en_siofuki.c @@ -5,6 +5,20 @@ */ #include "z_en_siofuki.h" + +#include "libc64/math64.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_siofuki/object_siofuki.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Siofuki/z_en_siofuki.h b/src/overlays/actors/ovl_En_Siofuki/z_en_siofuki.h index 23074bfac1..56a08bff6f 100644 --- a/src/overlays/actors/ovl_En_Siofuki/z_en_siofuki.h +++ b/src/overlays/actors/ovl_En_Siofuki/z_en_siofuki.h @@ -2,7 +2,7 @@ #define Z_EN_SIOFUKI_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" typedef enum EnSiofukiType { /* 0x00 */ EN_SIOFUKI_RAISING, @@ -11,7 +11,7 @@ typedef enum EnSiofukiType { struct EnSiofuki; -typedef void (*EnSiofukiActionFunc)(struct EnSiofuki*, PlayState*); +typedef void (*EnSiofukiActionFunc)(struct EnSiofuki*, struct PlayState*); typedef struct EnSiofuki { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_En_Skb/z_en_skb.c b/src/overlays/actors/ovl_En_Skb/z_en_skb.c index 1a61fcfb9d..52e521df9c 100644 --- a/src/overlays/actors/ovl_En_Skb/z_en_skb.c +++ b/src/overlays/actors/ovl_En_Skb/z_en_skb.c @@ -6,6 +6,21 @@ #include "z_en_skb.h" #include "overlays/actors/ovl_En_Encount1/z_en_encount1.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "sfx.h" +#include "sys_math.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_skb/object_skb.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED) @@ -168,7 +183,7 @@ void EnSkb_Init(Actor* thisx, PlayState* play) { this->actor.naviEnemyId = NAVI_ENEMY_STALCHILD; Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderItem); + Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderElements); Actor_SetScale(&this->actor, ((this->actor.params * 0.1f) + 1.0f) * 0.01f); this->collider.elements[0].dim.modelSphere.radius = this->collider.elements[0].dim.worldSphere.radius = diff --git a/src/overlays/actors/ovl_En_Skb/z_en_skb.h b/src/overlays/actors/ovl_En_Skb/z_en_skb.h index 216b5848cc..dd96d9e16e 100644 --- a/src/overlays/actors/ovl_En_Skb/z_en_skb.h +++ b/src/overlays/actors/ovl_En_Skb/z_en_skb.h @@ -2,11 +2,11 @@ #define Z_EN_SKB_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnSkb; -typedef void (*EnSkbActionFunc)(struct EnSkb*, PlayState*); +typedef void (*EnSkbActionFunc)(struct EnSkb*, struct PlayState*); typedef struct EnSkb { /* 0x0000 */ Actor actor; @@ -21,7 +21,7 @@ typedef struct EnSkb { /* 0x0288 */ s16 headlessYawOffset; /* 0x028C */ BodyBreak bodyBreak; /* 0x02A4 */ ColliderJntSph collider; - /* 0x02C4 */ ColliderJntSphElement colliderItem[2]; + /* 0x02C4 */ ColliderJntSphElement colliderElements[2]; } EnSkb; // size = 0x0344 #endif diff --git a/src/overlays/actors/ovl_En_Skj/z_en_skj.c b/src/overlays/actors/ovl_En_Skj/z_en_skj.c index 2c576afbcb..c5024ec78f 100644 --- a/src/overlays/actors/ovl_En_Skj/z_en_skj.c +++ b/src/overlays/actors/ovl_En_Skj/z_en_skj.c @@ -1,5 +1,25 @@ #include "z_en_skj.h" #include "overlays/actors/ovl_En_Skjneedle/z_en_skjneedle.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "regs.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64debug_display.h" +#include "z64face_reaction.h" +#include "z64ocarina.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_skj/object_skj.h" #define FLAGS \ diff --git a/src/overlays/actors/ovl_En_Skj/z_en_skj.h b/src/overlays/actors/ovl_En_Skj/z_en_skj.h index dc0f97cc92..1d49c81c42 100644 --- a/src/overlays/actors/ovl_En_Skj/z_en_skj.h +++ b/src/overlays/actors/ovl_En_Skj/z_en_skj.h @@ -2,11 +2,11 @@ #define Z_EN_SKJ_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnSkj; -typedef void (*EnSkjActionFunc)(struct EnSkj*, PlayState*); +typedef void (*EnSkjActionFunc)(struct EnSkj*, struct PlayState*); typedef struct EnSkj { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Skjneedle/z_en_skjneedle.c b/src/overlays/actors/ovl_En_Skjneedle/z_en_skjneedle.c index 0804263355..91e9273054 100644 --- a/src/overlays/actors/ovl_En_Skjneedle/z_en_skjneedle.c +++ b/src/overlays/actors/ovl_En_Skjneedle/z_en_skjneedle.c @@ -5,6 +5,13 @@ */ #include "z_en_skjneedle.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sys_matrix.h" +#include "z64play.h" + #include "assets/objects/object_skj/object_skj.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_HOOKSHOT_PULLS_ACTOR) diff --git a/src/overlays/actors/ovl_En_Skjneedle/z_en_skjneedle.h b/src/overlays/actors/ovl_En_Skjneedle/z_en_skjneedle.h index 1c4f444946..08ec8f4639 100644 --- a/src/overlays/actors/ovl_En_Skjneedle/z_en_skjneedle.h +++ b/src/overlays/actors/ovl_En_Skjneedle/z_en_skjneedle.h @@ -2,7 +2,7 @@ #define Z_EN_SKJNEEDLE_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnSkjneedle; 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 09b9df91c1..46c4d7559a 100644 --- a/src/overlays/actors/ovl_En_Ssh/z_en_ssh.c +++ b/src/overlays/actors/ovl_En_Ssh/z_en_ssh.c @@ -1,4 +1,16 @@ #include "z_en_ssh.h" + +#include "gfx.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64face_reaction.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_ssh/object_ssh.h" #define FLAGS \ @@ -198,25 +210,25 @@ void EnSsh_InitColliders(EnSsh* this, PlayState* play) { s32 pad; for (i = 0; i < ARRAY_COUNT(cylinders); i++) { - Collider_InitCylinder(play, &this->colCylinder[i]); - Collider_SetCylinder(play, &this->colCylinder[i], &this->actor, cylinders[i]); + Collider_InitCylinder(play, &this->colliderCylinders[i]); + Collider_SetCylinder(play, &this->colliderCylinders[i], &this->actor, cylinders[i]); } - this->colCylinder[0].elem.acDmgInfo.dmgFlags = + this->colliderCylinders[0].elem.acDmgInfo.dmgFlags = DMG_ARROW | DMG_MAGIC_FIRE | DMG_HOOKSHOT | DMG_HAMMER_SWING | DMG_EXPLOSIVE | DMG_DEKU_NUT; - this->colCylinder[1].elem.acDmgInfo.dmgFlags = + this->colliderCylinders[1].elem.acDmgInfo.dmgFlags = DMG_DEFAULT & ~(DMG_ARROW | DMG_MAGIC_FIRE | DMG_HOOKSHOT | DMG_HAMMER_SWING | DMG_EXPLOSIVE | DMG_DEKU_NUT) & ~(DMG_MAGIC_LIGHT | DMG_MAGIC_ICE); - this->colCylinder[2].base.colMaterial = COL_MATERIAL_METAL; - this->colCylinder[2].elem.acElemFlags = ACELEM_ON | ACELEM_HOOKABLE | ACELEM_NO_AT_INFO; - this->colCylinder[2].elem.elemMaterial = ELEM_MATERIAL_UNK2; - this->colCylinder[2].elem.acDmgInfo.dmgFlags = + this->colliderCylinders[2].base.colMaterial = COL_MATERIAL_METAL; + this->colliderCylinders[2].elem.acElemFlags = ACELEM_ON | ACELEM_HOOKABLE | ACELEM_NO_AT_INFO; + this->colliderCylinders[2].elem.elemMaterial = ELEM_MATERIAL_UNK2; + this->colliderCylinders[2].elem.acDmgInfo.dmgFlags = DMG_DEFAULT & ~(DMG_ARROW | DMG_MAGIC_FIRE | DMG_HOOKSHOT | DMG_HAMMER_SWING | DMG_EXPLOSIVE | DMG_DEKU_NUT); CollisionCheck_SetInfo2(&this->actor.colChkInfo, DamageTable_Get(2), &sColChkInfoInit); - Collider_InitJntSph(play, &this->colSph); - Collider_SetJntSph(play, &this->colSph, &this->actor, &sJntSphInit, this->colSphElements); + Collider_InitJntSph(play, &this->colliderJntSph); + Collider_SetJntSph(play, &this->colliderJntSph, &this->actor, &sJntSphInit, this->colliderJntSphElements); } f32 EnSsh_SetAnimation(EnSsh* this, s32 animIndex) { @@ -270,21 +282,21 @@ void EnSsh_SetColliderScale(EnSsh* this, f32 scale, f32 radiusMod) { f32 yShift; s32 i; - radius = this->colSph.elements[0].dim.modelSphere.radius; + radius = this->colliderJntSph.elements[0].dim.modelSphere.radius; radius *= scale; - this->colSph.elements[0].dim.modelSphere.radius = radius; + this->colliderJntSph.elements[0].dim.modelSphere.radius = radius; for (i = 0; i < 6; i++) { - yShift = this->colCylinder[i].dim.yShift; - radius = this->colCylinder[i].dim.radius; - height = this->colCylinder[i].dim.height; + yShift = this->colliderCylinders[i].dim.yShift; + radius = this->colliderCylinders[i].dim.radius; + height = this->colliderCylinders[i].dim.height; yShift *= scale; radius *= scale * radiusMod; height *= scale; - this->colCylinder[i].dim.yShift = yShift; - this->colCylinder[i].dim.radius = radius; - this->colCylinder[i].dim.height = height; + this->colliderCylinders[i].dim.yShift = yShift; + this->colliderCylinders[i].dim.radius = radius; + this->colliderCylinders[i].dim.height = height; } Actor_SetScale(&this->actor, 0.04f * scale); this->floorHeightOffset = 40.0f * scale; @@ -436,17 +448,17 @@ void EnSsh_Sway(EnSsh* this) { } void EnSsh_CheckBodyStickHit(EnSsh* this, PlayState* play) { - ColliderElement* elem = &this->colCylinder[0].elem; + ColliderElement* elem = &this->colliderCylinders[0].elem; Player* player = GET_PLAYER(play); if (player->unk_860 != 0) { elem->acDmgInfo.dmgFlags |= DMG_DEKU_STICK; - this->colCylinder[1].elem.acDmgInfo.dmgFlags &= ~DMG_DEKU_STICK; - this->colCylinder[2].elem.acDmgInfo.dmgFlags &= ~DMG_DEKU_STICK; + this->colliderCylinders[1].elem.acDmgInfo.dmgFlags &= ~DMG_DEKU_STICK; + this->colliderCylinders[2].elem.acDmgInfo.dmgFlags &= ~DMG_DEKU_STICK; } else { elem->acDmgInfo.dmgFlags &= ~DMG_DEKU_STICK; - this->colCylinder[1].elem.acDmgInfo.dmgFlags |= DMG_DEKU_STICK; - this->colCylinder[2].elem.acDmgInfo.dmgFlags |= DMG_DEKU_STICK; + this->colliderCylinders[1].elem.acDmgInfo.dmgFlags |= DMG_DEKU_STICK; + this->colliderCylinders[2].elem.acDmgInfo.dmgFlags |= DMG_DEKU_STICK; } } @@ -458,8 +470,8 @@ s32 EnSsh_CheckHitPlayer(EnSsh* this, PlayState* play) { return false; } for (i = 0; i < 3; i++) { - if (this->colCylinder[i + 3].base.ocFlags2 & OC2_HIT_PLAYER) { - this->colCylinder[i + 3].base.ocFlags2 &= ~OC2_HIT_PLAYER; + if (this->colliderCylinders[i + 3].base.ocFlags2 & OC2_HIT_PLAYER) { + this->colliderCylinders[i + 3].base.ocFlags2 &= ~OC2_HIT_PLAYER; hit = true; } } @@ -481,13 +493,13 @@ s32 EnSsh_CheckHitPlayer(EnSsh* this, PlayState* play) { s32 EnSsh_CheckHitFront(EnSsh* this) { u32 acFlags; - if (this->colCylinder[2].base.acFlags) {} // Needed for matching - acFlags = this->colCylinder[2].base.acFlags; + if (this->colliderCylinders[2].base.acFlags) {} // Needed for matching + acFlags = this->colliderCylinders[2].base.acFlags; if (!!(acFlags & AC_HIT) == 0) { return 0; } else { - this->colCylinder[2].base.acFlags &= ~AC_HIT; + this->colliderCylinders[2].base.acFlags &= ~AC_HIT; this->invincibilityTimer = 8; if ((this->swayTimer == 0) && (this->hitTimer == 0) && (this->stunTimer == 0)) { this->swayTimer = 60; @@ -497,14 +509,14 @@ s32 EnSsh_CheckHitFront(EnSsh* this) { } s32 EnSsh_CheckHitBack(EnSsh* this, PlayState* play) { - ColliderCylinder* cyl = &this->colCylinder[0]; + ColliderCylinder* cyl = &this->colliderCylinders[0]; s32 hit = false; if (cyl->base.acFlags & AC_HIT) { cyl->base.acFlags &= ~AC_HIT; hit = true; } - cyl = &this->colCylinder[1]; + cyl = &this->colliderCylinders[1]; if (cyl->base.acFlags & AC_HIT) { cyl->base.acFlags &= ~AC_HIT; hit = true; @@ -547,19 +559,19 @@ s32 EnSsh_CollisionCheck(EnSsh* this, PlayState* play) { } void EnSsh_SetBodyCylinderAC(EnSsh* this, PlayState* play) { - Collider_UpdateCylinder(&this->actor, &this->colCylinder[0]); - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colCylinder[0].base); + Collider_UpdateCylinder(&this->actor, &this->colliderCylinders[0]); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderCylinders[0].base); } void EnSsh_SetLegsCylinderAC(EnSsh* this, PlayState* play) { s16 angleTowardsLink = ABS((s16)(this->actor.yawTowardsPlayer - this->actor.shape.rot.y)); if (angleTowardsLink < 90 * (0x10000 / 360)) { - Collider_UpdateCylinder(&this->actor, &this->colCylinder[2]); - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colCylinder[2].base); + Collider_UpdateCylinder(&this->actor, &this->colliderCylinders[2]); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderCylinders[2].base); } else { - Collider_UpdateCylinder(&this->actor, &this->colCylinder[1]); - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colCylinder[1].base); + Collider_UpdateCylinder(&this->actor, &this->colliderCylinders[1]); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderCylinders[1].base); } } @@ -582,18 +594,18 @@ s32 EnSsh_SetCylinderOC(EnSsh* this, PlayState* play) { Matrix_RotateY(BINANG_TO_RAD_ALT(this->initialYaw), MTXMODE_APPLY); Matrix_MultVec3f(&cyloffsets[i], &cylPos); Matrix_Pop(); - this->colCylinder[i + 3].dim.pos.x = cylPos.x; - this->colCylinder[i + 3].dim.pos.y = cylPos.y; - this->colCylinder[i + 3].dim.pos.z = cylPos.z; - CollisionCheck_SetOC(play, &play->colChkCtx, &this->colCylinder[i + 3].base); + this->colliderCylinders[i + 3].dim.pos.x = cylPos.x; + this->colliderCylinders[i + 3].dim.pos.y = cylPos.y; + this->colliderCylinders[i + 3].dim.pos.z = cylPos.z; + CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderCylinders[i + 3].base); } return 1; } void EnSsh_SetColliders(EnSsh* this, PlayState* play) { if (this->actor.colChkInfo.health == 0) { - CollisionCheck_SetAT(play, &play->colChkCtx, &this->colSph.base); - CollisionCheck_SetOC(play, &play->colChkCtx, &this->colSph.base); + CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderJntSph.base); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderJntSph.base); } else { if (this->hitTimer == 0) { EnSsh_SetCylinderOC(this, play); @@ -645,9 +657,9 @@ void EnSsh_Destroy(Actor* thisx, PlayState* play) { Effect_Delete(play, this->blureIdx); for (i = 0; i < 6; i++) { - Collider_DestroyCylinder(play, &this->colCylinder[i]); + Collider_DestroyCylinder(play, &this->colliderCylinders[i]); } - Collider_DestroyJntSph(play, &this->colSph); + Collider_DestroyJntSph(play, &this->colliderJntSph); } void EnSsh_Wait(EnSsh* this, PlayState* play) { @@ -869,7 +881,7 @@ s32 EnSsh_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p void EnSsh_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx) { EnSsh* this = (EnSsh*)thisx; - Collider_UpdateSpheres(limbIndex, &this->colSph); + Collider_UpdateSpheres(limbIndex, &this->colliderJntSph); } void EnSsh_Draw(Actor* thisx, PlayState* play) { diff --git a/src/overlays/actors/ovl_En_Ssh/z_en_ssh.h b/src/overlays/actors/ovl_En_Ssh/z_en_ssh.h index 3060fb6fb7..741770cec5 100644 --- a/src/overlays/actors/ovl_En_Ssh/z_en_ssh.h +++ b/src/overlays/actors/ovl_En_Ssh/z_en_ssh.h @@ -2,11 +2,11 @@ #define Z_EN_SSH_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnSsh; -typedef void (*EnSshActionFunc)(struct EnSsh*, PlayState*); +typedef void (*EnSshActionFunc)(struct EnSsh*, struct PlayState*); typedef struct EnSsh { /* 0x0000 */ Actor actor; @@ -14,9 +14,9 @@ typedef struct EnSsh { /* 0x0190 */ Vec3s jointTable[30]; /* 0x0244 */ Vec3s morphTable[30]; /* 0x02F8 */ EnSshActionFunc actionFunc; - /* 0x02FC */ ColliderCylinder colCylinder[6]; - /* 0x04C4 */ ColliderJntSph colSph; - /* 0x04E4 */ ColliderJntSphElement colSphElements[1]; + /* 0x02FC */ ColliderCylinder colliderCylinders[6]; + /* 0x04C4 */ ColliderJntSph colliderJntSph; + /* 0x04E4 */ ColliderJntSphElement colliderJntSphElements[1]; /* 0x0524 */ s16 initialYaw; /* 0x0526 */ s16 maxTurnRate; /* 0x0528 */ s16 unkTimer; 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 d7b6a20e50..3b36545dba 100644 --- a/src/overlays/actors/ovl_En_St/z_en_st.c +++ b/src/overlays/actors/ovl_En_St/z_en_st.c @@ -5,6 +5,18 @@ */ #include "z_en_st.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_st/object_st.h" #define FLAGS \ @@ -283,58 +295,58 @@ void EnSt_InitColliders(EnSt* this, PlayState* play) { s32 pad; for (i = 0; i < ARRAY_COUNT(cylinders); i++) { - Collider_InitCylinder(play, &this->colCylinder[i]); - Collider_SetCylinder(play, &this->colCylinder[i], &this->actor, cylinders[i]); + Collider_InitCylinder(play, &this->colliderCylinders[i]); + Collider_SetCylinder(play, &this->colliderCylinders[i], &this->actor, cylinders[i]); } - this->colCylinder[0].elem.acDmgInfo.dmgFlags = + this->colliderCylinders[0].elem.acDmgInfo.dmgFlags = DMG_MAGIC_FIRE | DMG_ARROW | DMG_HOOKSHOT | DMG_HAMMER_SWING | DMG_BOOMERANG | DMG_EXPLOSIVE | DMG_DEKU_NUT; - this->colCylinder[1].elem.acDmgInfo.dmgFlags = + this->colliderCylinders[1].elem.acDmgInfo.dmgFlags = DMG_DEFAULT & ~(DMG_MAGIC_FIRE | DMG_ARROW | DMG_HOOKSHOT | DMG_HAMMER_SWING | DMG_BOOMERANG | DMG_EXPLOSIVE | DMG_DEKU_NUT) & ~(DMG_MAGIC_LIGHT | DMG_MAGIC_ICE); - this->colCylinder[2].base.colMaterial = COL_MATERIAL_METAL; - this->colCylinder[2].elem.acElemFlags = ACELEM_ON | ACELEM_HOOKABLE | ACELEM_NO_AT_INFO; - this->colCylinder[2].elem.elemMaterial = ELEM_MATERIAL_UNK2; - this->colCylinder[2].elem.acDmgInfo.dmgFlags = + this->colliderCylinders[2].base.colMaterial = COL_MATERIAL_METAL; + this->colliderCylinders[2].elem.acElemFlags = ACELEM_ON | ACELEM_HOOKABLE | ACELEM_NO_AT_INFO; + this->colliderCylinders[2].elem.elemMaterial = ELEM_MATERIAL_UNK2; + this->colliderCylinders[2].elem.acDmgInfo.dmgFlags = DMG_DEFAULT & ~(DMG_MAGIC_FIRE | DMG_ARROW | DMG_HOOKSHOT | DMG_HAMMER_SWING | DMG_BOOMERANG | DMG_EXPLOSIVE | DMG_DEKU_NUT); CollisionCheck_SetInfo2(&this->actor.colChkInfo, DamageTable_Get(2), &sColChkInit); - Collider_InitJntSph(play, &this->colSph); - Collider_SetJntSph(play, &this->colSph, &this->actor, &sJntSphInit, this->colSphItems); + Collider_InitJntSph(play, &this->colliderJntSph); + Collider_SetJntSph(play, &this->colliderJntSph, &this->actor, &sJntSphInit, this->colliderJntSphElements); } void EnSt_CheckBodyStickHit(EnSt* this, PlayState* play) { - ColliderElement* bodyElem = &this->colCylinder[0].elem; + ColliderElement* bodyElem = &this->colliderCylinders[0].elem; Player* player = GET_PLAYER(play); if (player->unk_860 != 0) { bodyElem->acDmgInfo.dmgFlags |= DMG_DEKU_STICK; - this->colCylinder[1].elem.acDmgInfo.dmgFlags &= ~DMG_DEKU_STICK; - this->colCylinder[2].elem.acDmgInfo.dmgFlags &= ~DMG_DEKU_STICK; + this->colliderCylinders[1].elem.acDmgInfo.dmgFlags &= ~DMG_DEKU_STICK; + this->colliderCylinders[2].elem.acDmgInfo.dmgFlags &= ~DMG_DEKU_STICK; } else { bodyElem->acDmgInfo.dmgFlags &= ~DMG_DEKU_STICK; - this->colCylinder[1].elem.acDmgInfo.dmgFlags |= DMG_DEKU_STICK; - this->colCylinder[2].elem.acDmgInfo.dmgFlags |= DMG_DEKU_STICK; + this->colliderCylinders[1].elem.acDmgInfo.dmgFlags |= DMG_DEKU_STICK; + this->colliderCylinders[2].elem.acDmgInfo.dmgFlags |= DMG_DEKU_STICK; } } void EnSt_SetBodyCylinderAC(EnSt* this, PlayState* play) { - Collider_UpdateCylinder(&this->actor, &this->colCylinder[0]); - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colCylinder[0].base); + Collider_UpdateCylinder(&this->actor, &this->colliderCylinders[0]); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderCylinders[0].base); } void EnSt_SetLegsCylinderAC(EnSt* this, PlayState* play) { s16 angleTowardsLink = ABS((s16)(this->actor.yawTowardsPlayer - this->actor.shape.rot.y)); if (angleTowardsLink < 0x3FFC) { - Collider_UpdateCylinder(&this->actor, &this->colCylinder[2]); - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colCylinder[2].base); + Collider_UpdateCylinder(&this->actor, &this->colliderCylinders[2]); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderCylinders[2].base); } else { - Collider_UpdateCylinder(&this->actor, &this->colCylinder[1]); - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colCylinder[1].base); + Collider_UpdateCylinder(&this->actor, &this->colliderCylinders[1]); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderCylinders[1].base); } } @@ -357,10 +369,10 @@ s32 EnSt_SetCylinderOC(EnSt* this, PlayState* play) { Matrix_RotateY(BINANG_TO_RAD_ALT(this->initialYaw), MTXMODE_APPLY); Matrix_MultVec3f(&cyloffsets[i], &cylPos); Matrix_Pop(); - this->colCylinder[i + 3].dim.pos.x = cylPos.x; - this->colCylinder[i + 3].dim.pos.y = cylPos.y; - this->colCylinder[i + 3].dim.pos.z = cylPos.z; - CollisionCheck_SetOC(play, &play->colChkCtx, &this->colCylinder[i + 3].base); + this->colliderCylinders[i + 3].dim.pos.x = cylPos.x; + this->colliderCylinders[i + 3].dim.pos.y = cylPos.y; + this->colliderCylinders[i + 3].dim.pos.z = cylPos.z; + CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderCylinders[i + 3].base); } return true; @@ -388,10 +400,10 @@ s32 EnSt_CheckHitPlayer(EnSt* this, PlayState* play) { s32 i; for (i = 0, hit = 0; i < 3; i++) { - if (((this->colCylinder[i + 3].base.ocFlags2 & OC2_HIT_PLAYER) != 0) == 0) { + if (((this->colliderCylinders[i + 3].base.ocFlags2 & OC2_HIT_PLAYER) != 0) == 0) { continue; } - this->colCylinder[i + 3].base.ocFlags2 &= ~OC2_HIT_PLAYER; + this->colliderCylinders[i + 3].base.ocFlags2 &= ~OC2_HIT_PLAYER; hit = true; } @@ -411,13 +423,13 @@ s32 EnSt_CheckHitPlayer(EnSt* this, PlayState* play) { } s32 EnSt_CheckHitFrontside(EnSt* this) { - u8 acFlags = this->colCylinder[2].base.acFlags; + u8 acFlags = this->colliderCylinders[2].base.acFlags; if (!!(acFlags & AC_HIT) == 0) { // not hit return false; } else { - this->colCylinder[2].base.acFlags &= ~AC_HIT; + this->colliderCylinders[2].base.acFlags &= ~AC_HIT; this->invulnerableTimer = 8; this->playSwayFlag = 0; this->swayTimer = 60; @@ -426,7 +438,7 @@ s32 EnSt_CheckHitFrontside(EnSt* this) { } s32 EnSt_CheckHitBackside(EnSt* this, PlayState* play) { - ColliderCylinder* cyl = &this->colCylinder[0]; + ColliderCylinder* cyl = &this->colliderCylinders[0]; s32 flags = 0; // damage flags from colliders 0 and 1 s32 hit = false; @@ -436,7 +448,7 @@ s32 EnSt_CheckHitBackside(EnSt* this, PlayState* play) { flags |= cyl->elem.acHitElem->atDmgInfo.dmgFlags; } - cyl = &this->colCylinder[1]; + cyl = &this->colliderCylinders[1]; if (cyl->base.acFlags & AC_HIT) { cyl->base.acFlags &= ~AC_HIT; hit = true; @@ -521,21 +533,21 @@ void EnSt_SetColliderScale(EnSt* this) { scaleAmount = 1.4f; } - radius = this->colSph.elements[0].dim.modelSphere.radius; + radius = this->colliderJntSph.elements[0].dim.modelSphere.radius; radius *= scaleAmount; - this->colSph.elements[0].dim.modelSphere.radius = radius; + this->colliderJntSph.elements[0].dim.modelSphere.radius = radius; for (i = 0; i < 6; i++) { - yShift = this->colCylinder[i].dim.yShift; - radius = this->colCylinder[i].dim.radius; - height = this->colCylinder[i].dim.height; + yShift = this->colliderCylinders[i].dim.yShift; + radius = this->colliderCylinders[i].dim.radius; + height = this->colliderCylinders[i].dim.height; yShift *= scaleAmount; radius *= scaleAmount; height *= scaleAmount; - this->colCylinder[i].dim.yShift = yShift; - this->colCylinder[i].dim.radius = radius; - this->colCylinder[i].dim.height = height; + this->colliderCylinders[i].dim.yShift = yShift; + this->colliderCylinders[i].dim.radius = radius; + this->colliderCylinders[i].dim.height = height; } Actor_SetScale(&this->actor, 0.04f * scaleAmount); this->colliderScale = scaleAmount; @@ -816,9 +828,9 @@ void EnSt_Destroy(Actor* thisx, PlayState* play) { Effect_Delete(play, this->blureIdx); for (i = 0; i < 6; i++) { - Collider_DestroyCylinder(play, &this->colCylinder[i]); + Collider_DestroyCylinder(play, &this->colliderCylinders[i]); } - Collider_DestroyJntSph(play, &this->colSph); + Collider_DestroyJntSph(play, &this->colliderJntSph); } void EnSt_WaitOnCeiling(EnSt* this, PlayState* play) { @@ -1085,7 +1097,7 @@ s32 EnSt_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dListP, Vec3f* p void EnSt_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dListP, Vec3s* rot, void* thisx) { EnSt* this = (EnSt*)thisx; - Collider_UpdateSpheres(limbIndex, &this->colSph); + Collider_UpdateSpheres(limbIndex, &this->colliderJntSph); } void EnSt_Draw(Actor* thisx, PlayState* play) { diff --git a/src/overlays/actors/ovl_En_St/z_en_st.h b/src/overlays/actors/ovl_En_St/z_en_st.h index 4200ca0d32..08e9e8bd8d 100644 --- a/src/overlays/actors/ovl_En_St/z_en_st.h +++ b/src/overlays/actors/ovl_En_St/z_en_st.h @@ -2,19 +2,19 @@ #define Z_EN_ST_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnSt; -typedef void (*EnStActionFunc)(struct EnSt* this, PlayState* play); +typedef void (*EnStActionFunc)(struct EnSt* this, struct PlayState* play); typedef struct EnSt { /* 0x0000 */ Actor actor; /* 0x014C */ SkelAnime skelAnime; /* 0x0190 */ EnStActionFunc actionFunc; - /* 0x0194 */ ColliderCylinder colCylinder[6]; - /* 0x035C */ ColliderJntSph colSph; - /* 0x037C */ ColliderJntSphElement colSphItems[1]; + /* 0x0194 */ ColliderCylinder colliderCylinders[6]; + /* 0x035C */ ColliderJntSph colliderJntSph; + /* 0x037C */ ColliderJntSphElement colliderJntSphElements[1]; /* 0x03BC */ s16 initialYaw; /* 0x03BE */ s16 deathYawTarget; /* 0x03C0 */ s16 groundBounces; 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 ac10651812..2535b03254 100644 --- a/src/overlays/actors/ovl_En_Sth/z_en_sth.c +++ b/src/overlays/actors/ovl_En_Sth/z_en_sth.c @@ -4,8 +4,17 @@ * Description: Uncursed House of Skulltula People */ -#include "terminal.h" #include "z_en_sth.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sys_matrix.h" +#include "terminal.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_ahg/object_ahg.h" #include "assets/objects/object_boj/object_boj.h" diff --git a/src/overlays/actors/ovl_En_Sth/z_en_sth.h b/src/overlays/actors/ovl_En_Sth/z_en_sth.h index 9408c542dd..a135fea2aa 100644 --- a/src/overlays/actors/ovl_En_Sth/z_en_sth.h +++ b/src/overlays/actors/ovl_En_Sth/z_en_sth.h @@ -2,11 +2,11 @@ #define Z_EN_STH_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnSth; -typedef void (*EnSthActionFunc)(struct EnSth*, PlayState*); +typedef void (*EnSthActionFunc)(struct EnSth*, struct PlayState*); typedef struct EnSth { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Stream/z_en_stream.c b/src/overlays/actors/ovl_En_Stream/z_en_stream.c index dc73048393..118328e793 100644 --- a/src/overlays/actors/ovl_En_Stream/z_en_stream.c +++ b/src/overlays/actors/ovl_En_Stream/z_en_stream.c @@ -5,6 +5,17 @@ */ #include "z_en_stream.h" + +#include "libc64/math64.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_stream/object_stream.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_En_Stream/z_en_stream.h b/src/overlays/actors/ovl_En_Stream/z_en_stream.h index 199d1c6797..0a21d54d84 100644 --- a/src/overlays/actors/ovl_En_Stream/z_en_stream.h +++ b/src/overlays/actors/ovl_En_Stream/z_en_stream.h @@ -2,11 +2,11 @@ #define Z_EN_STREAM_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnStream; -typedef void (*EnStreamActionFunc)(struct EnStream*, PlayState*); +typedef void (*EnStreamActionFunc)(struct EnStream*, struct PlayState*); typedef struct EnStream { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Sw/z_en_sw.c b/src/overlays/actors/ovl_En_Sw/z_en_sw.c index b9b6b47c94..8e10154c10 100644 --- a/src/overlays/actors/ovl_En_Sw/z_en_sw.c +++ b/src/overlays/actors/ovl_En_Sw/z_en_sw.c @@ -1,4 +1,20 @@ #include "z_en_sw.h" + +#include "libc64/math64.h" +#include "libc64/qrand.h" +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sfx.h" +#include "sys_math3d.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_st/object_st.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED) @@ -32,7 +48,7 @@ ActorProfile En_Sw_Profile = { /**/ EnSw_Draw, }; -static ColliderJntSphElementInit sJntSphItemsInit[1] = { +static ColliderJntSphElementInit sJntSphElementsInit[1] = { { { ELEM_MATERIAL_UNK0, { 0xFFCFFFFF, 0x00, 0x08 }, { 0xFFC3FFFE, 0x00, 0x00 }, 0x01, 0x05, 0x01 }, { 2, { { 0, -300, 0 }, 21 }, 100 }, @@ -42,7 +58,7 @@ static ColliderJntSphElementInit sJntSphItemsInit[1] = { static ColliderJntSphInit sJntSphInit = { { COL_MATERIAL_HIT6, 0x11, 0x09, 0x39, 0x10, COLSHAPE_JNTSPH }, 1, - sJntSphItemsInit, + sJntSphElementsInit, }; static CollisionCheckInfoInit2 D_80B0F074 = { 1, 2, 25, 25, MASS_IMMOVABLE }; @@ -240,7 +256,7 @@ void EnSw_Init(Actor* thisx, PlayState* play) { Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENSW_ANIM_0); ActorShape_Init(&thisx->shape, 0.0f, NULL, 0.0f); Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->sphs); + Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderElements); CollisionCheck_SetInfo2(&this->actor.colChkInfo, DamageTable_Get(0xE), &D_80B0F074); this->actor.scale.x = 0.02f; diff --git a/src/overlays/actors/ovl_En_Sw/z_en_sw.h b/src/overlays/actors/ovl_En_Sw/z_en_sw.h index c766e9f9e9..fe68092667 100644 --- a/src/overlays/actors/ovl_En_Sw/z_en_sw.h +++ b/src/overlays/actors/ovl_En_Sw/z_en_sw.h @@ -2,18 +2,18 @@ #define Z_EN_SW_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnSw; -typedef void (*EnSwActionFunc)(struct EnSw* this, PlayState* play); +typedef void (*EnSwActionFunc)(struct EnSw* this, struct PlayState* play); typedef struct EnSw { /* 0x0000 */ Actor actor; /* 0x014C */ SkelAnime skelAnime; /* 0x0190 */ EnSwActionFunc actionFunc; /* 0x0194 */ ColliderJntSph collider; - /* 0x01B4 */ ColliderJntSphElement sphs[1]; + /* 0x01B4 */ ColliderJntSphElement colliderElements[1]; /* 0x01F4 */ Color_RGBA8 unk_1F4; /* 0x01F8 */ Vec3s jointTable[30]; /* 0x02AC */ Vec3s morphTable[30]; @@ -34,7 +34,7 @@ typedef struct EnSw { /* 0x0420 */ f32 unk_420; /* 0x0424 */ char unk_424[0x8]; /* 0x042C */ u8 unk_42C; - /* 0x0430 */ CollisionPoly* unk_430; + /* 0x0430 */ struct CollisionPoly* unk_430; /* 0x0434 */ Vec3f unk_434; /* 0x0440 */ s16 unk_440; /* 0x0442 */ s16 unk_442; 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 ed7d99541f..993e6bdbf0 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 @@ -1,9 +1,18 @@ #include "z_en_syateki_itm.h" -#include "terminal.h" #include "overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.h" #include "overlays/actors/ovl_En_Ex_Ruppy/z_en_ex_ruppy.h" #include "overlays/actors/ovl_En_G_Switch/z_en_g_switch.h" +#include "rand.h" +#include "regs.h" +#include "sfx.h" +#include "terminal.h" +#include "z_lib.h" +#include "z64debug_display.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED typedef enum EnSyatekItemRound { diff --git a/src/overlays/actors/ovl_En_Syateki_Itm/z_en_syateki_itm.h b/src/overlays/actors/ovl_En_Syateki_Itm/z_en_syateki_itm.h index c670208bec..46f54b7c79 100644 --- a/src/overlays/actors/ovl_En_Syateki_Itm/z_en_syateki_itm.h +++ b/src/overlays/actors/ovl_En_Syateki_Itm/z_en_syateki_itm.h @@ -2,11 +2,11 @@ #define Z_EN_SYATEKI_ITM_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnSyatekiItm; -typedef void (*EnSyatekiItmActionFunc)(struct EnSyatekiItm*, PlayState*); +typedef void (*EnSyatekiItmActionFunc)(struct EnSyatekiItm*, struct PlayState*); typedef enum EnSyatekiSignal { /* 0 */ ENSYATEKI_NONE, 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 5575182fe6..3ddfb5d78f 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 @@ -1,6 +1,18 @@ #include "z_en_syateki_man.h" -#include "terminal.h" #include "overlays/actors/ovl_En_Syateki_Itm/z_en_syateki_itm.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "one_point_cutscene.h" +#include "regs.h" +#include "seqcmd.h" +#include "sequence.h" +#include "terminal.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_ossan/object_ossan.h" #define FLAGS \ diff --git a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.h b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.h index eea46817ff..306c33104f 100644 --- a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.h +++ b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.h @@ -2,11 +2,11 @@ #define Z_EN_SYATEKI_MAN_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnSyatekiMan; -typedef void (*EnSyatekiManActionFunc) (struct EnSyatekiMan*, PlayState*); +typedef void (*EnSyatekiManActionFunc) (struct EnSyatekiMan*, struct PlayState*); typedef void (*EnSyatekiManOtherFunc) (struct EnSyatekiMan*); typedef struct EnSyatekiMan { 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 67d21f2311..01b9c77979 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 @@ -5,8 +5,22 @@ */ #include "z_en_syateki_niw.h" -#include "assets/objects/object_niw/object_niw.h" + +#include "libc64/math64.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/object_niw/object_niw.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_En_Syateki_Niw/z_en_syateki_niw.h b/src/overlays/actors/ovl_En_Syateki_Niw/z_en_syateki_niw.h index 0ec9b9914a..37db3e65fd 100644 --- a/src/overlays/actors/ovl_En_Syateki_Niw/z_en_syateki_niw.h +++ b/src/overlays/actors/ovl_En_Syateki_Niw/z_en_syateki_niw.h @@ -2,11 +2,11 @@ #define Z_EN_SYATEKI_NIW_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnSyatekiNiw; -typedef void (*EnSyatekiNiwActionFunc)(struct EnSyatekiNiw*, PlayState*); +typedef void (*EnSyatekiNiwActionFunc)(struct EnSyatekiNiw*, struct PlayState*); typedef struct EnSyatekiNiwEffect { /* 0x00 */ u8 state; 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 bea60cf889..7e13bf3679 100644 --- a/src/overlays/actors/ovl_En_Ta/z_en_ta.c +++ b/src/overlays/actors/ovl_En_Ta/z_en_ta.c @@ -5,7 +5,26 @@ */ #include "z_en_ta.h" +#include "overlays/actors/ovl_En_Niw/z_en_niw.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "one_point_cutscene.h" +#include "rand.h" +#include "segmented_address.h" +#include "seqcmd.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64face_reaction.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_ta/object_ta.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) diff --git a/src/overlays/actors/ovl_En_Ta/z_en_ta.h b/src/overlays/actors/ovl_En_Ta/z_en_ta.h index eeab7dc775..d230c2b757 100644 --- a/src/overlays/actors/ovl_En_Ta/z_en_ta.h +++ b/src/overlays/actors/ovl_En_Ta/z_en_ta.h @@ -2,13 +2,11 @@ #define Z_EN_TA_H #include "ultra64.h" -#include "global.h" - -#include "overlays/actors/ovl_En_Niw/z_en_niw.h" +#include "z64actor.h" struct EnTa; -typedef void (*EnTaActionFunc)(struct EnTa*, PlayState*); +typedef void (*EnTaActionFunc)(struct EnTa*, struct PlayState*); typedef void (*EnTaBlinkFunc)(struct EnTa*); typedef void (*EnTaAnimFunc)(struct EnTa*); @@ -50,7 +48,7 @@ typedef struct EnTa { /* 0x02B0 */ EnTaBlinkFunc blinkFunc; /* 0x02B4 */ s16 eyeIndex; /* 0x02B6 */ s16 blinkTimer; - /* 0x02B8 */ EnNiw* superCuccos[3]; + /* 0x02B8 */ struct EnNiw* superCuccos[3]; /* 0x02C4 */ s16 superCuccoTimers[3]; // This is used to time animations and actions for super-cuccos /* 0x02CA */ u8 lastFoundSuperCuccoIdx; /* 0x02CC */ s16 timer; 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 bcc60b5f1a..6370bef893 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 @@ -5,8 +5,16 @@ */ #include "z_en_takara_man.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "segmented_address.h" #include "terminal.h" #include "versions.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_ts/object_ts.h" #define FLAGS \ diff --git a/src/overlays/actors/ovl_En_Takara_Man/z_en_takara_man.h b/src/overlays/actors/ovl_En_Takara_Man/z_en_takara_man.h index 48898909bc..e7d51c4b07 100644 --- a/src/overlays/actors/ovl_En_Takara_Man/z_en_takara_man.h +++ b/src/overlays/actors/ovl_En_Takara_Man/z_en_takara_man.h @@ -2,11 +2,11 @@ #define Z_EN_TAKARA_MAN_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnTakaraMan; -typedef void (*EnTakaraManActionFunc)(struct EnTakaraMan*, PlayState*); +typedef void (*EnTakaraManActionFunc)(struct EnTakaraMan*, struct PlayState*); typedef struct EnTakaraMan { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Tana/z_en_tana.c b/src/overlays/actors/ovl_En_Tana/z_en_tana.c index 866329c2ab..28397c9c53 100644 --- a/src/overlays/actors/ovl_En_Tana/z_en_tana.c +++ b/src/overlays/actors/ovl_En_Tana/z_en_tana.c @@ -5,6 +5,13 @@ */ #include "z_en_tana.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sys_matrix.h" +#include "z64play.h" + #include "assets/objects/object_shop_dungen/object_shop_dungen.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) diff --git a/src/overlays/actors/ovl_En_Tana/z_en_tana.h b/src/overlays/actors/ovl_En_Tana/z_en_tana.h index 763d1303c6..1804bcd798 100644 --- a/src/overlays/actors/ovl_En_Tana/z_en_tana.h +++ b/src/overlays/actors/ovl_En_Tana/z_en_tana.h @@ -2,7 +2,7 @@ #define Z_EN_TANA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnTana; 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 13002ddc54..0f9a9aa228 100644 --- a/src/overlays/actors/ovl_En_Test/z_en_test.c +++ b/src/overlays/actors/ovl_En_Test/z_en_test.c @@ -5,6 +5,21 @@ */ #include "z_en_test.h" + +#include "libc64/qrand.h" +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_sk2/object_sk2.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Test/z_en_test.h b/src/overlays/actors/ovl_En_Test/z_en_test.h index 397682cd5a..030fcf740f 100644 --- a/src/overlays/actors/ovl_En_Test/z_en_test.h +++ b/src/overlays/actors/ovl_En_Test/z_en_test.h @@ -2,11 +2,11 @@ #define Z_EN_TEST_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnTest; -typedef void (*EnTestActionFunc)(struct EnTest*, PlayState*); +typedef void (*EnTestActionFunc)(struct EnTest*, struct PlayState*); typedef enum StalfosLimb { /* 0x00 */ STALFOS_LIMB_NONE, diff --git a/src/overlays/actors/ovl_En_Tg/z_en_tg.c b/src/overlays/actors/ovl_En_Tg/z_en_tg.c index 42f32f0eb7..1fc830181b 100644 --- a/src/overlays/actors/ovl_En_Tg/z_en_tg.c +++ b/src/overlays/actors/ovl_En_Tg/z_en_tg.c @@ -5,6 +5,12 @@ */ #include "z_en_tg.h" + +#include "gfx.h" +#include "sys_matrix.h" +#include "z64face_reaction.h" +#include "z64play.h" + #include "assets/objects/object_mu/object_mu.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) diff --git a/src/overlays/actors/ovl_En_Tg/z_en_tg.h b/src/overlays/actors/ovl_En_Tg/z_en_tg.h index 4571638d77..b4d9bfe063 100644 --- a/src/overlays/actors/ovl_En_Tg/z_en_tg.h +++ b/src/overlays/actors/ovl_En_Tg/z_en_tg.h @@ -2,11 +2,11 @@ #define Z_EN_TG_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnTg; -typedef void (*EnTgActionFunc)(struct EnTg*, PlayState*); +typedef void (*EnTgActionFunc)(struct EnTg*, struct PlayState*); typedef struct EnTg { /* 0x0000 */ Actor actor; 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 b253b7ea0b..e2f39597b5 100644 --- a/src/overlays/actors/ovl_En_Tite/z_en_tite.c +++ b/src/overlays/actors/ovl_En_Tite/z_en_tite.c @@ -7,7 +7,21 @@ #include "z_en_tite.h" #include "overlays/actors/ovl_En_Encount1/z_en_encount1.h" #include "overlays/effects/ovl_Effect_Ss_Dead_Sound/z_eff_ss_dead_sound.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_tite/object_tite.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED) @@ -191,7 +205,7 @@ void EnTite_Init(Actor* thisx, PlayState* play) { thisx->colChkInfo.health = 2; thisx->colChkInfo.mass = MASS_HEAVY; Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, thisx, &sJntSphInit, &this->colliderItem); + Collider_SetJntSph(play, &this->collider, thisx, &sJntSphInit, this->colliderElements); this->unk_2DC = UPDBGCHECKINFO_FLAG_0 | UPDBGCHECKINFO_FLAG_2 | UPDBGCHECKINFO_FLAG_3 | UPDBGCHECKINFO_FLAG_4; if (this->actor.params == TEKTITE_BLUE) { this->unk_2DC |= UPDBGCHECKINFO_FLAG_6; // Don't use the actor engine's ripple spawning code diff --git a/src/overlays/actors/ovl_En_Tite/z_en_tite.h b/src/overlays/actors/ovl_En_Tite/z_en_tite.h index a049cabaae..d4ec9ab8dd 100755 --- a/src/overlays/actors/ovl_En_Tite/z_en_tite.h +++ b/src/overlays/actors/ovl_En_Tite/z_en_tite.h @@ -2,11 +2,11 @@ #define Z_EN_TITE_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnTite; -typedef void (*EnTiteActionFunc)(struct EnTite*, PlayState*); +typedef void (*EnTiteActionFunc)(struct EnTite*, struct PlayState*); typedef enum EnTiteType { /* -2 */ TEKTITE_BLUE = -2, @@ -28,7 +28,7 @@ typedef struct EnTite { /* 0x02E3 */ u8 spawnIceTimer; /* 0x02E4 */ u8 damageEffect; /* 0x02E8 */ ColliderJntSph collider; - /* 0x0308 */ ColliderJntSphElement colliderItem; + /* 0x0308 */ ColliderJntSphElement colliderElements[1]; /* 0x0348 */ Vec3f frontLeftFootPos; /* 0x0354 */ Vec3f frontRightFootPos; /* 0x0360 */ Vec3f backRightFootPos; diff --git a/src/overlays/actors/ovl_En_Tk/z_en_tk.c b/src/overlays/actors/ovl_En_Tk/z_en_tk.c index 747b0085c6..c6b1b0906e 100644 --- a/src/overlays/actors/ovl_En_Tk/z_en_tk.c +++ b/src/overlays/actors/ovl_En_Tk/z_en_tk.c @@ -5,6 +5,21 @@ */ #include "z_en_tk.h" + +#include "libc64/math64.h" +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64face_reaction.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_tk/object_tk.h" diff --git a/src/overlays/actors/ovl_En_Tk/z_en_tk.h b/src/overlays/actors/ovl_En_Tk/z_en_tk.h index 208b4e81d7..2ce0b9ef87 100644 --- a/src/overlays/actors/ovl_En_Tk/z_en_tk.h +++ b/src/overlays/actors/ovl_En_Tk/z_en_tk.h @@ -2,8 +2,7 @@ #define Z_EN_TK_H #include "ultra64.h" -#include "global.h" -#include "z64.h" +#include "z64actor.h" /* Dirt particle effect */ struct EnTkEff; @@ -22,7 +21,7 @@ typedef struct EnTkEff { struct EnTk; -typedef void (*EnTkActionFunc)(struct EnTk*, PlayState*); +typedef void (*EnTkActionFunc)(struct EnTk*, struct PlayState*); typedef struct EnTk { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Torch/z_en_torch.c b/src/overlays/actors/ovl_En_Torch/z_en_torch.c index e60e16c0de..6e406c6bab 100644 --- a/src/overlays/actors/ovl_En_Torch/z_en_torch.c +++ b/src/overlays/actors/ovl_En_Torch/z_en_torch.c @@ -1,10 +1,14 @@ /* * File: z_en_torch.c * Overlay: ovl_En_Torch - * Description: Spawns a chest with the appropriate contents then unloads. Used in grottos. + * Description: Spawns a chest with the appropriate contents then dies. Used in grottos. */ #include "z_en_torch.h" +#include "overlays/actors/ovl_En_Box/z_en_box.h" + +#include "z64play.h" +#include "z64save.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_En_Torch/z_en_torch.h b/src/overlays/actors/ovl_En_Torch/z_en_torch.h index 78be1fb2dd..fc3e2dabac 100644 --- a/src/overlays/actors/ovl_En_Torch/z_en_torch.h +++ b/src/overlays/actors/ovl_En_Torch/z_en_torch.h @@ -2,7 +2,7 @@ #define Z_EN_TORCH_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnTorch; diff --git a/src/overlays/actors/ovl_En_Torch2/z_en_torch2.c b/src/overlays/actors/ovl_En_Torch2/z_en_torch2.c index 53243d29a8..a02e9bc3bb 100644 --- a/src/overlays/actors/ovl_En_Torch2/z_en_torch2.c +++ b/src/overlays/actors/ovl_En_Torch2/z_en_torch2.c @@ -5,8 +5,25 @@ */ #include "z_en_torch2.h" -#include "assets/objects/object_torch2/object_torch2.h" + +#include "libc64/qrand.h" +#include "libu64/pad.h" +#include "controller.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "sfx.h" +#include "sequence.h" #include "versions.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/object_torch2/object_torch2.h" #define FLAGS \ (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED | \ diff --git a/src/overlays/actors/ovl_En_Torch2/z_en_torch2.h b/src/overlays/actors/ovl_En_Torch2/z_en_torch2.h index d96b08527e..bb132bc91e 100644 --- a/src/overlays/actors/ovl_En_Torch2/z_en_torch2.h +++ b/src/overlays/actors/ovl_En_Torch2/z_en_torch2.h @@ -2,7 +2,7 @@ #define Z_EN_TORCH2_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" // Uses the Player struct (from z64player.h) diff --git a/src/overlays/actors/ovl_En_Toryo/z_en_toryo.c b/src/overlays/actors/ovl_En_Toryo/z_en_toryo.c index 5b31c32f84..2ac84162c6 100644 --- a/src/overlays/actors/ovl_En_Toryo/z_en_toryo.c +++ b/src/overlays/actors/ovl_En_Toryo/z_en_toryo.c @@ -5,6 +5,17 @@ */ #include "z_en_toryo.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64face_reaction.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_toryo/object_toryo.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) diff --git a/src/overlays/actors/ovl_En_Toryo/z_en_toryo.h b/src/overlays/actors/ovl_En_Toryo/z_en_toryo.h index 769ea637b9..f8d04e74ac 100644 --- a/src/overlays/actors/ovl_En_Toryo/z_en_toryo.h +++ b/src/overlays/actors/ovl_En_Toryo/z_en_toryo.h @@ -2,11 +2,11 @@ #define Z_EN_TORYO_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnToryo; -typedef void (*EnToryoActionFunc)(struct EnToryo* this, PlayState* play); +typedef void (*EnToryoActionFunc)(struct EnToryo* this, struct PlayState* play); typedef struct EnToryo { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Tp/z_en_tp.c b/src/overlays/actors/ovl_En_Tp/z_en_tp.c index 79500059b5..a1ce22995c 100644 --- a/src/overlays/actors/ovl_En_Tp/z_en_tp.c +++ b/src/overlays/actors/ovl_En_Tp/z_en_tp.c @@ -5,7 +5,23 @@ */ #include "z_en_tp.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_math.h" +#include "sys_matrix.h" #include "versions.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_tp/object_tp.h" #define FLAGS 0 @@ -145,7 +161,7 @@ void EnTp_Init(Actor* thisx, PlayState* play2) { now = this; this->alpha = 255; Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderItems); + Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderElements); if (this->actor.params <= TAILPASARAN_HEAD) { this->actor.naviEnemyId = NAVI_ENEMY_TAILPASARAN; diff --git a/src/overlays/actors/ovl_En_Tp/z_en_tp.h b/src/overlays/actors/ovl_En_Tp/z_en_tp.h index f878ab934a..71fdca8188 100644 --- a/src/overlays/actors/ovl_En_Tp/z_en_tp.h +++ b/src/overlays/actors/ovl_En_Tp/z_en_tp.h @@ -2,11 +2,11 @@ #define Z_EN_TP_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnTp; -typedef void (*EnTpActionFunc)(struct EnTp*, PlayState*); +typedef void (*EnTpActionFunc)(struct EnTp*, struct PlayState*); typedef struct EnTp { /* 0x0000 */ Actor actor; @@ -24,7 +24,7 @@ typedef struct EnTp { /* 0x016C */ f32 horizontalVariation; /* 0x0170 */ f32 extraHeightVariation; /* 0x0174 */ ColliderJntSph collider; - /* 0x0194 */ ColliderJntSphElement colliderItems[1]; + /* 0x0194 */ ColliderJntSphElement colliderElements[1]; /* 0x01D4 */ struct EnTp* head; } EnTp; // size = 0x01D8 diff --git a/src/overlays/actors/ovl_En_Tr/z_en_tr.c b/src/overlays/actors/ovl_En_Tr/z_en_tr.c index 6cd63e00f8..3f2672cde4 100644 --- a/src/overlays/actors/ovl_En_Tr/z_en_tr.c +++ b/src/overlays/actors/ovl_En_Tr/z_en_tr.c @@ -5,6 +5,18 @@ */ #include "z_en_tr.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_math.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_tr/object_tr.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_En_Tr/z_en_tr.h b/src/overlays/actors/ovl_En_Tr/z_en_tr.h index faf45d7400..091aa5c52f 100644 --- a/src/overlays/actors/ovl_En_Tr/z_en_tr.h +++ b/src/overlays/actors/ovl_En_Tr/z_en_tr.h @@ -2,11 +2,11 @@ #define Z_EN_TR_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnTr; -typedef void (*EnTrActionFunc)(struct EnTr*, PlayState*); +typedef void (*EnTrActionFunc)(struct EnTr*, struct PlayState*); typedef enum KotakeKoumeLimb { /* 0 */ KOTAKE_KOUME_LIMB_NONE, diff --git a/src/overlays/actors/ovl_En_Trap/z_en_trap.c b/src/overlays/actors/ovl_En_Trap/z_en_trap.c index 640332ecba..848e6701b0 100644 --- a/src/overlays/actors/ovl_En_Trap/z_en_trap.c +++ b/src/overlays/actors/ovl_En_Trap/z_en_trap.c @@ -5,6 +5,12 @@ */ #include "z_en_trap.h" + +#include "sfx.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/object_trap/object_trap.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_En_Trap/z_en_trap.h b/src/overlays/actors/ovl_En_Trap/z_en_trap.h index 6f69707aca..fcd62dd170 100644 --- a/src/overlays/actors/ovl_En_Trap/z_en_trap.h +++ b/src/overlays/actors/ovl_En_Trap/z_en_trap.h @@ -2,7 +2,7 @@ #define Z_EN_TRAP_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" // Different movement modes (set in params): #define SPIKETRAP_MODE_LINEAR 0x10 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 8db28db170..d9965bfe1f 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 @@ -5,9 +5,20 @@ */ #include "z_en_tubo_trap.h" -#include "assets/objects/gameplay_dangeon_keep/gameplay_dangeon_keep.h" #include "overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h" + +#include "libc64/qrand.h" +#include "regs.h" +#include "sfx.h" #include "terminal.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/objects/gameplay_dangeon_keep/gameplay_dangeon_keep.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_En_Tubo_Trap/z_en_tubo_trap.h b/src/overlays/actors/ovl_En_Tubo_Trap/z_en_tubo_trap.h index 17dc2f2054..3abe8b625a 100644 --- a/src/overlays/actors/ovl_En_Tubo_Trap/z_en_tubo_trap.h +++ b/src/overlays/actors/ovl_En_Tubo_Trap/z_en_tubo_trap.h @@ -2,11 +2,11 @@ #define Z_EN_TUBO_TRAP_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnTuboTrap; -typedef void (*EnTuboTrapActionFunc)(struct EnTuboTrap*, PlayState*); +typedef void (*EnTuboTrapActionFunc)(struct EnTuboTrap*, struct PlayState*); typedef struct EnTuboTrap { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Vali/z_en_vali.c b/src/overlays/actors/ovl_En_Vali/z_en_vali.c index fa83618611..011b004b68 100644 --- a/src/overlays/actors/ovl_En_Vali/z_en_vali.c +++ b/src/overlays/actors/ovl_En_Vali/z_en_vali.c @@ -5,6 +5,19 @@ */ #include "z_en_vali.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/object_vali/object_vali.h" #define FLAGS \ diff --git a/src/overlays/actors/ovl_En_Vali/z_en_vali.h b/src/overlays/actors/ovl_En_Vali/z_en_vali.h index c5df42825b..1a031d964b 100644 --- a/src/overlays/actors/ovl_En_Vali/z_en_vali.h +++ b/src/overlays/actors/ovl_En_Vali/z_en_vali.h @@ -2,11 +2,11 @@ #define Z_EN_VALI_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnVali; -typedef void (*EnValiActionFunc)(struct EnVali*, PlayState*); +typedef void (*EnValiActionFunc)(struct EnVali*, struct PlayState*); typedef enum EnValiLimb { /* 0x00 */ EN_VALI_LIMB_NONE, diff --git a/src/overlays/actors/ovl_En_Vase/z_en_vase.c b/src/overlays/actors/ovl_En_Vase/z_en_vase.c index 9861413414..30f8b32b18 100644 --- a/src/overlays/actors/ovl_En_Vase/z_en_vase.c +++ b/src/overlays/actors/ovl_En_Vase/z_en_vase.c @@ -5,6 +5,9 @@ */ #include "z_en_vase.h" + +#include "z64play.h" + #include "assets/objects/object_vase/object_vase.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_En_Vase/z_en_vase.h b/src/overlays/actors/ovl_En_Vase/z_en_vase.h index 57ee0d5779..04a8381e29 100644 --- a/src/overlays/actors/ovl_En_Vase/z_en_vase.h +++ b/src/overlays/actors/ovl_En_Vase/z_en_vase.h @@ -2,7 +2,7 @@ #define Z_EN_VASE_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnVase; diff --git a/src/overlays/actors/ovl_En_Vb_Ball/z_en_vb_ball.c b/src/overlays/actors/ovl_En_Vb_Ball/z_en_vb_ball.c index e31e9ca9a7..8791409d01 100644 --- a/src/overlays/actors/ovl_En_Vb_Ball/z_en_vb_ball.c +++ b/src/overlays/actors/ovl_En_Vb_Ball/z_en_vb_ball.c @@ -5,9 +5,21 @@ */ #include "z_en_vb_ball.h" +#include "overlays/actors/ovl_Boss_Fd/z_boss_fd.h" + +#include "libc64/math64.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_fd/object_fd.h" #include "assets/objects/gameplay_keep/gameplay_keep.h" -#include "overlays/actors/ovl_Boss_Fd/z_boss_fd.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Vb_Ball/z_en_vb_ball.h b/src/overlays/actors/ovl_En_Vb_Ball/z_en_vb_ball.h index 8675b440c4..e81bc1ac25 100644 --- a/src/overlays/actors/ovl_En_Vb_Ball/z_en_vb_ball.h +++ b/src/overlays/actors/ovl_En_Vb_Ball/z_en_vb_ball.h @@ -2,7 +2,7 @@ #define Z_EN_VB_BALL_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnVbBall; diff --git a/src/overlays/actors/ovl_En_Viewer/z_en_viewer.c b/src/overlays/actors/ovl_En_Viewer/z_en_viewer.c index c7a231c0a2..5db75cbfe2 100644 --- a/src/overlays/actors/ovl_En_Viewer/z_en_viewer.c +++ b/src/overlays/actors/ovl_En_Viewer/z_en_viewer.c @@ -7,6 +7,23 @@ #include "z_en_viewer.h" #include "overlays/actors/ovl_Boss_Ganon/z_boss_ganon.h" #include "overlays/actors/ovl_En_Ganon_Mant/z_en_ganon_mant.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "regs.h" +#include "segmented_address.h" +#include "seqcmd.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64play.h" +#include "z64save.h" +#include "z64skin.h" + #include "assets/objects/object_zl4/object_zl4.h" #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_horse_zelda/object_horse_zelda.h" diff --git a/src/overlays/actors/ovl_En_Viewer/z_en_viewer.h b/src/overlays/actors/ovl_En_Viewer/z_en_viewer.h index de2bf8ba27..a06435d553 100644 --- a/src/overlays/actors/ovl_En_Viewer/z_en_viewer.h +++ b/src/overlays/actors/ovl_En_Viewer/z_en_viewer.h @@ -2,13 +2,14 @@ #define Z_EN_VIEWER_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" +#include "z64skin.h" struct EnViewer; -typedef void (*EnViewerActionFunc)(struct EnViewer*, PlayState*); -typedef void (*EnViewerDrawFunc)(struct EnViewer*, PlayState*); -typedef void (*EnViewerInitAnimFunc)(struct EnViewer*, PlayState*, void*, AnimationHeader*); +typedef void (*EnViewerActionFunc)(struct EnViewer*, struct PlayState*); +typedef void (*EnViewerDrawFunc)(struct EnViewer*, struct PlayState*); +typedef void (*EnViewerInitAnimFunc)(struct EnViewer*, struct PlayState*, void*, AnimationHeader*); typedef enum EnViewerType { /* 0 */ ENVIEWER_TYPE_0_HORSE_ZELDA, diff --git a/src/overlays/actors/ovl_En_Vm/z_en_vm.c b/src/overlays/actors/ovl_En_Vm/z_en_vm.c index 9847d4fa8d..d5d2ec1b06 100644 --- a/src/overlays/actors/ovl_En_Vm/z_en_vm.c +++ b/src/overlays/actors/ovl_En_Vm/z_en_vm.c @@ -5,8 +5,22 @@ */ #include "z_en_vm.h" -#include "assets/objects/object_vm/object_vm.h" #include "overlays/actors/ovl_En_Bom/z_en_bom.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + +#include "assets/objects/object_vm/object_vm.h" #include "assets/objects/gameplay_keep/gameplay_keep.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_UPDATE_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Vm/z_en_vm.h b/src/overlays/actors/ovl_En_Vm/z_en_vm.h index 5b0fe1629e..7705d87032 100644 --- a/src/overlays/actors/ovl_En_Vm/z_en_vm.h +++ b/src/overlays/actors/ovl_En_Vm/z_en_vm.h @@ -2,11 +2,11 @@ #define Z_EN_VM_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnVm; -typedef void (*EnVmActionFunc)(struct EnVm*, PlayState*); +typedef void (*EnVmActionFunc)(struct EnVm*, struct PlayState*); typedef struct EnVm { /* 0x0000 */ Actor actor; 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 2824daa4cb..28411c959f 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 @@ -5,12 +5,20 @@ */ #include "z_en_wall_tubo.h" -#include "quake.h" -#include "terminal.h" #include "overlays/actors/ovl_En_Bom_Chu/z_en_bom_chu.h" #include "overlays/actors/ovl_Bg_Bowl_Wall/z_bg_bowl_wall.h" #include "overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.h" +#include "rand.h" +#include "regs.h" +#include "sfx.h" +#include "quake.h" +#include "terminal.h" +#include "z_lib.h" +#include "z64debug_display.h" +#include "z64effect.h" +#include "z64play.h" + #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED void EnWallTubo_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_En_Wall_Tubo/z_en_wall_tubo.h b/src/overlays/actors/ovl_En_Wall_Tubo/z_en_wall_tubo.h index 1e7eead00b..b2e9005372 100644 --- a/src/overlays/actors/ovl_En_Wall_Tubo/z_en_wall_tubo.h +++ b/src/overlays/actors/ovl_En_Wall_Tubo/z_en_wall_tubo.h @@ -2,12 +2,12 @@ #define Z_EN_WALL_TUBO_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" #include "overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.h" struct EnWallTubo; -typedef void (*EnWallTuboActionFunc)(struct EnWallTubo*, PlayState*); +typedef void (*EnWallTuboActionFunc)(struct EnWallTubo*, struct PlayState*); typedef struct EnWallTubo { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.c b/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.c index abbf3ecaa0..abb91c80b9 100644 --- a/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.c +++ b/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.c @@ -5,8 +5,22 @@ */ #include "z_en_wallmas.h" -#include "assets/objects/object_wallmaster/object_wallmaster.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" +#include "assets/objects/object_wallmaster/object_wallmaster.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.h b/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.h index c82df375dc..76ee52d9e0 100644 --- a/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.h +++ b/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.h @@ -2,7 +2,7 @@ #define Z_EN_WALLMAS_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" typedef enum WallmasType { /* 0x00 */ WMT_TIMER, @@ -12,7 +12,7 @@ typedef enum WallmasType { struct EnWallmas; -typedef void (*EnWallmasActionFunc)(struct EnWallmas*, PlayState*); +typedef void (*EnWallmasActionFunc)(struct EnWallmas*, struct PlayState*); typedef struct EnWallmas { /* 0x0000 */ Actor actor; 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 a7268efc97..85de2cd564 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 @@ -5,8 +5,15 @@ */ #include "z_en_weather_tag.h" + +#include "regs.h" #include "terminal.h" #include "versions.h" +#include "z_lib.h" +#include "z64debug_display.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.h b/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.h index ccfc0e3f67..52b617a0e7 100644 --- a/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.h +++ b/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.h @@ -2,11 +2,11 @@ #define Z_EN_WEATHER_TAG_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnWeatherTag; -typedef void (*EnWeatherTagActionFunc)(struct EnWeatherTag*, PlayState*); +typedef void (*EnWeatherTagActionFunc)(struct EnWeatherTag*, struct PlayState*); typedef struct EnWeatherTag { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Weiyer/z_en_weiyer.c b/src/overlays/actors/ovl_En_Weiyer/z_en_weiyer.c index 3d3387fcd2..2e19328961 100644 --- a/src/overlays/actors/ovl_En_Weiyer/z_en_weiyer.c +++ b/src/overlays/actors/ovl_En_Weiyer/z_en_weiyer.c @@ -5,6 +5,18 @@ */ #include "z_en_weiyer.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_ei/object_ei.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE) diff --git a/src/overlays/actors/ovl_En_Weiyer/z_en_weiyer.h b/src/overlays/actors/ovl_En_Weiyer/z_en_weiyer.h index fbaefbd9a5..ab1b81c34f 100644 --- a/src/overlays/actors/ovl_En_Weiyer/z_en_weiyer.h +++ b/src/overlays/actors/ovl_En_Weiyer/z_en_weiyer.h @@ -2,11 +2,11 @@ #define Z_EN_WEIYER_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnWeiyer; -typedef void (*EnWeiyerActionFunc)(struct EnWeiyer*, PlayState*); +typedef void (*EnWeiyerActionFunc)(struct EnWeiyer*, struct PlayState*); typedef struct EnWeiyer { /* 0x0000 */ Actor actor; 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 36aaac2344..95f1061d62 100644 --- a/src/overlays/actors/ovl_En_Wf/z_en_wf.c +++ b/src/overlays/actors/ovl_En_Wf/z_en_wf.c @@ -5,8 +5,25 @@ */ #include "z_en_wf.h" -#include "terminal.h" #include "overlays/actors/ovl_En_Encount1/z_en_encount1.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "segmented_address.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "terminal.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_wf/object_wf.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED) @@ -43,7 +60,7 @@ void EnWf_SetupDie(EnWf* this); void EnWf_Die(EnWf* this, PlayState* play); s32 EnWf_DodgeRanged(PlayState* play, EnWf* this); -static ColliderJntSphElementInit sJntSphItemsInit[4] = { +static ColliderJntSphElementInit sJntSphElementsInit[4] = { { { ELEM_MATERIAL_UNK0, @@ -99,8 +116,8 @@ static ColliderJntSphInit sJntSphInit = { OC2_TYPE_1, COLSHAPE_JNTSPH, }, - ARRAY_COUNT(sJntSphItemsInit), - sJntSphItemsInit, + ARRAY_COUNT(sJntSphElementsInit), + sJntSphElementsInit, }; static ColliderCylinderInit sBodyCylinderInit = { @@ -225,12 +242,12 @@ void EnWf_Init(Actor* thisx, PlayState* play) { this->eyeIndex = 0; this->unk_2F4 = 10.0f; // Set and not used - Collider_InitJntSph(play, &this->colliderSpheres); - Collider_SetJntSph(play, &this->colliderSpheres, thisx, &sJntSphInit, this->colliderSpheresElements); - Collider_InitCylinder(play, &this->colliderCylinderBody); - Collider_SetCylinder(play, &this->colliderCylinderBody, thisx, &sBodyCylinderInit); - Collider_InitCylinder(play, &this->colliderCylinderTail); - Collider_SetCylinder(play, &this->colliderCylinderTail, thisx, &sTailCylinderInit); + Collider_InitJntSph(play, &this->colliderJntSph); + Collider_SetJntSph(play, &this->colliderJntSph, thisx, &sJntSphInit, this->colliderJntSphElements); + Collider_InitCylinder(play, &this->bodyColliderCylinder); + Collider_SetCylinder(play, &this->bodyColliderCylinder, thisx, &sBodyCylinderInit); + Collider_InitCylinder(play, &this->tailColliderCylinder); + Collider_SetCylinder(play, &this->tailColliderCylinder, thisx, &sTailCylinderInit); if (thisx->params == WOLFOS_NORMAL) { SkelAnime_InitFlex(play, &this->skelAnime, &gWolfosNormalSkel, &gWolfosWaitingAnim, this->jointTable, @@ -241,8 +258,8 @@ void EnWf_Init(Actor* thisx, PlayState* play) { SkelAnime_InitFlex(play, &this->skelAnime, &gWolfosWhiteSkel, &gWolfosWaitingAnim, this->jointTable, this->morphTable, WOLFOS_LIMB_MAX); Actor_SetScale(thisx, 0.01f); - this->colliderSpheres.elements[0].base.atDmgInfo.damage = - this->colliderSpheres.elements[1].base.atDmgInfo.damage = 8; + this->colliderJntSph.elements[0].base.atDmgInfo.damage = + this->colliderJntSph.elements[1].base.atDmgInfo.damage = 8; thisx->naviEnemyId = NAVI_ENEMY_WHITE_WOLFOS; } @@ -256,9 +273,9 @@ void EnWf_Init(Actor* thisx, PlayState* play) { void EnWf_Destroy(Actor* thisx, PlayState* play) { EnWf* this = (EnWf*)thisx; - Collider_DestroyJntSph(play, &this->colliderSpheres); - Collider_DestroyCylinder(play, &this->colliderCylinderBody); - Collider_DestroyCylinder(play, &this->colliderCylinderTail); + Collider_DestroyJntSph(play, &this->colliderJntSph); + Collider_DestroyCylinder(play, &this->bodyColliderCylinder); + Collider_DestroyCylinder(play, &this->tailColliderCylinder); if ((this->actor.params != WOLFOS_NORMAL) && (this->switchFlag != 0xFF)) { func_800F5B58(); @@ -716,7 +733,7 @@ void EnWf_RunAroundPlayer(EnWf* this, PlayState* play) { void EnWf_SetupSlash(EnWf* this) { Animation_PlayOnce(&this->skelAnime, &gWolfosSlashingAnim); - this->colliderSpheres.base.atFlags &= ~AT_BOUNCED; + this->colliderJntSph.base.atFlags &= ~AT_BOUNCED; this->actor.shape.rot.y = this->actor.yawTowardsPlayer; this->action = WOLFOS_ACTION_SLASH; this->unk_2FA = 0; // Set and not used @@ -1246,27 +1263,27 @@ void func_80B36F40(EnWf* this, PlayState* play) { } void EnWf_UpdateDamage(EnWf* this, PlayState* play) { - if (this->colliderSpheres.base.acFlags & AC_BOUNCED) { - this->colliderSpheres.base.acFlags &= ~(AC_HIT | AC_BOUNCED); - this->colliderCylinderBody.base.acFlags &= ~AC_HIT; - this->colliderCylinderTail.base.acFlags &= ~AC_HIT; - } else if ((this->colliderCylinderBody.base.acFlags & AC_HIT) || - (this->colliderCylinderTail.base.acFlags & AC_HIT)) { + if (this->colliderJntSph.base.acFlags & AC_BOUNCED) { + this->colliderJntSph.base.acFlags &= ~(AC_HIT | AC_BOUNCED); + this->bodyColliderCylinder.base.acFlags &= ~AC_HIT; + this->tailColliderCylinder.base.acFlags &= ~AC_HIT; + } else if ((this->bodyColliderCylinder.base.acFlags & AC_HIT) || + (this->tailColliderCylinder.base.acFlags & AC_HIT)) { if (this->action >= WOLFOS_ACTION_WAIT) { s16 yawDiff = this->actor.yawTowardsPlayer - this->actor.shape.rot.y; - if ((!(this->colliderCylinderBody.base.acFlags & AC_HIT) && - (this->colliderCylinderTail.base.acFlags & AC_HIT)) || + if ((!(this->bodyColliderCylinder.base.acFlags & AC_HIT) && + (this->tailColliderCylinder.base.acFlags & AC_HIT)) || (ABS(yawDiff) > 19000)) { this->actor.colChkInfo.damage *= 4; } - this->colliderCylinderBody.base.acFlags &= ~AC_HIT; - this->colliderCylinderTail.base.acFlags &= ~AC_HIT; + this->bodyColliderCylinder.base.acFlags &= ~AC_HIT; + this->tailColliderCylinder.base.acFlags &= ~AC_HIT; if (this->actor.colChkInfo.damageEffect != ENWF_DMGEFF_ICE_MAGIC) { this->damageEffect = this->actor.colChkInfo.damageEffect; - Actor_SetDropFlag(&this->actor, &this->colliderCylinderBody.elem, true); + Actor_SetDropFlag(&this->actor, &this->bodyColliderCylinder.elem, true); #if OOT_VERSION >= PAL_1_0 this->slashStatus = 0; #endif @@ -1320,23 +1337,23 @@ void EnWf_Update(Actor* thisx, PlayState* play) { Math_SmoothStepToS(&this->actor.shape.rot.z, 0, 1, 1000, 0); } - CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderSpheres.base); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderJntSph.base); if (this->action >= WOLFOS_ACTION_WAIT) { if ((this->actor.colorFilterTimer == 0) || !(this->actor.colorFilterParams & 0x4000)) { - Collider_UpdateCylinder(&this->actor, &this->colliderCylinderBody); - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderCylinderTail.base); - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderCylinderBody.base); + Collider_UpdateCylinder(&this->actor, &this->bodyColliderCylinder); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->tailColliderCylinder.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->bodyColliderCylinder.base); } } if (this->action == WOLFOS_ACTION_BLOCKING) { - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderSpheres.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderJntSph.base); } if (this->slashStatus > 0) { - if (!(this->colliderSpheres.base.atFlags & AT_BOUNCED)) { - CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderSpheres.base); + if (!(this->colliderJntSph.base.atFlags & AT_BOUNCED)) { + CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderJntSph.base); } else { EnWf_SetupRecoilFromBlockedSlash(this); } @@ -1370,16 +1387,16 @@ void EnWf_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, EnWf* this = (EnWf*)thisx; s32 bodyPartIndex = -1; - Collider_UpdateSpheres(limbIndex, &this->colliderSpheres); + Collider_UpdateSpheres(limbIndex, &this->colliderJntSph); if (limbIndex == WOLFOS_LIMB_TAIL) { Vec3f colliderPos; bodyPartIndex = -1; Matrix_MultVec3f(&colliderVec, &colliderPos); - this->colliderCylinderTail.dim.pos.x = colliderPos.x; - this->colliderCylinderTail.dim.pos.y = colliderPos.y; - this->colliderCylinderTail.dim.pos.z = colliderPos.z; + this->tailColliderCylinder.dim.pos.x = colliderPos.x; + this->tailColliderCylinder.dim.pos.y = colliderPos.y; + this->tailColliderCylinder.dim.pos.z = colliderPos.z; } if ((this->fireTimer != 0) || ((this->actor.colorFilterTimer != 0) && (this->actor.colorFilterParams & 0x4000))) { diff --git a/src/overlays/actors/ovl_En_Wf/z_en_wf.h b/src/overlays/actors/ovl_En_Wf/z_en_wf.h index 83e46e6d19..afc18f7d01 100644 --- a/src/overlays/actors/ovl_En_Wf/z_en_wf.h +++ b/src/overlays/actors/ovl_En_Wf/z_en_wf.h @@ -2,11 +2,11 @@ #define Z_EN_WF_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnWf; -typedef void (*EnWfActionFunc)(struct EnWf*, PlayState*); +typedef void (*EnWfActionFunc)(struct EnWf*, struct PlayState*); typedef enum EnWfLimb { /* 0 */ WOLFOS_LIMB_NONE, @@ -74,10 +74,10 @@ typedef struct EnWf { /* 0x02FE */ s16 runAngle; /* 0x0300 */ s16 unk_300; // Set, but ineffectual (see comment in Draw) /* 0x0302 */ u8 eyeIndex; - /* 0x0304 */ ColliderJntSph colliderSpheres; - /* 0x0324 */ ColliderJntSphElement colliderSpheresElements[4]; - /* 0x0424 */ ColliderCylinder colliderCylinderBody; - /* 0x0470 */ ColliderCylinder colliderCylinderTail; + /* 0x0304 */ ColliderJntSph colliderJntSph; + /* 0x0324 */ ColliderJntSphElement colliderJntSphElements[4]; + /* 0x0424 */ ColliderCylinder bodyColliderCylinder; + /* 0x0470 */ ColliderCylinder tailColliderCylinder; /* 0x04BC */ Vec3f unk_4BC; /* 0x04C8 */ Vec3f unk_4C8; /* 0x04D4 */ Vec3s unk_4D4; diff --git a/src/overlays/actors/ovl_En_Wonder_Item/z_en_wonder_item.c b/src/overlays/actors/ovl_En_Wonder_Item/z_en_wonder_item.c index b60361d810..94dca26a3b 100644 --- a/src/overlays/actors/ovl_En_Wonder_Item/z_en_wonder_item.c +++ b/src/overlays/actors/ovl_En_Wonder_Item/z_en_wonder_item.c @@ -5,7 +5,15 @@ */ #include "z_en_wonder_item.h" + +#include "regs.h" +#include "sfx.h" #include "terminal.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64debug_display.h" +#include "z64play.h" +#include "z64player.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_En_Wonder_Item/z_en_wonder_item.h b/src/overlays/actors/ovl_En_Wonder_Item/z_en_wonder_item.h index 4aca3ffe0a..5b99e235c3 100644 --- a/src/overlays/actors/ovl_En_Wonder_Item/z_en_wonder_item.h +++ b/src/overlays/actors/ovl_En_Wonder_Item/z_en_wonder_item.h @@ -2,11 +2,11 @@ #define Z_EN_WONDER_ITEM_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnWonderItem; -typedef void (*EnWonderItemUpdateFunc)(struct EnWonderItem*, PlayState*); +typedef void (*EnWonderItemUpdateFunc)(struct EnWonderItem*, struct PlayState*); typedef struct EnWonderItem { /* 0x0000 */ Actor actor; 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 ba76e3877b..71a1e5d8fd 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 @@ -5,7 +5,12 @@ */ #include "z_en_wonder_talk.h" + +#include "regs.h" #include "terminal.h" +#include "z64debug_display.h" +#include "z64play.h" +#include "z64save.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_LOCK_ON_DISABLED) diff --git a/src/overlays/actors/ovl_En_Wonder_Talk/z_en_wonder_talk.h b/src/overlays/actors/ovl_En_Wonder_Talk/z_en_wonder_talk.h index ae21c5b41f..a42c3febfc 100644 --- a/src/overlays/actors/ovl_En_Wonder_Talk/z_en_wonder_talk.h +++ b/src/overlays/actors/ovl_En_Wonder_Talk/z_en_wonder_talk.h @@ -2,11 +2,11 @@ #define Z_EN_WONDER_TALK_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnWonderTalk; -typedef void (*EnWonderTalkFunc)(struct EnWonderTalk*, PlayState*); +typedef void (*EnWonderTalkFunc)(struct EnWonderTalk*, struct PlayState*); typedef struct EnWonderTalk { /* 0x0000 */ Actor actor; 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 578c9851dc..b843b64a8b 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 @@ -5,7 +5,13 @@ */ #include "z_en_wonder_talk2.h" + +#include "regs.h" #include "terminal.h" +#include "z64debug_display.h" +#include "z64item.h" +#include "z64play.h" +#include "z64player.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_LOCK_ON_DISABLED) diff --git a/src/overlays/actors/ovl_En_Wonder_Talk2/z_en_wonder_talk2.h b/src/overlays/actors/ovl_En_Wonder_Talk2/z_en_wonder_talk2.h index f58775426f..0dad49d375 100644 --- a/src/overlays/actors/ovl_En_Wonder_Talk2/z_en_wonder_talk2.h +++ b/src/overlays/actors/ovl_En_Wonder_Talk2/z_en_wonder_talk2.h @@ -2,11 +2,11 @@ #define Z_EN_WONDER_TALK2_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnWonderTalk2; -typedef void (*EnWonderTalk2Func)(struct EnWonderTalk2*, PlayState*); +typedef void (*EnWonderTalk2Func)(struct EnWonderTalk2*, struct PlayState*); typedef struct EnWonderTalk2 { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Wood02/z_en_wood02.c b/src/overlays/actors/ovl_En_Wood02/z_en_wood02.c index c66a2232dd..bf32807226 100644 --- a/src/overlays/actors/ovl_En_Wood02/z_en_wood02.c +++ b/src/overlays/actors/ovl_En_Wood02/z_en_wood02.c @@ -5,6 +5,21 @@ */ #include "z_en_wood02.h" + +#include "libc64/qrand.h" +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64skin_matrix.h" + #include "assets/objects/object_wood02/object_wood02.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_En_Wood02/z_en_wood02.h b/src/overlays/actors/ovl_En_Wood02/z_en_wood02.h index 14ca5b967e..89242188ae 100644 --- a/src/overlays/actors/ovl_En_Wood02/z_en_wood02.h +++ b/src/overlays/actors/ovl_En_Wood02/z_en_wood02.h @@ -2,7 +2,7 @@ #define Z_EN_WOOD02_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnWood02; 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 b693f30709..833973d4e4 100644 --- a/src/overlays/actors/ovl_En_Xc/z_en_xc.c +++ b/src/overlays/actors/ovl_En_Xc/z_en_xc.c @@ -7,15 +7,31 @@ #include "z_en_xc.h" #include "overlays/actors/ovl_En_Arrow/z_en_arrow.h" #include "overlays/actors/ovl_Door_Warp1/z_door_warp1.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "regs.h" +#include "segmented_address.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_math3d.h" +#include "sys_matrix.h" +#include "terminal.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64save.h" +#include "z64skin_matrix.h" + #include "assets/objects/object_xc/object_xc.h" #include "assets/scenes/overworld/spot05/spot05_scene.h" #include "assets/scenes/overworld/spot17/spot17_scene.h" #include "assets/scenes/indoors/tokinoma/tokinoma_scene.h" #include "assets/scenes/dungeons/ice_doukutu/ice_doukutu_scene.h" -#include "terminal.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: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 ique-cn:0" \ + "ntsc-1.0:0 ntsc-1.1:0 ntsc-1.2:0 pal-1.0:0 pal-1.1:0" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED @@ -1396,7 +1412,7 @@ void func_80B3F3D8(void) { Sfx_PlaySfxCentered2(NA_SE_PL_SKIP); } -#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" \ +#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:64 ntsc-1.1:64 ntsc-1.2:64 pal-1.0:64 pal-1.1:64" void EnXc_PlayDiveSFX(Vec3f* src, PlayState* play) { diff --git a/src/overlays/actors/ovl_En_Xc/z_en_xc.h b/src/overlays/actors/ovl_En_Xc/z_en_xc.h index c01b98a842..1cc56f68e6 100644 --- a/src/overlays/actors/ovl_En_Xc/z_en_xc.h +++ b/src/overlays/actors/ovl_En_Xc/z_en_xc.h @@ -2,12 +2,12 @@ #define Z_EN_XC_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnXc; -typedef void (*EnXcActionFunc)(struct EnXc*, PlayState*); -typedef void (*EnXcDrawFunc)(struct Actor*, PlayState*); +typedef void (*EnXcActionFunc)(struct EnXc*, struct PlayState*); +typedef void (*EnXcDrawFunc)(struct Actor*, struct PlayState*); typedef enum EnXcType { /* 0 */ SHEIK_TYPE_0, diff --git a/src/overlays/actors/ovl_En_Yabusame_Mark/z_en_yabusame_mark.c b/src/overlays/actors/ovl_En_Yabusame_Mark/z_en_yabusame_mark.c index f294fb60c2..4be5360be4 100644 --- a/src/overlays/actors/ovl_En_Yabusame_Mark/z_en_yabusame_mark.c +++ b/src/overlays/actors/ovl_En_Yabusame_Mark/z_en_yabusame_mark.c @@ -5,7 +5,17 @@ */ #include "z_en_yabusame_mark.h" + +#include "regs.h" +#include "sequence.h" +#include "sfx.h" #include "terminal.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64debug_display.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64save.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_En_Yabusame_Mark/z_en_yabusame_mark.h b/src/overlays/actors/ovl_En_Yabusame_Mark/z_en_yabusame_mark.h index f4ec71bec5..12cfb46cbb 100644 --- a/src/overlays/actors/ovl_En_Yabusame_Mark/z_en_yabusame_mark.h +++ b/src/overlays/actors/ovl_En_Yabusame_Mark/z_en_yabusame_mark.h @@ -2,11 +2,11 @@ #define Z_EN_YABUSAME_MARK_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnYabusameMark; -typedef void (*EnYabusameMarkActionFunc)(struct EnYabusameMark*, PlayState*); +typedef void (*EnYabusameMarkActionFunc)(struct EnYabusameMark*, struct PlayState*); typedef struct EnYabusameMark { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Yukabyun/z_en_yukabyun.c b/src/overlays/actors/ovl_En_Yukabyun/z_en_yukabyun.c index 4a6d3bc397..22d454fb61 100644 --- a/src/overlays/actors/ovl_En_Yukabyun/z_en_yukabyun.c +++ b/src/overlays/actors/ovl_En_Yukabyun/z_en_yukabyun.c @@ -5,6 +5,17 @@ */ #include "z_en_yukabyun.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/object_yukabyun/object_yukabyun.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_En_Yukabyun/z_en_yukabyun.h b/src/overlays/actors/ovl_En_Yukabyun/z_en_yukabyun.h index 773237fbce..a695fb4c1f 100644 --- a/src/overlays/actors/ovl_En_Yukabyun/z_en_yukabyun.h +++ b/src/overlays/actors/ovl_En_Yukabyun/z_en_yukabyun.h @@ -2,11 +2,11 @@ #define Z_EN_YUKABYUN_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnYukabyun; -typedef void (*EnYukabyunActionFunc)(struct EnYukabyun*, PlayState*); +typedef void (*EnYukabyunActionFunc)(struct EnYukabyun*, struct PlayState*); typedef struct EnYukabyun { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Zf/z_en_zf.c b/src/overlays/actors/ovl_En_Zf/z_en_zf.c index 70812e3f0f..843669b4ec 100644 --- a/src/overlays/actors/ovl_En_Zf/z_en_zf.c +++ b/src/overlays/actors/ovl_En_Zf/z_en_zf.c @@ -5,6 +5,23 @@ */ #include "z_en_zf.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "regs.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_zf/object_zf.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_UPDATE_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Zf/z_en_zf.h b/src/overlays/actors/ovl_En_Zf/z_en_zf.h index c5ade78544..9dfb3119b9 100644 --- a/src/overlays/actors/ovl_En_Zf/z_en_zf.h +++ b/src/overlays/actors/ovl_En_Zf/z_en_zf.h @@ -2,11 +2,11 @@ #define Z_EN_ZF_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnZf; -typedef void (*EnZfActionFunc)(struct EnZf*, PlayState*); +typedef void (*EnZfActionFunc)(struct EnZf*, struct PlayState*); typedef enum EnZfType { /* -2 */ ENZF_TYPE_DINOLFOS = -2, diff --git a/src/overlays/actors/ovl_En_Zl1/z_en_zl1.c b/src/overlays/actors/ovl_En_Zl1/z_en_zl1.c index 8a01936fff..5c60653b4e 100644 --- a/src/overlays/actors/ovl_En_Zl1/z_en_zl1.c +++ b/src/overlays/actors/ovl_En_Zl1/z_en_zl1.c @@ -5,6 +5,20 @@ */ #include "z_en_zl1.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "letterbox.h" +#include "segmented_address.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_zl1/object_zl1.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_UPDATE_CULLING_DISABLED) diff --git a/src/overlays/actors/ovl_En_Zl1/z_en_zl1.h b/src/overlays/actors/ovl_En_Zl1/z_en_zl1.h index 4b9f2984e0..ada1335819 100644 --- a/src/overlays/actors/ovl_En_Zl1/z_en_zl1.h +++ b/src/overlays/actors/ovl_En_Zl1/z_en_zl1.h @@ -2,11 +2,11 @@ #define Z_EN_ZL1_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnZl1; -typedef void (*EnZl1ActionFunc)(struct EnZl1*, PlayState*); +typedef void (*EnZl1ActionFunc)(struct EnZl1*, struct PlayState*); typedef struct EnZl1 { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Zl1/z_en_zl1_camera_data.inc.c b/src/overlays/actors/ovl_En_Zl1/z_en_zl1_camera_data.inc.c index fb4776673e..f6fac8940a 100644 --- a/src/overlays/actors/ovl_En_Zl1/z_en_zl1_camera_data.inc.c +++ b/src/overlays/actors/ovl_En_Zl1/z_en_zl1_camera_data.inc.c @@ -1,4 +1,3 @@ -#include "z_en_zl1.h" #include "z64cutscene_commands.h" static CutsceneCameraDirection D_80B4D5C0[] = { diff --git a/src/overlays/actors/ovl_En_Zl1/z_en_zl1_cutscene_data.c b/src/overlays/actors/ovl_En_Zl1/z_en_zl1_cutscene_data.c index 6c268600ec..4a8622cbba 100644 --- a/src/overlays/actors/ovl_En_Zl1/z_en_zl1_cutscene_data.c +++ b/src/overlays/actors/ovl_En_Zl1/z_en_zl1_cutscene_data.c @@ -1,5 +1,6 @@ -#include "z_en_zl1.h" +#include "sequence.h" #include "z64cutscene_commands.h" +#include "z64player.h" // clang-format off CutsceneData gTriforceCreationStartCs[] = { 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 dbc45b62c6..3665e8c6e5 100644 --- a/src/overlays/actors/ovl_En_Zl2/z_en_zl2.c +++ b/src/overlays/actors/ovl_En_Zl2/z_en_zl2.c @@ -5,11 +5,26 @@ */ #include "z_en_zl2.h" -#include "terminal.h" - -#include "z64frame_advance.h" - #include "overlays/actors/ovl_Door_Warp1/z_door_warp1.h" + +#include "libc64/math64.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "regs.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "terminal.h" +#include "z_lib.h" +#include "z64frame_advance.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#if PLATFORM_N64 +#include "global.h" +#endif + #include "assets/objects/object_zl2/object_zl2.h" #include "assets/objects/object_zl2_anime1/object_zl2_anime1.h" diff --git a/src/overlays/actors/ovl_En_Zl2/z_en_zl2.h b/src/overlays/actors/ovl_En_Zl2/z_en_zl2.h index c477ea57e1..4bd0730de7 100644 --- a/src/overlays/actors/ovl_En_Zl2/z_en_zl2.h +++ b/src/overlays/actors/ovl_En_Zl2/z_en_zl2.h @@ -2,12 +2,12 @@ #define Z_EN_ZL2_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnZl2; -typedef void (*EnZl2ActionFunc)(struct EnZl2*, PlayState*); -typedef void (*EnZl2DrawFunc)(struct EnZl2*, PlayState*); +typedef void (*EnZl2ActionFunc)(struct EnZl2*, struct PlayState*); +typedef void (*EnZl2DrawFunc)(struct EnZl2*, struct PlayState*); typedef struct EnZl2 { /* 0x0000 */ Actor actor; 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 c1305ca7f6..a07a2576d1 100644 --- a/src/overlays/actors/ovl_En_Zl3/z_en_zl3.c +++ b/src/overlays/actors/ovl_En_Zl3/z_en_zl3.c @@ -6,9 +6,26 @@ #include "z_en_zl3.h" +#include "libc64/math64.h" +#include "libc64/qrand.h" +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "one_point_cutscene.h" +#include "regs.h" +#include "segmented_address.h" +#include "seqcmd.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" - +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64audio.h" #include "z64frame_advance.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" #include "overlays/actors/ovl_En_Encount2/z_en_encount2.h" #include "overlays/actors/ovl_Door_Warp1/z_door_warp1.h" diff --git a/src/overlays/actors/ovl_En_Zl3/z_en_zl3.h b/src/overlays/actors/ovl_En_Zl3/z_en_zl3.h index 25c336f42d..695588fd52 100644 --- a/src/overlays/actors/ovl_En_Zl3/z_en_zl3.h +++ b/src/overlays/actors/ovl_En_Zl3/z_en_zl3.h @@ -2,14 +2,15 @@ #define Z_EN_ZL3_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" +#include "z64scene.h" #include "overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.h" struct EnZl3; -typedef void (*EnZl3ActionFunc)(struct EnZl3*, PlayState*); -typedef void (*EnZl3DrawFunc)(struct EnZl3*, PlayState*); +typedef void (*EnZl3ActionFunc)(struct EnZl3*, struct PlayState*); +typedef void (*EnZl3DrawFunc)(struct EnZl3*, struct PlayState*); typedef struct EnZl3 { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Zl4/z_en_zl4.c b/src/overlays/actors/ovl_En_Zl4/z_en_zl4.c index 2f901256e4..50f2704e7c 100644 --- a/src/overlays/actors/ovl_En_Zl4/z_en_zl4.c +++ b/src/overlays/actors/ovl_En_Zl4/z_en_zl4.c @@ -5,6 +5,23 @@ */ #include "z_en_zl4.h" + +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "letterbox.h" +#include "rumble.h" +#include "segmented_address.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64face_reaction.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_zl4/object_zl4.h" #include "assets/scenes/indoors/nakaniwa/nakaniwa_scene.h" diff --git a/src/overlays/actors/ovl_En_Zl4/z_en_zl4.h b/src/overlays/actors/ovl_En_Zl4/z_en_zl4.h index 8710cc9cf9..b371092e08 100644 --- a/src/overlays/actors/ovl_En_Zl4/z_en_zl4.h +++ b/src/overlays/actors/ovl_En_Zl4/z_en_zl4.h @@ -2,12 +2,12 @@ #define Z_EN_ZL4_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnZl4; -typedef void (*EnZl4ActionFunc)(struct EnZl4*, PlayState*); -typedef void (*EnZl4DrawFunc)(struct EnZl4*, PlayState*); +typedef void (*EnZl4ActionFunc)(struct EnZl4*, struct PlayState*); +typedef void (*EnZl4DrawFunc)(struct EnZl4*, struct PlayState*); typedef struct EnZl4 { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Zl4/z_en_zl4_cutscene_data.inc.c b/src/overlays/actors/ovl_En_Zl4/z_en_zl4_cutscene_data.inc.c index 3ad3b996be..933f7e0aaa 100644 --- a/src/overlays/actors/ovl_En_Zl4/z_en_zl4_cutscene_data.inc.c +++ b/src/overlays/actors/ovl_En_Zl4/z_en_zl4_cutscene_data.inc.c @@ -1,4 +1,4 @@ -#include "z_en_zl4.h" +#include "z64cutscene_commands.h" static CutsceneCameraDirection sCamDirections[] = { { { -490.0f, 120.0f, 0.0f }, { -440.0f, 117.0f, 0.0f }, 0, 45 }, diff --git a/src/overlays/actors/ovl_En_Zo/z_en_zo.c b/src/overlays/actors/ovl_En_Zo/z_en_zo.c index 6eb051e47a..5332ab6788 100644 --- a/src/overlays/actors/ovl_En_Zo/z_en_zo.c +++ b/src/overlays/actors/ovl_En_Zo/z_en_zo.c @@ -5,6 +5,19 @@ */ #include "z_en_zo.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64face_reaction.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_zo/object_zo.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) diff --git a/src/overlays/actors/ovl_En_Zo/z_en_zo.h b/src/overlays/actors/ovl_En_Zo/z_en_zo.h index 4d7a02ddf0..5f26a20230 100644 --- a/src/overlays/actors/ovl_En_Zo/z_en_zo.h +++ b/src/overlays/actors/ovl_En_Zo/z_en_zo.h @@ -2,7 +2,7 @@ #define Z_EN_ZO_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EnZo; @@ -19,7 +19,7 @@ typedef struct EnZoEffect { /* 0x2C */ Vec3f vec; // Usage specific } EnZoEffect; // size = 0x38 -typedef void (*EnZoActionFunc)(struct EnZo*, PlayState*); +typedef void (*EnZoActionFunc)(struct EnZo*, struct PlayState*); typedef struct EnZo { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_fHG/z_en_fhg.c b/src/overlays/actors/ovl_En_fHG/z_en_fhg.c index bce528552b..1818bea858 100644 --- a/src/overlays/actors/ovl_En_fHG/z_en_fhg.c +++ b/src/overlays/actors/ovl_En_fHG/z_en_fhg.c @@ -5,11 +5,27 @@ */ #include "z_en_fhg.h" -#include "assets/objects/object_fhg/object_fhg.h" #include "overlays/actors/ovl_Door_Shutter/z_door_shutter.h" #include "overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.h" #include "overlays/actors/ovl_En_Fhg_Fire/z_en_fhg_fire.h" +#include "libc64/qrand.h" +#include "attributes.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "segmented_address.h" +#include "seqcmd.h" +#include "sequence.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" +#include "z64skin.h" + +#include "assets/objects/object_fhg/object_fhg.h" + #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED typedef struct EnfHGPainting { diff --git a/src/overlays/actors/ovl_En_fHG/z_en_fhg.h b/src/overlays/actors/ovl_En_fHG/z_en_fhg.h index 5432f82341..dca6eeb82a 100644 --- a/src/overlays/actors/ovl_En_fHG/z_en_fhg.h +++ b/src/overlays/actors/ovl_En_fHG/z_en_fhg.h @@ -2,11 +2,12 @@ #define Z_EN_FHG_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" +#include "z64skin.h" struct EnfHG; -typedef void (*EnfHGActionFunc)(struct EnfHG*, PlayState*); +typedef void (*EnfHGActionFunc)(struct EnfHG*, struct PlayState*); typedef enum EnfHGSignal { /* 0 */ FHG_NO_SIGNAL, diff --git a/src/overlays/actors/ovl_End_Title/z_end_title.c b/src/overlays/actors/ovl_End_Title/z_end_title.c index 0762c9c5e5..3e2d26e509 100644 --- a/src/overlays/actors/ovl_End_Title/z_end_title.c +++ b/src/overlays/actors/ovl_End_Title/z_end_title.c @@ -5,7 +5,13 @@ */ #include "z_end_title.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sys_matrix.h" #include "versions.h" +#include "z64play.h" +#include "z64player.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) @@ -46,18 +52,16 @@ void EndTitle_Update(Actor* thisx, PlayState* play) { // Used in the castle courtyard void EndTitle_DrawFull(Actor* thisx, PlayState* play) { - MtxF* mf; + PlayState* play2 = (PlayState*)play; EndTitle* this = (EndTitle*)thisx; - s32 csCurFrame = play->csCtx.curFrame; - Player* player = GET_PLAYER(play); - - mf = &player->mf_9E0; + s32 csCurFrame = play2->csCtx.curFrame; + Player* player = GET_PLAYER(play2); OPEN_DISPS(play->state.gfxCtx, "../z_end_title.c", 403); // Draw the Triforce on Link's left hand Gfx_SetupDL_25Xlu(play->state.gfxCtx); - Matrix_Mult(mf, MTXMODE_NEW); + Matrix_Mult(&player->mf_9E0, MTXMODE_NEW); Matrix_Translate(0.0f, 150.0f, 170.0f, MTXMODE_APPLY); Matrix_Scale(0.13f, 0.13f, 0.13f, MTXMODE_APPLY); Matrix_RotateX(BINANG_TO_RAD(0xBB8), MTXMODE_APPLY); diff --git a/src/overlays/actors/ovl_End_Title/z_end_title.h b/src/overlays/actors/ovl_End_Title/z_end_title.h index 9897c0fbf2..cd29ff507c 100644 --- a/src/overlays/actors/ovl_End_Title/z_end_title.h +++ b/src/overlays/actors/ovl_End_Title/z_end_title.h @@ -2,7 +2,7 @@ #define Z_END_TITLE_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct EndTitle; diff --git a/src/overlays/actors/ovl_Fishing/z_fishing.c b/src/overlays/actors/ovl_Fishing/z_fishing.c index a2c5ee5ae6..1ec716f8cf 100644 --- a/src/overlays/actors/ovl_Fishing/z_fishing.c +++ b/src/overlays/actors/ovl_Fishing/z_fishing.c @@ -26,17 +26,18 @@ #include "sys_matrix.h" #include "terminal.h" #include "versions.h" +#include "z_lib.h" #include "z64audio.h" #include "z64play.h" #include "z64player.h" +#include "z64save.h" #include "z64skin_matrix.h" -#include "z_lib.h" #if PLATFORM_N64 #include "cic6105.h" #endif -#pragma increment_block_number "gc-eu:167 gc-eu-mq:167 gc-jp:167 gc-jp-ce:167 gc-jp-mq:167 gc-us:167 gc-us-mq:167" \ - "ntsc-1.0:121 ntsc-1.1:121 ntsc-1.2:121 pal-1.0:121 pal-1.1:121" +#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" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED @@ -454,7 +455,6 @@ static f32 sFishGroupAngle1; static f32 sFishGroupAngle2; static f32 sFishGroupAngle3; static FishingEffect sEffects[FISHING_EFFECT_COUNT]; -static Vec3f sStreamSfxProjectedPos; void Fishing_SetColliderElement(s32 index, ColliderJntSph* collider, Vec3f* pos, f32 scale) { collider->elements[index].dim.worldSphere.center.x = pos->x; @@ -514,7 +514,7 @@ void Fishing_SpawnRipple(Vec3f* projectedPos, FishingEffect* effect, Vec3f* pos, return; } - for (i = 0; i < countLimit; i++) { + for (i = 0; i < countLimit; i++, effect++) { if (effect->type == FS_EFF_NONE) { effect->type = FS_EFF_RIPPLE; effect->pos = *pos; @@ -535,8 +535,6 @@ void Fishing_SpawnRipple(Vec3f* projectedPos, FishingEffect* effect, Vec3f* pos, } break; } - - effect++; } } @@ -548,7 +546,7 @@ void Fishing_SpawnDustSplash(Vec3f* projectedPos, FishingEffect* effect, Vec3f* return; } - for (i = 0; i < 100; i++) { + for (i = 0; i < 100; i++, effect++) { if ((effect->type == FS_EFF_NONE) || (effect->type == FS_EFF_RAIN_DROP) || (effect->type == FS_EFF_RAIN_RIPPLE) || (effect->type == FS_EFF_RAIN_SPLASH)) { effect->type = FS_EFF_DUST_SPLASH; @@ -559,8 +557,6 @@ void Fishing_SpawnDustSplash(Vec3f* projectedPos, FishingEffect* effect, Vec3f* effect->scale = scale; break; } - - effect++; } } @@ -572,7 +568,7 @@ void Fishing_SpawnWaterDust(Vec3f* projectedPos, FishingEffect* effect, Vec3f* p return; } - for (i = 0; i < 90; i++) { + for (i = 0; i < 90; i++, effect++) { if (effect->type == FS_EFF_NONE) { effect->type = FS_EFF_WATER_DUST; effect->pos = *pos; @@ -584,8 +580,6 @@ void Fishing_SpawnWaterDust(Vec3f* projectedPos, FishingEffect* effect, Vec3f* p effect->rot.x = 2.0f * scale; break; } - - effect++; } } @@ -597,7 +591,7 @@ void Fishing_SpawnBubble(Vec3f* projectedPos, FishingEffect* effect, Vec3f* pos, return; } - for (i = 0; i < 90; i++) { + for (i = 0; i < 90; i++, effect++) { if (effect->type == FS_EFF_NONE) { effect->type = FS_EFF_BUBBLE; effect->pos = *pos; @@ -608,8 +602,6 @@ void Fishing_SpawnBubble(Vec3f* projectedPos, FishingEffect* effect, Vec3f* pos, effect->state = state; break; } - - effect++; } } @@ -623,7 +615,7 @@ void Fishing_SpawnRainDrop(FishingEffect* effect, Vec3f* pos, Vec3f* rot) { effect += 30; - for (i = 30; i < FISHING_EFFECT_COUNT; i++) { + for (i = 30; i < FISHING_EFFECT_COUNT; i++, effect++) { if (effect->type == FS_EFF_NONE) { effect->type = FS_EFF_RAIN_DROP; effect->pos = *pos; @@ -636,8 +628,6 @@ void Fishing_SpawnRainDrop(FishingEffect* effect, Vec3f* pos, Vec3f* rot) { Matrix_MultVec3f(&velSrc, &effect->vel); break; } - - effect++; } } @@ -792,7 +782,7 @@ void Fishing_InitPondProps(Fishing* this, PlayState* play) { Fishing_SeedRand(1, 29100, 9786); - for (i = 0; i < POND_PROP_COUNT; i++) { + for (i = 0; i < POND_PROP_COUNT; i++, prop++) { if (sPondPropInits[i].type == FS_PROP_INIT_STOP) { break; } @@ -801,8 +791,7 @@ void Fishing_InitPondProps(Fishing* this, PlayState* play) { prop->pos.x = sPondPropInits[i].pos.x; prop->pos.y = sPondPropInits[i].pos.y; prop->pos.z = sPondPropInits[i].pos.z; - prop->rotX = 0.0f; - prop->reedAngle = 0.0f; + prop->rotX = prop->reedAngle = 0.0f; prop->timer = Rand_ZeroFloat(100.0f); prop->drawDistance = 800.0f; @@ -836,8 +825,6 @@ void Fishing_InitPondProps(Fishing* this, PlayState* play) { prop->drawDistance = 1000.0f; Fishing_SetColliderElement(i, &sFishingMain->collider, &prop->pos, prop->scale); } - - prop++; } } @@ -875,7 +862,7 @@ void Fishing_Init(Actor* thisx, PlayState* play2) { #endif if (thisx->params < EN_FISH_PARAM) { - FishingGroupFish* fish; + s32 pad; #if PLATFORM_N64 // Anti-piracy check, if the check fails the line can't be reeled in if @@ -980,32 +967,30 @@ void Fishing_Init(Actor* thisx, PlayState* play2) { sFishGroupAngle3 = 4.6f; for (i = 0; i < GROUP_FISH_COUNT; i++) { - fish = &sGroupFishes[i]; - - fish->type = FS_GROUP_FISH_NORMAL; + sGroupFishes[i].type = FS_GROUP_FISH_NORMAL; if (i <= 20) { - fish->homePos.x = fish->pos.x = sinf(sFishGroupAngle1) * 720.0f; - fish->homePos.z = fish->pos.z = cosf(sFishGroupAngle1) * 720.0f; + sGroupFishes[i].homePos.x = sGroupFishes[i].pos.x = sinf(sFishGroupAngle1) * 720.0f; + sGroupFishes[i].homePos.z = sGroupFishes[i].pos.z = cosf(sFishGroupAngle1) * 720.0f; } else if (i <= 40) { - fish->homePos.x = fish->pos.x = sinf(sFishGroupAngle2) * 720.0f; - fish->homePos.z = fish->pos.z = cosf(sFishGroupAngle2) * 720.0f; + sGroupFishes[i].homePos.x = sGroupFishes[i].pos.x = sinf(sFishGroupAngle2) * 720.0f; + sGroupFishes[i].homePos.z = sGroupFishes[i].pos.z = cosf(sFishGroupAngle2) * 720.0f; } else { - fish->homePos.x = fish->pos.x = sinf(sFishGroupAngle3) * 720.0f; - fish->homePos.z = fish->pos.z = cosf(sFishGroupAngle3) * 720.0f; + sGroupFishes[i].homePos.x = sGroupFishes[i].pos.x = sinf(sFishGroupAngle3) * 720.0f; + sGroupFishes[i].homePos.z = sGroupFishes[i].pos.z = cosf(sFishGroupAngle3) * 720.0f; } - fish->homePos.y = fish->pos.y = -35.0f; + sGroupFishes[i].homePos.y = sGroupFishes[i].pos.y = -35.0f; - fish->timer = Rand_ZeroFloat(100.0f); + sGroupFishes[i].timer = Rand_ZeroFloat(100.0f); - fish->unk_3C = 0; - fish->unk_3E = 0; - fish->unk_40 = 0; + sGroupFishes[i].unk_3C = 0; + sGroupFishes[i].unk_3E = 0; + sGroupFishes[i].unk_40 = 0; if (sLinkAge != LINK_AGE_CHILD) { if (((i >= 15) && (i < 20)) || ((i >= 35) && (i < 40)) || ((i >= 55) && (i < 60))) { - fish->type = FS_GROUP_FISH_NONE; + sGroupFishes[i].type = FS_GROUP_FISH_NONE; } } } @@ -1053,7 +1038,7 @@ void Fishing_Init(Actor* thisx, PlayState* play2) { Actor_ChangeCategory(play, &play->actorCtx, thisx, ACTORCAT_PROP); thisx->attentionRangeType = ATTENTION_RANGE_0; thisx->flags |= ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY; - this->lightNode = LightContext_InsertLight(play, &play->lightCtx, &this->lightInfo); + this->lightNode = LightContext_InsertLight(play2, &play->lightCtx, &this->lightInfo); } else { this->fishState = 10; this->fishStateNext = 10; @@ -1099,7 +1084,7 @@ void Fishing_UpdateEffects(FishingEffect* effect, PlayState* play) { f32 rippleY; s16 i; - for (i = 0; i < FISHING_EFFECT_COUNT; i++) { + for (i = 0; i < FISHING_EFFECT_COUNT; i++, effect++) { if (effect->type) { effect->timer++; effect->pos.x += effect->vel.x; @@ -1129,8 +1114,7 @@ void Fishing_UpdateEffects(FishingEffect* effect, PlayState* play) { effect->alpha -= 10; if (effect->pos.y > (WATER_SURFACE_Y(play) - 5.0f)) { - effect->accel.y = 0.0f; - effect->vel.y = 0.0f; + effect->vel.y = effect->accel.y = 0.0f; effect->alpha -= 5; } @@ -1236,16 +1220,14 @@ void Fishing_UpdateEffects(FishingEffect* effect, PlayState* play) { } } } - - effect++; } } -void Fishing_DrawEffects(FishingEffect* effect, PlayState* play) { +void Fishing_DrawEffects(FishingEffect* effect, PlayState* play2) { u8 materialFlag = 0; f32 rotY; s16 i; - s32 pad; + PlayState* play = (PlayState*)play2; FishingEffect* firstEffect = effect; OPEN_DISPS(play->state.gfxCtx, "../z_fishing.c", 2271); @@ -1254,7 +1236,7 @@ void Fishing_DrawEffects(FishingEffect* effect, PlayState* play) { gDPPipeSync(POLY_XLU_DISP++); - for (i = 0; i < 100; i++) { + for (i = 0; i < 100; i++, effect++) { if (effect->type == FS_EFF_RIPPLE) { if (materialFlag == 0) { gSPDisplayList(POLY_XLU_DISP++, gFishingRippleMaterialDL); @@ -1271,12 +1253,11 @@ void Fishing_DrawEffects(FishingEffect* effect, PlayState* play) { gSPDisplayList(POLY_XLU_DISP++, gFishingRippleModelDL); } - effect++; } - effect = firstEffect; materialFlag = 0; - for (i = 0; i < 100; i++) { + effect = firstEffect; + for (i = 0; i < 100; i++, effect++) { if (effect->type == FS_EFF_DUST_SPLASH) { if (materialFlag == 0) { gSPDisplayList(POLY_XLU_DISP++, gFishingDustSplashMaterialDL); @@ -1287,19 +1268,18 @@ void Fishing_DrawEffects(FishingEffect* effect, PlayState* play) { gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 180, 180, 180, effect->alpha); Matrix_Translate(effect->pos.x, effect->pos.y, effect->pos.z, MTXMODE_NEW); - Matrix_ReplaceRotation(&play->billboardMtxF); + Matrix_ReplaceRotation(&play2->billboardMtxF); Matrix_Scale(effect->scale, effect->scale, 1.0f, MTXMODE_APPLY); MATRIX_FINALIZE_AND_LOAD(POLY_XLU_DISP++, play->state.gfxCtx, "../z_fishing.c", 2346); gSPDisplayList(POLY_XLU_DISP++, gFishingDustSplashModelDL); } - effect++; } - effect = firstEffect; materialFlag = 0; - for (i = 0; i < 100; i++) { + effect = firstEffect; + for (i = 0; i < 100; i++, effect++) { if (effect->type == FS_EFF_WATER_DUST) { if (materialFlag == 0) { gSPDisplayList(POLY_OPA_DISP++, gFishingWaterDustMaterialDL); @@ -1314,19 +1294,18 @@ void Fishing_DrawEffects(FishingEffect* effect, PlayState* play) { (effect->timer + (i * 3)) * 5, 32, 64, 1, 0, 0, 32, 32)); Matrix_Translate(effect->pos.x, effect->pos.y, effect->pos.z, MTXMODE_NEW); - Matrix_ReplaceRotation(&play->billboardMtxF); + Matrix_ReplaceRotation(&play2->billboardMtxF); Matrix_Scale(effect->scale, effect->scale, 1.0f, MTXMODE_APPLY); MATRIX_FINALIZE_AND_LOAD(POLY_OPA_DISP++, play->state.gfxCtx, "../z_fishing.c", 2394); gSPDisplayList(POLY_OPA_DISP++, gFishingWaterDustModelDL); } - effect++; } - effect = firstEffect; materialFlag = 0; - for (i = 0; i < 100; i++) { + effect = firstEffect; + for (i = 0; i < 100; i++, effect++) { if (effect->type == FS_EFF_BUBBLE) { if (materialFlag == 0) { gSPDisplayList(POLY_XLU_DISP++, gFishingBubbleMaterialDL); @@ -1336,19 +1315,19 @@ void Fishing_DrawEffects(FishingEffect* effect, PlayState* play) { } Matrix_Translate(effect->pos.x, effect->pos.y, effect->pos.z, MTXMODE_NEW); - Matrix_ReplaceRotation(&play->billboardMtxF); + Matrix_ReplaceRotation(&play2->billboardMtxF); Matrix_Scale(effect->scale, effect->scale, 1.0f, MTXMODE_APPLY); MATRIX_FINALIZE_AND_LOAD(POLY_XLU_DISP++, play->state.gfxCtx, "../z_fishing.c", 2423); gSPDisplayList(POLY_XLU_DISP++, gFishingBubbleModelDL); } - effect++; } - effect = firstEffect + 30; materialFlag = 0; - for (i = 30; i < FISHING_EFFECT_COUNT; i++) { + effect = firstEffect; + effect += 30; + for (i = 30; i < FISHING_EFFECT_COUNT; i++, effect++) { if (effect->type == FS_EFF_RAIN_DROP) { if (materialFlag == 0) { POLY_XLU_DISP = Gfx_SetupDL(POLY_XLU_DISP, SETUPDL_20); @@ -1367,14 +1346,14 @@ void Fishing_DrawEffects(FishingEffect* effect, PlayState* play) { gSPDisplayList(POLY_XLU_DISP++, gFishingRainDropModelDL); } - effect++; } Gfx_SetupDL_25Xlu(play->state.gfxCtx); - effect = firstEffect + 30; materialFlag = 0; - for (i = 30; i < FISHING_EFFECT_COUNT; i++) { + effect = firstEffect; + effect += 30; + for (i = 30; i < FISHING_EFFECT_COUNT; i++, effect++) { if (effect->type == FS_EFF_RAIN_RIPPLE) { if (materialFlag == 0) { gSPDisplayList(POLY_XLU_DISP++, gFishingRippleMaterialDL); @@ -1390,12 +1369,12 @@ void Fishing_DrawEffects(FishingEffect* effect, PlayState* play) { gSPDisplayList(POLY_XLU_DISP++, gFishingRippleModelDL); } - effect++; } - effect = firstEffect + 30; materialFlag = 0; - for (i = 30; i < FISHING_EFFECT_COUNT; i++) { + effect = firstEffect; + effect += 30; + for (i = 30; i < FISHING_EFFECT_COUNT; i++, effect++) { if (effect->type == FS_EFF_RAIN_SPLASH) { if (materialFlag == 0) { gSPDisplayList(POLY_XLU_DISP++, gFishingRainSplashMaterialDL); @@ -1410,7 +1389,7 @@ void Fishing_DrawEffects(FishingEffect* effect, PlayState* play) { } Matrix_Translate(effect->pos.x, effect->pos.y, effect->pos.z, MTXMODE_NEW); - Matrix_ReplaceRotation(&play->billboardMtxF); + Matrix_ReplaceRotation(&play2->billboardMtxF); Matrix_RotateY(rotY, MTXMODE_APPLY); Matrix_Scale(effect->scale, effect->scale, 1.0f, MTXMODE_APPLY); @@ -1418,7 +1397,6 @@ void Fishing_DrawEffects(FishingEffect* effect, PlayState* play) { gSPDisplayList(POLY_XLU_DISP++, gFishingRainSplashModelDL); } - effect++; } effect = firstEffect; @@ -1483,7 +1461,7 @@ void Fishing_UpdateLine(PlayState* play, Vec3f* basePos, Vec3f* pos, Vec3f* rot, f32 dist; f32 spD8; s16 spooled; - s32 pad; + f32 segDist; f32 temp_f20; Vec3f posSrc = { 0.0f, 0.0f, 0.0f }; Vec3f posStep; @@ -1504,12 +1482,12 @@ void Fishing_UpdateLine(PlayState* play, Vec3f* basePos, Vec3f* pos, Vec3f* rot, sp90 = segPos.y - tempPos.y; sp8C = segPos.z - tempPos.z; - temp_f20 = sqrtf(SQ(sp94) + SQ(sp90) + SQ(sp8C)) * 0.97f; - if (temp_f20 > 1000.0f) { - temp_f20 = 1000.0f; + segDist = sqrtf(SQ(sp94) + SQ(sp90) + SQ(sp8C)) * 0.97f; + if (segDist > 1000.0f) { + segDist = 1000.0f; } - sRodLineSpooled = 200.0f - (temp_f20 * 200.0f * 0.001f); + sRodLineSpooled = 200.0f - (segDist * 200.0f * 0.001f); } spooled = sRodLineSpooled; @@ -1520,22 +1498,22 @@ void Fishing_UpdateLine(PlayState* play, Vec3f* basePos, Vec3f* pos, Vec3f* rot, pos[i] = *basePos; } else if (D_80B7A6A4 != 0) { temp_f20 = (f32)(i - spooled) / (f32)(LINE_SEG_COUNT - spooled + 1); - Math_ApproachF(&pos[i].x, (sp94 * temp_f20) + tempPos.x, 1.0f, 20.0f); - Math_ApproachF(&pos[i].y, (sp90 * temp_f20) + tempPos.y, 1.0f, 20.0f); - Math_ApproachF(&pos[i].z, (sp8C * temp_f20) + tempPos.z, 1.0f, 20.0f); + Math_ApproachF(&pos[i].x, tempPos.x + (sp94 * temp_f20), 1.0f, 20.0f); + Math_ApproachF(&pos[i].y, tempPos.y + (sp90 * temp_f20), 1.0f, 20.0f); + Math_ApproachF(&pos[i].z, tempPos.z + (sp8C * temp_f20), 1.0f, 20.0f); } } for (i = spooled + 1, k = 0; i < LINE_SEG_COUNT; i++, k++) { - temp_f18 = 2.0f * D_80B7E148; - dx = (pos + i)->x - (pos + i - 1)->x; spD8 = (pos + i)->y; + temp_f18 = 2.0f * D_80B7E148; + sqDistXZ = SQ((pos + i)->x) + SQ((pos + i)->z); if (sqDistXZ > SQ(920.0f)) { - phi_f12 = ((sqrtf(sqDistXZ) - 920.0f) * 0.11f) + WATER_SURFACE_Y(play); + phi_f12 = WATER_SURFACE_Y(play) + ((sqrtf(sqDistXZ) - 920.0f) * 0.11f); } else { phi_f12 = WATER_SURFACE_Y(play); } @@ -1544,7 +1522,7 @@ void Fishing_UpdateLine(PlayState* play, Vec3f* basePos, Vec3f* pos, Vec3f* rot, s32 pad; if (spD8 < phi_f12) { - phi_f12 = ((sqrtf(sqDistXZ) - 920.0f) * 0.147f) + WATER_SURFACE_Y(play); + phi_f12 = WATER_SURFACE_Y(play) + ((sqrtf(sqDistXZ) - 920.0f) * 0.147f); if (spD8 > phi_f12) { f32 phi_f2 = (spD8 - phi_f12) * 0.05f; @@ -1740,8 +1718,7 @@ void Fishing_UpdateSinkingLure(PlayState* play) { Vec3f posStep; Vec3f sp94; Vec3f sp88; - f32 offsetX; - f32 offsetZ; + Vec3f offset; Player* player = GET_PLAYER(play); Vec3f* pos; @@ -1769,15 +1746,15 @@ void Fishing_UpdateSinkingLure(PlayState* play) { pos = sSinkingLurePos; if ((i < 10) && (sRodCastState == 5)) { - offsetX = (10 - i) * sp88.x * 0.1f; - offsetZ = (10 - i) * sp88.z * 0.1f; + offset.x = sp88.x * (10 - i) * 0.1f; + offset.z = sp88.z * (10 - i) * 0.1f; } else { - offsetX = offsetZ = 0.0f; + offset.x = offset.z = 0.0f; } - dx = (pos + i)->x - (pos + i - 1)->x + offsetX; + dx = (pos + i)->x - (pos + i - 1)->x + offset.x; dy = (pos + i)->y - (pos + i - 1)->y + offsetY; - dz = (pos + i)->z - (pos + i - 1)->z + offsetZ; + dz = (pos + i)->z - (pos + i - 1)->z + offset.z; ry = Math_Atan2F(dz, dx); dist = sqrtf(SQ(dx) + SQ(dz)); @@ -1798,15 +1775,15 @@ static f32 sSinkingLureSizes[] = { 0.9f, 0.85f, 0.8f, 0.7f, 0.8f, 1.0f, 1.2f, 1.1f, 1.0f, 0.8f, }; -void Fishing_DrawSinkingLure(PlayState* play) { +void Fishing_DrawSinkingLure(PlayState* play2) { + PlayState* play = (PlayState*)play2; s16 i; - f32 scale; OPEN_DISPS(play->state.gfxCtx, "../z_fishing.c", 3209); - Fishing_UpdateSinkingLure(play); + Fishing_UpdateSinkingLure(play2); - if (sLurePos.y < WATER_SURFACE_Y(play)) { + if (sLurePos.y < WATER_SURFACE_Y(play2)) { Gfx_SetupDL_25Opa(play->state.gfxCtx); gSPDisplayList(POLY_OPA_DISP++, gFishingSinkingLureSegmentMaterialDL); @@ -1814,9 +1791,10 @@ void Fishing_DrawSinkingLure(PlayState* play) { for (i = SINKING_LURE_SEG_COUNT - 1; i >= 0; i--) { if ((i + sSinkingLureSegmentIndex) < SINKING_LURE_SEG_COUNT) { Matrix_Translate(sSinkingLurePos[i].x, sSinkingLurePos[i].y, sSinkingLurePos[i].z, MTXMODE_NEW); - scale = sSinkingLureSizes[i + sSinkingLureSegmentIndex] * 0.04f; - Matrix_Scale(scale, scale, scale, MTXMODE_APPLY); - Matrix_ReplaceRotation(&play->billboardMtxF); + Matrix_Scale(sSinkingLureSizes[i + sSinkingLureSegmentIndex] * 0.04f, + sSinkingLureSizes[i + sSinkingLureSegmentIndex] * 0.04f, + sSinkingLureSizes[i + sSinkingLureSegmentIndex] * 0.04f, MTXMODE_APPLY); + Matrix_ReplaceRotation(&play2->billboardMtxF); MATRIX_FINALIZE_AND_LOAD(POLY_OPA_DISP++, play->state.gfxCtx, "../z_fishing.c", 3239); gSPDisplayList(POLY_OPA_DISP++, gFishingSinkingLureSegmentModelDL); @@ -1830,9 +1808,10 @@ void Fishing_DrawSinkingLure(PlayState* play) { for (i = SINKING_LURE_SEG_COUNT - 1; i >= 0; i--) { if ((i + sSinkingLureSegmentIndex) < SINKING_LURE_SEG_COUNT) { Matrix_Translate(sSinkingLurePos[i].x, sSinkingLurePos[i].y, sSinkingLurePos[i].z, MTXMODE_NEW); - scale = sSinkingLureSizes[i + sSinkingLureSegmentIndex] * 0.04f; - Matrix_Scale(scale, scale, scale, MTXMODE_APPLY); - Matrix_ReplaceRotation(&play->billboardMtxF); + Matrix_Scale(sSinkingLureSizes[i + sSinkingLureSegmentIndex] * 0.04f, + sSinkingLureSizes[i + sSinkingLureSegmentIndex] * 0.04f, + sSinkingLureSizes[i + sSinkingLureSegmentIndex] * 0.04f, MTXMODE_APPLY); + Matrix_ReplaceRotation(&play2->billboardMtxF); MATRIX_FINALIZE_AND_LOAD(POLY_XLU_DISP++, play->state.gfxCtx, "../z_fishing.c", 3265); gSPDisplayList(POLY_XLU_DISP++, gFishingSinkingLureSegmentModelDL); @@ -2006,14 +1985,14 @@ static f32 sRodBendRatios[22] = { static Vec3f sRodTipOffset = { 0.0f, 0.0f, 0.0f }; -void Fishing_DrawRod(PlayState* play) { +void Fishing_DrawRod(PlayState* play2) { s16 i; f32 lureXZLen; f32 spC4; f32 spC0; - Input* input = &play->state.input[0]; + PlayState* play = (PlayState*)play2; Player* player = GET_PLAYER(play); - s32 pad; + Input* input = &play->state.input[0]; OPEN_DISPS(play->state.gfxCtx, "../z_fishing.c", 3600); @@ -2108,13 +2087,13 @@ void Fishing_DrawRod(PlayState* play) { Matrix_RotateX((D_80B7A6C0 + 20.0f) * 0.01f * M_PI, MTXMODE_APPLY); Matrix_Scale(0.70000005f, 0.70000005f, 0.70000005f, MTXMODE_APPLY); - spC0 = (D_80B7A6BC * (((player->unk_85C - 1.0f) * -0.25f) + 0.5f)) + (D_80B7A6AC + D_80B7A6B8); + spC0 = D_80B7A6AC + D_80B7A6B8 + (D_80B7A6BC * ((((*player).unk_85C - 1.0f) * -0.25f) + 0.5f)); Matrix_Translate(0.0f, 0.0f, -1300.0f, MTXMODE_APPLY); for (i = 0; i < 22; i++) { - Matrix_RotateY(sRodBendRatios[i] * sRodBendRotY * 0.5f, MTXMODE_APPLY); - Matrix_RotateX(sRodBendRatios[i] * spC0 * 0.5f, MTXMODE_APPLY); + Matrix_RotateY(sRodBendRotY * sRodBendRatios[i] * 0.5f, MTXMODE_APPLY); + Matrix_RotateX(spC0 * sRodBendRatios[i] * 0.5f, MTXMODE_APPLY); Matrix_Push(); Matrix_Scale(sRodScales[i], sRodScales[i], 0.52f, MTXMODE_APPLY); @@ -2350,7 +2329,7 @@ void Fishing_UpdateLure(Fishing* this, PlayState* play) { } } - spE4 = ((sqrtf(lureXZLen) - 920.0f) * 0.11f) + WATER_SURFACE_Y(play); + spE4 = WATER_SURFACE_Y(play) + ((sqrtf(lureXZLen) - 920.0f) * 0.11f); if (sLurePos.y <= spE4) { sLurePos.y = spE4; sLurePosDelta.x = sLurePosDelta.y = sLurePosDelta.z = 0.0f; @@ -2383,7 +2362,6 @@ void Fishing_UpdateLure(Fishing* this, PlayState* play) { for (i = 0; i < 50; i++) { f32 sp7C = Rand_ZeroFloat(1.5f) + 0.5f; f32 sp78 = Rand_ZeroFloat(6.28f); - s32 pad; sp9C.x = sinf(sp78) * sp7C; sp9C.z = cosf(sp78) * sp7C; @@ -2445,8 +2423,8 @@ void Fishing_UpdateLure(Fishing* this, PlayState* play) { player->unk_860 = 2; if (sLureWigglePosY < 3.0f) { - spD0 = sLureRotXTarget * Math_SinS(sLureTimer * 0x1060); - Math_ApproachF(&sLureRot.x, -M_PI / 6.0f + spD0, 0.3f, sLureRotXStep); + lureXZLen = Math_SinS(sLureTimer * 0x1060) * sLureRotXTarget; + Math_ApproachF(&sLureRot.x, -M_PI / 6.0f + lureXZLen, 0.3f, sLureRotXStep); Math_ApproachF(&sLureRotXStep, 0.5f, 1.0f, 0.02f); Math_ApproachZeroF(&sLureRotXTarget, 1.0f, 0.02f); } else { @@ -2459,20 +2437,21 @@ void Fishing_UpdateLure(Fishing* this, PlayState* play) { lureXZLen = SQ(sLurePos.x) + SQ(sLurePos.z); if (lureXZLen < SQ(920.0f)) { if (sLurePos.y <= spE4 + 4) { + Input* input2 = &play->state.input[0]; f32 wiggle = 0.0f; if (D_80B7E150 == 0) { - if (fabsf(input->rel.stick_x) > 30.0f) { - wiggle = fabsf((input->rel.stick_x - sStickAdjXPrev) * (1.0f / 60.0f)); - } else if (fabsf(input->rel.stick_y) > 30.0f) { - wiggle = fabsf((input->rel.stick_y - sStickAdjYPrev) * (1.0f / 60.0f)); + if (fabsf(input2->rel.stick_x) > 30.0f) { + wiggle = fabsf((input2->rel.stick_x - sStickAdjXPrev) * (1.0f / 60.0f)); + } else if (fabsf(input2->rel.stick_y) > 30.0f) { + wiggle = fabsf((input2->rel.stick_y - sStickAdjYPrev) * (1.0f / 60.0f)); } } if (wiggle > 1.0f) { wiggle = 1.0f; } - if (CHECK_BTN_ALL(input->press.button, BTN_B)) { + if (CHECK_BTN_ALL(input2->press.button, BTN_B)) { wiggle = 0.5f; } @@ -2495,7 +2474,7 @@ void Fishing_UpdateLure(Fishing* this, PlayState* play) { sp90.z = player->actor.world.pos.z - sLurePos.z; sp90.y = Math_Atan2F(sp90.z, sp90.x); - sLureWiggleRotYTarget = (wiggle * sLureWiggleSign) + sp90.y; + sLureWiggleRotYTarget = sp90.y + (wiggle * sLureWiggleSign); sLureWiggleSign *= -1.0f; sLureWigglePosY = fabsf(wiggle) * 6.0f; sLureRot.x = 0.0f; @@ -2509,7 +2488,7 @@ void Fishing_UpdateLure(Fishing* this, PlayState* play) { sReelLinePos[LINE_SEG_COUNT - 1].y += sLureLineSegPosDelta.y; sLurePos.y += sLureLineSegPosDelta.y; } - } else if (CHECK_BTN_ALL(input->cur.button, BTN_A)) { + } else if (CHECK_BTN_ALL(input2->cur.button, BTN_A)) { spDC = 0x500; sLureWiggleRotYTarget = sReelLineRot[LINE_SEG_COUNT - 2].y + M_PI; sLureRot.x = 0.0f; @@ -2528,7 +2507,7 @@ void Fishing_UpdateLure(Fishing* this, PlayState* play) { } } } else { - spE4 = ((sqrtf(lureXZLen) - 920.0f) * 0.11f) + WATER_SURFACE_Y(play); + spE4 = WATER_SURFACE_Y(play) + ((sqrtf(lureXZLen) - 920.0f) * 0.11f); if (sLurePos.y <= spE4) { sLurePos.y = spE4; spDC = 0x500; @@ -2718,9 +2697,20 @@ s32 Fishing_SplashBySize(Fishing* this, PlayState* play, u8 ignorePosCheck) { return false; } - // Necessary to match - if (this->fishLength) {} + if (this->fishLength >= 60.0f) { + // Unknown optimized-out code + count = 0; + scale = 0.0f; + } + //! @bug Probably intended to be an else-if. + if (this->fishLength >= 50.0f) { + // Unknown optimized-out code + count = 0; + scale = 0.0f; + } + + //! @bug Probably intended to be an else-if. if (this->fishLength >= 40.0f) { count = 40; scale = 1.2f; @@ -2765,9 +2755,13 @@ void Fishing_SplashBySize2(Fishing* this, PlayState* play) { f32 speedXZ; f32 angle; - // Necessary to match - if (this->fishLength) {} + if (this->fishLength >= 60.0f) { + // Unknown optimized-out code + count = 0; + scale = 0.0f; + } + //! @bug Probably intended to be an else-if. if (this->fishLength >= 45.0f) { count = 30; scale = 0.5f; @@ -2957,10 +2951,6 @@ void Fishing_UpdateFish(Actor* thisx, PlayState* play2) { f32 phi_f0; f32 phi_f2; Vec3f bubblePos; - Vec3f spB8; - f32 temp_f0; - f32 temp; - f32 rumbleStrength; this->actor.cullingVolumeDistance = 700.0f; this->actor.cullingVolumeScale = 50.0f; @@ -3033,11 +3023,10 @@ void Fishing_UpdateFish(Actor* thisx, PlayState* play2) { this->fishLimbRotPhase += this->fishLimbRotPhaseStep; - temp = cosf(this->fishLimbRotPhase); - this->fishLimb23RotYDelta = this->unk_16E + (s16)(temp * this->fishLimbRotPhaseMag); + this->fishLimb23RotYDelta = (s16)(cosf(this->fishLimbRotPhase) * this->fishLimbRotPhaseMag) + (*this).unk_16E; - temp = cosf(this->fishLimbRotPhase + -1.2f); - this->fishLimb4RotYDelta = this->unk_16E + (s16)(temp * this->fishLimbRotPhaseMag * 1.6f); + this->fishLimb4RotYDelta = + (s16)(cosf(this->fishLimbRotPhase + -1.2f) * this->fishLimbRotPhaseMag * 1.6f) + (*this).unk_16E; } else { Actor_SetScale(&this->actor, this->fishLength * 65.0f * 0.000001f); @@ -3047,12 +3036,11 @@ void Fishing_UpdateFish(Actor* thisx, PlayState* play2) { this->fishLimbRotPhase += this->fishLimbRotPhaseStep * 0.8f; for (i = 0; i < 3; i++) { - temp = cosf(this->fishLimbRotPhase + (i * 2.1f)); - this->loachRotYDelta[i] = this->unk_16E + (s16)(temp * this->fishLimbRotPhaseMag * 2.0f); + this->loachRotYDelta[i] = + (s16)(cosf(this->fishLimbRotPhase + (i * 2.1f)) * this->fishLimbRotPhaseMag * 2.0f) + (*this).unk_16E; } - temp = cosf(this->fishLimbRotPhase + 0.4f); - this->fishLimb23RotYDelta = (this->fishLimbRotPhaseMag * temp * 2.0f) * 0.6f; + this->fishLimb23RotYDelta = (cosf(this->fishLimbRotPhase + 0.4f) * (*this).fishLimbRotPhaseMag * 2.0f) * 0.6f; } distX = this->fishTargetPos.x - this->actor.world.pos.x; @@ -3299,6 +3287,8 @@ void Fishing_UpdateFish(Actor* thisx, PlayState* play2) { Math_ApproachZeroF(&this->actor.speed, 1.0f, 0.01f); if ((this->actor.speed == 0.0f) || (this->actor.world.pos.y > (WATER_SURFACE_Y(play) - 5.0f))) { + Vec3f spB8; + this->fishTargetPos.x = Rand_ZeroFloat(300.0f); this->fishTargetPos.z = Rand_ZeroFloat(300.0f); this->fishTargetPos.y = this->actor.floorHeight + 10.0f; @@ -3355,7 +3345,7 @@ void Fishing_UpdateFish(Actor* thisx, PlayState* play2) { this->fishTargetPos.z = sLurePos.z + targetPosOffset.z; if (sLureEquipped == FS_LURE_SINKING) { - this->fishTargetPos.y = sLurePos.y; + this->fishTargetPos.y = sLurePos.y + 0.0f; } else if (this->isLoach == 0) { this->fishTargetPos.y = sLurePos.y - 15.0f; } else { @@ -3366,7 +3356,7 @@ void Fishing_UpdateFish(Actor* thisx, PlayState* play2) { this->fishTargetPos.y = this->actor.floorHeight + 3.0f; } - if ((sLureEquipped != FS_LURE_SINKING) && (this->fishTargetPos.y < this->actor.world.pos.y)) { + if ((sLureEquipped != FS_LURE_SINKING) && (this->actor.world.pos.y > this->fishTargetPos.y)) { Math_ApproachF(&this->actor.world.pos.y, this->fishTargetPos.y, 0.1f, (this->actor.world.pos.y - this->fishTargetPos.y) * 0.1f); } @@ -3591,8 +3581,8 @@ void Fishing_UpdateFish(Actor* thisx, PlayState* play2) { (sqrtf(SQ(sLurePos.x) + SQ(sLurePos.z)) > 800.0f)) { this->timerArray[0] = 0; - this->unk_190 = 1.0f; this->fishState = this->fishStateNext; + this->unk_190 = 1.0f; this->unk_194 = 2000.0f; } else if (distToTarget < 10.0f) { if (sLurePos.y > (WATER_SURFACE_Y(play) - 10.0f)) { @@ -3648,6 +3638,10 @@ void Fishing_UpdateFish(Actor* thisx, PlayState* play2) { if ((sLureBitTimer != 0) && (sLineHooked == 0)) { // pull the line to hook it if (((input->rel.stick_y < -50) && (sStickAdjYPrev > -40)) || CHECK_BTN_ALL(input->press.button, BTN_A)) { + f32 temp_f0; + s32 pad; + f32 rumbleStrength; + if (input->rel.stick_y < -50) { temp_f0 = 40.0f - ((this->fishLength - 30.0f) * 1.333333f); if (temp_f0 > 0.0f) { @@ -3918,7 +3912,7 @@ void Fishing_UpdateFish(Actor* thisx, PlayState* play2) { Math_ApproachS(&this->fishLimbDRotZDelta, 11000, 2, 4000); Math_ApproachF(&sCatchCamX, 15.0f, 0.05f, 0.75f); - multiVecSrc.x = sCatchCamX; + multiVecSrc.x = sCatchCamX + 0.0f; if (sLinkAge != LINK_AGE_CHILD) { multiVecSrc.y = 30.0f; multiVecSrc.z = 55.0f; @@ -3993,7 +3987,7 @@ void Fishing_UpdateFish(Actor* thisx, PlayState* play2) { sLureCaughtWith = sLureEquipped; Actor_Kill(&this->actor); } else if ((this->isLoach == 0) && (sFishOnHandIsLoach == 0) && - ((s16)this->fishLength < (s16)sFishOnHandLength)) { + ((s16)sFishOnHandLength > (s16)this->fishLength)) { this->keepState = 1; this->timerArray[0] = 0x3C; @@ -4203,11 +4197,13 @@ void Fishing_UpdateFish(Actor* thisx, PlayState* play2) { } if ((this->actor.world.pos.y < WATER_SURFACE_Y(play)) && - (this->actor.world.pos.y > (WATER_SURFACE_Y(play) - 10.0f)) && ((this->stateAndTimer & 1) == 0) && - (this->actor.speed > 0.0f)) { - Vec3f pos = this->actor.world.pos; - pos.y = WATER_SURFACE_Y(play); - Fishing_SpawnRipple(&this->actor.projectedPos, play->specialEffects, &pos, 80.0f, 500.0f, 150, 90); + (this->actor.world.pos.y > (WATER_SURFACE_Y(play) - 10.0f))) { + if (((this->stateAndTimer & 1) == 0) && (this->actor.speed > 0.0f)) { + Vec3f pos = this->actor.world.pos; + + pos.y = WATER_SURFACE_Y(play); + Fishing_SpawnRipple(&this->actor.projectedPos, play->specialEffects, &pos, 80.0f, 500.0f, 150, 90); + } } if ((this->actor.speed > 0.0f) || (this->fishState == 5)) { @@ -4260,8 +4256,8 @@ void Fishing_UpdateFish(Actor* thisx, PlayState* play2) { if ((this->fishState == 5) && ((this->stateAndTimer & 1) == 0)) { Vec3f pos; - pos.x = Rand_CenteredFloat(10.0f) + this->actor.world.pos.x; - pos.z = Rand_CenteredFloat(10.0f) + this->actor.world.pos.z; + pos.x = this->actor.world.pos.x + Rand_CenteredFloat(10.0f); + pos.z = this->actor.world.pos.z + Rand_CenteredFloat(10.0f); pos.y = this->actor.floorHeight + 5.0f; Fishing_SpawnWaterDust(&this->actor.projectedPos, play->specialEffects, &pos, (this->fishLength * 0.005f) + 0.15f); @@ -4279,9 +4275,9 @@ void Fishing_UpdateFish(Actor* thisx, PlayState* play2) { this->bubbleTime--; for (i = 0; i < 2; i++) { - pos.x = Rand_CenteredFloat(range) + this->actor.world.pos.x; - pos.y = Rand_CenteredFloat(range) + this->actor.world.pos.y; - pos.z = Rand_CenteredFloat(range) + this->actor.world.pos.z; + pos.x = this->actor.world.pos.x + Rand_CenteredFloat(range); + pos.y = this->actor.world.pos.y + Rand_CenteredFloat(range); + pos.z = this->actor.world.pos.z + Rand_CenteredFloat(range); Fishing_SpawnBubble(&this->actor.projectedPos, play->specialEffects, &pos, Rand_ZeroFloat(0.035f) + 0.04f, 0); } @@ -4347,9 +4343,9 @@ void Fishing_DrawFish(Actor* thisx, PlayState* play) { Gfx_SetupDL_25Opa(play->state.gfxCtx); Matrix_Translate(this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, MTXMODE_NEW); - Matrix_RotateY(BINANG_TO_RAD_ALT(this->unk_162 + this->actor.shape.rot.y), MTXMODE_APPLY); - Matrix_RotateX(BINANG_TO_RAD_ALT(this->unk_160 + this->actor.shape.rot.x), MTXMODE_APPLY); - Matrix_RotateZ(BINANG_TO_RAD_ALT(this->unk_164 + this->actor.shape.rot.z), MTXMODE_APPLY); + Matrix_RotateY(BINANG_TO_RAD_ALT(this->actor.shape.rot.y + (*this).unk_162), MTXMODE_APPLY); + Matrix_RotateX(BINANG_TO_RAD_ALT(this->actor.shape.rot.x + (*this).unk_160), MTXMODE_APPLY); + Matrix_RotateZ(BINANG_TO_RAD_ALT(this->actor.shape.rot.z + (*this).unk_164), MTXMODE_APPLY); Matrix_Scale(this->actor.scale.x, this->actor.scale.y, this->actor.scale.z, MTXMODE_APPLY); if (this->isLoach == 0) { @@ -4407,7 +4403,7 @@ void Fishing_UpdatePondProps(PlayState* play) { Actor* actor; s16 i; - for (i = 0; i < POND_PROP_COUNT; i++) { + for (i = 0; i < POND_PROP_COUNT; i++, prop++) { if (prop->type != FS_PROP_NONE) { prop->shouldDraw = false; prop->timer++; @@ -4449,13 +4445,11 @@ void Fishing_UpdatePondProps(PlayState* play) { Math_ApproachS(&prop->lilyPadAngle, 0, 20, 80); prop->pos.y = - (Math_SinS(prop->timer * 0x1000) * prop->lilyPadOffset) + (WATER_SURFACE_Y(play) + 2.0f); + WATER_SURFACE_Y(play) + 2.0f + (Math_SinS(prop->timer * 0x1000) * prop->lilyPadOffset); Math_ApproachZeroF(&prop->lilyPadOffset, 0.1f, 0.02f); } } } - - prop++; } if (sSubCamId == SUB_CAM_ID_DONE) { @@ -4473,7 +4467,7 @@ void Fishing_DrawPondProps(PlayState* play) { Matrix_Push(); - for (i = 0; i < POND_PROP_COUNT; i++) { + for (i = 0; i < POND_PROP_COUNT; i++, prop++) { if (prop->type == FS_PROP_REED) { if (materialFlag == 0) { gSPDisplayList(POLY_XLU_DISP++, gFishingReedMaterialDL); @@ -4491,13 +4485,11 @@ void Fishing_DrawPondProps(PlayState* play) { gSPDisplayList(POLY_XLU_DISP++, gFishingReedModelDL); } } - - prop++; } - prop = &sPondProps[0]; materialFlag = 0; - for (i = 0; i < POND_PROP_COUNT; i++) { + prop = &sPondProps[0]; + for (i = 0; i < POND_PROP_COUNT; i++, prop++) { if (prop->type == FS_PROP_WOOD_POST) { if (materialFlag == 0) { gSPDisplayList(POLY_OPA_DISP++, gFishingWoodPostMaterialDL); @@ -4512,13 +4504,11 @@ void Fishing_DrawPondProps(PlayState* play) { gSPDisplayList(POLY_OPA_DISP++, gFishingWoodPostModelDL); } } - - prop++; } - prop = &sPondProps[0]; materialFlag = 0; - for (i = 0; i < POND_PROP_COUNT; i++) { + prop = &sPondProps[0]; + for (i = 0; i < POND_PROP_COUNT; i++, prop++) { if (prop->type == FS_PROP_LILY_PAD) { if (materialFlag == 0) { gSPDisplayList(POLY_XLU_DISP++, gFishingLilyPadMaterialDL); @@ -4536,13 +4526,11 @@ void Fishing_DrawPondProps(PlayState* play) { gSPDisplayList(POLY_XLU_DISP++, gFishingLilyPadModelDL); } } - - prop++; } - prop = &sPondProps[0]; materialFlag = 0; - for (i = 0; i < POND_PROP_COUNT; i++) { + prop = &sPondProps[0]; + for (i = 0; i < POND_PROP_COUNT; i++, prop++) { if (prop->type == FS_PROP_ROCK) { if (materialFlag == 0) { gSPDisplayList(POLY_OPA_DISP++, gFishingRockMaterialDL); @@ -4558,8 +4546,6 @@ void Fishing_DrawPondProps(PlayState* play) { gSPDisplayList(POLY_OPA_DISP++, gFishingRockModelDL); } } - - prop++; } Matrix_Pop(); @@ -4599,10 +4585,10 @@ void Fishing_UpdateGroupFishes(PlayState* play) { basePos[0].y = -35.0f; basePos[0].z = cosf(sFishGroupAngle1) * 720.0f; - temp1 = refPos->x - basePos[0].x; - temp2 = refPos->z - basePos[0].z; + dx = refPos->x - basePos[0].x; + dz = refPos->z - basePos[0].z; - if ((SQ(temp1) + SQ(temp2)) < SQ(50.0f)) { + if ((SQ(dx) + SQ(dz)) < SQ(50.0f)) { sFishGroupAngle1 += 0.3f; groupContactFlags |= 1; } else if (sFishGroupVar != 0.0f) { @@ -4616,10 +4602,10 @@ void Fishing_UpdateGroupFishes(PlayState* play) { basePos[1].y = -35.0f; basePos[1].z = cosf(sFishGroupAngle2) * 720.0f; - temp1 = refPos->x - basePos[1].x; - temp2 = refPos->z - basePos[1].z; + dx = refPos->x - basePos[1].x; + dz = refPos->z - basePos[1].z; - if ((SQ(temp1) + SQ(temp2)) < SQ(50.0f)) { + if ((SQ(dx) + SQ(dz)) < SQ(50.0f)) { sFishGroupAngle2 -= 0.3f; groupContactFlags |= 2; } else if (sFishGroupVar != 0.0f) { @@ -4633,10 +4619,10 @@ void Fishing_UpdateGroupFishes(PlayState* play) { basePos[2].y = -35.0f; basePos[2].z = cosf(sFishGroupAngle3) * 720.0f; - temp1 = refPos->x - basePos[2].x; - temp2 = refPos->z - basePos[2].z; + dx = refPos->x - basePos[2].x; + dz = refPos->z - basePos[2].z; - if ((SQ(temp1) + SQ(temp2)) < SQ(50.0f)) { + if ((SQ(dx) + SQ(dz)) < SQ(50.0f)) { sFishGroupAngle3 -= 0.3f; groupContactFlags |= 4; } else if (sFishGroupVar != 0.0f) { @@ -4652,7 +4638,7 @@ void Fishing_UpdateGroupFishes(PlayState* play) { spD8 = 1.0f; } - for (i = 0; i < GROUP_FISH_COUNT; i++) { + for (i = 0; i < GROUP_FISH_COUNT; i++, fish++) { if (fish->type != FS_GROUP_FISH_NONE) { fish->timer++; @@ -4733,7 +4719,7 @@ void Fishing_UpdateGroupFishes(PlayState* play) { Math_ApproachF(&fish->velY, 0.75f, 1.0f, 0.05f); temp1 = fish->velY * spD8; - temp2 = Math_CosS(fish->unk_3C) * temp1; + temp2 = temp1 * Math_CosS(fish->unk_3C); fish->pos.x += temp2 * Math_SinS(fish->unk_3E); fish->pos.y += temp1 * Math_SinS(fish->unk_3C); @@ -4746,8 +4732,6 @@ void Fishing_UpdateGroupFishes(PlayState* play) { fish->scaleX = (cosf(fish->unk_30) * fish->unk_38) + offset; } } - - fish++; } sFishGroupVar = 0.0f; @@ -4780,7 +4764,7 @@ void Fishing_DrawGroupFishes(PlayState* play) { Matrix_Translate(fish->pos.x, fish->pos.y, fish->pos.z, MTXMODE_NEW); Matrix_RotateY(BINANG_TO_RAD_ALT2((f32)fish->unk_3E), MTXMODE_APPLY); Matrix_RotateX(BINANG_TO_RAD_ALT2(-(f32)fish->unk_3C), MTXMODE_APPLY); - Matrix_Scale(fish->scaleX * scale, scale, scale, MTXMODE_APPLY); + Matrix_Scale(scale * fish->scaleX, scale, scale, MTXMODE_APPLY); MATRIX_FINALIZE_AND_LOAD(POLY_OPA_DISP++, play->state.gfxCtx, "../z_fishing.c", 8093); gSPDisplayList(POLY_OPA_DISP++, gFishingGroupFishModelDL); @@ -5066,8 +5050,8 @@ void Fishing_HandleOwnerDialog(Fishing* this, PlayState* play) { } } } else { - getItemId = GI_RUPEE_PURPLE; sFishOnHandLength = 0.0f; // doesn't record loach + getItemId = GI_RUPEE_PURPLE; } this->actor.parent = NULL; @@ -5155,6 +5139,7 @@ static Vec3s sSinkingLureLocations[] = { }; void Fishing_UpdateOwner(Actor* thisx, PlayState* play2) { + static Vec3f sStreamSfxProjectedPos; PlayState* play = play2; Fishing* this = (Fishing*)thisx; Vec3f multiVecSrc; @@ -5360,6 +5345,7 @@ void Fishing_UpdateOwner(Actor* thisx, PlayState* play2) { Math_ApproachF(&sSubCamAt.y, sLurePos.y, subCamAtMaxVelFrac, 50.0f * sSubCamVelFactor); Math_ApproachF(&sSubCamAt.z, sLurePos.z, subCamAtMaxVelFrac, fabsf(lureDist.z) * sSubCamVelFactor); + multiVecSrc.x = -30.0f; multiVecSrc.x = 0.0f - D_80B7FED0; if (sLinkAge != LINK_AGE_CHILD) { multiVecSrc.y = 80.0f; @@ -5541,7 +5527,7 @@ void Fishing_UpdateOwner(Actor* thisx, PlayState* play2) { Math_ApproachF(&sCatchCamX, 15.0f, 0.1f, 0.75f); - multiVecSrc.x = sCatchCamX - 15.0f; + multiVecSrc.x = sCatchCamX + 0.0f - 15.0f; if (sLinkAge != LINK_AGE_CHILD) { multiVecSrc.y = 60.0f; @@ -5621,8 +5607,8 @@ void Fishing_UpdateOwner(Actor* thisx, PlayState* play2) { ((play->gameplayFrames % 2) == 0)) { Vec3f pos; - pos.x = Rand_CenteredFloat(20.0f) + player->actor.world.pos.x; - pos.z = Rand_CenteredFloat(20.0f) + player->actor.world.pos.z; + pos.x = player->actor.world.pos.x + Rand_CenteredFloat(20.0f); + pos.z = player->actor.world.pos.z + Rand_CenteredFloat(20.0f); pos.y = player->actor.floorHeight + 5.0f; Fishing_SpawnWaterDust(NULL, play->specialEffects, &pos, 0.5f); } @@ -5674,11 +5660,11 @@ void Fishing_UpdateOwner(Actor* thisx, PlayState* play2) { } sREG(14) = 0; -#endif PRINTF_COLOR_GREEN(); PRINTF("zelda_time %x\n", ((void)0, gSaveContext.save.dayTime)); PRINTF_RST(); +#endif if (sStormChanceTimer >= 2) { sStormChanceTimer--; @@ -5743,9 +5729,9 @@ void Fishing_UpdateOwner(Actor* thisx, PlayState* play2) { rot.z = (Camera_GetInputDirYaw(mainCam) * -(M_PI / 0x8000)) + rot.y; for (i = 0; i < (u8)sStormStrength; i++) { - pos.x = Rand_CenteredFloat(700.0f) + play->view.eye.x; + pos.x = play->view.eye.x + Rand_CenteredFloat(700.0f); pos.y = (Rand_ZeroFloat(100.0f) + 150.0f) - 170.0f; - pos.z = Rand_CenteredFloat(700.0f) + play->view.eye.z; + pos.z = play->view.eye.z + Rand_CenteredFloat(700.0f); if (pos.z < 1160.0f) { SkinMatrix_Vec3fMtxFMultXYZW(&play->viewProjectionMtxF, &pos, &projectedPos, &sProjectedW); @@ -5780,9 +5766,9 @@ void Fishing_UpdateOwner(Actor* thisx, PlayState* play2) { BREG(26) = 0; Message_StartTextbox(play, 0x407B + BREG(27), NULL); } -#endif PRINTF("HI_SCORE = %x\n", HIGH_SCORE(HS_FISHING)); +#endif } s32 Fishing_OwnerOverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, void* thisx) { @@ -5817,7 +5803,7 @@ static void* sFishingOwnerEyeTexs[] = { }; void Fishing_DrawOwner(Actor* thisx, PlayState* play) { - s32 pad; + PlayState* play2 = (PlayState*)play; Fishing* this = (Fishing*)thisx; Input* input = &play->state.input[0]; @@ -5833,10 +5819,10 @@ void Fishing_DrawOwner(Actor* thisx, PlayState* play) { Fishing_OwnerOverrideLimbDraw, Fishing_OwnerPostLimbDraw, this); } - Fishing_DrawPondProps(play); - Fishing_DrawEffects(play->specialEffects, play); - Fishing_DrawGroupFishes(play); - Fishing_DrawStreamSplash(play); + Fishing_DrawPondProps(play2); + Fishing_DrawEffects(play2->specialEffects, play2); + Fishing_DrawGroupFishes(play2); + Fishing_DrawStreamSplash(play2); if (sFishingMusicDelay != 0) { sFishingMusicDelay--; @@ -5857,10 +5843,10 @@ void Fishing_DrawOwner(Actor* thisx, PlayState* play) { } if ((sFishingPlayingState != 0) && sIsRodVisible) { - Fishing_DrawRod(play); + Fishing_DrawRod(play2); Fishing_UpdateLinePos(sReelLinePos); - Fishing_UpdateLine(play, &sRodTipPos, sReelLinePos, sReelLineRot, sReelLineUnk); - Fishing_DrawLureAndLine(play, sReelLinePos, sReelLineRot); + Fishing_UpdateLine(play2, &sRodTipPos, sReelLinePos, sReelLineRot, sReelLineUnk); + Fishing_DrawLureAndLine(play2, sReelLinePos, sReelLineRot); sStickAdjXPrev = input->rel.stick_x; sStickAdjYPrev = input->rel.stick_y; @@ -5878,7 +5864,7 @@ void Fishing_DrawOwner(Actor* thisx, PlayState* play) { gSPDisplayList(POLY_XLU_DISP++, gFishingAquariumContainerDL); if ((sFishingPlayingState != 0) && (sLureEquipped == FS_LURE_SINKING)) { - Fishing_DrawSinkingLure(play); + Fishing_DrawSinkingLure(play2); } CLOSE_DISPS(play->state.gfxCtx, "../z_fishing.c", 9305); diff --git a/src/overlays/actors/ovl_Fishing/z_fishing.h b/src/overlays/actors/ovl_Fishing/z_fishing.h index 3524c88a74..6836ce79f8 100644 --- a/src/overlays/actors/ovl_Fishing/z_fishing.h +++ b/src/overlays/actors/ovl_Fishing/z_fishing.h @@ -20,12 +20,12 @@ typedef struct Fishing { /* 0x015A */ s16 fishStateNext; /* 0x015C */ s16 stateAndTimer; // fish use as timer that's AND'd, owner as talking state /* 0x015E */ s16 unk_15E; - /* 0x0160 */ s16 unk_160; // fish use as rotateX, owner as index of eye texture - /* 0x0162 */ s16 unk_162; // fish use as rotateY, owner as index of eye texture - /* 0x0164 */ s16 unk_164; // fish use as rotateZ, owner as rotation of head + /* 0x0160 */ s16 unk_160; // fish use as rotateX, owner as index of eye texture (TODO: probably part of a "work" array) + /* 0x0162 */ s16 unk_162; // fish use as rotateY, owner as index of eye texture (TODO: probably part of a "work" array) + /* 0x0164 */ s16 unk_164; // fish use as rotateZ, owner as rotation of head (TODO: probably part of a "work" array) /* 0x0166 */ Vec3s rotationTarget; /* 0x016C */ s16 fishLimb23RotYDelta; - /* 0x016E */ s16 unk_16E; + /* 0x016E */ s16 unk_16E; // (TODO: probably part of a "work" array) /* 0x0170 */ s16 fishLimbDRotZDelta; /* 0x0172 */ s16 fishLimbEFRotYDelta; /* 0x0174 */ s16 fishLimb89RotYDelta; @@ -38,7 +38,7 @@ typedef struct Fishing { /* 0x0190 */ f32 unk_190; // fishLimbRotPhaseStep target /* 0x0194 */ f32 unk_194; // fishLimbRotPhaseMag target /* 0x0198 */ f32 fishLimbRotPhaseStep; - /* 0x019C */ f32 fishLimbRotPhaseMag; + /* 0x019C */ f32 fishLimbRotPhaseMag; // (TODO: probably part of an "fwork" array) /* 0x01A0 */ s16 bumpTimer; // set when hitting a wall. /* 0x01A2 */ s16 unk_1A2; // "scared" timer? /* 0x01A4 */ s16 unk_1A4; // "scared" timer? set at same time as above diff --git a/src/overlays/actors/ovl_Item_B_Heart/z_item_b_heart.c b/src/overlays/actors/ovl_Item_B_Heart/z_item_b_heart.c index da8ddad524..a690bfa73f 100644 --- a/src/overlays/actors/ovl_Item_B_Heart/z_item_b_heart.c +++ b/src/overlays/actors/ovl_Item_B_Heart/z_item_b_heart.c @@ -5,6 +5,15 @@ */ #include "z_item_b_heart.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64item.h" +#include "z64play.h" + #include "assets/objects/object_gi_hearts/object_gi_hearts.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Item_B_Heart/z_item_b_heart.h b/src/overlays/actors/ovl_Item_B_Heart/z_item_b_heart.h index 432a7ef499..ef92f86b86 100644 --- a/src/overlays/actors/ovl_Item_B_Heart/z_item_b_heart.h +++ b/src/overlays/actors/ovl_Item_B_Heart/z_item_b_heart.h @@ -2,7 +2,7 @@ #define Z_ITEM_B_HEART_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ItemBHeart; diff --git a/src/overlays/actors/ovl_Item_Etcetera/z_item_etcetera.c b/src/overlays/actors/ovl_Item_Etcetera/z_item_etcetera.c index 5527cef6df..e0e0e88d83 100644 --- a/src/overlays/actors/ovl_Item_Etcetera/z_item_etcetera.c +++ b/src/overlays/actors/ovl_Item_Etcetera/z_item_etcetera.c @@ -6,6 +6,14 @@ #include "z_item_etcetera.h" +#include "libc64/qrand.h" +#include "libu64/debug.h" +#include "rand.h" +#include "z64draw.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64save.h" + #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED void ItemEtcetera_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_Item_Etcetera/z_item_etcetera.h b/src/overlays/actors/ovl_Item_Etcetera/z_item_etcetera.h index c5054884bd..e938c81267 100644 --- a/src/overlays/actors/ovl_Item_Etcetera/z_item_etcetera.h +++ b/src/overlays/actors/ovl_Item_Etcetera/z_item_etcetera.h @@ -2,11 +2,11 @@ #define Z_ITEM_ETC_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ItemEtcetera; -typedef void (*ItemEtceteraActionFunc)(struct ItemEtcetera*, PlayState*); +typedef void (*ItemEtceteraActionFunc)(struct ItemEtcetera*, struct PlayState*); typedef struct ItemEtcetera { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Item_Inbox/z_item_inbox.c b/src/overlays/actors/ovl_Item_Inbox/z_item_inbox.c index e1b21b2a85..40594c86f6 100644 --- a/src/overlays/actors/ovl_Item_Inbox/z_item_inbox.c +++ b/src/overlays/actors/ovl_Item_Inbox/z_item_inbox.c @@ -5,6 +5,8 @@ */ #include "z_item_inbox.h" +#include "z64draw.h" +#include "z64play.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) diff --git a/src/overlays/actors/ovl_Item_Inbox/z_item_inbox.h b/src/overlays/actors/ovl_Item_Inbox/z_item_inbox.h index 3bf3cf1570..d13bad0053 100644 --- a/src/overlays/actors/ovl_Item_Inbox/z_item_inbox.h +++ b/src/overlays/actors/ovl_Item_Inbox/z_item_inbox.h @@ -2,11 +2,11 @@ #define Z_ITEM_INBOX_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ItemInbox; -typedef void (*ItemInboxActionFunc)(struct ItemInbox*, PlayState*); +typedef void (*ItemInboxActionFunc)(struct ItemInbox*, struct PlayState*); typedef struct ItemInbox { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Item_Ocarina/z_item_ocarina.c b/src/overlays/actors/ovl_Item_Ocarina/z_item_ocarina.c index 89d807318b..fa4f500c87 100644 --- a/src/overlays/actors/ovl_Item_Ocarina/z_item_ocarina.c +++ b/src/overlays/actors/ovl_Item_Ocarina/z_item_ocarina.c @@ -5,6 +5,15 @@ */ #include "z_item_ocarina.h" + +#include "libu64/debug.h" +#include "segmented_address.h" +#include "sfx.h" +#include "z64draw.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/scenes/overworld/spot00/spot00_scene.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Item_Ocarina/z_item_ocarina.h b/src/overlays/actors/ovl_Item_Ocarina/z_item_ocarina.h index 9a02b99ed0..3ae598e7d1 100644 --- a/src/overlays/actors/ovl_Item_Ocarina/z_item_ocarina.h +++ b/src/overlays/actors/ovl_Item_Ocarina/z_item_ocarina.h @@ -2,11 +2,11 @@ #define Z_ITEM_OCARINA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ItemOcarina; -typedef void (*ItemOcarinaActionFunc)(struct ItemOcarina*, PlayState*); +typedef void (*ItemOcarinaActionFunc)(struct ItemOcarina*, struct PlayState*); typedef struct ItemOcarina { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Item_Shield/z_item_shield.c b/src/overlays/actors/ovl_Item_Shield/z_item_shield.c index 0307862327..357e1e8f71 100644 --- a/src/overlays/actors/ovl_Item_Shield/z_item_shield.c +++ b/src/overlays/actors/ovl_Item_Shield/z_item_shield.c @@ -4,8 +4,21 @@ * Description: Deku Shield */ -#include "terminal.h" #include "z_item_shield.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "segmented_address.h" +#include "sys_math.h" +#include "sys_matrix.h" +#include "terminal.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64item.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_link_child/object_link_child.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Item_Shield/z_item_shield.h b/src/overlays/actors/ovl_Item_Shield/z_item_shield.h index c7984f4a4d..564170e465 100644 --- a/src/overlays/actors/ovl_Item_Shield/z_item_shield.h +++ b/src/overlays/actors/ovl_Item_Shield/z_item_shield.h @@ -2,11 +2,11 @@ #define Z_ITEM_SHIELD_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ItemShield; -typedef void (*ItemShieldActionFunc)(struct ItemShield*, PlayState*); +typedef void (*ItemShieldActionFunc)(struct ItemShield*, struct PlayState*); typedef struct ItemShield { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Magic_Dark/z_magic_dark.c b/src/overlays/actors/ovl_Magic_Dark/z_magic_dark.c index d809a82ebe..0dfabfee4c 100644 --- a/src/overlays/actors/ovl_Magic_Dark/z_magic_dark.c +++ b/src/overlays/actors/ovl_Magic_Dark/z_magic_dark.c @@ -5,6 +5,16 @@ */ #include "z_magic_dark.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_UPDATE_DURING_OCARINA) diff --git a/src/overlays/actors/ovl_Magic_Dark/z_magic_dark.h b/src/overlays/actors/ovl_Magic_Dark/z_magic_dark.h index 3d7ef82298..59344baff1 100644 --- a/src/overlays/actors/ovl_Magic_Dark/z_magic_dark.h +++ b/src/overlays/actors/ovl_Magic_Dark/z_magic_dark.h @@ -2,7 +2,7 @@ #define Z_MAGIC_DARK_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct MagicDark; 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 ede5f3691c..f93ded2f02 100644 --- a/src/overlays/actors/ovl_Magic_Fire/z_magic_fire.c +++ b/src/overlays/actors/ovl_Magic_Fire/z_magic_fire.c @@ -6,6 +6,15 @@ #include "z_magic_fire.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" + #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_UPDATE_DURING_OCARINA) void MagicFire_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_Magic_Fire/z_magic_fire.h b/src/overlays/actors/ovl_Magic_Fire/z_magic_fire.h index 4a9cb5188c..ae953c0d3c 100644 --- a/src/overlays/actors/ovl_Magic_Fire/z_magic_fire.h +++ b/src/overlays/actors/ovl_Magic_Fire/z_magic_fire.h @@ -2,7 +2,7 @@ #define Z_MAGIC_FIRE_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct MagicFire; 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 0694e07128..2872bdc70c 100644 --- a/src/overlays/actors/ovl_Magic_Wind/z_magic_wind.c +++ b/src/overlays/actors/ovl_Magic_Wind/z_magic_wind.c @@ -6,6 +6,14 @@ #include "z_magic_wind.h" +#include "libu64/debug.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sfx.h" +#include "z64curve.h" +#include "z64play.h" +#include "z64player.h" + #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_UPDATE_DURING_OCARINA) void MagicWind_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_Magic_Wind/z_magic_wind.h b/src/overlays/actors/ovl_Magic_Wind/z_magic_wind.h index e9521f7002..b7ba93c264 100644 --- a/src/overlays/actors/ovl_Magic_Wind/z_magic_wind.h +++ b/src/overlays/actors/ovl_Magic_Wind/z_magic_wind.h @@ -2,11 +2,12 @@ #define Z_MAGIC_WIND_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" +#include "z64curve.h" struct MagicWind; -typedef void (*MagicWindFunc)(struct MagicWind* this, PlayState* play); +typedef void (*MagicWindFunc)(struct MagicWind* this, struct PlayState* play); typedef struct MagicWind { /* 0x0000 */ Actor actor; 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 1915999df6..1dc67c448f 100644 --- a/src/overlays/actors/ovl_Mir_Ray/z_mir_ray.c +++ b/src/overlays/actors/ovl_Mir_Ray/z_mir_ray.c @@ -5,6 +5,19 @@ */ #include "z_mir_ray.h" + +#include "libu64/debug.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sfx.h" +#include "sys_math3d.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64light.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/object_mir_ray/object_mir_ray.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED) @@ -118,10 +131,11 @@ void MirRay_SetupCollider(MirRay* this) { colliderOffset.x = (this->poolPt.x - this->sourcePt.x) * dataEntry->unk_10; colliderOffset.y = (this->poolPt.y - this->sourcePt.y) * dataEntry->unk_10; colliderOffset.z = (this->poolPt.z - this->sourcePt.z) * dataEntry->unk_10; - this->colliderSph.elements[0].dim.worldSphere.center.x = colliderOffset.x + this->sourcePt.x; - this->colliderSph.elements[0].dim.worldSphere.center.y = colliderOffset.y + this->sourcePt.y; - this->colliderSph.elements[0].dim.worldSphere.center.z = colliderOffset.z + this->sourcePt.z; - this->colliderSph.elements[0].dim.worldSphere.radius = dataEntry->unk_14 * this->colliderSph.elements->dim.scale; + this->colliderJntSph.elements[0].dim.worldSphere.center.x = colliderOffset.x + this->sourcePt.x; + this->colliderJntSph.elements[0].dim.worldSphere.center.y = colliderOffset.y + this->sourcePt.y; + this->colliderJntSph.elements[0].dim.worldSphere.center.z = colliderOffset.z + this->sourcePt.z; + this->colliderJntSph.elements[0].dim.worldSphere.radius = + dataEntry->unk_14 * this->colliderJntSph.elements->dim.scale; } // Set up a light point between source point and reflection point. Reflection point is the pool point (for windows) or @@ -208,8 +222,8 @@ void MirRay_Init(Actor* thisx, PlayState* play) { this->shieldCorners[5].y = -800.0f; if (PARAMS_GET_NOSHIFT(dataEntry->params, 1, 1)) { - Collider_InitJntSph(play, &this->colliderSph); - Collider_SetJntSph(play, &this->colliderSph, &this->actor, &sJntSphInit, &this->colliderSphItem); + Collider_InitJntSph(play, &this->colliderJntSph); + Collider_SetJntSph(play, &this->colliderJntSph, &this->actor, &sJntSphInit, this->colliderJntSphElements); if (!PARAMS_GET_NOSHIFT(dataEntry->params, 2, 1)) { // Beams not from mirrors MirRay_SetupCollider(this); } @@ -230,7 +244,7 @@ void MirRay_Destroy(Actor* thisx, PlayState* play) { LightContext_RemoveLight(play, &play->lightCtx, this->lightNode); if (sMirRayData[this->actor.params].params & 2) { - Collider_DestroyJntSph(play, &this->colliderSph); + Collider_DestroyJntSph(play, &this->colliderJntSph); } Collider_DestroyQuad(play, &this->shieldRay); @@ -248,7 +262,7 @@ void MirRay_Update(Actor* thisx, PlayState* play) { if (sMirRayData[this->actor.params].params & 4) { // Beams from mirrors MirRay_SetupCollider(this); } - CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderSph.base); + CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderJntSph.base); } if (this->reflectIntensity > 0.0f) { CollisionCheck_SetAT(play, &play->colChkCtx, &this->shieldRay.base); diff --git a/src/overlays/actors/ovl_Mir_Ray/z_mir_ray.h b/src/overlays/actors/ovl_Mir_Ray/z_mir_ray.h index 4e93149075..245cf1007b 100644 --- a/src/overlays/actors/ovl_Mir_Ray/z_mir_ray.h +++ b/src/overlays/actors/ovl_Mir_Ray/z_mir_ray.h @@ -2,7 +2,8 @@ #define Z_MIR_RAY_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" +#include "z64light.h" struct MirRay; @@ -22,14 +23,14 @@ typedef struct MirRayDataEntry { typedef struct MirRayShieldReflection { /* 0x00 */ Vec3f pos; /* 0x0C */ MtxF mtx; - /* 0x4C */ CollisionPoly* reflectionPoly; + /* 0x4C */ struct CollisionPoly* reflectionPoly; /* 0x50 */ u8 opacity; } MirRayShieldReflection; // size = 0x54 typedef struct MirRay { /* 0x0000 */ Actor actor; - /* 0x014C */ ColliderJntSph colliderSph; - /* 0x016C */ ColliderJntSphElement colliderSphItem; + /* 0x014C */ ColliderJntSph colliderJntSph; + /* 0x016C */ ColliderJntSphElement colliderJntSphElements[1]; /* 0x01AC */ ColliderQuad shieldRay; /* 0x022C */ f32 reflectIntensity; // Reflection occurs if it is positive, brightness depends on it /* 0x0230 */ Vec3f shieldCorners[6]; 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 a7bf1716d7..f2837d8481 100644 --- a/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c +++ b/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c @@ -5,9 +5,25 @@ */ #include "z_obj_bean.h" -#include "assets/objects/object_mamenoki/object_mamenoki.h" -#include "assets/objects/gameplay_keep/gameplay_keep.h" + +#include "libc64/qrand.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "regs.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_math3d.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64cutscene_flags.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64save.h" + +#include "assets/objects/gameplay_keep/gameplay_keep.h" +#include "assets/objects/object_mamenoki/object_mamenoki.h" #define FLAGS ACTOR_FLAG_IGNORE_POINT_LIGHTS diff --git a/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.h b/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.h index 317db48216..42ba39261c 100644 --- a/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.h +++ b/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.h @@ -2,11 +2,11 @@ #define Z_OBJ_BEAN_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ObjBean; -typedef void (*ObjBeanActionFunc)(struct ObjBean*, PlayState*); +typedef void (*ObjBeanActionFunc)(struct ObjBean*, struct PlayState*); typedef void (*ObjBeanTransformFunc)(struct ObjBean*); typedef struct ObjBean { diff --git a/src/overlays/actors/ovl_Obj_Blockstop/z_obj_blockstop.c b/src/overlays/actors/ovl_Obj_Blockstop/z_obj_blockstop.c index cb7cba62c0..8f24b7e647 100644 --- a/src/overlays/actors/ovl_Obj_Blockstop/z_obj_blockstop.c +++ b/src/overlays/actors/ovl_Obj_Blockstop/z_obj_blockstop.c @@ -7,6 +7,10 @@ #include "z_obj_blockstop.h" #include "overlays/actors/ovl_Obj_Oshihiki/z_obj_oshihiki.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64play.h" + #define FLAGS 0 void ObjBlockstop_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_Obj_Blockstop/z_obj_blockstop.h b/src/overlays/actors/ovl_Obj_Blockstop/z_obj_blockstop.h index f6ff149e9d..e0159e0f97 100644 --- a/src/overlays/actors/ovl_Obj_Blockstop/z_obj_blockstop.h +++ b/src/overlays/actors/ovl_Obj_Blockstop/z_obj_blockstop.h @@ -2,7 +2,7 @@ #define Z_OBJ_BLOCKSTOP_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ObjBlockstop; diff --git a/src/overlays/actors/ovl_Obj_Bombiwa/z_obj_bombiwa.c b/src/overlays/actors/ovl_Obj_Bombiwa/z_obj_bombiwa.c index 68e1687aa8..9563d5d2b4 100644 --- a/src/overlays/actors/ovl_Obj_Bombiwa/z_obj_bombiwa.c +++ b/src/overlays/actors/ovl_Obj_Bombiwa/z_obj_bombiwa.c @@ -6,6 +6,15 @@ #include "z_obj_bombiwa.h" #include "overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h" + +#include "libc64/qrand.h" +#include "ichain.h" +#include "rand.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/object_bombiwa/object_bombiwa.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Obj_Bombiwa/z_obj_bombiwa.h b/src/overlays/actors/ovl_Obj_Bombiwa/z_obj_bombiwa.h index 33597276b0..9c5c38d127 100644 --- a/src/overlays/actors/ovl_Obj_Bombiwa/z_obj_bombiwa.h +++ b/src/overlays/actors/ovl_Obj_Bombiwa/z_obj_bombiwa.h @@ -2,7 +2,7 @@ #define Z_OBJ_BOMBIWA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ObjBombiwa; diff --git a/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c b/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c index 6f86b829a4..d3affc90a9 100644 --- a/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c +++ b/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.c @@ -6,6 +6,17 @@ #include "z_obj_comb.h" #include "overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "sys_matrix.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/gameplay_field_keep/gameplay_field_keep.h" #define FLAGS 0 @@ -151,7 +162,7 @@ void ObjComb_Init(Actor* thisx, PlayState* play) { Actor_ProcessInitChain(&this->actor, sInitChain); Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderItems); + Collider_SetJntSph(play, &this->collider, &this->actor, &sJntSphInit, this->colliderElements); ObjComb_SetupWait(this); } diff --git a/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.h b/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.h index 3a6ce86413..acda97f16d 100644 --- a/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.h +++ b/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.h @@ -2,17 +2,17 @@ #define Z_OBJ_COMB_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ObjComb; -typedef void (*ObjCombActionFunc)(struct ObjComb*, PlayState*); +typedef void (*ObjCombActionFunc)(struct ObjComb*, struct PlayState*); typedef struct ObjComb { /* 0x0000 */ Actor actor; /* 0x014C */ ObjCombActionFunc actionFunc; /* 0x0150 */ ColliderJntSph collider; - /* 0x0170 */ ColliderJntSphElement colliderItems[1]; + /* 0x0170 */ ColliderJntSphElement colliderElements[1]; /* 0x01B0 */ s16 unk_1B0; /* 0x01B2 */ s16 unk_1B2; } ObjComb; // size = 0x01B4 diff --git a/src/overlays/actors/ovl_Obj_Dekujr/z_obj_dekujr.c b/src/overlays/actors/ovl_Obj_Dekujr/z_obj_dekujr.c index c3f1b1d4c3..7e07364fdc 100644 --- a/src/overlays/actors/ovl_Obj_Dekujr/z_obj_dekujr.c +++ b/src/overlays/actors/ovl_Obj_Dekujr/z_obj_dekujr.c @@ -5,6 +5,14 @@ */ #include "z_obj_dekujr.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/object_dekujr/object_dekujr.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) diff --git a/src/overlays/actors/ovl_Obj_Dekujr/z_obj_dekujr.h b/src/overlays/actors/ovl_Obj_Dekujr/z_obj_dekujr.h index 88818776a2..68b483f8dc 100644 --- a/src/overlays/actors/ovl_Obj_Dekujr/z_obj_dekujr.h +++ b/src/overlays/actors/ovl_Obj_Dekujr/z_obj_dekujr.h @@ -2,7 +2,7 @@ #define Z_OBJ_DEKUJR_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ObjDekujr; diff --git a/src/overlays/actors/ovl_Obj_Elevator/z_obj_elevator.c b/src/overlays/actors/ovl_Obj_Elevator/z_obj_elevator.c index 411d3e2ad9..fd9d335b65 100644 --- a/src/overlays/actors/ovl_Obj_Elevator/z_obj_elevator.c +++ b/src/overlays/actors/ovl_Obj_Elevator/z_obj_elevator.c @@ -5,6 +5,12 @@ */ #include "z_obj_elevator.h" + +#include "ichain.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_d_elevator/object_d_elevator.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Obj_Elevator/z_obj_elevator.h b/src/overlays/actors/ovl_Obj_Elevator/z_obj_elevator.h index e77d04a9ae..e6b8d4b6d8 100644 --- a/src/overlays/actors/ovl_Obj_Elevator/z_obj_elevator.h +++ b/src/overlays/actors/ovl_Obj_Elevator/z_obj_elevator.h @@ -2,11 +2,11 @@ #define Z_OBJ_ELEVATOR_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ObjElevator; -typedef void (*ObjElevatorActionFunc)(struct ObjElevator*, PlayState*); +typedef void (*ObjElevatorActionFunc)(struct ObjElevator*, struct PlayState*); typedef struct ObjElevator { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Obj_Hamishi/z_obj_hamishi.c b/src/overlays/actors/ovl_Obj_Hamishi/z_obj_hamishi.c index 3f45341e30..f7ec91ca08 100644 --- a/src/overlays/actors/ovl_Obj_Hamishi/z_obj_hamishi.c +++ b/src/overlays/actors/ovl_Obj_Hamishi/z_obj_hamishi.c @@ -5,6 +5,18 @@ */ #include "z_obj_hamishi.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "rand.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/gameplay_field_keep/gameplay_field_keep.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Obj_Hamishi/z_obj_hamishi.h b/src/overlays/actors/ovl_Obj_Hamishi/z_obj_hamishi.h index a897177f64..8a2256bf04 100644 --- a/src/overlays/actors/ovl_Obj_Hamishi/z_obj_hamishi.h +++ b/src/overlays/actors/ovl_Obj_Hamishi/z_obj_hamishi.h @@ -2,7 +2,7 @@ #define Z_OBJ_HAMISHI_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ObjHamishi; diff --git a/src/overlays/actors/ovl_Obj_Hana/z_obj_hana.c b/src/overlays/actors/ovl_Obj_Hana/z_obj_hana.c index badd99186d..f1f8000063 100644 --- a/src/overlays/actors/ovl_Obj_Hana/z_obj_hana.c +++ b/src/overlays/actors/ovl_Obj_Hana/z_obj_hana.c @@ -5,6 +5,11 @@ */ #include "z_obj_hana.h" + +#include "ichain.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/objects/gameplay_field_keep/gameplay_field_keep.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Obj_Hana/z_obj_hana.h b/src/overlays/actors/ovl_Obj_Hana/z_obj_hana.h index 7fdd3bfa89..69c08b4cb6 100644 --- a/src/overlays/actors/ovl_Obj_Hana/z_obj_hana.h +++ b/src/overlays/actors/ovl_Obj_Hana/z_obj_hana.h @@ -2,7 +2,7 @@ #define Z_OBJ_HANA_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ObjHana; diff --git a/src/overlays/actors/ovl_Obj_Hsblock/z_obj_hsblock.c b/src/overlays/actors/ovl_Obj_Hsblock/z_obj_hsblock.c index d946077670..e76c104657 100644 --- a/src/overlays/actors/ovl_Obj_Hsblock/z_obj_hsblock.c +++ b/src/overlays/actors/ovl_Obj_Hsblock/z_obj_hsblock.c @@ -5,6 +5,15 @@ */ #include "z_obj_hsblock.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "regs.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/object_d_hsblock/object_d_hsblock.h" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Obj_Hsblock/z_obj_hsblock.h b/src/overlays/actors/ovl_Obj_Hsblock/z_obj_hsblock.h index 6548ca9b97..299ba7d3d6 100644 --- a/src/overlays/actors/ovl_Obj_Hsblock/z_obj_hsblock.h +++ b/src/overlays/actors/ovl_Obj_Hsblock/z_obj_hsblock.h @@ -2,11 +2,11 @@ #define Z_OBJ_HSBLOCK_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ObjHsblock; -typedef void (*ObjHsblockActionFunc)(struct ObjHsblock*, PlayState*); +typedef void (*ObjHsblockActionFunc)(struct ObjHsblock*, struct PlayState*); typedef struct ObjHsblock { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Obj_Ice_Poly/z_obj_ice_poly.c b/src/overlays/actors/ovl_Obj_Ice_Poly/z_obj_ice_poly.c index 23b1728fcc..71ff43d277 100644 --- a/src/overlays/actors/ovl_Obj_Ice_Poly/z_obj_ice_poly.c +++ b/src/overlays/actors/ovl_Obj_Ice_Poly/z_obj_ice_poly.c @@ -5,6 +5,17 @@ */ #include "z_obj_ice_poly.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "one_point_cutscene.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED @@ -85,18 +96,18 @@ void ObjIcePoly_Init(Actor* thisx, PlayState* play) { } Actor_SetScale(thisx, sScale[thisx->params]); thisx->world.pos.y = sOffsetY[thisx->params] + thisx->home.pos.y; - Collider_InitCylinder(play, &this->colliderIce); - Collider_SetCylinder(play, &this->colliderIce, thisx, &sCylinderInitIce); - Collider_InitCylinder(play, &this->colliderHard); - Collider_SetCylinder(play, &this->colliderHard, thisx, &sCylinderInitHard); - Collider_UpdateCylinder(thisx, &this->colliderIce); - Collider_UpdateCylinder(thisx, &this->colliderHard); + Collider_InitCylinder(play, &this->iceCollider); + Collider_SetCylinder(play, &this->iceCollider, thisx, &sCylinderInitIce); + Collider_InitCylinder(play, &this->hardCollider); + Collider_SetCylinder(play, &this->hardCollider, thisx, &sCylinderInitHard); + Collider_UpdateCylinder(thisx, &this->iceCollider); + Collider_UpdateCylinder(thisx, &this->hardCollider); thisx->colChkInfo.mass = MASS_IMMOVABLE; this->alpha = 255; - this->colliderIce.dim.radius *= thisx->scale.x; - this->colliderIce.dim.height *= thisx->scale.y; - this->colliderHard.dim.radius *= thisx->scale.x; - this->colliderHard.dim.height *= thisx->scale.y; + this->iceCollider.dim.radius *= thisx->scale.x; + this->iceCollider.dim.height *= thisx->scale.y; + this->hardCollider.dim.radius *= thisx->scale.x; + this->hardCollider.dim.height *= thisx->scale.y; Actor_SetFocus(thisx, thisx->scale.y * 30.0f); this->actionFunc = ObjIcePoly_Idle; } @@ -106,8 +117,8 @@ void ObjIcePoly_Destroy(Actor* thisx, PlayState* play) { ObjIcePoly* this = (ObjIcePoly*)thisx; if ((this->actor.params >= 0) && (this->actor.params < 3)) { - Collider_DestroyCylinder(play, &this->colliderIce); - Collider_DestroyCylinder(play, &this->colliderHard); + Collider_DestroyCylinder(play, &this->iceCollider); + Collider_DestroyCylinder(play, &this->hardCollider); } } @@ -116,17 +127,17 @@ void ObjIcePoly_Idle(ObjIcePoly* this, PlayState* play) { s32 pad; Vec3f pos; - if (this->colliderIce.base.acFlags & AC_HIT) { - this->meltTimer = -this->colliderIce.elem.acHitElem->atDmgInfo.damage; + if (this->iceCollider.base.acFlags & AC_HIT) { + this->meltTimer = -this->iceCollider.elem.acHitElem->atDmgInfo.damage; this->actor.focus.rot.y = this->actor.yawTowardsPlayer; OnePointCutscene_Init(play, 5120, 40, &this->actor, CAM_ID_MAIN); this->actionFunc = ObjIcePoly_Melt; } else if (this->actor.parent != NULL) { this->actor.parent->freezeTimer = 40; - CollisionCheck_SetAT(play, &play->colChkCtx, &this->colliderIce.base); - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderIce.base); - CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderIce.base); - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderHard.base); + CollisionCheck_SetAT(play, &play->colChkCtx, &this->iceCollider.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->iceCollider.base); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->iceCollider.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->hardCollider.base); } else { Actor_Kill(&this->actor); } diff --git a/src/overlays/actors/ovl_Obj_Ice_Poly/z_obj_ice_poly.h b/src/overlays/actors/ovl_Obj_Ice_Poly/z_obj_ice_poly.h index 8ebbe8d128..c6a56d16f1 100644 --- a/src/overlays/actors/ovl_Obj_Ice_Poly/z_obj_ice_poly.h +++ b/src/overlays/actors/ovl_Obj_Ice_Poly/z_obj_ice_poly.h @@ -2,11 +2,11 @@ #define Z_OBJ_ICE_POLY_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ObjIcePoly; -typedef void (*ObjIcePolyActionFunc)(struct ObjIcePoly*, PlayState*); +typedef void (*ObjIcePolyActionFunc)(struct ObjIcePoly*, struct PlayState*); typedef struct ObjIcePoly { /* 0x0000 */ Actor actor; @@ -14,8 +14,8 @@ typedef struct ObjIcePoly { /* 0x0150 */ u8 alpha; /* 0x0151 */ u8 unk_151; // Unused. Probably intended to be a switch flag. /* 0x0152 */ s16 meltTimer; - /* 0x0154 */ ColliderCylinder colliderIce; - /* 0x01A0 */ ColliderCylinder colliderHard; + /* 0x0154 */ ColliderCylinder iceCollider; + /* 0x01A0 */ ColliderCylinder hardCollider; } ObjIcePoly; // size = 0x01EC #endif 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 0f26d40611..cb90bd2ce1 100644 --- a/src/overlays/actors/ovl_Obj_Kibako/z_obj_kibako.c +++ b/src/overlays/actors/ovl_Obj_Kibako/z_obj_kibako.c @@ -5,9 +5,19 @@ */ #include "z_obj_kibako.h" -#include "assets/objects/gameplay_dangeon_keep/gameplay_dangeon_keep.h" #include "overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h" +#include "libc64/qrand.h" +#include "ichain.h" +#include "sfx.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + +#include "assets/objects/gameplay_dangeon_keep/gameplay_dangeon_keep.h" + #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_CAN_PRESS_SWITCHES) void ObjKibako_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_Obj_Kibako/z_obj_kibako.h b/src/overlays/actors/ovl_Obj_Kibako/z_obj_kibako.h index 9378a51ce7..7538b53705 100644 --- a/src/overlays/actors/ovl_Obj_Kibako/z_obj_kibako.h +++ b/src/overlays/actors/ovl_Obj_Kibako/z_obj_kibako.h @@ -2,11 +2,11 @@ #define Z_OBJ_KIBAKO_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ObjKibako; -typedef void (*ObjKibakoActionFunc)(struct ObjKibako*, PlayState*); +typedef void (*ObjKibakoActionFunc)(struct ObjKibako*, struct PlayState*); typedef struct ObjKibako { /* 0x0000 */ Actor actor; 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 035dbb9b09..591909a579 100644 --- a/src/overlays/actors/ovl_Obj_Kibako2/z_obj_kibako2.c +++ b/src/overlays/actors/ovl_Obj_Kibako2/z_obj_kibako2.c @@ -5,9 +5,18 @@ */ #include "z_obj_kibako2.h" -#include "assets/objects/object_kibako2/object_kibako2.h" #include "overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h" +#include "libc64/qrand.h" +#include "ichain.h" +#include "sfx.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + +#include "assets/objects/object_kibako2/object_kibako2.h" + #define FLAGS 0 void ObjKibako2_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_Obj_Kibako2/z_obj_kibako2.h b/src/overlays/actors/ovl_Obj_Kibako2/z_obj_kibako2.h index 73f0e90b67..177ef0b04c 100644 --- a/src/overlays/actors/ovl_Obj_Kibako2/z_obj_kibako2.h +++ b/src/overlays/actors/ovl_Obj_Kibako2/z_obj_kibako2.h @@ -2,11 +2,11 @@ #define Z_OBJ_KIBAKO2_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ObjKibako2; -typedef void (*ObjKibako2ActionFunc)(struct ObjKibako2*, PlayState*); +typedef void (*ObjKibako2ActionFunc)(struct ObjKibako2*, struct PlayState*); typedef struct ObjKibako2 { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Obj_Lift/z_obj_lift.c b/src/overlays/actors/ovl_Obj_Lift/z_obj_lift.c index e13352a5a3..1545430f1a 100644 --- a/src/overlays/actors/ovl_Obj_Lift/z_obj_lift.c +++ b/src/overlays/actors/ovl_Obj_Lift/z_obj_lift.c @@ -5,9 +5,17 @@ */ #include "z_obj_lift.h" -#include "assets/objects/object_d_lift/object_d_lift.h" #include "overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h" + +#include "libc64/qrand.h" +#include "ichain.h" #include "quake.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + +#include "assets/objects/object_d_lift/object_d_lift.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Obj_Lift/z_obj_lift.h b/src/overlays/actors/ovl_Obj_Lift/z_obj_lift.h index 6ca27dddac..e3f217b930 100644 --- a/src/overlays/actors/ovl_Obj_Lift/z_obj_lift.h +++ b/src/overlays/actors/ovl_Obj_Lift/z_obj_lift.h @@ -2,11 +2,11 @@ #define Z_OBJ_LIFT_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ObjLift; -typedef void (*ObjLiftActionFunc)(struct ObjLift*, PlayState*); +typedef void (*ObjLiftActionFunc)(struct ObjLift*, struct PlayState*); typedef struct ObjLift { /* 0x0000 */ DynaPolyActor dyna; 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 adecf7e08b..a433834d66 100644 --- a/src/overlays/actors/ovl_Obj_Lightswitch/z_obj_lightswitch.c +++ b/src/overlays/actors/ovl_Obj_Lightswitch/z_obj_lightswitch.c @@ -5,8 +5,21 @@ */ #include "z_obj_lightswitch.h" -#include "terminal.h" #include "overlays/actors/ovl_Obj_Oshihiki/z_obj_oshihiki.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "terminal.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/object_lightswitch/object_lightswitch.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED @@ -47,7 +60,7 @@ ActorProfile Obj_Lightswitch_Profile = { /**/ ObjLightswitch_Draw, }; -static ColliderJntSphElementInit sColliderJntSphElementInit[] = { +static ColliderJntSphElementInit sColliderJntSphElementsInit[] = { { { ELEM_MATERIAL_UNK0, @@ -70,7 +83,7 @@ static ColliderJntSphInit sColliderJntSphInit = { COLSHAPE_JNTSPH, }, 1, - sColliderJntSphElementInit, + sColliderJntSphElementsInit, }; static CollisionCheckInfoInit sColChkInfoInit = { 0, 12, 60, MASS_IMMOVABLE }; @@ -92,7 +105,7 @@ void ObjLightswitch_InitCollider(ObjLightswitch* this, PlayState* play) { s32 pad; Collider_InitJntSph(play, &this->collider); - Collider_SetJntSph(play, &this->collider, &this->actor, &sColliderJntSphInit, this->colliderItems); + Collider_SetJntSph(play, &this->collider, &this->actor, &sColliderJntSphInit, this->colliderElements); Matrix_SetTranslateRotateYXZ(this->actor.world.pos.x, this->actor.world.pos.y + (this->actor.shape.yOffset * this->actor.scale.y), this->actor.world.pos.z, &this->actor.shape.rot); diff --git a/src/overlays/actors/ovl_Obj_Lightswitch/z_obj_lightswitch.h b/src/overlays/actors/ovl_Obj_Lightswitch/z_obj_lightswitch.h index 78af71ed99..7f0834a240 100644 --- a/src/overlays/actors/ovl_Obj_Lightswitch/z_obj_lightswitch.h +++ b/src/overlays/actors/ovl_Obj_Lightswitch/z_obj_lightswitch.h @@ -2,11 +2,11 @@ #define Z_OBJ_LIGHTSWITCH_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ObjLightswitch; -typedef void (*ObjLightswitchActionFunc)(struct ObjLightswitch*, PlayState*); +typedef void (*ObjLightswitchActionFunc)(struct ObjLightswitch*, struct PlayState*); typedef enum ObjLightswitch_Type { /* 0 */ OBJLIGHTSWITCH_TYPE_STAY_ON, // doesn't turn off unless the switch flag is cleared some other way @@ -19,7 +19,7 @@ typedef struct ObjLightswitch { /* 0x0000 */ Actor actor; /* 0x014C */ ObjLightswitchActionFunc actionFunc; /* 0x0150 */ ColliderJntSph collider; - /* 0x0170 */ ColliderJntSphElement colliderItems[1]; + /* 0x0170 */ ColliderJntSphElement colliderElements[1]; /* 0x01B0 */ s16 timer; // collision-related threshold and controls animation/logic when turning on/off /* 0x01B2 */ s16 toggleDelay; // timer ticking down used for delaying tuning on/off or disappearing, can be bypassed /* 0x01B4 */ s16 faceTextureIndex; // texture used by the center part of the sun 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 7ac997ae62..93c4b9cdf3 100644 --- a/src/overlays/actors/ovl_Obj_Makekinsuta/z_obj_makekinsuta.c +++ b/src/overlays/actors/ovl_Obj_Makekinsuta/z_obj_makekinsuta.c @@ -5,8 +5,10 @@ */ #include "z_obj_makekinsuta.h" -#include "global.h" + #include "terminal.h" +#include "z64play.h" +#include "z64player.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED 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 3ea20567ef..5004472a56 100644 --- a/src/overlays/actors/ovl_Obj_Makeoshihiki/z_obj_makeoshihiki.c +++ b/src/overlays/actors/ovl_Obj_Makeoshihiki/z_obj_makeoshihiki.c @@ -6,7 +6,13 @@ #include "z_obj_makeoshihiki.h" #include "overlays/actors/ovl_Obj_Oshihiki/z_obj_oshihiki.h" + +#include "sfx.h" +#include "sys_math3d.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64play.h" #define FLAGS ACTOR_FLAG_DRAW_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Obj_Makeoshihiki/z_obj_makeoshihiki.h b/src/overlays/actors/ovl_Obj_Makeoshihiki/z_obj_makeoshihiki.h index 16dc3ba470..84938f578a 100644 --- a/src/overlays/actors/ovl_Obj_Makeoshihiki/z_obj_makeoshihiki.h +++ b/src/overlays/actors/ovl_Obj_Makeoshihiki/z_obj_makeoshihiki.h @@ -2,7 +2,7 @@ #define Z_OBJ_MAKEOSHIHIKI_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ObjMakeoshihiki; 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 90e1b5dda7..5d1f63d6b6 100644 --- a/src/overlays/actors/ovl_Obj_Mure/z_obj_mure.c +++ b/src/overlays/actors/ovl_Obj_Mure/z_obj_mure.c @@ -7,6 +7,10 @@ #include "z_obj_mure.h" #include "overlays/actors/ovl_En_Insect/z_en_insect.h" +#include "libc64/qrand.h" +#include "ichain.h" +#include "z64play.h" + #define FLAGS 0 void ObjMure_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_Obj_Mure/z_obj_mure.h b/src/overlays/actors/ovl_Obj_Mure/z_obj_mure.h index 386c6ed0d8..20cf667daa 100644 --- a/src/overlays/actors/ovl_Obj_Mure/z_obj_mure.h +++ b/src/overlays/actors/ovl_Obj_Mure/z_obj_mure.h @@ -2,11 +2,11 @@ #define Z_OBJ_MURE_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ObjMure; -typedef void (*ObjMureActionFunc)(struct ObjMure*, PlayState*); +typedef void (*ObjMureActionFunc)(struct ObjMure*, struct PlayState*); #define OBJMURE_MAX_SPAWNS 15 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 bcdb0558e7..ecffdfbe7c 100644 --- a/src/overlays/actors/ovl_Obj_Mure2/z_obj_mure2.c +++ b/src/overlays/actors/ovl_Obj_Mure2/z_obj_mure2.c @@ -6,6 +6,11 @@ #include "z_obj_mure2.h" +#include "ichain.h" +#include "sys_math3d.h" +#include "z_lib.h" +#include "z64play.h" + #define FLAGS 0 typedef void (*ObjMure2SetPosFunc)(Vec3f* vec, ObjMure2* this); diff --git a/src/overlays/actors/ovl_Obj_Mure2/z_obj_mure2.h b/src/overlays/actors/ovl_Obj_Mure2/z_obj_mure2.h index a197e9f7b0..8643d477e1 100644 --- a/src/overlays/actors/ovl_Obj_Mure2/z_obj_mure2.h +++ b/src/overlays/actors/ovl_Obj_Mure2/z_obj_mure2.h @@ -2,11 +2,11 @@ #define Z_OBJ_MURE2_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ObjMure2; -typedef void (*ObjMure2ActionFunc)(struct ObjMure2*, PlayState*); +typedef void (*ObjMure2ActionFunc)(struct ObjMure2*, struct PlayState*); typedef struct ObjMure2 { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Obj_Mure3/z_obj_mure3.c b/src/overlays/actors/ovl_Obj_Mure3/z_obj_mure3.c index c9ed01e3c9..51035c0678 100644 --- a/src/overlays/actors/ovl_Obj_Mure3/z_obj_mure3.c +++ b/src/overlays/actors/ovl_Obj_Mure3/z_obj_mure3.c @@ -6,6 +6,12 @@ #include "z_obj_mure3.h" +#include "ichain.h" +#include "sys_math3d.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64play.h" + #define FLAGS 0 void ObjMure3_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_Obj_Mure3/z_obj_mure3.h b/src/overlays/actors/ovl_Obj_Mure3/z_obj_mure3.h index 415babc61b..fc9a3e83aa 100644 --- a/src/overlays/actors/ovl_Obj_Mure3/z_obj_mure3.h +++ b/src/overlays/actors/ovl_Obj_Mure3/z_obj_mure3.h @@ -2,17 +2,17 @@ #define Z_OBJ_MURE3_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ObjMure3; -typedef void (*ObjMure3ActionFunc)(struct ObjMure3*, PlayState*); -typedef void (*ObjMure3SpawnFunc)(struct ObjMure3*, PlayState*); +typedef void (*ObjMure3ActionFunc)(struct ObjMure3*, struct PlayState*); +typedef void (*ObjMure3SpawnFunc)(struct ObjMure3*, struct PlayState*); typedef struct ObjMure3 { /* 0x0000 */ Actor actor; /* 0x014C */ ObjMure3ActionFunc actionFunc; - /* 0x0150 */ EnItem00* unk_150[7]; + /* 0x0150 */ struct EnItem00* unk_150[7]; /* 0x016C */ u16 unk_16C; } ObjMure3; // size = 0x0170 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 2d4457d3e8..2817c14f2a 100644 --- a/src/overlays/actors/ovl_Obj_Oshihiki/z_obj_oshihiki.c +++ b/src/overlays/actors/ovl_Obj_Oshihiki/z_obj_oshihiki.c @@ -6,6 +6,18 @@ #include "z_obj_oshihiki.h" #include "overlays/actors/ovl_Obj_Switch/z_obj_switch.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "regs.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/gameplay_dangeon_keep/gameplay_dangeon_keep.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/src/overlays/actors/ovl_Obj_Oshihiki/z_obj_oshihiki.h b/src/overlays/actors/ovl_Obj_Oshihiki/z_obj_oshihiki.h index 90dce5ca45..265ba4691c 100644 --- a/src/overlays/actors/ovl_Obj_Oshihiki/z_obj_oshihiki.h +++ b/src/overlays/actors/ovl_Obj_Oshihiki/z_obj_oshihiki.h @@ -2,7 +2,7 @@ #define Z_OBJ_OSHIHIKI_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ObjOshihiki; @@ -27,7 +27,7 @@ typedef enum PushBlockType { #define PUSHBLOCK_SETUP_FALL (1 << 7) #define PUSHBLOCK_MOVE_UNDER (1 << 8) -typedef void (*ObjOshihikiActionFunc)(struct ObjOshihiki*, PlayState*); +typedef void (*ObjOshihikiActionFunc)(struct ObjOshihiki*, struct PlayState*); typedef struct ObjOshihiki { /* 0x0000 */ DynaPolyActor dyna; @@ -40,7 +40,7 @@ typedef struct ObjOshihiki { /* 0x0178 */ f32 pushDist; /* 0x017C */ f32 direction; /* 0x0180 */ s32 floorBgIds[5]; - /* 0x0194 */ CollisionPoly* floorPolys[5]; + /* 0x0194 */ struct CollisionPoly* floorPolys[5]; /* 0x01A8 */ f32 floorHeights[5]; /* 0x01BC */ s16 highestFloor; /* 0x01BE */ u8 cantMove; diff --git a/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.c b/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.c index 8ed5e8558e..6eca379686 100644 --- a/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.c +++ b/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.c @@ -6,6 +6,11 @@ #include "z_obj_roomtimer.h" +#include "sfx.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64save.h" + #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED void ObjRoomtimer_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.h b/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.h index 2f1b08d9c9..ee8e74eaa2 100644 --- a/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.h +++ b/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.h @@ -2,12 +2,11 @@ #define Z_OBJ_ROOMTIMER_H #include "ultra64.h" -#include "global.h" -#include "z64.h" +#include "z64actor.h" struct ObjRoomtimer; -typedef void (*ObjRoomtimerActionFunc)(struct ObjRoomtimer*, PlayState*); +typedef void (*ObjRoomtimerActionFunc)(struct ObjRoomtimer*, struct PlayState*); typedef struct ObjRoomtimer { /* 0x0000 */ Actor actor; 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 e791de6297..45c8594c6e 100644 --- a/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.c +++ b/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.c @@ -5,8 +5,21 @@ */ #include "z_obj_switch.h" -#include "assets/objects/gameplay_dangeon_keep/gameplay_dangeon_keep.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "rumble.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" + +#include "assets/objects/gameplay_dangeon_keep/gameplay_dangeon_keep.h" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED @@ -147,7 +160,7 @@ static ColliderTrisInit sEyeTrisInit = { sEyeTrisElementsInit, }; -static ColliderJntSphElementInit sCrystalJntSphElementInit[1] = { +static ColliderJntSphElementInit sCrystalJntSphElementsInit[1] = { { { ELEM_MATERIAL_UNK0, @@ -170,8 +183,8 @@ static ColliderJntSphInit sCrystalJntSphInit = { OC2_TYPE_2, COLSHAPE_JNTSPH, }, - ARRAY_COUNT(sCrystalJntSphElementInit), - sCrystalJntSphElementInit, + ARRAY_COUNT(sCrystalJntSphElementsInit), + sCrystalJntSphElementsInit, }; static InitChainEntry sInitChain[] = { @@ -210,10 +223,10 @@ void ObjSwitch_InitDynaPoly(ObjSwitch* this, PlayState* play, CollisionHeader* c } void ObjSwitch_InitJntSphCollider(ObjSwitch* this, PlayState* play, ColliderJntSphInit* colliderJntSphInit) { - ColliderJntSph* colliderJntSph = &this->jntSph.col; + ColliderJntSph* colliderJntSph = &this->jntSph.collider; Collider_InitJntSph(play, colliderJntSph); - Collider_SetJntSph(play, colliderJntSph, &this->dyna.actor, colliderJntSphInit, this->jntSph.items); + Collider_SetJntSph(play, colliderJntSph, &this->dyna.actor, colliderJntSphInit, this->jntSph.colliderElements); Matrix_SetTranslateRotateYXZ(this->dyna.actor.world.pos.x, this->dyna.actor.world.pos.y + this->dyna.actor.shape.yOffset * this->dyna.actor.scale.y, @@ -223,13 +236,13 @@ void ObjSwitch_InitJntSphCollider(ObjSwitch* this, PlayState* play, ColliderJntS } void ObjSwitch_InitTrisCollider(ObjSwitch* this, PlayState* play, ColliderTrisInit* colliderTrisInit) { - ColliderTris* colliderTris = &this->tris.col; + ColliderTris* colliderTris = &this->tris.collider; s32 i; s32 j; Vec3f pos[3]; Collider_InitTris(play, colliderTris); - Collider_SetTris(play, colliderTris, &this->dyna.actor, colliderTrisInit, this->tris.items); + Collider_SetTris(play, colliderTris, &this->dyna.actor, colliderTrisInit, this->tris.colliderElements); for (i = 0; i < 2; i++) { for (j = 0; j < 3; j++) { @@ -368,12 +381,12 @@ void ObjSwitch_Destroy(Actor* thisx, PlayState* play) { switch (OBJSWITCH_TYPE(&this->dyna.actor)) { case OBJSWITCH_TYPE_FLOOR_RUSTY: case OBJSWITCH_TYPE_EYE: - Collider_DestroyTris(play, &this->tris.col); + Collider_DestroyTris(play, &this->tris.collider); break; case OBJSWITCH_TYPE_CRYSTAL: case OBJSWITCH_TYPE_CRYSTAL_TARGETABLE: - Collider_DestroyJntSph(play, &this->jntSph.col); + Collider_DestroyJntSph(play, &this->jntSph.collider); break; } } @@ -385,12 +398,12 @@ void ObjSwitch_FloorUpInit(ObjSwitch* this) { void ObjSwitch_FloorUp(ObjSwitch* this, PlayState* play) { if (OBJSWITCH_TYPE(&this->dyna.actor) == OBJSWITCH_TYPE_FLOOR_RUSTY) { - if (this->tris.col.base.acFlags & AC_HIT) { + if (this->tris.collider.base.acFlags & AC_HIT) { ObjSwitch_FloorPressInit(this); ObjSwitch_SetOn(this, play); - this->tris.col.base.acFlags &= ~AC_HIT; + this->tris.collider.base.acFlags &= ~AC_HIT; } else { - CollisionCheck_SetAC(play, &play->colChkCtx, &this->tris.col.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->tris.collider.base); } } else { switch (OBJSWITCH_SUBTYPE(&this->dyna.actor)) { @@ -509,8 +522,8 @@ s32 ObjSwitch_EyeIsHit(ObjSwitch* this) { Actor* collidingActor; s16 yawDiff; - if ((this->tris.col.base.acFlags & AC_HIT) && !(this->prevColFlags & AC_HIT)) { - collidingActor = this->tris.col.base.ac; + if ((this->tris.collider.base.acFlags & AC_HIT) && !(this->prevColFlags & AC_HIT)) { + collidingActor = this->tris.collider.base.ac; if (collidingActor != NULL) { yawDiff = collidingActor->world.rot.y - this->dyna.actor.shape.rot.y; if (ABS(yawDiff) > 0x5000) { @@ -613,7 +626,7 @@ void ObjSwitch_CrystalOffInit(ObjSwitch* this) { void ObjSwitch_CrystalOff(ObjSwitch* this, PlayState* play) { switch (OBJSWITCH_SUBTYPE(&this->dyna.actor)) { case OBJSWITCH_SUBTYPE_ONCE: - if ((this->jntSph.col.base.acFlags & AC_HIT) && this->disableAcTimer <= 0) { + if ((this->jntSph.collider.base.acFlags & AC_HIT) && this->disableAcTimer <= 0) { this->disableAcTimer = 10; ObjSwitch_SetOn(this, play); ObjSwitch_CrystalTurnOnInit(this); @@ -621,7 +634,7 @@ void ObjSwitch_CrystalOff(ObjSwitch* this, PlayState* play) { break; case OBJSWITCH_SUBTYPE_SYNC: - if (((this->jntSph.col.base.acFlags & AC_HIT) && this->disableAcTimer <= 0) || + if (((this->jntSph.collider.base.acFlags & AC_HIT) && this->disableAcTimer <= 0) || Flags_GetSwitch(play, OBJSWITCH_SWITCH_FLAG(&this->dyna.actor))) { this->disableAcTimer = 10; @@ -631,7 +644,7 @@ void ObjSwitch_CrystalOff(ObjSwitch* this, PlayState* play) { break; case OBJSWITCH_SUBTYPE_TOGGLE: - if ((this->jntSph.col.base.acFlags & AC_HIT) && !(this->prevColFlags & AC_HIT) && + if ((this->jntSph.collider.base.acFlags & AC_HIT) && !(this->prevColFlags & AC_HIT) && this->disableAcTimer <= 0) { this->disableAcTimer = 10; ObjSwitch_SetOn(this, play); @@ -675,7 +688,7 @@ void ObjSwitch_CrystalOn(ObjSwitch* this, PlayState* play) { break; case OBJSWITCH_SUBTYPE_TOGGLE: - if ((this->jntSph.col.base.acFlags & AC_HIT) && !(this->prevColFlags & AC_HIT) && + if ((this->jntSph.collider.base.acFlags & AC_HIT) && !(this->prevColFlags & AC_HIT) && this->disableAcTimer <= 0) { this->disableAcTimer = 10; ObjSwitch_CrystalTurnOffInit(this); @@ -719,9 +732,9 @@ void ObjSwitch_Update(Actor* thisx, PlayState* play) { break; case OBJSWITCH_TYPE_EYE: - this->prevColFlags = this->tris.col.base.acFlags; - this->tris.col.base.acFlags &= ~AC_HIT; - CollisionCheck_SetAC(play, &play->colChkCtx, &this->tris.col.base); + this->prevColFlags = this->tris.collider.base.acFlags; + this->tris.collider.base.acFlags &= ~AC_HIT; + CollisionCheck_SetAC(play, &play->colChkCtx, &this->tris.collider.base); break; case OBJSWITCH_TYPE_CRYSTAL: @@ -729,12 +742,12 @@ void ObjSwitch_Update(Actor* thisx, PlayState* play) { if (!Player_InCsMode(play) && this->disableAcTimer > 0) { this->disableAcTimer--; } - this->prevColFlags = this->jntSph.col.base.acFlags; - this->jntSph.col.base.acFlags &= ~AC_HIT; + this->prevColFlags = this->jntSph.collider.base.acFlags; + this->jntSph.collider.base.acFlags &= ~AC_HIT; if (this->disableAcTimer <= 0) { - CollisionCheck_SetAC(play, &play->colChkCtx, &this->jntSph.col.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->jntSph.collider.base); } - CollisionCheck_SetOC(play, &play->colChkCtx, &this->jntSph.col.base); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->jntSph.collider.base); break; } } diff --git a/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.h b/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.h index b6fb243f70..b4d3ae8b20 100644 --- a/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.h +++ b/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.h @@ -2,12 +2,12 @@ #define Z_OBJ_SWITCH_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ObjSwitch; -typedef void (*ObjSwitchActionFunc)(struct ObjSwitch*, PlayState*); -typedef void (*ObjSwitchDrawFunc)(Actor*, PlayState*); +typedef void (*ObjSwitchActionFunc)(struct ObjSwitch*, struct PlayState*); +typedef void (*ObjSwitchDrawFunc)(Actor*, struct PlayState*); typedef enum ObjSwitchType { /* 0 */ OBJSWITCH_TYPE_FLOOR, @@ -26,13 +26,13 @@ typedef enum ObjSwitchSubType { } ObjSwitchSubType; typedef struct ObjSwitchJntSph { - /* 0x00 */ ColliderJntSph col; - /* 0x20 */ ColliderJntSphElement items[1]; + /* 0x00 */ ColliderJntSph collider; + /* 0x20 */ ColliderJntSphElement colliderElements[1]; } ObjSwitchJntSph; typedef struct ObjSwitchTris { - /* 0x00 */ ColliderTris col; - /* 0x20 */ ColliderTrisElement items[2]; + /* 0x00 */ ColliderTris collider; + /* 0x20 */ ColliderTrisElement colliderElements[2]; } ObjSwitchTris; typedef struct ObjSwitch { diff --git a/src/overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.c b/src/overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.c index 7c221da0b8..a189fe4345 100644 --- a/src/overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.c +++ b/src/overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.c @@ -6,6 +6,17 @@ #include "z_obj_syokudai.h" #include "overlays/actors/ovl_En_Arrow/z_en_arrow.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64play.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_syokudai/object_syokudai.h" @@ -86,12 +97,12 @@ void ObjSyokudai_Init(Actor* thisx, PlayState* play) { Actor_ProcessInitChain(&this->actor, sInitChain); ActorShape_Init(&this->actor.shape, 0.0f, NULL, 0.0f); - Collider_InitCylinder(play, &this->colliderStand); - Collider_SetCylinder(play, &this->colliderStand, &this->actor, &sCylInitStand); - this->colliderStand.base.colMaterial = sColMaterialsStand[PARAMS_GET_NOMASK(this->actor.params, 12)]; + Collider_InitCylinder(play, &this->standCollider); + Collider_SetCylinder(play, &this->standCollider, &this->actor, &sCylInitStand); + this->standCollider.base.colMaterial = sColMaterialsStand[PARAMS_GET_NOMASK(this->actor.params, 12)]; - Collider_InitCylinder(play, &this->colliderFlame); - Collider_SetCylinder(play, &this->colliderFlame, &this->actor, &sCylInitFlame); + Collider_InitCylinder(play, &this->flameCollider); + Collider_SetCylinder(play, &this->flameCollider, &this->actor, &sCylInitFlame); this->actor.colChkInfo.mass = MASS_IMMOVABLE; @@ -113,8 +124,8 @@ void ObjSyokudai_Destroy(Actor* thisx, PlayState* play) { s32 pad; ObjSyokudai* this = (ObjSyokudai*)thisx; - Collider_DestroyCylinder(play, &this->colliderStand); - Collider_DestroyCylinder(play, &this->colliderFlame); + Collider_DestroyCylinder(play, &this->standCollider); + Collider_DestroyCylinder(play, &this->flameCollider); LightContext_RemoveLight(play, &play->lightCtx, this->lightNode); } @@ -171,8 +182,8 @@ void ObjSyokudai_Update(Actor* thisx, PlayState* play2) { this->litTimer = 20; } } - if (this->colliderFlame.base.acFlags & AC_HIT) { - dmgFlags = this->colliderFlame.elem.acHitElem->atDmgInfo.dmgFlags; + if (this->flameCollider.base.acFlags & AC_HIT) { + dmgFlags = this->flameCollider.elem.acHitElem->atDmgInfo.dmgFlags; if (dmgFlags & (DMG_FIRE | DMG_ARROW_NORMAL)) { interactionType = 1; } @@ -195,7 +206,7 @@ void ObjSyokudai_Update(Actor* thisx, PlayState* play2) { player->unk_860 = 200; } } else if (dmgFlags & DMG_ARROW_NORMAL) { - arrow = (EnArrow*)this->colliderFlame.base.ac; + arrow = (EnArrow*)this->flameCollider.base.ac; if ((arrow->actor.update != NULL) && (arrow->actor.id == ACTOR_EN_ARROW)) { arrow->actor.params = 0; arrow->collider.elem.atDmgInfo.dmgFlags = DMG_ARROW_FIRE; @@ -232,12 +243,12 @@ void ObjSyokudai_Update(Actor* thisx, PlayState* play2) { } } - Collider_UpdateCylinder(&this->actor, &this->colliderStand); - CollisionCheck_SetOC(play, &play->colChkCtx, &this->colliderStand.base); - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderStand.base); + Collider_UpdateCylinder(&this->actor, &this->standCollider); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->standCollider.base); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->standCollider.base); - Collider_UpdateCylinder(&this->actor, &this->colliderFlame); - CollisionCheck_SetAC(play, &play->colChkCtx, &this->colliderFlame.base); + Collider_UpdateCylinder(&this->actor, &this->flameCollider); + CollisionCheck_SetAC(play, &play->colChkCtx, &this->flameCollider.base); if (this->litTimer > 0) { this->litTimer--; diff --git a/src/overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.h b/src/overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.h index 8c4e1b7d16..4dee2ba671 100644 --- a/src/overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.h +++ b/src/overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.h @@ -2,14 +2,15 @@ #define Z_OBJ_SYOKUDAI_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" +#include "z64light.h" struct ObjSyokudai; typedef struct ObjSyokudai { /* 0x0000 */ Actor actor; - /* 0x014C */ ColliderCylinder colliderStand; - /* 0x0198 */ ColliderCylinder colliderFlame; + /* 0x014C */ ColliderCylinder standCollider; + /* 0x0198 */ ColliderCylinder flameCollider; /* 0x01E4 */ s16 litTimer; /* 0x01E6 */ u8 flameTexScroll; /* 0x01E8 */ LightNode* lightNode; 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 bc231076ce..fdd18ef60a 100644 --- a/src/overlays/actors/ovl_Obj_Timeblock/z_obj_timeblock.c +++ b/src/overlays/actors/ovl_Obj_Timeblock/z_obj_timeblock.c @@ -5,6 +5,19 @@ */ #include "z_obj_timeblock.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64ocarina.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_timeblock/object_timeblock.h" #define FLAGS \ diff --git a/src/overlays/actors/ovl_Obj_Timeblock/z_obj_timeblock.h b/src/overlays/actors/ovl_Obj_Timeblock/z_obj_timeblock.h index 9bd393b194..966f474496 100644 --- a/src/overlays/actors/ovl_Obj_Timeblock/z_obj_timeblock.h +++ b/src/overlays/actors/ovl_Obj_Timeblock/z_obj_timeblock.h @@ -2,12 +2,12 @@ #define Z_OBJ_TIMEBLOCK_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ObjTimeblock; -typedef s32 (*ObjTimeblockSongObserverFunc)(struct ObjTimeblock*, PlayState*); -typedef void (*ObjTimeblockActionFunc)(struct ObjTimeblock*, PlayState*); +typedef s32 (*ObjTimeblockSongObserverFunc)(struct ObjTimeblock*, struct PlayState*); +typedef void (*ObjTimeblockActionFunc)(struct ObjTimeblock*, struct PlayState*); typedef struct ObjTimeblock { /* 0x0000 */ DynaPolyActor dyna; 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 a5911678e4..2f4cc15c76 100644 --- a/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.c +++ b/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.c @@ -6,6 +6,17 @@ #include "z_obj_tsubo.h" #include "overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h" + +#include "libc64/qrand.h" +#include "ichain.h" +#include "sfx.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64item.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/gameplay_dangeon_keep/gameplay_dangeon_keep.h" #include "assets/objects/object_tsubo/object_tsubo.h" diff --git a/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.h b/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.h index aa30398c78..8e27cc8310 100644 --- a/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.h +++ b/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.h @@ -2,11 +2,11 @@ #define Z_OBJ_TSUBO_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ObjTsubo; -typedef void (*ObjTsuboActionFunc)(struct ObjTsubo*, PlayState*); +typedef void (*ObjTsuboActionFunc)(struct ObjTsubo*, struct PlayState*); typedef struct ObjTsubo { /* 0x0000 */ Actor actor; 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 94c6618470..aed6b65e70 100644 --- a/src/overlays/actors/ovl_Obj_Warp2block/z_obj_warp2block.c +++ b/src/overlays/actors/ovl_Obj_Warp2block/z_obj_warp2block.c @@ -5,8 +5,21 @@ */ #include "z_obj_warp2block.h" -#include "assets/objects/object_timeblock/object_timeblock.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "one_point_cutscene.h" +#include "sfx.h" +#include "sys_math3d.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64ocarina.h" +#include "z64play.h" +#include "z64player.h" + +#include "assets/objects/object_timeblock/object_timeblock.h" #define FLAGS \ (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_UPDATE_DURING_OCARINA | \ diff --git a/src/overlays/actors/ovl_Obj_Warp2block/z_obj_warp2block.h b/src/overlays/actors/ovl_Obj_Warp2block/z_obj_warp2block.h index 3e09d976c2..8f22398db7 100644 --- a/src/overlays/actors/ovl_Obj_Warp2block/z_obj_warp2block.h +++ b/src/overlays/actors/ovl_Obj_Warp2block/z_obj_warp2block.h @@ -2,12 +2,12 @@ #define Z_OBJ_WARP2BLOCK_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ObjWarp2block; -typedef void (*ObjWarp2blockActionFunc)(struct ObjWarp2block*, PlayState*); -typedef s32 (*ObjWarp2blockFunc168)(struct ObjWarp2block*, PlayState*); +typedef void (*ObjWarp2blockActionFunc)(struct ObjWarp2block*, struct PlayState*); +typedef s32 (*ObjWarp2blockFunc168)(struct ObjWarp2block*, struct PlayState*); typedef struct ObjWarp2block { /* 0x0000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Object_Kankyo/z_object_kankyo.c b/src/overlays/actors/ovl_Object_Kankyo/z_object_kankyo.c index 25048f5349..bdf1ff693c 100644 --- a/src/overlays/actors/ovl_Object_Kankyo/z_object_kankyo.c +++ b/src/overlays/actors/ovl_Object_Kankyo/z_object_kankyo.c @@ -5,6 +5,21 @@ */ #include "z_object_kankyo.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_math3d.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_demo_kekkai/object_demo_kekkai.h" #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_spot02_objects/object_spot02_objects.h" diff --git a/src/overlays/actors/ovl_Object_Kankyo/z_object_kankyo.h b/src/overlays/actors/ovl_Object_Kankyo/z_object_kankyo.h index 4449fa013c..40307f5e91 100644 --- a/src/overlays/actors/ovl_Object_Kankyo/z_object_kankyo.h +++ b/src/overlays/actors/ovl_Object_Kankyo/z_object_kankyo.h @@ -2,11 +2,11 @@ #define Z_OBJECT_KANKYO_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ObjectKankyo; -typedef void (*ObjectKankyoActionFunc)(struct ObjectKankyo*, PlayState*); +typedef void (*ObjectKankyoActionFunc)(struct ObjectKankyo*, struct PlayState*); typedef struct ObjectKankyoEffect { /* 0x00 */ u8 state; 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 5aeb61031a..c9d6470d63 100644 --- a/src/overlays/actors/ovl_Oceff_Spot/z_oceff_spot.c +++ b/src/overlays/actors/ovl_Oceff_Spot/z_oceff_spot.c @@ -5,7 +5,19 @@ */ #include "z_oceff_spot.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "regs.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64light.h" +#include "z64ocarina.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_UPDATE_DURING_OCARINA) diff --git a/src/overlays/actors/ovl_Oceff_Spot/z_oceff_spot.h b/src/overlays/actors/ovl_Oceff_Spot/z_oceff_spot.h index a96f1878af..222c977fc2 100644 --- a/src/overlays/actors/ovl_Oceff_Spot/z_oceff_spot.h +++ b/src/overlays/actors/ovl_Oceff_Spot/z_oceff_spot.h @@ -2,11 +2,12 @@ #define Z_OCEFF_SPOT_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" +#include "z64light.h" struct OceffSpot; -typedef void (*OceffSpotActionFunc)(struct OceffSpot*, PlayState*); +typedef void (*OceffSpotActionFunc)(struct OceffSpot*, struct PlayState*); typedef struct OceffSpot { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Oceff_Storm/z_oceff_storm.c b/src/overlays/actors/ovl_Oceff_Storm/z_oceff_storm.c index c7c63690b7..5e236c86f4 100644 --- a/src/overlays/actors/ovl_Oceff_Storm/z_oceff_storm.c +++ b/src/overlays/actors/ovl_Oceff_Storm/z_oceff_storm.c @@ -6,6 +6,13 @@ #include "z_oceff_storm.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sys_matrix.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_DRAW_CULLING_DISABLED | ACTOR_FLAG_UPDATE_DURING_OCARINA) void OceffStorm_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_Oceff_Storm/z_oceff_storm.h b/src/overlays/actors/ovl_Oceff_Storm/z_oceff_storm.h index e4b831a208..aebc002780 100644 --- a/src/overlays/actors/ovl_Oceff_Storm/z_oceff_storm.h +++ b/src/overlays/actors/ovl_Oceff_Storm/z_oceff_storm.h @@ -2,11 +2,11 @@ #define Z_OCEFF_STORM_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct OceffStorm; -typedef void (*OceffStormActionFunc)(struct OceffStorm*, PlayState*); +typedef void (*OceffStormActionFunc)(struct OceffStorm*, struct PlayState*); typedef struct OceffStorm { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Oceff_Wipe/z_oceff_wipe.c b/src/overlays/actors/ovl_Oceff_Wipe/z_oceff_wipe.c index f9b14bc7de..011b112061 100644 --- a/src/overlays/actors/ovl_Oceff_Wipe/z_oceff_wipe.c +++ b/src/overlays/actors/ovl_Oceff_Wipe/z_oceff_wipe.c @@ -5,7 +5,15 @@ */ #include "z_oceff_wipe.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_UPDATE_DURING_OCARINA) diff --git a/src/overlays/actors/ovl_Oceff_Wipe/z_oceff_wipe.h b/src/overlays/actors/ovl_Oceff_Wipe/z_oceff_wipe.h index 9e5131737c..65a18468a3 100644 --- a/src/overlays/actors/ovl_Oceff_Wipe/z_oceff_wipe.h +++ b/src/overlays/actors/ovl_Oceff_Wipe/z_oceff_wipe.h @@ -2,7 +2,7 @@ #define Z_OCEFF_WIPE_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" typedef enum OceffWipeType { /* 0x00 */ OCEFF_WIPE_ZL, diff --git a/src/overlays/actors/ovl_Oceff_Wipe2/z_oceff_wipe2.c b/src/overlays/actors/ovl_Oceff_Wipe2/z_oceff_wipe2.c index 9e3b03a8f9..5885dd0ac9 100644 --- a/src/overlays/actors/ovl_Oceff_Wipe2/z_oceff_wipe2.c +++ b/src/overlays/actors/ovl_Oceff_Wipe2/z_oceff_wipe2.c @@ -5,7 +5,15 @@ */ #include "z_oceff_wipe2.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_UPDATE_DURING_OCARINA) diff --git a/src/overlays/actors/ovl_Oceff_Wipe2/z_oceff_wipe2.h b/src/overlays/actors/ovl_Oceff_Wipe2/z_oceff_wipe2.h index c7f9c7b870..6276bb33c4 100644 --- a/src/overlays/actors/ovl_Oceff_Wipe2/z_oceff_wipe2.h +++ b/src/overlays/actors/ovl_Oceff_Wipe2/z_oceff_wipe2.h @@ -2,7 +2,7 @@ #define Z_OCEFF_WIPE2_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct OceffWipe2; diff --git a/src/overlays/actors/ovl_Oceff_Wipe3/z_oceff_wipe3.c b/src/overlays/actors/ovl_Oceff_Wipe3/z_oceff_wipe3.c index 757e9b116d..580d2cfece 100644 --- a/src/overlays/actors/ovl_Oceff_Wipe3/z_oceff_wipe3.c +++ b/src/overlays/actors/ovl_Oceff_Wipe3/z_oceff_wipe3.c @@ -5,7 +5,15 @@ */ #include "z_oceff_wipe3.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_UPDATE_DURING_OCARINA) diff --git a/src/overlays/actors/ovl_Oceff_Wipe3/z_oceff_wipe3.h b/src/overlays/actors/ovl_Oceff_Wipe3/z_oceff_wipe3.h index a5bc2bbe4c..5e6abb0456 100644 --- a/src/overlays/actors/ovl_Oceff_Wipe3/z_oceff_wipe3.h +++ b/src/overlays/actors/ovl_Oceff_Wipe3/z_oceff_wipe3.h @@ -2,7 +2,7 @@ #define Z_OCEFF_WIPE3_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct OceffWipe3; diff --git a/src/overlays/actors/ovl_Oceff_Wipe4/z_oceff_wipe4.c b/src/overlays/actors/ovl_Oceff_Wipe4/z_oceff_wipe4.c index 9ad0dbf68e..7263cd16f4 100644 --- a/src/overlays/actors/ovl_Oceff_Wipe4/z_oceff_wipe4.c +++ b/src/overlays/actors/ovl_Oceff_Wipe4/z_oceff_wipe4.c @@ -5,7 +5,13 @@ */ #include "z_oceff_wipe4.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sys_matrix.h" #include "terminal.h" +#include "z_lib.h" +#include "z64play.h" #define FLAGS (ACTOR_FLAG_UPDATE_CULLING_DISABLED | ACTOR_FLAG_UPDATE_DURING_OCARINA) diff --git a/src/overlays/actors/ovl_Oceff_Wipe4/z_oceff_wipe4.h b/src/overlays/actors/ovl_Oceff_Wipe4/z_oceff_wipe4.h index 3986c1fce5..bd82ddc7c4 100644 --- a/src/overlays/actors/ovl_Oceff_Wipe4/z_oceff_wipe4.h +++ b/src/overlays/actors/ovl_Oceff_Wipe4/z_oceff_wipe4.h @@ -2,7 +2,7 @@ #define Z_OCEFF_WIPE4_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" typedef enum OceffWipe4Type { /* 0x00 */ OCEFF_WIPE4_SCARECROWS, 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 a91fb67154..de537e434b 100644 --- a/src/overlays/actors/ovl_Shot_Sun/z_shot_sun.c +++ b/src/overlays/actors/ovl_Shot_Sun/z_shot_sun.c @@ -7,8 +7,21 @@ #include "z_shot_sun.h" #include "overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.h" #include "overlays/actors/ovl_En_Elf/z_en_elf.h" -#include "assets/scenes/overworld/spot06/spot06_scene.h" + +#include "one_point_cutscene.h" +#include "segmented_address.h" +#include "sfx.h" +#include "sys_math3d.h" #include "terminal.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "z64environment.h" +#include "z64ocarina.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "assets/scenes/overworld/spot06/spot06_scene.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY) diff --git a/src/overlays/actors/ovl_Shot_Sun/z_shot_sun.h b/src/overlays/actors/ovl_Shot_Sun/z_shot_sun.h index 9687e5940e..4415e6e98f 100644 --- a/src/overlays/actors/ovl_Shot_Sun/z_shot_sun.h +++ b/src/overlays/actors/ovl_Shot_Sun/z_shot_sun.h @@ -2,11 +2,11 @@ #define Z_SHOT_SUN_H #include "ultra64.h" -#include "global.h" +#include "z64actor.h" struct ShotSun; -typedef void (*ShotSunActionFunc)(struct ShotSun*, PlayState*); +typedef void (*ShotSunActionFunc)(struct ShotSun*, struct PlayState*); typedef struct ShotSun { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_player_actor/z_player.c b/src/overlays/actors/ovl_player_actor/z_player.c index 820bd3978c..265a160619 100644 --- a/src/overlays/actors/ovl_player_actor/z_player.c +++ b/src/overlays/actors/ovl_player_actor/z_player.c @@ -4,11 +4,6 @@ * Description: Link */ -#include "ultra64.h" -#include "global.h" -#include "quake.h" -#include "versions.h" - #include "overlays/actors/ovl_Bg_Heavy_Block/z_bg_heavy_block.h" #include "overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.h" #include "overlays/actors/ovl_En_Boom/z_en_boom.h" @@ -20,6 +15,39 @@ #include "overlays/actors/ovl_En_Horse/z_en_horse.h" #include "overlays/actors/ovl_En_Insect/z_en_insect.h" #include "overlays/effects/ovl_Effect_Ss_Fhg_Flash/z_eff_ss_fhg_flash.h" + +#include "libc64/qrand.h" +#include "libu64/debug.h" +#include "controller.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "ichain.h" +#include "letterbox.h" +#include "map.h" +#include "one_point_cutscene.h" +#include "quake.h" +#include "rand.h" +#include "regs.h" +#include "rumble.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_math.h" +#include "sys_math3d.h" +#include "sys_matrix.h" +#include "ultra64.h" +#include "versions.h" +#include "z_en_item00.h" +#include "z_lib.h" +#include "zelda_arena.h" +#include "z64audio.h" +#include "z64debug.h" +#include "z64effect.h" +#include "z64lifemeter.h" +#include "z64ocarina.h" +#include "z64play.h" +#include "z64save.h" +#include "z64skin_matrix.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_link_child/object_link_child.h" @@ -331,22 +359,22 @@ void Player_Action_CsAction(Player* this, PlayState* play); // .bss part 1 -#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:64 ntsc-1.1:64 ntsc-1.2:64 pal-1.0:128 pal-1.1:128" +#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" 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:192 gc-eu-mq:192 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq: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:160 gc-eu-mq:160 gc-jp:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq: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: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_Blast/z_eff_ss_blast.c b/src/overlays/effects/ovl_Effect_Ss_Blast/z_eff_ss_blast.c index f107473306..9ff1bd5a96 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Blast/z_eff_ss_blast.c +++ b/src/overlays/effects/ovl_Effect_Ss_Blast/z_eff_ss_blast.c @@ -5,6 +5,15 @@ */ #include "z_eff_ss_blast.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define rInnerColorR regs[0] diff --git a/src/overlays/effects/ovl_Effect_Ss_Blast/z_eff_ss_blast.h b/src/overlays/effects/ovl_Effect_Ss_Blast/z_eff_ss_blast.h index b38f343e8e..bfceec5856 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Blast/z_eff_ss_blast.h +++ b/src/overlays/effects/ovl_Effect_Ss_Blast/z_eff_ss_blast.h @@ -2,7 +2,8 @@ #define Z_EFF_SS_BLAST_H #include "ultra64.h" -#include "global.h" +#include "color.h" +#include "z64math.h" typedef struct EffectSsBlastParams { /* 0x00 */ Vec3f pos; diff --git a/src/overlays/effects/ovl_Effect_Ss_Bomb/z_eff_ss_bomb.c b/src/overlays/effects/ovl_Effect_Ss_Bomb/z_eff_ss_bomb.c index 4fd99e3626..a6f909b56a 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Bomb/z_eff_ss_bomb.c +++ b/src/overlays/effects/ovl_Effect_Ss_Bomb/z_eff_ss_bomb.c @@ -5,6 +5,17 @@ */ #include "z_eff_ss_bomb.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64skin_matrix.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define EFFSSBOMB_LIFESPAN 20 @@ -67,7 +78,7 @@ void EffectSsBomb_Draw(PlayState* play, u32 index, EffectSs* this) { SkinMatrix_MtxFMtxFMult(&mfTrans, &play->billboardMtxF, &mfTransBillboard); SkinMatrix_MtxFMtxFMult(&mfTransBillboard, &mfScale, &mfResult); - gSPMatrix(POLY_XLU_DISP++, &gMtxClear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(POLY_XLU_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); mtx = SkinMatrix_MtxFToNewMtx(gfxCtx, &mfResult); diff --git a/src/overlays/effects/ovl_Effect_Ss_Bomb/z_eff_ss_bomb.h b/src/overlays/effects/ovl_Effect_Ss_Bomb/z_eff_ss_bomb.h index 5d42b118c8..923739819b 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Bomb/z_eff_ss_bomb.h +++ b/src/overlays/effects/ovl_Effect_Ss_Bomb/z_eff_ss_bomb.h @@ -2,7 +2,7 @@ #define Z_EFF_SS_BOMB_H #include "ultra64.h" -#include "global.h" +#include "z64math.h" typedef struct EffectSsBombInitParams { /* 0x00 */ Vec3f pos; diff --git a/src/overlays/effects/ovl_Effect_Ss_Bomb2/z_eff_ss_bomb2.c b/src/overlays/effects/ovl_Effect_Ss_Bomb2/z_eff_ss_bomb2.c index e848dd47b8..4ec61bc8ea 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Bomb2/z_eff_ss_bomb2.c +++ b/src/overlays/effects/ovl_Effect_Ss_Bomb2/z_eff_ss_bomb2.c @@ -5,6 +5,16 @@ */ #include "z_eff_ss_bomb2.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64skin_matrix.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define rScale regs[0] diff --git a/src/overlays/effects/ovl_Effect_Ss_Bomb2/z_eff_ss_bomb2.h b/src/overlays/effects/ovl_Effect_Ss_Bomb2/z_eff_ss_bomb2.h index 249a2a6507..8aea4d3cc5 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Bomb2/z_eff_ss_bomb2.h +++ b/src/overlays/effects/ovl_Effect_Ss_Bomb2/z_eff_ss_bomb2.h @@ -2,7 +2,7 @@ #define Z_EFF_SS_BOMB2_H #include "ultra64.h" -#include "global.h" +#include "z64math.h" typedef struct EffectSsBomb2InitParams { /* 0x00 */ Vec3f pos; diff --git a/src/overlays/effects/ovl_Effect_Ss_Bubble/z_eff_ss_bubble.c b/src/overlays/effects/ovl_Effect_Ss_Bubble/z_eff_ss_bubble.c index be7d160712..f23d0a9aab 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Bubble/z_eff_ss_bubble.c +++ b/src/overlays/effects/ovl_Effect_Ss_Bubble/z_eff_ss_bubble.c @@ -5,6 +5,16 @@ */ #include "z_eff_ss_bubble.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define rScale regs[0] diff --git a/src/overlays/effects/ovl_Effect_Ss_Bubble/z_eff_ss_bubble.h b/src/overlays/effects/ovl_Effect_Ss_Bubble/z_eff_ss_bubble.h index 3c3c8f80df..7701365bdc 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Bubble/z_eff_ss_bubble.h +++ b/src/overlays/effects/ovl_Effect_Ss_Bubble/z_eff_ss_bubble.h @@ -2,7 +2,7 @@ #define Z_EFF_SS_BUBBLE_H #include "ultra64.h" -#include "global.h" +#include "z64math.h" typedef struct EffectSsBubbleInitParams { /* 0x00 */ Vec3f pos; diff --git a/src/overlays/effects/ovl_Effect_Ss_D_Fire/z_eff_ss_d_fire.c b/src/overlays/effects/ovl_Effect_Ss_D_Fire/z_eff_ss_d_fire.c index 5b178002d1..b66766dd19 100644 --- a/src/overlays/effects/ovl_Effect_Ss_D_Fire/z_eff_ss_d_fire.c +++ b/src/overlays/effects/ovl_Effect_Ss_D_Fire/z_eff_ss_d_fire.c @@ -5,6 +5,14 @@ */ #include "z_eff_ss_d_fire.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64skin_matrix.h" + #include "assets/objects/object_dodongo/object_dodongo.h" #define rScale regs[0] diff --git a/src/overlays/effects/ovl_Effect_Ss_D_Fire/z_eff_ss_d_fire.h b/src/overlays/effects/ovl_Effect_Ss_D_Fire/z_eff_ss_d_fire.h index c59c9add92..fbaa8aa28c 100644 --- a/src/overlays/effects/ovl_Effect_Ss_D_Fire/z_eff_ss_d_fire.h +++ b/src/overlays/effects/ovl_Effect_Ss_D_Fire/z_eff_ss_d_fire.h @@ -2,7 +2,7 @@ #define Z_EFF_SS_D_FIRE_H #include "ultra64.h" -#include "global.h" +#include "z64math.h" typedef struct EffectSsDFireInitParams { /* 0x00 */ Vec3f pos; diff --git a/src/overlays/effects/ovl_Effect_Ss_Dead_Db/z_eff_ss_dead_db.c b/src/overlays/effects/ovl_Effect_Ss_Dead_Db/z_eff_ss_dead_db.c index 56b7b4db36..e8b904a4b6 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Dead_Db/z_eff_ss_dead_db.c +++ b/src/overlays/effects/ovl_Effect_Ss_Dead_Db/z_eff_ss_dead_db.c @@ -5,6 +5,15 @@ */ #include "z_eff_ss_dead_db.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sfx.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64skin_matrix.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define rScale regs[0] diff --git a/src/overlays/effects/ovl_Effect_Ss_Dead_Db/z_eff_ss_dead_db.h b/src/overlays/effects/ovl_Effect_Ss_Dead_Db/z_eff_ss_dead_db.h index 0ea6bd0fda..fb7fc84af1 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Dead_Db/z_eff_ss_dead_db.h +++ b/src/overlays/effects/ovl_Effect_Ss_Dead_Db/z_eff_ss_dead_db.h @@ -2,7 +2,8 @@ #define Z_EFF_SS_DEAD_DB_H #include "ultra64.h" -#include "global.h" +#include "color.h" +#include "z64math.h" typedef struct EffectSsDeadDbInitParams { /* 0x00 */ Vec3f pos; 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 ac0df1b437..0b3ef078e9 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 @@ -5,6 +5,14 @@ */ #include "z_eff_ss_dead_dd.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64skin_matrix.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define rScale regs[0] diff --git a/src/overlays/effects/ovl_Effect_Ss_Dead_Dd/z_eff_ss_dead_dd.h b/src/overlays/effects/ovl_Effect_Ss_Dead_Dd/z_eff_ss_dead_dd.h index 80d46899e7..c9c91ec609 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Dead_Dd/z_eff_ss_dead_dd.h +++ b/src/overlays/effects/ovl_Effect_Ss_Dead_Dd/z_eff_ss_dead_dd.h @@ -2,7 +2,8 @@ #define Z_EFF_SS_DEAD_DD_H #include "ultra64.h" -#include "global.h" +#include "color.h" +#include "z64math.h" typedef struct EffectSsDeadDdInitParams { /* 0x00 */ Vec3f pos; diff --git a/src/overlays/effects/ovl_Effect_Ss_Dead_Ds/z_eff_ss_dead_ds.c b/src/overlays/effects/ovl_Effect_Ss_Dead_Ds/z_eff_ss_dead_ds.c index 9d9c695d88..4d649d4be4 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Dead_Ds/z_eff_ss_dead_ds.c +++ b/src/overlays/effects/ovl_Effect_Ss_Dead_Ds/z_eff_ss_dead_ds.c @@ -5,6 +5,13 @@ */ #include "z_eff_ss_dead_ds.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sys_matrix.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define rScale regs[0] diff --git a/src/overlays/effects/ovl_Effect_Ss_Dead_Ds/z_eff_ss_dead_ds.h b/src/overlays/effects/ovl_Effect_Ss_Dead_Ds/z_eff_ss_dead_ds.h index 3714bf41ba..7a7d57363a 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Dead_Ds/z_eff_ss_dead_ds.h +++ b/src/overlays/effects/ovl_Effect_Ss_Dead_Ds/z_eff_ss_dead_ds.h @@ -2,7 +2,7 @@ #define Z_EFF_SS_DEAD_DS_H #include "ultra64.h" -#include "global.h" +#include "z64math.h" typedef struct EffectSsDeadDsInitParams { /* 0x00 */ Vec3f pos; 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 b1c92ec972..c0e0e9babb 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 @@ -5,6 +5,9 @@ */ #include "z_eff_ss_dead_sound.h" +#include "sfx.h" +#include "z64effect.h" +#include "z64play.h" #define rSfxId regs[10] #define rRepeatMode regs[11] // sound is replayed every update. unused in the original game diff --git a/src/overlays/effects/ovl_Effect_Ss_Dead_Sound/z_eff_ss_dead_sound.h b/src/overlays/effects/ovl_Effect_Ss_Dead_Sound/z_eff_ss_dead_sound.h index cdb20f640b..1f8ca9304c 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Dead_Sound/z_eff_ss_dead_sound.h +++ b/src/overlays/effects/ovl_Effect_Ss_Dead_Sound/z_eff_ss_dead_sound.h @@ -2,7 +2,7 @@ #define Z_EFF_SS_DEAD_SOUND_H #include "ultra64.h" -#include "global.h" +#include "z64math.h" typedef struct EffectSsDeadSoundInitParams { /* 0x00 */ Vec3f pos; diff --git a/src/overlays/effects/ovl_Effect_Ss_Dt_Bubble/z_eff_ss_dt_bubble.c b/src/overlays/effects/ovl_Effect_Ss_Dt_Bubble/z_eff_ss_dt_bubble.c index 07335e2488..2f5901ca2e 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Dt_Bubble/z_eff_ss_dt_bubble.c +++ b/src/overlays/effects/ovl_Effect_Ss_Dt_Bubble/z_eff_ss_dt_bubble.c @@ -5,6 +5,16 @@ */ #include "z_eff_ss_dt_bubble.h" + +#include "libc64/qrand.h" +#include "color.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sys_matrix.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define rPrimColorR regs[0] diff --git a/src/overlays/effects/ovl_Effect_Ss_Dt_Bubble/z_eff_ss_dt_bubble.h b/src/overlays/effects/ovl_Effect_Ss_Dt_Bubble/z_eff_ss_dt_bubble.h index cac4c1a08c..6138c86046 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Dt_Bubble/z_eff_ss_dt_bubble.h +++ b/src/overlays/effects/ovl_Effect_Ss_Dt_Bubble/z_eff_ss_dt_bubble.h @@ -2,7 +2,8 @@ #define Z_EFF_SS_DT_BUBBLE_H #include "ultra64.h" -#include "global.h" +#include "color.h" +#include "z64math.h" typedef struct EffectSsDtBubbleInitParams { /* 0x00 */ Vec3f pos; diff --git a/src/overlays/effects/ovl_Effect_Ss_Dust/z_eff_ss_dust.c b/src/overlays/effects/ovl_Effect_Ss_Dust/z_eff_ss_dust.c index cdb56fc74e..899e9f2a2d 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Dust/z_eff_ss_dust.c +++ b/src/overlays/effects/ovl_Effect_Ss_Dust/z_eff_ss_dust.c @@ -5,6 +5,17 @@ */ #include "z_eff_ss_dust.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64skin_matrix.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define rPrimColorR regs[0] @@ -96,7 +107,7 @@ void EffectSsDust_Draw(PlayState* play, u32 index, EffectSs* this) { SkinMatrix_SetScale(&mfScale, scale, scale, 1.0f); SkinMatrix_MtxFMtxFMult(&mfTrans, &play->billboardMtxF, &mfTransBillboard); SkinMatrix_MtxFMtxFMult(&mfTransBillboard, &mfScale, &mfResult); - gSPMatrix(POLY_XLU_DISP++, &gMtxClear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(POLY_XLU_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); mtx = SkinMatrix_MtxFToNewMtx(gfxCtx, &mfResult); diff --git a/src/overlays/effects/ovl_Effect_Ss_Dust/z_eff_ss_dust.h b/src/overlays/effects/ovl_Effect_Ss_Dust/z_eff_ss_dust.h index 5cb686ae94..958bde91f8 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Dust/z_eff_ss_dust.h +++ b/src/overlays/effects/ovl_Effect_Ss_Dust/z_eff_ss_dust.h @@ -2,7 +2,8 @@ #define Z_EFF_SS_DUST_H #include "ultra64.h" -#include "global.h" +#include "color.h" +#include "z64math.h" typedef struct EffectSsDustInitParams { /* 0x00 */ Vec3f pos; diff --git a/src/overlays/effects/ovl_Effect_Ss_En_Fire/z_eff_ss_en_fire.c b/src/overlays/effects/ovl_Effect_Ss_En_Fire/z_eff_ss_en_fire.c index 73795ab2d4..56dc375337 100644 --- a/src/overlays/effects/ovl_Effect_Ss_En_Fire/z_eff_ss_en_fire.c +++ b/src/overlays/effects/ovl_Effect_Ss_En_Fire/z_eff_ss_en_fire.c @@ -5,6 +5,15 @@ */ #include "z_eff_ss_en_fire.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define rScaleMax regs[0] diff --git a/src/overlays/effects/ovl_Effect_Ss_En_Fire/z_eff_ss_en_fire.h b/src/overlays/effects/ovl_Effect_Ss_En_Fire/z_eff_ss_en_fire.h index c511827ecf..14acb95e40 100644 --- a/src/overlays/effects/ovl_Effect_Ss_En_Fire/z_eff_ss_en_fire.h +++ b/src/overlays/effects/ovl_Effect_Ss_En_Fire/z_eff_ss_en_fire.h @@ -2,10 +2,10 @@ #define Z_EFF_SS_EN_FIRE_H #include "ultra64.h" -#include "global.h" +#include "z64math.h" typedef struct EffectSsEnFireInitParams { - /* 0x00 */ Actor* actor; + /* 0x00 */ struct Actor* actor; /* 0x04 */ Vec3f pos; /* 0x10 */ s16 scale; /* 0x12 */ s16 unk_12; 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 4a2d5a584c..f4f8e01d1c 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 @@ -5,7 +5,17 @@ */ #include "z_eff_ss_en_ice.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "sys_math.h" +#include "sys_matrix.h" #include "versions.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define rLifespan regs[0] diff --git a/src/overlays/effects/ovl_Effect_Ss_En_Ice/z_eff_ss_en_ice.h b/src/overlays/effects/ovl_Effect_Ss_En_Ice/z_eff_ss_en_ice.h index 22929d39dd..238b005bcc 100644 --- a/src/overlays/effects/ovl_Effect_Ss_En_Ice/z_eff_ss_en_ice.h +++ b/src/overlays/effects/ovl_Effect_Ss_En_Ice/z_eff_ss_en_ice.h @@ -2,10 +2,11 @@ #define Z_EFF_SS_EN_ICE_H #include "ultra64.h" -#include "global.h" +#include "color.h" +#include "z64math.h" typedef struct EffectSsEnIceInitParams { - /* 0x00 */ Actor* actor; + /* 0x00 */ struct Actor* actor; /* 0x04 */ Vec3f pos; /* 0x10 */ f32 scale; /* 0x14 */ Vec3f velocity; diff --git a/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.c b/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.c index e3506295da..3af854c502 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.c +++ b/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.c @@ -5,6 +5,14 @@ */ #include "z_eff_ss_extra.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sys_matrix.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/object_yabusame_point/object_yabusame_point.h" #define rObjectSlot regs[0] diff --git a/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.h b/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.h index c8047d21fa..1bf5a5d30c 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.h +++ b/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.h @@ -2,7 +2,7 @@ #define Z_EFF_SS_EXTRA_H #include "ultra64.h" -#include "global.h" +#include "z64math.h" typedef struct EffectSsExtraInitParams { /* 0x00 */ Vec3f pos; diff --git a/src/overlays/effects/ovl_Effect_Ss_Fcircle/z_eff_ss_fcircle.c b/src/overlays/effects/ovl_Effect_Ss_Fcircle/z_eff_ss_fcircle.c index 6b07df0582..9f00f52e30 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Fcircle/z_eff_ss_fcircle.c +++ b/src/overlays/effects/ovl_Effect_Ss_Fcircle/z_eff_ss_fcircle.c @@ -5,6 +5,14 @@ */ #include "z_eff_ss_fcircle.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define rUnused regs[3] // probably supposed to be an alpha diff --git a/src/overlays/effects/ovl_Effect_Ss_Fcircle/z_eff_ss_fcircle.h b/src/overlays/effects/ovl_Effect_Ss_Fcircle/z_eff_ss_fcircle.h index 2e3eb74184..fc2a4ec2de 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Fcircle/z_eff_ss_fcircle.h +++ b/src/overlays/effects/ovl_Effect_Ss_Fcircle/z_eff_ss_fcircle.h @@ -2,10 +2,10 @@ #define Z_EFF_SS_FCIRCLE_H #include "ultra64.h" -#include "global.h" +#include "z64math.h" typedef struct EffectSsFcircleInitParams { - /* 0x00 */ Actor* actor; + /* 0x00 */ struct Actor* actor; /* 0x04 */ Vec3f pos; /* 0x10 */ s16 radius; /* 0x12 */ s16 height; 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 c4ab534692..3bdadb99f7 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 @@ -6,6 +6,18 @@ #include "z_eff_ss_fhg_flash.h" #include "overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "segmented_address.h" +#include "sys_matrix.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64skin.h" + #include "assets/objects/object_fhg/object_fhg.h" #define rAlpha regs[0] diff --git a/src/overlays/effects/ovl_Effect_Ss_Fire_Tail/z_eff_ss_fire_tail.c b/src/overlays/effects/ovl_Effect_Ss_Fire_Tail/z_eff_ss_fire_tail.c index 089c7f73eb..de4ae887bb 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Fire_Tail/z_eff_ss_fire_tail.c +++ b/src/overlays/effects/ovl_Effect_Ss_Fire_Tail/z_eff_ss_fire_tail.c @@ -5,6 +5,15 @@ */ #include "z_eff_ss_fire_tail.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define rScale regs[0] diff --git a/src/overlays/effects/ovl_Effect_Ss_Fire_Tail/z_eff_ss_fire_tail.h b/src/overlays/effects/ovl_Effect_Ss_Fire_Tail/z_eff_ss_fire_tail.h index 70f5df7e19..ebe8a7203d 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Fire_Tail/z_eff_ss_fire_tail.h +++ b/src/overlays/effects/ovl_Effect_Ss_Fire_Tail/z_eff_ss_fire_tail.h @@ -2,10 +2,11 @@ #define Z_EFF_SS_FIRE_TAIL_H #include "ultra64.h" -#include "global.h" +#include "color.h" +#include "z64math.h" typedef struct EffectSsFireTailInitParams { - /* 0x00 */ Actor* actor; + /* 0x00 */ struct Actor* actor; /* 0x04 */ Vec3f pos; /* 0x10 */ f32 scale; /* 0x14 */ Vec3f unk_14; diff --git a/src/overlays/effects/ovl_Effect_Ss_G_Fire/z_eff_ss_g_fire.c b/src/overlays/effects/ovl_Effect_Ss_G_Fire/z_eff_ss_g_fire.c index 351fadab7c..05e4a3d8bf 100644 --- a/src/overlays/effects/ovl_Effect_Ss_G_Fire/z_eff_ss_g_fire.c +++ b/src/overlays/effects/ovl_Effect_Ss_G_Fire/z_eff_ss_g_fire.c @@ -5,6 +5,11 @@ */ #include "z_eff_ss_g_fire.h" + +#include "segmented_address.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" u32 EffectSsGFire_Init(PlayState* play, u32 index, EffectSs* this, void* initParamsx); diff --git a/src/overlays/effects/ovl_Effect_Ss_G_Fire/z_eff_ss_g_fire.h b/src/overlays/effects/ovl_Effect_Ss_G_Fire/z_eff_ss_g_fire.h index cfb5dcfafb..52312527d9 100644 --- a/src/overlays/effects/ovl_Effect_Ss_G_Fire/z_eff_ss_g_fire.h +++ b/src/overlays/effects/ovl_Effect_Ss_G_Fire/z_eff_ss_g_fire.h @@ -2,7 +2,7 @@ #define Z_EFF_SS_G_FIRE_H #include "ultra64.h" -#include "global.h" +#include "z64math.h" typedef struct EffectSsGFireInitParams { /* 0x00 */ Vec3f pos; diff --git a/src/overlays/effects/ovl_Effect_Ss_G_Magma/z_eff_ss_g_magma.c b/src/overlays/effects/ovl_Effect_Ss_G_Magma/z_eff_ss_g_magma.c index f93bb0e7d6..9610917043 100644 --- a/src/overlays/effects/ovl_Effect_Ss_G_Magma/z_eff_ss_g_magma.c +++ b/src/overlays/effects/ovl_Effect_Ss_G_Magma/z_eff_ss_g_magma.c @@ -5,6 +5,12 @@ */ #include "z_eff_ss_g_magma.h" + +#include "libc64/qrand.h" +#include "segmented_address.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" u32 EffectSsGMagma_Init(PlayState* play, u32 index, EffectSs* this, void* initParamsx); diff --git a/src/overlays/effects/ovl_Effect_Ss_G_Magma/z_eff_ss_g_magma.h b/src/overlays/effects/ovl_Effect_Ss_G_Magma/z_eff_ss_g_magma.h index ab1b97a1de..55215239d2 100644 --- a/src/overlays/effects/ovl_Effect_Ss_G_Magma/z_eff_ss_g_magma.h +++ b/src/overlays/effects/ovl_Effect_Ss_G_Magma/z_eff_ss_g_magma.h @@ -2,7 +2,7 @@ #define Z_EFF_SS_G_MAGMA_H #include "ultra64.h" -#include "global.h" +#include "z64math.h" typedef struct EffectSsGMagmaInitParams { /* 0x00 */ Vec3f pos; diff --git a/src/overlays/effects/ovl_Effect_Ss_G_Magma2/z_eff_ss_g_magma2.c b/src/overlays/effects/ovl_Effect_Ss_G_Magma2/z_eff_ss_g_magma2.c index 11fc08606b..9ee5cbe831 100644 --- a/src/overlays/effects/ovl_Effect_Ss_G_Magma2/z_eff_ss_g_magma2.c +++ b/src/overlays/effects/ovl_Effect_Ss_G_Magma2/z_eff_ss_g_magma2.c @@ -5,6 +5,14 @@ */ #include "z_eff_ss_g_magma2.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sys_matrix.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/object_kingdodongo/object_kingdodongo.h" #define rPrimColorR regs[0] diff --git a/src/overlays/effects/ovl_Effect_Ss_G_Magma2/z_eff_ss_g_magma2.h b/src/overlays/effects/ovl_Effect_Ss_G_Magma2/z_eff_ss_g_magma2.h index 715e01e7db..2ddc9f4ce7 100644 --- a/src/overlays/effects/ovl_Effect_Ss_G_Magma2/z_eff_ss_g_magma2.h +++ b/src/overlays/effects/ovl_Effect_Ss_G_Magma2/z_eff_ss_g_magma2.h @@ -2,7 +2,8 @@ #define Z_EFF_SS_G_MAGMA2_H #include "ultra64.h" -#include "global.h" +#include "color.h" +#include "z64math.h" typedef struct EffectSsGMagma2InitParams { /* 0x00 */ Vec3f pos; diff --git a/src/overlays/effects/ovl_Effect_Ss_G_Ripple/z_eff_ss_g_ripple.c b/src/overlays/effects/ovl_Effect_Ss_G_Ripple/z_eff_ss_g_ripple.c index 48a2eec4f0..2c83108d35 100644 --- a/src/overlays/effects/ovl_Effect_Ss_G_Ripple/z_eff_ss_g_ripple.c +++ b/src/overlays/effects/ovl_Effect_Ss_G_Ripple/z_eff_ss_g_ripple.c @@ -5,6 +5,15 @@ */ #include "z_eff_ss_g_ripple.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64skin_matrix.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define rWaterBoxNum regs[0] diff --git a/src/overlays/effects/ovl_Effect_Ss_G_Ripple/z_eff_ss_g_ripple.h b/src/overlays/effects/ovl_Effect_Ss_G_Ripple/z_eff_ss_g_ripple.h index 63487ee0ca..86a7d8378e 100644 --- a/src/overlays/effects/ovl_Effect_Ss_G_Ripple/z_eff_ss_g_ripple.h +++ b/src/overlays/effects/ovl_Effect_Ss_G_Ripple/z_eff_ss_g_ripple.h @@ -2,7 +2,7 @@ #define Z_EFF_SS_G_RIPPLE_H #include "ultra64.h" -#include "global.h" +#include "z64math.h" typedef struct EffectSsGRippleInitParams { /* 0x00 */ Vec3f pos; diff --git a/src/overlays/effects/ovl_Effect_Ss_G_Spk/z_eff_ss_g_spk.c b/src/overlays/effects/ovl_Effect_Ss_G_Spk/z_eff_ss_g_spk.c index f43f4f3a52..a5472c29fa 100644 --- a/src/overlays/effects/ovl_Effect_Ss_G_Spk/z_eff_ss_g_spk.c +++ b/src/overlays/effects/ovl_Effect_Ss_G_Spk/z_eff_ss_g_spk.c @@ -5,6 +5,16 @@ */ #include "z_eff_ss_g_spk.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64skin_matrix.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define rPrimColorR regs[0] diff --git a/src/overlays/effects/ovl_Effect_Ss_G_Spk/z_eff_ss_g_spk.h b/src/overlays/effects/ovl_Effect_Ss_G_Spk/z_eff_ss_g_spk.h index 8627bc0528..0d94bd7e0a 100644 --- a/src/overlays/effects/ovl_Effect_Ss_G_Spk/z_eff_ss_g_spk.h +++ b/src/overlays/effects/ovl_Effect_Ss_G_Spk/z_eff_ss_g_spk.h @@ -2,10 +2,11 @@ #define Z_EFF_SS_G_SPK_H #include "ultra64.h" -#include "global.h" +#include "color.h" +#include "z64math.h" typedef struct EffectSsGSpkInitParams { - /* 0x00 */ Actor* actor; + /* 0x00 */ struct Actor* actor; /* 0x04 */ Vec3f pos; /* 0x10 */ Vec3f velocity; /* 0x1C */ Vec3f accel; diff --git a/src/overlays/effects/ovl_Effect_Ss_G_Splash/z_eff_ss_g_splash.c b/src/overlays/effects/ovl_Effect_Ss_G_Splash/z_eff_ss_g_splash.c index 4e7c26308c..3baab32db9 100644 --- a/src/overlays/effects/ovl_Effect_Ss_G_Splash/z_eff_ss_g_splash.c +++ b/src/overlays/effects/ovl_Effect_Ss_G_Splash/z_eff_ss_g_splash.c @@ -5,6 +5,11 @@ */ #include "z_eff_ss_g_splash.h" + +#include "segmented_address.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" //! @bug the reuse of regs[11] means that EffectSs_DrawGEffect will treat the type as an object slot (`rgObjectSlot`) diff --git a/src/overlays/effects/ovl_Effect_Ss_G_Splash/z_eff_ss_g_splash.h b/src/overlays/effects/ovl_Effect_Ss_G_Splash/z_eff_ss_g_splash.h index c13e19cd1c..fa1907f667 100644 --- a/src/overlays/effects/ovl_Effect_Ss_G_Splash/z_eff_ss_g_splash.h +++ b/src/overlays/effects/ovl_Effect_Ss_G_Splash/z_eff_ss_g_splash.h @@ -2,7 +2,8 @@ #define Z_EFF_SS_G_SPLASH_H #include "ultra64.h" -#include "global.h" +#include "color.h" +#include "z64math.h" typedef struct EffectSsGSplashInitParams { /* 0x00 */ Vec3f pos; diff --git a/src/overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.c b/src/overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.c index 9b27081773..e084b5f1f6 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.c +++ b/src/overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.c @@ -5,6 +5,16 @@ */ #include "z_eff_ss_hahen.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sys_matrix.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define rPitch regs[0] diff --git a/src/overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.h b/src/overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.h index 1385bee8c8..d598cebf5d 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.h +++ b/src/overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.h @@ -2,7 +2,7 @@ #define Z_EFF_SS_HAHEN_H #include "ultra64.h" -#include "global.h" +#include "z64math.h" typedef struct EffectSsHahenInitParams { /* 0x00 */ Vec3f pos; diff --git a/src/overlays/effects/ovl_Effect_Ss_HitMark/z_eff_ss_hitmark.c b/src/overlays/effects/ovl_Effect_Ss_HitMark/z_eff_ss_hitmark.c index 2e279a5b12..9be42db8d9 100644 --- a/src/overlays/effects/ovl_Effect_Ss_HitMark/z_eff_ss_hitmark.c +++ b/src/overlays/effects/ovl_Effect_Ss_HitMark/z_eff_ss_hitmark.c @@ -5,7 +5,15 @@ */ #include "z_eff_ss_hitmark.h" -#include "global.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sys_matrix.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64skin_matrix.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define rTexIndex regs[0] @@ -87,7 +95,7 @@ void EffectSsHitMark_Draw(PlayState* play, u32 index, EffectSs* this) { SkinMatrix_SetScale(&mfScale, scale, scale, 1.0f); SkinMatrix_MtxFMtxFMult(&mfTrans, &play->billboardMtxF, &mfTransBillboard); SkinMatrix_MtxFMtxFMult(&mfTransBillboard, &mfScale, &mfResult); - gSPMatrix(POLY_XLU_DISP++, &gMtxClear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(POLY_XLU_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); mtx = SkinMatrix_MtxFToNewMtx(gfxCtx, &mfResult); diff --git a/src/overlays/effects/ovl_Effect_Ss_Ice_Piece/z_eff_ss_ice_piece.c b/src/overlays/effects/ovl_Effect_Ss_Ice_Piece/z_eff_ss_ice_piece.c index 7f0fc02fa1..9ce9885de3 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Ice_Piece/z_eff_ss_ice_piece.c +++ b/src/overlays/effects/ovl_Effect_Ss_Ice_Piece/z_eff_ss_ice_piece.c @@ -5,6 +5,15 @@ */ #include "z_eff_ss_ice_piece.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "sys_math.h" +#include "sys_matrix.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define rLifespan regs[0] diff --git a/src/overlays/effects/ovl_Effect_Ss_Ice_Piece/z_eff_ss_ice_piece.h b/src/overlays/effects/ovl_Effect_Ss_Ice_Piece/z_eff_ss_ice_piece.h index f7b376a7ad..afb96c213c 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Ice_Piece/z_eff_ss_ice_piece.h +++ b/src/overlays/effects/ovl_Effect_Ss_Ice_Piece/z_eff_ss_ice_piece.h @@ -2,7 +2,7 @@ #define Z_EFF_SS_ICE_PIECE_H #include "ultra64.h" -#include "global.h" +#include "z64math.h" typedef struct EffectSsIcePieceInitParams { /* 0x00 */ Vec3f pos; 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 9997240be7..5c1b5fc164 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 @@ -5,6 +5,15 @@ */ #include "z_eff_ss_ice_smoke.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/object_fz/object_fz.h" #define rObjectSlot regs[0] diff --git a/src/overlays/effects/ovl_Effect_Ss_Ice_Smoke/z_eff_ss_ice_smoke.h b/src/overlays/effects/ovl_Effect_Ss_Ice_Smoke/z_eff_ss_ice_smoke.h index 64833be518..24c27f1cf6 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Ice_Smoke/z_eff_ss_ice_smoke.h +++ b/src/overlays/effects/ovl_Effect_Ss_Ice_Smoke/z_eff_ss_ice_smoke.h @@ -2,7 +2,7 @@ #define Z_EFF_SS_ICE_SMOKE_H #include "ultra64.h" -#include "global.h" +#include "z64math.h" typedef struct EffectSsIceSmokeInitParams { /* 0x00 */ Vec3f pos; diff --git a/src/overlays/effects/ovl_Effect_Ss_K_Fire/z_eff_ss_k_fire.c b/src/overlays/effects/ovl_Effect_Ss_K_Fire/z_eff_ss_k_fire.c index 10a3b668ab..12d9c5a5eb 100644 --- a/src/overlays/effects/ovl_Effect_Ss_K_Fire/z_eff_ss_k_fire.c +++ b/src/overlays/effects/ovl_Effect_Ss_K_Fire/z_eff_ss_k_fire.c @@ -5,6 +5,14 @@ */ #include "z_eff_ss_k_fire.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "sys_matrix.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define rAlpha regs[0] diff --git a/src/overlays/effects/ovl_Effect_Ss_K_Fire/z_eff_ss_k_fire.h b/src/overlays/effects/ovl_Effect_Ss_K_Fire/z_eff_ss_k_fire.h index 1896b47a73..eb8e8764d7 100644 --- a/src/overlays/effects/ovl_Effect_Ss_K_Fire/z_eff_ss_k_fire.h +++ b/src/overlays/effects/ovl_Effect_Ss_K_Fire/z_eff_ss_k_fire.h @@ -2,7 +2,7 @@ #define Z_EFF_SS_K_FIRE_H #include "ultra64.h" -#include "global.h" +#include "z64math.h" typedef struct EffectSsKFireInitParams { /* 0x00 */ Vec3f pos; 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 a79893c392..4fbd637855 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 @@ -5,8 +5,17 @@ */ #include "z_eff_ss_kakera.h" -#include "versions.h" + +#include "libc64/qrand.h" +#include "libu64/debug.h" +#include "gfx.h" +#include "gfx_setupdl.h" #include "line_numbers.h" +#include "sys_matrix.h" +#include "versions.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" #define rReg0 regs[0] #define rGravity regs[1] diff --git a/src/overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h b/src/overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h index bd55d5c3c5..90f3a8cdab 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h +++ b/src/overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h @@ -2,7 +2,7 @@ #define Z_EFF_SS_KAKERA_H #include "ultra64.h" -#include "global.h" +#include "z64math.h" typedef struct EffectSsKakeraInitParams { /* 0x00 */ Vec3f pos; diff --git a/src/overlays/effects/ovl_Effect_Ss_KiraKira/z_eff_ss_kirakira.c b/src/overlays/effects/ovl_Effect_Ss_KiraKira/z_eff_ss_kirakira.c index 5973ca9e1e..f7c22aaa19 100644 --- a/src/overlays/effects/ovl_Effect_Ss_KiraKira/z_eff_ss_kirakira.c +++ b/src/overlays/effects/ovl_Effect_Ss_KiraKira/z_eff_ss_kirakira.c @@ -5,6 +5,18 @@ */ #include "z_eff_ss_kirakira.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "rand.h" +#include "segmented_address.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64skin_matrix.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define rRotSpeed regs[0] @@ -97,7 +109,7 @@ void EffectSsKiraKira_Draw(PlayState* play, u32 index, EffectSs* this) { SkinMatrix_MtxFMtxFMult(&mfTrans, &play->billboardMtxF, &mfTransBillboard); SkinMatrix_MtxFMtxFMult(&mfTransBillboard, &mfRotY, &mfTransBillboardRotY); SkinMatrix_MtxFMtxFMult(&mfTransBillboardRotY, &mfScale, &mfResult); - gSPMatrix(POLY_XLU_DISP++, &gMtxClear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(POLY_XLU_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); mtx = SkinMatrix_MtxFToNewMtx(gfxCtx, &mfResult); diff --git a/src/overlays/effects/ovl_Effect_Ss_KiraKira/z_eff_ss_kirakira.h b/src/overlays/effects/ovl_Effect_Ss_KiraKira/z_eff_ss_kirakira.h index 7f8c18da3e..0c128ff7ab 100644 --- a/src/overlays/effects/ovl_Effect_Ss_KiraKira/z_eff_ss_kirakira.h +++ b/src/overlays/effects/ovl_Effect_Ss_KiraKira/z_eff_ss_kirakira.h @@ -2,7 +2,8 @@ #define Z_EFF_SS_KIRAKIRA_H #include "ultra64.h" -#include "global.h" +#include "color.h" +#include "z64math.h" typedef struct EffectSsKiraKiraInitParams { /* 0x00 */ Vec3f pos; diff --git a/src/overlays/effects/ovl_Effect_Ss_Lightning/z_eff_ss_lightning.c b/src/overlays/effects/ovl_Effect_Ss_Lightning/z_eff_ss_lightning.c index 0e2560e34f..f44ac38496 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Lightning/z_eff_ss_lightning.c +++ b/src/overlays/effects/ovl_Effect_Ss_Lightning/z_eff_ss_lightning.c @@ -5,6 +5,17 @@ */ #include "z_eff_ss_lightning.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64skin_matrix.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define rPrimColorR regs[0] @@ -100,7 +111,7 @@ void EffectSsLightning_Draw(PlayState* play, u32 index, EffectSs* this) { SkinMatrix_MtxFMtxFMult(&mfTransBillboard, &mfRotate, &mfTransBillboardRotate); SkinMatrix_MtxFMtxFMult(&mfTransBillboardRotate, &mfScale, &mfResult); - gSPMatrix(POLY_XLU_DISP++, &gMtxClear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(POLY_XLU_DISP++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); mtx = SkinMatrix_MtxFToNewMtx(gfxCtx, &mfResult); diff --git a/src/overlays/effects/ovl_Effect_Ss_Lightning/z_eff_ss_lightning.h b/src/overlays/effects/ovl_Effect_Ss_Lightning/z_eff_ss_lightning.h index ad352e9013..39f5d51841 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Lightning/z_eff_ss_lightning.h +++ b/src/overlays/effects/ovl_Effect_Ss_Lightning/z_eff_ss_lightning.h @@ -2,7 +2,8 @@ #define Z_EFF_SS_LIGHTNING_H #include "ultra64.h" -#include "global.h" +#include "color.h" +#include "z64math.h" typedef struct EffectSsLightningInitParams { /* 0x00 */ Vec3f pos; diff --git a/src/overlays/effects/ovl_Effect_Ss_Sibuki/z_eff_ss_sibuki.c b/src/overlays/effects/ovl_Effect_Ss_Sibuki/z_eff_ss_sibuki.c index f707251cba..1dadd7f069 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Sibuki/z_eff_ss_sibuki.c +++ b/src/overlays/effects/ovl_Effect_Ss_Sibuki/z_eff_ss_sibuki.c @@ -5,6 +5,18 @@ */ #include "z_eff_ss_sibuki.h" + +#include "libc64/qrand.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "regs.h" +#include "segmented_address.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define rPrimColorR regs[0] diff --git a/src/overlays/effects/ovl_Effect_Ss_Sibuki/z_eff_ss_sibuki.h b/src/overlays/effects/ovl_Effect_Ss_Sibuki/z_eff_ss_sibuki.h index 18aaf0d200..e45c2c6f2a 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Sibuki/z_eff_ss_sibuki.h +++ b/src/overlays/effects/ovl_Effect_Ss_Sibuki/z_eff_ss_sibuki.h @@ -2,7 +2,7 @@ #define Z_EFF_SS_SIBUKI_H #include "ultra64.h" -#include "global.h" +#include "z64math.h" typedef struct EffectSsSibukiInitParams { /* 0x00 */ Vec3f pos; diff --git a/src/overlays/effects/ovl_Effect_Ss_Sibuki2/z_eff_ss_sibuki2.c b/src/overlays/effects/ovl_Effect_Ss_Sibuki2/z_eff_ss_sibuki2.c index e85a53e890..8566be1623 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Sibuki2/z_eff_ss_sibuki2.c +++ b/src/overlays/effects/ovl_Effect_Ss_Sibuki2/z_eff_ss_sibuki2.c @@ -5,6 +5,14 @@ */ #include "z_eff_ss_sibuki2.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "segmented_address.h" +#include "sys_matrix.h" +#include "z64effect.h" +#include "z64play.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define rPrimColorR regs[0] diff --git a/src/overlays/effects/ovl_Effect_Ss_Sibuki2/z_eff_ss_sibuki2.h b/src/overlays/effects/ovl_Effect_Ss_Sibuki2/z_eff_ss_sibuki2.h index 7fb20d8b33..37a9425dc7 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Sibuki2/z_eff_ss_sibuki2.h +++ b/src/overlays/effects/ovl_Effect_Ss_Sibuki2/z_eff_ss_sibuki2.h @@ -2,7 +2,7 @@ #define Z_EFF_SS_SIBUKI2_H #include "ultra64.h" -#include "global.h" +#include "z64math.h" typedef struct EffectSsSibuki2InitParams { /* 0x00 */ Vec3f pos; diff --git a/src/overlays/effects/ovl_Effect_Ss_Solder_Srch_Ball/z_eff_ss_solder_srch_ball.c b/src/overlays/effects/ovl_Effect_Ss_Solder_Srch_Ball/z_eff_ss_solder_srch_ball.c index ed1d5edccf..2277a71d85 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Solder_Srch_Ball/z_eff_ss_solder_srch_ball.c +++ b/src/overlays/effects/ovl_Effect_Ss_Solder_Srch_Ball/z_eff_ss_solder_srch_ball.c @@ -6,6 +6,11 @@ #include "z_eff_ss_solder_srch_ball.h" +#include "z64bgcheck.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" + #define rUnused regs[1] u32 EffectSsSolderSrchBall_Init(PlayState* play, u32 index, EffectSs* this, void* initParamsx); diff --git a/src/overlays/effects/ovl_Effect_Ss_Solder_Srch_Ball/z_eff_ss_solder_srch_ball.h b/src/overlays/effects/ovl_Effect_Ss_Solder_Srch_Ball/z_eff_ss_solder_srch_ball.h index 70aa558b65..b105f063d5 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Solder_Srch_Ball/z_eff_ss_solder_srch_ball.h +++ b/src/overlays/effects/ovl_Effect_Ss_Solder_Srch_Ball/z_eff_ss_solder_srch_ball.h @@ -2,7 +2,7 @@ #define Z_EFF_SS_SOLDERSRCHBALL_H #include "ultra64.h" -#include "global.h" +#include "z64math.h" typedef struct EffectSsSolderSrchBallInitParams { /* 0x00 */ Vec3f pos; diff --git a/src/overlays/effects/ovl_Effect_Ss_Stick/z_eff_ss_stick.c b/src/overlays/effects/ovl_Effect_Ss_Stick/z_eff_ss_stick.c index ba327e465a..520f8af02a 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Stick/z_eff_ss_stick.c +++ b/src/overlays/effects/ovl_Effect_Ss_Stick/z_eff_ss_stick.c @@ -5,6 +5,16 @@ */ #include "z_eff_ss_stick.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "sys_matrix.h" +#include "z_lib.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/objects/object_link_boy/object_link_boy.h" #include "assets/objects/object_link_child/object_link_child.h" diff --git a/src/overlays/effects/ovl_Effect_Ss_Stick/z_eff_ss_stick.h b/src/overlays/effects/ovl_Effect_Ss_Stick/z_eff_ss_stick.h index 8e01aeb003..4b5ccda965 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Stick/z_eff_ss_stick.h +++ b/src/overlays/effects/ovl_Effect_Ss_Stick/z_eff_ss_stick.h @@ -2,7 +2,7 @@ #define Z_EFF_SS_STICK_H #include "ultra64.h" -#include "global.h" +#include "z64math.h" typedef struct EffectSsStickInitParams { /* 0x00 */ Vec3f pos; diff --git a/src/overlays/effects/ovl_Effect_Ss_Stone1/z_eff_ss_stone1.c b/src/overlays/effects/ovl_Effect_Ss_Stone1/z_eff_ss_stone1.c index e1083373b8..5ecd83add1 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Stone1/z_eff_ss_stone1.c +++ b/src/overlays/effects/ovl_Effect_Ss_Stone1/z_eff_ss_stone1.c @@ -5,6 +5,17 @@ */ #include "z_eff_ss_stone1.h" + +#include "color.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "regs.h" +#include "segmented_address.h" +#include "sys_matrix.h" +#include "z64effect.h" +#include "z64play.h" +#include "z64skin_matrix.h" + #include "assets/objects/gameplay_keep/gameplay_keep.h" #define rReg0 regs[0] diff --git a/src/overlays/effects/ovl_Effect_Ss_Stone1/z_eff_ss_stone1.h b/src/overlays/effects/ovl_Effect_Ss_Stone1/z_eff_ss_stone1.h index d329161277..efb8df225d 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Stone1/z_eff_ss_stone1.h +++ b/src/overlays/effects/ovl_Effect_Ss_Stone1/z_eff_ss_stone1.h @@ -2,7 +2,7 @@ #define Z_EFF_SS_STONE1_H #include "ultra64.h" -#include "global.h" +#include "z64math.h" typedef struct EffectSsStone1InitParams { /* 0x00 */ Vec3f pos; diff --git a/src/overlays/gamestates/ovl_file_choose/file_select.h b/src/overlays/gamestates/ovl_file_choose/file_select.h index 465d017ed0..ae41c4dced 100644 --- a/src/overlays/gamestates/ovl_file_choose/file_select.h +++ b/src/overlays/gamestates/ovl_file_choose/file_select.h @@ -3,8 +3,9 @@ #include "libc/stddef.h" #include "ultra64.h" -#include "global.h" +#include "gfx.h" #include "versions.h" +#include "z64game.h" #define GET_NEWF(sramCtx, slotNum, index) (sramCtx->readBuff[gSramSlotOffsets[slotNum] + offsetof(SaveContext, save.info.playerData.newf[index])]) @@ -140,7 +141,9 @@ typedef enum ConfirmButtonIndex { typedef enum ActionButtonIndex { /* 0 */ FS_BTN_ACTION_COPY, - /* 1 */ FS_BTN_ACTION_ERASE + /* 1 */ FS_BTN_ACTION_ERASE, + /* 2 */ FS_BTN_ACTION_YES, + /* 3 */ FS_BTN_ACTION_QUIT } ActionButtonIndex; typedef enum SettingIndex { @@ -152,13 +155,6 @@ typedef enum SettingIndex { /* */ FS_SETTING_MAX } SettingIndex; -typedef enum AudioOption { - /* 0 */ FS_AUDIO_STEREO, - /* 1 */ FS_AUDIO_MONO, - /* 2 */ FS_AUDIO_HEADSET, - /* 3 */ FS_AUDIO_SURROUND -} AudioOption; - typedef enum CharPage { /* 0 */ FS_CHAR_PAGE_HIRA, /* 1 */ FS_CHAR_PAGE_KATA, 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 f7c6b6e691..00dd450f3d 100644 --- a/src/overlays/gamestates/ovl_file_choose/z_file_choose.c +++ b/src/overlays/gamestates/ovl_file_choose/z_file_choose.c @@ -1,14 +1,43 @@ #include "file_select.h" +#include "file_select_state.h" + +#include "attributes.h" +#include "controller.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "letterbox.h" +#include "macros.h" +#include "main.h" +#include "map_select_state.h" +#if PLATFORM_N64 +#include "n64dd.h" +#endif +#include "regs.h" +#include "rumble.h" +#include "segment_symbols.h" +#include "seqcmd.h" +#include "sequence.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" #include "versions.h" +#include "z_lib.h" +#include "z64audio.h" +#include "z64environment.h" +#include "z64play.h" +#include "z64save.h" +#include "z64skybox.h" +#include "z64sram.h" +#include "z64ss_sram.h" +#include "z64view.h" + +#include "global.h" + #if OOT_PAL_N64 #include "assets/objects/object_mag/object_mag.h" #endif #include "assets/textures/title_static/title_static.h" #include "assets/textures/parameter_static/parameter_static.h" -#if PLATFORM_N64 -#include "n64dd.h" -#endif #if OOT_PAL_N64 static s32 sInitialLanguageAlphaAsInt = 100; @@ -721,12 +750,12 @@ void FileSelect_PulsateCursor(GameState* thisx) { SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, 3, OS_WRITE); PRINTF("1:read_buff[]=%x, %x, %x, %x\n", sramCtx->readBuff[SRAM_HEADER_SOUND], - sramCtx->readBuff[SRAM_HEADER_ZTARGET], sramCtx->readBuff[SRAM_HEADER_LANGUAGE], + sramCtx->readBuff[SRAM_HEADER_Z_TARGET], sramCtx->readBuff[SRAM_HEADER_LANGUAGE], sramCtx->readBuff[SRAM_HEADER_MAGIC]); SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE, OS_READ); PRINTF("read_buff[]=%x, %x, %x, %x\n", sramCtx->readBuff[SRAM_HEADER_SOUND], - sramCtx->readBuff[SRAM_HEADER_ZTARGET], sramCtx->readBuff[SRAM_HEADER_LANGUAGE], + sramCtx->readBuff[SRAM_HEADER_Z_TARGET], sramCtx->readBuff[SRAM_HEADER_LANGUAGE], sramCtx->readBuff[SRAM_HEADER_MAGIC]); } else if (CHECK_BTN_ALL(debugInput->press.button, BTN_DUP)) { sramCtx->readBuff[SRAM_HEADER_LANGUAGE] = gSaveContext.language = LANGUAGE_GER; @@ -734,11 +763,11 @@ void FileSelect_PulsateCursor(GameState* thisx) { SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, 3, OS_WRITE); PRINTF("1:read_buff[]=%x, %x, %x, %x\n", sramCtx->readBuff[SRAM_HEADER_SOUND], - sramCtx->readBuff[SRAM_HEADER_ZTARGET], sramCtx->readBuff[SRAM_HEADER_LANGUAGE], + sramCtx->readBuff[SRAM_HEADER_Z_TARGET], sramCtx->readBuff[SRAM_HEADER_LANGUAGE], sramCtx->readBuff[SRAM_HEADER_MAGIC]); SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE, OS_READ); PRINTF("read_buff[]=%x, %x, %x, %x\n", sramCtx->readBuff[SRAM_HEADER_SOUND], - sramCtx->readBuff[SRAM_HEADER_ZTARGET], sramCtx->readBuff[SRAM_HEADER_LANGUAGE], + sramCtx->readBuff[SRAM_HEADER_Z_TARGET], sramCtx->readBuff[SRAM_HEADER_LANGUAGE], sramCtx->readBuff[SRAM_HEADER_MAGIC]); } else if (CHECK_BTN_ALL(debugInput->press.button, BTN_DRIGHT)) { sramCtx->readBuff[SRAM_HEADER_LANGUAGE] = gSaveContext.language = LANGUAGE_FRA; @@ -746,12 +775,12 @@ void FileSelect_PulsateCursor(GameState* thisx) { SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, 3, OS_WRITE); PRINTF("1:read_buff[]=%x, %x, %x, %x\n", sramCtx->readBuff[SRAM_HEADER_SOUND], - sramCtx->readBuff[SRAM_HEADER_ZTARGET], sramCtx->readBuff[SRAM_HEADER_LANGUAGE], + sramCtx->readBuff[SRAM_HEADER_Z_TARGET], sramCtx->readBuff[SRAM_HEADER_LANGUAGE], sramCtx->readBuff[SRAM_HEADER_MAGIC]); SsSram_ReadWrite(OS_K1_TO_PHYSICAL(0xA8000000), sramCtx->readBuff, SRAM_SIZE, OS_READ); PRINTF("read_buff[]=%x, %x, %x, %x\n", sramCtx->readBuff[SRAM_HEADER_SOUND], - sramCtx->readBuff[SRAM_HEADER_ZTARGET], sramCtx->readBuff[SRAM_HEADER_LANGUAGE], + sramCtx->readBuff[SRAM_HEADER_Z_TARGET], sramCtx->readBuff[SRAM_HEADER_LANGUAGE], sramCtx->readBuff[SRAM_HEADER_MAGIC]); } #endif @@ -1140,7 +1169,7 @@ static s16 sQuestItemFlags[] = { QUEST_MEDALLION_WATER, QUEST_MEDALLION_SPIRIT, QUEST_MEDALLION_SHADOW, QUEST_MEDALLION_LIGHT, }; -#if OOT_NTSC && OOT_VERSION < GC_JP_CE +#if (OOT_NTSC && OOT_VERSION < GC_JP_CE) || PLATFORM_IQUE static void* sSaveXTextures[] = { gFileSelSaveXJPNTex, gFileSelSaveXENGTex }; #endif @@ -1475,7 +1504,7 @@ void FileSelect_DrawWindowContents(GameState* thisx) { temp = this->confirmButtonTexIndices[i]; gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, this->windowColor[0], this->windowColor[1], this->windowColor[2], - this->confirmButtonAlpha[i]); + this->actionButtonAlpha[i + 2]); gDPLoadTextureBlock(POLY_OPA_DISP++, sActionButtonTextures[gSaveContext.language][temp], G_IM_FMT_IA, G_IM_SIZ_16b, 64, 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); @@ -1717,7 +1746,7 @@ void FileSelect_FadeInFileInfo(GameState* thisx) { this->selectMode++; } - this->confirmButtonAlpha[FS_BTN_CONFIRM_YES] = this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT] = + this->actionButtonAlpha[FS_BTN_ACTION_YES] = this->actionButtonAlpha[FS_BTN_ACTION_QUIT] = this->fileInfoAlpha[this->buttonIndex]; } @@ -1772,7 +1801,8 @@ void FileSelect_FadeOutFileInfo(GameState* thisx) { this->selectMode++; } - this->confirmButtonAlpha[0] = this->confirmButtonAlpha[1] = this->fileInfoAlpha[this->buttonIndex]; + this->actionButtonAlpha[FS_BTN_ACTION_YES] = this->actionButtonAlpha[FS_BTN_ACTION_QUIT] = + this->fileInfoAlpha[this->buttonIndex]; } /** @@ -2239,8 +2269,8 @@ void FileSelect_InitContext(GameState* thisx) { this->nameBoxAlpha[2] = this->nameAlpha[0] = this->nameAlpha[1] = this->nameAlpha[2] = this->connectorAlpha[0] = this->connectorAlpha[1] = this->connectorAlpha[2] = this->fileInfoAlpha[0] = this->fileInfoAlpha[1] = this->fileInfoAlpha[2] = this->actionButtonAlpha[FS_BTN_ACTION_COPY] = - this->actionButtonAlpha[FS_BTN_ACTION_ERASE] = this->confirmButtonAlpha[FS_BTN_CONFIRM_YES] = - this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT] = this->optionButtonAlpha = + this->actionButtonAlpha[FS_BTN_ACTION_ERASE] = this->actionButtonAlpha[FS_BTN_ACTION_YES] = + this->actionButtonAlpha[FS_BTN_ACTION_QUIT] = this->optionButtonAlpha = this->nameEntryBoxAlpha = this->controlsAlpha = this->emptyFileTextAlpha = 0; this->windowPosX = 6; diff --git a/src/overlays/gamestates/ovl_file_choose/z_file_copy_erase.c b/src/overlays/gamestates/ovl_file_choose/z_file_copy_erase.c index 827aca8a1c..4cb4fa5c85 100644 --- a/src/overlays/gamestates/ovl_file_choose/z_file_copy_erase.c +++ b/src/overlays/gamestates/ovl_file_choose/z_file_copy_erase.c @@ -1,4 +1,17 @@ #include "file_select.h" +#include "file_select_state.h" + +#include "controller.h" +#include "regs.h" +#include "rumble.h" +#include "sfx.h" +#include "z64save.h" +#include "z64sram.h" + +#include "macros.h" + +// In iQue versions, this file contains many workarounds for EGCS internal +// compiler errors (see docs/compilers.md) // when choosing a file to copy or erase, the 6 main menu buttons are placed at these offsets static s16 sChooseFileYOffsets[] = { -48, -48, -48, -24, -24, 0 }; @@ -19,7 +32,11 @@ void FileSelect_SetupCopySource(GameState* thisx) { FileSelectState* this = (FileSelectState*)thisx; s16 yStep; s16 i; +#if PLATFORM_IQUE + s16* array; +#endif +#if !PLATFORM_IQUE for (i = 0; i < 5; i++) { yStep = (ABS(this->buttonYOffsets[i] - sChooseFileYOffsets[i])) / this->actionTimer; @@ -29,11 +46,23 @@ void FileSelect_SetupCopySource(GameState* thisx) { this->buttonYOffsets[i] += yStep; } } +#else + array = this->buttonYOffsets; + for (i = 0; i < 5; i++) { + yStep = (ABS(array[i] - sChooseFileYOffsets[i])) / this->actionTimer; + + if (array[i] >= sChooseFileYOffsets[i]) { + array[i] -= yStep; + } else { + array[i] += yStep; + } + } +#endif this->actionButtonAlpha[FS_BTN_ACTION_COPY] -= 25; this->actionButtonAlpha[FS_BTN_ACTION_ERASE] -= 25; this->optionButtonAlpha -= 25; - this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT] += 25; + this->actionButtonAlpha[FS_BTN_ACTION_QUIT] += 25; this->titleAlpha[0] -= 31; this->titleAlpha[1] += 31; this->actionTimer--; @@ -44,7 +73,7 @@ void FileSelect_SetupCopySource(GameState* thisx) { this->actionButtonAlpha[FS_BTN_ACTION_COPY] = this->actionButtonAlpha[FS_BTN_ACTION_ERASE] = this->optionButtonAlpha = 0; - this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT] = 200; + this->actionButtonAlpha[FS_BTN_ACTION_QUIT] = 200; this->titleLabel = this->nextTitleLabel; this->titleAlpha[0] = 255; @@ -124,27 +153,65 @@ void FileSelect_SetupCopyDest1(GameState* thisx) { FileSelectState* this = (FileSelectState*)thisx; s16 yStep; s16 i; +#if PLATFORM_IQUE + s16* array; +#endif +#if !PLATFORM_IQUE for (i = 0; i < 3; i++) { yStep = ABS(this->buttonYOffsets[i] - D_8081248C[this->buttonIndex][i]) / this->actionTimer; - if (D_8081248C[this->buttonIndex][i] >= this->buttonYOffsets[i]) { + if (this->buttonYOffsets[i] <= D_8081248C[this->buttonIndex][i]) { this->buttonYOffsets[i] += yStep; } else { this->buttonYOffsets[i] -= yStep; } } +#else + array = this->buttonYOffsets; + for (i = 0; i < 3; i++) { + yStep = ABS(array[i] - D_8081248C[this->buttonIndex][i]) / this->actionTimer; + if (array[i] <= D_8081248C[this->buttonIndex][i]) { + array[i] += yStep; + } else { + array[i] -= yStep; + } + } +#endif + +#if !PLATFORM_IQUE this->titleAlpha[0] -= 31; this->titleAlpha[1] += 31; this->nameBoxAlpha[this->buttonIndex] -= 25; +#else + array = this->titleAlpha; + array[0] -= 31; + array[1] += 31; + array = this->nameBoxAlpha; + array[this->buttonIndex] -= 25; +#endif this->actionTimer--; if (this->actionTimer == 0) { +#if !PLATFORM_IQUE this->buttonYOffsets[this->buttonIndex] = D_8081248C[this->buttonIndex][this->buttonIndex]; +#else + array = this->buttonYOffsets; + array[this->buttonIndex] = D_8081248C[this->buttonIndex][this->buttonIndex]; +#endif + this->titleLabel = this->nextTitleLabel; + +#if !PLATFORM_IQUE this->titleAlpha[0] = 255; this->titleAlpha[1] = 0; +#else + array = this->titleAlpha; + array[0] = 255; + array[1] = 0; +#endif + this->actionTimer = 8; this->configMode++; } @@ -156,14 +223,33 @@ void FileSelect_SetupCopyDest1(GameState* thisx) { */ void FileSelect_SetupCopyDest2(GameState* thisx) { FileSelectState* this = (FileSelectState*)thisx; +#if PLATFORM_IQUE + s16* array; +#endif +#if !PLATFORM_IQUE this->nameBoxAlpha[this->buttonIndex] -= 25; this->fileInfoAlpha[this->buttonIndex] += 25; +#else + array = this->nameBoxAlpha; + array[this->buttonIndex] -= 25; + array = this->fileInfoAlpha; + array[this->buttonIndex] += 25; +#endif + this->actionTimer--; if (this->actionTimer == 0) { +#if !PLATFORM_IQUE this->nameBoxAlpha[this->buttonIndex] = 0; this->fileInfoAlpha[this->buttonIndex] = 200; +#else + array = this->nameBoxAlpha; + array[this->buttonIndex] = 0; + array = this->fileInfoAlpha; + array[this->buttonIndex] = 200; +#endif + this->buttonIndex = FS_BTN_COPY_QUIT; this->actionTimer = 8; this->configMode = CM_SELECT_COPY_DEST; @@ -250,15 +336,35 @@ void FileSelect_SelectCopyDest(GameState* thisx) { */ void FileSelect_ExitToCopySource1(GameState* thisx) { FileSelectState* this = (FileSelectState*)thisx; +#if PLATFORM_IQUE + s16* array; +#endif +#if !PLATFORM_IQUE this->fileInfoAlpha[this->buttonIndex] -= 25; this->nameBoxAlpha[this->buttonIndex] += 25; +#else + array = this->fileInfoAlpha; + array[this->buttonIndex] -= 25; + array = this->nameBoxAlpha; + array[this->buttonIndex] += 25; +#endif + this->actionTimer--; if (this->actionTimer == 0) { this->nextTitleLabel = FS_TITLE_COPY_FROM; + +#if !PLATFORM_IQUE this->nameBoxAlpha[this->buttonIndex] = 200; this->fileInfoAlpha[this->buttonIndex] = 0; +#else + array = this->nameBoxAlpha; + array[this->buttonIndex] = 200; + array = this->fileInfoAlpha; + array[this->buttonIndex] = 0; +#endif + this->actionTimer = 8; this->configMode++; } @@ -273,7 +379,11 @@ void FileSelect_ExitToCopySource2(GameState* thisx) { SramContext* sramCtx = &this->sramCtx; s16 i; s16 yStep; +#if PLATFORM_IQUE + s16* array; +#endif +#if !PLATFORM_IQUE for (i = 0; i < 3; i++) { yStep = ABS(this->buttonYOffsets[i] - sChooseFileYOffsets[i]) / this->actionTimer; @@ -283,16 +393,43 @@ void FileSelect_ExitToCopySource2(GameState* thisx) { this->buttonYOffsets[i] += yStep; } } +#else + array = this->buttonYOffsets; + for (i = 0; i < 3; i++) { + yStep = ABS(array[i] - sChooseFileYOffsets[i]) / this->actionTimer; + if (array[i] >= sChooseFileYOffsets[i]) { + array[i] -= yStep; + } else { + array[i] += yStep; + } + } +#endif + +#if !PLATFORM_IQUE this->titleAlpha[0] -= 31; this->titleAlpha[1] += 31; +#else + array = this->titleAlpha; + array[0] -= 31; + array[1] += 31; +#endif + this->actionTimer--; if (this->actionTimer == 0) { this->titleLabel = this->nextTitleLabel; + +#if !PLATFORM_IQUE this->titleAlpha[0] = 255; this->titleAlpha[1] = 0; - this->buttonIndex = 3; +#else + array = this->titleAlpha; + array[0] = 255; + array[1] = 0; +#endif + + this->buttonIndex = FS_BTN_COPY_QUIT; this->configMode = CM_SELECT_COPY_SOURCE; } } @@ -307,36 +444,79 @@ void FileSelect_SetupCopyConfirm1(GameState* thisx) { SramContext* sramCtx = &this->sramCtx; s16 i; s16 yStep; +#if PLATFORM_IQUE + s16* array; +#endif +#if !PLATFORM_IQUE this->titleAlpha[0] -= 31; this->titleAlpha[1] += 31; +#else + array = this->titleAlpha; + array[0] -= 31; + array[1] += 31; +#endif +#if !PLATFORM_IQUE for (i = 0; i < 3; i++) { if ((i != this->copyDestFileIndex) && (i != this->selectedFileIndex)) { this->fileButtonAlpha[i] -= 25; if (SLOT_OCCUPIED(sramCtx, i)) { - this->connectorAlpha[i] -= 31; this->nameBoxAlpha[i] = this->nameAlpha[i] = this->fileButtonAlpha[i]; + this->connectorAlpha[i] -= 31; } - } else { - if (this->copyDestFileIndex == i) { - yStep = ABS(this->buttonYOffsets[i] - D_808124A4[i]) / this->actionTimer; - this->buttonYOffsets[i] += yStep; + } else if (i == this->copyDestFileIndex) { + yStep = ABS(this->buttonYOffsets[i] - D_808124A4[i]) / this->actionTimer; + this->buttonYOffsets[i] += yStep; - if (this->buttonYOffsets[i] >= D_808124A4[i]) { - this->buttonYOffsets[i] = D_808124A4[i]; - } + if (this->buttonYOffsets[i] >= D_808124A4[i]) { + this->buttonYOffsets[i] = D_808124A4[i]; } } } +#else + for (i = 0; i < 3; i++) { + if ((i != this->copyDestFileIndex) && (i != this->selectedFileIndex)) { + array = this->fileButtonAlpha; + array[i] -= 25; + + if (SLOT_OCCUPIED(sramCtx, i)) { + s16* nameBoxAlpha = this->nameBoxAlpha; + s16* nameAlpha = this->nameAlpha; + s16* fileButtonAlpha = this->fileButtonAlpha; + + nameBoxAlpha[i] = nameAlpha[i] = fileButtonAlpha[i]; + + array = this->connectorAlpha; + array[i] -= 31; + } + } else if (i == this->copyDestFileIndex) { + array = this->buttonYOffsets; + yStep = ABS(array[i] - D_808124A4[i]) / this->actionTimer; + array[i] += yStep; + + if (array[i] >= D_808124A4[i]) { + array[i] = D_808124A4[i]; + } + } + } +#endif this->actionTimer--; if (this->actionTimer == 0) { this->titleLabel = this->nextTitleLabel; + +#if !PLATFORM_IQUE this->titleAlpha[0] = 255; this->titleAlpha[1] = 0; +#else + array = this->titleAlpha; + array[0] = 255; + array[1] = 0; +#endif + this->actionTimer = 8; this->configMode++; } @@ -349,7 +529,7 @@ void FileSelect_SetupCopyConfirm1(GameState* thisx) { void FileSelect_SetupCopyConfirm2(GameState* thisx) { FileSelectState* this = (FileSelectState*)thisx; - this->confirmButtonAlpha[FS_BTN_CONFIRM_YES] += 25; + this->actionButtonAlpha[FS_BTN_ACTION_YES] += 25; this->actionTimer--; if (this->actionTimer == 0) { @@ -403,11 +583,23 @@ void FileSelect_ReturnToCopyDest(GameState* thisx) { SramContext* sramCtx = &this->sramCtx; s16 i; s16 yStep; +#if PLATFORM_IQUE + s16* array; +#endif +#if !PLATFORM_IQUE this->titleAlpha[0] -= 31; this->titleAlpha[1] += 31; - this->confirmButtonAlpha[FS_BTN_CONFIRM_YES] -= 25; + this->actionButtonAlpha[FS_BTN_ACTION_YES] -= 25; +#else + array = this->titleAlpha; + array[0] -= 31; + array[1] += 31; + array = this->actionButtonAlpha; + array[FS_BTN_ACTION_YES] -= 25; +#endif +#if !PLATFORM_IQUE for (i = 0; i < 3; i++) { if ((i != this->copyDestFileIndex) && (i != this->selectedFileIndex)) { this->fileButtonAlpha[i] += 25; @@ -420,19 +612,55 @@ void FileSelect_ReturnToCopyDest(GameState* thisx) { yStep = ABS(this->buttonYOffsets[i] - D_8081248C[this->selectedFileIndex][i]) / this->actionTimer; - if (D_8081248C[this->selectedFileIndex][i] >= this->buttonYOffsets[i]) { + if (this->buttonYOffsets[i] <= D_8081248C[this->selectedFileIndex][i]) { this->buttonYOffsets[i] += yStep; } else { this->buttonYOffsets[i] -= yStep; } } +#else + for (i = 0; i < 3; i++) { + if ((i != this->copyDestFileIndex) && (i != this->selectedFileIndex)) { + array = this->fileButtonAlpha; + array[i] += 25; + + if (SLOT_OCCUPIED(sramCtx, i)) { + s16* nameBoxAlpha = this->nameBoxAlpha; + s16* nameAlpha = this->nameAlpha; + s16* fileButtonAlpha = this->fileButtonAlpha; + + nameBoxAlpha[i] = nameAlpha[i] = fileButtonAlpha[i]; + + array = this->connectorAlpha; + array[i] += 31; + } + } + + array = this->buttonYOffsets; + yStep = ABS(array[i] - D_8081248C[this->selectedFileIndex][i]) / this->actionTimer; + + if (array[i] <= D_8081248C[this->selectedFileIndex][i]) { + array[i] += yStep; + } else { + array[i] -= yStep; + } + } +#endif this->actionTimer--; if (this->actionTimer == 0) { this->titleLabel = this->nextTitleLabel; + +#if !PLATFORM_IQUE this->titleAlpha[0] = 255; this->titleAlpha[1] = 0; +#else + array = this->titleAlpha; + array[0] = 255; + array[1] = 0; +#endif + this->actionTimer = 8; this->buttonIndex = FS_BTN_COPY_QUIT; this->configMode = CM_SELECT_COPY_DEST; @@ -447,8 +675,8 @@ void FileSelect_CopyAnim1(GameState* thisx) { FileSelectState* this = (FileSelectState*)thisx; this->titleAlpha[0] -= 31; - this->confirmButtonAlpha[FS_BTN_CONFIRM_YES] -= 25; - this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT] -= 25; + this->actionButtonAlpha[FS_BTN_ACTION_YES] -= 25; + this->actionButtonAlpha[FS_BTN_ACTION_QUIT] -= 25; this->actionTimer--; if (this->actionTimer == 0) { @@ -467,24 +695,55 @@ void FileSelect_CopyAnim1(GameState* thisx) { void FileSelect_CopyAnim2(GameState* thisx) { FileSelectState* this = (FileSelectState*)thisx; s16 yStep; +#if PLATFORM_IQUE + s16* array; +#endif +#if !PLATFORM_IQUE this->fileInfoAlpha[this->copyDestFileIndex] += 25; this->nameAlpha[this->copyDestFileIndex] += 25; this->titleAlpha[1] += 31; - yStep = ABS(this->fileNamesY[this->copyDestFileIndex] + 56) / this->actionTimer; +#else + array = this->fileInfoAlpha; + array[this->copyDestFileIndex] += 25; + array = this->nameAlpha; + array[this->copyDestFileIndex] += 25; + array = this->titleAlpha; + array[1] += 31; +#endif + +#if !PLATFORM_IQUE + yStep = ABS(this->fileNamesY[this->copyDestFileIndex] - -56) / this->actionTimer; this->fileNamesY[this->copyDestFileIndex] -= yStep; if (this->fileNamesY[this->copyDestFileIndex] <= -56) { this->fileNamesY[this->copyDestFileIndex] = -56; } +#else + array = this->fileNamesY; + yStep = ABS(array[this->copyDestFileIndex] - -56) / this->actionTimer; + array[this->copyDestFileIndex] -= yStep; + + if (array[this->copyDestFileIndex] <= -56) { + array[this->copyDestFileIndex] = -56; + } +#endif this->actionTimer--; if (this->actionTimer == 0) { this->actionTimer = 90; this->titleLabel = this->nextTitleLabel; + +#if !PLATFORM_IQUE this->titleAlpha[0] = 255; this->titleAlpha[1] = 0; +#else + array = this->titleAlpha; + array[0] = 255; + array[1] = 0; +#endif + this->configMode++; } } @@ -523,16 +782,36 @@ void FileSelect_CopyAnim3(GameState* thisx) { */ void FileSelect_CopyAnim4(GameState* thisx) { FileSelectState* this = (FileSelectState*)thisx; + s16* array; +#if !PLATFORM_IQUE this->fileInfoAlpha[this->selectedFileIndex] -= 25; this->fileInfoAlpha[this->copyDestFileIndex] -= 25; this->nameBoxAlpha[this->selectedFileIndex] += 25; this->nameBoxAlpha[this->copyDestFileIndex] += 25; this->titleAlpha[0] -= 31; +#else + array = this->fileInfoAlpha; + array[this->selectedFileIndex] -= 25; + array[this->copyDestFileIndex] -= 25; + array = this->nameBoxAlpha; + array[this->selectedFileIndex] += 25; + array[this->copyDestFileIndex] += 25; + array = this->titleAlpha; + array[0] -= 31; +#endif + this->actionTimer--; if (this->actionTimer == 0) { +#if !PLATFORM_IQUE this->fileNamesY[this->copyDestFileIndex] = this->buttonYOffsets[3] = 0; +#else + array = this->fileNamesY; + array[this->copyDestFileIndex] = 0; + this->buttonYOffsets[3] = 0; +#endif + this->actionTimer = 8; this->titleAlpha[0] = 0; this->configMode++; @@ -548,7 +827,11 @@ void FileSelect_CopyAnim5(GameState* thisx) { SramContext* sramCtx = &this->sramCtx; s16 i; s16 yStep; +#if PLATFORM_IQUE + s16* array; +#endif +#if !PLATFORM_IQUE for (i = 0; i < 5; i++) { yStep = ABS(this->buttonYOffsets[i]) / this->actionTimer; @@ -558,7 +841,20 @@ void FileSelect_CopyAnim5(GameState* thisx) { this->buttonYOffsets[i] += yStep; } } +#else + array = this->buttonYOffsets; + for (i = 0; i < 5; i++) { + yStep = ABS(array[i]) / this->actionTimer; + if (array[i] >= 0) { + array[i] -= yStep; + } else { + array[i] += yStep; + } + } +#endif + +#if !PLATFORM_IQUE for (i = 0; i < 3; i++) { if (i != this->buttonIndex) { this->fileButtonAlpha[i] += 25; @@ -569,32 +865,98 @@ void FileSelect_CopyAnim5(GameState* thisx) { } } } +#else + for (i = 0; i < 3; i++) { + if (i != this->buttonIndex) { + array = this->fileButtonAlpha; + array[i] += 25; + if (SLOT_OCCUPIED(sramCtx, i)) { + s16* nameBoxAlpha = this->nameBoxAlpha; + s16* nameAlpha = this->nameAlpha; + s16* fileButtonAlpha = this->fileButtonAlpha; + + nameBoxAlpha[i] = nameAlpha[i] = fileButtonAlpha[i]; + + array = this->connectorAlpha; + array[i] += 31; + } + } + } +#endif + +#if !PLATFORM_IQUE this->actionButtonAlpha[FS_BTN_ACTION_COPY] += 25; this->actionButtonAlpha[FS_BTN_ACTION_ERASE] += 25; this->optionButtonAlpha += 25; this->titleAlpha[1] += 31; +#else + array = this->actionButtonAlpha; + array[FS_BTN_ACTION_COPY] += 25; + array[FS_BTN_ACTION_ERASE] += 25; + this->optionButtonAlpha += 25; + array = this->titleAlpha; + array[1] += 31; +#endif + this->actionTimer--; if (this->actionTimer == 0) { +#if !PLATFORM_IQUE for (i = 0; i < 3; i++) { - this->connectorAlpha[i] = 0; this->fileButtonAlpha[i] = 200; - this->nameBoxAlpha[i] = this->nameAlpha[i] = this->connectorAlpha[i]; + this->nameBoxAlpha[i] = this->nameAlpha[i] = this->connectorAlpha[i] = 0; if (SLOT_OCCUPIED(sramCtx, i)) { - this->connectorAlpha[i] = 255; this->nameBoxAlpha[i] = this->nameAlpha[i] = this->fileButtonAlpha[i]; + this->connectorAlpha[i] = 255; } } +#else + for (i = 0; i < 3; i++) { + array = this->fileButtonAlpha; + array[i] = 200; + array = this->nameBoxAlpha; + array[i] = 0; + array = this->nameAlpha; + array[i] = 0; + array = this->connectorAlpha; + array[i] = 0; + if (SLOT_OCCUPIED(sramCtx, i)) { + s16* nameBoxAlpha = this->nameBoxAlpha; + s16* nameAlpha = this->nameAlpha; + s16* fileButtonAlpha = this->fileButtonAlpha; + + nameBoxAlpha[i] = nameAlpha[i] = fileButtonAlpha[i]; + + array = this->connectorAlpha; + array[i] = 255; + } + } +#endif + +#if !PLATFORM_IQUE this->fileNamesY[this->selectedFileIndex] = 0; +#else + array = this->fileNamesY; + array[this->selectedFileIndex] = 0; +#endif + this->highlightColor[3] = 70; this->highlightPulseDir = 1; XREG(35) = XREG(36); this->titleLabel = this->nextTitleLabel; + +#if !PLATFORM_IQUE this->titleAlpha[0] = 255; this->titleAlpha[1] = 0; +#else + array = this->titleAlpha; + array[0] = 255; + array[1] = 0; +#endif + this->configMode = CM_MAIN_MENU; } } @@ -607,7 +969,11 @@ void FileSelect_ExitCopyToMain(GameState* thisx) { FileSelectState* this = (FileSelectState*)thisx; s16 i; s16 yStep; +#if PLATFORM_IQUE + s16* array; +#endif +#if !PLATFORM_IQUE for (i = 0; i < 5; i++) { yStep = ABS(this->buttonYOffsets[i]) / this->actionTimer; @@ -617,24 +983,66 @@ void FileSelect_ExitCopyToMain(GameState* thisx) { this->buttonYOffsets[i] += yStep; } } +#else + array = this->buttonYOffsets; + for (i = 0; i < 5; i++) { + yStep = ABS(array[i]) / this->actionTimer; + if (array[i] >= 0) { + array[i] -= yStep; + } else { + array[i] += yStep; + } + } +#endif + +#if !PLATFORM_IQUE this->actionButtonAlpha[FS_BTN_ACTION_COPY] += 25; - this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT] -= 25; + this->actionButtonAlpha[FS_BTN_ACTION_QUIT] -= 25; this->titleAlpha[0] -= 31; this->titleAlpha[1] += 31; +#else + array = this->actionButtonAlpha; + array[FS_BTN_ACTION_COPY] += 25; + array[FS_BTN_ACTION_QUIT] -= 25; + array = this->titleAlpha; + array[0] -= 31; + array[1] += 31; +#endif + this->actionTimer--; if (this->actionTimer == 0) { +#if !PLATFORM_IQUE this->actionButtonAlpha[FS_BTN_ACTION_COPY] = 200; - this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT] = 0; + this->actionButtonAlpha[FS_BTN_ACTION_QUIT] = 0; +#else + array = this->actionButtonAlpha; + array[FS_BTN_ACTION_COPY] = 200; + array[FS_BTN_ACTION_QUIT] = 0; +#endif + this->titleLabel = this->nextTitleLabel; + +#if !PLATFORM_IQUE this->titleAlpha[0] = 255; this->titleAlpha[1] = 0; +#else + array = this->titleAlpha; + array[0] = 255; + array[1] = 0; +#endif + this->configMode = CM_MAIN_MENU; } +#if !PLATFORM_IQUE this->optionButtonAlpha = this->actionButtonAlpha[FS_BTN_ACTION_ERASE] = this->actionButtonAlpha[FS_BTN_ACTION_COPY]; +#else + array = this->actionButtonAlpha; + this->optionButtonAlpha = array[FS_BTN_ACTION_ERASE] = array[FS_BTN_ACTION_COPY]; +#endif } /** @@ -645,7 +1053,11 @@ void FileSelect_SetupEraseSelect(GameState* thisx) { FileSelectState* this = (FileSelectState*)thisx; s16 i; s16 yStep; +#if PLATFORM_IQUE + s16* array; +#endif +#if !PLATFORM_IQUE for (i = 0; i < 5; i++) { yStep = ABS(this->buttonYOffsets[i] - sChooseFileYOffsets[i]) / this->actionTimer; @@ -655,19 +1067,46 @@ void FileSelect_SetupEraseSelect(GameState* thisx) { this->buttonYOffsets[i] += yStep; } } +#else + array = this->buttonYOffsets; + for (i = 0; i < 5; i++) { + yStep = ABS(array[i] - sChooseFileYOffsets[i]) / this->actionTimer; + if (array[i] >= sChooseFileYOffsets[i]) { + array[i] -= yStep; + } else { + array[i] += yStep; + } + } +#endif + +#if !PLATFORM_IQUE this->actionButtonAlpha[FS_BTN_ACTION_COPY] -= 50; this->actionButtonAlpha[FS_BTN_ACTION_ERASE] -= 50; this->optionButtonAlpha -= 50; - this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT] += 25; + this->actionButtonAlpha[FS_BTN_ACTION_QUIT] += 25; +#else + array = this->actionButtonAlpha; + array[FS_BTN_ACTION_COPY] -= 50; + array[FS_BTN_ACTION_ERASE] -= 50; + this->optionButtonAlpha -= 50; + array[FS_BTN_ACTION_QUIT] += 25; +#endif if (this->actionButtonAlpha[FS_BTN_ACTION_COPY] <= 0) { this->actionButtonAlpha[FS_BTN_ACTION_COPY] = this->actionButtonAlpha[FS_BTN_ACTION_ERASE] = this->optionButtonAlpha = 0; } +#if !PLATFORM_IQUE this->titleAlpha[0] -= 31; this->titleAlpha[1] += 31; +#else + array = this->titleAlpha; + array[0] -= 31; + array[1] += 31; +#endif + this->actionTimer--; if (this->actionTimer == 0) { @@ -676,10 +1115,25 @@ void FileSelect_SetupEraseSelect(GameState* thisx) { XREG(35) = XREG(36); this->actionButtonAlpha[FS_BTN_ACTION_COPY] = this->actionButtonAlpha[FS_BTN_ACTION_ERASE] = this->optionButtonAlpha = 0; - this->confirmButtonAlpha[1] = 200; + +#if !PLATFORM_IQUE + this->actionButtonAlpha[FS_BTN_ACTION_QUIT] = 200; +#else + array = this->actionButtonAlpha; + array[FS_BTN_ACTION_QUIT] = 200; +#endif + this->titleLabel = this->nextTitleLabel; + +#if !PLATFORM_IQUE this->titleAlpha[0] = 255; this->titleAlpha[1] = 0; +#else + array = this->titleAlpha; + array[0] = 255; + array[1] = 0; +#endif + this->buttonIndex = FS_BTN_ERASE_QUIT; this->configMode++; } @@ -757,22 +1211,56 @@ void FileSelect_SetupEraseConfirm1(GameState* thisx) { SramContext* sramCtx = &this->sramCtx; s16 i; s16 yStep; +#if PLATFORM_IQUE + s16* array; +#endif +#if !PLATFORM_IQUE for (i = 0; i < 3; i++) { if (i != this->buttonIndex) { this->fileButtonAlpha[i] -= 25; if (SLOT_OCCUPIED(sramCtx, i)) { - this->connectorAlpha[i] -= 31; this->nameBoxAlpha[i] = this->nameAlpha[i] = this->fileButtonAlpha[i]; + this->connectorAlpha[i] -= 31; } } else { this->nameBoxAlpha[i] -= 25; } } +#else + for (i = 0; i < 3; i++) { + if (i != this->buttonIndex) { + array = this->fileButtonAlpha; + array[i] -= 25; + + if (SLOT_OCCUPIED(sramCtx, i)) { + s16* nameBoxAlpha = this->nameBoxAlpha; + s16* nameAlpha = this->nameAlpha; + s16* fileButtonAlpha = this->fileButtonAlpha; + + nameBoxAlpha[i] = nameAlpha[i] = fileButtonAlpha[i]; + + array = this->connectorAlpha; + array[i] -= 31; + } + } else { + array = this->nameBoxAlpha; + array[i] -= 25; + } + } +#endif + +#if !PLATFORM_IQUE this->titleAlpha[0] -= 15; this->titleAlpha[1] += 15; +#else + array = this->titleAlpha; + array[0] -= 15; + array[1] += 15; +#endif +#if !PLATFORM_IQUE yStep = ABS(this->buttonYOffsets[this->buttonIndex] - D_808124AC[this->buttonIndex]) / this->actionTimer; if (this->buttonYOffsets[this->buttonIndex] >= D_808124AC[this->buttonIndex]) { @@ -780,24 +1268,63 @@ void FileSelect_SetupEraseConfirm1(GameState* thisx) { } else { this->buttonYOffsets[this->buttonIndex] += yStep; } +#else + array = this->buttonYOffsets; + yStep = ABS(array[this->buttonIndex] - D_808124AC[this->buttonIndex]) / this->actionTimer; + + if (array[this->buttonIndex] >= D_808124AC[this->buttonIndex]) { + array[this->buttonIndex] -= yStep; + } else { + array[this->buttonIndex] += yStep; + } +#endif this->actionTimer--; if (this->actionTimer == 0) { +#if !PLATFORM_IQUE for (i = 0; i < 3; i++) { if (i != this->buttonIndex) { this->fileButtonAlpha[i] = 0; if (SLOT_OCCUPIED(sramCtx, i)) { + this->nameBoxAlpha[i] = this->nameAlpha[i] = this->fileButtonAlpha[i]; this->connectorAlpha[i] = 0; - this->nameBoxAlpha[i] = this->nameAlpha[i] = this->fileButtonAlpha[i] = 0; } } else { this->nameBoxAlpha[i] = 0; } } +#else + for (i = 0; i < 3; i++) { + if (i != this->buttonIndex) { + array = this->fileButtonAlpha; + array[i] = 0; + if (SLOT_OCCUPIED(sramCtx, i)) { + s16* nameBoxAlpha = this->nameBoxAlpha; + s16* nameAlpha = this->nameAlpha; + s16* fileButtonAlpha = this->fileButtonAlpha; + + nameBoxAlpha[i] = nameAlpha[i] = fileButtonAlpha[i]; + + array = this->connectorAlpha; + array[i] = 0; + } + } else { + array = this->nameBoxAlpha; + array[i] = 0; + } + } +#endif + +#if !PLATFORM_IQUE this->buttonYOffsets[this->buttonIndex] = D_808124AC[this->buttonIndex]; +#else + array = this->buttonYOffsets; + array[this->buttonIndex] = D_808124AC[this->buttonIndex]; +#endif + this->actionTimer = 8; this->configMode++; } @@ -809,20 +1336,44 @@ void FileSelect_SetupEraseConfirm1(GameState* thisx) { */ void FileSelect_SetupEraseConfirm2(GameState* thisx) { FileSelectState* this = (FileSelectState*)thisx; +#if PLATFORM_IQUE + s16* array; +#endif - this->confirmButtonAlpha[FS_BTN_CONFIRM_YES] += 25; +#if !PLATFORM_IQUE + this->actionButtonAlpha[FS_BTN_ACTION_YES] += 25; this->titleAlpha[0] -= 15; this->titleAlpha[1] += 15; this->fileInfoAlpha[this->buttonIndex] += 25; +#else + array = this->actionButtonAlpha; + array[FS_BTN_ACTION_YES] += 25; + array = this->titleAlpha; + array[0] -= 15; + array[1] += 15; + array = this->fileInfoAlpha; + array[this->buttonIndex] += 25; +#endif + this->actionTimer--; if (this->actionTimer == 0) { this->actionTimer = 8; this->titleLabel = this->nextTitleLabel; + +#if !PLATFORM_IQUE this->fileInfoAlpha[this->buttonIndex] = this->titleAlpha[0] = 255; this->titleAlpha[1] = 0; - this->confirmButtonAlpha[FS_BTN_CONFIRM_YES] = 200; - this->buttonIndex = FS_BTN_ERASE_FILE_2; + this->actionButtonAlpha[FS_BTN_ACTION_YES] = 200; +#else + array = this->titleAlpha; + this->fileInfoAlpha[this->buttonIndex] = array[0] = 255; + array[1] = 0; + array = this->actionButtonAlpha; + array[FS_BTN_ACTION_YES] = 200; +#endif + + this->buttonIndex = FS_BTN_CONFIRM_QUIT; this->configMode = CM_ERASE_CONFIRM; } } @@ -865,15 +1416,35 @@ void FileSelect_EraseConfirm(GameState* thisx) { */ void FileSelect_ExitToEraseSelect1(GameState* thisx) { FileSelectState* this = (FileSelectState*)thisx; +#if PLATFORM_IQUE + s16* array; +#endif +#if !PLATFORM_IQUE this->fileInfoAlpha[this->buttonIndex] -= 25; this->nameBoxAlpha[this->buttonIndex] += 25; - this->confirmButtonAlpha[FS_BTN_CONFIRM_YES] -= 25; + this->actionButtonAlpha[FS_BTN_ACTION_YES] -= 25; +#else + array = this->fileInfoAlpha; + array[this->buttonIndex] -= 25; + array = this->nameBoxAlpha; + array[this->buttonIndex] += 25; + array = this->actionButtonAlpha; + array[FS_BTN_ACTION_YES] -= 25; +#endif + this->actionTimer--; if (this->actionTimer == 0) { this->actionTimer = 8; + +#if !PLATFORM_IQUE this->fileInfoAlpha[this->buttonIndex] = 0; +#else + array = this->fileInfoAlpha; + array[this->buttonIndex] = 0; +#endif + this->configMode++; } } @@ -887,7 +1458,11 @@ void FileSelect_ExitToEraseSelect2(GameState* thisx) { SramContext* sramCtx = &this->sramCtx; s16 i; s16 yStep; +#if PLATFORM_IQUE + s16* array; +#endif +#if !PLATFORM_IQUE yStep = ABS(this->buttonYOffsets[this->buttonIndex] - sChooseFileYOffsets[this->buttonIndex]) / this->actionTimer; if (this->buttonYOffsets[this->buttonIndex] >= sChooseFileYOffsets[this->buttonIndex]) { @@ -895,7 +1470,18 @@ void FileSelect_ExitToEraseSelect2(GameState* thisx) { } else { this->buttonYOffsets[this->buttonIndex] += yStep; } +#else + array = this->buttonYOffsets; + yStep = ABS(array[this->buttonIndex] - sChooseFileYOffsets[this->buttonIndex]) / this->actionTimer; + if (array[this->buttonIndex] >= sChooseFileYOffsets[this->buttonIndex]) { + array[this->buttonIndex] -= yStep; + } else { + array[this->buttonIndex] += yStep; + } +#endif + +#if !PLATFORM_IQUE for (i = 0; i < 3; i++) { if (i != this->buttonIndex) { this->fileButtonAlpha[i] += 25; @@ -906,18 +1492,58 @@ void FileSelect_ExitToEraseSelect2(GameState* thisx) { } } } +#else + for (i = 0; i < 3; i++) { + if (i != this->buttonIndex) { + array = this->fileButtonAlpha; + array[i] += 25; + if (SLOT_OCCUPIED(sramCtx, i)) { + s16* nameBoxAlpha = this->nameBoxAlpha; + s16* nameAlpha = this->nameAlpha; + s16* fileButtonAlpha = this->fileButtonAlpha; + + nameBoxAlpha[i] = nameAlpha[i] = fileButtonAlpha[i]; + + array = this->connectorAlpha; + array[i] += 31; + } + } + } +#endif + +#if !PLATFORM_IQUE this->titleAlpha[0] -= 31; this->titleAlpha[1] += 31; +#else + array = this->titleAlpha; + array[0] -= 31; + array[1] += 31; +#endif + this->actionTimer--; if (this->actionTimer == 0) { +#if !PLATFORM_IQUE this->buttonYOffsets[this->buttonIndex] = sChooseFileYOffsets[this->buttonIndex]; +#else + array = this->buttonYOffsets; + array[this->buttonIndex] = sChooseFileYOffsets[this->buttonIndex]; +#endif + this->actionTimer = 8; this->buttonIndex = FS_BTN_ERASE_QUIT; this->titleLabel = this->nextTitleLabel; + +#if !PLATFORM_IQUE this->titleAlpha[0] = 255; this->titleAlpha[1] = 0; +#else + array = this->titleAlpha; + array[0] = 255; + array[1] = 0; +#endif + this->configMode = CM_ERASE_SELECT; } } @@ -931,6 +1557,9 @@ void FileSelect_EraseAnim1(GameState* thisx) { static s16 D_80813800; FileSelectState* this = (FileSelectState*)thisx; SramContext* sramCtx = &this->sramCtx; +#if PLATFORM_IQUE + s16* array; +#endif if (sEraseDelayTimer == 0) { if (this->actionTimer == 8) { @@ -938,28 +1567,54 @@ void FileSelect_EraseAnim1(GameState* thisx) { } if (this->actionTimer != 0) { +#if !PLATFORM_IQUE this->titleAlpha[0] -= 31; this->titleAlpha[1] += 31; this->fileInfoAlpha[this->selectedFileIndex] -= 25; - this->confirmButtonAlpha[FS_BTN_CONFIRM_YES] -= 25; - this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT] -= 25; + this->actionButtonAlpha[FS_BTN_ACTION_YES] -= 25; + this->actionButtonAlpha[FS_BTN_ACTION_QUIT] -= 25; +#else + array = this->titleAlpha; + array[0] -= 31; + array[1] += 31; + array = this->fileInfoAlpha; + array[this->selectedFileIndex] -= 25; + array = this->actionButtonAlpha; + array[FS_BTN_ACTION_YES] -= 25; + array[FS_BTN_ACTION_QUIT] -= 25; +#endif } +#if !PLATFORM_IQUE this->fileNamesY[this->selectedFileIndex] -= D_80813800; - this->actionTimer--; +#else + array = this->fileNamesY; + array[this->selectedFileIndex] -= D_80813800; +#endif + D_80813800 += 2; + this->actionTimer--; if (this->actionTimer == 0) { Sram_EraseSave(this, sramCtx); this->titleLabel = this->nextTitleLabel; + +#if !PLATFORM_IQUE this->titleAlpha[0] = 255; this->titleAlpha[1] = this->connectorAlpha[this->selectedFileIndex] = 0; - - // probably a fake match, there should be a better chained assignment - this->confirmButtonAlpha[0] = this->confirmButtonAlpha[1] = 0; - if (1) {} this->fileInfoAlpha[this->selectedFileIndex] = this->nameBoxAlpha[this->selectedFileIndex] = - this->confirmButtonAlpha[1]; + this->actionButtonAlpha[FS_BTN_ACTION_YES] = this->actionButtonAlpha[FS_BTN_ACTION_QUIT] = 0; +#else + array = this->titleAlpha; + array[0] = 255; + array[1] = this->connectorAlpha[this->selectedFileIndex] = 0; + array = this->fileInfoAlpha; + array[this->selectedFileIndex] = 0; + array = this->nameBoxAlpha; + array[this->selectedFileIndex] = 0; + array = this->actionButtonAlpha; + array[FS_BTN_ACTION_YES] = array[FS_BTN_ACTION_QUIT] = 0; +#endif this->configMode++; this->actionTimer = 90; @@ -1001,7 +1656,11 @@ void FileSelect_EraseAnim3(GameState* thisx) { SramContext* sramCtx = &this->sramCtx; s16 i; s16 yStep; +#if PLATFORM_IQUE + s16* array; +#endif +#if !PLATFORM_IQUE for (i = 0; i < 5; i++) { yStep = ABS(this->buttonYOffsets[i]) / this->actionTimer; @@ -1011,7 +1670,20 @@ void FileSelect_EraseAnim3(GameState* thisx) { this->buttonYOffsets[i] += yStep; } } +#else + array = this->buttonYOffsets; + for (i = 0; i < 5; i++) { + yStep = ABS(array[i]) / this->actionTimer; + if (array[i] >= 0) { + array[i] -= yStep; + } else { + array[i] += yStep; + } + } +#endif + +#if !PLATFORM_IQUE for (i = 0; i < 3; i++) { this->fileButtonAlpha[i] += 25; @@ -1020,30 +1692,88 @@ void FileSelect_EraseAnim3(GameState* thisx) { this->connectorAlpha[i] += 31; } } +#else + for (i = 0; i < 3; i++) { + array = this->fileButtonAlpha; + array[i] += 25; + if (SLOT_OCCUPIED(sramCtx, i)) { + s16* nameBoxAlpha = this->nameBoxAlpha; + s16* nameAlpha = this->nameAlpha; + s16* fileButtonAlpha = this->fileButtonAlpha; + + nameBoxAlpha[i] = nameAlpha[i] = fileButtonAlpha[i]; + + array = this->connectorAlpha; + array[i] += 31; + } + } +#endif + +#if !PLATFORM_IQUE if (this->fileButtonAlpha[this->selectedFileIndex] >= 200) { this->fileButtonAlpha[this->selectedFileIndex] = 200; } +#else + array = this->fileButtonAlpha; + if (array[this->selectedFileIndex] >= 200) { + array[this->selectedFileIndex] = 200; + } +#endif +#if !PLATFORM_IQUE this->titleAlpha[0] -= 31; this->titleAlpha[1] += 31; +#else + array = this->titleAlpha; + array[0] -= 31; + array[1] += 31; +#endif + this->actionTimer--; if (this->actionTimer == 0) { +#if !PLATFORM_IQUE this->fileNamesY[this->selectedFileIndex] = 0; +#else + array = this->fileNamesY; + array[this->selectedFileIndex] = 0; +#endif + this->highlightColor[3] = 70; this->highlightPulseDir = 1; XREG(35) = XREG(36); + +#if !PLATFORM_IQUE this->actionButtonAlpha[FS_BTN_ACTION_COPY] = 200; - this->confirmButtonAlpha[0] = this->confirmButtonAlpha[1] = 0; + this->actionButtonAlpha[FS_BTN_ACTION_YES] = this->actionButtonAlpha[FS_BTN_ACTION_QUIT] = 0; +#else + array = this->actionButtonAlpha; + array[FS_BTN_ACTION_COPY] = 200; + array[FS_BTN_ACTION_YES] = array[FS_BTN_ACTION_QUIT] = 0; +#endif + this->titleLabel = this->nextTitleLabel; + +#if !PLATFORM_IQUE this->titleAlpha[0] = 255; this->titleAlpha[1] = 0; +#else + array = this->titleAlpha; + array[0] = 255; + array[1] = 0; +#endif + this->configMode = CM_MAIN_MENU; } +#if !PLATFORM_IQUE this->optionButtonAlpha = this->actionButtonAlpha[FS_BTN_ACTION_ERASE] = this->actionButtonAlpha[FS_BTN_ACTION_COPY]; +#else + array = this->actionButtonAlpha; + this->optionButtonAlpha = array[FS_BTN_ACTION_ERASE] = array[FS_BTN_ACTION_COPY]; +#endif } /** @@ -1054,7 +1784,11 @@ void FileSelect_ExitEraseToMain(GameState* thisx) { FileSelectState* this = (FileSelectState*)thisx; s16 i; s16 yStep; +#if PLATFORM_IQUE + s16* array; +#endif +#if !PLATFORM_IQUE for (i = 0; i < 5; i++) { yStep = ABS(this->buttonYOffsets[i]) / this->actionTimer; @@ -1064,32 +1798,84 @@ void FileSelect_ExitEraseToMain(GameState* thisx) { this->buttonYOffsets[i] += yStep; } } +#else + array = this->buttonYOffsets; + for (i = 0; i < 5; i++) { + yStep = ABS(array[i]) / this->actionTimer; + if (array[i] >= 0) { + array[i] -= yStep; + } else { + array[i] += yStep; + } + } +#endif + +#if !PLATFORM_IQUE this->actionButtonAlpha[FS_BTN_ACTION_COPY] += 25; this->actionButtonAlpha[FS_BTN_ACTION_ERASE] += 25; this->optionButtonAlpha += 25; - this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT] -= 50; + this->actionButtonAlpha[FS_BTN_ACTION_QUIT] -= 50; - if (this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT] <= 0) { - this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT] = 0; + if (this->actionButtonAlpha[FS_BTN_ACTION_QUIT] <= 0) { + this->actionButtonAlpha[FS_BTN_ACTION_QUIT] = 0; } +#else + array = this->actionButtonAlpha; + array[FS_BTN_ACTION_COPY] += 25; + array[FS_BTN_ACTION_ERASE] += 25; + this->optionButtonAlpha += 25; + array[FS_BTN_ACTION_QUIT] -= 50; + if (array[FS_BTN_ACTION_QUIT] <= 0) { + array[FS_BTN_ACTION_QUIT] = 0; + } +#endif + +#if !PLATFORM_IQUE this->titleAlpha[0] -= 31; this->titleAlpha[1] += 31; +#else + array = this->titleAlpha; + array[0] -= 31; + array[1] += 31; +#endif + this->actionTimer--; if (this->actionTimer == 0) { this->highlightColor[3] = 70; this->highlightPulseDir = 1; XREG(35) = XREG(36); + +#if !PLATFORM_IQUE this->actionButtonAlpha[FS_BTN_ACTION_COPY] = 200; - this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT] = 0; + this->actionButtonAlpha[FS_BTN_ACTION_QUIT] = 0; +#else + array = this->actionButtonAlpha; + array[FS_BTN_ACTION_COPY] = 200; + array[FS_BTN_ACTION_QUIT] = 0; +#endif + this->titleLabel = this->nextTitleLabel; + +#if !PLATFORM_IQUE this->titleAlpha[0] = 255; this->titleAlpha[1] = 0; +#else + array = this->titleAlpha; + array[0] = 255; + array[1] = 0; +#endif + this->configMode = CM_MAIN_MENU; } +#if !PLATFORM_IQUE this->optionButtonAlpha = this->actionButtonAlpha[FS_BTN_ACTION_ERASE] = this->actionButtonAlpha[FS_BTN_ACTION_COPY]; +#else + array = this->actionButtonAlpha; + this->optionButtonAlpha = array[FS_BTN_ACTION_ERASE] = array[FS_BTN_ACTION_COPY]; +#endif } 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 9bafd123bd..2c1e49fb59 100644 --- a/src/overlays/gamestates/ovl_file_choose/z_file_nameset.c +++ b/src/overlays/gamestates/ovl_file_choose/z_file_nameset.c @@ -1,6 +1,21 @@ #include "file_select.h" +#include "file_select_state.h" + +#include "controller.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "regs.h" +#include "rumble.h" +#include "sfx.h" +#include "sys_matrix.h" #include "terminal.h" #include "versions.h" +#include "z64audio.h" +#include "z64save.h" + +#include "macros.h" +#include "global.h" + #include "assets/textures/title_static/title_static.h" #include "assets/overlays/ovl_file_choose/ovl_file_choose.h" @@ -1340,7 +1355,7 @@ void FileSelect_UpdateOptionsMenu(GameState* thisx) { Audio_PlaySfxGeneral(NA_SE_SY_FSEL_DECIDE_L, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); this->configMode = CM_OPTIONS_TO_MAIN; - sramCtx->readBuff[0] = gSaveContext.audioSetting; + sramCtx->readBuff[0] = gSaveContext.soundSetting; sramCtx->readBuff[1] = gSaveContext.zTargetSetting; #if OOT_PAL_N64 sramCtx->readBuff[2] = gSaveContext.language; @@ -1350,11 +1365,11 @@ void FileSelect_UpdateOptionsMenu(GameState* thisx) { PRINTF_COLOR_YELLOW(); PRINTF("sram->read_buff[2] = J_N = %x\n", sramCtx->readBuff[2]); PRINTF("sram->read_buff[2] = J_N = %x\n", &sramCtx->readBuff[2]); - PRINTF("Na_SetSoundOutputMode = %d\n", gSaveContext.audioSetting); - PRINTF("Na_SetSoundOutputMode = %d\n", gSaveContext.audioSetting); - PRINTF("Na_SetSoundOutputMode = %d\n", gSaveContext.audioSetting); + PRINTF("Na_SetSoundOutputMode = %d\n", gSaveContext.soundSetting); + PRINTF("Na_SetSoundOutputMode = %d\n", gSaveContext.soundSetting); + PRINTF("Na_SetSoundOutputMode = %d\n", gSaveContext.soundSetting); PRINTF_RST(); - func_800F6700(gSaveContext.audioSetting); + Audio_SetSoundMode(gSaveContext.soundSetting); PRINTF("終了\n"); return; } @@ -1364,11 +1379,11 @@ void FileSelect_UpdateOptionsMenu(GameState* thisx) { &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); if (sSelectedSetting == FS_SETTING_AUDIO) { - gSaveContext.audioSetting--; + gSaveContext.soundSetting--; // because audio setting is unsigned, can't check for < 0 - if (gSaveContext.audioSetting > 0xF0) { - gSaveContext.audioSetting = FS_AUDIO_SURROUND; + if (gSaveContext.soundSetting > 0xF0) { + gSaveContext.soundSetting = SOUND_SETTING_SURROUND; } } else { #if !OOT_PAL_N64 @@ -1389,10 +1404,10 @@ void FileSelect_UpdateOptionsMenu(GameState* thisx) { &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); if (sSelectedSetting == FS_SETTING_AUDIO) { - gSaveContext.audioSetting++; + gSaveContext.soundSetting++; - if (gSaveContext.audioSetting > FS_AUDIO_SURROUND) { - gSaveContext.audioSetting = FS_AUDIO_STEREO; + if (gSaveContext.soundSetting > SOUND_SETTING_SURROUND) { + gSaveContext.soundSetting = SOUND_SETTING_STEREO; } } else { #if !OOT_PAL_N64 @@ -1706,7 +1721,7 @@ void FileSelect_DrawOptionsImpl(GameState* thisx) { for (i = 0, vtx = 0; i < 4; i++, vtx += 4) { gDPPipeSync(POLY_OPA_DISP++); - if (i == gSaveContext.audioSetting) { + if (i == gSaveContext.soundSetting) { if (sSelectedSetting == FS_SETTING_AUDIO) { gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, cursorPrimRed, cursorPrimGreen, cursorPrimBlue, this->titleAlpha[0]); diff --git a/src/overlays/gamestates/ovl_opening/z_opening.c b/src/overlays/gamestates/ovl_opening/z_opening.c index 962696d38e..7d6c9b04c1 100644 --- a/src/overlays/gamestates/ovl_opening/z_opening.c +++ b/src/overlays/gamestates/ovl_opening/z_opening.c @@ -4,7 +4,15 @@ * Description: Initializes the game into the title screen */ -#include "global.h" +#include "gfx.h" +#include "regs.h" +#include "sys_matrix.h" +#include "title_setup_state.h" +#include "z64game.h" +#include "z64play.h" +#include "z64save.h" +#include "z64sram.h" +#include "z64view.h" void TitleSetup_SetupTitleScreen(TitleSetupState* this) { gSaveContext.gameMode = GAMEMODE_TITLE_SCREEN; diff --git a/src/overlays/gamestates/ovl_select/z_select.c b/src/overlays/gamestates/ovl_select/z_select.c index 2151159c2a..014efff807 100644 --- a/src/overlays/gamestates/ovl_select/z_select.c +++ b/src/overlays/gamestates/ovl_select/z_select.c @@ -4,15 +4,29 @@ * Description: Debug Scene Select Menu */ +#include "libc64/qrand.h" +#include "libu64/gfxprint.h" #include "ultra64.h" -#include "global.h" -#include "terminal.h" #include "alloca.h" -#include "z64.h" - +#include "console_logo_state.h" +#include "controller.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "map_select_state.h" #if PLATFORM_N64 #include "n64dd.h" #endif +#include "regs.h" +#include "segment_symbols.h" +#include "seqcmd.h" +#include "sequence.h" +#include "sfx.h" +#include "terminal.h" +#include "z64play.h" +#include "z64save.h" +#include "z64sram.h" + +#include "macros.h" void MapSelect_LoadTitle(MapSelectState* this) { this->state.running = false; @@ -63,7 +77,7 @@ void func_80800B08_unknown(MapSelectState* this, s32 arg1) { } #endif -static SceneSelectEntry sScenes[] = { +static MapSelectEntry sMapSelectEntries[] = { { " 1:SPOT00", MapSelect_LoadGame, ENTR_HYRULE_FIELD_0 }, { " 2:SPOT01", MapSelect_LoadGame, ENTR_KAKARIKO_VILLAGE_0 }, { " 3:SPOT02", MapSelect_LoadGame, ENTR_GRAVEYARD_0 }, @@ -276,13 +290,13 @@ static SceneSelectEntry sScenes[] = { void MapSelect_UpdateMenu(MapSelectState* this) { Input* input = &this->state.input[0]; s32 pad; - SceneSelectEntry* selectedScene; + MapSelectEntry* selectedEntry; if (this->verticalInputAccumulator == 0) { if (CHECK_BTN_ALL(input->press.button, BTN_A) || CHECK_BTN_ALL(input->press.button, BTN_START)) { - selectedScene = &this->scenes[this->currentScene]; - if (selectedScene->loadFunc != NULL) { - selectedScene->loadFunc(this, selectedScene->entranceIndex); + selectedEntry = &this->entries[this->currentEntry]; + if (selectedEntry->loadFunc != NULL) { + selectedEntry->loadFunc(this, selectedEntry->entranceIndex); } } @@ -420,7 +434,7 @@ void MapSelect_UpdateMenu(MapSelectState* this) { this->pageDownIndex++; this->pageDownIndex = (this->pageDownIndex + ARRAY_COUNT(this->pageDownStops)) % ARRAY_COUNT(this->pageDownStops); - this->currentScene = this->topDisplayedScene = this->pageDownStops[this->pageDownIndex]; + this->currentEntry = this->topDisplayedEntry = this->pageDownStops[this->pageDownIndex]; } this->verticalInputAccumulator += this->verticalInput; @@ -429,12 +443,12 @@ void MapSelect_UpdateMenu(MapSelectState* this) { this->verticalInput = 0; this->verticalInputAccumulator = 0; - this->currentScene++; - this->currentScene = (this->currentScene + this->count) % this->count; + this->currentEntry++; + this->currentEntry = (this->currentEntry + this->count) % this->count; - if (this->currentScene == ((this->topDisplayedScene + this->count + 19) % this->count)) { - this->topDisplayedScene++; - this->topDisplayedScene = (this->topDisplayedScene + this->count) % this->count; + if (this->currentEntry == ((this->topDisplayedEntry + this->count + 19) % this->count)) { + this->topDisplayedEntry++; + this->topDisplayedEntry = (this->topDisplayedEntry + this->count) % this->count; } } @@ -442,25 +456,25 @@ void MapSelect_UpdateMenu(MapSelectState* this) { this->verticalInput = 0; this->verticalInputAccumulator = 0; - if (this->currentScene == this->topDisplayedScene) { - this->topDisplayedScene -= 2; - this->topDisplayedScene = (this->topDisplayedScene + this->count) % this->count; + if (this->currentEntry == this->topDisplayedEntry) { + this->topDisplayedEntry -= 2; + this->topDisplayedEntry = (this->topDisplayedEntry + this->count) % this->count; } - this->currentScene--; - this->currentScene = (this->currentScene + this->count) % this->count; + this->currentEntry--; + this->currentEntry = (this->currentEntry + this->count) % this->count; - if (this->currentScene == ((this->topDisplayedScene + this->count) % this->count)) { - this->topDisplayedScene--; - this->topDisplayedScene = (this->topDisplayedScene + this->count) % this->count; + if (this->currentEntry == ((this->topDisplayedEntry + this->count) % this->count)) { + this->topDisplayedEntry--; + this->topDisplayedEntry = (this->topDisplayedEntry + this->count) % this->count; } } - this->currentScene = (this->currentScene + this->count) % this->count; - this->topDisplayedScene = (this->topDisplayedScene + this->count) % this->count; + this->currentEntry = (this->currentEntry + this->count) % this->count; + this->topDisplayedEntry = (this->topDisplayedEntry + this->count) % this->count; - dREG(80) = this->currentScene; - dREG(81) = this->topDisplayedScene; + dREG(80) = this->currentEntry; + dREG(81) = this->topDisplayedEntry; dREG(82) = this->pageDownIndex; if (this->timerUp != 0) { @@ -493,14 +507,14 @@ void MapSelect_PrintMenu(MapSelectState* this, GfxPrint* printer) { for (i = 0; i < 20; i++) { GfxPrint_SetPos(printer, 9, i + 4); - scene = (this->topDisplayedScene + i + this->count) % this->count; - if (scene == this->currentScene) { + scene = (this->topDisplayedEntry + i + this->count) % this->count; + if (scene == this->currentEntry) { GfxPrint_SetColor(printer, 255, 20, 20, 255); } else { GfxPrint_SetColor(printer, 200, 200, 55, 255); } - name = this->scenes[scene].name; + name = this->entries[scene].name; if (name == NULL) { name = "**Null**"; } @@ -689,9 +703,9 @@ void MapSelect_Init(GameState* thisx) { this->state.main = MapSelect_Main; this->state.destroy = MapSelect_Destroy; - this->scenes = sScenes; - this->topDisplayedScene = 0; - this->currentScene = 0; + this->entries = sMapSelectEntries; + this->topDisplayedEntry = 0; + this->currentEntry = 0; this->pageDownStops[0] = 0; // Hyrule Field this->pageDownStops[1] = 19; // Temple Of Time this->pageDownStops[2] = 37; // Treasure Chest Game @@ -701,7 +715,7 @@ void MapSelect_Init(GameState* thisx) { this->pageDownStops[6] = 91; // Escaping Ganon's Tower 3 this->pageDownIndex = 0; this->opt = 0; - this->count = ARRAY_COUNT(sScenes); + this->count = ARRAY_COUNT(sMapSelectEntries); View_Init(&this->view, this->state.gfxCtx); this->view.flags = (VIEW_PROJECTION_ORTHO | VIEW_VIEWPORT); this->verticalInputAccumulator = 0; @@ -713,8 +727,8 @@ void MapSelect_Init(GameState* thisx) { this->unk_234 = 0; if ((dREG(80) >= 0) && (dREG(80) < this->count)) { - this->currentScene = dREG(80); - this->topDisplayedScene = dREG(81); + this->currentEntry = dREG(80); + this->topDisplayedEntry = dREG(81); this->pageDownIndex = dREG(82); } diff --git a/src/overlays/gamestates/ovl_title/z_title.c b/src/overlays/gamestates/ovl_title/z_title.c index 992cb945bd..175c43f9ea 100644 --- a/src/overlays/gamestates/ovl_title/z_title.c +++ b/src/overlays/gamestates/ovl_title/z_title.c @@ -4,15 +4,31 @@ * Description: Displays the Nintendo Logo */ -#include "global.h" -#include "alloca.h" -#include "versions.h" - +#include "libu64/gfxprint.h" #if PLATFORM_N64 #include "cic6105.h" #include "n64dd.h" #endif +#include "alloca.h" +#include "console_logo_state.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "padmgr.h" +#include "regs.h" +#include "segment_symbols.h" +#include "sequence.h" +#include "sys_matrix.h" +#include "sys_debug_controller.h" +#include "sys_freeze.h" +#include "title_setup_state.h" +#include "versions.h" +#include "z64actor.h" +#include "z64environment.h" +#include "z64save.h" + +#include "global.h" + #include "assets/textures/nintendo_rogo_static/nintendo_rogo_static.h" #if DEBUG_FEATURES @@ -40,7 +56,7 @@ void ConsoleLogo_PrintBuildInfo(Gfx** gfxP) { #endif void ConsoleLogo_Calc(ConsoleLogoState* this) { -#if PLATFORM_N64 +#if !PLATFORM_GC if ((this->coverAlpha == 0) && (this->visibleDuration != 0)) { this->unk_1D4--; this->visibleDuration--; @@ -74,8 +90,8 @@ void ConsoleLogo_SetupView(ConsoleLogoState* this, f32 x, f32 y, f32 z) { eye.y = y; eye.z = z; up.x = up.z = 0.0f; - lookAt.x = lookAt.y = lookAt.z = 0.0f; up.y = 1.0f; + lookAt.x = lookAt.y = lookAt.z = 0.0f; View_SetPerspective(view, 30.0f, 10.0f, 12800.0f); View_LookAt(view, &eye, &lookAt, &up); @@ -92,7 +108,8 @@ void ConsoleLogo_Draw(ConsoleLogoState* this) { Vec3f v3; Vec3f v1; Vec3f v2; - s32 pad2[2]; + s32 pad2; + s32 pad3; OPEN_DISPS(this->state.gfxCtx, "../z_title.c", 395); @@ -165,6 +182,10 @@ void ConsoleLogo_Main(GameState* thisx) { } #endif +#if PLATFORM_IQUE + this->exit = true; +#endif + if (this->exit) { gSaveContext.seqId = (u8)NA_BGM_DISABLED; gSaveContext.natureAmbienceId = 0xFF; @@ -221,7 +242,7 @@ void ConsoleLogo_Init(GameState* thisx) { this->state.destroy = ConsoleLogo_Destroy; this->exit = false; -#if OOT_VERSION < GC_US +#if OOT_VERSION < GC_US || PLATFORM_IQUE if (!(gPadMgr.validCtrlrsMask & 1)) { gSaveContext.fileNum = 0xFEDC; } else { 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 4828f726eb..4690ccade8 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_collect.c +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_collect.c @@ -1,4 +1,15 @@ #include "z_kaleido_scope.h" + +#include "controller.h" +#include "gfx.h" +#include "regs.h" +#include "sfx.h" +#include "z64ocarina.h" +#include "z64play.h" +#include "z64save.h" + +#include "global.h" + #include "assets/textures/parameter_static/parameter_static.h" #include "assets/textures/icon_item_static/icon_item_static.h" 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 6cf75817a5..3339bc3250 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_debug.c +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_debug.c @@ -1,4 +1,13 @@ #include "z_kaleido_scope.h" + +#include "libu64/gfxprint.h" +#include "controller.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "gfxalloc.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/textures/parameter_static/parameter_static.h" // Positions of each input section in the editor 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 e633b06e2e..8a8b627995 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.c +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.c @@ -1,4 +1,14 @@ #include "z_kaleido_scope.h" + +#include "controller.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "regs.h" +#include "sfx.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + #include "assets/textures/icon_item_static/icon_item_static.h" #include "assets/textures/parameter_static/parameter_static.h" 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 3dc94e9c42..e76c6a7cea 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_item.c +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_item.c @@ -1,4 +1,14 @@ #include "z_kaleido_scope.h" + +#include "libu64/pad.h" +#include "controller.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "regs.h" +#include "sfx.h" +#include "z64play.h" +#include "z64save.h" + #include "assets/textures/parameter_static/parameter_static.h" u8 gAmmoItems[] = { diff --git a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_map.c b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_map.c index 651f4328b8..09a85cb039 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_map.c +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_map.c @@ -1,5 +1,17 @@ #include "z_kaleido_scope.h" + +#include "gfx.h" +#include "gfx_setupdl.h" +#include "map.h" +#include "regs.h" +#include "sfx.h" +#include "sys_ucode.h" #include "versions.h" +#include "z64play.h" +#include "z64save.h" + +#include "global.h" + #include "assets/textures/icon_item_24_static/icon_item_24_static.h" #if OOT_NTSC #include "assets/textures/icon_item_jpn_static/icon_item_jpn_static.h" @@ -150,7 +162,7 @@ void KaleidoScope_DrawDungeonMap(PlayState* play, GraphicsContext* gfxCtx) { pauseCtx->cursorSpecialPos = 0; pauseCtx->cursorSlot[PAUSE_MAP] = pauseCtx->cursorPoint[PAUSE_MAP] = pauseCtx->dungeonMapSlot; pauseCtx->cursorX[PAUSE_MAP] = 0; - j = 72 + (pauseCtx->cursorSlot[PAUSE_MAP] * 4); + j = (pauseCtx->cursorSlot[PAUSE_MAP] + 18) * 4; KaleidoScope_SetCursorPos(pauseCtx, j, pauseCtx->mapPageVtx); Audio_PlaySfxGeneral(NA_SE_SY_CURSOR, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); @@ -181,7 +193,7 @@ void KaleidoScope_DrawDungeonMap(PlayState* play, GraphicsContext* gfxCtx) { } PRINTF("kscope->cursor_point====%d\n", pauseCtx->cursorPoint[PAUSE_MAP]); - j = 72 + (pauseCtx->cursorSlot[PAUSE_MAP] * 4); + j = (pauseCtx->cursorSlot[PAUSE_MAP] + 18) * 4; KaleidoScope_SetCursorPos(pauseCtx, j, pauseCtx->mapPageVtx); Audio_PlaySfxGeneral(NA_SE_SY_CURSOR, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); @@ -203,7 +215,7 @@ void KaleidoScope_DrawDungeonMap(PlayState* play, GraphicsContext* gfxCtx) { pauseCtx->cursorSlot[PAUSE_MAP] = pauseCtx->cursorPoint[PAUSE_MAP]; - j = 72 + (pauseCtx->cursorSlot[PAUSE_MAP] * 4); + j = (pauseCtx->cursorSlot[PAUSE_MAP] + 18) * 4; KaleidoScope_SetCursorPos(pauseCtx, j, pauseCtx->mapPageVtx); if (pauseCtx->cursorX[PAUSE_MAP] == 0) { @@ -285,7 +297,7 @@ void KaleidoScope_DrawDungeonMap(PlayState* play, GraphicsContext* gfxCtx) { gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, pauseCtx->alpha); pauseCtx->mapPageVtx[116].v.ob[1] = pauseCtx->mapPageVtx[117].v.ob[1] = - pauseCtx->pagesYOrigin1 - (VREG(30) * 14) + 49; + pauseCtx->pagesYOrigin1 + 50 - (VREG(30) * 14) - 1; pauseCtx->mapPageVtx[118].v.ob[1] = pauseCtx->mapPageVtx[119].v.ob[1] = pauseCtx->mapPageVtx[116].v.ob[1] - 16; gDPLoadTextureBlock(POLY_OPA_DISP++, gDungeonMapLinkHeadTex, G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 16, 0, @@ -550,9 +562,8 @@ void KaleidoScope_DrawWorldMap(PlayState* play, GraphicsContext* gfxCtx) { if (pauseCtx->cursorSpecialPos == 0) { if (pauseCtx->stickAdjX > 30) { - D_8082A6D4 = 0; - do { + D_8082A6D4 = 0; pauseCtx->cursorPoint[PAUSE_WORLD_MAP]++; if (pauseCtx->cursorPoint[PAUSE_WORLD_MAP] >= WORLD_MAP_POINT_MAX) { pauseCtx->cursorPoint[PAUSE_WORLD_MAP] = WORLD_MAP_POINT_MAX - 1; @@ -562,9 +573,8 @@ void KaleidoScope_DrawWorldMap(PlayState* play, GraphicsContext* gfxCtx) { } while (pauseCtx->worldMapPoints[pauseCtx->cursorPoint[PAUSE_WORLD_MAP]] == WORLD_MAP_POINT_STATE_HIDE); } else if (pauseCtx->stickAdjX < -30) { - D_8082A6D4 = 0; - do { + D_8082A6D4 = 0; pauseCtx->cursorPoint[PAUSE_WORLD_MAP]--; if (pauseCtx->cursorPoint[PAUSE_WORLD_MAP] < 0) { pauseCtx->cursorPoint[PAUSE_WORLD_MAP] = 0; @@ -585,8 +595,8 @@ void KaleidoScope_DrawWorldMap(PlayState* play, GraphicsContext* gfxCtx) { pauseCtx->cursorItem[PAUSE_MAP] = gSaveContext.worldMapArea + 0x18; if (pauseCtx->cursorSpecialPos == PAUSE_CURSOR_PAGE_LEFT) { if (pauseCtx->stickAdjX > 30) { - pauseCtx->cursorPoint[PAUSE_WORLD_MAP] = 0; pauseCtx->cursorSpecialPos = 0; + pauseCtx->cursorPoint[PAUSE_WORLD_MAP] = 0; while (pauseCtx->worldMapPoints[pauseCtx->cursorPoint[PAUSE_WORLD_MAP]] == WORLD_MAP_POINT_STATE_HIDE) { @@ -603,8 +613,8 @@ void KaleidoScope_DrawWorldMap(PlayState* play, GraphicsContext* gfxCtx) { } } else { if (pauseCtx->stickAdjX < -30) { - pauseCtx->cursorPoint[PAUSE_WORLD_MAP] = WORLD_MAP_POINT_MAX - 1; pauseCtx->cursorSpecialPos = 0; + pauseCtx->cursorPoint[PAUSE_WORLD_MAP] = WORLD_MAP_POINT_MAX - 1; while (pauseCtx->worldMapPoints[pauseCtx->cursorPoint[PAUSE_WORLD_MAP]] == WORLD_MAP_POINT_STATE_HIDE) { diff --git a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_prompt.c b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_prompt.c index c784ab0b4a..6264c4147c 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_prompt.c +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_prompt.c @@ -1,5 +1,10 @@ #include "z_kaleido_scope.h" +#include "libu64/pad.h" +#include "regs.h" +#include "sfx.h" +#include "z64play.h" + static s16 sKaleidoPromptCursorAlphaVals[] = { 100, 255 }; void KaleidoScope_UpdatePrompt(PlayState* play) { 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 7a6cff2334..5c0bfab0d3 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.c +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.c @@ -1,7 +1,30 @@ +#include "z_kaleido_scope.h" +#include "libc64/sleep.h" +#include "controller.h" +#include "gfx.h" +#include "gfx_setupdl.h" +#include "gfxalloc.h" +#include "map.h" #if PLATFORM_N64 #include "n64dd.h" #endif -#include "z_kaleido_scope.h" +#include "regs.h" +#include "segment_symbols.h" +#include "segmented_address.h" +#include "seqcmd.h" +#include "sfx.h" +#include "sys_matrix.h" +#include "terminal.h" +#include "title_setup_state.h" +#include "versions.h" +#include "z64audio.h" +#include "z64ocarina.h" +#include "z64play.h" +#include "z64player.h" +#include "z64save.h" + +#include "global.h" + #include "assets/textures/icon_item_static/icon_item_static.h" #include "assets/textures/icon_item_24_static/icon_item_24_static.h" #if OOT_NTSC @@ -13,10 +36,8 @@ #include "assets/textures/icon_item_fra_static/icon_item_fra_static.h" #endif #include "assets/textures/icon_item_gameover_static/icon_item_gameover_static.h" -#include "terminal.h" -#include "versions.h" -#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 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 ntsc-1.0:0 ntsc-1.1:128 ntsc-1.2:128 pal-1.0:0 pal-1.1:0" #if !PLATFORM_GC #define KALEIDO_PROMPT_CURSOR_R 100 @@ -721,7 +742,7 @@ static u16 sPageSwitchNextPageIndex[] = { PAUSE_QUEST, // PAUSE_EQUIP left }; -u8 gSlotAgeReqs[] = { +char gSlotAgeReqs[] = { AGE_REQ_CHILD, // SLOT_DEKU_STICK AGE_REQ_NONE, // SLOT_DEKU_NUT AGE_REQ_NONE, // SLOT_BOMB @@ -748,7 +769,7 @@ u8 gSlotAgeReqs[] = { AGE_REQ_CHILD, // SLOT_TRADE_CHILD }; -u8 gEquipAgeReqs[4][4] = { +char gEquipAgeReqs[4][4] = { { AGE_REQ_ADULT, // 0 UPG_QUIVER AGE_REQ_CHILD, // EQUIP_TYPE_SWORD EQUIP_VALUE_SWORD_KOKIRI @@ -775,7 +796,7 @@ u8 gEquipAgeReqs[4][4] = { }, }; -u8 gItemAgeReqs[] = { +char gItemAgeReqs[] = { AGE_REQ_CHILD, // ITEM_DEKU_STICK AGE_REQ_NONE, // ITEM_DEKU_NUT AGE_REQ_NONE, // ITEM_BOMB @@ -902,9 +923,14 @@ static void* sPromptChoiceTexs[][2] = { #endif }; +//! @bug On the iQue version, kaleido bss is reported to be just 0x10 bytes large in the relocation section. This is +//! likely due to not counting the size of COMMON symbols in the overlay. sPlayerPreRender was likely originally +//! non-static, but we make it static here to match the bss order and patch the relocation section later in the build +//! as our relocation generator does count COMMON symbols. + static u8 D_808321A8[5]; static PreRender sPlayerPreRender; -static void* sPreRenderCvg; +void* sPreRenderCvg; void KaleidoScope_SetupPlayerPreRender(PlayState* play) { Gfx* gfx; @@ -954,7 +980,7 @@ Gfx* KaleidoScope_QuadTextureIA8(Gfx* gfx, void* texture, s16 width, s16 height, return gfx; } -void KaleidoScope_OverridePalIndexCI4(u8* texture, s32 size, s32 targetIndex, s32 newIndex) { +void KaleidoScope_OverridePalIndexCI4(char* texture, s32 size, s32 targetIndex, s32 newIndex) { s32 i; s32 index1; s32 index2; @@ -1015,7 +1041,7 @@ void KaleidoScope_SetDefaultCursor(PlayState* play) { s = pauseCtx->cursorSlot[PAUSE_ITEM]; if (gSaveContext.save.info.inventory.items[s] == ITEM_NONE) { i = s + 1; - while (true) { + for (;;) { if (gSaveContext.save.info.inventory.items[i] != ITEM_NONE) { break; } @@ -1268,11 +1294,12 @@ void KaleidoScope_DrawPages(PlayState* play, GraphicsContext* gfxCtx) { } else if (pauseCtx->stickAdjX > 30) { if (sStickXRepeatState == 1) { sStickXRepeatTimer--; - if (sStickXRepeatTimer < 0) { + // NOLINTBEGIN + if (sStickXRepeatTimer < 0) sStickXRepeatTimer = R_PAUSE_STICK_REPEAT_DELAY; - } else { + else pauseCtx->stickAdjX = 0; - } + // NOLINTEND } else { sStickXRepeatTimer = R_PAUSE_STICK_REPEAT_DELAY_FIRST; sStickXRepeatState = 1; @@ -1296,11 +1323,12 @@ void KaleidoScope_DrawPages(PlayState* play, GraphicsContext* gfxCtx) { } else if (pauseCtx->stickAdjY > 30) { if (sStickYRepeatState == 1) { sStickYRepeatTimer--; - if (sStickYRepeatTimer < 0) { + // NOLINTBEGIN + if (sStickYRepeatTimer < 0) sStickYRepeatTimer = R_PAUSE_STICK_REPEAT_DELAY; - } else { + else pauseCtx->stickAdjY = 0; - } + // NOLINTEND } else { sStickYRepeatTimer = R_PAUSE_STICK_REPEAT_DELAY_FIRST; sStickYRepeatState = 1; @@ -1573,7 +1601,7 @@ void KaleidoScope_DrawPages(PlayState* play, GraphicsContext* gfxCtx) { } else if (((pauseCtx->state == PAUSE_STATE_SAVE_PROMPT) && (pauseCtx->savePromptState >= PAUSE_SAVE_PROMPT_STATE_SAVED)) || pauseCtx->state == PAUSE_STATE_GAME_OVER_SAVED) { -#if PLATFORM_N64 +#if !PLATFORM_GC POLY_OPA_DISP = KaleidoScope_QuadTextureIA8(POLY_OPA_DISP, sSaveConfirmationTexs[gSaveContext.language], 152, 16, PROMPT_QUAD_MESSAGE * 4); #endif @@ -1823,7 +1851,7 @@ void KaleidoScope_DrawInfoPanel(PlayState* play) { gSPDisplayList(POLY_OPA_DISP++, gRButtonIconDL); if (pauseCtx->cursorSpecialPos != 0) { - j = (pauseCtx->cursorSpecialPos * 4) - 32; + j = (pauseCtx->cursorSpecialPos - 8) * 4; pauseCtx->cursorVtx[0].v.ob[0] = pauseCtx->infoPanelVtx[j].v.ob[0]; pauseCtx->cursorVtx[0].v.ob[1] = pauseCtx->infoPanelVtx[j].v.ob[1]; KaleidoScope_DrawCursor(play, pauseCtx->pageIndex); @@ -2002,8 +2030,8 @@ void KaleidoScope_DrawInfoPanel(PlayState* play) { D_8082ADD8[gSaveContext.language], 16, 4); } else if ((pauseCtx->pageIndex == PAUSE_MAP) && sInDungeonScene) { - } else if ((pauseCtx->pageIndex == PAUSE_QUEST) && (pauseCtx->cursorSlot[PAUSE_QUEST] >= 6) && - (pauseCtx->cursorSlot[PAUSE_QUEST] <= 0x11)) { + } else if ((pauseCtx->pageIndex == PAUSE_QUEST) && + ((pauseCtx->cursorSlot[PAUSE_QUEST] >= 6) && (pauseCtx->cursorSlot[PAUSE_QUEST] <= 0x11))) { if (pauseCtx->namedItem != PAUSE_ITEM_NONE) { pauseCtx->infoPanelVtx[16].v.ob[0] = pauseCtx->infoPanelVtx[18].v.ob[0] = R_KALEIDO_UNK3(gSaveContext.language); @@ -2121,8 +2149,8 @@ void KaleidoScope_UpdateNamePanel(PlayState* play) { pauseCtx->nameDisplayTimer = 0; } } else if (pauseCtx->nameColorSet == 0) { - if (((pauseCtx->pageIndex == PAUSE_QUEST) && (pauseCtx->cursorSlot[PAUSE_QUEST] >= 6) && - (pauseCtx->cursorSlot[PAUSE_QUEST] <= 0x11) && + if (((pauseCtx->pageIndex == PAUSE_QUEST) && + ((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))) { @@ -2143,16 +2171,16 @@ void KaleidoScope_UpdateNamePanel(PlayState* play) { void KaleidoScope_UpdatePageSwitch(PlayState* play, Input* input) { PauseContext* pauseCtx = &play->pauseCtx; s32 frameAdvanceFreeze = false; - s32 nextPageMode; if (R_PAUSE_PAGE_SWITCH_FRAME_ADVANCE_ON && !CHECK_BTN_ALL(input->press.button, BTN_L)) { frameAdvanceFreeze = true; } if (!frameAdvanceFreeze) { - nextPageMode = pauseCtx->nextPageMode; - pauseCtx->eye.x += sPageSwitchEyeDx[nextPageMode]; - pauseCtx->eye.z += sPageSwitchEyeDz[nextPageMode]; + pauseCtx->eye.x += sPageSwitchEyeDx[pauseCtx->nextPageMode]; + pauseCtx->eye.z += sPageSwitchEyeDz[pauseCtx->nextPageMode]; + + if (pauseCtx->nextPageMode) {} if (pauseCtx->pageSwitchTimer < ((4 * PAGE_SWITCH_NSTEPS) / 2)) { WREG(16) -= WREG(25) / WREG(6); @@ -2398,7 +2426,6 @@ static s16 sVtxMapWorldAreaX[] = { 20, // WORLD_MAP_AREA_GORON_CITY -34, // WORLD_MAP_AREA_LON_LON_RANCH -300, // WORLD_MAP_AREA_QUESTION_MARK - 0, // WORLD_MAP_AREA_GANONS_CASTLE }; static s16 sVtxMapWorldAreaWidth[] = { @@ -2423,7 +2450,6 @@ static s16 sVtxMapWorldAreaWidth[] = { 16, // WORLD_MAP_AREA_GORON_CITY 20, // WORLD_MAP_AREA_LON_LON_RANCH -1, // WORLD_MAP_AREA_QUESTION_MARK - 0, // WORLD_MAP_AREA_GANONS_CASTLE }; static s16 sVtxMapWorldAreaY[] = { @@ -2448,7 +2474,6 @@ static s16 sVtxMapWorldAreaY[] = { 37, // WORLD_MAP_AREA_GORON_CITY -13, // WORLD_MAP_AREA_LON_LON_RANCH -300, // WORLD_MAP_AREA_QUESTION_MARK - 0, // WORLD_MAP_AREA_GANONS_CASTLE }; static s16 sVtxMapWorldAreaHeight[] = { @@ -2473,7 +2498,6 @@ static s16 sVtxMapWorldAreaHeight[] = { 13, // WORLD_MAP_AREA_GORON_CITY 12, // WORLD_MAP_AREA_LON_LON_RANCH 1, // WORLD_MAP_AREA_QUESTION_MARK - 0, // WORLD_MAP_AREA_GANONS_CASTLE }; s16 KaleidoScope_SetPageVertices(PlayState* play, Vtx* vtx, s16 vtxPage, s16 numQuads) { @@ -2481,16 +2505,16 @@ s16 KaleidoScope_SetPageVertices(PlayState* play, Vtx* vtx, s16 vtxPage, s16 num static s16 sTradeQuestMarkerBobTimer = 1; static s16 sTradeQuestMarkerBobState = 0; PauseContext* pauseCtx = &play->pauseCtx; + s16 i; + s16 j; + s16 bufI; + s16 bufIAfterPageSections; + s16 pageBgQuadX; + s16 pageBgQuadY; s16* quadsX; s16* quadsWidth; s16* quadsY; s16* quadsHeight; - s16 bufIAfterPageSections; - s16 pageBgQuadX; - s16 pageBgQuadY; - s16 i; - s16 j; - s16 bufI; // Vertices for KaleidoScope_DrawPageSections @@ -2502,7 +2526,7 @@ s16 KaleidoScope_SetPageVertices(PlayState* play, Vtx* vtx, s16 vtxPage, s16 num // For each row for (pageBgQuadY = (PAGE_BG_ROWS * PAGE_BG_QUAD_HEIGHT) / 2, i = 0; i < PAGE_BG_ROWS; - i++, bufI += 4, pageBgQuadY -= PAGE_BG_QUAD_HEIGHT) { + bufI += 4, i++, pageBgQuadY -= PAGE_BG_QUAD_HEIGHT) { vtx[bufI + 0].v.ob[0] = vtx[bufI + 2].v.ob[0] = pageBgQuadX; vtx[bufI + 1].v.ob[0] = vtx[bufI + 3].v.ob[0] = vtx[bufI + 0].v.ob[0] + PAGE_BG_QUAD_WIDTH; @@ -2513,10 +2537,7 @@ s16 KaleidoScope_SetPageVertices(PlayState* play, Vtx* vtx, s16 vtxPage, s16 num vtx[bufI + 0].v.ob[2] = vtx[bufI + 1].v.ob[2] = vtx[bufI + 2].v.ob[2] = vtx[bufI + 3].v.ob[2] = 0; - vtx[bufI + 0].v.flag = 0; - vtx[bufI + 1].v.flag = 0; - vtx[bufI + 2].v.flag = 0; - vtx[bufI + 3].v.flag = 0; + vtx[bufI + 0].v.flag = vtx[bufI + 1].v.flag = vtx[bufI + 2].v.flag = vtx[bufI + 3].v.flag = 0; vtx[bufI + 0].v.tc[0] = vtx[bufI + 0].v.tc[1] = vtx[bufI + 1].v.tc[1] = vtx[bufI + 2].v.tc[0] = 0; @@ -2552,7 +2573,7 @@ s16 KaleidoScope_SetPageVertices(PlayState* play, Vtx* vtx, s16 vtxPage, s16 num quadsHeight = sVtxPageQuadsHeight[vtxPage]; for (j = 0; j < numQuads; j++, bufI += 4) { - vtx[bufI + 2].v.ob[0] = vtx[bufI + 0].v.ob[0] = quadsX[j]; + vtx[bufI + 0].v.ob[0] = vtx[bufI + 2].v.ob[0] = quadsX[j]; vtx[bufI + 1].v.ob[0] = vtx[bufI + 3].v.ob[0] = vtx[bufI + 0].v.ob[0] + quadsWidth[j]; @@ -2587,6 +2608,11 @@ s16 KaleidoScope_SetPageVertices(PlayState* play, Vtx* vtx, s16 vtxPage, s16 num bufI -= ((VTX_PAGE_MAP_WORLD_QUADS - WORLD_MAP_QUAD_TRADE_QUEST_MARKER) * 4); + //! @bug If worldMapArea is WORLD_MAP_AREA_GANONS_CASTLE or WORLD_MAP_AREA_MAX, this will read past the end + //! of the sVtxMapWorldArea arrays and generate garbage vertex data. This is harmless though: + //! if pauseCtx->tradeQuestMarker != TRADE_QUEST_MARKER_NONE then the vertices are immediately overwritten, + //! and if pauseCtx->tradeQuestMarker == TRADE_QUEST_MARKER_NONE then KaleidoScope_DrawWorldMap will not + //! draw anything with these vertices. j = gSaveContext.worldMapArea; vtx[bufI + 0].v.ob[0] = vtx[bufI + 2].v.ob[0] = sVtxMapWorldAreaX[j]; @@ -2610,9 +2636,9 @@ s16 KaleidoScope_SetPageVertices(PlayState* play, Vtx* vtx, s16 vtxPage, s16 num sTradeQuestMarkerBobTimer = 8; break; case 2: + sTradeQuestMarkerBobState = 0; sTradeQuestMarkerBobY = 0; sTradeQuestMarkerBobTimer = 6; - sTradeQuestMarkerBobState = 0; break; } } else { @@ -2626,12 +2652,12 @@ s16 KaleidoScope_SetPageVertices(PlayState* play, Vtx* vtx, s16 vtxPage, s16 num vtx[i + 1].v.ob[0] = vtx[i + 3].v.ob[0] = vtx[i + 0].v.ob[0] + 8; - vtx[i + 0].v.ob[1] = vtx[i + 1].v.ob[1] = vtx[j + 0].v.ob[1] - sTradeQuestMarkerBobY + 10; - - vtx[i + 0].v.ob[2] = vtx[i + 1].v.ob[2] = vtx[i + 2].v.ob[2] = vtx[i + 3].v.ob[2] = 0; + vtx[i + 0].v.ob[1] = vtx[i + 1].v.ob[1] = vtx[j + 0].v.ob[1] + 10 - sTradeQuestMarkerBobY; vtx[i + 2].v.ob[1] = vtx[i + 3].v.ob[1] = vtx[i + 0].v.ob[1] - 8; + vtx[i + 0].v.ob[2] = vtx[i + 1].v.ob[2] = vtx[i + 2].v.ob[2] = vtx[i + 3].v.ob[2] = 0; + vtx[i + 0].v.flag = vtx[i + 1].v.flag = vtx[i + 2].v.flag = vtx[i + 3].v.flag = 0; vtx[bufI].v.tc[0] = vtx[bufI].v.tc[1] = vtx[i + 1].v.tc[1] = vtx[i + 2].v.tc[0] = 0; @@ -2970,7 +2996,7 @@ void KaleidoScope_SetVertices(PlayState* play, GraphicsContext* gfxCtx) { // ITEM_QUAD_GRID_SELECTED_C_LEFT, ITEM_QUAD_GRID_SELECTED_C_DOWN, ITEM_QUAD_GRID_SELECTED_C_RIGHT - for (j = 1; j < 4; j++, i += 4) { + for (j = 1; j < 4; i += 4, j++) { if (gSaveContext.save.info.equips.cButtonSlots[j - 1] != ITEM_NONE) { k = gSaveContext.save.info.equips.cButtonSlots[j - 1] * 4; @@ -3118,7 +3144,7 @@ void KaleidoScope_SetVertices(PlayState* play, GraphicsContext* gfxCtx) { } } - for (j = 0; j < 4; j++, k += 4) { + for (j = 0; j < 4; k += 4, j++) { if (CUR_EQUIP_VALUE(j) != 0) { i = (CUR_EQUIP_VALUE(j) + D_8082B134[j] - 1) * 4; @@ -3158,7 +3184,7 @@ void KaleidoScope_SetVertices(PlayState* play, GraphicsContext* gfxCtx) { x = 112; y = 50; - while (true) { + 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; @@ -3190,7 +3216,6 @@ void KaleidoScope_SetVertices(PlayState* play, GraphicsContext* gfxCtx) { pauseCtx->equipVtx[k + 3].v.cn[3] = pauseCtx->alpha; x -= 32; - y -= 32; 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; @@ -3199,6 +3224,7 @@ void KaleidoScope_SetVertices(PlayState* play, GraphicsContext* gfxCtx) { break; } + y -= 32; k += 4; } @@ -3239,13 +3265,13 @@ void KaleidoScope_SetVertices(PlayState* play, GraphicsContext* gfxCtx) { pauseCtx->questVtx[k + 0].v.ob[0] = pauseCtx->questVtx[k + 2].v.ob[0] = sQuestQuadsX[j] + 2; pauseCtx->questVtx[k + 1].v.ob[0] = pauseCtx->questVtx[k + 3].v.ob[0] = - pauseCtx->questVtx[k + 0].v.ob[0] + quadWidth - 4; + pauseCtx->questVtx[k + 0].v.ob[0] + (quadWidth - 4); pauseCtx->questVtx[k + 0].v.ob[1] = pauseCtx->questVtx[k + 1].v.ob[1] = sQuestQuadsY[j] + pauseCtx->pagesYOrigin1 - 2; pauseCtx->questVtx[k + 2].v.ob[1] = pauseCtx->questVtx[k + 3].v.ob[1] = - pauseCtx->questVtx[k + 0].v.ob[1] - sQuestQuadsSize[j] + 4; + pauseCtx->questVtx[k + 0].v.ob[1] - (sQuestQuadsSize[j] - 4); } pauseCtx->questVtx[k + 0].v.ob[2] = pauseCtx->questVtx[k + 1].v.ob[2] = pauseCtx->questVtx[k + 2].v.ob[2] = @@ -3417,16 +3443,16 @@ void KaleidoScope_UpdateOpening(PlayState* play) { } else if (pauseCtx->pageSwitchTimer == (4 * PAGE_SWITCH_NSTEPS * 1)) { // `ZREG(47)` is always 1 so this normally never happens pauseCtx->pageIndex = sPageSwitchNextPageIndex[pauseCtx->nextPageMode]; - pauseCtx->nextPageMode = (u16)(pauseCtx->pageIndex * 2) + 1; + pauseCtx->nextPageMode = (u16)(pauseCtx->pageIndex << 1) + 1; } } void KaleidoScope_UpdateCursorVtx(PlayState* play) { PauseContext* pauseCtx = &play->pauseCtx; - s32 tlOffsetX; - s32 tlOffsetY; - s32 rightOffsetX; - s32 bottomOffsetY; + s16 tlOffsetX; + s16 tlOffsetY; + s16 bottomOffsetY; + s16 rightOffsetX; if (pauseCtx->cursorSpecialPos == 0) { tlOffsetX = -1; @@ -3530,8 +3556,8 @@ void KaleidoScope_LoadDungeonMap(PlayState* play) { } void KaleidoScope_UpdateDungeonMap(PlayState* play) { - PauseContext* pauseCtx = &play->pauseCtx; InterfaceContext* interfaceCtx = &play->interfaceCtx; + PauseContext* pauseCtx = &play->pauseCtx; PRINTF("MAP DMA = %d\n", play->interfaceCtx.mapPaletteIndex); @@ -3548,16 +3574,16 @@ void KaleidoScope_UpdateDungeonMap(PlayState* play) { Map_SetFloorPalettesData(play, pauseCtx->dungeonMapSlot - 3); if ((play->sceneId >= SCENE_DEKU_TREE) && (play->sceneId <= SCENE_TREASURE_BOX_SHOP)) { - if ((VREG(30) + 3) == pauseCtx->cursorPoint[PAUSE_MAP]) { - KaleidoScope_OverridePalIndexCI4(interfaceCtx->mapSegment, MAP_48x85_TEX_SIZE, + if (VREG(30) == pauseCtx->cursorPoint[PAUSE_MAP] - 3) { + KaleidoScope_OverridePalIndexCI4((char*)interfaceCtx->mapSegment, MAP_48x85_TEX_SIZE, interfaceCtx->mapPaletteIndex, 14); } } if ((play->sceneId >= SCENE_DEKU_TREE) && (play->sceneId <= SCENE_TREASURE_BOX_SHOP)) { - if ((VREG(30) + 3) == pauseCtx->cursorPoint[PAUSE_MAP]) { - KaleidoScope_OverridePalIndexCI4(interfaceCtx->mapSegment + ALIGN16(MAP_48x85_TEX_SIZE), MAP_48x85_TEX_SIZE, - interfaceCtx->mapPaletteIndex, 14); + if (VREG(30) == pauseCtx->cursorPoint[PAUSE_MAP] - 3) { + KaleidoScope_OverridePalIndexCI4((char*)interfaceCtx->mapSegment + ALIGN16(MAP_48x85_TEX_SIZE), + MAP_48x85_TEX_SIZE, interfaceCtx->mapPaletteIndex, 14); } } } @@ -3627,9 +3653,9 @@ void KaleidoScope_Update(PlayState* play) { size1 = Player_InitPauseDrawData(play, pauseCtx->playerSegment, &pauseCtx->playerSkelAnime); PRINTF("プレイヤー size1=%x\n", size1); + size0 = (uintptr_t)_icon_item_staticSegmentRomEnd - (uintptr_t)_icon_item_staticSegmentRomStart; pauseCtx->iconItemSegment = (void*)ALIGN16((uintptr_t)pauseCtx->playerSegment + size1); - size0 = (uintptr_t)_icon_item_staticSegmentRomEnd - (uintptr_t)_icon_item_staticSegmentRomStart; PRINTF("icon_item size0=%x\n", size0); DMA_REQUEST_SYNC(pauseCtx->iconItemSegment, (uintptr_t)_icon_item_staticSegmentRomStart, size0, "../z_kaleido_scope_PAL.c", 3662); @@ -3698,10 +3724,12 @@ void KaleidoScope_Update(PlayState* play) { #if OOT_NTSC if (gSaveContext.language == LANGUAGE_JPN) { size = (uintptr_t)_icon_item_jpn_staticSegmentRomEnd - (uintptr_t)_icon_item_jpn_staticSegmentRomStart; + PRINTF("icon_item_jpn dungeon-size=%x\n", size); DMA_REQUEST_SYNC(pauseCtx->iconItemLangSegment, (uintptr_t)_icon_item_jpn_staticSegmentRomStart, size, "../z_kaleido_scope_PAL.c", UNK_LINE); } else { size = (uintptr_t)_icon_item_nes_staticSegmentRomEnd - (uintptr_t)_icon_item_nes_staticSegmentRomStart; + PRINTF("icon_item_dungeon dungeon-size=%x\n", size); DMA_REQUEST_SYNC(pauseCtx->iconItemLangSegment, (uintptr_t)_icon_item_nes_staticSegmentRomStart, size, "../z_kaleido_scope_PAL.c", UNK_LINE); } @@ -3734,37 +3762,42 @@ void KaleidoScope_Update(PlayState* play) { if (((void)0, gSaveContext.worldMapArea) < WORLD_MAP_AREA_MAX) { #if OOT_NTSC if (gSaveContext.language == LANGUAGE_JPN) { - DMA_REQUEST_SYNC(pauseCtx->nameSegment + MAX(MAP_NAME_TEX1_SIZE, ITEM_NAME_TEX_SIZE), - (uintptr_t)_map_name_staticSegmentRomStart + - (((void)0, gSaveContext.worldMapArea) * MAP_NAME_TEX2_SIZE) + - 24 * MAP_NAME_TEX1_SIZE + 22 * LANGUAGE_JPN * MAP_NAME_TEX2_SIZE, - MAP_NAME_TEX2_SIZE, "../z_kaleido_scope_PAL.c", UNK_LINE); + DMA_REQUEST_SYNC( + pauseCtx->nameSegment + MAX(MAP_NAME_TEX1_SIZE, ITEM_NAME_TEX_SIZE), + (uintptr_t)_map_name_staticSegmentRomStart + + ((((void)0, gSaveContext.worldMapArea) + 22 * LANGUAGE_JPN) * MAP_NAME_TEX2_SIZE) + + 24 * MAP_NAME_TEX1_SIZE, + MAP_NAME_TEX2_SIZE, "../z_kaleido_scope_PAL.c", UNK_LINE); } else { - DMA_REQUEST_SYNC(pauseCtx->nameSegment + MAX(MAP_NAME_TEX1_SIZE, ITEM_NAME_TEX_SIZE), - (uintptr_t)_map_name_staticSegmentRomStart + - (((void)0, gSaveContext.worldMapArea) * MAP_NAME_TEX2_SIZE) + - 24 * MAP_NAME_TEX1_SIZE + 22 * LANGUAGE_ENG * MAP_NAME_TEX2_SIZE, - MAP_NAME_TEX2_SIZE, "../z_kaleido_scope_PAL.c", UNK_LINE); + DMA_REQUEST_SYNC( + pauseCtx->nameSegment + MAX(MAP_NAME_TEX1_SIZE, ITEM_NAME_TEX_SIZE), + (uintptr_t)_map_name_staticSegmentRomStart + + ((((void)0, gSaveContext.worldMapArea) + 22 * LANGUAGE_ENG) * MAP_NAME_TEX2_SIZE) + + 24 * MAP_NAME_TEX1_SIZE, + MAP_NAME_TEX2_SIZE, "../z_kaleido_scope_PAL.c", UNK_LINE); } #else if (gSaveContext.language == LANGUAGE_ENG) { - DMA_REQUEST_SYNC(pauseCtx->nameSegment + MAX(MAP_NAME_TEX1_SIZE, ITEM_NAME_TEX_SIZE), - (uintptr_t)_map_name_staticSegmentRomStart + - (((void)0, gSaveContext.worldMapArea) * MAP_NAME_TEX2_SIZE) + - 36 * MAP_NAME_TEX1_SIZE + 22 * LANGUAGE_ENG * MAP_NAME_TEX2_SIZE, - MAP_NAME_TEX2_SIZE, "../z_kaleido_scope_PAL.c", 3776); + DMA_REQUEST_SYNC( + pauseCtx->nameSegment + MAX(MAP_NAME_TEX1_SIZE, ITEM_NAME_TEX_SIZE), + (uintptr_t)_map_name_staticSegmentRomStart + + ((((void)0, gSaveContext.worldMapArea) + 22 * LANGUAGE_ENG) * MAP_NAME_TEX2_SIZE) + + 36 * MAP_NAME_TEX1_SIZE, + MAP_NAME_TEX2_SIZE, "../z_kaleido_scope_PAL.c", 3776); } else if (gSaveContext.language == LANGUAGE_GER) { - DMA_REQUEST_SYNC(pauseCtx->nameSegment + MAX(MAP_NAME_TEX1_SIZE, ITEM_NAME_TEX_SIZE), - (uintptr_t)_map_name_staticSegmentRomStart + - (((void)0, gSaveContext.worldMapArea) * MAP_NAME_TEX2_SIZE) + - 36 * MAP_NAME_TEX1_SIZE + 22 * LANGUAGE_GER * MAP_NAME_TEX2_SIZE, - MAP_NAME_TEX2_SIZE, "../z_kaleido_scope_PAL.c", 3780); + DMA_REQUEST_SYNC( + pauseCtx->nameSegment + MAX(MAP_NAME_TEX1_SIZE, ITEM_NAME_TEX_SIZE), + (uintptr_t)_map_name_staticSegmentRomStart + + ((((void)0, gSaveContext.worldMapArea) + 22 * LANGUAGE_GER) * MAP_NAME_TEX2_SIZE) + + 36 * MAP_NAME_TEX1_SIZE, + MAP_NAME_TEX2_SIZE, "../z_kaleido_scope_PAL.c", 3780); } else { - DMA_REQUEST_SYNC(pauseCtx->nameSegment + MAX(MAP_NAME_TEX1_SIZE, ITEM_NAME_TEX_SIZE), - (uintptr_t)_map_name_staticSegmentRomStart + - (((void)0, gSaveContext.worldMapArea) * MAP_NAME_TEX2_SIZE) + - 36 * MAP_NAME_TEX1_SIZE + 22 * LANGUAGE_FRA * MAP_NAME_TEX2_SIZE, - MAP_NAME_TEX2_SIZE, "../z_kaleido_scope_PAL.c", 3784); + DMA_REQUEST_SYNC( + pauseCtx->nameSegment + MAX(MAP_NAME_TEX1_SIZE, ITEM_NAME_TEX_SIZE), + (uintptr_t)_map_name_staticSegmentRomStart + + ((((void)0, gSaveContext.worldMapArea) + 22 * LANGUAGE_FRA) * MAP_NAME_TEX2_SIZE) + + 36 * MAP_NAME_TEX1_SIZE, + MAP_NAME_TEX2_SIZE, "../z_kaleido_scope_PAL.c", 3784); } #endif } @@ -3868,7 +3901,7 @@ void KaleidoScope_Update(PlayState* play) { pauseCtx->worldMapPoints[WORLD_MAP_POINT_DEATH_MOUNTAIN] = WORLD_MAP_POINT_STATE_SHOW; } - if (gBitFlags[WORLD_MAP_AREA_KAKARIKO_VILLAGE] & gSaveContext.save.info.worldMapAreaData) { + if (gSaveContext.save.info.worldMapAreaData & gBitFlags[WORLD_MAP_AREA_KAKARIKO_VILLAGE]) { pauseCtx->worldMapPoints[WORLD_MAP_POINT_KAKARIKO_VILLAGE] = WORLD_MAP_POINT_STATE_SHOW; } if (CHECK_QUEST_ITEM(QUEST_SONG_LULLABY)) { @@ -3896,7 +3929,7 @@ void KaleidoScope_Update(PlayState* play) { pauseCtx->worldMapPoints[WORLD_MAP_POINT_KAKARIKO_VILLAGE] = WORLD_MAP_POINT_STATE_SHOW; } - if (gBitFlags[WORLD_MAP_AREA_LOST_WOODS] & gSaveContext.save.info.worldMapAreaData) { + if (gSaveContext.save.info.worldMapAreaData & gBitFlags[WORLD_MAP_AREA_LOST_WOODS]) { pauseCtx->worldMapPoints[WORLD_MAP_POINT_LOST_WOODS] = WORLD_MAP_POINT_STATE_SHOW; } if (GET_EVENTCHKINF(EVENTCHKINF_0F)) { @@ -4016,7 +4049,7 @@ void KaleidoScope_Update(PlayState* play) { pauseCtx->state = PAUSE_STATE_CLOSING; R_PAUSE_PAGES_Y_ORIGIN_2 = PAUSE_PAGES_Y_ORIGIN_2_LOWER; func_800F64E0(0); -#if !PLATFORM_N64 && OOT_NTSC +#if PLATFORM_GC && OOT_NTSC AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF); #endif } else if (CHECK_BTN_ALL(input->press.button, BTN_B)) { @@ -4169,7 +4202,7 @@ void KaleidoScope_Update(PlayState* play) { R_PAUSE_PAGES_Y_ORIGIN_2 = PAUSE_PAGES_Y_ORIGIN_2_LOWER; YREG(8) = pauseCtx->promptPitch; func_800F64E0(0); -#if !PLATFORM_N64 && OOT_NTSC +#if PLATFORM_GC && OOT_NTSC AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF); #endif } else { @@ -4180,7 +4213,7 @@ void KaleidoScope_Update(PlayState* play) { gSaveContext.save.info.playerData.savedSceneId = play->sceneId; Sram_WriteSave(&play->sramCtx); pauseCtx->savePromptState = PAUSE_SAVE_PROMPT_STATE_SAVED; -#if PLATFORM_N64 +#if !PLATFORM_GC sDelayTimer = 90; #else sDelayTimer = 3; @@ -4197,7 +4230,7 @@ void KaleidoScope_Update(PlayState* play) { gSaveContext.buttonStatus[3] = BTN_ENABLED; gSaveContext.hudVisibilityMode = HUD_VISIBILITY_NO_CHANGE; Interface_ChangeHudVisibilityMode(HUD_VISIBILITY_ALL); -#if !PLATFORM_N64 && OOT_NTSC +#if PLATFORM_GC && OOT_NTSC AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF); #endif } @@ -4295,10 +4328,12 @@ void KaleidoScope_Update(PlayState* play) { #if OOT_NTSC if (gSaveContext.language == LANGUAGE_JPN) { size = (uintptr_t)_icon_item_jpn_staticSegmentRomEnd - (uintptr_t)_icon_item_jpn_staticSegmentRomStart; + PRINTF("icon_item_jpn dungeon-size=%x\n", size); DMA_REQUEST_SYNC(pauseCtx->iconItemLangSegment, (uintptr_t)_icon_item_jpn_staticSegmentRomStart, size, "../z_kaleido_scope_PAL.c", UNK_LINE); } else { size = (uintptr_t)_icon_item_nes_staticSegmentRomEnd - (uintptr_t)_icon_item_nes_staticSegmentRomStart; + PRINTF("icon_item_dungeon dungeon-size=%x\n", size); DMA_REQUEST_SYNC(pauseCtx->iconItemLangSegment, (uintptr_t)_icon_item_nes_staticSegmentRomStart, size, "../z_kaleido_scope_PAL.c", UNK_LINE); } @@ -4389,9 +4424,9 @@ void KaleidoScope_Update(PlayState* play) { D_8082AB9C = 255; D_8082ABA0 = 130; D_8082ABA4 = 0; + D_8082B260 = 40; pauseCtx->state++; // PAUSE_STATE_GAME_OVER_WINDOW_DELAY - D_8082B260 = 40; } break; @@ -4443,7 +4478,7 @@ void KaleidoScope_Update(PlayState* play) { gSaveContext.save.info.playerData.savedSceneId = play->sceneId; Sram_WriteSave(&play->sramCtx); pauseCtx->state = PAUSE_STATE_GAME_OVER_SAVED; -#if PLATFORM_N64 +#if !PLATFORM_GC sDelayTimer = 90; #else sDelayTimer = 3; @@ -4595,7 +4630,7 @@ void KaleidoScope_Update(PlayState* play) { pauseCtx->equipPagePitch = 160.0f; pauseCtx->itemPagePitch = 160.0f; pauseCtx->namedItem = PAUSE_ITEM_NONE; - play->interfaceCtx.startAlpha = 0; + interfaceCtx->startAlpha = 0; } break; @@ -4626,7 +4661,7 @@ void KaleidoScope_Update(PlayState* play) { case SCENE_WATER_TEMPLE_BOSS: case SCENE_SPIRIT_TEMPLE_BOSS: case SCENE_SHADOW_TEMPLE_BOSS: - Map_InitData(play, play->interfaceCtx.mapRoomNum); + Map_InitData(play, interfaceCtx->mapRoomNum); break; } 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 31b2ec48dd..5a99234432 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.h +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.h @@ -2,14 +2,18 @@ #define Z_KALEIDO_SCOPE_H #include "ultra64.h" -#include "global.h" +#include "gfx.h" +#include "z64inventory.h" +#include "z64pause.h" + +struct PlayState; extern u8 gAmmoItems[]; extern s16 gVtxPageMapWorldQuadsWidth[]; extern s16 gVtxPageMapWorldQuadsHeight[]; -extern u8 gSlotAgeReqs[]; -extern u8 gEquipAgeReqs[EQUIP_TYPE_MAX][4]; -extern u8 gItemAgeReqs[]; +extern char gSlotAgeReqs[]; +extern char gEquipAgeReqs[EQUIP_TYPE_MAX][4]; +extern char gItemAgeReqs[]; extern u8 gAreaGsFlags[]; #define AGE_REQ_ADULT LINK_AGE_ADULT @@ -165,26 +169,26 @@ typedef enum ItemQuad { /* 41 */ ITEM_QUAD_MAX } ItemQuad; -void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx); +void KaleidoScope_DrawQuestStatus(struct PlayState* play, GraphicsContext* gfxCtx); s32 KaleidoScope_UpdateQuestStatusPoint(PauseContext* pauseCtx, s32 point); -void KaleidoScope_DrawDebugEditor(PlayState* play); -void KaleidoScope_DrawPlayerWork(PlayState* play); -void KaleidoScope_DrawEquipment(PlayState* play); +void KaleidoScope_DrawDebugEditor(struct PlayState* play); +void KaleidoScope_DrawPlayerWork(struct PlayState* play); +void KaleidoScope_DrawEquipment(struct PlayState* play); void KaleidoScope_SetCursorPos(PauseContext* pauseCtx, u16 index, Vtx* vtx); -void KaleidoScope_DrawItemSelect(PlayState* play); -void KaleidoScope_UpdateItemEquip(PlayState* play); -void KaleidoScope_DrawDungeonMap(PlayState* play, GraphicsContext* gfxCtx); -void KaleidoScope_DrawWorldMap(PlayState* play, GraphicsContext* gfxCtx); -void KaleidoScope_UpdatePrompt(PlayState* play); +void KaleidoScope_DrawItemSelect(struct PlayState* play); +void KaleidoScope_UpdateItemEquip(struct PlayState* play); +void KaleidoScope_DrawDungeonMap(struct PlayState* play, GraphicsContext* gfxCtx); +void KaleidoScope_DrawWorldMap(struct PlayState* play, GraphicsContext* gfxCtx); +void KaleidoScope_UpdatePrompt(struct PlayState* play); Gfx* KaleidoScope_QuadTextureIA4(Gfx* gfx, void* texture, s16 width, s16 height, u16 point); Gfx* KaleidoScope_QuadTextureIA8(Gfx* gfx, void* texture, s16 width, s16 height, u16 point); -void KaleidoScope_MoveCursorToSpecialPos(PlayState* play, u16 specialPos); +void KaleidoScope_MoveCursorToSpecialPos(struct PlayState* play, u16 specialPos); void KaleidoScope_DrawQuadTextureRGBA32(GraphicsContext* gfxCtx, void* texture, u16 width, u16 height, u16 point); void KaleidoScope_ProcessPlayerPreRender(); -void KaleidoScope_SetupPlayerPreRender(PlayState* play); -void KaleidoScope_DrawCursor(PlayState* play, u16 pageIndex); -void KaleidoScope_UpdateDungeonMap(PlayState* play); +void KaleidoScope_SetupPlayerPreRender(struct PlayState* play); +void KaleidoScope_DrawCursor(struct PlayState* play, u16 pageIndex); +void KaleidoScope_UpdateDungeonMap(struct PlayState* play); -void PauseMapMark_Draw(PlayState* play); +void PauseMapMark_Draw(struct PlayState* play); #endif diff --git a/src/overlays/misc/ovl_kaleido_scope/z_lmap_mark.c b/src/overlays/misc/ovl_kaleido_scope/z_lmap_mark.c index 89283bfc16..126ceca4f1 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_lmap_mark.c +++ b/src/overlays/misc/ovl_kaleido_scope/z_lmap_mark.c @@ -1,7 +1,14 @@ #if PLATFORM_N64 #include "n64dd.h" #endif +#include "regs.h" +#include "sys_matrix.h" #include "z_kaleido_scope.h" +#include "z_lib.h" +#include "z64play.h" + +#include "global.h" + #include "assets/textures/parameter_static/parameter_static.h" typedef struct PauseMapMarkInfo { diff --git a/src/overlays/misc/ovl_map_mark_data/z_map_mark_data.c b/src/overlays/misc/ovl_map_mark_data/z_map_mark_data.c index 013b8b7b31..48a18fff9d 100644 --- a/src/overlays/misc/ovl_map_mark_data/z_map_mark_data.c +++ b/src/overlays/misc/ovl_map_mark_data/z_map_mark_data.c @@ -1,4 +1,4 @@ -#include "global.h" +#include "z64map_mark.h" static MapMarkData sMapMarkDekuTree[] = { // Deku Tree minimap 0 diff --git a/src/overlays/misc/ovl_map_mark_data/z_map_mark_data_mq.c b/src/overlays/misc/ovl_map_mark_data/z_map_mark_data_mq.c index 1fa95837a7..ba7517034c 100644 --- a/src/overlays/misc/ovl_map_mark_data/z_map_mark_data_mq.c +++ b/src/overlays/misc/ovl_map_mark_data/z_map_mark_data_mq.c @@ -1,4 +1,4 @@ -#include "global.h" +#include "z64map_mark.h" static MapMarkData sMapMarkDekuTree[] = { // Deku Tree minimap 0 diff --git a/sym_info.py b/sym_info.py index 9fec30b581..301e80110f 100755 --- a/sym_info.py +++ b/sym_info.py @@ -1,42 +1,335 @@ #!/usr/bin/env python3 -import argparse -from pathlib import Path +# SPDX-FileCopyrightText: © 2025 ZeldaRET +# SPDX-License-Identifier: CC0-1.0 +import argparse +import bisect +from dataclasses import dataclass +from pathlib import Path +from typing import Optional +import struct +import sys + +import elftools.elf.elffile import mapfile_parser -def symInfoMain(): - parser = argparse.ArgumentParser(description="Display various information about a symbol or address.") - parser.add_argument("symname", help="symbol name or VROM/VRAM address to lookup") - parser.add_argument("-v", "--version", dest="oot_version", help="Which version should be processed", default="gc-eu-mq-dbg") - parser.add_argument("-e", "--expected", dest="use_expected", action="store_true", help="use the map file in expected/build/ instead of build/") +@dataclass +class MdebugSymbolicHeader: + magic: int + vstamp: int + ilineMax: int + cbLine: int + cbLineOffset: int + idnMax: int + cbDnOffset: int + ipdMax: int + cbPdOffset: int + isymMax: int + cbSymOffset: int + ioptMax: int + cbOptOffset: int + iauxMax: int + cbAuxOffset: int + issMax: int + cbSsOffset: int + issExtMax: int + cbSsExtOffset: int + ifdMax: int + cbFdOffset: int + crfd: int + cbRfdOffset: int + iextMax: int + cbExtOffset: int + + +@dataclass +class MdebugFileDescriptor: + adr: int + rss: int + issBase: int + cbSs: int + isymBase: int + csym: int + ilineBase: int + cline: int + ioptBase: int + copt: int + ipdFirst: int + cpd: int + iauxBase: int + caux: int + rfdBase: int + crfd: int + bitfield: int + cbLineOffset: int + cbLine: int + + +@dataclass +class MdebugSymbol: + iss: int + value: int + st: int + sc: int + index: int + + +@dataclass +class LocalSymbol: + name: str + address: int + + +def read_mdebug_symbolic_header(f, offset: int) -> MdebugSymbolicHeader: + f.seek(offset) + data = f.read(96) + return MdebugSymbolicHeader(*struct.unpack(">2H23I", data)) + + +def read_mdebug_file_descriptor(f, offset: int) -> MdebugFileDescriptor: + f.seek(offset) + data = f.read(72) + return MdebugFileDescriptor(*struct.unpack(">I2iI6iHh4iI2I", data)) + + +def read_mdebug_symbol(f, offset: int) -> MdebugSymbol: + f.seek(offset) + data = f.read(12) + word0, word1, word2 = struct.unpack(">III", data) + return MdebugSymbol( + word0, word1, (word2 >> 26) & 0x3F, (word2 >> 21) & 0x1F, word2 & 0xFFFFF + ) + + +def read_mdebug_string(f, offset: int) -> str: + f.seek(offset) + data = bytearray() + while True: + char = f.read(1)[0] + if char == 0: + break + data.append(char) + return data.decode("ascii") + + +def read_local_symbols_from_mdebug(elf_path: Path) -> list[LocalSymbol]: + local_symbols = [] + + with open(elf_path, "r+b") as f: + elf = elftools.elf.elffile.ELFFile(f) + + mdebug_offset = 0 + for section in elf.iter_sections(): + if section.name == ".mdebug": + mdebug_offset = section["sh_offset"] + break + + if mdebug_offset == 0: + print(f"No .mdebug section found in '{elf_path}'") + return [] + + symbolic_header = read_mdebug_symbolic_header(f, mdebug_offset) + + for fd_num in range(symbolic_header.ifdMax): + fd = read_mdebug_file_descriptor( + f, symbolic_header.cbFdOffset + fd_num * 72 + ) + + for sym_num in range(fd.isymBase, fd.isymBase + fd.csym): + sym = read_mdebug_symbol(f, symbolic_header.cbSymOffset + sym_num * 12) + if sym.st == 2: # stStatic + if not ( + sym.sc == 2 or sym.sc == 3 or sym.sc == 15 + ): # scData, scBss, scRData + continue + + sym_name = read_mdebug_string( + f, symbolic_header.cbSsOffset + fd.issBase + sym.iss + ) + + # EGCS mangles names of internal variables, and seemingly ":V" is for in-function static variables + if "." in sym_name: + continue + if ":" in sym_name: + sym_name, rest = sym_name.split(":", 1) + if not rest.startswith("V"): + continue + + local_symbols.append(LocalSymbol(sym_name, sym.value)) + elif sym.st == 14: # stStaticProc + sym_name = read_mdebug_string( + f, symbolic_header.cbSsOffset + fd.issBase + sym.iss + ) + local_symbols.append(LocalSymbol(sym_name, sym.value)) + + return local_symbols + + +def merge_local_symbols( + map_file: mapfile_parser.mapfile.MapFile, local_symbols: list[LocalSymbol] +): + local_symbols.sort(key=lambda s: s.address) + + for segment in map_file: + for file in segment: + # TODO: handle segmented addresses? + if file.vram < 0x80000000: + continue + + start_address = file.vram + end_address = file.vram + file.size + + start_index = bisect.bisect_left( + local_symbols, start_address, key=lambda s: s.address + ) + end_index = bisect.bisect_left( + local_symbols, end_address, key=lambda s: s.address + ) + if start_index == end_index: + continue + + symbols = file.copySymbolList() + for sym in local_symbols[start_index:end_index]: + if file.vrom is None: + vrom = None + else: + vrom = sym.address - start_address + file.vrom + symbols.append( + mapfile_parser.mapfile.Symbol( + sym.name, sym.address, None, vrom, None + ) + ) + + symbols.sort(key=lambda s: s.vram) + + # Recompute symbol sizes + for i in range(len(symbols)): + if i == len(symbols) - 1: + symbols[i].size = end_address - symbols[i].vram + else: + symbols[i].size = symbols[i + 1].vram - symbols[i].vram + + file.setSymbolList(symbols) + + +def find_symbols_by_name( + map_file: mapfile_parser.mapfile.MapFile, sym_name: str +) -> list[mapfile_parser.mapfile.FoundSymbolInfo]: + infos = [] + + for segment in map_file: + for file in segment: + for sym in file: + if sym.name == sym_name: + infos.append(mapfile_parser.mapfile.FoundSymbolInfo(file, sym)) + + return infos + + +def print_map_file(map_file: mapfile_parser.mapfile.MapFile): + for segment in map_file: + print(f"{segment.name}") + for file in segment: + # Ignore debug sections + if ( + file.sectionType in (".pdr", ".line", ".gnu.attributes") + or file.sectionType.startswith(".debug") + or file.sectionType.startswith(".mdebug") + ): + continue + print(f" {file.asStr()}") + for sym in file: + vram_str = f"{sym.vram:08X}" + if sym.vrom is None: + vrom_str = " " + else: + vrom_str = f"{sym.vrom:06X}" + print(f" {vram_str} {vrom_str} {sym.name}") + + +def sym_info_main(): + parser = argparse.ArgumentParser( + description="Display various information about symbol or addresses." + ) + parser.add_argument( + "symname", + nargs="?", + help="symbol name or VROM/VRAM address to lookup. If not given, all symbols will be printed.", + ) + parser.add_argument( + "-e", + "--expected", + dest="use_expected", + action="store_true", + help="use the map file and elf in expected/build/ instead of build/", + ) + parser.add_argument( + "-v", + "--version", + dest="oot_version", + help="which version should be processed (default: gc-eu-mq-dbg)", + default="gc-eu-mq-dbg", + ) args = parser.parse_args() BUILTMAP = Path("build") / args.oot_version / f"oot-{args.oot_version}.map" + BUILTELF = Path("build") / args.oot_version / f"oot-{args.oot_version}.elf" - mapPath = BUILTMAP + map_path = BUILTMAP + elf_path = BUILTELF if args.use_expected: - mapPath = "expected" / BUILTMAP + map_path = "expected" / BUILTMAP + elf_path = "expected" / BUILTELF - # Guess if the input is an VROM/VRAM or a symbol name - as_vram = False - as_vrom = False - as_name = False + if not map_path.exists(): + print(f"Could not find map_file at '{map_path}'") + sys.exit(1) + + map_file = mapfile_parser.mapfile.MapFile() + map_file.readMapFile(map_path) + + if 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" + ) + + sym_name = args.symname + if sym_name is None: + print_map_file(map_file) + sys.exit(0) + + infos: list[mapfile_parser.mapfile.FoundSymbolInfo] = [] + possible_files: list[mapfile_parser.mapfile.File] = [] try: - address = int(args.symname, 0) + address = int(sym_name, 0) if address >= 0x01000000: - as_vram = True + info, possible_files = map_file.findSymbolByVram(address) + if info is not None: + infos = [info] else: - as_vrom = True + info, possible_files = map_file.findSymbolByVrom(address) + if info is not None: + infos = [info] except ValueError: - as_name = True + infos = find_symbols_by_name(map_file, sym_name) - mapfile_parser.frontends.sym_info.doSymInfo( - mapPath, args.symname, as_vram=as_vram, as_vrom=as_vrom, as_name=as_name - ) + if not infos: + print(f"'{sym_name}' not found in map file '{map_path}'") + if len(possible_files) > 0: + print("But it may be a local symbol of either of the following files:") + for f in possible_files: + print(f" {f.asStr()})") + sys.exit(1) + + for info in infos: + print(info.getAsStrPlusOffset(sym_name)) if __name__ == "__main__": - symInfoMain() + sym_info_main() diff --git a/tools/.gitignore b/tools/.gitignore index 8d3a321faa..5345868178 100644 --- a/tools/.gitignore +++ b/tools/.gitignore @@ -1,5 +1,6 @@ # Output files *.exe +bin2c elf2rom makeromfs mkdmadata diff --git a/tools/Makefile b/tools/Makefile index b50027312d..6e311ab398 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -1,5 +1,5 @@ -CFLAGS := -Wall -Wextra -pedantic -std=c99 -g -O2 -PROGRAMS := elf2rom makeromfs mkdmadata mkldscript preprocess_pragmas reloc_prereq vtxdis +CFLAGS := -Wall -Wextra -pedantic -std=gnu99 -g -O2 +PROGRAMS := bin2c elf2rom makeromfs mkdmadata mkldscript preprocess_pragmas reloc_prereq vtxdis UNAME_S := $(shell uname -s) ifeq ($(UNAME_S),Linux) @@ -38,6 +38,8 @@ all: $(PROGRAMS) $(IDO_RECOMP_5_3_DIR) $(IDO_RECOMP_7_1_DIR) $(EGCS_DIR) $(MAKE) -C ZAPD $(MAKE) -C fado $(MAKE) -C audio + $(MAKE) -C com-plugin + $(MAKE) -C assets clean: $(RM) $(PROGRAMS) $(addsuffix .exe,$(PROGRAMS)) @@ -45,13 +47,17 @@ clean: $(MAKE) -C ZAPD clean $(MAKE) -C fado clean $(MAKE) -C audio clean + $(MAKE) -C com-plugin clean + $(MAKE) -C assets clean distclean: clean $(MAKE) -C audio distclean + $(MAKE) -C assets distclean .PHONY: all clean distclean elf2rom_SOURCES := elf2rom.c elf32.c n64chksum.c util.c +bin2c_SOURCES := bin2c.c makeromfs_SOURCES := makeromfs.c n64chksum.c util.c mkdmadata_SOURCES := mkdmadata.c spec.c util.c mkldscript_SOURCES := mkldscript.c spec.c util.c diff --git a/tools/ZAPD/.gitrepo b/tools/ZAPD/.gitrepo index bb5ac2efe1..801b2b6383 100644 --- a/tools/ZAPD/.gitrepo +++ b/tools/ZAPD/.gitrepo @@ -6,7 +6,7 @@ [subrepo] remote = https://github.com/zeldaret/ZAPD.git branch = master - commit = c04562d30aae565e98d538fd4c1e5c08699c8d48 - parent = cfe1e4db6e1a4b561ac1ed0e87f250c83b5a3c69 + commit = 35ea376daf003fdd3297a2e7355ad82e70ec1e8c + parent = b97a21c2532622a83e9153996e303c3edc2727a8 method = merge - cmdver = 0.4.9 + cmdver = 0.4.6 diff --git a/tools/ZAPD/ZAPD/ZTexture.cpp b/tools/ZAPD/ZAPD/ZTexture.cpp index 0ecda1a8ce..0d66ba7da3 100644 --- a/tools/ZAPD/ZAPD/ZTexture.cpp +++ b/tools/ZAPD/ZAPD/ZTexture.cpp @@ -131,7 +131,7 @@ void ZTexture::ParseXML(tinyxml2::XMLElement* reader) void ZTexture::ParseRawData() { - if (rawDataIndex % 8 != 0) + if ((parent->baseAddress + rawDataIndex) % 8 != 0) dWordAligned = false; switch (format) diff --git a/tools/ZAPDConfigs/gc-eu-mq-dbg/SymbolMap.txt b/tools/ZAPDConfigs/gc-eu-mq-dbg/SymbolMap.txt index 99b4bad0a6..54d92b15e1 100644 --- a/tools/ZAPDConfigs/gc-eu-mq-dbg/SymbolMap.txt +++ b/tools/ZAPDConfigs/gc-eu-mq-dbg/SymbolMap.txt @@ -1,2 +1,2 @@ -8012DB20 gMtxClear +8012DB20 gIdentityMtx 80A8E610 sShadowTex diff --git a/tools/ZAPDConfigs/gc-eu-mq/SymbolMap.txt b/tools/ZAPDConfigs/gc-eu-mq/SymbolMap.txt index 70056f6b08..7e1132fc21 100644 --- a/tools/ZAPDConfigs/gc-eu-mq/SymbolMap.txt +++ b/tools/ZAPDConfigs/gc-eu-mq/SymbolMap.txt @@ -1,2 +1,2 @@ -800FBC00 gMtxClear +800FBC00 gIdentityMtx 80A72FA0 sShadowTex diff --git a/tools/ZAPDConfigs/gc-eu/SymbolMap.txt b/tools/ZAPDConfigs/gc-eu/SymbolMap.txt index b523f5646d..99b8cf8c05 100644 --- a/tools/ZAPDConfigs/gc-eu/SymbolMap.txt +++ b/tools/ZAPDConfigs/gc-eu/SymbolMap.txt @@ -1,2 +1,2 @@ -800FBC20 gMtxClear +800FBC20 gIdentityMtx 80A73020 sShadowTex diff --git a/tools/ZAPDConfigs/gc-jp-ce/SymbolMap.txt b/tools/ZAPDConfigs/gc-jp-ce/SymbolMap.txt index 12d96f7aa2..038e0ca7b4 100644 --- a/tools/ZAPDConfigs/gc-jp-ce/SymbolMap.txt +++ b/tools/ZAPDConfigs/gc-jp-ce/SymbolMap.txt @@ -1,2 +1,2 @@ -800FE2A0 gMtxClear +800FE2A0 gIdentityMtx 80A74120 sShadowTex diff --git a/tools/ZAPDConfigs/gc-jp-mq/SymbolMap.txt b/tools/ZAPDConfigs/gc-jp-mq/SymbolMap.txt index 8dcd14d673..5f5a09bdce 100644 --- a/tools/ZAPDConfigs/gc-jp-mq/SymbolMap.txt +++ b/tools/ZAPDConfigs/gc-jp-mq/SymbolMap.txt @@ -1,2 +1,2 @@ -800FE2A0 gMtxClear +800FE2A0 gIdentityMtx 80A740D0 sShadowTex diff --git a/tools/ZAPDConfigs/gc-jp/SymbolMap.txt b/tools/ZAPDConfigs/gc-jp/SymbolMap.txt index 2062d21792..86349adc0f 100644 --- a/tools/ZAPDConfigs/gc-jp/SymbolMap.txt +++ b/tools/ZAPDConfigs/gc-jp/SymbolMap.txt @@ -1,2 +1,2 @@ -800FE2C0 gMtxClear +800FE2C0 gIdentityMtx 80A74150 sShadowTex diff --git a/tools/ZAPDConfigs/gc-us-mq/SymbolMap.txt b/tools/ZAPDConfigs/gc-us-mq/SymbolMap.txt index 3ea1df6ccf..252ade1105 100644 --- a/tools/ZAPDConfigs/gc-us-mq/SymbolMap.txt +++ b/tools/ZAPDConfigs/gc-us-mq/SymbolMap.txt @@ -1,2 +1,2 @@ -800FE280 gMtxClear +800FE280 gIdentityMtx 80A740B0 sShadowTex diff --git a/tools/ZAPDConfigs/gc-us/SymbolMap.txt b/tools/ZAPDConfigs/gc-us/SymbolMap.txt index 554f92028a..79433d6691 100644 --- a/tools/ZAPDConfigs/gc-us/SymbolMap.txt +++ b/tools/ZAPDConfigs/gc-us/SymbolMap.txt @@ -1,2 +1,2 @@ -800FE2A0 gMtxClear +800FE2A0 gIdentityMtx 80A74130 sShadowTex diff --git a/tools/ZAPDConfigs/ique-cn/SymbolMap.txt b/tools/ZAPDConfigs/ique-cn/SymbolMap.txt index 52ff547fde..37a1f9a672 100644 --- a/tools/ZAPDConfigs/ique-cn/SymbolMap.txt +++ b/tools/ZAPDConfigs/ique-cn/SymbolMap.txt @@ -1,2 +1,2 @@ -80106980 gMtxClear +80106980 gIdentityMtx 80AE0B10 sShadowTex diff --git a/tools/ZAPDConfigs/ntsc-1.0/SymbolMap.txt b/tools/ZAPDConfigs/ntsc-1.0/SymbolMap.txt index f19720a6c6..0d0ae8d436 100644 --- a/tools/ZAPDConfigs/ntsc-1.0/SymbolMap.txt +++ b/tools/ZAPDConfigs/ntsc-1.0/SymbolMap.txt @@ -1,2 +1,2 @@ -800FEDB0 gMtxClear +800FEDB0 gIdentityMtx 80AE0AE0 sShadowTex diff --git a/tools/ZAPDConfigs/ntsc-1.1/SymbolMap.txt b/tools/ZAPDConfigs/ntsc-1.1/SymbolMap.txt index 8bf78d7c3c..d494cd2bfe 100644 --- a/tools/ZAPDConfigs/ntsc-1.1/SymbolMap.txt +++ b/tools/ZAPDConfigs/ntsc-1.1/SymbolMap.txt @@ -1,2 +1,2 @@ -800FEF70 gMtxClear +800FEF70 gIdentityMtx 80AE0C80 sShadowTex diff --git a/tools/ZAPDConfigs/ntsc-1.2/SymbolMap.txt b/tools/ZAPDConfigs/ntsc-1.2/SymbolMap.txt index 2b9bac5cb0..5f7af0dc80 100644 --- a/tools/ZAPDConfigs/ntsc-1.2/SymbolMap.txt +++ b/tools/ZAPDConfigs/ntsc-1.2/SymbolMap.txt @@ -1,2 +1,2 @@ -800FF3F0 gMtxClear +800FF3F0 gIdentityMtx 80AE0FE0 sShadowTex diff --git a/tools/ZAPDConfigs/pal-1.0/SymbolMap.txt b/tools/ZAPDConfigs/pal-1.0/SymbolMap.txt index 1f09fd7edd..5ebd4ad9ab 100644 --- a/tools/ZAPDConfigs/pal-1.0/SymbolMap.txt +++ b/tools/ZAPDConfigs/pal-1.0/SymbolMap.txt @@ -1,2 +1,2 @@ -800FCD00 gMtxClear +800FCD00 gIdentityMtx 80AE19F0 sShadowTex diff --git a/tools/ZAPDConfigs/pal-1.1/SymbolMap.txt b/tools/ZAPDConfigs/pal-1.1/SymbolMap.txt index a326070e29..d41f225318 100644 --- a/tools/ZAPDConfigs/pal-1.1/SymbolMap.txt +++ b/tools/ZAPDConfigs/pal-1.1/SymbolMap.txt @@ -1,2 +1,2 @@ -800FCD40 gMtxClear +800FCD40 gIdentityMtx 80AE1B80 sShadowTex diff --git a/tools/assets/Makefile b/tools/assets/Makefile new file mode 100644 index 0000000000..d445d38794 --- /dev/null +++ b/tools/assets/Makefile @@ -0,0 +1,10 @@ +all: + $(MAKE) -C n64texconv + +clean: + $(MAKE) -C n64texconv clean + +distclean: clean + $(MAKE) -C n64texconv distclean + +.PHONY: all clean distclean diff --git a/tools/assets/n64texconv/.clang-format b/tools/assets/n64texconv/.clang-format new file mode 100644 index 0000000000..20dda610d7 --- /dev/null +++ b/tools/assets/n64texconv/.clang-format @@ -0,0 +1,29 @@ +IndentWidth: 4 +Language: Cpp +UseTab: Never +ColumnLimit: 120 +PointerAlignment: Right +BreakBeforeBraces: Linux +AlwaysBreakAfterReturnType: TopLevel +AlignArrayOfStructures: Left +SpaceAfterCStyleCast: false +SpaceBeforeParens: ControlStatementsExceptControlMacros +Cpp11BracedListStyle: false +IndentCaseLabels: true +BinPackArguments: true +BinPackParameters: true +AlignAfterOpenBracket: Align +AlignOperands: true +BreakBeforeTernaryOperators: true +BreakBeforeBinaryOperators: None +AllowShortBlocksOnASingleLine: true +AllowShortIfStatementsOnASingleLine: false +AllowShortLoopsOnASingleLine: false +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: false +AllowShortEnumsOnASingleLine: false +AlignEscapedNewlines: Left +AlignTrailingComments: true +SortIncludes: false +AlignConsecutiveMacros: Consecutive +ForEachMacros: ['LL_FOREACH'] diff --git a/tools/assets/n64texconv/.gitignore b/tools/assets/n64texconv/.gitignore new file mode 100644 index 0000000000..084dd7fab5 --- /dev/null +++ b/tools/assets/n64texconv/.gitignore @@ -0,0 +1,10 @@ +build/ + +libn64texconv.a +libn64texconv.dll +libn64texconv.so +n64texconv + +# Tests +*.png +*.bin diff --git a/tools/assets/n64texconv/LICENSE b/tools/assets/n64texconv/LICENSE new file mode 100644 index 0000000000..77c1ae07c8 --- /dev/null +++ b/tools/assets/n64texconv/LICENSE @@ -0,0 +1,627 @@ + +N64 texture converter (n64texconv). + +The library is under the MIT license (see src/LICENSE), but the app +links statically with libimagequant which is under the GPL. + +Copyright (C) 2025 ZeldaRET + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. diff --git a/tools/assets/n64texconv/Makefile b/tools/assets/n64texconv/Makefile new file mode 100644 index 0000000000..fbe0300d77 --- /dev/null +++ b/tools/assets/n64texconv/Makefile @@ -0,0 +1,77 @@ +BUILD_DIR := build + +# Targets +LIB := libn64texconv.a +SOLIB := libn64texconv.so +APP := n64texconv + +INC := -Ilib/spng -Ilib/libimagequant + +CC := gcc + +WFLAGS := -Wall -Wextra -Wshadow + +ifeq ($(shell $(CC) --version | grep clang),) + ARCHFLAGS := -march=native -mtune=native + OMPFLAGS := -fopenmp +else + ARCHFLAGS := + OMPFLAGS := + WFLAGS += -Wno-unknown-pragmas +endif + +CFLAGS := $(WFLAGS) $(ARCHFLAGS) -MD -MMD -std=gnu11 -fPIC -ffunction-sections -fdata-sections $(INC) +OPTFLAGS := -O3 +LDFLAGS := +LDLIBS := $(OMPFLAGS) -lz -lm +AR := ar +ARFLAGS := rcs + +SRC_DIRS := $(shell find src -type d -not -path src/app) +LIB_DIRS := $(shell find lib -type d) +APP_SRC_DIRS := $(shell find src/app -type d) + +C_FILES := $(foreach dir,$(SRC_DIRS) $(LIB_DIRS),$(wildcard $(dir)/*.c)) +O_FILES := $(foreach f,$(C_FILES:.c=.o),$(BUILD_DIR)/$f) +DEP_FILES := $(foreach f,$(O_FILES:.o=.d),$f) + +APP_C_FILES := $(foreach dir,$(APP_SRC_DIRS),$(wildcard $(dir)/*.c)) +APP_O_FILES := $(foreach f,$(APP_C_FILES:.c=.o),$(BUILD_DIR)/$f) +APP_DEP_FILES := $(foreach f,$(APP_O_FILES:.o=.d),$f) + +FMT_C_FILES := $(foreach dir,$(SRC_DIRS) $(APP_SRC_DIRS),$(wildcard $(dir)/*.c)) +FMT_H_FILES := $(foreach dir,$(SRC_DIRS) $(APP_SRC_DIRS),$(wildcard $(dir)/*.h)) +FMT_FILES := $(FMT_C_FILES) $(FMT_H_FILES) + +CLANG_FORMAT := clang-format-14 +FORMAT_ARGS := -i -style=file + +$(shell mkdir -p $(BUILD_DIR) $(foreach dir,$(SRC_DIRS) $(LIB_DIRS) $(APP_SRC_DIRS),$(BUILD_DIR)/$(dir))) + +$(BUILD_DIR)/lib/libimagequant/%.o: CFLAGS += $(OMPFLAGS) -Wno-sign-compare -Wno-unused-parameter -Wno-shadow + +.PHONY: all clean distclean format + +all: $(LIB) $(SOLIB) $(APP) + +clean: + $(RM) -r $(LIB) $(SOLIB) $(APP) $(BUILD_DIR) + +distclean: clean + +format: + $(CLANG_FORMAT) $(FORMAT_ARGS) $(FMT_FILES) + +$(LIB): $(O_FILES) + $(AR) $(ARFLAGS) $@ $^ + +$(SOLIB): $(O_FILES) + $(CC) -shared $^ $(LDLIBS) -o $@ + +$(APP): $(APP_O_FILES) $(LIB) + $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@ + +$(BUILD_DIR)/%.o: %.c + $(CC) $(CFLAGS) $(OPTFLAGS) -c $< -o $@ + +-include $(DEP_FILES) $(APP_DEP_FILES) diff --git a/tools/assets/n64texconv/__init__.py b/tools/assets/n64texconv/__init__.py new file mode 100644 index 0000000000..9e4ea1c510 --- /dev/null +++ b/tools/assets/n64texconv/__init__.py @@ -0,0 +1,472 @@ +# SPDX-FileCopyrightText: © 2025 ZeldaRET +# SPDX-License-Identifier: MIT + +import os, sys +from ctypes import CDLL, Structure, POINTER, string_at, byref, cast +from ctypes import c_void_p, c_char_p, c_uint8, c_uint, c_bool, c_int, c_size_t +from typing import Optional + +def ctypes_buffer_to_string(buffer) -> str: + return buffer.value.decode('utf-8') + +def ctypes_pointer_to_bytes(ptr : c_void_p, size : int) -> bytes: + return string_at(ptr, size) + +def deref(ptr): + if ptr: + return ptr.contents + return None + +ln64texconv = CDLL(os.path.join(os.path.dirname(__file__), "libn64texconv.so")) + +class RefCounter: + def __init__(self) -> None: + self.ref_counts = {} + + def add_ref(self, ptr): + if not isinstance(ptr, POINTER(N64Palette)): + ptr = cast(ptr, POINTER(N64Palette)) + if not ptr: + return + key = int.from_bytes(ptr, byteorder=sys.byteorder, signed=False) + if key not in self.ref_counts: + self.ref_counts[key] = 1 + else: + self.ref_counts[key] += 1 + + def num_refs(self, ptr): + if not isinstance(ptr, POINTER(N64Palette)): + ptr = cast(ptr, POINTER(N64Palette)) + if not ptr: + return 0 + key = int.from_bytes(ptr, byteorder=sys.byteorder, signed=False) + if key not in self.ref_counts: + return 0 + return self.ref_counts[key] + + def rm_ref(self, ptr, free_func): + if not isinstance(ptr, POINTER(N64Palette)): + ptr = cast(ptr, POINTER(N64Palette)) + if not ptr: + return + key = int.from_bytes(ptr, byteorder=sys.byteorder, signed=False) + assert key in self.ref_counts + count = self.ref_counts.pop(key) + count -= 1 + if count == 0: + free_func(ptr) + else: + self.ref_counts[key] = count + +# Simple reference counter for C allocations +_object_refcount = RefCounter() + +# +# Private +# + +# void n64texconv_free(void *p); +ln64texconv.n64texconv_free.argtypes = [c_void_p] +ln64texconv.n64texconv_free.restype = None + +# +# bin2c.h +# + +def bin2c(data : bytes | memoryview, pad_to_size : int = 0, byte_width : int = 8) -> Optional[str]: + if byte_width not in (1, 2, 4, 8): + raise ValueError("Invalid byte width, must be 1, 2, 4 or 8") + buffer = (c_uint8 * len(data)).from_buffer_copy(data) + ptr = c_char_p(None) + size = c_size_t(0) + if ln64texconv.bin2c(byref(ptr), byref(size), buffer, len(data), pad_to_size, byte_width) != 0: + return None + s = ctypes_buffer_to_string(ptr) + ln64texconv.n64texconv_free(ptr) + return s + +def bin2c_file(out_path : str, data : bytes | memoryview, pad_to_size : int = 0, byte_width : int = 8) -> bool: + if byte_width not in (1, 2, 4, 8): + raise ValueError("Invalid byte width, must be 1, 2, 4 or 8") + buffer = (c_uint8 * len(data)).from_buffer_copy(data) + return ln64texconv.bin2c_file(out_path.encode("utf-8"), buffer, len(data), pad_to_size, byte_width) == 0 + +# int bin2c(char **out, size_t *size_out, void *bin, size_t size, size_t pad_to_size, unsigned int byte_width); +ln64texconv.bin2c.argtypes = [POINTER(c_char_p), POINTER(c_size_t), c_void_p, c_size_t, c_size_t, c_uint] +ln64texconv.bin2c.restype = c_int + +# int bin2c_file(const char *out_path, void *bin, size_t size, size_t pad_to_size, unsigned int byte_width); +ln64texconv.bin2c_file.argtypes = [c_char_p, c_void_p, c_size_t, c_size_t, c_uint] +ln64texconv.bin2c_file.restype = c_int + +# +# jfif.h +# + +# struct JFIF +class JFIF(Structure): + _fields_ = [ + ("data", c_void_p), + ("data_size", c_size_t), + ] + + # JFIF_BUFFER_SIZE + BUFFER_SIZE = 320 * 240 * 2 + + @staticmethod + def fromfile(path : str, max_size : int = BUFFER_SIZE) -> Optional["JFIF"]: + if not os.path.isfile(path): + raise ValueError(f"Cannot open \"{path}\", is not a file") + return deref(ln64texconv.jfif_fromfile(path.encode("utf-8"), max_size)) + + def to_c(self, pad_to_size : int = BUFFER_SIZE) -> Optional[str]: + ptr = c_char_p(None) + size = c_size_t(0) + if ln64texconv.jfif_to_c(byref(ptr), byref(size), byref(self), pad_to_size) != 0: + return None + s = ctypes_buffer_to_string(ptr) + ln64texconv.n64texconv_free(ptr) + return s + + def to_c_file(self, out_path : str, pad_to_size : int = BUFFER_SIZE) -> bool: + return ln64texconv.jfif_to_c_file(out_path.encode("utf-8"), byref(self), pad_to_size) == 0 + + def __del__(self): + ln64texconv.jfif_free(byref(self)) + +# struct JFIF *jfif_fromfile(const char *path, size_t max_size); +ln64texconv.jfif_fromfile.argtypes = [c_char_p, c_size_t] +ln64texconv.jfif_fromfile.restype = POINTER(JFIF) + +# void jfif_free(struct JFIF *jfif); +ln64texconv.jfif_free.argtypes = [POINTER(JFIF)] +ln64texconv.jfif_free.restype = None + +# int jfif_to_c(char **out, size_t *size_out, struct JFIF *jfif, size_t pad_to_size) +ln64texconv.jfif_to_c.argtypes = [POINTER(c_char_p), POINTER(c_size_t), POINTER(JFIF), c_size_t] +ln64texconv.jfif_to_c.restype = c_int + +# int jfif_to_c_file(const char *out_path, struct JFIF *jfif, size_t pad_to_size); +ln64texconv.jfif_to_c_file.argtypes = [c_char_p, POINTER(JFIF), c_size_t] +ln64texconv.jfif_to_c_file.restype = c_int + +# +# n64texconv.h +# + +FMT_NONE = -1 +FMT_MAX = 5 +G_IM_FMT_RGBA = 0 +G_IM_FMT_YUV = 1 +G_IM_FMT_CI = 2 +G_IM_FMT_IA = 3 +G_IM_FMT_I = 4 + +SIZ_NONE = -1 +SIZ_MAX = 4 +G_IM_SIZ_4b = 0 +G_IM_SIZ_8b = 1 +G_IM_SIZ_16b = 2 +G_IM_SIZ_32b = 3 + +def fmt_name(fmt : int): + return { + G_IM_FMT_RGBA : "G_IM_FMT_RGBA", + G_IM_FMT_YUV : "G_IM_FMT_YUV", + G_IM_FMT_CI : "G_IM_FMT_CI", + G_IM_FMT_IA : "G_IM_FMT_IA", + G_IM_FMT_I : "G_IM_FMT_I", + }.get(fmt, str(fmt)) + +def siz_name(siz : int): + return { + G_IM_SIZ_4b : "G_IM_SIZ_4b", + G_IM_SIZ_8b : "G_IM_SIZ_8b", + G_IM_SIZ_16b : "G_IM_SIZ_16b", + G_IM_SIZ_32b : "G_IM_SIZ_32b", + }.get(siz, str(siz)) + +VALID_FORMAT_COMBINATIONS = ( + (G_IM_FMT_RGBA, G_IM_SIZ_16b), + (G_IM_FMT_RGBA, G_IM_SIZ_32b), + (G_IM_FMT_CI, G_IM_SIZ_4b), + (G_IM_FMT_CI, G_IM_SIZ_8b), + (G_IM_FMT_IA, G_IM_SIZ_4b), + (G_IM_FMT_IA, G_IM_SIZ_8b), + (G_IM_FMT_IA, G_IM_SIZ_16b), + (G_IM_FMT_I, G_IM_SIZ_4b), + (G_IM_FMT_I, G_IM_SIZ_8b), +) + +# struct color +class Color(Structure): + _fields_ = [ + ("r", c_uint8), + ("g", c_uint8), + ("b", c_uint8), + ("a", c_uint8), + ] + +# static inline size_t texel_size_bytes(size_t ntexels, int siz) +def texel_size_bytes(ntexels : int, siz : int): + return (ntexels // 2) if (siz == G_IM_SIZ_4b) else (ntexels * ((1 << siz) >> 1)) + +# struct n64_palette +class N64Palette(Structure): + _fields_ = [ + ("texels", POINTER(Color)), + ("fmt", c_int), + ("count", c_size_t), + ] + + @staticmethod + def new(count : int, fmt : int) -> Optional["N64Palette"]: + if fmt not in (G_IM_FMT_RGBA, G_IM_FMT_IA): + raise ValueError("Palette format must be either G_IM_FMT_RGBA or G_IM_FMT_IA") + if count > 256: + raise ValueError("The largest possible palette size is 256") + pal = ln64texconv.n64texconv_palette_new(count, fmt) + _object_refcount.add_ref(pal) + return deref(pal) + + def __del__(self): + # Free the underlying palette structure only if the refcount is 0 + _object_refcount.rm_ref(byref(self), ln64texconv.n64texconv_palette_free) + + def copy(self) -> Optional["N64Palette"]: + pal = ln64texconv.n64texconv_palette_copy(byref(self)) + _object_refcount.add_ref(pal) + return deref(pal) + + def reformat(self, fmt : int) -> Optional["N64Palette"]: + if fmt not in (G_IM_FMT_RGBA, G_IM_FMT_IA): + raise ValueError("Palette format must be either G_IM_FMT_RGBA or G_IM_FMT_IA") + pal = ln64texconv.n64texconv_palette_reformat(byref(self), fmt) + _object_refcount.add_ref(pal) + return deref(pal) + + @staticmethod + def from_png(path : str, fmt : int) -> Optional["N64Palette"]: + if fmt not in (G_IM_FMT_RGBA, G_IM_FMT_IA): + raise ValueError("Palette format must be either G_IM_FMT_RGBA or G_IM_FMT_IA") + if not os.path.isfile(path): + raise ValueError(f"Cannot open \"{path}\", is not a file") + pal = ln64texconv.n64texconv_palette_from_png(path.encode("utf-8"), fmt) + _object_refcount.add_ref(pal) + return deref(pal) + + @staticmethod + def from_bin(data : bytes | memoryview, fmt : int) -> Optional["N64Palette"]: + if fmt not in (G_IM_FMT_RGBA, G_IM_FMT_IA): + raise ValueError("Palette format must be either G_IM_FMT_RGBA or G_IM_FMT_IA") + buffer = (c_uint8 * len(data)).from_buffer_copy(data) + pal = ln64texconv.n64texconv_palette_from_bin(buffer, len(data) // 2, fmt) + _object_refcount.add_ref(pal) + return deref(pal) + + def to_png(self, outpath : str) -> bool: + return ln64texconv.n64texconv_palette_to_png(outpath.encode("utf-8"), byref(self)) == 0 + + def to_bin(self, pad_to_8b : bool) -> Optional[bytes]: + nbytes = texel_size_bytes(self.count, G_IM_SIZ_16b) + if pad_to_8b: + nbytes = (nbytes + 7) & ~7 + ptr = ln64texconv.n64texconv_palette_to_bin(byref(self), pad_to_8b) + if not ptr: + return None + data = ctypes_pointer_to_bytes(ptr, nbytes) + ln64texconv.n64texconv_free(ptr) + return data + + def to_c(self, pad_to_8b : bool, byte_width : int) -> Optional[str]: + ptr = c_char_p(None) + size = c_size_t(0) + if ln64texconv.n64texconv_palette_to_c(byref(ptr), byref(size), byref(self), pad_to_8b, byte_width) != 0: + return None + s = ctypes_buffer_to_string(ptr) + ln64texconv.n64texconv_free(ptr) + return s + + def to_c_file(self, out_path : str, pad_to_8b : bool, byte_width : int) -> bool: + return ln64texconv.n64texconv_palette_to_c_file(out_path.encode("utf-8"), byref(self), pad_to_8b, byte_width) == 0 + +# struct n64_palette *n64texconv_palette_new(size_t count, int fmt); +ln64texconv.n64texconv_palette_new.argtypes = [c_size_t, c_int] +ln64texconv.n64texconv_palette_new.restype = POINTER(N64Palette) + +# void n64texconv_palette_free(struct n64_palette *pal); +ln64texconv.n64texconv_palette_free.argtypes = [POINTER(N64Palette)] +ln64texconv.n64texconv_palette_free.restype = None + +# struct n64_palette *n64texconv_palette_copy(struct n64_palette *pal); +ln64texconv.n64texconv_palette_copy.argtypes = [POINTER(N64Palette)] +ln64texconv.n64texconv_palette_copy.restype = POINTER(N64Palette) + +# struct n64_palette *n64texconv_palette_reformat(struct n64_palette *pal, int fmt); +ln64texconv.n64texconv_palette_reformat.argtypes = [POINTER(N64Palette), c_int] +ln64texconv.n64texconv_palette_reformat.restype = POINTER(N64Palette) + +# struct n64_palette *n64texconv_palette_from_png(const char *path, int fmt); +ln64texconv.n64texconv_palette_from_png.argtypes = [c_char_p, c_int] +ln64texconv.n64texconv_palette_from_png.restype = POINTER(N64Palette) + +# struct n64_palette *n64texconv_palette_from_bin(void *data, size_t count, int fmt); +ln64texconv.n64texconv_palette_from_bin.argtypes = [c_void_p, c_size_t, c_int] +ln64texconv.n64texconv_palette_from_bin.restype = POINTER(N64Palette) + +# int n64texconv_palette_to_png(const char *outpath, struct n64_palette *pal); +ln64texconv.n64texconv_palette_to_png.argtypes = [c_char_p, POINTER(N64Palette)] +ln64texconv.n64texconv_palette_to_png.restype = c_int + +# void *n64texconv_palette_to_bin(struct n64_palette *pal, bool pad_to_8b); +ln64texconv.n64texconv_palette_to_bin.argtypes = [POINTER(N64Palette), c_bool] +ln64texconv.n64texconv_palette_to_bin.restype = c_void_p + +# int n64texconv_palette_to_c(char **out, size_t *size_out, struct n64_palette *pal, bool pad_to_8b, unsigned int byte_width); +ln64texconv.n64texconv_palette_to_c.argtypes = [POINTER(c_char_p), POINTER(c_size_t), POINTER(N64Palette), c_bool, c_uint] +ln64texconv.n64texconv_palette_to_c.restype = c_int + +# int n64texconv_palette_to_c_file(const char *out_path, struct n64_palette *pal, bool pad_to_8b, unsigned int byte_width); +ln64texconv.n64texconv_palette_to_c_file.argtypes = [c_char_p, POINTER(N64Palette), c_bool, c_uint] +ln64texconv.n64texconv_palette_to_c_file.restype = c_int + +# struct n64_image +class N64Image(Structure): + _fields_ = [ + ("width", c_size_t), + ("height", c_size_t), + ("fmt", c_int), + ("siz", c_int), + ("pal", POINTER(N64Palette)), + ("texels", POINTER(Color)), + ("color_indices", POINTER(c_uint8)), + ] + + def get_palette(self) -> Optional[N64Palette]: + return deref(self.pal) + + @staticmethod + def new(width : int, height : int, fmt : int, siz : int, pal : N64Palette = None) -> Optional["N64Image"]: + if not any((fmt, siz) == fmtsiz for fmtsiz in VALID_FORMAT_COMBINATIONS): + raise ValueError(f"Invalid fmt/siz combination ({fmt_name(fmt)}, {siz_name(siz)})") + if pal is not None: + _object_refcount.add_ref(byref(pal)) + return deref(ln64texconv.n64texconv_image_new(width, height, fmt, siz, pal)) + + def __del__(self): + ln64texconv.n64texconv_image_free(byref(self)) + # Also free the palette if the reference count drops to 0 + _object_refcount.rm_ref(self.pal, ln64texconv.n64texconv_palette_free) + + def copy(self) -> Optional["N64Image"]: + _object_refcount.add_ref(self.pal) + return deref(ln64texconv.n64texconv_image_copy(byref(self))) + + @staticmethod + def from_png(path : str, fmt : int, siz : int, pal_fmt : int = FMT_NONE) -> Optional["N64Image"]: + if not os.path.isfile(path): + raise ValueError(f"Cannot open \"{path}\", is not a file") + if not any((fmt, siz) == fmtsiz for fmtsiz in VALID_FORMAT_COMBINATIONS): + raise ValueError(f"Invalid fmt/siz combination ({fmt_name(fmt)}, {siz_name(siz)})") + if fmt == G_IM_FMT_CI and pal_fmt not in (G_IM_FMT_RGBA, G_IM_FMT_IA): + raise ValueError(f"Invalid palette format {fmt_name(pal_fmt)}, must be either G_IM_FMT_RGBA or G_IM_FMT_IA") + img = deref(ln64texconv.n64texconv_image_from_png(path.encode("utf-8"), fmt, siz, pal_fmt)) + _object_refcount.add_ref(img.pal) + return img + + @staticmethod + def from_bin(data : bytes | memoryview, width : int, height : int, fmt : int, siz : int, pal : Optional[N64Palette] = None, + preswapped : bool = False) -> Optional["N64Image"]: + if not any((fmt, siz) == fmtsiz for fmtsiz in VALID_FORMAT_COMBINATIONS): + raise ValueError(f"Invalid fmt/siz combination ({fmt_name(fmt)}, {siz_name(siz)})") + expected_size = texel_size_bytes(width * height, siz) + if len(data) < expected_size: + raise ValueError(f"Not enough data to extract the specified image. " + + f"Expected at least 0x{expected_size:X} bytes but only got 0x{len(data):X} bytes") + buffer = (c_uint8 * len(data)).from_buffer_copy(data) + if pal: + pal = byref(pal) + _object_refcount.add_ref(pal) + img = ln64texconv.n64texconv_image_from_bin(buffer, width, height, fmt, siz, pal, preswapped) + return deref(img) + + def reformat(self, fmt : int, siz : int, pal : Optional[N64Palette] = None) -> Optional["N64Image"]: + if not any((fmt, siz) == fmtsiz for fmtsiz in VALID_FORMAT_COMBINATIONS): + raise ValueError(f"Invalid fmt/siz combination ({fmt_name(fmt)}, {siz_name(siz)})") + if pal: + pal = byref(pal) + _object_refcount.add_ref(pal) + return deref(ln64texconv.n64texconv_image_reformat(byref(self), fmt, siz, pal)) + + def to_png(self, outpath : str, intensity_alpha : bool) -> bool: + return ln64texconv.n64texconv_image_to_png(outpath.encode("utf-8"), byref(self), intensity_alpha) == 0 + + def to_bin(self, pad_to_8b : bool, preswap : bool) -> Optional[bytes]: + nbytes = texel_size_bytes(self.width * self.height, self.siz) + if pad_to_8b: + nbytes = (nbytes + 7) & ~7 + ptr = ln64texconv.n64texconv_image_to_bin(byref(self), pad_to_8b, preswap) + if not ptr: + return None + data = ctypes_pointer_to_bytes(ptr, nbytes) + ln64texconv.n64texconv_free(ptr) + return data + + def to_c(self, pad_to_8b : bool, preswap : bool, byte_width : int) -> Optional[str]: + ptr = c_char_p(None) + size = c_size_t(0) + if ln64texconv.n64texconv_image_to_c(byref(ptr), byref(size), byref(self), pad_to_8b, preswap, byte_width) != 0: + return None + s = ctypes_buffer_to_string(ptr) + ln64texconv.n64texconv_free(ptr) + return s + + def to_c_file(self, out_path : str, pad_to_8b : bool, preswap : bool, byte_width : int) -> bool: + return ln64texconv.n64texconv_image_to_c_file(out_path.encode("utf-8"), byref(self), pad_to_8b, preswap, byte_width) == 0 + + def png_extension(self) -> str: + return ln64texconv.n64texconv_png_extension(byref(self)).decode("utf-8") + +# struct n64_image *n64texconv_image_new(size_t width, size_t height, int fmt, int siz, struct n64_palette *pal); +ln64texconv.n64texconv_image_new.argtypes = [c_size_t, c_size_t, c_int, c_int, POINTER(N64Palette)] +ln64texconv.n64texconv_image_new.restype = POINTER(N64Image) + +# void n64texconv_image_free(struct n64_image *img); +ln64texconv.n64texconv_image_free.argtypes = [POINTER(N64Image)] +ln64texconv.n64texconv_image_free.restype = None + +# struct n64_image *n64texconv_image_copy(struct n64_image *img); +ln64texconv.n64texconv_image_copy.argtypes = [POINTER(N64Image)] +ln64texconv.n64texconv_image_copy.restype = POINTER(N64Image) + +# struct n64_image *n64texconv_image_from_png(const char *path, int fmt, int siz, int pal_fmt); +ln64texconv.n64texconv_image_from_png.argtypes = [c_char_p, c_int, c_int, c_int] +ln64texconv.n64texconv_image_from_png.restype = POINTER(N64Image) + +# struct n64_image *n64texconv_image_from_bin(void *data, size_t width, size_t height, int fmt, int siz, struct n64_palette *pal, bool preswapped); +ln64texconv.n64texconv_image_from_bin.argtypes = [c_void_p, c_size_t, c_size_t, c_int, c_int, POINTER(N64Palette), c_bool] +ln64texconv.n64texconv_image_from_bin.restype = POINTER(N64Image) + +# struct n64_image *n64texconv_image_reformat(struct n64_image *img, int fmt, int siz, struct n64_palette *pal); +ln64texconv.n64texconv_image_reformat.argtypes = [POINTER(N64Image), c_int, c_int, POINTER(N64Palette)] +ln64texconv.n64texconv_image_reformat.restype = POINTER(N64Image) + +# int n64texconv_image_to_png(const char *outpath, struct n64_image *img, bool intensity_alpha); +ln64texconv.n64texconv_image_to_png.argtypes = [c_char_p, POINTER(N64Image), c_bool] +ln64texconv.n64texconv_image_to_png.restype = c_int + +# void *n64texconv_image_to_bin(struct n64_image *img, bool pad_to_8b, bool preswap); +ln64texconv.n64texconv_image_to_bin.argtypes = [POINTER(N64Image), c_bool, c_bool] +ln64texconv.n64texconv_image_to_bin.restype = c_void_p + +# int n64texconv_image_to_c(char **out, size_t *size_out, struct n64_image *img, bool pad_to_8b, bool preswap, unsigned int byte_width); +ln64texconv.n64texconv_image_to_c.argtypes = [POINTER(c_char_p), POINTER(c_size_t), POINTER(N64Image), c_bool, c_bool, c_uint] +ln64texconv.n64texconv_image_to_c.restype = c_int + +# int n64texconv_image_to_c_file(const char *out_path, struct n64_image *img, bool pad_to_8b, bool preswap, unsigned int byte_width); +ln64texconv.n64texconv_image_to_c_file.argtypes = [c_char_p, POINTER(N64Image), c_bool, c_bool, c_uint] +ln64texconv.n64texconv_image_to_c_file.restype = c_int + +# const char *n64texconv_png_extension(struct n64_image *img); +ln64texconv.n64texconv_png_extension.argtypes = [POINTER(N64Image)] +ln64texconv.n64texconv_png_extension.restype = c_char_p diff --git a/tools/assets/n64texconv/lib/libimagequant/COPYRIGHT b/tools/assets/n64texconv/lib/libimagequant/COPYRIGHT new file mode 100644 index 0000000000..4297b943e7 --- /dev/null +++ b/tools/assets/n64texconv/lib/libimagequant/COPYRIGHT @@ -0,0 +1,641 @@ + +libimagequant is derived from code by Jef Poskanzer and Greg Roelofs +licensed under pngquant's original license (at the end of this file), +and contains extensive changes and additions by Kornel Lesiński +licensed under GPL v3 or later. + +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +libimagequant © 2009-2018 by Kornel Lesiński. + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +© 1989, 1991 by Jef Poskanzer. +© 1997, 2000, 2002 by Greg Roelofs. + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, provided +that the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. This software is provided "as is" without express or +implied warranty. diff --git a/tools/assets/n64texconv/lib/libimagequant/blur.c b/tools/assets/n64texconv/lib/libimagequant/blur.c new file mode 100644 index 0000000000..7f0a71672c --- /dev/null +++ b/tools/assets/n64texconv/lib/libimagequant/blur.c @@ -0,0 +1,132 @@ +/* +© 2011-2015 by Kornel Lesiński. + +This file is part of libimagequant. + +libimagequant is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +libimagequant is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with libimagequant. If not, see . +*/ + +#include "libimagequant.h" +#include "pam.h" +#include "blur.h" + +/* + Blurs image horizontally (width 2*size+1) and writes it transposed to dst (called twice gives 2d blur) + */ +static void transposing_1d_blur(unsigned char *restrict src, unsigned char *restrict dst, unsigned int width, unsigned int height, const unsigned int size) +{ + assert(size > 0); + + for(unsigned int j=0; j < height; j++) { + unsigned char *restrict row = src + j*width; + + // accumulate sum for pixels outside line + unsigned int sum; + sum = row[0]*size; + for(unsigned int i=0; i < size; i++) { + sum += row[i]; + } + + // blur with left side outside line + for(unsigned int i=0; i < size; i++) { + sum -= row[0]; + sum += row[i+size]; + + dst[i*height + j] = sum / (size*2); + } + + for(unsigned int i=size; i < width-size; i++) { + sum -= row[i-size]; + sum += row[i+size]; + + dst[i*height + j] = sum / (size*2); + } + + // blur with right side outside line + for(unsigned int i=width-size; i < width; i++) { + sum -= row[i-size]; + sum += row[width-1]; + + dst[i*height + j] = sum / (size*2); + } + } +} + +/** + * Picks maximum of neighboring pixels (blur + lighten) + */ +LIQ_PRIVATE void liq_max3(unsigned char *src, unsigned char *dst, unsigned int width, unsigned int height) +{ + for(unsigned int j=0; j < height; j++) { + const unsigned char *row = src + j*width, + *prevrow = src + (j > 1 ? j-1 : 0)*width, + *nextrow = src + MIN(height-1,j+1)*width; + + unsigned char prev,curr=row[0],next=row[0]; + + for(unsigned int i=0; i < width-1; i++) { + prev=curr; + curr=next; + next=row[i+1]; + + unsigned char t1 = MAX(prev,next); + unsigned char t2 = MAX(nextrow[i],prevrow[i]); + *dst++ = MAX(curr,MAX(t1,t2)); + } + unsigned char t1 = MAX(curr,next); + unsigned char t2 = MAX(nextrow[width-1],prevrow[width-1]); + *dst++ = MAX(t1,t2); + } +} + +/** + * Picks minimum of neighboring pixels (blur + darken) + */ +LIQ_PRIVATE void liq_min3(unsigned char *src, unsigned char *dst, unsigned int width, unsigned int height) +{ + for(unsigned int j=0; j < height; j++) { + const unsigned char *row = src + j*width, + *prevrow = src + (j > 1 ? j-1 : 0)*width, + *nextrow = src + MIN(height-1,j+1)*width; + + unsigned char prev,curr=row[0],next=row[0]; + + for(unsigned int i=0; i < width-1; i++) { + prev=curr; + curr=next; + next=row[i+1]; + + unsigned char t1 = MIN(prev,next); + unsigned char t2 = MIN(nextrow[i],prevrow[i]); + *dst++ = MIN(curr,MIN(t1,t2)); + } + unsigned char t1 = MIN(curr,next); + unsigned char t2 = MIN(nextrow[width-1],prevrow[width-1]); + *dst++ = MIN(t1,t2); + } +} + +/* + Filters src image and saves it to dst, overwriting tmp in the process. + Image must be width*height pixels high. Size controls radius of box blur. + */ +LIQ_PRIVATE void liq_blur(unsigned char *src, unsigned char *tmp, unsigned char *dst, unsigned int width, unsigned int height, unsigned int size) +{ + assert(size > 0); + if (width < 2*size+1 || height < 2*size+1) { + return; + } + transposing_1d_blur(src, tmp, width, height, size); + transposing_1d_blur(tmp, dst, height, width, size); +} diff --git a/tools/assets/n64texconv/lib/libimagequant/blur.h b/tools/assets/n64texconv/lib/libimagequant/blur.h new file mode 100644 index 0000000000..1e7781920b --- /dev/null +++ b/tools/assets/n64texconv/lib/libimagequant/blur.h @@ -0,0 +1,8 @@ +#ifndef BLUR_H +#define BLUR_H + +LIQ_PRIVATE void liq_blur(unsigned char *src, unsigned char *tmp, unsigned char *dst, unsigned int width, unsigned int height, unsigned int size); +LIQ_PRIVATE void liq_max3(unsigned char *src, unsigned char *dst, unsigned int width, unsigned int height); +LIQ_PRIVATE void liq_min3(unsigned char *src, unsigned char *dst, unsigned int width, unsigned int height); + +#endif diff --git a/tools/assets/n64texconv/lib/libimagequant/kmeans.c b/tools/assets/n64texconv/lib/libimagequant/kmeans.c new file mode 100644 index 0000000000..6d1a122879 --- /dev/null +++ b/tools/assets/n64texconv/lib/libimagequant/kmeans.c @@ -0,0 +1,119 @@ +/* +** © 2011-2016 by Kornel Lesiński. +** See COPYRIGHT file for license. +*/ + +#include "libimagequant.h" +#include "pam.h" +#include "kmeans.h" +#include "nearest.h" +#include +#include + +#ifdef _OPENMP +#include +#else +#define omp_get_max_threads() 1 +#define omp_get_thread_num() 0 +#endif + +/* + * K-Means iteration: new palette color is computed from weighted average of colors that map to that palette entry. + */ +LIQ_PRIVATE void kmeans_init(const colormap *map, const unsigned int max_threads, kmeans_state average_color[]) +{ + memset(average_color, 0, sizeof(average_color[0])*(KMEANS_CACHE_LINE_GAP+map->colors)*max_threads); +} + +LIQ_PRIVATE void kmeans_update_color(const f_pixel acolor, const float value, const colormap *map, unsigned int match, const unsigned int thread, kmeans_state average_color[]) +{ + match += thread * (KMEANS_CACHE_LINE_GAP+map->colors); + average_color[match].a += acolor.a * value; + average_color[match].r += acolor.r * value; + average_color[match].g += acolor.g * value; + average_color[match].b += acolor.b * value; + average_color[match].total += value; +} + +LIQ_PRIVATE void kmeans_finalize(colormap *map, const unsigned int max_threads, const kmeans_state average_color[]) +{ + for (unsigned int i=0; i < map->colors; i++) { + double a=0, r=0, g=0, b=0, total=0; + + // Aggregate results from all threads + for(unsigned int t=0; t < max_threads; t++) { + const unsigned int offset = (KMEANS_CACHE_LINE_GAP+map->colors) * t + i; + + a += average_color[offset].a; + r += average_color[offset].r; + g += average_color[offset].g; + b += average_color[offset].b; + total += average_color[offset].total; + } + + if (!map->palette[i].fixed) { + map->palette[i].popularity = total; + if (total) { + map->palette[i].acolor = (f_pixel){ + .a = a / total, + .r = r / total, + .g = g / total, + .b = b / total, + }; + } else { + // if a color is useless, make a new one + // (it was supposed to be random, but Android NDK has problematic stdlib headers) + map->palette[i].acolor.a = map->palette[(i+1)%map->colors].acolor.a; + map->palette[i].acolor.r = map->palette[(i+2)%map->colors].acolor.r; + map->palette[i].acolor.g = map->palette[(i+3)%map->colors].acolor.g; + map->palette[i].acolor.b = map->palette[(i+4)%map->colors].acolor.b; + } + } + } +} + +LIQ_PRIVATE double kmeans_do_iteration(histogram *hist, colormap *const map, kmeans_callback callback, unsigned int max_threads) +{ + LIQ_ARRAY(kmeans_state, average_color, (KMEANS_CACHE_LINE_GAP+map->colors) * max_threads); + kmeans_init(map, max_threads, average_color); + struct nearest_map *const n = nearest_init(map); + hist_item *const achv = hist->achv; + const int hist_size = hist->size; + + double total_diff=0; +#if __GNUC__ >= 9 || __clang__ + #pragma omp parallel for if (hist_size > 2000) \ + schedule(static) default(none) shared(achv,average_color,callback,hist_size,map,n) reduction(+:total_diff) +#else + #pragma omp parallel for if (hist_size > 2000) \ + schedule(static) default(none) shared(average_color,callback) reduction(+:total_diff) +#endif + for(int j=0; j < hist_size; j++) { + float diff; + const f_pixel px = achv[j].acolor; + const unsigned int match = nearest_search(n, &px, achv[j].tmp.likely_colormap_index, &diff); + achv[j].tmp.likely_colormap_index = match; + + if (callback) { + // Check how average diff would look like if there was dithering + const f_pixel remapped = map->palette[match].acolor; + nearest_search(n, &(f_pixel){ + .a = px.a + px.a - remapped.a, + .r = px.r + px.r - remapped.r, + .g = px.g + px.g - remapped.g, + .b = px.b + px.b - remapped.b, + }, match, &diff); + + callback(&achv[j], diff); + } + + total_diff += diff * achv[j].perceptual_weight; + + kmeans_update_color(px, achv[j].adjusted_weight, map, match, omp_get_thread_num(), average_color); + } + + nearest_free(n); + kmeans_finalize(map, max_threads, average_color); + + return total_diff / hist->total_perceptual_weight; +} diff --git a/tools/assets/n64texconv/lib/libimagequant/kmeans.h b/tools/assets/n64texconv/lib/libimagequant/kmeans.h new file mode 100644 index 0000000000..78db4ccde4 --- /dev/null +++ b/tools/assets/n64texconv/lib/libimagequant/kmeans.h @@ -0,0 +1,18 @@ +#ifndef KMEANS_H +#define KMEANS_H + +// Spread memory touched by different threads at least 64B apart which I assume is the cache line size. This should avoid memory write contention. +#define KMEANS_CACHE_LINE_GAP ((64+sizeof(kmeans_state)-1)/sizeof(kmeans_state)) + +typedef struct { + double a, r, g, b, total; +} kmeans_state; + +typedef void (*kmeans_callback)(hist_item *item, float diff); + +LIQ_PRIVATE void kmeans_init(const colormap *map, const unsigned int max_threads, kmeans_state state[]); +LIQ_PRIVATE void kmeans_update_color(const f_pixel acolor, const float value, const colormap *map, unsigned int match, const unsigned int thread, kmeans_state average_color[]); +LIQ_PRIVATE void kmeans_finalize(colormap *map, const unsigned int max_threads, const kmeans_state state[]); +LIQ_PRIVATE double kmeans_do_iteration(histogram *hist, colormap *const map, kmeans_callback callback, const unsigned int max_threads); + +#endif diff --git a/tools/assets/n64texconv/lib/libimagequant/libimagequant.c b/tools/assets/n64texconv/lib/libimagequant/libimagequant.c new file mode 100644 index 0000000000..632c242771 --- /dev/null +++ b/tools/assets/n64texconv/lib/libimagequant/libimagequant.c @@ -0,0 +1,1814 @@ +/* +** © 2009-2018 by Kornel Lesiński. +** © 1989, 1991 by Jef Poskanzer. +** © 1997, 2000, 2002 by Greg Roelofs; based on an idea by Stefan Schneider. +** +** See COPYRIGHT file for license. +*/ + +#include +#include +#include +#include +#include +#include +#include + +#if !(defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199900L) && !(defined(_MSC_VER) && _MSC_VER >= 1800) +#error "This program requires C99, e.g. -std=c99 switch in GCC or it requires MSVC 18.0 or higher." +#error "Ignore torrent of syntax errors that may follow. It's only because compiler is set to use too old C version." +#endif + +#include "libimagequant.h" + +#include "pam.h" +#include "libimagequant_private.h" +#include "mediancut.h" +#include "blur.h" +#include "kmeans.h" +#include "remap.h" + +#define LIQ_HIGH_MEMORY_LIMIT (1<<26) /* avoid allocating buffers larger than 64MB */ + +// each structure has a pointer as a unique identifier that allows type checking at run time +static const char liq_attr_magic[] = "liq_attr"; +static const char liq_image_magic[] = "liq_image"; +static const char liq_result_magic[] = "liq_result"; +static const char liq_histogram_magic[] = "liq_histogram"; +static const char liq_remapping_result_magic[] = "liq_remapping_result"; +static const char liq_freed_magic[] = "free"; +#define CHECK_STRUCT_TYPE(attr, kind) liq_crash_if_invalid_handle_pointer_given((const liq_attr*)attr, kind ## _magic) +#define CHECK_USER_POINTER(ptr) liq_crash_if_invalid_pointer_given(ptr) + +struct liq_attr { + const char *magic_header; + void* (*malloc)(size_t); + void (*free)(void*); + + double target_mse, max_mse, kmeans_iteration_limit; + unsigned int max_colors, max_histogram_entries; + unsigned int min_posterization_output /* user setting */, min_posterization_input /* speed setting */; + unsigned int kmeans_iterations, feedback_loop_trials; + bool last_index_transparent, use_contrast_maps; + unsigned char use_dither_map; + unsigned char speed; + + unsigned char progress_stage1, progress_stage2, progress_stage3; + liq_progress_callback_function *progress_callback; + void *progress_callback_user_info; + + liq_log_callback_function *log_callback; + void *log_callback_user_info; + liq_log_flush_callback_function *log_flush_callback; + void *log_flush_callback_user_info; +}; + +struct liq_result { + const char *magic_header; + void* (*malloc)(size_t); + void (*free)(void*); + + liq_remapping_result *remapping; + colormap *palette; + liq_progress_callback_function *progress_callback; + void *progress_callback_user_info; + + liq_palette int_palette; + float dither_level; + double gamma, palette_error; + int min_posterization_output; + unsigned char use_dither_map; +}; + +struct liq_histogram { + const char *magic_header; + void* (*malloc)(size_t); + void (*free)(void*); + + struct acolorhash_table *acht; + double gamma; + f_pixel fixed_colors[256]; + unsigned short fixed_colors_count; + unsigned short ignorebits; + bool had_image_added; +}; + +static void contrast_maps(liq_image *image) LIQ_NONNULL; +static liq_error finalize_histogram(liq_histogram *input_hist, liq_attr *options, histogram **hist_output) LIQ_NONNULL; +static const liq_color *liq_image_get_row_rgba(liq_image *input_image, unsigned int row) LIQ_NONNULL; +static void liq_remapping_result_destroy(liq_remapping_result *result) LIQ_NONNULL; +static liq_error pngquant_quantize(histogram *hist, const liq_attr *options, const int fixed_colors_count, const f_pixel fixed_colors[], const double gamma, bool fixed_result_colors, liq_result **) LIQ_NONNULL; +static liq_error liq_histogram_quantize_internal(liq_histogram *input_hist, liq_attr *attr, bool fixed_result_colors, liq_result **result_output) LIQ_NONNULL; + +LIQ_NONNULL static void liq_verbose_printf(const liq_attr *context, const char *fmt, ...) +{ + if (context->log_callback) { + va_list va; + va_start(va, fmt); + int required_space = vsnprintf(NULL, 0, fmt, va)+1; // +\0 + va_end(va); + + LIQ_ARRAY(char, buf, required_space); + va_start(va, fmt); + vsnprintf(buf, required_space, fmt, va); + va_end(va); + + context->log_callback(context, buf, context->log_callback_user_info); + } +} + +LIQ_NONNULL inline static void verbose_print(const liq_attr *attr, const char *msg) +{ + if (attr->log_callback) { + attr->log_callback(attr, msg, attr->log_callback_user_info); + } +} + +LIQ_NONNULL static void liq_verbose_printf_flush(liq_attr *attr) +{ + if (attr->log_flush_callback) { + attr->log_flush_callback(attr, attr->log_flush_callback_user_info); + } +} + +LIQ_NONNULL static bool liq_progress(const liq_attr *attr, const float percent) +{ + return attr->progress_callback && !attr->progress_callback(percent, attr->progress_callback_user_info); +} + +LIQ_PRIVATE LIQ_NONNULL bool liq_remap_progress(const liq_remapping_result *quant, const float percent) +{ + return quant->progress_callback && !quant->progress_callback(percent, quant->progress_callback_user_info); +} + +#if USE_SSE +inline static bool is_sse_available() +{ +#if (defined(__x86_64__) || defined(__amd64) || defined(_WIN64)) + return true; +#elif _MSC_VER + int info[4]; + __cpuid(info, 1); + /* bool is implemented as a built-in type of size 1 in MSVC */ + return info[3] & (1<<26) ? true : false; +#else + int a,b,c,d; + cpuid(1, a, b, c, d); + return d & (1<<25); // edx bit 25 is set when SSE is present +#endif +} +#endif + +/* make it clear in backtrace when user-supplied handle points to invalid memory */ +NEVER_INLINE LIQ_EXPORT bool liq_crash_if_invalid_handle_pointer_given(const liq_attr *user_supplied_pointer, const char *const expected_magic_header); +LIQ_EXPORT bool liq_crash_if_invalid_handle_pointer_given(const liq_attr *user_supplied_pointer, const char *const expected_magic_header) +{ + if (!user_supplied_pointer) { + return false; + } + + if (user_supplied_pointer->magic_header == liq_freed_magic) { + fprintf(stderr, "%s used after being freed", expected_magic_header); + // this is not normal error handling, this is programmer error that should crash the program. + // program cannot safely continue if memory has been used after it's been freed. + // abort() is nasty, but security vulnerability may be worse. + abort(); + } + + return user_supplied_pointer->magic_header == expected_magic_header; +} + +NEVER_INLINE LIQ_EXPORT bool liq_crash_if_invalid_pointer_given(const void *pointer); +LIQ_EXPORT bool liq_crash_if_invalid_pointer_given(const void *pointer) +{ + if (!pointer) { + return false; + } + // Force a read from the given (potentially invalid) memory location in order to check early whether this crashes the program or not. + // It doesn't matter what value is read, the code here is just to shut the compiler up about unused read. + char test_access = *((volatile char *)pointer); + return test_access || true; +} + +LIQ_NONNULL static void liq_log_error(const liq_attr *attr, const char *msg) +{ + if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return; + liq_verbose_printf(attr, " error: %s", msg); +} + +static double quality_to_mse(long quality) +{ + if (quality == 0) { + return MAX_DIFF; + } + if (quality == 100) { + return 0; + } + + // curve fudged to be roughly similar to quality of libjpeg + // except lowest 10 for really low number of colors + const double extra_low_quality_fudge = MAX(0,0.016/(0.001+quality) - 0.001); + // LIQ_WEIGHT_MSE is a fudge factor - reminder that colors are not in 0..1 range any more + return LIQ_WEIGHT_MSE * (extra_low_quality_fudge + 2.5/pow(210.0 + quality, 1.2) * (100.1-quality)/100.0); +} + +static unsigned int mse_to_quality(double mse) +{ + for(int i=100; i > 0; i--) { + if (mse <= quality_to_mse(i) + 0.000001) { // + epsilon for floating point errors + return i; + } + } + return 0; +} + +/** internally MSE is a sum of all channels with pixels 0..1 range, + but other software gives per-RGB-channel MSE for 0..255 range */ +static double mse_to_standard_mse(double mse) { + return (mse * 65536.0/6.0) / LIQ_WEIGHT_MSE; +} + +LIQ_EXPORT LIQ_NONNULL liq_error liq_set_quality(liq_attr* attr, int minimum, int target) +{ + if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return LIQ_INVALID_POINTER; + if (target < 0 || target > 100 || target < minimum || minimum < 0) return LIQ_VALUE_OUT_OF_RANGE; + + attr->target_mse = quality_to_mse(target); + attr->max_mse = quality_to_mse(minimum); + return LIQ_OK; +} + +LIQ_EXPORT LIQ_NONNULL int liq_get_min_quality(const liq_attr *attr) +{ + if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return -1; + return mse_to_quality(attr->max_mse); +} + +LIQ_EXPORT LIQ_NONNULL int liq_get_max_quality(const liq_attr *attr) +{ + if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return -1; + return mse_to_quality(attr->target_mse); +} + + +LIQ_EXPORT LIQ_NONNULL liq_error liq_set_max_colors(liq_attr* attr, int colors) +{ + if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return LIQ_INVALID_POINTER; + if (colors < 2 || colors > 256) return LIQ_VALUE_OUT_OF_RANGE; + + attr->max_colors = colors; + return LIQ_OK; +} + +LIQ_EXPORT LIQ_NONNULL int liq_get_max_colors(const liq_attr *attr) +{ + if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return -1; + + return attr->max_colors; +} + +LIQ_EXPORT LIQ_NONNULL liq_error liq_set_min_posterization(liq_attr *attr, int bits) +{ + if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return LIQ_INVALID_POINTER; + if (bits < 0 || bits > 4) return LIQ_VALUE_OUT_OF_RANGE; + + attr->min_posterization_output = bits; + return LIQ_OK; +} + +LIQ_EXPORT LIQ_NONNULL int liq_get_min_posterization(const liq_attr *attr) +{ + if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return -1; + + return attr->min_posterization_output; +} + +LIQ_EXPORT LIQ_NONNULL liq_error liq_set_speed(liq_attr* attr, int speed) +{ + if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return LIQ_INVALID_POINTER; + if (speed < 1 || speed > 10) return LIQ_VALUE_OUT_OF_RANGE; + + unsigned int iterations = MAX(8-speed, 0); + iterations += iterations * iterations/2; + attr->kmeans_iterations = iterations; + attr->kmeans_iteration_limit = 1.0/(double)(1<<(23-speed)); + attr->feedback_loop_trials = MAX(56-9*speed, 0); + + attr->max_histogram_entries = (1<<17) + (1<<18)*(10-speed); + attr->min_posterization_input = (speed >= 8) ? 1 : 0; + attr->use_dither_map = (speed <= (omp_get_max_threads() > 1 ? 7 : 5)); // parallelized dither map might speed up floyd remapping + if (attr->use_dither_map && speed < 3) { + attr->use_dither_map = 2; // always + } + attr->use_contrast_maps = (speed <= 7) || attr->use_dither_map; + attr->speed = speed; + + attr->progress_stage1 = attr->use_contrast_maps ? 20 : 8; + if (attr->feedback_loop_trials < 2) { + attr->progress_stage1 += 30; + } + attr->progress_stage3 = 50 / (1+speed); + attr->progress_stage2 = 100 - attr->progress_stage1 - attr->progress_stage3; + return LIQ_OK; +} + +LIQ_EXPORT LIQ_NONNULL int liq_get_speed(const liq_attr *attr) +{ + if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return -1; + + return attr->speed; +} + +LIQ_EXPORT LIQ_NONNULL liq_error liq_set_output_gamma(liq_result* res, double gamma) +{ + if (!CHECK_STRUCT_TYPE(res, liq_result)) return LIQ_INVALID_POINTER; + if (gamma <= 0 || gamma >= 1.0) return LIQ_VALUE_OUT_OF_RANGE; + + if (res->remapping) { + liq_remapping_result_destroy(res->remapping); + res->remapping = NULL; + } + + res->gamma = gamma; + return LIQ_OK; +} + +LIQ_EXPORT LIQ_NONNULL liq_error liq_set_min_opacity(liq_attr* attr, int min) +{ + return LIQ_OK; +} + +LIQ_EXPORT LIQ_NONNULL int liq_get_min_opacity(const liq_attr *attr) +{ + return 0; +} + +LIQ_EXPORT LIQ_NONNULL void liq_set_last_index_transparent(liq_attr* attr, int is_last) +{ + if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return; + + attr->last_index_transparent = !!is_last; +} + +LIQ_EXPORT void liq_attr_set_progress_callback(liq_attr *attr, liq_progress_callback_function *callback, void *user_info) +{ + if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return; + + attr->progress_callback = callback; + attr->progress_callback_user_info = user_info; +} + +LIQ_EXPORT void liq_result_set_progress_callback(liq_result *result, liq_progress_callback_function *callback, void *user_info) +{ + if (!CHECK_STRUCT_TYPE(result, liq_result)) return; + + result->progress_callback = callback; + result->progress_callback_user_info = user_info; +} + +LIQ_EXPORT void liq_set_log_callback(liq_attr *attr, liq_log_callback_function *callback, void* user_info) +{ + if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return; + + liq_verbose_printf_flush(attr); + attr->log_callback = callback; + attr->log_callback_user_info = user_info; +} + +LIQ_EXPORT void liq_set_log_flush_callback(liq_attr *attr, liq_log_flush_callback_function *callback, void* user_info) +{ + if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return; + + attr->log_flush_callback = callback; + attr->log_flush_callback_user_info = user_info; +} + +LIQ_EXPORT liq_attr* liq_attr_create() +{ + return liq_attr_create_with_allocator(NULL, NULL); +} + +LIQ_EXPORT LIQ_NONNULL void liq_attr_destroy(liq_attr *attr) +{ + if (!CHECK_STRUCT_TYPE(attr, liq_attr)) { + return; + } + + liq_verbose_printf_flush(attr); + + attr->magic_header = liq_freed_magic; + attr->free(attr); +} + +LIQ_EXPORT LIQ_NONNULL liq_attr* liq_attr_copy(const liq_attr *orig) +{ + if (!CHECK_STRUCT_TYPE(orig, liq_attr)) { + return NULL; + } + + liq_attr *attr = orig->malloc(sizeof(liq_attr)); + if (!attr) return NULL; + *attr = *orig; + return attr; +} + +static void *liq_aligned_malloc(size_t size) +{ + unsigned char *ptr = malloc(size + 16); + if (!ptr) { + return NULL; + } + + uintptr_t offset = 16 - ((uintptr_t)ptr & 15); // also reserves 1 byte for ptr[-1] + ptr += offset; + assert(0 == (((uintptr_t)ptr) & 15)); + ptr[-1] = offset ^ 0x59; // store how much pointer was shifted to get the original for free() + return ptr; +} + +LIQ_NONNULL static void liq_aligned_free(void *inptr) +{ + unsigned char *ptr = inptr; + size_t offset = ptr[-1] ^ 0x59; + assert(offset > 0 && offset <= 16); + free(ptr - offset); +} + +LIQ_EXPORT liq_attr* liq_attr_create_with_allocator(void* (*custom_malloc)(size_t), void (*custom_free)(void*)) +{ +#if USE_SSE + if (!is_sse_available()) { + return NULL; + } +#endif + if (!custom_malloc && !custom_free) { + custom_malloc = liq_aligned_malloc; + custom_free = liq_aligned_free; + } else if (!custom_malloc != !custom_free) { + return NULL; // either specify both or none + } + + liq_attr *attr = custom_malloc(sizeof(liq_attr)); + if (!attr) return NULL; + *attr = (liq_attr) { + .magic_header = liq_attr_magic, + .malloc = custom_malloc, + .free = custom_free, + .max_colors = 256, + .last_index_transparent = false, // puts transparent color at last index. This is workaround for blu-ray subtitles. + .target_mse = 0, + .max_mse = MAX_DIFF, + }; + liq_set_speed(attr, 4); + return attr; +} + +LIQ_EXPORT LIQ_NONNULL liq_error liq_image_add_fixed_color(liq_image *img, liq_color color) +{ + if (!CHECK_STRUCT_TYPE(img, liq_image)) return LIQ_INVALID_POINTER; + if (img->fixed_colors_count > 255) return LIQ_UNSUPPORTED; + + float gamma_lut[256]; + to_f_set_gamma(gamma_lut, img->gamma); + img->fixed_colors[img->fixed_colors_count++] = rgba_to_f(gamma_lut, (liq_color){ + .r = color.r, + .g = color.g, + .b = color.b, + .a = color.a, + }); + return LIQ_OK; +} + +LIQ_NONNULL static liq_error liq_histogram_add_fixed_color_f(liq_histogram *hist, f_pixel color) +{ + if (hist->fixed_colors_count > 255) return LIQ_UNSUPPORTED; + + hist->fixed_colors[hist->fixed_colors_count++] = color; + return LIQ_OK; +} + +LIQ_EXPORT LIQ_NONNULL liq_error liq_histogram_add_fixed_color(liq_histogram *hist, liq_color color, double gamma) +{ + if (!CHECK_STRUCT_TYPE(hist, liq_histogram)) return LIQ_INVALID_POINTER; + + float gamma_lut[256]; + to_f_set_gamma(gamma_lut, gamma ? gamma : 0.45455); + const f_pixel px = rgba_to_f(gamma_lut, (liq_color){ + .r = color.r, + .g = color.g, + .b = color.b, + .a = color.a, + }); + return liq_histogram_add_fixed_color_f(hist, px); +} + +LIQ_NONNULL static bool liq_image_use_low_memory(liq_image *img) +{ + if (img->temp_f_row) { + img->free(img->temp_f_row); + } + img->temp_f_row = img->malloc(sizeof(img->f_pixels[0]) * LIQ_TEMP_ROW_WIDTH(img->width) * omp_get_max_threads()); + return img->temp_f_row != NULL; +} + +LIQ_NONNULL static bool liq_image_should_use_low_memory(liq_image *img, const bool low_memory_hint) +{ + return (size_t)img->width * (size_t)img->height > (low_memory_hint ? LIQ_HIGH_MEMORY_LIMIT/8 : LIQ_HIGH_MEMORY_LIMIT) / sizeof(f_pixel); // Watch out for integer overflow +} + +static liq_image *liq_image_create_internal(const liq_attr *attr, liq_color* rows[], liq_image_get_rgba_row_callback *row_callback, void *row_callback_user_info, int width, int height, double gamma) +{ + if (gamma < 0 || gamma > 1.0) { + liq_log_error(attr, "gamma must be >= 0 and <= 1 (try 1/gamma instead)"); + return NULL; + } + + if (!rows && !row_callback) { + liq_log_error(attr, "missing row data"); + return NULL; + } + + liq_image *img = attr->malloc(sizeof(liq_image)); + if (!img) return NULL; + *img = (liq_image){ + .magic_header = liq_image_magic, + .malloc = attr->malloc, + .free = attr->free, + .width = width, .height = height, + .gamma = gamma ? gamma : 0.45455, + .rows = rows, + .row_callback = row_callback, + .row_callback_user_info = row_callback_user_info, + }; + + if (!rows) { + img->temp_row = attr->malloc(sizeof(img->temp_row[0]) * LIQ_TEMP_ROW_WIDTH(width) * omp_get_max_threads()); + if (!img->temp_row) return NULL; + } + + // if image is huge or converted pixels are not likely to be reused then don't cache converted pixels + if (liq_image_should_use_low_memory(img, !img->temp_row && !attr->use_contrast_maps && !attr->use_dither_map)) { + verbose_print(attr, " conserving memory"); + if (!liq_image_use_low_memory(img)) return NULL; + } + + return img; +} + +LIQ_EXPORT LIQ_NONNULL liq_error liq_image_set_memory_ownership(liq_image *img, int ownership_flags) +{ + if (!CHECK_STRUCT_TYPE(img, liq_image)) return LIQ_INVALID_POINTER; + if (!img->rows || !ownership_flags || (ownership_flags & ~(LIQ_OWN_ROWS|LIQ_OWN_PIXELS))) { + return LIQ_VALUE_OUT_OF_RANGE; + } + + if (ownership_flags & LIQ_OWN_ROWS) { + if (img->free_rows_internal) return LIQ_VALUE_OUT_OF_RANGE; + img->free_rows = true; + } + + if (ownership_flags & LIQ_OWN_PIXELS) { + img->free_pixels = true; + if (!img->pixels) { + // for simplicity of this API there's no explicit bitmap argument, + // so the row with the lowest address is assumed to be at the start of the bitmap + img->pixels = img->rows[0]; + for(unsigned int i=1; i < img->height; i++) { + img->pixels = MIN(img->pixels, img->rows[i]); + } + } + } + + return LIQ_OK; +} + +LIQ_NONNULL static void liq_image_free_maps(liq_image *input_image); +LIQ_NONNULL static void liq_image_free_dither_map(liq_image *input_image); +LIQ_NONNULL static void liq_image_free_importance_map(liq_image *input_image); + +LIQ_EXPORT LIQ_NONNULL liq_error liq_image_set_importance_map(liq_image *img, unsigned char importance_map[], size_t buffer_size, enum liq_ownership ownership) { + if (!CHECK_STRUCT_TYPE(img, liq_image)) return LIQ_INVALID_POINTER; + if (!CHECK_USER_POINTER(importance_map)) return LIQ_INVALID_POINTER; + + const size_t required_size = (size_t)img->width * (size_t)img->height; + if (buffer_size < required_size) { + return LIQ_BUFFER_TOO_SMALL; + } + + if (ownership == LIQ_COPY_PIXELS) { + unsigned char *tmp = img->malloc(required_size); + if (!tmp) { + return LIQ_OUT_OF_MEMORY; + } + memcpy(tmp, importance_map, required_size); + importance_map = tmp; + } else if (ownership != LIQ_OWN_PIXELS) { + return LIQ_UNSUPPORTED; + } + + liq_image_free_importance_map(img); + img->importance_map = importance_map; + + return LIQ_OK; +} + +LIQ_EXPORT LIQ_NONNULL liq_error liq_image_set_background(liq_image *img, liq_image *background) +{ + if (!CHECK_STRUCT_TYPE(img, liq_image)) return LIQ_INVALID_POINTER; + if (!CHECK_STRUCT_TYPE(background, liq_image)) return LIQ_INVALID_POINTER; + + if (background->background) { + return LIQ_UNSUPPORTED; + } + if (img->width != background->width || img->height != background->height) { + return LIQ_BUFFER_TOO_SMALL; + } + + if (img->background) { + liq_image_destroy(img->background); + } + + img->background = background; + liq_image_free_dither_map(img); // Force it to be re-analyzed with the background + + return LIQ_OK; +} + +LIQ_NONNULL static bool check_image_size(const liq_attr *attr, const int width, const int height) +{ + if (!CHECK_STRUCT_TYPE(attr, liq_attr)) { + return false; + } + + if (width <= 0 || height <= 0) { + liq_log_error(attr, "width and height must be > 0"); + return false; + } + + if (width > INT_MAX/sizeof(liq_color)/height || width > INT_MAX/16/sizeof(f_pixel) || height > INT_MAX/sizeof(size_t)) { + liq_log_error(attr, "image too large"); + return false; + } + return true; +} + +LIQ_EXPORT liq_image *liq_image_create_custom(const liq_attr *attr, liq_image_get_rgba_row_callback *row_callback, void* user_info, int width, int height, double gamma) +{ + if (!check_image_size(attr, width, height)) { + return NULL; + } + return liq_image_create_internal(attr, NULL, row_callback, user_info, width, height, gamma); +} + +LIQ_EXPORT liq_image *liq_image_create_rgba_rows(const liq_attr *attr, void *const rows[], int width, int height, double gamma) +{ + if (!check_image_size(attr, width, height)) { + return NULL; + } + + for(int i=0; i < height; i++) { + if (!CHECK_USER_POINTER(rows+i) || !CHECK_USER_POINTER(rows[i])) { + liq_log_error(attr, "invalid row pointers"); + return NULL; + } + } + return liq_image_create_internal(attr, (liq_color**)rows, NULL, NULL, width, height, gamma); +} + +LIQ_EXPORT LIQ_NONNULL liq_image *liq_image_create_rgba(const liq_attr *attr, const void* bitmap, int width, int height, double gamma) +{ + if (!check_image_size(attr, width, height)) { + return NULL; + } + if (!CHECK_USER_POINTER(bitmap)) { + liq_log_error(attr, "invalid bitmap pointer"); + return NULL; + } + + liq_color *const pixels = (liq_color *const)bitmap; + liq_color **rows = attr->malloc(sizeof(rows[0])*height); + if (!rows) return NULL; + + for(int i=0; i < height; i++) { + rows[i] = pixels + width * i; + } + + liq_image *image = liq_image_create_internal(attr, rows, NULL, NULL, width, height, gamma); + if (!image) { + attr->free(rows); + return NULL; + } + image->free_rows = true; + image->free_rows_internal = true; + return image; +} + +NEVER_INLINE LIQ_EXPORT void liq_executing_user_callback(liq_image_get_rgba_row_callback *callback, liq_color *temp_row, int row, int width, void *user_info); +LIQ_EXPORT void liq_executing_user_callback(liq_image_get_rgba_row_callback *callback, liq_color *temp_row, int row, int width, void *user_info) +{ + assert(callback); + assert(temp_row); + callback(temp_row, row, width, user_info); +} + +LIQ_NONNULL inline static bool liq_image_has_rgba_pixels(const liq_image *img) +{ + if (!CHECK_STRUCT_TYPE(img, liq_image)) { + return false; + } + return img->rows || (img->temp_row && img->row_callback); +} + +LIQ_NONNULL inline static bool liq_image_can_use_rgba_rows(const liq_image *img) +{ + assert(liq_image_has_rgba_pixels(img)); + return img->rows; +} + +LIQ_NONNULL static const liq_color *liq_image_get_row_rgba(liq_image *img, unsigned int row) +{ + if (liq_image_can_use_rgba_rows(img)) { + return img->rows[row]; + } + + assert(img->temp_row); + liq_color *temp_row = img->temp_row + LIQ_TEMP_ROW_WIDTH(img->width) * omp_get_thread_num(); + if (img->rows) { + memcpy(temp_row, img->rows[row], img->width * sizeof(temp_row[0])); + } else { + liq_executing_user_callback(img->row_callback, (liq_color*)temp_row, row, img->width, img->row_callback_user_info); + } + + return temp_row; +} + +LIQ_NONNULL static void convert_row_to_f(liq_image *img, f_pixel *row_f_pixels, const unsigned int row, const float gamma_lut[]) +{ + assert(row_f_pixels); + assert(!USE_SSE || 0 == ((uintptr_t)row_f_pixels & 15)); + + const liq_color *const row_pixels = liq_image_get_row_rgba(img, row); + + for(unsigned int col=0; col < img->width; col++) { + row_f_pixels[col] = rgba_to_f(gamma_lut, row_pixels[col]); + } +} + +LIQ_PRIVATE LIQ_NONNULL bool liq_image_get_row_f_init(liq_image *img) +{ + assert(omp_get_thread_num() == 0); + if (img->f_pixels) { + return true; + } + if (!liq_image_should_use_low_memory(img, false)) { + img->f_pixels = img->malloc(sizeof(img->f_pixels[0]) * img->width * img->height); + } + if (!img->f_pixels) { + return liq_image_use_low_memory(img); + } + + if (!liq_image_has_rgba_pixels(img)) { + return false; + } + + float gamma_lut[256]; + to_f_set_gamma(gamma_lut, img->gamma); + for(unsigned int i=0; i < img->height; i++) { + convert_row_to_f(img, &img->f_pixels[i*img->width], i, gamma_lut); + } + return true; +} + +LIQ_PRIVATE LIQ_NONNULL const f_pixel *liq_image_get_row_f(liq_image *img, unsigned int row) +{ + if (!img->f_pixels) { + assert(img->temp_f_row); // init should have done that + float gamma_lut[256]; + to_f_set_gamma(gamma_lut, img->gamma); + f_pixel *row_for_thread = img->temp_f_row + LIQ_TEMP_ROW_WIDTH(img->width) * omp_get_thread_num(); + convert_row_to_f(img, row_for_thread, row, gamma_lut); + return row_for_thread; + } + return img->f_pixels + img->width * row; +} + +LIQ_EXPORT LIQ_NONNULL int liq_image_get_width(const liq_image *input_image) +{ + if (!CHECK_STRUCT_TYPE(input_image, liq_image)) return -1; + return input_image->width; +} + +LIQ_EXPORT LIQ_NONNULL int liq_image_get_height(const liq_image *input_image) +{ + if (!CHECK_STRUCT_TYPE(input_image, liq_image)) return -1; + return input_image->height; +} + +typedef void free_func(void*); + +LIQ_NONNULL static free_func *get_default_image_free_func(liq_image *img) +{ + // When default allocator is used then user-supplied pointers must be freed with free() + if (img->free != liq_aligned_free) { + return img->free; + } + return free; +} + +LIQ_NONNULL static free_func *get_default_rows_free_func(liq_image *img) +{ + // When default allocator is used then user-supplied pointers must be freed with free() + if (img->free_rows_internal || img->free != liq_aligned_free) { + return img->free; + } + return free; +} + +LIQ_NONNULL static void liq_image_free_rgba_source(liq_image *input_image) +{ + if (input_image->free_pixels && input_image->pixels) { + get_default_image_free_func(input_image)(input_image->pixels); + input_image->pixels = NULL; + } + + if (input_image->free_rows && input_image->rows) { + get_default_rows_free_func(input_image)(input_image->rows); + input_image->rows = NULL; + } +} + +LIQ_NONNULL static void liq_image_free_importance_map(liq_image *input_image) { + if (input_image->importance_map) { + input_image->free(input_image->importance_map); + input_image->importance_map = NULL; + } +} + +LIQ_NONNULL static void liq_image_free_maps(liq_image *input_image) { + liq_image_free_importance_map(input_image); + + if (input_image->edges) { + input_image->free(input_image->edges); + input_image->edges = NULL; + } + liq_image_free_dither_map(input_image); +} + +LIQ_NONNULL static void liq_image_free_dither_map(liq_image *input_image) { + if (input_image->dither_map) { + input_image->free(input_image->dither_map); + input_image->dither_map = NULL; + } +} + +LIQ_EXPORT LIQ_NONNULL void liq_image_destroy(liq_image *input_image) +{ + if (!CHECK_STRUCT_TYPE(input_image, liq_image)) return; + + liq_image_free_rgba_source(input_image); + + liq_image_free_maps(input_image); + + if (input_image->f_pixels) { + input_image->free(input_image->f_pixels); + } + + if (input_image->temp_row) { + input_image->free(input_image->temp_row); + } + + if (input_image->temp_f_row) { + input_image->free(input_image->temp_f_row); + } + + if (input_image->background) { + liq_image_destroy(input_image->background); + } + + input_image->magic_header = liq_freed_magic; + input_image->free(input_image); +} + +LIQ_EXPORT liq_histogram* liq_histogram_create(const liq_attr* attr) +{ + if (!CHECK_STRUCT_TYPE(attr, liq_attr)) { + return NULL; + } + + liq_histogram *hist = attr->malloc(sizeof(liq_histogram)); + if (!hist) return NULL; + *hist = (liq_histogram) { + .magic_header = liq_histogram_magic, + .malloc = attr->malloc, + .free = attr->free, + + .ignorebits = MAX(attr->min_posterization_output, attr->min_posterization_input), + }; + return hist; +} + +LIQ_EXPORT LIQ_NONNULL void liq_histogram_destroy(liq_histogram *hist) +{ + if (!CHECK_STRUCT_TYPE(hist, liq_histogram)) return; + hist->magic_header = liq_freed_magic; + + pam_freeacolorhash(hist->acht); + hist->free(hist); +} + +LIQ_EXPORT LIQ_NONNULL liq_result *liq_quantize_image(liq_attr *attr, liq_image *img) +{ + liq_result *res; + if (LIQ_OK != liq_image_quantize(img, attr, &res)) { + return NULL; + } + return res; +} + +LIQ_EXPORT LIQ_NONNULL liq_error liq_image_quantize(liq_image *const img, liq_attr *const attr, liq_result **result_output) +{ + if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return LIQ_INVALID_POINTER; + if (!liq_image_has_rgba_pixels(img)) { + return LIQ_UNSUPPORTED; + } + + liq_histogram *hist = liq_histogram_create(attr); + if (!hist) { + return LIQ_OUT_OF_MEMORY; + } + liq_error err = liq_histogram_add_image(hist, attr, img); + if (LIQ_OK != err) { + liq_histogram_destroy(hist); + return err; + } + + err = liq_histogram_quantize_internal(hist, attr, false, result_output); + liq_histogram_destroy(hist); + + return err; +} + +LIQ_EXPORT LIQ_NONNULL liq_error liq_histogram_quantize(liq_histogram *input_hist, liq_attr *attr, liq_result **result_output) { + return liq_histogram_quantize_internal(input_hist, attr, true, result_output); +} + +LIQ_NONNULL static liq_error liq_histogram_quantize_internal(liq_histogram *input_hist, liq_attr *attr, bool fixed_result_colors, liq_result **result_output) +{ + if (!CHECK_USER_POINTER(result_output)) return LIQ_INVALID_POINTER; + *result_output = NULL; + + if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return LIQ_INVALID_POINTER; + if (!CHECK_STRUCT_TYPE(input_hist, liq_histogram)) return LIQ_INVALID_POINTER; + + if (liq_progress(attr, 0)) return LIQ_ABORTED; + + histogram *hist; + liq_error err = finalize_histogram(input_hist, attr, &hist); + if (err != LIQ_OK) { + return err; + } + + err = pngquant_quantize(hist, attr, input_hist->fixed_colors_count, input_hist->fixed_colors, input_hist->gamma, fixed_result_colors, result_output); + pam_freeacolorhist(hist); + + return err; +} + +LIQ_EXPORT LIQ_NONNULL liq_error liq_set_dithering_level(liq_result *res, float dither_level) +{ + if (!CHECK_STRUCT_TYPE(res, liq_result)) return LIQ_INVALID_POINTER; + + if (res->remapping) { + liq_remapping_result_destroy(res->remapping); + res->remapping = NULL; + } + + if (dither_level < 0 || dither_level > 1.0f) return LIQ_VALUE_OUT_OF_RANGE; + res->dither_level = dither_level; + return LIQ_OK; +} + +LIQ_NONNULL static liq_remapping_result *liq_remapping_result_create(liq_result *result) +{ + if (!CHECK_STRUCT_TYPE(result, liq_result)) { + return NULL; + } + + liq_remapping_result *res = result->malloc(sizeof(liq_remapping_result)); + if (!res) return NULL; + *res = (liq_remapping_result) { + .magic_header = liq_remapping_result_magic, + .malloc = result->malloc, + .free = result->free, + .dither_level = result->dither_level, + .use_dither_map = result->use_dither_map, + .palette_error = result->palette_error, + .gamma = result->gamma, + .palette = pam_duplicate_colormap(result->palette), + .progress_callback = result->progress_callback, + .progress_callback_user_info = result->progress_callback_user_info, + .progress_stage1 = result->use_dither_map ? 20 : 0, + }; + return res; +} + +LIQ_EXPORT LIQ_NONNULL double liq_get_output_gamma(const liq_result *result) +{ + if (!CHECK_STRUCT_TYPE(result, liq_result)) return -1; + + return result->gamma; +} + +LIQ_NONNULL static void liq_remapping_result_destroy(liq_remapping_result *result) +{ + if (!CHECK_STRUCT_TYPE(result, liq_remapping_result)) return; + + if (result->palette) pam_freecolormap(result->palette); + if (result->pixels) result->free(result->pixels); + + result->magic_header = liq_freed_magic; + result->free(result); +} + +LIQ_EXPORT LIQ_NONNULL void liq_result_destroy(liq_result *res) +{ + if (!CHECK_STRUCT_TYPE(res, liq_result)) return; + + memset(&res->int_palette, 0, sizeof(liq_palette)); + + if (res->remapping) { + memset(&res->remapping->int_palette, 0, sizeof(liq_palette)); + liq_remapping_result_destroy(res->remapping); + } + + pam_freecolormap(res->palette); + + res->magic_header = liq_freed_magic; + res->free(res); +} + + +LIQ_EXPORT LIQ_NONNULL double liq_get_quantization_error(const liq_result *result) { + if (!CHECK_STRUCT_TYPE(result, liq_result)) return -1; + + if (result->palette_error >= 0) { + return mse_to_standard_mse(result->palette_error); + } + + return -1; +} + +LIQ_EXPORT LIQ_NONNULL double liq_get_remapping_error(const liq_result *result) { + if (!CHECK_STRUCT_TYPE(result, liq_result)) return -1; + + if (result->remapping && result->remapping->palette_error >= 0) { + return mse_to_standard_mse(result->remapping->palette_error); + } + + return -1; +} + +LIQ_EXPORT LIQ_NONNULL int liq_get_quantization_quality(const liq_result *result) { + if (!CHECK_STRUCT_TYPE(result, liq_result)) return -1; + + if (result->palette_error >= 0) { + return mse_to_quality(result->palette_error); + } + + return -1; +} + +LIQ_EXPORT LIQ_NONNULL int liq_get_remapping_quality(const liq_result *result) { + if (!CHECK_STRUCT_TYPE(result, liq_result)) return -1; + + if (result->remapping && result->remapping->palette_error >= 0) { + return mse_to_quality(result->remapping->palette_error); + } + + return -1; +} + +LIQ_NONNULL static int compare_popularity(const void *ch1, const void *ch2) +{ + const float v1 = ((const colormap_item*)ch1)->popularity; + const float v2 = ((const colormap_item*)ch2)->popularity; + return v1 > v2 ? -1 : 1; +} + +LIQ_NONNULL static void sort_palette_qsort(colormap *map, int start, int nelem) +{ + if (!nelem) return; + qsort(map->palette + start, nelem, sizeof(map->palette[0]), compare_popularity); +} + +#define SWAP_PALETTE(map, a,b) { \ + const colormap_item tmp = (map)->palette[(a)]; \ + (map)->palette[(a)] = (map)->palette[(b)]; \ + (map)->palette[(b)] = tmp; } + +LIQ_NONNULL static void sort_palette(colormap *map, const liq_attr *options) +{ + /* + ** Step 3.5 [GRR]: remap the palette colors so that all entries with + ** the maximal alpha value (i.e., fully opaque) are at the end and can + ** therefore be omitted from the tRNS chunk. + */ + if (options->last_index_transparent) { + for(unsigned int i=0; i < map->colors; i++) { + if (map->palette[i].acolor.a < MIN_OPAQUE_A) { + const unsigned int old = i, transparent_dest = map->colors-1; + + SWAP_PALETTE(map, transparent_dest, old); + + /* colors sorted by popularity make pngs slightly more compressible */ + sort_palette_qsort(map, 0, map->colors-1); + return; + } + } + } + + unsigned int non_fixed_colors = 0; + for(unsigned int i = 0; i < map->colors; i++) { + if (map->palette[i].fixed) { + break; + } + non_fixed_colors++; + } + + /* move transparent colors to the beginning to shrink trns chunk */ + unsigned int num_transparent = 0; + for(unsigned int i = 0; i < non_fixed_colors; i++) { + if (map->palette[i].acolor.a < 255.f/256.f * LIQ_WEIGHT_A) { + // current transparent color is swapped with earlier opaque one + if (i != num_transparent) { + SWAP_PALETTE(map, num_transparent, i); + i--; + } + num_transparent++; + } + } + + liq_verbose_printf(options, " eliminated opaque tRNS-chunk entries...%d entr%s transparent", num_transparent, (num_transparent == 1)? "y" : "ies"); + + /* colors sorted by popularity make pngs slightly more compressible + * opaque and transparent are sorted separately + */ + sort_palette_qsort(map, 0, num_transparent); + sort_palette_qsort(map, num_transparent, non_fixed_colors - num_transparent); + + if (non_fixed_colors > 9 && map->colors > 16) { + SWAP_PALETTE(map, 7, 1); // slightly improves compression + SWAP_PALETTE(map, 8, 2); + SWAP_PALETTE(map, 9, 3); + } +} + +inline static unsigned int posterize_channel(unsigned int color, unsigned int bits) +{ + return (color & ~((1<> (8-bits)); +} + +LIQ_NONNULL static void set_rounded_palette(liq_palette *const dest, colormap *const map, const double gamma, unsigned int posterize) +{ + float gamma_lut[256]; + to_f_set_gamma(gamma_lut, gamma); + + dest->count = map->colors; + for(unsigned int x = 0; x < map->colors; ++x) { + liq_color px = f_to_rgb(gamma, map->palette[x].acolor); + + px.r = posterize_channel(px.r, posterize); + px.g = posterize_channel(px.g, posterize); + px.b = posterize_channel(px.b, posterize); + px.a = posterize_channel(px.a, posterize); + + map->palette[x].acolor = rgba_to_f(gamma_lut, px); /* saves rounding error introduced by to_rgb, which makes remapping & dithering more accurate */ + + if (!px.a && !map->palette[x].fixed) { + px.r = 71; px.g = 112; px.b = 76; + } + + dest->entries[x] = (liq_color){.r=px.r,.g=px.g,.b=px.b,.a=px.a}; + } +} + +LIQ_EXPORT LIQ_NONNULL const liq_palette *liq_get_palette(liq_result *result) +{ + if (!CHECK_STRUCT_TYPE(result, liq_result)) return NULL; + + if (result->remapping && result->remapping->int_palette.count) { + return &result->remapping->int_palette; + } + + if (!result->int_palette.count) { + set_rounded_palette(&result->int_palette, result->palette, result->gamma, result->min_posterization_output); + } + return &result->int_palette; +} + +LIQ_EXPORT LIQ_NONNULL liq_error liq_histogram_add_colors(liq_histogram *input_hist, const liq_attr *options, const liq_histogram_entry entries[], int num_entries, double gamma) +{ + if (!CHECK_STRUCT_TYPE(options, liq_attr)) return LIQ_INVALID_POINTER; + if (!CHECK_STRUCT_TYPE(input_hist, liq_histogram)) return LIQ_INVALID_POINTER; + if (!CHECK_USER_POINTER(entries)) return LIQ_INVALID_POINTER; + if (gamma < 0 || gamma >= 1.0) return LIQ_VALUE_OUT_OF_RANGE; + if (num_entries <= 0 || num_entries > 1<<30) return LIQ_VALUE_OUT_OF_RANGE; + + if (input_hist->ignorebits > 0 && input_hist->had_image_added) { + return LIQ_UNSUPPORTED; + } + input_hist->ignorebits = 0; + + input_hist->had_image_added = true; + input_hist->gamma = gamma ? gamma : 0.45455; + + if (!input_hist->acht) { + input_hist->acht = pam_allocacolorhash(~0, num_entries*num_entries, 0, options->malloc, options->free); + if (!input_hist->acht) { + return LIQ_OUT_OF_MEMORY; + } + } + // Fake image size. It's only for hash size estimates. + if (!input_hist->acht->cols) { + input_hist->acht->cols = num_entries; + } + input_hist->acht->rows += num_entries; + + const unsigned int hash_size = input_hist->acht->hash_size; + for(int i=0; i < num_entries; i++) { + const liq_color rgba = { + .r = entries[i].color.r, + .g = entries[i].color.g, + .b = entries[i].color.b, + .a = entries[i].color.a, + }; + union rgba_as_int px = {rgba}; + unsigned int hash; + if (px.rgba.a) { + hash = px.l % hash_size; + } else { + hash=0; px.l=0; + } + if (!pam_add_to_hash(input_hist->acht, hash, entries[i].count, px, i, num_entries)) { + return LIQ_OUT_OF_MEMORY; + } + } + + return LIQ_OK; +} + +LIQ_EXPORT LIQ_NONNULL liq_error liq_histogram_add_image(liq_histogram *input_hist, const liq_attr *options, liq_image *input_image) +{ + if (!CHECK_STRUCT_TYPE(options, liq_attr)) return LIQ_INVALID_POINTER; + if (!CHECK_STRUCT_TYPE(input_hist, liq_histogram)) return LIQ_INVALID_POINTER; + if (!CHECK_STRUCT_TYPE(input_image, liq_image)) return LIQ_INVALID_POINTER; + + const unsigned int cols = input_image->width, rows = input_image->height; + + if (!input_image->importance_map && options->use_contrast_maps) { + contrast_maps(input_image); + } + + input_hist->gamma = input_image->gamma; + + for(int i = 0; i < input_image->fixed_colors_count; i++) { + liq_error res = liq_histogram_add_fixed_color_f(input_hist, input_image->fixed_colors[i]); + if (res != LIQ_OK) { + return res; + } + } + + /* + ** Step 2: attempt to make a histogram of the colors, unclustered. + ** If at first we don't succeed, increase ignorebits to increase color + ** coherence and try again. + */ + + if (liq_progress(options, options->progress_stage1 * 0.4f)) { + return LIQ_ABORTED; + } + + const bool all_rows_at_once = liq_image_can_use_rgba_rows(input_image); + + // Usual solution is to start from scratch when limit is exceeded, but that's not possible if it's not + // the first image added + const unsigned int max_histogram_entries = input_hist->had_image_added ? ~0 : options->max_histogram_entries; + do { + if (!input_hist->acht) { + input_hist->acht = pam_allocacolorhash(max_histogram_entries, rows*cols, input_hist->ignorebits, options->malloc, options->free); + } + if (!input_hist->acht) return LIQ_OUT_OF_MEMORY; + + // histogram uses noise contrast map for importance. Color accuracy in noisy areas is not very important. + // noise map does not include edges to avoid ruining anti-aliasing + for(unsigned int row=0; row < rows; row++) { + bool added_ok; + if (all_rows_at_once) { + added_ok = pam_computeacolorhash(input_hist->acht, (const liq_color *const *)input_image->rows, cols, rows, input_image->importance_map); + if (added_ok) break; + } else { + const liq_color* rows_p[1] = { liq_image_get_row_rgba(input_image, row) }; + added_ok = pam_computeacolorhash(input_hist->acht, rows_p, cols, 1, input_image->importance_map ? &input_image->importance_map[row * cols] : NULL); + } + if (!added_ok) { + input_hist->ignorebits++; + liq_verbose_printf(options, " too many colors! Scaling colors to improve clustering... %d", input_hist->ignorebits); + pam_freeacolorhash(input_hist->acht); + input_hist->acht = NULL; + if (liq_progress(options, options->progress_stage1 * 0.6f)) return LIQ_ABORTED; + break; + } + } + } while(!input_hist->acht); + + input_hist->had_image_added = true; + + liq_image_free_importance_map(input_image); + + if (input_image->free_pixels && input_image->f_pixels) { + liq_image_free_rgba_source(input_image); // bow can free the RGBA source if copy has been made in f_pixels + } + + return LIQ_OK; +} + +LIQ_NONNULL static liq_error finalize_histogram(liq_histogram *input_hist, liq_attr *options, histogram **hist_output) +{ + if (liq_progress(options, options->progress_stage1 * 0.9f)) { + return LIQ_ABORTED; + } + + if (!input_hist->acht) { + return LIQ_BITMAP_NOT_AVAILABLE; + } + + histogram *hist = pam_acolorhashtoacolorhist(input_hist->acht, input_hist->gamma, options->malloc, options->free); + pam_freeacolorhash(input_hist->acht); + input_hist->acht = NULL; + + if (!hist) { + return LIQ_OUT_OF_MEMORY; + } + liq_verbose_printf(options, " made histogram...%d colors found", hist->size); + remove_fixed_colors_from_histogram(hist, input_hist->fixed_colors_count, input_hist->fixed_colors, options->target_mse); + + *hist_output = hist; + return LIQ_OK; +} + +/** + Builds two maps: + importance_map - approximation of areas with high-frequency noise, except straight edges. 1=flat, 0=noisy. + edges - noise map including all edges + */ +LIQ_NONNULL static void contrast_maps(liq_image *image) +{ + const unsigned int cols = image->width, rows = image->height; + if (cols < 4 || rows < 4 || (3*cols*rows) > LIQ_HIGH_MEMORY_LIMIT) { + return; + } + + unsigned char *restrict noise = image->importance_map ? image->importance_map : image->malloc(cols*rows); + image->importance_map = NULL; + unsigned char *restrict edges = image->edges ? image->edges : image->malloc(cols*rows); + image->edges = NULL; + + unsigned char *restrict tmp = image->malloc(cols*rows); + + if (!noise || !edges || !tmp || !liq_image_get_row_f_init(image)) { + image->free(noise); + image->free(edges); + image->free(tmp); + return; + } + + const f_pixel *curr_row, *prev_row, *next_row; + curr_row = prev_row = next_row = liq_image_get_row_f(image, 0); + + for (unsigned int j=0; j < rows; j++) { + prev_row = curr_row; + curr_row = next_row; + next_row = liq_image_get_row_f(image, MIN(rows-1,j+1)); + + f_pixel prev, curr = curr_row[0], next=curr; + for (unsigned int i=0; i < cols; i++) { + prev=curr; + curr=next; + next = curr_row[MIN(cols-1,i+1)]; + + // contrast is difference between pixels neighbouring horizontally and vertically + const float a = fabsf(prev.a+next.a - curr.a*2.f), + r = fabsf(prev.r+next.r - curr.r*2.f), + g = fabsf(prev.g+next.g - curr.g*2.f), + b = fabsf(prev.b+next.b - curr.b*2.f); + + const f_pixel prevl = prev_row[i]; + const f_pixel nextl = next_row[i]; + + const float a1 = fabsf(prevl.a+nextl.a - curr.a*2.f), + r1 = fabsf(prevl.r+nextl.r - curr.r*2.f), + g1 = fabsf(prevl.g+nextl.g - curr.g*2.f), + b1 = fabsf(prevl.b+nextl.b - curr.b*2.f); + + const float horiz = MAX(MAX(a,r),MAX(g,b)); + const float vert = MAX(MAX(a1,r1),MAX(g1,b1)); + const float edge = MAX(horiz,vert); + float z = edge - fabsf(horiz-vert)*.5f; + z = 1.f - MAX(z,MIN(horiz,vert)); + z *= z; // noise is amplified + z *= z; + // 85 is about 1/3rd of weight (not 0, because noisy pixels still need to be included, just not as precisely). + const unsigned int z_int = 80 + (unsigned int)(z * 176.f); + noise[j*cols+i] = MIN(z_int, 255); + const int e_int = 255 - (int)(edge * 256.f); + edges[j*cols+i] = e_int > 0 ? MIN(e_int, 255) : 0; + } + } + + // noise areas are shrunk and then expanded to remove thin edges from the map + liq_max3(noise, tmp, cols, rows); + liq_max3(tmp, noise, cols, rows); + + liq_blur(noise, tmp, noise, cols, rows, 3); + + liq_max3(noise, tmp, cols, rows); + + liq_min3(tmp, noise, cols, rows); + liq_min3(noise, tmp, cols, rows); + liq_min3(tmp, noise, cols, rows); + + liq_min3(edges, tmp, cols, rows); + liq_max3(tmp, edges, cols, rows); + for(unsigned int i=0; i < cols*rows; i++) edges[i] = MIN(noise[i], edges[i]); + + image->free(tmp); + + image->importance_map = noise; + image->edges = edges; +} + +/** + * Builds map of neighbor pixels mapped to the same palette entry + * + * For efficiency/simplicity it mainly looks for same consecutive pixels horizontally + * and peeks 1 pixel above/below. Full 2d algorithm doesn't improve it significantly. + * Correct flood fill doesn't have visually good properties. + */ +LIQ_NONNULL static void update_dither_map(liq_image *input_image, unsigned char *const *const row_pointers, colormap *map) +{ + const unsigned int width = input_image->width; + const unsigned int height = input_image->height; + unsigned char *const edges = input_image->edges; + + for(unsigned int row=0; row < height; row++) { + unsigned char lastpixel = row_pointers[row][0]; + unsigned int lastcol=0; + + for(unsigned int col=1; col < width; col++) { + const unsigned char px = row_pointers[row][col]; + if (input_image->background && map->palette[px].acolor.a < MIN_OPAQUE_A) { + // Transparency may or may not create an edge. When there's an explicit background set, assume no edge. + continue; + } + + if (px != lastpixel || col == width-1) { + int neighbor_count = 10 * (col-lastcol); + + unsigned int i=lastcol; + while(i < col) { + if (row > 0) { + unsigned char pixelabove = row_pointers[row-1][i]; + if (pixelabove == lastpixel) neighbor_count += 15; + } + if (row < height-1) { + unsigned char pixelbelow = row_pointers[row+1][i]; + if (pixelbelow == lastpixel) neighbor_count += 15; + } + i++; + } + + while(lastcol <= col) { + int e = edges[row*width + lastcol]; + edges[row*width + lastcol++] = (e+128) * (255.f/(255+128)) * (1.f - 20.f / (20 + neighbor_count)); + } + lastpixel = px; + } + } + } + input_image->dither_map = input_image->edges; + input_image->edges = NULL; +} + +/** + * Palette can be NULL, in which case it creates a new palette from scratch. + */ +static colormap *add_fixed_colors_to_palette(colormap *palette, const int max_colors, const f_pixel fixed_colors[], const int fixed_colors_count, void* (*malloc)(size_t), void (*free)(void*)) +{ + if (!fixed_colors_count) return palette; + + colormap *newpal = pam_colormap(MIN(max_colors, (palette ? palette->colors : 0) + fixed_colors_count), malloc, free); + unsigned int i=0; + if (palette && fixed_colors_count < max_colors) { + unsigned int palette_max = MIN(palette->colors, max_colors - fixed_colors_count); + for(; i < palette_max; i++) { + newpal->palette[i] = palette->palette[i]; + } + } + for(int j=0; j < MIN(max_colors, fixed_colors_count); j++) { + newpal->palette[i++] = (colormap_item){ + .acolor = fixed_colors[j], + .fixed = true, + }; + } + if (palette) pam_freecolormap(palette); + return newpal; +} + +LIQ_NONNULL static void adjust_histogram_callback(hist_item *item, float diff) +{ + item->adjusted_weight = (item->perceptual_weight + 2.f * item->adjusted_weight) * (0.5f + diff); +} + +/** + Repeats mediancut with different histogram weights to find palette with minimum error. + + feedback_loop_trials controls how long the search will take. < 0 skips the iteration. + */ +static colormap *find_best_palette(histogram *hist, const liq_attr *options, const double max_mse, const f_pixel fixed_colors[], const unsigned int fixed_colors_count, double *palette_error_p) +{ + unsigned int max_colors = options->max_colors; + + // if output is posterized it doesn't make sense to aim for perfrect colors, so increase target_mse + // at this point actual gamma is not set, so very conservative posterization estimate is used + const double target_mse = MIN(max_mse, MAX(options->target_mse, pow((1<min_posterization_output)/1024.0, 2))); + int feedback_loop_trials = options->feedback_loop_trials; + if (hist->size > 5000) {feedback_loop_trials = (feedback_loop_trials*3 + 3)/4;} + if (hist->size > 25000) {feedback_loop_trials = (feedback_loop_trials*3 + 3)/4;} + if (hist->size > 50000) {feedback_loop_trials = (feedback_loop_trials*3 + 3)/4;} + if (hist->size > 100000) {feedback_loop_trials = (feedback_loop_trials*3 + 3)/4;} + colormap *acolormap = NULL; + double least_error = MAX_DIFF; + double target_mse_overshoot = feedback_loop_trials>0 ? 1.05 : 1.0; + const float total_trials = (float)(feedback_loop_trials>0?feedback_loop_trials:1); + int fails_in_a_row=0; + + do { + colormap *newmap; + if (hist->size && fixed_colors_count < max_colors) { + newmap = mediancut(hist, max_colors-fixed_colors_count, target_mse * target_mse_overshoot, MAX(MAX(45.0/65536.0, target_mse), least_error)*1.2, + options->malloc, options->free); + } else { + feedback_loop_trials = 0; + newmap = NULL; + } + newmap = add_fixed_colors_to_palette(newmap, max_colors, fixed_colors, fixed_colors_count, options->malloc, options->free); + if (!newmap) { + return NULL; + } + + if (feedback_loop_trials <= 0) { + return newmap; + } + + // after palette has been created, total error (MSE) is calculated to keep the best palette + // at the same time K-Means iteration is done to improve the palette + // and histogram weights are adjusted based on remapping error to give more weight to poorly matched colors + + const bool first_run_of_target_mse = !acolormap && target_mse > 0; + double total_error = kmeans_do_iteration(hist, newmap, first_run_of_target_mse ? NULL : adjust_histogram_callback, omp_get_max_threads()); + + // goal is to increase quality or to reduce number of colors used if quality is good enough + if (!acolormap || total_error < least_error || (total_error <= target_mse && newmap->colors < max_colors)) { + if (acolormap) pam_freecolormap(acolormap); + acolormap = newmap; + + if (total_error < target_mse && total_error > 0) { + // K-Means iteration improves quality above what mediancut aims for + // this compensates for it, making mediancut aim for worse + target_mse_overshoot = MIN(target_mse_overshoot*1.25, target_mse/total_error); + } + + least_error = total_error; + + // if number of colors could be reduced, try to keep it that way + // but allow extra color as a bit of wiggle room in case quality can be improved too + max_colors = MIN(newmap->colors+1, max_colors); + + feedback_loop_trials -= 1; // asymptotic improvement could make it go on forever + fails_in_a_row = 0; + } else { + fails_in_a_row++; + target_mse_overshoot = 1.0; + + // if error is really bad, it's unlikely to improve, so end sooner + feedback_loop_trials -= 5 + fails_in_a_row; + pam_freecolormap(newmap); + } + + float fraction_done = 1.f-MAX(0.f, feedback_loop_trials/total_trials); + if (liq_progress(options, options->progress_stage1 + fraction_done * options->progress_stage2)) break; + liq_verbose_printf(options, " selecting colors...%d%%", (int)(100.f * fraction_done)); + } + while(feedback_loop_trials > 0); + + *palette_error_p = least_error; + return acolormap; +} + +LIQ_NONNULL static liq_error pngquant_quantize(histogram *hist, const liq_attr *options, const int fixed_colors_count, const f_pixel fixed_colors[], const double gamma, bool fixed_result_colors, liq_result **result_output) +{ + colormap *acolormap; + double palette_error = -1; + + assert((verbose_print(options, "SLOW debug checks enabled. Recompile with NDEBUG for normal operation."),1)); + + const bool few_input_colors = hist->size+fixed_colors_count <= options->max_colors; + + if (liq_progress(options, options->progress_stage1)) return LIQ_ABORTED; + + // If image has few colors to begin with (and no quality degradation is required) + // then it's possible to skip quantization entirely + if (few_input_colors && options->target_mse == 0) { + colormap *hist_pal = histogram_to_palette(hist, options->malloc, options->free); + acolormap = add_fixed_colors_to_palette(hist_pal, options->max_colors, fixed_colors, fixed_colors_count, options->malloc, options->free); + palette_error = 0; + } else { + const double max_mse = options->max_mse * (few_input_colors ? 0.33 : 1.0); // when degrading image that's already paletted, require much higher improvement, since pal2pal often looks bad and there's little gain + acolormap = find_best_palette(hist, options, max_mse, fixed_colors, fixed_colors_count, &palette_error); + if (!acolormap) { + return LIQ_VALUE_OUT_OF_RANGE; + } + + // K-Means iteration approaches local minimum for the palette + double iteration_limit = options->kmeans_iteration_limit; + unsigned int iterations = options->kmeans_iterations; + + if (!iterations && palette_error < 0 && max_mse < MAX_DIFF) iterations = 1; // otherwise total error is never calculated and MSE limit won't work + + if (iterations) { + // likely_colormap_index (used and set in kmeans_do_iteration) can't point to index outside colormap + hist_reset_colors(hist, acolormap->colors); + + if (hist->size > 5000) {iterations = (iterations*3 + 3)/4;} + if (hist->size > 25000) {iterations = (iterations*3 + 3)/4;} + if (hist->size > 50000) {iterations = (iterations*3 + 3)/4;} + if (hist->size > 100000) {iterations = (iterations*3 + 3)/4; iteration_limit *= 2;} + + verbose_print(options, " moving colormap towards local minimum"); + + double previous_palette_error = MAX_DIFF; + + for(unsigned int i=0; i < iterations; i++) { + palette_error = kmeans_do_iteration(hist, acolormap, NULL, omp_get_max_threads()); + + if (liq_progress(options, options->progress_stage1 + options->progress_stage2 + (i * options->progress_stage3 * 0.9f) / iterations)) { + break; + } + + if (fabs(previous_palette_error-palette_error) < iteration_limit) { + break; + } + + if (palette_error > max_mse*1.5) { // probably hopeless + if (palette_error > max_mse*3.0) break; // definitely hopeless + i++; + } + + previous_palette_error = palette_error; + } + } + + if (palette_error > max_mse) { + liq_verbose_printf(options, " image degradation MSE=%.3f (Q=%d) exceeded limit of %.3f (%d)", + mse_to_standard_mse(palette_error), mse_to_quality(palette_error), + mse_to_standard_mse(max_mse), mse_to_quality(max_mse)); + pam_freecolormap(acolormap); + return LIQ_QUALITY_TOO_LOW; + } + } + + if (liq_progress(options, options->progress_stage1 + options->progress_stage2 + options->progress_stage3 * 0.95f)) { + pam_freecolormap(acolormap); + return LIQ_ABORTED; + } + + sort_palette(acolormap, options); + + // If palette was created from a multi-image histogram, + // then it shouldn't be optimized for one image during remapping + if (fixed_result_colors) { + for(unsigned int i=0; i < acolormap->colors; i++) { + acolormap->palette[i].fixed = true; + } + } + + liq_result *result = options->malloc(sizeof(liq_result)); + if (!result) return LIQ_OUT_OF_MEMORY; + *result = (liq_result){ + .magic_header = liq_result_magic, + .malloc = options->malloc, + .free = options->free, + .palette = acolormap, + .palette_error = palette_error, + .use_dither_map = options->use_dither_map, + .gamma = gamma, + .min_posterization_output = options->min_posterization_output, + }; + *result_output = result; + return LIQ_OK; +} + +LIQ_EXPORT LIQ_NONNULL liq_error liq_write_remapped_image(liq_result *result, liq_image *input_image, void *buffer, size_t buffer_size) +{ + if (!CHECK_STRUCT_TYPE(result, liq_result)) { + return LIQ_INVALID_POINTER; + } + if (!CHECK_STRUCT_TYPE(input_image, liq_image)) { + return LIQ_INVALID_POINTER; + } + if (!CHECK_USER_POINTER(buffer)) { + return LIQ_INVALID_POINTER; + } + + const size_t required_size = (size_t)input_image->width * (size_t)input_image->height; + if (buffer_size < required_size) { + return LIQ_BUFFER_TOO_SMALL; + } + + unsigned char **rows = input_image->malloc(input_image->height * sizeof(unsigned char *)); + unsigned char *buffer_bytes = buffer; + for(unsigned int i=0; i < input_image->height; i++) { + rows[i] = &buffer_bytes[input_image->width * i]; + } + + liq_error err = liq_write_remapped_image_rows(result, input_image, rows); + input_image->free(rows); + return err; +} + +LIQ_EXPORT LIQ_NONNULL liq_error liq_write_remapped_image_rows(liq_result *quant, liq_image *input_image, unsigned char **row_pointers) +{ + if (!CHECK_STRUCT_TYPE(quant, liq_result)) return LIQ_INVALID_POINTER; + if (!CHECK_STRUCT_TYPE(input_image, liq_image)) return LIQ_INVALID_POINTER; + for(unsigned int i=0; i < input_image->height; i++) { + if (!CHECK_USER_POINTER(row_pointers+i) || !CHECK_USER_POINTER(row_pointers[i])) return LIQ_INVALID_POINTER; + } + + if (quant->remapping) { + liq_remapping_result_destroy(quant->remapping); + } + liq_remapping_result *const result = quant->remapping = liq_remapping_result_create(quant); + if (!result) return LIQ_OUT_OF_MEMORY; + + if (!input_image->edges && !input_image->dither_map && quant->use_dither_map) { + contrast_maps(input_image); + } + + if (liq_remap_progress(result, result->progress_stage1 * 0.25f)) { + return LIQ_ABORTED; + } + + /* + ** Step 4: map the colors in the image to their closest match in the + ** new colormap, and write 'em out. + */ + + float remapping_error = result->palette_error; + if (result->dither_level == 0) { + set_rounded_palette(&result->int_palette, result->palette, result->gamma, quant->min_posterization_output); + remapping_error = remap_to_palette(input_image, row_pointers, result->palette); + } else { + const bool is_image_huge = (input_image->width * input_image->height) > 2000 * 2000; + const bool allow_dither_map = result->use_dither_map == 2 || (!is_image_huge && result->use_dither_map); + const bool generate_dither_map = allow_dither_map && (input_image->edges && !input_image->dither_map); + if (generate_dither_map) { + // If dithering (with dither map) is required, this image is used to find areas that require dithering + remapping_error = remap_to_palette(input_image, row_pointers, result->palette); + update_dither_map(input_image, row_pointers, result->palette); + } + + if (liq_remap_progress(result, result->progress_stage1 * 0.5f)) { + return LIQ_ABORTED; + } + + // remapping above was the last chance to do K-Means iteration, hence the final palette is set after remapping + set_rounded_palette(&result->int_palette, result->palette, result->gamma, quant->min_posterization_output); + + if (!remap_to_palette_floyd(input_image, row_pointers, result, MAX(remapping_error*2.4f, 8.f/256.f), generate_dither_map)) { + return LIQ_ABORTED; + } + } + + // remapping error from dithered image is absurd, so always non-dithered value is used + // palette_error includes some perceptual weighting from histogram which is closer correlated with dssim + // so that should be used when possible. + if (result->palette_error < 0) { + result->palette_error = remapping_error; + } + + return LIQ_OK; +} + +LIQ_EXPORT int liq_version() { + return LIQ_VERSION; +} diff --git a/tools/assets/n64texconv/lib/libimagequant/libimagequant.h b/tools/assets/n64texconv/lib/libimagequant/libimagequant.h new file mode 100644 index 0000000000..e4763ab38a --- /dev/null +++ b/tools/assets/n64texconv/lib/libimagequant/libimagequant.h @@ -0,0 +1,151 @@ +/* + * https://pngquant.org + */ + +#ifndef LIBIMAGEQUANT_H +#define LIBIMAGEQUANT_H + +#ifdef IMAGEQUANT_EXPORTS +#define LIQ_EXPORT __declspec(dllexport) +#endif + +#ifndef LIQ_EXPORT +#define LIQ_EXPORT extern +#endif + +#define LIQ_VERSION 21800 +#define LIQ_VERSION_STRING "2.18.0" + +#ifndef LIQ_PRIVATE +#if defined(__GNUC__) || defined (__llvm__) +#define LIQ_PRIVATE __attribute__((visibility("hidden"))) +#define LIQ_NONNULL __attribute__((nonnull)) +#define LIQ_USERESULT __attribute__((warn_unused_result)) +#else +#define LIQ_PRIVATE +#define LIQ_NONNULL +#define LIQ_USERESULT +#endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef struct liq_attr liq_attr; +typedef struct liq_image liq_image; +typedef struct liq_result liq_result; +typedef struct liq_histogram liq_histogram; + +typedef struct liq_color { + unsigned char r, g, b, a; +} liq_color; + +typedef struct liq_palette { + unsigned int count; + liq_color entries[256]; +} liq_palette; + +typedef enum liq_error { + LIQ_OK = 0, + LIQ_QUALITY_TOO_LOW = 99, + LIQ_VALUE_OUT_OF_RANGE = 100, + LIQ_OUT_OF_MEMORY, + LIQ_ABORTED, + LIQ_BITMAP_NOT_AVAILABLE, + LIQ_BUFFER_TOO_SMALL, + LIQ_INVALID_POINTER, + LIQ_UNSUPPORTED, +} liq_error; + +enum liq_ownership { + LIQ_OWN_ROWS=4, + LIQ_OWN_PIXELS=8, + LIQ_COPY_PIXELS=16, +}; + +typedef struct liq_histogram_entry { + liq_color color; + unsigned int count; +} liq_histogram_entry; + +LIQ_EXPORT LIQ_USERESULT liq_attr* liq_attr_create(void); +LIQ_EXPORT LIQ_USERESULT liq_attr* liq_attr_create_with_allocator(void* (*malloc)(size_t), void (*free)(void*)); +LIQ_EXPORT LIQ_USERESULT liq_attr* liq_attr_copy(const liq_attr *orig) LIQ_NONNULL; +LIQ_EXPORT void liq_attr_destroy(liq_attr *attr) LIQ_NONNULL; + +LIQ_EXPORT LIQ_USERESULT liq_histogram* liq_histogram_create(const liq_attr* attr); +LIQ_EXPORT liq_error liq_histogram_add_image(liq_histogram *hist, const liq_attr *attr, liq_image* image) LIQ_NONNULL; +LIQ_EXPORT liq_error liq_histogram_add_colors(liq_histogram *hist, const liq_attr *attr, const liq_histogram_entry entries[], int num_entries, double gamma) LIQ_NONNULL; +LIQ_EXPORT liq_error liq_histogram_add_fixed_color(liq_histogram *hist, liq_color color, double gamma) LIQ_NONNULL; +LIQ_EXPORT void liq_histogram_destroy(liq_histogram *hist) LIQ_NONNULL; + +LIQ_EXPORT liq_error liq_set_max_colors(liq_attr* attr, int colors) LIQ_NONNULL; +LIQ_EXPORT LIQ_USERESULT int liq_get_max_colors(const liq_attr* attr) LIQ_NONNULL; +LIQ_EXPORT liq_error liq_set_speed(liq_attr* attr, int speed) LIQ_NONNULL; +LIQ_EXPORT LIQ_USERESULT int liq_get_speed(const liq_attr* attr) LIQ_NONNULL; +LIQ_EXPORT liq_error liq_set_min_opacity(liq_attr* attr, int min) LIQ_NONNULL; +LIQ_EXPORT LIQ_USERESULT int liq_get_min_opacity(const liq_attr* attr) LIQ_NONNULL; +LIQ_EXPORT liq_error liq_set_min_posterization(liq_attr* attr, int bits) LIQ_NONNULL; +LIQ_EXPORT LIQ_USERESULT int liq_get_min_posterization(const liq_attr* attr) LIQ_NONNULL; +LIQ_EXPORT liq_error liq_set_quality(liq_attr* attr, int minimum, int maximum) LIQ_NONNULL; +LIQ_EXPORT LIQ_USERESULT int liq_get_min_quality(const liq_attr* attr) LIQ_NONNULL; +LIQ_EXPORT LIQ_USERESULT int liq_get_max_quality(const liq_attr* attr) LIQ_NONNULL; +LIQ_EXPORT void liq_set_last_index_transparent(liq_attr* attr, int is_last) LIQ_NONNULL; + +typedef void liq_log_callback_function(const liq_attr*, const char *message, void* user_info); +typedef void liq_log_flush_callback_function(const liq_attr*, void* user_info); +LIQ_EXPORT void liq_set_log_callback(liq_attr*, liq_log_callback_function*, void* user_info); +LIQ_EXPORT void liq_set_log_flush_callback(liq_attr*, liq_log_flush_callback_function*, void* user_info); + +typedef int liq_progress_callback_function(float progress_percent, void* user_info); +LIQ_EXPORT void liq_attr_set_progress_callback(liq_attr*, liq_progress_callback_function*, void* user_info); +LIQ_EXPORT void liq_result_set_progress_callback(liq_result*, liq_progress_callback_function*, void* user_info); + +// The rows and their data are not modified. The type of `rows` is non-const only due to a bug in C's typesystem design. +LIQ_EXPORT LIQ_USERESULT liq_image *liq_image_create_rgba_rows(const liq_attr *attr, void *const rows[], int width, int height, double gamma) LIQ_NONNULL; +LIQ_EXPORT LIQ_USERESULT liq_image *liq_image_create_rgba(const liq_attr *attr, const void *bitmap, int width, int height, double gamma) LIQ_NONNULL; + +typedef void liq_image_get_rgba_row_callback(liq_color row_out[], int row, int width, void* user_info); +LIQ_EXPORT LIQ_USERESULT liq_image *liq_image_create_custom(const liq_attr *attr, liq_image_get_rgba_row_callback *row_callback, void* user_info, int width, int height, double gamma); + +LIQ_EXPORT liq_error liq_image_set_memory_ownership(liq_image *image, int ownership_flags) LIQ_NONNULL; +LIQ_EXPORT liq_error liq_image_set_background(liq_image *img, liq_image *background_image) LIQ_NONNULL; +LIQ_EXPORT liq_error liq_image_set_importance_map(liq_image *img, unsigned char buffer[], size_t buffer_size, enum liq_ownership memory_handling) LIQ_NONNULL; +LIQ_EXPORT liq_error liq_image_add_fixed_color(liq_image *img, liq_color color) LIQ_NONNULL; +LIQ_EXPORT LIQ_USERESULT int liq_image_get_width(const liq_image *img) LIQ_NONNULL; +LIQ_EXPORT LIQ_USERESULT int liq_image_get_height(const liq_image *img) LIQ_NONNULL; +LIQ_EXPORT void liq_image_destroy(liq_image *img) LIQ_NONNULL; + +LIQ_EXPORT LIQ_USERESULT liq_error liq_histogram_quantize(liq_histogram *const input_hist, liq_attr *const options, liq_result **result_output) LIQ_NONNULL; +LIQ_EXPORT LIQ_USERESULT liq_error liq_image_quantize(liq_image *const input_image, liq_attr *const options, liq_result **result_output) LIQ_NONNULL; + +LIQ_EXPORT liq_error liq_set_dithering_level(liq_result *res, float dither_level) LIQ_NONNULL; +LIQ_EXPORT liq_error liq_set_output_gamma(liq_result* res, double gamma) LIQ_NONNULL; +LIQ_EXPORT LIQ_USERESULT double liq_get_output_gamma(const liq_result *result) LIQ_NONNULL; + +LIQ_EXPORT LIQ_USERESULT const liq_palette *liq_get_palette(liq_result *result) LIQ_NONNULL; + +LIQ_EXPORT liq_error liq_write_remapped_image(liq_result *result, liq_image *input_image, void *buffer, size_t buffer_size) LIQ_NONNULL; +LIQ_EXPORT liq_error liq_write_remapped_image_rows(liq_result *result, liq_image *input_image, unsigned char **row_pointers) LIQ_NONNULL; + +LIQ_EXPORT double liq_get_quantization_error(const liq_result *result) LIQ_NONNULL; +LIQ_EXPORT int liq_get_quantization_quality(const liq_result *result) LIQ_NONNULL; +LIQ_EXPORT double liq_get_remapping_error(const liq_result *result) LIQ_NONNULL; +LIQ_EXPORT int liq_get_remapping_quality(const liq_result *result) LIQ_NONNULL; + +LIQ_EXPORT void liq_result_destroy(liq_result *) LIQ_NONNULL; + +LIQ_EXPORT int liq_version(void); + + +// Deprecated +LIQ_EXPORT LIQ_USERESULT liq_result *liq_quantize_image(liq_attr *options, liq_image *input_image) LIQ_NONNULL; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/tools/assets/n64texconv/lib/libimagequant/libimagequant_private.h b/tools/assets/n64texconv/lib/libimagequant/libimagequant_private.h new file mode 100644 index 0000000000..50e2c18a33 --- /dev/null +++ b/tools/assets/n64texconv/lib/libimagequant/libimagequant_private.h @@ -0,0 +1,50 @@ +#ifdef _OPENMP +#include +#define LIQ_TEMP_ROW_WIDTH(img_width) (((img_width) | 15) + 1) /* keep alignment & leave space between rows to avoid cache line contention */ +#else +#define LIQ_TEMP_ROW_WIDTH(img_width) (img_width) +#define omp_get_max_threads() 1 +#define omp_get_thread_num() 0 +#endif + +struct liq_image { + const char *magic_header; + void* (*malloc)(size_t); + void (*free)(void*); + + f_pixel *f_pixels; + liq_color **rows; + double gamma; + unsigned int width, height; + unsigned char *importance_map, *edges, *dither_map; + liq_color *pixels, *temp_row; + f_pixel *temp_f_row; + liq_image_get_rgba_row_callback *row_callback; + void *row_callback_user_info; + liq_image *background; + f_pixel fixed_colors[256]; + unsigned short fixed_colors_count; + bool free_pixels, free_rows, free_rows_internal; +}; + +typedef struct liq_remapping_result { + const char *magic_header; + void* (*malloc)(size_t); + void (*free)(void*); + + unsigned char *pixels; + colormap *palette; + liq_progress_callback_function *progress_callback; + void *progress_callback_user_info; + + liq_palette int_palette; + double gamma, palette_error; + float dither_level; + unsigned char use_dither_map; + unsigned char progress_stage1; +} liq_remapping_result; + + +LIQ_PRIVATE bool liq_image_get_row_f_init(liq_image *img) LIQ_NONNULL; +LIQ_PRIVATE const f_pixel *liq_image_get_row_f(liq_image *input_image, unsigned int row) LIQ_NONNULL; +LIQ_PRIVATE bool liq_remap_progress(const liq_remapping_result *quant, const float percent) LIQ_NONNULL; diff --git a/tools/assets/n64texconv/lib/libimagequant/mediancut.c b/tools/assets/n64texconv/lib/libimagequant/mediancut.c new file mode 100644 index 0000000000..cc241b8582 --- /dev/null +++ b/tools/assets/n64texconv/lib/libimagequant/mediancut.c @@ -0,0 +1,476 @@ +/* +** © 2009-2018 by Kornel Lesiński. +** © 1989, 1991 by Jef Poskanzer. +** © 1997, 2000, 2002 by Greg Roelofs; based on an idea by Stefan Schneider. +** +** See COPYRIGHT file for license. +*/ + +#include +#include + +#include "libimagequant.h" +#include "pam.h" +#include "mediancut.h" + +#define index_of_channel(ch) (offsetof(f_pixel,ch)/sizeof(float)) + +static f_pixel averagepixels(unsigned int clrs, const hist_item achv[]); + +struct box { + f_pixel color; + f_pixel variance; + double sum, total_error, max_error; + unsigned int ind; + unsigned int colors; +}; + +/** Weighted per-channel variance of the box. It's used to decide which channel to split by */ +static f_pixel box_variance(const hist_item achv[], const struct box *box) +{ + const f_pixel mean = box->color; + double variancea=0, variancer=0, varianceg=0, varianceb=0; + + for(unsigned int i = 0; i < box->colors; ++i) { + const f_pixel px = achv[box->ind + i].acolor; + double weight = achv[box->ind + i].adjusted_weight; + variancea += (mean.a - px.a)*(mean.a - px.a)*weight; + variancer += (mean.r - px.r)*(mean.r - px.r)*weight; + varianceg += (mean.g - px.g)*(mean.g - px.g)*weight; + varianceb += (mean.b - px.b)*(mean.b - px.b)*weight; + } + + return (f_pixel){ + .a = variancea, + .r = variancer, + .g = varianceg, + .b = varianceb, + }; +} + +static double box_max_error(const hist_item achv[], const struct box *box) +{ + f_pixel mean = box->color; + double max_error = 0; + + for(unsigned int i = 0; i < box->colors; ++i) { + const double diff = colordifference(mean, achv[box->ind + i].acolor); + if (diff > max_error) { + max_error = diff; + } + } + return max_error; +} + +ALWAYS_INLINE static double color_weight(f_pixel median, hist_item h); + +static inline void hist_item_swap(hist_item *l, hist_item *r) +{ + if (l != r) { + hist_item t = *l; + *l = *r; + *r = t; + } +} + +ALWAYS_INLINE static unsigned int qsort_pivot(const hist_item *const base, const unsigned int len); +inline static unsigned int qsort_pivot(const hist_item *const base, const unsigned int len) +{ + if (len < 32) { + return len/2; + } + + const unsigned int aidx=8, bidx=len/2, cidx=len-1; + const unsigned int a=base[aidx].tmp.sort_value, b=base[bidx].tmp.sort_value, c=base[cidx].tmp.sort_value; + return (a < b) ? ((b < c) ? bidx : ((a < c) ? cidx : aidx )) + : ((b > c) ? bidx : ((a < c) ? aidx : cidx )); +} + +ALWAYS_INLINE static unsigned int qsort_partition(hist_item *const base, const unsigned int len); +inline static unsigned int qsort_partition(hist_item *const base, const unsigned int len) +{ + unsigned int l = 1, r = len; + if (len >= 8) { + hist_item_swap(&base[0], &base[qsort_pivot(base,len)]); + } + + const unsigned int pivot_value = base[0].tmp.sort_value; + while (l < r) { + if (base[l].tmp.sort_value >= pivot_value) { + l++; + } else { + while(l < --r && base[r].tmp.sort_value <= pivot_value) {} + hist_item_swap(&base[l], &base[r]); + } + } + l--; + hist_item_swap(&base[0], &base[l]); + + return l; +} + +/** quick select algorithm */ +static void hist_item_sort_range(hist_item base[], unsigned int len, unsigned int sort_start) +{ + for(;;) { + const unsigned int l = qsort_partition(base, len), r = l+1; + + if (l > 0 && sort_start < l) { + len = l; + } + else if (r < len && sort_start > r) { + base += r; len -= r; sort_start -= r; + } + else break; + } +} + +/** sorts array to make sum of weights lower than halfvar one side, returns index of the edge between halfvar parts of the set */ +static unsigned int hist_item_sort_halfvar(hist_item base[], unsigned int len, double halfvar) +{ + unsigned int base_idx = 0; // track base-index + do { + const unsigned int l = qsort_partition(base, len), r = l+1; + + // check if sum of left side is smaller than half, + // if it is, then it doesn't need to be sorted + double tmpsum = 0.; + for(unsigned int t = 0; t <= l && tmpsum < halfvar; ++t) tmpsum += base[t].color_weight; + + // the split is on the left part + if (tmpsum >= halfvar) { + if (l > 0) { + len = l; + continue; + } else { + // reached the end of left part + return base_idx; + } + } + // process the right part + halfvar -= tmpsum; + if (len > r) { + base += r; + base_idx += r; + len -= r; // tail-recursive "call" + } else { + // reached the end of the right part + return base_idx + len; + } + } while(1); +} + +static f_pixel get_median(const struct box *b, hist_item achv[]); + +typedef struct { + unsigned int chan; float variance; +} channelvariance; + +static int comparevariance(const void *ch1, const void *ch2) +{ + return ((const channelvariance*)ch1)->variance > ((const channelvariance*)ch2)->variance ? -1 : + (((const channelvariance*)ch1)->variance < ((const channelvariance*)ch2)->variance ? 1 : 0); +} + +/** Finds which channels need to be sorted first and preproceses achv for fast sort */ +static double prepare_sort(struct box *b, hist_item achv[]) +{ + /* + ** Sort dimensions by their variance, and then sort colors first by dimension with highest variance + */ + channelvariance channels[4] = { + {index_of_channel(a), b->variance.a}, + {index_of_channel(r), b->variance.r}, + {index_of_channel(g), b->variance.g}, + {index_of_channel(b), b->variance.b}, + }; + + qsort(channels, 4, sizeof(channels[0]), comparevariance); + + const unsigned int ind1 = b->ind; + const unsigned int colors = b->colors; +#if __GNUC__ >= 9 || __clang__ + #pragma omp parallel for if (colors > 25000) \ + schedule(static) default(none) shared(achv, channels, colors, ind1) +#else + #pragma omp parallel for if (colors > 25000) \ + schedule(static) default(none) shared(achv, channels) +#endif + for(unsigned int i=0; i < colors; i++) { + const float *chans = (const float *)&achv[ind1 + i].acolor; + // Only the first channel really matters. When trying median cut many times + // with different histogram weights, I don't want sort randomness to influence outcome. + achv[ind1 + i].tmp.sort_value = ((unsigned int)(chans[channels[0].chan]*65535.0)<<16) | + (unsigned int)((chans[channels[2].chan] + chans[channels[1].chan]/2.0 + chans[channels[3].chan]/4.0)*65535.0); + } + + const f_pixel median = get_median(b, achv); + + // box will be split to make color_weight of each side even + const unsigned int ind = b->ind, end = ind+b->colors; + double totalvar = 0; + #pragma omp parallel for if (end - ind > 15000) \ + schedule(static) default(shared) reduction(+:totalvar) + for(unsigned int j=ind; j < end; j++) totalvar += (achv[j].color_weight = color_weight(median, achv[j])); + return totalvar / 2.0; +} + +/** finds median in unsorted set by sorting only minimum required */ +static f_pixel get_median(const struct box *b, hist_item achv[]) +{ + const unsigned int median_start = (b->colors-1)/2; + + hist_item_sort_range(&(achv[b->ind]), b->colors, + median_start); + + if (b->colors&1) return achv[b->ind + median_start].acolor; + + // technically the second color is not guaranteed to be sorted correctly + // but most of the time it is good enough to be useful + return averagepixels(2, &achv[b->ind + median_start]); +} + +/* + ** Find the best splittable box. -1 if no boxes are splittable. + */ +static int best_splittable_box(struct box bv[], unsigned int boxes, const double max_mse) +{ + int bi=-1; double maxsum=0; + for(unsigned int i=0; i < boxes; i++) { + if (bv[i].colors < 2) { + continue; + } + + // looks only at max variance, because it's only going to split by it + const double cv = MAX(bv[i].variance.r, MAX(bv[i].variance.g,bv[i].variance.b)); + double thissum = bv[i].sum * MAX(bv[i].variance.a, cv); + + if (bv[i].max_error > max_mse) { + thissum = thissum* bv[i].max_error/max_mse; + } + + if (thissum > maxsum) { + maxsum = thissum; + bi = i; + } + } + return bi; +} + +inline static double color_weight(f_pixel median, hist_item h) +{ + float diff = colordifference(median, h.acolor); + return sqrt(diff) * (sqrt(1.0+h.adjusted_weight)-1.0); +} + +static void set_colormap_from_boxes(colormap *map, struct box bv[], unsigned int boxes, hist_item *achv); +static void adjust_histogram(hist_item *achv, const struct box bv[], unsigned int boxes); + +static double box_error(const struct box *box, const hist_item achv[]) +{ + f_pixel avg = box->color; + + double total_error=0; + for (unsigned int i = 0; i < box->colors; ++i) { + total_error += colordifference(avg, achv[box->ind + i].acolor) * achv[box->ind + i].perceptual_weight; + } + + return total_error; +} + + +static bool total_box_error_below_target(double target_mse, struct box bv[], unsigned int boxes, const histogram *hist) +{ + target_mse *= hist->total_perceptual_weight; + double total_error=0; + + for(unsigned int i=0; i < boxes; i++) { + // error is (re)calculated lazily + if (bv[i].total_error >= 0) { + total_error += bv[i].total_error; + } + if (total_error > target_mse) return false; + } + + for(unsigned int i=0; i < boxes; i++) { + if (bv[i].total_error < 0) { + bv[i].total_error = box_error(&bv[i], hist->achv); + total_error += bv[i].total_error; + } + if (total_error > target_mse) return false; + } + + return true; +} + +static void box_init(struct box *box, const hist_item *achv, const unsigned int ind, const unsigned int colors, const double sum) { + assert(colors > 0); + assert(sum > 0); + + box->ind = ind; + box->colors = colors; + box->sum = sum; + box->total_error = -1; + + box->color = averagepixels(colors, &achv[ind]); + box->variance = box_variance(achv, box); + box->max_error = box_max_error(achv, box); +} + +/* + ** Here is the fun part, the median-cut colormap generator. This is based + ** on Paul Heckbert's paper, "Color Image Quantization for Frame Buffer + ** Display," SIGGRAPH 1982 Proceedings, page 297. + */ +LIQ_PRIVATE colormap *mediancut(histogram *hist, unsigned int newcolors, const double target_mse, const double max_mse, void* (*malloc)(size_t), void (*free)(void*)) +{ + hist_item *achv = hist->achv; + struct box bv[newcolors+16]; + + assert(hist->boxes[0].begin == 0); + assert(hist->boxes[LIQ_MAXCLUSTER-1].end == hist->size); + + unsigned int boxes = 0; + for(int b=0; b < LIQ_MAXCLUSTER; b++) { + int begin = hist->boxes[b].begin; + int end = hist->boxes[b].end; + if (begin == end) { + continue; + } + + if (boxes >= newcolors/3) { + boxes = 0; + begin = 0; + end = hist->boxes[LIQ_MAXCLUSTER-1].end; + b = LIQ_MAXCLUSTER; + } + + double sum = 0; + for(int i=begin; i < end; i++) { + sum += achv[i].adjusted_weight; + } + box_init(&bv[boxes], achv, begin, end-begin, sum); + boxes++; + } + + assert(boxes < newcolors); + + + /* + ** Main loop: split boxes until we have enough. + */ + while (boxes < newcolors) { + + // first splits boxes that exceed quality limit (to have colors for things like odd green pixel), + // later raises the limit to allow large smooth areas/gradients get colors. + const double current_max_mse = max_mse + (boxes/(double)newcolors)*16.0*max_mse; + const int bi = best_splittable_box(bv, boxes, current_max_mse); + if (bi < 0) { + break; /* ran out of colors! */ + } + + unsigned int indx = bv[bi].ind; + unsigned int clrs = bv[bi].colors; + + /* + Classic implementation tries to get even number of colors or pixels in each subdivision. + + Here, instead of popularity I use (sqrt(popularity)*variance) metric. + Each subdivision balances number of pixels (popular colors) and low variance - + boxes can be large if they have similar colors. Later boxes with high variance + will be more likely to be split. + + Median used as expected value gives much better results than mean. + */ + + const double halfvar = prepare_sort(&bv[bi], achv); + + // hist_item_sort_halfvar sorts and sums lowervar at the same time + // returns item to break at …minus one, which does smell like an off-by-one error. + unsigned int break_at = hist_item_sort_halfvar(&achv[indx], clrs, halfvar); + break_at = MIN(clrs-1, break_at + 1); + + /* + ** Split the box. + */ + double sm = bv[bi].sum; + double lowersum = 0; + for(unsigned int i=0; i < break_at; i++) lowersum += achv[indx + i].adjusted_weight; + + box_init(&bv[bi], achv, indx, break_at, lowersum); + box_init(&bv[boxes], achv, indx + break_at, clrs - break_at, sm - lowersum); + + ++boxes; + + if (total_box_error_below_target(target_mse, bv, boxes, hist)) { + break; + } + } + + colormap *map = pam_colormap(boxes, malloc, free); + set_colormap_from_boxes(map, bv, boxes, achv); + + adjust_histogram(achv, bv, boxes); + + return map; +} + +static void set_colormap_from_boxes(colormap *map, struct box* bv, unsigned int boxes, hist_item *achv) +{ + /* + ** Ok, we've got enough boxes. Now choose a representative color for + ** each box. There are a number of possible ways to make this choice. + ** One would be to choose the center of the box; this ignores any structure + ** within the boxes. Another method would be to average all the colors in + ** the box - this is the method specified in Heckbert's paper. + */ + + for(unsigned int bi = 0; bi < boxes; ++bi) { + map->palette[bi].acolor = bv[bi].color; + + /* store total color popularity (perceptual_weight is approximation of it) */ + map->palette[bi].popularity = 0; + for(unsigned int i=bv[bi].ind; i < bv[bi].ind+bv[bi].colors; i++) { + map->palette[bi].popularity += achv[i].perceptual_weight; + } + } +} + +/* increase histogram popularity by difference from the final color (this is used as part of feedback loop) */ +static void adjust_histogram(hist_item *achv, const struct box* bv, unsigned int boxes) +{ + for(unsigned int bi = 0; bi < boxes; ++bi) { + for(unsigned int i=bv[bi].ind; i < bv[bi].ind+bv[bi].colors; i++) { + achv[i].tmp.likely_colormap_index = bi; + } + } +} + +static f_pixel averagepixels(unsigned int clrs, const hist_item achv[]) +{ + double r = 0, g = 0, b = 0, a = 0, sum = 0; + + #pragma omp parallel for if (clrs > 25000) \ + schedule(static) default(shared) reduction(+:a) reduction(+:r) reduction(+:g) reduction(+:b) reduction(+:sum) + for(unsigned int i = 0; i < clrs; i++) { + const f_pixel px = achv[i].acolor; + const double weight = achv[i].adjusted_weight; + + sum += weight; + a += px.a * weight; + r += px.r * weight; + g += px.g * weight; + b += px.b * weight; + } + + if (sum) { + a /= sum; + r /= sum; + g /= sum; + b /= sum; + } + + assert(!isnan(r) && !isnan(g) && !isnan(b) && !isnan(a)); + + return (f_pixel){.r=r, .g=g, .b=b, .a=a}; +} diff --git a/tools/assets/n64texconv/lib/libimagequant/mediancut.h b/tools/assets/n64texconv/lib/libimagequant/mediancut.h new file mode 100644 index 0000000000..9a4cb534b5 --- /dev/null +++ b/tools/assets/n64texconv/lib/libimagequant/mediancut.h @@ -0,0 +1,6 @@ +#ifndef MEDIANCUT_H +#define MEDIANCUT_H + +LIQ_PRIVATE colormap *mediancut(histogram *hist, unsigned int newcolors, const double target_mse, const double max_mse, void* (*malloc)(size_t), void (*free)(void*)); + +#endif diff --git a/tools/assets/n64texconv/lib/libimagequant/mempool.c b/tools/assets/n64texconv/lib/libimagequant/mempool.c new file mode 100644 index 0000000000..cd49f59a24 --- /dev/null +++ b/tools/assets/n64texconv/lib/libimagequant/mempool.c @@ -0,0 +1,70 @@ +/* +** © 2009-2017 by Kornel Lesiński. +** © 1989, 1991 by Jef Poskanzer. +** © 1997, 2000, 2002 by Greg Roelofs; based on an idea by Stefan Schneider. +** +** See COPYRIGHT file for license. +*/ + +#include "libimagequant.h" +#include "mempool.h" +#include +#include +#include + +#define ALIGN_MASK 15UL +#define MEMPOOL_RESERVED ((sizeof(struct mempool)+ALIGN_MASK) & ~ALIGN_MASK) + +struct mempool { + unsigned int used, size; + void* (*malloc)(size_t); + void (*free)(void*); + struct mempool *next; +}; +LIQ_PRIVATE void* mempool_create(mempoolptr *mptr, const unsigned int size, unsigned int max_size, void* (*malloc)(size_t), void (*free)(void*)) +{ + if (*mptr && ((*mptr)->used+size) <= (*mptr)->size) { + unsigned int prevused = (*mptr)->used; + (*mptr)->used += (size+15UL) & ~0xFUL; + return ((char*)(*mptr)) + prevused; + } + + mempoolptr old = *mptr; + if (!max_size) max_size = (1<<17); + max_size = size+ALIGN_MASK > max_size ? size+ALIGN_MASK : max_size; + + *mptr = malloc(MEMPOOL_RESERVED + max_size); + if (!*mptr) return NULL; + **mptr = (struct mempool){ + .malloc = malloc, + .free = free, + .size = MEMPOOL_RESERVED + max_size, + .used = sizeof(struct mempool), + .next = old, + }; + uintptr_t mptr_used_start = (uintptr_t)(*mptr) + (*mptr)->used; + (*mptr)->used += (ALIGN_MASK + 1 - (mptr_used_start & ALIGN_MASK)) & ALIGN_MASK; // reserve bytes required to make subsequent allocations aligned + assert(!(((uintptr_t)(*mptr) + (*mptr)->used) & ALIGN_MASK)); + + return mempool_alloc(mptr, size, size); +} + +LIQ_PRIVATE void* mempool_alloc(mempoolptr *mptr, const unsigned int size, const unsigned int max_size) +{ + if (((*mptr)->used+size) <= (*mptr)->size) { + unsigned int prevused = (*mptr)->used; + (*mptr)->used += (size + ALIGN_MASK) & ~ALIGN_MASK; + return ((char*)(*mptr)) + prevused; + } + + return mempool_create(mptr, size, max_size, (*mptr)->malloc, (*mptr)->free); +} + +LIQ_PRIVATE void mempool_destroy(mempoolptr m) +{ + while (m) { + mempoolptr next = m->next; + m->free(m); + m = next; + } +} diff --git a/tools/assets/n64texconv/lib/libimagequant/mempool.h b/tools/assets/n64texconv/lib/libimagequant/mempool.h new file mode 100644 index 0000000000..9b7333b117 --- /dev/null +++ b/tools/assets/n64texconv/lib/libimagequant/mempool.h @@ -0,0 +1,13 @@ +#ifndef MEMPOOL_H +#define MEMPOOL_H + +#include + +struct mempool; +typedef struct mempool *mempoolptr; + +LIQ_PRIVATE void* mempool_create(mempoolptr *mptr, const unsigned int size, unsigned int capacity, void* (*malloc)(size_t), void (*free)(void*)); +LIQ_PRIVATE void* mempool_alloc(mempoolptr *mptr, const unsigned int size, const unsigned int capacity); +LIQ_PRIVATE void mempool_destroy(mempoolptr m); + +#endif diff --git a/tools/assets/n64texconv/lib/libimagequant/nearest.c b/tools/assets/n64texconv/lib/libimagequant/nearest.c new file mode 100644 index 0000000000..7c8ee6af0a --- /dev/null +++ b/tools/assets/n64texconv/lib/libimagequant/nearest.c @@ -0,0 +1,230 @@ +/* +** © 2009-2015 by Kornel Lesiński. +** © 1989, 1991 by Jef Poskanzer. +** © 1997, 2000, 2002 by Greg Roelofs; based on an idea by Stefan Schneider. +** +** See COPYRIGHT file for license. +*/ + +#include "libimagequant.h" +#include "pam.h" +#include "nearest.h" +#include "mempool.h" +#include + +typedef struct vp_sort_tmp { + float distance_squared; + unsigned int idx; +} vp_sort_tmp; + +typedef struct vp_search_tmp { + float distance; + float distance_squared; + unsigned int idx; + int exclude; +} vp_search_tmp; + +struct leaf { + f_pixel color; + unsigned int idx; +}; + +typedef struct vp_node { + struct vp_node *near, *far; + f_pixel vantage_point; + float radius, radius_squared; + struct leaf *rest; + unsigned short idx; + unsigned short restcount; +} vp_node; + +struct nearest_map { + vp_node *root; + const colormap_item *palette; + float nearest_other_color_dist[256]; + mempoolptr mempool; +}; + +static void vp_search_node(const vp_node *node, const f_pixel *const needle, vp_search_tmp *const best_candidate); + +static int vp_compare_distance(const void *ap, const void *bp) { + float a = ((const vp_sort_tmp*)ap)->distance_squared; + float b = ((const vp_sort_tmp*)bp)->distance_squared; + return a > b ? 1 : -1; +} + +static void vp_sort_indexes_by_distance(const f_pixel vantage_point, vp_sort_tmp indexes[], int num_indexes, const colormap_item items[]) { + for(int i=0; i < num_indexes; i++) { + indexes[i].distance_squared = colordifference(vantage_point, items[indexes[i].idx].acolor); + } + qsort(indexes, num_indexes, sizeof(indexes[0]), vp_compare_distance); +} + +/* + * Usually it should pick farthest point, but picking most popular point seems to make search quicker anyway + */ +static int vp_find_best_vantage_point_index(vp_sort_tmp indexes[], int num_indexes, const colormap_item items[]) { + int best = 0; + float best_popularity = items[indexes[0].idx].popularity; + for(int i = 1; i < num_indexes; i++) { + if (items[indexes[i].idx].popularity > best_popularity) { + best_popularity = items[indexes[i].idx].popularity; + best = i; + } + } + return best; +} + +static vp_node *vp_create_node(mempoolptr *m, vp_sort_tmp indexes[], int num_indexes, const colormap_item items[]) { + if (num_indexes <= 0) { + return NULL; + } + + vp_node *node = mempool_alloc(m, sizeof(node[0]), 0); + + if (num_indexes == 1) { + *node = (vp_node){ + .vantage_point = items[indexes[0].idx].acolor, + .idx = indexes[0].idx, + .radius = MAX_DIFF, + .radius_squared = MAX_DIFF, + }; + return node; + } + + const int ref = vp_find_best_vantage_point_index(indexes, num_indexes, items); + const int ref_idx = indexes[ref].idx; + + // Removes the `ref_idx` item from remaining items, because it's included in the current node + num_indexes -= 1; + indexes[ref] = indexes[num_indexes]; + + vp_sort_indexes_by_distance(items[ref_idx].acolor, indexes, num_indexes, items); + + // Remaining items are split by the median distance + const int half_idx = num_indexes/2; + + *node = (vp_node){ + .vantage_point = items[ref_idx].acolor, + .idx = ref_idx, + .radius = sqrtf(indexes[half_idx].distance_squared), + .radius_squared = indexes[half_idx].distance_squared, + }; + if (num_indexes < 7) { + node->rest = mempool_alloc(m, sizeof(node->rest[0]) * num_indexes, 0); + node->restcount = num_indexes; + for(int i=0; i < num_indexes; i++) { + node->rest[i].idx = indexes[i].idx; + node->rest[i].color = items[indexes[i].idx].acolor; + } + } else { + node->near = vp_create_node(m, indexes, half_idx, items); + node->far = vp_create_node(m, &indexes[half_idx], num_indexes - half_idx, items); + } + + return node; +} + +LIQ_PRIVATE struct nearest_map *nearest_init(const colormap *map) { + mempoolptr m = NULL; + struct nearest_map *handle = mempool_create(&m, sizeof(handle[0]), sizeof(handle[0]) + sizeof(vp_node)*map->colors+16, map->malloc, map->free); + + LIQ_ARRAY(vp_sort_tmp, indexes, map->colors); + + for(unsigned int i=0; i < map->colors; i++) { + indexes[i].idx = i; + } + + vp_node *root = vp_create_node(&m, indexes, map->colors, map->palette); + *handle = (struct nearest_map){ + .root = root, + .palette = map->palette, + .mempool = m, + }; + + for(unsigned int i=0; i < map->colors; i++) { + vp_search_tmp best = { + .distance = MAX_DIFF, + .distance_squared = MAX_DIFF, + .exclude = i, + }; + vp_search_node(root, &map->palette[i].acolor, &best); + handle->nearest_other_color_dist[i] = best.distance * best.distance / 4.f; // half of squared distance + } + + return handle; +} + +static void vp_search_node(const vp_node *node, const f_pixel *const needle, vp_search_tmp *const best_candidate) { + do { + const float distance_squared = colordifference(node->vantage_point, *needle); + const float distance = sqrtf(distance_squared); + + if (distance_squared < best_candidate->distance_squared && best_candidate->exclude != node->idx) { + best_candidate->distance = distance; + best_candidate->distance_squared = distance_squared; + best_candidate->idx = node->idx; + } + + if (node->restcount) { + for(int i=0; i < node->restcount; i++) { + const float distance_squared = colordifference(node->rest[i].color, *needle); + if (distance_squared < best_candidate->distance_squared && best_candidate->exclude != node->rest[i].idx) { + best_candidate->distance = sqrtf(distance_squared); + best_candidate->distance_squared = distance_squared; + best_candidate->idx = node->rest[i].idx; + } + } + return; + } + + // Recurse towards most likely candidate first to narrow best candidate's distance as soon as possible + if (distance_squared < node->radius_squared) { + if (node->near) { + vp_search_node(node->near, needle, best_candidate); + } + // The best node (final answer) may be just ouside the radius, but not farther than + // the best distance we know so far. The vp_search_node above should have narrowed + // best_candidate->distance, so this path is rarely taken. + if (node->far && distance >= node->radius - best_candidate->distance) { + node = node->far; // Fast tail recursion + } else { + return; + } + } else { + if (node->far) { + vp_search_node(node->far, needle, best_candidate); + } + if (node->near && distance <= node->radius + best_candidate->distance) { + node = node->near; // Fast tail recursion + } else { + return; + } + } + } while(true); +} + +LIQ_PRIVATE unsigned int nearest_search(const struct nearest_map *handle, const f_pixel *px, const int likely_colormap_index, float *diff) { + const float guess_diff = colordifference(handle->palette[likely_colormap_index].acolor, *px); + if (guess_diff < handle->nearest_other_color_dist[likely_colormap_index]) { + if (diff) *diff = guess_diff; + return likely_colormap_index; + } + + vp_search_tmp best_candidate = { + .distance = sqrtf(guess_diff), + .distance_squared = guess_diff, + .idx = likely_colormap_index, + .exclude = -1, + }; + vp_search_node(handle->root, px, &best_candidate); + if (diff) { + *diff = best_candidate.distance * best_candidate.distance; + } + return best_candidate.idx; +} + +LIQ_PRIVATE void nearest_free(struct nearest_map *centroids) +{ + mempool_destroy(centroids->mempool); +} diff --git a/tools/assets/n64texconv/lib/libimagequant/nearest.h b/tools/assets/n64texconv/lib/libimagequant/nearest.h new file mode 100644 index 0000000000..10a0a2c1b9 --- /dev/null +++ b/tools/assets/n64texconv/lib/libimagequant/nearest.h @@ -0,0 +1,14 @@ +// +// nearest.h +// pngquant +// + +#ifndef NEAREST_H +#define NEAREST_H + +struct nearest_map; +LIQ_PRIVATE struct nearest_map *nearest_init(const colormap *palette); +LIQ_PRIVATE unsigned int nearest_search(const struct nearest_map *map, const f_pixel *px, const int palette_index_guess, float *diff); +LIQ_PRIVATE void nearest_free(struct nearest_map *map); + +#endif diff --git a/tools/assets/n64texconv/lib/libimagequant/pam.c b/tools/assets/n64texconv/lib/libimagequant/pam.c new file mode 100644 index 0000000000..5d955e1eb1 --- /dev/null +++ b/tools/assets/n64texconv/lib/libimagequant/pam.c @@ -0,0 +1,351 @@ +/* pam.c - pam (portable alpha map) utility library +** +** © 2009-2017 by Kornel Lesiński. +** © 1989, 1991 by Jef Poskanzer. +** © 1997, 2000, 2002 by Greg Roelofs; based on an idea by Stefan Schneider. +** +** See COPYRIGHT file for license. +*/ + +#include +#include + +#include "libimagequant.h" +#include "pam.h" +#include "mempool.h" + +LIQ_PRIVATE bool pam_computeacolorhash(struct acolorhash_table *acht, const liq_color *const pixels[], unsigned int cols, unsigned int rows, const unsigned char *importance_map) +{ + const unsigned int ignorebits = acht->ignorebits; + const unsigned int channel_mask = 255U>>ignorebits<>ignorebits) ^ 0xFFU; + const unsigned int posterize_mask = channel_mask << 24 | channel_mask << 16 | channel_mask << 8 | channel_mask; + const unsigned int posterize_high_mask = channel_hmask << 24 | channel_hmask << 16 | channel_hmask << 8 | channel_hmask; + + const unsigned int hash_size = acht->hash_size; + + /* Go through the entire image, building a hash table of colors. */ + for(unsigned int row = 0; row < rows; ++row) { + + for(unsigned int col = 0; col < cols; ++col) { + unsigned int boost; + + // RGBA color is casted to long for easier hasing/comparisons + union rgba_as_int px = {pixels[row][col]}; + unsigned int hash; + if (px.rgba.a) { + // mask posterizes all 4 channels in one go + px.l = (px.l & posterize_mask) | ((px.l & posterize_high_mask) >> (8-ignorebits)); + // fancier hashing algorithms didn't improve much + hash = px.l % hash_size; + + if (importance_map) { + boost = *importance_map++; + } else { + boost = 255; + } + } else { + // "dirty alpha" has different RGBA values that end up being the same fully transparent color + px.l=0; hash=0; + + boost = 2000; + if (importance_map) { + importance_map++; + } + } + + if (!pam_add_to_hash(acht, hash, boost, px, row, rows)) { + return false; + } + } + } + acht->cols = cols; + acht->rows += rows; + return true; +} + +LIQ_PRIVATE bool pam_add_to_hash(struct acolorhash_table *acht, unsigned int hash, unsigned int boost, union rgba_as_int px, unsigned int row, unsigned int rows) +{ + /* head of the hash function stores first 2 colors inline (achl->used = 1..2), + to reduce number of allocations of achl->other_items. + */ + struct acolorhist_arr_head *achl = &acht->buckets[hash]; + if (achl->inline1.color.l == px.l && achl->used) { + achl->inline1.perceptual_weight += boost; + return true; + } + if (achl->used) { + if (achl->used > 1) { + if (achl->inline2.color.l == px.l) { + achl->inline2.perceptual_weight += boost; + return true; + } + // other items are stored as an array (which gets reallocated if needed) + struct acolorhist_arr_item *other_items = achl->other_items; + unsigned int i = 0; + for (; i < achl->used-2; i++) { + if (other_items[i].color.l == px.l) { + other_items[i].perceptual_weight += boost; + return true; + } + } + + // the array was allocated with spare items + if (i < achl->capacity) { + other_items[i] = (struct acolorhist_arr_item){ + .color = px, + .perceptual_weight = boost, + }; + achl->used++; + ++acht->colors; + return true; + } + + if (++acht->colors > acht->maxcolors) { + return false; + } + + struct acolorhist_arr_item *new_items; + unsigned int capacity; + if (!other_items) { // there was no array previously, alloc "small" array + capacity = 8; + if (acht->freestackp <= 0) { + // estimate how many colors are going to be + headroom + const size_t mempool_size = ((acht->rows + rows-row) * 2 * acht->colors / (acht->rows + row + 1) + 1024) * sizeof(struct acolorhist_arr_item); + new_items = mempool_alloc(&acht->mempool, sizeof(struct acolorhist_arr_item)*capacity, mempool_size); + } else { + // freestack stores previously freed (reallocated) arrays that can be reused + // (all pesimistically assumed to be capacity = 8) + new_items = acht->freestack[--acht->freestackp]; + } + } else { + const unsigned int stacksize = sizeof(acht->freestack)/sizeof(acht->freestack[0]); + + // simply reallocs and copies array to larger capacity + capacity = achl->capacity*2 + 16; + if (acht->freestackp < stacksize-1) { + acht->freestack[acht->freestackp++] = other_items; + } + const size_t mempool_size = ((acht->rows + rows-row) * 2 * acht->colors / (acht->rows + row + 1) + 32*capacity) * sizeof(struct acolorhist_arr_item); + new_items = mempool_alloc(&acht->mempool, sizeof(struct acolorhist_arr_item)*capacity, mempool_size); + if (!new_items) return false; + memcpy(new_items, other_items, sizeof(other_items[0])*achl->capacity); + } + + achl->other_items = new_items; + achl->capacity = capacity; + new_items[i] = (struct acolorhist_arr_item){ + .color = px, + .perceptual_weight = boost, + }; + achl->used++; + } else { + // these are elses for first checks whether first and second inline-stored colors are used + achl->inline2.color.l = px.l; + achl->inline2.perceptual_weight = boost; + achl->used = 2; + ++acht->colors; + } + } else { + achl->inline1.color.l = px.l; + achl->inline1.perceptual_weight = boost; + achl->used = 1; + ++acht->colors; + } + return true; +} + +LIQ_PRIVATE struct acolorhash_table *pam_allocacolorhash(unsigned int maxcolors, unsigned int surface, unsigned int ignorebits, void* (*malloc)(size_t), void (*free)(void*)) +{ + const size_t estimated_colors = MIN(maxcolors, surface/(ignorebits + (surface > 512*512 ? 6 : 5))); + const size_t hash_size = estimated_colors < 66000 ? 6673 : (estimated_colors < 200000 ? 12011 : 24019); + + mempoolptr m = NULL; + const size_t buckets_size = hash_size * sizeof(struct acolorhist_arr_head); + const size_t mempool_size = sizeof(struct acolorhash_table) + buckets_size + estimated_colors * sizeof(struct acolorhist_arr_item); + struct acolorhash_table *t = mempool_create(&m, sizeof(*t) + buckets_size, mempool_size, malloc, free); + if (!t) return NULL; + *t = (struct acolorhash_table){ + .mempool = m, + .hash_size = hash_size, + .maxcolors = maxcolors, + .ignorebits = ignorebits, + }; + memset(t->buckets, 0, buckets_size); + return t; +} + +ALWAYS_INLINE static float pam_add_to_hist(struct temp_hist_item achv[], unsigned int *j, const struct acolorhist_arr_item *entry, const float max_perceptual_weight, int counts[]) +{ + if (entry->perceptual_weight == 0 && *j > 0) { + return 0; + } + const liq_color px = entry->color.rgba; + achv[*j].color = px; + const short cluster = ((px.r>>7)<<3) | ((px.g>>7)<<2) | ((px.b>>7)<<1) | (px.a>>7); + counts[cluster]++; + achv[*j].cluster = cluster; + const float w = MIN(entry->perceptual_weight/170.f, max_perceptual_weight); + achv[*j].weight = w; + *j += 1; + return w; +} + +LIQ_PRIVATE histogram *pam_acolorhashtoacolorhist(const struct acolorhash_table *acht, const double gamma, void* (*malloc)(size_t), void (*free)(void*)) +{ + histogram *hist = malloc(sizeof(hist[0])); + if (!hist || !acht) return NULL; + *hist = (histogram){ + .achv = malloc(MAX(1,acht->colors) * sizeof(hist->achv[0])), + .size = acht->colors, + .free = free, + .ignorebits = acht->ignorebits, + }; + if (!hist->achv) return NULL; + + /// Clusters form initial boxes for quantization, to ensure extreme colors are better represented + int counts[LIQ_MAXCLUSTER] = {}; + struct temp_hist_item *temp = malloc(MAX(1, acht->colors) * sizeof(temp[0])); + + /* Limit perceptual weight to 1/10th of the image surface area to prevent + a single color from dominating all others. */ + float max_perceptual_weight = 0.1f * acht->cols * acht->rows; + double total_weight = 0; + + unsigned int j=0; + for(unsigned int i=0; i < acht->hash_size; ++i) { + const struct acolorhist_arr_head *const achl = &acht->buckets[i]; + if (achl->used) { + total_weight += pam_add_to_hist(temp, &j, &achl->inline1, max_perceptual_weight, counts); + + if (achl->used > 1) { + total_weight += pam_add_to_hist(temp, &j, &achl->inline2, max_perceptual_weight, counts); + + for(unsigned int k=0; k < achl->used-2; k++) { + total_weight += pam_add_to_hist(temp, &j, &achl->other_items[k], max_perceptual_weight, counts); + } + } + } + } + hist->total_perceptual_weight = total_weight; + + int begin = 0; + for(int i=0; i < LIQ_MAXCLUSTER; i++) { + hist->boxes[i].begin = begin; + hist->boxes[i].end = begin; + begin = begin + counts[i]; + } + + hist->size = j; + hist->total_perceptual_weight = total_weight; + for(unsigned int k=0; k < hist->size; k++) { + hist->achv[k].tmp.likely_colormap_index = 0; + } + if (!j) { + free(temp); + pam_freeacolorhist(hist); + return NULL; + } + + float gamma_lut[256]; + to_f_set_gamma(gamma_lut, gamma); + for(int i=0; i < hist->size; i++) { + int j = hist->boxes[temp[i].cluster].end++; + hist->achv[j].acolor = rgba_to_f(gamma_lut, temp[i].color); + hist->achv[j].perceptual_weight = temp[i].weight; + hist->achv[j].adjusted_weight = temp[i].weight; + } + free(temp); + + return hist; +} + + +LIQ_PRIVATE void pam_freeacolorhash(struct acolorhash_table *acht) +{ + if (acht) { + mempool_destroy(acht->mempool); + } +} + +LIQ_PRIVATE void pam_freeacolorhist(histogram *hist) +{ + hist->free(hist->achv); + hist->free(hist); +} + +LIQ_PRIVATE LIQ_NONNULL colormap *pam_colormap(unsigned int colors, void* (*malloc)(size_t), void (*free)(void*)) +{ + assert(colors > 0 && colors < 65536); + + colormap *map; + const size_t colors_size = colors * sizeof(map->palette[0]); + map = malloc(sizeof(colormap) + colors_size); + if (!map) return NULL; + *map = (colormap){ + .malloc = malloc, + .free = free, + .colors = colors, + }; + memset(map->palette, 0, colors_size); + return map; +} + +LIQ_PRIVATE colormap *pam_duplicate_colormap(colormap *map) +{ + colormap *dupe = pam_colormap(map->colors, map->malloc, map->free); + for(unsigned int i=0; i < map->colors; i++) { + dupe->palette[i] = map->palette[i]; + } + return dupe; +} + +LIQ_PRIVATE void pam_freecolormap(colormap *c) +{ + c->free(c); +} + +LIQ_PRIVATE void to_f_set_gamma(float gamma_lut[], const double gamma) +{ + for(int i=0; i < 256; i++) { + gamma_lut[i] = pow((double)i/255.0, internal_gamma/gamma); + } +} + + +/* fixed colors are always included in the palette, so it would be wasteful to duplicate them in palette from histogram */ +LIQ_PRIVATE LIQ_NONNULL void remove_fixed_colors_from_histogram(histogram *hist, const int fixed_colors_count, const f_pixel fixed_colors[], const float target_mse) +{ + const float max_difference = MAX(target_mse/2.f, 2.f/256.f/256.f); + if (fixed_colors_count) { + for(int j=0; j < hist->size; j++) { + for(unsigned int i=0; i < fixed_colors_count; i++) { + if (colordifference(hist->achv[j].acolor, fixed_colors[i]) < max_difference) { + hist->achv[j] = hist->achv[--hist->size]; // remove color from histogram by overwriting with the last entry + j--; break; // continue searching histogram + } + } + } + } +} + +LIQ_PRIVATE LIQ_NONNULL colormap *histogram_to_palette(const histogram *hist, void* (*malloc)(size_t), void (*free)(void*)) { + if (!hist->size) { + return NULL; + } + colormap *acolormap = pam_colormap(hist->size, malloc, free); + for(unsigned int i=0; i < hist->size; i++) { + acolormap->palette[i].acolor = hist->achv[i].acolor; + acolormap->palette[i].popularity = hist->achv[i].perceptual_weight; + } + return acolormap; +} + +LIQ_PRIVATE LIQ_NONNULL void hist_reset_colors(const histogram *hist, const unsigned int colors) { + // likely_colormap_index (used and set in kmeans_do_iteration) can't point to index outside colormap + if (colors < 256) for(unsigned int j=0; j < hist->size; j++) { + if (hist->achv[j].tmp.likely_colormap_index >= colors) { + hist->achv[j].tmp.likely_colormap_index = 0; // actual value doesn't matter, as the guess is out of date anyway + } + } +} diff --git a/tools/assets/n64texconv/lib/libimagequant/pam.h b/tools/assets/n64texconv/lib/libimagequant/pam.h new file mode 100644 index 0000000000..4ab4e0de21 --- /dev/null +++ b/tools/assets/n64texconv/lib/libimagequant/pam.h @@ -0,0 +1,312 @@ +/* pam.h - pam (portable alpha map) utility library + ** + ** Colormap routines. + ** + ** Copyright (C) 1989, 1991 by Jef Poskanzer. + ** Copyright (C) 1997 by Greg Roelofs. + ** + ** Permission to use, copy, modify, and distribute this software and its + ** documentation for any purpose and without fee is hereby granted, provided + ** that the above copyright notice appear in all copies and that both that + ** copyright notice and this permission notice appear in supporting + ** documentation. This software is provided "as is" without express or + ** implied warranty. + */ + +#ifndef PAM_H +#define PAM_H + +// accidental debug assertions make color search much slower, +// so force assertions off if there's no explicit setting +#if !defined(NDEBUG) && !defined(DEBUG) +#define NDEBUG +#endif + +#include +#include +#include +#include + +#ifndef MAX +# define MAX(a,b) ((a) > (b)? (a) : (b)) +# define MIN(a,b) ((a) < (b)? (a) : (b)) +#endif + +#define MAX_DIFF 1e20 + +#ifndef USE_SSE +# if defined(__SSE__) && (defined(__amd64__) || defined(__X86_64__) || defined(_WIN64) || defined(WIN32) || defined(__WIN32__)) +# define USE_SSE 1 +# else +# define USE_SSE 0 +# endif +#endif + +#if USE_SSE +# include +# ifdef _MSC_VER +# include +# define SSE_ALIGN +# else +# define SSE_ALIGN __attribute__ ((aligned (16))) +# if defined(__i386__) && defined(__PIC__) +# define cpuid(func,ax,bx,cx,dx)\ + __asm__ __volatile__ ( \ + "push %%ebx\n" \ + "cpuid\n" \ + "mov %%ebx, %1\n" \ + "pop %%ebx\n" \ + : "=a" (ax), "=r" (bx), "=c" (cx), "=d" (dx) \ + : "a" (func)); +# else +# define cpuid(func,ax,bx,cx,dx)\ + __asm__ __volatile__ ("cpuid":\ + "=a" (ax), "=b" (bx), "=c" (cx), "=d" (dx) : "a" (func)); +# endif +#endif +#else +# define SSE_ALIGN +#endif + +#ifndef _MSC_VER +#define LIQ_ARRAY(type, var, count) type var[count] +#else +#define LIQ_ARRAY(type, var, count) type* var = (type*)_alloca(sizeof(type)*(count)) +#endif + +#if defined(__GNUC__) || defined (__llvm__) +#define ALWAYS_INLINE __attribute__((always_inline)) inline +#define NEVER_INLINE __attribute__ ((noinline)) +#elif defined(_MSC_VER) +#define inline __inline +#define restrict __restrict +#define ALWAYS_INLINE __forceinline +#define NEVER_INLINE __declspec(noinline) +#else +#define ALWAYS_INLINE inline +#define NEVER_INLINE +#endif + +/* from pam.h */ + +typedef struct { + float a, r, g, b; +} SSE_ALIGN f_pixel; + +static const float internal_gamma = 0.57f; + +LIQ_PRIVATE void to_f_set_gamma(float gamma_lut[], const double gamma); + +#define MIN_OPAQUE_A (1.f / 256.f * LIQ_WEIGHT_A) + +#define LIQ_WEIGHT_A 0.625f +#define LIQ_WEIGHT_R 0.5f +#define LIQ_WEIGHT_G 1.0f +#define LIQ_WEIGHT_B 0.45f +#define LIQ_WEIGHT_MSE 0.45 // fudge factor for compensating that colors aren't 0..1 range + +/** + Converts 8-bit color to internal gamma and premultiplied alpha. + (premultiplied color space is much better for blending of semitransparent colors) + */ +ALWAYS_INLINE static f_pixel rgba_to_f(const float gamma_lut[], const liq_color px); +inline static f_pixel rgba_to_f(const float gamma_lut[], const liq_color px) +{ + float a = px.a/255.f; + + return (f_pixel) { + .a = a * LIQ_WEIGHT_A, + .r = gamma_lut[px.r] * LIQ_WEIGHT_R * a, + .g = gamma_lut[px.g] * LIQ_WEIGHT_G * a, + .b = gamma_lut[px.b] * LIQ_WEIGHT_B * a, + }; +} + +inline static liq_color f_to_rgb(const float gamma, const f_pixel px) +{ + if (px.a < MIN_OPAQUE_A) { + return (liq_color){0,0,0,0}; + } + + float r = (LIQ_WEIGHT_A / LIQ_WEIGHT_R) * px.r / px.a, + g = (LIQ_WEIGHT_A / LIQ_WEIGHT_G) * px.g / px.a, + b = (LIQ_WEIGHT_A / LIQ_WEIGHT_B) * px.b / px.a; + + r = powf(r, gamma/internal_gamma); + g = powf(g, gamma/internal_gamma); + b = powf(b, gamma/internal_gamma); + + // 256, because numbers are in range 1..255.9999… rounded down + r *= 256.f; + g *= 256.f; + b *= 256.f; + float a = (256.f / LIQ_WEIGHT_A) * px.a; + + return (liq_color){ + .r = r>=255.f ? 255 : r, + .g = g>=255.f ? 255 : g, + .b = b>=255.f ? 255 : b, + .a = a>=255.f ? 255 : a, + }; +} + +ALWAYS_INLINE static float colordifference_ch(const float x, const float y, const float alphas); +inline static float colordifference_ch(const float x, const float y, const float alphas) +{ + // maximum of channel blended on white, and blended on black + // premultiplied alpha and backgrounds 0/1 shorten the formula + const float black = x-y, white = black+alphas; + return MAX(black*black, white*white); +} + +ALWAYS_INLINE static float colordifference_stdc(const f_pixel px, const f_pixel py); +inline static float colordifference_stdc(const f_pixel px, const f_pixel py) +{ + // px_b.rgb = px.rgb + 0*(1-px.a) // blend px on black + // px_b.a = px.a + 1*(1-px.a) + // px_w.rgb = px.rgb + 1*(1-px.a) // blend px on white + // px_w.a = px.a + 1*(1-px.a) + + // px_b.rgb = px.rgb // difference same as in opaque RGB + // px_b.a = 1 + // px_w.rgb = px.rgb - px.a // difference simplifies to formula below + // px_w.a = 1 + + // (px.rgb - px.a) - (py.rgb - py.a) + // (px.rgb - py.rgb) + (py.a - px.a) + + const float alphas = py.a-px.a; + return colordifference_ch(px.r, py.r, alphas) + + colordifference_ch(px.g, py.g, alphas) + + colordifference_ch(px.b, py.b, alphas); +} + +ALWAYS_INLINE static float colordifference(f_pixel px, f_pixel py); +inline static float colordifference(f_pixel px, f_pixel py) +{ +#if USE_SSE +#ifdef _MSC_VER + /* In MSVC we cannot use the align attribute in parameters. + * This is used a lot, so we just use an unaligned load. + * Also the compiler incorrectly inlines vpx and vpy without + * the volatile when optimization is applied for x86_64. */ + const volatile __m128 vpx = _mm_loadu_ps((const float*)&px); + const volatile __m128 vpy = _mm_loadu_ps((const float*)&py); +#else + const __m128 vpx = _mm_load_ps((const float*)&px); + const __m128 vpy = _mm_load_ps((const float*)&py); +#endif + + // y.a - x.a + __m128 alphas = _mm_sub_ss(vpy, vpx); + alphas = _mm_shuffle_ps(alphas,alphas,0); // copy first to all four + + __m128 onblack = _mm_sub_ps(vpx, vpy); // x - y + __m128 onwhite = _mm_add_ps(onblack, alphas); // x - y + (y.a - x.a) + + onblack = _mm_mul_ps(onblack, onblack); + onwhite = _mm_mul_ps(onwhite, onwhite); + const __m128 max = _mm_max_ps(onwhite, onblack); + + // add rgb, not a + const __m128 maxhl = _mm_movehl_ps(max, max); + const __m128 tmp = _mm_add_ps(max, maxhl); + const __m128 sum = _mm_add_ss(maxhl, _mm_shuffle_ps(tmp, tmp, 1)); + + const float res = _mm_cvtss_f32(sum); + assert(fabs(res - colordifference_stdc(px,py)) < 0.001); + return res; +#else + return colordifference_stdc(px,py); +#endif +} + +/* from pamcmap.h */ +union rgba_as_int { + liq_color rgba; + unsigned int l; +}; + +typedef struct { + f_pixel acolor; + float adjusted_weight, // perceptual weight changed to tweak how mediancut selects colors + perceptual_weight; // number of pixels weighted by importance of different areas of the picture + + float color_weight; // these two change every time histogram subset is sorted + union { + unsigned int sort_value; + unsigned char likely_colormap_index; + } tmp; +} hist_item; + +#define LIQ_MAXCLUSTER 16 + +struct temp_hist_item { + liq_color color; + float weight; + short cluster; +}; + +struct histogram_box { + int begin, end; +}; + +typedef struct { + hist_item *achv; + void (*free)(void*); + double total_perceptual_weight; + unsigned int size; + unsigned int ignorebits; + struct histogram_box boxes[LIQ_MAXCLUSTER]; +} histogram; + +typedef struct { + f_pixel acolor; + float popularity; + bool fixed; // if true it's user-supplied and must not be changed (e.g in K-Means iteration) +} colormap_item; + +typedef struct colormap { + unsigned int colors; + void* (*malloc)(size_t); + void (*free)(void*); + colormap_item palette[]; +} colormap; + +struct acolorhist_arr_item { + union rgba_as_int color; + unsigned int perceptual_weight; +}; + +struct acolorhist_arr_head { + struct acolorhist_arr_item inline1, inline2; + unsigned int used, capacity; + struct acolorhist_arr_item *other_items; +}; + +struct acolorhash_table { + struct mempool *mempool; + unsigned int ignorebits, maxcolors, colors, cols, rows; + unsigned int hash_size; + unsigned int freestackp; + struct acolorhist_arr_item *freestack[512]; + struct acolorhist_arr_head buckets[]; +}; + +LIQ_PRIVATE void pam_freeacolorhash(struct acolorhash_table *acht); +LIQ_PRIVATE struct acolorhash_table *pam_allocacolorhash(unsigned int maxcolors, unsigned int surface, unsigned int ignorebits, void* (*malloc)(size_t), void (*free)(void*)); +LIQ_PRIVATE histogram *pam_acolorhashtoacolorhist(const struct acolorhash_table *acht, const double gamma, void* (*malloc)(size_t), void (*free)(void*)); +LIQ_PRIVATE bool pam_computeacolorhash(struct acolorhash_table *acht, const liq_color *const pixels[], unsigned int cols, unsigned int rows, const unsigned char *importance_map); +LIQ_PRIVATE bool pam_add_to_hash(struct acolorhash_table *acht, unsigned int hash, unsigned int boost, union rgba_as_int px, unsigned int row, unsigned int rows); + +LIQ_PRIVATE void pam_freeacolorhist(histogram *h); + +LIQ_PRIVATE colormap *pam_colormap(unsigned int colors, void* (*malloc)(size_t), void (*free)(void*)) LIQ_NONNULL; +LIQ_PRIVATE colormap *pam_duplicate_colormap(colormap *map) LIQ_NONNULL; +LIQ_PRIVATE void pam_freecolormap(colormap *c); + +LIQ_PRIVATE void remove_fixed_colors_from_histogram(histogram *hist, const int fixed_colors_count, const f_pixel fixed_colors[], const float target_mse) LIQ_NONNULL; +LIQ_PRIVATE colormap *histogram_to_palette(const histogram *hist, void* (*malloc)(size_t), void (*free)(void*)) LIQ_NONNULL; +LIQ_PRIVATE void hist_reset_colors(const histogram *hist, const unsigned int colors) LIQ_NONNULL; + +#endif diff --git a/tools/assets/n64texconv/lib/libimagequant/remap.c b/tools/assets/n64texconv/lib/libimagequant/remap.c new file mode 100644 index 0000000000..4495810132 --- /dev/null +++ b/tools/assets/n64texconv/lib/libimagequant/remap.c @@ -0,0 +1,300 @@ +#include +#include + +#include "libimagequant.h" +#include "pam.h" +#include "libimagequant_private.h" + +#include "nearest.h" +#include "kmeans.h" + +LIQ_PRIVATE LIQ_NONNULL float remap_to_palette(liq_image *const input_image, unsigned char *const *const output_pixels, colormap *const map) +{ + const int rows = input_image->height; + const unsigned int cols = input_image->width; + double remapping_error=0; + + if (!liq_image_get_row_f_init(input_image)) { + return -1; + } + if (input_image->background && !liq_image_get_row_f_init(input_image->background)) { + return -1; + } + + const colormap_item *acolormap = map->palette; + + struct nearest_map *const n = nearest_init(map); + liq_image *background = input_image->background; + const int transparent_index = background ? nearest_search(n, &(f_pixel){0,0,0,0}, 0, NULL) : -1; + if (background && acolormap[transparent_index].acolor.a > 1.f/256.f) { + // palette unsuitable for using the bg + background = NULL; + } + + + const unsigned int max_threads = omp_get_max_threads(); + LIQ_ARRAY(kmeans_state, average_color, (KMEANS_CACHE_LINE_GAP+map->colors) * max_threads); + kmeans_init(map, max_threads, average_color); + +#if __GNUC__ >= 9 || __clang__ + #pragma omp parallel for if (rows*cols > 3000) \ + schedule(static) default(none) shared(background,acolormap,average_color,cols,input_image,map,n,output_pixels,rows,transparent_index) reduction(+:remapping_error) +#endif + for(int row = 0; row < rows; ++row) { + const f_pixel *const row_pixels = liq_image_get_row_f(input_image, row); + const f_pixel *const bg_pixels = background && acolormap[transparent_index].acolor.a < MIN_OPAQUE_A ? liq_image_get_row_f(background, row) : NULL; + + unsigned int last_match=0; + for(unsigned int col = 0; col < cols; ++col) { + float diff; + last_match = nearest_search(n, &row_pixels[col], last_match, &diff); + if (bg_pixels) { + float bg_diff = colordifference(bg_pixels[col], acolormap[last_match].acolor); + if (bg_diff <= diff) { + diff = bg_diff; + last_match = transparent_index; + } + } + output_pixels[row][col] = last_match; + + remapping_error += diff; + if (last_match != transparent_index) { + kmeans_update_color(row_pixels[col], 1.0, map, last_match, omp_get_thread_num(), average_color); + } + } + } + + kmeans_finalize(map, max_threads, average_color); + + nearest_free(n); + + return remapping_error / (input_image->width * input_image->height); +} + +inline static f_pixel get_dithered_pixel(const float dither_level, const float max_dither_error, const f_pixel thiserr, const f_pixel px) +{ + /* Use Floyd-Steinberg errors to adjust actual color. */ + const float sr = thiserr.r * dither_level, + sg = thiserr.g * dither_level, + sb = thiserr.b * dither_level, + sa = thiserr.a * dither_level; + + float ratio = 1.0; + const float max_overflow = 1.1f; + const float max_underflow = -0.1f; + + // allowing some overflow prevents undithered bands caused by clamping of all channels + if (px.r + sr > max_overflow) ratio = MIN(ratio, (max_overflow -px.r)/sr); + else { if (px.r + sr < max_underflow) ratio = MIN(ratio, (max_underflow-px.r)/sr); } + if (px.g + sg > max_overflow) ratio = MIN(ratio, (max_overflow -px.g)/sg); + else { if (px.g + sg < max_underflow) ratio = MIN(ratio, (max_underflow-px.g)/sg); } + if (px.b + sb > max_overflow) ratio = MIN(ratio, (max_overflow -px.b)/sb); + else { if (px.b + sb < max_underflow) ratio = MIN(ratio, (max_underflow-px.b)/sb); } + + float a = px.a + sa; + if (a > 1.f) { a = 1.f; } + else if (a < 0) { a = 0; } + + // If dithering error is crazy high, don't propagate it that much + // This prevents crazy geen pixels popping out of the blue (or red or black! ;) + const float dither_error = sr*sr + sg*sg + sb*sb + sa*sa; + if (dither_error > max_dither_error) { + ratio *= 0.8f; + } else if (dither_error < 2.f/256.f/256.f) { + // don't dither areas that don't have noticeable error — makes file smaller + return px; + } + + return (f_pixel) { + .r=px.r + sr * ratio, + .g=px.g + sg * ratio, + .b=px.b + sb * ratio, + .a=a, + }; +} + +/** + Uses edge/noise map to apply dithering only to flat areas. Dithering on edges creates jagged lines, and noisy areas are "naturally" dithered. + + If output_image_is_remapped is true, only pixels noticeably changed by error diffusion will be written to output image. + */ +LIQ_PRIVATE LIQ_NONNULL bool remap_to_palette_floyd(liq_image *input_image, unsigned char *const output_pixels[], liq_remapping_result *quant, const float max_dither_error, const bool output_image_is_remapped) +{ + const int rows = input_image->height, cols = input_image->width; + const unsigned char *dither_map = quant->use_dither_map ? (input_image->dither_map ? input_image->dither_map : input_image->edges) : NULL; + + const colormap *map = quant->palette; + const colormap_item *acolormap = map->palette; + + if (!liq_image_get_row_f_init(input_image)) { + return false; + } + if (input_image->background && !liq_image_get_row_f_init(input_image->background)) { + return false; + } + + /* Initialize Floyd-Steinberg error vectors. */ + const size_t errwidth = cols+2; + f_pixel *restrict thiserr = input_image->malloc(errwidth * sizeof(thiserr[0]) * 2); // +2 saves from checking out of bounds access + if (!thiserr) return false; + f_pixel *restrict nexterr = thiserr + errwidth; + memset(thiserr, 0, errwidth * sizeof(thiserr[0])); + + bool ok = true; + struct nearest_map *const n = nearest_init(map); + liq_image *background = input_image->background; + const int transparent_index = background ? nearest_search(n, &(f_pixel){0,0,0,0}, 0, NULL) : -1; + if (background && acolormap[transparent_index].acolor.a > 1.f/256.f) { + // palette unsuitable for using the bg + background = NULL; + } + + // response to this value is non-linear and without it any value < 0.8 would give almost no dithering + float base_dithering_level = quant->dither_level; + base_dithering_level = 1.f - (1.f-base_dithering_level)*(1.f-base_dithering_level); + + if (dither_map) { + base_dithering_level *= 1.f/255.f; // convert byte to float + } + base_dithering_level *= 15.f/16.f; // prevent small errors from accumulating + + int fs_direction = 1; + unsigned int last_match=0; + for (int row = 0; row < rows; ++row) { + if (liq_remap_progress(quant, quant->progress_stage1 + row * (100.f - quant->progress_stage1) / rows)) { + ok = false; + break; + } + + memset(nexterr, 0, errwidth * sizeof(nexterr[0])); + + int col = (fs_direction > 0) ? 0 : (cols - 1); + const f_pixel *const row_pixels = liq_image_get_row_f(input_image, row); + const f_pixel *const bg_pixels = background && acolormap[transparent_index].acolor.a < MIN_OPAQUE_A ? liq_image_get_row_f(background, row) : NULL; + int undithered_bg_used = 0; + + do { + float dither_level = base_dithering_level; + if (dither_map) { + dither_level *= dither_map[row*cols + col]; + } + + const f_pixel spx = get_dithered_pixel(dither_level, max_dither_error, thiserr[col + 1], row_pixels[col]); + + const unsigned int guessed_match = output_image_is_remapped ? output_pixels[row][col] : last_match; + float dither_diff; + last_match = nearest_search(n, &spx, guessed_match, &dither_diff); + f_pixel output_px = acolormap[last_match].acolor; + // this is for animgifs + if (bg_pixels) { + // if the background makes better match *with* dithering, it's a definitive win + float bg_for_dither_diff = colordifference(spx, bg_pixels[col]); + if (bg_for_dither_diff <= dither_diff) { + output_px = bg_pixels[col]; + last_match = transparent_index; + } else if (undithered_bg_used > 1) { + // the undithered fallback can cause artifacts when too many undithered pixels accumulate a big dithering error + // so periodically ignore undithered fallback to prevent that + undithered_bg_used = 0; + } else { + // if dithering is not applied, there's a high risk of creating artifacts (flat areas, error accumulating badly), + // OTOH poor dithering disturbs static backgrounds and creates oscilalting frames that break backgrounds + // back and forth in two differently bad ways + float max_diff = colordifference(row_pixels[col], bg_pixels[col]); + float dithered_diff = colordifference(row_pixels[col], output_px); + // if dithering is worse than natural difference between frames + // (this rule dithers moving areas, but does not dither static areas) + if (dithered_diff > max_diff) { + // then see if an undithered color is closer to the ideal + float undithered_diff = colordifference(row_pixels[col], acolormap[guessed_match].acolor); + if (undithered_diff < max_diff) { + undithered_bg_used++; + output_px = acolormap[guessed_match].acolor; + last_match = guessed_match; + } + } + } + } + + output_pixels[row][col] = last_match; + + f_pixel err = { + .r = (spx.r - output_px.r), + .g = (spx.g - output_px.g), + .b = (spx.b - output_px.b), + .a = (spx.a - output_px.a), + }; + + // If dithering error is crazy high, don't propagate it that much + // This prevents crazy geen pixels popping out of the blue (or red or black! ;) + if (err.r*err.r + err.g*err.g + err.b*err.b + err.a*err.a > max_dither_error) { + err.r *= 0.75f; + err.g *= 0.75f; + err.b *= 0.75f; + err.a *= 0.75f; + } + + /* Propagate Floyd-Steinberg error terms. */ + if (fs_direction > 0) { + thiserr[col + 2].a += err.a * (7.f/16.f); + thiserr[col + 2].r += err.r * (7.f/16.f); + thiserr[col + 2].g += err.g * (7.f/16.f); + thiserr[col + 2].b += err.b * (7.f/16.f); + + nexterr[col + 2].a = err.a * (1.f/16.f); + nexterr[col + 2].r = err.r * (1.f/16.f); + nexterr[col + 2].g = err.g * (1.f/16.f); + nexterr[col + 2].b = err.b * (1.f/16.f); + + nexterr[col + 1].a += err.a * (5.f/16.f); + nexterr[col + 1].r += err.r * (5.f/16.f); + nexterr[col + 1].g += err.g * (5.f/16.f); + nexterr[col + 1].b += err.b * (5.f/16.f); + + nexterr[col ].a += err.a * (3.f/16.f); + nexterr[col ].r += err.r * (3.f/16.f); + nexterr[col ].g += err.g * (3.f/16.f); + nexterr[col ].b += err.b * (3.f/16.f); + + } else { + thiserr[col ].a += err.a * (7.f/16.f); + thiserr[col ].r += err.r * (7.f/16.f); + thiserr[col ].g += err.g * (7.f/16.f); + thiserr[col ].b += err.b * (7.f/16.f); + + nexterr[col ].a = err.a * (1.f/16.f); + nexterr[col ].r = err.r * (1.f/16.f); + nexterr[col ].g = err.g * (1.f/16.f); + nexterr[col ].b = err.b * (1.f/16.f); + + nexterr[col + 1].a += err.a * (5.f/16.f); + nexterr[col + 1].r += err.r * (5.f/16.f); + nexterr[col + 1].g += err.g * (5.f/16.f); + nexterr[col + 1].b += err.b * (5.f/16.f); + + nexterr[col + 2].a += err.a * (3.f/16.f); + nexterr[col + 2].r += err.r * (3.f/16.f); + nexterr[col + 2].g += err.g * (3.f/16.f); + nexterr[col + 2].b += err.b * (3.f/16.f); + } + + // remapping is done in zig-zag + col += fs_direction; + if (fs_direction > 0) { + if (col >= cols) break; + } else { + if (col < 0) break; + } + } while(1); + + f_pixel *const temperr = thiserr; + thiserr = nexterr; + nexterr = temperr; + fs_direction = -fs_direction; + } + + input_image->free(MIN(thiserr, nexterr)); // MIN because pointers were swapped + nearest_free(n); + + return ok; +} diff --git a/tools/assets/n64texconv/lib/libimagequant/remap.h b/tools/assets/n64texconv/lib/libimagequant/remap.h new file mode 100644 index 0000000000..59d509b7a2 --- /dev/null +++ b/tools/assets/n64texconv/lib/libimagequant/remap.h @@ -0,0 +1,7 @@ +#ifndef REMAP_H +#define REMAP_H + +LIQ_PRIVATE float remap_to_palette(liq_image *const input_image, unsigned char *const *const output_pixels, colormap *const map) LIQ_NONNULL; +LIQ_PRIVATE bool remap_to_palette_floyd(liq_image *input_image, unsigned char *const output_pixels[], liq_remapping_result *quant, const float max_dither_error, const bool output_image_is_remapped) LIQ_NONNULL; + +#endif diff --git a/tools/assets/n64texconv/lib/spng/LICENSE b/tools/assets/n64texconv/lib/spng/LICENSE new file mode 100644 index 0000000000..05234f0ea3 --- /dev/null +++ b/tools/assets/n64texconv/lib/spng/LICENSE @@ -0,0 +1,25 @@ +BSD 2-Clause License + +Copyright (c) 2018-2023, Randy +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/tools/assets/n64texconv/lib/spng/spng.c b/tools/assets/n64texconv/lib/spng/spng.c new file mode 100644 index 0000000000..b22b7110a1 --- /dev/null +++ b/tools/assets/n64texconv/lib/spng/spng.c @@ -0,0 +1,6980 @@ +/* SPDX-License-Identifier: (BSD-2-Clause AND libpng-2.0) */ + +#define SPNG__BUILD + +#include "spng.h" + +#include +#include +#include +#include + +#define ZLIB_CONST + +#ifdef __FRAMAC__ + #define SPNG_DISABLE_OPT + #include "tests/framac_stubs.h" +#else + #ifdef SPNG_USE_MINIZ + #include + #else + #include + #endif +#endif + +#ifdef SPNG_MULTITHREADING + #include +#endif + +/* Not build options, edit at your own risk! */ +#define SPNG_READ_SIZE (8192) +#define SPNG_WRITE_SIZE SPNG_READ_SIZE +#define SPNG_MAX_CHUNK_COUNT (1000) + +#define SPNG_TARGET_CLONES(x) + +#ifndef SPNG_DISABLE_OPT + + #if defined(__i386__) || defined(__x86_64__) || defined(_M_IX86) || defined(_M_X64) + #define SPNG_X86 + + #if defined(__x86_64__) || defined(_M_X64) + #define SPNG_X86_64 + #endif + + #elif defined(__aarch64__) || defined(_M_ARM64) /* || defined(__ARM_NEON) */ + #define SPNG_ARM /* NOTE: only arm64 builds are tested! */ + #else + #pragma message "disabling SIMD optimizations for unknown target" + #define SPNG_DISABLE_OPT + #endif + + #if defined(SPNG_X86_64) && defined(SPNG_ENABLE_TARGET_CLONES) + #undef SPNG_TARGET_CLONES + #define SPNG_TARGET_CLONES(x) __attribute__((target_clones(x))) + #else + #define SPNG_TARGET_CLONES(x) + #endif + + #ifndef SPNG_DISABLE_OPT + static void defilter_sub3(size_t rowbytes, unsigned char *row); + static void defilter_sub4(size_t rowbytes, unsigned char *row); + static void defilter_avg3(size_t rowbytes, unsigned char *row, const unsigned char *prev); + static void defilter_avg4(size_t rowbytes, unsigned char *row, const unsigned char *prev); + static void defilter_paeth3(size_t rowbytes, unsigned char *row, const unsigned char *prev); + static void defilter_paeth4(size_t rowbytes, unsigned char *row, const unsigned char *prev); + + #if defined(SPNG_ARM) + static uint32_t expand_palette_rgba8_neon(unsigned char *row, const unsigned char *scanline, const unsigned char *plte, uint32_t width); + static uint32_t expand_palette_rgb8_neon(unsigned char *row, const unsigned char *scanline, const unsigned char *plte, uint32_t width); + #endif + #endif +#endif + +#if defined(_MSC_VER) + #pragma warning(push) + #pragma warning(disable: 4244) +#endif + +#if (defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) || defined(__BIG_ENDIAN__) + #define SPNG_BIG_ENDIAN +#else + #define SPNG_LITTLE_ENDIAN +#endif + +enum spng_state +{ + SPNG_STATE_INVALID = 0, + SPNG_STATE_INIT = 1, /* No PNG buffer/stream is set */ + SPNG_STATE_INPUT, /* Decoder input PNG was set */ + SPNG_STATE_OUTPUT = SPNG_STATE_INPUT, /* Encoder output was set */ + SPNG_STATE_IHDR, /* IHDR was read/written */ + SPNG_STATE_FIRST_IDAT, /* Encoded up to / reached first IDAT */ + SPNG_STATE_DECODE_INIT, /* Decoder is ready for progressive reads */ + SPNG_STATE_ENCODE_INIT = SPNG_STATE_DECODE_INIT, + SPNG_STATE_EOI, /* Reached the last scanline/row */ + SPNG_STATE_LAST_IDAT, /* Reached last IDAT, set at end of decode_image() */ + SPNG_STATE_AFTER_IDAT, /* */ + SPNG_STATE_IEND, /* Reached IEND */ +}; + +enum spng__internal +{ + SPNG__IO_SIGNAL = 1 << 9, + SPNG__CTX_FLAGS_ALL = (SPNG_CTX_IGNORE_ADLER32 | SPNG_CTX_ENCODER) +}; + +#define SPNG_STR(x) _SPNG_STR(x) +#define _SPNG_STR(x) #x + +#define SPNG_VERSION_STRING SPNG_STR(SPNG_VERSION_MAJOR) "." \ + SPNG_STR(SPNG_VERSION_MINOR) "." \ + SPNG_STR(SPNG_VERSION_PATCH) + +#define SPNG_GET_CHUNK_BOILERPLATE(chunk) \ + if(ctx == NULL) return 1; \ + int ret = read_chunks(ctx, 0); \ + if(ret) return ret; \ + if(!ctx->stored.chunk) return SPNG_ECHUNKAVAIL; \ + if(chunk == NULL) return 1 + +#define SPNG_SET_CHUNK_BOILERPLATE(chunk) \ + if(ctx == NULL || chunk == NULL) return 1; \ + if(ctx->data == NULL && !ctx->encode_only) return SPNG_ENOSRC; \ + int ret = read_chunks(ctx, 0); \ + if(ret) return ret + +/* Determine if the spng_option can be overriden/optimized */ +#define spng__optimize(option) (ctx->optimize_option & (1 << option)) + +struct spng_subimage +{ + uint32_t width; + uint32_t height; + size_t out_width; /* byte width based on output format */ + size_t scanline_width; +}; + +struct spng_text2 +{ + int type; + char *keyword; + char *text; + + size_t text_length; + + uint8_t compression_flag; /* iTXt only */ + char *language_tag; /* iTXt only */ + char *translated_keyword; /* iTXt only */ + + size_t cache_usage; + char user_keyword_storage[80]; +}; + +struct decode_flags +{ + unsigned apply_trns: 1; + unsigned apply_gamma: 1; + unsigned use_sbit: 1; + unsigned indexed: 1; + unsigned do_scaling: 1; + unsigned interlaced: 1; + unsigned same_layout: 1; + unsigned zerocopy: 1; + unsigned unpack: 1; +}; + +struct encode_flags +{ + unsigned interlace: 1; + unsigned same_layout: 1; + unsigned to_bigendian: 1; + unsigned progressive: 1; + unsigned finalize: 1; + + enum spng_filter_choice filter_choice; +}; + +struct spng_chunk_bitfield +{ + unsigned ihdr: 1; + unsigned plte: 1; + unsigned chrm: 1; + unsigned iccp: 1; + unsigned gama: 1; + unsigned sbit: 1; + unsigned srgb: 1; + unsigned text: 1; + unsigned bkgd: 1; + unsigned hist: 1; + unsigned trns: 1; + unsigned phys: 1; + unsigned splt: 1; + unsigned time: 1; + unsigned offs: 1; + unsigned exif: 1; + unsigned unknown: 1; +}; + +/* Packed sample iterator */ +struct spng__iter +{ + const uint8_t mask; + unsigned shift_amount; + const unsigned initial_shift, bit_depth; + const unsigned char *samples; +}; + +union spng__decode_plte +{ + struct spng_plte_entry rgba[256]; + unsigned char rgb[256 * 3]; + unsigned char raw[256 * 4]; + uint32_t align_this; +}; + +struct spng__zlib_options +{ + int compression_level; + int window_bits; + int mem_level; + int strategy; + int data_type; +}; + +typedef void spng__undo(spng_ctx *ctx); + +struct spng_ctx +{ + size_t data_size; + size_t bytes_read; + size_t stream_buf_size; + unsigned char *stream_buf; + const unsigned char *data; + + /* User-defined pointers for streaming */ + spng_read_fn *read_fn; + spng_write_fn *write_fn; + void *stream_user_ptr; + + /* Used for buffer reads */ + const unsigned char *png_base; + size_t bytes_left; + size_t last_read_size; + + /* Used for encoding */ + int user_owns_out_png; + unsigned char *out_png; + unsigned char *write_ptr; + size_t out_png_size; + size_t bytes_encoded; + + /* These are updated by read/write_header()/read_chunk_bytes() */ + struct spng_chunk current_chunk; + uint32_t cur_chunk_bytes_left; + uint32_t cur_actual_crc; + + struct spng_alloc alloc; + + enum spng_ctx_flags flags; + enum spng_format fmt; + + enum spng_state state; + + unsigned streaming: 1; + unsigned internal_buffer: 1; /* encoding to internal buffer */ + + unsigned inflate: 1; + unsigned deflate: 1; + unsigned encode_only: 1; + unsigned strict: 1; + unsigned discard: 1; + unsigned skip_crc: 1; + unsigned keep_unknown: 1; + unsigned prev_was_idat: 1; + + struct spng__zlib_options image_options; + struct spng__zlib_options text_options; + + spng__undo *undo; + + /* input file contains this chunk */ + struct spng_chunk_bitfield file; + + /* chunk was stored with spng_set_*() */ + struct spng_chunk_bitfield user; + + /* chunk was stored by reading or with spng_set_*() */ + struct spng_chunk_bitfield stored; + + /* used to reset the above in case of an error */ + struct spng_chunk_bitfield prev_stored; + + struct spng_chunk first_idat, last_idat; + + uint32_t max_width, max_height; + + size_t max_chunk_size; + size_t chunk_cache_limit; + size_t chunk_cache_usage; + uint32_t chunk_count_limit; + uint32_t chunk_count_total; + + int crc_action_critical; + int crc_action_ancillary; + + uint32_t optimize_option; + + struct spng_ihdr ihdr; + + struct spng_plte plte; + + struct spng_chrm_int chrm_int; + struct spng_iccp iccp; + + uint32_t gama; + + struct spng_sbit sbit; + + uint8_t srgb_rendering_intent; + + uint32_t n_text; + struct spng_text2 *text_list; + + struct spng_bkgd bkgd; + struct spng_hist hist; + struct spng_trns trns; + struct spng_phys phys; + + uint32_t n_splt; + struct spng_splt *splt_list; + + struct spng_time time; + struct spng_offs offs; + struct spng_exif exif; + + uint32_t n_chunks; + struct spng_unknown_chunk *chunk_list; + + struct spng_subimage subimage[7]; + + z_stream zstream; + unsigned char *scanline_buf, *prev_scanline_buf, *row_buf, *filtered_scanline_buf; + unsigned char *scanline, *prev_scanline, *row, *filtered_scanline; + + /* based on fmt */ + size_t image_size; /* may be zero */ + size_t image_width; + + unsigned bytes_per_pixel; /* derived from ihdr */ + unsigned pixel_size; /* derived from spng_format+ihdr */ + int widest_pass; + int last_pass; /* last non-empty pass */ + + uint16_t *gamma_lut; /* points to either _lut8 or _lut16 */ + uint16_t *gamma_lut16; + uint16_t gamma_lut8[256]; + unsigned char trns_px[8]; + union spng__decode_plte decode_plte; + struct spng_sbit decode_sb; + struct decode_flags decode_flags; + struct spng_row_info row_info; + + struct encode_flags encode_flags; +}; + +static const uint32_t spng_u32max = INT32_MAX; + +static const uint32_t adam7_x_start[7] = { 0, 4, 0, 2, 0, 1, 0 }; +static const uint32_t adam7_y_start[7] = { 0, 0, 4, 0, 2, 0, 1 }; +static const uint32_t adam7_x_delta[7] = { 8, 8, 4, 4, 2, 2, 1 }; +static const uint32_t adam7_y_delta[7] = { 8, 8, 8, 4, 4, 2, 2 }; + +static const uint8_t spng_signature[8] = { 137, 80, 78, 71, 13, 10, 26, 10 }; + +static const uint8_t type_ihdr[4] = { 73, 72, 68, 82 }; +static const uint8_t type_plte[4] = { 80, 76, 84, 69 }; +static const uint8_t type_idat[4] = { 73, 68, 65, 84 }; +static const uint8_t type_iend[4] = { 73, 69, 78, 68 }; + +static const uint8_t type_trns[4] = { 116, 82, 78, 83 }; +static const uint8_t type_chrm[4] = { 99, 72, 82, 77 }; +static const uint8_t type_gama[4] = { 103, 65, 77, 65 }; +static const uint8_t type_iccp[4] = { 105, 67, 67, 80 }; +static const uint8_t type_sbit[4] = { 115, 66, 73, 84 }; +static const uint8_t type_srgb[4] = { 115, 82, 71, 66 }; +static const uint8_t type_text[4] = { 116, 69, 88, 116 }; +static const uint8_t type_ztxt[4] = { 122, 84, 88, 116 }; +static const uint8_t type_itxt[4] = { 105, 84, 88, 116 }; +static const uint8_t type_bkgd[4] = { 98, 75, 71, 68 }; +static const uint8_t type_hist[4] = { 104, 73, 83, 84 }; +static const uint8_t type_phys[4] = { 112, 72, 89, 115 }; +static const uint8_t type_splt[4] = { 115, 80, 76, 84 }; +static const uint8_t type_time[4] = { 116, 73, 77, 69 }; + +static const uint8_t type_offs[4] = { 111, 70, 70, 115 }; +static const uint8_t type_exif[4] = { 101, 88, 73, 102 }; + +static inline void *spng__malloc(spng_ctx *ctx, size_t size) +{ + return ctx->alloc.malloc_fn(size); +} + +static inline void *spng__calloc(spng_ctx *ctx, size_t nmemb, size_t size) +{ + return ctx->alloc.calloc_fn(nmemb, size); +} + +static inline void *spng__realloc(spng_ctx *ctx, void *ptr, size_t size) +{ + return ctx->alloc.realloc_fn(ptr, size); +} + +static inline void spng__free(spng_ctx *ctx, void *ptr) +{ + ctx->alloc.free_fn(ptr); +} + +#if defined(SPNG_USE_MINIZ) +static void *spng__zalloc(void *opaque, size_t items, size_t size) +#else +static void *spng__zalloc(void *opaque, uInt items, uInt size) +#endif +{ + spng_ctx *ctx = opaque; + + if(size > SIZE_MAX / items) return NULL; + + size_t len = (size_t)items * size; + + return spng__malloc(ctx, len); +} + +static void spng__zfree(void *opqaue, void *ptr) +{ + spng_ctx *ctx = opqaue; + spng__free(ctx, ptr); +} + +static inline uint16_t read_u16(const void *src) +{ + const unsigned char *data = src; + + return (data[0] & 0xFFU) << 8 | (data[1] & 0xFFU); +} + +static inline uint32_t read_u32(const void *src) +{ + const unsigned char *data = src; + + return (data[0] & 0xFFUL) << 24 | (data[1] & 0xFFUL) << 16 | + (data[2] & 0xFFUL) << 8 | (data[3] & 0xFFUL); +} + +static inline int32_t read_s32(const void *src) +{ + int32_t ret = (int32_t)read_u32(src); + + return ret; +} + +static inline void write_u16(void *dest, uint16_t x) +{ + unsigned char *data = dest; + + data[0] = x >> 8; + data[1] = x & 0xFF; +} + +static inline void write_u32(void *dest, uint32_t x) +{ + unsigned char *data = dest; + + data[0] = (x >> 24); + data[1] = (x >> 16) & 0xFF; + data[2] = (x >> 8) & 0xFF; + data[3] = x & 0xFF; +} + +static inline void write_s32(void *dest, int32_t x) +{ + uint32_t n = x; + write_u32(dest, n); +} + +/* Returns an iterator for 1,2,4,8-bit samples */ +static struct spng__iter spng__iter_init(unsigned bit_depth, const unsigned char *samples) +{ + struct spng__iter iter = + { + .mask = (uint32_t)(1 << bit_depth) - 1, + .shift_amount = 8 - bit_depth, + .initial_shift = 8 - bit_depth, + .bit_depth = bit_depth, + .samples = samples + }; + + return iter; +} + +/* Returns the current sample unpacked, iterates to the next one */ +static inline uint8_t get_sample(struct spng__iter *iter) +{ + uint8_t x = (iter->samples[0] >> iter->shift_amount) & iter->mask; + + iter->shift_amount -= iter->bit_depth; + + if(iter->shift_amount > 7) + { + iter->shift_amount = iter->initial_shift; + iter->samples++; + } + + return x; +} + +static void u16_row_to_host(void *row, size_t size) +{ + uint16_t *px = row; + size_t i, n = size / 2; + + for(i=0; i < n; i++) + { + px[i] = read_u16(&px[i]); + } +} + +static void u16_row_to_bigendian(void *row, size_t size) +{ + uint16_t *px = (uint16_t*)row; + size_t i, n = size / 2; + + for(i=0; i < n; i++) + { + write_u16(&px[i], px[i]); + } +} + +static void rgb8_row_to_rgba8(const unsigned char *row, unsigned char *out, uint32_t n) +{ + uint32_t i; + for(i=0; i < n; i++) + { + memcpy(out + i * 4, row + i * 3, 3); + out[i*4+3] = 255; + } +} + +static unsigned num_channels(const struct spng_ihdr *ihdr) +{ + switch(ihdr->color_type) + { + case SPNG_COLOR_TYPE_TRUECOLOR: return 3; + case SPNG_COLOR_TYPE_GRAYSCALE_ALPHA: return 2; + case SPNG_COLOR_TYPE_TRUECOLOR_ALPHA: return 4; + case SPNG_COLOR_TYPE_GRAYSCALE: + case SPNG_COLOR_TYPE_INDEXED: + return 1; + default: return 0; + } +} + +/* Calculate scanline width in bits, round up to the nearest byte */ +static int calculate_scanline_width(const struct spng_ihdr *ihdr, uint32_t width, size_t *scanline_width) +{ + if(ihdr == NULL || !width) return SPNG_EINTERNAL; + + size_t res = num_channels(ihdr) * ihdr->bit_depth; + + if(res > SIZE_MAX / width) return SPNG_EOVERFLOW; + res = res * width; + + res += 15; /* Filter byte + 7 for rounding */ + + if(res < 15) return SPNG_EOVERFLOW; + + res /= 8; + + if(res > UINT32_MAX) return SPNG_EOVERFLOW; + + *scanline_width = res; + + return 0; +} + +static int calculate_subimages(struct spng_ctx *ctx) +{ + if(ctx == NULL) return SPNG_EINTERNAL; + + struct spng_ihdr *ihdr = &ctx->ihdr; + struct spng_subimage *sub = ctx->subimage; + + if(ihdr->interlace_method == 1) + { + sub[0].width = (ihdr->width + 7) >> 3; + sub[0].height = (ihdr->height + 7) >> 3; + sub[1].width = (ihdr->width + 3) >> 3; + sub[1].height = (ihdr->height + 7) >> 3; + sub[2].width = (ihdr->width + 3) >> 2; + sub[2].height = (ihdr->height + 3) >> 3; + sub[3].width = (ihdr->width + 1) >> 2; + sub[3].height = (ihdr->height + 3) >> 2; + sub[4].width = (ihdr->width + 1) >> 1; + sub[4].height = (ihdr->height + 1) >> 2; + sub[5].width = ihdr->width >> 1; + sub[5].height = (ihdr->height + 1) >> 1; + sub[6].width = ihdr->width; + sub[6].height = ihdr->height >> 1; + } + else + { + sub[0].width = ihdr->width; + sub[0].height = ihdr->height; + } + + int i; + for(i=0; i < 7; i++) + { + if(sub[i].width == 0 || sub[i].height == 0) continue; + + int ret = calculate_scanline_width(ihdr, sub[i].width, &sub[i].scanline_width); + if(ret) return ret; + + if(sub[ctx->widest_pass].scanline_width < sub[i].scanline_width) ctx->widest_pass = i; + + ctx->last_pass = i; + } + + return 0; +} + +static int check_decode_fmt(const struct spng_ihdr *ihdr, const int fmt) +{ + switch(fmt) + { + case SPNG_FMT_RGBA8: + case SPNG_FMT_RGBA16: + case SPNG_FMT_RGB8: + case SPNG_FMT_PNG: + case SPNG_FMT_RAW: + return 0; + case SPNG_FMT_G8: + case SPNG_FMT_GA8: + if(ihdr->color_type == SPNG_COLOR_TYPE_GRAYSCALE && ihdr->bit_depth <= 8) return 0; + else return SPNG_EFMT; + case SPNG_FMT_GA16: + if(ihdr->color_type == SPNG_COLOR_TYPE_GRAYSCALE && ihdr->bit_depth == 16) return 0; + else return SPNG_EFMT; + default: return SPNG_EFMT; + } +} + +static int calculate_image_width(const struct spng_ihdr *ihdr, int fmt, size_t *len) +{ + if(ihdr == NULL || len == NULL) return SPNG_EINTERNAL; + + size_t res = ihdr->width; + unsigned bytes_per_pixel; + + switch(fmt) + { + case SPNG_FMT_RGBA8: + case SPNG_FMT_GA16: + bytes_per_pixel = 4; + break; + case SPNG_FMT_RGBA16: + bytes_per_pixel = 8; + break; + case SPNG_FMT_RGB8: + bytes_per_pixel = 3; + break; + case SPNG_FMT_PNG: + case SPNG_FMT_RAW: + { + int ret = calculate_scanline_width(ihdr, ihdr->width, &res); + if(ret) return ret; + + res -= 1; /* exclude filter byte */ + bytes_per_pixel = 1; + break; + } + case SPNG_FMT_G8: + bytes_per_pixel = 1; + break; + case SPNG_FMT_GA8: + bytes_per_pixel = 2; + break; + default: return SPNG_EINTERNAL; + } + + if(res > SIZE_MAX / bytes_per_pixel) return SPNG_EOVERFLOW; + res = res * bytes_per_pixel; + + *len = res; + + return 0; +} + +static int calculate_image_size(const struct spng_ihdr *ihdr, int fmt, size_t *len) +{ + if(ihdr == NULL || len == NULL) return SPNG_EINTERNAL; + + size_t res = 0; + + int ret = calculate_image_width(ihdr, fmt, &res); + if(ret) return ret; + + if(res > SIZE_MAX / ihdr->height) return SPNG_EOVERFLOW; + res = res * ihdr->height; + + *len = res; + + return 0; +} + +static int increase_cache_usage(spng_ctx *ctx, size_t bytes, int new_chunk) +{ + if(ctx == NULL || !bytes) return SPNG_EINTERNAL; + + if(new_chunk) + { + ctx->chunk_count_total++; + if(ctx->chunk_count_total < 1) return SPNG_EOVERFLOW; + + if(ctx->chunk_count_total > ctx->chunk_count_limit) return SPNG_ECHUNK_LIMITS; + } + + size_t new_usage = ctx->chunk_cache_usage + bytes; + + if(new_usage < ctx->chunk_cache_usage) return SPNG_EOVERFLOW; + + if(new_usage > ctx->chunk_cache_limit) return SPNG_ECHUNK_LIMITS; + + ctx->chunk_cache_usage = new_usage; + + return 0; +} + +static int decrease_cache_usage(spng_ctx *ctx, size_t usage) +{ + if(ctx == NULL || !usage) return SPNG_EINTERNAL; + if(usage > ctx->chunk_cache_usage) return SPNG_EINTERNAL; + + ctx->chunk_cache_usage -= usage; + + return 0; +} + +static int is_critical_chunk(struct spng_chunk *chunk) +{ + if(chunk == NULL) return 0; + if((chunk->type[0] & (1 << 5)) == 0) return 1; + + return 0; +} + +static int decode_err(spng_ctx *ctx, int err) +{ + ctx->state = SPNG_STATE_INVALID; + + return err; +} + +static int encode_err(spng_ctx *ctx, int err) +{ + ctx->state = SPNG_STATE_INVALID; + + return err; +} + +static inline int read_data(spng_ctx *ctx, size_t bytes) +{ + if(ctx == NULL) return SPNG_EINTERNAL; + if(!bytes) return 0; + + if(ctx->streaming && (bytes > SPNG_READ_SIZE)) return SPNG_EINTERNAL; + + int ret = ctx->read_fn(ctx, ctx->stream_user_ptr, ctx->stream_buf, bytes); + + if(ret) + { + if(ret > 0 || ret < SPNG_IO_ERROR) ret = SPNG_IO_ERROR; + + return ret; + } + + ctx->bytes_read += bytes; + if(ctx->bytes_read < bytes) return SPNG_EOVERFLOW; + + return 0; +} + +/* Ensure there is enough space for encoding starting at ctx->write_ptr */ +static int require_bytes(spng_ctx *ctx, size_t bytes) +{ + if(ctx == NULL) return SPNG_EINTERNAL; + + if(ctx->streaming) + { + if(bytes > ctx->stream_buf_size) + { + size_t new_size = ctx->stream_buf_size; + + /* Start at default IDAT size + header + crc */ + if(new_size < (SPNG_WRITE_SIZE + 12)) new_size = SPNG_WRITE_SIZE + 12; + + if(new_size < bytes) new_size = bytes; + + void *temp = spng__realloc(ctx, ctx->stream_buf, new_size); + + if(temp == NULL) return encode_err(ctx, SPNG_EMEM); + + ctx->stream_buf = temp; + ctx->stream_buf_size = bytes; + ctx->write_ptr = ctx->stream_buf; + } + + return 0; + } + + if(!ctx->internal_buffer) return SPNG_ENODST; + + size_t required = ctx->bytes_encoded + bytes; + if(required < bytes) return SPNG_EOVERFLOW; + + if(required > ctx->out_png_size) + { + size_t new_size = ctx->out_png_size; + + /* Start with a size that doesn't require a realloc() 100% of the time */ + if(new_size < (SPNG_WRITE_SIZE * 2)) new_size = SPNG_WRITE_SIZE * 2; + + /* Prefer the next power of two over the requested size */ + while(new_size < required) + { + if(new_size / SIZE_MAX > 2) return encode_err(ctx, SPNG_EOVERFLOW); + + new_size *= 2; + } + + void *temp = spng__realloc(ctx, ctx->out_png, new_size); + + if(temp == NULL) return encode_err(ctx, SPNG_EMEM); + + ctx->out_png = temp; + ctx->out_png_size = new_size; + ctx->write_ptr = ctx->out_png + ctx->bytes_encoded; + } + + return 0; +} + +static int write_data(spng_ctx *ctx, const void *data, size_t bytes) +{ + if(ctx == NULL) return SPNG_EINTERNAL; + if(!bytes) return 0; + + if(ctx->streaming) + { + if(bytes > SPNG_WRITE_SIZE) return SPNG_EINTERNAL; + + int ret = ctx->write_fn(ctx, ctx->stream_user_ptr, (void*)data, bytes); + + if(ret) + { + if(ret > 0 || ret < SPNG_IO_ERROR) ret = SPNG_IO_ERROR; + + return encode_err(ctx, ret); + } + } + else + { + int ret = require_bytes(ctx, bytes); + if(ret) return encode_err(ctx, ret); + + memcpy(ctx->write_ptr, data, bytes); + + ctx->write_ptr += bytes; + } + + ctx->bytes_encoded += bytes; + if(ctx->bytes_encoded < bytes) return SPNG_EOVERFLOW; + + return 0; +} + +static int write_header(spng_ctx *ctx, const uint8_t chunk_type[4], size_t chunk_length, unsigned char **data) +{ + if(ctx == NULL || chunk_type == NULL) return SPNG_EINTERNAL; + if(chunk_length > spng_u32max) return SPNG_EINTERNAL; + + size_t total = chunk_length + 12; + + int ret = require_bytes(ctx, total); + if(ret) return ret; + + uint32_t crc = crc32(0, NULL, 0); + ctx->current_chunk.crc = crc32(crc, chunk_type, 4); + + memcpy(&ctx->current_chunk.type, chunk_type, 4); + ctx->current_chunk.length = (uint32_t)chunk_length; + + if(!data) return SPNG_EINTERNAL; + + if(ctx->streaming) *data = ctx->stream_buf + 8; + else *data = ctx->write_ptr + 8; + + return 0; +} + +static int trim_chunk(spng_ctx *ctx, uint32_t length) +{ + if(length > spng_u32max) return SPNG_EINTERNAL; + if(length > ctx->current_chunk.length) return SPNG_EINTERNAL; + + ctx->current_chunk.length = length; + + return 0; +} + +static int finish_chunk(spng_ctx *ctx) +{ + if(ctx == NULL) return SPNG_EINTERNAL; + + struct spng_chunk *chunk = &ctx->current_chunk; + + unsigned char *header; + unsigned char *chunk_data; + + if(ctx->streaming) + { + chunk_data = ctx->stream_buf + 8; + header = ctx->stream_buf; + } + else + { + chunk_data = ctx->write_ptr + 8; + header = ctx->write_ptr; + } + + write_u32(header, chunk->length); + memcpy(header + 4, chunk->type, 4); + + chunk->crc = crc32(chunk->crc, chunk_data, chunk->length); + + write_u32(chunk_data + chunk->length, chunk->crc); + + if(ctx->streaming) + { + const unsigned char *ptr = ctx->stream_buf; + uint32_t bytes_left = chunk->length + 12; + uint32_t len = 0; + + while(bytes_left) + { + ptr += len; + len = SPNG_WRITE_SIZE; + + if(len > bytes_left) len = bytes_left; + + int ret = write_data(ctx, ptr, len); + if(ret) return ret; + + bytes_left -= len; + } + } + else + { + ctx->bytes_encoded += chunk->length; + if(ctx->bytes_encoded < chunk->length) return SPNG_EOVERFLOW; + + ctx->bytes_encoded += 12; + if(ctx->bytes_encoded < 12) return SPNG_EOVERFLOW; + + ctx->write_ptr += chunk->length + 12; + } + + return 0; +} + +static int write_chunk(spng_ctx *ctx, const uint8_t type[4], const void *data, size_t length) +{ + if(ctx == NULL || type == NULL) return SPNG_EINTERNAL; + if(length && data == NULL) return SPNG_EINTERNAL; + + unsigned char *write_ptr; + + int ret = write_header(ctx, type, length, &write_ptr); + if(ret) return ret; + + if(length) memcpy(write_ptr, data, length); + + return finish_chunk(ctx); +} + +static int write_iend(spng_ctx *ctx) +{ + unsigned char iend_chunk[12] = { 0, 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130 }; + return write_data(ctx, iend_chunk, 12); +} + +static int write_unknown_chunks(spng_ctx *ctx, enum spng_location location) +{ + if(!ctx->stored.unknown) return 0; + + const struct spng_unknown_chunk *chunk = ctx->chunk_list; + + uint32_t i; + for(i=0; i < ctx->n_chunks; i++, chunk++) + { + if(chunk->location != location) continue; + + int ret = write_chunk(ctx, chunk->type, chunk->data, chunk->length); + if(ret) return ret; + } + + return 0; +} + +/* Read and check the current chunk's crc, + returns -SPNG_CRC_DISCARD if the chunk should be discarded */ +static inline int read_and_check_crc(spng_ctx *ctx) +{ + if(ctx == NULL) return SPNG_EINTERNAL; + + int ret; + ret = read_data(ctx, 4); + if(ret) return ret; + + ctx->current_chunk.crc = read_u32(ctx->data); + + if(ctx->skip_crc) return 0; + + if(ctx->cur_actual_crc != ctx->current_chunk.crc) + { + if(is_critical_chunk(&ctx->current_chunk)) + { + if(ctx->crc_action_critical == SPNG_CRC_USE) return 0; + } + else + { + if(ctx->crc_action_ancillary == SPNG_CRC_USE) return 0; + if(ctx->crc_action_ancillary == SPNG_CRC_DISCARD) return -SPNG_CRC_DISCARD; + } + + return SPNG_ECHUNK_CRC; + } + + return 0; +} + +/* Read and validate the current chunk's crc and the next chunk header */ +static inline int read_header(spng_ctx *ctx) +{ + if(ctx == NULL) return SPNG_EINTERNAL; + + int ret; + struct spng_chunk chunk = { 0 }; + + ret = read_and_check_crc(ctx); + if(ret) + { + if(ret == -SPNG_CRC_DISCARD) + { + ctx->discard = 1; + } + else return ret; + } + + ret = read_data(ctx, 8); + if(ret) return ret; + + chunk.offset = ctx->bytes_read - 8; + + chunk.length = read_u32(ctx->data); + + memcpy(&chunk.type, ctx->data + 4, 4); + + if(chunk.length > spng_u32max) return SPNG_ECHUNK_STDLEN; + + ctx->cur_chunk_bytes_left = chunk.length; + + if(is_critical_chunk(&chunk) && ctx->crc_action_critical == SPNG_CRC_USE) ctx->skip_crc = 1; + else if(ctx->crc_action_ancillary == SPNG_CRC_USE) ctx->skip_crc = 1; + else ctx->skip_crc = 0; + + if(!ctx->skip_crc) + { + ctx->cur_actual_crc = crc32(0, NULL, 0); + ctx->cur_actual_crc = crc32(ctx->cur_actual_crc, chunk.type, 4); + } + + ctx->current_chunk = chunk; + + return 0; +} + +/* Read chunk bytes and update crc */ +static int read_chunk_bytes(spng_ctx *ctx, uint32_t bytes) +{ + if(ctx == NULL) return SPNG_EINTERNAL; + if(!ctx->cur_chunk_bytes_left || !bytes) return SPNG_EINTERNAL; + if(bytes > ctx->cur_chunk_bytes_left) return SPNG_EINTERNAL; /* XXX: more specific error? */ + + int ret; + + ret = read_data(ctx, bytes); + if(ret) return ret; + + if(!ctx->skip_crc) ctx->cur_actual_crc = crc32(ctx->cur_actual_crc, ctx->data, bytes); + + ctx->cur_chunk_bytes_left -= bytes; + + return ret; +} + +/* read_chunk_bytes() + read_data() with custom output buffer */ +static int read_chunk_bytes2(spng_ctx *ctx, void *out, uint32_t bytes) +{ + if(ctx == NULL) return SPNG_EINTERNAL; + if(!ctx->cur_chunk_bytes_left || !bytes) return SPNG_EINTERNAL; + if(bytes > ctx->cur_chunk_bytes_left) return SPNG_EINTERNAL; /* XXX: more specific error? */ + + int ret; + uint32_t len = bytes; + + if(ctx->streaming && len > SPNG_READ_SIZE) len = SPNG_READ_SIZE; + + while(bytes) + { + if(len > bytes) len = bytes; + + ret = ctx->read_fn(ctx, ctx->stream_user_ptr, out, len); + if(ret) return ret; + + if(!ctx->streaming) memcpy(out, ctx->data, len); + + ctx->bytes_read += len; + if(ctx->bytes_read < len) return SPNG_EOVERFLOW; + + if(!ctx->skip_crc) ctx->cur_actual_crc = crc32(ctx->cur_actual_crc, out, len); + + ctx->cur_chunk_bytes_left -= len; + + out = (char*)out + len; + bytes -= len; + len = SPNG_READ_SIZE; + } + + return 0; +} + +static int discard_chunk_bytes(spng_ctx *ctx, uint32_t bytes) +{ + if(ctx == NULL) return SPNG_EINTERNAL; + if(!bytes) return 0; + + int ret; + + if(ctx->streaming) /* Do small, consecutive reads */ + { + while(bytes) + { + uint32_t len = SPNG_READ_SIZE; + + if(len > bytes) len = bytes; + + ret = read_chunk_bytes(ctx, len); + if(ret) return ret; + + bytes -= len; + } + } + else + { + ret = read_chunk_bytes(ctx, bytes); + if(ret) return ret; + } + + return 0; +} + +static int spng__inflate_init(spng_ctx *ctx, int window_bits) +{ + if(ctx->zstream.state) inflateEnd(&ctx->zstream); + + ctx->inflate = 1; + + ctx->zstream.zalloc = spng__zalloc; + ctx->zstream.zfree = spng__zfree; + ctx->zstream.opaque = ctx; + + if(inflateInit2(&ctx->zstream, window_bits) != Z_OK) return SPNG_EZLIB_INIT; + +#if ZLIB_VERNUM >= 0x1290 && !defined(SPNG_USE_MINIZ) + + int validate = 1; + + if(ctx->flags & SPNG_CTX_IGNORE_ADLER32) validate = 0; + + if(is_critical_chunk(&ctx->current_chunk)) + { + if(ctx->crc_action_critical == SPNG_CRC_USE) validate = 0; + } + else /* ancillary */ + { + if(ctx->crc_action_ancillary == SPNG_CRC_USE) validate = 0; + } + + if(inflateValidate(&ctx->zstream, validate)) return SPNG_EZLIB_INIT; + +#else /* This requires zlib >= 1.2.11 */ + #pragma message ("inflateValidate() not available, SPNG_CTX_IGNORE_ADLER32 will be ignored") +#endif + + return 0; +} + +static int spng__deflate_init(spng_ctx *ctx, struct spng__zlib_options *options) +{ + if(ctx->zstream.state) deflateEnd(&ctx->zstream); + + ctx->deflate = 1; + + z_stream *zstream = &ctx->zstream; + zstream->zalloc = spng__zalloc; + zstream->zfree = spng__zfree; + zstream->opaque = ctx; + zstream->data_type = options->data_type; + + int ret = deflateInit2(zstream, options->compression_level, Z_DEFLATED, options->window_bits, options->mem_level, options->strategy); + + if(ret != Z_OK) return SPNG_EZLIB_INIT; + + return 0; +} + +/* Inflate a zlib stream starting with start_buf if non-NULL, + continuing from the datastream till an end marker, + allocating and writing the inflated stream to *out, + leaving "extra" bytes at the end, final buffer length is *len. + + Takes into account the chunk size and cache limits. +*/ +static int spng__inflate_stream(spng_ctx *ctx, char **out, size_t *len, size_t extra, const void *start_buf, size_t start_len) +{ + int ret = spng__inflate_init(ctx, 15); + if(ret) return ret; + + size_t max = ctx->chunk_cache_limit - ctx->chunk_cache_usage; + + if(ctx->max_chunk_size < max) max = ctx->max_chunk_size; + + if(extra > max) return SPNG_ECHUNK_LIMITS; + max -= extra; + + uint32_t read_size; + size_t size = 8 * 1024; + void *t, *buf = spng__malloc(ctx, size); + + if(buf == NULL) return SPNG_EMEM; + + z_stream *stream = &ctx->zstream; + + if(start_buf != NULL && start_len) + { + stream->avail_in = (uInt)start_len; + stream->next_in = start_buf; + } + else + { + stream->avail_in = 0; + stream->next_in = NULL; + } + + stream->avail_out = (uInt)size; + stream->next_out = buf; + + while(ret != Z_STREAM_END) + { + ret = inflate(stream, Z_NO_FLUSH); + + if(ret == Z_STREAM_END) break; + + if(ret != Z_OK && ret != Z_BUF_ERROR) + { + ret = SPNG_EZLIB; + goto err; + } + + if(!stream->avail_out) /* Resize buffer */ + { + /* overflow or reached chunk/cache limit */ + if( (2 > SIZE_MAX / size) || (size > max / 2) ) + { + ret = SPNG_ECHUNK_LIMITS; + goto err; + } + + size *= 2; + + t = spng__realloc(ctx, buf, size); + if(t == NULL) goto mem; + + buf = t; + + stream->avail_out = (uInt)size / 2; + stream->next_out = (unsigned char*)buf + size / 2; + } + else if(!stream->avail_in) /* Read more chunk bytes */ + { + read_size = ctx->cur_chunk_bytes_left; + if(ctx->streaming && read_size > SPNG_READ_SIZE) read_size = SPNG_READ_SIZE; + + ret = read_chunk_bytes(ctx, read_size); + + if(ret) + { + if(!read_size) ret = SPNG_EZLIB; + + goto err; + } + + stream->avail_in = read_size; + stream->next_in = ctx->data; + } + } + + size = stream->total_out; + + if(!size) + { + ret = SPNG_EZLIB; + goto err; + } + + size += extra; + if(size < extra) goto mem; + + t = spng__realloc(ctx, buf, size); + if(t == NULL) goto mem; + + buf = t; + + (void)increase_cache_usage(ctx, size, 0); + + *out = buf; + *len = size; + + return 0; + +mem: + ret = SPNG_EMEM; +err: + spng__free(ctx, buf); + return ret; +} + +/* Read at least one byte from the IDAT stream */ +static int read_idat_bytes(spng_ctx *ctx, uint32_t *bytes_read) +{ + if(ctx == NULL || bytes_read == NULL) return SPNG_EINTERNAL; + if(memcmp(ctx->current_chunk.type, type_idat, 4)) return SPNG_EIDAT_TOO_SHORT; + + int ret; + uint32_t len; + + while(!ctx->cur_chunk_bytes_left) + { + ret = read_header(ctx); + if(ret) return ret; + + if(memcmp(ctx->current_chunk.type, type_idat, 4)) return SPNG_EIDAT_TOO_SHORT; + } + + if(ctx->streaming) + {/* TODO: estimate bytes to read for progressive reads */ + len = SPNG_READ_SIZE; + if(len > ctx->cur_chunk_bytes_left) len = ctx->cur_chunk_bytes_left; + } + else len = ctx->current_chunk.length; + + ret = read_chunk_bytes(ctx, len); + + *bytes_read = len; + + return ret; +} + +static int read_scanline_bytes(spng_ctx *ctx, unsigned char *dest, size_t len) +{ + if(ctx == NULL || dest == NULL) return SPNG_EINTERNAL; + + int ret = Z_OK; + uint32_t bytes_read; + + z_stream *zstream = &ctx->zstream; + + zstream->avail_out = (uInt)len; + zstream->next_out = dest; + + while(zstream->avail_out != 0) + { + ret = inflate(zstream, Z_NO_FLUSH); + + if(ret == Z_OK) continue; + + if(ret == Z_STREAM_END) /* Reached an end-marker */ + { + if(zstream->avail_out != 0) return SPNG_EIDAT_TOO_SHORT; + } + else if(ret == Z_BUF_ERROR) /* Read more IDAT bytes */ + { + ret = read_idat_bytes(ctx, &bytes_read); + if(ret) return ret; + + zstream->avail_in = bytes_read; + zstream->next_in = ctx->data; + } + else return SPNG_EIDAT_STREAM; + } + + return 0; +} + +static uint8_t paeth(uint8_t a, uint8_t b, uint8_t c) +{ + int16_t p = a + b - c; + int16_t pa = abs(p - a); + int16_t pb = abs(p - b); + int16_t pc = abs(p - c); + + if(pa <= pb && pa <= pc) return a; + else if(pb <= pc) return b; + + return c; +} + +SPNG_TARGET_CLONES("default,avx2") +static void defilter_up(size_t bytes, unsigned char *row, const unsigned char *prev) +{ + size_t i; + for(i=0; i < bytes; i++) + { + row[i] += prev[i]; + } +} + +/* Defilter *scanline in-place. + *prev_scanline and *scanline should point to the first pixel, + scanline_width is the width of the scanline including the filter byte. +*/ +static int defilter_scanline(const unsigned char *prev_scanline, unsigned char *scanline, + size_t scanline_width, unsigned bytes_per_pixel, unsigned filter) +{ + if(prev_scanline == NULL || scanline == NULL || !scanline_width) return SPNG_EINTERNAL; + + size_t i; + scanline_width--; + + if(filter == 0) return 0; + +#ifndef SPNG_DISABLE_OPT + if(filter == SPNG_FILTER_UP) goto no_opt; + + if(bytes_per_pixel == 4) + { + if(filter == SPNG_FILTER_SUB) + defilter_sub4(scanline_width, scanline); + else if(filter == SPNG_FILTER_AVERAGE) + defilter_avg4(scanline_width, scanline, prev_scanline); + else if(filter == SPNG_FILTER_PAETH) + defilter_paeth4(scanline_width, scanline, prev_scanline); + else return SPNG_EFILTER; + + return 0; + } + else if(bytes_per_pixel == 3) + { + if(filter == SPNG_FILTER_SUB) + defilter_sub3(scanline_width, scanline); + else if(filter == SPNG_FILTER_AVERAGE) + defilter_avg3(scanline_width, scanline, prev_scanline); + else if(filter == SPNG_FILTER_PAETH) + defilter_paeth3(scanline_width, scanline, prev_scanline); + else return SPNG_EFILTER; + + return 0; + } +no_opt: +#endif + + if(filter == SPNG_FILTER_UP) + { + defilter_up(scanline_width, scanline, prev_scanline); + return 0; + } + + for(i=0; i < scanline_width; i++) + { + uint8_t x, a, b, c; + + if(i >= bytes_per_pixel) + { + a = scanline[i - bytes_per_pixel]; + b = prev_scanline[i]; + c = prev_scanline[i - bytes_per_pixel]; + } + else /* First pixel in row */ + { + a = 0; + b = prev_scanline[i]; + c = 0; + } + + x = scanline[i]; + + switch(filter) + { + case SPNG_FILTER_SUB: + { + x = x + a; + break; + } + case SPNG_FILTER_AVERAGE: + { + uint16_t avg = (a + b) / 2; + x = x + avg; + break; + } + case SPNG_FILTER_PAETH: + { + x = x + paeth(a,b,c); + break; + } + } + + scanline[i] = x; + } + + return 0; +} + +static int filter_scanline(unsigned char *filtered, const unsigned char *prev_scanline, const unsigned char *scanline, + size_t scanline_width, unsigned bytes_per_pixel, const unsigned filter) +{ + if(prev_scanline == NULL || scanline == NULL || scanline_width <= 1) return SPNG_EINTERNAL; + + if(filter > 4) return SPNG_EFILTER; + if(filter == 0) return 0; + + scanline_width--; + + uint32_t i; + for(i=0; i < scanline_width; i++) + { + uint8_t x, a, b, c; + + if(i >= bytes_per_pixel) + { + a = scanline[i - bytes_per_pixel]; + b = prev_scanline[i]; + c = prev_scanline[i - bytes_per_pixel]; + } + else /* first pixel in row */ + { + a = 0; + b = prev_scanline[i]; + c = 0; + } + + x = scanline[i]; + + switch(filter) + { + case SPNG_FILTER_SUB: + { + x = x - a; + break; + } + case SPNG_FILTER_UP: + { + x = x - b; + break; + } + case SPNG_FILTER_AVERAGE: + { + uint16_t avg = (a + b) / 2; + x = x - avg; + break; + } + case SPNG_FILTER_PAETH: + { + x = x - paeth(a,b,c); + break; + } + } + + filtered[i] = x; + } + + return 0; +} + +static int32_t filter_sum(const unsigned char *prev_scanline, const unsigned char *scanline, + size_t size, unsigned bytes_per_pixel, const unsigned filter) +{ + /* prevent potential over/underflow, bails out at a width of ~8M pixels for RGBA8 */ + if(size > (INT32_MAX / 128)) return INT32_MAX; + + uint32_t i; + int32_t sum = 0; + uint8_t x, a, b, c; + + for(i=0; i < size; i++) + { + if(i >= bytes_per_pixel) + { + a = scanline[i - bytes_per_pixel]; + b = prev_scanline[i]; + c = prev_scanline[i - bytes_per_pixel]; + } + else /* first pixel in row */ + { + a = 0; + b = prev_scanline[i]; + c = 0; + } + + x = scanline[i]; + + switch(filter) + { + case SPNG_FILTER_NONE: + { + break; + } + case SPNG_FILTER_SUB: + { + x = x - a; + break; + } + case SPNG_FILTER_UP: + { + x = x - b; + break; + } + case SPNG_FILTER_AVERAGE: + { + uint16_t avg = (a + b) / 2; + x = x - avg; + break; + } + case SPNG_FILTER_PAETH: + { + x = x - paeth(a,b,c); + break; + } + } + + sum += 128 - abs((int)x - 128); + } + + return sum; +} + +static unsigned get_best_filter(const unsigned char *prev_scanline, const unsigned char *scanline, + size_t scanline_width, unsigned bytes_per_pixel, const int choices) +{ + if(!choices) return SPNG_FILTER_NONE; + + scanline_width--; + + int i; + unsigned int best_filter = 0; + enum spng_filter_choice flag; + int32_t sum, best_score = INT32_MAX; + int32_t filter_scores[5] = { INT32_MAX, INT32_MAX, INT32_MAX, INT32_MAX, INT32_MAX }; + + if( !(choices & (choices - 1)) ) + {/* only one choice/bit is set */ + for(i=0; i < 5; i++) + { + if(choices == 1 << (i + 3)) return i; + } + } + + for(i=0; i < 5; i++) + { + flag = 1 << (i + 3); + + if(choices & flag) sum = filter_sum(prev_scanline, scanline, scanline_width, bytes_per_pixel, i); + else continue; + + filter_scores[i] = abs(sum); + + if(filter_scores[i] < best_score) + { + best_score = filter_scores[i]; + best_filter = i; + } + } + + return best_filter; +} + +/* Scale "sbits" significant bits in "sample" from "bit_depth" to "target" + + "bit_depth" must be a valid PNG depth + "sbits" must be less than or equal to "bit_depth" + "target" must be between 1 and 16 +*/ +static uint16_t sample_to_target(uint16_t sample, unsigned bit_depth, unsigned sbits, unsigned target) +{ + if(bit_depth == sbits) + { + if(target == sbits) return sample; /* No scaling */ + }/* bit_depth > sbits */ + else sample = sample >> (bit_depth - sbits); /* Shift significant bits to bottom */ + + /* Downscale */ + if(target < sbits) return sample >> (sbits - target); + + /* Upscale using left bit replication */ + int8_t shift_amount = target - sbits; + uint16_t sample_bits = sample; + sample = 0; + + while(shift_amount >= 0) + { + sample = sample | (sample_bits << shift_amount); + shift_amount -= sbits; + } + + int8_t partial = shift_amount + (int8_t)sbits; + + if(partial != 0) sample = sample | (sample_bits >> abs(shift_amount)); + + return sample; +} + +static inline void gamma_correct_row(unsigned char *row, uint32_t pixels, int fmt, const uint16_t *gamma_lut) +{ + uint32_t i; + + if(fmt == SPNG_FMT_RGBA8) + { + unsigned char *px; + for(i=0; i < pixels; i++) + { + px = row + i * 4; + + px[0] = gamma_lut[px[0]]; + px[1] = gamma_lut[px[1]]; + px[2] = gamma_lut[px[2]]; + } + } + else if(fmt == SPNG_FMT_RGBA16) + { + for(i=0; i < pixels; i++) + { + uint16_t px[4]; + memcpy(px, row + i * 8, 8); + + px[0] = gamma_lut[px[0]]; + px[1] = gamma_lut[px[1]]; + px[2] = gamma_lut[px[2]]; + + memcpy(row + i * 8, px, 8); + } + } + else if(fmt == SPNG_FMT_RGB8) + { + unsigned char *px; + for(i=0; i < pixels; i++) + { + px = row + i * 3; + + px[0] = gamma_lut[px[0]]; + px[1] = gamma_lut[px[1]]; + px[2] = gamma_lut[px[2]]; + } + } +} + +/* Apply transparency to output row */ +static inline void trns_row(unsigned char *row, + const unsigned char *scanline, + const unsigned char *trns, + unsigned scanline_stride, + struct spng_ihdr *ihdr, + uint32_t pixels, + int fmt) +{ + uint32_t i; + unsigned row_stride; + unsigned depth = ihdr->bit_depth; + + if(fmt == SPNG_FMT_RGBA8) + { + if(ihdr->color_type == SPNG_COLOR_TYPE_GRAYSCALE) return; /* already applied in the decoding loop */ + + row_stride = 4; + for(i=0; i < pixels; i++, scanline+=scanline_stride, row+=row_stride) + { + if(!memcmp(scanline, trns, scanline_stride)) row[3] = 0; + } + } + else if(fmt == SPNG_FMT_RGBA16) + { + if(ihdr->color_type == SPNG_COLOR_TYPE_GRAYSCALE) return; /* already applied in the decoding loop */ + + row_stride = 8; + for(i=0; i < pixels; i++, scanline+=scanline_stride, row+=row_stride) + { + if(!memcmp(scanline, trns, scanline_stride)) memset(row + 6, 0, 2); + } + } + else if(fmt == SPNG_FMT_GA8) + { + row_stride = 2; + + if(depth == 16) + { + for(i=0; i < pixels; i++, scanline+=scanline_stride, row+=row_stride) + { + if(!memcmp(scanline, trns, scanline_stride)) memset(row + 1, 0, 1); + } + } + else /* depth <= 8 */ + { + struct spng__iter iter = spng__iter_init(depth, scanline); + + for(i=0; i < pixels; i++, row+=row_stride) + { + if(trns[0] == get_sample(&iter)) row[1] = 0; + } + } + } + else if(fmt == SPNG_FMT_GA16) + { + row_stride = 4; + + if(depth == 16) + { + for(i=0; i< pixels; i++, scanline+=scanline_stride, row+=row_stride) + { + if(!memcmp(scanline, trns, 2)) memset(row + 2, 0, 2); + } + } + else + { + struct spng__iter iter = spng__iter_init(depth, scanline); + + for(i=0; i< pixels; i++, row+=row_stride) + { + if(trns[0] == get_sample(&iter)) memset(row + 2, 0, 2); + } + } + } + else return; +} + +static inline void scale_row(unsigned char *row, uint32_t pixels, int fmt, unsigned depth, const struct spng_sbit *sbit) +{ + uint32_t i; + + if(fmt == SPNG_FMT_RGBA8) + { + unsigned char px[4]; + for(i=0; i < pixels; i++) + { + memcpy(px, row + i * 4, 4); + + px[0] = sample_to_target(px[0], depth, sbit->red_bits, 8); + px[1] = sample_to_target(px[1], depth, sbit->green_bits, 8); + px[2] = sample_to_target(px[2], depth, sbit->blue_bits, 8); + px[3] = sample_to_target(px[3], depth, sbit->alpha_bits, 8); + + memcpy(row + i * 4, px, 4); + } + } + else if(fmt == SPNG_FMT_RGBA16) + { + uint16_t px[4]; + for(i=0; i < pixels; i++) + { + memcpy(px, row + i * 8, 8); + + px[0] = sample_to_target(px[0], depth, sbit->red_bits, 16); + px[1] = sample_to_target(px[1], depth, sbit->green_bits, 16); + px[2] = sample_to_target(px[2], depth, sbit->blue_bits, 16); + px[3] = sample_to_target(px[3], depth, sbit->alpha_bits, 16); + + memcpy(row + i * 8, px, 8); + } + } + else if(fmt == SPNG_FMT_RGB8) + { + unsigned char px[4]; + for(i=0; i < pixels; i++) + { + memcpy(px, row + i * 3, 3); + + px[0] = sample_to_target(px[0], depth, sbit->red_bits, 8); + px[1] = sample_to_target(px[1], depth, sbit->green_bits, 8); + px[2] = sample_to_target(px[2], depth, sbit->blue_bits, 8); + + memcpy(row + i * 3, px, 3); + } + } + else if(fmt == SPNG_FMT_G8) + { + for(i=0; i < pixels; i++) + { + row[i] = sample_to_target(row[i], depth, sbit->grayscale_bits, 8); + } + } + else if(fmt == SPNG_FMT_GA8) + { + for(i=0; i < pixels; i++) + { + row[i*2] = sample_to_target(row[i*2], depth, sbit->grayscale_bits, 8); + } + } +} + +/* Expand to *row using 8-bit palette indices from *scanline */ +static void expand_row(unsigned char *row, + const unsigned char *scanline, + const union spng__decode_plte *decode_plte, + uint32_t width, + int fmt) +{ + uint32_t i = 0; + unsigned char *px; + unsigned char entry; + const struct spng_plte_entry *plte = decode_plte->rgba; + +#if defined(SPNG_ARM) + if(fmt == SPNG_FMT_RGBA8) i = expand_palette_rgba8_neon(row, scanline, decode_plte->raw, width); + else if(fmt == SPNG_FMT_RGB8) + { + i = expand_palette_rgb8_neon(row, scanline, decode_plte->raw, width); + + for(; i < width; i++) + {/* In this case the LUT is 3 bytes packed */ + px = row + i * 3; + entry = scanline[i]; + px[0] = decode_plte->raw[entry * 3 + 0]; + px[1] = decode_plte->raw[entry * 3 + 1]; + px[2] = decode_plte->raw[entry * 3 + 2]; + } + return; + } +#endif + + if(fmt == SPNG_FMT_RGBA8) + { + for(; i < width; i++) + { + px = row + i * 4; + entry = scanline[i]; + px[0] = plte[entry].red; + px[1] = plte[entry].green; + px[2] = plte[entry].blue; + px[3] = plte[entry].alpha; + } + } + else if(fmt == SPNG_FMT_RGB8) + { + for(; i < width; i++) + { + px = row + i * 3; + entry = scanline[i]; + px[0] = plte[entry].red; + px[1] = plte[entry].green; + px[2] = plte[entry].blue; + } + } +} + +/* Unpack 1/2/4/8-bit samples to G8/GA8/GA16 or G16 -> GA16 */ +static void unpack_scanline(unsigned char *out, const unsigned char *scanline, uint32_t width, unsigned bit_depth, int fmt) +{ + struct spng__iter iter = spng__iter_init(bit_depth, scanline); + uint32_t i; + uint16_t sample, alpha = 65535; + + + if(fmt == SPNG_FMT_GA8) goto ga8; + else if(fmt == SPNG_FMT_GA16) goto ga16; + + /* 1/2/4-bit -> 8-bit */ + for(i=0; i < width; i++) out[i] = get_sample(&iter); + + return; + +ga8: + /* 1/2/4/8-bit -> GA8 */ + for(i=0; i < width; i++) + { + out[i*2] = get_sample(&iter); + out[i*2 + 1] = 255; + } + + return; + +ga16: + + /* 16 -> GA16 */ + if(bit_depth == 16) + { + for(i=0; i < width; i++) + { + memcpy(out + i * 4, scanline + i * 2, 2); + memcpy(out + i * 4 + 2, &alpha, 2); + } + return; + } + + /* 1/2/4/8-bit -> GA16 */ + for(i=0; i < width; i++) + { + sample = get_sample(&iter); + memcpy(out + i * 4, &sample, 2); + memcpy(out + i * 4 + 2, &alpha, 2); + } +} + +static int check_ihdr(const struct spng_ihdr *ihdr, uint32_t max_width, uint32_t max_height) +{ + if(ihdr->width > spng_u32max || !ihdr->width) return SPNG_EWIDTH; + if(ihdr->height > spng_u32max || !ihdr->height) return SPNG_EHEIGHT; + + if(ihdr->width > max_width) return SPNG_EUSER_WIDTH; + if(ihdr->height > max_height) return SPNG_EUSER_HEIGHT; + + switch(ihdr->color_type) + { + case SPNG_COLOR_TYPE_GRAYSCALE: + { + if( !(ihdr->bit_depth == 1 || ihdr->bit_depth == 2 || + ihdr->bit_depth == 4 || ihdr->bit_depth == 8 || + ihdr->bit_depth == 16) ) + return SPNG_EBIT_DEPTH; + + break; + } + case SPNG_COLOR_TYPE_TRUECOLOR: + case SPNG_COLOR_TYPE_GRAYSCALE_ALPHA: + case SPNG_COLOR_TYPE_TRUECOLOR_ALPHA: + { + if( !(ihdr->bit_depth == 8 || ihdr->bit_depth == 16) ) + return SPNG_EBIT_DEPTH; + + break; + } + case SPNG_COLOR_TYPE_INDEXED: + { + if( !(ihdr->bit_depth == 1 || ihdr->bit_depth == 2 || + ihdr->bit_depth == 4 || ihdr->bit_depth == 8) ) + return SPNG_EBIT_DEPTH; + + break; + } + default: return SPNG_ECOLOR_TYPE; + } + + if(ihdr->compression_method) return SPNG_ECOMPRESSION_METHOD; + if(ihdr->filter_method) return SPNG_EFILTER_METHOD; + + if(ihdr->interlace_method > 1) return SPNG_EINTERLACE_METHOD; + + return 0; +} + +static int check_plte(const struct spng_plte *plte, const struct spng_ihdr *ihdr) +{ + if(plte == NULL || ihdr == NULL) return 1; + + if(plte->n_entries == 0) return 1; + if(plte->n_entries > 256) return 1; + + if(ihdr->color_type == SPNG_COLOR_TYPE_INDEXED) + { + if(plte->n_entries > (1U << ihdr->bit_depth)) return 1; + } + + return 0; +} + +static int check_sbit(const struct spng_sbit *sbit, const struct spng_ihdr *ihdr) +{ + if(sbit == NULL || ihdr == NULL) return 1; + + if(ihdr->color_type == 0) + { + if(sbit->grayscale_bits == 0) return SPNG_ESBIT; + if(sbit->grayscale_bits > ihdr->bit_depth) return SPNG_ESBIT; + } + else if(ihdr->color_type == 2 || ihdr->color_type == 3) + { + if(sbit->red_bits == 0) return SPNG_ESBIT; + if(sbit->green_bits == 0) return SPNG_ESBIT; + if(sbit->blue_bits == 0) return SPNG_ESBIT; + + uint8_t bit_depth; + if(ihdr->color_type == 3) bit_depth = 8; + else bit_depth = ihdr->bit_depth; + + if(sbit->red_bits > bit_depth) return SPNG_ESBIT; + if(sbit->green_bits > bit_depth) return SPNG_ESBIT; + if(sbit->blue_bits > bit_depth) return SPNG_ESBIT; + } + else if(ihdr->color_type == 4) + { + if(sbit->grayscale_bits == 0) return SPNG_ESBIT; + if(sbit->alpha_bits == 0) return SPNG_ESBIT; + + if(sbit->grayscale_bits > ihdr->bit_depth) return SPNG_ESBIT; + if(sbit->alpha_bits > ihdr->bit_depth) return SPNG_ESBIT; + } + else if(ihdr->color_type == 6) + { + if(sbit->red_bits == 0) return SPNG_ESBIT; + if(sbit->green_bits == 0) return SPNG_ESBIT; + if(sbit->blue_bits == 0) return SPNG_ESBIT; + if(sbit->alpha_bits == 0) return SPNG_ESBIT; + + if(sbit->red_bits > ihdr->bit_depth) return SPNG_ESBIT; + if(sbit->green_bits > ihdr->bit_depth) return SPNG_ESBIT; + if(sbit->blue_bits > ihdr->bit_depth) return SPNG_ESBIT; + if(sbit->alpha_bits > ihdr->bit_depth) return SPNG_ESBIT; + } + + return 0; +} + +static int check_chrm_int(const struct spng_chrm_int *chrm_int) +{ + if(chrm_int == NULL) return 1; + + if(chrm_int->white_point_x > spng_u32max || + chrm_int->white_point_y > spng_u32max || + chrm_int->red_x > spng_u32max || + chrm_int->red_y > spng_u32max || + chrm_int->green_x > spng_u32max || + chrm_int->green_y > spng_u32max || + chrm_int->blue_x > spng_u32max || + chrm_int->blue_y > spng_u32max) return SPNG_ECHRM; + + return 0; +} + +static int check_phys(const struct spng_phys *phys) +{ + if(phys == NULL) return 1; + + if(phys->unit_specifier > 1) return SPNG_EPHYS; + + if(phys->ppu_x > spng_u32max) return SPNG_EPHYS; + if(phys->ppu_y > spng_u32max) return SPNG_EPHYS; + + return 0; +} + +static int check_time(const struct spng_time *time) +{ + if(time == NULL) return 1; + + if(time->month == 0 || time->month > 12) return 1; + if(time->day == 0 || time->day > 31) return 1; + if(time->hour > 23) return 1; + if(time->minute > 59) return 1; + if(time->second > 60) return 1; + + return 0; +} + +static int check_offs(const struct spng_offs *offs) +{ + if(offs == NULL) return 1; + + if(offs->unit_specifier > 1) return 1; + + return 0; +} + +static int check_exif(const struct spng_exif *exif) +{ + if(exif == NULL) return 1; + if(exif->data == NULL) return 1; + + if(exif->length < 4) return SPNG_ECHUNK_SIZE; + if(exif->length > spng_u32max) return SPNG_ECHUNK_STDLEN; + + const uint8_t exif_le[4] = { 73, 73, 42, 0 }; + const uint8_t exif_be[4] = { 77, 77, 0, 42 }; + + if(memcmp(exif->data, exif_le, 4) && memcmp(exif->data, exif_be, 4)) return 1; + + return 0; +} + +/* Validate PNG keyword */ +static int check_png_keyword(const char *str) +{ + if(str == NULL) return 1; + size_t len = strlen(str); + const char *end = str + len; + + if(!len) return 1; + if(len > 79) return 1; + if(str[0] == ' ') return 1; /* Leading space */ + if(end[-1] == ' ') return 1; /* Trailing space */ + if(strstr(str, " ") != NULL) return 1; /* Consecutive spaces */ + + uint8_t c; + while(str != end) + { + memcpy(&c, str, 1); + + if( (c >= 32 && c <= 126) || (c >= 161) ) str++; + else return 1; /* Invalid character */ + } + + return 0; +} + +/* Validate PNG text *str up to 'len' bytes */ +static int check_png_text(const char *str, size_t len) +{/* XXX: are consecutive newlines permitted? */ + if(str == NULL || len == 0) return 1; + + uint8_t c; + size_t i = 0; + while(i < len) + { + memcpy(&c, str + i, 1); + + if( (c >= 32 && c <= 126) || (c >= 161) || c == 10) i++; + else return 1; /* Invalid character */ + } + + return 0; +} + +/* Returns non-zero for standard chunks which are stored without allocating memory */ +static int is_small_chunk(uint8_t type[4]) +{ + if(!memcmp(type, type_plte, 4)) return 1; + else if(!memcmp(type, type_chrm, 4)) return 1; + else if(!memcmp(type, type_gama, 4)) return 1; + else if(!memcmp(type, type_sbit, 4)) return 1; + else if(!memcmp(type, type_srgb, 4)) return 1; + else if(!memcmp(type, type_bkgd, 4)) return 1; + else if(!memcmp(type, type_trns, 4)) return 1; + else if(!memcmp(type, type_hist, 4)) return 1; + else if(!memcmp(type, type_phys, 4)) return 1; + else if(!memcmp(type, type_time, 4)) return 1; + else if(!memcmp(type, type_offs, 4)) return 1; + else return 0; +} + +static int read_ihdr(spng_ctx *ctx) +{ + int ret; + struct spng_chunk *chunk = &ctx->current_chunk; + const unsigned char *data; + + chunk->offset = 8; + chunk->length = 13; + size_t sizeof_sig_ihdr = 29; + + ret = read_data(ctx, sizeof_sig_ihdr); + if(ret) return ret; + + data = ctx->data; + + if(memcmp(data, spng_signature, sizeof(spng_signature))) return SPNG_ESIGNATURE; + + chunk->length = read_u32(data + 8); + memcpy(&chunk->type, data + 12, 4); + + if(chunk->length != 13) return SPNG_EIHDR_SIZE; + if(memcmp(chunk->type, type_ihdr, 4)) return SPNG_ENOIHDR; + + ctx->cur_actual_crc = crc32(0, NULL, 0); + ctx->cur_actual_crc = crc32(ctx->cur_actual_crc, data + 12, 17); + + ctx->ihdr.width = read_u32(data + 16); + ctx->ihdr.height = read_u32(data + 20); + ctx->ihdr.bit_depth = data[24]; + ctx->ihdr.color_type = data[25]; + ctx->ihdr.compression_method = data[26]; + ctx->ihdr.filter_method = data[27]; + ctx->ihdr.interlace_method = data[28]; + + ret = check_ihdr(&ctx->ihdr, ctx->max_width, ctx->max_height); + if(ret) return ret; + + ctx->file.ihdr = 1; + ctx->stored.ihdr = 1; + + if(ctx->ihdr.bit_depth < 8) ctx->bytes_per_pixel = 1; + else ctx->bytes_per_pixel = num_channels(&ctx->ihdr) * (ctx->ihdr.bit_depth / 8); + + ret = calculate_subimages(ctx); + if(ret) return ret; + + return 0; +} + +static void splt_undo(spng_ctx *ctx) +{ + struct spng_splt *splt = &ctx->splt_list[ctx->n_splt - 1]; + + spng__free(ctx, splt->entries); + + decrease_cache_usage(ctx, sizeof(struct spng_splt)); + decrease_cache_usage(ctx, splt->n_entries * sizeof(struct spng_splt_entry)); + + splt->entries = NULL; + + ctx->n_splt--; +} + +static void text_undo(spng_ctx *ctx) +{ + struct spng_text2 *text = &ctx->text_list[ctx->n_text - 1]; + + spng__free(ctx, text->keyword); + if(text->compression_flag) spng__free(ctx, text->text); + + decrease_cache_usage(ctx, text->cache_usage); + decrease_cache_usage(ctx, sizeof(struct spng_text2)); + + text->keyword = NULL; + text->text = NULL; + + ctx->n_text--; +} + +static void chunk_undo(spng_ctx *ctx) +{ + struct spng_unknown_chunk *chunk = &ctx->chunk_list[ctx->n_chunks - 1]; + + spng__free(ctx, chunk->data); + + decrease_cache_usage(ctx, chunk->length); + decrease_cache_usage(ctx, sizeof(struct spng_unknown_chunk)); + + chunk->data = NULL; + + ctx->n_chunks--; +} + +static int read_non_idat_chunks(spng_ctx *ctx) +{ + int ret; + struct spng_chunk chunk; + const unsigned char *data; + + ctx->discard = 0; + ctx->undo = NULL; + ctx->prev_stored = ctx->stored; + + while( !(ret = read_header(ctx))) + { + if(ctx->discard) + { + if(ctx->undo) ctx->undo(ctx); + + ctx->stored = ctx->prev_stored; + } + + ctx->discard = 0; + ctx->undo = NULL; + + ctx->prev_stored = ctx->stored; + chunk = ctx->current_chunk; + + if(!memcmp(chunk.type, type_idat, 4)) + { + if(ctx->state < SPNG_STATE_FIRST_IDAT) + { + if(ctx->ihdr.color_type == 3 && !ctx->stored.plte) return SPNG_ENOPLTE; + + ctx->first_idat = chunk; + return 0; + } + + if(ctx->prev_was_idat) + { + /* Ignore extra IDAT's */ + ret = discard_chunk_bytes(ctx, chunk.length); + if(ret) return ret; + + continue; + } + else return SPNG_ECHUNK_POS; /* IDAT chunk not at the end of the IDAT sequence */ + } + + ctx->prev_was_idat = 0; + + if(is_small_chunk(chunk.type)) + { + /* None of the known chunks can be zero length */ + if(!chunk.length) return SPNG_ECHUNK_SIZE; + + /* The largest of these chunks is PLTE with 256 entries */ + ret = read_chunk_bytes(ctx, chunk.length > 768 ? 768 : chunk.length); + if(ret) return ret; + } + + data = ctx->data; + + if(is_critical_chunk(&chunk)) + { + if(!memcmp(chunk.type, type_plte, 4)) + { + if(ctx->file.trns || ctx->file.hist || ctx->file.bkgd) return SPNG_ECHUNK_POS; + if(chunk.length % 3 != 0) return SPNG_ECHUNK_SIZE; + + ctx->plte.n_entries = chunk.length / 3; + + if(check_plte(&ctx->plte, &ctx->ihdr)) return SPNG_ECHUNK_SIZE; /* XXX: EPLTE? */ + + size_t i; + for(i=0; i < ctx->plte.n_entries; i++) + { + ctx->plte.entries[i].red = data[i * 3]; + ctx->plte.entries[i].green = data[i * 3 + 1]; + ctx->plte.entries[i].blue = data[i * 3 + 2]; + } + + ctx->file.plte = 1; + ctx->stored.plte = 1; + } + else if(!memcmp(chunk.type, type_iend, 4)) + { + if(ctx->state == SPNG_STATE_AFTER_IDAT) + { + if(chunk.length) return SPNG_ECHUNK_SIZE; + + ret = read_and_check_crc(ctx); + if(ret == -SPNG_CRC_DISCARD) ret = 0; + + return ret; + } + else return SPNG_ECHUNK_POS; + } + else if(!memcmp(chunk.type, type_ihdr, 4)) return SPNG_ECHUNK_POS; + else return SPNG_ECHUNK_UNKNOWN_CRITICAL; + } + else if(!memcmp(chunk.type, type_chrm, 4)) /* Ancillary chunks */ + { + if(ctx->file.plte) return SPNG_ECHUNK_POS; + if(ctx->state == SPNG_STATE_AFTER_IDAT) return SPNG_ECHUNK_POS; + if(ctx->file.chrm) return SPNG_EDUP_CHRM; + + if(chunk.length != 32) return SPNG_ECHUNK_SIZE; + + ctx->chrm_int.white_point_x = read_u32(data); + ctx->chrm_int.white_point_y = read_u32(data + 4); + ctx->chrm_int.red_x = read_u32(data + 8); + ctx->chrm_int.red_y = read_u32(data + 12); + ctx->chrm_int.green_x = read_u32(data + 16); + ctx->chrm_int.green_y = read_u32(data + 20); + ctx->chrm_int.blue_x = read_u32(data + 24); + ctx->chrm_int.blue_y = read_u32(data + 28); + + if(check_chrm_int(&ctx->chrm_int)) return SPNG_ECHRM; + + ctx->file.chrm = 1; + ctx->stored.chrm = 1; + } + else if(!memcmp(chunk.type, type_gama, 4)) + { + if(ctx->file.plte) return SPNG_ECHUNK_POS; + if(ctx->state == SPNG_STATE_AFTER_IDAT) return SPNG_ECHUNK_POS; + if(ctx->file.gama) return SPNG_EDUP_GAMA; + + if(chunk.length != 4) return SPNG_ECHUNK_SIZE; + + ctx->gama = read_u32(data); + + if(!ctx->gama) return SPNG_EGAMA; + if(ctx->gama > spng_u32max) return SPNG_EGAMA; + + ctx->file.gama = 1; + ctx->stored.gama = 1; + } + else if(!memcmp(chunk.type, type_sbit, 4)) + { + if(ctx->file.plte) return SPNG_ECHUNK_POS; + if(ctx->state == SPNG_STATE_AFTER_IDAT) return SPNG_ECHUNK_POS; + if(ctx->file.sbit) return SPNG_EDUP_SBIT; + + if(ctx->ihdr.color_type == 0) + { + if(chunk.length != 1) return SPNG_ECHUNK_SIZE; + + ctx->sbit.grayscale_bits = data[0]; + } + else if(ctx->ihdr.color_type == 2 || ctx->ihdr.color_type == 3) + { + if(chunk.length != 3) return SPNG_ECHUNK_SIZE; + + ctx->sbit.red_bits = data[0]; + ctx->sbit.green_bits = data[1]; + ctx->sbit.blue_bits = data[2]; + } + else if(ctx->ihdr.color_type == 4) + { + if(chunk.length != 2) return SPNG_ECHUNK_SIZE; + + ctx->sbit.grayscale_bits = data[0]; + ctx->sbit.alpha_bits = data[1]; + } + else if(ctx->ihdr.color_type == 6) + { + if(chunk.length != 4) return SPNG_ECHUNK_SIZE; + + ctx->sbit.red_bits = data[0]; + ctx->sbit.green_bits = data[1]; + ctx->sbit.blue_bits = data[2]; + ctx->sbit.alpha_bits = data[3]; + } + + if(check_sbit(&ctx->sbit, &ctx->ihdr)) return SPNG_ESBIT; + + ctx->file.sbit = 1; + ctx->stored.sbit = 1; + } + else if(!memcmp(chunk.type, type_srgb, 4)) + { + if(ctx->file.plte) return SPNG_ECHUNK_POS; + if(ctx->state == SPNG_STATE_AFTER_IDAT) return SPNG_ECHUNK_POS; + if(ctx->file.srgb) return SPNG_EDUP_SRGB; + + if(chunk.length != 1) return SPNG_ECHUNK_SIZE; + + ctx->srgb_rendering_intent = data[0]; + + if(ctx->srgb_rendering_intent > 3) return SPNG_ESRGB; + + ctx->file.srgb = 1; + ctx->stored.srgb = 1; + } + else if(!memcmp(chunk.type, type_bkgd, 4)) + { + if(ctx->state == SPNG_STATE_AFTER_IDAT) return SPNG_ECHUNK_POS; + if(ctx->file.bkgd) return SPNG_EDUP_BKGD; + + if(ctx->ihdr.color_type == 0 || ctx->ihdr.color_type == 4) + { + if(chunk.length != 2) return SPNG_ECHUNK_SIZE; + + ctx->bkgd.gray = read_u16(data); + } + else if(ctx->ihdr.color_type == 2 || ctx->ihdr.color_type == 6) + { + if(chunk.length != 6) return SPNG_ECHUNK_SIZE; + + ctx->bkgd.red = read_u16(data); + ctx->bkgd.green = read_u16(data + 2); + ctx->bkgd.blue = read_u16(data + 4); + } + else if(ctx->ihdr.color_type == 3) + { + if(chunk.length != 1) return SPNG_ECHUNK_SIZE; + if(!ctx->file.plte) return SPNG_EBKGD_NO_PLTE; + + ctx->bkgd.plte_index = data[0]; + if(ctx->bkgd.plte_index >= ctx->plte.n_entries) return SPNG_EBKGD_PLTE_IDX; + } + + ctx->file.bkgd = 1; + ctx->stored.bkgd = 1; + } + else if(!memcmp(chunk.type, type_trns, 4)) + { + if(ctx->state == SPNG_STATE_AFTER_IDAT) return SPNG_ECHUNK_POS; + if(ctx->file.trns) return SPNG_EDUP_TRNS; + if(!chunk.length) return SPNG_ECHUNK_SIZE; + + if(ctx->ihdr.color_type == 0) + { + if(chunk.length != 2) return SPNG_ECHUNK_SIZE; + + ctx->trns.gray = read_u16(data); + } + else if(ctx->ihdr.color_type == 2) + { + if(chunk.length != 6) return SPNG_ECHUNK_SIZE; + + ctx->trns.red = read_u16(data); + ctx->trns.green = read_u16(data + 2); + ctx->trns.blue = read_u16(data + 4); + } + else if(ctx->ihdr.color_type == 3) + { + if(chunk.length > ctx->plte.n_entries) return SPNG_ECHUNK_SIZE; + if(!ctx->file.plte) return SPNG_ETRNS_NO_PLTE; + + memcpy(ctx->trns.type3_alpha, data, chunk.length); + ctx->trns.n_type3_entries = chunk.length; + } + + if(ctx->ihdr.color_type == 4 || ctx->ihdr.color_type == 6) return SPNG_ETRNS_COLOR_TYPE; + + ctx->file.trns = 1; + ctx->stored.trns = 1; + } + else if(!memcmp(chunk.type, type_hist, 4)) + { + if(!ctx->file.plte) return SPNG_EHIST_NO_PLTE; + if(ctx->state == SPNG_STATE_AFTER_IDAT) return SPNG_ECHUNK_POS; + if(ctx->file.hist) return SPNG_EDUP_HIST; + + if( (chunk.length / 2) != (ctx->plte.n_entries) ) return SPNG_ECHUNK_SIZE; + + size_t k; + for(k=0; k < (chunk.length / 2); k++) + { + ctx->hist.frequency[k] = read_u16(data + k*2); + } + + ctx->file.hist = 1; + ctx->stored.hist = 1; + } + else if(!memcmp(chunk.type, type_phys, 4)) + { + if(ctx->state == SPNG_STATE_AFTER_IDAT) return SPNG_ECHUNK_POS; + if(ctx->file.phys) return SPNG_EDUP_PHYS; + + if(chunk.length != 9) return SPNG_ECHUNK_SIZE; + + ctx->phys.ppu_x = read_u32(data); + ctx->phys.ppu_y = read_u32(data + 4); + ctx->phys.unit_specifier = data[8]; + + if(check_phys(&ctx->phys)) return SPNG_EPHYS; + + ctx->file.phys = 1; + ctx->stored.phys = 1; + } + else if(!memcmp(chunk.type, type_time, 4)) + { + if(ctx->file.time) return SPNG_EDUP_TIME; + + if(chunk.length != 7) return SPNG_ECHUNK_SIZE; + + struct spng_time time; + + time.year = read_u16(data); + time.month = data[2]; + time.day = data[3]; + time.hour = data[4]; + time.minute = data[5]; + time.second = data[6]; + + if(check_time(&time)) return SPNG_ETIME; + + ctx->file.time = 1; + + if(!ctx->user.time) ctx->time = time; + + ctx->stored.time = 1; + } + else if(!memcmp(chunk.type, type_offs, 4)) + { + if(ctx->state == SPNG_STATE_AFTER_IDAT) return SPNG_ECHUNK_POS; + if(ctx->file.offs) return SPNG_EDUP_OFFS; + + if(chunk.length != 9) return SPNG_ECHUNK_SIZE; + + ctx->offs.x = read_s32(data); + ctx->offs.y = read_s32(data + 4); + ctx->offs.unit_specifier = data[8]; + + if(check_offs(&ctx->offs)) return SPNG_EOFFS; + + ctx->file.offs = 1; + ctx->stored.offs = 1; + } + else /* Arbitrary-length chunk */ + { + + if(!memcmp(chunk.type, type_exif, 4)) + { + if(ctx->file.exif) return SPNG_EDUP_EXIF; + if(!chunk.length) return SPNG_EEXIF; + + ctx->file.exif = 1; + + if(ctx->user.exif) goto discard; + + if(increase_cache_usage(ctx, chunk.length, 1)) return SPNG_ECHUNK_LIMITS; + + struct spng_exif exif; + + exif.length = chunk.length; + + exif.data = spng__malloc(ctx, chunk.length); + if(exif.data == NULL) return SPNG_EMEM; + + ret = read_chunk_bytes2(ctx, exif.data, chunk.length); + if(ret) + { + spng__free(ctx, exif.data); + return ret; + } + + if(check_exif(&exif)) + { + spng__free(ctx, exif.data); + return SPNG_EEXIF; + } + + ctx->exif = exif; + + ctx->stored.exif = 1; + } + else if(!memcmp(chunk.type, type_iccp, 4)) + {/* TODO: add test file with color profile */ + if(ctx->file.plte) return SPNG_ECHUNK_POS; + if(ctx->state == SPNG_STATE_AFTER_IDAT) return SPNG_ECHUNK_POS; + if(ctx->file.iccp) return SPNG_EDUP_ICCP; + if(!chunk.length) return SPNG_ECHUNK_SIZE; + + ctx->file.iccp = 1; + + uint32_t peek_bytes = 81 > chunk.length ? chunk.length : 81; + + ret = read_chunk_bytes(ctx, peek_bytes); + if(ret) return ret; + + unsigned char *keyword_nul = memchr(ctx->data, '\0', peek_bytes); + if(keyword_nul == NULL) return SPNG_EICCP_NAME; + + uint32_t keyword_len = keyword_nul - ctx->data; + + if(keyword_len > 79) return SPNG_EICCP_NAME; + + memcpy(ctx->iccp.profile_name, ctx->data, keyword_len); + + if(check_png_keyword(ctx->iccp.profile_name)) return SPNG_EICCP_NAME; + + if(chunk.length < (keyword_len + 2)) return SPNG_ECHUNK_SIZE; + + if(ctx->data[keyword_len + 1] != 0) return SPNG_EICCP_COMPRESSION_METHOD; + + ret = spng__inflate_stream(ctx, &ctx->iccp.profile, &ctx->iccp.profile_len, 0, ctx->data + keyword_len + 2, peek_bytes - (keyword_len + 2)); + + if(ret) return ret; + + ctx->stored.iccp = 1; + } + else if(!memcmp(chunk.type, type_text, 4) || + !memcmp(chunk.type, type_ztxt, 4) || + !memcmp(chunk.type, type_itxt, 4)) + { + if(!chunk.length) return SPNG_ECHUNK_SIZE; + + ctx->file.text = 1; + + if(ctx->user.text) goto discard; + + if(increase_cache_usage(ctx, sizeof(struct spng_text2), 1)) return SPNG_ECHUNK_LIMITS; + + ctx->n_text++; + if(ctx->n_text < 1) return SPNG_EOVERFLOW; + if(sizeof(struct spng_text2) > SIZE_MAX / ctx->n_text) return SPNG_EOVERFLOW; + + void *buf = spng__realloc(ctx, ctx->text_list, ctx->n_text * sizeof(struct spng_text2)); + if(buf == NULL) return SPNG_EMEM; + ctx->text_list = buf; + + struct spng_text2 *text = &ctx->text_list[ctx->n_text - 1]; + memset(text, 0, sizeof(struct spng_text2)); + + ctx->undo = text_undo; + + uint32_t text_offset = 0, language_tag_offset = 0, translated_keyword_offset = 0; + uint32_t peek_bytes = 256; /* enough for 3 80-byte keywords and some text bytes */ + uint32_t keyword_len; + + if(peek_bytes > chunk.length) peek_bytes = chunk.length; + + ret = read_chunk_bytes(ctx, peek_bytes); + if(ret) return ret; + + data = ctx->data; + + const unsigned char *zlib_stream = NULL; + const unsigned char *peek_end = data + peek_bytes; + const unsigned char *keyword_nul = memchr(data, 0, chunk.length > 80 ? 80 : chunk.length); + + if(keyword_nul == NULL) return SPNG_ETEXT_KEYWORD; + + keyword_len = keyword_nul - data; + + if(!memcmp(chunk.type, type_text, 4)) + { + text->type = SPNG_TEXT; + + text->text_length = chunk.length - keyword_len - 1; + + text_offset = keyword_len; + + /* increment past nul if there is a text field */ + if(text->text_length) text_offset++; + } + else if(!memcmp(chunk.type, type_ztxt, 4)) + { + text->type = SPNG_ZTXT; + + if((peek_bytes - keyword_len) <= 2) return SPNG_EZTXT; + + if(keyword_nul[1]) return SPNG_EZTXT_COMPRESSION_METHOD; + + text->compression_flag = 1; + + text_offset = keyword_len + 2; + } + else if(!memcmp(chunk.type, type_itxt, 4)) + { + text->type = SPNG_ITXT; + + /* at least two 1-byte fields, two >=0 length strings, and one byte of (compressed) text */ + if((peek_bytes - keyword_len) < 5) return SPNG_EITXT; + + text->compression_flag = keyword_nul[1]; + + if(text->compression_flag > 1) return SPNG_EITXT_COMPRESSION_FLAG; + + if(keyword_nul[2]) return SPNG_EITXT_COMPRESSION_METHOD; + + language_tag_offset = keyword_len + 3; + + const unsigned char *term; + term = memchr(data + language_tag_offset, 0, peek_bytes - language_tag_offset); + if(term == NULL) return SPNG_EITXT_LANG_TAG; + + if((peek_end - term) < 2) return SPNG_EITXT; + + translated_keyword_offset = term - data + 1; + + zlib_stream = memchr(data + translated_keyword_offset, 0, peek_bytes - translated_keyword_offset); + if(zlib_stream == NULL) return SPNG_EITXT; + if(zlib_stream == peek_end) return SPNG_EITXT; + + text_offset = zlib_stream - data + 1; + text->text_length = chunk.length - text_offset; + } + else return SPNG_EINTERNAL; + + + if(text->compression_flag) + { + /* cache usage = peek_bytes + decompressed text size + nul */ + if(increase_cache_usage(ctx, peek_bytes, 0)) return SPNG_ECHUNK_LIMITS; + + text->keyword = spng__calloc(ctx, 1, peek_bytes); + if(text->keyword == NULL) return SPNG_EMEM; + + memcpy(text->keyword, data, peek_bytes); + + zlib_stream = ctx->data + text_offset; + + ret = spng__inflate_stream(ctx, &text->text, &text->text_length, 1, zlib_stream, peek_bytes - text_offset); + + if(ret) return ret; + + text->text[text->text_length - 1] = '\0'; + text->cache_usage = text->text_length + peek_bytes; + } + else + { + if(increase_cache_usage(ctx, chunk.length + 1, 0)) return SPNG_ECHUNK_LIMITS; + + text->keyword = spng__malloc(ctx, chunk.length + 1); + if(text->keyword == NULL) return SPNG_EMEM; + + memcpy(text->keyword, data, peek_bytes); + + if(chunk.length > peek_bytes) + { + ret = read_chunk_bytes2(ctx, text->keyword + peek_bytes, chunk.length - peek_bytes); + if(ret) return ret; + } + + text->text = text->keyword + text_offset; + + text->text_length = chunk.length - text_offset; + + text->text[text->text_length] = '\0'; + text->cache_usage = chunk.length + 1; + } + + if(check_png_keyword(text->keyword)) return SPNG_ETEXT_KEYWORD; + + text->text_length = strlen(text->text); + + if(text->type != SPNG_ITXT) + { + language_tag_offset = keyword_len; + translated_keyword_offset = keyword_len; + + if(ctx->strict && check_png_text(text->text, text->text_length)) + { + if(text->type == SPNG_ZTXT) return SPNG_EZTXT; + else return SPNG_ETEXT; + } + } + + text->language_tag = text->keyword + language_tag_offset; + text->translated_keyword = text->keyword + translated_keyword_offset; + + ctx->stored.text = 1; + } + else if(!memcmp(chunk.type, type_splt, 4)) + { + if(ctx->state == SPNG_STATE_AFTER_IDAT) return SPNG_ECHUNK_POS; + if(ctx->user.splt) goto discard; /* XXX: could check profile names for uniqueness */ + if(!chunk.length) return SPNG_ECHUNK_SIZE; + + ctx->file.splt = 1; + + /* chunk.length + sizeof(struct spng_splt) + splt->n_entries * sizeof(struct spng_splt_entry) */ + if(increase_cache_usage(ctx, chunk.length + sizeof(struct spng_splt), 1)) return SPNG_ECHUNK_LIMITS; + + ctx->n_splt++; + if(ctx->n_splt < 1) return SPNG_EOVERFLOW; + if(sizeof(struct spng_splt) > SIZE_MAX / ctx->n_splt) return SPNG_EOVERFLOW; + + void *buf = spng__realloc(ctx, ctx->splt_list, ctx->n_splt * sizeof(struct spng_splt)); + if(buf == NULL) return SPNG_EMEM; + ctx->splt_list = buf; + + struct spng_splt *splt = &ctx->splt_list[ctx->n_splt - 1]; + + memset(splt, 0, sizeof(struct spng_splt)); + + ctx->undo = splt_undo; + + void *t = spng__malloc(ctx, chunk.length); + if(t == NULL) return SPNG_EMEM; + + splt->entries = t; /* simplifies error handling */ + data = t; + + ret = read_chunk_bytes2(ctx, t, chunk.length); + if(ret) return ret; + + uint32_t keyword_len = chunk.length < 80 ? chunk.length : 80; + + const unsigned char *keyword_nul = memchr(data, 0, keyword_len); + if(keyword_nul == NULL) return SPNG_ESPLT_NAME; + + keyword_len = keyword_nul - data; + + memcpy(splt->name, data, keyword_len); + + if(check_png_keyword(splt->name)) return SPNG_ESPLT_NAME; + + uint32_t j; + for(j=0; j < (ctx->n_splt - 1); j++) + { + if(!strcmp(ctx->splt_list[j].name, splt->name)) return SPNG_ESPLT_DUP_NAME; + } + + if( (chunk.length - keyword_len) <= 2) return SPNG_ECHUNK_SIZE; + + splt->sample_depth = data[keyword_len + 1]; + + uint32_t entries_len = chunk.length - keyword_len - 2; + if(!entries_len) return SPNG_ECHUNK_SIZE; + + if(splt->sample_depth == 16) + { + if(entries_len % 10 != 0) return SPNG_ECHUNK_SIZE; + splt->n_entries = entries_len / 10; + } + else if(splt->sample_depth == 8) + { + if(entries_len % 6 != 0) return SPNG_ECHUNK_SIZE; + splt->n_entries = entries_len / 6; + } + else return SPNG_ESPLT_DEPTH; + + if(!splt->n_entries) return SPNG_ECHUNK_SIZE; + + size_t list_size = splt->n_entries; + + if(list_size > SIZE_MAX / sizeof(struct spng_splt_entry)) return SPNG_EOVERFLOW; + + list_size *= sizeof(struct spng_splt_entry); + + if(increase_cache_usage(ctx, list_size, 0)) return SPNG_ECHUNK_LIMITS; + + splt->entries = spng__malloc(ctx, list_size); + if(splt->entries == NULL) + { + spng__free(ctx, t); + return SPNG_EMEM; + } + + data = (unsigned char*)t + keyword_len + 2; + + uint32_t k; + if(splt->sample_depth == 16) + { + for(k=0; k < splt->n_entries; k++) + { + splt->entries[k].red = read_u16(data + k * 10); + splt->entries[k].green = read_u16(data + k * 10 + 2); + splt->entries[k].blue = read_u16(data + k * 10 + 4); + splt->entries[k].alpha = read_u16(data + k * 10 + 6); + splt->entries[k].frequency = read_u16(data + k * 10 + 8); + } + } + else if(splt->sample_depth == 8) + { + for(k=0; k < splt->n_entries; k++) + { + splt->entries[k].red = data[k * 6]; + splt->entries[k].green = data[k * 6 + 1]; + splt->entries[k].blue = data[k * 6 + 2]; + splt->entries[k].alpha = data[k * 6 + 3]; + splt->entries[k].frequency = read_u16(data + k * 6 + 4); + } + } + + spng__free(ctx, t); + decrease_cache_usage(ctx, chunk.length); + + ctx->stored.splt = 1; + } + else /* Unknown chunk */ + { + ctx->file.unknown = 1; + + if(!ctx->keep_unknown) goto discard; + if(ctx->user.unknown) goto discard; + + if(increase_cache_usage(ctx, chunk.length + sizeof(struct spng_unknown_chunk), 1)) return SPNG_ECHUNK_LIMITS; + + ctx->n_chunks++; + if(ctx->n_chunks < 1) return SPNG_EOVERFLOW; + if(sizeof(struct spng_unknown_chunk) > SIZE_MAX / ctx->n_chunks) return SPNG_EOVERFLOW; + + void *buf = spng__realloc(ctx, ctx->chunk_list, ctx->n_chunks * sizeof(struct spng_unknown_chunk)); + if(buf == NULL) return SPNG_EMEM; + ctx->chunk_list = buf; + + struct spng_unknown_chunk *chunkp = &ctx->chunk_list[ctx->n_chunks - 1]; + + memset(chunkp, 0, sizeof(struct spng_unknown_chunk)); + + ctx->undo = chunk_undo; + + memcpy(chunkp->type, chunk.type, 4); + + if(ctx->state < SPNG_STATE_FIRST_IDAT) + { + if(ctx->file.plte) chunkp->location = SPNG_AFTER_PLTE; + else chunkp->location = SPNG_AFTER_IHDR; + } + else if(ctx->state >= SPNG_STATE_AFTER_IDAT) chunkp->location = SPNG_AFTER_IDAT; + + if(chunk.length > 0) + { + void *t = spng__malloc(ctx, chunk.length); + if(t == NULL) return SPNG_EMEM; + + ret = read_chunk_bytes2(ctx, t, chunk.length); + if(ret) + { + spng__free(ctx, t); + return ret; + } + + chunkp->length = chunk.length; + chunkp->data = t; + } + + ctx->stored.unknown = 1; + } + +discard: + ret = discard_chunk_bytes(ctx, ctx->cur_chunk_bytes_left); + if(ret) return ret; + } + + } + + return ret; +} + +/* Read chunks before or after the IDAT chunks depending on state */ +static int read_chunks(spng_ctx *ctx, int only_ihdr) +{ + if(ctx == NULL) return SPNG_EINTERNAL; + if(!ctx->state) return SPNG_EBADSTATE; + if(ctx->data == NULL) + { + if(ctx->encode_only) return 0; + else return SPNG_EINTERNAL; + } + + int ret = 0; + + if(ctx->state == SPNG_STATE_INPUT) + { + ret = read_ihdr(ctx); + + if(ret) return decode_err(ctx, ret); + + ctx->state = SPNG_STATE_IHDR; + } + + if(only_ihdr) return 0; + + if(ctx->state == SPNG_STATE_EOI) + { + ctx->state = SPNG_STATE_AFTER_IDAT; + ctx->prev_was_idat = 1; + } + + while(ctx->state < SPNG_STATE_FIRST_IDAT || ctx->state == SPNG_STATE_AFTER_IDAT) + { + ret = read_non_idat_chunks(ctx); + + if(!ret) + { + if(ctx->state < SPNG_STATE_FIRST_IDAT) ctx->state = SPNG_STATE_FIRST_IDAT; + else if(ctx->state == SPNG_STATE_AFTER_IDAT) ctx->state = SPNG_STATE_IEND; + } + else + { + switch(ret) + { + case SPNG_ECHUNK_POS: + case SPNG_ECHUNK_SIZE: /* size != expected size, SPNG_ECHUNK_STDLEN = invalid size */ + case SPNG_EDUP_PLTE: + case SPNG_EDUP_CHRM: + case SPNG_EDUP_GAMA: + case SPNG_EDUP_ICCP: + case SPNG_EDUP_SBIT: + case SPNG_EDUP_SRGB: + case SPNG_EDUP_BKGD: + case SPNG_EDUP_HIST: + case SPNG_EDUP_TRNS: + case SPNG_EDUP_PHYS: + case SPNG_EDUP_TIME: + case SPNG_EDUP_OFFS: + case SPNG_EDUP_EXIF: + case SPNG_ECHRM: + case SPNG_ETRNS_COLOR_TYPE: + case SPNG_ETRNS_NO_PLTE: + case SPNG_EGAMA: + case SPNG_EICCP_NAME: + case SPNG_EICCP_COMPRESSION_METHOD: + case SPNG_ESBIT: + case SPNG_ESRGB: + case SPNG_ETEXT: + case SPNG_ETEXT_KEYWORD: + case SPNG_EZTXT: + case SPNG_EZTXT_COMPRESSION_METHOD: + case SPNG_EITXT: + case SPNG_EITXT_COMPRESSION_FLAG: + case SPNG_EITXT_COMPRESSION_METHOD: + case SPNG_EITXT_LANG_TAG: + case SPNG_EITXT_TRANSLATED_KEY: + case SPNG_EBKGD_NO_PLTE: + case SPNG_EBKGD_PLTE_IDX: + case SPNG_EHIST_NO_PLTE: + case SPNG_EPHYS: + case SPNG_ESPLT_NAME: + case SPNG_ESPLT_DUP_NAME: + case SPNG_ESPLT_DEPTH: + case SPNG_ETIME: + case SPNG_EOFFS: + case SPNG_EEXIF: + case SPNG_EZLIB: + { + if(!ctx->strict && !is_critical_chunk(&ctx->current_chunk)) + { + ret = discard_chunk_bytes(ctx, ctx->cur_chunk_bytes_left); + if(ret) return decode_err(ctx, ret); + + if(ctx->undo) ctx->undo(ctx); + + ctx->stored = ctx->prev_stored; + + ctx->discard = 0; + ctx->undo = NULL; + + continue; + } + else return decode_err(ctx, ret); + + break; + } + default: return decode_err(ctx, ret); + } + } + } + + return ret; +} + +static int read_scanline(spng_ctx *ctx) +{ + int ret, pass = ctx->row_info.pass; + struct spng_row_info *ri = &ctx->row_info; + const struct spng_subimage *sub = ctx->subimage; + size_t scanline_width = sub[pass].scanline_width; + uint32_t scanline_idx = ri->scanline_idx; + + uint8_t next_filter = 0; + + if(scanline_idx == (sub[pass].height - 1) && ri->pass == ctx->last_pass) + { + ret = read_scanline_bytes(ctx, ctx->scanline, scanline_width - 1); + } + else + { + ret = read_scanline_bytes(ctx, ctx->scanline, scanline_width); + if(ret) return ret; + + next_filter = ctx->scanline[scanline_width - 1]; + if(next_filter > 4) ret = SPNG_EFILTER; + } + + if(ret) return ret; + + if(!scanline_idx && ri->filter > 1) + { + /* prev_scanline is all zeros for the first scanline */ + memset(ctx->prev_scanline, 0, scanline_width); + } + + if(ctx->ihdr.bit_depth == 16 && ctx->fmt != SPNG_FMT_RAW) u16_row_to_host(ctx->scanline, scanline_width - 1); + + ret = defilter_scanline(ctx->prev_scanline, ctx->scanline, scanline_width, ctx->bytes_per_pixel, ri->filter); + if(ret) return ret; + + ri->filter = next_filter; + + return 0; +} + +static int update_row_info(spng_ctx *ctx) +{ + int interlacing = ctx->ihdr.interlace_method; + struct spng_row_info *ri = &ctx->row_info; + const struct spng_subimage *sub = ctx->subimage; + + if(ri->scanline_idx == (sub[ri->pass].height - 1)) /* Last scanline */ + { + if(ri->pass == ctx->last_pass) + { + ctx->state = SPNG_STATE_EOI; + + return SPNG_EOI; + } + + ri->scanline_idx = 0; + ri->pass++; + + /* Skip empty passes */ + while( (!sub[ri->pass].width || !sub[ri->pass].height) && (ri->pass < ctx->last_pass)) ri->pass++; + } + else + { + ri->row_num++; + ri->scanline_idx++; + } + + if(interlacing) ri->row_num = adam7_y_start[ri->pass] + ri->scanline_idx * adam7_y_delta[ri->pass]; + + return 0; +} + +int spng_decode_scanline(spng_ctx *ctx, void *out, size_t len) +{ + if(ctx == NULL || out == NULL) return 1; + + if(ctx->state >= SPNG_STATE_EOI) return SPNG_EOI; + + struct decode_flags f = ctx->decode_flags; + + struct spng_row_info *ri = &ctx->row_info; + const struct spng_subimage *sub = ctx->subimage; + + const struct spng_ihdr *ihdr = &ctx->ihdr; + const uint16_t *gamma_lut = ctx->gamma_lut; + unsigned char *trns_px = ctx->trns_px; + const struct spng_sbit *sb = &ctx->decode_sb; + const struct spng_plte_entry *plte = ctx->decode_plte.rgba; + struct spng__iter iter = spng__iter_init(ihdr->bit_depth, ctx->scanline); + + const unsigned char *scanline; + + const int pass = ri->pass; + const int fmt = ctx->fmt; + const size_t scanline_width = sub[pass].scanline_width; + const uint32_t width = sub[pass].width; + uint32_t k; + uint8_t r_8, g_8, b_8, a_8, gray_8; + uint16_t r_16, g_16, b_16, a_16, gray_16; + r_8=0; g_8=0; b_8=0; a_8=0; gray_8=0; + r_16=0; g_16=0; b_16=0; a_16=0; gray_16=0; + size_t pixel_size = 4; /* SPNG_FMT_RGBA8 */ + size_t pixel_offset = 0; + unsigned char *pixel; + unsigned processing_depth = ihdr->bit_depth; + + if(f.indexed) processing_depth = 8; + + if(fmt == SPNG_FMT_RGBA16) pixel_size = 8; + else if(fmt == SPNG_FMT_RGB8) pixel_size = 3; + + if(len < sub[pass].out_width) return SPNG_EBUFSIZ; + + int ret = read_scanline(ctx); + + if(ret) return decode_err(ctx, ret); + + scanline = ctx->scanline; + + for(k=0; k < width; k++) + { + pixel = (unsigned char*)out + pixel_offset; + pixel_offset += pixel_size; + + if(f.same_layout) + { + if(f.zerocopy) break; + + memcpy(out, scanline, scanline_width - 1); + break; + } + + if(f.unpack) + { + unpack_scanline(out, scanline, width, ihdr->bit_depth, fmt); + break; + } + + if(ihdr->color_type == SPNG_COLOR_TYPE_TRUECOLOR) + { + if(ihdr->bit_depth == 16) + { + memcpy(&r_16, scanline + (k * 6), 2); + memcpy(&g_16, scanline + (k * 6) + 2, 2); + memcpy(&b_16, scanline + (k * 6) + 4, 2); + + a_16 = 65535; + } + else /* == 8 */ + { + if(fmt == SPNG_FMT_RGBA8) + { + rgb8_row_to_rgba8(scanline, out, width); + break; + } + + r_8 = scanline[k * 3]; + g_8 = scanline[k * 3 + 1]; + b_8 = scanline[k * 3 + 2]; + + a_8 = 255; + } + } + else if(ihdr->color_type == SPNG_COLOR_TYPE_INDEXED) + { + uint8_t entry = 0; + + if(ihdr->bit_depth == 8) + { + if(fmt & (SPNG_FMT_RGBA8 | SPNG_FMT_RGB8)) + { + expand_row(out, scanline, &ctx->decode_plte, width, fmt); + break; + } + + entry = scanline[k]; + } + else /* < 8 */ + { + entry = get_sample(&iter); + } + + if(fmt & (SPNG_FMT_RGBA8 | SPNG_FMT_RGB8)) + { + pixel[0] = plte[entry].red; + pixel[1] = plte[entry].green; + pixel[2] = plte[entry].blue; + if(fmt == SPNG_FMT_RGBA8) pixel[3] = plte[entry].alpha; + + continue; + } + else /* RGBA16 */ + { + r_16 = plte[entry].red; + g_16 = plte[entry].green; + b_16 = plte[entry].blue; + a_16 = plte[entry].alpha; + + r_16 = (r_16 << 8) | r_16; + g_16 = (g_16 << 8) | g_16; + b_16 = (b_16 << 8) | b_16; + a_16 = (a_16 << 8) | a_16; + + memcpy(pixel, &r_16, 2); + memcpy(pixel + 2, &g_16, 2); + memcpy(pixel + 4, &b_16, 2); + memcpy(pixel + 6, &a_16, 2); + + continue; + } + } + else if(ihdr->color_type == SPNG_COLOR_TYPE_TRUECOLOR_ALPHA) + { + if(ihdr->bit_depth == 16) + { + memcpy(&r_16, scanline + (k * 8), 2); + memcpy(&g_16, scanline + (k * 8) + 2, 2); + memcpy(&b_16, scanline + (k * 8) + 4, 2); + memcpy(&a_16, scanline + (k * 8) + 6, 2); + } + else /* == 8 */ + { + r_8 = scanline[k * 4]; + g_8 = scanline[k * 4 + 1]; + b_8 = scanline[k * 4 + 2]; + a_8 = scanline[k * 4 + 3]; + } + } + else if(ihdr->color_type == SPNG_COLOR_TYPE_GRAYSCALE) + { + if(ihdr->bit_depth == 16) + { + memcpy(&gray_16, scanline + k * 2, 2); + + if(f.apply_trns && ctx->trns.gray == gray_16) a_16 = 0; + else a_16 = 65535; + + r_16 = gray_16; + g_16 = gray_16; + b_16 = gray_16; + } + else /* <= 8 */ + { + gray_8 = get_sample(&iter); + + if(f.apply_trns && ctx->trns.gray == gray_8) a_8 = 0; + else a_8 = 255; + + r_8 = gray_8; g_8 = gray_8; b_8 = gray_8; + } + } + else if(ihdr->color_type == SPNG_COLOR_TYPE_GRAYSCALE_ALPHA) + { + if(ihdr->bit_depth == 16) + { + memcpy(&gray_16, scanline + (k * 4), 2); + memcpy(&a_16, scanline + (k * 4) + 2, 2); + + r_16 = gray_16; + g_16 = gray_16; + b_16 = gray_16; + } + else /* == 8 */ + { + gray_8 = scanline[k * 2]; + a_8 = scanline[k * 2 + 1]; + + r_8 = gray_8; + g_8 = gray_8; + b_8 = gray_8; + } + } + + + if(fmt & (SPNG_FMT_RGBA8 | SPNG_FMT_RGB8)) + { + if(ihdr->bit_depth == 16) + { + r_8 = r_16 >> 8; + g_8 = g_16 >> 8; + b_8 = b_16 >> 8; + a_8 = a_16 >> 8; + } + + pixel[0] = r_8; + pixel[1] = g_8; + pixel[2] = b_8; + + if(fmt == SPNG_FMT_RGBA8) pixel[3] = a_8; + } + else if(fmt == SPNG_FMT_RGBA16) + { + if(ihdr->bit_depth != 16) + { + r_16 = r_8; + g_16 = g_8; + b_16 = b_8; + a_16 = a_8; + } + + memcpy(pixel, &r_16, 2); + memcpy(pixel + 2, &g_16, 2); + memcpy(pixel + 4, &b_16, 2); + memcpy(pixel + 6, &a_16, 2); + } + }/* for(k=0; k < width; k++) */ + + if(f.apply_trns) trns_row(out, scanline, trns_px, ctx->bytes_per_pixel, &ctx->ihdr, width, fmt); + + if(f.do_scaling) scale_row(out, width, fmt, processing_depth, sb); + + if(f.apply_gamma) gamma_correct_row(out, width, fmt, gamma_lut); + + /* The previous scanline is always defiltered */ + void *t = ctx->prev_scanline; + ctx->prev_scanline = ctx->scanline; + ctx->scanline = t; + + ret = update_row_info(ctx); + + if(ret == SPNG_EOI) + { + if(ctx->cur_chunk_bytes_left) /* zlib stream ended before an IDAT chunk boundary */ + {/* Discard the rest of the chunk */ + int error = discard_chunk_bytes(ctx, ctx->cur_chunk_bytes_left); + if(error) return decode_err(ctx, error); + } + + ctx->last_idat = ctx->current_chunk; + } + + return ret; +} + +int spng_decode_row(spng_ctx *ctx, void *out, size_t len) +{ + if(ctx == NULL || out == NULL) return 1; + if(ctx->state >= SPNG_STATE_EOI) return SPNG_EOI; + if(len < ctx->image_width) return SPNG_EBUFSIZ; + + const struct spng_ihdr *ihdr = &ctx->ihdr; + int ret, pass = ctx->row_info.pass; + unsigned char *outptr = out; + + if(!ihdr->interlace_method || pass == 6) return spng_decode_scanline(ctx, out, len); + + ret = spng_decode_scanline(ctx, ctx->row, ctx->image_width); + if(ret && ret != SPNG_EOI) return ret; + + uint32_t k; + unsigned pixel_size = 4; /* RGBA8 */ + if(ctx->fmt == SPNG_FMT_RGBA16) pixel_size = 8; + else if(ctx->fmt == SPNG_FMT_RGB8) pixel_size = 3; + else if(ctx->fmt == SPNG_FMT_G8) pixel_size = 1; + else if(ctx->fmt == SPNG_FMT_GA8) pixel_size = 2; + else if(ctx->fmt & (SPNG_FMT_PNG | SPNG_FMT_RAW)) + { + if(ihdr->bit_depth < 8) + { + struct spng__iter iter = spng__iter_init(ihdr->bit_depth, ctx->row); + const uint8_t samples_per_byte = 8 / ihdr->bit_depth; + uint8_t sample; + + for(k=0; k < ctx->subimage[pass].width; k++) + { + sample = get_sample(&iter); + + size_t ioffset = adam7_x_start[pass] + k * adam7_x_delta[pass]; + + sample = sample << (iter.initial_shift - ioffset * ihdr->bit_depth % 8); + + ioffset /= samples_per_byte; + + outptr[ioffset] |= sample; + } + + return 0; + } + else pixel_size = ctx->bytes_per_pixel; + } + + for(k=0; k < ctx->subimage[pass].width; k++) + { + size_t ioffset = (adam7_x_start[pass] + (size_t) k * adam7_x_delta[pass]) * pixel_size; + + memcpy(outptr + ioffset, ctx->row + k * pixel_size, pixel_size); + } + + return 0; +} + +int spng_decode_chunks(spng_ctx *ctx) +{ + if(ctx == NULL) return 1; + if(ctx->encode_only) return SPNG_ECTXTYPE; + if(ctx->state < SPNG_STATE_INPUT) return SPNG_ENOSRC; + if(ctx->state == SPNG_STATE_IEND) return 0; + + return read_chunks(ctx, 0); +} + +int spng_decode_image(spng_ctx *ctx, void *out, size_t len, int fmt, int flags) +{ + if(ctx == NULL) return 1; + if(ctx->encode_only) return SPNG_ECTXTYPE; + if(ctx->state >= SPNG_STATE_EOI) return SPNG_EOI; + + const struct spng_ihdr *ihdr = &ctx->ihdr; + + int ret = read_chunks(ctx, 0); + if(ret) return decode_err(ctx, ret); + + ret = check_decode_fmt(ihdr, fmt); + if(ret) return ret; + + ret = calculate_image_width(ihdr, fmt, &ctx->image_width); + if(ret) return decode_err(ctx, ret); + + if(ctx->image_width > SIZE_MAX / ihdr->height) ctx->image_size = 0; /* overflow */ + else ctx->image_size = ctx->image_width * ihdr->height; + + if( !(flags & SPNG_DECODE_PROGRESSIVE) ) + { + if(out == NULL) return 1; + if(!ctx->image_size) return SPNG_EOVERFLOW; + if(len < ctx->image_size) return SPNG_EBUFSIZ; + } + + uint32_t bytes_read = 0; + + ret = read_idat_bytes(ctx, &bytes_read); + if(ret) return decode_err(ctx, ret); + + if(bytes_read > 1) + { + int valid = read_u16(ctx->data) % 31 ? 0 : 1; + + unsigned flg = ctx->data[1]; + unsigned flevel = flg >> 6; + int compression_level = Z_DEFAULT_COMPRESSION; + + if(flevel == 0) compression_level = 0; /* fastest */ + else if(flevel == 1) compression_level = 1; /* fast */ + else if(flevel == 2) compression_level = 6; /* default */ + else if(flevel == 3) compression_level = 9; /* slowest, max compression */ + + if(valid) ctx->image_options.compression_level = compression_level; + } + + ret = spng__inflate_init(ctx, ctx->image_options.window_bits); + if(ret) return decode_err(ctx, ret); + + ctx->zstream.avail_in = bytes_read; + ctx->zstream.next_in = ctx->data; + + size_t scanline_buf_size = ctx->subimage[ctx->widest_pass].scanline_width; + + scanline_buf_size += 32; + + if(scanline_buf_size < 32) return SPNG_EOVERFLOW; + + ctx->scanline_buf = spng__malloc(ctx, scanline_buf_size); + ctx->prev_scanline_buf = spng__malloc(ctx, scanline_buf_size); + + ctx->scanline = ctx->scanline_buf; + ctx->prev_scanline = ctx->prev_scanline_buf; + + struct decode_flags f = {0}; + + ctx->fmt = fmt; + + if(ihdr->color_type == SPNG_COLOR_TYPE_INDEXED) f.indexed = 1; + + unsigned processing_depth = ihdr->bit_depth; + + if(f.indexed) processing_depth = 8; + + if(ihdr->interlace_method) + { + f.interlaced = 1; + ctx->row_buf = spng__malloc(ctx, ctx->image_width); + ctx->row = ctx->row_buf; + + if(ctx->row == NULL) return decode_err(ctx, SPNG_EMEM); + } + + if(ctx->scanline == NULL || ctx->prev_scanline == NULL) + { + return decode_err(ctx, SPNG_EMEM); + } + + f.do_scaling = 1; + if(f.indexed) f.do_scaling = 0; + + unsigned depth_target = 8; /* FMT_RGBA8, G8 */ + if(fmt == SPNG_FMT_RGBA16) depth_target = 16; + + if(flags & SPNG_DECODE_TRNS && ctx->stored.trns) f.apply_trns = 1; + else flags &= ~SPNG_DECODE_TRNS; + + if(ihdr->color_type == SPNG_COLOR_TYPE_GRAYSCALE_ALPHA || + ihdr->color_type == SPNG_COLOR_TYPE_TRUECOLOR_ALPHA) flags &= ~SPNG_DECODE_TRNS; + + if(flags & SPNG_DECODE_GAMMA && ctx->stored.gama) f.apply_gamma = 1; + else flags &= ~SPNG_DECODE_GAMMA; + + if(flags & SPNG_DECODE_USE_SBIT && ctx->stored.sbit) f.use_sbit = 1; + else flags &= ~SPNG_DECODE_USE_SBIT; + + if(fmt & (SPNG_FMT_RGBA8 | SPNG_FMT_RGBA16)) + { + if(ihdr->color_type == SPNG_COLOR_TYPE_TRUECOLOR_ALPHA && + ihdr->bit_depth == depth_target) f.same_layout = 1; + } + else if(fmt == SPNG_FMT_RGB8) + { + if(ihdr->color_type == SPNG_COLOR_TYPE_TRUECOLOR && + ihdr->bit_depth == depth_target) f.same_layout = 1; + + f.apply_trns = 0; /* not applicable */ + } + else if(fmt & (SPNG_FMT_PNG | SPNG_FMT_RAW)) + { + f.same_layout = 1; + f.do_scaling = 0; + f.apply_gamma = 0; /* for now */ + f.apply_trns = 0; + } + else if(fmt == SPNG_FMT_G8 && ihdr->color_type == SPNG_COLOR_TYPE_GRAYSCALE && ihdr->bit_depth <= 8) + { + if(ihdr->bit_depth == depth_target) f.same_layout = 1; + else if(ihdr->bit_depth < 8) f.unpack = 1; + + f.apply_trns = 0; + } + else if(fmt == SPNG_FMT_GA8 && ihdr->color_type == SPNG_COLOR_TYPE_GRAYSCALE && ihdr->bit_depth <= 8) + { + if(ihdr->color_type == SPNG_COLOR_TYPE_GRAYSCALE_ALPHA && + ihdr->bit_depth == depth_target) f.same_layout = 1; + else if(ihdr->bit_depth <= 8) f.unpack = 1; + } + else if(fmt == SPNG_FMT_GA16 && ihdr->color_type == SPNG_COLOR_TYPE_GRAYSCALE && ihdr->bit_depth == 16) + { + if(ihdr->color_type == SPNG_COLOR_TYPE_GRAYSCALE_ALPHA && + ihdr->bit_depth == depth_target) f.same_layout = 1; + else if(ihdr->bit_depth == 16) f.unpack = 1; + } + + /*if(f.same_layout && !flags && !f.interlaced) f.zerocopy = 1;*/ + + uint16_t *gamma_lut = NULL; + + if(f.apply_gamma) + { + float file_gamma = (float)ctx->gama / 100000.0f; + float max; + + unsigned lut_entries; + + if(fmt & (SPNG_FMT_RGBA8 | SPNG_FMT_RGB8)) + { + lut_entries = 256; + max = 255.0f; + + gamma_lut = ctx->gamma_lut8; + ctx->gamma_lut = ctx->gamma_lut8; + } + else /* SPNG_FMT_RGBA16 */ + { + lut_entries = 65536; + max = 65535.0f; + + ctx->gamma_lut16 = spng__malloc(ctx, lut_entries * sizeof(uint16_t)); + if(ctx->gamma_lut16 == NULL) return decode_err(ctx, SPNG_EMEM); + + gamma_lut = ctx->gamma_lut16; + ctx->gamma_lut = ctx->gamma_lut16; + } + + float screen_gamma = 2.2f; + float exponent = file_gamma * screen_gamma; + + if(FP_ZERO == fpclassify(exponent)) return decode_err(ctx, SPNG_EGAMA); + + exponent = 1.0f / exponent; + + unsigned i; + for(i=0; i < lut_entries; i++) + { + float c = pow((float)i / max, exponent) * max; + if(c > max) c = max; + + gamma_lut[i] = (uint16_t)c; + } + } + + struct spng_sbit *sb = &ctx->decode_sb; + + sb->red_bits = processing_depth; + sb->green_bits = processing_depth; + sb->blue_bits = processing_depth; + sb->alpha_bits = processing_depth; + sb->grayscale_bits = processing_depth; + + if(f.use_sbit) + { + if(ihdr->color_type == 0) + { + sb->grayscale_bits = ctx->sbit.grayscale_bits; + sb->alpha_bits = ihdr->bit_depth; + } + else if(ihdr->color_type == 2 || ihdr->color_type == 3) + { + sb->red_bits = ctx->sbit.red_bits; + sb->green_bits = ctx->sbit.green_bits; + sb->blue_bits = ctx->sbit.blue_bits; + sb->alpha_bits = ihdr->bit_depth; + } + else if(ihdr->color_type == 4) + { + sb->grayscale_bits = ctx->sbit.grayscale_bits; + sb->alpha_bits = ctx->sbit.alpha_bits; + } + else /* == 6 */ + { + sb->red_bits = ctx->sbit.red_bits; + sb->green_bits = ctx->sbit.green_bits; + sb->blue_bits = ctx->sbit.blue_bits; + sb->alpha_bits = ctx->sbit.alpha_bits; + } + } + + if(ihdr->bit_depth == 16 && fmt & (SPNG_FMT_RGBA8 | SPNG_FMT_RGB8)) + {/* samples are scaled down by 8 bits in the decode loop */ + sb->red_bits -= 8; + sb->green_bits -= 8; + sb->blue_bits -= 8; + sb->alpha_bits -= 8; + sb->grayscale_bits -= 8; + + processing_depth = 8; + } + + /* Prevent infinite loops in sample_to_target() */ + if(!depth_target || depth_target > 16 || + !processing_depth || processing_depth > 16 || + !sb->grayscale_bits || sb->grayscale_bits > processing_depth || + !sb->alpha_bits || sb->alpha_bits > processing_depth || + !sb->red_bits || sb->red_bits > processing_depth || + !sb->green_bits || sb->green_bits > processing_depth || + !sb->blue_bits || sb->blue_bits > processing_depth) + { + return decode_err(ctx, SPNG_ESBIT); + } + + if(sb->red_bits == sb->green_bits && + sb->green_bits == sb->blue_bits && + sb->blue_bits == sb->alpha_bits && + sb->alpha_bits == processing_depth && + processing_depth == depth_target) f.do_scaling = 0; + + struct spng_plte_entry *plte = ctx->decode_plte.rgba; + + /* Pre-process palette entries */ + if(f.indexed) + { + uint8_t red, green, blue, alpha; + + uint32_t i; + for(i=0; i < 256; i++) + { + if(f.apply_trns && i < ctx->trns.n_type3_entries) + ctx->plte.entries[i].alpha = ctx->trns.type3_alpha[i]; + else + ctx->plte.entries[i].alpha = 255; + + red = sample_to_target(ctx->plte.entries[i].red, 8, sb->red_bits, 8); + green = sample_to_target(ctx->plte.entries[i].green, 8, sb->green_bits, 8); + blue = sample_to_target(ctx->plte.entries[i].blue, 8, sb->blue_bits, 8); + alpha = sample_to_target(ctx->plte.entries[i].alpha, 8, sb->alpha_bits, 8); + +#if defined(SPNG_ARM) + if(fmt == SPNG_FMT_RGB8 && ihdr->bit_depth == 8) + {/* Working with 3 bytes at a time is more of an ARM thing */ + ctx->decode_plte.rgb[i * 3 + 0] = red; + ctx->decode_plte.rgb[i * 3 + 1] = green; + ctx->decode_plte.rgb[i * 3 + 2] = blue; + continue; + } +#endif + plte[i].red = red; + plte[i].green = green; + plte[i].blue = blue; + plte[i].alpha = alpha; + } + + f.apply_trns = 0; + } + + unsigned char *trns_px = ctx->trns_px; + + if(f.apply_trns) + { + uint16_t mask = ~0; + if(ctx->ihdr.bit_depth < 16) mask = (1 << ctx->ihdr.bit_depth) - 1; + + if(fmt & (SPNG_FMT_RGBA8 | SPNG_FMT_RGBA16)) + { + if(ihdr->color_type == SPNG_COLOR_TYPE_TRUECOLOR) + { + if(ihdr->bit_depth == 16) + { + memcpy(trns_px, &ctx->trns.red, 2); + memcpy(trns_px + 2, &ctx->trns.green, 2); + memcpy(trns_px + 4, &ctx->trns.blue, 2); + } + else + { + trns_px[0] = ctx->trns.red & mask; + trns_px[1] = ctx->trns.green & mask; + trns_px[2] = ctx->trns.blue & mask; + } + } + } + else if(ihdr->color_type == SPNG_COLOR_TYPE_GRAYSCALE) // fmt == SPNG_FMT_GA8 && + { + if(ihdr->bit_depth == 16) + { + memcpy(trns_px, &ctx->trns.gray, 2); + } + else + { + trns_px[0] = ctx->trns.gray & mask; + } + } + } + + ctx->decode_flags = f; + + ctx->state = SPNG_STATE_DECODE_INIT; + + struct spng_row_info *ri = &ctx->row_info; + struct spng_subimage *sub = ctx->subimage; + + while(!sub[ri->pass].width || !sub[ri->pass].height) ri->pass++; + + if(f.interlaced) ri->row_num = adam7_y_start[ri->pass]; + + unsigned pixel_size = 4; /* SPNG_FMT_RGBA8 */ + + if(fmt == SPNG_FMT_RGBA16) pixel_size = 8; + else if(fmt == SPNG_FMT_RGB8) pixel_size = 3; + else if(fmt == SPNG_FMT_G8) pixel_size = 1; + else if(fmt == SPNG_FMT_GA8) pixel_size = 2; + + int i; + for(i=ri->pass; i <= ctx->last_pass; i++) + { + if(!sub[i].scanline_width) continue; + + if(fmt & (SPNG_FMT_PNG | SPNG_FMT_RAW)) sub[i].out_width = sub[i].scanline_width - 1; + else sub[i].out_width = (size_t)sub[i].width * pixel_size; + + if(sub[i].out_width > UINT32_MAX) return decode_err(ctx, SPNG_EOVERFLOW); + } + + /* Read the first filter byte, offsetting all reads by 1 byte. + The scanlines will be aligned with the start of the array with + the next scanline's filter byte at the end, + the last scanline will end up being 1 byte "shorter". */ + ret = read_scanline_bytes(ctx, &ri->filter, 1); + if(ret) return decode_err(ctx, ret); + + if(ri->filter > 4) return decode_err(ctx, SPNG_EFILTER); + + if(flags & SPNG_DECODE_PROGRESSIVE) + { + return 0; + } + + do + { + size_t ioffset = ri->row_num * ctx->image_width; + + ret = spng_decode_row(ctx, (unsigned char*)out + ioffset, ctx->image_width); + }while(!ret); + + if(ret != SPNG_EOI) return decode_err(ctx, ret); + + return 0; +} + +int spng_get_row_info(spng_ctx *ctx, struct spng_row_info *row_info) +{ + if(ctx == NULL || row_info == NULL || ctx->state < SPNG_STATE_DECODE_INIT) return 1; + + if(ctx->state >= SPNG_STATE_EOI) return SPNG_EOI; + + *row_info = ctx->row_info; + + return 0; +} + +static int write_chunks_before_idat(spng_ctx *ctx) +{ + if(ctx == NULL) return SPNG_EINTERNAL; + if(!ctx->encode_only) return SPNG_EINTERNAL; + if(!ctx->stored.ihdr) return SPNG_EINTERNAL; + + int ret; + uint32_t i; + size_t length; + const struct spng_ihdr *ihdr = &ctx->ihdr; + unsigned char *data = ctx->decode_plte.raw; + + ret = write_data(ctx, spng_signature, 8); + if(ret) return ret; + + write_u32(data, ihdr->width); + write_u32(data + 4, ihdr->height); + data[8] = ihdr->bit_depth; + data[9] = ihdr->color_type; + data[10] = ihdr->compression_method; + data[11] = ihdr->filter_method; + data[12] = ihdr->interlace_method; + + ret = write_chunk(ctx, type_ihdr, data, 13); + if(ret) return ret; + + if(ctx->stored.chrm) + { + write_u32(data, ctx->chrm_int.white_point_x); + write_u32(data + 4, ctx->chrm_int.white_point_y); + write_u32(data + 8, ctx->chrm_int.red_x); + write_u32(data + 12, ctx->chrm_int.red_y); + write_u32(data + 16, ctx->chrm_int.green_x); + write_u32(data + 20, ctx->chrm_int.green_y); + write_u32(data + 24, ctx->chrm_int.blue_x); + write_u32(data + 28, ctx->chrm_int.blue_y); + + ret = write_chunk(ctx, type_chrm, data, 32); + if(ret) return ret; + } + + if(ctx->stored.gama) + { + write_u32(data, ctx->gama); + + ret = write_chunk(ctx, type_gama, data, 4); + if(ret) return ret; + } + + if(ctx->stored.iccp) + { + uLongf dest_len = compressBound((uLong)ctx->iccp.profile_len); + + Bytef *buf = spng__malloc(ctx, dest_len); + if(buf == NULL) return SPNG_EMEM; + + ret = compress2(buf, &dest_len, (void*)ctx->iccp.profile, (uLong)ctx->iccp.profile_len, Z_DEFAULT_COMPRESSION); + + if(ret != Z_OK) + { + spng__free(ctx, buf); + return SPNG_EZLIB; + } + + size_t name_len = strlen(ctx->iccp.profile_name); + + length = name_len + 2; + length += dest_len; + + if(dest_len > length) return SPNG_EOVERFLOW; + + unsigned char *cdata = NULL; + + ret = write_header(ctx, type_iccp, length, &cdata); + + if(ret) + { + spng__free(ctx, buf); + return ret; + } + + memcpy(cdata, ctx->iccp.profile_name, name_len + 1); + cdata[name_len + 1] = 0; /* compression method */ + memcpy(cdata + name_len + 2, buf, dest_len); + + spng__free(ctx, buf); + + ret = finish_chunk(ctx); + if(ret) return ret; + } + + if(ctx->stored.sbit) + { + switch(ctx->ihdr.color_type) + { + case SPNG_COLOR_TYPE_GRAYSCALE: + { + length = 1; + + data[0] = ctx->sbit.grayscale_bits; + + break; + } + case SPNG_COLOR_TYPE_TRUECOLOR: + case SPNG_COLOR_TYPE_INDEXED: + { + length = 3; + + data[0] = ctx->sbit.red_bits; + data[1] = ctx->sbit.green_bits; + data[2] = ctx->sbit.blue_bits; + + break; + } + case SPNG_COLOR_TYPE_GRAYSCALE_ALPHA: + { + length = 2; + + data[0] = ctx->sbit.grayscale_bits; + data[1] = ctx->sbit.alpha_bits; + + break; + } + case SPNG_COLOR_TYPE_TRUECOLOR_ALPHA: + { + length = 4; + + data[0] = ctx->sbit.red_bits; + data[1] = ctx->sbit.green_bits; + data[2] = ctx->sbit.blue_bits; + data[3] = ctx->sbit.alpha_bits; + + break; + } + default: return SPNG_EINTERNAL; + } + + ret = write_chunk(ctx, type_sbit, data, length); + if(ret) return ret; + } + + if(ctx->stored.srgb) + { + ret = write_chunk(ctx, type_srgb, &ctx->srgb_rendering_intent, 1); + if(ret) return ret; + } + + ret = write_unknown_chunks(ctx, SPNG_AFTER_IHDR); + if(ret) return ret; + + if(ctx->stored.plte) + { + for(i=0; i < ctx->plte.n_entries; i++) + { + data[i * 3 + 0] = ctx->plte.entries[i].red; + data[i * 3 + 1] = ctx->plte.entries[i].green; + data[i * 3 + 2] = ctx->plte.entries[i].blue; + } + + ret = write_chunk(ctx, type_plte, data, ctx->plte.n_entries * 3); + if(ret) return ret; + } + + if(ctx->stored.bkgd) + { + switch(ctx->ihdr.color_type) + { + case SPNG_COLOR_TYPE_GRAYSCALE: + case SPNG_COLOR_TYPE_GRAYSCALE_ALPHA: + { + length = 2; + + write_u16(data, ctx->bkgd.gray); + + break; + } + case SPNG_COLOR_TYPE_TRUECOLOR: + case SPNG_COLOR_TYPE_TRUECOLOR_ALPHA: + { + length = 6; + + write_u16(data, ctx->bkgd.red); + write_u16(data + 2, ctx->bkgd.green); + write_u16(data + 4, ctx->bkgd.blue); + + break; + } + case SPNG_COLOR_TYPE_INDEXED: + { + length = 1; + + data[0] = ctx->bkgd.plte_index; + + break; + } + default: return SPNG_EINTERNAL; + } + + ret = write_chunk(ctx, type_bkgd, data, length); + if(ret) return ret; + } + + if(ctx->stored.hist) + { + length = ctx->plte.n_entries * 2; + + for(i=0; i < ctx->plte.n_entries; i++) + { + write_u16(data + i * 2, ctx->hist.frequency[i]); + } + + ret = write_chunk(ctx, type_hist, data, length); + if(ret) return ret; + } + + if(ctx->stored.trns) + { + if(ctx->ihdr.color_type == SPNG_COLOR_TYPE_GRAYSCALE) + { + write_u16(data, ctx->trns.gray); + + ret = write_chunk(ctx, type_trns, data, 2); + } + else if(ctx->ihdr.color_type == SPNG_COLOR_TYPE_TRUECOLOR) + { + write_u16(data, ctx->trns.red); + write_u16(data + 2, ctx->trns.green); + write_u16(data + 4, ctx->trns.blue); + + ret = write_chunk(ctx, type_trns, data, 6); + } + else if(ctx->ihdr.color_type == SPNG_COLOR_TYPE_INDEXED) + { + ret = write_chunk(ctx, type_trns, ctx->trns.type3_alpha, ctx->trns.n_type3_entries); + } + + if(ret) return ret; + } + + if(ctx->stored.phys) + { + write_u32(data, ctx->phys.ppu_x); + write_u32(data + 4, ctx->phys.ppu_y); + data[8] = ctx->phys.unit_specifier; + + ret = write_chunk(ctx, type_phys, data, 9); + if(ret) return ret; + } + + if(ctx->stored.splt) + { + const struct spng_splt *splt; + unsigned char *cdata = NULL; + + uint32_t k; + for(i=0; i < ctx->n_splt; i++) + { + splt = &ctx->splt_list[i]; + + size_t name_len = strlen(splt->name); + length = name_len + 1; + + if(splt->sample_depth == 8) length += splt->n_entries * 6 + 1; + else if(splt->sample_depth == 16) length += splt->n_entries * 10 + 1; + + ret = write_header(ctx, type_splt, length, &cdata); + if(ret) return ret; + + memcpy(cdata, splt->name, name_len + 1); + cdata += name_len + 2; + cdata[-1] = splt->sample_depth; + + if(splt->sample_depth == 8) + { + for(k=0; k < splt->n_entries; k++) + { + cdata[k * 6 + 0] = splt->entries[k].red; + cdata[k * 6 + 1] = splt->entries[k].green; + cdata[k * 6 + 2] = splt->entries[k].blue; + cdata[k * 6 + 3] = splt->entries[k].alpha; + write_u16(cdata + k * 6 + 4, splt->entries[k].frequency); + } + } + else if(splt->sample_depth == 16) + { + for(k=0; k < splt->n_entries; k++) + { + write_u16(cdata + k * 10 + 0, splt->entries[k].red); + write_u16(cdata + k * 10 + 2, splt->entries[k].green); + write_u16(cdata + k * 10 + 4, splt->entries[k].blue); + write_u16(cdata + k * 10 + 6, splt->entries[k].alpha); + write_u16(cdata + k * 10 + 8, splt->entries[k].frequency); + } + } + + ret = finish_chunk(ctx); + if(ret) return ret; + } + } + + if(ctx->stored.time) + { + write_u16(data, ctx->time.year); + data[2] = ctx->time.month; + data[3] = ctx->time.day; + data[4] = ctx->time.hour; + data[5] = ctx->time.minute; + data[6] = ctx->time.second; + + ret = write_chunk(ctx, type_time, data, 7); + if(ret) return ret; + } + + if(ctx->stored.text) + { + unsigned char *cdata = NULL; + const struct spng_text2 *text; + const uint8_t *text_type_array[4] = { 0, type_text, type_ztxt, type_itxt }; + + for(i=0; i < ctx->n_text; i++) + { + text = &ctx->text_list[i]; + + const uint8_t *text_chunk_type = text_type_array[text->type]; + Bytef *compressed_text = NULL; + size_t keyword_len = 0; + size_t language_tag_len = 0; + size_t translated_keyword_len = 0; + size_t compressed_length = 0; + size_t text_length = 0; + + keyword_len = strlen(text->keyword); + text_length = strlen(text->text); + + length = keyword_len + 1; + + if(text->type == SPNG_ZTXT) + { + length += 1; /* compression method */ + } + else if(text->type == SPNG_ITXT) + { + if(!text->language_tag || !text->translated_keyword) return SPNG_EINTERNAL; + + language_tag_len = strlen(text->language_tag); + translated_keyword_len = strlen(text->translated_keyword); + + length += language_tag_len; + if(length < language_tag_len) return SPNG_EOVERFLOW; + + length += translated_keyword_len; + if(length < translated_keyword_len) return SPNG_EOVERFLOW; + + length += 4; /* compression flag + method + nul for the two strings */ + if(length < 4) return SPNG_EOVERFLOW; + } + + if(text->compression_flag) + { + ret = spng__deflate_init(ctx, &ctx->text_options); + if(ret) return ret; + + z_stream *zstream = &ctx->zstream; + uLongf dest_len = deflateBound(zstream, (uLong)text_length); + + compressed_text = spng__malloc(ctx, dest_len); + + if(compressed_text == NULL) return SPNG_EMEM; + + zstream->next_in = (void*)text->text; + zstream->avail_in = (uInt)text_length; + + zstream->next_out = compressed_text; + zstream->avail_out = dest_len; + + ret = deflate(zstream, Z_FINISH); + + if(ret != Z_STREAM_END) + { + spng__free(ctx, compressed_text); + return SPNG_EZLIB; + } + + compressed_length = zstream->total_out; + + length += compressed_length; + if(length < compressed_length) return SPNG_EOVERFLOW; + } + else + { + text_length = strlen(text->text); + + length += text_length; + if(length < text_length) return SPNG_EOVERFLOW; + } + + ret = write_header(ctx, text_chunk_type, length, &cdata); + if(ret) + { + spng__free(ctx, compressed_text); + return ret; + } + + memcpy(cdata, text->keyword, keyword_len + 1); + cdata += keyword_len + 1; + + if(text->type == SPNG_ITXT) + { + cdata[0] = text->compression_flag; + cdata[1] = 0; /* compression method */ + cdata += 2; + + memcpy(cdata, text->language_tag, language_tag_len + 1); + cdata += language_tag_len + 1; + + memcpy(cdata, text->translated_keyword, translated_keyword_len + 1); + cdata += translated_keyword_len + 1; + } + else if(text->type == SPNG_ZTXT) + { + cdata[0] = 0; /* compression method */ + cdata++; + } + + if(text->compression_flag) memcpy(cdata, compressed_text, compressed_length); + else memcpy(cdata, text->text, text_length); + + spng__free(ctx, compressed_text); + + ret = finish_chunk(ctx); + if(ret) return ret; + } + } + + if(ctx->stored.offs) + { + write_s32(data, ctx->offs.x); + write_s32(data + 4, ctx->offs.y); + data[8] = ctx->offs.unit_specifier; + + ret = write_chunk(ctx, type_offs, data, 9); + if(ret) return ret; + } + + if(ctx->stored.exif) + { + ret = write_chunk(ctx, type_exif, ctx->exif.data, ctx->exif.length); + if(ret) return ret; + } + + ret = write_unknown_chunks(ctx, SPNG_AFTER_PLTE); + if(ret) return ret; + + return 0; +} + +static int write_chunks_after_idat(spng_ctx *ctx) +{ + if(ctx == NULL) return SPNG_EINTERNAL; + + int ret = write_unknown_chunks(ctx, SPNG_AFTER_IDAT); + if(ret) return ret; + + return write_iend(ctx); +} + +/* Compress and write scanline to IDAT stream */ +static int write_idat_bytes(spng_ctx *ctx, const void *scanline, size_t len, int flush) +{ + if(ctx == NULL || scanline == NULL) return SPNG_EINTERNAL; + if(len > UINT_MAX) return SPNG_EINTERNAL; + + int ret = 0; + unsigned char *data = NULL; + z_stream *zstream = &ctx->zstream; + uint32_t idat_length = SPNG_WRITE_SIZE; + + zstream->next_in = scanline; + zstream->avail_in = (uInt)len; + + do + { + ret = deflate(zstream, flush); + + if(zstream->avail_out == 0) + { + ret = finish_chunk(ctx); + if(ret) return encode_err(ctx, ret); + + ret = write_header(ctx, type_idat, idat_length, &data); + if(ret) return encode_err(ctx, ret); + + zstream->next_out = data; + zstream->avail_out = idat_length; + } + + }while(zstream->avail_in); + + if(ret != Z_OK) return SPNG_EZLIB; + + return 0; +} + +static int finish_idat(spng_ctx *ctx) +{ + int ret = 0; + unsigned char *data = NULL; + z_stream *zstream = &ctx->zstream; + uint32_t idat_length = SPNG_WRITE_SIZE; + + while(ret != Z_STREAM_END) + { + ret = deflate(zstream, Z_FINISH); + + if(ret) + { + if(ret == Z_STREAM_END) break; + + if(ret != Z_BUF_ERROR) return SPNG_EZLIB; + } + + if(zstream->avail_out == 0) + { + ret = finish_chunk(ctx); + if(ret) return encode_err(ctx, ret); + + ret = write_header(ctx, type_idat, idat_length, &data); + if(ret) return encode_err(ctx, ret); + + zstream->next_out = data; + zstream->avail_out = idat_length; + } + } + + uint32_t trimmed_length = idat_length - zstream->avail_out; + + ret = trim_chunk(ctx, trimmed_length); + if(ret) return ret; + + return finish_chunk(ctx); +} + +static int encode_scanline(spng_ctx *ctx, const void *scanline, size_t len) +{ + if(ctx == NULL || scanline == NULL) return SPNG_EINTERNAL; + + int ret, pass = ctx->row_info.pass; + uint8_t filter = 0; + struct spng_row_info *ri = &ctx->row_info; + const struct spng_subimage *sub = ctx->subimage; + struct encode_flags f = ctx->encode_flags; + unsigned char *filtered_scanline = ctx->filtered_scanline; + size_t scanline_width = sub[pass].scanline_width; + + if(len < scanline_width - 1) return SPNG_EINTERNAL; + + /* encode_row() interlaces directly to ctx->scanline */ + if(scanline != ctx->scanline) memcpy(ctx->scanline, scanline, scanline_width - 1); + + if(f.to_bigendian) u16_row_to_bigendian(ctx->scanline, scanline_width - 1); + const int requires_previous = f.filter_choice & (SPNG_FILTER_CHOICE_UP | SPNG_FILTER_CHOICE_AVG | SPNG_FILTER_CHOICE_PAETH); + + /* XXX: exclude 'requires_previous' filters by default for first scanline? */ + if(!ri->scanline_idx && requires_previous) + { + /* prev_scanline is all zeros for the first scanline */ + memset(ctx->prev_scanline, 0, scanline_width); + } + + filter = get_best_filter(ctx->prev_scanline, ctx->scanline, scanline_width, ctx->bytes_per_pixel, f.filter_choice); + + if(!filter) filtered_scanline = ctx->scanline; + + filtered_scanline[-1] = filter; + + if(filter) + { + ret = filter_scanline(filtered_scanline, ctx->prev_scanline, ctx->scanline, scanline_width, ctx->bytes_per_pixel, filter); + if(ret) return encode_err(ctx, ret); + } + + ret = write_idat_bytes(ctx, filtered_scanline - 1, scanline_width, Z_NO_FLUSH); + if(ret) return encode_err(ctx, ret); + + /* The previous scanline is always unfiltered */ + void *t = ctx->prev_scanline; + ctx->prev_scanline = ctx->scanline; + ctx->scanline = t; + + ret = update_row_info(ctx); + + if(ret == SPNG_EOI) + { + int error = finish_idat(ctx); + if(error) encode_err(ctx, error); + + if(f.finalize) + { + error = spng_encode_chunks(ctx); + if(error) return encode_err(ctx, error); + } + } + + return ret; +} + +static int encode_row(spng_ctx *ctx, const void *row, size_t len) +{ + if(ctx == NULL || row == NULL) return SPNG_EINTERNAL; + + const int pass = ctx->row_info.pass; + + if(!ctx->ihdr.interlace_method || pass == 6) return encode_scanline(ctx, row, len); + + uint32_t k; + const unsigned pixel_size = ctx->pixel_size; + const unsigned bit_depth = ctx->ihdr.bit_depth; + + if(bit_depth < 8) + { + const unsigned samples_per_byte = 8 / bit_depth; + const uint8_t mask = (1 << bit_depth) - 1; + const unsigned initial_shift = 8 - bit_depth; + unsigned shift_amount = initial_shift; + + unsigned char *scanline = ctx->scanline; + const unsigned char *row_uc = row; + uint8_t sample; + + memset(scanline, 0, ctx->subimage[pass].scanline_width); + + for(k=0; k < ctx->subimage[pass].width; k++) + { + size_t ioffset = adam7_x_start[pass] + k * adam7_x_delta[pass]; + + sample = row_uc[ioffset / samples_per_byte]; + + sample = sample >> (initial_shift - ioffset * bit_depth % 8); + sample = sample & mask; + sample = sample << shift_amount; + + scanline[0] |= sample; + + shift_amount -= bit_depth; + + if(shift_amount > 7) + { + shift_amount = initial_shift; + scanline++; + } + } + + return encode_scanline(ctx, ctx->scanline, len); + } + + for(k=0; k < ctx->subimage[pass].width; k++) + { + size_t ioffset = (adam7_x_start[pass] + (size_t) k * adam7_x_delta[pass]) * pixel_size; + + memcpy(ctx->scanline + k * pixel_size, (unsigned char*)row + ioffset, pixel_size); + } + + return encode_scanline(ctx, ctx->scanline, len); +} + +int spng_encode_scanline(spng_ctx *ctx, const void *scanline, size_t len) +{ + if(ctx == NULL || scanline == NULL) return SPNG_EINVAL; + if(ctx->state >= SPNG_STATE_EOI) return SPNG_EOI; + if(len < (ctx->subimage[ctx->row_info.pass].scanline_width -1) ) return SPNG_EBUFSIZ; + + return encode_scanline(ctx, scanline, len); +} + +int spng_encode_row(spng_ctx *ctx, const void *row, size_t len) +{ + if(ctx == NULL || row == NULL) return SPNG_EINVAL; + if(ctx->state >= SPNG_STATE_EOI) return SPNG_EOI; + if(len < ctx->image_width) return SPNG_EBUFSIZ; + + return encode_row(ctx, row, len); +} + +int spng_encode_chunks(spng_ctx *ctx) +{ + if(ctx == NULL) return 1; + if(!ctx->state) return SPNG_EBADSTATE; + if(ctx->state < SPNG_STATE_OUTPUT) return SPNG_ENODST; + if(!ctx->encode_only) return SPNG_ECTXTYPE; + + int ret = 0; + + if(ctx->state < SPNG_STATE_FIRST_IDAT) + { + if(!ctx->stored.ihdr) return SPNG_ENOIHDR; + + ret = write_chunks_before_idat(ctx); + if(ret) return encode_err(ctx, ret); + + ctx->state = SPNG_STATE_FIRST_IDAT; + } + else if(ctx->state == SPNG_STATE_FIRST_IDAT) + { + return 0; + } + else if(ctx->state == SPNG_STATE_EOI) + { + ret = write_chunks_after_idat(ctx); + if(ret) return encode_err(ctx, ret); + + ctx->state = SPNG_STATE_IEND; + } + else return SPNG_EOPSTATE; + + return 0; +} + +int spng_encode_image(spng_ctx *ctx, const void *img, size_t len, int fmt, int flags) +{ + if(ctx == NULL) return 1; + if(!ctx->state) return SPNG_EBADSTATE; + if(!ctx->encode_only) return SPNG_ECTXTYPE; + if(!ctx->stored.ihdr) return SPNG_ENOIHDR; + if( !(fmt == SPNG_FMT_PNG || fmt == SPNG_FMT_RAW) ) return SPNG_EFMT; + + int ret = 0; + const struct spng_ihdr *ihdr = &ctx->ihdr; + struct encode_flags *encode_flags = &ctx->encode_flags; + + if(ihdr->color_type == SPNG_COLOR_TYPE_INDEXED && !ctx->stored.plte) return SPNG_ENOPLTE; + + ret = calculate_image_width(ihdr, fmt, &ctx->image_width); + if(ret) return encode_err(ctx, ret); + + if(ctx->image_width > SIZE_MAX / ihdr->height) ctx->image_size = 0; /* overflow */ + else ctx->image_size = ctx->image_width * ihdr->height; + + if( !(flags & SPNG_ENCODE_PROGRESSIVE) ) + { + if(img == NULL) return 1; + if(!ctx->image_size) return SPNG_EOVERFLOW; + if(len != ctx->image_size) return SPNG_EBUFSIZ; + } + + ret = spng_encode_chunks(ctx); + if(ret) return encode_err(ctx, ret); + + ret = calculate_subimages(ctx); + if(ret) return encode_err(ctx, ret); + + if(ihdr->bit_depth < 8) ctx->bytes_per_pixel = 1; + else ctx->bytes_per_pixel = num_channels(ihdr) * (ihdr->bit_depth / 8); + + if(spng__optimize(SPNG_FILTER_CHOICE)) + { + /* Filtering would make no difference */ + if(!ctx->image_options.compression_level) + { + encode_flags->filter_choice = SPNG_DISABLE_FILTERING; + } + + /* Palette indices and low bit-depth images do not benefit from filtering */ + if(ihdr->color_type == SPNG_COLOR_TYPE_INDEXED || ihdr->bit_depth < 8) + { + encode_flags->filter_choice = SPNG_DISABLE_FILTERING; + } + } + + /* This is technically the same as disabling filtering */ + if(encode_flags->filter_choice == SPNG_FILTER_CHOICE_NONE) + { + encode_flags->filter_choice = SPNG_DISABLE_FILTERING; + } + + if(!encode_flags->filter_choice && spng__optimize(SPNG_IMG_COMPRESSION_STRATEGY)) + { + ctx->image_options.strategy = Z_DEFAULT_STRATEGY; + } + + ret = spng__deflate_init(ctx, &ctx->image_options); + if(ret) return encode_err(ctx, ret); + + size_t scanline_buf_size = ctx->subimage[ctx->widest_pass].scanline_width; + + scanline_buf_size += 32; + + if(scanline_buf_size < 32) return SPNG_EOVERFLOW; + + ctx->scanline_buf = spng__malloc(ctx, scanline_buf_size); + ctx->prev_scanline_buf = spng__malloc(ctx, scanline_buf_size); + + if(ctx->scanline_buf == NULL || ctx->prev_scanline_buf == NULL) return encode_err(ctx, SPNG_EMEM); + + /* Maintain alignment for pixels, filter at [-1] */ + ctx->scanline = ctx->scanline_buf + 16; + ctx->prev_scanline = ctx->prev_scanline_buf + 16; + + if(encode_flags->filter_choice) + { + ctx->filtered_scanline_buf = spng__malloc(ctx, scanline_buf_size); + if(ctx->filtered_scanline_buf == NULL) return encode_err(ctx, SPNG_EMEM); + + ctx->filtered_scanline = ctx->filtered_scanline_buf + 16; + } + + struct spng_subimage *sub = ctx->subimage; + struct spng_row_info *ri = &ctx->row_info; + + ctx->fmt = fmt; + + z_stream *zstream = &ctx->zstream; + zstream->avail_out = SPNG_WRITE_SIZE; + + ret = write_header(ctx, type_idat, zstream->avail_out, &zstream->next_out); + if(ret) return encode_err(ctx, ret); + + if(ihdr->interlace_method) encode_flags->interlace = 1; + + if(fmt & (SPNG_FMT_PNG | SPNG_FMT_RAW) ) encode_flags->same_layout = 1; + + if(ihdr->bit_depth == 16 && fmt != SPNG_FMT_RAW) encode_flags->to_bigendian = 1; + + if(flags & SPNG_ENCODE_FINALIZE) encode_flags->finalize = 1; + + while(!sub[ri->pass].width || !sub[ri->pass].height) ri->pass++; + + if(encode_flags->interlace) ri->row_num = adam7_y_start[ri->pass]; + + ctx->pixel_size = 4; /* SPNG_FMT_RGBA8 */ + + if(fmt == SPNG_FMT_RGBA16) ctx->pixel_size = 8; + else if(fmt == SPNG_FMT_RGB8) ctx->pixel_size = 3; + else if(fmt == SPNG_FMT_G8) ctx->pixel_size = 1; + else if(fmt == SPNG_FMT_GA8) ctx->pixel_size = 2; + else if(fmt & (SPNG_FMT_PNG | SPNG_FMT_RAW)) ctx->pixel_size = ctx->bytes_per_pixel; + + ctx->state = SPNG_STATE_ENCODE_INIT; + + if(flags & SPNG_ENCODE_PROGRESSIVE) + { + encode_flags->progressive = 1; + + return 0; + } + + do + { + size_t ioffset = ri->row_num * ctx->image_width; + + ret = encode_row(ctx, (unsigned char*)img + ioffset, ctx->image_width); + + }while(!ret); + + if(ret != SPNG_EOI) return encode_err(ctx, ret); + + return 0; +} + +spng_ctx *spng_ctx_new(int flags) +{ + struct spng_alloc alloc = + { + .malloc_fn = malloc, + .realloc_fn = realloc, + .calloc_fn = calloc, + .free_fn = free + }; + + return spng_ctx_new2(&alloc, flags); +} + +spng_ctx *spng_ctx_new2(struct spng_alloc *alloc, int flags) +{ + if(alloc == NULL) return NULL; + if(flags != (flags & SPNG__CTX_FLAGS_ALL)) return NULL; + + if(alloc->malloc_fn == NULL) return NULL; + if(alloc->realloc_fn == NULL) return NULL; + if(alloc->calloc_fn == NULL) return NULL; + if(alloc->free_fn == NULL) return NULL; + + spng_ctx *ctx = alloc->calloc_fn(1, sizeof(spng_ctx)); + if(ctx == NULL) return NULL; + + ctx->alloc = *alloc; + + ctx->max_width = spng_u32max; + ctx->max_height = spng_u32max; + + ctx->max_chunk_size = spng_u32max; + ctx->chunk_cache_limit = SIZE_MAX; + ctx->chunk_count_limit = SPNG_MAX_CHUNK_COUNT; + + ctx->state = SPNG_STATE_INIT; + + ctx->crc_action_critical = SPNG_CRC_ERROR; + ctx->crc_action_ancillary = SPNG_CRC_DISCARD; + + const struct spng__zlib_options image_defaults = + { + .compression_level = Z_DEFAULT_COMPRESSION, + .window_bits = 15, + .mem_level = 8, + .strategy = Z_FILTERED, + .data_type = 0 /* Z_BINARY */ + }; + + const struct spng__zlib_options text_defaults = + { + .compression_level = Z_DEFAULT_COMPRESSION, + .window_bits = 15, + .mem_level = 8, + .strategy = Z_DEFAULT_STRATEGY, + .data_type = 1 /* Z_TEXT */ + }; + + ctx->image_options = image_defaults; + ctx->text_options = text_defaults; + + ctx->optimize_option = ~0; + ctx->encode_flags.filter_choice = SPNG_FILTER_CHOICE_ALL; + + ctx->flags = flags; + + if(flags & SPNG_CTX_ENCODER) ctx->encode_only = 1; + + return ctx; +} + +void spng_ctx_free(spng_ctx *ctx) +{ + if(ctx == NULL) return; + + if(ctx->streaming && ctx->stream_buf != NULL) spng__free(ctx, ctx->stream_buf); + + if(!ctx->user.exif) spng__free(ctx, ctx->exif.data); + + if(!ctx->user.iccp) spng__free(ctx, ctx->iccp.profile); + + uint32_t i; + + if(ctx->splt_list != NULL && !ctx->user.splt) + { + for(i=0; i < ctx->n_splt; i++) + { + spng__free(ctx, ctx->splt_list[i].entries); + } + spng__free(ctx, ctx->splt_list); + } + + if(ctx->text_list != NULL) + { + for(i=0; i< ctx->n_text; i++) + { + if(ctx->user.text) break; + + spng__free(ctx, ctx->text_list[i].keyword); + if(ctx->text_list[i].compression_flag) spng__free(ctx, ctx->text_list[i].text); + } + spng__free(ctx, ctx->text_list); + } + + if(ctx->chunk_list != NULL && !ctx->user.unknown) + { + for(i=0; i< ctx->n_chunks; i++) + { + spng__free(ctx, ctx->chunk_list[i].data); + } + spng__free(ctx, ctx->chunk_list); + } + + if(ctx->deflate) deflateEnd(&ctx->zstream); + else inflateEnd(&ctx->zstream); + + if(!ctx->user_owns_out_png) spng__free(ctx, ctx->out_png); + + spng__free(ctx, ctx->gamma_lut16); + + spng__free(ctx, ctx->row_buf); + spng__free(ctx, ctx->scanline_buf); + spng__free(ctx, ctx->prev_scanline_buf); + spng__free(ctx, ctx->filtered_scanline_buf); + + spng_free_fn *free_fn = ctx->alloc.free_fn; + + memset(ctx, 0, sizeof(spng_ctx)); + + free_fn(ctx); +} + +static int buffer_read_fn(spng_ctx *ctx, void *user, void *data, size_t n) +{ + if(n > ctx->bytes_left) return SPNG_IO_EOF; + + (void)user; + (void)data; + ctx->data = ctx->data + ctx->last_read_size; + + ctx->last_read_size = n; + ctx->bytes_left -= n; + + return 0; +} + +static int file_read_fn(spng_ctx *ctx, void *user, void *data, size_t n) +{ + FILE *file = user; + (void)ctx; + + if(fread(data, n, 1, file) != 1) + { + if(feof(file)) return SPNG_IO_EOF; + else return SPNG_IO_ERROR; + } + + return 0; +} + +static int file_write_fn(spng_ctx *ctx, void *user, void *data, size_t n) +{ + FILE *file = user; + (void)ctx; + + if(fwrite(data, n, 1, file) != 1) return SPNG_IO_ERROR; + + return 0; +} + +int spng_set_png_buffer(spng_ctx *ctx, const void *buf, size_t size) +{ + if(ctx == NULL || buf == NULL) return 1; + if(!ctx->state) return SPNG_EBADSTATE; + if(ctx->encode_only) return SPNG_ECTXTYPE; /* not supported */ + + if(ctx->data != NULL) return SPNG_EBUF_SET; + + ctx->data = buf; + ctx->png_base = buf; + ctx->data_size = size; + ctx->bytes_left = size; + + ctx->read_fn = buffer_read_fn; + + ctx->state = SPNG_STATE_INPUT; + + return 0; +} + +int spng_set_png_stream(spng_ctx *ctx, spng_rw_fn *rw_func, void *user) +{ + if(ctx == NULL || rw_func == NULL) return 1; + if(!ctx->state) return SPNG_EBADSTATE; + + /* SPNG_STATE_OUTPUT shares the same value */ + if(ctx->state >= SPNG_STATE_INPUT) return SPNG_EBUF_SET; + + if(ctx->encode_only) + { + if(ctx->out_png != NULL) return SPNG_EBUF_SET; + + ctx->write_fn = rw_func; + ctx->write_ptr = ctx->stream_buf; + + ctx->state = SPNG_STATE_OUTPUT; + } + else + { + ctx->stream_buf = spng__malloc(ctx, SPNG_READ_SIZE); + if(ctx->stream_buf == NULL) return SPNG_EMEM; + + ctx->read_fn = rw_func; + ctx->data = ctx->stream_buf; + ctx->data_size = SPNG_READ_SIZE; + + ctx->state = SPNG_STATE_INPUT; + } + + ctx->stream_user_ptr = user; + + ctx->streaming = 1; + + return 0; +} + +int spng_set_png_file(spng_ctx *ctx, FILE *file) +{ + if(file == NULL) return 1; + + if(ctx->encode_only) return spng_set_png_stream(ctx, file_write_fn, file); + + return spng_set_png_stream(ctx, file_read_fn, file); +} + +void *spng_get_png_buffer(spng_ctx *ctx, size_t *len, int *error) +{ + int tmp = 0; + error = error ? error : &tmp; + *error = 0; + + if(ctx == NULL || !len) *error = SPNG_EINVAL; + + if(*error) return NULL; + + if(!ctx->encode_only) *error = SPNG_ECTXTYPE; + else if(!ctx->state) *error = SPNG_EBADSTATE; + else if(!ctx->internal_buffer) *error = SPNG_EOPSTATE; + else if(ctx->state < SPNG_STATE_EOI) *error = SPNG_EOPSTATE; + else if(ctx->state != SPNG_STATE_IEND) *error = SPNG_ENOTFINAL; + + if(*error) return NULL; + + ctx->user_owns_out_png = 1; + + *len = ctx->bytes_encoded; + + return ctx->out_png; +} + +int spng_set_image_limits(spng_ctx *ctx, uint32_t width, uint32_t height) +{ + if(ctx == NULL) return 1; + + if(width > spng_u32max || height > spng_u32max) return 1; + + ctx->max_width = width; + ctx->max_height = height; + + return 0; +} + +int spng_get_image_limits(spng_ctx *ctx, uint32_t *width, uint32_t *height) +{ + if(ctx == NULL || width == NULL || height == NULL) return 1; + + *width = ctx->max_width; + *height = ctx->max_height; + + return 0; +} + +int spng_set_chunk_limits(spng_ctx *ctx, size_t chunk_size, size_t cache_limit) +{ + if(ctx == NULL || chunk_size > spng_u32max || chunk_size > cache_limit) return 1; + + ctx->max_chunk_size = chunk_size; + + ctx->chunk_cache_limit = cache_limit; + + return 0; +} + +int spng_get_chunk_limits(spng_ctx *ctx, size_t *chunk_size, size_t *cache_limit) +{ + if(ctx == NULL || chunk_size == NULL || cache_limit == NULL) return 1; + + *chunk_size = ctx->max_chunk_size; + + *cache_limit = ctx->chunk_cache_limit; + + return 0; +} + +int spng_set_crc_action(spng_ctx *ctx, int critical, int ancillary) +{ + if(ctx == NULL) return 1; + if(ctx->encode_only) return SPNG_ECTXTYPE; + + if(critical > 2 || critical < 0) return 1; + if(ancillary > 2 || ancillary < 0) return 1; + + if(critical == SPNG_CRC_DISCARD) return 1; + + ctx->crc_action_critical = critical; + ctx->crc_action_ancillary = ancillary; + + return 0; +} + +int spng_set_option(spng_ctx *ctx, enum spng_option option, int value) +{ + if(ctx == NULL) return 1; + if(!ctx->state) return SPNG_EBADSTATE; + + switch(option) + { + case SPNG_KEEP_UNKNOWN_CHUNKS: + { + ctx->keep_unknown = value ? 1 : 0; + break; + } + case SPNG_IMG_COMPRESSION_LEVEL: + { + ctx->image_options.compression_level = value; + break; + } + case SPNG_IMG_WINDOW_BITS: + { + ctx->image_options.window_bits = value; + break; + } + case SPNG_IMG_MEM_LEVEL: + { + ctx->image_options.mem_level = value; + break; + } + case SPNG_IMG_COMPRESSION_STRATEGY: + { + ctx->image_options.strategy = value; + break; + } + case SPNG_TEXT_COMPRESSION_LEVEL: + { + ctx->text_options.compression_level = value; + break; + } + case SPNG_TEXT_WINDOW_BITS: + { + ctx->text_options.window_bits = value; + break; + } + case SPNG_TEXT_MEM_LEVEL: + { + ctx->text_options.mem_level = value; + break; + } + case SPNG_TEXT_COMPRESSION_STRATEGY: + { + ctx->text_options.strategy = value; + break; + } + case SPNG_FILTER_CHOICE: + { + if(value & ~SPNG_FILTER_CHOICE_ALL) return 1; + ctx->encode_flags.filter_choice = value; + break; + } + case SPNG_CHUNK_COUNT_LIMIT: + { + if(value < 0) return 1; + if(value > (int)ctx->chunk_count_total) return 1; + ctx->chunk_count_limit = value; + break; + } + case SPNG_ENCODE_TO_BUFFER: + { + if(value < 0) return 1; + if(!ctx->encode_only) return SPNG_ECTXTYPE; + if(ctx->state >= SPNG_STATE_OUTPUT) return SPNG_EOPSTATE; + + if(!value) break; + + ctx->internal_buffer = 1; + ctx->state = SPNG_STATE_OUTPUT; + + break; + } + default: return 1; + } + + /* Option can no longer be overriden by the library */ + if(option < 32) ctx->optimize_option &= ~(1 << option); + + return 0; +} + +int spng_get_option(spng_ctx *ctx, enum spng_option option, int *value) +{ + if(ctx == NULL || value == NULL) return 1; + if(!ctx->state) return SPNG_EBADSTATE; + + switch(option) + { + case SPNG_KEEP_UNKNOWN_CHUNKS: + { + *value = ctx->keep_unknown; + break; + } + case SPNG_IMG_COMPRESSION_LEVEL: + { + *value = ctx->image_options.compression_level; + break; + } + case SPNG_IMG_WINDOW_BITS: + { + *value = ctx->image_options.window_bits; + break; + } + case SPNG_IMG_MEM_LEVEL: + { + *value = ctx->image_options.mem_level; + break; + } + case SPNG_IMG_COMPRESSION_STRATEGY: + { + *value = ctx->image_options.strategy; + break; + } + case SPNG_TEXT_COMPRESSION_LEVEL: + { + *value = ctx->text_options.compression_level; + break; + } + case SPNG_TEXT_WINDOW_BITS: + { + *value = ctx->text_options.window_bits; + break; + } + case SPNG_TEXT_MEM_LEVEL: + { + *value = ctx->text_options.mem_level; + break; + } + case SPNG_TEXT_COMPRESSION_STRATEGY: + { + *value = ctx->text_options.strategy; + break; + } + case SPNG_FILTER_CHOICE: + { + *value = ctx->encode_flags.filter_choice; + break; + } + case SPNG_CHUNK_COUNT_LIMIT: + { + *value = ctx->chunk_count_limit; + break; + } + case SPNG_ENCODE_TO_BUFFER: + { + if(ctx->internal_buffer) *value = 1; + else *value = 0; + + break; + } + default: return 1; + } + + return 0; +} + +int spng_decoded_image_size(spng_ctx *ctx, int fmt, size_t *len) +{ + if(ctx == NULL || len == NULL) return 1; + + int ret = read_chunks(ctx, 1); + if(ret) return ret; + + ret = check_decode_fmt(&ctx->ihdr, fmt); + if(ret) return ret; + + return calculate_image_size(&ctx->ihdr, fmt, len); +} + +int spng_get_ihdr(spng_ctx *ctx, struct spng_ihdr *ihdr) +{ + if(ctx == NULL) return 1; + int ret = read_chunks(ctx, 1); + if(ret) return ret; + if(ihdr == NULL) return 1; + + *ihdr = ctx->ihdr; + + return 0; +} + +int spng_get_plte(spng_ctx *ctx, struct spng_plte *plte) +{ + SPNG_GET_CHUNK_BOILERPLATE(plte); + + *plte = ctx->plte; + + return 0; +} + +int spng_get_trns(spng_ctx *ctx, struct spng_trns *trns) +{ + SPNG_GET_CHUNK_BOILERPLATE(trns); + + *trns = ctx->trns; + + return 0; +} + +int spng_get_chrm(spng_ctx *ctx, struct spng_chrm *chrm) +{ + SPNG_GET_CHUNK_BOILERPLATE(chrm); + + chrm->white_point_x = (double)ctx->chrm_int.white_point_x / 100000.0; + chrm->white_point_y = (double)ctx->chrm_int.white_point_y / 100000.0; + chrm->red_x = (double)ctx->chrm_int.red_x / 100000.0; + chrm->red_y = (double)ctx->chrm_int.red_y / 100000.0; + chrm->blue_y = (double)ctx->chrm_int.blue_y / 100000.0; + chrm->blue_x = (double)ctx->chrm_int.blue_x / 100000.0; + chrm->green_x = (double)ctx->chrm_int.green_x / 100000.0; + chrm->green_y = (double)ctx->chrm_int.green_y / 100000.0; + + return 0; +} + +int spng_get_chrm_int(spng_ctx *ctx, struct spng_chrm_int *chrm) +{ + SPNG_GET_CHUNK_BOILERPLATE(chrm); + + *chrm = ctx->chrm_int; + + return 0; +} + +int spng_get_gama(spng_ctx *ctx, double *gamma) +{ + double *gama = gamma; + SPNG_GET_CHUNK_BOILERPLATE(gama); + + *gama = (double)ctx->gama / 100000.0; + + return 0; +} + +int spng_get_gama_int(spng_ctx *ctx, uint32_t *gama_int) +{ + uint32_t *gama = gama_int; + SPNG_GET_CHUNK_BOILERPLATE(gama); + + *gama_int = ctx->gama; + + return 0; +} + +int spng_get_iccp(spng_ctx *ctx, struct spng_iccp *iccp) +{ + SPNG_GET_CHUNK_BOILERPLATE(iccp); + + *iccp = ctx->iccp; + + return 0; +} + +int spng_get_sbit(spng_ctx *ctx, struct spng_sbit *sbit) +{ + SPNG_GET_CHUNK_BOILERPLATE(sbit); + + *sbit = ctx->sbit; + + return 0; +} + +int spng_get_srgb(spng_ctx *ctx, uint8_t *rendering_intent) +{ + uint8_t *srgb = rendering_intent; + SPNG_GET_CHUNK_BOILERPLATE(srgb); + + *srgb = ctx->srgb_rendering_intent; + + return 0; +} + +int spng_get_text(spng_ctx *ctx, struct spng_text *text, uint32_t *n_text) +{ + if(ctx == NULL) return 1; + int ret = read_chunks(ctx, 0); + if(ret) return ret; + if(!ctx->stored.text) return SPNG_ECHUNKAVAIL; + if(n_text == NULL) return 1; + + if(text == NULL) + { + *n_text = ctx->n_text; + return 0; + } + + if(*n_text < ctx->n_text) return 1; + + uint32_t i; + for(i=0; i< ctx->n_text; i++) + { + text[i].type = ctx->text_list[i].type; + memcpy(&text[i].keyword, ctx->text_list[i].keyword, strlen(ctx->text_list[i].keyword) + 1); + text[i].compression_method = 0; + text[i].compression_flag = ctx->text_list[i].compression_flag; + text[i].language_tag = ctx->text_list[i].language_tag; + text[i].translated_keyword = ctx->text_list[i].translated_keyword; + text[i].length = ctx->text_list[i].text_length; + text[i].text = ctx->text_list[i].text; + } + + return ret; +} + +int spng_get_bkgd(spng_ctx *ctx, struct spng_bkgd *bkgd) +{ + SPNG_GET_CHUNK_BOILERPLATE(bkgd); + + *bkgd = ctx->bkgd; + + return 0; +} + +int spng_get_hist(spng_ctx *ctx, struct spng_hist *hist) +{ + SPNG_GET_CHUNK_BOILERPLATE(hist); + + *hist = ctx->hist; + + return 0; +} + +int spng_get_phys(spng_ctx *ctx, struct spng_phys *phys) +{ + SPNG_GET_CHUNK_BOILERPLATE(phys); + + *phys = ctx->phys; + + return 0; +} + +int spng_get_splt(spng_ctx *ctx, struct spng_splt *splt, uint32_t *n_splt) +{ + if(ctx == NULL) return 1; + int ret = read_chunks(ctx, 0); + if(ret) return ret; + if(!ctx->stored.splt) return SPNG_ECHUNKAVAIL; + if(n_splt == NULL) return 1; + + if(splt == NULL) + { + *n_splt = ctx->n_splt; + return 0; + } + + if(*n_splt < ctx->n_splt) return 1; + + memcpy(splt, ctx->splt_list, ctx->n_splt * sizeof(struct spng_splt)); + + return 0; +} + +int spng_get_time(spng_ctx *ctx, struct spng_time *time) +{ + SPNG_GET_CHUNK_BOILERPLATE(time); + + *time = ctx->time; + + return 0; +} + +int spng_get_unknown_chunks(spng_ctx *ctx, struct spng_unknown_chunk *chunks, uint32_t *n_chunks) +{ + if(ctx == NULL) return 1; + int ret = read_chunks(ctx, 0); + if(ret) return ret; + if(!ctx->stored.unknown) return SPNG_ECHUNKAVAIL; + if(n_chunks == NULL) return 1; + + if(chunks == NULL) + { + *n_chunks = ctx->n_chunks; + return 0; + } + + if(*n_chunks < ctx->n_chunks) return 1; + + memcpy(chunks, ctx->chunk_list, sizeof(struct spng_unknown_chunk)); + + return 0; +} + +int spng_get_offs(spng_ctx *ctx, struct spng_offs *offs) +{ + SPNG_GET_CHUNK_BOILERPLATE(offs); + + *offs = ctx->offs; + + return 0; +} + +int spng_get_exif(spng_ctx *ctx, struct spng_exif *exif) +{ + SPNG_GET_CHUNK_BOILERPLATE(exif); + + *exif = ctx->exif; + + return 0; +} + +int spng_set_ihdr(spng_ctx *ctx, struct spng_ihdr *ihdr) +{ + SPNG_SET_CHUNK_BOILERPLATE(ihdr); + + if(ctx->stored.ihdr) return 1; + + ret = check_ihdr(ihdr, ctx->max_width, ctx->max_height); + if(ret) return ret; + + ctx->ihdr = *ihdr; + + ctx->stored.ihdr = 1; + ctx->user.ihdr = 1; + + return 0; +} + +int spng_set_plte(spng_ctx *ctx, struct spng_plte *plte) +{ + SPNG_SET_CHUNK_BOILERPLATE(plte); + + if(!ctx->stored.ihdr) return 1; + + if(check_plte(plte, &ctx->ihdr)) return 1; + + ctx->plte.n_entries = plte->n_entries; + + memcpy(ctx->plte.entries, plte->entries, plte->n_entries * sizeof(struct spng_plte_entry)); + + ctx->stored.plte = 1; + ctx->user.plte = 1; + + return 0; +} + +int spng_set_trns(spng_ctx *ctx, struct spng_trns *trns) +{ + SPNG_SET_CHUNK_BOILERPLATE(trns); + + if(!ctx->stored.ihdr) return SPNG_ENOIHDR; + + if(ctx->ihdr.color_type == SPNG_COLOR_TYPE_GRAYSCALE) + { + ctx->trns.gray = trns->gray; + } + else if(ctx->ihdr.color_type == SPNG_COLOR_TYPE_TRUECOLOR) + { + ctx->trns.red = trns->red; + ctx->trns.green = trns->green; + ctx->trns.blue = trns->blue; + } + else if(ctx->ihdr.color_type == SPNG_COLOR_TYPE_INDEXED) + { + if(!ctx->stored.plte) return SPNG_ETRNS_NO_PLTE; + if(trns->n_type3_entries > ctx->plte.n_entries) return 1; + + ctx->trns.n_type3_entries = trns->n_type3_entries; + memcpy(ctx->trns.type3_alpha, trns->type3_alpha, trns->n_type3_entries); + } + else return SPNG_ETRNS_COLOR_TYPE; + + ctx->stored.trns = 1; + ctx->user.trns = 1; + + return 0; +} + +int spng_set_chrm(spng_ctx *ctx, struct spng_chrm *chrm) +{ + SPNG_SET_CHUNK_BOILERPLATE(chrm); + + struct spng_chrm_int chrm_int; + + chrm_int.white_point_x = (uint32_t)(chrm->white_point_x * 100000.0); + chrm_int.white_point_y = (uint32_t)(chrm->white_point_y * 100000.0); + chrm_int.red_x = (uint32_t)(chrm->red_x * 100000.0); + chrm_int.red_y = (uint32_t)(chrm->red_y * 100000.0); + chrm_int.green_x = (uint32_t)(chrm->green_x * 100000.0); + chrm_int.green_y = (uint32_t)(chrm->green_y * 100000.0); + chrm_int.blue_x = (uint32_t)(chrm->blue_x * 100000.0); + chrm_int.blue_y = (uint32_t)(chrm->blue_y * 100000.0); + + if(check_chrm_int(&chrm_int)) return SPNG_ECHRM; + + ctx->chrm_int = chrm_int; + + ctx->stored.chrm = 1; + ctx->user.chrm = 1; + + return 0; +} + +int spng_set_chrm_int(spng_ctx *ctx, struct spng_chrm_int *chrm_int) +{ + SPNG_SET_CHUNK_BOILERPLATE(chrm_int); + + if(check_chrm_int(chrm_int)) return SPNG_ECHRM; + + ctx->chrm_int = *chrm_int; + + ctx->stored.chrm = 1; + ctx->user.chrm = 1; + + return 0; +} + +int spng_set_gama(spng_ctx *ctx, double gamma) +{ + SPNG_SET_CHUNK_BOILERPLATE(ctx); + + uint32_t gama = gamma * 100000.0; + + if(!gama) return 1; + if(gama > spng_u32max) return 1; + + ctx->gama = gama; + + ctx->stored.gama = 1; + ctx->user.gama = 1; + + return 0; +} + +int spng_set_gama_int(spng_ctx *ctx, uint32_t gamma) +{ + SPNG_SET_CHUNK_BOILERPLATE(ctx); + + if(!gamma) return 1; + if(gamma > spng_u32max) return 1; + + ctx->gama = gamma; + + ctx->stored.gama = 1; + ctx->user.gama = 1; + + return 0; +} + +int spng_set_iccp(spng_ctx *ctx, struct spng_iccp *iccp) +{ + SPNG_SET_CHUNK_BOILERPLATE(iccp); + + if(check_png_keyword(iccp->profile_name)) return SPNG_EICCP_NAME; + if(!iccp->profile_len) return SPNG_ECHUNK_SIZE; + if(iccp->profile_len > spng_u32max) return SPNG_ECHUNK_STDLEN; + + if(ctx->iccp.profile && !ctx->user.iccp) spng__free(ctx, ctx->iccp.profile); + + ctx->iccp = *iccp; + + ctx->stored.iccp = 1; + ctx->user.iccp = 1; + + return 0; +} + +int spng_set_sbit(spng_ctx *ctx, struct spng_sbit *sbit) +{ + SPNG_SET_CHUNK_BOILERPLATE(sbit); + + if(check_sbit(sbit, &ctx->ihdr)) return 1; + + if(!ctx->stored.ihdr) return 1; + + ctx->sbit = *sbit; + + ctx->stored.sbit = 1; + ctx->user.sbit = 1; + + return 0; +} + +int spng_set_srgb(spng_ctx *ctx, uint8_t rendering_intent) +{ + SPNG_SET_CHUNK_BOILERPLATE(ctx); + + if(rendering_intent > 3) return 1; + + ctx->srgb_rendering_intent = rendering_intent; + + ctx->stored.srgb = 1; + ctx->user.srgb = 1; + + return 0; +} + +int spng_set_text(spng_ctx *ctx, struct spng_text *text, uint32_t n_text) +{ + if(!n_text) return 1; + SPNG_SET_CHUNK_BOILERPLATE(text); + + uint32_t i; + for(i=0; i < n_text; i++) + { + if(check_png_keyword(text[i].keyword)) return SPNG_ETEXT_KEYWORD; + if(!text[i].length) return 1; + if(text[i].length > UINT_MAX) return 1; + if(text[i].text == NULL) return 1; + + if(text[i].type == SPNG_TEXT) + { + if(ctx->strict && check_png_text(text[i].text, text[i].length)) return 1; + } + else if(text[i].type == SPNG_ZTXT) + { + if(ctx->strict && check_png_text(text[i].text, text[i].length)) return 1; + + if(text[i].compression_method != 0) return SPNG_EZTXT_COMPRESSION_METHOD; + } + else if(text[i].type == SPNG_ITXT) + { + if(text[i].compression_flag > 1) return SPNG_EITXT_COMPRESSION_FLAG; + if(text[i].compression_method != 0) return SPNG_EITXT_COMPRESSION_METHOD; + if(text[i].language_tag == NULL) return SPNG_EITXT_LANG_TAG; + if(text[i].translated_keyword == NULL) return SPNG_EITXT_TRANSLATED_KEY; + } + else return 1; + + } + + struct spng_text2 *text_list = spng__calloc(ctx, sizeof(struct spng_text2), n_text); + + if(!text_list) return SPNG_EMEM; + + if(ctx->text_list != NULL) + { + for(i=0; i < ctx->n_text; i++) + { + if(ctx->user.text) break; + + spng__free(ctx, ctx->text_list[i].keyword); + if(ctx->text_list[i].compression_flag) spng__free(ctx, ctx->text_list[i].text); + } + spng__free(ctx, ctx->text_list); + } + + for(i=0; i < n_text; i++) + { + text_list[i].type = text[i].type; + /* Prevent issues with spng_text.keyword[80] going out of scope */ + text_list[i].keyword = text_list[i].user_keyword_storage; + memcpy(text_list[i].user_keyword_storage, text[i].keyword, strlen(text[i].keyword)); + text_list[i].text = text[i].text; + text_list[i].text_length = text[i].length; + + if(text[i].type == SPNG_ZTXT) + { + text_list[i].compression_flag = 1; + } + else if(text[i].type == SPNG_ITXT) + { + text_list[i].compression_flag = text[i].compression_flag; + text_list[i].language_tag = text[i].language_tag; + text_list[i].translated_keyword = text[i].translated_keyword; + } + } + + ctx->text_list = text_list; + ctx->n_text = n_text; + + ctx->stored.text = 1; + ctx->user.text = 1; + + return 0; +} + +int spng_set_bkgd(spng_ctx *ctx, struct spng_bkgd *bkgd) +{ + SPNG_SET_CHUNK_BOILERPLATE(bkgd); + + if(!ctx->stored.ihdr) return 1; + + if(ctx->ihdr.color_type == 0 || ctx->ihdr.color_type == 4) + { + ctx->bkgd.gray = bkgd->gray; + } + else if(ctx->ihdr.color_type == 2 || ctx->ihdr.color_type == 6) + { + ctx->bkgd.red = bkgd->red; + ctx->bkgd.green = bkgd->green; + ctx->bkgd.blue = bkgd->blue; + } + else if(ctx->ihdr.color_type == 3) + { + if(!ctx->stored.plte) return SPNG_EBKGD_NO_PLTE; + if(bkgd->plte_index >= ctx->plte.n_entries) return SPNG_EBKGD_PLTE_IDX; + + ctx->bkgd.plte_index = bkgd->plte_index; + } + + ctx->stored.bkgd = 1; + ctx->user.bkgd = 1; + + return 0; +} + +int spng_set_hist(spng_ctx *ctx, struct spng_hist *hist) +{ + SPNG_SET_CHUNK_BOILERPLATE(hist); + + if(!ctx->stored.plte) return SPNG_EHIST_NO_PLTE; + + ctx->hist = *hist; + + ctx->stored.hist = 1; + ctx->user.hist = 1; + + return 0; +} + +int spng_set_phys(spng_ctx *ctx, struct spng_phys *phys) +{ + SPNG_SET_CHUNK_BOILERPLATE(phys); + + if(check_phys(phys)) return SPNG_EPHYS; + + ctx->phys = *phys; + + ctx->stored.phys = 1; + ctx->user.phys = 1; + + return 0; +} + +int spng_set_splt(spng_ctx *ctx, struct spng_splt *splt, uint32_t n_splt) +{ + if(!n_splt) return 1; + SPNG_SET_CHUNK_BOILERPLATE(splt); + + uint32_t i; + for(i=0; i < n_splt; i++) + { + if(check_png_keyword(splt[i].name)) return SPNG_ESPLT_NAME; + if( !(splt[i].sample_depth == 8 || splt[i].sample_depth == 16) ) return SPNG_ESPLT_DEPTH; + } + + if(ctx->stored.splt && !ctx->user.splt) + { + for(i=0; i < ctx->n_splt; i++) + { + if(ctx->splt_list[i].entries != NULL) spng__free(ctx, ctx->splt_list[i].entries); + } + spng__free(ctx, ctx->splt_list); + } + + ctx->splt_list = splt; + ctx->n_splt = n_splt; + + ctx->stored.splt = 1; + ctx->user.splt = 1; + + return 0; +} + +int spng_set_time(spng_ctx *ctx, struct spng_time *time) +{ + SPNG_SET_CHUNK_BOILERPLATE(time); + + if(check_time(time)) return SPNG_ETIME; + + ctx->time = *time; + + ctx->stored.time = 1; + ctx->user.time = 1; + + return 0; +} + +int spng_set_unknown_chunks(spng_ctx *ctx, struct spng_unknown_chunk *chunks, uint32_t n_chunks) +{ + if(!n_chunks) return 1; + SPNG_SET_CHUNK_BOILERPLATE(chunks); + + uint32_t i; + for(i=0; i < n_chunks; i++) + { + if(chunks[i].length > spng_u32max) return SPNG_ECHUNK_STDLEN; + if(chunks[i].length && chunks[i].data == NULL) return 1; + + switch(chunks[i].location) + { + case SPNG_AFTER_IHDR: + case SPNG_AFTER_PLTE: + case SPNG_AFTER_IDAT: + break; + default: return SPNG_ECHUNK_POS; + } + } + + if(ctx->stored.unknown && !ctx->user.unknown) + { + for(i=0; i < ctx->n_chunks; i++) + { + spng__free(ctx, ctx->chunk_list[i].data); + } + spng__free(ctx, ctx->chunk_list); + } + + ctx->chunk_list = chunks; + ctx->n_chunks = n_chunks; + + ctx->stored.unknown = 1; + ctx->user.unknown = 1; + + return 0; +} + +int spng_set_offs(spng_ctx *ctx, struct spng_offs *offs) +{ + SPNG_SET_CHUNK_BOILERPLATE(offs); + + if(check_offs(offs)) return SPNG_EOFFS; + + ctx->offs = *offs; + + ctx->stored.offs = 1; + ctx->user.offs = 1; + + return 0; +} + +int spng_set_exif(spng_ctx *ctx, struct spng_exif *exif) +{ + SPNG_SET_CHUNK_BOILERPLATE(exif); + + if(check_exif(exif)) return SPNG_EEXIF; + + if(ctx->exif.data != NULL && !ctx->user.exif) spng__free(ctx, ctx->exif.data); + + ctx->exif = *exif; + + ctx->stored.exif = 1; + ctx->user.exif = 1; + + return 0; +} + +const char *spng_strerror(int err) +{ + switch(err) + { + case SPNG_IO_EOF: return "end of stream"; + case SPNG_IO_ERROR: return "stream error"; + case SPNG_OK: return "success"; + case SPNG_EINVAL: return "invalid argument"; + case SPNG_EMEM: return "out of memory"; + case SPNG_EOVERFLOW: return "arithmetic overflow"; + case SPNG_ESIGNATURE: return "invalid signature"; + case SPNG_EWIDTH: return "invalid image width"; + case SPNG_EHEIGHT: return "invalid image height"; + case SPNG_EUSER_WIDTH: return "image width exceeds user limit"; + case SPNG_EUSER_HEIGHT: return "image height exceeds user limit"; + case SPNG_EBIT_DEPTH: return "invalid bit depth"; + case SPNG_ECOLOR_TYPE: return "invalid color type"; + case SPNG_ECOMPRESSION_METHOD: return "invalid compression method"; + case SPNG_EFILTER_METHOD: return "invalid filter method"; + case SPNG_EINTERLACE_METHOD: return "invalid interlace method"; + case SPNG_EIHDR_SIZE: return "invalid IHDR chunk size"; + case SPNG_ENOIHDR: return "missing IHDR chunk"; + case SPNG_ECHUNK_POS: return "invalid chunk position"; + case SPNG_ECHUNK_SIZE: return "invalid chunk length"; + case SPNG_ECHUNK_CRC: return "invalid chunk checksum"; + case SPNG_ECHUNK_TYPE: return "invalid chunk type"; + case SPNG_ECHUNK_UNKNOWN_CRITICAL: return "unknown critical chunk"; + case SPNG_EDUP_PLTE: return "duplicate PLTE chunk"; + case SPNG_EDUP_CHRM: return "duplicate cHRM chunk"; + case SPNG_EDUP_GAMA: return "duplicate gAMA chunk"; + case SPNG_EDUP_ICCP: return "duplicate iCCP chunk"; + case SPNG_EDUP_SBIT: return "duplicate sBIT chunk"; + case SPNG_EDUP_SRGB: return "duplicate sRGB chunk"; + case SPNG_EDUP_BKGD: return "duplicate bKGD chunk"; + case SPNG_EDUP_HIST: return "duplicate hIST chunk"; + case SPNG_EDUP_TRNS: return "duplicate tRNS chunk"; + case SPNG_EDUP_PHYS: return "duplicate pHYs chunk"; + case SPNG_EDUP_TIME: return "duplicate tIME chunk"; + case SPNG_EDUP_OFFS: return "duplicate oFFs chunk"; + case SPNG_EDUP_EXIF: return "duplicate eXIf chunk"; + case SPNG_ECHRM: return "invalid cHRM chunk"; + case SPNG_EPLTE_IDX: return "invalid palette (PLTE) index"; + case SPNG_ETRNS_COLOR_TYPE: return "tRNS chunk with incompatible color type"; + case SPNG_ETRNS_NO_PLTE: return "missing palette (PLTE) for tRNS chunk"; + case SPNG_EGAMA: return "invalid gAMA chunk"; + case SPNG_EICCP_NAME: return "invalid iCCP profile name"; + case SPNG_EICCP_COMPRESSION_METHOD: return "invalid iCCP compression method"; + case SPNG_ESBIT: return "invalid sBIT chunk"; + case SPNG_ESRGB: return "invalid sRGB chunk"; + case SPNG_ETEXT: return "invalid tEXt chunk"; + case SPNG_ETEXT_KEYWORD: return "invalid tEXt keyword"; + case SPNG_EZTXT: return "invalid zTXt chunk"; + case SPNG_EZTXT_COMPRESSION_METHOD: return "invalid zTXt compression method"; + case SPNG_EITXT: return "invalid iTXt chunk"; + case SPNG_EITXT_COMPRESSION_FLAG: return "invalid iTXt compression flag"; + case SPNG_EITXT_COMPRESSION_METHOD: return "invalid iTXt compression method"; + case SPNG_EITXT_LANG_TAG: return "invalid iTXt language tag"; + case SPNG_EITXT_TRANSLATED_KEY: return "invalid iTXt translated key"; + case SPNG_EBKGD_NO_PLTE: return "missing palette for bKGD chunk"; + case SPNG_EBKGD_PLTE_IDX: return "invalid palette index for bKGD chunk"; + case SPNG_EHIST_NO_PLTE: return "missing palette for hIST chunk"; + case SPNG_EPHYS: return "invalid pHYs chunk"; + case SPNG_ESPLT_NAME: return "invalid suggested palette name"; + case SPNG_ESPLT_DUP_NAME: return "duplicate suggested palette (sPLT) name"; + case SPNG_ESPLT_DEPTH: return "invalid suggested palette (sPLT) sample depth"; + case SPNG_ETIME: return "invalid tIME chunk"; + case SPNG_EOFFS: return "invalid oFFs chunk"; + case SPNG_EEXIF: return "invalid eXIf chunk"; + case SPNG_EIDAT_TOO_SHORT: return "IDAT stream too short"; + case SPNG_EIDAT_STREAM: return "IDAT stream error"; + case SPNG_EZLIB: return "zlib error"; + case SPNG_EFILTER: return "invalid scanline filter"; + case SPNG_EBUFSIZ: return "invalid buffer size"; + case SPNG_EIO: return "i/o error"; + case SPNG_EOF: return "end of file"; + case SPNG_EBUF_SET: return "buffer already set"; + case SPNG_EBADSTATE: return "non-recoverable state"; + case SPNG_EFMT: return "invalid format"; + case SPNG_EFLAGS: return "invalid flags"; + case SPNG_ECHUNKAVAIL: return "chunk not available"; + case SPNG_ENCODE_ONLY: return "encode only context"; + case SPNG_EOI: return "reached end-of-image state"; + case SPNG_ENOPLTE: return "missing PLTE for indexed image"; + case SPNG_ECHUNK_LIMITS: return "reached chunk/cache limits"; + case SPNG_EZLIB_INIT: return "zlib init error"; + case SPNG_ECHUNK_STDLEN: return "chunk exceeds maximum standard length"; + case SPNG_EINTERNAL: return "internal error"; + case SPNG_ECTXTYPE: return "invalid operation for context type"; + case SPNG_ENOSRC: return "source PNG not set"; + case SPNG_ENODST: return "PNG output not set"; + case SPNG_EOPSTATE: return "invalid operation for state"; + case SPNG_ENOTFINAL: return "PNG not finalized"; + default: return "unknown error"; + } +} + +const char *spng_version_string(void) +{ + return SPNG_VERSION_STRING; +} + +#if defined(_MSC_VER) + #pragma warning(pop) +#endif + +/* The following SIMD optimizations are derived from libpng source code. */ + +/* +* PNG Reference Library License version 2 +* +* Copyright (c) 1995-2019 The PNG Reference Library Authors. +* Copyright (c) 2018-2019 Cosmin Truta. +* Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson. +* Copyright (c) 1996-1997 Andreas Dilger. +* Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. +* +* The software is supplied "as is", without warranty of any kind, +* express or implied, including, without limitation, the warranties +* of merchantability, fitness for a particular purpose, title, and +* non-infringement. In no event shall the Copyright owners, or +* anyone distributing the software, be liable for any damages or +* other liability, whether in contract, tort or otherwise, arising +* from, out of, or in connection with the software, or the use or +* other dealings in the software, even if advised of the possibility +* of such damage. +* +* Permission is hereby granted to use, copy, modify, and distribute +* this software, or portions hereof, for any purpose, without fee, +* subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; you +* must not claim that you wrote the original software. If you +* use this software in a product, an acknowledgment in the product +* documentation would be appreciated, but is not required. +* +* 2. Altered source versions must be plainly marked as such, and must +* not be misrepresented as being the original software. +* +* 3. This Copyright notice may not be removed or altered from any +* source or altered source distribution. +*/ + +#if defined(SPNG_X86) + +#ifndef SPNG_SSE + #define SPNG_SSE 1 +#endif + +#if defined(__GNUC__) && !defined(__clang__) + #if SPNG_SSE == 3 + #pragma GCC target("ssse3") + #elif SPNG_SSE == 4 + #pragma GCC target("sse4.1") + #else + #pragma GCC target("sse2") + #endif +#endif + +/* SSE2 optimised filter functions + * Derived from filter_neon_intrinsics.c + * + * Copyright (c) 2018 Cosmin Truta + * Copyright (c) 2016-2017 Glenn Randers-Pehrson + * Written by Mike Klein and Matt Sarett + * Derived from arm/filter_neon_intrinsics.c + * + * This code is derived from libpng source code. + * For conditions of distribution and use, see the disclaimer + * and license above. + */ + +#include +#include +#include + +/* Functions in this file look at most 3 pixels (a,b,c) to predict the 4th (d). + * They're positioned like this: + * prev: c b + * row: a d + * The Sub filter predicts d=a, Avg d=(a+b)/2, and Paeth predicts d to be + * whichever of a, b, or c is closest to p=a+b-c. + */ + +static __m128i load4(const void* p) +{ + int tmp; + memcpy(&tmp, p, sizeof(tmp)); + return _mm_cvtsi32_si128(tmp); +} + +static void store4(void* p, __m128i v) +{ + int tmp = _mm_cvtsi128_si32(v); + memcpy(p, &tmp, sizeof(int)); +} + +static __m128i load3(const void* p) +{ + uint32_t tmp = 0; + memcpy(&tmp, p, 3); + return _mm_cvtsi32_si128(tmp); +} + +static void store3(void* p, __m128i v) +{ + int tmp = _mm_cvtsi128_si32(v); + memcpy(p, &tmp, 3); +} + +static void defilter_sub3(size_t rowbytes, unsigned char *row) +{ + /* The Sub filter predicts each pixel as the previous pixel, a. + * There is no pixel to the left of the first pixel. It's encoded directly. + * That works with our main loop if we just say that left pixel was zero. + */ + size_t rb = rowbytes; + + __m128i a, d = _mm_setzero_si128(); + + while(rb >= 4) + { + a = d; d = load4(row); + d = _mm_add_epi8(d, a); + store3(row, d); + + row += 3; + rb -= 3; + } + + if(rb > 0) + { + a = d; d = load3(row); + d = _mm_add_epi8(d, a); + store3(row, d); + } +} + +static void defilter_sub4(size_t rowbytes, unsigned char *row) +{ + /* The Sub filter predicts each pixel as the previous pixel, a. + * There is no pixel to the left of the first pixel. It's encoded directly. + * That works with our main loop if we just say that left pixel was zero. + */ + size_t rb = rowbytes+4; + + __m128i a, d = _mm_setzero_si128(); + + while(rb > 4) + { + a = d; d = load4(row); + d = _mm_add_epi8(d, a); + store4(row, d); + + row += 4; + rb -= 4; + } +} + +static void defilter_avg3(size_t rowbytes, unsigned char *row, const unsigned char *prev) +{ + /* The Avg filter predicts each pixel as the (truncated) average of a and b. + * There's no pixel to the left of the first pixel. Luckily, it's + * predicted to be half of the pixel above it. So again, this works + * perfectly with our loop if we make sure a starts at zero. + */ + + size_t rb = rowbytes; + + const __m128i zero = _mm_setzero_si128(); + + __m128i b; + __m128i a, d = zero; + + while(rb >= 4) + { + __m128i avg; + b = load4(prev); + a = d; d = load4(row ); + + /* PNG requires a truncating average, so we can't just use _mm_avg_epu8 */ + avg = _mm_avg_epu8(a,b); + /* ...but we can fix it up by subtracting off 1 if it rounded up. */ + avg = _mm_sub_epi8(avg, _mm_and_si128(_mm_xor_si128(a, b), + _mm_set1_epi8(1))); + d = _mm_add_epi8(d, avg); + store3(row, d); + + prev += 3; + row += 3; + rb -= 3; + } + + if(rb > 0) + { + __m128i avg; + b = load3(prev); + a = d; d = load3(row ); + + /* PNG requires a truncating average, so we can't just use _mm_avg_epu8 */ + avg = _mm_avg_epu8(a, b); + /* ...but we can fix it up by subtracting off 1 if it rounded up. */ + avg = _mm_sub_epi8(avg, _mm_and_si128(_mm_xor_si128(a, b), + _mm_set1_epi8(1))); + + d = _mm_add_epi8(d, avg); + store3(row, d); + } +} + +static void defilter_avg4(size_t rowbytes, unsigned char *row, const unsigned char *prev) +{ + /* The Avg filter predicts each pixel as the (truncated) average of a and b. + * There's no pixel to the left of the first pixel. Luckily, it's + * predicted to be half of the pixel above it. So again, this works + * perfectly with our loop if we make sure a starts at zero. + */ + size_t rb = rowbytes+4; + + const __m128i zero = _mm_setzero_si128(); + __m128i b; + __m128i a, d = zero; + + while(rb > 4) + { + __m128i avg; + b = load4(prev); + a = d; d = load4(row ); + + /* PNG requires a truncating average, so we can't just use _mm_avg_epu8 */ + avg = _mm_avg_epu8(a,b); + /* ...but we can fix it up by subtracting off 1 if it rounded up. */ + avg = _mm_sub_epi8(avg, _mm_and_si128(_mm_xor_si128(a, b), + _mm_set1_epi8(1))); + + d = _mm_add_epi8(d, avg); + store4(row, d); + + prev += 4; + row += 4; + rb -= 4; + } +} + +/* Returns |x| for 16-bit lanes. */ +#if (SPNG_SSE >= 3) && !defined(_MSC_VER) +__attribute__((target("ssse3"))) +#endif +static __m128i abs_i16(__m128i x) +{ +#if SPNG_SSE >= 3 + return _mm_abs_epi16(x); +#else + /* Read this all as, return x<0 ? -x : x. + * To negate two's complement, you flip all the bits then add 1. + */ + __m128i is_negative = _mm_cmplt_epi16(x, _mm_setzero_si128()); + + /* Flip negative lanes. */ + x = _mm_xor_si128(x, is_negative); + + /* +1 to negative lanes, else +0. */ + x = _mm_sub_epi16(x, is_negative); + return x; +#endif +} + +/* Bytewise c ? t : e. */ +static __m128i if_then_else(__m128i c, __m128i t, __m128i e) +{ +#if SPNG_SSE >= 4 + return _mm_blendv_epi8(e, t, c); +#else + return _mm_or_si128(_mm_and_si128(c, t), _mm_andnot_si128(c, e)); +#endif +} + +static void defilter_paeth3(size_t rowbytes, unsigned char *row, const unsigned char *prev) +{ + /* Paeth tries to predict pixel d using the pixel to the left of it, a, + * and two pixels from the previous row, b and c: + * prev: c b + * row: a d + * The Paeth function predicts d to be whichever of a, b, or c is nearest to + * p=a+b-c. + * + * The first pixel has no left context, and so uses an Up filter, p = b. + * This works naturally with our main loop's p = a+b-c if we force a and c + * to zero. + * Here we zero b and d, which become c and a respectively at the start of + * the loop. + */ + size_t rb = rowbytes; + const __m128i zero = _mm_setzero_si128(); + __m128i c, b = zero, + a, d = zero; + + while(rb >= 4) + { + /* It's easiest to do this math (particularly, deal with pc) with 16-bit + * intermediates. + */ + __m128i pa,pb,pc,smallest,nearest; + c = b; b = _mm_unpacklo_epi8(load4(prev), zero); + a = d; d = _mm_unpacklo_epi8(load4(row ), zero); + + /* (p-a) == (a+b-c - a) == (b-c) */ + + pa = _mm_sub_epi16(b, c); + + /* (p-b) == (a+b-c - b) == (a-c) */ + pb = _mm_sub_epi16(a, c); + + /* (p-c) == (a+b-c - c) == (a+b-c-c) == (b-c)+(a-c) */ + pc = _mm_add_epi16(pa, pb); + + pa = abs_i16(pa); /* |p-a| */ + pb = abs_i16(pb); /* |p-b| */ + pc = abs_i16(pc); /* |p-c| */ + + smallest = _mm_min_epi16(pc, _mm_min_epi16(pa, pb)); + + /* Paeth breaks ties favoring a over b over c. */ + nearest = if_then_else(_mm_cmpeq_epi16(smallest, pa), a, + if_then_else(_mm_cmpeq_epi16(smallest, pb), b, c)); + + /* Note `_epi8`: we need addition to wrap modulo 255. */ + d = _mm_add_epi8(d, nearest); + store3(row, _mm_packus_epi16(d, d)); + + prev += 3; + row += 3; + rb -= 3; + } + + if(rb > 0) + { + /* It's easiest to do this math (particularly, deal with pc) with 16-bit + * intermediates. + */ + __m128i pa, pb, pc, smallest, nearest; + c = b; b = _mm_unpacklo_epi8(load3(prev), zero); + a = d; d = _mm_unpacklo_epi8(load3(row ), zero); + + /* (p-a) == (a+b-c - a) == (b-c) */ + pa = _mm_sub_epi16(b, c); + + /* (p-b) == (a+b-c - b) == (a-c) */ + pb = _mm_sub_epi16(a, c); + + /* (p-c) == (a+b-c - c) == (a+b-c-c) == (b-c)+(a-c) */ + pc = _mm_add_epi16(pa, pb); + + pa = abs_i16(pa); /* |p-a| */ + pb = abs_i16(pb); /* |p-b| */ + pc = abs_i16(pc); /* |p-c| */ + + smallest = _mm_min_epi16(pc, _mm_min_epi16(pa, pb)); + + /* Paeth breaks ties favoring a over b over c. */ + nearest = if_then_else(_mm_cmpeq_epi16(smallest, pa), a, + if_then_else(_mm_cmpeq_epi16(smallest, pb), b, c)); + + /* Note `_epi8`: we need addition to wrap modulo 255. */ + d = _mm_add_epi8(d, nearest); + store3(row, _mm_packus_epi16(d, d)); + } +} + +static void defilter_paeth4(size_t rowbytes, unsigned char *row, const unsigned char *prev) +{ + /* Paeth tries to predict pixel d using the pixel to the left of it, a, + * and two pixels from the previous row, b and c: + * prev: c b + * row: a d + * The Paeth function predicts d to be whichever of a, b, or c is nearest to + * p=a+b-c. + * + * The first pixel has no left context, and so uses an Up filter, p = b. + * This works naturally with our main loop's p = a+b-c if we force a and c + * to zero. + * Here we zero b and d, which become c and a respectively at the start of + * the loop. + */ + size_t rb = rowbytes+4; + + const __m128i zero = _mm_setzero_si128(); + __m128i pa, pb, pc, smallest, nearest; + __m128i c, b = zero, + a, d = zero; + + while(rb > 4) + { + /* It's easiest to do this math (particularly, deal with pc) with 16-bit + * intermediates. + */ + c = b; b = _mm_unpacklo_epi8(load4(prev), zero); + a = d; d = _mm_unpacklo_epi8(load4(row ), zero); + + /* (p-a) == (a+b-c - a) == (b-c) */ + pa = _mm_sub_epi16(b, c); + + /* (p-b) == (a+b-c - b) == (a-c) */ + pb = _mm_sub_epi16(a, c); + + /* (p-c) == (a+b-c - c) == (a+b-c-c) == (b-c)+(a-c) */ + pc = _mm_add_epi16(pa, pb); + + pa = abs_i16(pa); /* |p-a| */ + pb = abs_i16(pb); /* |p-b| */ + pc = abs_i16(pc); /* |p-c| */ + + smallest = _mm_min_epi16(pc, _mm_min_epi16(pa, pb)); + + /* Paeth breaks ties favoring a over b over c. */ + nearest = if_then_else(_mm_cmpeq_epi16(smallest, pa), a, + if_then_else(_mm_cmpeq_epi16(smallest, pb), b, c)); + + /* Note `_epi8`: we need addition to wrap modulo 255. */ + d = _mm_add_epi8(d, nearest); + store4(row, _mm_packus_epi16(d, d)); + + prev += 4; + row += 4; + rb -= 4; + } +} + +#endif /* SPNG_X86 */ + + +#if defined(SPNG_ARM) + +/* NEON optimised filter functions + * Derived from filter_neon_intrinsics.c + * + * Copyright (c) 2018 Cosmin Truta + * Copyright (c) 2014,2016 Glenn Randers-Pehrson + * Written by James Yu , October 2013. + * Based on filter_neon.S, written by Mans Rullgard, 2011. + * + * This code is derived from libpng source code. + * For conditions of distribution and use, see the disclaimer + * and license in this file. + */ + +#define png_aligncast(type, value) ((void*)(value)) +#define png_aligncastconst(type, value) ((const void*)(value)) + +/* libpng row pointers are not necessarily aligned to any particular boundary, + * however this code will only work with appropriate alignment. mips/mips_init.c + * checks for this (and will not compile unless it is done). This code uses + * variants of png_aligncast to avoid compiler warnings. + */ +#define png_ptr(type,pointer) png_aligncast(type *,pointer) +#define png_ptrc(type,pointer) png_aligncastconst(const type *,pointer) + +/* The following relies on a variable 'temp_pointer' being declared with type + * 'type'. This is written this way just to hide the GCC strict aliasing + * warning; note that the code is safe because there never is an alias between + * the input and output pointers. + */ +#define png_ldr(type,pointer)\ + (temp_pointer = png_ptr(type,pointer), *temp_pointer) + + +#if defined(_MSC_VER) && !defined(__clang__) && defined(_M_ARM64) + #include +#else + #include +#endif + +static void defilter_sub3(size_t rowbytes, unsigned char *row) +{ + unsigned char *rp = row; + unsigned char *rp_stop = row + rowbytes; + + uint8x16_t vtmp = vld1q_u8(rp); + uint8x8x2_t *vrpt = png_ptr(uint8x8x2_t, &vtmp); + uint8x8x2_t vrp = *vrpt; + + uint8x8x4_t vdest; + vdest.val[3] = vdup_n_u8(0); + + for (; rp < rp_stop;) + { + uint8x8_t vtmp1, vtmp2; + uint32x2_t *temp_pointer; + + vtmp1 = vext_u8(vrp.val[0], vrp.val[1], 3); + vdest.val[0] = vadd_u8(vdest.val[3], vrp.val[0]); + vtmp2 = vext_u8(vrp.val[0], vrp.val[1], 6); + vdest.val[1] = vadd_u8(vdest.val[0], vtmp1); + + vtmp1 = vext_u8(vrp.val[1], vrp.val[1], 1); + vdest.val[2] = vadd_u8(vdest.val[1], vtmp2); + vdest.val[3] = vadd_u8(vdest.val[2], vtmp1); + + vtmp = vld1q_u8(rp + 12); + vrpt = png_ptr(uint8x8x2_t, &vtmp); + vrp = *vrpt; + + vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[0]), 0); + rp += 3; + vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[1]), 0); + rp += 3; + vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[2]), 0); + rp += 3; + vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[3]), 0); + rp += 3; + } +} + +static void defilter_sub4(size_t rowbytes, unsigned char *row) +{ + unsigned char *rp = row; + unsigned char *rp_stop = row + rowbytes; + + uint8x8x4_t vdest; + vdest.val[3] = vdup_n_u8(0); + + for (; rp < rp_stop; rp += 16) + { + uint32x2x4_t vtmp = vld4_u32(png_ptr(uint32_t,rp)); + uint8x8x4_t *vrpt = png_ptr(uint8x8x4_t,&vtmp); + uint8x8x4_t vrp = *vrpt; + uint32x2x4_t *temp_pointer; + uint32x2x4_t vdest_val; + + vdest.val[0] = vadd_u8(vdest.val[3], vrp.val[0]); + vdest.val[1] = vadd_u8(vdest.val[0], vrp.val[1]); + vdest.val[2] = vadd_u8(vdest.val[1], vrp.val[2]); + vdest.val[3] = vadd_u8(vdest.val[2], vrp.val[3]); + + vdest_val = png_ldr(uint32x2x4_t, &vdest); + vst4_lane_u32(png_ptr(uint32_t,rp), vdest_val, 0); + } +} + +static void defilter_avg3(size_t rowbytes, unsigned char *row, const unsigned char *prev_row) +{ + unsigned char *rp = row; + const unsigned char *pp = prev_row; + unsigned char *rp_stop = row + rowbytes; + + uint8x16_t vtmp; + uint8x8x2_t *vrpt; + uint8x8x2_t vrp; + uint8x8x4_t vdest; + vdest.val[3] = vdup_n_u8(0); + + vtmp = vld1q_u8(rp); + vrpt = png_ptr(uint8x8x2_t,&vtmp); + vrp = *vrpt; + + for (; rp < rp_stop; pp += 12) + { + uint8x8_t vtmp1, vtmp2, vtmp3; + + uint8x8x2_t *vppt; + uint8x8x2_t vpp; + + uint32x2_t *temp_pointer; + + vtmp = vld1q_u8(pp); + vppt = png_ptr(uint8x8x2_t,&vtmp); + vpp = *vppt; + + vtmp1 = vext_u8(vrp.val[0], vrp.val[1], 3); + vdest.val[0] = vhadd_u8(vdest.val[3], vpp.val[0]); + vdest.val[0] = vadd_u8(vdest.val[0], vrp.val[0]); + + vtmp2 = vext_u8(vpp.val[0], vpp.val[1], 3); + vtmp3 = vext_u8(vrp.val[0], vrp.val[1], 6); + vdest.val[1] = vhadd_u8(vdest.val[0], vtmp2); + vdest.val[1] = vadd_u8(vdest.val[1], vtmp1); + + vtmp2 = vext_u8(vpp.val[0], vpp.val[1], 6); + vtmp1 = vext_u8(vrp.val[1], vrp.val[1], 1); + + vtmp = vld1q_u8(rp + 12); + vrpt = png_ptr(uint8x8x2_t,&vtmp); + vrp = *vrpt; + + vdest.val[2] = vhadd_u8(vdest.val[1], vtmp2); + vdest.val[2] = vadd_u8(vdest.val[2], vtmp3); + + vtmp2 = vext_u8(vpp.val[1], vpp.val[1], 1); + + vdest.val[3] = vhadd_u8(vdest.val[2], vtmp2); + vdest.val[3] = vadd_u8(vdest.val[3], vtmp1); + + vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[0]), 0); + rp += 3; + vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[1]), 0); + rp += 3; + vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[2]), 0); + rp += 3; + vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[3]), 0); + rp += 3; + } +} + +static void defilter_avg4(size_t rowbytes, unsigned char *row, const unsigned char *prev_row) +{ + unsigned char *rp = row; + unsigned char *rp_stop = row + rowbytes; + const unsigned char *pp = prev_row; + + uint8x8x4_t vdest; + vdest.val[3] = vdup_n_u8(0); + + for (; rp < rp_stop; rp += 16, pp += 16) + { + uint32x2x4_t vtmp; + uint8x8x4_t *vrpt, *vppt; + uint8x8x4_t vrp, vpp; + uint32x2x4_t *temp_pointer; + uint32x2x4_t vdest_val; + + vtmp = vld4_u32(png_ptr(uint32_t,rp)); + vrpt = png_ptr(uint8x8x4_t,&vtmp); + vrp = *vrpt; + vtmp = vld4_u32(png_ptrc(uint32_t,pp)); + vppt = png_ptr(uint8x8x4_t,&vtmp); + vpp = *vppt; + + vdest.val[0] = vhadd_u8(vdest.val[3], vpp.val[0]); + vdest.val[0] = vadd_u8(vdest.val[0], vrp.val[0]); + vdest.val[1] = vhadd_u8(vdest.val[0], vpp.val[1]); + vdest.val[1] = vadd_u8(vdest.val[1], vrp.val[1]); + vdest.val[2] = vhadd_u8(vdest.val[1], vpp.val[2]); + vdest.val[2] = vadd_u8(vdest.val[2], vrp.val[2]); + vdest.val[3] = vhadd_u8(vdest.val[2], vpp.val[3]); + vdest.val[3] = vadd_u8(vdest.val[3], vrp.val[3]); + + vdest_val = png_ldr(uint32x2x4_t, &vdest); + vst4_lane_u32(png_ptr(uint32_t,rp), vdest_val, 0); + } +} + +static uint8x8_t paeth_arm(uint8x8_t a, uint8x8_t b, uint8x8_t c) +{ + uint8x8_t d, e; + uint16x8_t p1, pa, pb, pc; + + p1 = vaddl_u8(a, b); /* a + b */ + pc = vaddl_u8(c, c); /* c * 2 */ + pa = vabdl_u8(b, c); /* pa */ + pb = vabdl_u8(a, c); /* pb */ + pc = vabdq_u16(p1, pc); /* pc */ + + p1 = vcleq_u16(pa, pb); /* pa <= pb */ + pa = vcleq_u16(pa, pc); /* pa <= pc */ + pb = vcleq_u16(pb, pc); /* pb <= pc */ + + p1 = vandq_u16(p1, pa); /* pa <= pb && pa <= pc */ + + d = vmovn_u16(pb); + e = vmovn_u16(p1); + + d = vbsl_u8(d, b, c); + e = vbsl_u8(e, a, d); + + return e; +} + +static void defilter_paeth3(size_t rowbytes, unsigned char *row, const unsigned char *prev_row) +{ + unsigned char *rp = row; + const unsigned char *pp = prev_row; + unsigned char *rp_stop = row + rowbytes; + + uint8x16_t vtmp; + uint8x8x2_t *vrpt; + uint8x8x2_t vrp; + uint8x8_t vlast = vdup_n_u8(0); + uint8x8x4_t vdest; + vdest.val[3] = vdup_n_u8(0); + + vtmp = vld1q_u8(rp); + vrpt = png_ptr(uint8x8x2_t,&vtmp); + vrp = *vrpt; + + for (; rp < rp_stop; pp += 12) + { + uint8x8x2_t *vppt; + uint8x8x2_t vpp; + uint8x8_t vtmp1, vtmp2, vtmp3; + uint32x2_t *temp_pointer; + + vtmp = vld1q_u8(pp); + vppt = png_ptr(uint8x8x2_t,&vtmp); + vpp = *vppt; + + vdest.val[0] = paeth_arm(vdest.val[3], vpp.val[0], vlast); + vdest.val[0] = vadd_u8(vdest.val[0], vrp.val[0]); + + vtmp1 = vext_u8(vrp.val[0], vrp.val[1], 3); + vtmp2 = vext_u8(vpp.val[0], vpp.val[1], 3); + vdest.val[1] = paeth_arm(vdest.val[0], vtmp2, vpp.val[0]); + vdest.val[1] = vadd_u8(vdest.val[1], vtmp1); + + vtmp1 = vext_u8(vrp.val[0], vrp.val[1], 6); + vtmp3 = vext_u8(vpp.val[0], vpp.val[1], 6); + vdest.val[2] = paeth_arm(vdest.val[1], vtmp3, vtmp2); + vdest.val[2] = vadd_u8(vdest.val[2], vtmp1); + + vtmp1 = vext_u8(vrp.val[1], vrp.val[1], 1); + vtmp2 = vext_u8(vpp.val[1], vpp.val[1], 1); + + vtmp = vld1q_u8(rp + 12); + vrpt = png_ptr(uint8x8x2_t,&vtmp); + vrp = *vrpt; + + vdest.val[3] = paeth_arm(vdest.val[2], vtmp2, vtmp3); + vdest.val[3] = vadd_u8(vdest.val[3], vtmp1); + + vlast = vtmp2; + + vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[0]), 0); + rp += 3; + vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[1]), 0); + rp += 3; + vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[2]), 0); + rp += 3; + vst1_lane_u32(png_ptr(uint32_t,rp), png_ldr(uint32x2_t,&vdest.val[3]), 0); + rp += 3; + } +} + +static void defilter_paeth4(size_t rowbytes, unsigned char *row, const unsigned char *prev_row) +{ + unsigned char *rp = row; + unsigned char *rp_stop = row + rowbytes; + const unsigned char *pp = prev_row; + + uint8x8_t vlast = vdup_n_u8(0); + uint8x8x4_t vdest; + vdest.val[3] = vdup_n_u8(0); + + for (; rp < rp_stop; rp += 16, pp += 16) + { + uint32x2x4_t vtmp; + uint8x8x4_t *vrpt, *vppt; + uint8x8x4_t vrp, vpp; + uint32x2x4_t *temp_pointer; + uint32x2x4_t vdest_val; + + vtmp = vld4_u32(png_ptr(uint32_t,rp)); + vrpt = png_ptr(uint8x8x4_t,&vtmp); + vrp = *vrpt; + vtmp = vld4_u32(png_ptrc(uint32_t,pp)); + vppt = png_ptr(uint8x8x4_t,&vtmp); + vpp = *vppt; + + vdest.val[0] = paeth_arm(vdest.val[3], vpp.val[0], vlast); + vdest.val[0] = vadd_u8(vdest.val[0], vrp.val[0]); + vdest.val[1] = paeth_arm(vdest.val[0], vpp.val[1], vpp.val[0]); + vdest.val[1] = vadd_u8(vdest.val[1], vrp.val[1]); + vdest.val[2] = paeth_arm(vdest.val[1], vpp.val[2], vpp.val[1]); + vdest.val[2] = vadd_u8(vdest.val[2], vrp.val[2]); + vdest.val[3] = paeth_arm(vdest.val[2], vpp.val[3], vpp.val[2]); + vdest.val[3] = vadd_u8(vdest.val[3], vrp.val[3]); + + vlast = vpp.val[3]; + + vdest_val = png_ldr(uint32x2x4_t, &vdest); + vst4_lane_u32(png_ptr(uint32_t,rp), vdest_val, 0); + } +} + +/* NEON optimised palette expansion functions + * Derived from palette_neon_intrinsics.c + * + * Copyright (c) 2018-2019 Cosmin Truta + * Copyright (c) 2017-2018 Arm Holdings. All rights reserved. + * Written by Richard Townsend , February 2017. + * + * This code is derived from libpng source code. + * For conditions of distribution and use, see the disclaimer + * and license in this file. + * + * Related: https://developer.arm.com/documentation/101964/latest/Color-palette-expansion + * + * The functions were refactored to iterate forward. + * + */ + +/* Expands a palettized row into RGBA8. */ +static uint32_t expand_palette_rgba8_neon(unsigned char *row, const unsigned char *scanline, const unsigned char *plte, uint32_t width) +{ + const uint32_t scanline_stride = 4; + const uint32_t row_stride = scanline_stride * 4; + const uint32_t count = width / scanline_stride; + const uint32_t *palette = (const uint32_t*)plte; + + if(!count) return 0; + + uint32_t i; + uint32x4_t cur; + for(i=0; i < count; i++, scanline += scanline_stride) + { + cur = vld1q_dup_u32 (palette + scanline[0]); + cur = vld1q_lane_u32(palette + scanline[1], cur, 1); + cur = vld1q_lane_u32(palette + scanline[2], cur, 2); + cur = vld1q_lane_u32(palette + scanline[3], cur, 3); + vst1q_u32((uint32_t*)(row + i * row_stride), cur); + } + + return count * scanline_stride; +} + +/* Expands a palettized row into RGB8. */ +static uint32_t expand_palette_rgb8_neon(unsigned char *row, const unsigned char *scanline, const unsigned char *plte, uint32_t width) +{ + const uint32_t scanline_stride = 8; + const uint32_t row_stride = scanline_stride * 3; + const uint32_t count = width / scanline_stride; + + if(!count) return 0; + + uint32_t i; + uint8x8x3_t cur; + for(i=0; i < count; i++, scanline += scanline_stride) + { + cur = vld3_dup_u8 (plte + 3 * scanline[0]); + cur = vld3_lane_u8(plte + 3 * scanline[1], cur, 1); + cur = vld3_lane_u8(plte + 3 * scanline[2], cur, 2); + cur = vld3_lane_u8(plte + 3 * scanline[3], cur, 3); + cur = vld3_lane_u8(plte + 3 * scanline[4], cur, 4); + cur = vld3_lane_u8(plte + 3 * scanline[5], cur, 5); + cur = vld3_lane_u8(plte + 3 * scanline[6], cur, 6); + cur = vld3_lane_u8(plte + 3 * scanline[7], cur, 7); + vst3_u8(row + i * row_stride, cur); + } + + return count * scanline_stride; +} + +#endif /* SPNG_ARM */ diff --git a/tools/assets/n64texconv/lib/spng/spng.h b/tools/assets/n64texconv/lib/spng/spng.h new file mode 100644 index 0000000000..8f946337bf --- /dev/null +++ b/tools/assets/n64texconv/lib/spng/spng.h @@ -0,0 +1,537 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ +#ifndef SPNG_H +#define SPNG_H + +#ifdef __cplusplus +extern "C" { +#endif + +#if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(SPNG_STATIC) + #if defined(SPNG__BUILD) + #define SPNG_API __declspec(dllexport) + #else + #define SPNG_API __declspec(dllimport) + #endif +#else + #define SPNG_API +#endif + +#if defined(_MSC_VER) + #define SPNG_CDECL __cdecl +#else + #define SPNG_CDECL +#endif + +#include +#include +#include + +#define SPNG_VERSION_MAJOR 0 +#define SPNG_VERSION_MINOR 7 +#define SPNG_VERSION_PATCH 4 + +enum spng_errno +{ + SPNG_IO_ERROR = -2, + SPNG_IO_EOF = -1, + SPNG_OK = 0, + SPNG_EINVAL, + SPNG_EMEM, + SPNG_EOVERFLOW, + SPNG_ESIGNATURE, + SPNG_EWIDTH, + SPNG_EHEIGHT, + SPNG_EUSER_WIDTH, + SPNG_EUSER_HEIGHT, + SPNG_EBIT_DEPTH, + SPNG_ECOLOR_TYPE, + SPNG_ECOMPRESSION_METHOD, + SPNG_EFILTER_METHOD, + SPNG_EINTERLACE_METHOD, + SPNG_EIHDR_SIZE, + SPNG_ENOIHDR, + SPNG_ECHUNK_POS, + SPNG_ECHUNK_SIZE, + SPNG_ECHUNK_CRC, + SPNG_ECHUNK_TYPE, + SPNG_ECHUNK_UNKNOWN_CRITICAL, + SPNG_EDUP_PLTE, + SPNG_EDUP_CHRM, + SPNG_EDUP_GAMA, + SPNG_EDUP_ICCP, + SPNG_EDUP_SBIT, + SPNG_EDUP_SRGB, + SPNG_EDUP_BKGD, + SPNG_EDUP_HIST, + SPNG_EDUP_TRNS, + SPNG_EDUP_PHYS, + SPNG_EDUP_TIME, + SPNG_EDUP_OFFS, + SPNG_EDUP_EXIF, + SPNG_ECHRM, + SPNG_EPLTE_IDX, + SPNG_ETRNS_COLOR_TYPE, + SPNG_ETRNS_NO_PLTE, + SPNG_EGAMA, + SPNG_EICCP_NAME, + SPNG_EICCP_COMPRESSION_METHOD, + SPNG_ESBIT, + SPNG_ESRGB, + SPNG_ETEXT, + SPNG_ETEXT_KEYWORD, + SPNG_EZTXT, + SPNG_EZTXT_COMPRESSION_METHOD, + SPNG_EITXT, + SPNG_EITXT_COMPRESSION_FLAG, + SPNG_EITXT_COMPRESSION_METHOD, + SPNG_EITXT_LANG_TAG, + SPNG_EITXT_TRANSLATED_KEY, + SPNG_EBKGD_NO_PLTE, + SPNG_EBKGD_PLTE_IDX, + SPNG_EHIST_NO_PLTE, + SPNG_EPHYS, + SPNG_ESPLT_NAME, + SPNG_ESPLT_DUP_NAME, + SPNG_ESPLT_DEPTH, + SPNG_ETIME, + SPNG_EOFFS, + SPNG_EEXIF, + SPNG_EIDAT_TOO_SHORT, + SPNG_EIDAT_STREAM, + SPNG_EZLIB, + SPNG_EFILTER, + SPNG_EBUFSIZ, + SPNG_EIO, + SPNG_EOF, + SPNG_EBUF_SET, + SPNG_EBADSTATE, + SPNG_EFMT, + SPNG_EFLAGS, + SPNG_ECHUNKAVAIL, + SPNG_ENCODE_ONLY, + SPNG_EOI, + SPNG_ENOPLTE, + SPNG_ECHUNK_LIMITS, + SPNG_EZLIB_INIT, + SPNG_ECHUNK_STDLEN, + SPNG_EINTERNAL, + SPNG_ECTXTYPE, + SPNG_ENOSRC, + SPNG_ENODST, + SPNG_EOPSTATE, + SPNG_ENOTFINAL, +}; + +enum spng_text_type +{ + SPNG_TEXT = 1, + SPNG_ZTXT = 2, + SPNG_ITXT = 3 +}; + +enum spng_color_type +{ + SPNG_COLOR_TYPE_GRAYSCALE = 0, + SPNG_COLOR_TYPE_TRUECOLOR = 2, + SPNG_COLOR_TYPE_INDEXED = 3, + SPNG_COLOR_TYPE_GRAYSCALE_ALPHA = 4, + SPNG_COLOR_TYPE_TRUECOLOR_ALPHA = 6 +}; + +enum spng_filter +{ + SPNG_FILTER_NONE = 0, + SPNG_FILTER_SUB = 1, + SPNG_FILTER_UP = 2, + SPNG_FILTER_AVERAGE = 3, + SPNG_FILTER_PAETH = 4 +}; + +enum spng_filter_choice +{ + SPNG_DISABLE_FILTERING = 0, + SPNG_FILTER_CHOICE_NONE = 8, + SPNG_FILTER_CHOICE_SUB = 16, + SPNG_FILTER_CHOICE_UP = 32, + SPNG_FILTER_CHOICE_AVG = 64, + SPNG_FILTER_CHOICE_PAETH = 128, + SPNG_FILTER_CHOICE_ALL = (8|16|32|64|128) +}; + +enum spng_interlace_method +{ + SPNG_INTERLACE_NONE = 0, + SPNG_INTERLACE_ADAM7 = 1 +}; + +/* Channels are always in byte-order */ +enum spng_format +{ + SPNG_FMT_RGBA8 = 1, + SPNG_FMT_RGBA16 = 2, + SPNG_FMT_RGB8 = 4, + + /* Partially implemented, see documentation */ + SPNG_FMT_GA8 = 16, + SPNG_FMT_GA16 = 32, + SPNG_FMT_G8 = 64, + + /* No conversion or scaling */ + SPNG_FMT_PNG = 256, + SPNG_FMT_RAW = 512 /* big-endian (everything else is host-endian) */ +}; + +enum spng_ctx_flags +{ + SPNG_CTX_IGNORE_ADLER32 = 1, /* Ignore checksum in DEFLATE streams */ + SPNG_CTX_ENCODER = 2 /* Create an encoder context */ +}; + +enum spng_decode_flags +{ + SPNG_DECODE_USE_TRNS = 1, /* Deprecated */ + SPNG_DECODE_USE_GAMA = 2, /* Deprecated */ + SPNG_DECODE_USE_SBIT = 8, /* Undocumented */ + + SPNG_DECODE_TRNS = 1, /* Apply transparency */ + SPNG_DECODE_GAMMA = 2, /* Apply gamma correction */ + SPNG_DECODE_PROGRESSIVE = 256 /* Initialize for progressive reads */ +}; + +enum spng_crc_action +{ + /* Default for critical chunks */ + SPNG_CRC_ERROR = 0, + + /* Discard chunk, invalid for critical chunks. + Since v0.6.2: default for ancillary chunks */ + SPNG_CRC_DISCARD = 1, + + /* Ignore and don't calculate checksum. + Since v0.6.2: also ignores checksums in DEFLATE streams */ + SPNG_CRC_USE = 2 +}; + +enum spng_encode_flags +{ + SPNG_ENCODE_PROGRESSIVE = 1, /* Initialize for progressive writes */ + SPNG_ENCODE_FINALIZE = 2, /* Finalize PNG after encoding image */ +}; + +struct spng_ihdr +{ + uint32_t width; + uint32_t height; + uint8_t bit_depth; + uint8_t color_type; + uint8_t compression_method; + uint8_t filter_method; + uint8_t interlace_method; +}; + +struct spng_plte_entry +{ + uint8_t red; + uint8_t green; + uint8_t blue; + + uint8_t alpha; /* Reserved for internal use */ +}; + +struct spng_plte +{ + uint32_t n_entries; + struct spng_plte_entry entries[256]; +}; + +struct spng_trns +{ + uint16_t gray; + + uint16_t red; + uint16_t green; + uint16_t blue; + + uint32_t n_type3_entries; + uint8_t type3_alpha[256]; +}; + +struct spng_chrm_int +{ + uint32_t white_point_x; + uint32_t white_point_y; + uint32_t red_x; + uint32_t red_y; + uint32_t green_x; + uint32_t green_y; + uint32_t blue_x; + uint32_t blue_y; +}; + +struct spng_chrm +{ + double white_point_x; + double white_point_y; + double red_x; + double red_y; + double green_x; + double green_y; + double blue_x; + double blue_y; +}; + +struct spng_iccp +{ + char profile_name[80]; + size_t profile_len; + char *profile; +}; + +struct spng_sbit +{ + uint8_t grayscale_bits; + uint8_t red_bits; + uint8_t green_bits; + uint8_t blue_bits; + uint8_t alpha_bits; +}; + +struct spng_text +{ + char keyword[80]; + int type; + + size_t length; + char *text; + + uint8_t compression_flag; /* iTXt only */ + uint8_t compression_method; /* iTXt, ztXt only */ + char *language_tag; /* iTXt only */ + char *translated_keyword; /* iTXt only */ +}; + +struct spng_bkgd +{ + uint16_t gray; /* Only for gray/gray alpha */ + uint16_t red; + uint16_t green; + uint16_t blue; + uint16_t plte_index; /* Only for indexed color */ +}; + +struct spng_hist +{ + uint16_t frequency[256]; +}; + +struct spng_phys +{ + uint32_t ppu_x, ppu_y; + uint8_t unit_specifier; +}; + +struct spng_splt_entry +{ + uint16_t red; + uint16_t green; + uint16_t blue; + uint16_t alpha; + uint16_t frequency; +}; + +struct spng_splt +{ + char name[80]; + uint8_t sample_depth; + uint32_t n_entries; + struct spng_splt_entry *entries; +}; + +struct spng_time +{ + uint16_t year; + uint8_t month; + uint8_t day; + uint8_t hour; + uint8_t minute; + uint8_t second; +}; + +struct spng_offs +{ + int32_t x, y; + uint8_t unit_specifier; +}; + +struct spng_exif +{ + size_t length; + char *data; +}; + +struct spng_chunk +{ + size_t offset; + uint32_t length; + uint8_t type[4]; + uint32_t crc; +}; + +enum spng_location +{ + SPNG_AFTER_IHDR = 1, + SPNG_AFTER_PLTE = 2, + SPNG_AFTER_IDAT = 8, +}; + +struct spng_unknown_chunk +{ + uint8_t type[4]; + size_t length; + void *data; + enum spng_location location; +}; + +enum spng_option +{ + SPNG_KEEP_UNKNOWN_CHUNKS = 1, + + SPNG_IMG_COMPRESSION_LEVEL, + SPNG_IMG_WINDOW_BITS, + SPNG_IMG_MEM_LEVEL, + SPNG_IMG_COMPRESSION_STRATEGY, + + SPNG_TEXT_COMPRESSION_LEVEL, + SPNG_TEXT_WINDOW_BITS, + SPNG_TEXT_MEM_LEVEL, + SPNG_TEXT_COMPRESSION_STRATEGY, + + SPNG_FILTER_CHOICE, + SPNG_CHUNK_COUNT_LIMIT, + SPNG_ENCODE_TO_BUFFER, +}; + +typedef void* SPNG_CDECL spng_malloc_fn(size_t size); +typedef void* SPNG_CDECL spng_realloc_fn(void* ptr, size_t size); +typedef void* SPNG_CDECL spng_calloc_fn(size_t count, size_t size); +typedef void SPNG_CDECL spng_free_fn(void* ptr); + +struct spng_alloc +{ + spng_malloc_fn *malloc_fn; + spng_realloc_fn *realloc_fn; + spng_calloc_fn *calloc_fn; + spng_free_fn *free_fn; +}; + +struct spng_row_info +{ + uint32_t scanline_idx; + uint32_t row_num; /* deinterlaced row index */ + int pass; + uint8_t filter; +}; + +typedef struct spng_ctx spng_ctx; + +typedef int spng_read_fn(spng_ctx *ctx, void *user, void *dest, size_t length); +typedef int spng_write_fn(spng_ctx *ctx, void *user, void *src, size_t length); + +typedef int spng_rw_fn(spng_ctx *ctx, void *user, void *dst_src, size_t length); + +SPNG_API spng_ctx *spng_ctx_new(int flags); +SPNG_API spng_ctx *spng_ctx_new2(struct spng_alloc *alloc, int flags); +SPNG_API void spng_ctx_free(spng_ctx *ctx); + +SPNG_API int spng_set_png_buffer(spng_ctx *ctx, const void *buf, size_t size); +SPNG_API int spng_set_png_stream(spng_ctx *ctx, spng_rw_fn *rw_func, void *user); +SPNG_API int spng_set_png_file(spng_ctx *ctx, FILE *file); + +SPNG_API void *spng_get_png_buffer(spng_ctx *ctx, size_t *len, int *error); + +SPNG_API int spng_set_image_limits(spng_ctx *ctx, uint32_t width, uint32_t height); +SPNG_API int spng_get_image_limits(spng_ctx *ctx, uint32_t *width, uint32_t *height); + +SPNG_API int spng_set_chunk_limits(spng_ctx *ctx, size_t chunk_size, size_t cache_size); +SPNG_API int spng_get_chunk_limits(spng_ctx *ctx, size_t *chunk_size, size_t *cache_size); + +SPNG_API int spng_set_crc_action(spng_ctx *ctx, int critical, int ancillary); + +SPNG_API int spng_set_option(spng_ctx *ctx, enum spng_option option, int value); +SPNG_API int spng_get_option(spng_ctx *ctx, enum spng_option option, int *value); + +SPNG_API int spng_decoded_image_size(spng_ctx *ctx, int fmt, size_t *len); + +/* Decode */ +SPNG_API int spng_decode_image(spng_ctx *ctx, void *out, size_t len, int fmt, int flags); + +/* Progressive decode */ +SPNG_API int spng_decode_scanline(spng_ctx *ctx, void *out, size_t len); +SPNG_API int spng_decode_row(spng_ctx *ctx, void *out, size_t len); +SPNG_API int spng_decode_chunks(spng_ctx *ctx); + +/* Encode/decode */ +SPNG_API int spng_get_row_info(spng_ctx *ctx, struct spng_row_info *row_info); + +/* Encode */ +SPNG_API int spng_encode_image(spng_ctx *ctx, const void *img, size_t len, int fmt, int flags); + +/* Progressive encode */ +SPNG_API int spng_encode_scanline(spng_ctx *ctx, const void *scanline, size_t len); +SPNG_API int spng_encode_row(spng_ctx *ctx, const void *row, size_t len); +SPNG_API int spng_encode_chunks(spng_ctx *ctx); + +SPNG_API int spng_get_ihdr(spng_ctx *ctx, struct spng_ihdr *ihdr); +SPNG_API int spng_get_plte(spng_ctx *ctx, struct spng_plte *plte); +SPNG_API int spng_get_trns(spng_ctx *ctx, struct spng_trns *trns); +SPNG_API int spng_get_chrm(spng_ctx *ctx, struct spng_chrm *chrm); +SPNG_API int spng_get_chrm_int(spng_ctx *ctx, struct spng_chrm_int *chrm_int); +SPNG_API int spng_get_gama(spng_ctx *ctx, double *gamma); +SPNG_API int spng_get_gama_int(spng_ctx *ctx, uint32_t *gama_int); +SPNG_API int spng_get_iccp(spng_ctx *ctx, struct spng_iccp *iccp); +SPNG_API int spng_get_sbit(spng_ctx *ctx, struct spng_sbit *sbit); +SPNG_API int spng_get_srgb(spng_ctx *ctx, uint8_t *rendering_intent); +SPNG_API int spng_get_text(spng_ctx *ctx, struct spng_text *text, uint32_t *n_text); +SPNG_API int spng_get_bkgd(spng_ctx *ctx, struct spng_bkgd *bkgd); +SPNG_API int spng_get_hist(spng_ctx *ctx, struct spng_hist *hist); +SPNG_API int spng_get_phys(spng_ctx *ctx, struct spng_phys *phys); +SPNG_API int spng_get_splt(spng_ctx *ctx, struct spng_splt *splt, uint32_t *n_splt); +SPNG_API int spng_get_time(spng_ctx *ctx, struct spng_time *time); +SPNG_API int spng_get_unknown_chunks(spng_ctx *ctx, struct spng_unknown_chunk *chunks, uint32_t *n_chunks); + +/* Official extensions */ +SPNG_API int spng_get_offs(spng_ctx *ctx, struct spng_offs *offs); +SPNG_API int spng_get_exif(spng_ctx *ctx, struct spng_exif *exif); + + +SPNG_API int spng_set_ihdr(spng_ctx *ctx, struct spng_ihdr *ihdr); +SPNG_API int spng_set_plte(spng_ctx *ctx, struct spng_plte *plte); +SPNG_API int spng_set_trns(spng_ctx *ctx, struct spng_trns *trns); +SPNG_API int spng_set_chrm(spng_ctx *ctx, struct spng_chrm *chrm); +SPNG_API int spng_set_chrm_int(spng_ctx *ctx, struct spng_chrm_int *chrm_int); +SPNG_API int spng_set_gama(spng_ctx *ctx, double gamma); +SPNG_API int spng_set_gama_int(spng_ctx *ctx, uint32_t gamma); +SPNG_API int spng_set_iccp(spng_ctx *ctx, struct spng_iccp *iccp); +SPNG_API int spng_set_sbit(spng_ctx *ctx, struct spng_sbit *sbit); +SPNG_API int spng_set_srgb(spng_ctx *ctx, uint8_t rendering_intent); +SPNG_API int spng_set_text(spng_ctx *ctx, struct spng_text *text, uint32_t n_text); +SPNG_API int spng_set_bkgd(spng_ctx *ctx, struct spng_bkgd *bkgd); +SPNG_API int spng_set_hist(spng_ctx *ctx, struct spng_hist *hist); +SPNG_API int spng_set_phys(spng_ctx *ctx, struct spng_phys *phys); +SPNG_API int spng_set_splt(spng_ctx *ctx, struct spng_splt *splt, uint32_t n_splt); +SPNG_API int spng_set_time(spng_ctx *ctx, struct spng_time *time); +SPNG_API int spng_set_unknown_chunks(spng_ctx *ctx, struct spng_unknown_chunk *chunks, uint32_t n_chunks); + +/* Official extensions */ +SPNG_API int spng_set_offs(spng_ctx *ctx, struct spng_offs *offs); +SPNG_API int spng_set_exif(spng_ctx *ctx, struct spng_exif *exif); + + +SPNG_API const char *spng_strerror(int err); +SPNG_API const char *spng_version_string(void); + +#ifdef __cplusplus +} +#endif + +#endif /* SPNG_H */ diff --git a/tools/assets/n64texconv/src/LICENSE b/tools/assets/n64texconv/src/LICENSE new file mode 100644 index 0000000000..3c68e6a959 --- /dev/null +++ b/tools/assets/n64texconv/src/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 ZeldaRET + +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/assets/n64texconv/src/app/main.c b/tools/assets/n64texconv/src/app/main.c new file mode 100644 index 0000000000..9829c512c1 --- /dev/null +++ b/tools/assets/n64texconv/src/app/main.c @@ -0,0 +1,137 @@ +/* SPDX-FileCopyrightText: Copyright (C) 2025 ZeldaRET */ +/* SPDX-License-Identifier: MIT */ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define NORETURN __attribute__((noreturn)) +#define ARRLEN(a) (sizeof(a) / sizeof((a)[0])) +#define strequ(s1, s2) (strcmp((s1), (s2)) == 0) + +#include "../libn64texconv/n64texconv.h" +#include "../libn64texconv/jfif.h" + +static bool +is_regular_file(const char *path) +{ + struct stat sb; + stat(path, &sb); + return S_ISREG(sb.st_mode); +} + +static NORETURN void +usage(const char *progname) +{ + fprintf(stderr, + "n64texconv: Convert an input png to N64 data in the desired format.\n" + "Usage: %s [pal_out.c]\n" + " Valid types: i4 / i8 / ci4 / ci8 / ia4 / ia8 / ia16 / rgba16 / rgba32 / JFIF\n", + progname); + exit(EXIT_FAILURE); +} + +static const struct fmt_info { + const char *name; + int fmt; + int siz; +} fmt_map[] = { + // clang-format off + { "i4", G_IM_FMT_I, G_IM_SIZ_4b, }, + { "i8", G_IM_FMT_I, G_IM_SIZ_8b, }, + { "ci4", G_IM_FMT_CI, G_IM_SIZ_4b, }, + { "ci8", G_IM_FMT_CI, G_IM_SIZ_8b, }, + { "ia4", G_IM_FMT_IA, G_IM_SIZ_4b, }, + { "ia8", G_IM_FMT_IA, G_IM_SIZ_8b, }, + { "ia16", G_IM_FMT_IA, G_IM_SIZ_16b, }, + { "rgba16", G_IM_FMT_RGBA, G_IM_SIZ_16b, }, + { "rgba32", G_IM_FMT_RGBA, G_IM_SIZ_32b, }, + // clang-format on +}; + +int +main(int argc, char **argv) +{ + const char *progname = argv[0]; + const char *fmt; + const char *array_fmt; + const char *in; + const char *out; + const char *pal_out; + + if (argc < 5) + usage(progname); + + fmt = argv[1]; + array_fmt = argv[2]; + in = argv[3]; + out = argv[4]; + pal_out = (argc > 5) ? argv[5] : NULL; + + unsigned int byte_width = (strequ(array_fmt, "u32") ? 4 : 8); + + if (!is_regular_file(in)) { + fprintf(stderr, "Could not open input file %s\n", in); + return EXIT_FAILURE; + } + + if (strequ(fmt, "JFIF")) { + struct JFIF *jfif = jfif_fromfile(in, JFIF_BUFFER_SIZE); + if (jfif == NULL) { + fprintf(stderr, "Could not open input file %s\n", in); + return EXIT_FAILURE; + } + if (jfif_to_c_file(out, jfif, JFIF_BUFFER_SIZE)) { + fprintf(stderr, "Could not save output C file %s\n", out); + return EXIT_FAILURE; + } + jfif_free(jfif); + } else { + int rv; + const struct fmt_info *fmt_info = NULL; + for (size_t i = 0; i < ARRLEN(fmt_map); i++) { + if (strequ(fmt, fmt_map[i].name)) { + fmt_info = &fmt_map[i]; + break; + } + } + if (fmt_info == NULL) { + fprintf(stderr, "Error: Invalid fmt %s\n", fmt); + return EXIT_FAILURE; + } + + struct n64_image *img = n64texconv_image_from_png(in, fmt_info->fmt, fmt_info->siz, G_IM_FMT_RGBA); + if (img == NULL) { + fprintf(stderr, "Could not open input file %s\n", in); + return EXIT_FAILURE; + } + + if (img->pal != NULL) { + if (pal_out == NULL) { + fprintf(stderr, "Input file %s is color indexed, a palette output C file must be provided.\n", in); + usage(progname); + } + + if (rv = n64texconv_palette_to_c_file(pal_out, img->pal, false, byte_width), rv != 0) { + fprintf(stderr, "Could not save output C file %s (error %d)\n", pal_out, rv); + return EXIT_FAILURE; + } + } + + if (rv = n64texconv_image_to_c_file(out, img, false, false, byte_width), rv != 0) { + fprintf(stderr, "Could not save output C file %s (error %d)\n", out, rv); + return EXIT_FAILURE; + } + + if (img->pal != NULL) + n64texconv_palette_free(img->pal); + n64texconv_image_free(img); + } + + return EXIT_SUCCESS; +} diff --git a/tools/assets/n64texconv/src/libn64texconv/bin2c.c b/tools/assets/n64texconv/src/libn64texconv/bin2c.c new file mode 100644 index 0000000000..c5d9475bbf --- /dev/null +++ b/tools/assets/n64texconv/src/libn64texconv/bin2c.c @@ -0,0 +1,130 @@ +/* SPDX-FileCopyrightText: Copyright (C) 2025 ZeldaRET */ +/* SPDX-License-Identifier: MIT */ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "bin2c.h" +#include "endian.h" + +#define BYTES_PER_ROW 32 +#define LINE_MASK (BYTES_PER_ROW - 1) + +int +bin2c(char **out, size_t *size_out, void *bin, size_t size, size_t pad_to_size, unsigned int byte_width) +{ + assert(out != NULL); + assert(size_out != NULL); + assert(bin != NULL); + + if (byte_width != 1 && byte_width != 2 && byte_width != 4 && byte_width != 8) + return -2; + + size_t end_size = (pad_to_size > size) ? pad_to_size : size; + + if ((end_size & (byte_width - 1)) != 0) + return -3; + + size_t size_out_ = (1 + 1 + 2 * byte_width + 1 + 1) * ((end_size + byte_width - 1) / byte_width) + 2; + char *out_ = malloc(size_out_); + if (out_ == NULL) + return -1; + + char *pos = out_; + bool was_newline = false; + for (size_t p = 0; p < size; p += byte_width) { + size_t rem = byte_width; + if (rem > size - p) // For any remaining unaligned data, rest will be padded with 0 + rem = size - p; + + // Read input + uint64_t d = 0; + memcpy(&d, &((uint8_t *)bin)[p], rem); + + // Byteswap + shift + d = be64toh(d) >> (64 - 8 * byte_width); + + // Write output + was_newline = (((p + byte_width) & LINE_MASK) == 0); + char end = was_newline ? '\n' : ' '; + pos += sprintf(pos, "0x%0*" PRIX64 ",%c", 2 * byte_width, d, end); + } + + for (size_t p = (size + byte_width - 1) & ~(byte_width - 1); p < pad_to_size; p += byte_width) { + was_newline = (((p + byte_width) & LINE_MASK) == 0); + char end = was_newline ? '\n' : ' '; + pos += sprintf(pos, "0x%0*" PRIX64 ",%c", 2 * byte_width, (uint64_t)0, end); + } + + if (!was_newline) + *pos++ = '\n'; + + *pos++ = '\0'; + + *out = out_; + *size_out = size_out_; + return 0; +} + +int +bin2c_file(const char *out_path, void *bin, size_t size, size_t pad_to_size, unsigned int byte_width) +{ + assert(out_path != NULL); + assert(bin != NULL); + + if (byte_width != 1 && byte_width != 2 && byte_width != 4 && byte_width != 8) + return -2; + + size_t end_size = (pad_to_size > size) ? pad_to_size : size; + + if ((end_size & (byte_width - 1)) != 0) + return -3; + + FILE *of = fopen(out_path, "w"); + if (of == NULL) + return -1; + + bool was_newline = false; + for (size_t p = 0; p < size; p += byte_width) { + size_t rem = byte_width; + if (rem > size - p) // For any remaining unaligned data, rest will be padded with 0 + rem = size - p; + + // Read input + uint64_t d = 0; + memcpy(&d, &((uint8_t *)bin)[p], rem); + + // Byteswap + shift + d = be64toh(d) >> (64 - 8 * byte_width); + + // Write output + was_newline = (((p + byte_width) & LINE_MASK) == 0); + char end = was_newline ? '\n' : ' '; + + if (fprintf(of, "0x%0*" PRIX64 ",%c", 2 * byte_width, d, end) < 0) + goto error_post_open; + } + + for (size_t p = (size + byte_width - 1) & ~(byte_width - 1); p < pad_to_size; p += byte_width) { + was_newline = (((p + byte_width) & LINE_MASK) == 0); + char end = was_newline ? '\n' : ' '; + if (fprintf(of, "0x%0*" PRIX64 ",%c", 2 * byte_width, (uint64_t)0, end) < 0) + goto error_post_open; + } + + if (!was_newline) + fputs("\n", of); + + fclose(of); + return 0; +error_post_open: + fclose(of); + if (remove(out_path) != 0) + fprintf(stderr, "error calling remove(\"%s\"): %s", out_path, strerror(errno)); + return -4; +} diff --git a/tools/assets/n64texconv/src/libn64texconv/bin2c.h b/tools/assets/n64texconv/src/libn64texconv/bin2c.h new file mode 100644 index 0000000000..f34a65baf4 --- /dev/null +++ b/tools/assets/n64texconv/src/libn64texconv/bin2c.h @@ -0,0 +1,14 @@ +/* SPDX-FileCopyrightText: Copyright (C) 2025 ZeldaRET */ +/* SPDX-License-Identifier: MIT */ +#ifndef BIN2C_H +#define BIN2C_H + +#include + +int +bin2c(char **out, size_t *size_out, void *bin, size_t size, size_t pad_to_size, unsigned int byte_width); + +int +bin2c_file(const char *out_path, void *bin, size_t size, size_t pad_to_size, unsigned int byte_width); + +#endif diff --git a/tools/assets/n64texconv/src/libn64texconv/endian.h b/tools/assets/n64texconv/src/libn64texconv/endian.h new file mode 100644 index 0000000000..e457b8664d --- /dev/null +++ b/tools/assets/n64texconv/src/libn64texconv/endian.h @@ -0,0 +1,69 @@ +/* SPDX-FileCopyrightText: Copyright (C) 2025 ZeldaRET */ +/* SPDX-License-Identifier: MIT */ +#ifndef ENDIAN_H +#define ENDIAN_H + +#if defined(__linux__) || defined(__CYGWIN__) +#include +#elif defined(__APPLE__) +#include + +#define htobe16(x) OSSwapHostToBigInt16(x) +#define htole16(x) OSSwapHostToLittleInt16(x) +#define be16toh(x) OSSwapBigToHostInt16(x) +#define le16toh(x) OSSwapLittleToHostInt16(x) + +#define htobe32(x) OSSwapHostToBigInt32(x) +#define htole32(x) OSSwapHostToLittleInt32(x) +#define be32toh(x) OSSwapBigToHostInt32(x) +#define le32toh(x) OSSwapLittleToHostInt32(x) + +#define htobe64(x) OSSwapHostToBigInt64(x) +#define htole64(x) OSSwapHostToLittleInt64(x) +#define be64toh(x) OSSwapBigToHostInt64(x) +#define le64toh(x) OSSwapLittleToHostInt64(x) +#else + +#if !defined(__BYTE_ORDER__) +#error "No endian define provided by compiler" +#endif + +#if (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) + +#define htobe16(x) (x) +#define htole16(x) __builtin_bswap16(x) +#define be16toh(x) (x) +#define le16toh(x) __builtin_bswap16(x) + +#define htobe32(x) (x) +#define htole32(x) __builtin_bswap32(x) +#define be32toh(x) (x) +#define le32toh(x) __builtin_bswap32(x) + +#define htobe64(x) (x) +#define htole64(x) __builtin_bswap64(x) +#define be64toh(x) (x) +#define le64toh(x) __builtin_bswap64(x) + +#else + +#define htobe16(x) __builtin_bswap16(x) +#define htole16(x) (x) +#define be16toh(x) __builtin_bswap16(x) +#define le16toh(x) (x) + +#define htobe32(x) __builtin_bswap32(x) +#define htole32(x) (x) +#define be32toh(x) __builtin_bswap32(x) +#define le32toh(x) (x) + +#define htobe64(x) __builtin_bswap64(x) +#define htole64(x) (x) +#define be64toh(x) __builtin_bswap64(x) +#define le64toh(x) (x) + +#endif + +#endif + +#endif diff --git a/tools/assets/n64texconv/src/libn64texconv/jfif.c b/tools/assets/n64texconv/src/libn64texconv/jfif.c new file mode 100644 index 0000000000..645614c890 --- /dev/null +++ b/tools/assets/n64texconv/src/libn64texconv/jfif.c @@ -0,0 +1,76 @@ +/* SPDX-FileCopyrightText: Copyright (C) 2025 ZeldaRET */ +/* SPDX-License-Identifier: MIT */ +#include +#include +#include +#include +#include + +#include "endian.h" +#include "bin2c.h" +#include "jfif.h" + +struct JFIF * +jfif_fromfile(const char *path, size_t max_size) +{ + assert(path != NULL); + FILE *f = fopen(path, "rb"); + if (f == NULL) + return NULL; + + fseek(f, 0, SEEK_END); + size_t data_size = ftell(f); + fseek(f, 0, SEEK_SET); + + struct JFIF *jfif = malloc(((sizeof(struct JFIF) + 3) & ~3) + data_size); + if (jfif != NULL) { + jfif->data = (void *)(jfif + 1); + jfif->data_size = data_size; + + if (fread(jfif->data, 1, data_size, f) != data_size) { + free(jfif); + jfif = NULL; + } else { + uint8_t *data8 = jfif->data; + uint16_t *data16 = jfif->data; + uint32_t *data32 = jfif->data; + + if (be32toh(data32[0]) != 0xFFD8FFE0) + printf("[Warning] Missing JPEG marker\n"); + if (data8[6] != 'J' || data8[7] != 'F' || data8[8] != 'I' || data8[9] != 'F') + printf("[Warning] Not JFIF\n"); + if (data8[11] != 0x01 || data8[12] != 0x01) + printf("[Warning] Not JFIF version 1.01\n"); + if (be16toh(data16[10]) != 0xFFDB) + printf("[Warning] Data before DQT\n"); + if (jfif->data_size > max_size) + printf("[Warning] JFIF image too large\n"); + } + } + + fclose(f); + return jfif; +} + +void +jfif_free(struct JFIF *jfif) +{ + assert(jfif != NULL); + free(jfif); +} + +int +jfif_to_c(char **out, size_t *size_out, struct JFIF *jfif, size_t pad_to_size) +{ + assert(out != NULL); + assert(size_out != NULL); + return bin2c(out, size_out, jfif->data, jfif->data_size, pad_to_size, 8); +} + +int +jfif_to_c_file(const char *out_path, struct JFIF *jfif, size_t pad_to_size) +{ + assert(out_path != NULL); + assert(jfif != NULL); + return bin2c_file(out_path, jfif->data, jfif->data_size, pad_to_size, 8); +} diff --git a/tools/assets/n64texconv/src/libn64texconv/jfif.h b/tools/assets/n64texconv/src/libn64texconv/jfif.h new file mode 100644 index 0000000000..d094d54788 --- /dev/null +++ b/tools/assets/n64texconv/src/libn64texconv/jfif.h @@ -0,0 +1,28 @@ +/* SPDX-FileCopyrightText: Copyright (C) 2025 ZeldaRET */ +/* SPDX-License-Identifier: MIT */ +#ifndef JFIF_H +#define JFIF_H + +#include +#include + +struct JFIF { + void *data; + size_t data_size; +}; + +#define JFIF_BUFFER_SIZE (320 * 240 * sizeof(uint16_t)) + +struct JFIF * +jfif_fromfile(const char *path, size_t max_size); + +void +jfif_free(struct JFIF *jfif); + +int +jfif_to_c(char **out, size_t *size_out, struct JFIF *jfif, size_t pad_to_size); + +int +jfif_to_c_file(const char *out_path, struct JFIF *jfif, size_t pad_to_size); + +#endif diff --git a/tools/assets/n64texconv/src/libn64texconv/n64texconv.c b/tools/assets/n64texconv/src/libn64texconv/n64texconv.c new file mode 100644 index 0000000000..06caf36f60 --- /dev/null +++ b/tools/assets/n64texconv/src/libn64texconv/n64texconv.c @@ -0,0 +1,1302 @@ +/* SPDX-FileCopyrightText: Copyright (C) 2025 ZeldaRET */ +/* SPDX-License-Identifier: MIT */ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "spng.h" +#include "libimagequant.h" +#include "endian.h" +#include "bin2c.h" +#include "n64texconv.h" + +// ******************************************************************************************************************** +// Helpers +// ******************************************************************************************************************** + +#define UNUSED __attribute__((unused)) + +#define ALIGN8(x) (((x) + 7) & ~7) + +#define ABS(x) (((x) < 0) ? -(x) : (x)) + +static uint8_t +texel_to_greyscale(uint8_t r, uint8_t g, uint8_t b) +{ + // Approximately (0.2126729, 0.7151522, 0.0721750) in 1.8 fixed point + // Same as Blender: + // https://github.com/blender/blender/blob/594f47ecd2d5367ca936cf6fc6ec8168c2b360d0/intern/cycles/render/shader.cpp#L387 + return (r * 54 + g * 183 + b * 19 + 128) / 256; +} + +UNUSED static void +texels_to_greyscale(struct color *out, struct color *in, size_t ntexels, bool alpha) +{ + assert(out != NULL); + assert(in != NULL); + + for (size_t i = 0; i < ntexels; i++) { + struct color color = in[i]; + uint8_t grey = texel_to_greyscale(color.r, color.g, color.b); + uint8_t a = color.a; + out[i].r = grey; + out[i].g = grey; + out[i].b = grey; + out[i].a = (alpha) ? a : grey; + } +} + +static void +palette_dim(size_t count, size_t *width, size_t *height) +{ + assert(width != NULL); + assert(height != NULL); + + size_t best_width = count; + size_t best_height = 1; + size_t best_diff = count - 1; + + if (count >= 4) { + // Find a factorization of count for which the two factors are close to equal, and width >= height. + // This makes the output palette image approximately square. + for (size_t i = 2; i <= (size_t)sqrtf(count); i++) { + size_t div = count / i; + + size_t new_diff = ABS((signed)(div - i)); + if (div * i == count && new_diff < best_diff) { + // (div, i) is a factorization and is closer to a square than before + best_width = div; + best_height = i; + best_diff = new_diff; + } + } + } + *width = best_width; + *height = best_height; +} + +static void +n64texconv_quantize(uint8_t *out_indices, struct color *out_pal, size_t *out_pal_count, struct color *texels, + size_t width, size_t height, unsigned int max_colors, float dither_level) +{ + assert(out_indices != NULL); + assert(out_pal != NULL); + assert(out_pal_count != NULL); + assert(texels != NULL); + + // Set options + liq_attr *attr = liq_attr_create(); + liq_set_max_colors(attr, max_colors); + + // Quantize + liq_image *img = liq_image_create_rgba(attr, (void *)texels, width, height, 0.0); + liq_result *result; + liq_error err = liq_image_quantize(img, attr, &result); + assert(err == LIQ_OK); + + // Write output bitmap + liq_set_dithering_level(result, dither_level); + liq_write_remapped_image(result, img, (void *)out_indices, width * height); + + // Write output palette + const liq_palette *pal = liq_get_palette(result); + assert(pal->count <= max_colors); + *out_pal_count = pal->count; + memcpy(out_pal, pal->entries, pal->count * 4); + + // Cleanup + liq_result_destroy(result); + liq_image_destroy(img); + liq_attr_destroy(attr); +} + +/** + * out_indices, out_pal, out_pal_count, texels, widths, heights are all arrays of size num_images + * texels[i] and out_indices[i] are arrays of size widths[i] * heights[i] + */ +UNUSED static int +n64texconv_quantize_shared(uint8_t **out_indices, struct color *out_pal, size_t *out_pal_count, struct color **texels, + size_t *widths, size_t *heights, size_t num_images, unsigned int max_colors, + float dither_level) +{ + assert(out_indices != NULL); + assert(out_pal != NULL); + assert(out_pal_count != NULL); + assert(texels != NULL); + assert(widths != NULL); + assert(heights != NULL); + + int rv = 0; + + // Set options + liq_attr *attr = liq_attr_create(); + liq_set_max_colors(attr, max_colors); + + // Create histogram + liq_histogram *hist = liq_histogram_create(attr); + + // Add images to histogram + liq_image *images[num_images]; + for (size_t i = 0; i < num_images; i++) { + images[i] = liq_image_create_rgba(attr, (void *)texels[i], widths[i], heights[i], 0); + liq_histogram_add_image(hist, attr, images[i]); + } + + // Simultaneous quantization + liq_result *result; + liq_error err = liq_histogram_quantize(hist, attr, &result); + if (err != LIQ_OK) { + rv = -1; + goto exit; + } + + // Remap images + liq_set_dithering_level(result, dither_level); + for (size_t i = 0; i < num_images; i++) { + liq_write_remapped_image(result, images[i], (void *)out_indices[i], widths[i] * heights[i]); + } + + // Write output palette + const liq_palette *pal = liq_get_palette(result); + assert(pal->count <= max_colors); + *out_pal_count = pal->count; + memcpy(out_pal, pal->entries, pal->count * 4); + + // Cleanup + liq_result_destroy(result); +exit: + for (size_t i = 0; i < num_images; i++) { + liq_image_destroy(images[i]); + } + liq_histogram_destroy(hist); + liq_attr_destroy(attr); + return rv; +} + + + +// ******************************************************************************************************************** +// Format Packing and Unpacking +// ******************************************************************************************************************** + +#define UNPACK_FUNC(fmt_name) static int fmt_name##_unpack(struct color *out, void *in, size_t ntexels) + +#define UNPACK_CI_FUNC(fmt_name) static int fmt_name##_unpack(uint8_t *out, void *in, size_t ntexels, size_t npal) + +#define PACK_FUNC(fmt_name) static int fmt_name##_pack(void *out, struct color *in, size_t ntexels) + +#define PACK_CI_FUNC(fmt_name) static int fmt_name##_pack(void *out, uint8_t *in, size_t ntexels, size_t npal) + +/* RGBA16 */ + +UNPACK_FUNC(rgba16) +{ + uint16_t *in16 = in; + + for (size_t n = 0; n < ntexels; n++) { + uint16_t c = be16toh(in16[n]); + uint8_t r = (c >> 11) & 0b11111; + uint8_t g = (c >> 6) & 0b11111; + uint8_t b = (c >> 1) & 0b11111; + uint8_t a = (c >> 0) & 1; + out[n].r = (r << 3) | (r >> 2); + out[n].g = (g << 3) | (g >> 2); + out[n].b = (b << 3) | (b >> 2); + out[n].a = 255 * a; + } + return 0; +} + +PACK_FUNC(rgba16) +{ + uint16_t *out16 = out; + + for (size_t n = 0; n < ntexels; n++) { + uint8_t r = (in[n].r >> 3) & 0b11111; + uint8_t g = (in[n].g >> 3) & 0b11111; + uint8_t b = (in[n].b >> 3) & 0b11111; + uint8_t a = in[n].a != 0; + out16[n] = htobe16((r << 11) | (g << 6) | (b << 1) | a); + } + return 0; +} + +/* RGBA32 */ + +UNPACK_FUNC(rgba32) +{ + uint32_t *in32 = in; + + for (size_t n = 0; n < ntexels; n++) { + uint32_t c = be32toh(in32[n]); + out[n].r = (c >> 24) & 0xFF; + out[n].g = (c >> 16) & 0xFF; + out[n].b = (c >> 8) & 0xFF; + out[n].a = (c >> 0) & 0xFF; + } + return 0; +} + +PACK_FUNC(rgba32) +{ + uint32_t *out32 = out; + + for (size_t n = 0; n < ntexels; n++) { + out32[n] = htobe32((in[n].r << 24) | (in[n].g << 16) | (in[n].b << 8) | in[n].a); + } + return 0; +} + +/* CI4 */ + +UNPACK_CI_FUNC(ci4) +{ + uint8_t *in8 = in; + + unsigned sft = 4; + for (size_t n = 0; n < ntexels; n++, sft ^= 4) { + uint8_t c = (in8[n >> 1] >> sft) & 0xF; + if (!(c < npal)) + return -1; // palette too small for image data + out[n] = c; + } + return 0; +} + +PACK_CI_FUNC(ci4) +{ + uint8_t *out8 = out; + + unsigned sft = 4; + for (size_t n = 0; n < ntexels; n++, sft ^= 4) { + uint8_t c = in[n]; + if (!(c < npal)) + return -1; // palette too small for image data + if (sft == 4) + out8[n >> 1] = 0; + out8[n >> 1] |= c << sft; + } + return 0; +} + +/* CI8 */ + +UNPACK_CI_FUNC(ci8) +{ + uint8_t *in8 = in; + + for (size_t n = 0; n < ntexels; n++) { + uint8_t c = in8[n] & 0xFF; + if (!(c < npal)) + return -1; // palette too small for image data + out[n] = c; + } + return 0; +} + +PACK_CI_FUNC(ci8) +{ + uint8_t *out8 = out; + + for (size_t n = 0; n < ntexels; n++) { + uint8_t c = in[n]; + if (!(c < npal)) + return -1; // palette too small for image data + out8[n] = c; + } + return 0; +} + +/* IA4 */ + +UNPACK_FUNC(ia4) +{ + uint8_t *in8 = in; + + unsigned sft = 4; + for (size_t n = 0; n < ntexels; n++, sft ^= 4) { + uint8_t c = (in8[n >> 1] >> sft) & 0xF; + uint8_t i = c & 0b1110; + uint8_t a = c & 0b0001; + i = (i << 4) | (i << 1) | (i >> 2); + a = 255 * a; + out[n].r = i; + out[n].g = i; + out[n].b = i; + out[n].a = a; + } + return 0; +} + +PACK_FUNC(ia4) +{ + uint8_t *out8 = out; + + unsigned sft = 4; + for (size_t n = 0; n < ntexels; n++, sft ^= 4) { + uint8_t g = texel_to_greyscale(in[n].r, in[n].g, in[n].b); + uint8_t i = (g >> 5) & 0b111; + uint8_t a = in[n].a != 0; + if (sft == 4) + out8[n >> 1] = 0; + out8[n >> 1] |= ((i << 1) | a) << sft; + } + return 0; +} + +/* IA8 */ + +UNPACK_FUNC(ia8) +{ + uint8_t *in8 = in; + + for (size_t n = 0; n < ntexels; n++) { + uint8_t c = in8[n]; + uint8_t i = (c >> 4) & 0xF; + uint8_t a = (c >> 0) & 0xF; + i = (i << 4) | i; + a = (a << 4) | a; + out[n].r = i; + out[n].g = i; + out[n].b = i; + out[n].a = a; + } + return 0; +} + +PACK_FUNC(ia8) +{ + uint8_t *out8 = out; + + for (size_t n = 0; n < ntexels; n++) { + uint8_t g = texel_to_greyscale(in[n].r, in[n].g, in[n].b); + uint8_t i = (g >> 4) & 0xF; + uint8_t a = (in[n].a >> 4) & 0xF; + out8[n] = (i << 4) | a; + } + return 0; +} + +/* IA16 */ + +UNPACK_FUNC(ia16) +{ + uint16_t *in16 = in; + + for (size_t n = 0; n < ntexels; n++) { + uint16_t c = be16toh(in16[n]); + uint8_t i = (c >> 8) & 0xFF; + uint8_t a = (c >> 0) & 0xFF; + out[n].r = i; + out[n].g = i; + out[n].b = i; + out[n].a = a; + } + return 0; +} + +PACK_FUNC(ia16) +{ + uint16_t *out16 = out; + + for (size_t n = 0; n < ntexels; n++) { + uint8_t i = texel_to_greyscale(in[n].r, in[n].g, in[n].b); + uint8_t a = in[n].a; + out16[n] = htobe16((i << 8) | a); + } + return 0; +} + +/* I4 */ + +UNPACK_FUNC(i4) +{ + uint8_t *in8 = in; + + unsigned sft = 4; + for (size_t n = 0; n < ntexels; n++, sft ^= 4) { + uint8_t i = (in8[n >> 1] >> sft) & 0xF; + i = (i << 4) | i; + out[n].r = i; + out[n].g = i; + out[n].b = i; + out[n].a = i; + } + return 0; +} + +PACK_FUNC(i4) +{ + uint8_t *out8 = out; + + unsigned sft = 4; + for (size_t n = 0; n < ntexels; n++, sft ^= 4) { + uint8_t g = texel_to_greyscale(in[n].r, in[n].g, in[n].b); + uint8_t i = (g >> 4) & 0xF; + if (sft == 4) + out8[n >> 1] = 0; + out8[n >> 1] |= i << sft; + } + return 0; +} + +/* I8 */ + +UNPACK_FUNC(i8) +{ + uint8_t *in8 = in; + + for (size_t n = 0; n < ntexels; n++) { + uint8_t i = in8[n]; + out[n].r = i; + out[n].g = i; + out[n].b = i; + out[n].a = i; + } + return 0; +} + +PACK_FUNC(i8) +{ + uint8_t *out8 = out; + + for (size_t n = 0; n < ntexels; n++) { + uint8_t i = texel_to_greyscale(in[n].r, in[n].g, in[n].b); + out8[n] = i; + } + return 0; +} + +struct texel_layout { + const char *name; + union { + int (*pack)(void *out, struct color *in, size_t ntexels); + int (*pack_ci)(void *out, uint8_t *in, size_t ntexels, size_t npal); + }; + union { + int (*unpack)(struct color *out, void *in, size_t ntexels); + int (*unpack_ci)(uint8_t *out, void *in, size_t ntexels, size_t npal); + }; +}; + +#define FMT_SIZ(fmt, siz) (((fmt) << 2) | (siz)) +struct texel_layout texel_layouts[32] = { + [FMT_SIZ(G_IM_FMT_RGBA, G_IM_SIZ_16b)] = { "rgba16", .pack = rgba16_pack, .unpack = rgba16_unpack, }, + [FMT_SIZ(G_IM_FMT_RGBA, G_IM_SIZ_32b)] = { "rgba32", .pack = rgba32_pack, .unpack = rgba32_unpack, }, + [FMT_SIZ(G_IM_FMT_CI, G_IM_SIZ_4b) ] = { "ci4", .pack_ci = ci4_pack, .unpack_ci = ci4_unpack, }, + [FMT_SIZ(G_IM_FMT_CI, G_IM_SIZ_8b) ] = { "ci8", .pack_ci = ci8_pack, .unpack_ci = ci8_unpack, }, + [FMT_SIZ(G_IM_FMT_IA, G_IM_SIZ_4b) ] = { "ia4", .pack = ia4_pack, .unpack = ia4_unpack, }, + [FMT_SIZ(G_IM_FMT_IA, G_IM_SIZ_8b) ] = { "ia8", .pack = ia8_pack, .unpack = ia8_unpack, }, + [FMT_SIZ(G_IM_FMT_IA, G_IM_SIZ_16b)] = { "ia16", .pack = ia16_pack, .unpack = ia16_unpack, }, + [FMT_SIZ(G_IM_FMT_I, G_IM_SIZ_4b) ] = { "i4", .pack = i4_pack, .unpack = i4_unpack, }, + [FMT_SIZ(G_IM_FMT_I, G_IM_SIZ_8b) ] = { "i8", .pack = i8_pack, .unpack = i8_unpack, }, +}; + +static int +n64texconv_data_sync(struct color *texels, uint8_t *color_indices, size_t ntexels, int fmt, int siz, size_t pal_count) +{ + assert(texels != NULL); + + void *temp = malloc(texel_size_bytes(ntexels, siz)); + if (temp == NULL) + return -1; + + struct texel_layout *layout = &texel_layouts[FMT_SIZ(fmt, siz)]; + assert(layout != NULL); + if (fmt == G_IM_FMT_CI) { + assert(color_indices != NULL); + layout->pack_ci(temp, color_indices, ntexels, pal_count); + layout->unpack_ci(color_indices, temp, ntexels, pal_count); + // TODO update texels from color indices too? + } else { + layout->pack(temp, texels, ntexels); + layout->unpack(texels, temp, ntexels); + } + + free(temp); + return 0; +} + + + +// ******************************************************************************************************************** +// Palette +// ******************************************************************************************************************** + +static int +n64texconv_palette_sync(struct n64_palette *pal) +{ + assert(pal != NULL); + return n64texconv_data_sync(pal->texels, NULL, pal->count, pal->fmt, G_IM_SIZ_16b, 0); +} + +struct n64_palette * +n64texconv_palette_new(size_t count, int fmt) +{ + if (fmt != G_IM_FMT_RGBA && fmt != G_IM_FMT_IA) + return NULL; + + struct n64_palette *pal = malloc(sizeof(struct n64_palette) + count * sizeof(struct color)); + if (pal == NULL) + return NULL; + + pal->texels = (struct color *)(pal + 1); + pal->fmt = fmt; + pal->count = count; + return pal; +} + +void +n64texconv_palette_free(struct n64_palette *pal) +{ + assert(pal != NULL); + free(pal); +} + +struct n64_palette * +n64texconv_palette_copy(struct n64_palette *pal) +{ + assert(pal != NULL); + // Create new palette + struct n64_palette *new_pal = n64texconv_palette_new(pal->count, pal->fmt); + if (new_pal == NULL) + return NULL; + + // Copy texels + memcpy(new_pal->texels, pal->texels, new_pal->count * sizeof(struct color)); + return new_pal; +} + +struct n64_palette * +n64texconv_palette_reformat(struct n64_palette *pal, int fmt) +{ + assert(pal != NULL); + + // If the target format and source format are the same, just copy + if (pal->fmt == fmt) + return n64texconv_palette_copy(pal); + + // Create new palette + struct n64_palette *new_pal = n64texconv_palette_new(pal->count, pal->fmt); + if (new_pal == NULL) + return NULL; + + n64texconv_palette_sync(new_pal); + return new_pal; +} + +struct n64_palette * +n64texconv_palette_from_png(const char *path, int fmt) +{ + assert(path != NULL); + + FILE *png = fopen(path, "rb"); + if (png == NULL) + return NULL; + + spng_ctx *ctx = spng_ctx_new(0); + assert(ctx != NULL); + + int rv; + rv = spng_set_png_file(ctx, png); + assert(rv == 0); + + size_t ntexels; + rv = spng_decoded_image_size(ctx, SPNG_FMT_RGBA8, &ntexels); + assert(rv == 0); + + struct n64_palette *pal = n64texconv_palette_new(ntexels, fmt); + if (pal == NULL) + return NULL; + + rv = spng_decode_image(ctx, (void *)pal->texels, ntexels, SPNG_FMT_RGBA8, 0); + assert(rv == 0); + for (size_t i = 0; i < ntexels; i++) { + pal->texels[i].w = htobe32(pal->texels[i].w); + } + + spng_ctx_free(ctx); + fclose(png); + + rv = n64texconv_palette_sync(pal); + assert(rv == 0); + return pal; +} + +struct n64_palette * +n64texconv_palette_from_bin(void *data, size_t count, int fmt) +{ + assert(data != NULL); + + // Reserve new palette + struct n64_palette *pal = n64texconv_palette_new(count, fmt); + if (pal == NULL) + return NULL; + + // Unpack data + // The format is always valid at this point since the above NULL check + // would be hit if an invalid palette format was passed in. + texel_layouts[FMT_SIZ(fmt, G_IM_SIZ_16b)].unpack(pal->texels, data, count); + return pal; +} + +int +n64texconv_palette_to_png(const char *outpath, struct n64_palette *pal) +{ + assert(outpath != NULL); + assert(pal != NULL); + + // Compute arbitrary dimensions for palette + size_t width, height; + palette_dim(pal->count, &width, &height); + + // Sync data to format + + int rv; + rv = n64texconv_palette_sync(pal); + assert(rv == 0); + + // Write texels + + struct spng_ctx *ctx = spng_ctx_new(SPNG_CTX_ENCODER); + if (ctx == NULL) + return -1; + + FILE *png = fopen(outpath, "wb"); + if (png == NULL) + return -2; + + rv = spng_set_png_file(ctx, png); + assert(rv == 0); + rv = spng_set_image_limits(ctx, width, height); + assert(rv == 0); + struct spng_ihdr ihdr = { + .width = width, + .height = height, + .bit_depth = 8, + .color_type = SPNG_COLOR_TYPE_TRUECOLOR_ALPHA, + .compression_method = 0, + .filter_method = 0, + .interlace_method = 0, + }; + rv = spng_set_ihdr(ctx, &ihdr); + assert(rv == 0); + rv = spng_encode_image(ctx, pal->texels, pal->count * sizeof(struct color), SPNG_FMT_PNG, SPNG_ENCODE_FINALIZE); + assert(rv == 0); + spng_ctx_free(ctx); + + fclose(png); + return 0; +} + +void * +n64texconv_palette_to_bin(struct n64_palette *pal, bool pad_to_8b) +{ + assert(pal != NULL); + + // Prepare output buffer + size_t size_unaligned = texel_size_bytes(pal->count, G_IM_SIZ_16b); + size_t size_aligned = ALIGN8(size_unaligned); + void *out = malloc(size_aligned); + if (out == NULL) + return NULL; + + // Pack into output format + assert(pal->fmt == G_IM_FMT_RGBA || pal->fmt == G_IM_FMT_IA); + texel_layouts[FMT_SIZ(pal->fmt, G_IM_SIZ_16b)].pack(out, pal->texels, pal->count); + + // Pad to 8-byte alignment if requested + if (pad_to_8b && size_aligned != size_unaligned) + memset((uint8_t *)out + size_unaligned, 0, size_aligned - size_unaligned); + + return out; +} + +int +n64texconv_palette_to_c(char **out, size_t *size_out, struct n64_palette *pal, bool pad_to_8b, unsigned int byte_width) +{ + assert(out != NULL); + assert(size_out != NULL); + assert(pal != NULL); + + size_t nbytes = texel_size_bytes(pal->count, G_IM_SIZ_16b); + void *bin = n64texconv_palette_to_bin(pal, pad_to_8b); + if (bin == NULL) + return -1; + nbytes = pad_to_8b ? ALIGN8(nbytes) : nbytes; + int rv = bin2c(out, size_out, bin, nbytes, 0, byte_width); + free(bin); + return rv; +} + +int +n64texconv_palette_to_c_file(const char *out_path, struct n64_palette *pal, bool pad_to_8b, unsigned int byte_width) +{ + assert(out_path != NULL); + assert(pal != NULL); + + size_t nbytes = texel_size_bytes(pal->count, G_IM_SIZ_16b); + void *bin = n64texconv_palette_to_bin(pal, pad_to_8b); + if (bin == NULL) + return -1; + nbytes = pad_to_8b ? ALIGN8(nbytes) : nbytes; + int rv = bin2c_file(out_path, bin, nbytes, 0, byte_width); + free(bin); + return rv; +} + + + +// ******************************************************************************************************************** +// Image +// ******************************************************************************************************************** + +static int +n64texconv_image_sync(struct n64_image *img) +{ + assert(img != NULL); + return n64texconv_data_sync(img->texels, img->color_indices, img->width * img->height, img->fmt, img->siz, + (img->pal != NULL) ? img->pal->count : 0); +} + +struct n64_image * +n64texconv_image_new(size_t width, size_t height, int fmt, int siz, struct n64_palette *pal) +{ + // TODO if fmt is CI, assert(pal != NULL) ? + if (fmt >= FMT_MAX || siz >= SIZ_MAX) + return NULL; + + size_t ntexels = width * height; + struct n64_image *img = malloc(sizeof(struct n64_image) + ntexels * (sizeof(struct color) + sizeof(uint8_t))); + if (img == NULL) + return NULL; + + struct color *texels = (void *)((uint8_t *)img + sizeof(struct n64_image)); + uint8_t *color_indices = (fmt == G_IM_FMT_CI) ? (uint8_t *)(texels + ntexels) : NULL; + + img->width = width; + img->height = height; + img->fmt = fmt; + img->siz = siz; + img->pal = pal; + img->texels = texels; + img->color_indices = color_indices; + return img; +} + +void +n64texconv_image_free(struct n64_image *img) +{ + assert(img != NULL); + free(img); +} + +struct n64_image * +n64texconv_image_copy(struct n64_image *img) +{ + if (img == NULL) + return NULL; + + // Create new image + struct n64_image *new_img = n64texconv_image_new(img->width, img->height, img->fmt, img->siz, img->pal); + if (new_img == NULL) + return NULL; + + // Copy texels/index data + size_t ntexels = new_img->width * new_img->height; + memcpy(new_img->texels, img->texels, ntexels * sizeof(struct color)); + if (img->fmt == G_IM_FMT_CI) // == new_img->fmt + memcpy(new_img->color_indices, img->color_indices, ntexels * sizeof(uint8_t)); + return new_img; +} + +/** + * Reads in the png image at `path`. + * + * For all choices of `fmt`, the png data is converted to a common RGBA32 format and stored that way, but may be + * subject to various edits described below. + * + * - If `fmt` is None (default), the best format and texel size are determined from the RGBA32 data, which is then + * processed accordingly (described below). + * + * - If `fmt` is RGBA, the RGBA32 texels are left as-is, with possible reduction if `siz` is 16-bit. + * + * - If `fmt` is greyscale (I or IA), the RGBA32 texels are converted to greyscale. If the texels were already + * greyscale this operation will leave them unaffected. + * + * - If `fmt` is CI and the png is an indexed png, the palette and indices in the png are saved in addition to the + * texels themselves. This is required for a roundtrip conversion of 'bin -> png -> file -> png -> bin' to match. + * + * - If `fmt` is CI and the png is not indexed, the image is quantized and a palette is generated automatically. + */ +struct n64_image * +n64texconv_image_from_png(const char *path, int fmt, int siz, int pal_fmt) +{ + assert(path != NULL); + + FILE *png = fopen(path, "rb"); + if (png == NULL) + return NULL; // Input file not found + + spng_ctx *ctx = spng_ctx_new(0); + int rv = spng_set_png_file(ctx, png); + assert(rv == 0); + + struct spng_ihdr ihdr; + rv = spng_get_ihdr(ctx, &ihdr); + assert(rv == 0); + + size_t nbytes; + rv = spng_decoded_image_size(ctx, SPNG_FMT_RGBA8, &nbytes); + assert(rv == 0); + + uint32_t width = ihdr.width; + uint32_t height = ihdr.height; + + struct n64_image *img = n64texconv_image_new(width, height, fmt, siz, NULL); + if (img == NULL) + goto error_post_open_png; + + struct n64_palette *pal = NULL; + + if (fmt == G_IM_FMT_CI) { + assert(siz == G_IM_SIZ_4b || siz == G_IM_SIZ_8b); + assert(pal_fmt != FMT_NONE); + + size_t max_colors = (siz == G_IM_SIZ_8b) ? 256 : 16; + + if (ihdr.color_type == SPNG_COLOR_TYPE_INDEXED) { + // Input is an indexed png, obtain palette and color indices + struct spng_plte plte; + rv = spng_get_plte(ctx, &plte); + assert(rv == 0); // must have a palette chunk if it's indexed + + // Palette should not have 0 entries + if (plte.n_entries == 0) + goto error_post_create_img; + + // TODO ZAPD always writes 256-color palettes which breaks this, enable it when we can +#if 0 + // Palette must have sufficiently few colors for the target format. If there are too + // many, requantize to the maximum amount for the target format. + if (plte.n_entries > max_colors) + goto requantize; +#endif + + pal = n64texconv_palette_new(plte.n_entries, pal_fmt); + if (pal == NULL) + goto error_post_create_img; + + struct spng_trns trns; + rv = spng_get_trns(ctx, &trns); + if (rv == 0) { + // Read palette transparency from here + assert(trns.n_type3_entries == plte.n_entries); + for (size_t i = 0; i < plte.n_entries; i++) { + pal->texels[i].r = plte.entries[i].red; + pal->texels[i].g = plte.entries[i].green; + pal->texels[i].b = plte.entries[i].blue; + pal->texels[i].a = trns.type3_alpha[i]; + } + } else { + // Treat as opaque if trns is not present + for (size_t i = 0; i < plte.n_entries; i++) { + pal->texels[i].r = plte.entries[i].red; + pal->texels[i].g = plte.entries[i].green; + pal->texels[i].b = plte.entries[i].blue; + pal->texels[i].a = 0xFF; + } + } + + // Fill color indices + size_t nidxbytes; + rv = spng_decoded_image_size(ctx, SPNG_FMT_RAW, &nidxbytes); + assert(rv == 0); + assert(nidxbytes * 4 == nbytes); + rv = spng_decode_image(ctx, (void *)img->color_indices, nidxbytes, SPNG_FMT_RAW, 0); + assert(rv == 0); + } else { + // Input is not an indexed png, quantize and generate palette +#if 0 + requantize: // Input is an indexed png but has too many colors, requantize with new palette +#endif + rv = spng_decode_image(ctx, (void *)img->texels, nbytes, SPNG_FMT_RGBA8, 0); + assert(rv == 0); + + pal = n64texconv_palette_new(max_colors, pal_fmt); + if (pal == NULL) + goto error_post_create_img; + + n64texconv_quantize(img->color_indices, pal->texels, &pal->count, img->texels, width, height, max_colors, + 0.5f); + } + + // Populate texels from color indices and palette + for (size_t i = 0; i < width * height; i++) + img->texels[i] = pal->texels[img->color_indices[i]]; + } else { + rv = spng_decode_image(ctx, (void *)img->texels, nbytes, SPNG_FMT_RGBA8, 0); + assert(rv == 0); + } + spng_ctx_free(ctx); + fclose(png); + + img->pal = pal; + + n64texconv_image_sync(img); + return img; + +error_post_create_img: + n64texconv_image_free(img); +error_post_open_png: + spng_ctx_free(ctx); + fclose(png); + return NULL; +} + +struct n64_image * +n64texconv_image_from_bin(void *data, size_t width, size_t height, int fmt, int siz, struct n64_palette *pal, + bool preswapped) +{ + assert(data != NULL); + assert((fmt == G_IM_FMT_CI && pal != NULL) || (fmt != G_IM_FMT_CI && pal == NULL)); + + size_t ntexels = width * height; + struct n64_image *img = n64texconv_image_new(width, height, fmt, siz, pal); + if (img == NULL) + return NULL; + + if (preswapped) { + // TODO unswap data + } + + struct texel_layout *layout = &texel_layouts[FMT_SIZ(fmt, siz)]; + assert(layout != NULL); + + if (fmt == G_IM_FMT_CI) { + layout->unpack_ci(img->color_indices, data, ntexels, img->pal->count); + for (size_t i = 0; i < ntexels; i++) + img->texels[i].w = pal->texels[img->color_indices[i]].w; + } else { + layout->unpack(img->texels, data, ntexels); + } + return img; +} + +/** + * Given an existing image, create a new image with the new format and size. + * + * This operation is very often a lossy process, do not expect matching round-trips through reformat; depending on the + * target format quality is often lost, sometimes severely. + * + * This process is typically for converting truecolor png to the optimal N64 format if the format was left unspecified + * when reading in the png, in a matching context the format should always be explicitly specified so that no + * reformatting is done. + */ +struct n64_image * +n64texconv_image_reformat(struct n64_image *img, int fmt, int siz, struct n64_palette *new_pal) +{ + assert(img != NULL); + + if (fmt == FMT_NONE || siz == SIZ_NONE) { + // TODO determine optimal format for data + } + + size_t width = img->width; + size_t height = img->height; + size_t ntexels = width * height; + + struct n64_image *new_img = n64texconv_image_new(width, height, fmt, siz, NULL); + if (new_img == NULL) + return NULL; + + bool src_ci = img->fmt == G_IM_FMT_CI; + bool dst_ci = fmt == G_IM_FMT_CI; + bool siz_changed = siz != img->siz; + + if (dst_ci && (!src_ci || siz_changed)) { + // Converting non-CI to CI, or CI->CI of different size + + size_t max_colors = (siz == G_IM_SIZ_8b) ? 256 : 16; + + // Set color indices pointer if coming from non-CI + if (new_img->color_indices == NULL) + new_img->color_indices = (void *)(new_img->texels + ntexels); + + if (new_pal != NULL) { + // Use the provided new palette + new_img->pal = new_pal; + + // Make sure the new palette is of an appropriate size for the bit depth + if (new_pal->count > max_colors) { + n64texconv_image_free(new_img); + return NULL; + } + + // Map to the palette + for (size_t i = 0; i < width * height; i++) { + for (size_t j = 0; j < new_pal->count; j++) { + if (new_img->texels[i].w == new_pal->texels[j].w) { + new_img->color_indices[i] = j; + goto got; + } + } + // Failed to find texel in palette + n64texconv_image_free(new_img); + return NULL; + got:; + } + } else { + // Generate a new palette + struct n64_palette *pal = n64texconv_palette_new(max_colors, G_IM_FMT_RGBA); // TODO IA palettes + if (pal == NULL) { + n64texconv_image_free(new_img); + return NULL; + } + new_img->pal = pal; + + // Quantize and fill color indices + n64texconv_quantize(new_img->color_indices, pal->texels, &pal->count, new_img->texels, width, height, + max_colors, 0.5f); + // Replace old texels + for (size_t i = 0; i < width * height; i++) { + new_img->texels[i] = pal->texels[new_img->color_indices[i]]; + } + } + } else { + // Copy texels + memcpy(new_img->texels, img->texels, ntexels * sizeof(struct color)); + if (dst_ci) + memcpy(new_img->color_indices, img->color_indices, ntexels * sizeof(uint8_t)); + } + + // Invalidate color indices if non-CI + if (!dst_ci) + new_img->color_indices = NULL; + + // Sync texels to format + n64texconv_image_sync(new_img); + //#pragma GCC diagnostic push + //#pragma GCC diagnostic ignored "-Wanalyzer-malloc-leak" + // Annoyingly the GCC static analyzer considers pal to be leaked here, but it's reachable by the assignment + // to new_img... + return new_img; + //#pragma GCC diagnostic pop +} + +/** + * Writes this texture out to a png file. If this texture is CI and was read in from binary or from an indexed png it + * will preserve the color indices and palette of the original if it has not since been reformatted in order to + * facilitate matching in a roundtrip of 'bin -> png -> file -> png -> bin'. + */ +int +n64texconv_image_to_png(const char *outpath, struct n64_image *img, bool intensity_alpha) +{ + assert(outpath != NULL); + assert(img != NULL); + + // For intensity images, we don't always want to write alpha (but sometimes we do), intensity images can be either + // RGB channel or Alpha channel but often not both. The `intensity_alpha` option determines whether to write PNGs + // with or without alpha, both will roundtrip identically. + bool has_alpha = (img->fmt != G_IM_FMT_I) || intensity_alpha; + + size_t ntexels = img->width * img->height; + + if (img->fmt == G_IM_FMT_CI) { + assert(img->color_indices != NULL); // CI textures must have color indices + assert(img->pal != NULL); // Writing CI to png must have a palette supplied + n64texconv_palette_sync(img->pal); + } + + // Ensure output is visually precise + n64texconv_image_sync(img); + + // Write the png, either truecolor or indexed + + FILE *png = fopen(outpath, "wb"); + if (png == NULL) + return -1; + struct spng_ctx *ctx = spng_ctx_new(SPNG_CTX_ENCODER); + int rv = spng_set_png_file(ctx, png); + assert(rv == 0); + rv = spng_set_image_limits(ctx, img->width, img->height); + assert(rv == 0); + + uint8_t color_type; + if (img->fmt == G_IM_FMT_CI) { + color_type = SPNG_COLOR_TYPE_INDEXED; + } else { + color_type = (has_alpha) ? SPNG_COLOR_TYPE_TRUECOLOR_ALPHA : SPNG_COLOR_TYPE_TRUECOLOR; + } + + struct spng_ihdr ihdr = { + .width = img->width, + .height = img->height, + .bit_depth = 8, + .color_type = color_type, + .compression_method = 0, + .filter_method = 0, + .interlace_method = 0, + }; + rv = spng_set_ihdr(ctx, &ihdr); + assert(rv == 0); + + if (img->fmt == G_IM_FMT_CI) { + struct n64_palette *pal = img->pal; + assert(pal != NULL); + + // Ensure palette is visually precise + rv = n64texconv_palette_sync(pal); + assert(rv == 0); + + // Write palette + struct spng_plte plte = { 0 }; + plte.n_entries = pal->count; + assert(pal->count <= 256); + memcpy(plte.entries, pal->texels, pal->count * 4); + rv = spng_set_plte(ctx, &plte); + assert(rv == 0); + + // Write palette alphas + struct spng_trns trns = { 0 }; + trns.n_type3_entries = pal->count; + for (size_t i = 0; i < pal->count; i++) { + trns.type3_alpha[i] = pal->texels[i].a; + } + rv = spng_set_trns(ctx, &trns); + assert(rv == 0); + + // Write color indices + rv = spng_encode_image(ctx, img->color_indices, ntexels * sizeof(uint8_t), SPNG_FMT_PNG, SPNG_ENCODE_FINALIZE); + assert(rv == 0); + } else { + void *out = img->texels; + size_t outsize = ntexels * sizeof(struct color); + if (!has_alpha) { + uint8_t *rgb = malloc(ntexels * 3); + assert(rgb != NULL); + size_t j = 0; + for (size_t i = 0; i < ntexels; i++) { + rgb[j++] = img->texels[i].r; + rgb[j++] = img->texels[i].g; + rgb[j++] = img->texels[i].b; + } + out = rgb; + outsize = ntexels * 3; + } + // Write texels + rv = spng_encode_image(ctx, out, outsize, SPNG_FMT_PNG, SPNG_ENCODE_FINALIZE); + assert(rv == 0); + if (!has_alpha) + free(out); + } + + spng_ctx_free(ctx); + fclose(png); + + return 0; +} + +void * +n64texconv_image_to_bin(struct n64_image *img, bool pad_to_8b, bool preswap) +{ + assert(img != NULL); + + size_t ntexels = img->width * img->height; + int fmt = img->fmt; + int siz = img->siz; + + // Reserve output buffer + size_t size_bytes = texel_size_bytes(ntexels, siz); + size_t size_bytes_aligned = ALIGN8(size_bytes); + void *out = malloc(size_bytes_aligned); + if (out == NULL) + return NULL; + + // Pack into output format + struct texel_layout *layout = &texel_layouts[FMT_SIZ(fmt, siz)]; + assert(layout != NULL); + if (fmt == G_IM_FMT_CI) { + assert(img->pal != NULL); + layout->pack_ci(out, img->color_indices, ntexels, img->pal->count); + } else { + assert(img->pal == NULL); + layout->pack(out, img->texels, ntexels); + } + + // Pad to 8-byte alignment if requested + if (pad_to_8b && size_bytes != size_bytes_aligned) { + memset((uint8_t *)out + size_bytes, 0, size_bytes_aligned - size_bytes); + } + + // Perform dxt=0 word swapping if requested + if (preswap) { + // TODO implement preswap + } + + return out; +} + +int +n64texconv_image_to_c(char **out, size_t *size_out, struct n64_image *img, bool pad_to_8b, bool preswap, + unsigned int byte_width) +{ + assert(out != NULL); + assert(size_out != NULL); + assert(img != NULL); + + size_t nbytes = texel_size_bytes(img->width * img->height, img->siz); + void *bin = n64texconv_image_to_bin(img, pad_to_8b, preswap); + if (bin == NULL) + return -1; + nbytes = pad_to_8b ? ALIGN8(nbytes) : nbytes; + int rv = bin2c(out, size_out, bin, nbytes, 0, byte_width); + free(bin); + return rv; +} + +int +n64texconv_image_to_c_file(const char *out_path, struct n64_image *img, bool pad_to_8b, bool preswap, + unsigned int byte_width) +{ + assert(out_path != NULL); + assert(img != NULL); + + size_t nbytes = texel_size_bytes(img->width * img->height, img->siz); + void *bin = n64texconv_image_to_bin(img, pad_to_8b, preswap); + if (bin == NULL) + return -1; + nbytes = pad_to_8b ? ALIGN8(nbytes) : nbytes; + int rv = bin2c_file(out_path, bin, nbytes, 0, byte_width); + free(bin); + return rv; +} + + + +// ******************************************************************************************************************** +// Others +// ******************************************************************************************************************** + +const char * +n64texconv_png_extension(struct n64_image *img) +{ + assert(img != NULL); + + struct texel_layout *layout = &texel_layouts[FMT_SIZ(img->fmt, img->siz)]; + assert(layout != NULL); + return layout->name; +} + +/* This is just for the python interface */ +void +n64texconv_free(void *p) +{ + assert(p != NULL); + free(p); +} diff --git a/tools/assets/n64texconv/src/libn64texconv/n64texconv.h b/tools/assets/n64texconv/src/libn64texconv/n64texconv.h new file mode 100644 index 0000000000..1c2dd98fcc --- /dev/null +++ b/tools/assets/n64texconv/src/libn64texconv/n64texconv.h @@ -0,0 +1,122 @@ +/* SPDX-FileCopyrightText: Copyright (C) 2025 ZeldaRET */ +/* SPDX-License-Identifier: MIT */ +#ifndef N64TEXCONV_H +#define N64TEXCONV_H + +#include +#include +#include + +#define FMT_NONE -1 +#define FMT_MAX 5 +#define G_IM_FMT_RGBA 0 +#define G_IM_FMT_YUV 1 +#define G_IM_FMT_CI 2 +#define G_IM_FMT_IA 3 +#define G_IM_FMT_I 4 + +#define SIZ_NONE -1 +#define SIZ_MAX 4 +#define G_IM_SIZ_4b 0 +#define G_IM_SIZ_8b 1 +#define G_IM_SIZ_16b 2 +#define G_IM_SIZ_32b 3 + +struct color { + union { + struct { + uint8_t r, g, b, a; + }; + uint32_t w; + }; +}; + +static inline __attribute__((always_inline)) size_t +texel_size_bytes(size_t ntexels, int siz) +{ + return (siz == G_IM_SIZ_4b) ? (ntexels / 2) : (ntexels * ((1 << (unsigned)siz) >> 1)); +} + +struct n64_palette { + struct color *texels; + int fmt; + size_t count; +}; + +struct n64_palette * +n64texconv_palette_new(size_t count, int fmt); + +void +n64texconv_palette_free(struct n64_palette *pal); + +struct n64_palette * +n64texconv_palette_copy(struct n64_palette *pal); + +struct n64_palette * +n64texconv_palette_reformat(struct n64_palette *pal, int fmt); + +struct n64_palette * +n64texconv_palette_from_png(const char *path, int fmt); + +struct n64_palette * +n64texconv_palette_from_bin(void *data, size_t count, int fmt); + +int +n64texconv_palette_to_png(const char *outpath, struct n64_palette *pal); + +void * +n64texconv_palette_to_bin(struct n64_palette *pal, bool pad_to_8b); + +int +n64texconv_palette_to_c(char **out, size_t *size_out, struct n64_palette *pal, bool pad_to_8b, unsigned int byte_width); + +int +n64texconv_palette_to_c_file(const char *out_path, struct n64_palette *pal, bool pad_to_8b, unsigned int byte_width); + +struct n64_image { + size_t width; + size_t height; + int fmt; + int siz; + struct n64_palette *pal; + struct color *texels; + uint8_t *color_indices; +}; + +struct n64_image * +n64texconv_image_new(size_t width, size_t height, int fmt, int siz, struct n64_palette *pal); + +void +n64texconv_image_free(struct n64_image *img); + +struct n64_image * +n64texconv_image_copy(struct n64_image *img); + +struct n64_image * +n64texconv_image_from_png(const char *path, int fmt, int siz, int pal_fmt); + +struct n64_image * +n64texconv_image_from_bin(void *data, size_t width, size_t height, int fmt, int siz, struct n64_palette *pal, + bool preswapped); + +struct n64_image * +n64texconv_image_reformat(struct n64_image *img, int fmt, int siz, struct n64_palette *pal); + +int +n64texconv_image_to_png(const char *outpath, struct n64_image *img, bool intensity_alpha); + +void * +n64texconv_image_to_bin(struct n64_image *img, bool pad_to_8b, bool preswap); + +int +n64texconv_image_to_c(char **out, size_t *size_out, struct n64_image *img, bool pad_to_8b, bool preswap, + unsigned int byte_width); + +int +n64texconv_image_to_c_file(const char *out_path, struct n64_image *img, bool pad_to_8b, bool preswap, + unsigned int byte_width); + +const char * +n64texconv_png_extension(struct n64_image *img); + +#endif diff --git a/tools/bin2c.c b/tools/bin2c.c new file mode 100644 index 0000000000..3faa3be54c --- /dev/null +++ b/tools/bin2c.c @@ -0,0 +1,174 @@ +/* SPDX-FileCopyrightText: (C) 2025 ZeldaRET */ +/* SPDX-License-Identifier: MIT */ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "endian.h" + +#define NORETURN __attribute__((noreturn)) + +static void NORETURN +verror(const char *fmt, va_list args) +{ + fputs("\x1b[91merror\x1b[97m: ", stderr); + vfprintf(stderr, fmt, args); + fputs("\x1b[0m", stderr); + exit(EXIT_FAILURE); +} + +static void NORETURN +error(const char *fmt, ...) +{ + va_list args; + va_start(args, fmt); + verror(fmt, args); + va_end(args); +} + +static void NORETURN +error_post_open(const char *path_to_rm, FILE *file_to_rm, const char *fmt, ...) +{ + // cleanup output file + fclose(file_to_rm); + if (remove(path_to_rm) != 0) + fprintf(stderr, "error calling remove(): %s", strerror(errno)); + + // error as normal + va_list args; + va_start(args, fmt); + verror(fmt, args); + va_end(args); +} + +static void NORETURN +usage(const char *progname) +{ + fprintf(stderr, + "usage: %s -t [-pad] input.bin output.inc.c" "\n" + " fmt must be one of { 1, 2, 4, 8 }" "\n" + " if pad, align to fmt by filling with 0s, otherwise error if input is not aligned" "\n", + progname); + exit(EXIT_FAILURE); +} + +#define BYTES_PER_ROW 32 +#define LINE_MASK (BYTES_PER_ROW - 1) + +int +main(int argc, char **argv) +{ + const char *progname = argv[0]; + const char *inpath = NULL; + const char *outpath = NULL; + const char *fmt_opt = NULL; + int fmt = 0; + bool pad = false; + + // Collect arguments + + int narg = 0; + for (int i = 1; i < argc; i++) { + if (argv[i][0] == '-') { + if (strcmp(argv[i], "-t") == 0) { + if (++i == argc) + usage(progname); + fmt_opt = argv[i]; + char *end; + fmt = strtol(argv[i], &end, 10); + if (end != &argv[i][strlen(argv[i])]) + error("Invalid base 10 integer %s\n", argv[i]); + } else if (strcmp(argv[i], "-pad") == 0) { + pad = true; + } else { + usage(progname); + } + } else { + switch (narg) { + case 0: + inpath = argv[i]; + break; + case 1: + outpath = argv[i]; + break; + default: + usage(progname); + break; + } + narg++; + } + } + + // Check arguments + + if (inpath == NULL || outpath == NULL || fmt_opt == NULL) + usage(progname); + + if (fmt != 1 && fmt != 2 && fmt != 4 && fmt != 8) + error("Invalid fmt option '%s'. Valid options: [1, 2, 4, 8]\n", fmt_opt); + + // Open the input binary file + + FILE *infile = fopen(inpath, "rb"); + if (infile == NULL) + error("Failed to open input file '%s' for reading: %s\n", inpath, strerror(errno)); + + // Get size + + if (fseek(infile, 0, SEEK_END) != 0) + error("Could not ascertain input file size, could not seek to end: %s\n", strerror(errno)); + size_t file_size = ftell(infile); + if (fseek(infile, 0, SEEK_SET) != 0) + error("Could not ascertain input file size, could not seek to start: %s\n", strerror(errno)); + + // Check alignment + + if ((file_size & (fmt - 1)) != 0 && !pad) { + // Not aligned to data size and don't pad, error + error("Input file '%s' size (%lu) is not aligned to %d bytes\n", inpath, file_size, fmt); + } + + // Open the output text file + + FILE *outfile = fopen(outpath, "w"); + if (outfile == NULL) + error("Failed to open output file '%s' for writing: %s\n", outpath, strerror(errno)); + + // Write data. If the input binary size was not aligned we either don't get this far or the option + // to pad with 0s is set. + + bool was_newline = false; + for (size_t p = 0; p < file_size; p += fmt) { + size_t rem = fmt; + if (rem > file_size - p) // For any remaining unaligned data, rest will be padded with 0 + rem = file_size - p; + + // Read input + uint64_t d = 0; + if (fread(&d, 1, rem, infile) != rem) + error_post_open(outpath, outfile, "Error reading from input file '%s': %s\n", inpath, strerror(errno)); + + // Byteswap + shift + d = be64toh(d) >> (64 - 8 * fmt); + + // Write output + bool was_newline = (((p + fmt) & LINE_MASK) == 0); + char end = was_newline ? '\n' : ' '; + if (fprintf(outfile, "0x%0*" PRIX64 ",%c", 2 * fmt, d, end) < 0) + error_post_open(outpath, outfile, "Error writing to output file '%s': %s\n", outpath, strerror(errno)); + } + if (!was_newline) { + if (fputs("\n", outfile) == EOF) + error_post_open(outpath, outfile, "Error writing to output file '%s': %s\n", outpath, strerror(errno)); + } + + fclose(infile); + fclose(outfile); + return EXIT_SUCCESS; +} diff --git a/tools/com-plugin/.gitignore b/tools/com-plugin/.gitignore new file mode 100644 index 0000000000..e3531ad540 --- /dev/null +++ b/tools/com-plugin/.gitignore @@ -0,0 +1,3 @@ +*.d +*.o +*.so diff --git a/tools/com-plugin/.gitrepo b/tools/com-plugin/.gitrepo new file mode 100644 index 0000000000..6215d57598 --- /dev/null +++ b/tools/com-plugin/.gitrepo @@ -0,0 +1,12 @@ +; 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/ingydotnet/git-subrepo#readme +; +[subrepo] + remote = git@github.com:Thar0/com-plugin.git + branch = main + commit = fc5aa5eda0b09e8e3cf91ce1530f886bb1ab8eef + parent = 54939bac3ac972a24918d3fdc97d58199ff54bc9 + method = merge + cmdver = 0.4.6 diff --git a/tools/com-plugin/LICENSE b/tools/com-plugin/LICENSE new file mode 100644 index 0000000000..f288702d2f --- /dev/null +++ b/tools/com-plugin/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/tools/com-plugin/Makefile b/tools/com-plugin/Makefile new file mode 100644 index 0000000000..c15dfb6ed6 --- /dev/null +++ b/tools/com-plugin/Makefile @@ -0,0 +1,19 @@ +TARGET := common-plugin.so +SOURCES := plugin.c + +CC := gcc +CFLAGS := -Wall -Wextra -std=gnu11 -O2 -fPIC -DHAVE_STDINT_H + +DEP_FILES := $(TARGET:.so=.d) + +.PHONY: all clean + +all: $(TARGET) + +clean: + $(RM) $(TARGET) $(DEP_FILES) + +$(TARGET): $(SOURCES) + $(CC) -shared $(CFLAGS) -MMD -o $@ $(SOURCES) + +-include $(DEP_FILES) diff --git a/tools/com-plugin/README.md b/tools/com-plugin/README.md new file mode 100644 index 0000000000..1db9e481ea --- /dev/null +++ b/tools/com-plugin/README.md @@ -0,0 +1,31 @@ +# COMMON symbol ordering linker plugin + +This repository contains a plugin for linkers that support the External Linker Plugin API that allows providing a manual specification for COMMON symbol ordering, intended to support matching decompilations that must reproduce an order for COMMON symbols whose names are unknown. Currently only 32-bit Big-Endian MIPS ELF object files are supported. + +## How it works + +The plugin expects a symbol order txt file listing the COMMON symbols in order on each line. The plugin searches each input file for the symbol definitions for these and emits a new ELF file containing BSS definitions for each COMMON symbol found with the appropriate size and alignment. This ELF file is then added as an extra input file to the linker, overriding the COMMON definitions in the other input files. + +## Usage + +Add `-plugin common-plugin.so -plugin-opt order=bss_order.txt` to the linker invocation, replacing `bss_order.txt` with an alternative path if desired. + +Also add any bss output files mentioned in the order file to the linker script (e.g. `bss.o` would be added as `*bss.o(.bss*)`) so that the additional input file is not discarded, if required. + +### **Symbol order file syntax** + +``` + { + ; + ; + ; + [...] +} +[...] +``` + +The order file supports 2 styles of single-line comments (`//` and `#`) and C-style multi-line comments and ignores whitespace. + +## Building + +Run `make` to build `common-plugin.so`. diff --git a/tools/com-plugin/elf.h b/tools/com-plugin/elf.h new file mode 100644 index 0000000000..59ae03786d --- /dev/null +++ b/tools/com-plugin/elf.h @@ -0,0 +1,3148 @@ +/* +From musl include/elf.h with added EF_MIPS_32BITMODE definition + +Copyright © 2005-2014 Rich Felker, et al. + +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. +*/ + +#ifndef _ELF_H +#define _ELF_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef uint16_t Elf32_Half; +typedef uint16_t Elf64_Half; + +typedef uint32_t Elf32_Word; +typedef int32_t Elf32_Sword; +typedef uint32_t Elf64_Word; +typedef int32_t Elf64_Sword; + +typedef uint64_t Elf32_Xword; +typedef int64_t Elf32_Sxword; +typedef uint64_t Elf64_Xword; +typedef int64_t Elf64_Sxword; + +typedef uint32_t Elf32_Addr; +typedef uint64_t Elf64_Addr; + +typedef uint32_t Elf32_Off; +typedef uint64_t Elf64_Off; + +typedef uint16_t Elf32_Section; +typedef uint16_t Elf64_Section; + +typedef Elf32_Half Elf32_Versym; +typedef Elf64_Half Elf64_Versym; + +#define EI_NIDENT (16) + +typedef struct { + unsigned char e_ident[EI_NIDENT]; + Elf32_Half e_type; + Elf32_Half e_machine; + Elf32_Word e_version; + Elf32_Addr e_entry; + Elf32_Off e_phoff; + Elf32_Off e_shoff; + Elf32_Word e_flags; + Elf32_Half e_ehsize; + Elf32_Half e_phentsize; + Elf32_Half e_phnum; + Elf32_Half e_shentsize; + Elf32_Half e_shnum; + Elf32_Half e_shstrndx; +} Elf32_Ehdr; + +typedef struct { + unsigned char e_ident[EI_NIDENT]; + Elf64_Half e_type; + Elf64_Half e_machine; + Elf64_Word e_version; + Elf64_Addr e_entry; + Elf64_Off e_phoff; + Elf64_Off e_shoff; + Elf64_Word e_flags; + Elf64_Half e_ehsize; + Elf64_Half e_phentsize; + Elf64_Half e_phnum; + Elf64_Half e_shentsize; + Elf64_Half e_shnum; + Elf64_Half e_shstrndx; +} Elf64_Ehdr; + +#define EI_MAG0 0 +#define ELFMAG0 0x7f + +#define EI_MAG1 1 +#define ELFMAG1 'E' + +#define EI_MAG2 2 +#define ELFMAG2 'L' + +#define EI_MAG3 3 +#define ELFMAG3 'F' + + +#define ELFMAG "\177ELF" +#define SELFMAG 4 + +#define EI_CLASS 4 +#define ELFCLASSNONE 0 +#define ELFCLASS32 1 +#define ELFCLASS64 2 +#define ELFCLASSNUM 3 + +#define EI_DATA 5 +#define ELFDATANONE 0 +#define ELFDATA2LSB 1 +#define ELFDATA2MSB 2 +#define ELFDATANUM 3 + +#define EI_VERSION 6 + + +#define EI_OSABI 7 +#define ELFOSABI_NONE 0 +#define ELFOSABI_SYSV 0 +#define ELFOSABI_HPUX 1 +#define ELFOSABI_NETBSD 2 +#define ELFOSABI_LINUX 3 +#define ELFOSABI_GNU 3 +#define ELFOSABI_SOLARIS 6 +#define ELFOSABI_AIX 7 +#define ELFOSABI_IRIX 8 +#define ELFOSABI_FREEBSD 9 +#define ELFOSABI_TRU64 10 +#define ELFOSABI_MODESTO 11 +#define ELFOSABI_OPENBSD 12 +#define ELFOSABI_ARM 97 +#define ELFOSABI_STANDALONE 255 + +#define EI_ABIVERSION 8 + +#define EI_PAD 9 + + + +#define ET_NONE 0 +#define ET_REL 1 +#define ET_EXEC 2 +#define ET_DYN 3 +#define ET_CORE 4 +#define ET_NUM 5 +#define ET_LOOS 0xfe00 +#define ET_HIOS 0xfeff +#define ET_LOPROC 0xff00 +#define ET_HIPROC 0xffff + + + +#define EM_NONE 0 +#define EM_M32 1 +#define EM_SPARC 2 +#define EM_386 3 +#define EM_68K 4 +#define EM_88K 5 +#define EM_860 7 +#define EM_MIPS 8 +#define EM_S370 9 +#define EM_MIPS_RS3_LE 10 + +#define EM_PARISC 15 +#define EM_VPP500 17 +#define EM_SPARC32PLUS 18 +#define EM_960 19 +#define EM_PPC 20 +#define EM_PPC64 21 +#define EM_S390 22 + +#define EM_V800 36 +#define EM_FR20 37 +#define EM_RH32 38 +#define EM_RCE 39 +#define EM_ARM 40 +#define EM_FAKE_ALPHA 41 +#define EM_SH 42 +#define EM_SPARCV9 43 +#define EM_TRICORE 44 +#define EM_ARC 45 +#define EM_H8_300 46 +#define EM_H8_300H 47 +#define EM_H8S 48 +#define EM_H8_500 49 +#define EM_IA_64 50 +#define EM_MIPS_X 51 +#define EM_COLDFIRE 52 +#define EM_68HC12 53 +#define EM_MMA 54 +#define EM_PCP 55 +#define EM_NCPU 56 +#define EM_NDR1 57 +#define EM_STARCORE 58 +#define EM_ME16 59 +#define EM_ST100 60 +#define EM_TINYJ 61 +#define EM_X86_64 62 +#define EM_PDSP 63 + +#define EM_FX66 66 +#define EM_ST9PLUS 67 +#define EM_ST7 68 +#define EM_68HC16 69 +#define EM_68HC11 70 +#define EM_68HC08 71 +#define EM_68HC05 72 +#define EM_SVX 73 +#define EM_ST19 74 +#define EM_VAX 75 +#define EM_CRIS 76 +#define EM_JAVELIN 77 +#define EM_FIREPATH 78 +#define EM_ZSP 79 +#define EM_MMIX 80 +#define EM_HUANY 81 +#define EM_PRISM 82 +#define EM_AVR 83 +#define EM_FR30 84 +#define EM_D10V 85 +#define EM_D30V 86 +#define EM_V850 87 +#define EM_M32R 88 +#define EM_MN10300 89 +#define EM_MN10200 90 +#define EM_PJ 91 +#define EM_OR1K 92 +#define EM_OPENRISC 92 +#define EM_ARC_A5 93 +#define EM_ARC_COMPACT 93 +#define EM_XTENSA 94 +#define EM_VIDEOCORE 95 +#define EM_TMM_GPP 96 +#define EM_NS32K 97 +#define EM_TPC 98 +#define EM_SNP1K 99 +#define EM_ST200 100 +#define EM_IP2K 101 +#define EM_MAX 102 +#define EM_CR 103 +#define EM_F2MC16 104 +#define EM_MSP430 105 +#define EM_BLACKFIN 106 +#define EM_SE_C33 107 +#define EM_SEP 108 +#define EM_ARCA 109 +#define EM_UNICORE 110 +#define EM_EXCESS 111 +#define EM_DXP 112 +#define EM_ALTERA_NIOS2 113 +#define EM_CRX 114 +#define EM_XGATE 115 +#define EM_C166 116 +#define EM_M16C 117 +#define EM_DSPIC30F 118 +#define EM_CE 119 +#define EM_M32C 120 +#define EM_TSK3000 131 +#define EM_RS08 132 +#define EM_SHARC 133 +#define EM_ECOG2 134 +#define EM_SCORE7 135 +#define EM_DSP24 136 +#define EM_VIDEOCORE3 137 +#define EM_LATTICEMICO32 138 +#define EM_SE_C17 139 +#define EM_TI_C6000 140 +#define EM_TI_C2000 141 +#define EM_TI_C5500 142 +#define EM_TI_ARP32 143 +#define EM_TI_PRU 144 +#define EM_MMDSP_PLUS 160 +#define EM_CYPRESS_M8C 161 +#define EM_R32C 162 +#define EM_TRIMEDIA 163 +#define EM_QDSP6 164 +#define EM_8051 165 +#define EM_STXP7X 166 +#define EM_NDS32 167 +#define EM_ECOG1X 168 +#define EM_MAXQ30 169 +#define EM_XIMO16 170 +#define EM_MANIK 171 +#define EM_CRAYNV2 172 +#define EM_RX 173 +#define EM_METAG 174 +#define EM_MCST_ELBRUS 175 +#define EM_ECOG16 176 +#define EM_CR16 177 +#define EM_ETPU 178 +#define EM_SLE9X 179 +#define EM_L10M 180 +#define EM_K10M 181 +#define EM_AARCH64 183 +#define EM_AVR32 185 +#define EM_STM8 186 +#define EM_TILE64 187 +#define EM_TILEPRO 188 +#define EM_MICROBLAZE 189 +#define EM_CUDA 190 +#define EM_TILEGX 191 +#define EM_CLOUDSHIELD 192 +#define EM_COREA_1ST 193 +#define EM_COREA_2ND 194 +#define EM_ARC_COMPACT2 195 +#define EM_OPEN8 196 +#define EM_RL78 197 +#define EM_VIDEOCORE5 198 +#define EM_78KOR 199 +#define EM_56800EX 200 +#define EM_BA1 201 +#define EM_BA2 202 +#define EM_XCORE 203 +#define EM_MCHP_PIC 204 +#define EM_KM32 210 +#define EM_KMX32 211 +#define EM_EMX16 212 +#define EM_EMX8 213 +#define EM_KVARC 214 +#define EM_CDP 215 +#define EM_COGE 216 +#define EM_COOL 217 +#define EM_NORC 218 +#define EM_CSR_KALIMBA 219 +#define EM_Z80 220 +#define EM_VISIUM 221 +#define EM_FT32 222 +#define EM_MOXIE 223 +#define EM_AMDGPU 224 +#define EM_RISCV 243 +#define EM_BPF 247 +#define EM_NUM 248 + +#define EM_ALPHA 0x9026 + +#define EV_NONE 0 +#define EV_CURRENT 1 +#define EV_NUM 2 + +typedef struct { + Elf32_Word sh_name; + Elf32_Word sh_type; + Elf32_Word sh_flags; + Elf32_Addr sh_addr; + Elf32_Off sh_offset; + Elf32_Word sh_size; + Elf32_Word sh_link; + Elf32_Word sh_info; + Elf32_Word sh_addralign; + Elf32_Word sh_entsize; +} Elf32_Shdr; + +typedef struct { + Elf64_Word sh_name; + Elf64_Word sh_type; + Elf64_Xword sh_flags; + Elf64_Addr sh_addr; + Elf64_Off sh_offset; + Elf64_Xword sh_size; + Elf64_Word sh_link; + Elf64_Word sh_info; + Elf64_Xword sh_addralign; + Elf64_Xword sh_entsize; +} Elf64_Shdr; + + + +#define SHN_UNDEF 0 +#define SHN_LORESERVE 0xff00 +#define SHN_LOPROC 0xff00 +#define SHN_BEFORE 0xff00 + +#define SHN_AFTER 0xff01 + +#define SHN_HIPROC 0xff1f +#define SHN_LOOS 0xff20 +#define SHN_HIOS 0xff3f +#define SHN_ABS 0xfff1 +#define SHN_COMMON 0xfff2 +#define SHN_XINDEX 0xffff +#define SHN_HIRESERVE 0xffff + + + +#define SHT_NULL 0 +#define SHT_PROGBITS 1 +#define SHT_SYMTAB 2 +#define SHT_STRTAB 3 +#define SHT_RELA 4 +#define SHT_HASH 5 +#define SHT_DYNAMIC 6 +#define SHT_NOTE 7 +#define SHT_NOBITS 8 +#define SHT_REL 9 +#define SHT_SHLIB 10 +#define SHT_DYNSYM 11 +#define SHT_INIT_ARRAY 14 +#define SHT_FINI_ARRAY 15 +#define SHT_PREINIT_ARRAY 16 +#define SHT_GROUP 17 +#define SHT_SYMTAB_SHNDX 18 +#define SHT_NUM 19 +#define SHT_LOOS 0x60000000 +#define SHT_GNU_ATTRIBUTES 0x6ffffff5 +#define SHT_GNU_HASH 0x6ffffff6 +#define SHT_GNU_LIBLIST 0x6ffffff7 +#define SHT_CHECKSUM 0x6ffffff8 +#define SHT_LOSUNW 0x6ffffffa +#define SHT_SUNW_move 0x6ffffffa +#define SHT_SUNW_COMDAT 0x6ffffffb +#define SHT_SUNW_syminfo 0x6ffffffc +#define SHT_GNU_verdef 0x6ffffffd +#define SHT_GNU_verneed 0x6ffffffe +#define SHT_GNU_versym 0x6fffffff +#define SHT_HISUNW 0x6fffffff +#define SHT_HIOS 0x6fffffff +#define SHT_LOPROC 0x70000000 +#define SHT_HIPROC 0x7fffffff +#define SHT_LOUSER 0x80000000 +#define SHT_HIUSER 0x8fffffff + +#define SHF_WRITE (1 << 0) +#define SHF_ALLOC (1 << 1) +#define SHF_EXECINSTR (1 << 2) +#define SHF_MERGE (1 << 4) +#define SHF_STRINGS (1 << 5) +#define SHF_INFO_LINK (1 << 6) +#define SHF_LINK_ORDER (1 << 7) +#define SHF_OS_NONCONFORMING (1 << 8) + +#define SHF_GROUP (1 << 9) +#define SHF_TLS (1 << 10) +#define SHF_COMPRESSED (1 << 11) +#define SHF_MASKOS 0x0ff00000 +#define SHF_MASKPROC 0xf0000000 +#define SHF_ORDERED (1 << 30) +#define SHF_EXCLUDE (1U << 31) + +typedef struct { + Elf32_Word ch_type; + Elf32_Word ch_size; + Elf32_Word ch_addralign; +} Elf32_Chdr; + +typedef struct { + Elf64_Word ch_type; + Elf64_Word ch_reserved; + Elf64_Xword ch_size; + Elf64_Xword ch_addralign; +} Elf64_Chdr; + +#define ELFCOMPRESS_ZLIB 1 +#define ELFCOMPRESS_LOOS 0x60000000 +#define ELFCOMPRESS_HIOS 0x6fffffff +#define ELFCOMPRESS_LOPROC 0x70000000 +#define ELFCOMPRESS_HIPROC 0x7fffffff + + +#define GRP_COMDAT 0x1 + +typedef struct { + Elf32_Word st_name; + Elf32_Addr st_value; + Elf32_Word st_size; + unsigned char st_info; + unsigned char st_other; + Elf32_Section st_shndx; +} Elf32_Sym; + +typedef struct { + Elf64_Word st_name; + unsigned char st_info; + unsigned char st_other; + Elf64_Section st_shndx; + Elf64_Addr st_value; + Elf64_Xword st_size; +} Elf64_Sym; + +typedef struct { + Elf32_Half si_boundto; + Elf32_Half si_flags; +} Elf32_Syminfo; + +typedef struct { + Elf64_Half si_boundto; + Elf64_Half si_flags; +} Elf64_Syminfo; + +#define SYMINFO_BT_SELF 0xffff +#define SYMINFO_BT_PARENT 0xfffe +#define SYMINFO_BT_LOWRESERVE 0xff00 + +#define SYMINFO_FLG_DIRECT 0x0001 +#define SYMINFO_FLG_PASSTHRU 0x0002 +#define SYMINFO_FLG_COPY 0x0004 +#define SYMINFO_FLG_LAZYLOAD 0x0008 + +#define SYMINFO_NONE 0 +#define SYMINFO_CURRENT 1 +#define SYMINFO_NUM 2 + +#define ELF32_ST_BIND(val) (((unsigned char) (val)) >> 4) +#define ELF32_ST_TYPE(val) ((val) & 0xf) +#define ELF32_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf)) + +#define ELF64_ST_BIND(val) ELF32_ST_BIND (val) +#define ELF64_ST_TYPE(val) ELF32_ST_TYPE (val) +#define ELF64_ST_INFO(bind, type) ELF32_ST_INFO ((bind), (type)) + +#define STB_LOCAL 0 +#define STB_GLOBAL 1 +#define STB_WEAK 2 +#define STB_NUM 3 +#define STB_LOOS 10 +#define STB_GNU_UNIQUE 10 +#define STB_HIOS 12 +#define STB_LOPROC 13 +#define STB_HIPROC 15 + +#define STT_NOTYPE 0 +#define STT_OBJECT 1 +#define STT_FUNC 2 +#define STT_SECTION 3 +#define STT_FILE 4 +#define STT_COMMON 5 +#define STT_TLS 6 +#define STT_NUM 7 +#define STT_LOOS 10 +#define STT_GNU_IFUNC 10 +#define STT_HIOS 12 +#define STT_LOPROC 13 +#define STT_HIPROC 15 + +#define STN_UNDEF 0 + +#define ELF32_ST_VISIBILITY(o) ((o) & 0x03) +#define ELF64_ST_VISIBILITY(o) ELF32_ST_VISIBILITY (o) + +#define STV_DEFAULT 0 +#define STV_INTERNAL 1 +#define STV_HIDDEN 2 +#define STV_PROTECTED 3 + + + + +typedef struct { + Elf32_Addr r_offset; + Elf32_Word r_info; +} Elf32_Rel; + +typedef struct { + Elf64_Addr r_offset; + Elf64_Xword r_info; +} Elf64_Rel; + + + +typedef struct { + Elf32_Addr r_offset; + Elf32_Word r_info; + Elf32_Sword r_addend; +} Elf32_Rela; + +typedef struct { + Elf64_Addr r_offset; + Elf64_Xword r_info; + Elf64_Sxword r_addend; +} Elf64_Rela; + + + +#define ELF32_R_SYM(val) ((val) >> 8) +#define ELF32_R_TYPE(val) ((val) & 0xff) +#define ELF32_R_INFO(sym, type) (((sym) << 8) + ((type) & 0xff)) + +#define ELF64_R_SYM(i) ((i) >> 32) +#define ELF64_R_TYPE(i) ((i) & 0xffffffff) +#define ELF64_R_INFO(sym,type) ((((Elf64_Xword) (sym)) << 32) + (type)) + + + +typedef struct { + Elf32_Word p_type; + Elf32_Off p_offset; + Elf32_Addr p_vaddr; + Elf32_Addr p_paddr; + Elf32_Word p_filesz; + Elf32_Word p_memsz; + Elf32_Word p_flags; + Elf32_Word p_align; +} Elf32_Phdr; + +typedef struct { + Elf64_Word p_type; + Elf64_Word p_flags; + Elf64_Off p_offset; + Elf64_Addr p_vaddr; + Elf64_Addr p_paddr; + Elf64_Xword p_filesz; + Elf64_Xword p_memsz; + Elf64_Xword p_align; +} Elf64_Phdr; + + + +#define PT_NULL 0 +#define PT_LOAD 1 +#define PT_DYNAMIC 2 +#define PT_INTERP 3 +#define PT_NOTE 4 +#define PT_SHLIB 5 +#define PT_PHDR 6 +#define PT_TLS 7 +#define PT_NUM 8 +#define PT_LOOS 0x60000000 +#define PT_GNU_EH_FRAME 0x6474e550 +#define PT_GNU_STACK 0x6474e551 +#define PT_GNU_RELRO 0x6474e552 +#define PT_LOSUNW 0x6ffffffa +#define PT_SUNWBSS 0x6ffffffa +#define PT_SUNWSTACK 0x6ffffffb +#define PT_HISUNW 0x6fffffff +#define PT_HIOS 0x6fffffff +#define PT_LOPROC 0x70000000 +#define PT_HIPROC 0x7fffffff + + +#define PN_XNUM 0xffff + + +#define PF_X (1 << 0) +#define PF_W (1 << 1) +#define PF_R (1 << 2) +#define PF_MASKOS 0x0ff00000 +#define PF_MASKPROC 0xf0000000 + + + +#define NT_PRSTATUS 1 +#define NT_FPREGSET 2 +#define NT_PRPSINFO 3 +#define NT_PRXREG 4 +#define NT_TASKSTRUCT 4 +#define NT_PLATFORM 5 +#define NT_AUXV 6 +#define NT_GWINDOWS 7 +#define NT_ASRS 8 +#define NT_PSTATUS 10 +#define NT_PSINFO 13 +#define NT_PRCRED 14 +#define NT_UTSNAME 15 +#define NT_LWPSTATUS 16 +#define NT_LWPSINFO 17 +#define NT_PRFPXREG 20 +#define NT_SIGINFO 0x53494749 +#define NT_FILE 0x46494c45 +#define NT_PRXFPREG 0x46e62b7f +#define NT_PPC_VMX 0x100 +#define NT_PPC_SPE 0x101 +#define NT_PPC_VSX 0x102 +#define NT_386_TLS 0x200 +#define NT_386_IOPERM 0x201 +#define NT_X86_XSTATE 0x202 +#define NT_S390_HIGH_GPRS 0x300 +#define NT_S390_TIMER 0x301 +#define NT_S390_TODCMP 0x302 +#define NT_S390_TODPREG 0x303 +#define NT_S390_CTRS 0x304 +#define NT_S390_PREFIX 0x305 +#define NT_S390_LAST_BREAK 0x306 +#define NT_S390_SYSTEM_CALL 0x307 +#define NT_S390_TDB 0x308 +#define NT_ARM_VFP 0x400 +#define NT_ARM_TLS 0x401 +#define NT_ARM_HW_BREAK 0x402 +#define NT_ARM_HW_WATCH 0x403 +#define NT_ARM_SYSTEM_CALL 0x404 +#define NT_ARM_SVE 0x405 +#define NT_METAG_CBUF 0x500 +#define NT_METAG_RPIPE 0x501 +#define NT_METAG_TLS 0x502 +#define NT_VERSION 1 + + + + +typedef struct { + Elf32_Sword d_tag; + union { + Elf32_Word d_val; + Elf32_Addr d_ptr; + } d_un; +} Elf32_Dyn; + +typedef struct { + Elf64_Sxword d_tag; + union { + Elf64_Xword d_val; + Elf64_Addr d_ptr; + } d_un; +} Elf64_Dyn; + + + +#define DT_NULL 0 +#define DT_NEEDED 1 +#define DT_PLTRELSZ 2 +#define DT_PLTGOT 3 +#define DT_HASH 4 +#define DT_STRTAB 5 +#define DT_SYMTAB 6 +#define DT_RELA 7 +#define DT_RELASZ 8 +#define DT_RELAENT 9 +#define DT_STRSZ 10 +#define DT_SYMENT 11 +#define DT_INIT 12 +#define DT_FINI 13 +#define DT_SONAME 14 +#define DT_RPATH 15 +#define DT_SYMBOLIC 16 +#define DT_REL 17 +#define DT_RELSZ 18 +#define DT_RELENT 19 +#define DT_PLTREL 20 +#define DT_DEBUG 21 +#define DT_TEXTREL 22 +#define DT_JMPREL 23 +#define DT_BIND_NOW 24 +#define DT_INIT_ARRAY 25 +#define DT_FINI_ARRAY 26 +#define DT_INIT_ARRAYSZ 27 +#define DT_FINI_ARRAYSZ 28 +#define DT_RUNPATH 29 +#define DT_FLAGS 30 +#define DT_ENCODING 32 +#define DT_PREINIT_ARRAY 32 +#define DT_PREINIT_ARRAYSZ 33 +#define DT_NUM 34 +#define DT_LOOS 0x6000000d +#define DT_HIOS 0x6ffff000 +#define DT_LOPROC 0x70000000 +#define DT_HIPROC 0x7fffffff +#define DT_PROCNUM DT_MIPS_NUM + +#define DT_VALRNGLO 0x6ffffd00 +#define DT_GNU_PRELINKED 0x6ffffdf5 +#define DT_GNU_CONFLICTSZ 0x6ffffdf6 +#define DT_GNU_LIBLISTSZ 0x6ffffdf7 +#define DT_CHECKSUM 0x6ffffdf8 +#define DT_PLTPADSZ 0x6ffffdf9 +#define DT_MOVEENT 0x6ffffdfa +#define DT_MOVESZ 0x6ffffdfb +#define DT_FEATURE_1 0x6ffffdfc +#define DT_POSFLAG_1 0x6ffffdfd + +#define DT_SYMINSZ 0x6ffffdfe +#define DT_SYMINENT 0x6ffffdff +#define DT_VALRNGHI 0x6ffffdff +#define DT_VALTAGIDX(tag) (DT_VALRNGHI - (tag)) +#define DT_VALNUM 12 + +#define DT_ADDRRNGLO 0x6ffffe00 +#define DT_GNU_HASH 0x6ffffef5 +#define DT_TLSDESC_PLT 0x6ffffef6 +#define DT_TLSDESC_GOT 0x6ffffef7 +#define DT_GNU_CONFLICT 0x6ffffef8 +#define DT_GNU_LIBLIST 0x6ffffef9 +#define DT_CONFIG 0x6ffffefa +#define DT_DEPAUDIT 0x6ffffefb +#define DT_AUDIT 0x6ffffefc +#define DT_PLTPAD 0x6ffffefd +#define DT_MOVETAB 0x6ffffefe +#define DT_SYMINFO 0x6ffffeff +#define DT_ADDRRNGHI 0x6ffffeff +#define DT_ADDRTAGIDX(tag) (DT_ADDRRNGHI - (tag)) +#define DT_ADDRNUM 11 + + + +#define DT_VERSYM 0x6ffffff0 + +#define DT_RELACOUNT 0x6ffffff9 +#define DT_RELCOUNT 0x6ffffffa + + +#define DT_FLAGS_1 0x6ffffffb +#define DT_VERDEF 0x6ffffffc + +#define DT_VERDEFNUM 0x6ffffffd +#define DT_VERNEED 0x6ffffffe + +#define DT_VERNEEDNUM 0x6fffffff +#define DT_VERSIONTAGIDX(tag) (DT_VERNEEDNUM - (tag)) +#define DT_VERSIONTAGNUM 16 + + + +#define DT_AUXILIARY 0x7ffffffd +#define DT_FILTER 0x7fffffff +#define DT_EXTRATAGIDX(tag) ((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1) +#define DT_EXTRANUM 3 + + +#define DF_ORIGIN 0x00000001 +#define DF_SYMBOLIC 0x00000002 +#define DF_TEXTREL 0x00000004 +#define DF_BIND_NOW 0x00000008 +#define DF_STATIC_TLS 0x00000010 + + + +#define DF_1_NOW 0x00000001 +#define DF_1_GLOBAL 0x00000002 +#define DF_1_GROUP 0x00000004 +#define DF_1_NODELETE 0x00000008 +#define DF_1_LOADFLTR 0x00000010 +#define DF_1_INITFIRST 0x00000020 +#define DF_1_NOOPEN 0x00000040 +#define DF_1_ORIGIN 0x00000080 +#define DF_1_DIRECT 0x00000100 +#define DF_1_TRANS 0x00000200 +#define DF_1_INTERPOSE 0x00000400 +#define DF_1_NODEFLIB 0x00000800 +#define DF_1_NODUMP 0x00001000 +#define DF_1_CONFALT 0x00002000 +#define DF_1_ENDFILTEE 0x00004000 +#define DF_1_DISPRELDNE 0x00008000 +#define DF_1_DISPRELPND 0x00010000 +#define DF_1_NODIRECT 0x00020000 +#define DF_1_IGNMULDEF 0x00040000 +#define DF_1_NOKSYMS 0x00080000 +#define DF_1_NOHDR 0x00100000 +#define DF_1_EDITED 0x00200000 +#define DF_1_NORELOC 0x00400000 +#define DF_1_SYMINTPOSE 0x00800000 +#define DF_1_GLOBAUDIT 0x01000000 +#define DF_1_SINGLETON 0x02000000 + +#define DTF_1_PARINIT 0x00000001 +#define DTF_1_CONFEXP 0x00000002 + + +#define DF_P1_LAZYLOAD 0x00000001 +#define DF_P1_GROUPPERM 0x00000002 + + + + +typedef struct { + Elf32_Half vd_version; + Elf32_Half vd_flags; + Elf32_Half vd_ndx; + Elf32_Half vd_cnt; + Elf32_Word vd_hash; + Elf32_Word vd_aux; + Elf32_Word vd_next; +} Elf32_Verdef; + +typedef struct { + Elf64_Half vd_version; + Elf64_Half vd_flags; + Elf64_Half vd_ndx; + Elf64_Half vd_cnt; + Elf64_Word vd_hash; + Elf64_Word vd_aux; + Elf64_Word vd_next; +} Elf64_Verdef; + + + +#define VER_DEF_NONE 0 +#define VER_DEF_CURRENT 1 +#define VER_DEF_NUM 2 + + +#define VER_FLG_BASE 0x1 +#define VER_FLG_WEAK 0x2 + + +#define VER_NDX_LOCAL 0 +#define VER_NDX_GLOBAL 1 +#define VER_NDX_LORESERVE 0xff00 +#define VER_NDX_ELIMINATE 0xff01 + + + +typedef struct { + Elf32_Word vda_name; + Elf32_Word vda_next; +} Elf32_Verdaux; + +typedef struct { + Elf64_Word vda_name; + Elf64_Word vda_next; +} Elf64_Verdaux; + + + + +typedef struct { + Elf32_Half vn_version; + Elf32_Half vn_cnt; + Elf32_Word vn_file; + Elf32_Word vn_aux; + Elf32_Word vn_next; +} Elf32_Verneed; + +typedef struct { + Elf64_Half vn_version; + Elf64_Half vn_cnt; + Elf64_Word vn_file; + Elf64_Word vn_aux; + Elf64_Word vn_next; +} Elf64_Verneed; + + + +#define VER_NEED_NONE 0 +#define VER_NEED_CURRENT 1 +#define VER_NEED_NUM 2 + + + +typedef struct { + Elf32_Word vna_hash; + Elf32_Half vna_flags; + Elf32_Half vna_other; + Elf32_Word vna_name; + Elf32_Word vna_next; +} Elf32_Vernaux; + +typedef struct { + Elf64_Word vna_hash; + Elf64_Half vna_flags; + Elf64_Half vna_other; + Elf64_Word vna_name; + Elf64_Word vna_next; +} Elf64_Vernaux; + + + +#define VER_FLG_WEAK 0x2 + + + +typedef struct { + uint32_t a_type; + union { + uint32_t a_val; + } a_un; +} Elf32_auxv_t; + +typedef struct { + uint64_t a_type; + union { + uint64_t a_val; + } a_un; +} Elf64_auxv_t; + + + +#define AT_NULL 0 +#define AT_IGNORE 1 +#define AT_EXECFD 2 +#define AT_PHDR 3 +#define AT_PHENT 4 +#define AT_PHNUM 5 +#define AT_PAGESZ 6 +#define AT_BASE 7 +#define AT_FLAGS 8 +#define AT_ENTRY 9 +#define AT_NOTELF 10 +#define AT_UID 11 +#define AT_EUID 12 +#define AT_GID 13 +#define AT_EGID 14 +#define AT_CLKTCK 17 + + +#define AT_PLATFORM 15 +#define AT_HWCAP 16 + + + + +#define AT_FPUCW 18 + + +#define AT_DCACHEBSIZE 19 +#define AT_ICACHEBSIZE 20 +#define AT_UCACHEBSIZE 21 + + + +#define AT_IGNOREPPC 22 + +#define AT_SECURE 23 + +#define AT_BASE_PLATFORM 24 + +#define AT_RANDOM 25 + +#define AT_HWCAP2 26 + +#define AT_EXECFN 31 + + + +#define AT_SYSINFO 32 +#define AT_SYSINFO_EHDR 33 + + + +#define AT_L1I_CACHESHAPE 34 +#define AT_L1D_CACHESHAPE 35 +#define AT_L2_CACHESHAPE 36 +#define AT_L3_CACHESHAPE 37 + + + + +typedef struct { + Elf32_Word n_namesz; + Elf32_Word n_descsz; + Elf32_Word n_type; +} Elf32_Nhdr; + +typedef struct { + Elf64_Word n_namesz; + Elf64_Word n_descsz; + Elf64_Word n_type; +} Elf64_Nhdr; + + + + +#define ELF_NOTE_SOLARIS "SUNW Solaris" + + +#define ELF_NOTE_GNU "GNU" + + + + + +#define ELF_NOTE_PAGESIZE_HINT 1 + + +#define NT_GNU_ABI_TAG 1 +#define ELF_NOTE_ABI NT_GNU_ABI_TAG + + + +#define ELF_NOTE_OS_LINUX 0 +#define ELF_NOTE_OS_GNU 1 +#define ELF_NOTE_OS_SOLARIS2 2 +#define ELF_NOTE_OS_FREEBSD 3 + +#define NT_GNU_BUILD_ID 3 +#define NT_GNU_GOLD_VERSION 4 + + + +typedef struct { + Elf32_Xword m_value; + Elf32_Word m_info; + Elf32_Word m_poffset; + Elf32_Half m_repeat; + Elf32_Half m_stride; +} Elf32_Move; + +typedef struct { + Elf64_Xword m_value; + Elf64_Xword m_info; + Elf64_Xword m_poffset; + Elf64_Half m_repeat; + Elf64_Half m_stride; +} Elf64_Move; + + +#define ELF32_M_SYM(info) ((info) >> 8) +#define ELF32_M_SIZE(info) ((unsigned char) (info)) +#define ELF32_M_INFO(sym, size) (((sym) << 8) + (unsigned char) (size)) + +#define ELF64_M_SYM(info) ELF32_M_SYM (info) +#define ELF64_M_SIZE(info) ELF32_M_SIZE (info) +#define ELF64_M_INFO(sym, size) ELF32_M_INFO (sym, size) + +#define EF_CPU32 0x00810000 + +#define R_68K_NONE 0 +#define R_68K_32 1 +#define R_68K_16 2 +#define R_68K_8 3 +#define R_68K_PC32 4 +#define R_68K_PC16 5 +#define R_68K_PC8 6 +#define R_68K_GOT32 7 +#define R_68K_GOT16 8 +#define R_68K_GOT8 9 +#define R_68K_GOT32O 10 +#define R_68K_GOT16O 11 +#define R_68K_GOT8O 12 +#define R_68K_PLT32 13 +#define R_68K_PLT16 14 +#define R_68K_PLT8 15 +#define R_68K_PLT32O 16 +#define R_68K_PLT16O 17 +#define R_68K_PLT8O 18 +#define R_68K_COPY 19 +#define R_68K_GLOB_DAT 20 +#define R_68K_JMP_SLOT 21 +#define R_68K_RELATIVE 22 +#define R_68K_NUM 23 + +#define R_386_NONE 0 +#define R_386_32 1 +#define R_386_PC32 2 +#define R_386_GOT32 3 +#define R_386_PLT32 4 +#define R_386_COPY 5 +#define R_386_GLOB_DAT 6 +#define R_386_JMP_SLOT 7 +#define R_386_RELATIVE 8 +#define R_386_GOTOFF 9 +#define R_386_GOTPC 10 +#define R_386_32PLT 11 +#define R_386_TLS_TPOFF 14 +#define R_386_TLS_IE 15 +#define R_386_TLS_GOTIE 16 +#define R_386_TLS_LE 17 +#define R_386_TLS_GD 18 +#define R_386_TLS_LDM 19 +#define R_386_16 20 +#define R_386_PC16 21 +#define R_386_8 22 +#define R_386_PC8 23 +#define R_386_TLS_GD_32 24 +#define R_386_TLS_GD_PUSH 25 +#define R_386_TLS_GD_CALL 26 +#define R_386_TLS_GD_POP 27 +#define R_386_TLS_LDM_32 28 +#define R_386_TLS_LDM_PUSH 29 +#define R_386_TLS_LDM_CALL 30 +#define R_386_TLS_LDM_POP 31 +#define R_386_TLS_LDO_32 32 +#define R_386_TLS_IE_32 33 +#define R_386_TLS_LE_32 34 +#define R_386_TLS_DTPMOD32 35 +#define R_386_TLS_DTPOFF32 36 +#define R_386_TLS_TPOFF32 37 +#define R_386_SIZE32 38 +#define R_386_TLS_GOTDESC 39 +#define R_386_TLS_DESC_CALL 40 +#define R_386_TLS_DESC 41 +#define R_386_IRELATIVE 42 +#define R_386_GOT32X 43 +#define R_386_NUM 44 + + + + + +#define STT_SPARC_REGISTER 13 + + + +#define EF_SPARCV9_MM 3 +#define EF_SPARCV9_TSO 0 +#define EF_SPARCV9_PSO 1 +#define EF_SPARCV9_RMO 2 +#define EF_SPARC_LEDATA 0x800000 +#define EF_SPARC_EXT_MASK 0xFFFF00 +#define EF_SPARC_32PLUS 0x000100 +#define EF_SPARC_SUN_US1 0x000200 +#define EF_SPARC_HAL_R1 0x000400 +#define EF_SPARC_SUN_US3 0x000800 + + + +#define R_SPARC_NONE 0 +#define R_SPARC_8 1 +#define R_SPARC_16 2 +#define R_SPARC_32 3 +#define R_SPARC_DISP8 4 +#define R_SPARC_DISP16 5 +#define R_SPARC_DISP32 6 +#define R_SPARC_WDISP30 7 +#define R_SPARC_WDISP22 8 +#define R_SPARC_HI22 9 +#define R_SPARC_22 10 +#define R_SPARC_13 11 +#define R_SPARC_LO10 12 +#define R_SPARC_GOT10 13 +#define R_SPARC_GOT13 14 +#define R_SPARC_GOT22 15 +#define R_SPARC_PC10 16 +#define R_SPARC_PC22 17 +#define R_SPARC_WPLT30 18 +#define R_SPARC_COPY 19 +#define R_SPARC_GLOB_DAT 20 +#define R_SPARC_JMP_SLOT 21 +#define R_SPARC_RELATIVE 22 +#define R_SPARC_UA32 23 + + + +#define R_SPARC_PLT32 24 +#define R_SPARC_HIPLT22 25 +#define R_SPARC_LOPLT10 26 +#define R_SPARC_PCPLT32 27 +#define R_SPARC_PCPLT22 28 +#define R_SPARC_PCPLT10 29 +#define R_SPARC_10 30 +#define R_SPARC_11 31 +#define R_SPARC_64 32 +#define R_SPARC_OLO10 33 +#define R_SPARC_HH22 34 +#define R_SPARC_HM10 35 +#define R_SPARC_LM22 36 +#define R_SPARC_PC_HH22 37 +#define R_SPARC_PC_HM10 38 +#define R_SPARC_PC_LM22 39 +#define R_SPARC_WDISP16 40 +#define R_SPARC_WDISP19 41 +#define R_SPARC_GLOB_JMP 42 +#define R_SPARC_7 43 +#define R_SPARC_5 44 +#define R_SPARC_6 45 +#define R_SPARC_DISP64 46 +#define R_SPARC_PLT64 47 +#define R_SPARC_HIX22 48 +#define R_SPARC_LOX10 49 +#define R_SPARC_H44 50 +#define R_SPARC_M44 51 +#define R_SPARC_L44 52 +#define R_SPARC_REGISTER 53 +#define R_SPARC_UA64 54 +#define R_SPARC_UA16 55 +#define R_SPARC_TLS_GD_HI22 56 +#define R_SPARC_TLS_GD_LO10 57 +#define R_SPARC_TLS_GD_ADD 58 +#define R_SPARC_TLS_GD_CALL 59 +#define R_SPARC_TLS_LDM_HI22 60 +#define R_SPARC_TLS_LDM_LO10 61 +#define R_SPARC_TLS_LDM_ADD 62 +#define R_SPARC_TLS_LDM_CALL 63 +#define R_SPARC_TLS_LDO_HIX22 64 +#define R_SPARC_TLS_LDO_LOX10 65 +#define R_SPARC_TLS_LDO_ADD 66 +#define R_SPARC_TLS_IE_HI22 67 +#define R_SPARC_TLS_IE_LO10 68 +#define R_SPARC_TLS_IE_LD 69 +#define R_SPARC_TLS_IE_LDX 70 +#define R_SPARC_TLS_IE_ADD 71 +#define R_SPARC_TLS_LE_HIX22 72 +#define R_SPARC_TLS_LE_LOX10 73 +#define R_SPARC_TLS_DTPMOD32 74 +#define R_SPARC_TLS_DTPMOD64 75 +#define R_SPARC_TLS_DTPOFF32 76 +#define R_SPARC_TLS_DTPOFF64 77 +#define R_SPARC_TLS_TPOFF32 78 +#define R_SPARC_TLS_TPOFF64 79 +#define R_SPARC_GOTDATA_HIX22 80 +#define R_SPARC_GOTDATA_LOX10 81 +#define R_SPARC_GOTDATA_OP_HIX22 82 +#define R_SPARC_GOTDATA_OP_LOX10 83 +#define R_SPARC_GOTDATA_OP 84 +#define R_SPARC_H34 85 +#define R_SPARC_SIZE32 86 +#define R_SPARC_SIZE64 87 +#define R_SPARC_GNU_VTINHERIT 250 +#define R_SPARC_GNU_VTENTRY 251 +#define R_SPARC_REV32 252 + +#define R_SPARC_NUM 253 + + + +#define DT_SPARC_REGISTER 0x70000001 +#define DT_SPARC_NUM 2 + + +#define EF_MIPS_NOREORDER 1 +#define EF_MIPS_PIC 2 +#define EF_MIPS_CPIC 4 +#define EF_MIPS_XGOT 8 +#define EF_MIPS_64BIT_WHIRL 16 +#define EF_MIPS_ABI2 32 +#define EF_MIPS_ABI_ON32 64 +#define EF_MIPS_32BITMODE 256 +#define EF_MIPS_FP64 512 +#define EF_MIPS_NAN2008 1024 +#define EF_MIPS_ARCH 0xf0000000 + + + +#define EF_MIPS_ARCH_1 0x00000000 +#define EF_MIPS_ARCH_2 0x10000000 +#define EF_MIPS_ARCH_3 0x20000000 +#define EF_MIPS_ARCH_4 0x30000000 +#define EF_MIPS_ARCH_5 0x40000000 +#define EF_MIPS_ARCH_32 0x50000000 +#define EF_MIPS_ARCH_64 0x60000000 +#define EF_MIPS_ARCH_32R2 0x70000000 +#define EF_MIPS_ARCH_64R2 0x80000000 + + +#define E_MIPS_ARCH_1 0x00000000 +#define E_MIPS_ARCH_2 0x10000000 +#define E_MIPS_ARCH_3 0x20000000 +#define E_MIPS_ARCH_4 0x30000000 +#define E_MIPS_ARCH_5 0x40000000 +#define E_MIPS_ARCH_32 0x50000000 +#define E_MIPS_ARCH_64 0x60000000 + + + +#define SHN_MIPS_ACOMMON 0xff00 +#define SHN_MIPS_TEXT 0xff01 +#define SHN_MIPS_DATA 0xff02 +#define SHN_MIPS_SCOMMON 0xff03 +#define SHN_MIPS_SUNDEFINED 0xff04 + + + +#define SHT_MIPS_LIBLIST 0x70000000 +#define SHT_MIPS_MSYM 0x70000001 +#define SHT_MIPS_CONFLICT 0x70000002 +#define SHT_MIPS_GPTAB 0x70000003 +#define SHT_MIPS_UCODE 0x70000004 +#define SHT_MIPS_DEBUG 0x70000005 +#define SHT_MIPS_REGINFO 0x70000006 +#define SHT_MIPS_PACKAGE 0x70000007 +#define SHT_MIPS_PACKSYM 0x70000008 +#define SHT_MIPS_RELD 0x70000009 +#define SHT_MIPS_IFACE 0x7000000b +#define SHT_MIPS_CONTENT 0x7000000c +#define SHT_MIPS_OPTIONS 0x7000000d +#define SHT_MIPS_SHDR 0x70000010 +#define SHT_MIPS_FDESC 0x70000011 +#define SHT_MIPS_EXTSYM 0x70000012 +#define SHT_MIPS_DENSE 0x70000013 +#define SHT_MIPS_PDESC 0x70000014 +#define SHT_MIPS_LOCSYM 0x70000015 +#define SHT_MIPS_AUXSYM 0x70000016 +#define SHT_MIPS_OPTSYM 0x70000017 +#define SHT_MIPS_LOCSTR 0x70000018 +#define SHT_MIPS_LINE 0x70000019 +#define SHT_MIPS_RFDESC 0x7000001a +#define SHT_MIPS_DELTASYM 0x7000001b +#define SHT_MIPS_DELTAINST 0x7000001c +#define SHT_MIPS_DELTACLASS 0x7000001d +#define SHT_MIPS_DWARF 0x7000001e +#define SHT_MIPS_DELTADECL 0x7000001f +#define SHT_MIPS_SYMBOL_LIB 0x70000020 +#define SHT_MIPS_EVENTS 0x70000021 +#define SHT_MIPS_TRANSLATE 0x70000022 +#define SHT_MIPS_PIXIE 0x70000023 +#define SHT_MIPS_XLATE 0x70000024 +#define SHT_MIPS_XLATE_DEBUG 0x70000025 +#define SHT_MIPS_WHIRL 0x70000026 +#define SHT_MIPS_EH_REGION 0x70000027 +#define SHT_MIPS_XLATE_OLD 0x70000028 +#define SHT_MIPS_PDR_EXCEPTION 0x70000029 + + + +#define SHF_MIPS_GPREL 0x10000000 +#define SHF_MIPS_MERGE 0x20000000 +#define SHF_MIPS_ADDR 0x40000000 +#define SHF_MIPS_STRINGS 0x80000000 +#define SHF_MIPS_NOSTRIP 0x08000000 +#define SHF_MIPS_LOCAL 0x04000000 +#define SHF_MIPS_NAMES 0x02000000 +#define SHF_MIPS_NODUPE 0x01000000 + + + + + +#define STO_MIPS_DEFAULT 0x0 +#define STO_MIPS_INTERNAL 0x1 +#define STO_MIPS_HIDDEN 0x2 +#define STO_MIPS_PROTECTED 0x3 +#define STO_MIPS_PLT 0x8 +#define STO_MIPS_SC_ALIGN_UNUSED 0xff + + +#define STB_MIPS_SPLIT_COMMON 13 + + + +typedef union { + struct { + Elf32_Word gt_current_g_value; + Elf32_Word gt_unused; + } gt_header; + struct { + Elf32_Word gt_g_value; + Elf32_Word gt_bytes; + } gt_entry; +} Elf32_gptab; + + + +typedef struct { + Elf32_Word ri_gprmask; + Elf32_Word ri_cprmask[4]; + Elf32_Sword ri_gp_value; +} Elf32_RegInfo; + + + +typedef struct { + unsigned char kind; + + unsigned char size; + Elf32_Section section; + + Elf32_Word info; +} Elf_Options; + + + +#define ODK_NULL 0 +#define ODK_REGINFO 1 +#define ODK_EXCEPTIONS 2 +#define ODK_PAD 3 +#define ODK_HWPATCH 4 +#define ODK_FILL 5 +#define ODK_TAGS 6 +#define ODK_HWAND 7 +#define ODK_HWOR 8 + + + +#define OEX_FPU_MIN 0x1f +#define OEX_FPU_MAX 0x1f00 +#define OEX_PAGE0 0x10000 +#define OEX_SMM 0x20000 +#define OEX_FPDBUG 0x40000 +#define OEX_PRECISEFP OEX_FPDBUG +#define OEX_DISMISS 0x80000 + +#define OEX_FPU_INVAL 0x10 +#define OEX_FPU_DIV0 0x08 +#define OEX_FPU_OFLO 0x04 +#define OEX_FPU_UFLO 0x02 +#define OEX_FPU_INEX 0x01 + + + +#define OHW_R4KEOP 0x1 +#define OHW_R8KPFETCH 0x2 +#define OHW_R5KEOP 0x4 +#define OHW_R5KCVTL 0x8 + +#define OPAD_PREFIX 0x1 +#define OPAD_POSTFIX 0x2 +#define OPAD_SYMBOL 0x4 + + + +typedef struct { + Elf32_Word hwp_flags1; + Elf32_Word hwp_flags2; +} Elf_Options_Hw; + + + +#define OHWA0_R4KEOP_CHECKED 0x00000001 +#define OHWA1_R4KEOP_CLEAN 0x00000002 + + + +#define R_MIPS_NONE 0 +#define R_MIPS_16 1 +#define R_MIPS_32 2 +#define R_MIPS_REL32 3 +#define R_MIPS_26 4 +#define R_MIPS_HI16 5 +#define R_MIPS_LO16 6 +#define R_MIPS_GPREL16 7 +#define R_MIPS_LITERAL 8 +#define R_MIPS_GOT16 9 +#define R_MIPS_PC16 10 +#define R_MIPS_CALL16 11 +#define R_MIPS_GPREL32 12 + +#define R_MIPS_SHIFT5 16 +#define R_MIPS_SHIFT6 17 +#define R_MIPS_64 18 +#define R_MIPS_GOT_DISP 19 +#define R_MIPS_GOT_PAGE 20 +#define R_MIPS_GOT_OFST 21 +#define R_MIPS_GOT_HI16 22 +#define R_MIPS_GOT_LO16 23 +#define R_MIPS_SUB 24 +#define R_MIPS_INSERT_A 25 +#define R_MIPS_INSERT_B 26 +#define R_MIPS_DELETE 27 +#define R_MIPS_HIGHER 28 +#define R_MIPS_HIGHEST 29 +#define R_MIPS_CALL_HI16 30 +#define R_MIPS_CALL_LO16 31 +#define R_MIPS_SCN_DISP 32 +#define R_MIPS_REL16 33 +#define R_MIPS_ADD_IMMEDIATE 34 +#define R_MIPS_PJUMP 35 +#define R_MIPS_RELGOT 36 +#define R_MIPS_JALR 37 +#define R_MIPS_TLS_DTPMOD32 38 +#define R_MIPS_TLS_DTPREL32 39 +#define R_MIPS_TLS_DTPMOD64 40 +#define R_MIPS_TLS_DTPREL64 41 +#define R_MIPS_TLS_GD 42 +#define R_MIPS_TLS_LDM 43 +#define R_MIPS_TLS_DTPREL_HI16 44 +#define R_MIPS_TLS_DTPREL_LO16 45 +#define R_MIPS_TLS_GOTTPREL 46 +#define R_MIPS_TLS_TPREL32 47 +#define R_MIPS_TLS_TPREL64 48 +#define R_MIPS_TLS_TPREL_HI16 49 +#define R_MIPS_TLS_TPREL_LO16 50 +#define R_MIPS_GLOB_DAT 51 +#define R_MIPS_COPY 126 +#define R_MIPS_JUMP_SLOT 127 + +#define R_MIPS_NUM 128 + + + +#define PT_MIPS_REGINFO 0x70000000 +#define PT_MIPS_RTPROC 0x70000001 +#define PT_MIPS_OPTIONS 0x70000002 +#define PT_MIPS_ABIFLAGS 0x70000003 + + + +#define PF_MIPS_LOCAL 0x10000000 + + + +#define DT_MIPS_RLD_VERSION 0x70000001 +#define DT_MIPS_TIME_STAMP 0x70000002 +#define DT_MIPS_ICHECKSUM 0x70000003 +#define DT_MIPS_IVERSION 0x70000004 +#define DT_MIPS_FLAGS 0x70000005 +#define DT_MIPS_BASE_ADDRESS 0x70000006 +#define DT_MIPS_MSYM 0x70000007 +#define DT_MIPS_CONFLICT 0x70000008 +#define DT_MIPS_LIBLIST 0x70000009 +#define DT_MIPS_LOCAL_GOTNO 0x7000000a +#define DT_MIPS_CONFLICTNO 0x7000000b +#define DT_MIPS_LIBLISTNO 0x70000010 +#define DT_MIPS_SYMTABNO 0x70000011 +#define DT_MIPS_UNREFEXTNO 0x70000012 +#define DT_MIPS_GOTSYM 0x70000013 +#define DT_MIPS_HIPAGENO 0x70000014 +#define DT_MIPS_RLD_MAP 0x70000016 +#define DT_MIPS_DELTA_CLASS 0x70000017 +#define DT_MIPS_DELTA_CLASS_NO 0x70000018 + +#define DT_MIPS_DELTA_INSTANCE 0x70000019 +#define DT_MIPS_DELTA_INSTANCE_NO 0x7000001a + +#define DT_MIPS_DELTA_RELOC 0x7000001b +#define DT_MIPS_DELTA_RELOC_NO 0x7000001c + +#define DT_MIPS_DELTA_SYM 0x7000001d + +#define DT_MIPS_DELTA_SYM_NO 0x7000001e + +#define DT_MIPS_DELTA_CLASSSYM 0x70000020 + +#define DT_MIPS_DELTA_CLASSSYM_NO 0x70000021 + +#define DT_MIPS_CXX_FLAGS 0x70000022 +#define DT_MIPS_PIXIE_INIT 0x70000023 +#define DT_MIPS_SYMBOL_LIB 0x70000024 +#define DT_MIPS_LOCALPAGE_GOTIDX 0x70000025 +#define DT_MIPS_LOCAL_GOTIDX 0x70000026 +#define DT_MIPS_HIDDEN_GOTIDX 0x70000027 +#define DT_MIPS_PROTECTED_GOTIDX 0x70000028 +#define DT_MIPS_OPTIONS 0x70000029 +#define DT_MIPS_INTERFACE 0x7000002a +#define DT_MIPS_DYNSTR_ALIGN 0x7000002b +#define DT_MIPS_INTERFACE_SIZE 0x7000002c +#define DT_MIPS_RLD_TEXT_RESOLVE_ADDR 0x7000002d + +#define DT_MIPS_PERF_SUFFIX 0x7000002e + +#define DT_MIPS_COMPACT_SIZE 0x7000002f +#define DT_MIPS_GP_VALUE 0x70000030 +#define DT_MIPS_AUX_DYNAMIC 0x70000031 + +#define DT_MIPS_PLTGOT 0x70000032 + +#define DT_MIPS_RWPLT 0x70000034 +#define DT_MIPS_RLD_MAP_REL 0x70000035 +#define DT_MIPS_NUM 0x36 + + + +#define RHF_NONE 0 +#define RHF_QUICKSTART (1 << 0) +#define RHF_NOTPOT (1 << 1) +#define RHF_NO_LIBRARY_REPLACEMENT (1 << 2) +#define RHF_NO_MOVE (1 << 3) +#define RHF_SGI_ONLY (1 << 4) +#define RHF_GUARANTEE_INIT (1 << 5) +#define RHF_DELTA_C_PLUS_PLUS (1 << 6) +#define RHF_GUARANTEE_START_INIT (1 << 7) +#define RHF_PIXIE (1 << 8) +#define RHF_DEFAULT_DELAY_LOAD (1 << 9) +#define RHF_REQUICKSTART (1 << 10) +#define RHF_REQUICKSTARTED (1 << 11) +#define RHF_CORD (1 << 12) +#define RHF_NO_UNRES_UNDEF (1 << 13) +#define RHF_RLD_ORDER_SAFE (1 << 14) + + + +typedef struct { + Elf32_Word l_name; + Elf32_Word l_time_stamp; + Elf32_Word l_checksum; + Elf32_Word l_version; + Elf32_Word l_flags; +} Elf32_Lib; + +typedef struct { + Elf64_Word l_name; + Elf64_Word l_time_stamp; + Elf64_Word l_checksum; + Elf64_Word l_version; + Elf64_Word l_flags; +} Elf64_Lib; + + + + +#define LL_NONE 0 +#define LL_EXACT_MATCH (1 << 0) +#define LL_IGNORE_INT_VER (1 << 1) +#define LL_REQUIRE_MINOR (1 << 2) +#define LL_EXPORTS (1 << 3) +#define LL_DELAY_LOAD (1 << 4) +#define LL_DELTA (1 << 5) + + + +typedef Elf32_Addr Elf32_Conflict; + +typedef struct { + Elf32_Half version; + unsigned char isa_level; + unsigned char isa_rev; + unsigned char gpr_size; + unsigned char cpr1_size; + unsigned char cpr2_size; + unsigned char fp_abi; + Elf32_Word isa_ext; + Elf32_Word ases; + Elf32_Word flags1; + Elf32_Word flags2; +} Elf_MIPS_ABIFlags_v0; + +#define MIPS_AFL_REG_NONE 0x00 +#define MIPS_AFL_REG_32 0x01 +#define MIPS_AFL_REG_64 0x02 +#define MIPS_AFL_REG_128 0x03 + +#define MIPS_AFL_ASE_DSP 0x00000001 +#define MIPS_AFL_ASE_DSPR2 0x00000002 +#define MIPS_AFL_ASE_EVA 0x00000004 +#define MIPS_AFL_ASE_MCU 0x00000008 +#define MIPS_AFL_ASE_MDMX 0x00000010 +#define MIPS_AFL_ASE_MIPS3D 0x00000020 +#define MIPS_AFL_ASE_MT 0x00000040 +#define MIPS_AFL_ASE_SMARTMIPS 0x00000080 +#define MIPS_AFL_ASE_VIRT 0x00000100 +#define MIPS_AFL_ASE_MSA 0x00000200 +#define MIPS_AFL_ASE_MIPS16 0x00000400 +#define MIPS_AFL_ASE_MICROMIPS 0x00000800 +#define MIPS_AFL_ASE_XPA 0x00001000 +#define MIPS_AFL_ASE_MASK 0x00001fff + +#define MIPS_AFL_EXT_XLR 1 +#define MIPS_AFL_EXT_OCTEON2 2 +#define MIPS_AFL_EXT_OCTEONP 3 +#define MIPS_AFL_EXT_LOONGSON_3A 4 +#define MIPS_AFL_EXT_OCTEON 5 +#define MIPS_AFL_EXT_5900 6 +#define MIPS_AFL_EXT_4650 7 +#define MIPS_AFL_EXT_4010 8 +#define MIPS_AFL_EXT_4100 9 +#define MIPS_AFL_EXT_3900 10 +#define MIPS_AFL_EXT_10000 11 +#define MIPS_AFL_EXT_SB1 12 +#define MIPS_AFL_EXT_4111 13 +#define MIPS_AFL_EXT_4120 14 +#define MIPS_AFL_EXT_5400 15 +#define MIPS_AFL_EXT_5500 16 +#define MIPS_AFL_EXT_LOONGSON_2E 17 +#define MIPS_AFL_EXT_LOONGSON_2F 18 + +#define MIPS_AFL_FLAGS1_ODDSPREG 1 + +enum +{ + Val_GNU_MIPS_ABI_FP_ANY = 0, + Val_GNU_MIPS_ABI_FP_DOUBLE = 1, + Val_GNU_MIPS_ABI_FP_SINGLE = 2, + Val_GNU_MIPS_ABI_FP_SOFT = 3, + Val_GNU_MIPS_ABI_FP_OLD_64 = 4, + Val_GNU_MIPS_ABI_FP_XX = 5, + Val_GNU_MIPS_ABI_FP_64 = 6, + Val_GNU_MIPS_ABI_FP_64A = 7, + Val_GNU_MIPS_ABI_FP_MAX = 7 +}; + + + + +#define EF_PARISC_TRAPNIL 0x00010000 +#define EF_PARISC_EXT 0x00020000 +#define EF_PARISC_LSB 0x00040000 +#define EF_PARISC_WIDE 0x00080000 +#define EF_PARISC_NO_KABP 0x00100000 + +#define EF_PARISC_LAZYSWAP 0x00400000 +#define EF_PARISC_ARCH 0x0000ffff + + + +#define EFA_PARISC_1_0 0x020b +#define EFA_PARISC_1_1 0x0210 +#define EFA_PARISC_2_0 0x0214 + + + +#define SHN_PARISC_ANSI_COMMON 0xff00 + +#define SHN_PARISC_HUGE_COMMON 0xff01 + + + +#define SHT_PARISC_EXT 0x70000000 +#define SHT_PARISC_UNWIND 0x70000001 +#define SHT_PARISC_DOC 0x70000002 + + + +#define SHF_PARISC_SHORT 0x20000000 +#define SHF_PARISC_HUGE 0x40000000 +#define SHF_PARISC_SBP 0x80000000 + + + +#define STT_PARISC_MILLICODE 13 + +#define STT_HP_OPAQUE (STT_LOOS + 0x1) +#define STT_HP_STUB (STT_LOOS + 0x2) + + + +#define R_PARISC_NONE 0 +#define R_PARISC_DIR32 1 +#define R_PARISC_DIR21L 2 +#define R_PARISC_DIR17R 3 +#define R_PARISC_DIR17F 4 +#define R_PARISC_DIR14R 6 +#define R_PARISC_PCREL32 9 +#define R_PARISC_PCREL21L 10 +#define R_PARISC_PCREL17R 11 +#define R_PARISC_PCREL17F 12 +#define R_PARISC_PCREL14R 14 +#define R_PARISC_DPREL21L 18 +#define R_PARISC_DPREL14R 22 +#define R_PARISC_GPREL21L 26 +#define R_PARISC_GPREL14R 30 +#define R_PARISC_LTOFF21L 34 +#define R_PARISC_LTOFF14R 38 +#define R_PARISC_SECREL32 41 +#define R_PARISC_SEGBASE 48 +#define R_PARISC_SEGREL32 49 +#define R_PARISC_PLTOFF21L 50 +#define R_PARISC_PLTOFF14R 54 +#define R_PARISC_LTOFF_FPTR32 57 +#define R_PARISC_LTOFF_FPTR21L 58 +#define R_PARISC_LTOFF_FPTR14R 62 +#define R_PARISC_FPTR64 64 +#define R_PARISC_PLABEL32 65 +#define R_PARISC_PLABEL21L 66 +#define R_PARISC_PLABEL14R 70 +#define R_PARISC_PCREL64 72 +#define R_PARISC_PCREL22F 74 +#define R_PARISC_PCREL14WR 75 +#define R_PARISC_PCREL14DR 76 +#define R_PARISC_PCREL16F 77 +#define R_PARISC_PCREL16WF 78 +#define R_PARISC_PCREL16DF 79 +#define R_PARISC_DIR64 80 +#define R_PARISC_DIR14WR 83 +#define R_PARISC_DIR14DR 84 +#define R_PARISC_DIR16F 85 +#define R_PARISC_DIR16WF 86 +#define R_PARISC_DIR16DF 87 +#define R_PARISC_GPREL64 88 +#define R_PARISC_GPREL14WR 91 +#define R_PARISC_GPREL14DR 92 +#define R_PARISC_GPREL16F 93 +#define R_PARISC_GPREL16WF 94 +#define R_PARISC_GPREL16DF 95 +#define R_PARISC_LTOFF64 96 +#define R_PARISC_LTOFF14WR 99 +#define R_PARISC_LTOFF14DR 100 +#define R_PARISC_LTOFF16F 101 +#define R_PARISC_LTOFF16WF 102 +#define R_PARISC_LTOFF16DF 103 +#define R_PARISC_SECREL64 104 +#define R_PARISC_SEGREL64 112 +#define R_PARISC_PLTOFF14WR 115 +#define R_PARISC_PLTOFF14DR 116 +#define R_PARISC_PLTOFF16F 117 +#define R_PARISC_PLTOFF16WF 118 +#define R_PARISC_PLTOFF16DF 119 +#define R_PARISC_LTOFF_FPTR64 120 +#define R_PARISC_LTOFF_FPTR14WR 123 +#define R_PARISC_LTOFF_FPTR14DR 124 +#define R_PARISC_LTOFF_FPTR16F 125 +#define R_PARISC_LTOFF_FPTR16WF 126 +#define R_PARISC_LTOFF_FPTR16DF 127 +#define R_PARISC_LORESERVE 128 +#define R_PARISC_COPY 128 +#define R_PARISC_IPLT 129 +#define R_PARISC_EPLT 130 +#define R_PARISC_TPREL32 153 +#define R_PARISC_TPREL21L 154 +#define R_PARISC_TPREL14R 158 +#define R_PARISC_LTOFF_TP21L 162 +#define R_PARISC_LTOFF_TP14R 166 +#define R_PARISC_LTOFF_TP14F 167 +#define R_PARISC_TPREL64 216 +#define R_PARISC_TPREL14WR 219 +#define R_PARISC_TPREL14DR 220 +#define R_PARISC_TPREL16F 221 +#define R_PARISC_TPREL16WF 222 +#define R_PARISC_TPREL16DF 223 +#define R_PARISC_LTOFF_TP64 224 +#define R_PARISC_LTOFF_TP14WR 227 +#define R_PARISC_LTOFF_TP14DR 228 +#define R_PARISC_LTOFF_TP16F 229 +#define R_PARISC_LTOFF_TP16WF 230 +#define R_PARISC_LTOFF_TP16DF 231 +#define R_PARISC_GNU_VTENTRY 232 +#define R_PARISC_GNU_VTINHERIT 233 +#define R_PARISC_TLS_GD21L 234 +#define R_PARISC_TLS_GD14R 235 +#define R_PARISC_TLS_GDCALL 236 +#define R_PARISC_TLS_LDM21L 237 +#define R_PARISC_TLS_LDM14R 238 +#define R_PARISC_TLS_LDMCALL 239 +#define R_PARISC_TLS_LDO21L 240 +#define R_PARISC_TLS_LDO14R 241 +#define R_PARISC_TLS_DTPMOD32 242 +#define R_PARISC_TLS_DTPMOD64 243 +#define R_PARISC_TLS_DTPOFF32 244 +#define R_PARISC_TLS_DTPOFF64 245 +#define R_PARISC_TLS_LE21L R_PARISC_TPREL21L +#define R_PARISC_TLS_LE14R R_PARISC_TPREL14R +#define R_PARISC_TLS_IE21L R_PARISC_LTOFF_TP21L +#define R_PARISC_TLS_IE14R R_PARISC_LTOFF_TP14R +#define R_PARISC_TLS_TPREL32 R_PARISC_TPREL32 +#define R_PARISC_TLS_TPREL64 R_PARISC_TPREL64 +#define R_PARISC_HIRESERVE 255 + + + +#define PT_HP_TLS (PT_LOOS + 0x0) +#define PT_HP_CORE_NONE (PT_LOOS + 0x1) +#define PT_HP_CORE_VERSION (PT_LOOS + 0x2) +#define PT_HP_CORE_KERNEL (PT_LOOS + 0x3) +#define PT_HP_CORE_COMM (PT_LOOS + 0x4) +#define PT_HP_CORE_PROC (PT_LOOS + 0x5) +#define PT_HP_CORE_LOADABLE (PT_LOOS + 0x6) +#define PT_HP_CORE_STACK (PT_LOOS + 0x7) +#define PT_HP_CORE_SHM (PT_LOOS + 0x8) +#define PT_HP_CORE_MMF (PT_LOOS + 0x9) +#define PT_HP_PARALLEL (PT_LOOS + 0x10) +#define PT_HP_FASTBIND (PT_LOOS + 0x11) +#define PT_HP_OPT_ANNOT (PT_LOOS + 0x12) +#define PT_HP_HSL_ANNOT (PT_LOOS + 0x13) +#define PT_HP_STACK (PT_LOOS + 0x14) + +#define PT_PARISC_ARCHEXT 0x70000000 +#define PT_PARISC_UNWIND 0x70000001 + + + +#define PF_PARISC_SBP 0x08000000 + +#define PF_HP_PAGE_SIZE 0x00100000 +#define PF_HP_FAR_SHARED 0x00200000 +#define PF_HP_NEAR_SHARED 0x00400000 +#define PF_HP_CODE 0x01000000 +#define PF_HP_MODIFY 0x02000000 +#define PF_HP_LAZYSWAP 0x04000000 +#define PF_HP_SBP 0x08000000 + + + + + + +#define EF_ALPHA_32BIT 1 +#define EF_ALPHA_CANRELAX 2 + + + + +#define SHT_ALPHA_DEBUG 0x70000001 +#define SHT_ALPHA_REGINFO 0x70000002 + + + +#define SHF_ALPHA_GPREL 0x10000000 + + +#define STO_ALPHA_NOPV 0x80 +#define STO_ALPHA_STD_GPLOAD 0x88 + + + +#define R_ALPHA_NONE 0 +#define R_ALPHA_REFLONG 1 +#define R_ALPHA_REFQUAD 2 +#define R_ALPHA_GPREL32 3 +#define R_ALPHA_LITERAL 4 +#define R_ALPHA_LITUSE 5 +#define R_ALPHA_GPDISP 6 +#define R_ALPHA_BRADDR 7 +#define R_ALPHA_HINT 8 +#define R_ALPHA_SREL16 9 +#define R_ALPHA_SREL32 10 +#define R_ALPHA_SREL64 11 +#define R_ALPHA_GPRELHIGH 17 +#define R_ALPHA_GPRELLOW 18 +#define R_ALPHA_GPREL16 19 +#define R_ALPHA_COPY 24 +#define R_ALPHA_GLOB_DAT 25 +#define R_ALPHA_JMP_SLOT 26 +#define R_ALPHA_RELATIVE 27 +#define R_ALPHA_TLS_GD_HI 28 +#define R_ALPHA_TLSGD 29 +#define R_ALPHA_TLS_LDM 30 +#define R_ALPHA_DTPMOD64 31 +#define R_ALPHA_GOTDTPREL 32 +#define R_ALPHA_DTPREL64 33 +#define R_ALPHA_DTPRELHI 34 +#define R_ALPHA_DTPRELLO 35 +#define R_ALPHA_DTPREL16 36 +#define R_ALPHA_GOTTPREL 37 +#define R_ALPHA_TPREL64 38 +#define R_ALPHA_TPRELHI 39 +#define R_ALPHA_TPRELLO 40 +#define R_ALPHA_TPREL16 41 + +#define R_ALPHA_NUM 46 + + +#define LITUSE_ALPHA_ADDR 0 +#define LITUSE_ALPHA_BASE 1 +#define LITUSE_ALPHA_BYTOFF 2 +#define LITUSE_ALPHA_JSR 3 +#define LITUSE_ALPHA_TLS_GD 4 +#define LITUSE_ALPHA_TLS_LDM 5 + + +#define DT_ALPHA_PLTRO (DT_LOPROC + 0) +#define DT_ALPHA_NUM 1 + + + + +#define EF_PPC_EMB 0x80000000 + + +#define EF_PPC_RELOCATABLE 0x00010000 +#define EF_PPC_RELOCATABLE_LIB 0x00008000 + + + +#define R_PPC_NONE 0 +#define R_PPC_ADDR32 1 +#define R_PPC_ADDR24 2 +#define R_PPC_ADDR16 3 +#define R_PPC_ADDR16_LO 4 +#define R_PPC_ADDR16_HI 5 +#define R_PPC_ADDR16_HA 6 +#define R_PPC_ADDR14 7 +#define R_PPC_ADDR14_BRTAKEN 8 +#define R_PPC_ADDR14_BRNTAKEN 9 +#define R_PPC_REL24 10 +#define R_PPC_REL14 11 +#define R_PPC_REL14_BRTAKEN 12 +#define R_PPC_REL14_BRNTAKEN 13 +#define R_PPC_GOT16 14 +#define R_PPC_GOT16_LO 15 +#define R_PPC_GOT16_HI 16 +#define R_PPC_GOT16_HA 17 +#define R_PPC_PLTREL24 18 +#define R_PPC_COPY 19 +#define R_PPC_GLOB_DAT 20 +#define R_PPC_JMP_SLOT 21 +#define R_PPC_RELATIVE 22 +#define R_PPC_LOCAL24PC 23 +#define R_PPC_UADDR32 24 +#define R_PPC_UADDR16 25 +#define R_PPC_REL32 26 +#define R_PPC_PLT32 27 +#define R_PPC_PLTREL32 28 +#define R_PPC_PLT16_LO 29 +#define R_PPC_PLT16_HI 30 +#define R_PPC_PLT16_HA 31 +#define R_PPC_SDAREL16 32 +#define R_PPC_SECTOFF 33 +#define R_PPC_SECTOFF_LO 34 +#define R_PPC_SECTOFF_HI 35 +#define R_PPC_SECTOFF_HA 36 + + +#define R_PPC_TLS 67 +#define R_PPC_DTPMOD32 68 +#define R_PPC_TPREL16 69 +#define R_PPC_TPREL16_LO 70 +#define R_PPC_TPREL16_HI 71 +#define R_PPC_TPREL16_HA 72 +#define R_PPC_TPREL32 73 +#define R_PPC_DTPREL16 74 +#define R_PPC_DTPREL16_LO 75 +#define R_PPC_DTPREL16_HI 76 +#define R_PPC_DTPREL16_HA 77 +#define R_PPC_DTPREL32 78 +#define R_PPC_GOT_TLSGD16 79 +#define R_PPC_GOT_TLSGD16_LO 80 +#define R_PPC_GOT_TLSGD16_HI 81 +#define R_PPC_GOT_TLSGD16_HA 82 +#define R_PPC_GOT_TLSLD16 83 +#define R_PPC_GOT_TLSLD16_LO 84 +#define R_PPC_GOT_TLSLD16_HI 85 +#define R_PPC_GOT_TLSLD16_HA 86 +#define R_PPC_GOT_TPREL16 87 +#define R_PPC_GOT_TPREL16_LO 88 +#define R_PPC_GOT_TPREL16_HI 89 +#define R_PPC_GOT_TPREL16_HA 90 +#define R_PPC_GOT_DTPREL16 91 +#define R_PPC_GOT_DTPREL16_LO 92 +#define R_PPC_GOT_DTPREL16_HI 93 +#define R_PPC_GOT_DTPREL16_HA 94 +#define R_PPC_TLSGD 95 +#define R_PPC_TLSLD 96 + + +#define R_PPC_EMB_NADDR32 101 +#define R_PPC_EMB_NADDR16 102 +#define R_PPC_EMB_NADDR16_LO 103 +#define R_PPC_EMB_NADDR16_HI 104 +#define R_PPC_EMB_NADDR16_HA 105 +#define R_PPC_EMB_SDAI16 106 +#define R_PPC_EMB_SDA2I16 107 +#define R_PPC_EMB_SDA2REL 108 +#define R_PPC_EMB_SDA21 109 +#define R_PPC_EMB_MRKREF 110 +#define R_PPC_EMB_RELSEC16 111 +#define R_PPC_EMB_RELST_LO 112 +#define R_PPC_EMB_RELST_HI 113 +#define R_PPC_EMB_RELST_HA 114 +#define R_PPC_EMB_BIT_FLD 115 +#define R_PPC_EMB_RELSDA 116 + + +#define R_PPC_DIAB_SDA21_LO 180 +#define R_PPC_DIAB_SDA21_HI 181 +#define R_PPC_DIAB_SDA21_HA 182 +#define R_PPC_DIAB_RELSDA_LO 183 +#define R_PPC_DIAB_RELSDA_HI 184 +#define R_PPC_DIAB_RELSDA_HA 185 + + +#define R_PPC_IRELATIVE 248 + + +#define R_PPC_REL16 249 +#define R_PPC_REL16_LO 250 +#define R_PPC_REL16_HI 251 +#define R_PPC_REL16_HA 252 + + + +#define R_PPC_TOC16 255 + + +#define DT_PPC_GOT (DT_LOPROC + 0) +#define DT_PPC_OPT (DT_LOPROC + 1) +#define DT_PPC_NUM 2 + +#define PPC_OPT_TLS 1 + + +#define R_PPC64_NONE R_PPC_NONE +#define R_PPC64_ADDR32 R_PPC_ADDR32 +#define R_PPC64_ADDR24 R_PPC_ADDR24 +#define R_PPC64_ADDR16 R_PPC_ADDR16 +#define R_PPC64_ADDR16_LO R_PPC_ADDR16_LO +#define R_PPC64_ADDR16_HI R_PPC_ADDR16_HI +#define R_PPC64_ADDR16_HA R_PPC_ADDR16_HA +#define R_PPC64_ADDR14 R_PPC_ADDR14 +#define R_PPC64_ADDR14_BRTAKEN R_PPC_ADDR14_BRTAKEN +#define R_PPC64_ADDR14_BRNTAKEN R_PPC_ADDR14_BRNTAKEN +#define R_PPC64_REL24 R_PPC_REL24 +#define R_PPC64_REL14 R_PPC_REL14 +#define R_PPC64_REL14_BRTAKEN R_PPC_REL14_BRTAKEN +#define R_PPC64_REL14_BRNTAKEN R_PPC_REL14_BRNTAKEN +#define R_PPC64_GOT16 R_PPC_GOT16 +#define R_PPC64_GOT16_LO R_PPC_GOT16_LO +#define R_PPC64_GOT16_HI R_PPC_GOT16_HI +#define R_PPC64_GOT16_HA R_PPC_GOT16_HA + +#define R_PPC64_COPY R_PPC_COPY +#define R_PPC64_GLOB_DAT R_PPC_GLOB_DAT +#define R_PPC64_JMP_SLOT R_PPC_JMP_SLOT +#define R_PPC64_RELATIVE R_PPC_RELATIVE + +#define R_PPC64_UADDR32 R_PPC_UADDR32 +#define R_PPC64_UADDR16 R_PPC_UADDR16 +#define R_PPC64_REL32 R_PPC_REL32 +#define R_PPC64_PLT32 R_PPC_PLT32 +#define R_PPC64_PLTREL32 R_PPC_PLTREL32 +#define R_PPC64_PLT16_LO R_PPC_PLT16_LO +#define R_PPC64_PLT16_HI R_PPC_PLT16_HI +#define R_PPC64_PLT16_HA R_PPC_PLT16_HA + +#define R_PPC64_SECTOFF R_PPC_SECTOFF +#define R_PPC64_SECTOFF_LO R_PPC_SECTOFF_LO +#define R_PPC64_SECTOFF_HI R_PPC_SECTOFF_HI +#define R_PPC64_SECTOFF_HA R_PPC_SECTOFF_HA +#define R_PPC64_ADDR30 37 +#define R_PPC64_ADDR64 38 +#define R_PPC64_ADDR16_HIGHER 39 +#define R_PPC64_ADDR16_HIGHERA 40 +#define R_PPC64_ADDR16_HIGHEST 41 +#define R_PPC64_ADDR16_HIGHESTA 42 +#define R_PPC64_UADDR64 43 +#define R_PPC64_REL64 44 +#define R_PPC64_PLT64 45 +#define R_PPC64_PLTREL64 46 +#define R_PPC64_TOC16 47 +#define R_PPC64_TOC16_LO 48 +#define R_PPC64_TOC16_HI 49 +#define R_PPC64_TOC16_HA 50 +#define R_PPC64_TOC 51 +#define R_PPC64_PLTGOT16 52 +#define R_PPC64_PLTGOT16_LO 53 +#define R_PPC64_PLTGOT16_HI 54 +#define R_PPC64_PLTGOT16_HA 55 + +#define R_PPC64_ADDR16_DS 56 +#define R_PPC64_ADDR16_LO_DS 57 +#define R_PPC64_GOT16_DS 58 +#define R_PPC64_GOT16_LO_DS 59 +#define R_PPC64_PLT16_LO_DS 60 +#define R_PPC64_SECTOFF_DS 61 +#define R_PPC64_SECTOFF_LO_DS 62 +#define R_PPC64_TOC16_DS 63 +#define R_PPC64_TOC16_LO_DS 64 +#define R_PPC64_PLTGOT16_DS 65 +#define R_PPC64_PLTGOT16_LO_DS 66 + + +#define R_PPC64_TLS 67 +#define R_PPC64_DTPMOD64 68 +#define R_PPC64_TPREL16 69 +#define R_PPC64_TPREL16_LO 70 +#define R_PPC64_TPREL16_HI 71 +#define R_PPC64_TPREL16_HA 72 +#define R_PPC64_TPREL64 73 +#define R_PPC64_DTPREL16 74 +#define R_PPC64_DTPREL16_LO 75 +#define R_PPC64_DTPREL16_HI 76 +#define R_PPC64_DTPREL16_HA 77 +#define R_PPC64_DTPREL64 78 +#define R_PPC64_GOT_TLSGD16 79 +#define R_PPC64_GOT_TLSGD16_LO 80 +#define R_PPC64_GOT_TLSGD16_HI 81 +#define R_PPC64_GOT_TLSGD16_HA 82 +#define R_PPC64_GOT_TLSLD16 83 +#define R_PPC64_GOT_TLSLD16_LO 84 +#define R_PPC64_GOT_TLSLD16_HI 85 +#define R_PPC64_GOT_TLSLD16_HA 86 +#define R_PPC64_GOT_TPREL16_DS 87 +#define R_PPC64_GOT_TPREL16_LO_DS 88 +#define R_PPC64_GOT_TPREL16_HI 89 +#define R_PPC64_GOT_TPREL16_HA 90 +#define R_PPC64_GOT_DTPREL16_DS 91 +#define R_PPC64_GOT_DTPREL16_LO_DS 92 +#define R_PPC64_GOT_DTPREL16_HI 93 +#define R_PPC64_GOT_DTPREL16_HA 94 +#define R_PPC64_TPREL16_DS 95 +#define R_PPC64_TPREL16_LO_DS 96 +#define R_PPC64_TPREL16_HIGHER 97 +#define R_PPC64_TPREL16_HIGHERA 98 +#define R_PPC64_TPREL16_HIGHEST 99 +#define R_PPC64_TPREL16_HIGHESTA 100 +#define R_PPC64_DTPREL16_DS 101 +#define R_PPC64_DTPREL16_LO_DS 102 +#define R_PPC64_DTPREL16_HIGHER 103 +#define R_PPC64_DTPREL16_HIGHERA 104 +#define R_PPC64_DTPREL16_HIGHEST 105 +#define R_PPC64_DTPREL16_HIGHESTA 106 +#define R_PPC64_TLSGD 107 +#define R_PPC64_TLSLD 108 +#define R_PPC64_TOCSAVE 109 +#define R_PPC64_ADDR16_HIGH 110 +#define R_PPC64_ADDR16_HIGHA 111 +#define R_PPC64_TPREL16_HIGH 112 +#define R_PPC64_TPREL16_HIGHA 113 +#define R_PPC64_DTPREL16_HIGH 114 +#define R_PPC64_DTPREL16_HIGHA 115 + + +#define R_PPC64_JMP_IREL 247 +#define R_PPC64_IRELATIVE 248 +#define R_PPC64_REL16 249 +#define R_PPC64_REL16_LO 250 +#define R_PPC64_REL16_HI 251 +#define R_PPC64_REL16_HA 252 + +#define EF_PPC64_ABI 3 + +#define DT_PPC64_GLINK (DT_LOPROC + 0) +#define DT_PPC64_OPD (DT_LOPROC + 1) +#define DT_PPC64_OPDSZ (DT_LOPROC + 2) +#define DT_PPC64_OPT (DT_LOPROC + 3) +#define DT_PPC64_NUM 4 + +#define PPC64_OPT_TLS 1 +#define PPC64_OPT_MULTI_TOC 2 + +#define STO_PPC64_LOCAL_BIT 5 +#define STO_PPC64_LOCAL_MASK 0xe0 +#define PPC64_LOCAL_ENTRY_OFFSET(x) (1 << (((x)&0xe0)>>5) & 0xfc) + + +#define EF_ARM_RELEXEC 0x01 +#define EF_ARM_HASENTRY 0x02 +#define EF_ARM_INTERWORK 0x04 +#define EF_ARM_APCS_26 0x08 +#define EF_ARM_APCS_FLOAT 0x10 +#define EF_ARM_PIC 0x20 +#define EF_ARM_ALIGN8 0x40 +#define EF_ARM_NEW_ABI 0x80 +#define EF_ARM_OLD_ABI 0x100 +#define EF_ARM_SOFT_FLOAT 0x200 +#define EF_ARM_VFP_FLOAT 0x400 +#define EF_ARM_MAVERICK_FLOAT 0x800 + +#define EF_ARM_ABI_FLOAT_SOFT 0x200 +#define EF_ARM_ABI_FLOAT_HARD 0x400 + + +#define EF_ARM_SYMSARESORTED 0x04 +#define EF_ARM_DYNSYMSUSESEGIDX 0x08 +#define EF_ARM_MAPSYMSFIRST 0x10 +#define EF_ARM_EABIMASK 0XFF000000 + + +#define EF_ARM_BE8 0x00800000 +#define EF_ARM_LE8 0x00400000 + +#define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK) +#define EF_ARM_EABI_UNKNOWN 0x00000000 +#define EF_ARM_EABI_VER1 0x01000000 +#define EF_ARM_EABI_VER2 0x02000000 +#define EF_ARM_EABI_VER3 0x03000000 +#define EF_ARM_EABI_VER4 0x04000000 +#define EF_ARM_EABI_VER5 0x05000000 + + +#define STT_ARM_TFUNC STT_LOPROC +#define STT_ARM_16BIT STT_HIPROC + + +#define SHF_ARM_ENTRYSECT 0x10000000 +#define SHF_ARM_COMDEF 0x80000000 + + + +#define PF_ARM_SB 0x10000000 + +#define PF_ARM_PI 0x20000000 +#define PF_ARM_ABS 0x40000000 + + +#define PT_ARM_EXIDX (PT_LOPROC + 1) + + +#define SHT_ARM_EXIDX (SHT_LOPROC + 1) +#define SHT_ARM_PREEMPTMAP (SHT_LOPROC + 2) +#define SHT_ARM_ATTRIBUTES (SHT_LOPROC + 3) + +#define R_AARCH64_NONE 0 +#define R_AARCH64_P32_ABS32 1 +#define R_AARCH64_P32_COPY 180 +#define R_AARCH64_P32_GLOB_DAT 181 +#define R_AARCH64_P32_JUMP_SLOT 182 +#define R_AARCH64_P32_RELATIVE 183 +#define R_AARCH64_P32_TLS_DTPMOD 184 +#define R_AARCH64_P32_TLS_DTPREL 185 +#define R_AARCH64_P32_TLS_TPREL 186 +#define R_AARCH64_P32_TLSDESC 187 +#define R_AARCH64_P32_IRELATIVE 188 +#define R_AARCH64_ABS64 257 +#define R_AARCH64_ABS32 258 +#define R_AARCH64_ABS16 259 +#define R_AARCH64_PREL64 260 +#define R_AARCH64_PREL32 261 +#define R_AARCH64_PREL16 262 +#define R_AARCH64_MOVW_UABS_G0 263 +#define R_AARCH64_MOVW_UABS_G0_NC 264 +#define R_AARCH64_MOVW_UABS_G1 265 +#define R_AARCH64_MOVW_UABS_G1_NC 266 +#define R_AARCH64_MOVW_UABS_G2 267 +#define R_AARCH64_MOVW_UABS_G2_NC 268 +#define R_AARCH64_MOVW_UABS_G3 269 +#define R_AARCH64_MOVW_SABS_G0 270 +#define R_AARCH64_MOVW_SABS_G1 271 +#define R_AARCH64_MOVW_SABS_G2 272 +#define R_AARCH64_LD_PREL_LO19 273 +#define R_AARCH64_ADR_PREL_LO21 274 +#define R_AARCH64_ADR_PREL_PG_HI21 275 +#define R_AARCH64_ADR_PREL_PG_HI21_NC 276 +#define R_AARCH64_ADD_ABS_LO12_NC 277 +#define R_AARCH64_LDST8_ABS_LO12_NC 278 +#define R_AARCH64_TSTBR14 279 +#define R_AARCH64_CONDBR19 280 +#define R_AARCH64_JUMP26 282 +#define R_AARCH64_CALL26 283 +#define R_AARCH64_LDST16_ABS_LO12_NC 284 +#define R_AARCH64_LDST32_ABS_LO12_NC 285 +#define R_AARCH64_LDST64_ABS_LO12_NC 286 +#define R_AARCH64_MOVW_PREL_G0 287 +#define R_AARCH64_MOVW_PREL_G0_NC 288 +#define R_AARCH64_MOVW_PREL_G1 289 +#define R_AARCH64_MOVW_PREL_G1_NC 290 +#define R_AARCH64_MOVW_PREL_G2 291 +#define R_AARCH64_MOVW_PREL_G2_NC 292 +#define R_AARCH64_MOVW_PREL_G3 293 +#define R_AARCH64_LDST128_ABS_LO12_NC 299 +#define R_AARCH64_MOVW_GOTOFF_G0 300 +#define R_AARCH64_MOVW_GOTOFF_G0_NC 301 +#define R_AARCH64_MOVW_GOTOFF_G1 302 +#define R_AARCH64_MOVW_GOTOFF_G1_NC 303 +#define R_AARCH64_MOVW_GOTOFF_G2 304 +#define R_AARCH64_MOVW_GOTOFF_G2_NC 305 +#define R_AARCH64_MOVW_GOTOFF_G3 306 +#define R_AARCH64_GOTREL64 307 +#define R_AARCH64_GOTREL32 308 +#define R_AARCH64_GOT_LD_PREL19 309 +#define R_AARCH64_LD64_GOTOFF_LO15 310 +#define R_AARCH64_ADR_GOT_PAGE 311 +#define R_AARCH64_LD64_GOT_LO12_NC 312 +#define R_AARCH64_LD64_GOTPAGE_LO15 313 +#define R_AARCH64_TLSGD_ADR_PREL21 512 +#define R_AARCH64_TLSGD_ADR_PAGE21 513 +#define R_AARCH64_TLSGD_ADD_LO12_NC 514 +#define R_AARCH64_TLSGD_MOVW_G1 515 +#define R_AARCH64_TLSGD_MOVW_G0_NC 516 +#define R_AARCH64_TLSLD_ADR_PREL21 517 +#define R_AARCH64_TLSLD_ADR_PAGE21 518 +#define R_AARCH64_TLSLD_ADD_LO12_NC 519 +#define R_AARCH64_TLSLD_MOVW_G1 520 +#define R_AARCH64_TLSLD_MOVW_G0_NC 521 +#define R_AARCH64_TLSLD_LD_PREL19 522 +#define R_AARCH64_TLSLD_MOVW_DTPREL_G2 523 +#define R_AARCH64_TLSLD_MOVW_DTPREL_G1 524 +#define R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC 525 +#define R_AARCH64_TLSLD_MOVW_DTPREL_G0 526 +#define R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC 527 +#define R_AARCH64_TLSLD_ADD_DTPREL_HI12 528 +#define R_AARCH64_TLSLD_ADD_DTPREL_LO12 529 +#define R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC 530 +#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12 531 +#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC 532 +#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12 533 +#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC 534 +#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12 535 +#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC 536 +#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12 537 +#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC 538 +#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 539 +#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC 540 +#define R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 541 +#define R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC 542 +#define R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 543 +#define R_AARCH64_TLSLE_MOVW_TPREL_G2 544 +#define R_AARCH64_TLSLE_MOVW_TPREL_G1 545 +#define R_AARCH64_TLSLE_MOVW_TPREL_G1_NC 546 +#define R_AARCH64_TLSLE_MOVW_TPREL_G0 547 +#define R_AARCH64_TLSLE_MOVW_TPREL_G0_NC 548 +#define R_AARCH64_TLSLE_ADD_TPREL_HI12 549 +#define R_AARCH64_TLSLE_ADD_TPREL_LO12 550 +#define R_AARCH64_TLSLE_ADD_TPREL_LO12_NC 551 +#define R_AARCH64_TLSLE_LDST8_TPREL_LO12 552 +#define R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC 553 +#define R_AARCH64_TLSLE_LDST16_TPREL_LO12 554 +#define R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC 555 +#define R_AARCH64_TLSLE_LDST32_TPREL_LO12 556 +#define R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC 557 +#define R_AARCH64_TLSLE_LDST64_TPREL_LO12 558 +#define R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC 559 +#define R_AARCH64_TLSDESC_LD_PREL19 560 +#define R_AARCH64_TLSDESC_ADR_PREL21 561 +#define R_AARCH64_TLSDESC_ADR_PAGE21 562 +#define R_AARCH64_TLSDESC_LD64_LO12 563 +#define R_AARCH64_TLSDESC_ADD_LO12 564 +#define R_AARCH64_TLSDESC_OFF_G1 565 +#define R_AARCH64_TLSDESC_OFF_G0_NC 566 +#define R_AARCH64_TLSDESC_LDR 567 +#define R_AARCH64_TLSDESC_ADD 568 +#define R_AARCH64_TLSDESC_CALL 569 +#define R_AARCH64_TLSLE_LDST128_TPREL_LO12 570 +#define R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC 571 +#define R_AARCH64_TLSLD_LDST128_DTPREL_LO12 572 +#define R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC 573 +#define R_AARCH64_COPY 1024 +#define R_AARCH64_GLOB_DAT 1025 +#define R_AARCH64_JUMP_SLOT 1026 +#define R_AARCH64_RELATIVE 1027 +#define R_AARCH64_TLS_DTPMOD 1028 +#define R_AARCH64_TLS_DTPMOD64 1028 +#define R_AARCH64_TLS_DTPREL 1029 +#define R_AARCH64_TLS_DTPREL64 1029 +#define R_AARCH64_TLS_TPREL 1030 +#define R_AARCH64_TLS_TPREL64 1030 +#define R_AARCH64_TLSDESC 1031 + + +#define R_ARM_NONE 0 +#define R_ARM_PC24 1 +#define R_ARM_ABS32 2 +#define R_ARM_REL32 3 +#define R_ARM_PC13 4 +#define R_ARM_ABS16 5 +#define R_ARM_ABS12 6 +#define R_ARM_THM_ABS5 7 +#define R_ARM_ABS8 8 +#define R_ARM_SBREL32 9 +#define R_ARM_THM_PC22 10 +#define R_ARM_THM_PC8 11 +#define R_ARM_AMP_VCALL9 12 +#define R_ARM_TLS_DESC 13 +#define R_ARM_THM_SWI8 14 +#define R_ARM_XPC25 15 +#define R_ARM_THM_XPC22 16 +#define R_ARM_TLS_DTPMOD32 17 +#define R_ARM_TLS_DTPOFF32 18 +#define R_ARM_TLS_TPOFF32 19 +#define R_ARM_COPY 20 +#define R_ARM_GLOB_DAT 21 +#define R_ARM_JUMP_SLOT 22 +#define R_ARM_RELATIVE 23 +#define R_ARM_GOTOFF 24 +#define R_ARM_GOTPC 25 +#define R_ARM_GOT32 26 +#define R_ARM_PLT32 27 +#define R_ARM_CALL 28 +#define R_ARM_JUMP24 29 +#define R_ARM_THM_JUMP24 30 +#define R_ARM_BASE_ABS 31 +#define R_ARM_ALU_PCREL_7_0 32 +#define R_ARM_ALU_PCREL_15_8 33 +#define R_ARM_ALU_PCREL_23_15 34 +#define R_ARM_LDR_SBREL_11_0 35 +#define R_ARM_ALU_SBREL_19_12 36 +#define R_ARM_ALU_SBREL_27_20 37 +#define R_ARM_TARGET1 38 +#define R_ARM_SBREL31 39 +#define R_ARM_V4BX 40 +#define R_ARM_TARGET2 41 +#define R_ARM_PREL31 42 +#define R_ARM_MOVW_ABS_NC 43 +#define R_ARM_MOVT_ABS 44 +#define R_ARM_MOVW_PREL_NC 45 +#define R_ARM_MOVT_PREL 46 +#define R_ARM_THM_MOVW_ABS_NC 47 +#define R_ARM_THM_MOVT_ABS 48 +#define R_ARM_THM_MOVW_PREL_NC 49 +#define R_ARM_THM_MOVT_PREL 50 +#define R_ARM_THM_JUMP19 51 +#define R_ARM_THM_JUMP6 52 +#define R_ARM_THM_ALU_PREL_11_0 53 +#define R_ARM_THM_PC12 54 +#define R_ARM_ABS32_NOI 55 +#define R_ARM_REL32_NOI 56 +#define R_ARM_ALU_PC_G0_NC 57 +#define R_ARM_ALU_PC_G0 58 +#define R_ARM_ALU_PC_G1_NC 59 +#define R_ARM_ALU_PC_G1 60 +#define R_ARM_ALU_PC_G2 61 +#define R_ARM_LDR_PC_G1 62 +#define R_ARM_LDR_PC_G2 63 +#define R_ARM_LDRS_PC_G0 64 +#define R_ARM_LDRS_PC_G1 65 +#define R_ARM_LDRS_PC_G2 66 +#define R_ARM_LDC_PC_G0 67 +#define R_ARM_LDC_PC_G1 68 +#define R_ARM_LDC_PC_G2 69 +#define R_ARM_ALU_SB_G0_NC 70 +#define R_ARM_ALU_SB_G0 71 +#define R_ARM_ALU_SB_G1_NC 72 +#define R_ARM_ALU_SB_G1 73 +#define R_ARM_ALU_SB_G2 74 +#define R_ARM_LDR_SB_G0 75 +#define R_ARM_LDR_SB_G1 76 +#define R_ARM_LDR_SB_G2 77 +#define R_ARM_LDRS_SB_G0 78 +#define R_ARM_LDRS_SB_G1 79 +#define R_ARM_LDRS_SB_G2 80 +#define R_ARM_LDC_SB_G0 81 +#define R_ARM_LDC_SB_G1 82 +#define R_ARM_LDC_SB_G2 83 +#define R_ARM_MOVW_BREL_NC 84 +#define R_ARM_MOVT_BREL 85 +#define R_ARM_MOVW_BREL 86 +#define R_ARM_THM_MOVW_BREL_NC 87 +#define R_ARM_THM_MOVT_BREL 88 +#define R_ARM_THM_MOVW_BREL 89 +#define R_ARM_TLS_GOTDESC 90 +#define R_ARM_TLS_CALL 91 +#define R_ARM_TLS_DESCSEQ 92 +#define R_ARM_THM_TLS_CALL 93 +#define R_ARM_PLT32_ABS 94 +#define R_ARM_GOT_ABS 95 +#define R_ARM_GOT_PREL 96 +#define R_ARM_GOT_BREL12 97 +#define R_ARM_GOTOFF12 98 +#define R_ARM_GOTRELAX 99 +#define R_ARM_GNU_VTENTRY 100 +#define R_ARM_GNU_VTINHERIT 101 +#define R_ARM_THM_PC11 102 +#define R_ARM_THM_PC9 103 +#define R_ARM_TLS_GD32 104 + +#define R_ARM_TLS_LDM32 105 + +#define R_ARM_TLS_LDO32 106 + +#define R_ARM_TLS_IE32 107 + +#define R_ARM_TLS_LE32 108 +#define R_ARM_TLS_LDO12 109 +#define R_ARM_TLS_LE12 110 +#define R_ARM_TLS_IE12GP 111 +#define R_ARM_ME_TOO 128 +#define R_ARM_THM_TLS_DESCSEQ 129 +#define R_ARM_THM_TLS_DESCSEQ16 129 +#define R_ARM_THM_TLS_DESCSEQ32 130 +#define R_ARM_THM_GOT_BREL12 131 +#define R_ARM_IRELATIVE 160 +#define R_ARM_RXPC25 249 +#define R_ARM_RSBREL32 250 +#define R_ARM_THM_RPC22 251 +#define R_ARM_RREL32 252 +#define R_ARM_RABS22 253 +#define R_ARM_RPC24 254 +#define R_ARM_RBASE 255 + +#define R_ARM_NUM 256 + + + + +#define EF_IA_64_MASKOS 0x0000000f +#define EF_IA_64_ABI64 0x00000010 +#define EF_IA_64_ARCH 0xff000000 + + +#define PT_IA_64_ARCHEXT (PT_LOPROC + 0) +#define PT_IA_64_UNWIND (PT_LOPROC + 1) +#define PT_IA_64_HP_OPT_ANOT (PT_LOOS + 0x12) +#define PT_IA_64_HP_HSL_ANOT (PT_LOOS + 0x13) +#define PT_IA_64_HP_STACK (PT_LOOS + 0x14) + + +#define PF_IA_64_NORECOV 0x80000000 + + +#define SHT_IA_64_EXT (SHT_LOPROC + 0) +#define SHT_IA_64_UNWIND (SHT_LOPROC + 1) + + +#define SHF_IA_64_SHORT 0x10000000 +#define SHF_IA_64_NORECOV 0x20000000 + + +#define DT_IA_64_PLT_RESERVE (DT_LOPROC + 0) +#define DT_IA_64_NUM 1 + + +#define R_IA64_NONE 0x00 +#define R_IA64_IMM14 0x21 +#define R_IA64_IMM22 0x22 +#define R_IA64_IMM64 0x23 +#define R_IA64_DIR32MSB 0x24 +#define R_IA64_DIR32LSB 0x25 +#define R_IA64_DIR64MSB 0x26 +#define R_IA64_DIR64LSB 0x27 +#define R_IA64_GPREL22 0x2a +#define R_IA64_GPREL64I 0x2b +#define R_IA64_GPREL32MSB 0x2c +#define R_IA64_GPREL32LSB 0x2d +#define R_IA64_GPREL64MSB 0x2e +#define R_IA64_GPREL64LSB 0x2f +#define R_IA64_LTOFF22 0x32 +#define R_IA64_LTOFF64I 0x33 +#define R_IA64_PLTOFF22 0x3a +#define R_IA64_PLTOFF64I 0x3b +#define R_IA64_PLTOFF64MSB 0x3e +#define R_IA64_PLTOFF64LSB 0x3f +#define R_IA64_FPTR64I 0x43 +#define R_IA64_FPTR32MSB 0x44 +#define R_IA64_FPTR32LSB 0x45 +#define R_IA64_FPTR64MSB 0x46 +#define R_IA64_FPTR64LSB 0x47 +#define R_IA64_PCREL60B 0x48 +#define R_IA64_PCREL21B 0x49 +#define R_IA64_PCREL21M 0x4a +#define R_IA64_PCREL21F 0x4b +#define R_IA64_PCREL32MSB 0x4c +#define R_IA64_PCREL32LSB 0x4d +#define R_IA64_PCREL64MSB 0x4e +#define R_IA64_PCREL64LSB 0x4f +#define R_IA64_LTOFF_FPTR22 0x52 +#define R_IA64_LTOFF_FPTR64I 0x53 +#define R_IA64_LTOFF_FPTR32MSB 0x54 +#define R_IA64_LTOFF_FPTR32LSB 0x55 +#define R_IA64_LTOFF_FPTR64MSB 0x56 +#define R_IA64_LTOFF_FPTR64LSB 0x57 +#define R_IA64_SEGREL32MSB 0x5c +#define R_IA64_SEGREL32LSB 0x5d +#define R_IA64_SEGREL64MSB 0x5e +#define R_IA64_SEGREL64LSB 0x5f +#define R_IA64_SECREL32MSB 0x64 +#define R_IA64_SECREL32LSB 0x65 +#define R_IA64_SECREL64MSB 0x66 +#define R_IA64_SECREL64LSB 0x67 +#define R_IA64_REL32MSB 0x6c +#define R_IA64_REL32LSB 0x6d +#define R_IA64_REL64MSB 0x6e +#define R_IA64_REL64LSB 0x6f +#define R_IA64_LTV32MSB 0x74 +#define R_IA64_LTV32LSB 0x75 +#define R_IA64_LTV64MSB 0x76 +#define R_IA64_LTV64LSB 0x77 +#define R_IA64_PCREL21BI 0x79 +#define R_IA64_PCREL22 0x7a +#define R_IA64_PCREL64I 0x7b +#define R_IA64_IPLTMSB 0x80 +#define R_IA64_IPLTLSB 0x81 +#define R_IA64_COPY 0x84 +#define R_IA64_SUB 0x85 +#define R_IA64_LTOFF22X 0x86 +#define R_IA64_LDXMOV 0x87 +#define R_IA64_TPREL14 0x91 +#define R_IA64_TPREL22 0x92 +#define R_IA64_TPREL64I 0x93 +#define R_IA64_TPREL64MSB 0x96 +#define R_IA64_TPREL64LSB 0x97 +#define R_IA64_LTOFF_TPREL22 0x9a +#define R_IA64_DTPMOD64MSB 0xa6 +#define R_IA64_DTPMOD64LSB 0xa7 +#define R_IA64_LTOFF_DTPMOD22 0xaa +#define R_IA64_DTPREL14 0xb1 +#define R_IA64_DTPREL22 0xb2 +#define R_IA64_DTPREL64I 0xb3 +#define R_IA64_DTPREL32MSB 0xb4 +#define R_IA64_DTPREL32LSB 0xb5 +#define R_IA64_DTPREL64MSB 0xb6 +#define R_IA64_DTPREL64LSB 0xb7 +#define R_IA64_LTOFF_DTPREL22 0xba + + +#define EF_SH_MACH_MASK 0x1f +#define EF_SH_UNKNOWN 0x0 +#define EF_SH1 0x1 +#define EF_SH2 0x2 +#define EF_SH3 0x3 +#define EF_SH_DSP 0x4 +#define EF_SH3_DSP 0x5 +#define EF_SH4AL_DSP 0x6 +#define EF_SH3E 0x8 +#define EF_SH4 0x9 +#define EF_SH2E 0xb +#define EF_SH4A 0xc +#define EF_SH2A 0xd +#define EF_SH4_NOFPU 0x10 +#define EF_SH4A_NOFPU 0x11 +#define EF_SH4_NOMMU_NOFPU 0x12 +#define EF_SH2A_NOFPU 0x13 +#define EF_SH3_NOMMU 0x14 +#define EF_SH2A_SH4_NOFPU 0x15 +#define EF_SH2A_SH3_NOFPU 0x16 +#define EF_SH2A_SH4 0x17 +#define EF_SH2A_SH3E 0x18 + +#define R_SH_NONE 0 +#define R_SH_DIR32 1 +#define R_SH_REL32 2 +#define R_SH_DIR8WPN 3 +#define R_SH_IND12W 4 +#define R_SH_DIR8WPL 5 +#define R_SH_DIR8WPZ 6 +#define R_SH_DIR8BP 7 +#define R_SH_DIR8W 8 +#define R_SH_DIR8L 9 +#define R_SH_SWITCH16 25 +#define R_SH_SWITCH32 26 +#define R_SH_USES 27 +#define R_SH_COUNT 28 +#define R_SH_ALIGN 29 +#define R_SH_CODE 30 +#define R_SH_DATA 31 +#define R_SH_LABEL 32 +#define R_SH_SWITCH8 33 +#define R_SH_GNU_VTINHERIT 34 +#define R_SH_GNU_VTENTRY 35 +#define R_SH_TLS_GD_32 144 +#define R_SH_TLS_LD_32 145 +#define R_SH_TLS_LDO_32 146 +#define R_SH_TLS_IE_32 147 +#define R_SH_TLS_LE_32 148 +#define R_SH_TLS_DTPMOD32 149 +#define R_SH_TLS_DTPOFF32 150 +#define R_SH_TLS_TPOFF32 151 +#define R_SH_GOT32 160 +#define R_SH_PLT32 161 +#define R_SH_COPY 162 +#define R_SH_GLOB_DAT 163 +#define R_SH_JMP_SLOT 164 +#define R_SH_RELATIVE 165 +#define R_SH_GOTOFF 166 +#define R_SH_GOTPC 167 +#define R_SH_GOT20 201 +#define R_SH_GOTOFF20 202 +#define R_SH_GOTFUNCDESC 203 +#define R_SH_GOTFUNCDEST20 204 +#define R_SH_GOTOFFFUNCDESC 205 +#define R_SH_GOTOFFFUNCDEST20 206 +#define R_SH_FUNCDESC 207 +#define R_SH_FUNCDESC_VALUE 208 + +#define R_SH_NUM 256 + + + +#define R_390_NONE 0 +#define R_390_8 1 +#define R_390_12 2 +#define R_390_16 3 +#define R_390_32 4 +#define R_390_PC32 5 +#define R_390_GOT12 6 +#define R_390_GOT32 7 +#define R_390_PLT32 8 +#define R_390_COPY 9 +#define R_390_GLOB_DAT 10 +#define R_390_JMP_SLOT 11 +#define R_390_RELATIVE 12 +#define R_390_GOTOFF32 13 +#define R_390_GOTPC 14 +#define R_390_GOT16 15 +#define R_390_PC16 16 +#define R_390_PC16DBL 17 +#define R_390_PLT16DBL 18 +#define R_390_PC32DBL 19 +#define R_390_PLT32DBL 20 +#define R_390_GOTPCDBL 21 +#define R_390_64 22 +#define R_390_PC64 23 +#define R_390_GOT64 24 +#define R_390_PLT64 25 +#define R_390_GOTENT 26 +#define R_390_GOTOFF16 27 +#define R_390_GOTOFF64 28 +#define R_390_GOTPLT12 29 +#define R_390_GOTPLT16 30 +#define R_390_GOTPLT32 31 +#define R_390_GOTPLT64 32 +#define R_390_GOTPLTENT 33 +#define R_390_PLTOFF16 34 +#define R_390_PLTOFF32 35 +#define R_390_PLTOFF64 36 +#define R_390_TLS_LOAD 37 +#define R_390_TLS_GDCALL 38 + +#define R_390_TLS_LDCALL 39 + +#define R_390_TLS_GD32 40 + +#define R_390_TLS_GD64 41 + +#define R_390_TLS_GOTIE12 42 + +#define R_390_TLS_GOTIE32 43 + +#define R_390_TLS_GOTIE64 44 + +#define R_390_TLS_LDM32 45 + +#define R_390_TLS_LDM64 46 + +#define R_390_TLS_IE32 47 + +#define R_390_TLS_IE64 48 + +#define R_390_TLS_IEENT 49 + +#define R_390_TLS_LE32 50 + +#define R_390_TLS_LE64 51 + +#define R_390_TLS_LDO32 52 + +#define R_390_TLS_LDO64 53 + +#define R_390_TLS_DTPMOD 54 +#define R_390_TLS_DTPOFF 55 +#define R_390_TLS_TPOFF 56 + +#define R_390_20 57 +#define R_390_GOT20 58 +#define R_390_GOTPLT20 59 +#define R_390_TLS_GOTIE20 60 + + +#define R_390_NUM 61 + + + +#define R_CRIS_NONE 0 +#define R_CRIS_8 1 +#define R_CRIS_16 2 +#define R_CRIS_32 3 +#define R_CRIS_8_PCREL 4 +#define R_CRIS_16_PCREL 5 +#define R_CRIS_32_PCREL 6 +#define R_CRIS_GNU_VTINHERIT 7 +#define R_CRIS_GNU_VTENTRY 8 +#define R_CRIS_COPY 9 +#define R_CRIS_GLOB_DAT 10 +#define R_CRIS_JUMP_SLOT 11 +#define R_CRIS_RELATIVE 12 +#define R_CRIS_16_GOT 13 +#define R_CRIS_32_GOT 14 +#define R_CRIS_16_GOTPLT 15 +#define R_CRIS_32_GOTPLT 16 +#define R_CRIS_32_GOTREL 17 +#define R_CRIS_32_PLT_GOTREL 18 +#define R_CRIS_32_PLT_PCREL 19 + +#define R_CRIS_NUM 20 + + + +#define R_X86_64_NONE 0 +#define R_X86_64_64 1 +#define R_X86_64_PC32 2 +#define R_X86_64_GOT32 3 +#define R_X86_64_PLT32 4 +#define R_X86_64_COPY 5 +#define R_X86_64_GLOB_DAT 6 +#define R_X86_64_JUMP_SLOT 7 +#define R_X86_64_RELATIVE 8 +#define R_X86_64_GOTPCREL 9 + +#define R_X86_64_32 10 +#define R_X86_64_32S 11 +#define R_X86_64_16 12 +#define R_X86_64_PC16 13 +#define R_X86_64_8 14 +#define R_X86_64_PC8 15 +#define R_X86_64_DTPMOD64 16 +#define R_X86_64_DTPOFF64 17 +#define R_X86_64_TPOFF64 18 +#define R_X86_64_TLSGD 19 + +#define R_X86_64_TLSLD 20 + +#define R_X86_64_DTPOFF32 21 +#define R_X86_64_GOTTPOFF 22 + +#define R_X86_64_TPOFF32 23 +#define R_X86_64_PC64 24 +#define R_X86_64_GOTOFF64 25 +#define R_X86_64_GOTPC32 26 +#define R_X86_64_GOT64 27 +#define R_X86_64_GOTPCREL64 28 +#define R_X86_64_GOTPC64 29 +#define R_X86_64_GOTPLT64 30 +#define R_X86_64_PLTOFF64 31 +#define R_X86_64_SIZE32 32 +#define R_X86_64_SIZE64 33 + +#define R_X86_64_GOTPC32_TLSDESC 34 +#define R_X86_64_TLSDESC_CALL 35 + +#define R_X86_64_TLSDESC 36 +#define R_X86_64_IRELATIVE 37 +#define R_X86_64_RELATIVE64 38 +#define R_X86_64_GOTPCRELX 41 +#define R_X86_64_REX_GOTPCRELX 42 +#define R_X86_64_NUM 43 + + + +#define R_MN10300_NONE 0 +#define R_MN10300_32 1 +#define R_MN10300_16 2 +#define R_MN10300_8 3 +#define R_MN10300_PCREL32 4 +#define R_MN10300_PCREL16 5 +#define R_MN10300_PCREL8 6 +#define R_MN10300_GNU_VTINHERIT 7 +#define R_MN10300_GNU_VTENTRY 8 +#define R_MN10300_24 9 +#define R_MN10300_GOTPC32 10 +#define R_MN10300_GOTPC16 11 +#define R_MN10300_GOTOFF32 12 +#define R_MN10300_GOTOFF24 13 +#define R_MN10300_GOTOFF16 14 +#define R_MN10300_PLT32 15 +#define R_MN10300_PLT16 16 +#define R_MN10300_GOT32 17 +#define R_MN10300_GOT24 18 +#define R_MN10300_GOT16 19 +#define R_MN10300_COPY 20 +#define R_MN10300_GLOB_DAT 21 +#define R_MN10300_JMP_SLOT 22 +#define R_MN10300_RELATIVE 23 + +#define R_MN10300_NUM 24 + + + +#define R_M32R_NONE 0 +#define R_M32R_16 1 +#define R_M32R_32 2 +#define R_M32R_24 3 +#define R_M32R_10_PCREL 4 +#define R_M32R_18_PCREL 5 +#define R_M32R_26_PCREL 6 +#define R_M32R_HI16_ULO 7 +#define R_M32R_HI16_SLO 8 +#define R_M32R_LO16 9 +#define R_M32R_SDA16 10 +#define R_M32R_GNU_VTINHERIT 11 +#define R_M32R_GNU_VTENTRY 12 + +#define R_M32R_16_RELA 33 +#define R_M32R_32_RELA 34 +#define R_M32R_24_RELA 35 +#define R_M32R_10_PCREL_RELA 36 +#define R_M32R_18_PCREL_RELA 37 +#define R_M32R_26_PCREL_RELA 38 +#define R_M32R_HI16_ULO_RELA 39 +#define R_M32R_HI16_SLO_RELA 40 +#define R_M32R_LO16_RELA 41 +#define R_M32R_SDA16_RELA 42 +#define R_M32R_RELA_GNU_VTINHERIT 43 +#define R_M32R_RELA_GNU_VTENTRY 44 +#define R_M32R_REL32 45 + +#define R_M32R_GOT24 48 +#define R_M32R_26_PLTREL 49 +#define R_M32R_COPY 50 +#define R_M32R_GLOB_DAT 51 +#define R_M32R_JMP_SLOT 52 +#define R_M32R_RELATIVE 53 +#define R_M32R_GOTOFF 54 +#define R_M32R_GOTPC24 55 +#define R_M32R_GOT16_HI_ULO 56 + +#define R_M32R_GOT16_HI_SLO 57 + +#define R_M32R_GOT16_LO 58 +#define R_M32R_GOTPC_HI_ULO 59 + +#define R_M32R_GOTPC_HI_SLO 60 + +#define R_M32R_GOTPC_LO 61 + +#define R_M32R_GOTOFF_HI_ULO 62 + +#define R_M32R_GOTOFF_HI_SLO 63 + +#define R_M32R_GOTOFF_LO 64 +#define R_M32R_NUM 256 + +#define R_MICROBLAZE_NONE 0 +#define R_MICROBLAZE_32 1 +#define R_MICROBLAZE_32_PCREL 2 +#define R_MICROBLAZE_64_PCREL 3 +#define R_MICROBLAZE_32_PCREL_LO 4 +#define R_MICROBLAZE_64 5 +#define R_MICROBLAZE_32_LO 6 +#define R_MICROBLAZE_SRO32 7 +#define R_MICROBLAZE_SRW32 8 +#define R_MICROBLAZE_64_NONE 9 +#define R_MICROBLAZE_32_SYM_OP_SYM 10 +#define R_MICROBLAZE_GNU_VTINHERIT 11 +#define R_MICROBLAZE_GNU_VTENTRY 12 +#define R_MICROBLAZE_GOTPC_64 13 +#define R_MICROBLAZE_GOT_64 14 +#define R_MICROBLAZE_PLT_64 15 +#define R_MICROBLAZE_REL 16 +#define R_MICROBLAZE_JUMP_SLOT 17 +#define R_MICROBLAZE_GLOB_DAT 18 +#define R_MICROBLAZE_GOTOFF_64 19 +#define R_MICROBLAZE_GOTOFF_32 20 +#define R_MICROBLAZE_COPY 21 +#define R_MICROBLAZE_TLS 22 +#define R_MICROBLAZE_TLSGD 23 +#define R_MICROBLAZE_TLSLD 24 +#define R_MICROBLAZE_TLSDTPMOD32 25 +#define R_MICROBLAZE_TLSDTPREL32 26 +#define R_MICROBLAZE_TLSDTPREL64 27 +#define R_MICROBLAZE_TLSGOTTPREL32 28 +#define R_MICROBLAZE_TLSTPREL32 29 + +#define DT_NIOS2_GP 0x70000002 + +#define R_NIOS2_NONE 0 +#define R_NIOS2_S16 1 +#define R_NIOS2_U16 2 +#define R_NIOS2_PCREL16 3 +#define R_NIOS2_CALL26 4 +#define R_NIOS2_IMM5 5 +#define R_NIOS2_CACHE_OPX 6 +#define R_NIOS2_IMM6 7 +#define R_NIOS2_IMM8 8 +#define R_NIOS2_HI16 9 +#define R_NIOS2_LO16 10 +#define R_NIOS2_HIADJ16 11 +#define R_NIOS2_BFD_RELOC_32 12 +#define R_NIOS2_BFD_RELOC_16 13 +#define R_NIOS2_BFD_RELOC_8 14 +#define R_NIOS2_GPREL 15 +#define R_NIOS2_GNU_VTINHERIT 16 +#define R_NIOS2_GNU_VTENTRY 17 +#define R_NIOS2_UJMP 18 +#define R_NIOS2_CJMP 19 +#define R_NIOS2_CALLR 20 +#define R_NIOS2_ALIGN 21 +#define R_NIOS2_GOT16 22 +#define R_NIOS2_CALL16 23 +#define R_NIOS2_GOTOFF_LO 24 +#define R_NIOS2_GOTOFF_HA 25 +#define R_NIOS2_PCREL_LO 26 +#define R_NIOS2_PCREL_HA 27 +#define R_NIOS2_TLS_GD16 28 +#define R_NIOS2_TLS_LDM16 29 +#define R_NIOS2_TLS_LDO16 30 +#define R_NIOS2_TLS_IE16 31 +#define R_NIOS2_TLS_LE16 32 +#define R_NIOS2_TLS_DTPMOD 33 +#define R_NIOS2_TLS_DTPREL 34 +#define R_NIOS2_TLS_TPREL 35 +#define R_NIOS2_COPY 36 +#define R_NIOS2_GLOB_DAT 37 +#define R_NIOS2_JUMP_SLOT 38 +#define R_NIOS2_RELATIVE 39 +#define R_NIOS2_GOTOFF 40 +#define R_NIOS2_CALL26_NOAT 41 +#define R_NIOS2_GOT_LO 42 +#define R_NIOS2_GOT_HA 43 +#define R_NIOS2_CALL_LO 44 +#define R_NIOS2_CALL_HA 45 + +#define R_OR1K_NONE 0 +#define R_OR1K_32 1 +#define R_OR1K_16 2 +#define R_OR1K_8 3 +#define R_OR1K_LO_16_IN_INSN 4 +#define R_OR1K_HI_16_IN_INSN 5 +#define R_OR1K_INSN_REL_26 6 +#define R_OR1K_GNU_VTENTRY 7 +#define R_OR1K_GNU_VTINHERIT 8 +#define R_OR1K_32_PCREL 9 +#define R_OR1K_16_PCREL 10 +#define R_OR1K_8_PCREL 11 +#define R_OR1K_GOTPC_HI16 12 +#define R_OR1K_GOTPC_LO16 13 +#define R_OR1K_GOT16 14 +#define R_OR1K_PLT26 15 +#define R_OR1K_GOTOFF_HI16 16 +#define R_OR1K_GOTOFF_LO16 17 +#define R_OR1K_COPY 18 +#define R_OR1K_GLOB_DAT 19 +#define R_OR1K_JMP_SLOT 20 +#define R_OR1K_RELATIVE 21 +#define R_OR1K_TLS_GD_HI16 22 +#define R_OR1K_TLS_GD_LO16 23 +#define R_OR1K_TLS_LDM_HI16 24 +#define R_OR1K_TLS_LDM_LO16 25 +#define R_OR1K_TLS_LDO_HI16 26 +#define R_OR1K_TLS_LDO_LO16 27 +#define R_OR1K_TLS_IE_HI16 28 +#define R_OR1K_TLS_IE_LO16 29 +#define R_OR1K_TLS_LE_HI16 30 +#define R_OR1K_TLS_LE_LO16 31 +#define R_OR1K_TLS_TPOFF 32 +#define R_OR1K_TLS_DTPOFF 33 +#define R_OR1K_TLS_DTPMOD 34 + +#define R_BPF_NONE 0 +#define R_BPF_MAP_FD 1 + +#ifdef __cplusplus +} +#endif + + +#endif diff --git a/tools/com-plugin/endian.h b/tools/com-plugin/endian.h new file mode 100644 index 0000000000..3ffc003295 --- /dev/null +++ b/tools/com-plugin/endian.h @@ -0,0 +1,67 @@ +#ifndef ENDIAN_H +#define ENDIAN_H + +#if defined(__linux__) || defined(__CYGWIN__) +#include +#elif defined(__APPLE__) +#include + +#define htobe16(x) OSSwapHostToBigInt16(x) +#define htole16(x) OSSwapHostToLittleInt16(x) +#define be16toh(x) OSSwapBigToHostInt16(x) +#define le16toh(x) OSSwapLittleToHostInt16(x) + +#define htobe32(x) OSSwapHostToBigInt32(x) +#define htole32(x) OSSwapHostToLittleInt32(x) +#define be32toh(x) OSSwapBigToHostInt32(x) +#define le32toh(x) OSSwapLittleToHostInt32(x) + +#define htobe64(x) OSSwapHostToBigInt64(x) +#define htole64(x) OSSwapHostToLittleInt64(x) +#define be64toh(x) OSSwapBigToHostInt64(x) +#define le64toh(x) OSSwapLittleToHostInt64(x) +#else + +#if !defined(__BYTE_ORDER__) +#error "No endian define provided by compiler" +#endif + +#if (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) + +#define htobe16(x) (x) +#define htole16(x) __builtin_bswap16(x) +#define be16toh(x) (x) +#define le16toh(x) __builtin_bswap16(x) + +#define htobe32(x) (x) +#define htole32(x) __builtin_bswap32(x) +#define be32toh(x) (x) +#define le32toh(x) __builtin_bswap32(x) + +#define htobe64(x) (x) +#define htole64(x) __builtin_bswap64(x) +#define be64toh(x) (x) +#define le64toh(x) __builtin_bswap64(x) + +#else + +#define htobe16(x) __builtin_bswap16(x) +#define htole16(x) (x) +#define be16toh(x) __builtin_bswap16(x) +#define le16toh(x) (x) + +#define htobe32(x) __builtin_bswap32(x) +#define htole32(x) (x) +#define be32toh(x) __builtin_bswap32(x) +#define le32toh(x) (x) + +#define htobe64(x) __builtin_bswap64(x) +#define htole64(x) (x) +#define be64toh(x) __builtin_bswap64(x) +#define le64toh(x) (x) + +#endif + +#endif + +#endif diff --git a/tools/com-plugin/plugin-api.h b/tools/com-plugin/plugin-api.h new file mode 100644 index 0000000000..50443b8acd --- /dev/null +++ b/tools/com-plugin/plugin-api.h @@ -0,0 +1,622 @@ +/* plugin-api.h -- External linker plugin API. */ + +/* Copyright (C) 2009-2023 Free Software Foundation, Inc. + Written by Cary Coutant . + + This file is part of binutils. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +/* This file defines the interface for writing a linker plugin, which is + described at < http://gcc.gnu.org/wiki/whopr/driver >. */ + +#ifndef PLUGIN_API_H +#define PLUGIN_API_H + +#ifdef HAVE_STDINT_H +#include +#elif defined(HAVE_INTTYPES_H) +#include +#endif +#include +#if !defined(HAVE_STDINT_H) && !defined(HAVE_INTTYPES_H) && \ + !defined(UINT64_MAX) && !defined(uint64_t) +#error cannot find uint64_t type +#endif + +/* Detect endianess based on gcc's (>=4.6.0) __BYTE_ORDER__ macro. */ +#if defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && \ + defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_PDP_ENDIAN__) +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ +#define PLUGIN_LITTLE_ENDIAN 1 +#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ +#define PLUGIN_BIG_ENDIAN 1 +#elif __BYTE_ORDER__ == __ORDER_PDP_ENDIAN__ +#define PLUGIN_PDP_ENDIAN 1 +#endif + +#else +/* Include header files to define endian macros. */ +#if defined(__GLIBC__) || defined(__GNU_LIBRARY__) || defined(__ANDROID__) +#include + +#elif defined(__SVR4) && defined(__sun) +#include + +#elif defined(__FreeBSD__) || defined(__NetBSD__) || \ + defined(__DragonFly__) || defined(__minix) +#include + +#elif defined(__OpenBSD__) +#include +#endif + +/* Detect endianess based on __BYTE_ORDER. */ +#ifdef __BYTE_ORDER +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define PLUGIN_LITTLE_ENDIAN 1 +#elif __BYTE_ORDER == __BIG_ENDIAN +#define PLUGIN_BIG_ENDIAN 1 +#endif + +/* Detect endianess based on _BYTE_ORDER. */ +#elif defined _BYTE_ORDER +#if _BYTE_ORDER == _LITTLE_ENDIAN +#define PLUGIN_LITTLE_ENDIAN 1 +#elif _BYTE_ORDER == _BIG_ENDIAN +#define PLUGIN_BIG_ENDIAN 1 +#endif + +/* Detect based on _WIN32. */ +#elif defined _WIN32 +#define PLUGIN_LITTLE_ENDIAN 1 + +/* Detect based on __BIG_ENDIAN__ and __LITTLE_ENDIAN__ */ +#elif defined __LITTLE_ENDIAN__ || defined _LITTLE_ENDIAN +#define PLUGIN_LITTLE_ENDIAN 1 +#elif defined __BIG_ENDIAN__ || defined _BIG_ENDIAN +#define PLUGIN_BIG_ENDIAN 1 +#endif +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif + +/* Status code returned by most API routines. */ + +enum ld_plugin_status +{ + LDPS_OK = 0, + LDPS_NO_SYMS, /* Attempt to get symbols that haven't been added. */ + LDPS_BAD_HANDLE, /* No claimed object associated with given handle. */ + LDPS_ERR + /* Additional Error codes TBD. */ +}; + +/* The version of the API specification. */ + +enum ld_plugin_api_version +{ + LD_PLUGIN_API_VERSION = 1 +}; + +/* The type of output file being generated by the linker. */ + +enum ld_plugin_output_file_type +{ + LDPO_REL, + LDPO_EXEC, + LDPO_DYN, + LDPO_PIE +}; + +/* An input file managed by the plugin library. */ + +struct ld_plugin_input_file +{ + const char *name; + int fd; + off_t offset; + off_t filesize; + void *handle; +}; + +/* A symbol belonging to an input file managed by the plugin library. */ + +struct ld_plugin_symbol +{ + char *name; + char *version; + /* This is for compatibility with older ABIs. The older ABI defined + only 'def' field. */ +#if PLUGIN_BIG_ENDIAN == 1 + char unused; + char section_kind; + char symbol_type; + char def; +#elif PLUGIN_LITTLE_ENDIAN == 1 + char def; + char symbol_type; + char section_kind; + char unused; +#elif PLUGIN_PDP_ENDIAN == 1 + char symbol_type; + char def; + char unused; + char section_kind; +#else +#error "Could not detect architecture endianess" +#endif + int visibility; + uint64_t size; + char *comdat_key; + int resolution; +}; + +/* An object's section. */ + +struct ld_plugin_section +{ + const void* handle; + unsigned int shndx; +}; + +/* Whether the symbol is a definition, reference, or common, weak or not. */ + +enum ld_plugin_symbol_kind +{ + LDPK_DEF, + LDPK_WEAKDEF, + LDPK_UNDEF, + LDPK_WEAKUNDEF, + LDPK_COMMON +}; + +/* The visibility of the symbol. */ + +enum ld_plugin_symbol_visibility +{ + LDPV_DEFAULT, + LDPV_PROTECTED, + LDPV_INTERNAL, + LDPV_HIDDEN +}; + +/* The type of the symbol. */ + +enum ld_plugin_symbol_type +{ + LDST_UNKNOWN, + LDST_FUNCTION, + LDST_VARIABLE +}; + +enum ld_plugin_symbol_section_kind +{ + LDSSK_DEFAULT, + LDSSK_BSS +}; + +/* How a symbol is resolved. */ + +enum ld_plugin_symbol_resolution +{ + LDPR_UNKNOWN = 0, + + /* Symbol is still undefined at this point. */ + LDPR_UNDEF, + + /* This is the prevailing definition of the symbol, with references from + regular object code. */ + LDPR_PREVAILING_DEF, + + /* This is the prevailing definition of the symbol, with no + references from regular objects. It is only referenced from IR + code. */ + LDPR_PREVAILING_DEF_IRONLY, + + /* This definition was pre-empted by a definition in a regular + object file. */ + LDPR_PREEMPTED_REG, + + /* This definition was pre-empted by a definition in another IR file. */ + LDPR_PREEMPTED_IR, + + /* This symbol was resolved by a definition in another IR file. */ + LDPR_RESOLVED_IR, + + /* This symbol was resolved by a definition in a regular object + linked into the main executable. */ + LDPR_RESOLVED_EXEC, + + /* This symbol was resolved by a definition in a shared object. */ + LDPR_RESOLVED_DYN, + + /* This is the prevailing definition of the symbol, with no + references from regular objects. It is only referenced from IR + code, but the symbol is exported and may be referenced from + a dynamic object (not seen at link time). */ + LDPR_PREVAILING_DEF_IRONLY_EXP +}; + +/* The plugin library's "claim file" handler. */ + +typedef +enum ld_plugin_status +(*ld_plugin_claim_file_handler) ( + const struct ld_plugin_input_file *file, int *claimed); + +/* The plugin library's "claim file" handler, version 2. */ + +typedef +enum ld_plugin_status +(*ld_plugin_claim_file_handler_v2) ( + const struct ld_plugin_input_file *file, int *claimed, int known_used); + +/* The plugin library's "all symbols read" handler. */ + +typedef +enum ld_plugin_status +(*ld_plugin_all_symbols_read_handler) (void); + +/* The plugin library's cleanup handler. */ + +typedef +enum ld_plugin_status +(*ld_plugin_cleanup_handler) (void); + +/* The linker's interface for registering the "claim file" handler. */ + +typedef +enum ld_plugin_status +(*ld_plugin_register_claim_file) (ld_plugin_claim_file_handler handler); + +/* The linker's interface for registering the "claim file" handler, + version 2. */ + +typedef +enum ld_plugin_status +(*ld_plugin_register_claim_file_v2) (ld_plugin_claim_file_handler_v2 handler); + +/* The linker's interface for registering the "all symbols read" handler. */ + +typedef +enum ld_plugin_status +(*ld_plugin_register_all_symbols_read) ( + ld_plugin_all_symbols_read_handler handler); + +/* The linker's interface for registering the cleanup handler. */ + +typedef +enum ld_plugin_status +(*ld_plugin_register_cleanup) (ld_plugin_cleanup_handler handler); + +/* The linker's interface for adding symbols from a claimed input file. */ + +typedef +enum ld_plugin_status +(*ld_plugin_add_symbols) (void *handle, int nsyms, + const struct ld_plugin_symbol *syms); + +/* The linker's interface for getting the input file information with + an open (possibly re-opened) file descriptor. */ + +typedef +enum ld_plugin_status +(*ld_plugin_get_input_file) (const void *handle, + struct ld_plugin_input_file *file); + +typedef +enum ld_plugin_status +(*ld_plugin_get_view) (const void *handle, const void **viewp); + +/* The linker's interface for releasing the input file. */ + +typedef +enum ld_plugin_status +(*ld_plugin_release_input_file) (const void *handle); + +/* The linker's interface for retrieving symbol resolution information. */ + +typedef +enum ld_plugin_status +(*ld_plugin_get_symbols) (const void *handle, int nsyms, + struct ld_plugin_symbol *syms); + +/* The linker's interface for adding a compiled input file. */ + +typedef +enum ld_plugin_status +(*ld_plugin_add_input_file) (const char *pathname); + +/* The linker's interface for adding a library that should be searched. */ + +typedef +enum ld_plugin_status +(*ld_plugin_add_input_library) (const char *libname); + +/* The linker's interface for adding a library path that should be searched. */ + +typedef +enum ld_plugin_status +(*ld_plugin_set_extra_library_path) (const char *path); + +/* The linker's interface for issuing a warning or error message. */ + +typedef +enum ld_plugin_status +(*ld_plugin_message) (int level, const char *format, ...); + +/* The linker's interface for retrieving the number of sections in an object. + The handle is obtained in the claim_file handler. This interface should + only be invoked in the claim_file handler. This function sets *COUNT to + the number of sections in the object. */ + +typedef +enum ld_plugin_status +(*ld_plugin_get_input_section_count) (const void* handle, unsigned int *count); + +/* The linker's interface for retrieving the section type of a specific + section in an object. This interface should only be invoked in the + claim_file handler. This function sets *TYPE to an ELF SHT_xxx value. */ + +typedef +enum ld_plugin_status +(*ld_plugin_get_input_section_type) (const struct ld_plugin_section section, + unsigned int *type); + +/* The linker's interface for retrieving the name of a specific section in + an object. This interface should only be invoked in the claim_file handler. + This function sets *SECTION_NAME_PTR to a null-terminated buffer allocated + by malloc. The plugin must free *SECTION_NAME_PTR. */ + +typedef +enum ld_plugin_status +(*ld_plugin_get_input_section_name) (const struct ld_plugin_section section, + char **section_name_ptr); + +/* The linker's interface for retrieving the contents of a specific section + in an object. This interface should only be invoked in the claim_file + handler. This function sets *SECTION_CONTENTS to point to a buffer that is + valid until clam_file handler returns. It sets *LEN to the size of the + buffer. */ + +typedef +enum ld_plugin_status +(*ld_plugin_get_input_section_contents) (const struct ld_plugin_section section, + const unsigned char **section_contents, + size_t* len); + +/* The linker's interface for specifying the desired order of sections. + The sections should be specifed using the array SECTION_LIST in the + order in which they should appear in the final layout. NUM_SECTIONS + specifies the number of entries in each array. This should be invoked + in the all_symbols_read handler. */ + +typedef +enum ld_plugin_status +(*ld_plugin_update_section_order) (const struct ld_plugin_section *section_list, + unsigned int num_sections); + +/* The linker's interface for specifying that reordering of sections is + desired so that the linker can prepare for it. This should be invoked + before update_section_order, preferably in the claim_file handler. */ + +typedef +enum ld_plugin_status +(*ld_plugin_allow_section_ordering) (void); + +/* The linker's interface for specifying that a subset of sections is + to be mapped to a unique segment. If the plugin wants to call + unique_segment_for_sections, it must call this function from a + claim_file_handler or when it is first loaded. */ + +typedef +enum ld_plugin_status +(*ld_plugin_allow_unique_segment_for_sections) (void); + +/* The linker's interface for specifying that a specific set of sections + must be mapped to a unique segment. ELF segments do not have names + and the NAME is used as the name of the newly created output section + that is then placed in the unique PT_LOAD segment. FLAGS is used to + specify if any additional segment flags need to be set. For instance, + a specific segment flag can be set to identify this segment. Unsetting + segment flags that would be set by default is not possible. The + parameter SEGMENT_ALIGNMENT when non-zero will override the default. */ + +typedef +enum ld_plugin_status +(*ld_plugin_unique_segment_for_sections) ( + const char* segment_name, + uint64_t segment_flags, + uint64_t segment_alignment, + const struct ld_plugin_section * section_list, + unsigned int num_sections); + +/* The linker's interface for retrieving the section alignment requirement + of a specific section in an object. This interface should only be invoked in the + claim_file handler. This function sets *ADDRALIGN to the ELF sh_addralign + value of the input section. */ + +typedef +enum ld_plugin_status +(*ld_plugin_get_input_section_alignment) (const struct ld_plugin_section section, + unsigned int *addralign); + +/* The linker's interface for retrieving the section size of a specific section + in an object. This interface should only be invoked in the claim_file handler. + This function sets *SECSIZE to the ELF sh_size + value of the input section. */ + +typedef +enum ld_plugin_status +(*ld_plugin_get_input_section_size) (const struct ld_plugin_section section, + uint64_t *secsize); + +typedef +enum ld_plugin_status +(*ld_plugin_new_input_handler) (const struct ld_plugin_input_file *file); + +/* The linker's interface for registering the "new_input" handler. This handler + will be notified when a new input file has been added after the + all_symbols_read event, allowing the plugin to, for example, set a unique + segment for sections in plugin-generated input files. */ + +typedef +enum ld_plugin_status +(*ld_plugin_register_new_input) (ld_plugin_new_input_handler handler); + +/* The linker's interface for getting the list of wrapped symbols using the + --wrap option. This sets *NUM_SYMBOLS to number of wrapped symbols and + *WRAP_SYMBOL_LIST to the list of wrapped symbols. */ + +typedef +enum ld_plugin_status +(*ld_plugin_get_wrap_symbols) (uint64_t *num_symbols, + const char ***wrap_symbol_list); + +enum ld_plugin_level +{ + LDPL_INFO, + LDPL_WARNING, + LDPL_ERROR, + LDPL_FATAL +}; + +/* Contract between a plug-in and a linker. */ + +enum linker_api_version +{ + /* The linker/plugin do not implement any of the API levels below, the API + is determined solely via the transfer vector. */ + LAPI_V0, + + /* API level v1. The linker provides get_symbols_v3, add_symbols_v2, + the plugin will use that and not any lower versions. + claim_file is thread-safe on the plugin side and + add_symbols on the linker side. */ + LAPI_V1 +}; + +/* The linker's interface for API version negotiation. A plug-in calls + the function (with its IDENTIFIER and VERSION), plus minimal and maximal + version of linker_api_version is provided. Linker then returns selected + API version and provides its IDENTIFIER and VERSION. The returned value + by linker must be in range [MINIMAL_API_SUPPORTED, MAXIMAL_API_SUPPORTED]. + Identifier pointers remain valid as long as the plugin is loaded. */ + +typedef +int +(*ld_plugin_get_api_version) (const char *plugin_identifier, + const char *plugin_version, + int minimal_api_supported, + int maximal_api_supported, + const char **linker_identifier, + const char **linker_version); + +/* Values for the tv_tag field of the transfer vector. */ + +enum ld_plugin_tag +{ + LDPT_NULL, + LDPT_API_VERSION, + LDPT_GOLD_VERSION, + LDPT_LINKER_OUTPUT, + LDPT_OPTION, + LDPT_REGISTER_CLAIM_FILE_HOOK, + LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK, + LDPT_REGISTER_CLEANUP_HOOK, + LDPT_ADD_SYMBOLS, + LDPT_GET_SYMBOLS, + LDPT_ADD_INPUT_FILE, + LDPT_MESSAGE, + LDPT_GET_INPUT_FILE, + LDPT_RELEASE_INPUT_FILE, + LDPT_ADD_INPUT_LIBRARY, + LDPT_OUTPUT_NAME, + LDPT_SET_EXTRA_LIBRARY_PATH, + LDPT_GNU_LD_VERSION, + LDPT_GET_VIEW, + LDPT_GET_INPUT_SECTION_COUNT, + LDPT_GET_INPUT_SECTION_TYPE, + LDPT_GET_INPUT_SECTION_NAME, + LDPT_GET_INPUT_SECTION_CONTENTS, + LDPT_UPDATE_SECTION_ORDER, + LDPT_ALLOW_SECTION_ORDERING, + LDPT_GET_SYMBOLS_V2, + LDPT_ALLOW_UNIQUE_SEGMENT_FOR_SECTIONS, + LDPT_UNIQUE_SEGMENT_FOR_SECTIONS, + LDPT_GET_SYMBOLS_V3, + LDPT_GET_INPUT_SECTION_ALIGNMENT, + LDPT_GET_INPUT_SECTION_SIZE, + LDPT_REGISTER_NEW_INPUT_HOOK, + LDPT_GET_WRAP_SYMBOLS, + LDPT_ADD_SYMBOLS_V2, + LDPT_GET_API_VERSION, + LDPT_REGISTER_CLAIM_FILE_HOOK_V2 +}; + +/* The plugin transfer vector. */ + +struct ld_plugin_tv +{ + enum ld_plugin_tag tv_tag; + union + { + int tv_val; + const char *tv_string; + ld_plugin_register_claim_file tv_register_claim_file; + ld_plugin_register_claim_file_v2 tv_register_claim_file_v2; + ld_plugin_register_all_symbols_read tv_register_all_symbols_read; + ld_plugin_register_cleanup tv_register_cleanup; + ld_plugin_add_symbols tv_add_symbols; + ld_plugin_get_symbols tv_get_symbols; + ld_plugin_add_input_file tv_add_input_file; + ld_plugin_message tv_message; + ld_plugin_get_input_file tv_get_input_file; + ld_plugin_get_view tv_get_view; + ld_plugin_release_input_file tv_release_input_file; + ld_plugin_add_input_library tv_add_input_library; + ld_plugin_set_extra_library_path tv_set_extra_library_path; + ld_plugin_get_input_section_count tv_get_input_section_count; + ld_plugin_get_input_section_type tv_get_input_section_type; + ld_plugin_get_input_section_name tv_get_input_section_name; + ld_plugin_get_input_section_contents tv_get_input_section_contents; + ld_plugin_update_section_order tv_update_section_order; + ld_plugin_allow_section_ordering tv_allow_section_ordering; + ld_plugin_allow_unique_segment_for_sections tv_allow_unique_segment_for_sections; + ld_plugin_unique_segment_for_sections tv_unique_segment_for_sections; + ld_plugin_get_input_section_alignment tv_get_input_section_alignment; + ld_plugin_get_input_section_size tv_get_input_section_size; + ld_plugin_register_new_input tv_register_new_input; + ld_plugin_get_wrap_symbols tv_get_wrap_symbols; + ld_plugin_get_api_version tv_get_api_version; + } tv_u; +}; + +/* The plugin library's "onload" entry point. */ + +typedef +enum ld_plugin_status +(*ld_plugin_onload) (struct ld_plugin_tv *tv); + +#ifdef __cplusplus +} +#endif + +#endif /* !defined(PLUGIN_API_H) */ diff --git a/tools/com-plugin/plugin.c b/tools/com-plugin/plugin.c new file mode 100644 index 0000000000..cd1fa0a537 --- /dev/null +++ b/tools/com-plugin/plugin.c @@ -0,0 +1,831 @@ +/** + * COMMON symbol ordering plugin for linkers supporting the External Linker Plugin API. + * + * Copyright (C) 2025 Tharo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "endian.h" +#include "elf.h" +#include "plugin-api.h" + +#define ELF32_IDENT_VALID(ehdr) \ + ((ehdr)->e_ident[EI_MAG0] == ELFMAG0 && (ehdr)->e_ident[EI_MAG1] == ELFMAG1 && \ + (ehdr)->e_ident[EI_MAG2] == ELFMAG2 && (ehdr)->e_ident[EI_MAG3] == ELFMAG3) + +#define ELF32_IS_32(ehdr) ((ehdr)->e_ident[EI_CLASS] == ELFCLASS32) + +#define ELF32_IS_BE(ehdr) ((ehdr)->e_ident[EI_DATA] == ELFDATA2MSB) + +#define iswhitespace(c) (isblank(c) || ((c) == '\n')) + +#define GLUE2(a,b) a##b +#define GLUE(a,b) GLUE2(a,b) +#define ARRLEN(a) (sizeof(a) / sizeof((a)[0])) + +#define BITSET_TYPE uint64_t +#define BITSET_MASK (8 * sizeof(BITSET_TYPE) - 1) +#define BITSET_SHIFT (__builtin_ctz((uint32_t)~BITSET_MASK)) +#define BITSET_SIZE_BYTES(n) ((((n) + 8 * sizeof(BITSET_TYPE) - 1) & ~(8 * sizeof(BITSET_TYPE) - 1)) >> 3) +#define BITSET_ALLOC(size) calloc(1, BITSET_SIZE_BYTES(size)) +#define BITSET_FREE(set) free(set) +#define BITSET_GET(set, key) ((set)[(key) >> BITSET_SHIFT] & ((BITSET_TYPE)1 << ((key) & BITSET_MASK))) +#define BITSET_SET(set, key) ((set)[(key) >> BITSET_SHIFT] |= ((BITSET_TYPE)1 << ((key) & BITSET_MASK))) + +#define strequ(s1, s2const) (strncmp(s1, s2const, sizeof(s2const) - 1) == 0) + +struct bss_ofile { + char *path; + size_t num_symbols; + char **symbol_names; + Elf32_Sym *symbols; + BITSET_TYPE *symbols_found; +}; + +static struct { + // Our state + char *string_pool; + struct bss_ofile *ofiles; + size_t num_ofiles; + // Our options + char *order_path; + // LD plugin + int api_version; + int gnu_ld_version; + int linker_output; + const char *output_name; + ld_plugin_message message; + ld_plugin_add_symbols add_symbols; + ld_plugin_get_symbols get_symbols; + ld_plugin_get_symbols get_symbols_v2; + ld_plugin_add_input_file add_input_file; + ld_plugin_get_input_file get_input_file; + ld_plugin_register_cleanup register_cleanup; + ld_plugin_register_claim_file register_claim_file; + ld_plugin_register_all_symbols_read register_all_symbols_read; +} pl; + +#define ltell(fd) lseek((fd), 0, SEEK_CUR) + +static int read_s_(int fd, void *buf, size_t nbyte, int line) +{ + ssize_t result = read(fd, buf, nbyte); + if ((size_t)result != nbyte) { + pl.message(LDPL_FATAL, "[%d] Could not read %lu bytes from input file [%ld]", line, nbyte, result); + return 1; + } + return 0; +} +#define read_s(fd, buf, nbyte) \ + do { if (read_s_(fd, buf, nbyte, __LINE__)) return LDPS_ERR; } while (0) + +#define SEEKF(file, pos) \ + lseek((file)->fd, (file)->offset + (pos), SEEK_SET) + +#define WITH_NEW_FILE_POS(file, pos) \ + for (off_t GLUE(_o_,__LINE__) = ltell((file)->fd),GLUE(_b_,__LINE__)=(SEEKF(file, pos), 1); \ + GLUE(_b_,__LINE__); \ + GLUE(_b_,__LINE__)=0,lseek((file)->fd, GLUE(_o_,__LINE__), SEEK_SET)) + +static bool +elf_syms_equal(Elf32_Sym *sym1, Elf32_Sym *sym2) +{ + return (sym1->st_value == sym2->st_value) && + (sym1->st_size == sym2->st_size) && + (sym1->st_info == sym2->st_info) && + (sym1->st_other == sym2->st_other) && + (sym1->st_shndx == sym2->st_shndx); +} + +static enum ld_plugin_status +claim_file(const struct ld_plugin_input_file *file, int *claimed) +{ + *claimed = false; + + // Read the input file for COMMON symbol definitions + // The input is assumed to be a Big-Endian 32-bit ELF file + + bool error = false; + + WITH_NEW_FILE_POS(file, 0) { + Elf32_Ehdr ehdr; + read_s(file->fd, &ehdr, sizeof(ehdr)); + + if (!ELF32_IDENT_VALID(&ehdr) || !ELF32_IS_32(&ehdr) || !ELF32_IS_BE(&ehdr)) { + pl.message(LDPL_FATAL, "Input file %s is not a 32-bit Big-Endian ELF file", file->name); + return LDPS_ERR; + } + + uint32_t e_shoff = be32toh(ehdr.e_shoff); + uint16_t e_shentsize = be16toh(ehdr.e_shentsize); + uint16_t e_shnum = be16toh(ehdr.e_shnum); + + if (e_shentsize != sizeof(Elf32_Shdr)) { + pl.message(LDPL_FATAL, "e_shentsize unexpected size"); + return LDPS_ERR; + } + + Elf32_Shdr strtab; + char *strtab_data = NULL; + size_t last_strtab_ind = (size_t)-1; + + // Look for symbol tables to search for COMMON symbols in + SEEKF(file, e_shoff); + for (size_t i = 0; i < e_shnum; i++) { + Elf32_Shdr shdr; + read_s(file->fd, &shdr, sizeof(shdr)); + + uint32_t sh_type = be32toh(shdr.sh_type); + + if (sh_type != SHT_SYMTAB) + continue; + + // Found a symtab + uint32_t sh_offset = be32toh(shdr.sh_offset); + uint32_t sh_size = be32toh(shdr.sh_size); + + // Read strtab for this symtab, cache it + size_t strtab_ind = be32toh(shdr.sh_link); + if (strtab_ind != last_strtab_ind) { + if (strtab_data != NULL) + free(strtab_data); + + // Read strtab header + WITH_NEW_FILE_POS(file, e_shoff + strtab_ind * sizeof(Elf32_Shdr)) { + read_s(file->fd, &strtab, sizeof(strtab)); + } + + // Read strtab contents + uint32_t strtab_offset = be32toh(strtab.sh_offset); + uint32_t strtab_size = be32toh(strtab.sh_size); + strtab_data = malloc(strtab_size); + WITH_NEW_FILE_POS(file, strtab_offset) { + read_s(file->fd, strtab_data, strtab_size); + } + + last_strtab_ind = strtab_ind; + } + + // Read each symbol, save the COMMON symbols into a list + WITH_NEW_FILE_POS(file, sh_offset) { + size_t nsym = sh_size / sizeof(Elf32_Sym); + + for (size_t j = 0; j < nsym; j++) { + Elf32_Sym elfsym; + read_s(file->fd, &elfsym, sizeof(elfsym)); + + if (be16toh(elfsym.st_shndx) != SHN_COMMON) + continue; // Skip non-COMMON symbols + + const char *sym_name = &strtab_data[be32toh(elfsym.st_name)]; + + // Try to find this symbol in one of the specified bss output files + for (size_t f = 0; f < pl.num_ofiles; f++) { + struct bss_ofile *ofile = &pl.ofiles[f]; + + for (size_t k = 0; k < ofile->num_symbols; k++) { + if (strcmp(sym_name, ofile->symbol_names[k]) == 0) { + if (BITSET_GET(ofile->symbols_found, k)) { + // Already occupied, check equivalence + if (!elf_syms_equal(&ofile->symbols[k], &elfsym)) { + pl.message(LDPL_ERROR, "Found distinct COMMON symbols with the same name: %s", + ofile->symbol_names[k]); + error = true; + } + } else { + BITSET_SET(ofile->symbols_found, k); + ofile->symbols[k] = elfsym; + } + goto found; + } + } + } + pl.message(LDPL_WARNING, + "Found COMMON symbol %s in input file %s not mentioned in the order spec", + sym_name, file->name); + found:; + } + } + } + if (strtab_data != NULL) + free(strtab_data); + } + return (error) ? LDPS_ERR : LDPS_OK; +} + +static enum ld_plugin_status +all_symbols_read(void) +{ + for (size_t f = 0; f < pl.num_ofiles; f++) { + struct bss_ofile *ofile = &pl.ofiles[f]; + + // Make sure we got every symbol mentioned + bool error = false; + for (size_t i = 0; i < ofile->num_symbols; i++) { + if (!BITSET_GET(ofile->symbols_found, i)) { + pl.message(LDPL_ERROR, "Did not find symbol %s mentioned in the order specification in any input file", + ofile->symbol_names[i]); + error = true; + } + } + if (error) + return LDPS_ERR; + + // Create a dummy ELF file full of bss definitions generated from the COMMON defs and add it as an input file. + // TODO look into replacing all this with pl.add_symbols? Seems like it's not possible + // to add symbols at this stage though, since pl.add_symbols requires a file handle.. + // ELF layout: + // Elf32_Ehdr ehdr + // char symbol_names[sum of name lengths] + // Elf32_Sym symbols[nsyms] + // char section_names[sum of name lengths] + // Elf32_Shdr NULL + // Elf32_Shdr .bss + // Elf32_Shdr symtab + // Elf32_Shdr strtab + // Elf32_Shdr shstrtab + + FILE *elf = fopen(ofile->path, "wb"); + if (elf == NULL) { + pl.message(LDPL_FATAL, "Could not open bss output file \"%s\" for writing", ofile->path); + return LDPS_ERR; + } + + // Skip the ELF header, we'll write it at the end. + fseek(elf, sizeof(Elf32_Ehdr), SEEK_SET); + + // First write the strtab + uint32_t *string_offsets = malloc((2 + ofile->num_symbols) * sizeof(uint32_t)); + size_t strtab_offset = ftell(elf); + size_t n = 0; + string_offsets[n++] = ftell(elf) - strtab_offset; + fprintf(elf, "%c", '\0'); + string_offsets[n++] = ftell(elf) - strtab_offset; + fprintf(elf, "%s%c", ".bss", '\0'); + for (size_t i = 0; i < ofile->num_symbols; i++) { + string_offsets[n++] = ftell(elf) - strtab_offset; + fprintf(elf, "%s%c", ofile->symbol_names[i], '\0'); + } + size_t strtab_size = ftell(elf) - strtab_offset; + + // Align to 4 for symbols + fwrite("\0\0\0\0", 4 - (ftell(elf) & 3), 1, elf); + + // Record greatest alignment for the overall section alignment + size_t greatest_align = 0; + + // Now write symbols + uint32_t symtab_offset = ftell(elf); + n = 0; + + Elf32_Sym null_sym = { + .st_name = htobe32(string_offsets[n++]), + .st_value = 0, + .st_size = 0, + .st_info = ELF32_ST_INFO(STB_LOCAL, STT_NOTYPE), + .st_other = ELF32_ST_VISIBILITY(STV_DEFAULT), + .st_shndx = htobe16(SHN_UNDEF), + }; + fwrite(&null_sym, sizeof(null_sym), 1, elf); + Elf32_Sym bss_sym = { + .st_name = htobe32(string_offsets[n++]), + .st_value = 0, + .st_size = 0, + .st_info = ELF32_ST_INFO(STB_LOCAL, STT_SECTION), + .st_other = ELF32_ST_VISIBILITY(STV_DEFAULT), + .st_shndx = htobe16(1), /* .bss */ + }; + fwrite(&bss_sym, sizeof(bss_sym), 1, elf); + + size_t sym_offset = 0; + for (size_t i = 0; i < ofile->num_symbols; i++) { + Elf32_Sym *sym = &ofile->symbols[i]; + uint32_t align = be32toh(sym->st_value); + sym_offset = (sym_offset + align - 1) & ~(align - 1); + + if (align > greatest_align) + greatest_align = align; + + Elf32_Sym outsym = { + .st_name = htobe32(string_offsets[n++]), + .st_value = htobe32(sym_offset), + .st_size = sym->st_size, + .st_info = sym->st_info, + .st_other = sym->st_other, + .st_shndx = htobe16(1), /* .bss */ + }; + fwrite(&outsym, sizeof(outsym), 1, elf); + + sym_offset += be32toh(sym->st_size); + } + sym_offset = (sym_offset + greatest_align - 1) & ~(greatest_align - 1); + + size_t symtab_size = ftell(elf) - symtab_offset; + + free(string_offsets); + + const uint32_t shdr_name_offsets[5] = { 0, 1, 6, 13, 20 }; + size_t shstrtab_offset = ftell(elf); + // Write shstrtab + fwrite( + /* NULL [ 0] */ "\0" + /* .bss [ 1] */ ".bss\0" + /* symtab [ 6] */ "symtab\0" + /* strtab [13] */ "strtab\0" + /* shstrtab [20] */ "shstrtab\0" + /* [29] */ "\0\0\0", + 32, 1, elf + ); + size_t shstrtab_size = ftell(elf) - shstrtab_offset; + + // We need: { NULL, .bss, symtab, strtab, shstrtab } + Elf32_Shdr shdrs[5] = { + /* NULL */ { + .sh_name = htobe32(shdr_name_offsets[0]), + .sh_type = htobe32(SHT_NULL), + .sh_flags = htobe32(0), + .sh_addr = htobe32(0x00000000), + .sh_offset = htobe32(0x00000000), + .sh_size = htobe32(0x00000000), + .sh_link = htobe32(0), /* No Link */ + .sh_info = htobe32(0), + .sh_addralign = htobe32(0), + .sh_entsize = htobe32(0), /* Not a fixed-length array */ + }, + /* .bss */ { + .sh_name = htobe32(shdr_name_offsets[1]), + .sh_type = htobe32(SHT_NOBITS), + .sh_flags = htobe32(SHF_WRITE | SHF_ALLOC), + .sh_addr = htobe32(0x00000000), + .sh_offset = htobe32(sizeof(Elf32_Ehdr)), + .sh_size = htobe32(sym_offset), + .sh_link = htobe32(0), /* No Link */ + .sh_info = htobe32(0), + .sh_addralign = htobe32(greatest_align), + .sh_entsize = htobe32(0), /* Not a fixed-length array */ + }, + /* symtab */ { + .sh_name = htobe32(shdr_name_offsets[2]), + .sh_type = htobe32(SHT_SYMTAB), + .sh_flags = htobe32(0), + .sh_addr = htobe32(0), + .sh_offset = htobe32(symtab_offset), + .sh_size = htobe32(symtab_size), + .sh_link = htobe32(3), /* strtab */ + .sh_info = htobe32(2), + .sh_addralign = htobe32(4), + .sh_entsize = htobe32(sizeof(Elf32_Sym)), + }, + /* strtab */ { + .sh_name = htobe32(shdr_name_offsets[3]), + .sh_type = htobe32(SHT_STRTAB), + .sh_flags = htobe32(0), + .sh_addr = htobe32(0), + .sh_offset = htobe32(strtab_offset), + .sh_size = htobe32(strtab_size), + .sh_link = htobe32(0), /* No Link */ + .sh_info = htobe32(0), + .sh_addralign = htobe32(1), + .sh_entsize = htobe32(0), /* Not a fixed-length array */ + }, + /* shstrtab */ { + .sh_name = htobe32(shdr_name_offsets[4]), + .sh_type = htobe32(SHT_STRTAB), + .sh_flags = htobe32(0), + .sh_addr = htobe32(0), + .sh_offset = htobe32(shstrtab_offset), + .sh_size = htobe32(shstrtab_size), + .sh_link = htobe32(0), /* No Link */ + .sh_info = htobe32(0), + .sh_addralign = htobe32(1), + .sh_entsize = htobe32(0), /* Not a fixed-length array */ + }, + }; + size_t shdrs_offset = ftell(elf); + fwrite(shdrs, sizeof(shdrs), 1, elf); + + // TODO some of these fields should change based on the properties of the input files, or even better + // it should be based on the current output format but that might not be visible to us with the limited + // plugin api... + Elf32_Ehdr ehdr = { + .e_ident = { + [EI_MAG0] = ELFMAG0, + [EI_MAG1] = ELFMAG1, + [EI_MAG2] = ELFMAG2, + [EI_MAG3] = ELFMAG3, + [EI_CLASS] = ELFCLASS32, + [EI_DATA] = ELFDATA2MSB, + [EI_VERSION] = 1, + [EI_OSABI] = ELFOSABI_SYSV, + [EI_ABIVERSION] = 0, + }, + .e_type = htobe16(ET_REL), + .e_machine = htobe16(EM_MIPS), + .e_version = htobe32(EV_CURRENT), + .e_entry = htobe32(0x00000000), + .e_phoff = htobe32(0x00000000), + .e_shoff = htobe32(shdrs_offset), + .e_flags = htobe32(EF_MIPS_ARCH_3 | EF_MIPS_32BITMODE | EF_MIPS_NOREORDER), + .e_ehsize = htobe16(sizeof(Elf32_Ehdr)), + .e_phentsize = htobe16(0x0000), + .e_phnum = htobe16(0), + .e_shentsize = htobe16(sizeof(Elf32_Shdr)), + .e_shnum = htobe16(ARRLEN(shdrs)), + .e_shstrndx = htobe16(4), /* shstrtab */ + }; + fseek(elf, 0, SEEK_SET); + fwrite(&ehdr, sizeof(ehdr), 1, elf); + + fflush(elf); + fclose(elf); + + // Add it as an additional input file + enum ld_plugin_status ps = pl.add_input_file(ofile->path); + if (ps != LDPS_OK) { + pl.message(LDPL_ERROR, "error adding %s as an additional input file\n", ofile->path); + return ps; + } + } + return LDPS_OK; +} + +static enum ld_plugin_status +cleanup(void) +{ + free(pl.string_pool); + free(pl.order_path); + for (size_t f = 0; f < pl.num_ofiles; f++) { + struct bss_ofile *ofile = &pl.ofiles[f]; + free(ofile->symbol_names); + free(ofile->symbols); + BITSET_FREE(ofile->symbols_found); + } + free(pl.ofiles); + return LDPS_OK; +} + +static enum ld_plugin_status +parse_order_file(const char *order_file) +{ + // Read the entire bss order file and null-terminate it + FILE *bss_order = fopen(order_file, "rb"); + if (bss_order == NULL) { + pl.message(LDPL_FATAL, "Could not open bss order file %s for reading: %s", bss_order, strerror(errno)); + return LDPS_ERR; + } + + fseek(bss_order, 0, SEEK_END); + size_t fsize = ftell(bss_order); + fseek(bss_order, 0, SEEK_SET); + + pl.string_pool = malloc((fsize + 1) * sizeof(char)); + if (fread(pl.string_pool, fsize, 1, bss_order) != 1) { + pl.message(LDPL_FATAL, "Failed to read bss order file %s: %s", order_file, strerror(errno)); + free(pl.string_pool); + fclose(bss_order); + return LDPS_ERR; + } + pl.string_pool[fsize] = '\0'; + + fclose(bss_order); + + // Strip comments -> spaces, leaving newlines alone for correct error reporting + + int line = 1; + bool comment = false; + bool oneline = false; + char *s = pl.string_pool; + while (*s != '\0') { + if (*s == '\n') + line++; + + if (*s == '#' || (*s == '/' && s[1] == '/')) + comment = true, oneline = true; + else if (*s == '/' && s[1] == '*') + comment = true, oneline = false; + + if (oneline && *s == '\n') + comment = false; + + if (comment && !oneline && *s == '*' && s[1] == '/') + comment = false, s[0] = s[1] = ' '; + + if (comment && (*s != '\n')) + *s = ' '; + + s++; + } + + const char *errmsg = "?"; + +#define SYNTAX_ERR(msg) do { errmsg = msg; goto syntaxerror; } while (0) + + if (comment && !oneline) + SYNTAX_ERR("Unclosed multi-line comment"); + + // Before any detailed parsing, allocate memory based on upper bounds for the number of output files and symbols + size_t total_file_count = 0; + s = pl.string_pool; + for (size_t i = 0; i < fsize; i++, s++) { + if (*s == '{') + total_file_count++; + } + pl.num_ofiles = total_file_count; + pl.ofiles = malloc(total_file_count * sizeof(struct bss_ofile)); + + size_t cur_ofile = (size_t)-1; + size_t cur_symbol = 0; + + s = pl.string_pool; + for (size_t i = 0; i < fsize; i++, s++) { + if (*s == '{') { + if (cur_ofile != (size_t)-1) { + assert (cur_ofile < total_file_count); + pl.ofiles[cur_ofile].num_symbols = cur_symbol; + pl.ofiles[cur_ofile].symbols = malloc(cur_symbol * sizeof(Elf32_Sym)); + pl.ofiles[cur_ofile].symbol_names = malloc(cur_symbol * sizeof(char *)); + pl.ofiles[cur_ofile].symbols_found = BITSET_ALLOC(cur_symbol); + cur_symbol = 0; + } + cur_ofile++; + } else if (*s == ';') { + cur_symbol++; + } + } + assert (cur_ofile < total_file_count); + pl.ofiles[cur_ofile].num_symbols = cur_symbol; + pl.ofiles[cur_ofile].symbols = malloc(cur_symbol * sizeof(Elf32_Sym)); + pl.ofiles[cur_ofile].symbol_names = malloc(cur_symbol * sizeof(char *)); + pl.ofiles[cur_ofile].symbols_found = BITSET_ALLOC(cur_symbol); + + bool quote = false; + bool eof_ok = false; + char *start = NULL; + char *end = NULL; + void *next = &&fpath; + line = 1; + cur_ofile = (size_t)-1; + cur_symbol = 0; + + s = pl.string_pool; +whitespace: + // Skip whitespace, count newlines for syntax error messages + while (iswhitespace(*s)) { + if (*s == '\n') line++; + s++; + }; + // If we're at EOF, check if that's OK or whether it's a syntax error + if (*s == '\0') { + if (eof_ok) goto eof; + SYNTAX_ERR("Unexpected EOF"); + } + goto *next; + +fpath: + // We're looking for a file path now, up until an opening brace {. + // If the file path is unquoted, the first whitespace encountered cuts this short, but if the file path + // is quoted whitespace will be included in the path up until the closing quote. If quoted, newlines will + // cause a syntax error if used between the quotes. + eof_ok = false; + // Check quote immediately, it's only allowed at the start + if (*s == '"') s++, quote = true; + + // Consume the path + start = s; + while (*s != '{') { + if (*s == '\0') SYNTAX_ERR("Unexpected EOF"); + if (!quote && iswhitespace(*s)) break; // Unquoted whitespace cuts this short + if (quote && *s == '\n') SYNTAX_ERR("Quoted string spanning multiple lines"); + if (quote && *s == '"') break; // Ending quotes cuts this short + s++; + } + end = s; + + // Check for closing quote + if (*s == '"') { + if (!quote) SYNTAX_ERR("Found a closing quote with no opening quote"); + quote = false; + s++; + } + + // Consume any whitespace up to { + next = &&obrace; + goto whitespace; + +obrace: + // We're looking for an opening brace character {, anything else is a fail + if (*s++ != '{') SYNTAX_ERR("Expected an {"); + // NULL-terminate the file path in-place and save it + *end = '\0'; + cur_ofile++; + cur_symbol = 0; + assert(cur_ofile < total_file_count); + pl.ofiles[cur_ofile].path = start; + // Consume whitespace up to the first symbol name + next = &&sym; + goto whitespace; + +sym: + // Symbol names are similar to the file path, but we're looking to end on a semicolon ; + // If the symbol name is unquoted, the first whitespace encountered cuts this short, but if the symbol name + // is quoted whitespace will be included in the name up until the closing quote. If quoted, newlines will + // cause a syntax error if used between the quotes. + // Check quote immediately, it's only allowed at the start + if (*s == '"') quote = true, s++; + + // Consume the symbol name + start = s; + while (*s != ';') { + if (*s == '\0') SYNTAX_ERR("Unexpected EOF"); + if (quote && *s == '\n') SYNTAX_ERR("Quoted string spanning multiple lines"); + // Unlike file paths, we're not friendly to whitespace between the end of the symbol and the semicolon + // TODO we could be though? + if (!quote && iswhitespace(*s)) SYNTAX_ERR("Whitespace in unquoted symbol name"); + if (quote && *s == '"') { + // It's tempting to allow whitespace here but it would be inconsistent with the above, but if the above + // changes this should similarly allow whitespace + if (s[1] != ';') SYNTAX_ERR("Expected ;"); + break; + } + s++; + } + end = s; + + // Check for end quote + if (*s == '"') { + if (!quote) SYNTAX_ERR("Found a closing quote with no opening quote"); + quote = false; + s++; + } + // This assertion should always be true unless the above logic is wrong, it's + // not meant to be caused by a syntax error. + assert(*s++ == ';'); + + // NULL-terminate + *end = '\0'; + assert(cur_symbol < pl.ofiles[cur_ofile].num_symbols); + pl.ofiles[cur_ofile].symbol_names[cur_symbol++] = start; + + // Consume any whitespace following the semicolon + next = &&cbrace; + goto whitespace; + +cbrace: + // If the first non-whitespace character after a semicolon isn't }, assume it's another + // symbol in the list. If it is }, this is the end of the list. + if (*s != '}') goto sym; + s++; + // This might be a valid end of file (after any trailing whitespace) if this is the last + // output file in the specification. + pl.ofiles[cur_ofile].num_symbols = cur_symbol; + eof_ok = true; + next = &&fpath; + goto whitespace; + +eof: + // Reached end of file, we must have all output files and their symbols at this point. + assert(cur_ofile < pl.num_ofiles); + // Reduce the number of files to the actual number from the upper bound + pl.num_ofiles = cur_ofile + 1; + return LDPS_OK; + +syntaxerror: + pl.message(LDPL_FATAL, "%s(%d): Syntax error: %s", pl.order_path, line, errmsg); + return LDPS_ERR; +} + +static enum ld_plugin_status +parse_option(const char *opt) +{ + if (strequ(opt, "order=")) { + pl.order_path = strdup(opt + sizeof("order=") - 1); + return LDPS_OK; + } + + fprintf(stderr, "Unknown option: %s\n", opt); + return LDPS_ERR; +} + +enum ld_plugin_status +onload(struct ld_plugin_tv *tv) +{ + enum ld_plugin_status ps; + + // Initialize our state + memset(&pl, 0, sizeof(pl)); + pl.api_version = -1; + pl.gnu_ld_version = -1; + pl.linker_output = -1; + + // Parse the transfer vector + for (struct ld_plugin_tv *ptv = tv; ptv->tv_tag != LDPT_NULL; ptv++) { + switch (ptv->tv_tag) { + case LDPT_OPTION: + if (ps = parse_option(ptv->tv_u.tv_string), ps != LDPS_OK) + return ps; + break; + + case LDPT_MESSAGE: + pl.message = ptv->tv_u.tv_message; + break; + + case LDPT_API_VERSION: + pl.api_version = ptv->tv_u.tv_val; + break; + + case LDPT_GNU_LD_VERSION: + pl.gnu_ld_version = ptv->tv_u.tv_val; + break; + + case LDPT_LINKER_OUTPUT: + pl.linker_output = ptv->tv_u.tv_val; + break; + + case LDPT_OUTPUT_NAME: + pl.output_name = ptv->tv_u.tv_string; + break; + + case LDPT_REGISTER_CLAIM_FILE_HOOK: + pl.register_claim_file = ptv->tv_u.tv_register_claim_file; + break; + + case LDPT_REGISTER_ALL_SYMBOLS_READ_HOOK: + pl.register_all_symbols_read = ptv->tv_u.tv_register_all_symbols_read; + break; + + case LDPT_REGISTER_CLEANUP_HOOK: + pl.register_cleanup = ptv->tv_u.tv_register_cleanup; + break; + + case LDPT_ADD_SYMBOLS: + pl.add_symbols = ptv->tv_u.tv_add_symbols; + break; + + case LDPT_GET_INPUT_FILE: + pl.get_input_file = ptv->tv_u.tv_get_input_file; + break; + + case LDPT_GET_SYMBOLS: + pl.get_symbols = ptv->tv_u.tv_get_symbols; + break; + + case LDPT_GET_SYMBOLS_V2: + pl.get_symbols_v2 = ptv->tv_u.tv_get_symbols; + break; + + case LDPT_ADD_INPUT_FILE: + pl.add_input_file = ptv->tv_u.tv_add_input_file; + break; + + default: + break; + } + } + + // Check pl.message + if (pl.message == NULL) { + fprintf(stderr, "No message() provided to plugin"); + return LDPS_ERR; + } + + // Check args + + if (pl.order_path == NULL) { + pl.message(LDPL_ERROR, "Missing option -plugin-opt order="); + return LDPS_ERR; + } + + // Read the order file + + if (ps = parse_order_file(pl.order_path), ps != LDPS_OK) + return ps; + + // Register callbacks + + pl.register_claim_file(claim_file); + pl.register_all_symbols_read(all_symbols_read); + pl.register_cleanup(cleanup); + + return LDPS_OK; +} diff --git a/tools/csdis.py b/tools/csdis.py index 1d96c48e4f..f83efd3aa1 100755 --- a/tools/csdis.py +++ b/tools/csdis.py @@ -2,8 +2,6 @@ # Disassemble a cutscene script -from overlayhelpers import filemap - import argparse, os, struct import math @@ -506,7 +504,7 @@ cutscene_command_macros = { "CS_RUMBLE_CONTROLLER(%h2:1:x, %h1:1:s, %h2:2:s, %b2:2:x, %b1:2:x, %b4:3:x, %b3:3:x, %h1:3:x)", 3), 140: ("CS_TIME_LIST(%w1:1:s)", 2, None, 0, - "CS_TIME(%h2:1:x, %h1:1:s, %h2:2:s, %b2:2:x, %b1:2:x, %w1:3:x)", 3), + "CS_TIME(%h2:1:x, %h1:1:s, %h2:2:s, %b2:2:x, %b1:2:x)", 3), 10: ("CS_PLAYER_CUE_LIST(%w1:1:s)", 2, None, 0, "CS_PLAYER_CUE(%h2:1:e6, %h1:1:s, %h2:2:s, %h1:2:x, %h2:3:x, %h1:3:x, %w1:4:s, %w1:5:s, %w1:6:s, %w1:7:s, %w1:8:s, %w1:9:s, %w1:10:f, %w1:11:f, %w1:12:f)", 12), @@ -711,7 +709,12 @@ Note that this isn't protected against indexing errors since a cutscene should a end before the end of the file it's in. """ -def disassemble_cutscene(cs_in): +def disassemble_cutscene(cs_in) -> tuple[int, str]: + """ + Takes a sequence of words cs_in + + Returns a tuple (cutscene_size_in_words, cutscene_macros_source) + """ i = 0 total_entries = cs_in[i] i+=1 @@ -720,12 +723,14 @@ def disassemble_cutscene(cs_in): if (total_entries < 0 or cutscene_end_frame < 0): print("This cutscene would abort if played in-engine") if total_entries < 0: - return "Could not disassemble cutscene: Number of commands is negative" + raise Exception("Could not disassemble cutscene: Number of commands is negative") macros = format_cmd(begin_cutscene_entry[0], [total_entries, cutscene_end_frame])+line_end + # iterate total_entries+1 times to also parse the CS_END_OF_SCRIPT command, + # which is not included in the count for k in range(0,total_entries+1): cmd_type = cs_in[i] if (cmd_type == 0xFFFFFFFF): - return macros + multi_key(-1)[0]+line_end + return (i+2), (macros + multi_key(-1)[0]+line_end) entry = multi_key(cmd_type) if entry is None: entry = unk_data_entry @@ -758,12 +763,14 @@ def disassemble_cutscene(cs_in): else: i += n_words print("Warning: cutscene reached maximum entries without encountering a CS_END_SCRIPT command") - return macros + return i, macros def hex_parse(s): return int(s, 16) def main(): + from overlayhelpers import filemap + parser = argparse.ArgumentParser(description="Disassembles cutscenes for OoT") parser.add_argument('address', help="VRAM or ROM address to disassemble at", type=hex_parse) args = parser.parse_args() @@ -785,7 +792,7 @@ def main(): ovl_file.seek(file_result.offset) cs_data = [i[0] for i in struct.iter_unpack(">I", bytearray(ovl_file.read()))] if cs_data is not None: - print("static CutsceneData D_" + hex(args.address).replace("0x","").upper() + "[] = {\n" + indent+disassemble_cutscene(cs_data).replace(linesep,linesep+indent).rstrip()+"\n};") + print("static CutsceneData D_" + hex(args.address).replace("0x","").upper() + "[] = {\n" + indent+disassemble_cutscene(cs_data)[1].replace(linesep,linesep+indent).rstrip()+"\n};") if __name__ == "__main__": main() diff --git a/tools/decompress_baserom.py b/tools/decompress_baserom.py index aeea9e3dae..4e79d848e0 100755 --- a/tools/decompress_baserom.py +++ b/tools/decompress_baserom.py @@ -30,10 +30,11 @@ def decompress_zlib(data: bytes) -> bytes: return bytes(output) -def decompress(data: bytes, is_zlib_compressed: bool) -> bytes: - if is_zlib_compressed: +def decompress(data: bytes, is_ique: bool) -> bytes: + if is_ique: return decompress_zlib(data) - return crunch64.yaz0.decompress(data) + else: + return crunch64.yaz0.decompress(data) def round_up(n, shift): @@ -41,11 +42,13 @@ def round_up(n, shift): return (n + mod - 1) >> shift << shift -def update_crc(decompressed: io.BytesIO) -> io.BytesIO: +def update_crc(decompressed: io.BytesIO, is_ique: bool) -> io.BytesIO: print("Recalculating crc...") - calculated_checksum = ipl3checksum.CICKind.CIC_X105.calculateChecksum( - bytes(decompressed.getbuffer()) - ) + if is_ique: + cic_kind = ipl3checksum.CICKind.CIC_6102_7101 + else: + cic_kind = ipl3checksum.CICKind.CIC_X105 + calculated_checksum = cic_kind.calculateChecksum(bytes(decompressed.getbuffer())) new_crc = struct.pack(f">II", calculated_checksum[0], calculated_checksum[1]) decompressed.seek(0x10) @@ -57,7 +60,7 @@ def decompress_rom( file_content: bytearray, dmadata_start: int, dma_entries: list[dmadata.DmaEntry], - is_zlib_compressed: bool, + is_ique: bool, ) -> bytearray: rom_segments = {} # vrom start : data s.t. len(data) == vrom_end - vrom_start new_dmadata = [] # new dmadata: list[dmadata.Entry] @@ -73,7 +76,7 @@ def decompress_rom( new_dmadata.append(dma_entry) continue if dma_entry.is_compressed(): - new_contents = decompress(file_content[p_start:p_end], is_zlib_compressed) + new_contents = decompress(file_content[p_start:p_end], is_ique) rom_segments[v_start] = new_contents else: rom_segments[v_start] = file_content[p_start : p_start + v_end - v_start] @@ -95,7 +98,7 @@ def decompress_rom( decompressed.seek(padding_start) decompressed.write(b"\x00" * (padding_end - padding_start)) # re-calculate crc - return bytearray(update_crc(decompressed).getbuffer()) + return bytearray(update_crc(decompressed, is_ique).getbuffer()) def get_str_hash(byte_array): @@ -246,10 +249,8 @@ def main(): # Decompress if any(dma_entry.is_compressed() for dma_entry in dma_entries): print("Decompressing rom...") - is_zlib_compressed = version in {"ique-cn", "ique-zh"} - file_content = decompress_rom( - file_content, dmadata_start, dma_entries, is_zlib_compressed - ) + is_ique = version.startswith("ique-") + file_content = decompress_rom(file_content, dmadata_start, dma_entries, is_ique) # Double check the hash str_hash = get_str_hash(file_content) diff --git a/tools/disasm/do_disasm.sh b/tools/disasm/do_disasm.sh index 0c7c5e9cc8..e76a33df9b 100755 --- a/tools/disasm/do_disasm.sh +++ b/tools/disasm/do_disasm.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -eu -o pipefail if [ "${VERBOSE-}" ] diff --git a/tools/disasm/ique-cn/file_addresses.csv b/tools/disasm/ique-cn/file_addresses.csv deleted file mode 100644 index 3f3c9d9590..0000000000 --- a/tools/disasm/ique-cn/file_addresses.csv +++ /dev/null @@ -1,472 +0,0 @@ -name,vrom_start,vrom_end,rom_start,rom_end,vram_start,overlay_dir -boot,1050,B7A0,1050,0,80000450, -code,AB0000,BB8FA0,A890F0,B08080,80018FA0, -ovl_title,BB8FA0,BB98D0,B08080,B08650,80800000,gamestates -ovl_select,BB98D0,BBC550,B08650,B09C90,80800930,gamestates -ovl_opening,BBC550,BBC6A0,B09C90,B09DA0,808035B0,gamestates -ovl_file_choose,BBC6A0,BCD170,B09DA0,B114B0,80803700,gamestates -ovl_kaleido_scope,BCD170,BE91A0,B114B0,B1CE20,808141F0,misc -ovl_player_actor,BE91A0,C0F8B0,B1CE20,B318E0,80830290,actors -ovl_map_mark_data,C0F8B0,C16410,B318E0,B31C00,80856A70,misc -ovl_En_Test,C16410,C1BCC0,B31C00,B34720,8085D5D0,actors -ovl_En_GirlA,C1BCC0,C1E5E0,B34720,B357F0,80862E80,actors -ovl_En_Part,C1E5E0,C1FC40,B357F0,B36580,808657A0,actors -ovl_En_Light,C1FC40,C20A40,B36580,B36DD0,80866E00,actors -ovl_En_Door,C20A40,C21880,B36DD0,B37790,80867C00,actors -ovl_En_Box,C21880,C233D0,B37790,B387B0,80868A40,actors -ovl_En_Poh,C233D0,C275C0,B387B0,B3AB60,8086A5A0,actors -ovl_En_Okuta,C275C0,C29BA0,B3AB60,B3C1B0,8086E790,actors -ovl_En_Bom,C29BA0,C2AA70,B3C1B0,B3CB60,80870D70,actors -ovl_En_Wallmas,C2AA70,C2C480,B3CB60,B3DA80,80871C40,actors -ovl_En_Dodongo,C2C480,C2F220,B3DA80,B3F4D0,80873650,actors -ovl_En_Firefly,C2F220,C31390,B3F4D0,B40800,808763F0,actors -ovl_En_Horse,C31390,C3D5F0,B40800,B46B20,80878560,actors -ovl_En_Arrow,C3D5F0,C3ECF0,B46B20,B47900,808847C0,actors -ovl_En_Elf,C3ECF0,C436B0,B47900,B4A170,80885EC0,actors -ovl_En_Niw,C436B0,C469E0,B4A170,B4C040,8088A880,actors -ovl_En_Tite,C469E0,C49780,B4C040,B4D800,8088DBB0,actors -ovl_En_Reeba,C49780,C4B1F0,B4D800,B4E810,80890950,actors -ovl_En_Peehat,C4B1F0,C4E8F0,B4E810,B505B0,808923C0,actors -ovl_En_Holl,C4E8F0,C4F8C0,B505B0,B50F90,80895AC0,actors -ovl_En_Scene_Change,C4F8C0,C4F9F0,B50F90,B51060,80896A90,actors -ovl_En_Zf,C4F9F0,C564D0,B51060,B548E0,80896BC0,actors -ovl_En_Hata,C564D0,C56A60,B548E0,B54D00,8089D6B0,actors -ovl_Boss_Dodongo,C56A60,C60560,B54D00,B5A160,8089DC40,actors -ovl_Boss_Goma,C60560,C66500,B5A160,B5D240,808A7740,actors -ovl_En_Zl1,C66500,C6A310,B5D240,B5ED00,808AD6E0,actors -ovl_En_Viewer,C6A310,C6D1B0,B5ED00,B607E0,808B14F0,actors -ovl_En_Goma,C6D1B0,C6FE60,B607E0,B62130,808B43B0,actors -ovl_Bg_Pushbox,C6FE60,C70160,B62130,B62350,808B7060,actors -ovl_En_Bubble,C70160,C71580,B62350,B63030,808B7360,actors -ovl_Door_Shutter,C71580,C73840,B63030,B64550,808B8780,actors -ovl_En_Dodojr,C73840,C756E0,B64550,B65760,808BAA40,actors -ovl_En_Bdfire,C756E0,C76280,B65760,B65EF0,808BC8E0,actors -ovl_En_Boom,C76280,C76B50,B65EF0,B664F0,808BD480,actors -ovl_En_Torch2,C76B50,C792B0,B664F0,B67D50,808BDD50,actors -ovl_En_Bili,C792B0,C7B580,B67D50,B691C0,808C04F0,actors -ovl_En_Tp,C7B580,C7D3F0,B691C0,B6A490,808C27C0,actors -ovl_En_St,C7D3F0,C80060,B6A490,B6BEB0,808C4630,actors -ovl_En_Bw,C80060,C833F0,B6BEB0,B6DC30,808C72A0,actors -ovl_En_Eiyer,C833F0,C85050,B6DC30,B6ED50,808CA630,actors -ovl_En_River_Sound,C85050,C859E0,B6ED50,B6F3D0,808CC290,actors -ovl_En_Horse_Normal,C859E0,C88000,B6F3D0,B708B0,808CCC20,actors -ovl_En_Ossan,C88000,C8E5E0,B708B0,B73780,808CF240,actors -ovl_Bg_Treemouth,C8E5E0,C8FC40,B73780,B741C0,808D5820,actors -ovl_Bg_Dodoago,C8FC40,C90980,B741C0,B74A60,808D6E80,actors -ovl_Bg_Hidan_Dalm,C90980,C911D0,B74A60,B74FB0,808D7C30,actors -ovl_Bg_Hidan_Hrock,C911D0,C91A00,B74FB0,B75510,808D8480,actors -ovl_En_Horse_Ganon,C91A00,C92780,B75510,B75DD0,808D8CB0,actors -ovl_Bg_Hidan_Rock,C92780,C93880,B75DD0,B76880,808D9A30,actors -ovl_Bg_Hidan_Rsekizou,C93880,C94460,B76880,B76FC0,808DAB30,actors -ovl_Bg_Hidan_Sekizou,C94460,C958B0,B76FC0,B77C90,808DB710,actors -ovl_Bg_Hidan_Sima,C958B0,C967B0,B77C90,B78660,808DCB60,actors -ovl_Bg_Hidan_Syoku,C967B0,C96C10,B78660,B78900,808DDA60,actors -ovl_En_Xc,C96C10,C9D370,B78900,B7B400,808DDEC0,actors -ovl_Bg_Hidan_Curtain,C9D370,C9DE10,B7B400,B7BAE0,808E4650,actors -ovl_Bg_Spot00_Hanebasi,C9DE10,C9EF20,B7BAE0,B7C670,808E50F0,actors -ovl_En_Mb,C9EF20,CA3150,B7C670,B7EAB0,808E6200,actors -ovl_En_Bombf,CA3150,CA45E0,B7EAB0,B7F820,808EA430,actors -ovl_Bg_Hidan_Firewall,CA45E0,CA4D40,B7F820,B7FD30,808EB8C0,actors -ovl_Bg_Dy_Yoseizo,CA4D40,CA7B30,B7FD30,B817E0,808EC020,actors -ovl_En_Zl2,CA7B30,CAC230,B817E0,B834B0,808EEE10,actors -ovl_Bg_Hidan_Fslift,CAC230,CAC700,B834B0,B837B0,808F3510,actors -ovl_En_OE2,CAC700,CAC7E0,B837B0,B83830,808F39E0,actors -ovl_Bg_Ydan_Hasi,CAC7E0,CACF90,B83830,B83D40,808F3AC0,actors -ovl_Bg_Ydan_Maruta,CACF90,CAD670,B83D40,B841D0,808F4270,actors -ovl_Boss_Ganondrof,CAD670,CB2400,B841D0,B86CE0,808F4950,actors -ovl_En_Am,CB2400,CB4800,B86CE0,B88160,808F96E0,actors -ovl_En_Dekubaba,CB4800,CB82B0,B88160,B8A190,808FBAE0,actors -ovl_En_M_Fire1,CB82B0,CB8450,B8A190,B8A2C0,808FF590,actors -ovl_En_M_Thunder,CB8450,CB9A50,B8A2C0,B8B070,808FF730,actors -ovl_Bg_Ddan_Jd,CB9A50,CBA0A0,B8B070,B8B4A0,80900D30,actors -ovl_Bg_Breakwall,CBA0A0,CBAF10,B8B4A0,B8BE10,80901380,actors -ovl_En_Jj,CBAF10,CBC4E0,B8BE10,B8C890,809021F0,actors -ovl_En_Horse_Zelda,CBC4E0,CBCFD0,B8C890,B8CFF0,809037C0,actors -ovl_Bg_Ddan_Kd,CBCFD0,CBD8C0,B8CFF0,B8D5A0,809042B0,actors -ovl_Door_Warp1,CBD8C0,CC1BC0,B8D5A0,B8F6A0,80904BA0,actors -ovl_Obj_Syokudai,CC1BC0,CC2800,B8F6A0,B8FF20,80908EB0,actors -ovl_Item_B_Heart,CC2800,CC2C10,B8FF20,B90200,80909B00,actors -ovl_En_Dekunuts,CC2C10,CC4410,B90200,B90F60,80909F10,actors -ovl_Bg_Menkuri_Kaiten,CC4410,CC45A0,B90F60,B91090,8090B710,actors -ovl_Bg_Menkuri_Eye,CC45A0,CC4A30,B91090,B913C0,8090B8A0,actors -ovl_En_Vali,CC4A30,CC70F0,B913C0,B92A60,8090BD40,actors -ovl_Bg_Mizu_Movebg,CC70F0,CC8270,B92A60,B934F0,8090E400,actors -ovl_Bg_Mizu_Water,CC8270,CC8F40,B934F0,B93C70,8090F590,actors -ovl_Arms_Hook,CC8F40,CC9CB0,B93C70,B94520,80910260,actors -ovl_En_fHG,CC9CB0,CCC5E0,B94520,B95C80,80910FD0,actors -ovl_Bg_Mori_Hineri,CCC5E0,CCD330,B95C80,B964C0,80913900,actors -ovl_En_Bb,CCD330,CD1010,B964C0,B98950,80914650,actors -ovl_Bg_Toki_Hikari,CD1010,CD1DB0,B98950,B99070,80918330,actors -ovl_En_Yukabyun,CD1DB0,CD23C0,B99070,B994E0,809190D0,actors -ovl_Bg_Toki_Swd,CD23C0,CD3A10,B994E0,B99DB0,809196E0,actors -ovl_En_Fhg_Fire,CD3A10,CD60B0,B99DB0,B9B520,8091AD30,actors -ovl_Bg_Mjin,CD60B0,CD64A0,B9B520,B9B7F0,8091D3D0,actors -ovl_Bg_Hidan_Kousi,CD64A0,CD6A30,B9B7F0,B9BB80,8091D7C0,actors -ovl_Door_Toki,CD6A30,CD6B90,B9BB80,B9BC80,8091DD50,actors -ovl_Bg_Hidan_Hamstep,CD6B90,CD7A40,B9BC80,B9C5E0,8091DEB0,actors -ovl_En_Bird,CD7A40,CD7F00,B9C5E0,B9C920,8091ED60,actors -ovl_En_Wood02,CD7F00,CD90D0,B9C920,B9D4C0,8091F220,actors -ovl_En_Lightbox,CD90D0,CD9550,B9D4C0,B9D800,80920400,actors -ovl_En_Pu_box,CD9550,CD9890,B9D800,B9DA60,80920880,actors -ovl_En_Trap,CD9890,CDAB30,B9DA60,B9E4B0,80920BC0,actors -ovl_En_Arow_Trap,CDAB30,CDAC80,B9E4B0,B9E5D0,80921E60,actors -ovl_En_Vase,CDAC80,CDAD80,B9E5D0,B9E690,80921FB0,actors -ovl_En_Ta,CDAD80,CDE740,B9E690,BA0470,809220B0,actors -ovl_En_Tk,CDE740,CE0570,BA0470,BA1710,80925A70,actors -ovl_Bg_Mori_Bigst,CE0570,CE0EA0,BA1710,BA1C80,809278A0,actors -ovl_Bg_Mori_Elevator,CE0EA0,CE1990,BA1C80,BA22B0,809281D0,actors -ovl_Bg_Mori_Kaitenkabe,CE1990,CE2000,BA22B0,BA2720,80928CC0,actors -ovl_Bg_Mori_Rakkatenjo,CE2000,CE2980,BA2720,BA2CD0,80929330,actors -ovl_En_Vm,CE2980,CE4240,BA2CD0,BA3BB0,80929CB0,actors -ovl_Demo_Effect,CE4240,CE9DE0,BA3BB0,BA6D90,8092B570,actors -ovl_Demo_Kankyo,CE9DE0,CEDA80,BA6D90,BA8C80,80931110,actors -ovl_Bg_Hidan_Fwbig,CEDA80,CEE760,BA8C80,BA9520,80934E00,actors -ovl_En_Floormas,CEE760,CF1B40,BA9520,BAB060,80935AE0,actors -ovl_En_Heishi1,CF1B40,CF3050,BAB060,BABC80,80938EC0,actors -ovl_En_Rd,CF3050,CF5910,BABC80,BAD2A0,8093A3D0,actors -ovl_En_Po_Sisters,CF5910,CFA600,BAD2A0,BAFCF0,8093CC90,actors -ovl_Bg_Heavy_Block,CFA600,CFBEF0,BAFCF0,BB0C40,80941980,actors -ovl_Bg_Po_Event,CFBEF0,CFDD20,BB0C40,BB1F30,80943270,actors -ovl_Obj_Mure,CFDD20,CFED30,BB1F30,BB2890,809450B0,actors -ovl_En_Sw,CFED30,D024A0,BB2890,BB4A40,809460C0,actors -ovl_Boss_Fd,D024A0,D09800,BB4A40,BB8AF0,809498B0,actors -ovl_Object_Kankyo,D09800,D0CA80,BB8AF0,BBA8B0,80950C10,actors -ovl_En_Du,D0CA80,D0E510,BBA8B0,BBB820,80953E90,actors -ovl_En_Fd,D0E510,D111B0,BBB820,BBD3D0,80955920,actors -ovl_En_Horse_Link_Child,D111B0,D12FB0,BBD3D0,BBE350,809585C0,actors -ovl_Door_Ana,D12FB0,D13620,BBE350,BBE7D0,8095A3C0,actors -ovl_Bg_Spot02_Objects,D13620,D14980,BBE7D0,BBF3A0,8095AA30,actors -ovl_Bg_Haka,D14980,D15040,BBF3A0,BBF860,8095BD90,actors -ovl_Magic_Wind,D15040,D16D40,BBF860,BC0F20,8095C450,actors -ovl_Magic_Fire,D16D40,D19040,BC0F20,BC2B20,8095E150,actors -ovl_En_Ru1,D19040,D206E0,BC2B20,BC5F20,80960450,actors -ovl_Boss_Fd2,D206E0,D24410,BC5F20,BC83D0,80967AF0,actors -ovl_En_Fd_Fire,D24410,D25120,BC83D0,BC8CD0,8096B820,actors -ovl_En_Dh,D25120,D26C00,BC8CD0,BC9D70,8096C530,actors -ovl_En_Dha,D26C00,D27C00,BC9D70,BCA750,8096E010,actors -ovl_En_Rl,D27C00,D28AE0,BCA750,BCAEE0,8096F010,actors -ovl_En_Encount1,D28AE0,D29640,BCAEE0,BCB6B0,8096FEF0,actors -ovl_Demo_Du,D29640,D2CE20,BCB6B0,BCCE20,80970A50,actors -ovl_Demo_Im,D2CE20,D30D90,BCCE20,BCE8A0,80974230,actors -ovl_Demo_Tre_Lgt,D30D90,D314A0,BCE8A0,BCED80,809781A0,actors -ovl_En_Fw,D314A0,D32C60,BCED80,BCFD90,809788B0,actors -ovl_Bg_Vb_Sima,D32C60,D33380,BCFD90,BD02B0,8097A070,actors -ovl_En_Vb_Ball,D33380,D34530,BD02B0,BD0DF0,8097A790,actors -ovl_Bg_Haka_Megane,D34530,D34930,BD0DF0,BD10B0,8097B940,actors -ovl_Bg_Haka_MeganeBG,D34930,D34FF0,BD10B0,BD1510,8097BD40,actors -ovl_Bg_Haka_Ship,D34FF0,D35A40,BD1510,BD1BE0,8097C400,actors -ovl_Bg_Haka_Sgami,D35A40,D36660,BD1BE0,BD23D0,8097CE50,actors -ovl_En_Heishi2,D36660,D38860,BD23D0,BD3570,8097DA70,actors -ovl_En_Encount2,D38860,D39A90,BD3570,BD4140,8097FC70,actors -ovl_En_Fire_Rock,D39A90,D3ABA0,BD4140,BD4BB0,80980EA0,actors -ovl_En_Brob,D3ABA0,D3BC90,BD4BB0,BD5610,80981FB0,actors -ovl_Mir_Ray,D3BC90,D3D540,BD5610,BD66B0,809830A0,actors -ovl_Bg_Spot09_Obj,D3D540,D3DA60,BD66B0,BD69E0,80984950,actors -ovl_Bg_Spot18_Obj,D3DA60,D3E330,BD69E0,BD6F20,80984E70,actors -ovl_Boss_Va,D3E330,D4CBC0,BD6F20,BDEBF0,80985740,actors -ovl_Bg_Haka_Tubo,D4CBC0,D4D5E0,BDEBF0,BDF2D0,8099C9D0,actors -ovl_Bg_Haka_Trap,D4D5E0,D4EBB0,BDF2D0,BE0060,8099D3F0,actors -ovl_Bg_Haka_Huta,D4EBB0,D4F650,BE0060,BE0760,8099E9C0,actors -ovl_Bg_Haka_Zou,D4F650,D50840,BE0760,BE12E0,8099F460,actors -ovl_Bg_Spot17_Funen,D50840,D50A90,BE12E0,BE14A0,809A0650,actors -ovl_En_Syateki_Itm,D50A90,D51830,BE14A0,BE1D30,809A08A0,actors -ovl_En_Syateki_Man,D51830,D525F0,BE1D30,BE25B0,809A1640,actors -ovl_En_Tana,D525F0,D528A0,BE25B0,BE2790,809A2400,actors -ovl_En_Nb,D528A0,D56E70,BE2790,BE4570,809A26B0,actors -ovl_Boss_Mo,D56E70,D62940,BE4570,BEB300,809A6C80,actors -ovl_En_Sb,D62940,D63D80,BEB300,BEBE70,809B7260,actors -ovl_En_Bigokuta,D63D80,D66880,BEBE70,BED740,809B86A0,actors -ovl_En_Karebaba,D66880,D68170,BED740,BEE610,809BB1A0,actors -ovl_Bg_Bdan_Objects,D68170,D69440,BEE610,BEF150,809BCA90,actors -ovl_Demo_Sa,D69440,D6BF60,BEF150,BF03C0,809BDD60,actors -ovl_Demo_Go,D6BF60,D6CCB0,BF03C0,BF0B70,809C0880,actors -ovl_En_In,D6CCB0,D6FA50,BF0B70,BF2750,809C15D0,actors -ovl_En_Tr,D6FA50,D71350,BF2750,BF3690,809C4370,actors -ovl_Bg_Spot16_Bombstone,D71350,D728A0,BF3690,BF4490,809C5C70,actors -ovl_Bg_Hidan_Kowarerukabe,D728A0,D73780,BF4490,BF4CE0,809C71C0,actors -ovl_Bg_Bombwall,D73780,D74040,BF4CE0,BF52A0,809C80A0,actors -ovl_En_Ru2,D74040,D76DC0,BF52A0,BF65C0,809C8960,actors -ovl_Obj_Dekujr,D76DC0,D77400,BF65C0,BF6A10,809CB6E0,actors -ovl_Bg_Mizu_Uzu,D77400,D775D0,BF6A10,BF6B70,809CBD20,actors -ovl_Bg_Spot06_Objects,D775D0,D789D0,BF6B70,BF7840,809CBEF0,actors -ovl_Bg_Ice_Objects,D789D0,D79910,BF7840,BF80C0,809CD2F0,actors -ovl_Bg_Haka_Water,D79910,D7A110,BF80C0,BF85A0,809CE230,actors -ovl_En_Ma2,D7A110,D7B170,BF85A0,BF9020,809CEA30,actors -ovl_En_Bom_Chu,D7B170,D7C810,BF9020,BF9F10,809CFA90,actors -ovl_En_Horse_Game_Check,D7C810,D7D8E0,BF9F10,BFA960,809D1130,actors -ovl_Boss_Tw,D7D8E0,D90A30,BFA960,C04CE0,809D2200,actors -ovl_En_Rr,D90A30,D92F60,C04CE0,C06350,809E7DD0,actors -ovl_En_Ba,D92F60,D94E30,C06350,C07490,809EA300,actors -ovl_En_Bx,D94E30,D95930,C07490,C07C60,809EC1D0,actors -ovl_En_Anubice,D95930,D96BE0,C07C60,C08810,809ECCD0,actors -ovl_En_Anubice_Fire,D96BE0,D979A0,C08810,C09180,809EDF80,actors -ovl_Bg_Mori_Hashigo,D979A0,D98260,C09180,C09700,809EED40,actors -ovl_Bg_Mori_Hashira4,D98260,D987E0,C09700,C09AA0,809EF600,actors -ovl_Bg_Mori_Idomizu,D987E0,D98E20,C09AA0,C09EC0,809EFB90,actors -ovl_Bg_Spot16_Doughnut,D98E20,D993E0,C09EC0,C0A2C0,809F01D0,actors -ovl_Bg_Bdan_Switch,D993E0,D9A810,C0A2C0,C0ACC0,809F0790,actors -ovl_En_Ma1,D9A810,D9BAF0,C0ACC0,C0B870,809F1BC0,actors -ovl_Boss_Ganon,D9BAF0,DBDDA0,C0B870,C1E5A0,809F2EA0,actors -ovl_Boss_Sst,DBDDA0,DCA330,C1E5A0,C24DB0,80A18CD0,actors -ovl_En_Ny,DCA330,DCBC70,C24DB0,C25D40,80A252A0,actors -ovl_En_Fr,DCBC70,DCE700,C25D40,C276B0,80A26BE0,actors -ovl_Item_Shield,DCE700,DCF110,C276B0,C27D70,80A29670,actors -ovl_Bg_Ice_Shelter,DCF110,DD0350,C27D70,C28900,80A2A080,actors -ovl_En_Ice_Hono,DD0350,DD1540,C28900,C293E0,80A2B2C0,actors -ovl_Item_Ocarina,DD1540,DD1D10,C293E0,C298C0,80A2C4B0,actors -ovl_Magic_Dark,DD1D10,DD3560,C298C0,C2A9A0,80A2CC80,actors -ovl_Demo_6K,DD3560,DD62C0,C2A9A0,C2C5E0,80A2E4D0,actors -ovl_En_Anubice_Tag,DD62C0,DD6590,C2C5E0,C2C7F0,80A31230,actors -ovl_Bg_Haka_Gate,DD6590,DD7620,C2C7F0,C2D290,80A31500,actors -ovl_Bg_Spot15_Saku,DD7620,DD7960,C2D290,C2D4F0,80A325A0,actors -ovl_Bg_Jya_Goroiwa,DD7960,DD80E0,C2D4F0,C2DA20,80A328E0,actors -ovl_Bg_Jya_Zurerukabe,DD80E0,DD8790,C2DA20,C2DE80,80A33060,actors -ovl_Bg_Jya_Cobra,DD8790,DDA4D0,C2DE80,C2F0B0,80A33710,actors -ovl_Bg_Jya_Kanaami,DDA4D0,DDA880,C2F0B0,C2F330,80A35450,actors -ovl_Fishing,DDA880,DECD10,C2F330,C38420,80A35800,actors -ovl_Obj_Oshihiki,DECD10,DEE7C0,C38420,C393D0,80A4ED40,actors -ovl_Bg_Gate_Shutter,DEE7C0,DEEC50,C393D0,C396C0,80A507F0,actors -ovl_Eff_Dust,DEEC50,DF0020,C396C0,C3A0E0,80A50C80,actors -ovl_Bg_Spot01_Fusya,DF0020,DF02C0,C3A0E0,C3A2E0,80A52050,actors -ovl_Bg_Spot01_Idohashira,DF02C0,DF0EC0,C3A2E0,C3AA70,80A522F0,actors -ovl_Bg_Spot01_Idomizu,DF0EC0,DF11E0,C3AA70,C3ACD0,80A52EF0,actors -ovl_Bg_Po_Syokudai,DF11E0,DF1B50,C3ACD0,C3B320,80A53210,actors -ovl_Bg_Ganon_Otyuka,DF1B50,DF4190,C3B320,C3CCA0,80A53B80,actors -ovl_Bg_Spot15_Rrbox,DF4190,DF4F70,C3CCA0,C3D500,80A561C0,actors -ovl_Bg_Umajump,DF4F70,DF5100,C3D500,C3D630,80A56FA0,actors -ovl_En_Insect,DF5100,DF7620,C3D630,C3EB20,80A57130,actors -ovl_En_Butte,DF7620,DF8BF0,C3EB20,C3F870,80A59650,actors -ovl_En_Fish,DF8BF0,DFAD00,C3F870,C40A30,80A5AC20,actors -ovl_Bg_Spot08_Iceblock,DFAD00,DFBD40,C40A30,C413B0,80A5CD30,actors -ovl_Item_Etcetera,DFBD40,DFC610,C413B0,C41920,80A5DD70,actors -ovl_Arrow_Fire,DFC610,DFE4F0,C41920,C430F0,80A5E640,actors -ovl_Arrow_Ice,DFE4F0,E003F0,C430F0,C446A0,80A60520,actors -ovl_Arrow_Light,E003F0,E02300,C446A0,C45CD0,80A62420,actors -ovl_Obj_Kibako,E02300,E03000,C45CD0,C46440,80A64330,actors -ovl_Obj_Tsubo,E03000,E03FF0,C46440,C46DD0,80A65030,actors -ovl_En_Wonder_Item,E03FF0,E04C40,C46DD0,C47520,80A66020,actors -ovl_En_Ik,E04C40,E09290,C47520,C497E0,80A66D50,actors -ovl_Demo_Ik,E09290,E0A7A0,C497E0,C4A2D0,80A6B3B0,actors -ovl_En_Skj,E0A7A0,E0E0E0,C4A2D0,C4C0E0,80A6C8C0,actors -ovl_En_Skjneedle,E0E0E0,E0E3F0,C4C0E0,C4C320,80A70210,actors -ovl_En_G_Switch,E0E3F0,E0FC10,C4C320,C4D2D0,80A70520,actors -ovl_Demo_Ext,E0FC10,E10560,C4D2D0,C4D8D0,80A71D40,actors -ovl_Demo_Shd,E10560,E12970,C4D8D0,C4EE30,80A72690,actors -ovl_En_Dns,E12970,E13D00,C4EE30,C4F900,80A74AA0,actors -ovl_Elf_Msg,E13D00,E142F0,C4F900,C4FCB0,80A75E30,actors -ovl_En_Honotrap,E142F0,E15850,C4FCB0,C50A20,80A76420,actors -ovl_En_Tubo_Trap,E15850,E164F0,C50A20,C511C0,80A77980,actors -ovl_Obj_Ice_Poly,E164F0,E16EA0,C511C0,C51850,80A78620,actors -ovl_Bg_Spot03_Taki,E16EA0,E177C0,C51850,C51E00,80A78FD0,actors -ovl_Bg_Spot07_Taki,E177C0,E17DB0,C51E00,C521C0,80A798F0,actors -ovl_En_Fz,E17DB0,E19DC0,C521C0,C534E0,80A79EE0,actors -ovl_En_Po_Relay,E19DC0,E1B4D0,C534E0,C543A0,80A7BEF0,actors -ovl_Bg_Relay_Objects,E1B4D0,E1BC80,C543A0,C548B0,80A7D600,actors -ovl_En_Diving_Game,E1BC80,E1D630,C548B0,C55800,80A7DDB0,actors -ovl_En_Kusa,E1D630,E1EB10,C55800,C564E0,80A7F760,actors -ovl_Obj_Bean,E1EB10,E212A0,C564E0,C57A00,80A80C40,actors -ovl_Obj_Bombiwa,E212A0,E21810,C57A00,C57DF0,80A833D0,actors -ovl_Obj_Switch,E21810,E235F0,C57DF0,C58DF0,80A83940,actors -ovl_Obj_Elevator,E235F0,E239B0,C58DF0,C59070,80A85720,actors -ovl_Obj_Lift,E239B0,E243D0,C59070,C59750,80A85AE0,actors -ovl_Obj_Hsblock,E243D0,E249A0,C59750,C59B30,80A86500,actors -ovl_En_Okarina_Tag,E249A0,E25EA0,C59B30,C5A570,80A86AD0,actors -ovl_En_Yabusame_Mark,E25EA0,E26570,C5A570,C5A9D0,80A87FD0,actors -ovl_En_Goroiwa,E26570,E28930,C5A9D0,C5BF50,80A886A0,actors -ovl_En_Ex_Ruppy,E28930,E299F0,C5BF50,C5C9F0,80A8AA60,actors -ovl_En_Toryo,E299F0,E2A680,C5C9F0,C5D1A0,80A8BB20,actors -ovl_En_Daiku,E2A680,E2BDC0,C5D1A0,C5E0C0,80A8C7B0,actors -ovl_En_Nwc,E2BDC0,E2C7E0,C5E0C0,C5E7E0,80A8DEF0,actors -ovl_En_Blkobj,E2C7E0,E2CD40,C5E7E0,C5EBA0,80A8E910,actors -ovl_Item_Inbox,E2CD40,E2CEA0,C5EBA0,C5EC90,80A8EE70,actors -ovl_En_Ge1,E2CEA0,E2EED0,C5EC90,C5FDC0,80A8EFD0,actors -ovl_Obj_Blockstop,E2EED0,E2F070,C5FDC0,C5FF00,80A91000,actors -ovl_En_Sda,E2F070,E306A0,C5FF00,C60BA0,80A911A0,actors -ovl_En_Clear_Tag,E306A0,E39210,C60BA0,C64720,80A92890,actors -ovl_En_Niw_Lady,E39210,E3AB10,C64720,C65630,80A9DE30,actors -ovl_En_Gm,E3AB10,E3B840,C65630,C65EB0,80A9F730,actors -ovl_En_Ms,E3B840,E3BF30,C65EB0,C66370,80AA0460,actors -ovl_En_Hs,E3BF30,E3CAD0,C66370,C66A60,80AA0B50,actors -ovl_Bg_Ingate,E3CAD0,E3CE60,C66A60,C66CF0,80AA16F0,actors -ovl_En_Kanban,E3CE60,E3FFB0,C66CF0,C68660,80AA1A80,actors -ovl_En_Heishi3,E3FFB0,E40980,C68660,C68C60,80AA4BD0,actors -ovl_En_Syateki_Niw,E40980,E42A10,C68C60,C6A060,80AA55A0,actors -ovl_En_Attack_Niw,E42A10,E43C70,C6A060,C6ABA0,80AA7630,actors -ovl_Bg_Spot01_Idosoko,E43C70,E43E80,C6ABA0,C6AD20,80AA8890,actors -ovl_En_Sa,E43E80,E460F0,C6AD20,C6BFE0,80AA8AA0,actors -ovl_En_Wonder_Talk,E460F0,E46780,C6BFE0,C6C450,80AAAD10,actors -ovl_Bg_Gjyo_Bridge,E46780,E46C70,C6C450,C6C7E0,80AAB3A0,actors -ovl_En_Ds,E46C70,E47890,C6C7E0,C6CF10,80AAB890,actors -ovl_En_Mk,E47890,E48720,C6CF10,C6D770,80AAC4B0,actors -ovl_En_Bom_Bowl_Man,E48720,E49C60,C6D770,C6E4B0,80AAD340,actors -ovl_En_Bom_Bowl_Pit,E49C60,E4A5D0,C6E4B0,C6EAD0,80AAE880,actors -ovl_En_Owl,E4A5D0,E4E170,C6EAD0,C707E0,80AAF1F0,actors -ovl_En_Ishi,E4E170,E572C0,C707E0,C717A0,80AB2D90,actors -ovl_Obj_Hana,E572C0,E575D0,C717A0,C719C0,80ABBEE0,actors -ovl_Obj_Lightswitch,E575D0,E58A00,C719C0,C72570,80ABC1F0,actors -ovl_Obj_Mure2,E58A00,E59420,C72570,C72BB0,80ABD620,actors -ovl_En_Go,E59420,E5DA60,C72BB0,C75160,80ABE040,actors -ovl_En_Fu,E5DA60,E5E7A0,C75160,C75A10,80AC2680,actors -ovl_En_Changer,E5E7A0,E5F180,C75A10,C76020,80AC33D0,actors -ovl_Bg_Jya_Megami,E5F180,E60370,C76020,C76CA0,80AC3DB0,actors -ovl_Bg_Jya_Lift,E60370,E608C0,C76CA0,C77040,80AC4FA0,actors -ovl_Bg_Jya_Bigmirror,E608C0,E61110,C77040,C77610,80AC54F0,actors -ovl_Bg_Jya_Bombchuiwa,E61110,E61C50,C77610,C77D40,80AC5D40,actors -ovl_Bg_Jya_Amishutter,E61C50,E61FE0,C77D40,C77F40,80AC6880,actors -ovl_Bg_Jya_Bombiwa,E61FE0,E625A0,C77F40,C78350,80AC6C10,actors -ovl_Bg_Spot18_Basket,E625A0,E63590,C78350,C78D60,80AC71D0,actors -ovl_En_Ganon_Organ,E63590,E6A5D0,C78D60,C7BCA0,80AC81C0,actors -ovl_En_Siofuki,E6A5D0,E6B380,C7BCA0,C7C530,80ACF200,actors -ovl_En_Stream,E6B380,E6B910,C7C530,C7C920,80ACFFB0,actors -ovl_En_Mm,E6B910,E6CF70,C7C920,C7D770,80AD0540,actors -ovl_En_Ko,E6CF70,E710B0,C7D770,C7F6F0,80AD1BA0,actors -ovl_En_Kz,E710B0,E72650,C7F6F0,C80480,80AD5CE0,actors -ovl_En_Weather_Tag,E72650,E73540,C80480,C80AA0,80AD7280,actors -ovl_Bg_Sst_Floor,E73540,E73AA0,C80AA0,C80EB0,80AD8170,actors -ovl_En_Ani,E73AA0,E74810,C80EB0,C816C0,80AD86D0,actors -ovl_En_Ex_Item,E74810,E75990,C816C0,C82120,80AD9440,actors -ovl_Bg_Jya_Ironobj,E75990,E76740,C82120,C82910,80ADA5C0,actors -ovl_En_Js,E76740,E77110,C82910,C82F00,80ADB370,actors -ovl_En_Jsjutan,E77110,E7BEE0,C82F00,C847E0,80ADBD40,actors -ovl_En_Cs,E7BEE0,E7D110,C847E0,C85380,80AE1670,actors -ovl_En_Md,E7D110,E7F780,C85380,C866E0,80AE28A0,actors -ovl_En_Hy,E7F780,E830C0,C866E0,C88530,80AE4F10,actors -ovl_En_Ganon_Mant,E830C0,E872F0,C88530,C89E00,80AE8850,actors -ovl_En_Okarina_Effect,E872F0,E876B0,C89E00,C8A080,80AECA80,actors -ovl_En_Mag,E876B0,E8A6F0,C8A080,C8B630,80AECE40,actors -ovl_Door_Gerudo,E8A6F0,E8ACE0,C8B630,C8BA60,80AF1E80,actors -ovl_Elf_Msg2,E8ACE0,E8B150,C8BA60,C8BCE0,80AF2470,actors -ovl_Demo_Gt,E8B150,E90760,C8BCE0,C8E1A0,80AF28E0,actors -ovl_En_Po_Field,E90760,E94160,C8E1A0,C903D0,80AF7EF0,actors -ovl_Efc_Erupc,E94160,E94C50,C903D0,C90B40,80AFB980,actors -ovl_Bg_Zg,E94C50,E950A0,C90B40,C90E20,80AFC470,actors -ovl_En_Heishi4,E950A0,E95FA0,C90E20,C91710,80AFC8C0,actors -ovl_En_Zl3,E95FA0,E9DDF0,C91710,C94CC0,80AFD7C0,actors -ovl_Boss_Ganon2,E9DDF0,EAF140,C94CC0,C9DC80,80B05610,actors -ovl_En_Kakasi,EAF140,EAFE80,C9DC80,C9E500,80B18480,actors -ovl_En_Takara_Man,EAFE80,EB0740,C9E500,C9EB20,80B191C0,actors -ovl_Obj_Makeoshihiki,EB0740,EB0BD0,C9EB20,C9EE50,80B19A80,actors -ovl_Oceff_Spot,EB0BD0,EB1B00,C9EE50,C9F9C0,80B19F10,actors -ovl_End_Title,EB1B00,EB7540,C9F9C0,CA1670,80B1AE40,actors -ovl_En_Torch,EB7540,EB7630,CA1670,CA1740,80B20880,actors -ovl_Demo_Ec,EB7630,EBAE90,CA1740,CA2A30,80B20970,actors -ovl_Shot_Sun,EBAE90,EBB550,CA2A30,CA2EF0,80B241D0,actors -ovl_En_Dy_Extra,EBB550,EBBAF0,CA2EF0,CA3300,80B24890,actors -ovl_En_Wonder_Talk2,EBBAF0,EBC190,CA3300,CA37A0,80B24E30,actors -ovl_En_Ge2,EBC190,EBDB30,CA37A0,CA4690,80B254D0,actors -ovl_Obj_Roomtimer,EBDB30,EBDD80,CA4690,CA4850,80B26E70,actors -ovl_En_Ssh,EBDD80,EC0370,CA4850,CA5EA0,80B270C0,actors -ovl_En_Sth,EC0370,EC4430,CA5EA0,CA8540,80B296B0,actors -ovl_Oceff_Wipe,EC4430,EC51B0,CA8540,CA8FA0,80B2D770,actors -ovl_Effect_Ss_Dust,EC51B0,EC59F0,CA8FA0,CA9530,80B2E4F0,effects -ovl_Effect_Ss_KiraKira,EC59F0,EC6060,CA9530,CA99D0,80B2ED30,effects -ovl_Effect_Ss_Bomb,EC6060,EC6490,CA99D0,CA9D00,80B2F3A0,effects -ovl_Effect_Ss_Bomb2,EC6490,EC6D90,CA9D00,CAA290,80B2F7D0,effects -ovl_Effect_Ss_Blast,EC6D90,EC7120,CAA290,CAA560,80B300D0,effects -ovl_Effect_Ss_G_Spk,EC7120,EC76D0,CAA560,CAA990,80B30460,effects -ovl_Effect_Ss_D_Fire,EC76D0,EC7BC0,CAA990,CAAD60,80B30A10,effects -ovl_Effect_Ss_Bubble,EC7BC0,EC8040,CAAD60,CAB0B0,80B30F00,effects -ovl_Effect_Ss_G_Ripple,EC8040,EC85A0,CAB0B0,CAB4B0,80B31380,effects -ovl_Effect_Ss_G_Splash,EC85A0,EC8A50,CAB4B0,CAB7C0,80B318E0,effects -ovl_Effect_Ss_G_Magma,EC8A50,EC8CB0,CAB7C0,CAB9A0,80B31D90,effects -ovl_Effect_Ss_G_Fire,EC8CB0,EC8F40,CAB9A0,CABB90,80B31FF0,effects -ovl_Effect_Ss_Lightning,EC8F40,EC9610,CABB90,CAC0C0,80B32280,effects -ovl_Effect_Ss_Dt_Bubble,EC9610,EC9BA0,CAC0C0,CAC4C0,80B32950,effects -ovl_Effect_Ss_Hahen,EC9BA0,ECA1E0,CAC4C0,CAC8E0,80B32EE0,effects -ovl_Effect_Ss_Stick,ECA1E0,ECA580,CAC8E0,CACB90,80B33520,effects -ovl_Effect_Ss_Sibuki,ECA580,ECAC50,CACB90,CAD080,80B338C0,effects -ovl_Effect_Ss_Sibuki2,ECAC50,ECAF80,CAD080,CAD300,80B33F90,effects -ovl_Effect_Ss_G_Magma2,ECAF80,ECB490,CAD300,CAD6E0,80B342C0,effects -ovl_Effect_Ss_Stone1,ECB490,ECB810,CAD6E0,CAD990,80B347D0,effects -ovl_Effect_Ss_HitMark,ECB810,ECBD60,CAD990,CADD60,80B34B50,effects -ovl_Effect_Ss_Fhg_Flash,ECBD60,ECCCE0,CADD60,CAE5E0,80B350A0,effects -ovl_Effect_Ss_K_Fire,ECCCE0,ECD120,CAE5E0,CAE930,80B36020,effects -ovl_Effect_Ss_Solder_Srch_Ball,ECD120,ECD2D0,CAE930,CAEA90,80B36460,effects -ovl_Effect_Ss_Kakera,ECD2D0,ECE360,CAEA90,CAF4C0,80B36610,effects -ovl_Effect_Ss_Ice_Piece,ECE360,ECE7A0,CAF4C0,CAF810,80B376A0,effects -ovl_Effect_Ss_En_Ice,ECE7A0,ECF060,CAF810,CAFE60,80B37AE0,effects -ovl_Effect_Ss_Fire_Tail,ECF060,ECF760,CAFE60,CB0390,80B383A0,effects -ovl_Effect_Ss_En_Fire,ECF760,ECFEB0,CB0390,CB08F0,80B38AA0,effects -ovl_Effect_Ss_Extra,ECFEB0,ED0270,CB08F0,CB0BE0,80B391F0,effects -ovl_Effect_Ss_Fcircle,ED0270,ED0720,CB0BE0,CB0F80,80B395B0,effects -ovl_Effect_Ss_Dead_Db,ED0720,ED0C00,CB0F80,CB1360,80B39A60,effects -ovl_Effect_Ss_Dead_Dd,ED0C00,ED1190,CB1360,CB1780,80B39F40,effects -ovl_Effect_Ss_Dead_Ds,ED1190,ED1610,CB1780,CB1AF0,80B3A4D0,effects -ovl_Effect_Ss_Dead_Sound,ED1610,ED1750,CB1AF0,CB1C00,80B3A950,effects -ovl_Oceff_Storm,ED1750,ED3300,CB1C00,CB33A0,80B3AA90,actors -ovl_En_Weiyer,ED3300,ED4D00,CB33A0,CB4250,80B3C640,actors -ovl_Bg_Spot05_Soko,ED4D00,ED5020,CB4250,CB4480,80B3E040,actors -ovl_Bg_Jya_1flift,ED5020,ED56B0,CB4480,CB48B0,80B3E360,actors -ovl_Bg_Jya_Haheniron,ED56B0,ED5EA0,CB48B0,CB4E10,80B3E9F0,actors -ovl_Bg_Spot12_Gate,ED5EA0,ED62B0,CB4E10,CB50C0,80B3F1E0,actors -ovl_Bg_Spot12_Saku,ED62B0,ED6770,CB50C0,CB53F0,80B3F5F0,actors -ovl_En_Hintnuts,ED6770,ED81A0,CB53F0,CB62E0,80B3FAB0,actors -ovl_En_Nutsball,ED81A0,ED87C0,CB62E0,CB6760,80B414E0,actors -ovl_Bg_Spot00_Break,ED87C0,ED8960,CB6760,CB68A0,80B41B00,actors -ovl_En_Shopnuts,ED8960,ED9870,CB68A0,CB7170,80B41CA0,actors -ovl_En_It,ED9870,ED9A00,CB7170,CB7280,80B42BB0,actors -ovl_En_GeldB,ED9A00,EDEDB0,CB7280,CB9DA0,80B42D40,actors -ovl_Oceff_Wipe2,EDEDB0,EE0520,CB9DA0,CBA9E0,80B480F0,actors -ovl_Oceff_Wipe3,EE0520,EE1C70,CBA9E0,CBBA20,80B49860,actors -ovl_En_Niw_Girl,EE1C70,EE2740,CBBA20,CBC1D0,80B4AFB0,actors -ovl_En_Dog,EE2740,EE38F0,CBC1D0,CBCC50,80B4BA80,actors -ovl_En_Si,EE38F0,EE3DF0,CBCC50,CBCFC0,80B4CC30,actors -ovl_Bg_Spot01_Objects2,EE3DF0,EE42B0,CBCFC0,CBD330,80B4D130,actors -ovl_Obj_Comb,EE42B0,EE4B10,CBD330,CBD940,80B4D5F0,actors -ovl_Bg_Spot11_Bakudankabe,EE4B10,EE5150,CBD940,CBDDB0,80B4DE50,actors -ovl_Obj_Kibako2,EE5150,EE5810,CBDDB0,CBE260,80B4E490,actors -ovl_En_Dnt_Demo,EE5810,EE6530,CBE260,CBEB10,80B4EB50,actors -ovl_En_Dnt_Jiji,EE6530,EE7A50,CBEB10,CBF5F0,80B4F870,actors -ovl_En_Dnt_Nomal,EE7A50,EEA850,CBF5F0,CC0D90,80B50D90,actors -ovl_En_Guest,EEA850,EEB1F0,CC0D90,CC1440,80B53B90,actors -ovl_Bg_Bom_Guard,EEB1F0,EEB410,CC1440,CC15F0,80B54530,actors -ovl_En_Hs2,EEB410,EEB9F0,CC15F0,CC19F0,80B54750,actors -ovl_Demo_Kekkai,EEB9F0,EECCE0,CC19F0,CC2630,80B54D30,actors -ovl_Bg_Spot08_Bakudankabe,EECCE0,EED380,CC2630,CC2AE0,80B56020,actors -ovl_Bg_Spot17_Bakudankabe,EED380,EEDA70,CC2AE0,CC2FC0,80B566C0,actors -ovl_Obj_Mure3,EEDA70,EEE240,CC2FC0,CC34F0,80B56DB0,actors -ovl_En_Tg,EEE240,EEE920,CC34F0,CC39A0,80B57580,actors -ovl_En_Mu,EEE920,EEF240,CC39A0,CC4000,80B57C60,actors -ovl_En_Go2,EEF240,EF5280,CC4000,CC7460,80B58580,actors -ovl_En_Wf,EF5280,EF9590,CC7460,CC97F0,80B5E5C0,actors -ovl_En_Skb,EF9590,EFAE80,CC97F0,CCA720,80B628D0,actors -ovl_Demo_Gj,EFAE80,EFEB30,CCA720,CCBEA0,80B641C0,actors -ovl_Demo_Geff,EFEB30,EFF350,CCBEA0,CCC380,80B67E70,actors -ovl_Bg_Gnd_Firemeiro,EFF350,EFF8A0,CCC380,CCC720,80B68690,actors -ovl_Bg_Gnd_Darkmeiro,EFF8A0,F00060,CCC720,CCCC00,80B68BE0,actors -ovl_Bg_Gnd_Soulmeiro,F00060,F008C0,CCCC00,CCD1D0,80B693A0,actors -ovl_Bg_Gnd_Nisekabe,F008C0,F00A30,CCD1D0,CCD2F0,80B69C00,actors -ovl_Bg_Gnd_Iceblock,F00A30,F01B20,CCD2F0,CCDC00,80B69D70,actors -ovl_Bg_Ydan_Sp,F01B20,F03240,CCDC00,CCEA50,80B6AE70,actors -ovl_En_Gb,F03240,F04970,CCEA50,CCF8E0,80B6C590,actors -ovl_En_Gs,F04970,F067E0,CCF8E0,CD0BD0,80B6DCC0,actors -ovl_Bg_Mizu_Bwall,F067E0,F07CB0,CD0BD0,CD1780,80B6FB30,actors -ovl_Bg_Mizu_Shutter,F07CB0,F084B0,CD1780,CD1CB0,80B71000,actors -ovl_En_Daiku_Kakariko,F084B0,F09870,CD1CB0,CD2940,80B71800,actors -ovl_Bg_Bowl_Wall,F09870,F0A1F0,CD2940,CD3000,80B72BC0,actors -ovl_En_Wall_Tubo,F0A1F0,F0A6E0,CD3000,CD3370,80B73540,actors -ovl_En_Po_Desert,F0A6E0,F0B4A0,CD3370,CD3CD0,80B73A30,actors -ovl_En_Crow,F0B4A0,F0CB40,CD3CD0,CD4B00,80B747F0,actors -ovl_Door_Killer,F0CB40,F0E0B0,CD4B00,CD58C0,80B75E90,actors -ovl_Bg_Spot11_Oasis,F0E0B0,F0E7E0,CD58C0,CD5DE0,80B77400,actors -ovl_Bg_Spot18_Futa,F0E7E0,F0E980,CD5DE0,CD5F20,80B77B30,actors -ovl_Bg_Spot18_Shutter,F0E980,F0EED0,CD5F20,CD62A0,80B77CD0,actors -ovl_En_Ma3,F0EED0,F0FE80,CD62A0,CD6CA0,80B78220,actors -ovl_En_Cow,F0FE80,F112E0,CD6CA0,CD77D0,80B791D0,actors -ovl_Bg_Ice_Turara,F112E0,F11B10,CD77D0,CD7D70,80B7A630,actors -ovl_Bg_Ice_Shutter,F11B10,F11F80,CD7D70,CD8040,80B7AE60,actors -ovl_En_Kakasi2,F11F80,F126A0,CD8040,CD84E0,80B7B2D0,actors -ovl_En_Kakasi3,F126A0,F13780,CD84E0,CD8F40,80B7B9F0,actors -ovl_Oceff_Wipe4,F13780,F14760,CD8F40,CD9970,80B7CAD0,actors -ovl_En_Eg,F14760,F14910,CD9970,CD9AB0,80B7DAB0,actors -ovl_Bg_Menkuri_Nisekabe,F14910,F14A60,CD9AB0,CD9BB0,80B7DC60,actors -ovl_En_Zo,F14A60,F17020,CD9BB0,CDB1A0,80B7DDB0,actors -ovl_Effect_Ss_Ice_Smoke,F17020,F17500,CDB1A0,CDB530,80B80370,effects -ovl_Obj_Makekinsuta,F17500,F17650,CDB530,CDB650,80B80850,actors -ovl_En_Ge3,F17650,F18290,CDB650,CDBDE0,80B809A0,actors -ovl_Obj_Timeblock,F18290,F18EE0,CDBDE0,CDC570,80B815E0,actors -ovl_Obj_Hamishi,F18EE0,F19730,CDC570,CDCB40,80B82230,actors -ovl_En_Zl4,F19730,F1E160,CDCB40,CDEB30,80B82A80,actors -ovl_En_Mm2,F1E160,F1EF20,CDEB30,CDF3F0,80B874B0,actors -ovl_Bg_Jya_Block,F1EF20,F1F190,CDF3F0,CDF5F0,80B88270,actors -ovl_Obj_Warp2block,F1F190,F1FCC0,CDF5F0,CDFD50,80B884E0,actors diff --git a/tools/disasm/ique-cn/files_boot.csv b/tools/disasm/ique-cn/files_boot.csv deleted file mode 100644 index dfbbf225bc..0000000000 --- a/tools/disasm/ique-cn/files_boot.csv +++ /dev/null @@ -1,141 +0,0 @@ -offset,vram,.text -0,80000450,src/boot/boot_main -140,80000590,src/boot/idle -390,800007E0,src/boot/viconfig -4D0,80000920,src/boot/z_std_dma -B50,80000FA0,src/boot/inflate -2830,80002C80,src/boot/z_locale -2870,80002CC0,src/boot/is_debug_ique -2890,80002CE0,src/boot/driverominit -2A70,80002EC0,src/boot/mio0 -2B20,80002F70,src/libu64/stackcheck -2D70,800031C0,src/libultra/os/invaldcache -2E20,80003270,src/libultra/os/invalicache -2EA0,800032F0,src/libultra/libc/bcmp -2FB0,80003400,src/libultra/libc/bzero -3050,800034A0,src/libultra/os/createmesgqueue -30C0,80003510,src/libultra/os/recvmesg -3230,80003680,src/libultra/os/sendmesg -33A0,800037F0,src/libultra/os/getfpccsr -33B0,80003800,src/libultra/os/getsr -33C0,80003810,src/libultra/os/setfpccsr -33D0,80003820,src/libultra/os/setsr -33E0,80003830,src/libultra/os/createthread -3550,800039A0,src/libultra/os/setthreadpri -3660,80003AB0,src/libultra/os/startthread -37F0,80003C40,src/libultra/os/stopthread -38E0,80003D30,src/libultra/os/thread -3940,80003D90,src/libultra/os/gettime -39F0,80003E40,src/libultra/os/timerintr -3F10,80004360,src/libultra/io/vigetnextframebuf -3F50,800043A0,src/libultra/io/vimgr -4250,800046A0,src/libultra/io/visetmode -42D0,80004720,src/libultra/io/visetspecial -4450,800048A0,src/libultra/io/visetxscale -4510,80004960,src/libultra/io/visetyscale -4560,800049B0,src/libultra/io/viswapbuf -45B0,80004A00,src/libultra/io/viswapcontext -48C0,80004D10,src/libultra/io/viblack -4920,80004D70,src/libultra/io/viextendvstart -4930,80004D80,src/libultra/os/exceptasm -53B0,80005800,src/libultra/os/interrupt -5440,80005890,src/libultra/os/setintmask -54F0,80005940,src/libultra/os/sethwintrroutine -5580,800059D0,src/libultra/os/gethwintrroutine -55F0,80005A40,src/libultra/io/pimgr -5770,80005BC0,src/libultra/io/epirawdma -5B30,80005F80,src/libultra/io/epiread -5B90,80005FE0,src/libultra/io/epidma -5C30,80006080,src/libultra/io/cartrominit -5D90,800061E0,src/libultra/io/devmgr -6230,80006680,src/libultra/io/piacs -62F0,80006740,src/libultra/os/parameters -6360,800067B0,src/libultra/os/getmemsize -6390,800067E0,src/libultra/os/initialize -6920,80006D70,src/libultra/os/writebackdcache -69A0,80006DF0,src/libultra/os/virtualtophysical -6A70,80006EC0,src/libultra/libc/bcopy -6D90,800071E0,src/libultra/os/jammesg -6F10,80007360,src/libultra/os/seteventmesg -6FE0,80007430,src/libultra/os/getcause -6FF0,80007440,src/libultra/os/setwatchlo -7000,80007450,src/libultra/reg/_getcount -7100,80007550,src/libultra/reg/_setcompare -71B0,80007600,src/libultra/io/sirawread -7200,80007650,src/libultra/io/sirawwrite -7250,800076A0,src/libultra/os/destroythread -7380,800077D0,src/libultra/os/getthreadpri -73D0,80007820,src/libultra/os/yieldthread -7430,80007880,src/libultra/os/probetlb -74F0,80007940,src/libultra/os/maptlbrdb -7550,800079A0,src/libultra/os/unmaptlball -75A0,800079F0,src/libultra/io/vi -76A0,80007AF0,src/libultra/io/vigetcurrcontext -76B0,80007B00,src/libultra/os/setglobalintmask -7710,80007B60,src/libultra/os/resetglobalintmask -7780,80007BD0,src/libultra/io/pirawdma -7860,80007CB0,src/libultra/io/pigetcmdq -7890,80007CE0,src/libultra/io/epirawread -7A10,80007E60,src/libultra/io/epirawwrite -7B90,80007FE0,src/libultra/io/si -7BC0,80008010,src/libgcc/__divdi3 -81A0,800085F0,src/libgcc/__moddi3 -8730,80008B80,src/libgcc/__udivdi3 -8CA0,800090F0,src/libgcc/__umoddi3 -91B0,80009600,src/libgcc/__cmpdi2 -9200,80009650,src/libgcc/__floatdidf -9250,800096A0,src/libgcc/__floatdisf -9310,80009760,src/libgcc/__fixunsdfdi -9510,80009960,src/libgcc/__fixdfdi -9580,800099D0,src/libgcc/__fixunssfdi -9780,80009BD0,src/libgcc/__fixsfdi -97E0,80009C30,data/rsp_boot - -offset,vram,.data -98D0,80009D20,src/boot/idle -98F0,80009D40,src/boot/viconfig -9910,80009D60,src/boot/carthandle -9920,80009D70,src/boot/z_std_dma -9930,80009D80,src/boot/inflate -9AB0,80009F00,src/boot/z_locale -9AC0,80009F10,src/boot/driverominit -9AD0,80009F20,src/libu64/stackcheck -9AE0,80009F30,src/libultra/os/thread -9B00,80009F50,src/libultra/os/timerintr -9B10,80009F60,src/libultra/io/vimgr -9B30,80009F80,src/libultra/io/vimodentsclan1 -9B80,80009FD0,src/libultra/io/vimodepallan1 -9BD0,8000A020,src/libultra/io/vimodempallan1 -9C20,8000A070,src/libultra/os/exceptasm -9C50,8000A0A0,src/libultra/io/pimgr -9C80,8000A0D0,src/libultra/io/cartrominit -9C90,8000A0E0,src/libultra/io/piacs -9CA0,8000A0F0,src/libultra/os/initialize -9CC0,8000A110,src/libultra/os/seteventmesg -9CD0,8000A120,src/libultra/io/vi - -offset,vram,.rodata -9D40,8000A190,src/boot/boot_main -9D50,8000A1A0,src/boot/idle -9FA0,8000A3F0,src/boot/z_std_dma -A210,8000A660,src/libu64/stackcheck -A220,8000A670,src/libultra/os/exceptasm -A270,8000A6C0,src/libultra/os/setintmask -A2F0,8000A740,src/libultra/io/devmgr -A310,8000A760,src/libgcc/__divdi3 -A410,8000A860,src/libgcc/__moddi3 -A510,8000A960,src/libgcc/__udivdi3 -A610,8000AA60,src/libgcc/__umoddi3 -A710,8000AA70,src/boot/build - -offset,vram,.bss -A750,8000ABA0,data/boot_common_8000ABA0 -A7A0,8000ABF0,src/boot/boot_main -B190,8000B5E0,src/boot/idle -BD90,8000C1E0,src/boot/z_std_dma -C500,8000C950,src/boot/inflate -10310,80010760,src/boot/driverominit -10390,800107E0,src/libultra/io/vimgr -115B0,80011A00,src/libultra/io/pimgr -12940,80012D90,data/boot_common_80012D90 -12BF0,80013040,.end diff --git a/tools/disasm/ique-cn/files_code.csv b/tools/disasm/ique-cn/files_code.csv deleted file mode 100644 index 031d059a0b..0000000000 --- a/tools/disasm/ique-cn/files_code.csv +++ /dev/null @@ -1,528 +0,0 @@ -offset,vram,.text -0,80018FA0,src/code/z_en_a_keep -AA0,80019A40,src/code/z_en_item00 -2EA0,8001BE40,src/code/z_eff_blure -62D0,8001F270,src/code/z_eff_shield_particle -7930,800208D0,src/code/z_eff_spark -8FE0,80021F80,src/code/z_eff_ss_dead -9790,80022730,src/code/z_effect -9F10,80022EB0,src/code/z_effect_soft_sprite -A9B0,80023950,src/code/z_effect_soft_sprite_old_init -D4D0,80026470,src/code/flg_set -D8F0,80026890,src/code/z_DLF -DB40,80026AE0,src/code/z_actor -18ED0,80031E70,src/code/z_actor_dlftbls -19020,80031FC0,src/code/z_bgcheck -22C00,8003BBA0,src/code/z_bg_collect -22F20,8003BEC0,src/code/z_bg_item -232B0,8003C250,src/code/z_camera -378E0,80050880,src/code/z_collision_btltbls -37940,800508E0,src/code/z_collision_check -3F5C0,80058560,src/code/z_common_data -3F670,80058610,src/code/z_debug -3F980,80058920,src/code/z_debug_display -3FE40,80058DE0,src/code/z_demo -44B20,8005DAC0,src/code/z_memory_utils -44BB0,8005DB50,src/code/z_draw -46AB0,8005FA50,src/code/z_sfx_source -46C70,8005FC10,src/code/z_elf_message -47350,800602F0,src/code/z_face_reaction -473A0,80060340,src/code/z_env_flags -47520,800604C0,src/code/z_fcurve_data -47760,80060700,src/code/z_fcurve_data_skelanime -47F70,80060F10,src/code/z_horse -48C50,80061BF0,src/code/z_jpeg -49410,800623B0,src/code/z_kaleido_setup -497E0,80062780,src/code/z_kanfont -499E0,80062980,src/code/z_kankyo -511F0,8006A190,src/code/z_lib -52390,8006B330,src/code/z_lifemeter -53730,8006C6D0,src/code/z_lights -547D0,8006D770,src/code/z_malloc -549B0,8006D950,src/code/z_map_mark -54FB0,8006DF50,src/code/z_prenmi_buff -55070,8006E010,src/code/z_nulltask -550F0,8006E090,src/code/z_olib -557E0,8006E780,src/code/z_onepointdemo -59780,80072720,src/code/z_map_exp -5B320,800742C0,src/code/z_parameter -66080,8007F020,src/code/z_path -66250,8007F1F0,src/code/z_frame_advance -66300,8007F2A0,src/code/z_player_lib -69D70,80082D10,src/code/z_prenmi -69F10,80082EB0,src/code/z_quake -6AD80,80083D20,src/code/z_rcp -6C640,800855E0,src/code/z_room -6DE30,80086DD0,src/code/z_sample -6E230,800871D0,src/code/z_inventory -6E3F0,80087390,src/code/z_scene -6F8A0,80088840,src/code/z_scene_table -760A0,8008F040,src/code/z_skelanime -7AA90,80093A30,src/code/z_skin -7B630,800945D0,src/code/z_skin_awb -7BF40,80094EE0,src/code/z_skin_matrix -7D2E0,80096280,src/code/z_sram -7E690,80097630,src/code/z_ss_sram -7E860,80097800,src/code/z_rumble -7EAE0,80097A80,src/code/z_view -801E0,80099180,src/code/z_vimode -80D50,80099CF0,src/code/z_viscvg -80EF0,80099E90,src/code/z_vismono -81710,8009A6B0,src/code/z_viszbuf -819A0,8009A940,src/code/z_vr_box -84270,8009D210,src/code/z_vr_box_draw -84950,8009D8F0,src/code/z_player_call -84AC0,8009DA60,src/code/z_fbdemo -854E0,8009E480,src/code/z_fbdemo_triforce -85AA0,8009EA40,src/code/z_fbdemo_wipe1 -85F10,8009EEB0,src/code/z_fbdemo_circle -865D0,8009F570,src/code/z_fbdemo_fade -86930,8009F8D0,src/code/shrink_window -86AA0,8009FA40,src/code/z_cutscene_spline -86F70,8009FF10,src/code/z_kaleido_manager -871A0,800A0140,src/code/z_kaleido_scope_call -87480,800A0420,src/code/z_play -8AEA0,800A3E40,src/code/PreRender -8CF90,800A5F30,src/code/TwoHeadGfxArena -8D1A0,800A6140,src/code/TwoHeadArena -8D360,800A6300,src/code/audio_stop_all_sfx -8D3B0,800A6350,src/code/audio_thread_manager -8D7C0,800A6760,src/code/title_setup -8D830,800A67D0,src/code/game -8DFB0,800A6F50,src/code/gamealloc -8E0F0,800A7090,src/code/graph -8EA90,800A7A30,src/code/gfxalloc -8EAF0,800A7A90,src/code/listalloc -8EC40,800A7BE0,src/code/main -8EFA0,800A7F40,src/code/padmgr -8FAA0,800A8A40,src/code/sched -90720,800A96C0,src/code/speed_meter -91160,800AA100,src/code/sys_cfb -91280,800AA220,src/code/sys_math -91520,800AA4C0,src/code/sys_math3d -972F0,800B0290,src/code/sys_math_atan -97520,800B04C0,src/code/sys_matrix -99920,800B28C0,src/code/sys_ucode -99970,800B2910,src/code/sys_rumble -99CD0,800B2C70,src/code/sys_freeze -99D00,800B2CA0,src/code/irqmgr -9A320,800B32C0,src/code/fault_gc -9CB70,800B5B10,src/code/fault_gc_drawer -9D5F0,800B6590,src/code/kanread -9E0E0,800B7080,src/audio/lib/synthesis -A1240,800BA1E0,src/audio/lib/heap -A4610,800BD5B0,src/audio/lib/load -A8400,800C13A0,src/audio/lib/thread -A9C60,800C2C00,src/audio/lib/dcache -A9CE0,800C2C80,src/audio/lib/aisetnextbuf -A9D60,800C2D00,src/audio/lib/playback -ABCE0,800C4C80,src/audio/lib/effects -AC760,800C5700,src/audio/lib/seqplayer -AFD80,800C8D20,src/audio/general -B5F10,800CEEB0,src/audio/sfx -B7D70,800D0D10,src/audio/sequence -B9990,800D2930,src/libu64/system_heap -B9CD0,800D2C70,src/libu64/debug -B9D30,800D2CD0,src/libu64/gfxprint -BAAA0,800D3A40,src/libu64/relocation_gc -BACE0,800D3C80,src/libu64/loadfragment2_gc -BAD40,800D3CE0,src/libu64/load_gc -BAE10,800D3DB0,src/libu64/padsetup -BAF50,800D3EF0,src/libu64/pad -BB140,800D40E0,src/libu64/rcp_utils -BB1A0,800D4140,src/libc64/__osMalloc_gc -BBF50,800D4EF0,src/libc64/aprintf -BBFB0,800D4F50,src/libc64/malloc -BC180,800D5120,src/libc64/math64 -BC690,800D5630,src/libc64/fp -BC7F0,800D5790,src/libc64/qrand -BC9B0,800D5950,src/libc64/sleep -BCB50,800D5AF0,src/libc64/sprintf -BCC20,800D5BC0,src/code/jpegutils -BD130,800D60D0,src/code/jpegdecoder -BD720,800D66C0,src/libultra/io/aigetlen -BD730,800D66D0,src/libultra/io/aisetfreq -BD830,800D67D0,src/libultra/audio/sl -BD8E0,800D6880,src/libultra/audio/synthesizer -BDF50,800D6EF0,src/libultra/audio/syndelete -BDF60,800D6F00,src/libultra/audio/synallocfx -BE000,800D6FA0,src/libultra/os/writebackdcacheall -BE030,800D6FD0,src/libultra/io/contquery -BE0E0,800D7080,src/libultra/io/contreaddata -BE360,800D7300,src/libultra/io/controller -BE730,800D76D0,src/libultra/io/contsetch -BE790,800D7730,src/libultra/gu/sqrtf -BE7A0,800D7740,src/libultra/gu/cosf -BE8D0,800D7870,src/libultra/gu/coss -BE8F0,800D7890,src/libultra/gu/lookat -BEC20,800D7BC0,src/libultra/gu/lookathil -BF4F0,800D8490,src/libultra/gu/ortho -BF660,800D8600,src/libultra/gu/perspective -BF860,800D8800,src/libultra/gu/position -BFA40,800D89E0,src/libultra/gu/sinf -BFBC0,800D8B60,src/libultra/gu/sins -BFC10,800D8BB0,src/libultra/gu/us2dex -BFD30,800D8CD0,src/libultra/libc/ll -C02B0,800D9250,src/libultra/libc/llcvt -C05C0,800D9560,src/libultra/libc/string -C0640,800D95E0,src/libultra/libc/xprintf -C1020,800D9FC0,src/libultra/io/dpgetstat -C1030,800D9FD0,src/libultra/io/dpsetstat -C1040,800D9FE0,src/libultra/io/spgetstat -C1050,800D9FF0,src/libultra/io/spsetstat -C1060,800DA000,src/libultra/io/sptask -C1270,800DA210,src/libultra/io/sptaskyield -C1290,800DA230,src/libultra/io/sptaskyielded -C12E0,800DA280,src/libultra/io/sirawdma -C13C0,800DA360,src/libultra/io/siacs -C1480,800DA420,src/libultra/os/getthreadid -C14D0,800DA470,src/libultra/os/getactivequeue -C1500,800DA4A0,src/libultra/os/settimer -C16C0,800DA660,src/libultra/os/stoptimer -C17E0,800DA780,src/libultra/io/vigetcurrframebuf -C1820,800DA7C0,src/libultra/io/visetevent -C1880,800DA820,src/libultra/mgu/mtxident -C18E0,800DA880,src/libultra/mgu/mtxidentf -C1940,800DA8E0,src/libultra/mgu/mtxf2l -C19C0,800DA960,src/libultra/mgu/scale -C1A60,800DAA00,src/libultra/mgu/translate -C1B30,800DAAD0,src/libultra/gu/rotate -C1CC0,800DAC60,src/libultra/os/getcurrfaultedthread -C1CF0,800DAC90,src/libultra/bb/sk/skapi -C1F40,800DAEE0,src/libultra/bb/sa/common -C2030,800DAFD0,src/libultra/io/motor -C2040,800DAFE0,src/libultra/os/afterprenmi -C2080,800DB020,src/libultra/audio/drvrnew -C2830,800DB7D0,src/libultra/audio/load -C32C0,800DC260,src/libultra/audio/auxbus -C33D0,800DC370,src/libultra/audio/env -C3F40,800DCEE0,src/libultra/audio/filter -C3F60,800DCF00,src/libultra/audio/mainbus -C40D0,800DD070,src/libultra/audio/resample -C4370,800DD310,src/libultra/audio/reverb -C4EE0,800DDE80,src/libultra/audio/save -C4FC0,800DDF60,src/libultra/audio/heapalloc -C5010,800DDFB0,src/libultra/audio/copy -C5040,800DDFE0,src/libultra/libc/xlitob -C5270,800DE210,src/libultra/libc/xldtob -C5C70,800DEC10,src/libultra/io/sp -C5CA0,800DEC40,src/libultra/io/spsetpc -C5CD0,800DEC70,src/libultra/io/sprawdma -C5D60,800DED00,src/libultra/mgu/normalize -C5DC0,800DED60,src/libultra/libc/ldiv -C5F80,800DEF20,src/libc/fmodf -C5FC0,800DEF60,src/libc/memmove -C6050,800DEFF0,src/libc/absf -C6060,800DF000,src/libc/sqrt -C6070,800DF010,src/code/z_message_z_game_over -D20D0,800EB070,src/code/z_construct -D2FD0,800EBF70,data/rsp.text - -offset,vram,.data -D6330,800EF2D0,src/code/z_en_a_keep -D63D0,800EF370,src/code/z_en_item00 -D6670,800EF610,src/code/z_eff_blure -D6720,800EF6C0,src/code/z_eff_shield_particle -D6770,800EF710,src/code/z_effect -D67C0,800EF760,src/code/z_effect_soft_sprite -D67D0,800EF770,src/code/z_effect_soft_sprite_old_init -D68C0,800EF860,src/code/z_effect_soft_sprite_dlftbls -D6CD0,800EFC70,src/code/flg_set -D6E90,800EFE30,src/code/z_actor -D7180,800F0120,src/code/z_actor_dlftbls -DAC70,800F3C10,src/code/z_bgcheck -DADC0,800F3D60,src/code/z_camera -DE310,800F72B0,src/code/z_collision_btltbls -DE5F0,800F7590,src/code/z_collision_check -DE8A0,800F7840,src/code/z_debug -DE8D0,800F7870,src/code/z_debug_display -DE920,800F78C0,src/code/z_demo -DEA80,800F7A20,src/code/z_draw -DFB00,800F8AA0,src/code/z_elf_message -DFB50,800F8AF0,src/code/z_face_reaction -DFF90,800F8F30,src/code/z_game_dlftbls -E00B0,800F9050,src/code/z_horse -E01C0,800F9160,src/code/z_jpeg -E0200,800F91A0,src/code/z_kaleido_setup -E0250,800F91F0,src/code/z_kankyo -E0640,800F95E0,src/code/z_lib -E0670,800F9610,src/code/z_lifemeter -E0790,800F9730,src/code/z_lights -E07A0,800F9740,src/code/z_map_mark -E0860,800F9800,src/code/z_onepointdemo -E4180,800FD120,src/code/z_map_exp -E41A0,800FD140,src/code/z_map_data -E5FA0,800FEF40,src/code/z_parameter -E6280,800FF220,src/code/z_player_lib -E6960,800FF900,src/code/z_quake -E6990,800FF930,src/code/z_rcp -E77B0,80100750,src/code/z_room -E7830,801007D0,src/code/z_inventory -E7BB0,80100B50,src/code/z_scene -E7C30,80100BD0,src/code/object_table -E88D0,80101870,src/code/z_scene_table -EAAE0,80103A80,src/code/z_skelanime -EAB00,80103AA0,src/code/z_skin_matrix -EAB40,80103AE0,src/code/z_sram -EACF0,80103C90,src/code/z_ss_sram -EADA0,80103D40,data/unk_8012ABC0.data -EADD0,80103D70,src/code/z_view -EADE0,80103D80,src/code/z_viscvg -EAE70,80103E10,src/code/z_vr_box -EB170,80104110,src/code/z_player_call -EB190,80104130,src/code/z_fbdemo -EB210,801041B0,src/code/z_fbdemo_triforce -EB2E0,80104280,src/code/z_fbdemo_wipe1 -EBD80,80104D20,src/code/z_fbdemo_circle -ED080,80106020,src/code/z_fbdemo_fade -ED0B0,80106050,src/code/shrink_window -ED0C0,80106060,src/code/z_kaleido_manager -ED110,801060B0,src/code/z_play -ED120,801060C0,src/code/audio_stop_all_sfx -ED130,801060D0,src/code/graph -ED140,801060E0,src/code/main -ED150,801060F0,src/code/padmgr -ED160,80106100,src/code/speed_meter -ED190,80106130,src/code/sys_math -ED1D0,80106170,src/code/sys_math_atan -ED9E0,80106980,src/code/sys_matrix -EDA60,80106A00,src/code/sys_ucode -EDA70,80106A10,src/code/sys_rumble -EDA80,80106A20,src/code/irqmgr -EDAA0,80106A40,src/code/fault_gc -EDB00,80106AA0,src/code/fault_gc_drawer -EDB40,80106AE0,src/audio/lib/data -EFF50,80108EF0,src/audio/lib/synthesis -EFF80,80108F20,src/audio/lib/load -EFF90,80108F30,src/audio/lib/thread -EFFB0,80108F50,src/audio/lib/aisetnextbuf -EFFC0,80108F60,src/audio/lib/effects -EFFD0,80108F70,src/audio/lib/seqplayer -F0020,80108FC0,src/audio/general -F1740,8010A6E0,src/audio/sfx_params -F2B10,8010BAB0,src/audio/data -F2B80,8010BB20,src/audio/session_config -F3320,8010C2C0,src/libu64/system_heap -F3330,8010C2D0,src/libu64/gfxprint -F3BE0,8010CB80,src/libu64/logseverity_gc -F3BF0,8010CB90,src/libc64/__osMalloc_gc -F3C00,8010CBA0,src/libc64/fp -F3C20,8010CBC0,src/libc64/qrand -F3C30,8010CBD0,src/libultra/audio/sl -F3C40,8010CBE0,src/libultra/io/controller -F3C50,8010CBF0,src/libultra/gu/position -F3C60,8010CC00,src/libultra/gu/sins -F4460,8010D400,src/libultra/libc/xprintf -F44B0,8010D450,src/libultra/io/siacs -F44C0,8010D460,src/libultra/io/vitbl -F5640,8010E5E0,src/libultra/io/vimodentsclpn1 -F5690,8010E630,src/libultra/io/vimodentsclpf1 -F56E0,8010E680,src/libultra/io/vimodentsclaf1 -F5730,8010E6D0,src/libultra/io/vimodentsclpn2 -F5780,8010E720,src/libultra/io/vimodentsclpf2 -F57D0,8010E770,src/libultra/io/vimodentsclan2 -F5820,8010E7C0,src/libultra/io/vimodentsclaf2 -F5870,8010E810,src/libultra/io/vimodentschpn1 -F58C0,8010E860,src/libultra/io/vimodentschpf1 -F5910,8010E8B0,src/libultra/io/vimodentschan1 -F5960,8010E900,src/libultra/io/vimodentschaf1 -F59B0,8010E950,src/libultra/io/vimodentschpn2 -F5A00,8010E9A0,src/libultra/io/vimodentschpf2 -F5A50,8010E9F0,src/libultra/io/vimodepallpn1 -F5AA0,8010EA40,src/libultra/io/vimodepallpf1 -F5AF0,8010EA90,src/libultra/io/vimodepallaf1 -F5B40,8010EAE0,src/libultra/io/vimodepallpn2 -F5B90,8010EB30,src/libultra/io/vimodepallpf2 -F5BE0,8010EB80,src/libultra/io/vimodepallan2 -F5C30,8010EBD0,src/libultra/io/vimodepallaf2 -F5C80,8010EC20,src/libultra/io/vimodepalhpn1 -F5CD0,8010EC70,src/libultra/io/vimodepalhpf1 -F5D20,8010ECC0,src/libultra/io/vimodepalhan1 -F5D70,8010ED10,src/libultra/io/vimodepalhaf1 -F5DC0,8010ED60,src/libultra/io/vimodepalhpn2 -F5E10,8010EDB0,src/libultra/io/vimodepalhpf2 -F5E60,8010EE00,src/libultra/io/vimodempallpn1 -F5EB0,8010EE50,src/libultra/io/vimodempallpf1 -F5F00,8010EEA0,src/libultra/io/vimodempallaf1 -F5F50,8010EEF0,src/libultra/io/vimodempallpn2 -F5FA0,8010EF40,src/libultra/io/vimodempallpf2 -F5FF0,8010EF90,src/libultra/io/vimodempallan2 -F6040,8010EFE0,src/libultra/io/vimodempallaf2 -F6090,8010F030,src/libultra/io/vimodempalhpn1 -F60E0,8010F080,src/libultra/io/vimodempalhpf1 -F6130,8010F0D0,src/libultra/io/vimodempalhan1 -F6180,8010F120,src/libultra/io/vimodempalhaf1 -F61D0,8010F170,src/libultra/io/vimodempalhpn2 -F6220,8010F1C0,src/libultra/io/vimodempalhpf2 -F6270,8010F210,src/libultra/io/vimodefpallpn1 -F62C0,8010F260,src/libultra/io/vimodefpallpf1 -F6310,8010F2B0,src/libultra/io/vimodefpallan1 -F6360,8010F300,src/libultra/io/vimodefpallaf1 -F63B0,8010F350,src/libultra/io/vimodefpallpn2 -F6400,8010F3A0,src/libultra/io/vimodefpallpf2 -F6450,8010F3F0,src/libultra/io/vimodefpallan2 -F64A0,8010F440,src/libultra/io/vimodefpallaf2 -F64F0,8010F490,src/libultra/io/vimodefpalhpn1 -F6540,8010F4E0,src/libultra/io/vimodefpalhpf1 -F6590,8010F530,src/libultra/io/vimodefpalhan1 -F65E0,8010F580,src/libultra/io/vimodefpalhaf1 -F6630,8010F5D0,src/libultra/io/vimodefpalhpn2 -F6680,8010F620,src/libultra/io/vimodefpalhpf2 -F66D0,8010F670,src/libultra/gu/rotate -F66E0,8010F680,src/libultra/audio/drvrnew -F6870,8010F810,src/libultra/audio/env -F6970,8010F910,src/libultra/libc/xlitob - -offset,vram,.rodata -F69A0,8010F940,src/code/z_en_a_keep -F69F0,8010F990,src/code/z_en_item00 -F6C60,8010FC00,src/code/z_eff_blure -F6C90,8010FC30,src/code/z_eff_shield_particle -F6CA0,8010FC40,src/code/z_eff_spark -F6CB0,8010FC50,src/code/z_eff_ss_dead -F6CC0,8010FC60,src/code/z_effect_soft_sprite_old_init -F6CE0,8010FC80,src/code/flg_set -F7070,80110010,src/code/z_actor -F7790,80110730,src/code/z_actor_dlftbls -F77E0,80110780,src/code/z_bgcheck -F7880,80110820,src/code/z_bg_item -F7890,80110830,src/code/z_camera -F8010,80110FB0,src/code/z_collision_check -F8060,80111000,src/code/z_debug -F8070,80111010,src/code/z_demo -F8550,801114F0,src/code/z_draw -F8560,80111500,src/code/z_elf_message -F8680,80111620,src/code/z_fcurve_data -F8690,80111630,src/code/z_fcurve_data_skelanime -F86A0,80111640,src/code/z_horse -F86B0,80111650,src/code/z_jpeg -F8740,801116E0,src/code/z_kanfont -F87A0,80111740,src/code/z_kankyo -F8850,801117F0,src/code/z_lib -F8860,80111800,src/code/z_lifemeter -F8880,80111820,src/code/z_lights -F8890,80111830,src/code/z_map_mark -F88F0,80111890,src/code/z_olib -F8910,801118B0,src/code/z_onepointdemo -F91D0,80112170,src/code/z_map_exp -F94F0,80112490,src/code/z_parameter -F9BF0,80112B90,src/code/z_path -F9C00,80112BA0,src/code/z_player_lib -F9C60,80112C00,src/code/z_quake -F9CF0,80112C90,src/code/z_room -F9D30,80112CD0,src/code/z_sample -F9D40,80112CE0,src/code/z_scene_table -F9D80,80112D20,src/code/z_skelanime -F9DA0,80112D40,src/code/z_skin -F9DB0,80112D50,src/code/z_skin_matrix -F9DC0,80112D60,src/code/z_sram -FA460,80113400,src/code/z_rumble -FA470,80113410,src/code/z_view -FA480,80113420,src/code/z_vr_box -FA570,80113510,src/code/z_fbdemo_triforce -FA580,80113520,src/code/z_fbdemo_wipe1 -FA590,80113530,src/code/z_fbdemo_circle -FA5A0,80113540,src/code/z_cutscene_spline -FA5B0,80113550,src/code/z_kaleido_manager -FA5D0,80113570,src/code/z_play -FA690,80113630,src/code/game -FA6B0,80113650,src/code/graph -FA700,801136A0,src/code/main -FA730,801136D0,src/code/padmgr -FA740,801136E0,src/code/sys_cfb -FA750,801136F0,src/code/sys_math -FA760,80113700,src/code/sys_math3d -FA7F0,80113790,src/code/sys_math_atan -FA800,801137A0,src/code/sys_matrix -FA830,801137D0,src/code/irqmgr -FA850,801137F0,src/code/fault_gc -FB260,80114200,src/code/fault_gc_drawer -FB690,80114630,src/audio/lib/synthesis -FB6B0,80114650,src/audio/lib/heap -FB6E0,80114680,src/audio/lib/load -FB750,801146F0,src/audio/lib/thread -FB880,80114820,src/audio/lib/playback -FB8B0,80114850,src/audio/lib/effects -FB8E0,80114880,src/audio/lib/seqplayer -FBF20,80114EC0,src/audio/general -FC0B0,80115050,src/audio/sfx -FC0D0,80115070,src/audio/sequence -FC150,801150F0,src/audio/session_init -FC160,80115100,src/libu64/debug -FC170,80115110,src/libu64/gfxprint -FC190,80115130,src/libc64/__osMalloc_gc -FC450,801153F0,src/libc64/math64 -FC4A0,80115440,src/libultra/audio/synthesizer -FC4B0,80115450,src/libultra/gu/cosf -FC500,801154A0,src/libultra/gu/lookathil -FC510,801154B0,src/libultra/gu/perspective -FC520,801154C0,src/libultra/gu/sinf -FC570,80115510,src/libultra/libc/xprintf -FC6F0,80115690,src/libultra/audio/drvrnew -FC710,801156B0,src/libultra/audio/env -FC7B0,80115750,src/libultra/audio/resample -FC7E0,80115780,src/libultra/audio/reverb -FC810,801157B0,src/libultra/gu/libm_vals -FC820,801157C0,src/libultra/libc/xldtob -FC880,80115820,src/code/z_message_z_game_over -106130,8011F0D0,src/code/z_construct -1062E0,8011F280,data/audio_tables.rodata -106E80,8011FE20,data/rsp.rodata - -offset,vram,.bss -108FA0,80121F40,data/code_common_80121F40 -108FC0,80121F60,src/code/z_en_item00 -108FD0,80121F70,src/code/z_effect -10CDC0,80125D60,src/code/flg_set -10CDD0,80125D70,src/code/z_actor -10CE50,80125DF0,src/code/z_actor_dlftbls -10CE60,80125E00,src/code/z_bgcheck -10CF80,80125F20,src/code/z_camera -10D060,80126000,src/code/z_collision_check -10E7C0,80127760,src/code/z_debug -10E9E0,80127980,src/code/z_debug_display -10E9F0,80127990,src/code/z_demo -10EA20,801279C0,src/code/z_kankyo -10EAF0,80127A90,src/code/z_lifemeter -10EB20,80127AC0,src/code/z_lights -10ECB0,80127C50,src/code/z_malloc -10ECE0,80127C80,src/code/z_map_mark -10ECF0,80127C90,src/code/z_map_exp -10ED00,80127CA0,src/code/z_parameter -10ED20,80127CC0,src/code/z_player_lib -10ED40,80127CE0,src/code/z_quake -10EDD0,80127D70,src/code/z_skelanime -10EDE0,80127D80,src/code/z_skin -10FCF0,80128C90,src/code/z_rumble -10FE00,80128DA0,src/code/z_vr_box_draw -10FE10,80128DB0,src/code/z_player_call -10FE20,80128DC0,src/code/z_kaleido_scope_call -10FE40,80128DE0,src/code/z_play -10FF50,80128EF0,src/code/game -110030,80128FD0,src/code/graph -1100A0,80129040,src/code/main -113F30,8012CED0,src/code/padmgr -113F40,8012CEE0,src/code/sched -113F60,8012CF00,src/code/speed_meter -113FD0,8012CF70,src/code/sys_cfb -113FE0,8012CF80,src/code/sys_math3d -114200,8012D1A0,src/code/sys_matrix -114210,8012D1B0,src/code/fault_gc -115090,8012E030,src/code/fault_gc_drawer -1150F0,8012E090,src/audio/lib/load -1151B0,8012E150,src/audio/general -1153B0,8012E350,src/audio/sfx -117BC0,80130B60,src/audio/sequence -118980,80131920,src/audio/data -118A20,801319C0,src/audio/session_config -11EE90,80137E30,src/libu64/gfxprint -11EEA0,80137E40,src/libc64/__osMalloc_gc -11EEB0,80137E50,src/libc64/malloc -11EEE0,80137E80,src/libc64/math64 -11EEF0,80137E90,src/libc64/qrand -11EF00,80137EA0,src/code/jpegdecoder -11EF10,80137EB0,src/libultra/io/sptask -11EF50,80137EF0,src/libultra/io/siacs -11EF60,80137F00,data/code_common_80137F00 -120420,801393C0,src/code/z_message_z_game_over -120440,801393E0,.end diff --git a/tools/disasm/ique-cn/files_ovl_file_choose.csv b/tools/disasm/ique-cn/files_ovl_file_choose.csv deleted file mode 100644 index d1c024e666..0000000000 --- a/tools/disasm/ique-cn/files_ovl_file_choose.csv +++ /dev/null @@ -1,23 +0,0 @@ -offset,vram,.text -0,80803700,src/overlays/gamestates/ovl_file_choose/z_file_copy_erase -3AE0,808071E0,src/overlays/gamestates/ovl_file_choose/z_file_nameset -8F30,8080C630,src/overlays/gamestates/ovl_file_choose/z_file_choose - -offset,vram,.data -F6E0,80812DE0,src/overlays/gamestates/ovl_file_choose/z_file_nameset_data -FDC0,808134C0,src/overlays/gamestates/ovl_file_choose/z_file_copy_erase -FE00,80813500,src/overlays/gamestates/ovl_file_choose/z_file_nameset -FFA0,808136A0,src/overlays/gamestates/ovl_file_choose/z_file_choose - -offset,vram,.rodata -10280,80813980,src/overlays/gamestates/ovl_file_choose/z_file_copy_erase -102B0,808139B0,src/overlays/gamestates/ovl_file_choose/z_file_nameset -102C0,808139C0,src/overlays/gamestates/ovl_file_choose/z_file_choose - -offset,vram,.ovl -102E0,808139E0,src/overlays/gamestates/ovl_file_choose/ovl_file_choose_reloc - -offset,vram,.bss -10AD0,808141D0,src/overlays/gamestates/ovl_file_choose/z_file_copy_erase -10AE0,808141E0,src/overlays/gamestates/ovl_file_choose/z_file_nameset -10AF0,808141F0,.end diff --git a/tools/disasm/ique-cn/files_ovl_kaleido_scope.csv b/tools/disasm/ique-cn/files_ovl_kaleido_scope.csv deleted file mode 100644 index 4f63c0b0e9..0000000000 --- a/tools/disasm/ique-cn/files_ovl_kaleido_scope.csv +++ /dev/null @@ -1,35 +0,0 @@ -offset,vram,.text -0,808141F0,src/overlays/misc/ovl_kaleido_scope/z_kaleido_collect -2400,808165F0,src/overlays/misc/ovl_kaleido_scope/z_kaleido_debug -43B0,808185A0,src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment -5E30,8081A020,src/overlays/misc/ovl_kaleido_scope/z_kaleido_item -7E20,8081C010,src/overlays/misc/ovl_kaleido_scope/z_kaleido_map -B3F0,8081F5E0,src/overlays/misc/ovl_kaleido_scope/z_kaleido_prompt -B5F0,8081F7E0,src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope -149E0,80828BD0,src/overlays/misc/ovl_kaleido_scope/z_lmap_mark - -offset,vram,.data -150A0,80829290,src/overlays/misc/ovl_kaleido_scope/z_kaleido_collect -15250,80829440,src/overlays/misc/ovl_kaleido_scope/z_kaleido_debug -15420,80829610,src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment -15450,80829640,src/overlays/misc/ovl_kaleido_scope/z_kaleido_item -154C0,808296B0,src/overlays/misc/ovl_kaleido_scope/z_kaleido_map -15700,808298F0,src/overlays/misc/ovl_kaleido_scope/z_kaleido_prompt -15710,80829900,src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope -160A0,8082A290,src/overlays/misc/ovl_kaleido_scope/z_lmap_mark -160F0,8082A2E0,src/overlays/misc/ovl_kaleido_scope/z_lmap_mark_data - -offset,vram,.rodata -1A250,8082E440,src/overlays/misc/ovl_kaleido_scope/z_kaleido_debug -1A330,8082E520,src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment -1A340,8082E530,src/overlays/misc/ovl_kaleido_scope/z_kaleido_map -1A380,8082E570,src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope -1A5F0,8082E7E0,src/overlays/misc/ovl_kaleido_scope/z_lmap_mark -1A6A0,8082E890,src/overlays/misc/ovl_kaleido_scope/z_lmap_mark_data - -offset,vram,.ovl -1A720,8082E910,src/overlays/misc/ovl_kaleido_scope/ovl_kaleido_scope_reloc - -offset,vram,.bss -1C030,80830220,src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope -1C040,80830230,.end diff --git a/tools/disasm/ique-cn/functions.txt b/tools/disasm/ique-cn/functions.txt deleted file mode 100644 index 41abd66a7c..0000000000 --- a/tools/disasm/ique-cn/functions.txt +++ /dev/null @@ -1,13230 +0,0 @@ -entrypoint = 0x80000400; // type:func -bootclear = 0x80000450; // type:func -bootproc = 0x80000484; // type:func -Main_ThreadEntry = 0x80000590; // type:func -Idle_ThreadEntry = 0x80000604; // type:func -ViConfig_UpdateVi = 0x800007E0; // type:func -ViConfig_UpdateBlack = 0x800008D8; // type:func -DmaMgr_StrCmp = 0x80000920; // type:func -DmaMgr_DmaRomToRam = 0x80000980; // type:func -DmaMgr_AudioDmaHandler = 0x80000AD0; // type:func -DmaMgr_DmaFromDriveRom = 0x80000AEC; // type:func -DmaMgr_GetFileName = 0x80000BA4; // type:func -DmaMgr_ProcessRequest = 0x80000BB0; // type:func -DmaMgr_ThreadEntry = 0x80000D60; // type:func -DmaMgr_RequestAsync = 0x80000DC4; // type:func -DmaMgr_RequestSync = 0x80000E14; // type:func -DmaMgr_Init = 0x80000EAC; // type:func -gzip_malloc = 0x80000FA0; // type:func -gzip_free = 0x80000FE8; // type:func -huft_build = 0x80001004; // type:func -huft_free = 0x800015E8; // type:func -inflate_codes = 0x8000162C; // type:func -inflate_stored = 0x80001BCC; // type:func -inflate_fixed = 0x80001E4C; // type:func -inflate_dynamic = 0x80002018; // type:func -inflate_block = 0x80002808; // type:func -inflate = 0x800029B0; // type:func -gzip_read = 0x80002A88; // type:func -unzip = 0x80002B14; // type:func -clear_bufs = 0x80002B50; // type:func -fill_inbuf = 0x80002B68; // type:func -flush_window = 0x80002C2C; // type:func -gzip_decompress = 0x80002C3C; // type:func -Locale_Init = 0x80002C80; // type:func -Locale_ResetRegion = 0x80002CB4; // type:func -osSyncPrintfUnused = 0x80002CC0; // type:func -osSyncPrintf = 0x80002CC8; // type:func -rmonPrintf = 0x80002CD0; // type:func -osDriveRomInit = 0x80002CE0; // type:func -Mio0_Decompress = 0x80002EC0; // type:func -StackCheck_Init = 0x80002F70; // type:func -StackCheck_Cleanup = 0x80003048; // type:func -StackCheck_GetState = 0x800030B8; // type:func -StackCheck_CheckAll = 0x80003130; // type:func -StackCheck_Check = 0x80003188; // type:func -osInvalDCache = 0x800031C0; // type:func -osInvalICache = 0x80003270; // type:func -bcmp = 0x800032F0; // type:func -bzero = 0x80003400; // type:func -osCreateMesgQueue = 0x800034A0; // type:func -osRecvMesg = 0x80003510; // type:func -osSendMesg = 0x80003680; // type:func -__osGetFpcCsr = 0x800037F0; // type:func -__osGetSR = 0x80003800; // type:func -__osSetFpcCsr = 0x80003810; // type:func -__osSetSR = 0x80003820; // type:func -osCreateThread = 0x80003830; // type:func -osSetThreadPri = 0x800039A0; // type:func -osStartThread = 0x80003AB0; // type:func -osStopThread = 0x80003C40; // type:func -__osDequeueThread = 0x80003D30; // type:func -osGetTime = 0x80003D90; // type:func -__osTimerServicesInit = 0x80003E40; // type:func -__osTimerInterrupt = 0x80003EEC; // type:func -__osSetTimerIntr = 0x800040D4; // type:func -__osInsertTimer = 0x800041A8; // type:func -osViGetNextFramebuffer = 0x80004360; // type:func -osCreateViManager = 0x800043A0; // type:func -viMgrMain = 0x80004518; // type:func -osViSetMode = 0x800046A0; // type:func -osViSetSpecialFeatures = 0x80004720; // type:func -osViSetXScale = 0x800048A0; // type:func -osViSetYScale = 0x80004960; // type:func -osViSwapBuffer = 0x800049B0; // type:func -__osViSwapContext = 0x80004A00; // type:func -osViBlack = 0x80004D10; // type:func -osViExtendVStart = 0x80004D70; // type:func -__osExceptionPreamble = 0x80004D80; // type:func -__osException = 0x80004D90; // type:func -__osEnqueueAndYield = 0x80005504; // type:func -__osEnqueueThread = 0x80005610; // type:func -__osPopThread = 0x80005658; // type:func -__osNop = 0x80005668; // type:func -__osDispatchThread = 0x80005670; // type:func -__osCleanupThread = 0x800057F0; // type:func -__osDisableInt = 0x80005800; // type:func -__osRestoreInt = 0x80005870; // type:func -osSetIntMask = 0x80005890; // type:func -__osSetHWIntrRoutine = 0x80005940; // type:func -__osGetHWIntrRoutine = 0x800059D0; // type:func -osCreatePiManager = 0x80005A40; // type:func -__osEPiRawStartDma = 0x80005BC0; // type:func -osEPiReadIo = 0x80005F80; // type:func -osEPiStartDma = 0x80005FE0; // type:func -osCartRomInit = 0x80006080; // type:func -__osDevMgrMain = 0x800061E0; // type:func -__osPiCreateAccessQueue = 0x80006680; // type:func -__osPiGetAccess = 0x800066D4; // type:func -__osPiRelAccess = 0x80006710; // type:func -osGetMemSize = 0x800067B0; // type:func -__createSpeedParam = 0x800067E0; // type:func -__osInitialize_common = 0x80006894; // type:func -__osInitialize_autodetect = 0x80006D4C; // type:func -osWritebackDCache = 0x80006D70; // type:func -osVirtualToPhysical = 0x80006DF0; // type:func -bcopy = 0x80006EC0; // type:func -osJamMesg = 0x800071E0; // type:func -osSetEventMesg = 0x80007360; // type:func -__osGetCause = 0x80007430; // type:func -__osSetWatchLo = 0x80007440; // type:func -osGetCount = 0x80007450; // type:func -__osSetCompare = 0x80007550; // type:func -__osSiRawReadIo = 0x80007600; // type:func -__osSiRawWriteIo = 0x80007650; // type:func -osDestroyThread = 0x800076A0; // type:func -osGetThreadPri = 0x800077D0; // type:func -osYieldThread = 0x80007820; // type:func -__osProbeTLB = 0x80007880; // type:func -osMapTLBRdb = 0x80007940; // type:func -osUnmapTLBAll = 0x800079A0; // type:func -__osViInit = 0x800079F0; // type:func -__osViGetCurrentContext = 0x80007AF0; // type:func -__osSetGlobalIntMask = 0x80007B00; // type:func -__osResetGlobalIntMask = 0x80007B60; // type:func -__osPiRawStartDma = 0x80007BD0; // type:func -osPiGetCmdQueue = 0x80007CB0; // type:func -__osEPiRawReadIo = 0x80007CE0; // type:func -__osEPiRawWriteIo = 0x80007E60; // type:func -__osSiDeviceBusy = 0x80007FE0; // type:func -__divdi3 = 0x80008010; // type:func -__moddi3 = 0x800085F0; // type:func -__udivdi3 = 0x80008B80; // type:func -__umoddi3 = 0x800090F0; // type:func -__cmpdi2 = 0x80009600; // type:func -__floatdidf = 0x80009650; // type:func -__floatdisf = 0x800096A0; // type:func -__fixunsdfdi = 0x80009760; // type:func -__fixdfdi = 0x80009960; // type:func -__fixunssfdi = 0x800099D0; // type:func -__fixsfdi = 0x80009BD0; // type:func -EnAObj_SetupAction = 0x80018FA0; // type:func -EnAObj_Init = 0x80018FAC; // type:func -EnAObj_Destroy = 0x800192EC; // type:func -EnAObj_WaitFinishedTalking = 0x80019348; // type:func -EnAObj_SetupWaitTalk = 0x80019378; // type:func -EnAObj_WaitTalk = 0x800193A0; // type:func -EnAObj_SetupBlockRot = 0x80019454; // type:func -EnAObj_BlockRot = 0x800194A4; // type:func -EnAObj_SetupBoulderFragment = 0x800195C4; // type:func -EnAObj_BoulderFragment = 0x800195EC; // type:func -EnAObj_SetupBlock = 0x8001970C; // type:func -EnAObj_Block = 0x8001974C; // type:func -EnAObj_Update = 0x80019834; // type:func -EnAObj_Draw = 0x80019950; // type:func -EnItem00_SetupAction = 0x80019A40; // type:func -EnItem00_Init = 0x80019A4C; // type:func -EnItem00_Destroy = 0x8001A0B4; // type:func -func_8001DFC8 = 0x8001A0E0; // type:func -func_8001E1C8 = 0x8001A2E0; // type:func -func_8001E304 = 0x8001A41C; // type:func -EnItem00_Collected = 0x8001A6E0; // type:func -EnItem00_Update = 0x8001A838; // type:func -EnItem00_Draw = 0x8001AEB8; // type:func -EnItem00_DrawRupee = 0x8001B050; // type:func -EnItem00_DrawCollectible = 0x8001B168; // type:func -EnItem00_DrawHeartContainer = 0x8001B2A8; // type:func -EnItem00_DrawHeartPiece = 0x8001B3A0; // type:func -func_8001F404 = 0x8001B438; // type:func -Item_DropCollectible = 0x8001B580; // type:func -Item_DropCollectible2 = 0x8001B7B8; // type:func -Item_DropCollectibleRandom = 0x8001B98C; // type:func -EffectBlure_AddVertex = 0x8001BE40; // type:func -EffectBlure_AddSpace = 0x8001C164; // type:func -EffectBlure_InitElements = 0x8001C1A8; // type:func -EffectBlure_Init1 = 0x8001C260; // type:func -EffectBlure_Init2 = 0x8001C370; // type:func -EffectBlure_Destroy = 0x8001C4A4; // type:func -EffectBlure_Update = 0x8001C4B0; // type:func -EffectBlure_UpdateFlags = 0x8001C914; // type:func -EffectBlure_GetComputedValues = 0x8001CA84; // type:func -EffectBlure_SetupSmooth = 0x8001CF98; // type:func -EffectBlure_DrawElemNoInterpolation = 0x8001CFCC; // type:func -EffectBlure_DrawElemHermiteInterpolation = 0x8001D4A0; // type:func -EffectBlure_DrawSmooth = 0x8001DE2C; // type:func -EffectBlure_SetupSimple = 0x8001E0FC; // type:func -EffectBlure_SetupSimpleAlt = 0x8001E134; // type:func -EffectBlure_DrawSimpleVertices = 0x8001E39C; // type:func -EffectBlure_DrawSimple = 0x8001E87C; // type:func -EffectBlure_Draw = 0x8001ED88; // type:func -EffectShieldParticle_Init = 0x8001F270; // type:func -EffectShieldParticle_Destroy = 0x8001F4A8; // type:func -EffectShieldParticle_Update = 0x8001F534; // type:func -EffectShieldParticle_GetColors = 0x8001F698; // type:func -EffectShieldParticle_Draw = 0x800203B8; // type:func -EffectSpark_Init = 0x800208D0; // type:func -EffectSpark_Destroy = 0x80020CAC; // type:func -EffectSpark_Update = 0x80020CB8; // type:func -EffectSpark_Draw = 0x80020D7C; // type:func -func_80026230 = 0x80021F80; // type:func -func_80026400 = 0x80022128; // type:func -func_80026608 = 0x8002230C; // type:func -func_80026690 = 0x80022350; // type:func -func_80026860 = 0x800224F8; // type:func -func_80026A6C = 0x800226E4; // type:func -Effect_GetPlayState = 0x80022730; // type:func -Effect_GetByIndex = 0x80022740; // type:func -Effect_InitStatus = 0x80022850; // type:func -Effect_InitContext = 0x80022864; // type:func -Effect_Add = 0x8002290C; // type:func -Effect_DrawAll = 0x80022A8C; // type:func -Effect_UpdateAll = 0x80022B88; // type:func -Effect_Delete = 0x80022CB4; // type:func -Effect_DeleteAll = 0x80022DC0; // type:func -EffectSs_InitInfo = 0x80022EB0; // type:func -EffectSs_ClearAll = 0x80022F94; // type:func -EffectSs_Delete = 0x80023054; // type:func -EffectSs_Reset = 0x800230B4; // type:func -EffectSs_FindSlot = 0x80023148; // type:func -EffectSs_Insert = 0x80023280; // type:func -EffectSs_Spawn = 0x80023318; // type:func -EffectSs_Update = 0x800234C0; // type:func -EffectSs_UpdateAll = 0x80023560; // type:func -EffectSs_Draw = 0x8002361C; // type:func -EffectSs_DrawAll = 0x80023660; // type:func -EffectSs_LerpInv = 0x800237AC; // type:func -EffectSs_LerpS16 = 0x80023810; // type:func -EffectSs_LerpU8 = 0x80023864; // type:func -EffectSs_DrawGEffect = 0x80023950; // type:func -EffectSsDust_Spawn = 0x80023B8C; // type:func -func_8002829C = 0x80023C40; // type:func -func_80028304 = 0x80023CA8; // type:func -func_8002836C = 0x80023D10; // type:func -func_800283D4 = 0x80023D78; // type:func -func_8002843C = 0x80023DE0; // type:func -func_800284A4 = 0x80023E48; // type:func -func_80028510 = 0x80023EB4; // type:func -func_8002857C = 0x80023F20; // type:func -func_800285EC = 0x80023F90; // type:func -func_8002865C = 0x80024000; // type:func -func_800286CC = 0x80024070; // type:func -func_8002873C = 0x800240E0; // type:func -func_800287AC = 0x80024150; // type:func -func_8002881C = 0x800241C0; // type:func -func_80028858 = 0x800241FC; // type:func -func_80028894 = 0x80024238; // type:func -func_80028990 = 0x80024334; // type:func -func_80028A54 = 0x800243F8; // type:func -EffectSsKiraKira_SpawnSmallYellow = 0x800244BC; // type:func -EffectSsKiraKira_SpawnSmall = 0x80024518; // type:func -EffectSsKiraKira_SpawnDispersed = 0x80024554; // type:func -EffectSsKiraKira_SpawnFocused = 0x80024690; // type:func -EffectSsBomb_Spawn = 0x80024768; // type:func -EffectSsBomb2_SpawnFade = 0x800247C0; // type:func -EffectSsBomb2_SpawnLayered = 0x80024828; // type:func -EffectSsBlast_Spawn = 0x80024898; // type:func -EffectSsBlast_SpawnWhiteShockwaveSetScale = 0x80024928; // type:func -EffectSsBlast_SpawnShockwaveSetColor = 0x8002497C; // type:func -EffectSsBlast_SpawnWhiteShockwave = 0x800249C8; // type:func -EffectSsGSpk_SpawnAccel = 0x80024A04; // type:func -EffectSsGSpk_SpawnNoAccel = 0x80024A94; // type:func -EffectSsGSpk_SpawnFuse = 0x80024B28; // type:func -EffectSsGSpk_SpawnRandColor = 0x80024B7C; // type:func -EffectSsGSpk_SpawnSmall = 0x80024C80; // type:func -EffectSsDFire_Spawn = 0x80024CC4; // type:func -EffectSsDFire_SpawnFixedScale = 0x80024D44; // type:func -EffectSsBubble_Spawn = 0x80024D88; // type:func -EffectSsGRipple_Spawn = 0x80024DE8; // type:func -EffectSsGSplash_Spawn = 0x80024E40; // type:func -EffectSsGMagma_Spawn = 0x80024ED4; // type:func -EffectSsGFire_Spawn = 0x80024F0C; // type:func -EffectSsLightning_Spawn = 0x80024F44; // type:func -EffectSsDtBubble_SpawnColorProfile = 0x80024FBC; // type:func -EffectSsDtBubble_SpawnCustomColor = 0x80025038; // type:func -EffectSsHahen_Spawn = 0x800250C8; // type:func -EffectSsHahen_SpawnBurst = 0x80025148; // type:func -EffectSsStick_Spawn = 0x80025290; // type:func -EffectSsSibuki_Spawn = 0x800252E4; // type:func -EffectSsSibuki_SpawnBurst = 0x80025354; // type:func -EffectSsSibuki2_Spawn = 0x800254D8; // type:func -EffectSsGMagma2_Spawn = 0x80025538; // type:func -EffectSsStone1_Spawn = 0x800255A8; // type:func -EffectSsHitMark_Spawn = 0x800255FC; // type:func -EffectSsHitMark_SpawnFixedScale = 0x80025654; // type:func -EffectSsHitMark_SpawnCustomScale = 0x80025678; // type:func -EffectSsFhgFlash_SpawnLightBall = 0x800256A4; // type:func -EffectSsFhgFlash_SpawnShock = 0x80025710; // type:func -EffectSsKFire_Spawn = 0x80025774; // type:func -EffectSsSolderSrchBall_Spawn = 0x800257DC; // type:func -EffectSsKakera_Spawn = 0x80025844; // type:func -EffectSsIcePiece_Spawn = 0x800258FC; // type:func -EffectSsIcePiece_SpawnBurst = 0x80025964; // type:func -EffectSsEnIce_SpawnFlyingVec3f = 0x80025AF8; // type:func -EffectSsEnIce_SpawnFlyingVec3s = 0x80025B98; // type:func -EffectSsEnIce_Spawn = 0x80025C64; // type:func -EffectSsFireTail_Spawn = 0x80025CEC; // type:func -EffectSsFireTail_SpawnFlame = 0x80025D84; // type:func -EffectSsFireTail_SpawnFlameOnPlayer = 0x80025E48; // type:func -EffectSsEnFire_SpawnVec3f = 0x80025E98; // type:func -EffectSsEnFire_SpawnVec3s = 0x80025F10; // type:func -EffectSsExtra_Spawn = 0x80025FBC; // type:func -EffectSsFCircle_Spawn = 0x80026024; // type:func -EffectSsDeadDb_Spawn = 0x80026080; // type:func -EffectSsDeadDd_Spawn = 0x80026138; // type:func -EffectSsDeadDd_SpawnRandYellow = 0x800261EC; // type:func -EffectSsDeadDs_Spawn = 0x8002625C; // type:func -EffectSsDeadDs_SpawnStationary = 0x800262D4; // type:func -EffectSsDeadSound_Spawn = 0x80026324; // type:func -EffectSsDeadSound_SpawnStationary = 0x800263BC; // type:func -EffectSsIceSmoke_Spawn = 0x8002640C; // type:func -FlagSet_Update = 0x80026470; // type:func -Overlay_LoadGameState = 0x80026890; // type:func -Overlay_FreeGameState = 0x800269B8; // type:func -ActorShape_Init = 0x80026AE0; // type:func -ActorShadow_Draw = 0x80026AF8; // type:func -ActorShadow_DrawCircle = 0x80026DC0; // type:func -ActorShadow_DrawWhiteCircle = 0x80026DE4; // type:func -ActorShadow_DrawHorse = 0x80026E10; // type:func -ActorShadow_DrawFoot = 0x80026E34; // type:func -ActorShadow_DrawFeet = 0x8002701C; // type:func -Actor_SetFeetPos = 0x80027450; // type:func -Actor_ProjectPos = 0x80027490; // type:func -Attention_SetReticlePos = 0x800274E0; // type:func -Attention_InitReticle = 0x80027510; // type:func -Attention_SetNaviState = 0x800275DC; // type:func -Attention_Init = 0x800276CC; // type:func -Attention_Draw = 0x8002773C; // type:func -Attention_Update = 0x80027D18; // type:func -Flags_GetSwitch = 0x80028068; // type:func -Flags_SetSwitch = 0x8002809C; // type:func -Flags_UnsetSwitch = 0x800280DC; // type:func -Flags_GetUnknown = 0x80028124; // type:func -Flags_SetUnknown = 0x80028158; // type:func -Flags_UnsetUnknown = 0x80028198; // type:func -Flags_GetTreasure = 0x800281E0; // type:func -Flags_SetTreasure = 0x800281F4; // type:func -Flags_GetClear = 0x8002820C; // type:func -Flags_SetClear = 0x80028220; // type:func -Flags_UnsetClear = 0x80028238; // type:func -Flags_GetTempClear = 0x80028254; // type:func -Flags_SetTempClear = 0x80028268; // type:func -Flags_UnsetTempClear = 0x80028280; // type:func -Flags_GetCollectible = 0x8002829C; // type:func -Flags_SetCollectible = 0x800282D0; // type:func -TitleCard_Init = 0x80028318; // type:func -TitleCard_InitBossName = 0x8002832C; // type:func -TitleCard_InitPlaceName = 0x8002835C; // type:func -TitleCard_Update = 0x800283F0; // type:func -TitleCard_Draw = 0x80028488; // type:func -TitleCard_Clear = 0x80028A18; // type:func -Actor_Kill = 0x80028A44; // type:func -Actor_SetWorldToHome = 0x80028A60; // type:func -Actor_SetFocus = 0x80028A8C; // type:func -Actor_SetWorldRotToShape = 0x80028AC8; // type:func -Actor_SetShapeRotToWorld = 0x80028AE4; // type:func -Actor_SetScale = 0x80028B00; // type:func -Actor_SetObjectDependency = 0x80028B14; // type:func -Actor_Init = 0x80028B4C; // type:func -Actor_Destroy = 0x80028C60; // type:func -Actor_UpdatePos = 0x80028C98; // type:func -Actor_UpdateVelocityXZGravity = 0x80028D10; // type:func -Actor_MoveXZGravity = 0x80028D78; // type:func -Actor_UpdateVelocityXYZ = 0x80028DA4; // type:func -Actor_MoveXYZ = 0x80028E10; // type:func -Actor_SetProjectileSpeed = 0x80028E3C; // type:func -Actor_UpdatePosByAnimation = 0x80028E90; // type:func -Actor_WorldYawTowardActor = 0x80028F08; // type:func -Actor_FocusYawTowardActor = 0x80028F28; // type:func -Actor_WorldYawTowardPoint = 0x80028F48; // type:func -Actor_WorldPitchTowardActor = 0x80028F64; // type:func -Actor_FocusPitchTowardActor = 0x80028F84; // type:func -Actor_WorldPitchTowardPoint = 0x80028FA4; // type:func -Actor_WorldDistXYZToActor = 0x80028FC0; // type:func -Actor_WorldDistXYZToPoint = 0x80028FE0; // type:func -Actor_WorldDistXZToActor = 0x80028FFC; // type:func -Actor_WorldDistXZToPoint = 0x8002901C; // type:func -Actor_WorldToActorCoords = 0x80029038; // type:func -Actor_HeightDiff = 0x800290D8; // type:func -Player_GetHeight = 0x800290E8; // type:func -func_8002DCE4 = 0x80029140; // type:func -func_8002DD6C = 0x800291CC; // type:func -func_8002DD78 = 0x800291D8; // type:func -func_8002DDA8 = 0x8002921C; // type:func -func_8002DDE4 = 0x80029264; // type:func -func_8002DDF4 = 0x80029274; // type:func -Actor_SwapHookshotAttachment = 0x80029284; // type:func -Actor_RequestHorseCameraSetting = 0x800292F0; // type:func -Actor_MountHorse = 0x8002934C; // type:func -func_8002DEEC = 0x80029368; // type:func -Actor_InitPlayerHorse = 0x80029398; // type:func -Player_SetCsAction = 0x800293B4; // type:func -Player_SetCsActionWithHaltedActors = 0x800293CC; // type:func -func_8002DF90 = 0x80029404; // type:func -func_8002DFA4 = 0x80029414; // type:func -Player_IsFacingActor = 0x8002942C; // type:func -Actor_ActorBIsFacingActorA = 0x80029478; // type:func -Actor_IsFacingPlayer = 0x800294DC; // type:func -Actor_ActorAIsFacingActorB = 0x80029520; // type:func -Actor_IsFacingAndNearPlayer = 0x80029580; // type:func -Actor_ActorAIsFacingAndNearActorB = 0x800295F8; // type:func -func_8002E234 = 0x80029684; // type:func -func_8002E2AC = 0x800296E4; // type:func -Actor_UpdateBgCheckInfo = 0x800298D0; // type:func -func_8002E830 = 0x80029C04; // type:func -func_8002EABC = 0x80029DA0; // type:func -func_8002EB44 = 0x80029DDC; // type:func -func_8002EBCC = 0x80029E18; // type:func -func_8002ED80 = 0x80029F38; // type:func -Actor_GetFocus = 0x8002A058; // type:func -Actor_GetWorld = 0x8002A08C; // type:func -Actor_GetWorldPosShapeRot = 0x8002A0C0; // type:func -Attention_WeightedDistToPlayerSq = 0x8002A13C; // type:func -Attention_ActorIsInRange = 0x8002A1FC; // type:func -Attention_ShouldReleaseLockOn = 0x8002A22C; // type:func -Actor_TalkOfferAccepted = 0x8002A2E8; // type:func -Actor_OfferTalkExchange = 0x8002A310; // type:func -Actor_OfferTalkExchangeEquiCylinder = 0x8002A3E0; // type:func -Actor_OfferTalk = 0x8002A404; // type:func -Actor_OfferTalkNearColChkInfoCylinder = 0x8002A420; // type:func -Actor_TextboxIsClosing = 0x8002A458; // type:func -Actor_GetPlayerExchangeItemId = 0x8002A484; // type:func -Actor_GetScreenPos = 0x8002A494; // type:func -Actor_HasParent = 0x8002A524; // type:func -Actor_OfferGetItem = 0x8002A540; // type:func -Actor_OfferGetItemNearby = 0x8002A65C; // type:func -Actor_OfferCarry = 0x8002A684; // type:func -Actor_HasNoParent = 0x8002A6A0; // type:func -func_8002F5C4 = 0x8002A6BC; // type:func -Actor_SetClosestSecretDistance = 0x8002A6E4; // type:func -Actor_IsMounted = 0x8002A708; // type:func -Actor_SetRideActor = 0x8002A724; // type:func -Actor_NotMounted = 0x8002A754; // type:func -Actor_SetPlayerKnockback = 0x8002A770; // type:func -Actor_SetPlayerKnockbackLarge = 0x8002A798; // type:func -Actor_SetPlayerKnockbackLargeNoDamage = 0x8002A7D0; // type:func -Actor_SetPlayerKnockbackSmall = 0x8002A7FC; // type:func -Actor_SetPlayerKnockbackSmallNoDamage = 0x8002A834; // type:func -Player_PlaySfx = 0x8002A860; // type:func -Actor_PlaySfx = 0x8002A8A0; // type:func -Actor_PlaySfx_SurfaceBomb = 0x8002A8C0; // type:func -Actor_PlaySfx_Flagged2 = 0x8002A94C; // type:func -Actor_PlaySfx_FlaggedCentered1 = 0x8002A970; // type:func -Actor_PlaySfx_FlaggedCentered2 = 0x8002A994; // type:func -Actor_PlaySfx_Flagged = 0x8002A9B8; // type:func -Actor_PlaySfx_FlaggedTimer = 0x8002A9D4; // type:func -func_8002F9EC = 0x8002AA24; // type:func -func_8002FA60 = 0x8002AA9C; // type:func -Actor_DrawFaroresWindPointer = 0x8002ABE4; // type:func -func_80030488 = 0x8002B34C; // type:func -Actor_DisableLens = 0x8002B370; // type:func -Actor_InitContext = 0x8002B394; // type:func -Actor_UpdateAll = 0x8002B4B8; // type:func -Actor_FaultPrint = 0x8002B904; // type:func -Actor_Draw = 0x8002B970; // type:func -Actor_UpdateFlaggedAudio = 0x8002BC1C; // type:func -Actor_DrawLensOverlay = 0x8002BCF0; // type:func -Actor_DrawLensActors = 0x8002BE8C; // type:func -Actor_CullingCheck = 0x8002C0EC; // type:func -Actor_CullingVolumeTest = 0x8002C10C; // type:func -func_800315AC = 0x8002C1B8; // type:func -Actor_KillAllWithMissingObject = 0x8002C3A4; // type:func -Actor_FreezeAllEnemies = 0x8002C438; // type:func -func_80031B14 = 0x8002C48C; // type:func -func_80031C3C = 0x8002C5A0; // type:func -Actor_AddToCategory = 0x8002C650; // type:func -Actor_RemoveFromCategory = 0x8002C6A0; // type:func -Actor_FreeOverlay = 0x8002C770; // type:func -Actor_Spawn = 0x8002C7CC; // type:func -Actor_SpawnAsChild = 0x8002CA70; // type:func -Actor_SpawnTransitionActors = 0x8002CAFC; // type:func -Actor_SpawnEntry = 0x8002CC7C; // type:func -Actor_Delete = 0x8002CCF4; // type:func -Attention_ActorOnScreen = 0x8002CDF8; // type:func -Attention_FindActorInCategory = 0x8002CE48; // type:func -Attention_FindActor = 0x8002D040; // type:func -Actor_Find = 0x8002D178; // type:func -Enemy_StartFinishingBlow = 0x8002D1B4; // type:func -FaceChange_UpdateBlinking = 0x8002D1E0; // type:func -FaceChange_UpdateRandomSet = 0x8002D280; // type:func -BodyBreak_Alloc = 0x8002D358; // type:func -BodyBreak_SetInfo = 0x8002D448; // type:func -BodyBreak_SpawnParts = 0x8002D554; // type:func -Actor_SpawnFloorDustRing = 0x8002D730; // type:func -func_80033480 = 0x8002D930; // type:func -Actor_GetCollidedExplosive = 0x8002DAB8; // type:func -func_80033684 = 0x8002DAEC; // type:func -Actor_ChangeCategory = 0x8002DB8C; // type:func -Actor_GetProjectileActor = 0x8002DBD8; // type:func -Actor_SetTextWithPrefix = 0x8002DD44; // type:func -Actor_TestFloorInDirection = 0x8002DDB8; // type:func -Actor_IsLockedOn = 0x8002DE98; // type:func -Actor_OtherIsLockedOn = 0x8002DEC8; // type:func -func_80033AEC = 0x8002DEF8; // type:func -func_80033C30 = 0x8002DFD4; // type:func -Actor_RequestQuake = 0x8002E124; // type:func -Actor_RequestQuakeWithSpeed = 0x8002E1A0; // type:func -Actor_RequestQuakeAndRumble = 0x8002E22C; // type:func -Rand_ZeroFloat = 0x8002E2B0; // type:func -Rand_CenteredFloat = 0x8002E2D8; // type:func -Actor_DrawDoorLock = 0x8002E30C; // type:func -func_8003424C = 0x8002E57C; // type:func -Actor_SetColorFilter = 0x8002E598; // type:func -func_800342EC = 0x8002E5CC; // type:func -func_8003435C = 0x8002E63C; // type:func -Npc_UpdateTalking = 0x8002E6AC; // type:func -Npc_TrackPointWithLimits = 0x8002E79C; // type:func -Npc_GetTrackingPresetMaxPlayerYaw = 0x8002EA9C; // type:func -Npc_UpdateAutoTurn = 0x8002EAC0; // type:func -Npc_TrackPoint = 0x8002EC48; // type:func -func_80034B28 = 0x8002ED90; // type:func -func_80034B54 = 0x8002EDAC; // type:func -func_80034BA0 = 0x8002EDE0; // type:func -func_80034CC4 = 0x8002EEF8; // type:func -Actor_UpdateAlphaByDistance = 0x8002EFF8; // type:func -Animation_ChangeByInfo = 0x8002F0C4; // type:func -Actor_UpdateFidgetTables = 0x8002F150; // type:func -Actor_Noop = 0x8002F1A8; // type:func -func_80035124 = 0x8002F1B0; // type:func -Gfx_DrawDListOpa = 0x8002F2F4; // type:func -Gfx_DrawDListXlu = 0x8002F380; // type:func -func_800353E8 = 0x8002F40C; // type:func -Actor_FindNearby = 0x8002F41C; // type:func -func_800354B4 = 0x8002F4C0; // type:func -func_8003555C = 0x8002F554; // type:func -func_800355B8 = 0x8002F5AC; // type:func -func_800355E4 = 0x8002F5D8; // type:func -Actor_ApplyDamage = 0x8002F614; // type:func -Actor_SetDropFlag = 0x8002F63C; // type:func -Actor_SetDropFlagJntSph = 0x8002F724; // type:func -func_80035844 = 0x8002F820; // type:func -func_800358DC = 0x8002F8C0; // type:func -func_800359B8 = 0x8002F994; // type:func -func_80035B18 = 0x8002FAE0; // type:func -Flags_GetEventChkInf = 0x8002FB18; // type:func -Flags_SetEventChkInf = 0x8002FB40; // type:func -Flags_GetInfTable = 0x8002FB70; // type:func -Flags_SetInfTable = 0x8002FB98; // type:func -func_80035BFC = 0x8002FBC8; // type:func -func_80036E50 = 0x800309B0; // type:func -func_800374E0 = 0x80031038; // type:func -func_80037C30 = 0x80031710; // type:func -func_80037C5C = 0x80031734; // type:func -func_80037C94 = 0x8003175C; // type:func -func_80037CB8 = 0x8003177C; // type:func -func_80037D98 = 0x80031884; // type:func -Actor_TrackNone = 0x800319F0; // type:func -Actor_TrackPoint = 0x80031A8C; // type:func -Actor_TrackPlayerSetFocusHeight = 0x80031C1C; // type:func -Actor_TrackPlayer = 0x80031D4C; // type:func -ActorOverlayTable_LogPrint = 0x80031E70; // type:func -ActorOverlayTable_FaultPrint = 0x80031E78; // type:func -ActorOverlayTable_Init = 0x80031F50; // type:func -ActorOverlayTable_Cleanup = 0x80031F90; // type:func -SSNode_SetValue = 0x80031FC0; // type:func -SSList_SetNull = 0x80031FDC; // type:func -SSNodeList_SetSSListHead = 0x80031FEC; // type:func -DynaSSNodeList_SetSSListHead = 0x80032044; // type:func -DynaSSNodeList_Initialize = 0x8003209C; // type:func -DynaSSNodeList_Alloc = 0x800320B0; // type:func -DynaSSNodeList_ResetCount = 0x80032100; // type:func -DynaSSNodeList_GetNextNodeIdx = 0x8003210C; // type:func -BgCheck_Vec3sToVec3f = 0x8003213C; // type:func -BgCheck_Vec3fToVec3s = 0x80032180; // type:func -CollisionPoly_GetMinY = 0x800321C4; // type:func -CollisionPoly_GetNormalF = 0x80032270; // type:func -func_80038A28 = 0x800322C8; // type:func -CollisionPoly_GetPointDistanceFromPlane = 0x8003241C; // type:func -CollisionPoly_GetVertices = 0x80032484; // type:func -CollisionPoly_GetVerticesByBgId = 0x80032524; // type:func -CollisionPoly_CheckYIntersectApprox1 = 0x800325A4; // type:func -CollisionPoly_CheckYIntersect = 0x800326D8; // type:func -CollisionPoly_CheckYIntersectApprox2 = 0x80032784; // type:func -CollisionPoly_CheckXIntersectApprox = 0x800327C4; // type:func -CollisionPoly_CheckZIntersectApprox = 0x80032868; // type:func -CollisionPoly_LineVsPoly = 0x8003290C; // type:func -CollisionPoly_SphVsPoly = 0x80032BEC; // type:func -StaticLookup_AddPolyToSSList = 0x80032CBC; // type:func -StaticLookup_AddPoly = 0x80032EDC; // type:func -BgCheck_RaycastDownStaticList = 0x80032F70; // type:func -BgCheck_RaycastDownStatic = 0x800331AC; // type:func -BgCheck_ComputeWallDisplacement = 0x800332C4; // type:func -BgCheck_SphVsStaticWall = 0x80033374; // type:func -BgCheck_CheckStaticCeiling = 0x80033C08; // type:func -BgCheck_CheckLineAgainstSSList = 0x80033DE0; // type:func -BgCheck_CheckLineInSubdivision = 0x80034004; // type:func -BgCheck_SphVsFirstStaticPolyList = 0x80034190; // type:func -BgCheck_SphVsFirstStaticPoly = 0x80034360; // type:func -BgCheck_GetNearestStaticLookup = 0x80034498; // type:func -BgCheck_GetStaticLookup = 0x8003454C; // type:func -BgCheck_GetStaticLookupIndicesFromPos = 0x80034618; // type:func -BgCheck_GetSubdivisionMinBounds = 0x800346F8; // type:func -BgCheck_GetSubdivisionMaxBounds = 0x8003489C; // type:func -BgCheck_GetPolySubdivisionBounds = 0x80034A68; // type:func -BgCheck_PolyIntersectsSubdivision = 0x80034C18; // type:func -BgCheck_InitializeStaticLookup = 0x8003536C; // type:func -BgCheck_IsSpotScene = 0x8003576C; // type:func -BgCheck_TryGetCustomMemsize = 0x800357B0; // type:func -BgCheck_SetSubdivisionDimension = 0x80035848; // type:func -BgCheck_Allocate = 0x800358D0; // type:func -BgCheck_GetCollisionHeader = 0x80035CB4; // type:func -BgCheck_PosInStaticBoundingBox = 0x80035D1C; // type:func -BgCheck_RaycastDownImpl = 0x80035DD8; // type:func -BgCheck_CameraRaycastDown1 = 0x80035FA8; // type:func -BgCheck_EntityRaycastDown1 = 0x80036004; // type:func -BgCheck_EntityRaycastDown2 = 0x80036060; // type:func -BgCheck_EntityRaycastDown3 = 0x800360B4; // type:func -BgCheck_EntityRaycastDown4 = 0x80036118; // type:func -BgCheck_EntityRaycastDown5 = 0x80036180; // type:func -BgCheck_EntityRaycastDown6 = 0x800361D8; // type:func -BgCheck_EntityRaycastDown7 = 0x8003623C; // type:func -BgCheck_AnyRaycastDown1 = 0x800362A4; // type:func -BgCheck_AnyRaycastDown2 = 0x80036358; // type:func -BgCheck_CameraRaycastDown2 = 0x80036410; // type:func -BgCheck_EntityRaycastDownWalls = 0x80036474; // type:func -BgCheck_EntityRaycastDown9 = 0x800364DC; // type:func -BgCheck_CheckWallImpl = 0x80036540; // type:func -BgCheck_EntitySphVsWall1 = 0x80036B7C; // type:func -BgCheck_EntitySphVsWall2 = 0x80036BE0; // type:func -BgCheck_EntitySphVsWall3 = 0x80036C44; // type:func -BgCheck_EntitySphVsWall4 = 0x80036CAC; // type:func -BgCheck_CheckCeilingImpl = 0x80036D18; // type:func -BgCheck_AnyCheckCeiling = 0x80036E38; // type:func -BgCheck_EntityCheckCeiling = 0x80036E84; // type:func -BgCheck_CheckLineImpl = 0x80036ED4; // type:func -BgCheck_GetBccFlags = 0x800373B4; // type:func -BgCheck_CameraLineTest1 = 0x800373FC; // type:func -BgCheck_CameraLineTest2 = 0x80037488; // type:func -BgCheck_EntityLineTest1 = 0x80037514; // type:func -BgCheck_EntityLineTest2 = 0x800375A0; // type:func -BgCheck_EntityLineTest3 = 0x80037630; // type:func -BgCheck_ProjectileLineTest = 0x800376BC; // type:func -BgCheck_AnyLineTest1 = 0x80037748; // type:func -BgCheck_AnyLineTest2 = 0x8003778C; // type:func -BgCheck_AnyLineTest3 = 0x80037818; // type:func -BgCheck_SphVsFirstPolyImpl = 0x800378A4; // type:func -BgCheck_SphVsFirstPoly = 0x80037968; // type:func -BgCheck_SphVsFirstWall = 0x800379AC; // type:func -SSNodeList_Initialize = 0x800379F4; // type:func -SSNodeList_Alloc = 0x80037A0C; // type:func -SSNodeList_GetNextNode = 0x80037A7C; // type:func -SSNodeList_GetNextNodeIdx = 0x80037AB8; // type:func -ScaleRotPos_Initialize = 0x80037ACC; // type:func -ScaleRotPos_SetValue = 0x80037B0C; // type:func -ScaleRotPos_Equals = 0x80037B5C; // type:func -DynaLookup_ResetLists = 0x80037C30; // type:func -DynaLookup_Reset = 0x80037C70; // type:func -DynaLookup_ResetVtxStartIndex = 0x80037C90; // type:func -BgActor_Initialize = 0x80037C9C; // type:func -BgActor_SetActor = 0x80037CFC; // type:func -BgActor_IsTransformUnchanged = 0x80037DB4; // type:func -DynaPoly_NullPolyList = 0x80037DDC; // type:func -DynaPoly_AllocPolyList = 0x80037DE8; // type:func -DynaPoly_NullVtxList = 0x80037E24; // type:func -DynaPoly_AllocVtxList = 0x80037E30; // type:func -DynaPoly_SetBgActorPrevTransform = 0x80037E78; // type:func -DynaPoly_IsBgIdBgActor = 0x80037EC4; // type:func -DynaPoly_Init = 0x80037EE4; // type:func -DynaPoly_Alloc = 0x80037F30; // type:func -DynaPoly_SetBgActor = 0x80038004; // type:func -DynaPoly_GetActor = 0x800380C4; // type:func -DynaPoly_DisableCollision = 0x80038138; // type:func -DynaPoly_EnableCollision = 0x80038190; // type:func -DynaPoly_DisableCeilingCollision = 0x800381E8; // type:func -DynaPoly_EnableCeilingCollision = 0x80038240; // type:func -DynaPoly_DeleteBgActor = 0x80038298; // type:func -DynaPoly_InvalidateLookup = 0x80038320; // type:func -DynaPoly_AddBgActorToLookup = 0x80038338; // type:func -DynaPoly_UnsetAllInteractFlags = 0x80038C84; // type:func -DynaPoly_UpdateContext = 0x80038D1C; // type:func -DynaPoly_UpdateBgActorTransforms = 0x80038E88; // type:func -BgCheck_RaycastDownDynaList = 0x80038F18; // type:func -BgCheck_RaycastDownDyna = 0x80039100; // type:func -BgCheck_SphVsDynaWallInBgActor = 0x800395A8; // type:func -BgCheck_SphVsDynaWall = 0x80039C6C; // type:func -BgCheck_CheckDynaCeilingList = 0x80039EA8; // type:func -BgCheck_CheckDynaCeiling = 0x8003A104; // type:func -BgCheck_CheckLineAgainstBgActorSSList = 0x8003A268; // type:func -BgCheck_CheckLineAgainstBgActor = 0x8003A3EC; // type:func -BgCheck_CheckLineAgainstDyna = 0x8003A508; // type:func -BgCheck_SphVsFirstDynaPolyList = 0x8003A6C0; // type:func -BgCheck_SphVsFirstDynaPolyInBgActor = 0x8003A7D8; // type:func -BgCheck_SphVsFirstDynaPoly = 0x8003A918; // type:func -CollisionHeader_SegmentedToVirtual = 0x8003AA70; // type:func -CollisionHeader_GetVirtual = 0x8003AB54; // type:func -func_800418D0 = 0x8003ABA8; // type:func -BgCheck_ResetPolyCheckTbl = 0x8003AC50; // type:func -SurfaceType_GetData = 0x8003AC88; // type:func -SurfaceType_GetBgCamIndex = 0x8003AD00; // type:func -BgCheck_GetBgCamSettingImpl = 0x8003AD24; // type:func -BgCheck_GetBgCamSetting = 0x8003AD6C; // type:func -BgCheck_GetBgCamCountImpl = 0x8003AE00; // type:func -BgCheck_GetBgCamCount = 0x8003AE5C; // type:func -BgCheck_GetBgCamFuncDataImpl = 0x8003AEF0; // type:func -BgCheck_GetBgCamFuncData = 0x8003AF78; // type:func -SurfaceType_GetExitIndex = 0x8003B00C; // type:func -SurfaceType_GetFloorType = 0x8003B034; // type:func -func_80041D70 = 0x8003B05C; // type:func -SurfaceType_GetWallType = 0x8003B084; // type:func -SurfaceType_GetWallFlags = 0x8003B0AC; // type:func -SurfaceType_CheckWallFlag0 = 0x8003B0DC; // type:func -SurfaceType_CheckWallFlag1 = 0x8003B110; // type:func -SurfaceType_CheckWallFlag2 = 0x8003B144; // type:func -SurfaceType_GetFloorProperty2 = 0x8003B178; // type:func -SurfaceType_GetFloorProperty = 0x8003B1A0; // type:func -SurfaceType_IsSoft = 0x8003B1C8; // type:func -SurfaceType_IsHorseBlocked = 0x8003B1F0; // type:func -SurfaceType_GetMaterial = 0x8003B218; // type:func -SurfaceType_GetSfxOffset = 0x8003B23C; // type:func -SurfaceType_GetFloorEffect = 0x8003B284; // type:func -SurfaceType_GetLightSetting = 0x8003B2AC; // type:func -SurfaceType_GetEcho = 0x8003B2D4; // type:func -SurfaceType_CanHookshot = 0x8003B2FC; // type:func -SurfaceType_IsIgnoredByEntities = 0x8003B324; // type:func -SurfaceType_IsIgnoredByProjectiles = 0x8003B360; // type:func -SurfaceType_IsFloorConveyor = 0x8003B39C; // type:func -SurfaceType_GetConveyorSpeed = 0x8003B3D8; // type:func -SurfaceType_GetConveyorDirection = 0x8003B400; // type:func -func_80042108 = 0x8003B428; // type:func -WaterBox_GetSurface1 = 0x8003B45C; // type:func -WaterBox_GetSurfaceImpl = 0x8003B568; // type:func -WaterBox_GetSurface2 = 0x8003B6C0; // type:func -WaterBox_GetBgCamIndex = 0x8003B85C; // type:func -WaterBox_GetBgCamSetting = 0x8003B870; // type:func -WaterBox_GetLightIndex = 0x8003B8C8; // type:func -func_800425B0 = 0x8003B8E0; // type:func -func_80042708 = 0x8003BA38; // type:func -func_800427B4 = 0x8003BAE8; // type:func -DynaPolyActor_UpdateCarriedActorPos = 0x8003BBA0; // type:func -DynaPolyActor_UpdateCarriedActorRotY = 0x8003BCDC; // type:func -func_80043334 = 0x8003BD70; // type:func -DynaPolyActor_TransformCarriedActor = 0x8003BDE0; // type:func -DynaPolyActor_Init = 0x8003BEC0; // type:func -DynaPolyActor_UnsetAllInteractFlags = 0x8003BEE4; // type:func -DynaPolyActor_SetActorOnTop = 0x8003BEF0; // type:func -DynaPolyActor_SetPlayerOnTop = 0x8003BF04; // type:func -DynaPoly_SetPlayerOnTop = 0x8003BF18; // type:func -DynaPolyActor_SetPlayerAbove = 0x8003BF48; // type:func -DynaPoly_SetPlayerAbove = 0x8003BF5C; // type:func -DynaPolyActor_SetSwitchPressed = 0x8003BF8C; // type:func -DynaPolyActor_IsActorOnTop = 0x8003BFA0; // type:func -DynaPolyActor_IsPlayerOnTop = 0x8003BFC4; // type:func -DynaPolyActor_IsPlayerAbove = 0x8003BFE8; // type:func -DynaPolyActor_IsSwitchPressed = 0x8003C00C; // type:func -func_800435D8 = 0x8003C030; // type:func -Camera_InterpolateCurve = 0x8003C250; // type:func -Camera_LERPCeilF = 0x8003C2FC; // type:func -Camera_LERPFloorF = 0x8003C340; // type:func -Camera_LERPCeilS = 0x8003C384; // type:func -Camera_LERPFloorS = 0x8003C418; // type:func -Camera_LERPCeilVec3f = 0x8003C4AC; // type:func -func_80043ABC = 0x8003C530; // type:func -func_80043B60 = 0x8003C570; // type:func -Camera_Vec3sToVec3f = 0x8003C5A0; // type:func -Camera_AddVecGeoToVec3f = 0x8003C608; // type:func -Camera_Vec3fTranslateByUnitVector = 0x8003C688; // type:func -Camera_BGCheckInfo = 0x8003C6F4; // type:func -Camera_BGCheck = 0x8003C91C; // type:func -func_80043F94 = 0x8003C978; // type:func -func_80044340 = 0x8003CD30; // type:func -Camera_CheckOOB = 0x8003CD8C; // type:func -Camera_GetFloorYNorm = 0x8003CE28; // type:func -Camera_GetFloorY = 0x8003CF0C; // type:func -Camera_GetFloorYLayer = 0x8003CF68; // type:func -Camera_GetBgCamSetting = 0x8003D12C; // type:func -Camera_GetBgCamFuncData = 0x8003D160; // type:func -Camera_GetBgCamIndex = 0x8003D190; // type:func -Camera_GetBgCamFuncDataUnderPlayer = 0x8003D210; // type:func -Camera_GetWaterBoxBgCamIndex = 0x8003D2C0; // type:func -Camera_GetWaterSurface = 0x8003D3A0; // type:func -Camera_XZAngle = 0x8003D468; // type:func -Camera_GetPitchAdjFromFloorHeightDiffs = 0x8003D4D0; // type:func -Camera_CalcUpFromPitchYawRoll = 0x8003D7FC; // type:func -Camera_ClampLERPScale = 0x8003DA38; // type:func -Camera_CopyDataToRegs = 0x8003DA90; // type:func -Camera_UpdateInterface = 0x8003DAA0; // type:func -Camera_BGCheckCorner = 0x8003DBAC; // type:func -func_80045508 = 0x8003DC14; // type:func -Camera_CalcSlopeYAdj = 0x8003DE24; // type:func -Camera_CalcAtDefault = 0x8003DEB8; // type:func -func_800458D4 = 0x8003DFD0; // type:func -func_80045B08 = 0x8003E188; // type:func -Camera_CalcAtForParallel = 0x8003E2E8; // type:func -Camera_CalcAtForLockOn = 0x8003E64C; // type:func -Camera_CalcAtForHorse = 0x8003EB04; // type:func -Camera_LERPClampDist = 0x8003ECC0; // type:func -Camera_ClampDist = 0x8003ED78; // type:func -Camera_CalcDefaultPitch = 0x8003EE8C; // type:func -Camera_CalcDefaultYaw = 0x8003EFEC; // type:func -func_80046E20 = 0x8003F140; // type:func -Camera_Noop = 0x8003F664; // type:func -Camera_Normal1 = 0x8003F674; // type:func -Camera_Normal2 = 0x800400CC; // type:func -Camera_Normal3 = 0x8004085C; // type:func -Camera_Normal4 = 0x80040F04; // type:func -Camera_Normal0 = 0x80040F24; // type:func -Camera_Parallel1 = 0x80040F44; // type:func -Camera_Parallel2 = 0x800417D0; // type:func -Camera_Parallel3 = 0x800417F0; // type:func -Camera_Parallel4 = 0x80041854; // type:func -Camera_Parallel0 = 0x80041874; // type:func -Camera_Jump1 = 0x80041894; // type:func -Camera_Jump2 = 0x80041ED4; // type:func -Camera_Jump3 = 0x800427C0; // type:func -Camera_Jump4 = 0x80042F2C; // type:func -Camera_Jump0 = 0x80042F4C; // type:func -Camera_Battle1 = 0x80042F6C; // type:func -Camera_Battle2 = 0x80043CA8; // type:func -Camera_Battle3 = 0x80043CC8; // type:func -Camera_Battle4 = 0x80043CE8; // type:func -Camera_Battle0 = 0x80044040; // type:func -Camera_KeepOn1 = 0x80044060; // type:func -Camera_KeepOn2 = 0x80044DB0; // type:func -Camera_KeepOn3 = 0x80044DD0; // type:func -Camera_KeepOn4 = 0x800457C8; // type:func -Camera_KeepOn0 = 0x800465E0; // type:func -Camera_Fixed1 = 0x80046880; // type:func -Camera_Fixed2 = 0x80046B6C; // type:func -Camera_Fixed3 = 0x80046F20; // type:func -Camera_Fixed4 = 0x80047120; // type:func -Camera_Fixed0 = 0x800474AC; // type:func -Camera_Subj1 = 0x800474CC; // type:func -Camera_Subj2 = 0x800474EC; // type:func -Camera_Subj3 = 0x8004750C; // type:func -Camera_Subj4 = 0x80047B10; // type:func -Camera_Subj0 = 0x80048144; // type:func -Camera_Data0 = 0x80048164; // type:func -Camera_Data1 = 0x80048184; // type:func -Camera_Data2 = 0x800481A4; // type:func -Camera_Data3 = 0x800481C4; // type:func -Camera_Data4 = 0x800481E4; // type:func -Camera_Unique1 = 0x800484D0; // type:func -Camera_Unique2 = 0x80048954; // type:func -Camera_Unique3 = 0x80048D0C; // type:func -Camera_Unique0 = 0x800491BC; // type:func -Camera_Unique4 = 0x800496D8; // type:func -Camera_Unique5 = 0x800496F8; // type:func -Camera_Unique6 = 0x80049718; // type:func -Camera_Unique7 = 0x80049848; // type:func -Camera_Unique8 = 0x80049A4C; // type:func -Camera_Unique9 = 0x80049A6C; // type:func -Camera_Vec3fCopy = 0x8004AEC8; // type:func -Camera_RotateAroundPoint = 0x8004AEE8; // type:func -Camera_Demo1 = 0x8004AF44; // type:func -Camera_Demo2 = 0x8004B11C; // type:func -Camera_Demo3 = 0x8004B13C; // type:func -Camera_Demo4 = 0x8004BBD8; // type:func -Camera_Demo5 = 0x8004BBF8; // type:func -Camera_Demo6 = 0x8004C5D0; // type:func -Camera_Demo7 = 0x8004C874; // type:func -Camera_Demo8 = 0x8004C8A8; // type:func -Camera_Demo9 = 0x8004C8C8; // type:func -Camera_Demo0 = 0x8004CCE8; // type:func -Camera_Special0 = 0x8004CD08; // type:func -Camera_Special1 = 0x8004CE50; // type:func -Camera_Special2 = 0x8004CE70; // type:func -Camera_Special3 = 0x8004CE90; // type:func -Camera_Special4 = 0x8004CEB0; // type:func -Camera_Special5 = 0x8004D054; // type:func -Camera_Special7 = 0x8004D3F8; // type:func -Camera_Special6 = 0x8004D744; // type:func -Camera_Special8 = 0x8004DBB4; // type:func -Camera_Special9 = 0x8004DBD4; // type:func -Camera_Create = 0x8004E2BC; // type:func -Camera_Destroy = 0x8004E30C; // type:func -Camera_Init = 0x8004E334; // type:func -func_80057FC4 = 0x8004E554; // type:func -Camera_Stub80058140 = 0x8004E6A8; // type:func -Camera_InitDataUsingPlayer = 0x8004E6B4; // type:func -Camera_ChangeStatus = 0x8004E8B0; // type:func -Camera_UpdateWater = 0x8004E8CC; // type:func -Camera_UpdateHotRoom = 0x8004ECE8; // type:func -Camera_UpdateDistortion = 0x8004ED28; // type:func -Camera_Update = 0x8004F088; // type:func -Camera_Finish = 0x8004F8B8; // type:func -Camera_SetNewModeStateFlags = 0x8004FA24; // type:func -Camera_RequestModeImpl = 0x8004FA48; // type:func -Camera_RequestMode = 0x8004FDAC; // type:func -Camera_CheckValidMode = 0x8004FDD8; // type:func -Camera_RequestSettingImpl = 0x8004FE44; // type:func -Camera_RequestSetting = 0x80050038; // type:func -Camera_RequestBgCam = 0x80050064; // type:func -Camera_GetInputDir = 0x80050138; // type:func -Camera_GetInputDirPitch = 0x8005015C; // type:func -Camera_GetInputDirYaw = 0x80050184; // type:func -Camera_GetCamDir = 0x800501AC; // type:func -Camera_GetCamDirPitch = 0x800501D0; // type:func -Camera_GetCamDirYaw = 0x800501F8; // type:func -Camera_RequestQuake = 0x80050220; // type:func -Camera_SetViewParam = 0x80050294; // type:func -Camera_UnsetViewFlag = 0x80050428; // type:func -Camera_OverwriteStateFlags = 0x80050450; // type:func -Camera_ResetAnim = 0x8005046C; // type:func -Camera_SetCSParams = 0x8005047C; // type:func -Camera_SetStateFlag = 0x80050510; // type:func -Camera_UnsetStateFlag = 0x80050534; // type:func -Camera_ChangeDoorCam = 0x8005055C; // type:func -Camera_Copy = 0x8005065C; // type:func -Camera_IsDebugCamEnabled = 0x800507A4; // type:func -Camera_GetQuakeOffset = 0x800507B0; // type:func -Camera_SetCameraData = 0x800507D4; // type:func -func_8005B198 = 0x80050820; // type:func -Camera_SetFinishedFlag = 0x80050830; // type:func -DamageTable_Get = 0x80050880; // type:func -DamageTable_Clear = 0x800508AC; // type:func -Collider_InitBase = 0x800508E0; // type:func -Collider_DestroyBase = 0x80050928; // type:func -Collider_SetBaseToActor = 0x8005093C; // type:func -Collider_SetBaseType1 = 0x8005097C; // type:func -Collider_SetBase = 0x800509C0; // type:func -Collider_ResetATBase = 0x80050A04; // type:func -Collider_ResetACBase = 0x80050A20; // type:func -Collider_ResetOCBase = 0x80050A3C; // type:func -Collider_InitElementDamageInfoAT = 0x80050A64; // type:func -Collider_DestroyElementDamageInfoAT = 0x80050A8C; // type:func -Collider_SetElementDamageInfoAT = 0x80050AA0; // type:func -Collider_ResetATElement_Unk = 0x80050AC8; // type:func -Collider_InitElementDamageInfoAC = 0x80050AD8; // type:func -Collider_DestroyElementDamageInfoAC = 0x80050B08; // type:func -Collider_SetElementDamageInfoAC = 0x80050B1C; // type:func -Collider_InitElement = 0x80050B44; // type:func -Collider_DestroyElement = 0x80050BC4; // type:func -Collider_SetElement = 0x80050C04; // type:func -Collider_ResetATElement = 0x80050C7C; // type:func -Collider_ResetACElement = 0x80050CB4; // type:func -Collider_ResetOCElement = 0x80050CEC; // type:func -Collider_InitJntSphElementDim = 0x80050D04; // type:func -Collider_DestroyJntSphElementDim = 0x80050D4C; // type:func -Collider_SetJntSphElementDim = 0x80050D60; // type:func -Collider_InitJntSphElement = 0x80050DB8; // type:func -Collider_DestroyJntSphElement = 0x80050DF8; // type:func -Collider_SetJntSphElement = 0x80050E38; // type:func -Collider_ResetJntSphElementAT = 0x80050E88; // type:func -Collider_ResetJntSphElementAC = 0x80050EAC; // type:func -Collider_ResetJntSphElementOC = 0x80050ED0; // type:func -Collider_InitJntSph = 0x80050EF4; // type:func -Collider_FreeJntSph = 0x80050F20; // type:func -Collider_DestroyJntSph = 0x80050FC0; // type:func -Collider_SetJntSphToActor = 0x80051050; // type:func -Collider_SetJntSphAllocType1 = 0x8005112C; // type:func -Collider_SetJntSphAlloc = 0x80051208; // type:func -Collider_SetJntSph = 0x800512E4; // type:func -Collider_ResetJntSphAT = 0x80051398; // type:func -Collider_ResetJntSphAC = 0x80051424; // type:func -Collider_ResetJntSphOC = 0x800514B0; // type:func -Collider_InitCylinderDim = 0x8005153C; // type:func -Collider_DestroyCylinderDim = 0x80051598; // type:func -Collider_SetCylinderDim = 0x800515AC; // type:func -Collider_InitCylinder = 0x800515EC; // type:func -Collider_DestroyCylinder = 0x8005163C; // type:func -Collider_SetCylinderToActor = 0x8005168C; // type:func -Collider_SetCylinderType1 = 0x800516F4; // type:func -Collider_SetCylinder = 0x8005175C; // type:func -Collider_ResetCylinderAT = 0x800517C4; // type:func -Collider_ResetCylinderAC = 0x80051804; // type:func -Collider_ResetCylinderOC = 0x80051844; // type:func -Collider_InitTrisElementDim = 0x80051884; // type:func -Collider_DestroyTrisElementDim = 0x800518D0; // type:func -Collider_SetTrisElementDim = 0x800518E4; // type:func -Collider_InitTrisElement = 0x80051998; // type:func -Collider_DestroyTrisElement = 0x800519D8; // type:func -Collider_SetTrisElement = 0x80051A18; // type:func -Collider_ResetTrisElementAT = 0x80051A68; // type:func -Collider_ResetTrisElementAC = 0x80051A8C; // type:func -Collider_ResetTrisElementOC = 0x80051AB0; // type:func -Collider_InitTris = 0x80051AD4; // type:func -Collider_FreeTris = 0x80051B00; // type:func -Collider_DestroyTris = 0x80051BB8; // type:func -Collider_SetTrisAllocType1 = 0x80051C5C; // type:func -Collider_SetTrisAlloc = 0x80051D5C; // type:func -Collider_SetTris = 0x80051E5C; // type:func -Collider_ResetTrisAT = 0x80051F28; // type:func -Collider_ResetTrisAC = 0x80051FC8; // type:func -Collider_ResetTrisOC = 0x80052068; // type:func -Collider_InitQuadDim = 0x80052108; // type:func -Collider_DestroyQuadDim = 0x80052154; // type:func -Collider_ResetQuadACDist = 0x80052168; // type:func -Collider_SetQuadMidpoints = 0x80052184; // type:func -Collider_SetQuadDim = 0x80052240; // type:func -Collider_InitQuad = 0x800522C8; // type:func -Collider_DestroyQuad = 0x80052318; // type:func -Collider_SetQuadType1 = 0x80052368; // type:func -Collider_SetQuad = 0x800523D0; // type:func -Collider_ResetQuadAT = 0x80052438; // type:func -Collider_ResetQuadAC = 0x80052488; // type:func -Collider_ResetQuadOC = 0x800524C8; // type:func -Collider_QuadSetNearestAC = 0x80052508; // type:func -Collider_InitLine = 0x800525B8; // type:func -Collider_DestroyLine = 0x80052618; // type:func -Collider_SetLinePoints = 0x8005262C; // type:func -Collider_SetLine = 0x80052670; // type:func -Collider_ResetLineOC = 0x8005269C; // type:func -CollisionCheck_InitContext = 0x800526B8; // type:func -CollisionCheck_DestroyContext = 0x800526D8; // type:func -CollisionCheck_ClearContext = 0x800526E8; // type:func -CollisionCheck_EnableSAC = 0x80052790; // type:func -CollisionCheck_DisableSAC = 0x800527A8; // type:func -CollisionCheck_SetAT = 0x800527C0; // type:func -CollisionCheck_SetAT_SAC = 0x800528A0; // type:func -CollisionCheck_SetAC = 0x800529B0; // type:func -CollisionCheck_SetAC_SAC = 0x80052A90; // type:func -CollisionCheck_SetOC = 0x80052BA0; // type:func -CollisionCheck_SetOC_SAC = 0x80052C80; // type:func -CollisionCheck_SetOCLine = 0x80052D90; // type:func -CollisionCheck_IsElementNotAT = 0x80052E1C; // type:func -CollisionCheck_IsElementNotAC = 0x80052E40; // type:func -CollisionCheck_NoSharedFlags = 0x80052E64; // type:func -CollisionCheck_NoBlood = 0x80052E8C; // type:func -CollisionCheck_BlueBlood = 0x80052EA0; // type:func -CollisionCheck_GreenBlood = 0x8005300C; // type:func -CollisionCheck_WaterBurst = 0x80053178; // type:func -CollisionCheck_RedBlood = 0x800531B4; // type:func -CollisionCheck_RedBloodUnused = 0x800531D8; // type:func -CollisionCheck_HitSolid = 0x800531FC; // type:func -CollisionCheck_SwordHitAudio = 0x8005340C; // type:func -CollisionCheck_HitEffects = 0x80053518; // type:func -CollisionCheck_SetBounce = 0x80053718; // type:func -CollisionCheck_SetATvsAC = 0x80053738; // type:func -CollisionCheck_ATJntSphVsACJntSph = 0x800538E0; // type:func -CollisionCheck_ATJntSphVsACCyl = 0x80053B8C; // type:func -CollisionCheck_ATCylVsACJntSph = 0x80053E00; // type:func -CollisionCheck_ATJntSphVsACTris = 0x800540A0; // type:func -CollisionCheck_ATTrisVsACJntSph = 0x800542C0; // type:func -CollisionCheck_ATJntSphVsACQuad = 0x800544D4; // type:func -CollisionCheck_ATQuadVsACJntSph = 0x800546F4; // type:func -CollisionCheck_ATCylVsACCyl = 0x80054958; // type:func -CollisionCheck_ATCylVsACTris = 0x80054B2C; // type:func -CollisionCheck_ATTrisVsACCyl = 0x80054CF0; // type:func -CollisionCheck_ATCylVsACQuad = 0x80054EB0; // type:func -CollisionCheck_ATQuadVsACCyl = 0x80055124; // type:func -CollisionCheck_ATTrisVsACTris = 0x800553D0; // type:func -CollisionCheck_ATTrisVsACQuad = 0x80055624; // type:func -CollisionCheck_ATQuadVsACTris = 0x800558B4; // type:func -CollisionCheck_ATQuadVsACQuad = 0x80055B4C; // type:func -CollisionCheck_SetJntSphHitFX = 0x80055DDC; // type:func -CollisionCheck_SetCylHitFX = 0x80055EBC; // type:func -CollisionCheck_SetTrisHitFX = 0x80055F54; // type:func -CollisionCheck_SetQuadHitFX = 0x8005603C; // type:func -CollisionCheck_SetHitEffects = 0x800560D4; // type:func -CollisionCheck_AC = 0x800561A8; // type:func -CollisionCheck_AT = 0x800562D0; // type:func -CollisionCheck_GetMassType = 0x800563A0; // type:func -CollisionCheck_SetOCvsOC = 0x800563DC; // type:func -CollisionCheck_OC_JntSphVsJntSph = 0x8005670C; // type:func -CollisionCheck_OC_JntSphVsCyl = 0x800568DC; // type:func -CollisionCheck_OC_CylVsJntSph = 0x80056A3C; // type:func -CollisionCheck_OC_CylVsCyl = 0x80056A68; // type:func -CollisionCheck_SkipOC = 0x80056B38; // type:func -CollisionCheck_Incompatible = 0x80056B5C; // type:func -CollisionCheck_OC = 0x80056BDC; // type:func -CollisionCheck_InitInfo = 0x80056D6C; // type:func -CollisionCheck_ResetDamage = 0x80056DB4; // type:func -CollisionCheck_SetInfoNoDamageTable = 0x80056DE0; // type:func -CollisionCheck_SetInfo = 0x80056E08; // type:func -CollisionCheck_SetInfo2 = 0x80056E34; // type:func -CollisionCheck_SetInfoGetDamageTable = 0x80056E68; // type:func -CollisionCheck_ApplyDamage = 0x80056EA0; // type:func -CollisionCheck_ApplyDamageJntSph = 0x80057060; // type:func -CollisionCheck_ApplyDamageCyl = 0x80057108; // type:func -CollisionCheck_ApplyDamageTris = 0x80057128; // type:func -CollisionCheck_ApplyDamageQuad = 0x800571BC; // type:func -CollisionCheck_Damage = 0x800571DC; // type:func -CollisionCheck_LineOC_JntSph = 0x8005729C; // type:func -CollisionCheck_LineOC_Cyl = 0x800573B4; // type:func -CollisionCheck_LineOC = 0x8005742C; // type:func -CollisionCheck_LineOCCheckAll = 0x80057574; // type:func -CollisionCheck_LineOCCheck = 0x80057598; // type:func -Collider_UpdateCylinder = 0x800575C4; // type:func -Collider_SetCylinderPosition = 0x80057608; // type:func -Collider_SetQuadVertices = 0x80057628; // type:func -Collider_SetTrisVertices = 0x80057698; // type:func -Collider_SetTrisDim = 0x80057758; // type:func -Collider_UpdateSpheres = 0x800577A8; // type:func -CollisionCheck_SpawnRedBlood = 0x8005792C; // type:func -CollisionCheck_SpawnWaterDroplets = 0x80057A8C; // type:func -CollisionCheck_SpawnShieldParticles = 0x80057BE8; // type:func -CollisionCheck_SpawnShieldParticlesMetal = 0x80057C7C; // type:func -CollisionCheck_SpawnShieldParticlesMetalSfx = 0x80057CC8; // type:func -CollisionCheck_SpawnShieldParticlesMetal2 = 0x80057D14; // type:func -CollisionCheck_SpawnShieldParticlesWood = 0x80057D34; // type:func -CollisionCheck_CylSideVsLineSeg = 0x80057DF4; // type:func -CollisionCheck_GetSwordDamage = 0x800584F8; // type:func -SaveContext_Init = 0x80058560; // type:func -Regs_Init = 0x80058610; // type:func -DebugCamera_ScreenText = 0x800586A0; // type:func -DebugCamera_ScreenTextColored = 0x800586B4; // type:func -DebugCamera_DrawScreenText = 0x80058770; // type:func -Debug_DrawText = 0x80058854; // type:func -DebugDisplay_Init = 0x80058920; // type:func -DebugDisplay_AddObject = 0x80058930; // type:func -DebugDisplay_DrawObjects = 0x80058A0C; // type:func -DebugDisplay_DrawSpriteI8 = 0x80058A9C; // type:func -DebugDisplay_DrawPolygon = 0x80058C80; // type:func -Cutscene_InitContext = 0x80058DE0; // type:func -Cutscene_StartManual = 0x80058DF8; // type:func -Cutscene_StopManual = 0x80058E10; // type:func -Cutscene_UpdateManual = 0x80058E34; // type:func -Cutscene_UpdateScripted = 0x80058E80; // type:func -CutsceneHandler_DoNothing = 0x80058F34; // type:func -Cutscene_StepTimer = 0x80058F44; // type:func -CutsceneHandler_StartManual = 0x80058F7C; // type:func -CutsceneHandler_StartScript = 0x80058FDC; // type:func -CutsceneCmd_Misc = 0x80059048; // type:func -CutsceneCmd_SetLightSetting = 0x800597E4; // type:func -CutsceneCmd_StartSequence = 0x80059824; // type:func -CutsceneCmd_StopSequence = 0x80059860; // type:func -CutsceneCmd_FadeOutSequence = 0x8005989C; // type:func -CutsceneCmd_RumbleController = 0x8005991C; // type:func -CutsceneCmd_SetTime = 0x80059960; // type:func -CutsceneCmd_Destination = 0x80059A04; // type:func -CutsceneCmd_Transition = 0x8005B724; // type:func -CutsceneCmd_UpdateCamEyeSpline = 0x8005C104; // type:func -CutsceneCmd_UpdateCamAtSpline = 0x8005C258; // type:func -CutsceneCmd_SetCamEye = 0x8005C3B4; // type:func -CutsceneCmd_SetCamAt = 0x8005C590; // type:func -CutsceneCmd_Text = 0x8005C738; // type:func -Cutscene_ProcessScript = 0x8005CA0C; // type:func -CutsceneHandler_RunScript = 0x8005D3DC; // type:func -CutsceneHandler_StopManual = 0x8005D420; // type:func -CutsceneHandler_StopScript = 0x8005D460; // type:func -Cutscene_SetupScripted = 0x8005D568; // type:func -func_80069048 = 0x8005D6E8; // type:func -func_8006907C = 0x8005D720; // type:func -Cutscene_HandleEntranceTriggers = 0x8005D744; // type:func -Cutscene_HandleConditionalTriggers = 0x8005D864; // type:func -Cutscene_SetScript = 0x8005DA6C; // type:func -MemCpy = 0x8005DAC0; // type:func -MemSet = 0x8005DAF0; // type:func -GetItem_Draw = 0x8005DB50; // type:func -GetItem_DrawMaskOrBombchu = 0x8005DB94; // type:func -GetItem_DrawSoldOut = 0x8005DC30; // type:func -GetItem_DrawBlueFire = 0x8005DCD8; // type:func -GetItem_DrawPoes = 0x8005DE7C; // type:func -GetItem_DrawFairy = 0x8005E078; // type:func -GetItem_DrawMirrorShield = 0x8005E254; // type:func -GetItem_DrawSkullToken = 0x8005E3CC; // type:func -GetItem_DrawEggOrMedallion = 0x8005E534; // type:func -GetItem_DrawCompass = 0x8005E5EC; // type:func -GetItem_DrawPotion = 0x8005E6F4; // type:func -GetItem_DrawGoronSword = 0x8005E8C8; // type:func -GetItem_DrawDekuNuts = 0x8005E9D0; // type:func -GetItem_DrawRecoveryHeart = 0x8005EAE4; // type:func -GetItem_DrawFish = 0x8005EBFC; // type:func -GetItem_DrawOpa0 = 0x8005ED04; // type:func -GetItem_DrawOpa0Xlu1 = 0x8005EDA0; // type:func -GetItem_DrawXlu01 = 0x8005EEA4; // type:func -GetItem_DrawOpa10Xlu2 = 0x8005EF5C; // type:func -GetItem_DrawMagicArrow = 0x8005F078; // type:func -GetItem_DrawMagicSpell = 0x8005F194; // type:func -GetItem_DrawOpa1023 = 0x8005F2E4; // type:func -GetItem_DrawOpa10Xlu32 = 0x8005F3CC; // type:func -GetItem_DrawSmallRupee = 0x8005F500; // type:func -GetItem_DrawScale = 0x8005F650; // type:func -GetItem_DrawBulletBag = 0x8005F7B0; // type:func -GetItem_DrawWallet = 0x8005F8FC; // type:func -SfxSource_InitAll = 0x8005FA50; // type:func -SfxSource_UpdateAll = 0x8005FA80; // type:func -SfxSource_PlaySfxAtFixedWorldPos = 0x8005FB28; // type:func -QuestHint_CheckCondition = 0x8005FC10; // type:func -QuestHint_CheckConditionChain = 0x8005FE8C; // type:func -QuestHint_CheckRandomCondition = 0x8005FF20; // type:func -QuestHint_GetTextIdFromScript = 0x80060100; // type:func -QuestHint_GetSariaTextId = 0x80060244; // type:func -QuestHint_GetNaviTextId = 0x800602AC; // type:func -MaskReaction_GetTextId = 0x800602F0; // type:func -CutsceneFlags_UnsetAll = 0x80060340; // type:func -CutsceneFlags_Set = 0x80060370; // type:func -CutsceneFlags_Unset = 0x800603DC; // type:func -CutsceneFlags_Get = 0x8006044C; // type:func -Curve_CubicHermiteSpline = 0x800604C0; // type:func -Curve_Interpolate = 0x80060558; // type:func -SkelCurve_Clear = 0x80060700; // type:func -SkelCurve_Init = 0x80060730; // type:func -SkelCurve_Destroy = 0x800607E0; // type:func -SkelCurve_SetAnim = 0x80060810; // type:func -SkelCurve_Update = 0x80060848; // type:func -SkelCurve_DrawLimb = 0x80060B38; // type:func -SkelCurve_Draw = 0x80060EC4; // type:func -Horse_CanSpawn = 0x80060F10; // type:func -Horse_ResetHorseData = 0x80060FC4; // type:func -Horse_FixLakeHyliaPosition = 0x80061000; // type:func -Horse_SetupInGameplay = 0x80061040; // type:func -Horse_SetupInCutscene = 0x800614D8; // type:func -Horse_InitPlayerHorse = 0x80061A4C; // type:func -Horse_RotateToPoint = 0x80061B5C; // type:func -Jpeg_ScheduleDecoderTask = 0x80061BF0; // type:func -Jpeg_CopyToZbuffer = 0x80061D2C; // type:func -Jpeg_GetUnalignedU16 = 0x80061E64; // type:func -Jpeg_ParseMarkers = 0x80061EB0; // type:func -Jpeg_Decode = 0x8006207C; // type:func -KaleidoSetup_Update = 0x800623B0; // type:func -KaleidoSetup_Init = 0x8006261C; // type:func -KaleidoSetup_Destroy = 0x80062770; // type:func -Font_LoadCharWide = 0x80062780; // type:func -Font_LoadChar = 0x800627D0; // type:func -Font_LoadMessageBoxIcon = 0x80062848; // type:func -Font_LoadOrderedFont = 0x8006287C; // type:func -Environment_ZBufValToFixedPoint = 0x80062980; // type:func -Environment_GetPixelDepth = 0x800629B8; // type:func -Environment_GraphCallback = 0x800629E4; // type:func -Environment_Init = 0x80062A28; // type:func -Environment_SmoothStepToU8 = 0x80062EF8; // type:func -Environment_SmoothStepToS8 = 0x80063030; // type:func -Environment_LerpWeight = 0x80063170; // type:func -Environment_LerpWeightAccelDecel = 0x800631F4; // type:func -Environment_UpdateStorm = 0x800633B4; // type:func -Environment_UpdateSkybox = 0x800634A8; // type:func -Environment_EnableUnderwaterLights = 0x80063D94; // type:func -Environment_DisableUnderwaterLights = 0x80063E0C; // type:func -Environment_Update = 0x80063E84; // type:func -Environment_DrawSunAndMoon = 0x80065CE0; // type:func -Environment_DrawSunLensFlare = 0x8006653C; // type:func -Environment_DrawLensFlare = 0x80066610; // type:func -Environment_RandCentered = 0x80067268; // type:func -Environment_DrawRain = 0x80067290; // type:func -Environment_ChangeLightSetting = 0x80067838; // type:func -Environment_DrawSkyboxFilters = 0x800678BC; // type:func -Environment_DrawLightningFlash = 0x80067ADC; // type:func -Environment_UpdateLightningStrike = 0x80067B74; // type:func -Environment_AddLightningBolts = 0x80067E7C; // type:func -Environment_DrawLightning = 0x80067EE4; // type:func -Environment_PlaySceneSequence = 0x80068328; // type:func -Environment_PlayTimeBasedSequence = 0x80068518; // type:func -Environment_DrawCustomLensFlare = 0x80068830; // type:func -Environment_InitGameOverLights = 0x800688DC; // type:func -Environment_FadeInGameOverLights = 0x80068AC4; // type:func -Environment_FadeOutGameOverLights = 0x80068D78; // type:func -Environment_UpdateRain = 0x80069094; // type:func -Environment_FillScreen = 0x800690FC; // type:func -Environment_DrawSandstorm = 0x800692F4; // type:func -Environment_AdjustLights = 0x80069D40; // type:func -Environment_GetBgsDayCount = 0x80069F6C; // type:func -Environment_ClearBgsDayCount = 0x80069F7C; // type:func -Environment_GetTotalDays = 0x80069F8C; // type:func -Environment_ForcePlaySequence = 0x80069F9C; // type:func -Environment_IsForcedSequenceDisabled = 0x80069FB4; // type:func -Environment_PlayStormNatureAmbience = 0x80069FDC; // type:func -Environment_StopStormNatureAmbience = 0x8006A03C; // type:func -Environment_WarpSongLeave = 0x8006A09C; // type:func -Lib_MemSet = 0x8006A190; // type:func -Math_CosS = 0x8006A1E4; // type:func -Math_SinS = 0x8006A224; // type:func -Math_ScaledStepToS = 0x8006A264; // type:func -Math_StepToS = 0x8006A334; // type:func -Math_StepToF = 0x8006A3BC; // type:func -Math_StepUntilAngleS = 0x8006A450; // type:func -Math_StepUntilS = 0x8006A4B8; // type:func -Math_StepToAngleS = 0x8006A518; // type:func -Math_StepUntilF = 0x8006A5DC; // type:func -Math_AsymStepToF = 0x8006A62C; // type:func -Lib_GetControlStickData = 0x8006A6D4; // type:func -Rand_S16Offset = 0x8006A750; // type:func -Rand_S16OffsetStride = 0x8006A7A4; // type:func -Math_Vec3f_Copy = 0x8006A80C; // type:func -Math_Vec3s_ToVec3f = 0x8006A82C; // type:func -Math_Vec3f_Sum = 0x8006A870; // type:func -Math_Vec3f_Diff = 0x8006A8A8; // type:func -Math_Vec3s_DiffToVec3f = 0x8006A8E0; // type:func -Math_Vec3f_Scale = 0x8006A93C; // type:func -Math_Vec3f_DistXYZ = 0x8006A978; // type:func -Math_Vec3f_DistXYZAndStoreDiff = 0x8006A9BC; // type:func -Math_Vec3f_DistXZ = 0x8006AA18; // type:func -Math_Vec3f_DiffY = 0x8006AA4C; // type:func -Math_Vec3f_Yaw = 0x8006AA60; // type:func -Math_Vec3f_Pitch = 0x8006AA94; // type:func -Actor_ProcessInitChain = 0x8006AADC; // type:func -IChain_Apply_u8 = 0x8006AB54; // type:func -IChain_Apply_s8 = 0x8006AB70; // type:func -IChain_Apply_u16 = 0x8006AB8C; // type:func -IChain_Apply_s16 = 0x8006ABA8; // type:func -IChain_Apply_u32 = 0x8006ABC4; // type:func -IChain_Apply_s32 = 0x8006ABE0; // type:func -IChain_Apply_f32 = 0x8006ABFC; // type:func -IChain_Apply_f32div1000 = 0x8006AC20; // type:func -IChain_Apply_Vec3f = 0x8006AC50; // type:func -IChain_Apply_Vec3fdiv1000 = 0x8006AC7C; // type:func -IChain_Apply_Vec3s = 0x8006ACB4; // type:func -Math_SmoothStepToF = 0x8006ACD8; // type:func -Math_ApproachF = 0x8006ADE0; // type:func -Math_ApproachZeroF = 0x8006AE50; // type:func -Math_SmoothStepToDegF = 0x8006AEA4; // type:func -Math_SmoothStepToS = 0x8006B068; // type:func -Math_ApproachS = 0x8006B184; // type:func -Color_RGBA8_Copy = 0x8006B228; // type:func -Sfx_PlaySfxCentered = 0x8006B250; // type:func -Sfx_PlaySfxCentered2 = 0x8006B298; // type:func -Sfx_PlaySfxAtPos = 0x8006B2E0; // type:func -Health_InitMeter = 0x8006B330; // type:func -Health_UpdateMeter = 0x8006B40C; // type:func -func_80078E18 = 0x8006B7F0; // type:func -func_80078E34 = 0x8006B810; // type:func -func_80078E84 = 0x8006B860; // type:func -Health_DrawMeter = 0x8006B8F8; // type:func -Health_UpdateBeatingHeart = 0x8006C570; // type:func -Health_IsCritical = 0x8006C65C; // type:func -Lights_PointSetInfo = 0x8006C6D0; // type:func -Lights_PointNoGlowSetInfo = 0x8006C72C; // type:func -Lights_PointGlowSetInfo = 0x8006C790; // type:func -Lights_PointSetColorAndRadius = 0x8006C7F8; // type:func -Lights_DirectionalSetInfo = 0x8006C82C; // type:func -Lights_Reset = 0x8006C884; // type:func -Lights_Draw = 0x8006C8C0; // type:func -Lights_FindSlot = 0x8006CA04; // type:func -Lights_BindPoint = 0x8006CA34; // type:func -Lights_BindDirectional = 0x8006CD90; // type:func -Lights_BindAll = 0x8006CDF8; // type:func -Lights_FindBufSlot = 0x8006CE94; // type:func -Lights_FreeNode = 0x8006CF20; // type:func -LightContext_Init = 0x8006CF98; // type:func -LightContext_SetAmbientColor = 0x8006D004; // type:func -LightContext_SetFog = 0x8006D030; // type:func -LightContext_NewLights = 0x8006D06C; // type:func -LightContext_InitList = 0x8006D0A4; // type:func -LightContext_DestroyList = 0x8006D0B4; // type:func -LightContext_InsertLight = 0x8006D110; // type:func -LightContext_RemoveLight = 0x8006D170; // type:func -Lights_NewAndDraw = 0x8006D1D4; // type:func -Lights_New = 0x8006D31C; // type:func -Lights_GlowCheck = 0x8006D364; // type:func -Lights_DrawGlow = 0x8006D568; // type:func -ZeldaArena_Malloc = 0x8006D770; // type:func -ZeldaArena_MallocR = 0x8006D798; // type:func -ZeldaArena_Realloc = 0x8006D7C0; // type:func -ZeldaArena_Free = 0x8006D7F0; // type:func -ZeldaArena_Calloc = 0x8006D818; // type:func -ZeldaArena_GetSizes = 0x8006D870; // type:func -ZeldaArena_Check = 0x8006D8A8; // type:func -ZeldaArena_Init = 0x8006D8CC; // type:func -ZeldaArena_Cleanup = 0x8006D8FC; // type:func -ZeldaArena_IsInitialized = 0x8006D920; // type:func -MapMark_Init = 0x8006D950; // type:func -MapMark_ClearPointers = 0x8006D9FC; // type:func -MapMark_DrawForDungeon = 0x8006DA18; // type:func -MapMark_Draw = 0x8006DF08; // type:func -PreNmiBuff_Init = 0x8006DF50; // type:func -PreNmiBuff_SetReset = 0x8006DFC8; // type:func -PreNmiBuff_IsResetting = 0x8006DFFC; // type:func -Sched_FlushTaskQueue = 0x8006E010; // type:func -OLib_Vec3fDist = 0x8006E090; // type:func -OLib_Vec3fDistOutDiff = 0x8006E0D4; // type:func -OLib_Vec3fDistXZ = 0x8006E130; // type:func -OLib_ClampMinDist = 0x8006E164; // type:func -OLib_ClampMaxDist = 0x8006E1B4; // type:func -OLib_Vec3fDistNormalize = 0x8006E204; // type:func -OLib_VecSphToVec3f = 0x8006E2B4; // type:func -OLib_VecGeoToVec3f = 0x8006E360; // type:func -OLib_Vec3fToVecSph = 0x8006E3A4; // type:func -OLib_Vec3fToVecGeo = 0x8006E4F8; // type:func -OLib_Vec3fDiffToVecSph = 0x8006E540; // type:func -OLib_Vec3fDiffToVecGeo = 0x8006E594; // type:func -OLib_Vec3fDiffRad = 0x8006E5E8; // type:func -OLib_Vec3fDiffDegF = 0x8006E678; // type:func -OLib_Vec3fDiffBinAng = 0x8006E6E0; // type:func -OnePointCutscene_AddVecGeoToVec3f = 0x8006E780; // type:func -OnePointCutscene_Vec3fYaw = 0x8006E800; // type:func -OnePointCutscene_Vec3sToVec3f = 0x8006E868; // type:func -OnePointCutscene_BgCheckLineTest = 0x8006E8AC; // type:func -OnePointCutscene_RaycastDown = 0x8006E8FC; // type:func -OnePointCutscene_SetCsCamPoints = 0x8006E924; // type:func -OnePointCutscene_SetInfo = 0x8006E958; // type:func -OnePointCutscene_SetAsChild = 0x80072094; // type:func -OnePointCutscene_RemoveCamera = 0x800720DC; // type:func -OnePointCutscene_Init = 0x800721B0; // type:func -OnePointCutscene_EndCutscene = 0x80072468; // type:func -OnePointCutscene_Attention = 0x800724C4; // type:func -OnePointCutscene_AttentionSetSfx = 0x80072630; // type:func -OnePointCutscene_EnableAttention = 0x80072684; // type:func -OnePointCutscene_DisableAttention = 0x80072694; // type:func -OnePointCutscene_CheckForCategory = 0x800726A8; // type:func -OnePointCutscene_Noop = 0x80072708; // type:func -Map_SavePlayerInitialInfo = 0x80072720; // type:func -Map_SetPaletteData = 0x80072780; // type:func -Map_SetFloorPalettesData = 0x800727FC; // type:func -Map_InitData = 0x800729B4; // type:func -Map_InitRoomData = 0x80072C70; // type:func -Map_Destroy = 0x80072D4C; // type:func -Map_Init = 0x80072D74; // type:func -Minimap_DrawCompassIcons = 0x80072FFC; // type:func -Minimap_Draw = 0x80073450; // type:func -Map_GetFloorTextIndexOffset = 0x80073F6C; // type:func -Map_Update = 0x80073F94; // type:func -Interface_ChangeHudVisibilityMode = 0x800742C0; // type:func -Interface_RaiseButtonAlphas = 0x800742F0; // type:func -Interface_DimButtonAlphas = 0x80074434; // type:func -Interface_UpdateHudAlphas = 0x800744F8; // type:func -func_80083108 = 0x80074BF4; // type:func -Interface_SetSceneRestrictions = 0x800759A0; // type:func -Gfx_TextureIA8 = 0x80075AF0; // type:func -Gfx_TextureI8 = 0x80075D08; // type:func -Inventory_SwapAgeEquipment = 0x80075F20; // type:func -Interface_InitHorsebackArchery = 0x8007620C; // type:func -func_800849EC = 0x8007624C; // type:func -Interface_LoadItemIcon1 = 0x800762C8; // type:func -Interface_LoadItemIcon2 = 0x80076368; // type:func -func_80084BF4 = 0x80076408; // type:func -Item_Give = 0x800764FC; // type:func -Item_CheckObtainability = 0x80077A34; // type:func -Inventory_DeleteItem = 0x80077E30; // type:func -Inventory_ReplaceItem = 0x80077EC0; // type:func -Inventory_HasEmptyBottle = 0x80077F68; // type:func -Inventory_HasSpecificBottle = 0x80077FA4; // type:func -Inventory_UpdateBottleItem = 0x80077FE0; // type:func -Inventory_ConsumeFairy = 0x80078094; // type:func -func_80086D5C = 0x8007817C; // type:func -Interface_LoadActionLabel = 0x800781B0; // type:func -Interface_SetDoAction = 0x80078304; // type:func -Interface_SetNaviCall = 0x8007837C; // type:func -Interface_LoadActionLabelB = 0x8007846C; // type:func -Health_ChangeBy = 0x80078534; // type:func -Health_GiveHearts = 0x80078620; // type:func -Rupees_ChangeBy = 0x80078640; // type:func -Inventory_ChangeAmmo = 0x80078660; // type:func -Magic_Fill = 0x8007891C; // type:func -Magic_Reset = 0x8007895C; // type:func -Magic_RequestChange = 0x80078998; // type:func -Magic_Update = 0x80078BB0; // type:func -Magic_DrawMeter = 0x80079470; // type:func -Interface_SetSubTimer = 0x80079C6C; // type:func -Interface_SetSubTimerToFinalSecond = 0x80079CB4; // type:func -Interface_SetTimer = 0x80079CF0; // type:func -Interface_DrawActionLabel = 0x80079D38; // type:func -Interface_DrawItemButtons = 0x80079E3C; // type:func -Interface_DrawItemIconTexture = 0x8007ACD4; // type:func -Interface_DrawAmmoCount = 0x8007AED0; // type:func -Interface_DrawActionButton = 0x8007B374; // type:func -Interface_InitVertices = 0x8007B578; // type:func -func_8008A8B8 = 0x8007B870; // type:func -func_8008A994 = 0x8007B954; // type:func -Interface_Draw = 0x8007B99C; // type:func -Interface_Update = 0x8007E538; // type:func -Path_GetByIndex = 0x8007F020; // type:func -Path_OrientAndGetDistSq = 0x8007F064; // type:func -Path_CopyLastPoint = 0x8007F150; // type:func -FrameAdvance_Init = 0x8007F1F0; // type:func -FrameAdvance_Update = 0x8007F200; // type:func -Player_SetBootData = 0x8007F2A0; // type:func -Player_InBlockingCsMode = 0x8007F42C; // type:func -Player_InCsMode = 0x8007F4DC; // type:func -Player_CheckHostileLockOn = 0x8007F518; // type:func -Player_IsChildWithHylianShield = 0x8007F528; // type:func -Player_ActionToModelGroup = 0x8007F550; // type:func -Player_SetModelsForHoldingShield = 0x8007F59C; // type:func -Player_SetModels = 0x8007F688; // type:func -Player_SetModelGroup = 0x8007F760; // type:func -func_8008EC70 = 0x8007F7CC; // type:func -Player_SetEquipmentData = 0x8007F804; // type:func -Player_UpdateBottleHeld = 0x8007F8F4; // type:func -Player_ReleaseLockOn = 0x8007F948; // type:func -Player_ClearZTargeting = 0x8007F964; // type:func -Player_SetAutoLockOnActor = 0x8007FA08; // type:func -func_8008EF30 = 0x8007FA8C; // type:func -func_8008EF44 = 0x8007FAA4; // type:func -Player_IsBurningStickInRange = 0x8007FAC0; // type:func -Player_GetStrength = 0x8007FB98; // type:func -Player_GetMask = 0x8007FBE4; // type:func -Player_UnsetMask = 0x8007FBF4; // type:func -Player_HasMirrorShieldEquipped = 0x8007FC04; // type:func -Player_HasMirrorShieldSetToDraw = 0x8007FC1C; // type:func -Player_ActionToMagicSpell = 0x8007FC48; // type:func -Player_HoldsHookshot = 0x8007FC74; // type:func -func_8008F128 = 0x8007FC98; // type:func -Player_ActionToMeleeWeapon = 0x8007FCCC; // type:func -Player_GetMeleeWeaponHeld = 0x8007FCF4; // type:func -Player_HoldsTwoHandedWeapon = 0x8007FD18; // type:func -Player_HoldsBrokenKnife = 0x8007FD44; // type:func -Player_ActionToBottle = 0x8007FD9C; // type:func -Player_GetBottleHeld = 0x8007FDC8; // type:func -Player_ActionToExplosive = 0x8007FDE8; // type:func -Player_GetExplosiveHeld = 0x8007FE14; // type:func -func_8008F2BC = 0x8007FE34; // type:func -Player_GetEnvironmentalHazard = 0x8007FE70; // type:func -Player_DrawImpl = 0x8007FFE8; // type:func -func_8008F87C = 0x800803AC; // type:func -Player_OverrideLimbDrawGameplayCommon = 0x800807F8; // type:func -Player_OverrideLimbDrawGameplayDefault = 0x80080B4C; // type:func -Player_OverrideLimbDrawGameplayFirstPerson = 0x80080E38; // type:func -Player_OverrideLimbDrawGameplayCrawling = 0x80080F88; // type:func -func_80090480 = 0x80080FCC; // type:func -Player_UpdateShieldCollider = 0x80081154; // type:func -func_800906D4 = 0x80081228; // type:func -Player_DrawGetItemImpl = 0x80081338; // type:func -Player_DrawGetItem = 0x800814CC; // type:func -func_80090A28 = 0x80081544; // type:func -Player_DrawHookshotReticle = 0x80081618; // type:func -Player_PostLimbDrawGameplay = 0x800817FC; // type:func -Player_InitPauseDrawData = 0x80082164; // type:func -Player_OverrideLimbDrawPause = 0x80082290; // type:func -Player_DrawPauseImpl = 0x80082434; // type:func -Player_DrawPause = 0x80082B38; // type:func -func_80092320 = 0x80082D10; // type:func -PreNMI_Update = 0x80082D24; // type:func -PreNMI_Draw = 0x80082D6C; // type:func -PreNMI_Main = 0x80082E28; // type:func -PreNMI_Destroy = 0x80082E5C; // type:func -PreNMI_Init = 0x80082E68; // type:func -Quake_AddVecGeoToVec3f = 0x80082EB0; // type:func -Quake_UpdateShakeInfo = 0x80082F30; // type:func -Quake_CallbackType1 = 0x80083158; // type:func -Quake_CallbackType5 = 0x800831E0; // type:func -Quake_CallbackType6 = 0x80083254; // type:func -Quake_CallbackType3 = 0x800832D8; // type:func -Quake_CallbackType2 = 0x80083370; // type:func -Quake_CallbackType4 = 0x800833E0; // type:func -Quake_GetFreeIndex = 0x80083478; // type:func -Quake_RequestImpl = 0x800834DC; // type:func -Quake_Remove = 0x80083594; // type:func -Quake_GetRequest = 0x800835BC; // type:func -Quake_SetValue = 0x80083618; // type:func -Quake_SetSpeed = 0x80083748; // type:func -Quake_SetDuration = 0x80083790; // type:func -Quake_GetTimeLeft = 0x800837E0; // type:func -Quake_SetPerturbations = 0x80083818; // type:func -Quake_SetOrientation = 0x80083880; // type:func -Quake_Init = 0x800838E8; // type:func -Quake_Request = 0x8008393C; // type:func -Quake_RemoveRequest = 0x80083960; // type:func -Quake_Update = 0x800839A8; // type:func -Gfx_SetFog = 0x80083D20; // type:func -Gfx_SetFogWithSync = 0x80083E9C; // type:func -Gfx_SetFog2 = 0x8008402C; // type:func -Gfx_SetupDLImpl = 0x80084060; // type:func -Gfx_SetupDL = 0x8008409C; // type:func -Gfx_SetupDLAtPtr = 0x800840BC; // type:func -Gfx_SetupDL_57 = 0x800840E8; // type:func -Gfx_SetupDL_57b = 0x80084110; // type:func -Gfx_SetupDL_52NoCD = 0x80084138; // type:func -Gfx_SetupDL_58Opa = 0x8008417C; // type:func -Gfx_SetupDL_57Opa = 0x800841A4; // type:func -Gfx_SetupDL_50Opa = 0x800841CC; // type:func -Gfx_SetupDL_51Opa = 0x800841F4; // type:func -Gfx_SetupDL_52Xlu = 0x8008421C; // type:func -Gfx_SetupDL_53Opa = 0x80084244; // type:func -Gfx_SetupDL_54Opa = 0x8008426C; // type:func -Gfx_SetupDL_55Xlu = 0x80084294; // type:func -Gfx_SetupDL_26Opa = 0x800842BC; // type:func -Gfx_SetupDL_25Xlu2 = 0x800842E4; // type:func -func_80093C80 = 0x8008430C; // type:func -Gfx_SetupDL_25Opa = 0x80084378; // type:func -Gfx_SetupDL_25Xlu = 0x800843A0; // type:func -Gfx_SetupDL_31Opa = 0x800843C8; // type:func -Gfx_SetupDL_32Opa = 0x800843F0; // type:func -Gfx_SetupDL_33Opa = 0x80084418; // type:func -Gfx_SetupDL_64 = 0x80084440; // type:func -Gfx_SetupDL_34 = 0x80084468; // type:func -Gfx_SetupDL_34Opa = 0x80084490; // type:func -Gfx_SetupDL_35Opa = 0x800844BC; // type:func -Gfx_SetupDL_44Xlu = 0x800844E4; // type:func -Gfx_SetupDL_36Opa = 0x8008450C; // type:func -Gfx_SetupDL_28 = 0x80084534; // type:func -Gfx_SetupDL_28Opa = 0x8008455C; // type:func -Gfx_SetupDL_43Opa = 0x80084584; // type:func -Gfx_SetupDL_45Opa = 0x800845AC; // type:func -Gfx_SetupDL_46Overlay = 0x800845D4; // type:func -Gfx_SetupDL_38Xlu = 0x800845FC; // type:func -Gfx_SetupDL_4Xlu = 0x80084624; // type:func -Gfx_SetupDL_37Opa = 0x8008464C; // type:func -Gfx_SetupDL_2Opa = 0x80084674; // type:func -Gfx_SetupDL_39 = 0x8008469C; // type:func -Gfx_SetupDL_39Opa = 0x800846C4; // type:func -Gfx_SetupDL_39Overlay = 0x800846F0; // type:func -Gfx_SetupDL_39Ptr = 0x8008471C; // type:func -Gfx_SetupDL_40Opa = 0x80084748; // type:func -Gfx_SetupDL_41Opa = 0x80084770; // type:func -Gfx_SetupDL_47Xlu = 0x80084798; // type:func -Gfx_SetupDL_66 = 0x800847C0; // type:func -Gfx_SetupDL_67 = 0x800847E8; // type:func -Gfx_SetupDL_68NoCD = 0x80084810; // type:func -Gfx_SetupDL_69NoCD = 0x80084854; // type:func -func_800947AC = 0x80084898; // type:func -Gfx_SetupDL_70 = 0x800848DC; // type:func -Gfx_SetupDL_20NoCD = 0x80084904; // type:func -Gfx_SetupDL_42Opa = 0x80084948; // type:func -Gfx_SetupDL_42Overlay = 0x80084970; // type:func -Gfx_SetupDL_48Opa = 0x80084998; // type:func -Gfx_SetupDL_49Xlu = 0x800849C0; // type:func -Gfx_SetupDL_27Xlu = 0x800849E8; // type:func -Gfx_SetupDL_60NoCDXlu = 0x80084A10; // type:func -Gfx_SetupDL_61Xlu = 0x80084A58; // type:func -Gfx_SetupDL_56Opa = 0x80084A80; // type:func -Gfx_SetupDL_56Ptr = 0x80084AA8; // type:func -Gfx_SetupDL_59Opa = 0x80084AD4; // type:func -Gfx_BranchTexScroll = 0x80084AFC; // type:func -func_80094E54 = 0x80084BA0; // type:func -func_80094E78 = 0x80084BC4; // type:func -Gfx_TexScroll = 0x80084BE8; // type:func -Gfx_TwoTexScroll = 0x80084C6C; // type:func -Gfx_TwoTexScrollEnvColor = 0x80084D8C; // type:func -Gfx_EnvColor = 0x80084EEC; // type:func -Gfx_SetupFrame = 0x80084F44; // type:func -func_80095974 = 0x800854FC; // type:func -func_80095AA0 = 0x800855E0; // type:func -Room_DrawNormal = 0x800855F8; // type:func -Room_DrawCullable = 0x80085814; // type:func -Room_DecodeJpeg = 0x80085CDC; // type:func -Room_DrawBackground2D = 0x80085D64; // type:func -Room_DrawImageSingle = 0x80086060; // type:func -Room_GetImageMultiBgEntry = 0x80086430; // type:func -Room_DrawImageMulti = 0x8008651C; // type:func -Room_DrawImage = 0x800868EC; // type:func -Room_Init = 0x80086954; // type:func -Room_SetupFirstRoom = 0x8008696C; // type:func -Room_RequestNewRoom = 0x80086B08; // type:func -Room_ProcessRoomRequest = 0x80086C40; // type:func -Room_Draw = 0x80086CE4; // type:func -Room_FinishRoomChange = 0x80086D34; // type:func -Sample_HandleStateChange = 0x80086DD0; // type:func -Sample_Draw = 0x80086E04; // type:func -Sample_Main = 0x80086FF0; // type:func -Sample_Destroy = 0x8008701C; // type:func -Sample_SetupView = 0x80087028; // type:func -Sample_LoadTitleStatic = 0x800870E0; // type:func -Sample_Init = 0x80087140; // type:func -Inventory_ChangeEquipment = 0x800871D0; // type:func -Inventory_DeleteEquipment = 0x80087228; // type:func -Inventory_ChangeUpgrade = 0x80087334; // type:func -Object_SpawnPersistent = 0x80087390; // type:func -Object_InitContext = 0x80087474; // type:func -Object_UpdateEntries = 0x800875D0; // type:func -Object_GetSlot = 0x800876C8; // type:func -Object_IsLoaded = 0x80087728; // type:func -func_800981B8 = 0x80087758; // type:func -func_800982FC = 0x800877E0; // type:func -Scene_ExecuteCommands = 0x80087840; // type:func -Scene_CommandPlayerEntryList = 0x800878C4; // type:func -Scene_CommandActorEntryList = 0x800879A0; // type:func -Scene_CommandUnused2 = 0x800879F8; // type:func -Scene_CommandCollisionHeader = 0x80087A40; // type:func -Scene_CommandRoomList = 0x80087B70; // type:func -Scene_CommandSpawnList = 0x80087BC8; // type:func -Scene_CommandSpecialFiles = 0x80087C10; // type:func -Scene_CommandRoomBehavior = 0x80087CD8; // type:func -Scene_CommandRoomShape = 0x80087D30; // type:func -Scene_CommandObjectList = 0x80087D78; // type:func -Scene_CommandLightList = 0x80087F2C; // type:func -Scene_CommandPathList = 0x80087FDC; // type:func -Scene_CommandTransitionActorEntryList = 0x80088024; // type:func -Scene_ResetTransitionActorList = 0x8008807C; // type:func -Scene_CommandLightSettingsList = 0x8008808C; // type:func -Scene_CommandSkyboxSettings = 0x800880E4; // type:func -Scene_CommandSkyboxDisables = 0x80088128; // type:func -Scene_CommandTimeSettings = 0x80088150; // type:func -Scene_CommandWindSettings = 0x80088464; // type:func -Scene_CommandExitList = 0x800884C8; // type:func -Scene_CommandUndefined9 = 0x80088510; // type:func -Scene_CommandSoundSettings = 0x80088520; // type:func -Scene_CommandEchoSettings = 0x8008856C; // type:func -Scene_CommandAlternateHeaderList = 0x80088584; // type:func -Scene_CommandCutsceneData = 0x80088680; // type:func -Scene_CommandMiscSettings = 0x800886C0; // type:func -Scene_SetTransitionForNextEntrance = 0x80088784; // type:func -Scene_DrawConfigDefault = 0x80088840; // type:func -Scene_DrawConfigDekuTree = 0x80088880; // type:func -Scene_DrawConfigDekuTreeBoss = 0x800889C8; // type:func -Scene_DrawConfigDodongosCavern = 0x80088AAC; // type:func -Scene_DrawConfigTempleOfTime = 0x80088DD4; // type:func -Scene_DrawConfigGrottos = 0x800895EC; // type:func -Scene_DrawConfigChamberOfTheSages = 0x800898FC; // type:func -Scene_DrawConfigGreatFairyFountain = 0x80089B20; // type:func -Scene_DrawConfigGraveExitLightShining = 0x80089CB8; // type:func -Scene_DrawConfigFairysFountain = 0x80089D90; // type:func -Scene_DrawConfigShadowTempleAndWell = 0x80089EF4; // type:func -Scene_DrawConfigThievesHideout = 0x8008A080; // type:func -Scene_DrawConfigWaterTemple = 0x8008A168; // type:func -Scene_DrawConfigWaterTempleBoss = 0x8008A8D8; // type:func -Scene_DrawConfigShootingGallery = 0x8008A9F8; // type:func -Scene_DrawConfigCastleCourtyardGuards = 0x8008AAAC; // type:func -Scene_DrawConfigOutsideGanonsCastle = 0x8008AC24; // type:func -func_8009BEEC = 0x8008AEC0; // type:func -Scene_DrawConfigGanonsTowerCollapseExterior = 0x8008B080; // type:func -Scene_DrawConfigIceCavern = 0x8008B38C; // type:func -Scene_DrawConfigRoyalFamilysTomb = 0x8008B57C; // type:func -Scene_DrawConfigLakesideLaboratory = 0x8008B800; // type:func -Scene_DrawConfigCalmWater = 0x8008B9E0; // type:func -Scene_DrawConfigGerudoTrainingGround = 0x8008BAE8; // type:func -Gfx_TwoTexScrollPrimColor = 0x8008BCD8; // type:func -Scene_DrawConfigFishingPond = 0x8008BE38; // type:func -Scene_DrawConfigBombchuBowlingAlley = 0x8008BF64; // type:func -Scene_DrawConfigLonLonBuildings = 0x8008C168; // type:func -Scene_DrawConfigMarketGuardHouse = 0x8008C238; // type:func -Scene_DrawConfigPotionShopGranny = 0x8008C368; // type:func -Scene_DrawConfigForestTemple = 0x8008C4E0; // type:func -Scene_DrawConfigSpiritTemple = 0x8008C6D0; // type:func -Scene_DrawConfigHyruleField = 0x8008C740; // type:func -Scene_DrawConfigKakarikoVillage = 0x8008CA3C; // type:func -Scene_DrawConfigZorasRiver = 0x8008CB0C; // type:func -Scene_DrawConfigKokiriForest = 0x8008CD24; // type:func -Scene_DrawConfigLakeHylia = 0x8008D188; // type:func -Scene_DrawConfigZorasDomain = 0x8008D348; // type:func -Scene_DrawConfigZorasFountain = 0x8008D4A4; // type:func -Scene_DrawConfigGerudoValley = 0x8008D694; // type:func -Scene_DrawConfigLostWoods = 0x8008D9D0; // type:func -Scene_DrawConfigDesertColossus = 0x8008DBCC; // type:func -Scene_DrawConfigGerudosFortress = 0x8008DCD8; // type:func -Scene_DrawConfigHauntedWasteland = 0x8008DD48; // type:func -Scene_DrawConfigHyruleCastle = 0x8008DEC0; // type:func -Scene_DrawConfigDeathMountainTrail = 0x8008E064; // type:func -Scene_DrawConfigDeathMountainCrater = 0x8008E228; // type:func -Scene_DrawConfigGoronCity = 0x8008E3F4; // type:func -Scene_DrawConfigLonLonRanch = 0x8008E564; // type:func -Scene_DrawConfigFireTemple = 0x8008E634; // type:func -Scene_DrawConfigJabuJabu = 0x8008E7D8; // type:func -Scene_DrawConfigInsideGanonsCastle = 0x8008EC84; // type:func -Scene_DrawConfigInsideGanonsCastleCollapse = 0x8008EE88; // type:func -Scene_DrawConfigGanonsTowerCollapseInterior = 0x8008EEA8; // type:func -Scene_DrawConfigBesitu = 0x8008EEC8; // type:func -Scene_Draw = 0x8008F000; // type:func -SkelAnime_DrawLimbLod = 0x8008F040; // type:func -SkelAnime_DrawLod = 0x8008F2A8; // type:func -SkelAnime_DrawFlexLimbLod = 0x8008F498; // type:func -SkelAnime_DrawFlexLod = 0x8008F728; // type:func -SkelAnime_DrawLimbOpa = 0x8008F9A0; // type:func -SkelAnime_DrawOpa = 0x8008FBEC; // type:func -SkelAnime_DrawFlexLimbOpa = 0x8008FDCC; // type:func -SkelAnime_DrawFlexOpa = 0x80090044; // type:func -SkelAnime_GetFrameData = 0x800902A8; // type:func -Animation_GetLength = 0x80090410; // type:func -Animation_GetLastFrame = 0x8009044C; // type:func -SkelAnime_DrawLimb = 0x80090494; // type:func -SkelAnime_Draw = 0x800906D4; // type:func -SkelAnime_DrawFlexLimb = 0x800908C4; // type:func -SkelAnime_DrawFlex = 0x80090B54; // type:func -SkelAnime_GetFrameDataLegacy = 0x80090DBC; // type:func -Animation_GetLimbCountLegacy = 0x800911C0; // type:func -Animation_GetLengthLegacy = 0x800911FC; // type:func -Animation_GetLastFrameLegacy = 0x80091238; // type:func -SkelAnime_InterpFrameTable = 0x80091280; // type:func -AnimTaskQueue_Reset = 0x80091700; // type:func -AnimTaskQueue_SetNextGroup = 0x8009170C; // type:func -AnimTaskQueue_DisableTransformTasksForGroup = 0x8009172C; // type:func -AnimTaskQueue_NewTask = 0x80091754; // type:func -AnimTaskQueue_AddLoadPlayerFrame = 0x8009178C; // type:func -AnimTaskQueue_AddCopy = 0x80091888; // type:func -AnimTaskQueue_AddInterp = 0x800918F0; // type:func -AnimTaskQueue_AddCopyUsingMap = 0x80091960; // type:func -AnimTaskQueue_AddCopyUsingMapInverted = 0x800919D0; // type:func -AnimTaskQueue_AddActorMovement = 0x80091A40; // type:func -AnimTask_LoadPlayerFrame = 0x80091A9C; // type:func -AnimTask_Copy = 0x80091ACC; // type:func -AnimTask_Interp = 0x80091B3C; // type:func -AnimTask_CopyUsingMap = 0x80091B98; // type:func -AnimTask_CopyUsingMapInverted = 0x80091C18; // type:func -AnimTask_ActorMovement = 0x80091C9C; // type:func -AnimTaskQueue_Update = 0x80091D30; // type:func -SkelAnime_InitLink = 0x80091DD0; // type:func -LinkAnimation_SetUpdateFunction = 0x80091F34; // type:func -LinkAnimation_Update = 0x80091F6C; // type:func -LinkAnimation_Morph = 0x80091F90; // type:func -LinkAnimation_AnimateFrame = 0x8009204C; // type:func -LinkAnimation_Loop = 0x80092128; // type:func -LinkAnimation_Once = 0x800921C8; // type:func -Animation_SetMorph = 0x800922A4; // type:func -LinkAnimation_Change = 0x800922C8; // type:func -LinkAnimation_PlayOnce = 0x80092440; // type:func -LinkAnimation_PlayOnceSetSpeed = 0x800924A0; // type:func -LinkAnimation_PlayLoop = 0x80092504; // type:func -LinkAnimation_PlayLoopSetSpeed = 0x80092560; // type:func -LinkAnimation_CopyJointToMorph = 0x800925C0; // type:func -LinkAnimation_CopyMorphToJoint = 0x800925F0; // type:func -LinkAnimation_LoadToMorph = 0x80092620; // type:func -LinkAnimation_LoadToJoint = 0x80092664; // type:func -LinkAnimation_InterpJointMorph = 0x800926A8; // type:func -LinkAnimation_BlendToJoint = 0x800926E0; // type:func -LinkAnimation_BlendToMorph = 0x80092780; // type:func -LinkAnimation_EndLoop = 0x80092820; // type:func -Animation_OnFrameImpl = 0x80092844; // type:func -LinkAnimation_OnFrame = 0x800928FC; // type:func -SkelAnime_Init = 0x8009294C; // type:func -SkelAnime_InitFlex = 0x80092A50; // type:func -SkelAnime_InitSkin = 0x80092B5C; // type:func -SkelAnime_SetUpdate = 0x80092C3C; // type:func -SkelAnime_Update = 0x80092C88; // type:func -SkelAnime_Morph = 0x80092CAC; // type:func -SkelAnime_MorphTaper = 0x80092D6C; // type:func -SkelAnime_AnimateFrame = 0x80092EF4; // type:func -SkelAnime_LoopFull = 0x8009303C; // type:func -SkelAnime_LoopPartial = 0x800930DC; // type:func -SkelAnime_Once = 0x80093184; // type:func -Animation_ChangeImpl = 0x80093288; // type:func -Animation_Change = 0x80093444; // type:func -Animation_PlayOnce = 0x8009348C; // type:func -Animation_MorphToPlayOnce = 0x800934E4; // type:func -Animation_PlayOnceSetSpeed = 0x80093540; // type:func -Animation_PlayLoop = 0x8009359C; // type:func -Animation_MorphToLoop = 0x800935F0; // type:func -Animation_PlayLoopSetSpeed = 0x80093628; // type:func -Animation_EndLoop = 0x80093680; // type:func -Animation_Reverse = 0x800936AC; // type:func -SkelAnime_CopyFrameTableTrue = 0x800936D0; // type:func -SkelAnime_CopyFrameTableFalse = 0x80093738; // type:func -SkelAnime_UpdateTranslation = 0x800937A4; // type:func -Animation_OnFrame = 0x80093970; // type:func -SkelAnime_Free = 0x80093998; // type:func -SkelAnime_CopyFrameTable = 0x800939E4; // type:func -Skin_UpdateVertices = 0x80093A30; // type:func -Skin_ApplyLimbModifications = 0x80093BFC; // type:func -Skin_DrawAnimatedLimb = 0x80094068; // type:func -Skin_DrawLimb = 0x80094144; // type:func -Skin_DrawImpl = 0x8009426C; // type:func -func_800A6330 = 0x80094498; // type:func -func_800A6360 = 0x800944C8; // type:func -func_800A6394 = 0x800944FC; // type:func -func_800A63CC = 0x80094534; // type:func -Skin_GetLimbPos = 0x80094570; // type:func -Skin_InitAnimatedLimb = 0x800945D0; // type:func -Skin_Init = 0x800947AC; // type:func -Skin_Free = 0x8009497C; // type:func -func_800A698C = 0x80094A50; // type:func -Skin_ApplyAnimTransformations = 0x80094B8C; // type:func -SkinMatrix_Vec3fMtxFMultXYZW = 0x80094EE0; // type:func -SkinMatrix_Vec3fMtxFMultXYZ = 0x80094FC8; // type:func -SkinMatrix_MtxFMtxFMult = 0x80095078; // type:func -SkinMatrix_GetClear = 0x800953D4; // type:func -SkinMatrix_Clear = 0x800953E8; // type:func -SkinMatrix_MtxFCopy = 0x80095440; // type:func -SkinMatrix_Invert = 0x800954C8; // type:func -SkinMatrix_SetScale = 0x80095768; // type:func -SkinMatrix_SetRotateZYX = 0x800957CC; // type:func -SkinMatrix_SetRotateYXZ = 0x8009595C; // type:func -SkinMatrix_SetTranslate = 0x80095AEC; // type:func -SkinMatrix_SetTranslateRotateZYXScale = 0x80095B50; // type:func -SkinMatrix_SetTranslateRotateYXZScale = 0x80095BD4; // type:func -SkinMatrix_SetTranslateRotateZYX = 0x80095C58; // type:func -SkinMatrix_Vec3fToVec3s = 0x80095CB8; // type:func -SkinMatrix_Vec3sToVec3f = 0x80095CFC; // type:func -SkinMatrix_MtxFToMtx = 0x80095D40; // type:func -SkinMatrix_MtxFToNewMtx = 0x80095F58; // type:func -SkinMatrix_SetRotateAxis = 0x80095FA0; // type:func -func_800A8030 = 0x80096110; // type:func -Sram_InitNewSave = 0x800962D0; // type:func -Sram_InitDebugSave = 0x80096420; // type:func -Sram_OpenSave = 0x800965E8; // type:func -Sram_WriteSave = 0x80096934; // type:func -Sram_VerifyAndLoadAllSaves = 0x80096A78; // type:func -Sram_InitSave = 0x80096F04; // type:func -Sram_EraseSave = 0x800971CC; // type:func -Sram_CopySave = 0x800972E0; // type:func -Sram_WriteSramHeader = 0x80097504; // type:func -Sram_InitSram = 0x80097530; // type:func -Sram_Alloc = 0x800975F4; // type:func -Sram_Init = 0x80097624; // type:func -SsSram_Init = 0x80097630; // type:func -SsSram_Dma = 0x80097708; // type:func -SsSram_ReadWrite = 0x80097794; // type:func -Rumble_Update = 0x80097800; // type:func -Rumble_Override = 0x8009783C; // type:func -Rumble_Request = 0x800978D8; // type:func -Rumble_Init = 0x80097994; // type:func -Rumble_Destroy = 0x800979D0; // type:func -Rumble_Controller1HasRumblePak = 0x80097A28; // type:func -Rumble_Reset = 0x80097A40; // type:func -Rumble_ClearRequests = 0x80097A54; // type:func -Rumble_SetUpdateEnabled = 0x80097A64; // type:func -View_ViewportToVp = 0x80097A80; // type:func -View_New = 0x80097AEC; // type:func -View_Free = 0x80097B38; // type:func -View_Init = 0x80097B58; // type:func -View_LookAt = 0x80097C18; // type:func -View_LookAtUnsafe = 0x80097CB4; // type:func -View_SetScale = 0x80097D04; // type:func -View_GetScale = 0x80097D24; // type:func -View_SetPerspective = 0x80097D34; // type:func -View_GetPerspective = 0x80097D64; // type:func -View_SetOrtho = 0x80097D84; // type:func -View_GetOrtho = 0x80097DC0; // type:func -View_SetViewport = 0x80097DE0; // type:func -View_GetViewport = 0x80097E14; // type:func -View_ApplyLetterbox = 0x80097E3C; // type:func -View_SetDistortionOrientation = 0x80097F7C; // type:func -View_SetDistortionScale = 0x80097FA0; // type:func -View_SetDistortionSpeed = 0x80097FC4; // type:func -View_InitDistortion = 0x80097FD8; // type:func -View_ClearDistortion = 0x8009803C; // type:func -View_SetDistortion = 0x80098070; // type:func -View_StepDistortion = 0x800980C4; // type:func -View_Apply = 0x8009827C; // type:func -View_ApplyPerspective = 0x800982C8; // type:func -View_ApplyOrtho = 0x800985BC; // type:func -View_ApplyOrthoToOverlay = 0x80098768; // type:func -View_ApplyPerspectiveToOverlay = 0x8009899C; // type:func -View_UpdateViewingMatrix = 0x80098CEC; // type:func -View_ApplyTo = 0x80098D58; // type:func -ViMode_LogPrint = 0x80099180; // type:func -ViMode_Configure = 0x8009918C; // type:func -ViMode_Save = 0x80099734; // type:func -ViMode_Load = 0x80099814; // type:func -ViMode_Init = 0x8009989C; // type:func -ViMode_Destroy = 0x80099904; // type:func -ViMode_ConfigureFeatures = 0x80099910; // type:func -ViMode_Update = 0x80099974; // type:func -VisCvg_Init = 0x80099CF0; // type:func -VisCvg_Destroy = 0x80099D14; // type:func -VisCvg_Draw = 0x80099D20; // type:func -VisMono_Init = 0x80099E90; // type:func -VisMono_Destroy = 0x80099EE0; // type:func -VisMono_DesaturateTLUT = 0x80099F04; // type:func -VisMono_DesaturateDList = 0x8009A218; // type:func -VisMono_Draw = 0x8009A448; // type:func -VisMono_DrawOld = 0x8009A63C; // type:func -VisZBuf_Init = 0x8009A6B0; // type:func -VisZBuf_Destroy = 0x8009A6E4; // type:func -VisZBuf_Draw = 0x8009A6F0; // type:func -Skybox_CalculateFace256 = 0x8009A940; // type:func -Skybox_CalculateFace128 = 0x8009B050; // type:func -Skybox_Calculate256 = 0x8009BD58; // type:func -Skybox_Calculate128 = 0x8009BF08; // type:func -Skybox_Setup = 0x8009BFA8; // type:func -Skybox_Init = 0x8009D0FC; // type:func -Skybox_UpdateMatrix = 0x8009D210; // type:func -Skybox_Draw = 0x8009D298; // type:func -Skybox_Update = 0x8009D8E0; // type:func -PlayerCall_InitFuncPtrs = 0x8009D8F0; // type:func -PlayerCall_Init = 0x8009D958; // type:func -PlayerCall_Destroy = 0x8009D9A0; // type:func -PlayerCall_Update = 0x8009D9E0; // type:func -PlayerCall_Draw = 0x8009DA20; // type:func -TransitionTile_InitGraphics = 0x8009DA60; // type:func -TransitionTile_InitVtxData = 0x8009DE2C; // type:func -TransitionTile_Destroy = 0x8009DEEC; // type:func -TransitionTile_Init = 0x8009DF78; // type:func -TransitionTile_SetVtx = 0x8009E0F0; // type:func -TransitionTile_Draw = 0x8009E204; // type:func -TransitionTile_Suck = 0x8009E330; // type:func -TransitionTile_Update = 0x8009E464; // type:func -func_800B23F0 = 0x8009E470; // type:func -TransitionTriforce_Start = 0x8009E480; // type:func -TransitionTriforce_Init = 0x8009E4B8; // type:func -TransitionTriforce_Destroy = 0x8009E558; // type:func -TransitionTriforce_Update = 0x8009E564; // type:func -TransitionTriforce_SetColor = 0x8009E678; // type:func -TransitionTriforce_SetType = 0x8009E684; // type:func -TransitionTriforce_SetState = 0x8009E690; // type:func -TransitionTriforce_Draw = 0x8009E69C; // type:func -TransitionTriforce_IsDone = 0x8009E9AC; // type:func -TransitionWipe_Start = 0x8009EA40; // type:func -TransitionWipe_Init = 0x8009EAF8; // type:func -TransitionWipe_Destroy = 0x8009EB24; // type:func -TransitionWipe_Update = 0x8009EB30; // type:func -TransitionWipe_Draw = 0x8009EC10; // type:func -TransitionWipe_IsDone = 0x8009EE4C; // type:func -TransitionWipe_SetType = 0x8009EE58; // type:func -TransitionWipe_SetColor = 0x8009EE98; // type:func -TransitionWipe_SetUnkColor = 0x8009EEA4; // type:func -TransitionCircle_Start = 0x8009EEB0; // type:func -TransitionCircle_Init = 0x8009F09C; // type:func -TransitionCircle_Destroy = 0x8009F0C8; // type:func -TransitionCircle_Update = 0x8009F0D4; // type:func -TransitionCircle_Draw = 0x8009F258; // type:func -TransitionCircle_IsDone = 0x8009F4F4; // type:func -TransitionCircle_SetType = 0x8009F500; // type:func -TransitionCircle_SetColor = 0x8009F558; // type:func -TransitionCircle_SetUnkColor = 0x8009F564; // type:func -TransitionFade_Start = 0x8009F570; // type:func -TransitionFade_Init = 0x8009F5CC; // type:func -TransitionFade_Destroy = 0x8009F5F8; // type:func -TransitionFade_Update = 0x8009F604; // type:func -TransitionFade_Draw = 0x8009F794; // type:func -TransitionFade_IsDone = 0x8009F860; // type:func -TransitionFade_SetColor = 0x8009F86C; // type:func -TransitionFade_SetType = 0x8009F878; // type:func -Letterbox_SetSizeTarget = 0x8009F8D0; // type:func -Letterbox_GetSizeTarget = 0x8009F8E0; // type:func -Letterbox_SetSize = 0x8009F8F0; // type:func -Letterbox_GetSize = 0x8009F900; // type:func -Letterbox_Init = 0x8009F910; // type:func -Letterbox_Destroy = 0x8009F930; // type:func -Letterbox_Update = 0x8009F940; // type:func -func_800BB0A0 = 0x8009FA40; // type:func -func_800BB2B4 = 0x8009FC54; // type:func -KaleidoManager_LoadOvl = 0x8009FF10; // type:func -KaleidoManager_ClearOvl = 0x8009FF6C; // type:func -KaleidoManager_Init = 0x8009FFBC; // type:func -KaleidoManager_Destroy = 0x800A002C; // type:func -KaleidoManager_GetRamAddr = 0x800A006C; // type:func -KaleidoScopeCall_LoadPlayer = 0x800A0140; // type:func -KaleidoScopeCall_Init = 0x800A018C; // type:func -KaleidoScopeCall_Destroy = 0x800A01D8; // type:func -KaleidoScopeCall_Update = 0x800A01F8; // type:func -KaleidoScopeCall_Draw = 0x800A0398; // type:func -Play_RequestViewpointBgCam = 0x800A0420; // type:func -Play_SetViewpoint = 0x800A0460; // type:func -Play_CheckViewpoint = 0x800A050C; // type:func -Play_SetShopBrowsingViewpoint = 0x800A0534; // type:func -Play_SetupTransition = 0x800A0560; // type:func -func_800BC88C = 0x800A080C; // type:func -Play_SetFog = 0x800A0824; // type:func -Play_Destroy = 0x800A0870; // type:func -Play_Init = 0x800A09DC; // type:func -Play_Update = 0x800A1158; // type:func -Play_DrawOverlayElements = 0x800A224C; // type:func -Play_Draw = 0x800A22E4; // type:func -Play_Main = 0x800A2D28; // type:func -Play_InCsMode = 0x800A2D68; // type:func -func_800BFCB8 = 0x800A2D9C; // type:func -Play_LoadFile = 0x800A2F48; // type:func -Play_InitEnvironment = 0x800A2FA4; // type:func -Play_InitScene = 0x800A2FEC; // type:func -Play_SpawnScene = 0x800A30F0; // type:func -Play_GetScreenPos = 0x800A3198; // type:func -Play_CreateSubCamera = 0x800A325C; // type:func -Play_GetActiveCamId = 0x800A330C; // type:func -Play_ChangeCameraStatus = 0x800A3318; // type:func -Play_ClearCamera = 0x800A3388; // type:func -Play_ClearAllSubCameras = 0x800A33F0; // type:func -Play_GetCamera = 0x800A345C; // type:func -Play_SetCameraAtEye = 0x800A3494; // type:func -Play_SetCameraAtEyeUp = 0x800A35A4; // type:func -Play_SetCameraFov = 0x800A36C8; // type:func -Play_SetCameraRoll = 0x800A3710; // type:func -Play_CopyCamera = 0x800A375C; // type:func -Play_InitCameraDataUsingPlayer = 0x800A37D8; // type:func -Play_RequestCameraSetting = 0x800A3848; // type:func -Play_ReturnToMainCam = 0x800A3884; // type:func -Play_GetCameraUID = 0x800A3960; // type:func -func_800C09D8 = 0x800A3994; // type:func -Play_SaveSceneFlags = 0x800A3A00; // type:func -Play_SetRespawnData = 0x800A3A48; // type:func -Play_SetupRespawnPoint = 0x800A3AB8; // type:func -Play_TriggerVoidOut = 0x800A3B24; // type:func -Play_LoadToLastEntrance = 0x800A3B7C; // type:func -Play_TriggerRespawn = 0x800A3C50; // type:func -Play_CamIsNotFixed = 0x800A3C84; // type:func -FrameAdvance_IsEnabled = 0x800A3CF4; // type:func -func_800C0D34 = 0x800A3D04; // type:func -func_800C0DB4 = 0x800A3D84; // type:func -PreRender_SetValuesSave = 0x800A3E40; // type:func -PreRender_Init = 0x800A3E7C; // type:func -PreRender_SetValues = 0x800A3EB0; // type:func -PreRender_Destroy = 0x800A3EE4; // type:func -PreRender_CopyImage = 0x800A3F08; // type:func -PreRender_CopyImageRegionImpl = 0x800A41D0; // type:func -func_800C170C = 0x800A4618; // type:func -func_800C1AE8 = 0x800A4994; // type:func -PreRender_CoverageRgba16ToI8 = 0x800A49D0; // type:func -PreRender_SaveZBuffer = 0x800A4CE8; // type:func -PreRender_SaveFramebuffer = 0x800A4D20; // type:func -PreRender_FetchFbufCoverage = 0x800A4D58; // type:func -PreRender_DrawCoverage = 0x800A4E70; // type:func -PreRender_RestoreZBuffer = 0x800A4EB4; // type:func -func_800C213C = 0x800A4ED8; // type:func -PreRender_RestoreFramebuffer = 0x800A5208; // type:func -PreRender_CopyImageRegion = 0x800A522C; // type:func -PreRender_AntiAliasFilter = 0x800A524C; // type:func -PreRender_DivotFilter = 0x800A5D0C; // type:func -PreRender_ApplyFilters = 0x800A5E60; // type:func -THGA_Init = 0x800A5F30; // type:func -THGA_Destroy = 0x800A5F50; // type:func -THGA_IsCrash = 0x800A5F70; // type:func -THGA_Reset = 0x800A5F90; // type:func -THGA_GetRemaining = 0x800A5FB0; // type:func -THGA_GetHead = 0x800A5FD0; // type:func -THGA_SetHead = 0x800A5FF0; // type:func -THGA_GetTail = 0x800A6010; // type:func -THGA_AllocDisplayList = 0x800A6030; // type:func -THGA_AllocGfx = 0x800A6054; // type:func -THGA_AllocGfx2 = 0x800A6074; // type:func -THGA_AllocTail = 0x800A6094; // type:func -THGA_AllocMtxArray = 0x800A60B4; // type:func -THGA_AllocMtx = 0x800A60D8; // type:func -THGA_AllocVtxArray = 0x800A60F8; // type:func -THGA_AllocVtx = 0x800A611C; // type:func -THA_GetHead = 0x800A6140; // type:func -THA_SetHead = 0x800A614C; // type:func -THA_GetTail = 0x800A6158; // type:func -THA_AllocHead = 0x800A6164; // type:func -THA_AllocHeadByte = 0x800A6178; // type:func -THA_AllocTail = 0x800A6198; // type:func -THA_AllocTailAlign16 = 0x800A6228; // type:func -THA_AllocTailAlign = 0x800A6248; // type:func -THA_GetRemaining = 0x800A6264; // type:func -THA_IsCrash = 0x800A6278; // type:func -THA_Reset = 0x800A629C; // type:func -THA_Init = 0x800A62B8; // type:func -THA_Destroy = 0x800A62DC; // type:func -AudioMgr_StopAllSfx = 0x800A6300; // type:func -AudioMgr_NotifyTaskDone = 0x800A6350; // type:func -AudioMgr_HandleRetrace = 0x800A6388; // type:func -AudioMgr_HandlePreNMI = 0x800A6510; // type:func -AudioMgr_ThreadEntry = 0x800A6534; // type:func -AudioMgr_WaitForInit = 0x800A6664; // type:func -AudioMgr_Init = 0x800A6690; // type:func -Setup_InitImpl = 0x800A6760; // type:func -Setup_Destroy = 0x800A679C; // type:func -Setup_Init = 0x800A67A8; // type:func -GameState_SetFBFilter = 0x800A67D0; // type:func -func_800C4344 = 0x800A6924; // type:func -GameState_Draw = 0x800A6930; // type:func -GameState_SetFrameBuffer = 0x800A6A28; // type:func -func_800C49F4 = 0x800A6B0C; // type:func -GameState_ReqPadData = 0x800A6B84; // type:func -GameState_Update = 0x800A6BB4; // type:func -GameState_InitArena = 0x800A6C30; // type:func -GameState_Realloc = 0x800A6CA0; // type:func -GameState_Init = 0x800A6D60; // type:func -GameState_Destroy = 0x800A6E58; // type:func -GameState_GetInit = 0x800A6F08; // type:func -GameState_GetSize = 0x800A6F14; // type:func -GameState_IsRunning = 0x800A6F20; // type:func -GameState_GetArenaSize = 0x800A6F2C; // type:func -GameAlloc_Log = 0x800A6F50; // type:func -GameAlloc_Malloc = 0x800A6F70; // type:func -GameAlloc_Free = 0x800A6FDC; // type:func -GameAlloc_Cleanup = 0x800A7028; // type:func -GameAlloc_Init = 0x800A7078; // type:func -Graph_InitTHGA = 0x800A7090; // type:func -Graph_GetNextGameState = 0x800A71A8; // type:func -Graph_Init = 0x800A7258; // type:func -Graph_Destroy = 0x800A72C8; // type:func -Graph_TaskSet00 = 0x800A72D4; // type:func -Graph_Update = 0x800A7618; // type:func -Graph_ThreadEntry = 0x800A78CC; // type:func -Graph_Alloc = 0x800A79C4; // type:func -Graph_Alloc2 = 0x800A79F8; // type:func -Gfx_Open = 0x800A7A30; // type:func -Gfx_Close = 0x800A7A3C; // type:func -Gfx_Alloc = 0x800A7A54; // type:func -ListAlloc_Init = 0x800A7A90; // type:func -ListAlloc_Alloc = 0x800A7AA4; // type:func -ListAlloc_Free = 0x800A7B10; // type:func -ListAlloc_FreeAll = 0x800A7B90; // type:func -Main = 0x800A7BE0; // type:func -PadMgr_AcquireSerialEventQueue = 0x800A7F40; // type:func -PadMgr_ReleaseSerialEventQueue = 0x800A7F70; // type:func -PadMgr_LockPadData = 0x800A7F98; // type:func -PadMgr_UnlockPadData = 0x800A7FC4; // type:func -PadMgr_UpdateRumble = 0x800A7FF0; // type:func -PadMgr_RumbleStop = 0x800A8240; // type:func -PadMgr_RumbleReset = 0x800A82D8; // type:func -PadMgr_RumbleSetSingle = 0x800A82E8; // type:func -PadMgr_RumbleSet = 0x800A8300; // type:func -PadMgr_UpdateInputs = 0x800A8330; // type:func -PadMgr_HandleRetrace = 0x800A8510; // type:func -PadMgr_HandlePreNMI = 0x800A86A8; // type:func -PadMgr_RequestPadData = 0x800A86CC; // type:func -PadMgr_ThreadEntry = 0x800A8848; // type:func -PadMgr_Init = 0x800A8944; // type:func -Sched_SwapFrameBufferImpl = 0x800A8A40; // type:func -Sched_SwapFrameBuffer = 0x800A8AB0; // type:func -Sched_HandlePreNMI = 0x800A8B00; // type:func -Sched_HandleNMI = 0x800A8B0C; // type:func -Sched_QueueTask = 0x800A8B30; // type:func -Sched_Yield = 0x800A8B9C; // type:func -Sched_GfxTaskFramebufferValid = 0x800A8BD0; // type:func -Sched_Schedule = 0x800A8C94; // type:func -Sched_SetNextFramebufferFromTask = 0x800A8DC8; // type:func -Sched_TaskComplete = 0x800A8E14; // type:func -Sched_RunTask = 0x800A8E8C; // type:func -Sched_HandleNotification = 0x800A8FF0; // type:func -Sched_HandleRetrace = 0x800A90E0; // type:func -Sched_HandleRSPDone = 0x800A91B8; // type:func -Sched_HandleRDPDone = 0x800A93CC; // type:func -Sched_Notify = 0x800A9494; // type:func -Sched_ThreadEntry = 0x800A94B8; // type:func -Sched_Init = 0x800A95EC; // type:func -SpeedMeter_InitImpl = 0x800A96C0; // type:func -SpeedMeter_Init = 0x800A96D0; // type:func -SpeedMeter_Destroy = 0x800A96F4; // type:func -SpeedMeter_DrawTimeEntries = 0x800A9700; // type:func -SpeedMeter_InitAllocEntry = 0x800A9BC4; // type:func -SpeedMeter_DrawAllocEntry = 0x800A9C08; // type:func -SpeedMeter_DrawAllocEntries = 0x800A9E5C; // type:func -SysCfb_Init = 0x800AA100; // type:func -SysCfb_Reset = 0x800AA1C8; // type:func -SysCfb_GetFbPtr = 0x800AA1E8; // type:func -SysCfb_GetFbEnd = 0x800AA210; // type:func -Math_FactorialF = 0x800AA220; // type:func -Math_Factorial = 0x800AA320; // type:func -Math_PowF = 0x800AA3E4; // type:func -Math_SinF = 0x800AA40C; // type:func -Math_CosF = 0x800AA460; // type:func -Math3D_PlaneVsLineSegClosestPoint = 0x800AA4C0; // type:func -Math3D_LineVsLineClosestTwoPoints = 0x800AA5E0; // type:func -Math3D_LineClosestToPoint = 0x800AA88C; // type:func -Math3D_FindPointOnPlaneIntersect = 0x800AA978; // type:func -Math3D_PlaneVsPlaneNewLine = 0x800AA9D8; // type:func -Math3D_PlaneVsPlaneVsLineClosestPoint = 0x800AABB8; // type:func -Math3D_PointOnInfiniteLine = 0x800AAC34; // type:func -Math3D_LineSplitRatio = 0x800AAC80; // type:func -Math3D_Cos = 0x800AACCC; // type:func -Math3D_CosOut = 0x800AACF0; // type:func -Math3D_Vec3fReflect = 0x800AADA8; // type:func -Math3D_PointInSquare2D = 0x800AAE7C; // type:func -Math3D_CirSquareVsTriSquare = 0x800AAEE0; // type:func -Math3D_SphCubeVsTriCube = 0x800AB020; // type:func -Math3D_Dist1DSq = 0x800AB244; // type:func -Math3D_Dist1D = 0x800AB25C; // type:func -Math3D_Dist2DSq = 0x800AB280; // type:func -Math3D_Dist2D = 0x800AB2C4; // type:func -Math3D_Vec3fMagnitudeSq = 0x800AB2F4; // type:func -Math3D_Vec3fMagnitude = 0x800AB320; // type:func -Math3D_Vec3fDistSq = 0x800AB348; // type:func -Math3D_Vec3f_DistXYZ = 0x800AB370; // type:func -Math3D_DistXYZ16toF = 0x800AB390; // type:func -Math3D_Vec3fDiff_CrossZ = 0x800AB408; // type:func -Math3D_Vec3fDiff_CrossX = 0x800AB448; // type:func -Math3D_Vec3fDiff_CrossY = 0x800AB488; // type:func -Math3D_Vec3f_Cross = 0x800AB4C8; // type:func -Math3D_SurfaceNorm = 0x800AB53C; // type:func -Math3D_PointRelativeToCubeFaces = 0x800AB5A4; // type:func -Math3D_PointRelativeToCubeEdges = 0x800AB650; // type:func -Math3D_PointRelativeToCubeVertices = 0x800AB800; // type:func -Math3D_LineVsCube = 0x800AB97C; // type:func -Math3D_LineVsCubeShort = 0x800AC3F4; // type:func -Math3D_RotateXZPlane = 0x800AC560; // type:func -Math3D_DefPlane = 0x800AC5EC; // type:func -Math3D_Planef = 0x800AC700; // type:func -Math3D_Plane = 0x800AC740; // type:func -Math3D_UDistPlaneToPos = 0x800AC77C; // type:func -Math3D_DistPlaneToPos = 0x800AC7B4; // type:func -Math3D_TriChkPointParaYImpl = 0x800AC838; // type:func -Math3D_TriChkPointParaYDeterminate = 0x800ACB54; // type:func -Math3D_TriChkPointParaYSlopedY = 0x800ACB9C; // type:func -Math3D_TriChkPointParaYIntersectDist = 0x800ACBEC; // type:func -Math3D_TriChkPointParaYIntersectInsideTri = 0x800ACC9C; // type:func -Math3D_TriChkPointParaY = 0x800ACD48; // type:func -Math3D_TriChkLineSegParaYIntersect = 0x800ACDC4; // type:func -Math3D_TriChkPointParaYDist = 0x800ACF38; // type:func -Math3D_TriChkPointParaXImpl = 0x800ACFAC; // type:func -Math3D_TriChkPointParaXDeterminate = 0x800AD2C8; // type:func -Math3D_TriChkPointParaXIntersect = 0x800AD310; // type:func -Math3D_TriChkPointParaX = 0x800AD3C4; // type:func -Math3D_TriChkLineSegParaXIntersect = 0x800AD440; // type:func -Math3D_TriChkPointParaXDist = 0x800AD5C8; // type:func -Math3D_TriChkPointParaZImpl = 0x800AD63C; // type:func -Math3D_TriChkPointParaZDeterminate = 0x800AD984; // type:func -Math3D_TriChkPointParaZIntersect = 0x800AD9CC; // type:func -Math3D_TriChkPointParaZ = 0x800ADA80; // type:func -Math3D_TriChkLineSegParaZIntersect = 0x800ADAFC; // type:func -Math3D_TriChkLineSegParaZDist = 0x800ADC88; // type:func -Math3D_LineSegFindPlaneIntersect = 0x800ADCFC; // type:func -Math3D_LineSegVsPlane = 0x800ADDD8; // type:func -Math3D_TriLineIntersect = 0x800ADEE0; // type:func -Math3D_TriNorm = 0x800AE044; // type:func -Math3D_PointInSph = 0x800AE0F4; // type:func -Math3D_PointDistSqToLine2D = 0x800AE144; // type:func -Math3D_LineVsSph = 0x800AE28C; // type:func -Math3D_GetSphVsTriIntersectPoint = 0x800AE494; // type:func -Math3D_TriVsSphIntersect = 0x800AE5D4; // type:func -Math3D_PointInCyl = 0x800AE9F4; // type:func -Math3D_CylVsLineSeg = 0x800AEAB0; // type:func -Math3D_CylTriVsIntersect = 0x800AF478; // type:func -Math3D_CylVsTri = 0x800AF8F8; // type:func -Math3D_SphVsSph = 0x800AF918; // type:func -Math3D_SphVsSphOverlap = 0x800AF938; // type:func -Math3D_SphVsSphOverlapCenterDist = 0x800AF958; // type:func -Math3D_SphVsCylOverlap = 0x800AFA30; // type:func -Math3D_SphVsCylOverlapCenterDist = 0x800AFA50; // type:func -Math3D_CylVsCylOverlap = 0x800AFBC0; // type:func -Math3D_CylVsCylOverlapCenterDist = 0x800AFBE0; // type:func -Math3D_TriVsTriIntersect = 0x800AFDB0; // type:func -Math3D_XZInSphere = 0x800B0130; // type:func -Math3D_XYInSphere = 0x800B01A4; // type:func -Math3D_YZInSphere = 0x800B0218; // type:func -Math_GetAtan2Tbl = 0x800B0290; // type:func -Math_Atan2S = 0x800B0308; // type:func -Math_Atan2F = 0x800B0480; // type:func -Matrix_Init = 0x800B04C0; // type:func -Matrix_Push = 0x800B04FC; // type:func -Matrix_Pop = 0x800B0534; // type:func -Matrix_Get = 0x800B0550; // type:func -Matrix_Put = 0x800B0574; // type:func -Matrix_GetCurrent = 0x800B059C; // type:func -Matrix_Mult = 0x800B05AC; // type:func -Matrix_Translate = 0x800B0604; // type:func -Matrix_Scale = 0x800B070C; // type:func -Matrix_RotateX = 0x800B07F0; // type:func -Matrix_RotateY = 0x800B09A4; // type:func -Matrix_RotateZ = 0x800B0B5C; // type:func -Matrix_RotateZYX = 0x800B0D10; // type:func -Matrix_TranslateRotateZYX = 0x800B0FCC; // type:func -Matrix_SetTranslateRotateYXZ = 0x800B1320; // type:func -Matrix_MtxFToMtx = 0x800B14CC; // type:func -Matrix_ToMtx = 0x800B16E8; // type:func -Matrix_Finalize = 0x800B1710; // type:func -Matrix_MtxFToNewMtx = 0x800B173C; // type:func -Matrix_MultVec3f = 0x800B1768; // type:func -Matrix_MtxFCopy = 0x800B1820; // type:func -Matrix_MtxToMtxF = 0x800B1928; // type:func -Matrix_MultVec3fExt = 0x800B1B7C; // type:func -Matrix_Transpose = 0x800B1C2C; // type:func -Matrix_ReplaceRotation = 0x800B1C64; // type:func -Matrix_MtxFToYXZRotS = 0x800B1D60; // type:func -Matrix_MtxFToZYXRotS = 0x800B1EF8; // type:func -Matrix_RotateAxis = 0x800B2090; // type:func -Matrix_SetTranslateUniformScaleMtxF = 0x800B24F8; // type:func -Matrix_SetTranslateUniformScaleMtx = 0x800B2560; // type:func -Matrix_SetTranslateUniformScaleMtx2 = 0x800B25B0; // type:func -Matrix_SetTranslateScaleMtx1 = 0x800B26A0; // type:func -Matrix_SetTranslateScaleMtx2 = 0x800B27C0; // type:func -SysUcode_GetUCodeBoot = 0x800B28C0; // type:func -SysUcode_GetUCodeBootSize = 0x800B28D0; // type:func -SysUcode_GetUCode = 0x800B28EC; // type:func -SysUcode_GetUCodeData = 0x800B28FC; // type:func -RumbleMgr_Update = 0x800B2910; // type:func -RumbleMgr_Init = 0x800B2C20; // type:func -RumbleMgr_Destroy = 0x800B2C58; // type:func -func_800D31A0 = 0x800B2C70; // type:func -IrqMgr_AddClient = 0x800B2CA0; // type:func -IrqMgr_RemoveClient = 0x800B2D2C; // type:func -IrqMgr_SendMesgToClients = 0x800B2DB8; // type:func -IrqMgr_JamMesgToClients = 0x800B2E1C; // type:func -IrqMgr_HandlePreNMI = 0x800B2E80; // type:func -IrqMgr_CheckStacks = 0x800B2F18; // type:func -IrqMgr_HandlePreNMI450 = 0x800B2F38; // type:func -IrqMgr_HandlePreNMI480 = 0x800B2FB4; // type:func -IrqMgr_HandlePreNMI500 = 0x800B3048; // type:func -IrqMgr_HandleRetrace = 0x800B306C; // type:func -IrqMgr_ThreadEntry = 0x800B3124; // type:func -IrqMgr_Init = 0x800B31F8; // type:func -Fault_SleepImpl = 0x800B32C0; // type:func -Fault_ClientProcessThread = 0x800B3330; // type:func -Fault_ClientRunTask = 0x800B33A4; // type:func -Fault_ProcessClient = 0x800B3528; // type:func -Fault_AddClient = 0x800B357C; // type:func -Fault_RemoveClient = 0x800B3660; // type:func -Fault_AddAddrConvClient = 0x800B3758; // type:func -Fault_RemoveAddrConvClient = 0x800B3830; // type:func -Fault_ConvertAddress = 0x800B3928; // type:func -Fault_Sleep = 0x800B39DC; // type:func -Fault_PadCallback = 0x800B3A18; // type:func -Fault_UpdatePadImpl = 0x800B3A54; // type:func -Fault_WaitForInputImpl = 0x800B3AA0; // type:func -Fault_WaitForInput = 0x800B3BEC; // type:func -Fault_DrawRec = 0x800B3C38; // type:func -Fault_FillScreenBlack = 0x800B3C98; // type:func -Fault_FillScreenRed = 0x800B3CEC; // type:func -Fault_DrawCornerRec = 0x800B3D40; // type:func -Fault_PrintFReg = 0x800B3D94; // type:func -Fault_LogFReg = 0x800B3E40; // type:func -Fault_PrintFPCSR = 0x800B3EF0; // type:func -Fault_LogFPCSR = 0x800B3F94; // type:func -Fault_PrintThreadContext = 0x800B402C; // type:func -Fault_LogThreadContext = 0x800B4348; // type:func -Fault_FindFaultedThread = 0x800B4644; // type:func -Fault_Wait5Seconds = 0x800B46CC; // type:func -Fault_WaitForButtonCombo = 0x800B475C; // type:func -Fault_DrawMemDumpContents = 0x800B4A28; // type:func -Fault_DrawMemDump = 0x800B4B94; // type:func -Fault_WalkStack = 0x800B4D98; // type:func -Fault_DrawStackTrace = 0x800B4F28; // type:func -Fault_LogStackTrace = 0x800B50A8; // type:func -Fault_ResumeThread = 0x800B5218; // type:func -Fault_DisplayFrameBuffer = 0x800B5294; // type:func -Fault_ProcessClients = 0x800B5354; // type:func -Fault_UpdatePad = 0x800B5434; // type:func -Fault_ThreadEntry = 0x800B5470; // type:func -Fault_SetFrameBuffer = 0x800B57D0; // type:func -Fault_Init = 0x800B5824; // type:func -Fault_HungupFaultClient = 0x800B5958; // type:func -Fault_AddHungupAndCrashImpl = 0x800B5A54; // type:func -Fault_AddHungupAndCrash = 0x800B5AAC; // type:func -Fault_SetOsSyncPrintfEnabled = 0x800B5B10; // type:func -Fault_DrawRecImpl = 0x800B5B20; // type:func -Fault_DrawChar = 0x800B5C3C; // type:func -Fault_ColorToPrintColor = 0x800B5DAC; // type:func -Fault_UpdatePrintColor = 0x800B5E5C; // type:func -Fault_SetForeColor = 0x800B5EFC; // type:func -Fault_SetBackColor = 0x800B5F44; // type:func -Fault_SetFontColor = 0x800B5F8C; // type:func -Fault_SetCharPad = 0x800B5FD4; // type:func -Fault_SetCursor = 0x800B6004; // type:func -Fault_FillScreen = 0x800B60FC; // type:func -Fault_PrintCallback = 0x800B618C; // type:func -Fault_VPrintf = 0x800B6398; // type:func -Fault_Printf = 0x800B63E8; // type:func -Fault_DrawText = 0x800B6438; // type:func -Fault_SetDrawerFB = 0x800B6488; // type:func -Fault_SetInputCallback = 0x800B64B4; // type:func -Fault_WritebackFBDCache = 0x800B64C4; // type:func -Fault_InitDrawer = 0x800B6520; // type:func -Kanji_OffsetFromShiftJIS = 0x800B6590; // type:func -AudioSynth_InitNextRingBuf = 0x800B7080; // type:func -func_800DB03C = 0x800B73FC; // type:func -AudioSynth_Update = 0x800B7484; // type:func -func_800DB2C0 = 0x800B7680; // type:func -AudioSynth_LoadRingBuffer1AtTemp = 0x800B76F0; // type:func -AudioSynth_SaveRingBuffer1AtTemp = 0x800B7798; // type:func -AudioSynth_LeakReverb = 0x800B7840; // type:func -func_800DB4E4 = 0x800B78A4; // type:func -func_800DB680 = 0x800B7A40; // type:func -func_800DB828 = 0x800B7BE8; // type:func -AudioSynth_FilterReverb = 0x800B7E00; // type:func -AudioSynth_MaybeMixRingBuffer1 = 0x800B7EA8; // type:func -func_800DBB94 = 0x800B7F54; // type:func -AudioSynth_ClearBuffer = 0x800B7F5C; // type:func -func_800DBBBC = 0x800B7F7C; // type:func -func_800DBBC4 = 0x800B7F84; // type:func -func_800DBBCC = 0x800B7F8C; // type:func -AudioSynth_Mix = 0x800B7F94; // type:func -func_800DBC08 = 0x800B7FC8; // type:func -func_800DBC10 = 0x800B7FD0; // type:func -func_800DBC18 = 0x800B7FD8; // type:func -AudioSynth_SetBuffer = 0x800B7FE0; // type:func -func_800DBC54 = 0x800B8014; // type:func -func_800DBC5C = 0x800B801C; // type:func -AudioSynth_DMemMove = 0x800B8024; // type:func -func_800DBC90 = 0x800B8050; // type:func -func_800DBC98 = 0x800B8058; // type:func -func_800DBCA0 = 0x800B8060; // type:func -func_800DBCA8 = 0x800B8068; // type:func -AudioSynth_InterL = 0x800B8070; // type:func -AudioSynth_EnvSetup1 = 0x800B8094; // type:func -func_800DBD08 = 0x800B80C8; // type:func -AudioSynth_LoadBuffer = 0x800B80D0; // type:func -AudioSynth_SaveBuffer = 0x800B80F8; // type:func -AudioSynth_EnvSetup2 = 0x800B8120; // type:func -func_800DBD7C = 0x800B813C; // type:func -func_800DBD84 = 0x800B8144; // type:func -func_800DBD8C = 0x800B814C; // type:func -AudioSynth_S8Dec = 0x800B8154; // type:func -AudioSynth_HiLoGain = 0x800B8170; // type:func -AudioSynth_UnkCmd19 = 0x800B81A4; // type:func -func_800DBE18 = 0x800B81D8; // type:func -func_800DBE20 = 0x800B81E0; // type:func -func_800DBE28 = 0x800B81E8; // type:func -func_800DBE30 = 0x800B81F0; // type:func -AudioSynth_UnkCmd3 = 0x800B81F8; // type:func -func_800DBE5C = 0x800B821C; // type:func -func_800DBE64 = 0x800B8224; // type:func -func_800DBE6C = 0x800B822C; // type:func -AudioSynth_LoadFilterBuffer = 0x800B8234; // type:func -AudioSynth_LoadFilterSize = 0x800B8258; // type:func -AudioSynth_LoadRingBuffer1 = 0x800B8270; // type:func -AudioSynth_LoadRingBuffer2 = 0x800B831C; // type:func -AudioSynth_LoadRingBufferPart = 0x800B83C8; // type:func -AudioSynth_SaveRingBufferPart = 0x800B8434; // type:func -AudioSynth_SaveBufferOffset = 0x800B84A0; // type:func -AudioSynth_MaybeLoadRingBuffer2 = 0x800B84E4; // type:func -AudioSynth_LoadReverbSamples = 0x800B8524; // type:func -AudioSynth_SaveReverbSamples = 0x800B8598; // type:func -AudioSynth_SaveRingBuffer2 = 0x800B869C; // type:func -AudioSynth_DoOneAudioUpdate = 0x800B8744; // type:func -AudioSynth_ProcessNote = 0x800B8CD0; // type:func -AudioSynth_FinalResample = 0x800B99EC; // type:func -AudioSynth_ProcessEnvelope = 0x800B9A8C; // type:func -AudioSynth_LoadWaveSamples = 0x800B9DB4; // type:func -AudioSynth_ApplyHaasEffect = 0x800B9F24; // type:func -AudioHeap_CalculateAdsrDecay = 0x800BA1E0; // type:func -AudioHeap_InitAdsrDecayTable = 0x800BA1FC; // type:func -AudioHeap_ResetLoadStatus = 0x800BA340; // type:func -AudioHeap_DiscardFont = 0x800BA408; // type:func -AudioHeap_ReleaseNotesForFont = 0x800BA4EC; // type:func -AudioHeap_DiscardSequence = 0x800BA574; // type:func -AudioHeap_WritebackDCache = 0x800BA5F8; // type:func -AudioHeap_AllocZeroedAttemptExternal = 0x800BA618; // type:func -AudioHeap_AllocAttemptExternal = 0x800BA670; // type:func -AudioHeap_AllocDmaMemory = 0x800BA6C8; // type:func -AudioHeap_AllocDmaMemoryZeroed = 0x800BA704; // type:func -AudioHeap_AllocZeroed = 0x800BA740; // type:func -AudioHeap_Alloc = 0x800BA79C; // type:func -AudioHeap_InitPool = 0x800BA7F4; // type:func -AudioHeap_InitPersistentCache = 0x800BA81C; // type:func -AudioHeap_InitTemporaryCache = 0x800BA830; // type:func -AudioHeap_ResetPool = 0x800BA860; // type:func -AudioHeap_PopPersistentCache = 0x800BA870; // type:func -AudioHeap_InitMainPools = 0x800BA9B0; // type:func -AudioHeap_InitSessionPools = 0x800BAA10; // type:func -AudioHeap_InitCachePools = 0x800BAA94; // type:func -AudioHeap_InitPersistentPoolsAndCaches = 0x800BAB18; // type:func -AudioHeap_InitTemporaryPoolsAndCaches = 0x800BABDC; // type:func -AudioHeap_AllocCached = 0x800BACA0; // type:func -AudioHeap_SearchCaches = 0x800BB434; // type:func -AudioHeap_SearchRegularCaches = 0x800BB48C; // type:func -func_800DF1D8 = 0x800BB598; // type:func -AudioHeap_ClearFilter = 0x800BB96C; // type:func -AudioHeap_LoadLowPassFilter = 0x800BB99C; // type:func -AudioHeap_LoadHighPassFilter = 0x800BB9F0; // type:func -AudioHeap_LoadFilter = 0x800BBA48; // type:func -AudioHeap_UpdateReverb = 0x800BBB7C; // type:func -AudioHeap_UpdateReverbs = 0x800BBB84; // type:func -AudioHeap_ClearCurrentAiBuffer = 0x800BBC48; // type:func -AudioHeap_ResetStep = 0x800BBCB4; // type:func -AudioHeap_Init = 0x800BBFB8; // type:func -AudioHeap_SearchPermanentCache = 0x800BC8A8; // type:func -AudioHeap_AllocPermanent = 0x800BC900; // type:func -AudioHeap_AllocSampleCache = 0x800BC984; // type:func -AudioHeap_InitSampleCaches = 0x800BC9F4; // type:func -AudioHeap_AllocTemporarySampleCacheEntry = 0x800BCA8C; // type:func -AudioHeap_UnapplySampleCacheForFont = 0x800BCD24; // type:func -AudioHeap_DiscardSampleCacheEntry = 0x800BCE98; // type:func -AudioHeap_UnapplySampleCache = 0x800BCF74; // type:func -AudioHeap_AllocPersistentSampleCacheEntry = 0x800BCFB8; // type:func -AudioHeap_DiscardSampleCacheForFont = 0x800BD040; // type:func -AudioHeap_DiscardSampleCaches = 0x800BD07C; // type:func -AudioHeap_ChangeStorage = 0x800BD1CC; // type:func -AudioHeap_DiscardSampleBank = 0x800BD22C; // type:func -AudioHeap_ApplySampleBankCache = 0x800BD250; // type:func -AudioHeap_ApplySampleBankCacheInternal = 0x800BD274; // type:func -AudioHeap_DiscardSampleBanks = 0x800BD508; // type:func -AudioLoad_DecreaseSampleDmaTtls = 0x800BD5B0; // type:func -AudioLoad_DmaSampleData = 0x800BD69C; // type:func -AudioLoad_InitSampleDmaBuffers = 0x800BD9D8; // type:func -AudioLoad_IsFontLoadComplete = 0x800BDC70; // type:func -AudioLoad_IsSeqLoadComplete = 0x800BDCE8; // type:func -AudioLoad_IsSampleLoadComplete = 0x800BDD60; // type:func -AudioLoad_SetFontLoadStatus = 0x800BDDD8; // type:func -AudioLoad_SetSeqLoadStatus = 0x800BDE08; // type:func -AudioLoad_SetSampleFontLoadStatusAndApplyCaches = 0x800BDE38; // type:func -AudioLoad_SetSampleFontLoadStatus = 0x800BDE98; // type:func -AudioLoad_InitTable = 0x800BDEC8; // type:func -AudioLoad_SyncLoadSeqFonts = 0x800BDF28; // type:func -AudioLoad_SyncLoadSeqParts = 0x800BDFD8; // type:func -AudioLoad_SyncLoadSample = 0x800BE038; // type:func -AudioLoad_SyncLoadInstrument = 0x800BE124; // type:func -AudioLoad_AsyncLoad = 0x800BE1F4; // type:func -AudioLoad_AsyncLoadSeq = 0x800BE22C; // type:func -AudioLoad_AsyncLoadSampleBank = 0x800BE270; // type:func -AudioLoad_AsyncLoadFont = 0x800BE2B4; // type:func -AudioLoad_GetFontsForSequence = 0x800BE2F8; // type:func -AudioLoad_DiscardSeqFonts = 0x800BE33C; // type:func -AudioLoad_DiscardFont = 0x800BE3EC; // type:func -AudioLoad_SyncInitSeqPlayer = 0x800BE494; // type:func -AudioLoad_SyncInitSeqPlayerSkipTicks = 0x800BE4E4; // type:func -AudioLoad_SyncInitSeqPlayerInternal = 0x800BE53C; // type:func -AudioLoad_SyncLoadSeq = 0x800BE684; // type:func -AudioLoad_GetSampleBank = 0x800BE6D8; // type:func -AudioLoad_TrySyncLoadSampleBank = 0x800BE6F8; // type:func -AudioLoad_SyncLoadFont = 0x800BE814; // type:func -AudioLoad_SyncLoad = 0x800BE918; // type:func -AudioLoad_GetRealTableIndex = 0x800BEB28; // type:func -AudioLoad_SearchCaches = 0x800BEB64; // type:func -AudioLoad_GetLoadTable = 0x800BEBB8; // type:func -AudioLoad_RelocateFont = 0x800BEBFC; // type:func -AudioLoad_SyncDma = 0x800BEE68; // type:func -AudioLoad_SyncDmaUnkMedium = 0x800BEF8C; // type:func -AudioLoad_Dma = 0x800BEFA0; // type:func -AudioLoad_Unused1 = 0x800BF078; // type:func -AudioLoad_SyncLoadSimple = 0x800BF080; // type:func -AudioLoad_AsyncLoadInner = 0x800BF0A0; // type:func -AudioLoad_ProcessLoads = 0x800BF3AC; // type:func -AudioLoad_SetDmaHandler = 0x800BF3DC; // type:func -AudioLoad_SetUnusedHandler = 0x800BF3E8; // type:func -AudioLoad_InitSoundFont = 0x800BF3F4; // type:func -AudioLoad_Init = 0x800BF454; // type:func -AudioLoad_InitSlowLoads = 0x800BF7C0; // type:func -AudioLoad_SlowLoadSample = 0x800BF7D4; // type:func -AudioLoad_GetFontSample = 0x800BF9A0; // type:func -AudioLoad_Unused2 = 0x800BFA30; // type:func -AudioLoad_FinishSlowLoad = 0x800BFA38; // type:func -AudioLoad_ProcessSlowLoads = 0x800BFAAC; // type:func -AudioLoad_DmaSlowCopy = 0x800BFC34; // type:func -AudioLoad_DmaSlowCopyUnkMedium = 0x800BFCB8; // type:func -AudioLoad_SlowLoadSeq = 0x800BFCCC; // type:func -AudioLoad_InitAsyncLoads = 0x800BFDD4; // type:func -AudioLoad_StartAsyncLoadUnkMedium = 0x800BFE04; // type:func -AudioLoad_StartAsyncLoad = 0x800BFE88; // type:func -AudioLoad_ProcessAsyncLoads = 0x800BFFAC; // type:func -AudioLoad_ProcessAsyncLoadUnkMedium = 0x800C00D0; // type:func -AudioLoad_FinishAsyncLoad = 0x800C00DC; // type:func -AudioLoad_ProcessAsyncLoad = 0x800C0218; // type:func -AudioLoad_AsyncDma = 0x800C0374; // type:func -AudioLoad_AsyncDmaUnkMedium = 0x800C0404; // type:func -AudioLoad_RelocateSample = 0x800C0418; // type:func -AudioLoad_RelocateFontAndPreloadSamples = 0x800C0558; // type:func -AudioLoad_ProcessSamplePreloads = 0x800C0950; // type:func -AudioLoad_AddToSampleSet = 0x800C0B04; // type:func -AudioLoad_GetSamplesForFont = 0x800C0B4C; // type:func -AudioLoad_AddUsedSample = 0x800C0C80; // type:func -AudioLoad_PreloadSamplesForFont = 0x800C0CD8; // type:func -AudioLoad_LoadPermanentSamples = 0x800C1154; // type:func -AudioLoad_Unused3 = 0x800C1294; // type:func -AudioLoad_Unused4 = 0x800C129C; // type:func -AudioLoad_Unused5 = 0x800C12A4; // type:func -AudioLoad_ScriptLoad = 0x800C12AC; // type:func -AudioLoad_ProcessScriptLoads = 0x800C1318; // type:func -AudioLoad_InitScriptLoads = 0x800C1370; // type:func -AudioThread_Update = 0x800C13A0; // type:func -AudioThread_UpdateImpl = 0x800C13C0; // type:func -AudioThread_ProcessGlobalCmd = 0x800C1944; // type:func -AudioThread_SetFadeOutTimer = 0x800C1D18; // type:func -AudioThread_SetFadeInTimer = 0x800C1D6C; // type:func -AudioThread_InitMesgQueuesImpl = 0x800C1DB4; // type:func -AudioThread_QueueCmd = 0x800C1E4C; // type:func -AudioThread_QueueCmdF32 = 0x800C1E98; // type:func -AudioThread_QueueCmdS32 = 0x800C1EBC; // type:func -AudioThread_QueueCmdS8 = 0x800C1EE0; // type:func -AudioThread_QueueCmdU16 = 0x800C1F10; // type:func -AudioThread_ScheduleProcessCmds = 0x800C1F40; // type:func -AudioThread_ResetCmdQueue = 0x800C1FD0; // type:func -AudioThread_ProcessCmd = 0x800C1FE8; // type:func -AudioThread_ProcessCmds = 0x800C212C; // type:func -func_800E5E20 = 0x800C21E0; // type:func -AudioThread_GetFontsForSequence = 0x800C2244; // type:func -Audio_GetSampleBankIdsOfFont = 0x800C2264; // type:func -func_800E5EDC = 0x800C229C; // type:func -func_800E5F34 = 0x800C22F4; // type:func -AudioThread_ResetAudioHeap = 0x800C2348; // type:func -AudioThread_PreNMIInternal = 0x800C23E4; // type:func -AudioThread_GetChannelIO = 0x800C2430; // type:func -AudioThread_GetSeqPlayerIO = 0x800C2484; // type:func -AudioThread_InitExternalPool = 0x800C24AC; // type:func -AudioThread_ResetExternalPool = 0x800C24DC; // type:func -AudioThread_ProcessSeqPlayerCmd = 0x800C24E8; // type:func -AudioThread_ProcessChannelCmd = 0x800C26C0; // type:func -AudioThread_Noop1Cmd = 0x800C2870; // type:func -AudioThread_Noop1CmdZeroed = 0x800C28B8; // type:func -AudioThread_Noop2Cmd = 0x800C28DC; // type:func -AudioThread_WaitForAudioTask = 0x800C2910; // type:func -func_800E6590 = 0x800C2950; // type:func -func_800E6680 = 0x800C2A40; // type:func -func_800E66A0 = 0x800C2A60; // type:func -func_800E66C0 = 0x800C2A80; // type:func -AudioThread_NextRandom = 0x800C2B80; // type:func -AudioThread_InitMesgQueues = 0x800C2BD8; // type:func -Audio_InvalDCache = 0x800C2C00; // type:func -Audio_WritebackDCache = 0x800C2C40; // type:func -osAiSetNextBuffer = 0x800C2C80; // type:func -Audio_InitNoteSub = 0x800C2D00; // type:func -Audio_NoteSetResamplingRate = 0x800C3178; // type:func -Audio_NoteInit = 0x800C3228; // type:func -Audio_NoteDisable = 0x800C32E8; // type:func -Audio_ProcessNotes = 0x800C334C; // type:func -Audio_GetInstrumentTunedSample = 0x800C381C; // type:func -Audio_GetInstrumentInner = 0x800C3858; // type:func -Audio_GetDrum = 0x800C392C; // type:func -Audio_GetSoundEffect = 0x800C3A10; // type:func -Audio_SetFontInstrument = 0x800C3B04; // type:func -Audio_SeqLayerDecayRelease = 0x800C3C48; // type:func -Audio_SeqLayerNoteDecay = 0x800C3F20; // type:func -Audio_SeqLayerNoteRelease = 0x800C3F40; // type:func -Audio_BuildSyntheticWave = 0x800C3F60; // type:func -Audio_InitSyntheticWave = 0x800C4064; // type:func -Audio_InitNoteList = 0x800C40BC; // type:func -Audio_InitNoteLists = 0x800C40CC; // type:func -Audio_InitNoteFreeList = 0x800C411C; // type:func -Audio_NotePoolClear = 0x800C41C0; // type:func -Audio_NotePoolFill = 0x800C4320; // type:func -Audio_AudioListPushFront = 0x800C445C; // type:func -Audio_AudioListRemove = 0x800C449C; // type:func -Audio_FindNodeWithPrioLessThan = 0x800C44C8; // type:func -Audio_NoteInitForLayer = 0x800C4548; // type:func -func_800E82C0 = 0x800C4680; // type:func -Audio_NoteReleaseAndTakeOwnership = 0x800C46B4; // type:func -Audio_AllocNoteFromDisabled = 0x800C46E0; // type:func -Audio_AllocNoteFromDecaying = 0x800C472C; // type:func -Audio_AllocNoteFromActive = 0x800C477C; // type:func -Audio_AllocNote = 0x800C4874; // type:func -Audio_NoteInitAll = 0x800C4B48; // type:func -Audio_SequenceChannelProcessSound = 0x800C4C80; // type:func -Audio_SequencePlayerProcessSound = 0x800C4E48; // type:func -Audio_GetPortamentoFreqScale = 0x800C4F94; // type:func -Audio_GetVibratoPitchChange = 0x800C4FF0; // type:func -Audio_GetVibratoFreqScale = 0x800C5028; // type:func -Audio_NoteVibratoUpdate = 0x800C5264; // type:func -Audio_NoteVibratoInit = 0x800C52C0; // type:func -Audio_NotePortamentoInit = 0x800C5378; // type:func -Audio_AdsrInit = 0x800C53A4; // type:func -Audio_AdsrUpdate = 0x800C53C4; // type:func -AudioSeq_GetScriptControlFlowArgument = 0x800C5700; // type:func -AudioSeq_HandleScriptFlowControl = 0x800C5768; // type:func -AudioSeq_InitSequenceChannel = 0x800C5944; // type:func -AudioSeq_SeqChannelSetLayer = 0x800C5A98; // type:func -AudioSeq_SeqLayerDisable = 0x800C5BBC; // type:func -AudioSeq_SeqLayerFree = 0x800C5C38; // type:func -AudioSeq_SequenceChannelDisable = 0x800C5C88; // type:func -AudioSeq_SequencePlayerSetupChannels = 0x800C5CF4; // type:func -AudioSeq_SequencePlayerDisableChannels = 0x800C5DEC; // type:func -AudioSeq_SequenceChannelEnable = 0x800C5E6C; // type:func -AudioSeq_SequencePlayerDisableAsFinished = 0x800C5F04; // type:func -AudioSeq_SequencePlayerDisable = 0x800C5F2C; // type:func -AudioSeq_AudioListPushBack = 0x800C5FE8; // type:func -AudioSeq_AudioListPopBack = 0x800C6028; // type:func -AudioSeq_InitLayerFreelist = 0x800C6068; // type:func -AudioSeq_ScriptReadU8 = 0x800C6108; // type:func -AudioSeq_ScriptReadS16 = 0x800C611C; // type:func -AudioSeq_ScriptReadCompressedU16 = 0x800C6154; // type:func -AudioSeq_SeqLayerProcessScript = 0x800C6194; // type:func -AudioSeq_SeqLayerProcessScriptStep1 = 0x800C6298; // type:func -AudioSeq_SeqLayerProcessScriptStep5 = 0x800C6324; // type:func -AudioSeq_SeqLayerProcessScriptStep2 = 0x800C6480; // type:func -AudioSeq_SeqLayerProcessScriptStep4 = 0x800C6800; // type:func -AudioSeq_SeqLayerProcessScriptStep3 = 0x800C6EA0; // type:func -AudioSeq_SetChannelPriorities = 0x800C72B4; // type:func -AudioSeq_GetInstrument = 0x800C72E4; // type:func -AudioSeq_SetInstrument = 0x800C7358; // type:func -AudioSeq_SequenceChannelSetVolume = 0x800C7404; // type:func -AudioSeq_SequenceChannelProcessScript = 0x800C7428; // type:func -AudioSeq_SequencePlayerProcessSequence = 0x800C8118; // type:func -AudioSeq_ProcessSequences = 0x800C8924; // type:func -AudioSeq_SkipForwardSequence = 0x800C89D8; // type:func -AudioSeq_ResetSequencePlayer = 0x800C8A28; // type:func -AudioSeq_InitSequencePlayerChannels = 0x800C8AF4; // type:func -AudioSeq_InitSequencePlayer = 0x800C8BCC; // type:func -AudioSeq_InitSequencePlayers = 0x800C8C9C; // type:func -AudioOcarina_SetCustomButtonMapping = 0x800C8D20; // type:func -AudioOcarina_ReadControllerInput = 0x800C8DC0; // type:func -AudioOcarina_BendPitchTwoSemitones = 0x800C8E20; // type:func -AudioOcarina_GetPlayingState = 0x800C8EB0; // type:func -AudioOcarina_MapNoteToButton = 0x800C8EF4; // type:func -AudioOcarina_MapNotesToScarecrowButtons = 0x800C8F3C; // type:func -AudioOcarina_Start = 0x800C8FC4; // type:func -AudioOcarina_CheckIfStartedSong = 0x800C917C; // type:func -AudioOcarina_CheckSongsWithMusicStaff = 0x800C91B8; // type:func -AudioOcarina_CheckSongsWithoutMusicStaff = 0x800C95C0; // type:func -AudioOcarina_PlayControllerInput = 0x800C9818; // type:func -AudioOcarina_EnableInput = 0x800C9C08; // type:func -AudioOcarina_SetInstrument = 0x800C9C18; // type:func -AudioOcarina_SetPlaybackSong = 0x800C9CFC; // type:func -AudioOcarina_PlaybackSong = 0x800C9DFC; // type:func -AudioOcarina_SetRecordingSong = 0x800CA128; // type:func -AudioOcarina_SetRecordingState = 0x800CA530; // type:func -AudioOcarina_UpdateRecordingStaff = 0x800CA65C; // type:func -AudioOcarina_UpdatePlayingStaff = 0x800CA694; // type:func -AudioOcarina_UpdatePlaybackStaff = 0x800CA6D8; // type:func -AudioOcarina_GetRecordingStaff = 0x800CA788; // type:func -AudioOcarina_GetPlayingStaff = 0x800CA794; // type:func -AudioOcarina_GetPlaybackStaff = 0x800CA7B8; // type:func -AudioOcarina_RecordSong = 0x800CA7C4; // type:func -AudioOcarina_MemoryGameInit = 0x800CA93C; // type:func -AudioOcarina_MemoryGameNextNote = 0x800CA9AC; // type:func -AudioOcarina_Update = 0x800CAAB4; // type:func -AudioOcarina_PlayLongScarecrowSong = 0x800CABE4; // type:func -AudioOcarina_ResetStaffs = 0x800CACF0; // type:func -AudioDebug_Draw = 0x800CAD3C; // type:func -AudioDebug_ScrPrt = 0x800CAD44; // type:func -Audio_Update = 0x800CAD50; // type:func -func_800F3138 = 0x800CADF4; // type:func -func_800F3140 = 0x800CADFC; // type:func -func_800F314C = 0x800CAE08; // type:func -Audio_ComputeSfxVolume = 0x800CAE44; // type:func -Audio_ComputeSfxReverb = 0x800CAFAC; // type:func -Audio_ComputeSfxPanSigned = 0x800CB124; // type:func -Audio_ComputeSfxFreqScale = 0x800CB2A8; // type:func -func_800F37B8 = 0x800CB474; // type:func -func_800F3990 = 0x800CB64C; // type:func -Audio_SetSfxProperties = 0x800CB6C4; // type:func -Audio_ResetSfxChannelState = 0x800CBB9C; // type:func -Audio_PlayCutsceneEffectsSequence = 0x800CBC04; // type:func -func_800F3F84 = 0x800CBC4C; // type:func -func_800F4010 = 0x800CBCD8; // type:func -func_800F4138 = 0x800CBDF8; // type:func -func_800F4190 = 0x800CBE50; // type:func -Audio_PlaySfxRandom = 0x800CBEA0; // type:func -func_800F4254 = 0x800CBF14; // type:func -func_800F436C = 0x800CC02C; // type:func -func_800F4414 = 0x800CC0D4; // type:func -func_800F44EC = 0x800CC1AC; // type:func -func_800F4524 = 0x800CC1E4; // type:func -func_800F4578 = 0x800CC238; // type:func -func_800F45D0 = 0x800CC290; // type:func -Audio_PlaySfxRiver = 0x800CC2F4; // type:func -Audio_PlaySfxWaterfall = 0x800CC3A0; // type:func -Audio_StepFreqLerp = 0x800CC444; // type:func -Audio_SetBgmVolumeOffDuringFanfare = 0x800CC47C; // type:func -Audio_SetBgmVolumeOnDuringFanfare = 0x800CC4BC; // type:func -Audio_SetMainBgmVolume = 0x800CC4FC; // type:func -Audio_SetGanonsTowerBgmVolumeLevel = 0x800CC530; // type:func -Audio_SetGanonsTowerBgmVolume = 0x800CC5DC; // type:func -Audio_LowerMainBgmVolume = 0x800CC714; // type:func -Audio_UpdateRiverSoundVolumes = 0x800CC730; // type:func -Audio_PlaySfxIncreasinglyTransposed = 0x800CC818; // type:func -Audio_ResetIncreasingTranspose = 0x800CC8A8; // type:func -Audio_PlaySfxTransposed = 0x800CC8B4; // type:func -func_800F4C58 = 0x800CC918; // type:func -func_800F4E30 = 0x800CCAF0; // type:func -Audio_ClearSariaBgm = 0x800CCD8C; // type:func -Audio_ClearSariaBgmAtPos = 0x800CCDAC; // type:func -Audio_SplitBgmChannels = 0x800CCDCC; // type:func -Audio_PlaySariaBgm = 0x800CCF60; // type:func -Audio_ClearSariaBgm2 = 0x800CD1C4; // type:func -Audio_PlayMorningSceneSequence = 0x800CD1D0; // type:func -Audio_PlaySceneSequence = 0x800CD210; // type:func -Audio_UpdateSceneSequenceResumePoint = 0x800CD368; // type:func -Audio_PlayWindmillBgm = 0x800CD3D8; // type:func -Audio_SetMainBgmTempoFreqAfterFanfare = 0x800CD40C; // type:func -Audio_SetFastTempoForTimedMinigame = 0x800CD5D8; // type:func -Audio_PlaySequenceInCutscene = 0x800CD61C; // type:func -Audio_StopSequenceInCutscene = 0x800CD6A8; // type:func -Audio_IsSequencePlaying = 0x800CD718; // type:func -func_800F5ACC = 0x800CD78C; // type:func -func_800F5B58 = 0x800CD800; // type:func -func_800F5BF0 = 0x800CD898; // type:func -func_800F5C2C = 0x800CD8D4; // type:func -Audio_PlayFanfare = 0x800CD90C; // type:func -Audio_UpdateFanfare = 0x800CD9A0; // type:func -Audio_PlaySequenceWithSeqPlayerIO = 0x800CDAC0; // type:func -Audio_SetSequenceMode = 0x800CDB38; // type:func -Audio_SetBgmEnemyVolume = 0x800CDDB4; // type:func -Audio_UpdateMalonSinging = 0x800CDF08; // type:func -func_800F64E0 = 0x800CE16C; // type:func -Audio_ToggleMalonSinging = 0x800CE210; // type:func -Audio_SetEnvReverb = 0x800CE34C; // type:func -Audio_SetCodeReverb = 0x800CE368; // type:func -func_800F6700 = 0x800CE38C; // type:func -Audio_SetBaseFilter = 0x800CE42C; // type:func -Audio_SetExtraFilter = 0x800CE4B4; // type:func -Audio_SetCutsceneFlag = 0x800CE548; // type:func -Audio_PlaySfxGeneralIfNotInCutscene = 0x800CE560; // type:func -Audio_PlaySfxIfNotInCutscene = 0x800CE5A8; // type:func -func_800F6964 = 0x800CE5F0; // type:func -Audio_StopBgmAndFanfare = 0x800CE73C; // type:func -func_800F6B3C = 0x800CE7C8; // type:func -Audio_DisableAllSeq = 0x800CE7F4; // type:func -func_800F6BB8 = 0x800CE844; // type:func -func_800F6BDC = 0x800CE868; // type:func -Audio_PreNMI = 0x800CE8A0; // type:func -func_800F6C34 = 0x800CE8C0; // type:func -Audio_SetNatureAmbienceChannelIO = 0x800CE9E4; // type:func -Audio_StartNatureAmbienceSequence = 0x800CEAF8; // type:func -Audio_PlayNatureAmbienceSequence = 0x800CEBFC; // type:func -Audio_Init = 0x800CED40; // type:func -Audio_InitSound = 0x800CED64; // type:func -func_800F7170 = 0x800CEDB8; // type:func -func_800F71BC = 0x800CEE04; // type:func -func_800F7208 = 0x800CEE50; // type:func -Audio_SetSfxBanksMute = 0x800CEEB0; // type:func -Audio_QueueSeqCmdMute = 0x800CEF08; // type:func -Audio_ClearBGMMute = 0x800CEF6C; // type:func -Audio_PlaySfxGeneral = 0x800CEFDC; // type:func -Audio_RemoveMatchingSfxRequests = 0x800CF05C; // type:func -Audio_ProcessSfxRequest = 0x800CF1FC; // type:func -Audio_RemoveSfxBankEntry = 0x800CF698; // type:func -Audio_ChooseActiveSfx = 0x800CF830; // type:func -Audio_PlayActiveSfx = 0x800CFF70; // type:func -Audio_StopSfxByBank = 0x800D0290; // type:func -Audio_RemoveSfxFromBankByPos = 0x800D0374; // type:func -Audio_StopSfxByPosAndBank = 0x800D0490; // type:func -Audio_StopSfxByPos = 0x800D04D8; // type:func -Audio_StopSfxByPosAndId = 0x800D0534; // type:func -Audio_StopSfxByTokenAndId = 0x800D0690; // type:func -Audio_StopSfxById = 0x800D07F4; // type:func -Audio_ProcessSfxRequests = 0x800D092C; // type:func -Audio_SetUnusedBankLerp = 0x800D0990; // type:func -Audio_StepUnusedBankLerp = 0x800D0A24; // type:func -func_800F8F88 = 0x800D0A78; // type:func -Audio_IsSfxPlaying = 0x800D0AE4; // type:func -Audio_ResetSfx = 0x800D0B4C; // type:func -Audio_StartSequence = 0x800D0D10; // type:func -Audio_StopSequence = 0x800D0E94; // type:func -Audio_ProcessSeqCmd = 0x800D0F1C; // type:func -Audio_QueueSeqCmd = 0x800D19E0; // type:func -Audio_ProcessSeqCmds = 0x800D1A08; // type:func -Audio_GetActiveSeqId = 0x800D1A88; // type:func -Audio_IsSeqCmdNotQueued = 0x800D1AF0; // type:func -Audio_ResetSequenceRequests = 0x800D1B48; // type:func -Audio_ReplaceSeqCmdSetupOpVolRestore = 0x800D1B60; // type:func -Audio_SetVolumeScale = 0x800D1C14; // type:func -Audio_UpdateActiveSequences = 0x800D1DB0; // type:func -func_800FAD34 = 0x800D2708; // type:func -Audio_ResetActiveSequences = 0x800D27CC; // type:func -Audio_ResetActiveSequencesAndVolume = 0x800D2888; // type:func -func_800FC800 = 0x800D2930; // type:func -func_800FC83C = 0x800D2960; // type:func -func_800FC868 = 0x800D298C; // type:func -func_800FC8D8 = 0x800D29FC; // type:func -func_800FC948 = 0x800D2A6C; // type:func -func_800FCA18 = 0x800D2B3C; // type:func -func_800FCB34 = 0x800D2BD8; // type:func -SystemHeap_Init = 0x800D2C48; // type:func -LogUtils_HungupThread = 0x800D2C70; // type:func -LogUtils_ResetHungup = 0x800D2CA4; // type:func -GfxPrint_Setup = 0x800D2CD0; // type:func -GfxPrint_SetColor = 0x800D311C; // type:func -GfxPrint_SetPosPx = 0x800D3168; // type:func -GfxPrint_SetPos = 0x800D318C; // type:func -GfxPrint_SetBasePosPx = 0x800D31B4; // type:func -GfxPrint_PrintCharImpl = 0x800D31C8; // type:func -GfxPrint_PrintChar = 0x800D365C; // type:func -GfxPrint_PrintStringWithSize = 0x800D381C; // type:func -GfxPrint_PrintString = 0x800D3878; // type:func -GfxPrint_Callback = 0x800D38D0; // type:func -GfxPrint_Init = 0x800D38FC; // type:func -GfxPrint_Destroy = 0x800D3984; // type:func -GfxPrint_Open = 0x800D398C; // type:func -GfxPrint_Close = 0x800D39C0; // type:func -GfxPrint_VPrintf = 0x800D39F0; // type:func -GfxPrint_Printf = 0x800D3A10; // type:func -Overlay_Relocate = 0x800D3A40; // type:func -Overlay_AllocateAndLoad = 0x800D3C80; // type:func -Overlay_Load = 0x800D3CE0; // type:func -PadSetup_Init = 0x800D3DB0; // type:func -PadUtils_Init = 0x800D3EF0; // type:func -func_800FCB70 = 0x800D3F10; // type:func -PadUtils_ResetPressRel = 0x800D3F18; // type:func -PadUtils_CheckCurExact = 0x800D3F24; // type:func -PadUtils_CheckCur = 0x800D3F3C; // type:func -PadUtils_CheckPressed = 0x800D3F58; // type:func -PadUtils_CheckReleased = 0x800D3F74; // type:func -PadUtils_GetCurButton = 0x800D3F90; // type:func -PadUtils_GetPressButton = 0x800D3F98; // type:func -PadUtils_GetCurX = 0x800D3FA0; // type:func -PadUtils_GetCurY = 0x800D3FA8; // type:func -PadUtils_SetRelXY = 0x800D3FB0; // type:func -PadUtils_GetRelXImpl = 0x800D3FBC; // type:func -PadUtils_GetRelYImpl = 0x800D3FC4; // type:func -PadUtils_GetRelX = 0x800D3FCC; // type:func -PadUtils_GetRelY = 0x800D3FEC; // type:func -PadUtils_UpdateRelXY = 0x800D400C; // type:func -RcpUtils_PrintRegisterStatus = 0x800D40E0; // type:func -RcpUtils_Reset = 0x800D4108; // type:func -ArenaImpl_LockInit = 0x800D4140; // type:func -ArenaImpl_Lock = 0x800D416C; // type:func -ArenaImpl_Unlock = 0x800D4194; // type:func -ArenaImpl_GetLastBlock = 0x800D41BC; // type:func -__osMallocInit = 0x800D4220; // type:func -__osMallocAddBlock = 0x800D4270; // type:func -__osMallocCleanup = 0x800D4310; // type:func -__osMallocIsInitialized = 0x800D4330; // type:func -__osMalloc_NoLock = 0x800D4338; // type:func -__osMalloc = 0x800D4464; // type:func -__osMallocR = 0x800D44A4; // type:func -__osFree_NoLock = 0x800D4618; // type:func -__osFree = 0x800D4758; // type:func -__osRealloc = 0x800D4790; // type:func -ArenaImpl_GetSizes = 0x800D4B88; // type:func -ArenaImpl_FaultClient = 0x800D4C5C; // type:func -__osCheckArena = 0x800D4E30; // type:func -PrintUtils_VPrintf = 0x800D4EF0; // type:func -PrintUtils_Printf = 0x800D4F24; // type:func -SystemArena_Malloc = 0x800D4F50; // type:func -SystemArena_MallocR = 0x800D4F78; // type:func -SystemArena_Realloc = 0x800D4FA0; // type:func -SystemArena_Free = 0x800D4FD0; // type:func -SystemArena_Calloc = 0x800D4FF8; // type:func -SystemArena_GetSizes = 0x800D504C; // type:func -SystemArena_Check = 0x800D5084; // type:func -SystemArena_Init = 0x800D50A8; // type:func -SystemArena_Cleanup = 0x800D50D8; // type:func -SystemArena_IsInitialized = 0x800D50FC; // type:func -Math_FTanF = 0x800D5120; // type:func -Math_FFloorF = 0x800D5154; // type:func -Math_FCeilF = 0x800D5174; // type:func -Math_FRoundF = 0x800D5194; // type:func -Math_FTruncF = 0x800D51B4; // type:func -Math_FNearbyIntF = 0x800D51D4; // type:func -Math_FAtanTaylorQF = 0x800D51F4; // type:func -Math_FAtanTaylorF = 0x800D5240; // type:func -Math_FAtanContFracF = 0x800D5364; // type:func -Math_FAtanF = 0x800D54B0; // type:func -Math_FAtan2F = 0x800D54F0; // type:func -Math_FAsinF = 0x800D55D8; // type:func -Math_FAcosF = 0x800D5608; // type:func -floorf = 0x800D5630; // type:func -floor = 0x800D563C; // type:func -lfloorf = 0x800D5648; // type:func -lfloor = 0x800D5658; // type:func -ceilf = 0x800D5668; // type:func -ceil = 0x800D5674; // type:func -lceilf = 0x800D5680; // type:func -lceil = 0x800D5690; // type:func -truncf = 0x800D56A0; // type:func -trunc = 0x800D56AC; // type:func -ltruncf = 0x800D56B8; // type:func -ltrunc = 0x800D56C8; // type:func -nearbyintf = 0x800D56D8; // type:func -nearbyint = 0x800D56E4; // type:func -lnearbyintf = 0x800D56F0; // type:func -lnearbyint = 0x800D5700; // type:func -roundf = 0x800D5710; // type:func -round = 0x800D572C; // type:func -lroundf = 0x800D574C; // type:func -lround = 0x800D576C; // type:func -Rand_Next = 0x800D5790; // type:func -Rand_Seed = 0x800D57C0; // type:func -Rand_ZeroOne = 0x800D57CC; // type:func -Rand_Centered = 0x800D5820; // type:func -Rand_Seed_Variable = 0x800D5878; // type:func -Rand_Next_Variable = 0x800D5880; // type:func -Rand_ZeroOne_Variable = 0x800D58A8; // type:func -Rand_Centered_Variable = 0x800D58F4; // type:func -Sleep_Cycles = 0x800D5950; // type:func -Sleep_Nsec = 0x800D59BC; // type:func -Sleep_Usec = 0x800D5A0C; // type:func -Sleep_Msec = 0x800D5A5C; // type:func -Sleep_Sec = 0x800D5AB0; // type:func -proutSprintf = 0x800D5AF0; // type:func -vsprintf = 0x800D5B14; // type:func -sprintf = 0x800D5B64; // type:func -JpegUtils_ProcessQuantizationTable = 0x800D5BC0; // type:func -JpegUtils_ParseHuffmanCodesLengths = 0x800D5C28; // type:func -JpegUtils_GetHuffmanCodes = 0x800D5CAC; // type:func -JpegUtils_SetHuffmanTable = 0x800D5D18; // type:func -JpegUtils_ProcessHuffmanTableImpl = 0x800D5DC0; // type:func -JpegUtils_ProcessHuffmanTable = 0x800D5E7C; // type:func -JpegUtils_SetHuffmanTableOld = 0x800D5F54; // type:func -JpegUtils_ProcessHuffmanTableImplOld = 0x800D5FFC; // type:func -JpegDecoder_Decode = 0x800D60D0; // type:func -JpegDecoder_ProcessMcu = 0x800D62F8; // type:func -JpegDecoder_ParseNextSymbol = 0x800D6494; // type:func -JpegDecoder_ReadBits = 0x800D65D0; // type:func -osAiGetLength = 0x800D66C0; // type:func -osAiSetFrequency = 0x800D66D0; // type:func -alInit = 0x800D67D0; // type:func -alClose = 0x800D67FC; // type:func -alLink = 0x800D682C; // type:func -alUnlink = 0x800D684C; // type:func -alSynNew = 0x800D6880; // type:func -alAudioFrame = 0x800D6BA4; // type:func -__allocParam = 0x800D6D50; // type:func -__freeParam = 0x800D6D7C; // type:func -_collectPVoices = 0x800D6D94; // type:func -_freePVoice = 0x800D6DE4; // type:func -_timeToSamplesNoRound = 0x800D6E24; // type:func -_timeToSamples = 0x800D6E6C; // type:func -__nextSampleTime = 0x800D6E90; // type:func -alSynDelete = 0x800D6EF0; // type:func -alSynAllocFX = 0x800D6F00; // type:func -osWritebackDCacheAll = 0x800D6FA0; // type:func -osContStartQuery = 0x800D6FD0; // type:func -osContGetQuery = 0x800D7054; // type:func -osContStartReadData = 0x800D7080; // type:func -osContGetReadData = 0x800D7108; // type:func -__osPackReadData = 0x800D7244; // type:func -osContInit = 0x800D7300; // type:func -__osContGetInitData = 0x800D74A4; // type:func -__osPackRequestData = 0x800D7610; // type:func -osContSetCh = 0x800D76D0; // type:func -sqrtf = 0x800D7730; // type:func -cosf = 0x800D7740; // type:func -coss = 0x800D7870; // type:func -guLookAtF = 0x800D7890; // type:func -guLookAt = 0x800D7B54; // type:func -guLookAtHiliteF = 0x800D7BC0; // type:func -guLookAtHilite = 0x800D83B8; // type:func -guOrthoF = 0x800D8490; // type:func -guOrtho = 0x800D85AC; // type:func -guPerspectiveF = 0x800D8600; // type:func -guPerspective = 0x800D87A8; // type:func -guPositionF = 0x800D8800; // type:func -guPosition = 0x800D8988; // type:func -sinf = 0x800D89E0; // type:func -sins = 0x800D8B60; // type:func -guS2DInitBg = 0x800D8BB0; // type:func -__ull_rshift = 0x800D8CD0; // type:func -__ull_rem = 0x800D8D4C; // type:func -__ull_div = 0x800D8DB0; // type:func -__ll_lshift = 0x800D8E0C; // type:func -__ll_rem = 0x800D8E88; // type:func -__ll_div = 0x800D8EEC; // type:func -__ll_mul = 0x800D8F48; // type:func -__ull_divremi = 0x800D8FBC; // type:func -__ll_mod = 0x800D9060; // type:func -__ll_rshift = 0x800D91CC; // type:func -__d_to_ll = 0x800D9250; // type:func -__f_to_ll = 0x800D9294; // type:func -__d_to_ull = 0x800D92D8; // type:func -__f_to_ull = 0x800D931C; // type:func -__ll_to_d = 0x800D9360; // type:func -__ll_to_f = 0x800D93A4; // type:func -__ull_to_d = 0x800D93E8; // type:func -__ull_to_f = 0x800D94A4; // type:func -strchr = 0x800D9560; // type:func -strlen = 0x800D9590; // type:func -memcpy = 0x800D95B4; // type:func -_Printf = 0x800D95E0; // type:func -_Putfld = 0x800D9B1C; // type:func -osDpGetStatus = 0x800D9FC0; // type:func -osDpSetStatus = 0x800D9FD0; // type:func -__osSpGetStatus = 0x800D9FE0; // type:func -__osSpSetStatus = 0x800D9FF0; // type:func -_VirtualToPhysicalTask = 0x800DA000; // type:func -osSpTaskLoad = 0x800DA0DC; // type:func -osSpTaskStartGo = 0x800DA1E0; // type:func -osSpTaskYield = 0x800DA210; // type:func -osSpTaskYielded = 0x800DA230; // type:func -__osSiRawStartDma = 0x800DA280; // type:func -__osSiCreateAccessQueue = 0x800DA360; // type:func -__osSiGetAccess = 0x800DA3B4; // type:func -__osSiRelAccess = 0x800DA3F0; // type:func -osGetThreadId = 0x800DA420; // type:func -__osGetActiveQueue = 0x800DA470; // type:func -osSetTimer = 0x800DA4A0; // type:func -osStopTimer = 0x800DA660; // type:func -osViGetCurrentFramebuffer = 0x800DA780; // type:func -osViSetEvent = 0x800DA7C0; // type:func -guMtxIdent = 0x800DA820; // type:func -guMtxIdentF = 0x800DA880; // type:func -guMtxF2L = 0x800DA8E0; // type:func -guScale = 0x800DA960; // type:func -guTranslate = 0x800DAA00; // type:func -guRotateF = 0x800DAAD0; // type:func -guRotate = 0x800DAC1C; // type:func -__osGetCurrFaultedThread = 0x800DAC60; // type:func -skGetId = 0x800DAC90; // type:func -skLaunchSetup = 0x800DACAC; // type:func -skLaunch = 0x800DACC8; // type:func -skRecryptListValid = 0x800DACE4; // type:func -skRecryptBegin = 0x800DAD00; // type:func -skRecryptData = 0x800DAD1C; // type:func -skRecryptComputeState = 0x800DAD38; // type:func -skRecryptEnd = 0x800DAD54; // type:func -skSignHash = 0x800DAD70; // type:func -skVerifyHash = 0x800DAD8C; // type:func -skGetConsumption = 0x800DADA8; // type:func -skAdvanceTicketWindow = 0x800DADC4; // type:func -skSetLimit = 0x800DADE0; // type:func -skExit = 0x800DADFC; // type:func -skKeepAlive = 0x800DAE18; // type:func -skGetRandomKeyData = 0x800DAE34; // type:func -skDumpVirage = 0x800DAE50; // type:func -skTest2 = 0x800DAE6C; // type:func -skTest3 = 0x800DAE88; // type:func -skResetWindow = 0x800DAEA4; // type:func -skValidateRls = 0x800DAEC0; // type:func -strcmp = 0x800DAEE0; // type:func -memset = 0x800DAF30; // type:func -strncmp = 0x800DAF54; // type:func -__osMotorAccess = 0x800DAFD0; // type:func -osMotorInit = 0x800DAFD8; // type:func -osAfterPreNMI = 0x800DAFE0; // type:func -_init_lpfilter = 0x800DB020; // type:func -alFxNew = 0x800DB0D0; // type:func -alEnvmixerNew = 0x800DB4E4; // type:func -alLoadNew = 0x800DB594; // type:func -alResampleNew = 0x800DB644; // type:func -alAuxBusNew = 0x800DB6D0; // type:func -alMainBusNew = 0x800DB72C; // type:func -alSaveNew = 0x800DB788; // type:func -alAdpcmPull = 0x800DB7D0; // type:func -alRaw16Pull = 0x800DBBEC; // type:func -alLoadParam = 0x800DBF70; // type:func -_decodeChunk = 0x800DC0FC; // type:func -alAuxBusPull = 0x800DC260; // type:func -alAuxBusParam = 0x800DC33C; // type:func -alEnvmixerPull = 0x800DC370; // type:func -alEnvmixerParam = 0x800DC83C; // type:func -_pullSubFrame = 0x800DC904; // type:func -_frexpf = 0x800DCBC8; // type:func -_ldexpf = 0x800DCC7C; // type:func -_getRate = 0x800DCC9C; // type:func -_getVol = 0x800DCE5C; // type:func -alFilterNew = 0x800DCEE0; // type:func -alMainBusPull = 0x800DCF00; // type:func -alMainBusParam = 0x800DD044; // type:func -alResamplePull = 0x800DD070; // type:func -alResampleParam = 0x800DD248; // type:func -alFxPull = 0x800DD310; // type:func -alFxParam = 0x800DD660; // type:func -alFxParamHdl = 0x800DD674; // type:func -_loadOutputBuffer = 0x800DD850; // type:func -_loadBuffer = 0x800DDA54; // type:func -_saveBuffer = 0x800DDBC0; // type:func -_filterBuffer = 0x800DDD30; // type:func -_doModFunc = 0x800DDDE8; // type:func -alSavePull = 0x800DDE80; // type:func -alSaveParam = 0x800DDF2C; // type:func -alHeapDBAlloc = 0x800DDF60; // type:func -alCopy = 0x800DDFB0; // type:func -_Litob = 0x800DDFE0; // type:func -_Ldtob = 0x800DE210; // type:func -_Ldunscale = 0x800DE63C; // type:func -_Genld = 0x800DE6D8; // type:func -__osSpDeviceBusy = 0x800DEC10; // type:func -__osSpSetPc = 0x800DEC40; // type:func -__osSpRawStartDma = 0x800DEC70; // type:func -guNormalize = 0x800DED00; // type:func -ldiv = 0x800DED60; // type:func -lldiv = 0x800DEDDC; // type:func -fmodf = 0x800DEF20; // type:func -memmove = 0x800DEF60; // type:func -absf = 0x800DEFF0; // type:func -sqrt = 0x800DF000; // type:func -Message_ResetOcarinaNoteState = 0x800DF010; // type:func -Message_UpdateOcarinaMemoryGame = 0x800DF0F4; // type:func -Message_ShouldAdvance = 0x800DF1E4; // type:func -Message_ShouldAdvanceSilent = 0x800DF29C; // type:func -Message_CloseTextbox = 0x800DF2DC; // type:func -Message_HandleChoiceSelection = 0x800DF35C; // type:func -Message_DrawTextChar = 0x800DF528; // type:func -Message_GrowTextbox = 0x800DF85C; // type:func -Message_FindMessageJPN = 0x800DFA58; // type:func -Message_FindMessageNES = 0x800DFADC; // type:func -Message_FindCreditsMessage = 0x800DFB60; // type:func -Message_SetTextColor = 0x800DFBCC; // type:func -Message_DrawTextboxIcon = 0x800DFEAC; // type:func -Message_DrawItemIcon = 0x800E06E0; // type:func -Message_HandleOcarina = 0x800E0A4C; // type:func -Message_DrawTextWide = 0x800E0BE8; // type:func -Message_DrawText = 0x800E208C; // type:func -Message_LoadItemIcon = 0x800E33C4; // type:func -Message_Decode = 0x800E3520; // type:func -Message_OpenText = 0x800E5D2C; // type:func -Message_StartTextbox = 0x800E61B0; // type:func -Message_ContinueTextbox = 0x800E6240; // type:func -Message_StartOcarinaImpl = 0x800E6364; // type:func -Message_StartOcarina = 0x800E67C0; // type:func -Message_StartOcarinaSunsSongDisabled = 0x800E67E8; // type:func -Message_GetState = 0x800E6814; // type:func -Message_DrawTextBox = 0x800E691C; // type:func -Message_SetView = 0x800E6DBC; // type:func -Message_DrawMain = 0x800E6E04; // type:func -Message_Draw = 0x800E9F58; // type:func -Message_Update = 0x800E9FF8; // type:func -Message_SetTables = 0x800EAAF8; // type:func -GameOver_Init = 0x800EAB30; // type:func -GameOver_FadeInLights = 0x800EAB44; // type:func -GameOver_Update = 0x800EABAC; // type:func -Interface_Destroy = 0x800EB070; // type:func -Interface_Init = 0x800EB08C; // type:func -Message_Init = 0x800EB474; // type:func -Regs_InitDataImpl = 0x800EB558; // type:func -Regs_InitData = 0x800EBF48; // type:func -ConsoleLogo_Calc = 0x80800000; // type:func -ConsoleLogo_SetupView = 0x80800098; // type:func -ConsoleLogo_Draw = 0x8080011C; // type:func -ConsoleLogo_Main = 0x808006C0; // type:func -ConsoleLogo_Destroy = 0x80800780; // type:func -ConsoleLogo_Init = 0x8080079C; // type:func -MapSelect_LoadTitle = 0x80800930; // type:func -MapSelect_LoadGame = 0x80800950; // type:func -MapSelect_UpdateMenu = 0x80800A40; // type:func -MapSelect_PrintMenu = 0x808013A0; // type:func -MapSelect_PrintLoadingMessage = 0x8080157C; // type:func -MapSelect_PrintAgeSetting = 0x80801608; // type:func -MapSelect_PrintCutsceneSetting = 0x8080167C; // type:func -MapSelect_DrawMenu = 0x80801838; // type:func -MapSelect_DrawLoadingScreen = 0x8080194C; // type:func -MapSelect_Draw = 0x80801A34; // type:func -MapSelect_Main = 0x80801AE8; // type:func -MapSelect_Destroy = 0x80801B14; // type:func -MapSelect_Init = 0x80801B20; // type:func -TitleSetup_SetupTitleScreen = 0x808035B0; // type:func -func_80803C5C = 0x8080361C; // type:func -TitleSetup_Main = 0x80803624; // type:func -TitleSetup_Destroy = 0x80803668; // type:func -TitleSetup_Init = 0x80803670; // type:func -FileSelect_SetupCopySource = 0x80803700; // type:func -FileSelect_SelectCopySource = 0x8080392C; // type:func -FileSelect_SetupCopyDest1 = 0x80803CD0; // type:func -FileSelect_SetupCopyDest2 = 0x80803EE4; // type:func -FileSelect_SelectCopyDest = 0x80803FD4; // type:func -FileSelect_ExitToCopySource1 = 0x80804400; // type:func -FileSelect_ExitToCopySource2 = 0x808044FC; // type:func -FileSelect_SetupCopyConfirm1 = 0x80804644; // type:func -FileSelect_SetupCopyConfirm2 = 0x80804900; // type:func -FileSelect_CopyConfirm = 0x80804968; // type:func -FileSelect_ReturnToCopyDest = 0x80804B78; // type:func -FileSelect_CopyAnim1 = 0x80804E5C; // type:func -FileSelect_CopyAnim2 = 0x80804F1C; // type:func -FileSelect_CopyAnim3 = 0x808050D8; // type:func -FileSelect_CopyAnim4 = 0x80805228; // type:func -FileSelect_CopyAnim5 = 0x80805370; // type:func -FileSelect_ExitCopyToMain = 0x8080579C; // type:func -FileSelect_SetupEraseSelect = 0x80805910; // type:func -FileSelect_EraseSelect = 0x80805B4C; // type:func -FileSelect_SetupEraseConfirm1 = 0x80805EF0; // type:func -FileSelect_SetupEraseConfirm2 = 0x808062D8; // type:func -FileSelect_EraseConfirm = 0x808063F8; // type:func -FileSelect_ExitToEraseSelect1 = 0x808065F8; // type:func -FileSelect_ExitToEraseSelect2 = 0x808066E0; // type:func -FileSelect_EraseAnim1 = 0x808069BC; // type:func -FileSelect_EraseAnim2 = 0x80806C2C; // type:func -FileSelect_EraseAnim3 = 0x80806CE4; // type:func -FileSelect_ExitEraseToMain = 0x80807004; // type:func -FileSelect_DrawCharacter = 0x808071E0; // type:func -FileSelect_DrawCharacterTransition = 0x80807318; // type:func -FileSelect_SetKeyboardVtx = 0x808074F8; // type:func -FileSelect_SetNameEntryVtx = 0x808077BC; // type:func -FileSelect_DrawKeyboard = 0x808084A0; // type:func -FileSelect_ApplyDiacriticToCharacter = 0x80808D64; // type:func -FileSelect_ApplyDiacriticToFilename = 0x80808F6C; // type:func -FileSelect_DrawNameEntry = 0x80808FEC; // type:func -FileSelect_StartNameEntry = 0x8080A450; // type:func -FileSelect_UpdateKeyboardCursor = 0x8080A504; // type:func -FileSelect_StartOptions = 0x8080AEE4; // type:func -FileSelect_UpdateOptionsMenu = 0x8080AF74; // type:func -FileSelect_DrawOptionsImpl = 0x8080B1F0; // type:func -FileSelect_DrawOptions = 0x8080C608; // type:func -FileSelect_SetView = 0x8080C630; // type:func -FileSelect_QuadTextureIA8 = 0x8080C6B4; // type:func -FileSelect_InitModeUpdate = 0x8080C894; // type:func -FileSelect_InitModeDraw = 0x8080C8EC; // type:func -FileSelect_FadeInMenuElements = 0x8080C8F8; // type:func -FileSelect_SplitNumber = 0x8080CA60; // type:func -FileSelect_StartFadeIn = 0x8080CAD4; // type:func -FileSelect_FinishFadeIn = 0x8080CB5C; // type:func -FileSelect_UpdateMainMenu = 0x8080CBF4; // type:func -FileSelect_UnusedCM31 = 0x8080D498; // type:func -FileSelect_UnusedCMDelay = 0x8080D4A4; // type:func -FileSelect_RotateToNameEntry = 0x8080D4F8; // type:func -FileSelect_RotateToOptions = 0x8080D56C; // type:func -FileSelect_RotateToMain = 0x8080D5E0; // type:func -FileSelect_PulsateCursor = 0x8080D658; // type:func -FileSelect_ConfigModeUpdate = 0x8080D754; // type:func -FileSelect_SetWindowVtx = 0x8080D790; // type:func -FileSelect_SetWindowContentVtx = 0x8080DA64; // type:func -FileSelect_DrawFileInfo = 0x8080ED28; // type:func -FileSelect_DrawWindowContents = 0x8080F4A4; // type:func -FileSelect_ConfigModeDraw = 0x80810958; // type:func -FileSelect_FadeMainToSelect = 0x80811238; // type:func -FileSelect_MoveSelectedFileToTop = 0x808113A4; // type:func -FileSelect_FadeInFileInfo = 0x808114A8; // type:func -FileSelect_ConfirmFile = 0x8081158C; // type:func -FileSelect_FadeOutFileInfo = 0x80811764; // type:func -FileSelect_MoveSelectedFileToSlot = 0x80811854; // type:func -FileSelect_FadeOut = 0x80811AAC; // type:func -FileSelect_LoadGame = 0x80811B08; // type:func -FileSelect_SelectModeUpdate = 0x80811CD0; // type:func -FileSelect_SelectModeDraw = 0x80811D0C; // type:func -FileSelect_Main = 0x808120C4; // type:func -FileSelect_InitContext = 0x8081268C; // type:func -FileSelect_Destroy = 0x80812CB8; // type:func -FileSelect_Init = 0x80812CC4; // type:func -KaleidoScope_DrawQuestStatus = 0x808141F0; // type:func -KaleidoScope_UpdateQuestStatusPoint = 0x808165DC; // type:func -KaleidoScope_DrawDebugEditorText = 0x808165F0; // type:func -KaleidoScope_DrawDigit = 0x808168E4; // type:func -KaleidoScope_DrawDebugEditor = 0x80816A58; // type:func -KaleidoScope_DrawEquipmentImage = 0x808185A0; // type:func -KaleidoScope_DrawPlayerWork = 0x808189A0; // type:func -KaleidoScope_DrawEquipment = 0x80818B44; // type:func -KaleidoScope_DrawAmmoCount = 0x8081A020; // type:func -KaleidoScope_SetCursorPos = 0x8081A55C; // type:func -KaleidoScope_SetItemCursorPos = 0x8081A58C; // type:func -KaleidoScope_DrawItemSelect = 0x8081A5B8; // type:func -KaleidoScope_UpdateItemEquip = 0x8081B414; // type:func -KaleidoScope_DrawDungeonMap = 0x8081C010; // type:func -KaleidoScope_DrawWorldMap = 0x8081D89C; // type:func -KaleidoScope_UpdatePrompt = 0x8081F5E0; // type:func -KaleidoScope_SetupPlayerPreRender = 0x8081F7E0; // type:func -KaleidoScope_ProcessPlayerPreRender = 0x8081F8CC; // type:func -KaleidoScope_QuadTextureIA4 = 0x8081F908; // type:func -KaleidoScope_QuadTextureIA8 = 0x8081FAE4; // type:func -KaleidoScope_OverridePalIndexCI4 = 0x8081FCC4; // type:func -KaleidoScope_MoveCursorToSpecialPos = 0x8081FD34; // type:func -KaleidoScope_DrawQuadTextureRGBA32 = 0x8081FD88; // type:func -KaleidoScope_SetDefaultCursor = 0x8081FF88; // type:func -KaleidoScope_SetupPageSwitch = 0x80820038; // type:func -KaleidoScope_HandlePageToggles = 0x808201B4; // type:func -KaleidoScope_DrawCursor = 0x808202AC; // type:func -KaleidoScope_DrawPageSections = 0x8082064C; // type:func -KaleidoScope_DrawPages = 0x80820900; // type:func -KaleidoScope_DrawInfoPanel = 0x80821FB8; // type:func -KaleidoScope_UpdateNamePanel = 0x80823404; // type:func -KaleidoScope_UpdatePageSwitch = 0x8082359C; // type:func -KaleidoScope_SetView = 0x8082376C; // type:func -KaleidoScope_SetPageVertices = 0x808237D8; // type:func -KaleidoScope_SetVertices = 0x8082459C; // type:func -KaleidoScope_DrawGameOver = 0x80825730; // type:func -KaleidoScope_Draw = 0x80825E18; // type:func -KaleidoScope_GrayOutTextureRGBA32 = 0x80826064; // type:func -KaleidoScope_UpdateOpening = 0x80826114; // type:func -KaleidoScope_UpdateCursorVtx = 0x808262F0; // type:func -KaleidoScope_LoadDungeonMap = 0x80826568; // type:func -KaleidoScope_UpdateDungeonMap = 0x808265F8; // type:func -KaleidoScope_Update = 0x808266DC; // type:func -PauseMapMark_Init = 0x80828BD0; // type:func -PauseMapMark_Clear = 0x80828C04; // type:func -PauseMapMark_DrawForDungeon = 0x80828C18; // type:func -PauseMapMark_Draw = 0x8082922C; // type:func -Player_ZeroSpeedXZ = 0x80830290; // type:func -func_80832224 = 0x808302A8; // type:func -Player_IsTalking = 0x808302D0; // type:func -Player_AnimPlayOnce = 0x808302EC; // type:func -Player_AnimPlayLoop = 0x80830310; // type:func -Player_AnimPlayLoopAdjusted = 0x80830334; // type:func -Player_AnimPlayOnceAdjusted = 0x80830364; // type:func -Player_ApplyYawFromAnim = 0x80830394; // type:func -func_80832318 = 0x808303B4; // type:func -func_80832340 = 0x808303E0; // type:func -Player_DetachHeldActor = 0x80830450; // type:func -func_80832440 = 0x808304DC; // type:func -Player_PutAwayHeldItem = 0x808305C4; // type:func -func_80832564 = 0x80830600; // type:func -func_80832594 = 0x80830638; // type:func -func_80832630 = 0x808306D8; // type:func -Player_RequestRumble = 0x808306F4; // type:func -Player_PlayVoiceSfx = 0x80830740; // type:func -func_808326F0 = 0x808307A0; // type:func -Player_ApplyFloorSfxOffset = 0x8083080C; // type:func -Player_PlayFloorSfx = 0x80830828; // type:func -Player_ApplyFloorAndAgeSfxOffsets = 0x80830860; // type:func -Player_PlayFloorSfxByAge = 0x80830888; // type:func -Player_PlaySteppingSfx = 0x808308C0; // type:func -Player_PlayJumpingSfx = 0x8083091C; // type:func -Player_PlayLandingSfx = 0x80830968; // type:func -func_808328EC = 0x808309B4; // type:func -Player_ProcessAnimSfxList = 0x808309E8; // type:func -Player_AnimChangeOnceMorph = 0x80830BD0; // type:func -Player_AnimChangeOnceMorphAdjusted = 0x80830C3C; // type:func -Player_AnimChangeLoopMorph = 0x80830CAC; // type:func -Player_AnimChangeFreeze = 0x80830CF4; // type:func -Player_AnimChangeLoopSlowMorph = 0x80830D38; // type:func -func_80832CB0 = 0x80830D80; // type:func -Player_ResetAnimMovement = 0x80830DD4; // type:func -Player_ResetAnimMovementScaledByAge = 0x80830DFC; // type:func -Player_ZeroRootLimbYaw = 0x80830E88; // type:func -Player_FinishAnimMovement = 0x80830E98; // type:func -Player_ApplyAnimMovementScaledByAge = 0x80830F24; // type:func -Player_StartAnimMovement = 0x80831034; // type:func -Player_AnimReplacePlayOnceSetSpeed = 0x808310DC; // type:func -Player_AnimReplacePlayOnce = 0x80831124; // type:func -Player_AnimReplacePlayOnceAdjusted = 0x8083114C; // type:func -Player_AnimReplaceNormalPlayOnceAdjusted = 0x80831174; // type:func -Player_AnimReplacePlayLoopSetSpeed = 0x80831194; // type:func -Player_AnimReplacePlayLoop = 0x808311DC; // type:func -Player_AnimReplacePlayLoopAdjusted = 0x80831204; // type:func -Player_AnimReplaceNormalPlayLoopAdjusted = 0x8083122C; // type:func -Player_ProcessControlStick = 0x8083124C; // type:func -func_8083328C = 0x80831378; // type:func -func_808332B8 = 0x808313A8; // type:func -func_808332E4 = 0x808313D4; // type:func -func_808332F4 = 0x808313E8; // type:func -Player_GetIdleAnim = 0x8083142C; // type:func -Player_CheckForIdleAnim = 0x80831448; // type:func -Player_ProcessFidgetAnimSfxList = 0x808314FC; // type:func -func_80833438 = 0x80831538; // type:func -func_808334B4 = 0x808315B4; // type:func -func_808334E4 = 0x808315E8; // type:func -func_80833528 = 0x80831630; // type:func -func_8083356C = 0x80831678; // type:func -func_808335B0 = 0x808316C0; // type:func -func_808335F4 = 0x80831708; // type:func -Player_SetUpperActionFunc = 0x80831750; // type:func -Player_InitItemActionWithAnim = 0x8083177C; // type:func -Player_ItemToItemAction = 0x8083183C; // type:func -Player_InitDefaultIA = 0x80831888; // type:func -Player_InitDekuStickIA = 0x80831898; // type:func -Player_InitHammerIA = 0x808318B4; // type:func -Player_InitBowOrSlingshotIA = 0x808318C4; // type:func -Player_InitExplosiveIA = 0x808318FC; // type:func -Player_InitHookshotIA = 0x80831A3C; // type:func -Player_InitBoomerangIA = 0x80831AAC; // type:func -Player_InitItemAction = 0x80831AC8; // type:func -func_80833A20 = 0x80831B54; // type:func -Player_FriendlyLockOnOrParallel = 0x80831C5C; // type:func -Player_UpdateHostileLockOn = 0x80831C84; // type:func -Player_IsZTargeting = 0x80831CFC; // type:func -Player_IsZTargetingWithHostileUpdate = 0x80831D38; // type:func -func_80833C3C = 0x80831D74; // type:func -Player_ItemIsInUse = 0x80831D8C; // type:func -Player_ItemIsItemAction = 0x80831DD8; // type:func -Player_GetItemOnButton = 0x80831E20; // type:func -Player_ProcessItemButtons = 0x80831F3C; // type:func -Player_StartChangingHeldItem = 0x80832224; // type:func -Player_UpdateItems = 0x808323DC; // type:func -func_80834380 = 0x808324C4; // type:func -func_8083442C = 0x80832570; // type:func -Player_FinishItemChange = 0x808326D8; // type:func -func_80834644 = 0x80832788; // type:func -func_808346C4 = 0x80832808; // type:func -func_80834758 = 0x8083289C; // type:func -func_8083485C = 0x808329A4; // type:func -func_80834894 = 0x808329DC; // type:func -Player_WaitToFinishItemChange = 0x80832A38; // type:func -func_8083499C = 0x80832AE8; // type:func -Player_UpperAction_Sword = 0x80832B28; // type:func -Player_UpperAction_ChangeHeldItem = 0x80832B78; // type:func -func_80834B5C = 0x80832CA8; // type:func -func_80834BD4 = 0x80832D24; // type:func -func_80834C74 = 0x80832DC8; // type:func -func_80834D2C = 0x80832E80; // type:func -func_80834E44 = 0x80832F98; // type:func -func_80834E7C = 0x80832FD0; // type:func -func_80834EB8 = 0x8083300C; // type:func -func_80834F2C = 0x80833080; // type:func -func_80834FBC = 0x80833110; // type:func -func_8083501C = 0x80833170; // type:func -func_808350A4 = 0x808331F8; // type:func -func_808351D4 = 0x8083332C; // type:func -func_808353D8 = 0x80833538; // type:func -func_80835588 = 0x808336E8; // type:func -Player_SetParallel = 0x80833744; // type:func -func_80835644 = 0x808337B0; // type:func -func_80835688 = 0x808337F8; // type:func -Player_UpperAction_CarryActor = 0x80833858; // type:func -func_808357E8 = 0x80833958; // type:func -func_80835800 = 0x80833974; // type:func -func_80835884 = 0x808339F8; // type:func -func_808358F0 = 0x80833A64; // type:func -func_808359FC = 0x80833B78; // type:func -func_80835B60 = 0x80833CE0; // type:func -func_80835C08 = 0x80833D88; // type:func -Player_SetupAction = 0x80833DE0; // type:func -Player_SetupActionPreserveAnimMovement = 0x80833F3C; // type:func -Player_SetupActionPreserveItemAction = 0x80833F70; // type:func -func_80835E44 = 0x80833FD4; // type:func -func_80835EA4 = 0x80834038; // type:func -Player_DestroyHookshot = 0x80834094; // type:func -Player_UseItem = 0x808340E4; // type:func -func_80836448 = 0x808345EC; // type:func -Player_CanUpdateItems = 0x8083476C; // type:func -Player_UpdateUpperBody = 0x80834818; // type:func -Player_SetupWaitForPutAway = 0x80834A40; // type:func -Player_UpdateShapeYaw = 0x80834A98; // type:func -Player_ScaledStepBinangClamped = 0x80834B74; // type:func -func_80836AB8 = 0x80834C60; // type:func -Player_UpdateZTargeting = 0x80834D94; // type:func -Player_CalcSpeedAndYawFromControlStick = 0x80835158; // type:func -Player_DecelerateToZero = 0x808353C8; // type:func -Player_GetMovementSpeedAndYaw = 0x8083541C; // type:func -Player_TryActionHandlerList = 0x808354FC; // type:func -Player_TryActionInterrupt = 0x80835658; // type:func -func_80837530 = 0x808356F0; // type:func -Player_CanSpinAttack = 0x808357A0; // type:func -func_80837704 = 0x808358D0; // type:func -func_808377DC = 0x808359A8; // type:func -func_80837818 = 0x808359EC; // type:func -func_80837918 = 0x80835AEC; // type:func -func_80837948 = 0x80835B1C; // type:func -Player_SetIntangibility = 0x80835CBC; // type:func -Player_SetInvulnerability = 0x80835CD8; // type:func -func_80837B18 = 0x80835CF8; // type:func -func_80837B60 = 0x80835D40; // type:func -func_80837B9C = 0x80835D7C; // type:func -func_80837C0C = 0x80835DEC; // type:func -func_80838144 = 0x80836324; // type:func -func_8083816C = 0x8083634C; // type:func -func_8083819C = 0x8083637C; // type:func -func_8083821C = 0x80836400; // type:func -func_80838280 = 0x80836464; // type:func -func_808382BC = 0x808364A0; // type:func -func_808382DC = 0x808364C0; // type:func -func_80838940 = 0x80836B24; // type:func -func_808389E8 = 0x80836BC8; // type:func -Player_ActionHandler_12 = 0x80836BF4; // type:func -func_80838E70 = 0x80837050; // type:func -func_80838F18 = 0x80837100; // type:func -func_80838F5C = 0x8083714C; // type:func -func_80838FB8 = 0x808371B0; // type:func -Player_HandleExitsAndVoids = 0x8083722C; // type:func -Player_GetRelativePosition = 0x808377D0; // type:func -Player_SpawnFairy = 0x80837874; // type:func -func_808396F4 = 0x808378E8; // type:func -func_8083973C = 0x80837934; // type:func -Player_PosVsWallLineTest = 0x80837960; // type:func -Player_ActionHandler_1 = 0x808379FC; // type:func -func_80839E88 = 0x80838094; // type:func -func_80839F30 = 0x80838138; // type:func -func_80839F90 = 0x80838194; // type:func -func_80839FFC = 0x80838200; // type:func -func_8083A060 = 0x80838268; // type:func -func_8083A098 = 0x808382A4; // type:func -func_8083A0D4 = 0x808382E4; // type:func -func_8083A0F4 = 0x80838304; // type:func -Player_SetupTalk = 0x80838508; // type:func -func_8083A360 = 0x80838578; // type:func -func_8083A388 = 0x808385A0; // type:func -func_8083A3B0 = 0x808385C8; // type:func -func_8083A40C = 0x80838620; // type:func -func_8083A434 = 0x80838648; // type:func -func_8083A4A8 = 0x808386BC; // type:func -func_8083A5C4 = 0x808387D8; // type:func -func_8083A6AC = 0x808388CC; // type:func -func_8083A9B8 = 0x80838BD4; // type:func -func_8083AA10 = 0x80838C2C; // type:func -func_8083AD4C = 0x80838F68; // type:func -Player_StartCsAction = 0x80838FF0; // type:func -func_8083AE40 = 0x8083905C; // type:func -func_8083AF44 = 0x808390E4; // type:func -func_8083B010 = 0x808391B8; // type:func -Player_ActionHandler_13 = 0x808391EC; // type:func -Player_ActionHandler_Talk = 0x808397F0; // type:func -func_8083B8F4 = 0x80839AA0; // type:func -Player_ActionHandler_0 = 0x80839B48; // type:func -func_8083BA90 = 0x80839C40; // type:func -func_8083BB20 = 0x80839CD8; // type:func -func_8083BBA0 = 0x80839D58; // type:func -Player_SetupRoll = 0x80839DC0; // type:func -Player_TryRoll = 0x80839E38; // type:func -func_8083BCD0 = 0x80839E8C; // type:func -Player_ActionHandler_10 = 0x80839F78; // type:func -func_8083BF50 = 0x8083A110; // type:func -func_8083C0B8 = 0x8083A274; // type:func -func_8083C0E8 = 0x8083A2AC; // type:func -func_8083C148 = 0x8083A308; // type:func -Player_ActionHandler_Roll = 0x8083A3A4; // type:func -Player_ActionHandler_11 = 0x8083A480; // type:func -func_8083C484 = 0x8083A658; // type:func -func_8083C50C = 0x8083A6E0; // type:func -Player_ActionHandler_8 = 0x8083A718; // type:func -func_8083C61C = 0x8083A7F4; // type:func -func_8083C6B8 = 0x8083A890; // type:func -func_8083C858 = 0x8083AA34; // type:func -func_8083C8DC = 0x8083AAB8; // type:func -Player_SetStartingMovement = 0x8083AAEC; // type:func -Player_StartMode_Idle = 0x8083AC00; // type:func -Player_StartMode_MoveForwardSlow = 0x8083AC38; // type:func -Player_StartMode_MoveForward = 0x8083AC80; // type:func -func_8083CB2C = 0x8083AD14; // type:func -func_8083CB94 = 0x8083AD78; // type:func -func_8083CBF0 = 0x8083ADD4; // type:func -func_8083CC9C = 0x8083AE7C; // type:func -func_8083CD00 = 0x8083AEDC; // type:func -Player_SetupTurnInPlace = 0x8083AF30; // type:func -func_8083CE0C = 0x8083AFEC; // type:func -func_8083CEAC = 0x8083B088; // type:func -func_8083CF10 = 0x8083B0E8; // type:func -func_8083CF5C = 0x8083B130; // type:func -func_8083CFA8 = 0x8083B178; // type:func -func_8083D0A8 = 0x8083B280; // type:func -func_8083D12C = 0x8083B308; // type:func -func_8083D330 = 0x8083B510; // type:func -func_8083D36C = 0x8083B54C; // type:func -func_8083D53C = 0x8083B720; // type:func -func_8083D6EC = 0x8083B8D0; // type:func -func_8083DB98 = 0x8083BD80; // type:func -func_8083DC54 = 0x8083BE3C; // type:func -func_8083DDC8 = 0x8083BFB0; // type:func -func_8083DF68 = 0x8083C158; // type:func -func_8083DFE0 = 0x8083C1D4; // type:func -Player_ActionHandler_3 = 0x8083C2F4; // type:func -Player_GetSlopeDirection = 0x8083C494; // type:func -Player_HandleSlopes = 0x8083C510; // type:func -func_8083E4C4 = 0x8083C6C4; // type:func -Player_ActionHandler_2 = 0x8083C7AC; // type:func -func_8083EA94 = 0x8083CC44; // type:func -Player_CanThrowCarriedActor = 0x8083CCA0; // type:func -Player_ActionHandler_9 = 0x8083CCF4; // type:func -func_8083EC18 = 0x8083CDC8; // type:func -func_8083F070 = 0x8083D224; // type:func -Player_TryEnteringCrawlspace = 0x8083D27C; // type:func -func_8083F360 = 0x8083D518; // type:func -func_8083F524 = 0x8083D6DC; // type:func -Player_TryLeavingCrawlspace = 0x8083D728; // type:func -func_8083F72C = 0x8083D8E4; // type:func -Player_ActionHandler_5 = 0x8083D970; // type:func -func_8083F9D0 = 0x8083DB88; // type:func -func_8083FAB8 = 0x8083DC70; // type:func -func_8083FB14 = 0x8083DCCC; // type:func -func_8083FB7C = 0x8083DD34; // type:func -func_8083FBC0 = 0x8083DD74; // type:func -func_8083FC68 = 0x8083DE24; // type:func -func_8083FD78 = 0x8083DF34; // type:func -func_8083FFB8 = 0x8083E178; // type:func -func_80840058 = 0x8083E218; // type:func -func_80840138 = 0x8083E300; // type:func -func_808401B0 = 0x8083E378; // type:func -func_8084021C = 0x8083E3E4; // type:func -func_8084029C = 0x8083E464; // type:func -Player_Action_80840450 = 0x8083E61C; // type:func -Player_Action_808407CC = 0x8083E998; // type:func -Player_ChooseNextIdleAnim = 0x8083EB98; // type:func -Player_Action_Idle = 0x8083ED94; // type:func -Player_Action_80840DE4 = 0x8083EFB4; // type:func -func_80841138 = 0x8083F308; // type:func -func_8084140C = 0x8083F5E4; // type:func -func_80841458 = 0x8083F630; // type:func -Player_Action_808414F8 = 0x8083F6D0; // type:func -func_808416C0 = 0x8083F8A4; // type:func -Player_Action_8084170C = 0x8083F8F0; // type:func -Player_Action_808417FC = 0x8083F9E0; // type:func -func_80841860 = 0x8083FA44; // type:func -Player_Action_8084193C = 0x8083FB20; // type:func -Player_Action_TurnInPlace = 0x8083FD84; // type:func -func_80841CC4 = 0x8083FEA0; // type:func -func_80841EE4 = 0x808400C4; // type:func -Player_Action_80842180 = 0x80840368; // type:func -Player_Action_8084227C = 0x8084046C; // type:func -Player_Action_808423EC = 0x808405E0; // type:func -Player_Action_8084251C = 0x80840710; // type:func -func_8084260C = 0x80840800; // type:func -func_8084269C = 0x80840890; // type:func -Player_Action_8084279C = 0x80840990; // type:func -func_8084285C = 0x80840A50; // type:func -func_808428D8 = 0x80840ACC; // type:func -func_80842964 = 0x80840B5C; // type:func -Player_RequestQuake = 0x80840BB4; // type:func -func_80842A28 = 0x80840C28; // type:func -func_80842A88 = 0x80840C8C; // type:func -func_80842AC4 = 0x80840CC8; // type:func -func_80842B7C = 0x80840D84; // type:func -func_80842CF0 = 0x80840EFC; // type:func -func_80842D20 = 0x80840F34; // type:func -func_80842DF4 = 0x8084100C; // type:func -Player_Action_80843188 = 0x808413A0; // type:func -Player_Action_808435C4 = 0x808417DC; // type:func -Player_Action_8084370C = 0x80841928; // type:func -Player_Action_8084377C = 0x8084199C; // type:func -Player_Action_80843954 = 0x80841B78; // type:func -Player_Action_80843A38 = 0x80841C60; // type:func -func_80843AE8 = 0x80841D14; // type:func -Player_Action_80843CEC = 0x80841F18; // type:func -func_80843E14 = 0x80842044; // type:func -func_80843E64 = 0x80842098; // type:func -func_8084409C = 0x808422D0; // type:func -Player_Action_8084411C = 0x80842358; // type:func -Player_Action_Roll = 0x8084294C; // type:func -Player_Action_80844A44 = 0x80842C88; // type:func -Player_Action_80844AF4 = 0x80842D38; // type:func -func_80844BE4 = 0x80842E28; // type:func -func_80844CF8 = 0x80842F40; // type:func -func_80844D30 = 0x80842F78; // type:func -func_80844D68 = 0x80842FB0; // type:func -func_80844DC8 = 0x80843014; // type:func -func_80844E3C = 0x80843088; // type:func -Player_Action_80844E68 = 0x808430B8; // type:func -Player_Action_80845000 = 0x80843250; // type:func -Player_Action_80845308 = 0x80843558; // type:func -Player_Action_80845668 = 0x808438B8; // type:func -Player_Action_WaitForPutAway = 0x80843B24; // type:func -func_80845964 = 0x80843BB8; // type:func -func_80845BA0 = 0x80843DFC; // type:func -func_80845C68 = 0x80843EC8; // type:func -Player_Action_80845CA4 = 0x80843F08; // type:func -Player_Action_80845EF8 = 0x80844168; // type:func -Player_Action_80846050 = 0x808442C0; // type:func -Player_Action_80846120 = 0x80844398; // type:func -Player_Action_80846260 = 0x808444D8; // type:func -Player_Action_80846358 = 0x808445D8; // type:func -Player_Action_80846408 = 0x80844688; // type:func -Player_Action_808464B0 = 0x80844730; // type:func -Player_Action_80846578 = 0x808447FC; // type:func -Player_DoNothing = 0x808448C4; // type:func -Player_StartMode_Nothing = 0x808448D4; // type:func -Player_StartMode_BlueWarp = 0x808448F0; // type:func -Player_PutSwordInHand = 0x808449B0; // type:func -Player_StartMode_TimeTravel = 0x80844A64; // type:func -Player_StartMode_Door = 0x80844B40; // type:func -Player_StartMode_Grotto = 0x80844B88; // type:func -Player_StartMode_KnockedOver = 0x80844C18; // type:func -Player_StartMode_WarpSong = 0x80844C5C; // type:func -Player_SpawnMagicSpell = 0x80844C9C; // type:func -Player_StartMode_FaroresWind = 0x80844D08; // type:func -Player_InitCommon = 0x80844D48; // type:func -Player_Init = 0x80844F78; // type:func -Player_ApproachZeroBinang = 0x80845488; // type:func -func_80847298 = 0x8084552C; // type:func -Player_UpdateInterface = 0x80845668; // type:func -Player_UpdateHoverBoots = 0x80845D18; // type:func -Player_ProcessSceneCollision = 0x80845E40; // type:func -Player_UpdateCamAndSeqModes = 0x80846948; // type:func -Player_UpdateBurningDekuStick = 0x80846CA8; // type:func -Player_UpdateBodyShock = 0x80846DF0; // type:func -Player_UpdateBodyBurn = 0x80846F20; // type:func -Player_DetectRumbleSecrets = 0x808471A4; // type:func -Player_UpdateCommon = 0x8084724C; // type:func -Player_Update = 0x80848158; // type:func -Player_DrawGameplay = 0x80848390; // type:func -Player_Draw = 0x80848834; // type:func -Player_Destroy = 0x80848D94; // type:func -func_8084ABD8 = 0x80848E18; // type:func -func_8084AEEC = 0x8084912C; // type:func -func_8084B000 = 0x80849248; // type:func -func_8084B158 = 0x808493A8; // type:func -Player_Action_8084B1D8 = 0x80849428; // type:func -func_8084B3CC = 0x80849618; // type:func -func_8084B498 = 0x808496EC; // type:func -func_8084B4D4 = 0x80849728; // type:func -Player_Action_Talk = 0x80849788; // type:func -Player_Action_8084B78C = 0x808499F0; // type:func -func_8084B840 = 0x80849AA4; // type:func -Player_Action_8084B898 = 0x80849B00; // type:func -Player_Action_8084B9E4 = 0x80849C4C; // type:func -Player_Action_8084BBE4 = 0x80849E50; // type:func -Player_Action_8084BDFC = 0x8084A068; // type:func -func_8084BEE4 = 0x8084A150; // type:func -Player_Action_8084BF1C = 0x8084A188; // type:func -Player_Action_8084C5F8 = 0x8084A868; // type:func -Player_Action_8084C760 = 0x8084A9D0; // type:func -Player_Action_8084C81C = 0x8084AA8C; // type:func -func_8084C89C = 0x8084AB0C; // type:func -func_8084C9BC = 0x8084AC38; // type:func -func_8084CBF4 = 0x8084AE74; // type:func -Player_Action_8084CC98 = 0x8084AF1C; // type:func -Player_Action_8084D3E4 = 0x8084B66C; // type:func -func_8084D530 = 0x8084B7C0; // type:func -func_8084D574 = 0x8084B808; // type:func -func_8084D5CC = 0x8084B864; // type:func -Player_Action_8084D610 = 0x8084B8B0; // type:func -Player_Action_8084D7C4 = 0x8084BA60; // type:func -Player_Action_8084D84C = 0x8084BAF0; // type:func -func_8084D980 = 0x8084BC24; // type:func -Player_Action_8084DAB4 = 0x8084BD5C; // type:func -func_8084DBC4 = 0x8084BE6C; // type:func -Player_Action_8084DC48 = 0x8084BEF0; // type:func -func_8084DF6C = 0x8084C21C; // type:func -func_8084DFAC = 0x8084C260; // type:func -func_8084DFF4 = 0x8084C2AC; // type:func -Player_Action_8084E1EC = 0x8084C4A4; // type:func -Player_Action_8084E30C = 0x8084C5C4; // type:func -Player_Action_8084E368 = 0x8084C624; // type:func -Player_Action_8084E3C4 = 0x8084C684; // type:func -Player_Action_8084E604 = 0x8084C8C4; // type:func -Player_Action_8084E6D4 = 0x8084C994; // type:func -func_8084E988 = 0x8084CC48; // type:func -Player_Action_TimeTravelEnd = 0x8084CC6C; // type:func -Player_Action_8084EAC0 = 0x8084CD80; // type:func -Player_Action_SwingBottle = 0x8084CF6C; // type:func -Player_Action_8084EED8 = 0x8084D1A4; // type:func -Player_Action_8084EFC0 = 0x8084D28C; // type:func -Player_Action_ExchangeItem = 0x8084D3D4; // type:func -Player_Action_8084F308 = 0x8084D5DC; // type:func -Player_Action_SlideOnSlope = 0x8084D664; // type:func -Player_Action_WaitForCutscene = 0x8084D8DC; // type:func -Player_Action_StartWarpSongArrive = 0x8084D96C; // type:func -Player_Action_BlueWarpArrive = 0x8084D9E4; // type:func -Player_Action_8084F88C = 0x8084DB60; // type:func -Player_Action_TryOpeningDoor = 0x8084DC74; // type:func -Player_Action_ExitGrotto = 0x8084DC94; // type:func -Player_Action_8084FA54 = 0x8084DD28; // type:func -Player_Action_8084FB10 = 0x8084DDE4; // type:func -Player_Action_8084FBF4 = 0x8084DEC8; // type:func -func_8084FF7C = 0x8084DF80; // type:func -Player_UpdateBunnyEars = 0x8084E034; // type:func -Player_ActionHandler_7 = 0x8084E22C; // type:func -Player_Action_808502D0 = 0x8084E2D8; // type:func -Player_Action_808505DC = 0x8084E5E8; // type:func -Player_Action_8085063C = 0x8084E648; // type:func -Player_Action_FaroresWindArrive = 0x8084E778; // type:func -Player_Action_808507F4 = 0x8084E800; // type:func -Player_Action_HookshotFly = 0x8084EAFC; // type:func -Player_Action_80850C68 = 0x8084EC7C; // type:func -Player_Action_80850E84 = 0x8084EE98; // type:func -Player_AnimChangeOnceMorphZeroRootYawSpeed = 0x8084EEEC; // type:func -Player_AnimChangeOnceMorphAdjustedZeroRootYawSpeed = 0x8084EF30; // type:func -Player_AnimChangeLoopMorphAdjustedZeroRootYawSpeed = 0x8084EFB0; // type:func -func_80851008 = 0x8084F01C; // type:func -func_80851030 = 0x8084F044; // type:func -func_80851050 = 0x8084F064; // type:func -func_80851094 = 0x8084F0A8; // type:func -func_808510B4 = 0x8084F0C8; // type:func -func_808510D4 = 0x8084F0E8; // type:func -func_808510F4 = 0x8084F108; // type:func -func_80851114 = 0x8084F128; // type:func -func_80851134 = 0x8084F148; // type:func -func_80851154 = 0x8084F168; // type:func -func_80851174 = 0x8084F188; // type:func -func_80851194 = 0x8084F1A8; // type:func -func_808511B4 = 0x8084F1C8; // type:func -func_808511D4 = 0x8084F1E8; // type:func -func_808511FC = 0x8084F214; // type:func -func_80851248 = 0x8084F268; // type:func -func_80851294 = 0x8084F2BC; // type:func -func_808512E0 = 0x8084F310; // type:func -func_80851314 = 0x8084F348; // type:func -func_80851368 = 0x8084F39C; // type:func -func_808513BC = 0x8084F3F0; // type:func -func_808514C0 = 0x8084F4F8; // type:func -func_8085157C = 0x8084F5B4; // type:func -func_808515A4 = 0x8084F5E0; // type:func -func_80851688 = 0x8084F6C4; // type:func -func_80851750 = 0x8084F794; // type:func -func_80851788 = 0x8084F7D0; // type:func -func_80851828 = 0x8084F870; // type:func -func_808518DC = 0x8084F928; // type:func -func_8085190C = 0x8084F95C; // type:func -func_80851998 = 0x8084F9E8; // type:func -func_808519C0 = 0x8084FA10; // type:func -func_808519EC = 0x8084FA3C; // type:func -func_80851A50 = 0x8084FAA0; // type:func -func_80851B90 = 0x8084FBE0; // type:func -func_80851BE8 = 0x8084FC3C; // type:func -func_80851CA4 = 0x8084FCFC; // type:func -func_80851D2C = 0x8084FD88; // type:func -func_80851D80 = 0x8084FDE0; // type:func -func_80851DEC = 0x8084FE54; // type:func -func_80851E28 = 0x8084FE94; // type:func -func_80851E64 = 0x8084FED4; // type:func -func_80851E90 = 0x8084FF00; // type:func -func_80851ECC = 0x8084FF40; // type:func -func_80851F14 = 0x8084FF90; // type:func -func_80851F84 = 0x80850004; // type:func -func_80851FB0 = 0x80850030; // type:func -func_80852048 = 0x808500CC; // type:func -func_80852080 = 0x80850108; // type:func -func_808520BC = 0x80850148; // type:func -func_80852174 = 0x80850200; // type:func -func_808521B8 = 0x8085024C; // type:func -func_808521F4 = 0x8085028C; // type:func -func_80852234 = 0x808502CC; // type:func -func_8085225C = 0x808502F8; // type:func -func_80852280 = 0x8085031C; // type:func -func_80852298 = 0x80850338; // type:func -func_80852328 = 0x808503CC; // type:func -func_80852358 = 0x808503FC; // type:func -func_80852388 = 0x8085042C; // type:func -func_80852414 = 0x808504BC; // type:func -func_80852450 = 0x808504FC; // type:func -func_80852480 = 0x8085052C; // type:func -func_808524B0 = 0x8085055C; // type:func -func_808524D0 = 0x80850580; // type:func -func_80852514 = 0x808505C8; // type:func -func_80852544 = 0x808505FC; // type:func -func_80852554 = 0x80850610; // type:func -func_80852564 = 0x80850624; // type:func -func_808525C0 = 0x80850688; // type:func -func_80852608 = 0x808506D4; // type:func -func_80852648 = 0x8085071C; // type:func -func_808526EC = 0x808507C4; // type:func -func_8085283C = 0x8085091C; // type:func -func_808528C8 = 0x808509AC; // type:func -func_80852944 = 0x80850A2C; // type:func -func_808529D0 = 0x80850AB8; // type:func -func_80852A54 = 0x80850B40; // type:func -func_80852B4C = 0x80850C38; // type:func -func_80852C0C = 0x80850CF8; // type:func -func_80852C50 = 0x80850D3C; // type:func -Player_Action_CsAction = 0x80850EF8; // type:func -Player_IsDroppingFish = 0x80850FA0; // type:func -Player_StartFishing = 0x80850FD4; // type:func -func_80852F38 = 0x80851010; // type:func -Player_TryCsAction = 0x808510DC; // type:func -func_80853080 = 0x80851160; // type:func -Player_InflictDamage = 0x808511BC; // type:func -Player_StartTalking = 0x80851224; // type:func -EnTest_SetupAction = 0x8085D5D0; // type:func -EnTest_Init = 0x8085D5DC; // type:func -EnTest_Destroy = 0x8085D828; // type:func -EnTest_ChooseRandomAction = 0x8085D8C0; // type:func -EnTest_ChooseAction = 0x8085DA3C; // type:func -EnTest_SetupWaitGround = 0x8085DD5C; // type:func -EnTest_WaitGround = 0x8085DDD4; // type:func -EnTest_SetupWaitAbove = 0x8085DEB4; // type:func -EnTest_WaitAbove = 0x8085DF28; // type:func -EnTest_SetupIdle = 0x8085DFF4; // type:func -EnTest_Idle = 0x8085E078; // type:func -EnTest_Fall = 0x8085E2A8; // type:func -EnTest_Land = 0x8085E35C; // type:func -EnTest_SetupWalkAndBlock = 0x8085E3CC; // type:func -EnTest_WalkAndBlock = 0x8085E490; // type:func -func_80860BDC = 0x8085EB74; // type:func -func_80860C24 = 0x8085EBBC; // type:func -func_80860EC0 = 0x8085EE58; // type:func -func_80860F84 = 0x8085EF1C; // type:func -EnTest_SetupSlashDown = 0x8085F3B0; // type:func -EnTest_SlashDown = 0x8085F434; // type:func -EnTest_SetupSlashDownEnd = 0x8085F540; // type:func -EnTest_SlashDownEnd = 0x8085F590; // type:func -EnTest_SetupSlashUp = 0x8085F7BC; // type:func -EnTest_SlashUp = 0x8085F838; // type:func -EnTest_SetupJumpBack = 0x8085F8F0; // type:func -EnTest_JumpBack = 0x8085F990; // type:func -EnTest_SetupJumpslash = 0x8085FB38; // type:func -EnTest_Jumpslash = 0x8085FBE4; // type:func -EnTest_SetupJumpUp = 0x8085FCF4; // type:func -EnTest_JumpUp = 0x8085FD6C; // type:func -EnTest_SetupStopAndBlock = 0x8085FE64; // type:func -EnTest_StopAndBlock = 0x8085FF24; // type:func -EnTest_SetupIdleFromBlock = 0x8085FFF4; // type:func -EnTest_IdleFromBlock = 0x80860040; // type:func -func_80862154 = 0x808600F8; // type:func -func_808621D4 = 0x80860178; // type:func -func_80862398 = 0x80860340; // type:func -func_80862418 = 0x808603C0; // type:func -EnTest_SetupStunned = 0x80860524; // type:func -EnTest_Stunned = 0x80860600; // type:func -func_808627C4 = 0x80860778; // type:func -func_808628C8 = 0x8086087C; // type:func -func_80862DBC = 0x80860D74; // type:func -func_80862E6C = 0x80860E28; // type:func -func_80862FA8 = 0x80860F64; // type:func -func_80863044 = 0x80861000; // type:func -func_808630F0 = 0x808610AC; // type:func -func_8086318C = 0x80861148; // type:func -EnTest_SetupRecoil = 0x808611FC; // type:func -EnTest_Recoil = 0x80861250; // type:func -EnTest_Rise = 0x8086131C; // type:func -func_808633E8 = 0x808613A4; // type:func -EnTest_UpdateHeadRot = 0x80861420; // type:func -EnTest_UpdateDamage = 0x808614B8; // type:func -EnTest_Update = 0x80861658; // type:func -EnTest_OverrideLimbDraw = 0x80861A84; // type:func -EnTest_PostLimbDraw = 0x80861C58; // type:func -EnTest_Draw = 0x80861FE0; // type:func -func_80864158 = 0x808620F4; // type:func -EnTest_ReactToProjectile = 0x80862184; // type:func -EnGirlA_SetupAction = 0x80862E80; // type:func -EnGirlA_TryChangeShopItem = 0x80862E8C; // type:func -EnGirlA_InitItem = 0x80863004; // type:func -EnGirlA_Init = 0x808630A8; // type:func -EnGirlA_Destroy = 0x808630DC; // type:func -EnGirlA_CanBuy_Arrows = 0x8086310C; // type:func -EnGirlA_CanBuy_Bombs = 0x808631BC; // type:func -EnGirlA_CanBuy_DekuNuts = 0x8086325C; // type:func -EnGirlA_CanBuy_DekuSticks = 0x80863314; // type:func -EnGirlA_CanBuy_Fish = 0x808633CC; // type:func -EnGirlA_CanBuy_RedPotion = 0x80863444; // type:func -EnGirlA_CanBuy_GreenPotion = 0x808634BC; // type:func -EnGirlA_CanBuy_BluePotion = 0x80863534; // type:func -EnGirlA_CanBuy_Longsword = 0x808635AC; // type:func -EnGirlA_CanBuy_HylianShield = 0x80863640; // type:func -EnGirlA_CanBuy_DekuShield = 0x808636C0; // type:func -EnGirlA_CanBuy_GoronTunic = 0x80863740; // type:func -EnGirlA_CanBuy_ZoraTunic = 0x808637E8; // type:func -EnGirlA_CanBuy_RecoveryHeart = 0x80863890; // type:func -EnGirlA_CanBuy_MilkBottle = 0x808638DC; // type:func -EnGirlA_CanBuy_WeirdEgg = 0x80863938; // type:func -EnGirlA_CanBuy_Unk19 = 0x80863994; // type:func -EnGirlA_CanBuy_Unk20 = 0x808639A8; // type:func -EnGirlA_CanBuy_Bombchus = 0x808639BC; // type:func -EnGirlA_CanBuy_DekuSeeds = 0x80863A40; // type:func -EnGirlA_CanBuy_SoldOut = 0x80863AF0; // type:func -EnGirlA_CanBuy_BlueFire = 0x80863B04; // type:func -EnGirlA_CanBuy_Bugs = 0x80863B7C; // type:func -EnGirlA_CanBuy_Poe = 0x80863BF4; // type:func -EnGirlA_CanBuy_Fairy = 0x80863C6C; // type:func -EnGirlA_ItemGive_Arrows = 0x80863CE4; // type:func -EnGirlA_ItemGive_Bombs = 0x80863D2C; // type:func -EnGirlA_ItemGive_DekuNuts = 0x80863DCC; // type:func -EnGirlA_ItemGive_DekuSticks = 0x80863E3C; // type:func -EnGirlA_ItemGive_Longsword = 0x80863E78; // type:func -EnGirlA_ItemGive_HylianShield = 0x80863EC0; // type:func -EnGirlA_ItemGive_DekuShield = 0x80863EFC; // type:func -EnGirlA_ItemGive_GoronTunic = 0x80863F38; // type:func -EnGirlA_ItemGive_ZoraTunic = 0x80863F74; // type:func -EnGirlA_ItemGive_Health = 0x80863FB0; // type:func -EnGirlA_ItemGive_MilkBottle = 0x80863FF0; // type:func -EnGirlA_ItemGive_WeirdEgg = 0x8086402C; // type:func -EnGirlA_ItemGive_Unk19 = 0x80864068; // type:func -EnGirlA_ItemGive_Unk20 = 0x80864098; // type:func -EnGirlA_ItemGive_DekuSeeds = 0x808640C8; // type:func -EnGirlA_ItemGive_BottledItem = 0x80864104; // type:func -EnGirlA_BuyEvent_ShieldDiscount = 0x80864234; // type:func -EnGirlA_BuyEvent_GoronTunic = 0x808642D4; // type:func -EnGirlA_BuyEvent_ZoraTunic = 0x80864304; // type:func -EnGirlA_BuyEvent_ObtainBombchuPack = 0x80864334; // type:func -EnGirlA_Noop = 0x80864448; // type:func -EnGirlA_SetItemDescription = 0x80864458; // type:func -EnGirlA_SetItemOutOfStock = 0x80864580; // type:func -EnGirlA_UpdateStockedItem = 0x808645B4; // type:func -EnGirlA_TrySetMaskItemDescription = 0x8086462C; // type:func -EnGirlA_WaitForObject = 0x808646BC; // type:func -EnGirlA_Update2 = 0x80864A6C; // type:func -EnGirlA_Update = 0x80864B28; // type:func -func_80A3C498 = 0x80864B4C; // type:func -EnGirlA_Draw = 0x80864B90; // type:func -EnPart_Init = 0x808657A0; // type:func -EnPart_Destroy = 0x808657B0; // type:func -func_80ACDDE8 = 0x808657C0; // type:func -func_80ACE13C = 0x80865B14; // type:func -func_80ACE5B8 = 0x80865F90; // type:func -func_80ACE5C8 = 0x80865FA4; // type:func -func_80ACE7E8 = 0x808661C8; // type:func -EnPart_Update = 0x808663C4; // type:func -func_80ACEAC0 = 0x808664A4; // type:func -EnPart_Draw = 0x8086655C; // type:func -EnLight_Init = 0x80866E00; // type:func -EnLight_Destroy = 0x80866FE0; // type:func -EnLight_UpdatePosRot = 0x80867014; // type:func -EnLight_Update = 0x80867090; // type:func -EnLight_UpdateSwitch = 0x80867334; // type:func -EnLight_Draw = 0x8086776C; // type:func -EnDoor_Init = 0x80867C00; // type:func -EnDoor_Destroy = 0x80867E1C; // type:func -EnDoor_SetupType = 0x80867E50; // type:func -EnDoor_Idle = 0x80868008; // type:func -EnDoor_WaitForCheck = 0x808682C0; // type:func -EnDoor_Check = 0x8086830C; // type:func -EnDoor_AjarWait = 0x80868344; // type:func -EnDoor_AjarOpen = 0x80868378; // type:func -EnDoor_AjarClose = 0x808683E8; // type:func -EnDoor_Open = 0x80868430; // type:func -EnDoor_Update = 0x80868684; // type:func -EnDoor_OverrideLimbDraw = 0x808686A8; // type:func -EnDoor_Draw = 0x808687DC; // type:func -EnBox_SetupAction = 0x80868A40; // type:func -EnBox_ClipToGround = 0x80868A4C; // type:func -EnBox_Init = 0x80868AD8; // type:func -EnBox_Destroy = 0x80868F48; // type:func -EnBox_RandomDustKinematic = 0x80868F7C; // type:func -EnBox_SpawnDust = 0x80869080; // type:func -EnBox_Fall = 0x80869134; // type:func -EnBox_FallOnSwitchFlag = 0x808692B8; // type:func -func_809C9700 = 0x80869388; // type:func -EnBox_AppearOnSwitchFlag = 0x80869518; // type:func -EnBox_AppearOnRoomClear = 0x80869598; // type:func -EnBox_AppearInit = 0x80869650; // type:func -EnBox_AppearAnimation = 0x8086970C; // type:func -EnBox_WaitOpen = 0x808697B8; // type:func -EnBox_Open = 0x808699EC; // type:func -EnBox_SpawnIceSmoke = 0x80869B74; // type:func -EnBox_Update = 0x80869E20; // type:func -EnBox_PostLimbDraw = 0x80869F5C; // type:func -EnBox_EmptyDList = 0x8086A0C4; // type:func -func_809CA4A0 = 0x8086A0E8; // type:func -func_809CA518 = 0x8086A128; // type:func -EnBox_Draw = 0x8086A168; // type:func -EnPoh_Init = 0x8086A5A0; // type:func -EnPoh_Destroy = 0x8086A8E8; // type:func -func_80ADE114 = 0x8086A968; // type:func -EnPoh_SetupIdle = 0x8086A9C0; // type:func -func_80ADE1BC = 0x8086AA10; // type:func -EnPoh_SetupAttack = 0x8086AA60; // type:func -func_80ADE28C = 0x8086AAE0; // type:func -func_80ADE368 = 0x8086ABBC; // type:func -EnPoh_SetupInitialAction = 0x8086AC30; // type:func -func_80ADE48C = 0x8086ACE0; // type:func -func_80ADE4C8 = 0x8086AD20; // type:func -func_80ADE514 = 0x8086AD6C; // type:func -EnPoh_SetupDisappear = 0x8086ADC4; // type:func -EnPoh_SetupAppear = 0x8086AE1C; // type:func -EnPoh_SetupDeath = 0x8086AE68; // type:func -func_80ADE6D4 = 0x8086AF34; // type:func -EnPoh_Talk = 0x8086B020; // type:func -func_80ADE950 = 0x8086B1B8; // type:func -func_80ADE998 = 0x8086B204; // type:func -func_80ADE9BC = 0x8086B22C; // type:func -EnPoh_MoveTowardsPlayerHeight = 0x8086B240; // type:func -func_80ADEA5C = 0x8086B2D4; // type:func -func_80ADEAC4 = 0x8086B344; // type:func -EnPoh_Idle = 0x8086B400; // type:func -func_80ADEC9C = 0x8086B51C; // type:func -EnPoh_Attack = 0x8086B680; // type:func -func_80ADEECC = 0x8086B750; // type:func -func_80ADEF38 = 0x8086B7BC; // type:func -EnPoh_ComposerAppear = 0x8086B93C; // type:func -func_80ADF15C = 0x8086B9E0; // type:func -func_80ADF574 = 0x8086BDF8; // type:func -func_80ADF5E0 = 0x8086BE64; // type:func -EnPoh_Disappear = 0x8086BEE4; // type:func -EnPoh_Appear = 0x8086C000; // type:func -func_80ADF894 = 0x8086C120; // type:func -EnPoh_Death = 0x8086C220; // type:func -func_80ADFA90 = 0x8086C320; // type:func -func_80ADFE28 = 0x8086C6B8; // type:func -func_80ADFE80 = 0x8086C710; // type:func -func_80AE009C = 0x8086C92C; // type:func -EnPoh_TalkRegular = 0x8086C96C; // type:func -EnPoh_TalkComposer = 0x8086CA98; // type:func -func_80AE032C = 0x8086CBC4; // type:func -EnPoh_UpdateVisibility = 0x8086CC5C; // type:func -EnPoh_Update = 0x8086CDCC; // type:func -func_80AE067C = 0x8086CF18; // type:func -func_80AE089C = 0x8086D138; // type:func -EnPoh_UpdateLiving = 0x8086D2B8; // type:func -EnPoh_OverrideLimbDraw = 0x8086D498; // type:func -EnPoh_PostLimbDraw = 0x8086D58C; // type:func -EnPoh_DrawRegular = 0x8086D77C; // type:func -EnPoh_DrawComposer = 0x8086D9A4; // type:func -EnPoh_UpdateDead = 0x8086DE20; // type:func -EnPoh_DrawSoul = 0x8086DE74; // type:func -EnOkuta_Init = 0x8086E790; // type:func -EnOkuta_Destroy = 0x8086E99C; // type:func -EnOkuta_SpawnBubbles = 0x8086E9C8; // type:func -EnOkuta_SpawnDust = 0x8086EA74; // type:func -EnOkuta_SpawnSplash = 0x8086EADC; // type:func -EnOkuta_SpawnRipple = 0x8086EB20; // type:func -EnOkuta_SetupWaitToAppear = 0x8086EBC4; // type:func -EnOkuta_SetupAppear = 0x8086EBF4; // type:func -EnOkuta_SetupHide = 0x8086EC64; // type:func -EnOkuta_SetupWaitToShoot = 0x8086ECA4; // type:func -EnOkuta_SetupShoot = 0x8086ED04; // type:func -EnOkuta_SetupWaitToDie = 0x8086EDF0; // type:func -EnOkuta_SetupDie = 0x8086EE78; // type:func -EnOkuta_SetupFreeze = 0x8086EEC0; // type:func -EnOkuta_SpawnProjectile = 0x8086EF0C; // type:func -EnOkuta_WaitToAppear = 0x8086F04C; // type:func -EnOkuta_Appear = 0x8086F0A8; // type:func -EnOkuta_Hide = 0x8086F1EC; // type:func -EnOkuta_WaitToShoot = 0x8086F2EC; // type:func -EnOkuta_Shoot = 0x8086F41C; // type:func -EnOkuta_WaitToDie = 0x8086F59C; // type:func -EnOkuta_Die = 0x8086F5F0; // type:func -EnOkuta_Freeze = 0x8086F904; // type:func -EnOkuta_ProjectileFly = 0x8086FA80; // type:func -EnOkuta_UpdateHeadScale = 0x8086FCCC; // type:func -EnOkuta_ColliderCheck = 0x80870074; // type:func -EnOkuta_Update = 0x80870124; // type:func -EnOkuta_GetSnoutScale = 0x808704A4; // type:func -EnOkuta_OverrideLimbDraw = 0x8087072C; // type:func -EnOkuta_Draw = 0x80870828; // type:func -EnBom_SetupAction = 0x80870D70; // type:func -EnBom_Init = 0x80870D7C; // type:func -EnBom_Destroy = 0x80870E94; // type:func -EnBom_Move = 0x80870ED4; // type:func -EnBom_WaitForRelease = 0x808710A4; // type:func -EnBom_Explode = 0x808710F0; // type:func -EnBom_Update = 0x80871240; // type:func -EnBom_Draw = 0x808718D0; // type:func -EnWallmas_Init = 0x80871C40; // type:func -EnWallmas_Destroy = 0x80871D80; // type:func -EnWallmas_TimerInit = 0x80871DAC; // type:func -EnWallmas_SetupDrop = 0x80871E08; // type:func -EnWallmas_SetupLand = 0x80871ECC; // type:func -EnWallmas_SetupStand = 0x80871F90; // type:func -EnWallmas_SetupWalk = 0x80871FD0; // type:func -EnWallmas_SetupJumpToCeiling = 0x80872020; // type:func -EnWallmas_SetupReturnToCeiling = 0x80872068; // type:func -EnWallmas_SetupTakeDamage = 0x808720EC; // type:func -EnWallmas_SetupCooldown = 0x808721A8; // type:func -EnWallmas_SetupDie = 0x808721FC; // type:func -EnWallmas_SetupTakePlayer = 0x808722C4; // type:func -EnWallmas_ProximityOrSwitchInit = 0x8087234C; // type:func -EnWallmas_SetupStun = 0x80872394; // type:func -EnWallmas_WaitToDrop = 0x80872464; // type:func -EnWallmas_Drop = 0x80872570; // type:func -EnWallmas_Land = 0x8087263C; // type:func -EnWallmas_Stand = 0x80872678; // type:func -EnWallmas_Walk = 0x808726D8; // type:func -EnWallmas_JumpToCeiling = 0x8087278C; // type:func -EnWallmas_ReturnToCeiling = 0x808727C8; // type:func -EnWallmas_TakeDamage = 0x808728E4; // type:func -EnWallmas_Cooldown = 0x80872978; // type:func -EnWallmas_Die = 0x808729B4; // type:func -EnWallmas_TakePlayer = 0x80872A28; // type:func -EnWallmas_WaitForProximity = 0x80872C4C; // type:func -EnWallmas_WaitForSwitchFlag = 0x80872CA8; // type:func -EnWallmas_Stun = 0x80872CF4; // type:func -EnWallmas_ColUpdate = 0x80872D68; // type:func -EnWallmas_Update = 0x80872E84; // type:func -EnWallmas_DrawXlu = 0x8087304C; // type:func -EnWallMas_OverrideLimbDraw = 0x808731EC; // type:func -EnWallMas_PostLimbDraw = 0x80873260; // type:func -EnWallmas_Draw = 0x80873350; // type:func -EnDodongo_SetupAction = 0x80873650; // type:func -EnDodongo_SpawnBombSmoke = 0x8087365C; // type:func -EnDodongo_Init = 0x80873B4C; // type:func -EnDodongo_Destroy = 0x80873D74; // type:func -EnDodongo_SetupIdle = 0x80873DD4; // type:func -EnDodongo_SetupWalk = 0x80873E3C; // type:func -EnDodongo_SetupBreatheFire = 0x80873EE0; // type:func -EnDodongo_SetupEndBreatheFire = 0x80873F34; // type:func -EnDodongo_SetupSwallowBomb = 0x80873F84; // type:func -EnDodongo_SetupStunned = 0x80874004; // type:func -EnDodongo_Idle = 0x8087409C; // type:func -EnDodongo_EndBreatheFire = 0x80874114; // type:func -EnDodongo_BreatheFire = 0x80874164; // type:func -EnDodongo_SwallowBomb = 0x8087433C; // type:func -EnDodongo_Walk = 0x80874834; // type:func -EnDodongo_SetupSweepTail = 0x80874B74; // type:func -EnDodongo_SweepTail = 0x80874BD4; // type:func -EnDodongo_SetupDeath = 0x80874E98; // type:func -EnDodongo_Death = 0x80874F10; // type:func -EnDodongo_Stunned = 0x8087505C; // type:func -EnDodongo_CollisionCheck = 0x808750C0; // type:func -EnDodongo_UpdateQuad = 0x808751E8; // type:func -EnDodongo_Update = 0x80875354; // type:func -EnDodongo_OverrideLimbDraw = 0x80875520; // type:func -EnDodongo_PostLimbDraw = 0x80875574; // type:func -EnDodongo_Draw = 0x808759B0; // type:func -EnDodongo_ShiftVecRadial = 0x80875AA0; // type:func -EnDodongo_AteBomb = 0x80875B00; // type:func -EnFirefly_Extinguish = 0x808763F0; // type:func -EnFirefly_Ignite = 0x8087641C; // type:func -EnFirefly_Init = 0x8087645C; // type:func -EnFirefly_Destroy = 0x80876654; // type:func -EnFirefly_SetupFlyIdle = 0x80876680; // type:func -EnFirefly_SetupFall = 0x8087672C; // type:func -EnFirefly_SetupDie = 0x808767D0; // type:func -EnFirefly_SetupRebound = 0x808767F4; // type:func -EnFirefly_SetupDiveAttack = 0x80876830; // type:func -EnFirefly_SetupFlyAway = 0x808768A0; // type:func -EnFirefly_SetupStunned = 0x808768D0; // type:func -EnFirefly_SetupFrozenFall = 0x80876940; // type:func -EnFirefly_SetupPerch = 0x80876AE0; // type:func -EnFirefly_SetupDisturbDiveAttack = 0x80876B04; // type:func -EnFirefly_ReturnToPerch = 0x80876B40; // type:func -EnFirefly_SeekTorch = 0x80876C5C; // type:func -EnFirefly_FlyIdle = 0x80876DAC; // type:func -EnFirefly_Fall = 0x8087703C; // type:func -EnFirefly_Die = 0x8087710C; // type:func -EnFirefly_DiveAttack = 0x80877188; // type:func -EnFirefly_Rebound = 0x8087739C; // type:func -EnFirefly_FlyAway = 0x80877430; // type:func -EnFirefly_Stunned = 0x80877598; // type:func -EnFirefly_FrozenFall = 0x8087763C; // type:func -EnFirefly_Perch = 0x8087769C; // type:func -EnFirefly_DisturbDiveAttack = 0x8087775C; // type:func -EnFirefly_Combust = 0x80877834; // type:func -EnFirefly_UpdateDamage = 0x808778B4; // type:func -EnFirefly_Update = 0x80877A64; // type:func -EnFirefly_OverrideLimbDraw = 0x80877D0C; // type:func -EnFirefly_PostLimbDraw = 0x80877D60; // type:func -EnFirefly_Draw = 0x808780F0; // type:func -EnFirefly_DrawInvisible = 0x808781A4; // type:func -EnHorse_BgCheckBridgeJumpPoint = 0x80878560; // type:func -EnHorse_CheckBridgeJumps = 0x808786C0; // type:func -EnHorse_RaceWaypointPos = 0x80878800; // type:func -EnHorse_RotateToPoint = 0x80878854; // type:func -EnHorse_UpdateIngoRaceInfo = 0x80878890; // type:func -EnHorse_PlayWalkingSfx = 0x80878C44; // type:func -EnHorse_PlayTrottingSfx = 0x80878D00; // type:func -EnHorse_PlayGallopingSfx = 0x80878D48; // type:func -EnHorse_SlopeSpeedMultiplier = 0x80878D90; // type:func -func_80A5BB90 = 0x80878E10; // type:func -func_80A5BBBC = 0x80878E40; // type:func -EnHorse_IdleAnimSounds = 0x80878EF0; // type:func -EnHorse_Spawn = 0x8087901C; // type:func -EnHorse_ResetCutscene = 0x80879260; // type:func -EnHorse_ResetRace = 0x80879278; // type:func -EnHorse_PlayerCanMove = 0x80879288; // type:func -EnHorse_ResetHorsebackArchery = 0x80879344; // type:func -EnHorse_ClearDustFlags = 0x8087935C; // type:func -EnHorse_Init = 0x80879368; // type:func -EnHorse_Destroy = 0x80879A98; // type:func -EnHorse_RotateToPlayer = 0x80879B08; // type:func -EnHorse_Freeze = 0x80879B78; // type:func -EnHorse_Frozen = 0x80879BF8; // type:func -EnHorse_UpdateSpeed = 0x80879D68; // type:func -EnHorse_StartMountedIdleResetAnim = 0x8087A1AC; // type:func -EnHorse_StartMountedIdle = 0x8087A1E8; // type:func -EnHorse_MountedIdle = 0x8087A324; // type:func -EnHorse_MountedIdleAnim = 0x8087A424; // type:func -EnHorse_MountedIdleWhinney = 0x8087A448; // type:func -EnHorse_MountedIdleWhinneying = 0x8087A544; // type:func -EnHorse_StartTurning = 0x8087A644; // type:func -EnHorse_MountedTurn = 0x8087A6EC; // type:func -EnHorse_StartWalkingFromIdle = 0x8087A8B0; // type:func -EnHorse_StartWalkingInterruptable = 0x8087A900; // type:func -EnHorse_StartWalking = 0x8087A924; // type:func -EnHorse_MountedWalkingReset = 0x8087A9D0; // type:func -EnHorse_MountedWalk = 0x8087AA24; // type:func -EnHorse_StartTrotting = 0x8087ACF4; // type:func -EnHorse_MountedTrotReset = 0x8087AD98; // type:func -EnHorse_MountedTrot = 0x8087ADE4; // type:func -EnHorse_StartGallopingInterruptable = 0x8087AF1C; // type:func -EnHorse_StartGalloping = 0x8087AF40; // type:func -EnHorse_MountedGallopReset = 0x8087AFE8; // type:func -EnHorse_JumpLanding = 0x8087B040; // type:func -EnHorse_MountedGallop = 0x8087B0C4; // type:func -EnHorse_StartRearing = 0x8087B298; // type:func -EnHorse_MountedRearing = 0x8087B3BC; // type:func -EnHorse_StartBraking = 0x8087B538; // type:func -EnHorse_Stopping = 0x8087B628; // type:func -EnHorse_StartReversingInterruptable = 0x8087B814; // type:func -EnHorse_StartReversing = 0x8087B838; // type:func -EnHorse_Reverse = 0x8087B8DC; // type:func -EnHorse_LowJumpInit = 0x8087BC8C; // type:func -EnHorse_StartLowJump = 0x8087BCB0; // type:func -EnHorse_Stub1 = 0x8087BDE0; // type:func -EnHorse_LowJump = 0x8087BDEC; // type:func -EnHorse_HighJumpInit = 0x8087BFB0; // type:func -EnHorse_StartHighJump = 0x8087BFD4; // type:func -EnHorse_Stub2 = 0x8087C110; // type:func -EnHorse_HighJump = 0x8087C11C; // type:func -EnHorse_InitInactive = 0x8087C2E0; // type:func -EnHorse_Inactive = 0x8087C330; // type:func -EnHorse_PlayIdleAnimation = 0x8087C45C; // type:func -EnHorse_ChangeIdleAnimation = 0x8087C62C; // type:func -EnHorse_ResetIdleAnimation = 0x8087C654; // type:func -EnHorse_StartIdleRidable = 0x8087C688; // type:func -EnHorse_Idle = 0x8087C6BC; // type:func -EnHorse_StartMovingAnimation = 0x8087C8A4; // type:func -EnHorse_SetFollowAnimation = 0x8087CA0C; // type:func -EnHorse_FollowPlayer = 0x8087CB40; // type:func -EnHorse_InitIngoHorse = 0x8087CF64; // type:func -EnHorse_SetIngoAnimation = 0x8087CFE8; // type:func -EnHorse_UpdateIngoHorseAnim = 0x8087D08C; // type:func -EnHorse_UpdateIngoRace = 0x8087D3A0; // type:func -EnHorse_CsMoveInit = 0x8087D550; // type:func -EnHorse_CsMoveToPoint = 0x8087D5BC; // type:func -EnHorse_CsSetAnimHighJump = 0x8087D70C; // type:func -EnHorse_CsPlayHighJumpAnim = 0x8087D730; // type:func -EnHorse_CsJumpInit = 0x8087D864; // type:func -EnHorse_CsJump = 0x8087D89C; // type:func -EnHorse_CsRearingInit = 0x8087DAF4; // type:func -EnHorse_CsRearing = 0x8087DC14; // type:func -EnHorse_WarpMoveInit = 0x8087DDBC; // type:func -EnHorse_CsWarpMoveToPoint = 0x8087DEA4; // type:func -EnHorse_CsWarpRearingInit = 0x8087DFF4; // type:func -EnHorse_CsWarpRearing = 0x8087E17C; // type:func -EnHorse_InitCutscene = 0x8087E324; // type:func -EnHorse_GetCutsceneFunctionIndex = 0x8087E348; // type:func -EnHorse_CutsceneUpdate = 0x8087E398; // type:func -EnHorse_UpdateHbaRaceInfo = 0x8087E4F0; // type:func -EnHorse_InitHorsebackArchery = 0x8087E6E0; // type:func -EnHorse_UpdateHbaAnim = 0x8087E714; // type:func -EnHorse_UpdateHorsebackArchery = 0x8087EA4C; // type:func -EnHorse_InitFleePlayer = 0x8087ECD8; // type:func -EnHorse_FleePlayer = 0x8087ED00; // type:func -EnHorse_BridgeJumpInit = 0x8087F554; // type:func -EnHorse_StartBridgeJump = 0x8087F78C; // type:func -EnHorse_BridgeJumpMove = 0x8087F83C; // type:func -EnHorse_CheckBridgeJumpLanding = 0x8087F998; // type:func -EnHorse_BridgeJump = 0x8087FA84; // type:func -EnHorse_Vec3fOffset = 0x8087FAC8; // type:func -EnHorse_CalcFloorHeight = 0x8087FB44; // type:func -EnHorse_ObstructMovement = 0x8087FC84; // type:func -EnHorse_CheckFloors = 0x8087FDAC; // type:func -EnHorse_MountDismount = 0x8088032C; // type:func -EnHorse_StickDirection = 0x80880430; // type:func -EnHorse_UpdateStick = 0x808804BC; // type:func -EnHorse_ResolveCollision = 0x808804FC; // type:func -EnHorse_BgCheckSlowMoving = 0x80880654; // type:func -EnHorse_UpdateBgCheckInfo = 0x80880794; // type:func -EnHorse_CheckBoost = 0x808812A0; // type:func -EnHorse_RegenBoost = 0x8088144C; // type:func -EnHorse_UpdatePlayerDir = 0x80881678; // type:func -EnHorse_TiltBody = 0x80881784; // type:func -EnHorse_UpdateConveyors = 0x80881880; // type:func -EnHorse_RandInt = 0x80881988; // type:func -EnHorse_Update = 0x808819BC; // type:func -EnHorse_PlayerDirToMountSide = 0x808821E8; // type:func -EnHorse_MountSideCheck = 0x80882228; // type:func -EnHorse_GetMountSide = 0x8088232C; // type:func -EnHorse_RandomOffset = 0x80882384; // type:func -EnHorse_PostDraw = 0x80882420; // type:func -EnHorse_OverrideLimbDraw = 0x80882F18; // type:func -EnHorse_Draw = 0x80883018; // type:func -EnArrow_SetupAction = 0x808847C0; // type:func -EnArrow_Init = 0x808847CC; // type:func -EnArrow_Destroy = 0x808849D4; // type:func -EnArrow_Shoot = 0x80884A5C; // type:func -func_809B3CEC = 0x80884B74; // type:func -EnArrow_CarryActor = 0x80884C5C; // type:func -EnArrow_Fly = 0x80884E60; // type:func -func_809B45E0 = 0x80885468; // type:func -func_809B4640 = 0x808854C8; // type:func -EnArrow_Update = 0x80885530; // type:func -func_809B4800 = 0x8088568C; // type:func -EnArrow_Draw = 0x808857F4; // type:func -EnElf_SetupAction = 0x80885EC0; // type:func -func_80A01C38 = 0x80885ECC; // type:func -func_80A01F90 = 0x80886224; // type:func -func_80A01FE0 = 0x80886278; // type:func -func_80A020A4 = 0x80886340; // type:func -func_80A0214C = 0x808863EC; // type:func -func_80A0232C = 0x808865CC; // type:func -EnElf_GetColorValue = 0x80886644; // type:func -EnElf_Init = 0x808866B4; // type:func -func_80A0299C = 0x80886C20; // type:func -func_80A029A8 = 0x80886C30; // type:func -EnElf_Destroy = 0x80886C58; // type:func -func_80A02A20 = 0x80886CA8; // type:func -func_80A02AA4 = 0x80886D2C; // type:func -func_80A02B38 = 0x80886DC0; // type:func -func_80A02BD8 = 0x80886E5C; // type:func -func_80A02C98 = 0x80886F1C; // type:func -func_80A02E30 = 0x808870B4; // type:func -func_80A02EC0 = 0x80887140; // type:func -func_80A02F2C = 0x808871AC; // type:func -func_80A03018 = 0x80887298; // type:func -func_80A03148 = 0x808873CC; // type:func -func_80A0329C = 0x80887524; // type:func -func_80A0353C = 0x808877C8; // type:func -func_80A03604 = 0x80887890; // type:func -func_80A03610 = 0x808878A0; // type:func -func_80A03814 = 0x80887AA8; // type:func -func_80A03990 = 0x80887C28; // type:func -func_80A03AB0 = 0x80887D4C; // type:func -EnElf_UpdateLights = 0x80887DB0; // type:func -func_80A03CF8 = 0x80887F84; // type:func -EnElf_ChangeColor = 0x8088861C; // type:func -func_80A04414 = 0x808886A8; // type:func -func_80A0461C = 0x808888B4; // type:func -EnElf_SpawnSparkles = 0x80888C50; // type:func -func_80A04D90 = 0x80889030; // type:func -func_80A04DE4 = 0x80889084; // type:func -func_80A04F94 = 0x80889238; // type:func -func_80A05040 = 0x808892E8; // type:func -func_80A05114 = 0x808893C4; // type:func -func_80A05188 = 0x80889440; // type:func -func_80A05208 = 0x808894C8; // type:func -func_80A052F4 = 0x808895BC; // type:func -func_80A053F0 = 0x808896C0; // type:func -EnElf_Update = 0x8088993C; // type:func -EnElf_OverrideLimbDraw = 0x80889998; // type:func -EnElf_Draw = 0x80889ABC; // type:func -EnElf_GetCuePos = 0x8088A134; // type:func -EnNiw_Init = 0x8088A880; // type:func -EnNiw_Destroy = 0x8088AD84; // type:func -func_80AB5BF8 = 0x8088ADB0; // type:func -EnNiw_SpawnAttackCucco = 0x8088B158; // type:func -func_80AB6100 = 0x8088B2A0; // type:func -EnNiw_ResetAction = 0x8088B41C; // type:func -func_80AB6324 = 0x8088B4C4; // type:func -func_80AB63A8 = 0x8088B548; // type:func -func_80AB6450 = 0x8088B5F0; // type:func -func_80AB6570 = 0x8088B710; // type:func -func_80AB6A38 = 0x8088BBDC; // type:func -func_80AB6BF8 = 0x8088BD9C; // type:func -func_80AB6D08 = 0x8088BEAC; // type:func -func_80AB6EB4 = 0x8088C058; // type:func -func_80AB6F04 = 0x8088C0A8; // type:func -func_80AB70A0 = 0x8088C248; // type:func -func_80AB70F8 = 0x8088C2A0; // type:func -func_80AB714C = 0x8088C2F4; // type:func -func_80AB7204 = 0x8088C3AC; // type:func -func_80AB7290 = 0x8088C43C; // type:func -func_80AB7328 = 0x8088C4D4; // type:func -func_80AB7420 = 0x8088C5D0; // type:func -func_80AB747C = 0x8088C62C; // type:func -EnNiw_Update = 0x8088C6E4; // type:func -EnNiw_OverrideLimbDraw = 0x8088CF90; // type:func -EnNiw_Draw = 0x8088D0E8; // type:func -EnNiw_SpawnFeather = 0x8088D198; // type:func -EnNiw_UpdateEffects = 0x8088D288; // type:func -EnNiw_DrawEffects = 0x8088D43C; // type:func -EnTite_SetupAction = 0x8088DBB0; // type:func -EnTite_Init = 0x8088DBBC; // type:func -EnTite_Destroy = 0x8088DD14; // type:func -EnTite_SetupIdle = 0x8088DD5C; // type:func -EnTite_Idle = 0x8088DDC4; // type:func -EnTite_SetupAttack = 0x8088DF08; // type:func -EnTite_Attack = 0x8088DF7C; // type:func -EnTite_SetupTurnTowardPlayer = 0x8088E624; // type:func -EnTite_TurnTowardPlayer = 0x8088E6C0; // type:func -EnTite_SetupMoveTowardPlayer = 0x8088E95C; // type:func -EnTite_MoveTowardPlayer = 0x8088EA18; // type:func -EnTite_SetupRecoil = 0x8088EF28; // type:func -EnTite_Recoil = 0x8088EF94; // type:func -EnTite_SetupStunned = 0x8088F2EC; // type:func -EnTite_Stunned = 0x8088F3A0; // type:func -EnTite_SetupDeathCry = 0x8088F73C; // type:func -EnTite_DeathCry = 0x8088F770; // type:func -EnTite_FallApart = 0x8088F7E4; // type:func -EnTite_SetupFlipOnBack = 0x8088F870; // type:func -EnTite_FlipOnBack = 0x8088F98C; // type:func -EnTite_SetupFlipUpright = 0x8088FB48; // type:func -EnTite_FlipUpright = 0x8088FB98; // type:func -EnTite_CheckDamage = 0x8088FCC0; // type:func -EnTite_Update = 0x8088FE98; // type:func -EnTite_PostLimbDraw = 0x80890284; // type:func -EnTite_Draw = 0x80890374; // type:func -EnReeba_Init = 0x80890950; // type:func -EnReeba_Destroy = 0x80890B2C; // type:func -EnReeba_SetupSurface = 0x80890BA4; // type:func -EnReeba_Surface = 0x80890CB8; // type:func -EnReeba_Move = 0x80890ED8; // type:func -EnReeba_SetupMoveBig = 0x80890FF4; // type:func -EnReeba_MoveBig = 0x80891018; // type:func -EnReeba_Recoiled = 0x80891288; // type:func -EnReeba_SetupSink = 0x808912F4; // type:func -EnReeba_Sink = 0x8089134C; // type:func -EnReeba_SetupDamaged = 0x8089145C; // type:func -EnReeba_Damaged = 0x808914C0; // type:func -EnReeba_SetupStunned = 0x80891558; // type:func -EnReeba_Stunned = 0x808915A8; // type:func -EnReeba_StunDie = 0x8089170C; // type:func -EnReeba_SetupDie = 0x80891834; // type:func -EnReeba_Die = 0x808918A8; // type:func -EnReeba_StunRecover = 0x80891A88; // type:func -EnReeba_CheckDamage = 0x80891B1C; // type:func -EnReeba_Update = 0x80891D58; // type:func -EnReeba_Draw = 0x80892008; // type:func -EnPeehat_SetupAction = 0x808923C0; // type:func -EnPeehat_Init = 0x808923CC; // type:func -EnPeehat_Destroy = 0x8089263C; // type:func -EnPeehat_SpawnDust = 0x808926B0; // type:func -EnPeehat_HitWhenGrounded = 0x80892848; // type:func -EnPeehat_Ground_SetStateGround = 0x80892A64; // type:func -EnPeehat_Ground_StateGround = 0x80892AFC; // type:func -EnPeehat_Flying_SetStateGround = 0x80892C50; // type:func -EnPeehat_Flying_StateGrounded = 0x80892CDC; // type:func -EnPeehat_Flying_SetStateFly = 0x80892DE0; // type:func -EnPeehat_Flying_StateFly = 0x80892E28; // type:func -EnPeehat_Ground_SetStateRise = 0x80892FA0; // type:func -EnPeehat_Ground_StateRise = 0x80893048; // type:func -EnPeehat_Flying_SetStateRise = 0x80893210; // type:func -EnPeehat_Flying_StateRise = 0x808932B8; // type:func -EnPeehat_Ground_SetStateSeekPlayer = 0x80893480; // type:func -EnPeehat_Ground_StateSeekPlayer = 0x808934D0; // type:func -EnPeehat_Larva_SetStateSeekPlayer = 0x8089364C; // type:func -EnPeehat_Larva_StateSeekPlayer = 0x80893698; // type:func -EnPeehat_Ground_SetStateLanding = 0x80893A70; // type:func -EnPeehat_Ground_StateLanding = 0x80893AB8; // type:func -EnPeehat_Flying_SetStateLanding = 0x80893C6C; // type:func -EnPeehat_Flying_StateLanding = 0x80893CB4; // type:func -EnPeehat_Ground_SetStateHover = 0x80893E64; // type:func -EnPeehat_Ground_StateHover = 0x80893EF4; // type:func -EnPeehat_Ground_SetStateReturnHome = 0x80894150; // type:func -EnPeehat_Ground_StateReturnHome = 0x80894188; // type:func -EnPeehat_SetStateAttackRecoil = 0x80894374; // type:func -EnPeehat_StateAttackRecoil = 0x808943D4; // type:func -EnPeehat_SetStateBoomerangStunned = 0x808945B0; // type:func -EnPeehat_StateBoomerangStunned = 0x80894634; // type:func -EnPeehat_Adult_SetStateDie = 0x808946B0; // type:func -EnPeehat_Adult_StateDie = 0x8089471C; // type:func -EnPeehat_SetStateExplode = 0x808949DC; // type:func -EnPeehat_StateExplode = 0x80894A34; // type:func -EnPeehat_Adult_CollisionCheck = 0x80894B0C; // type:func -EnPeehat_Update = 0x80894CF8; // type:func -EnPeehat_OverrideLimbDraw = 0x8089515C; // type:func -EnPeehat_PostLimbDraw = 0x80895334; // type:func -EnPeehat_Draw = 0x808954E8; // type:func -EnHoll_SetupAction = 0x80895AC0; // type:func -EnHoll_IsKokiriLayer8 = 0x80895ACC; // type:func -EnHoll_ChooseAction = 0x80895AFC; // type:func -EnHoll_Init = 0x80895B64; // type:func -EnHoll_Destroy = 0x80895BA0; // type:func -EnHoll_SwapRooms = 0x80895BD0; // type:func -EnHoll_HorizontalVisibleNarrow = 0x80895C8C; // type:func -EnHoll_HorizontalInvisible = 0x80895ECC; // type:func -EnHoll_VerticalDownBgCoverLarge = 0x8089607C; // type:func -EnHoll_VerticalBgCover = 0x80896268; // type:func -EnHoll_VerticalInvisible = 0x808963E8; // type:func -EnHoll_HorizontalBgCoverSwitchFlag = 0x808964E0; // type:func -EnHoll_WaitRoomLoaded = 0x808966F0; // type:func -EnHoll_Update = 0x80896768; // type:func -EnHoll_Draw = 0x8089678C; // type:func -EnSceneChange_SetupAction = 0x80896A90; // type:func -EnSceneChange_Init = 0x80896A9C; // type:func -EnSceneChange_Destroy = 0x80896AC4; // type:func -EnSceneChange_DoNothing = 0x80896AD4; // type:func -EnSceneChange_Update = 0x80896AE4; // type:func -EnSceneChange_Draw = 0x80896B08; // type:func -EnZf_SetupAction = 0x80896BC0; // type:func -EnZf_PrimaryFloorCheck = 0x80896BCC; // type:func -EnZf_SecondaryFloorCheck = 0x80896D3C; // type:func -EnZf_Init = 0x80896E6C; // type:func -EnZf_Destroy = 0x808971A4; // type:func -EnZf_FindPlatform = 0x80897228; // type:func -EnZf_FindNextPlatformAwayFromPlayer = 0x808973F0; // type:func -EnZf_FindNextPlatformTowardsPlayer = 0x80897694; // type:func -EnZf_CanAttack = 0x80897870; // type:func -func_80B44DC4 = 0x80897944; // type:func -EnZf_ChooseAction = 0x80897A10; // type:func -EnZf_SetupDropIn = 0x80897C30; // type:func -EnZf_DropIn = 0x80897CF8; // type:func -func_80B45384 = 0x80897F08; // type:func -func_80B4543C = 0x80897FC0; // type:func -EnZf_SetupApproachPlayer = 0x8089823C; // type:func -EnZf_ApproachPlayer = 0x808982D0; // type:func -EnZf_SetupJumpForward = 0x808989BC; // type:func -EnZf_JumpForward = 0x80898A7C; // type:func -func_80B4604C = 0x80898BD8; // type:func -func_80B46098 = 0x80898C24; // type:func -func_80B462E4 = 0x80898E70; // type:func -func_80B463E4 = 0x80898F78; // type:func -EnZf_SetupSlash = 0x808995BC; // type:func -EnZf_Slash = 0x80899678; // type:func -EnZf_SetupRecoilFromBlockedSlash = 0x80899904; // type:func -EnZf_RecoilFromBlockedSlash = 0x80899978; // type:func -EnZf_SetupJumpBack = 0x80899A30; // type:func -EnZf_JumpBack = 0x80899AD0; // type:func -EnZf_SetupStunned = 0x80899BF4; // type:func -EnZf_Stunned = 0x80899CC4; // type:func -EnZf_SetupSheatheSword = 0x80899F04; // type:func -EnZf_SheatheSword = 0x80899FE0; // type:func -EnZf_SetupHopAndTaunt = 0x8089A08C; // type:func -EnZf_HopAndTaunt = 0x8089A0EC; // type:func -EnZf_SetupHopAway = 0x8089A344; // type:func -EnZf_HopAway = 0x8089A3C4; // type:func -EnZf_SetupDrawSword = 0x8089A810; // type:func -EnZf_DrawSword = 0x8089A8A4; // type:func -EnZf_SetupDamaged = 0x8089A954; // type:func -EnZf_Damaged = 0x8089AA60; // type:func -EnZf_SetupJumpUp = 0x8089ADC0; // type:func -EnZf_JumpUp = 0x8089AE68; // type:func -func_80B483E4 = 0x8089AF94; // type:func -EnZf_CircleAroundPlayer = 0x8089B130; // type:func -EnZf_SetupDie = 0x8089B8B0; // type:func -EnZf_Die = 0x8089BA14; // type:func -EnZf_UpdateHeadRotation = 0x8089BB54; // type:func -EnZf_UpdateDamage = 0x8089BC78; // type:func -EnZf_Update = 0x8089BE10; // type:func -EnZf_OverrideLimbDraw = 0x8089C1C8; // type:func -EnZf_PostLimbDraw = 0x8089C254; // type:func -EnZf_Draw = 0x8089C4A8; // type:func -EnZf_SetupCircleAroundPlayer = 0x8089C6F4; // type:func -EnZf_DodgeRangedEngaging = 0x8089C7C0; // type:func -EnZf_DodgeRangedWaiting = 0x8089C9EC; // type:func -EnHata_Init = 0x8089D6B0; // type:func -EnHata_Destroy = 0x8089D7E8; // type:func -EnHata_Update = 0x8089D830; // type:func -EnHata_OverrideLimbDraw = 0x8089DA4C; // type:func -EnHata_PostLimbDraw = 0x8089DAD0; // type:func -EnHata_Draw = 0x8089DAE8; // type:func -func_808C1190 = 0x8089DC40; // type:func -func_808C11D0 = 0x8089DC80; // type:func -func_808C1200 = 0x8089DCB0; // type:func -func_808C1230 = 0x8089DCE0; // type:func -func_808C1278 = 0x8089DD28; // type:func -func_808C12C4 = 0x8089DD74; // type:func -func_808C1554 = 0x8089E004; // type:func -func_808C17C8 = 0x8089E284; // type:func -BossDodongo_AteExplosive = 0x8089E36C; // type:func -BossDodongo_Init = 0x8089E42C; // type:func -BossDodongo_Destroy = 0x8089E708; // type:func -BossDodongo_SetupIntroCutscene = 0x8089E748; // type:func -BossDodongo_IntroCutscene = 0x8089E7C8; // type:func -BossDodongo_SetupDamaged = 0x8089F344; // type:func -BossDodongo_SetupExplode = 0x8089F3D8; // type:func -BossDodongo_SetupWalk = 0x8089F47C; // type:func -BossDodongo_SetupRoll = 0x8089F50C; // type:func -BossDodongo_SetupBlowFire = 0x8089F580; // type:func -BossDodongo_SetupInhale = 0x8089F608; // type:func -BossDodongo_Damaged = 0x8089F698; // type:func -BossDodongo_Explode = 0x8089F74C; // type:func -BossDodongo_LayDown = 0x8089F9A0; // type:func -BossDodongo_Vulnerable = 0x8089FA80; // type:func -BossDodongo_GetUp = 0x8089FB6C; // type:func -BossDodongo_BlowFire = 0x8089FBD0; // type:func -BossDodongo_Inhale = 0x8089FD00; // type:func -BossDodongo_Walk = 0x8089FDD4; // type:func -BossDodongo_Roll = 0x808A01E4; // type:func -BossDodongo_Update = 0x808A05E0; // type:func -BossDodongo_OverrideLimbDraw = 0x808A1420; // type:func -BossDodongo_PostLimbDraw = 0x808A1644; // type:func -BossDodongo_Draw = 0x808A1728; // type:func -func_808C4F6C = 0x808A19F0; // type:func -func_808C50A8 = 0x808A1B2C; // type:func -BossDodongo_PlayerYawCheck = 0x808A1C78; // type:func -BossDodongo_PlayerPosCheck = 0x808A1CD4; // type:func -BossDodongo_SpawnFire = 0x808A1D68; // type:func -BossDodongo_UpdateDamage = 0x808A1DDC; // type:func -BossDodongo_SetupDeathCutscene = 0x808A1F48; // type:func -BossDodongo_DeathCutscene = 0x808A2000; // type:func -BossDodongo_UpdateEffects = 0x808A3740; // type:func -BossDodongo_DrawEffects = 0x808A3874; // type:func -BossGoma_ClearPixels16x16Rgba16 = 0x808A7740; // type:func -BossGoma_ClearPixels32x32Rgba16 = 0x808A7770; // type:func -BossGoma_ClearPixels = 0x808A77C4; // type:func -BossGoma_Init = 0x808A7974; // type:func -BossGoma_PlayEffectsAndSfx = 0x808A7B2C; // type:func -BossGoma_Destroy = 0x808A7C34; // type:func -BossGoma_SetupDefeated = 0x808A7C74; // type:func -BossGoma_SetupEncounter = 0x808A7D3C; // type:func -BossGoma_SetupFloorIdle = 0x808A7DE0; // type:func -BossGoma_SetupCeilingIdle = 0x808A7E68; // type:func -BossGoma_SetupFallJump = 0x808A7EEC; // type:func -BossGoma_SetupFallStruckDown = 0x808A7F68; // type:func -BossGoma_SetupCeilingSpawnGohmas = 0x808A7FE4; // type:func -BossGoma_SetupCeilingPrepareSpawnGohmas = 0x808A8058; // type:func -BossGoma_SetupWallClimb = 0x808A80D0; // type:func -BossGoma_SetupCeilingMoveToCenter = 0x808A8154; // type:func -BossGoma_SetupFloorMain = 0x808A81E8; // type:func -BossGoma_SetupFloorLand = 0x808A8268; // type:func -BossGoma_SetupFloorLandStruckDown = 0x808A82F4; // type:func -BossGoma_SetupFloorStunned = 0x808A8398; // type:func -BossGoma_SetupFloorAttackPosture = 0x808A8408; // type:func -BossGoma_SetupFloorPrepareAttack = 0x808A847C; // type:func -BossGoma_SetupFloorAttack = 0x808A84F0; // type:func -BossGoma_SetupFloorDamaged = 0x808A856C; // type:func -BossGoma_UpdateCeilingMovement = 0x808A85E0; // type:func -BossGoma_SetupEncounterState4 = 0x808A881C; // type:func -BossGoma_Encounter = 0x808A89CC; // type:func -BossGoma_Defeated = 0x808A9AC4; // type:func -BossGoma_FloorAttackPosture = 0x808AA934; // type:func -BossGoma_FloorPrepareAttack = 0x808AAA3C; // type:func -BossGoma_FloorAttack = 0x808AAA98; // type:func -BossGoma_FloorDamaged = 0x808AACE8; // type:func -BossGoma_FloorLandStruckDown = 0x808AAD80; // type:func -BossGoma_FloorLand = 0x808AAE24; // type:func -BossGoma_FloorStunned = 0x808AAE80; // type:func -BossGoma_FallJump = 0x808AAFAC; // type:func -BossGoma_FallStruckDown = 0x808AB060; // type:func -BossGoma_CeilingSpawnGohmas = 0x808AB120; // type:func -BossGoma_CeilingPrepareSpawnGohmas = 0x808AB27C; // type:func -BossGoma_FloorIdle = 0x808AB2D8; // type:func -BossGoma_CeilingIdle = 0x808AB340; // type:func -BossGoma_FloorMain = 0x808AB438; // type:func -BossGoma_WallClimb = 0x808AB6A8; // type:func -BossGoma_CeilingMoveToCenter = 0x808AB774; // type:func -BossGoma_UpdateEye = 0x808AB970; // type:func -BossGoma_UpdateTailLimbsScale = 0x808ABBB8; // type:func -BossGoma_UpdateHit = 0x808ABCC4; // type:func -BossGoma_UpdateMainEnvColor = 0x808ABEA4; // type:func -BossGoma_UpdateEyeEnvColor = 0x808AC020; // type:func -BossGoma_Update = 0x808AC0C8; // type:func -BossGoma_OverrideLimbDraw = 0x808AC298; // type:func -BossGoma_PostLimbDraw = 0x808AC6E4; // type:func -BossGoma_EmptyDlist = 0x808AC8E8; // type:func -BossGoma_NoBackfaceCullingDlist = 0x808AC90C; // type:func -BossGoma_Draw = 0x808AC978; // type:func -BossGoma_SpawnChildGohma = 0x808ACA68; // type:func -func_80B4AB40 = 0x808AD6E0; // type:func -func_80B4AB48 = 0x808AD6E8; // type:func -EnZl1_Init = 0x808AD6F0; // type:func -EnZl1_Destroy = 0x808AD980; // type:func -func_80B4AE18 = 0x808AD9C0; // type:func -func_80B4AF18 = 0x808ADAC0; // type:func -func_80B4B010 = 0x808ADBB8; // type:func -func_80B4B240 = 0x808ADDF0; // type:func -func_80B4B7F4 = 0x808AE3A4; // type:func -func_80B4B834 = 0x808AE3E8; // type:func -func_80B4B874 = 0x808AE42C; // type:func -func_80B4B8B4 = 0x808AE46C; // type:func -func_80B4BBC4 = 0x808AE77C; // type:func -func_80B4BC78 = 0x808AE830; // type:func -func_80B4BF2C = 0x808AEAE4; // type:func -EnZl1_Update = 0x808AEDD8; // type:func -EnZl1_OverrideLimbDraw = 0x808AEEFC; // type:func -EnZl1_PostLimbDraw = 0x808AEFBC; // type:func -EnZl1_Draw = 0x808AF018; // type:func -EnViewer_SetupAction = 0x808B14F0; // type:func -EnViewer_Init = 0x808B14FC; // type:func -EnViewer_Destroy = 0x808B15D0; // type:func -EnViewer_InitAnimGanondorfOrZelda = 0x808B15FC; // type:func -EnViewer_InitAnimImpa = 0x808B1748; // type:func -EnViewer_InitAnimHorse = 0x808B17D8; // type:func -EnViewer_InitImpl = 0x808B1870; // type:func -EnViewer_UpdateImpl = 0x808B1A2C; // type:func -EnViewer_Update = 0x808B2584; // type:func -EnViewer_Ganondorf3OverrideLimbDraw = 0x808B25D8; // type:func -EnViewer_Ganondorf9PostLimbDraw = 0x808B2648; // type:func -EnViewer_GanondorfPostLimbDrawUpdateCapeVec = 0x808B2710; // type:func -EnViewer_DrawGanondorf = 0x808B2750; // type:func -EnViewer_DrawHorse = 0x808B2B7C; // type:func -EnViewer_ZeldaOverrideLimbDraw = 0x808B2BA8; // type:func -EnViewer_ZeldaPostLimbDraw = 0x808B2C28; // type:func -EnViewer_DrawZelda = 0x808B2C70; // type:func -EnViewer_ImpaOverrideLimbDraw = 0x808B3314; // type:func -EnViewer_DrawImpa = 0x808B333C; // type:func -EnViewer_Draw = 0x808B3450; // type:func -EnViewer_UpdatePosition = 0x808B3540; // type:func -EnViewer_InitFireEffect = 0x808B3910; // type:func -EnViewer_DrawFireEffects = 0x808B3A58; // type:func -EnViewer_UpdateGanondorfCape = 0x808B3D9C; // type:func -EnGoma_Init = 0x808B43B0; // type:func -EnGoma_Destroy = 0x808B473C; // type:func -EnGoma_SetupFlee = 0x808B478C; // type:func -EnGoma_Flee = 0x808B4830; // type:func -EnGoma_EggFallToGround = 0x808B48D0; // type:func -EnGoma_Egg = 0x808B4B5C; // type:func -EnGoma_SetupHatch = 0x808B4D9C; // type:func -EnGoma_Hatch = 0x808B4E64; // type:func -EnGoma_SetupHurt = 0x808B4EAC; // type:func -EnGoma_Hurt = 0x808B4F98; // type:func -EnGoma_SetupDie = 0x808B5020; // type:func -EnGoma_Die = 0x808B50E0; // type:func -EnGoma_SetupDead = 0x808B5184; // type:func -EnGoma_Dead = 0x808B51FC; // type:func -EnGoma_SetupStand = 0x808B536C; // type:func -EnGoma_SetupChasePlayer = 0x808B53F8; // type:func -EnGoma_SetupPrepareJump = 0x808B5478; // type:func -EnGoma_PrepareJump = 0x808B54F4; // type:func -EnGoma_SetupLand = 0x808B558C; // type:func -EnGoma_Land = 0x808B5604; // type:func -EnGoma_SetupJump = 0x808B5670; // type:func -EnGoma_Jump = 0x808B5718; // type:func -EnGoma_Stand = 0x808B57D0; // type:func -EnGoma_ChasePlayer = 0x808B584C; // type:func -EnGoma_SetupStunned = 0x808B5954; // type:func -EnGoma_Stunned = 0x808B59F0; // type:func -EnGoma_LookAtPlayer = 0x808B5AF0; // type:func -EnGoma_UpdateHit = 0x808B5B9C; // type:func -EnGoma_UpdateEyeEnvColor = 0x808B5DCC; // type:func -EnGoma_SetFloorRot = 0x808B5E5C; // type:func -EnGoma_Update = 0x808B5F70; // type:func -EnGoma_OverrideLimbDraw = 0x808B61BC; // type:func -EnGoma_NoBackfaceCullingDlist = 0x808B6318; // type:func -EnGoma_Draw = 0x808B6384; // type:func -EnGoma_Debris = 0x808B6810; // type:func -EnGoma_SpawnHatchDebris = 0x808B6854; // type:func -EnGoma_BossLimb = 0x808B69B8; // type:func -BgPushbox_SetupAction = 0x808B7060; // type:func -BgPushbox_Init = 0x808B706C; // type:func -BgPushbox_Destroy = 0x808B7104; // type:func -BgPushbox_UpdateImpl = 0x808B7138; // type:func -BgPushbox_Update = 0x808B7214; // type:func -BgPushbox_Draw = 0x808B7244; // type:func -EnBubble_SetDimensions = 0x808B7360; // type:func -func_809CBCBC = 0x808B741C; // type:func -func_809CBCEC = 0x808B7450; // type:func -EnBubble_DamagePlayer = 0x808B7474; // type:func -EnBubble_Explosion = 0x808B74E0; // type:func -func_809CBFD4 = 0x808B773C; // type:func -func_809CC020 = 0x808B7788; // type:func -EnBubble_Vec3fNormalizedReflect = 0x808B77DC; // type:func -EnBubble_Vec3fNormalize = 0x808B7864; // type:func -EnBubble_Fly = 0x808B78DC; // type:func -func_809CC648 = 0x808B7DB8; // type:func -EnBubble_DetectPop = 0x808B7E54; // type:func -func_809CC774 = 0x808B7EE4; // type:func -EnBubble_Init = 0x808B7FF8; // type:func -EnBubble_Destroy = 0x808B80F8; // type:func -EnBubble_Wait = 0x808B8124; // type:func -EnBubble_Pop = 0x808B81D8; // type:func -EnBubble_Disappear = 0x808B8228; // type:func -EnBubble_Regrow = 0x808B8270; // type:func -EnBubble_Update = 0x808B82E0; // type:func -EnBubble_Draw = 0x808B835C; // type:func -DoorShutter_SetupAction = 0x808B8780; // type:func -DoorShutter_SetupDoor = 0x808B8790; // type:func -DoorShutter_Init = 0x808B8978; // type:func -DoorShutter_Destroy = 0x808B8B90; // type:func -DoorShutter_WaitForObject = 0x808B8C00; // type:func -DoorShutter_GetPlayerDistance = 0x808B8D3C; // type:func -DoorShutter_GetPlayerSide = 0x808B8DD4; // type:func -DoorShutter_WaitClear = 0x808B8F54; // type:func -DoorShutter_Unopenable = 0x808B9000; // type:func -DoorShutter_Idle = 0x808B9010; // type:func -DoorShutter_InitOpeningDoorCam = 0x808B9164; // type:func -DoorShutter_UpdateOpening = 0x808B921C; // type:func -DoorShutter_UpdateBarsClosed = 0x808B9314; // type:func -DoorShutter_BarAndWaitSwitchFlag = 0x808B93F8; // type:func -DoorShutter_UnbarredCheckSwitchFlag = 0x808B94B0; // type:func -DoorShutter_Open = 0x808B951C; // type:func -DoorShutter_Unbar = 0x808B966C; // type:func -DoorShutter_SetupClosed = 0x808B973C; // type:func -DoorShutter_Close = 0x808B9908; // type:func -DoorShutter_JabuDoorClose = 0x808B9A4C; // type:func -DoorShutter_WaitPlayerSurprised = 0x808B9A90; // type:func -DoorShutter_GohmaBlockFall = 0x808B9AE8; // type:func -DoorShutter_GohmaBlockBounce = 0x808B9BE4; // type:func -DoorShutter_PhantomGanonBarsRaise = 0x808B9C70; // type:func -DoorShutter_Update = 0x808B9D00; // type:func -DoorShutter_DrawJabuJabuDoor = 0x808B9D54; // type:func -DoorShutter_ShouldDraw = 0x808B9F44; // type:func -DoorShutter_Draw = 0x808B9FF0; // type:func -DoorShutter_RequestQuakeAndRumble = 0x808BA544; // type:func -EnDodojr_Init = 0x808BAA40; // type:func -EnDodojr_Destroy = 0x808BAB28; // type:func -EnDodojr_DoSwallowedBombEffects = 0x808BAB54; // type:func -EnDodojr_SpawnLargeDust = 0x808BAB98; // type:func -EnDodojr_SpawnSmallDust = 0x808BADB8; // type:func -EnDodojr_UpdateBounces = 0x808BAF38; // type:func -EnDodojr_SetupCrawlTowardsTarget = 0x808BB01C; // type:func -EnDodojr_SetupFlipBounce = 0x808BB0A4; // type:func -EnDodojr_SetupSwallowedBombDeathSequence = 0x808BB148; // type:func -EnDodojr_SetupJumpAttackBounce = 0x808BB1B8; // type:func -EnDodojr_SetupDespawn = 0x808BB23C; // type:func -EnDodojr_SetupEatBomb = 0x808BB2A8; // type:func -EnDodojr_CheckNearbyBombs = 0x808BB324; // type:func -EnDodojr_TryEatBomb = 0x808BB450; // type:func -EnDodojr_UpdateCrawl = 0x808BB4D4; // type:func -EnDodojr_IsPlayerWithinAttackRange = 0x808BB6E8; // type:func -EnDodojr_SetupStandardDeathBounce = 0x808BB718; // type:func -EnDodojr_CheckDamaged = 0x808BB764; // type:func -EnDodojr_UpdateCollider = 0x808BB920; // type:func -EnDodojr_WaitUnderground = 0x808BBA30; // type:func -EnDodojr_EmergeFromGround = 0x808BBB48; // type:func -EnDodojr_CrawlTowardsTarget = 0x808BBC10; // type:func -EnDodojr_EatBomb = 0x808BBD14; // type:func -EnDodojr_SwallowBomb = 0x808BBDC4; // type:func -EnDodojr_SwallowedBombDeathBounce = 0x808BBE34; // type:func -EnDodojr_SwallowedBombDeathSequence = 0x808BBED4; // type:func -EnDodojr_StunnedBounce = 0x808BBEF4; // type:func -EnDodojr_Stunned = 0x808BBF74; // type:func -EnDodojr_JumpAttackBounce = 0x808BC024; // type:func -EnDodojr_Despawn = 0x808BC08C; // type:func -EnDodojr_StandardDeathBounce = 0x808BC144; // type:func -EnDodojr_DeathSequence = 0x808BC1CC; // type:func -EnDodojr_DropItem = 0x808BC278; // type:func -EnDodojr_WaitFreezeFrames = 0x808BC2DC; // type:func -EnDodojr_Update = 0x808BC324; // type:func -EnDodojr_OverrideLimbDraw = 0x808BC3E4; // type:func -EnDodojr_PostLimbDraw = 0x808BC490; // type:func -EnDodojr_Draw = 0x808BC4A8; // type:func -EnBdfire_SetupAction = 0x808BC8E0; // type:func -EnbdFire_SetupDraw = 0x808BC8EC; // type:func -EnBdfire_Init = 0x808BC8F8; // type:func -EnBdfire_Destroy = 0x808BCB28; // type:func -func_809BC2A4 = 0x808BCB60; // type:func -func_809BC598 = 0x808BCE54; // type:func -EnBdfire_Update = 0x808BD144; // type:func -EnBdfire_DrawFire = 0x808BD180; // type:func -EnBdfire_Draw = 0x808BD340; // type:func -EnBoom_SetupAction = 0x808BD480; // type:func -EnBoom_Init = 0x808BD48C; // type:func -EnBoom_Destroy = 0x808BD5A8; // type:func -EnBoom_Fly = 0x808BD5E8; // type:func -EnBoom_Update = 0x808BDA28; // type:func -EnBoom_Draw = 0x808BDA80; // type:func -EnTorch2_Init = 0x808BDD50; // type:func -EnTorch2_Destroy = 0x808BDEF8; // type:func -EnTorch2_GetAttackItem = 0x808BDF68; // type:func -EnTorch2_SwingSword = 0x808BDFB0; // type:func -EnTorch2_Backflip = 0x808BE148; // type:func -EnTorch2_Update = 0x808BE1A0; // type:func -EnTorch2_OverrideLimbDraw = 0x808BFB88; // type:func -EnTorch2_PostLimbDraw = 0x808BFBB4; // type:func -EnTorch2_Draw = 0x808BFBD8; // type:func -EnBili_Init = 0x808C04F0; // type:func -EnBili_Destroy = 0x808C05E8; // type:func -EnBili_SetupFloatIdle = 0x808C0614; // type:func -EnBili_SetupSpawnedFlyApart = 0x808C0670; // type:func -EnBili_SetupDischargeLightning = 0x808C06E8; // type:func -EnBili_SetupClimb = 0x808C0744; // type:func -EnBili_SetupApproachPlayer = 0x808C079C; // type:func -EnBili_SetupSetNewHomeHeight = 0x808C07BC; // type:func -EnBili_SetupRecoil = 0x808C0824; // type:func -EnBili_SetupBurnt = 0x808C08AC; // type:func -EnBili_SetupDie = 0x808C094C; // type:func -EnBili_SetupStunned = 0x808C0980; // type:func -EnBili_SetupFrozen = 0x808C09F8; // type:func -EnBili_UpdateTentaclesIndex = 0x808C0BD0; // type:func -EnBili_UpdateFloating = 0x808C0CF0; // type:func -EnBili_FloatIdle = 0x808C0DD8; // type:func -EnBili_SpawnedFlyApart = 0x808C0EC4; // type:func -EnBili_DischargeLightning = 0x808C0F1C; // type:func -EnBili_Climb = 0x808C1118; // type:func -EnBili_ApproachPlayer = 0x808C11D4; // type:func -EnBili_SetNewHomeHeight = 0x808C1264; // type:func -EnBili_Recoil = 0x808C12E0; // type:func -EnBili_Burnt = 0x808C1344; // type:func -EnBili_Die = 0x808C13B8; // type:func -EnBili_Stunned = 0x808C15E0; // type:func -EnBili_Frozen = 0x808C1640; // type:func -EnBili_UpdateDamage = 0x808C16D0; // type:func -EnBili_Update = 0x808C189C; // type:func -EnBili_PulseLimb3 = 0x808C1A70; // type:func -EnBili_PulseLimb2 = 0x808C1C88; // type:func -EnBili_PulseLimb4 = 0x808C1EA8; // type:func -EnBili_OverrideLimbDraw = 0x808C2010; // type:func -EnBili_Draw = 0x808C2100; // type:func -EnTp_SetupAction = 0x808C27C0; // type:func -EnTp_Init = 0x808C27CC; // type:func -EnTp_Destroy = 0x808C2A44; // type:func -EnTp_Tail_SetupFollowHead = 0x808C2A70; // type:func -EnTp_Tail_FollowHead = 0x808C2A9C; // type:func -EnTp_Head_SetupApproachPlayer = 0x808C2C78; // type:func -EnTp_Head_ApproachPlayer = 0x808C2CAC; // type:func -EnTp_SetupDie = 0x808C2E48; // type:func -EnTp_Die = 0x808C2EC0; // type:func -EnTp_Fragment_SetupFade = 0x808C31F0; // type:func -EnTp_Fragment_Fade = 0x808C32F4; // type:func -EnTp_Head_SetupTakeOff = 0x808C3340; // type:func -EnTp_Head_TakeOff = 0x808C339C; // type:func -EnTp_Head_SetupWait = 0x808C3584; // type:func -EnTp_Head_Wait = 0x808C35D0; // type:func -EnTp_Head_SetupBurrowReturnHome = 0x808C38DC; // type:func -EnTp_Head_BurrowReturnHome = 0x808C390C; // type:func -EnTp_UpdateDamage = 0x808C3BDC; // type:func -EnTp_Update = 0x808C3E34; // type:func -EnTp_Draw = 0x808C41A0; // type:func -EnSt_SetupAction = 0x808C4630; // type:func -EnSt_SpawnDust = 0x808C463C; // type:func -EnSt_SpawnBlastEffect = 0x808C485C; // type:func -EnSt_SpawnDeadEffect = 0x808C48E4; // type:func -EnSt_CreateBlureEffect = 0x808C4A20; // type:func -EnSt_CheckCeilingPos = 0x808C4B1C; // type:func -EnSt_AddBlurVertex = 0x808C4BEC; // type:func -EnSt_AddBlurSpace = 0x808C4CF4; // type:func -EnSt_SetWaitingAnimation = 0x808C4D20; // type:func -EnSt_SetReturnToCeilingAnimation = 0x808C4D50; // type:func -EnSt_SetLandAnimation = 0x808C4D90; // type:func -EnSt_SetDropAnimAndVel = 0x808C4DEC; // type:func -EnSt_InitColliders = 0x808C4E4C; // type:func -EnSt_CheckBodyStickHit = 0x808C4F8C; // type:func -EnSt_SetBodyCylinderAC = 0x808C5000; // type:func -EnSt_SetLegsCylinderAC = 0x808C5044; // type:func -EnSt_SetCylinderOC = 0x808C50FC; // type:func -EnSt_UpdateCylinders = 0x808C52D4; // type:func -EnSt_CheckHitPlayer = 0x808C5398; // type:func -EnSt_CheckHitFrontside = 0x808C5484; // type:func -EnSt_CheckHitBackside = 0x808C54C4; // type:func -EnSt_CheckColliders = 0x808C56B4; // type:func -EnSt_SetColliderScale = 0x808C573C; // type:func -EnSt_SetTeethColor = 0x808C58A8; // type:func -EnSt_DecrStunTimer = 0x808C59D8; // type:func -EnSt_UpdateYaw = 0x808C59F8; // type:func -EnSt_IsDoneBouncing = 0x808C5C98; // type:func -EnSt_Bob = 0x808C5D60; // type:func -EnSt_IsCloseToPlayer = 0x808C5DCC; // type:func -EnSt_IsCloseToInitialPos = 0x808C5E74; // type:func -EnSt_IsCloseToGround = 0x808C5EAC; // type:func -EnSt_Sway = 0x808C5EEC; // type:func -EnSt_Init = 0x808C60BC; // type:func -EnSt_Destroy = 0x808C61E0; // type:func -EnSt_WaitOnCeiling = 0x808C6260; // type:func -EnSt_WaitOnGround = 0x808C62BC; // type:func -EnSt_LandOnGround = 0x808C63B4; // type:func -EnSt_MoveToGround = 0x808C64B8; // type:func -EnSt_ReturnToCeiling = 0x808C65B0; // type:func -EnSt_BounceAround = 0x808C6684; // type:func -EnSt_FinishBouncing = 0x808C6758; // type:func -EnSt_Die = 0x808C68CC; // type:func -EnSt_StartOnCeilingOrGround = 0x808C6944; // type:func -EnSt_Update = 0x808C69C8; // type:func -EnSt_OverrideLimbDraw = 0x808C6B48; // type:func -EnSt_PostLimbDraw = 0x808C6C28; // type:func -EnSt_Draw = 0x808C6C64; // type:func -EnBw_SetupAction = 0x808C72A0; // type:func -EnBw_Init = 0x808C72AC; // type:func -EnBw_Destroy = 0x808C740C; // type:func -func_809CE884 = 0x808C744C; // type:func -func_809CE9A8 = 0x808C7570; // type:func -func_809CEA24 = 0x808C75EC; // type:func -func_809CF72C = 0x808C82F4; // type:func -func_809CF7AC = 0x808C8374; // type:func -func_809CF8F0 = 0x808C84B8; // type:func -func_809CF984 = 0x808C854C; // type:func -func_809CFBA8 = 0x808C8774; // type:func -func_809CFC4C = 0x808C8818; // type:func -func_809CFF10 = 0x808C8ADC; // type:func -func_809CFF98 = 0x808C8B64; // type:func -func_809D00F4 = 0x808C8CC0; // type:func -func_809D014C = 0x808C8D18; // type:func -func_809D01CC = 0x808C8D98; // type:func -func_809D0268 = 0x808C8E34; // type:func -func_809D03CC = 0x808C8F98; // type:func -func_809D0424 = 0x808C8FF0; // type:func -func_809D0584 = 0x808C9150; // type:func -EnBw_Update = 0x808C945C; // type:func -EnBw_OverrideLimbDraw = 0x808C98EC; // type:func -EnBw_Draw = 0x808C9B04; // type:func -EnEiyer_Init = 0x808CA630; // type:func -EnEiyer_Destroy = 0x808CA810; // type:func -EnEiyer_RotateAroundHome = 0x808CA83C; // type:func -EnEiyer_SetupAppearFromGround = 0x808CA8AC; // type:func -EnEiyer_SetupUnderground = 0x808CA9EC; // type:func -EnEiyer_SetupInactive = 0x808CAA4C; // type:func -EnEiyer_SetupAmbush = 0x808CAA78; // type:func -EnEiyer_SetupGlide = 0x808CAB58; // type:func -EnEiyer_SetupStartAttack = 0x808CABD4; // type:func -EnEiyer_SetupDiveAttack = 0x808CABE8; // type:func -EnEiyer_SetupLand = 0x808CAC30; // type:func -EnEiyer_SetupHurt = 0x808CACA8; // type:func -EnEiyer_SetupDie = 0x808CAD58; // type:func -EnEiyer_SetupDead = 0x808CAE18; // type:func -EnEiyer_SetupStunned = 0x808CAE44; // type:func -EnEiyer_AppearFromGround = 0x808CAF08; // type:func -EnEiyer_CheckPlayerCollision = 0x808CAF58; // type:func -EnEiyer_CircleUnderground = 0x808CAF88; // type:func -EnEiyer_WanderUnderground = 0x808CB004; // type:func -EnEiyer_Inactive = 0x808CB138; // type:func -EnEiyer_Ambush = 0x808CB1CC; // type:func -EnEiyer_Glide = 0x808CB324; // type:func -EnEiyer_StartAttack = 0x808CB540; // type:func -EnEiyer_DiveAttack = 0x808CB63C; // type:func -EnEiyer_Land = 0x808CB6C8; // type:func -EnEiyer_Hurt = 0x808CB7BC; // type:func -EnEiyer_Die = 0x808CB8F4; // type:func -EnEiyer_Dead = 0x808CB9A8; // type:func -EnEiyer_Stunned = 0x808CBA28; // type:func -EnEiyer_UpdateDamage = 0x808CBAE0; // type:func -EnEiyer_Update = 0x808CBC28; // type:func -EnEiyer_OverrideLimbDraw = 0x808CBE4C; // type:func -EnEiyer_Draw = 0x808CBEA0; // type:func -EnRiverSound_Init = 0x808CC290; // type:func -EnRiverSound_Destroy = 0x808CC360; // type:func -EnRiverSound_FindClosestPointOnLineSegment = 0x808CC3B8; // type:func -EnRiverSound_GetSfxPos = 0x808CC524; // type:func -EnRiverSound_Update = 0x808CC820; // type:func -EnRiverSound_Draw = 0x808CC9F0; // type:func -func_80A6B250 = 0x808CCC20; // type:func -func_80A6B30C = 0x808CCCDC; // type:func -EnHorseNormal_Init = 0x808CCDA4; // type:func -EnHorseNormal_Destroy = 0x808CD294; // type:func -func_80A6B91C = 0x808CD2F4; // type:func -EnHorseNormal_FollowPath = 0x808CD3AC; // type:func -EnHorseNormal_NextAnimation = 0x808CD588; // type:func -EnHorseNormal_CycleAnimations = 0x808CD5DC; // type:func -func_80A6BC48 = 0x808CD624; // type:func -func_80A6BCEC = 0x808CD6CC; // type:func -func_80A6BD7C = 0x808CD75C; // type:func -EnHorseNormal_Wander = 0x808CD850; // type:func -func_80A6C4CC = 0x808CDEB4; // type:func -EnHorseNormal_Wait = 0x808CDF5C; // type:func -func_80A6C6B0 = 0x808CE09C; // type:func -EnHorseNormal_WaitClone = 0x808CE150; // type:func -func_80A6C8E0 = 0x808CE2D4; // type:func -EnHorseNormal_Update = 0x808CE398; // type:func -EnHorseNormal_PostDraw = 0x808CE4F4; // type:func -func_80A6CC88 = 0x808CE680; // type:func -EnHorseNormal_Draw = 0x808CE868; // type:func -EnOssan_SetupAction = 0x808CF240; // type:func -ShopItemDisp_Default = 0x808CF24C; // type:func -ShopItemDisp_SpookyMask = 0x808CF264; // type:func -ShopItemDisp_SkullMask = 0x808CF298; // type:func -ShopItemDisp_BunnyHood = 0x808CF2CC; // type:func -ShopItemDisp_ZoraMask = 0x808CF300; // type:func -ShopItemDisp_GoronMask = 0x808CF334; // type:func -ShopItemDisp_GerudoMask = 0x808CF368; // type:func -EnOssan_SpawnItemsOnShelves = 0x808CF39C; // type:func -EnOssan_UpdateShopOfferings = 0x808CF4F0; // type:func -EnOssan_TalkDefaultShopkeeper = 0x808CF65C; // type:func -EnOssan_TalkKakarikoPotionShopkeeper = 0x808CF67C; // type:func -EnOssan_TalkMarketPotionShopkeeper = 0x808CF6C0; // type:func -EnOssan_TalkKokiriShopkeeper = 0x808CF6E0; // type:func -EnOssan_TalkBazaarShopkeeper = 0x808CF700; // type:func -EnOssan_TalkBombchuShopkeeper = 0x808CF744; // type:func -EnOssan_TalkZoraShopkeeper = 0x808CF764; // type:func -EnOssan_TalkGoronShopkeeper = 0x808CF7BC; // type:func -EnOssan_TalkHappyMaskShopkeeper = 0x808CF890; // type:func -EnOssan_UpdateCameraDirection = 0x808CF91C; // type:func -EnOssan_TryGetObjBankIndices = 0x808CF980; // type:func -EnOssan_Init = 0x808CFA44; // type:func -EnOssan_Destroy = 0x808CFC10; // type:func -EnOssan_UpdateCursorPos = 0x808CFC50; // type:func -EnOssan_EndInteraction = 0x808CFCB4; // type:func -EnOssan_TestEndInteraction = 0x808CFD78; // type:func -EnOssan_TestCancelOption = 0x808CFDC0; // type:func -EnOssan_SetStateStartShopping = 0x808CFE24; // type:func -EnOssan_StartShopping = 0x808CFEA8; // type:func -EnOssan_ChooseTalkToOwner = 0x808CFF80; // type:func -EnOssan_SetLookToShopkeeperFromShelf = 0x808CFFE0; // type:func -EnOssan_State_Idle = 0x808D0014; // type:func -EnOssan_UpdateJoystickInputState = 0x808D00C4; // type:func -EnOssan_SetCursorIndexFromNeutral = 0x808D0210; // type:func -EnOssan_CursorRight = 0x808D0348; // type:func -EnOssan_CursorLeft = 0x808D03D4; // type:func -EnOssan_TryPaybackMask = 0x808D043C; // type:func -EnOssan_State_StartConversation = 0x808D0578; // type:func -EnOssan_FacingShopkeeperDialogResult = 0x808D0720; // type:func -EnOssan_State_FacingShopkeeper = 0x808D078C; // type:func -EnOssan_State_TalkingToShopkeeper = 0x808D08A4; // type:func -EnOssan_State_LookToLeftShelf = 0x808D08F8; // type:func -EnOssan_State_LookToRightShelf = 0x808D09E4; // type:func -EnOssan_CursorUpDown = 0x808D0AD0; // type:func -EnOssan_HasPlayerSelectedItem = 0x808D0CE4; // type:func -EnOssan_State_BrowseLeftShelf = 0x808D0E80; // type:func -EnOssan_State_BrowseRightShelf = 0x808D1040; // type:func -EnOssan_State_LookFromShelfToShopkeeper = 0x808D1200; // type:func -EnOssan_State_DisplayOnlyBombDialog = 0x808D12BC; // type:func -EnOssan_GiveItemWithFanfare = 0x808D138C; // type:func -EnOssan_SetStateCantGetItem = 0x808D1458; // type:func -EnOssan_SetStateQuickBuyDialog = 0x808D148C; // type:func -EnOssan_HandleCanBuyItem = 0x808D14C0; // type:func -EnOssan_HandleCanBuyLonLonMilk = 0x808D1668; // type:func -EnOssan_HandleCanBuyWeirdEgg = 0x808D1774; // type:func -EnOssan_HandleCanBuyBombs = 0x808D18AC; // type:func -EnOssan_BuyGoronCityBombs = 0x808D19B0; // type:func -EnOssan_State_ItemSelected = 0x808D1A54; // type:func -EnOssan_State_SelectMilkBottle = 0x808D1B28; // type:func -EnOssan_State_SelectWeirdEgg = 0x808D1BFC; // type:func -EnOssan_State_SelectUnimplementedItem = 0x808D1CD0; // type:func -EnOssan_State_SelectBombs = 0x808D1D60; // type:func -EnOssan_State_SelectMaskItem = 0x808D1E58; // type:func -EnOssan_State_CantGetItem = 0x808D2034; // type:func -EnOssan_State_QuickBuyDialog = 0x808D20B0; // type:func -EnOssan_State_GiveItemWithFanfare = 0x808D2158; // type:func -EnOssan_State_ItemPurchased = 0x808D21C8; // type:func -EnOssan_State_ContinueShoppingPrompt = 0x808D230C; // type:func -EnOssan_State_WaitForDisplayOnlyBombDialog = 0x808D24EC; // type:func -EnOssan_State_21 = 0x808D2554; // type:func -EnOssan_State_22 = 0x808D25C8; // type:func -EnOssan_State_GiveLonLonMilk = 0x808D261C; // type:func -EnOssan_State_LendMaskOfTruth = 0x808D2670; // type:func -EnOssan_SetStateGiveDiscountDialog = 0x808D26E0; // type:func -EnOssan_State_GiveDiscountDialog = 0x808D270C; // type:func -EnOssan_PositionSelectedItem = 0x808D27A0; // type:func -EnOssan_ResetItemPosition = 0x808D2888; // type:func -EnOssan_TakeItemOffShelf = 0x808D28AC; // type:func -EnOssan_ReturnItemToShelf = 0x808D2948; // type:func -EnOssan_UpdateItemSelectedProperty = 0x808D29D4; // type:func -EnOssan_UpdateCursorAnim = 0x808D2B10; // type:func -EnOssan_UpdateStickDirectionPromptAnim = 0x808D2BDC; // type:func -EnOssan_WaitForBlink = 0x808D2D8C; // type:func -EnOssan_Blink = 0x808D2DC0; // type:func -EnOssan_AreShopkeeperObjectsLoaded = 0x808D2E60; // type:func -EnOssan_InitBazaarShopkeeper = 0x808D2EFC; // type:func -EnOssan_InitKokiriShopkeeper = 0x808D2F5C; // type:func -EnOssan_InitGoronShopkeeper = 0x808D3074; // type:func -EnOssan_InitZoraShopkeeper = 0x808D3150; // type:func -EnOssan_InitPotionShopkeeper = 0x808D322C; // type:func -EnOssan_InitHappyMaskShopkeeper = 0x808D328C; // type:func -EnOssan_InitBombchuShopkeeper = 0x808D32EC; // type:func -EnOssan_SetupHelloDialog = 0x808D334C; // type:func -EnOssan_InitActionFunc = 0x808D34B4; // type:func -EnOssan_Obj3ToSeg6 = 0x808D376C; // type:func -EnOssan_MainActionFunc = 0x808D37A4; // type:func -EnOssan_Update = 0x808D38C0; // type:func -EnOssan_OverrideLimbDrawDefaultShopkeeper = 0x808D38EC; // type:func -EnOssan_DrawCursor = 0x808D3924; // type:func -EnOssan_DrawTextRec = 0x808D3B84; // type:func -EnOssan_DrawStickDirectionPrompts = 0x808D3D20; // type:func -EnOssan_DrawBazaarShopkeeper = 0x808D40C8; // type:func -EnOssan_OverrideLimbDrawKokiriShopkeeper = 0x808D41BC; // type:func -EnOssan_EmptyDList = 0x808D42B4; // type:func -EnOssan_SetEnvColor = 0x808D42D8; // type:func -EnOssan_DrawKokiriShopkeeper = 0x808D4344; // type:func -EnOssan_DrawGoronShopkeeper = 0x808D44A4; // type:func -EnOssan_OverrideLimbDrawZoraShopkeeper = 0x808D45D8; // type:func -EnOssan_DrawZoraShopkeeper = 0x808D4610; // type:func -EnOssan_DrawPotionShopkeeper = 0x808D4754; // type:func -EnOssan_DrawHappyMaskShopkeeper = 0x808D4840; // type:func -EnOssan_DrawBombchuShopkeeper = 0x808D492C; // type:func -BgTreemouth_SetupAction = 0x808D5820; // type:func -BgTreemouth_Init = 0x808D582C; // type:func -BgTreemouth_Destroy = 0x808D5954; // type:func -func_808BC65C = 0x808D5988; // type:func -func_808BC6F8 = 0x808D5A24; // type:func -func_808BC80C = 0x808D5B38; // type:func -func_808BC864 = 0x808D5B90; // type:func -func_808BC8B8 = 0x808D5BE4; // type:func -func_808BC9EC = 0x808D5D18; // type:func -func_808BCAF0 = 0x808D5E20; // type:func -BgTreemouth_DoNothing = 0x808D5EBC; // type:func -BgTreemouth_Update = 0x808D5ECC; // type:func -BgTreemouth_Draw = 0x808D5F4C; // type:func -BgDodoago_SetupAction = 0x808D6E80; // type:func -BgDodoago_SpawnSparkles = 0x808D6E8C; // type:func -BgDodoago_Init = 0x808D6FAC; // type:func -BgDodoago_Destroy = 0x808D7110; // type:func -BgDodoago_WaitExplosives = 0x808D717C; // type:func -BgDodoago_OpenJaw = 0x808D7440; // type:func -BgDodoago_DoNothing = 0x808D7704; // type:func -BgDodoago_LightOneEye = 0x808D7714; // type:func -BgDodoago_Update = 0x808D7778; // type:func -BgDodoago_Draw = 0x808D78D0; // type:func -BgHidanDalm_Init = 0x808D7C30; // type:func -BgHidanDalm_Destroy = 0x808D7D18; // type:func -BgHidanDalm_Wait = 0x808D7D60; // type:func -BgHidanDalm_Shrink = 0x808D7EE4; // type:func -BgHidanDalm_Update = 0x808D8094; // type:func -BgHidanDalm_UpdateCollider = 0x808D80F4; // type:func -BgHidanDalm_Draw = 0x808D8220; // type:func -BgHidanHrock_Init = 0x808D8480; // type:func -BgHidanHrock_Destroy = 0x808D87B0; // type:func -func_808894A4 = 0x808D87F8; // type:func -func_808894B0 = 0x808D8808; // type:func -func_8088960C = 0x808D8964; // type:func -func_808896B8 = 0x808D8A10; // type:func -BgHidanHrock_Update = 0x808D8AF0; // type:func -BgHidanHrock_Draw = 0x808D8B14; // type:func -func_80A68660 = 0x808D8CB0; // type:func -func_80A686A8 = 0x808D8CFC; // type:func -func_80A68870 = 0x808D8EC4; // type:func -EnHorseGanon_Init = 0x808D8F80; // type:func -EnHorseGanon_Destroy = 0x808D90CC; // type:func -func_80A68AC4 = 0x808D911C; // type:func -func_80A68AF0 = 0x808D914C; // type:func -func_80A68B20 = 0x808D9180; // type:func -func_80A68DB0 = 0x808D9410; // type:func -func_80A68E14 = 0x808D9474; // type:func -EnHorseGanon_Update = 0x808D9538; // type:func -EnHorseGanon_PostDraw = 0x808D960C; // type:func -EnHorseGanon_Draw = 0x808D9798; // type:func -BgHidanRock_Init = 0x808D9A30; // type:func -BgHidanRock_Destroy = 0x808D9BAC; // type:func -func_8088B24C = 0x808D9C00; // type:func -func_8088B268 = 0x808D9C20; // type:func -func_8088B5F4 = 0x808D9FB0; // type:func -func_8088B634 = 0x808D9FF0; // type:func -func_8088B69C = 0x808DA05C; // type:func -func_8088B79C = 0x808DA15C; // type:func -func_8088B90C = 0x808DA2CC; // type:func -func_8088B954 = 0x808DA314; // type:func -func_8088B990 = 0x808DA350; // type:func -BgHidanRock_Update = 0x808DA53C; // type:func -func_8088BC40 = 0x808DA60C; // type:func -BgHidanRock_Draw = 0x808DA81C; // type:func -BgHidanRsekizou_Init = 0x808DAB30; // type:func -BgHidanRsekizou_Destroy = 0x808DAC34; // type:func -BgHidanRsekizou_Update = 0x808DAC7C; // type:func -BgHidanRsekizou_DrawFireball = 0x808DB040; // type:func -BgHidanRsekizou_Draw = 0x808DB358; // type:func -func_8088CEC0 = 0x808DB710; // type:func -BgHidanSekizou_Init = 0x808DBACC; // type:func -BgHidanSekizou_Destroy = 0x808DBC40; // type:func -func_8088D434 = 0x808DBC88; // type:func -func_8088D720 = 0x808DBF74; // type:func -func_8088D750 = 0x808DBFA4; // type:func -BgHidanSekizou_Update = 0x808DC110; // type:func -func_8088D9F4 = 0x808DC24C; // type:func -func_8088DC50 = 0x808DC494; // type:func -func_8088DE08 = 0x808DC64C; // type:func -BgHidanSekizou_Draw = 0x808DC72C; // type:func -BgHidanSima_Init = 0x808DCB60; // type:func -BgHidanSima_Destroy = 0x808DCC64; // type:func -func_8088E518 = 0x808DCCAC; // type:func -func_8088E5D0 = 0x808DCD68; // type:func -func_8088E6D0 = 0x808DCE6C; // type:func -func_8088E760 = 0x808DCF04; // type:func -func_8088E7A8 = 0x808DCF4C; // type:func -func_8088E90C = 0x808DD0B0; // type:func -BgHidanSima_Update = 0x808DD210; // type:func -func_8088EB54 = 0x808DD300; // type:func -BgHidanSima_Draw = 0x808DD778; // type:func -BgHidanSyoku_Init = 0x808DDA60; // type:func -BgHidanSyoku_Destroy = 0x808DDAEC; // type:func -func_8088F47C = 0x808DDB20; // type:func -func_8088F4B8 = 0x808DDB5C; // type:func -func_8088F514 = 0x808DDBBC; // type:func -func_8088F5A0 = 0x808DDC48; // type:func -func_8088F62C = 0x808DDCD4; // type:func -BgHidanSyoku_Update = 0x808DDD30; // type:func -BgHidanSyoku_Draw = 0x808DDDD8; // type:func -EnXc_InitCollider = 0x808DDEC0; // type:func -EnXc_UpdateCollider = 0x808DDF0C; // type:func -EnXc_Destroy = 0x808DDF50; // type:func -EnXc_CalculateHeadTurn = 0x808DDF7C; // type:func -EnXc_SetEyePattern = 0x808DE004; // type:func -EnXc_SpawnNut = 0x808DE08C; // type:func -EnXc_BgCheck = 0x808DE154; // type:func -EnXc_AnimIsFinished = 0x808DE19C; // type:func -EnXc_GetCue = 0x808DE1C0; // type:func -EnXc_CheckForCue = 0x808DE1E4; // type:func -EnXc_CheckForNoCue = 0x808DE230; // type:func -func_80B3C588 = 0x808DE27C; // type:func -func_80B3C620 = 0x808DE314; // type:func -EnXc_ChangeAnimation = 0x808DE3F4; // type:func -EnXc_CheckAndSetAction = 0x808DE4B0; // type:func -func_80B3C7D4 = 0x808DE4C8; // type:func -func_80B3C8CC = 0x808DE4F4; // type:func -func_80B3C924 = 0x808DE550; // type:func -func_80B3C964 = 0x808DE590; // type:func -func_80B3C9DC = 0x808DE608; // type:func -func_80B3C9EC = 0x808DE61C; // type:func -func_80B3CA38 = 0x808DE668; // type:func -EnXc_MinuetCS = 0x808DE6BC; // type:func -func_80B3CB58 = 0x808DE794; // type:func -EnXc_BoleroCS = 0x808DE7E8; // type:func -EnXc_SetupSerenadeAction = 0x808DE948; // type:func -EnXc_SerenadeCS = 0x808DE9A0; // type:func -EnXc_DoNothing = 0x808DEA68; // type:func -EnXc_SetWalkingSFX = 0x808DEA78; // type:func -EnXc_SetNutThrowSFX = 0x808DEAF8; // type:func -EnXc_SetLandingSFX = 0x808DEB84; // type:func -EnXc_SetColossusAppearSFX = 0x808DEC04; // type:func -func_80B3D118 = 0x808DED10; // type:func -EnXc_SetColossusWindSFX = 0x808DED54; // type:func -EnXc_SpawnFlame = 0x808DEE5C; // type:func -EnXc_SetupFlamePos = 0x808DEF00; // type:func -EnXc_DestroyFlame = 0x808DEF7C; // type:func -EnXc_InitFlame = 0x808DEFBC; // type:func -func_80B3D48C = 0x808DF058; // type:func -EnXc_GetCurrentHarpAnim = 0x808DF0A8; // type:func -EnXc_CalcXZAccel = 0x808DF13C; // type:func -func_80B3D644 = 0x808DF214; // type:func -EnXc_CalcXZSpeed = 0x808DF234; // type:func -func_80B3D6F0 = 0x808DF2C0; // type:func -func_80B3D710 = 0x808DF2E0; // type:func -func_80B3D730 = 0x808DF300; // type:func -func_80B3D750 = 0x808DF320; // type:func -EnXc_SetupFallFromSkyAction = 0x808DF36C; // type:func -func_80B3D8A4 = 0x808DF47C; // type:func -EnXc_SetupWalkAction = 0x808DF56C; // type:func -EnXc_SetupHaltAction = 0x808DF5DC; // type:func -EnXc_SetupStoppedAction = 0x808DF688; // type:func -func_80B3DAF0 = 0x808DF6D0; // type:func -EnXc_SetupInitialHarpAction = 0x808DF790; // type:func -EnXc_SetupPlayingHarpAction = 0x808DF808; // type:func -func_80B3DCA8 = 0x808DF890; // type:func -EnXc_SetupHarpPutawayAction = 0x808DF924; // type:func -func_80B3DE00 = 0x808DF9F4; // type:func -func_80B3DE78 = 0x808DFA6C; // type:func -EnXc_SetupReverseAccel = 0x808DFAE8; // type:func -EnXc_SetupReverseWalkAction = 0x808DFB98; // type:func -EnXc_SetupReverseHaltAction = 0x808DFC08; // type:func -EnXc_SetupNutThrow = 0x808DFCB4; // type:func -func_80B3E164 = 0x808DFD5C; // type:func -EnXc_SetupDisappear = 0x808DFDB0; // type:func -EnXc_ActionFunc0 = 0x808DFE20; // type:func -EnXc_ActionFunc1 = 0x808DFE60; // type:func -EnXc_GracefulFall = 0x808DFEA0; // type:func -EnXc_Accelerate = 0x808DFF1C; // type:func -EnXc_Walk = 0x808DFF7C; // type:func -EnXc_Stopped = 0x808DFFDC; // type:func -EnXc_ActionFunc6 = 0x808E003C; // type:func -EnXc_ActionFunc7 = 0x808E0084; // type:func -EnXc_ActionFunc8 = 0x808E00D0; // type:func -EnXc_ActionFunc9 = 0x808E0120; // type:func -EnXc_ActionFunc10 = 0x808E0168; // type:func -EnXc_ActionFunc11 = 0x808E01B0; // type:func -EnXc_ActionFunc12 = 0x808E01FC; // type:func -EnXc_ActionFunc13 = 0x808E0248; // type:func -EnXc_ReverseAccelerate = 0x808E02A4; // type:func -EnXc_ActionFunc15 = 0x808E0310; // type:func -EnXc_HaltAndWaitToThrowNut = 0x808E037C; // type:func -EnXc_ThrowNut = 0x808E03E8; // type:func -EnXc_Delete = 0x808E0450; // type:func -EnXc_Fade = 0x808E04AC; // type:func -func_80B3E87C = 0x808E04CC; // type:func -EnXc_PullingOutHarpOverrideLimbDraw = 0x808E04FC; // type:func -EnXc_HarpOverrideLimbDraw = 0x808E0538; // type:func -EnXc_DrawPullingOutHarp = 0x808E0560; // type:func -EnXc_DrawHarp = 0x808E069C; // type:func -func_80B3EBF0 = 0x808E07D8; // type:func -func_80B3EC00 = 0x808E07EC; // type:func -func_80B3EC0C = 0x808E07FC; // type:func -func_80B3EC90 = 0x808E0880; // type:func -func_80B3ECD8 = 0x808E08C8; // type:func -EnXc_ActionFunc20 = 0x808E0938; // type:func -EnXc_ActionFunc21 = 0x808E095C; // type:func -EnXc_ActionFunc22 = 0x808E097C; // type:func -EnXc_ActionFunc23 = 0x808E09C4; // type:func -EnXc_ActionFunc24 = 0x808E0A24; // type:func -EnXc_ActionFunc25 = 0x808E0A34; // type:func -EnXc_ActionFunc26 = 0x808E0A44; // type:func -EnXc_ActionFunc27 = 0x808E0A54; // type:func -EnXc_ActionFunc28 = 0x808E0A64; // type:func -func_80B3EE64 = 0x808E0A74; // type:func -func_80B3EE74 = 0x808E0A88; // type:func -func_80B3EEA4 = 0x808E0ABC; // type:func -func_80B3EEC8 = 0x808E0AE0; // type:func -func_80B3EEEC = 0x808E0B04; // type:func -func_80B3EF10 = 0x808E0B28; // type:func -func_80B3EF34 = 0x808E0B4C; // type:func -func_80B3EF58 = 0x808E0B70; // type:func -func_80B3EF80 = 0x808E0B98; // type:func -func_80B3EFA4 = 0x808E0BBC; // type:func -func_80B3EFC8 = 0x808E0BE0; // type:func -func_80B3EFEC = 0x808E0C04; // type:func -func_80B3F010 = 0x808E0C28; // type:func -func_80B3F0B8 = 0x808E0CD4; // type:func -func_80B3F0DC = 0x808E0CF8; // type:func -func_80B3F100 = 0x808E0D1C; // type:func -EnXc_Serenade = 0x808E0D40; // type:func -EnXc_ActionFunc30 = 0x808E0D60; // type:func -EnXc_ActionFunc31 = 0x808E0D8C; // type:func -EnXc_ActionFunc32 = 0x808E0DD0; // type:func -EnXc_ActionFunc33 = 0x808E0DFC; // type:func -EnXc_ActionFunc34 = 0x808E0E28; // type:func -EnXc_ActionFunc35 = 0x808E0E54; // type:func -EnXc_ActionFunc36 = 0x808E0E80; // type:func -EnXc_ActionFunc37 = 0x808E0EAC; // type:func -EnXc_ActionFunc38 = 0x808E0ED8; // type:func -EnXc_ActionFunc39 = 0x808E0F04; // type:func -EnXc_ActionFunc40 = 0x808E0F30; // type:func -EnXc_ActionFunc41 = 0x808E0F90; // type:func -EnXc_ActionFunc42 = 0x808E0FBC; // type:func -EnXc_ActionFunc43 = 0x808E0FE8; // type:func -EnXc_ActionFunc44 = 0x808E1014; // type:func -func_80B3F3C8 = 0x808E1024; // type:func -func_80B3F3D8 = 0x808E1038; // type:func -EnXc_PlayDiveSFX = 0x808E1058; // type:func -EnXc_LakeHyliaDive = 0x808E10AC; // type:func -func_80B3F534 = 0x808E1198; // type:func -func_80B3F59C = 0x808E1200; // type:func -func_80B3F620 = 0x808E1284; // type:func -func_80B3F644 = 0x808E12A8; // type:func -func_80B3F668 = 0x808E12CC; // type:func -func_80B3F6DC = 0x808E1340; // type:func -EnXc_SetupKneelAction = 0x808E1364; // type:func -func_80B3F754 = 0x808E13BC; // type:func -func_80B3F7BC = 0x808E142C; // type:func -EnXc_ActionFunc45 = 0x808E1468; // type:func -EnXc_ActionFunc46 = 0x808E1494; // type:func -EnXc_ActionFunc47 = 0x808E14C0; // type:func -EnXc_ActionFunc48 = 0x808E1518; // type:func -EnXc_ActionFunc49 = 0x808E1544; // type:func -EnXc_Kneel = 0x808E15A8; // type:func -EnXc_ActionFunc51 = 0x808E160C; // type:func -EnXc_ActionFunc52 = 0x808E1670; // type:func -func_80B3FA08 = 0x808E1690; // type:func -func_80B3FA2C = 0x808E16B8; // type:func -EnXc_PlayTriforceSFX = 0x808E16D8; // type:func -func_80B3FAE0 = 0x808E1770; // type:func -EnXc_CalcTriforce = 0x808E17B8; // type:func -func_80B3FF0C = 0x808E1BB0; // type:func -EnXc_SetupShowTriforceAction = 0x808E1C58; // type:func -EnXc_SetupShowTriforceIdleAction = 0x808E1CE8; // type:func -func_80B400AC = 0x808E1D54; // type:func -EnXc_ActionFunc53 = 0x808E1D90; // type:func -EnXc_ActionFunc54 = 0x808E1DB0; // type:func -EnXc_ShowTriforce = 0x808E1DF8; // type:func -EnXc_ShowTriforceIdle = 0x808E1E60; // type:func -EnXc_TriforceOverrideLimbDraw = 0x808E1EBC; // type:func -EnXc_TriforcePostLimbDraw = 0x808E1EE4; // type:func -EnXc_DrawTriforce = 0x808E1F60; // type:func -func_80B40590 = 0x808E21F4; // type:func -EnXc_SetThrownAroundSFX = 0x808E2210; // type:func -EnXc_PlayLinkScreamSFX = 0x808E22D4; // type:func -EnXc_SetCrySFX = 0x808E2308; // type:func -func_80B406F8 = 0x808E2364; // type:func -EnXc_SetupIdleInNocturne = 0x808E237C; // type:func -EnXc_SetupDefenseStance = 0x808E2418; // type:func -EnXc_SetupContortions = 0x808E2490; // type:func -EnXc_SetupFallInNocturne = 0x808E252C; // type:func -EnXc_SetupHittingGroundInNocturne = 0x808E2608; // type:func -func_80B40A78 = 0x808E26A8; // type:func -EnXc_SetupKneelInNocturne = 0x808E2748; // type:func -func_80B40BB4 = 0x808E27E4; // type:func -func_80B40C50 = 0x808E2880; // type:func -func_80B40C74 = 0x808E28A4; // type:func -func_80B40C98 = 0x808E28C8; // type:func -func_80B40CBC = 0x808E28EC; // type:func -func_80B40CE0 = 0x808E2910; // type:func -func_80B40D08 = 0x808E2938; // type:func -func_80B40D2C = 0x808E295C; // type:func -func_80B40D50 = 0x808E2980; // type:func -func_80B40D74 = 0x808E29A4; // type:func -EnXc_SetupReverseHaltInNocturneCS = 0x808E29C8; // type:func -func_80B40E40 = 0x808E2A74; // type:func -func_80B40E64 = 0x808E2A98; // type:func -func_80B40E88 = 0x808E2ABC; // type:func -EnXc_SetupNocturneState = 0x808E2AE0; // type:func -EnXc_InitialNocturneAction = 0x808E2C20; // type:func -EnXc_IdleInNocturne = 0x808E2C40; // type:func -EnXc_DefenseStance = 0x808E2C90; // type:func -EnXc_Contort = 0x808E2CD8; // type:func -EnXc_FallInNocturne = 0x808E2D44; // type:func -EnXc_HitGroundInNocturne = 0x808E2DAC; // type:func -EnXc_ActionFunc63 = 0x808E2DEC; // type:func -EnXc_KneelInNocturneCS = 0x808E2E48; // type:func -EnXc_ActionFunc65 = 0x808E2E90; // type:func -EnXc_ActionFunc66 = 0x808E2ED4; // type:func -EnXc_ActionFunc67 = 0x808E2F00; // type:func -EnXc_ActionFunc68 = 0x808E2F2C; // type:func -EnXc_ActionFunc69 = 0x808E2F58; // type:func -EnXc_ActionFunc70 = 0x808E2F84; // type:func -EnXc_ActionFunc71 = 0x808E2FB0; // type:func -EnXc_ActionFunc72 = 0x808E2FDC; // type:func -EnXc_ReverseAccelInNocturneCS = 0x808E3008; // type:func -EnXc_ReverseWalkInNocturneCS = 0x808E3034; // type:func -EnXc_ReverseHaltInNocturneCS = 0x808E3088; // type:func -EnXc_ThrowNutInNocturneCS = 0x808E30B4; // type:func -EnXc_DeleteInNocturneCS = 0x808E30E0; // type:func -EnXc_KillInNocturneCS = 0x808E310C; // type:func -EnXc_DrawSquintingEyes = 0x808E3130; // type:func -EnXc_InitTempleOfTime = 0x808E320C; // type:func -EnXc_SetupDialogueAction = 0x808E3378; // type:func -func_80B41798 = 0x808E3400; // type:func -EnXc_BlockingPedestalAction = 0x808E344C; // type:func -EnXc_ActionFunc80 = 0x808E34B4; // type:func -EnXc_Update = 0x808E351C; // type:func -EnXc_Init = 0x808E3564; // type:func -EnXc_OverrideLimbDraw = 0x808E36D0; // type:func -EnXc_PostLimbDraw = 0x808E3758; // type:func -EnXc_DrawNothing = 0x808E37E4; // type:func -EnXc_DrawDefault = 0x808E37F4; // type:func -EnXc_Draw = 0x808E38FC; // type:func -BgHidanCurtain_Init = 0x808E4650; // type:func -BgHidanCurtain_Destroy = 0x808E4864; // type:func -BgHidanCurtain_WaitForSwitchOn = 0x808E4890; // type:func -BgHidanCurtain_WaitForCutscene = 0x808E4944; // type:func -BgHidanCurtain_WaitForClear = 0x808E4970; // type:func -BgHidanCurtain_WaitForSwitchOff = 0x808E49B4; // type:func -BgHidanCurtain_TurnOn = 0x808E49F8; // type:func -BgHidanCurtain_TurnOff = 0x808E4A6C; // type:func -BgHidanCurtain_WaitForTimer = 0x808E4B5C; // type:func -BgHidanCurtain_Update = 0x808E4BC0; // type:func -BgHidanCurtain_Draw = 0x808E4E54; // type:func -BgSpot00Hanebasi_Init = 0x808E50F0; // type:func -BgSpot00Hanebasi_Destroy = 0x808E5500; // type:func -BgSpot00Hanebasi_DrawbridgeWait = 0x808E555C; // type:func -BgSpot00Hanebasi_DoNothing = 0x808E568C; // type:func -BgSpot00Hanebasi_DrawbridgeRiseAndFall = 0x808E569C; // type:func -BgSpot00Hanebasi_SetTorchLightInfo = 0x808E57D0; // type:func -BgSpot00Hanebasi_Update = 0x808E5928; // type:func -BgSpot00Hanebasi_DrawTorches = 0x808E5C38; // type:func -BgSpot00Hanebasi_Draw = 0x808E5ED8; // type:func -EnMb_SetupAction = 0x808E6200; // type:func -EnMb_Init = 0x808E620C; // type:func -EnMb_Destroy = 0x808E6570; // type:func -EnMb_FaceWaypoint = 0x808E65C0; // type:func -EnMb_NextWaypoint = 0x808E65F8; // type:func -EnMb_IsPlayerInCorridor = 0x808E66E4; // type:func -EnMb_FindWaypointTowardsPlayer = 0x808E6858; // type:func -EnMb_SetupSpearGuardLookAround = 0x808E69E8; // type:func -EnMb_SetupClubWaitPlayerNear = 0x808E6A50; // type:func -EnMb_SetupSpearPatrolTurnTowardsWaypoint = 0x808E6AB4; // type:func -EnMb_SetupSpearGuardWalk = 0x808E6B2C; // type:func -EnMb_SetupSpearPatrolWalkTowardsWaypoint = 0x808E6BD0; // type:func -EnMb_SetupSpearPrepareAndCharge = 0x808E6C80; // type:func -EnMb_SetupSpearPatrolImmediateCharge = 0x808E6D38; // type:func -EnMb_SetupClubAttack = 0x808E6DA8; // type:func -EnMb_SetupSpearEndChargeQuick = 0x808E6E78; // type:func -EnMb_SetupSpearPatrolEndCharge = 0x808E6ED8; // type:func -EnMb_SetupClubWaitAfterAttack = 0x808E6F5C; // type:func -EnMb_SetupClubDamaged = 0x808E6FD4; // type:func -EnMb_SetupClubDamagedWhileKneeling = 0x808E7034; // type:func -EnMb_SetupClubDead = 0x808E70BC; // type:func -EnMb_SetupStunned = 0x808E7144; // type:func -EnMb_Stunned = 0x808E71E8; // type:func -EnMb_SpearGuardLookAround = 0x808E72F4; // type:func -EnMb_SpearPatrolTurnTowardsWaypoint = 0x808E736C; // type:func -EnMb_SpearEndChargeQuick = 0x808E74D0; // type:func -EnMb_ClubWaitAfterAttack = 0x808E7638; // type:func -EnMb_SpearPatrolEndCharge = 0x808E767C; // type:func -EnMb_SpearGuardPrepareAndCharge = 0x808E7994; // type:func -EnMb_ClubAttack = 0x808E7AFC; // type:func -EnMb_SpearPatrolPrepareAndCharge = 0x808E7E74; // type:func -EnMb_SpearPatrolImmediateCharge = 0x808E81D8; // type:func -EnMb_ClubDamaged = 0x808E8548; // type:func -EnMb_ClubDamagedWhileKneeling = 0x808E85DC; // type:func -EnMb_ClubDead = 0x808E86E8; // type:func -EnMb_SpearGuardWalk = 0x808E89AC; // type:func -EnMb_SpearPatrolWalkTowardsWaypoint = 0x808E8CBC; // type:func -EnMb_ClubWaitPlayerNear = 0x808E8FA8; // type:func -EnMb_SetupSpearDamaged = 0x808E9058; // type:func -EnMb_SpearDamaged = 0x808E9120; // type:func -EnMb_SetupSpearDead = 0x808E9198; // type:func -EnMb_SpearDead = 0x808E9270; // type:func -EnMb_SpearUpdateAttackCollider = 0x808E9488; // type:func -EnMb_ClubUpdateAttackCollider = 0x808E9614; // type:func -EnMb_CheckColliding = 0x808E96AC; // type:func -EnMb_Update = 0x808E9878; // type:func -EnMb_PostLimbDraw = 0x808E9A4C; // type:func -EnMb_Draw = 0x808E9BE8; // type:func -EnBombf_SetupAction = 0x808EA430; // type:func -EnBombf_Init = 0x808EA43C; // type:func -EnBombf_Destroy = 0x808EA618; // type:func -EnBombf_SetupGrowBomb = 0x808EA658; // type:func -EnBombf_GrowBomb = 0x808EA680; // type:func -EnBombf_Move = 0x808EA990; // type:func -EnBombf_WaitForRelease = 0x808EAAB4; // type:func -EnBombf_Explode = 0x808EAB18; // type:func -EnBombf_Update = 0x808EAC6C; // type:func -EnBombf_NewMtxDList = 0x808EB418; // type:func -EnBombf_Draw = 0x808EB4A4; // type:func -BgHidanFirewall_Init = 0x808EB8C0; // type:func -BgHidanFirewall_Destroy = 0x808EB960; // type:func -BgHidanFirewall_CheckProximity = 0x808EB98C; // type:func -BgHidanFirewall_Wait = 0x808EB9FC; // type:func -BgHidanFirewall_Countdown = 0x808EBA44; // type:func -BgHidanFirewall_Erupt = 0x808EBA78; // type:func -BgHidanFirewall_Collide = 0x808EBB08; // type:func -BgHidanFirewall_ColliderFollowPlayer = 0x808EBB70; // type:func -BgHidanFirewall_Update = 0x808EBCD4; // type:func -BgHidanFirewall_Draw = 0x808EBDAC; // type:func -BgDyYoseizo_Init = 0x808EC020; // type:func -BgDyYoseizo_Destroy = 0x808EC124; // type:func -BgDyYoseizo_SpawnEffects = 0x808EC134; // type:func -BgDyYoseizo_Bob = 0x808EC430; // type:func -BgDyYoseizo_CheckMagicAcquired = 0x808EC4F8; // type:func -BgDyYoseizo_ChooseType = 0x808EC5BC; // type:func -BgDyYoseizo_SetupSpinGrow_NoReward = 0x808EC9B8; // type:func -BgDyYoseizo_SpinGrow_NoReward = 0x808ECAB4; // type:func -BgDyYoseizo_CompleteSpinGrow_NoReward = 0x808ECC10; // type:func -BgDyYoseizo_SetupGreetPlayer_NoReward = 0x808ECCC0; // type:func -BgDyYoseizo_GreetPlayer_NoReward = 0x808ECDD8; // type:func -BgDyYoseizo_SetupHealPlayer_NoReward = 0x808ECEB4; // type:func -BgDyYoseizo_HealPlayer_NoReward = 0x808ECFA0; // type:func -BgDyYoseizo_SayFarewell_NoReward = 0x808ED278; // type:func -BgDyYoseizo_SetupSpinShrink = 0x808ED354; // type:func -BgDyYoseizo_SpinShrink = 0x808ED458; // type:func -BgDyYoseizo_Vanish = 0x808ED548; // type:func -BgDyYoseizo_SetupSpinGrow_Reward = 0x808ED5EC; // type:func -BgDyYoseizo_SpinGrowSetupGive_Reward = 0x808ED720; // type:func -BgDyYoseizo_Give_Reward = 0x808EDA4C; // type:func -BgDyYoseizo_Update = 0x808EE09C; // type:func -BgDyYoseizo_OverrideLimbDraw = 0x808EE2C8; // type:func -BgDyYoseizo_Draw = 0x808EE330; // type:func -BgDyYoseizo_SpawnEffect = 0x808EE4B8; // type:func -BgDyYoseizo_UpdateEffects = 0x808EE5C8; // type:func -BgDyYoseizo_DrawEffects = 0x808EE8BC; // type:func -EnZl2_Destroy = 0x808EEE10; // type:func -EnZl2_UpdateEyes = 0x808EEE34; // type:func -func_80B4EA40 = 0x808EEEC4; // type:func -func_80B4EAF4 = 0x808EEF78; // type:func -func_80B4EBB8 = 0x808EF03C; // type:func -func_80B4EC48 = 0x808EF0CC; // type:func -EnZl2_setEyesIndex = 0x808EF16C; // type:func -EnZl2_setEyeIndex2 = 0x808EF18C; // type:func -EnZl2_setMouthIndex = 0x808EF1A4; // type:func -func_80B4ED2C = 0x808EF1BC; // type:func -EnZl2_UpdateSkelAnime = 0x808EF204; // type:func -EnZl2_GetCue = 0x808EF228; // type:func -func_80B4EDB8 = 0x808EF250; // type:func -func_80B4EE38 = 0x808EF2D0; // type:func -func_80B4EF64 = 0x808EF400; // type:func -func_80B4F230 = 0x808EF6D0; // type:func -func_80B4F45C = 0x808EF900; // type:func -EnZl2_PostLimbDraw = 0x808EFFCC; // type:func -func_80B4FCCC = 0x808F0118; // type:func -func_80B4FD00 = 0x808F0150; // type:func -func_80B4FD90 = 0x808F01E0; // type:func -func_80B4FDD4 = 0x808F0224; // type:func -func_80B4FE10 = 0x808F0264; // type:func -func_80B4FE48 = 0x808F029C; // type:func -func_80B4FE6C = 0x808F02C4; // type:func -func_80B4FE90 = 0x808F02EC; // type:func -func_80B4FEB4 = 0x808F0314; // type:func -func_80B4FED8 = 0x808F033C; // type:func -EnZl2_GiveLightArrows = 0x808F0364; // type:func -func_80B4FF84 = 0x808F03F4; // type:func -func_80B4FFF0 = 0x808F0460; // type:func -func_80B5008C = 0x808F0500; // type:func -func_80B500E0 = 0x808F0554; // type:func -func_80B501C4 = 0x808F0638; // type:func -func_80B501E8 = 0x808F065C; // type:func -func_80B50260 = 0x808F06D4; // type:func -func_80B50278 = 0x808F06F0; // type:func -func_80B50304 = 0x808F077C; // type:func -func_80B503DC = 0x808F0854; // type:func -func_80B5042C = 0x808F08A4; // type:func -func_80B50488 = 0x808F0900; // type:func -func_80B504D4 = 0x808F094C; // type:func -func_80B5053C = 0x808F09B0; // type:func -func_80B50580 = 0x808F09F8; // type:func -func_80B505D4 = 0x808F0A4C; // type:func -func_80B50618 = 0x808F0A94; // type:func -func_80B50644 = 0x808F0AC0; // type:func -func_80B50670 = 0x808F0AEC; // type:func -func_80B506C4 = 0x808F0B40; // type:func -func_80B5073C = 0x808F0BBC; // type:func -func_80B50780 = 0x808F0C04; // type:func -func_80B507E8 = 0x808F0C6C; // type:func -func_80B5082C = 0x808F0CB4; // type:func -func_80B50880 = 0x808F0D08; // type:func -func_80B508C8 = 0x808F0D50; // type:func -func_80B50928 = 0x808F0DAC; // type:func -func_80B50970 = 0x808F0DF4; // type:func -func_80B50980 = 0x808F0E08; // type:func -func_80B509A0 = 0x808F0E2C; // type:func -func_80B50A04 = 0x808F0E90; // type:func -func_80B50BBC = 0x808F1034; // type:func -func_80B50BEC = 0x808F106C; // type:func -func_80B50C40 = 0x808F10C8; // type:func -func_80B50CA8 = 0x808F1138; // type:func -func_80B50CFC = 0x808F1194; // type:func -func_80B50D50 = 0x808F11F0; // type:func -func_80B50D94 = 0x808F123C; // type:func -func_80B50DE8 = 0x808F1298; // type:func -func_80B50E3C = 0x808F12F4; // type:func -func_80B50E90 = 0x808F1350; // type:func -func_80B50EE4 = 0x808F13AC; // type:func -func_80B50F38 = 0x808F1408; // type:func -func_80B50F8C = 0x808F1464; // type:func -func_80B50FE8 = 0x808F14C8; // type:func -func_80B51034 = 0x808F151C; // type:func -func_80B51080 = 0x808F1570; // type:func -func_80B510CC = 0x808F15C4; // type:func -func_80B51118 = 0x808F1618; // type:func -func_80B51164 = 0x808F166C; // type:func -func_80B511B0 = 0x808F16C0; // type:func -func_80B511FC = 0x808F1714; // type:func -func_80B51250 = 0x808F1770; // type:func -func_80B512B8 = 0x808F17E0; // type:func -func_80B51310 = 0x808F1840; // type:func -func_80B5135C = 0x808F1890; // type:func -func_80B513A8 = 0x808F18DC; // type:func -func_80B51418 = 0x808F1950; // type:func -func_80B5146C = 0x808F19A4; // type:func -func_80B5149C = 0x808F19D8; // type:func -func_80B514F8 = 0x808F1A38; // type:func -func_80B5154C = 0x808F1A8C; // type:func -func_80B515C4 = 0x808F1B04; // type:func -func_80B515D8 = 0x808F1B1C; // type:func -func_80B51644 = 0x808F1B88; // type:func -func_80B51678 = 0x808F1BBC; // type:func -func_80B516D0 = 0x808F1C14; // type:func -func_80B51704 = 0x808F1C48; // type:func -func_80B5175C = 0x808F1CA0; // type:func -func_80B51790 = 0x808F1CD4; // type:func -func_80B517E0 = 0x808F1D24; // type:func -func_80B51824 = 0x808F1D6C; // type:func -func_80B5187C = 0x808F1DC4; // type:func -func_80B518C0 = 0x808F1E0C; // type:func -func_80B51948 = 0x808F1E94; // type:func -func_80B51A5C = 0x808F1F94; // type:func -func_80B51A8C = 0x808F1FCC; // type:func -func_80B51AE4 = 0x808F202C; // type:func -func_80B51B44 = 0x808F2094; // type:func -func_80B51BA8 = 0x808F2100; // type:func -func_80B51C0C = 0x808F216C; // type:func -func_80B51C64 = 0x808F21CC; // type:func -func_80B51CA8 = 0x808F2218; // type:func -func_80B51D0C = 0x808F2284; // type:func -func_80B51D24 = 0x808F22A0; // type:func -func_80B51DA4 = 0x808F2320; // type:func -func_80B51EA8 = 0x808F2424; // type:func -func_80B51EBC = 0x808F243C; // type:func -func_80B51F38 = 0x808F24BC; // type:func -func_80B51FA8 = 0x808F252C; // type:func -func_80B52068 = 0x808F25D8; // type:func -func_80B52098 = 0x808F2610; // type:func -func_80B52108 = 0x808F2688; // type:func -func_80B52114 = 0x808F2698; // type:func -func_80B521A0 = 0x808F26F8; // type:func -EnZl2_Update = 0x808F2784; // type:func -EnZl2_Init = 0x808F27CC; // type:func -EnZl2_OverrideLimbDraw = 0x808F2878; // type:func -func_80B523BC = 0x808F28E0; // type:func -func_80B523C8 = 0x808F28F0; // type:func -func_80B525D4 = 0x808F2ACC; // type:func -EnZl2_Draw = 0x808F2C74; // type:func -BgHidanFslift_Init = 0x808F3510; // type:func -BgHidanFslift_SetHookshotTargetPos = 0x808F35F8; // type:func -BgHidanFslift_Destroy = 0x808F3658; // type:func -BgHidanFslift_SetupIdle = 0x808F368C; // type:func -BgHidanFslift_Idle = 0x808F36A8; // type:func -BgHidanFslift_Descend = 0x808F3748; // type:func -BgHidanFslift_Ascend = 0x808F37B4; // type:func -BgHidanFslift_Update = 0x808F3850; // type:func -BgHidanFslift_Draw = 0x808F38F8; // type:func -EnOE2_SetupAction = 0x808F39E0; // type:func -EnOE2_Init = 0x808F39EC; // type:func -EnOE2_Destroy = 0x808F3A14; // type:func -EnOE2_DoNothing = 0x808F3A24; // type:func -EnOE2_Update = 0x808F3A34; // type:func -EnOE2_Draw = 0x808F3A44; // type:func -BgYdanHasi_Init = 0x808F3AC0; // type:func -BgYdanHasi_Destroy = 0x808F3C24; // type:func -BgYdanHasi_UpdateFloatingBlock = 0x808F3C58; // type:func -BgYdanHasi_InitWater = 0x808F3D90; // type:func -BgYdanHasi_MoveWater = 0x808F3DDC; // type:func -BgYdanHasi_DecWaterTimer = 0x808F3EAC; // type:func -BgYdanHasi_SetupThreeBlocks = 0x808F3F00; // type:func -BgYdanHasi_UpdateThreeBlocks = 0x808F3F6C; // type:func -BgYdanHasi_Update = 0x808F403C; // type:func -BgYdanHasi_Draw = 0x808F4060; // type:func -BgYdanMaruta_Init = 0x808F4270; // type:func -BgYdanMaruta_Destroy = 0x808F44D4; // type:func -func_808BEFF4 = 0x808F4528; // type:func -func_808BF078 = 0x808F45AC; // type:func -func_808BF108 = 0x808F463C; // type:func -func_808BF1EC = 0x808F4720; // type:func -BgYdanMaruta_DoNothing = 0x808F4790; // type:func -BgYdanMaruta_Update = 0x808F47A0; // type:func -BgYdanMaruta_Draw = 0x808F47C4; // type:func -BossGanondrof_ClearPixels8x8 = 0x808F4950; // type:func -BossGanondrof_ClearPixels16x8 = 0x808F4990; // type:func -BossGanondrof_ClearPixels16x16 = 0x808F49D0; // type:func -BossGanondrof_ClearPixels32x16 = 0x808F4A00; // type:func -BossGanondrof_ClearPixels16x32 = 0x808F4A48; // type:func -BossGanondrof_ClearPixels = 0x808F4A94; // type:func -BossGanondrof_SetColliderPos = 0x808F4D44; // type:func -BossGanondrof_Init = 0x808F4D88; // type:func -BossGanondrof_Destroy = 0x808F5018; // type:func -BossGanondrof_SetupIntro = 0x808F5084; // type:func -BossGanondrof_Intro = 0x808F50D0; // type:func -BossGanondrof_SetupPaintings = 0x808F5588; // type:func -BossGanondrof_Paintings = 0x808F55CC; // type:func -BossGanondrof_SetupNeutral = 0x808F57A0; // type:func -BossGanondrof_Neutral = 0x808F5820; // type:func -BossGanondrof_SetupThrow = 0x808F5F68; // type:func -BossGanondrof_Throw = 0x808F6090; // type:func -BossGanondrof_SetupReturn = 0x808F629C; // type:func -BossGanondrof_Return = 0x808F633C; // type:func -BossGanondrof_SetupStunned = 0x808F6448; // type:func -BossGanondrof_Stunned = 0x808F650C; // type:func -BossGanondrof_SetupBlock = 0x808F6620; // type:func -BossGanondrof_Block = 0x808F6694; // type:func -BossGanondrof_SetupCharge = 0x808F6770; // type:func -BossGanondrof_Charge = 0x808F67E0; // type:func -BossGanondrof_SetupDeath = 0x808F6EC4; // type:func -BossGanondrof_Death = 0x808F6F5C; // type:func -BossGanondrof_CollisionCheck = 0x808F7E4C; // type:func -BossGanondrof_Update = 0x808F8078; // type:func -BossGanondrof_OverrideLimbDraw = 0x808F8480; // type:func -BossGanondrof_PostLimbDraw = 0x808F885C; // type:func -BossGanondrof_GetClearPixelDList = 0x808F8920; // type:func -BossGanondrof_EmptyDList = 0x808F898C; // type:func -BossGanondrof_Draw = 0x808F89B0; // type:func -EnAm_SetupAction = 0x808F96E0; // type:func -EnAm_CanMove = 0x808F96EC; // type:func -EnAm_Init = 0x808F9818; // type:func -EnAm_Destroy = 0x808F99E4; // type:func -EnAm_SpawnEffects = 0x808F9A3C; // type:func -EnAm_SetupSleep = 0x808F9BD8; // type:func -EnAm_SetupStatue = 0x808F9C74; // type:func -EnAm_SetupLunge = 0x808F9D04; // type:func -EnAm_SetupCooldown = 0x808F9D68; // type:func -EnAm_SetupMoveToHome = 0x808F9DD4; // type:func -EnAm_SetupRotateToInit = 0x808F9E30; // type:func -EnAm_SetupRotateToHome = 0x808F9E8C; // type:func -EnAm_SetupRecoilFromDamage = 0x808F9EE8; // type:func -EnAm_SetupRicochet = 0x808F9FC0; // type:func -EnAm_Sleep = 0x808FA074; // type:func -EnAm_RotateToHome = 0x808FA2E0; // type:func -EnAm_RotateToInit = 0x808FA3E4; // type:func -EnAm_MoveToHome = 0x808FA550; // type:func -EnAm_RecoilFromDamage = 0x808FA6C0; // type:func -EnAm_Cooldown = 0x808FA764; // type:func -EnAm_Lunge = 0x808FA89C; // type:func -EnAm_Statue = 0x808FAAD0; // type:func -EnAm_SetupStunned = 0x808FAD20; // type:func -EnAm_Stunned = 0x808FAE0C; // type:func -EnAm_Ricochet = 0x808FAEE0; // type:func -EnAm_TransformSwordHitbox = 0x808FAF94; // type:func -EnAm_UpdateDamage = 0x808FB02C; // type:func -EnAm_Update = 0x808FB1C4; // type:func -EnAm_PostLimbDraw = 0x808FB568; // type:func -EnAm_Draw = 0x808FB5B0; // type:func -EnDekubaba_Init = 0x808FBAE0; // type:func -EnDekubaba_Destroy = 0x808FBD24; // type:func -EnDekubaba_DisableACColliderElems = 0x808FBD50; // type:func -EnDekubaba_SetupWait = 0x808FBDD8; // type:func -EnDekubaba_SetupGrow = 0x808FC040; // type:func -EnDekubaba_SetupRetract = 0x808FC170; // type:func -EnDekubaba_SetupDecideLunge = 0x808FC258; // type:func -EnDekubaba_SetupPrepareLunge = 0x808FC2B0; // type:func -EnDekubaba_SetupLunge = 0x808FC2D4; // type:func -EnDekubaba_SetupPullBack = 0x808FC318; // type:func -EnDekubaba_SetupRecover = 0x808FC390; // type:func -EnDekubaba_SetupHit = 0x808FC3C4; // type:func -EnDekubaba_SetupPrunedSomersault = 0x808FC48C; // type:func -EnDekubaba_SetupShrinkDie = 0x808FC500; // type:func -EnDekubaba_SetupStunnedVertical = 0x808FC580; // type:func -EnDekubaba_SetupSway = 0x808FC704; // type:func -EnDekubaba_SetupDeadStickDrop = 0x808FC770; // type:func -EnDekubaba_Wait = 0x808FC810; // type:func -EnDekubaba_Grow = 0x808FC8BC; // type:func -EnDekubaba_Retract = 0x808FCD24; // type:func -EnDekubaba_UpdateHeadPosition = 0x808FD0EC; // type:func -EnDekubaba_DecideLunge = 0x808FD1F0; // type:func -EnDekubaba_Lunge = 0x808FD420; // type:func -EnDekubaba_PrepareLunge = 0x808FD6A8; // type:func -EnDekubaba_PullBack = 0x808FD774; // type:func -EnDekubaba_Recover = 0x808FDB00; // type:func -EnDekubaba_Hit = 0x808FDBF8; // type:func -EnDekubaba_StunnedVertical = 0x808FDD08; // type:func -EnDekubaba_Sway = 0x808FDDA4; // type:func -EnDekubaba_PrunedSomersault = 0x808FDECC; // type:func -EnDekubaba_ShrinkDie = 0x808FE230; // type:func -EnDekubaba_DeadStickDrop = 0x808FE3F4; // type:func -EnDekubaba_UpdateDamage = 0x808FE45C; // type:func -EnDekubaba_Update = 0x808FE710; // type:func -EnDekubaba_DrawStemRetracted = 0x808FE8B0; // type:func -EnDekubaba_DrawStemExtended = 0x808FE9A0; // type:func -EnDekubaba_DrawStemBasePruned = 0x808FEC90; // type:func -EnDekubaba_DrawBaseShadow = 0x808FED50; // type:func -EnDekubaba_PostLimbDraw = 0x808FEE44; // type:func -EnDekubaba_Draw = 0x808FEE80; // type:func -EnMFire1_Init = 0x808FF590; // type:func -EnMFire1_Destroy = 0x808FF5FC; // type:func -EnMFire1_Update = 0x808FF628; // type:func -func_80A9EFE0 = 0x808FF730; // type:func -EnMThunder_Init = 0x808FF73C; // type:func -EnMThunder_Destroy = 0x808FF9FC; // type:func -func_80A9F314 = 0x808FFA6C; // type:func -func_80A9F350 = 0x808FFAA8; // type:func -func_80A9F408 = 0x808FFB60; // type:func -func_80A9F938 = 0x80900094; // type:func -func_80A9F9B4 = 0x80900110; // type:func -EnMThunder_Update = 0x8090027C; // type:func -EnMThunder_Draw = 0x80900450; // type:func -BgDdanJd_Init = 0x80900D30; // type:func -BgDdanJd_Destroy = 0x80900DDC; // type:func -BgDdanJd_Idle = 0x80900E10; // type:func -BgDdanJd_MoveEffects = 0x80900FB4; // type:func -BgDdanJd_Move = 0x8090118C; // type:func -BgDdanJd_Update = 0x80901290; // type:func -BgDdanJd_Draw = 0x809012B4; // type:func -BgBreakwall_SetupAction = 0x80901380; // type:func -BgBreakwall_Init = 0x8090138C; // type:func -BgBreakwall_Destroy = 0x80901538; // type:func -BgBreakwall_SpawnFragments = 0x8090156C; // type:func -BgBreakwall_WaitForObject = 0x80901A3C; // type:func -BgBreakwall_Wait = 0x80901B44; // type:func -BgBreakwall_LavaCoverMove = 0x80901D14; // type:func -BgBreakwall_Update = 0x80901D68; // type:func -BgBreakwall_Draw = 0x80901D8C; // type:func -EnJj_SetupAction = 0x809021F0; // type:func -EnJj_Init = 0x809021FC; // type:func -EnJj_Destroy = 0x8090248C; // type:func -EnJj_Blink = 0x8090251C; // type:func -EnJj_OpenMouth = 0x8090259C; // type:func -EnJj_WaitToOpenMouth = 0x809025F0; // type:func -EnJj_WaitForFish = 0x80902634; // type:func -EnJj_BeginCutscene = 0x809026F0; // type:func -EnJj_CutsceneUpdate = 0x80902798; // type:func -EnJj_RemoveDust = 0x809028F4; // type:func -EnJj_UpdateStaticCollision = 0x8090294C; // type:func -EnJj_Update = 0x8090295C; // type:func -EnJj_Draw = 0x80902A08; // type:func -EnHorseZelda_GetFieldPosition = 0x809037C0; // type:func -EnHorseZelda_Move = 0x8090380C; // type:func -EnHorseZelda_Init = 0x809039D4; // type:func -EnHorseZelda_Destroy = 0x80903B24; // type:func -EnHorseZelda_SetupStop = 0x80903B74; // type:func -EnHorseZelda_Stop = 0x80903BC4; // type:func -EnHorseZelda_Spur = 0x80903C0C; // type:func -EnHorseZelda_Gallop = 0x80903CF4; // type:func -EnHorseZelda_SetRotate = 0x80903D34; // type:func -EnHorseZelda_Update = 0x80903DF8; // type:func -EnHorseZelda_PostDraw = 0x80903ED4; // type:func -EnHorseZelda_Draw = 0x80904060; // type:func -BgDdanKd_SetupAction = 0x809042B0; // type:func -BgDdanKd_Init = 0x809042BC; // type:func -BgDdanKd_Destroy = 0x809043B4; // type:func -BgDdanKd_CheckForExplosions = 0x809043FC; // type:func -BgDdanKd_LowerStairs = 0x80904514; // type:func -BgDdanKd_DoNothing = 0x809049E8; // type:func -BgDdanKd_Update = 0x809049F8; // type:func -BgDdanKd_Draw = 0x80904A1C; // type:func -DoorWarp1_SetupAction = 0x80904BA0; // type:func -DoorWarp1_Init = 0x80904BAC; // type:func -DoorWarp1_Destroy = 0x80904D1C; // type:func -DoorWarp1_SetupWarp = 0x80904DA4; // type:func -DoorWarp1_SetupAdultDungeonWarp = 0x809050AC; // type:func -DoorWarp1_SetupBlueCrystal = 0x80905278; // type:func -DoorWarp1_SetupPurpleCrystal = 0x80905410; // type:func -DoorWarp1_SetPlayerPos = 0x809055B0; // type:func -DoorWarp1_BlueCrystal = 0x809055E8; // type:func -func_80999214 = 0x80905634; // type:func -func_80999348 = 0x80905768; // type:func -DoorWarp1_FloatPlayer = 0x80905830; // type:func -DoorWarp1_PurpleCrystal = 0x8090584C; // type:func -DoorWarp1_ChooseInitialAction = 0x8090592C; // type:func -DoorWarp1_AwaitClearFlag = 0x809059A4; // type:func -func_809995D4 = 0x809059FC; // type:func -DoorWarp1_WarpAppear = 0x80905B4C; // type:func -func_809998A4 = 0x80905CD0; // type:func -DoorWarp1_PlayerInRange = 0x80905D68; // type:func -DoorWarp1_ChildWarpIdle = 0x80905DD4; // type:func -DoorWarp1_ChildWarpOut = 0x80905EA0; // type:func -DoorWarp1_RutoWarpIdle = 0x80906294; // type:func -func_80999EE0 = 0x80906314; // type:func -func_80999FE4 = 0x8090641C; // type:func -DoorWarp1_RutoWarpOut = 0x809064D4; // type:func -func_8099A3A4 = 0x809067E0; // type:func -DoorWarp1_AdultWarpIdle = 0x809068AC; // type:func -func_8099A508 = 0x8090694C; // type:func -DoorWarp1_AdultWarpOut = 0x80906A30; // type:func -DoorWarp1_Destination = 0x80907314; // type:func -DoorWarp1_DoNothing = 0x80907444; // type:func -func_8099B020 = 0x80907454; // type:func -DoorWarp1_Update = 0x80907510; // type:func -DoorWarp1_DrawBlueCrystal = 0x80907574; // type:func -DoorWarp1_DrawPurpleCrystal = 0x80907744; // type:func -DoorWarp1_DrawWarp = 0x809079C8; // type:func -DoorWarp1_Draw = 0x80908874; // type:func -ObjSyokudai_Init = 0x80908EB0; // type:func -ObjSyokudai_Destroy = 0x80909074; // type:func -ObjSyokudai_Update = 0x809090C8; // type:func -ObjSyokudai_Draw = 0x809096E4; // type:func -ItemBHeart_Init = 0x80909B00; // type:func -ItemBHeart_Destroy = 0x80909B6C; // type:func -ItemBHeart_Update = 0x80909B7C; // type:func -func_80B85264 = 0x80909C24; // type:func -ItemBHeart_Draw = 0x80909D10; // type:func -EnDekunuts_Init = 0x80909F10; // type:func -EnDekunuts_Destroy = 0x8090A07C; // type:func -EnDekunuts_SetupWait = 0x8090A0B8; // type:func -EnDekunuts_SetupLookAround = 0x8090A12C; // type:func -EnDekunuts_SetupThrowNut = 0x8090A174; // type:func -EnDekunuts_SetupStand = 0x8090A1B8; // type:func -EnDekunuts_SetupBurrow = 0x8090A220; // type:func -EnDekunuts_SetupBeginRun = 0x8090A270; // type:func -EnDekunuts_SetupRun = 0x8090A2D8; // type:func -EnDekunuts_SetupGasp = 0x8090A330; // type:func -EnDekunuts_SetupBeDamaged = 0x8090A390; // type:func -EnDekunuts_SetupBeStunned = 0x8090A46C; // type:func -EnDekunuts_SetupDie = 0x8090A500; // type:func -EnDekunuts_Wait = 0x8090A550; // type:func -EnDekunuts_LookAround = 0x8090A7B4; // type:func -EnDekunuts_Stand = 0x8090A838; // type:func -EnDekunuts_ThrowNut = 0x8090A924; // type:func -EnDekunuts_Burrow = 0x8090AA7C; // type:func -EnDekunuts_BeginRun = 0x8090AB90; // type:func -EnDekunuts_Run = 0x8090ABF8; // type:func -EnDekunuts_Gasp = 0x8090AE38; // type:func -EnDekunuts_BeDamaged = 0x8090AEA0; // type:func -EnDekunuts_BeStunned = 0x8090AEF0; // type:func -EnDekunuts_Die = 0x8090AF6C; // type:func -EnDekunuts_ColliderCheck = 0x8090B0C8; // type:func -EnDekunuts_Update = 0x8090B1EC; // type:func -EnDekunuts_OverrideLimbDraw = 0x8090B354; // type:func -EnDekunuts_Draw = 0x8090B488; // type:func -BgMenkuriKaiten_Init = 0x8090B710; // type:func -BgMenkuriKaiten_Destroy = 0x8090B778; // type:func -BgMenkuriKaiten_Update = 0x8090B7AC; // type:func -BgMenkuriKaiten_Draw = 0x8090B80C; // type:func -BgMenkuriEye_Init = 0x8090B8A0; // type:func -BgMenkuriEye_Destroy = 0x8090B97C; // type:func -BgMenkuriEye_Update = 0x8090B9A8; // type:func -BgMenkuriEye_Draw = 0x8090BB18; // type:func -EnVali_Init = 0x8090BD40; // type:func -EnVali_Destroy = 0x8090BEBC; // type:func -EnVali_SetupLurk = 0x8090BF0C; // type:func -EnVali_SetupDropAppear = 0x8090BF5C; // type:func -EnVali_SetupFloatIdle = 0x8090BF94; // type:func -EnVali_SetupAttacked = 0x8090C1AC; // type:func -EnVali_SetupRetaliate = 0x8090C1E4; // type:func -EnVali_SetupMoveArmsDown = 0x8090C254; // type:func -EnVali_SetupBurnt = 0x8090C294; // type:func -EnVali_SetupDivideAndDie = 0x8090C2EC; // type:func -EnVali_SetupStunned = 0x8090C3F0; // type:func -EnVali_SetupFrozen = 0x8090C47C; // type:func -EnVali_SetupReturnToLurk = 0x8090C4DC; // type:func -EnVali_DischargeLightning = 0x8090C538; // type:func -EnVali_Lurk = 0x8090C734; // type:func -EnVali_DropAppear = 0x8090C774; // type:func -EnVali_FloatIdle = 0x8090C808; // type:func -EnVali_Attacked = 0x8090C9B4; // type:func -EnVali_Retaliate = 0x8090CA6C; // type:func -EnVali_MoveArmsDown = 0x8090CAC8; // type:func -EnVali_Burnt = 0x8090CB04; // type:func -EnVali_DivideAndDie = 0x8090CB40; // type:func -EnVali_Stunned = 0x8090CCF4; // type:func -EnVali_Frozen = 0x8090CDB0; // type:func -EnVali_ReturnToLurk = 0x8090CF40; // type:func -EnVali_UpdateDamage = 0x8090CFB0; // type:func -EnVali_Update = 0x8090D168; // type:func -EnVali_PulseOutside = 0x8090D2C4; // type:func -EnVali_PulseInsides = 0x8090D4E0; // type:func -EnVali_SetArmLength = 0x8090D6FC; // type:func -EnVali_OverrideLimbDraw = 0x8090D89C; // type:func -EnVali_PostLimbDraw = 0x8090D92C; // type:func -EnVali_DrawBody = 0x8090D9F0; // type:func -EnVali_Draw = 0x8090DD58; // type:func -BgMizuMovebg_GetDragonStatueBossRoomOffsetIndex = 0x8090E400; // type:func -BgMizuMovebg_Init = 0x8090E46C; // type:func -BgMizuMovebg_Destroy = 0x8090E834; // type:func -BgMizuMovebg_SetPosFromPath = 0x8090E8E8; // type:func -BgMizuMovebg_SetScrollAlphas = 0x8090E97C; // type:func -BgMizuMovebg_UpdateMain = 0x8090EB00; // type:func -BgMizuMovebg_UpdateHookshotPlatform = 0x8090EE3C; // type:func -BgMizuMovebg_Update = 0x8090EFF8; // type:func -BgMizuMovebg_Draw = 0x8090F01C; // type:func -BgMizuWater_GetWaterLevelActionIndex = 0x8090F590; // type:func -BgMizuWater_SetWaterBoxesHeight = 0x8090F630; // type:func -BgMizuWater_Init = 0x8090F69C; // type:func -BgMizuWater_Destroy = 0x8090F8F8; // type:func -BgMizuWater_WaitForAction = 0x8090F908; // type:func -BgMizuWater_ChangeWaterLevel = 0x8090FAD4; // type:func -BgMizuWater_Update = 0x8090FDE4; // type:func -BgMizuWater_Draw = 0x8090FF3C; // type:func -ArmsHook_SetupAction = 0x80910260; // type:func -ArmsHook_Init = 0x8091026C; // type:func -ArmsHook_Destroy = 0x809102E0; // type:func -ArmsHook_Wait = 0x80910328; // type:func -ArmsHook_PullPlayer = 0x809103A8; // type:func -ArmsHook_AttachToPlayer = 0x809103BC; // type:func -ArmsHook_DetachFromActor = 0x809103EC; // type:func -ArmsHook_CheckForCancel = 0x80910414; // type:func -ArmsHook_AttachToActor = 0x809104B0; // type:func -ArmsHook_Shoot = 0x809104F8; // type:func -ArmsHook_Update = 0x80910B64; // type:func -ArmsHook_Draw = 0x80910BA4; // type:func -EnfHG_Init = 0x80910FD0; // type:func -EnfHG_Destroy = 0x809110D0; // type:func -EnfHG_SetupIntro = 0x809110FC; // type:func -EnfHG_Intro = 0x80911160; // type:func -EnfHG_SetupApproach = 0x8091236C; // type:func -EnfHG_Approach = 0x809125B8; // type:func -EnfHG_Attack = 0x8091275C; // type:func -EnfHG_Damage = 0x80912BE0; // type:func -EnfHG_Retreat = 0x80912F10; // type:func -EnfHG_Done = 0x80913144; // type:func -EnfHG_Update = 0x80913154; // type:func -EnfHG_PostDraw = 0x809132E8; // type:func -EnfHG_Draw = 0x809132FC; // type:func -BgMoriHineri_Init = 0x80913900; // type:func -BgMoriHineri_Destroy = 0x80913B00; // type:func -func_808A39FC = 0x80913B34; // type:func -BgMoriHineri_DoNothing = 0x80913D2C; // type:func -BgMoriHineri_SpawnBossKeyChest = 0x80913D3C; // type:func -func_808A3C8C = 0x80913DCC; // type:func -func_808A3D58 = 0x80913E98; // type:func -func_808A3E54 = 0x80913F94; // type:func -BgMoriHineri_Update = 0x80914074; // type:func -BgMoriHineri_DrawHallAndRoom = 0x80914098; // type:func -EnBb_SetupAction = 0x80914650; // type:func -EnBb_FindExplosive = 0x8091465C; // type:func -EnBb_SpawnFlameTrail = 0x809146F0; // type:func -EnBb_KillFlameTrail = 0x8091488C; // type:func -EnBb_Init = 0x809148D8; // type:func -EnBb_Destroy = 0x80914C80; // type:func -EnBb_SetupFlameTrail = 0x80914CAC; // type:func -EnBb_FlameTrail = 0x80914D00; // type:func -EnBb_SetupDeath = 0x80914E7C; // type:func -EnBb_Death = 0x80914F10; // type:func -EnBb_SetupDamage = 0x8091508C; // type:func -EnBb_Damage = 0x8091514C; // type:func -EnBb_SetupBlue = 0x809151B8; // type:func -EnBb_Blue = 0x80915278; // type:func -EnBb_SetupDown = 0x80915A6C; // type:func -EnBb_Down = 0x80915AFC; // type:func -EnBb_SetupRed = 0x80915DD0; // type:func -EnBb_Red = 0x80915EE0; // type:func -EnBb_FaceWaypoint = 0x809162A8; // type:func -EnBb_SetWaypoint = 0x809162DC; // type:func -EnBb_SetupWhite = 0x809163A8; // type:func -EnBb_White = 0x80916458; // type:func -EnBb_InitGreen = 0x809167DC; // type:func -EnBb_SetupGreen = 0x80916914; // type:func -EnBb_Green = 0x809169AC; // type:func -EnBb_SetupStunned = 0x8091701C; // type:func -EnBb_Stunned = 0x80917130; // type:func -EnBb_CollisionCheck = 0x809172D4; // type:func -EnBb_Update = 0x80917608; // type:func -EnBb_PostLimbDraw = 0x80917888; // type:func -EnBb_Draw = 0x809178D8; // type:func -BgTokiHikari_Init = 0x80918330; // type:func -BgTokiHikari_Destroy = 0x809183BC; // type:func -BgTokiHikari_DoNothing = 0x809183CC; // type:func -BgTokiHikari_Update = 0x809183DC; // type:func -BgTokiHikari_Draw = 0x80918400; // type:func -func_808BA018 = 0x80918450; // type:func -func_808BA204 = 0x809185F8; // type:func -func_808BA22C = 0x80918620; // type:func -func_808BA274 = 0x80918668; // type:func -func_808BA2CC = 0x809186C0; // type:func -EnYukabyun_Init = 0x809190D0; // type:func -EnYukabyun_Destroy = 0x80919180; // type:func -func_80B43A94 = 0x809191AC; // type:func -func_80B43AD4 = 0x809191EC; // type:func -func_80B43B6C = 0x80919284; // type:func -EnYukabyun_Break = 0x809192E4; // type:func -EnYukabyun_Update = 0x80919358; // type:func -EnYukabyun_Draw = 0x809194F8; // type:func -BgTokiSwd_SetupAction = 0x809196E0; // type:func -BgTokiSwd_Init = 0x809196EC; // type:func -BgTokiSwd_Destroy = 0x809197C0; // type:func -func_808BAF40 = 0x809197EC; // type:func -func_808BB0AC = 0x80919960; // type:func -func_808BB128 = 0x809199E0; // type:func -BgTokiSwd_Update = 0x80919A34; // type:func -BgTokiSwd_Draw = 0x80919A88; // type:func -EnFhgFire_SetUpdate = 0x8091AD30; // type:func -EnFhgFire_Init = 0x8091AD3C; // type:func -EnFhgFire_Destroy = 0x8091B14C; // type:func -EnFhgFire_LightningStrike = 0x8091B1BC; // type:func -EnFhgFire_LightningTrail = 0x8091B554; // type:func -EnFhgFire_LightningShock = 0x8091B6F4; // type:func -EnFhgFire_LightningBurst = 0x8091B838; // type:func -EnFhgFire_SpearLight = 0x8091BAB4; // type:func -EnFhgFire_EnergyBall = 0x8091BCA8; // type:func -EnFhgFire_PhantomWarp = 0x8091C954; // type:func -EnFhgFire_Update = 0x8091CB10; // type:func -EnFhgFire_Draw = 0x8091CB60; // type:func -BgMjin_SetupAction = 0x8091D3D0; // type:func -BgMjin_Init = 0x8091D3DC; // type:func -BgMjin_Destroy = 0x8091D47C; // type:func -func_808A0850 = 0x8091D4B0; // type:func -BgMjin_DoNothing = 0x8091D584; // type:func -BgMjin_Update = 0x8091D594; // type:func -BgMjin_Draw = 0x8091D5B8; // type:func -BgHidanKousi_SetupAction = 0x8091D7C0; // type:func -BgHidanKousi_Init = 0x8091D7CC; // type:func -BgHidanKousi_Destroy = 0x8091D8C4; // type:func -func_80889ACC = 0x8091D8F8; // type:func -func_80889B5C = 0x8091D984; // type:func -func_80889BC0 = 0x8091D9E8; // type:func -func_80889C18 = 0x8091DA40; // type:func -func_80889C90 = 0x8091DAB8; // type:func -func_80889D28 = 0x8091DB54; // type:func -BgHidanKousi_Update = 0x8091DB64; // type:func -BgHidanKousi_Draw = 0x8091DB88; // type:func -DoorToki_Init = 0x8091DD50; // type:func -DoorToki_Destroy = 0x8091DDB8; // type:func -DoorToki_Update = 0x8091DDEC; // type:func -BgHidanHamstep_SetupAction = 0x8091DEB0; // type:func -BgHidanHamstep_SpawnChildren = 0x8091DED0; // type:func -BgHidanHamstep_Init = 0x8091E04C; // type:func -BgHidanHamstep_Destroy = 0x8091E2BC; // type:func -func_808884C8 = 0x8091E310; // type:func -func_80888638 = 0x8091E480; // type:func -func_80888694 = 0x8091E4DC; // type:func -func_80888734 = 0x8091E57C; // type:func -func_808887C4 = 0x8091E610; // type:func -func_80888860 = 0x8091E6AC; // type:func -func_808889B8 = 0x8091E7F8; // type:func -func_80888A58 = 0x8091E898; // type:func -BgHidanHamstep_DoNothing = 0x8091EA30; // type:func -BgHidanHamstep_Update = 0x8091EA40; // type:func -BgHidanHamstep_Draw = 0x8091EA64; // type:func -EnBird_SetupAction = 0x8091ED60; // type:func -EnBird_Init = 0x8091ED6C; // type:func -EnBird_Destroy = 0x8091EE58; // type:func -EnBird_SetupIdle = 0x8091EE68; // type:func -EnBird_Idle = 0x8091EF1C; // type:func -EnBird_SetupMove = 0x8091EFBC; // type:func -EnBird_Move = 0x8091EFFC; // type:func -EnBird_Update = 0x8091F118; // type:func -EnBird_Draw = 0x8091F148; // type:func -EnWood02_SpawnZoneCheck = 0x8091F220; // type:func -EnWood02_SpawnOffspring = 0x8091F348; // type:func -EnWood02_Init = 0x8091F560; // type:func -EnWood02_Destroy = 0x8091F99C; // type:func -EnWood02_Update = 0x8091F9D8; // type:func -EnWood02_Draw = 0x8091FED0; // type:func -EnLightbox_Init = 0x80920400; // type:func -EnLightbox_Destroy = 0x8092052C; // type:func -EnLightbox_Update = 0x80920560; // type:func -EnLightbox_Draw = 0x809207E8; // type:func -EnPubox_Init = 0x80920880; // type:func -EnPubox_Destroy = 0x809209B8; // type:func -EnPubox_Update = 0x809209EC; // type:func -EnPubox_Draw = 0x80920B3C; // type:func -EnTrap_Init = 0x80920BC0; // type:func -EnTrap_Destroy = 0x80920F7C; // type:func -EnTrap_Update = 0x80920FA8; // type:func -EnTrap_Draw = 0x80921D3C; // type:func -EnArowTrap_Init = 0x80921E60; // type:func -EnArowTrap_Destroy = 0x80921EB0; // type:func -EnArowTrap_Update = 0x80921EC0; // type:func -EnVase_Init = 0x80921FB0; // type:func -EnVase_Destroy = 0x80922014; // type:func -EnVase_Draw = 0x80922024; // type:func -EnTa_SetupAction = 0x809220B0; // type:func -EnTa_SetTextForTalkInLonLonHouse = 0x809220C0; // type:func -EnTa_Init = 0x809221A0; // type:func -EnTa_DecreaseShadowSize = 0x80922824; // type:func -EnTa_Destroy = 0x80922858; // type:func -EnTa_RequestTalk = 0x809228D0; // type:func -EnTa_SleepTalkInKakariko = 0x80922978; // type:func -EnTa_SleepTalkInLonLonHouse = 0x809229B8; // type:func -EnTa_SetupAwake = 0x809229F8; // type:func -EnTa_TalkWakingUp2 = 0x80922A74; // type:func -EnTa_TalkWakingUp1 = 0x80922AC0; // type:func -EnTa_WakeUp = 0x80922B5C; // type:func -EnTa_SleepTalkInCastle = 0x80922BE8; // type:func -EnTa_IdleAsleepInCastle = 0x80922C28; // type:func -EnTa_IdleAsleepInLonLonHouse = 0x80922CF0; // type:func -EnTa_IdleAsleepInKakariko = 0x80922D54; // type:func -EnTa_RunWithAccelerationAndSfx = 0x80922E1C; // type:func -EnTa_RunAwayRunOutOfGate = 0x80922E9C; // type:func -EnTa_RunAwayTurnTowardsGate = 0x80922F10; // type:func -EnTa_RunAwayRunWest = 0x80922F70; // type:func -EnTa_RunAwayTurnWest = 0x80922FF8; // type:func -EnTa_RunAwayRunSouth = 0x80923058; // type:func -EnTa_RunAwayStart = 0x809230F8; // type:func -EnTa_TalkAwakeInCastle = 0x80923170; // type:func -EnTa_IdleAwakeInCastle = 0x8092321C; // type:func -EnTa_TalkAwakeInKakariko = 0x80923268; // type:func -EnTa_IdleAwakeInKakariko = 0x809232B4; // type:func -EnTa_TalkAtRanch = 0x8092335C; // type:func -EnTa_IdleAtRanch = 0x809233A8; // type:func -EnTa_CheckCanBuyMilk = 0x809233EC; // type:func -EnTa_CreateFloorCamera = 0x8092343C; // type:func -EnTa_RemoveFloorCamera = 0x809234F0; // type:func -EnTa_SetupActionWithSleepAnimation = 0x80923534; // type:func -EnTa_SetupActionWithWakeUpAnimation = 0x809235C4; // type:func -EnTa_TalkNotEnoughRupees = 0x80923650; // type:func -EnTa_IsPlayerHoldingSuperCucco = 0x809236C8; // type:func -EnTa_TalkFoundSuperCucco = 0x8092371C; // type:func -EnTa_IdleFoundSuperCucco = 0x8092387C; // type:func -EnTa_GetSuperCuccosCount = 0x809238EC; // type:func -EnTa_AnimateHandsUpDown = 0x80923928; // type:func -EnTa_TransitionToPostCuccoGame = 0x809239F4; // type:func -EnTa_TalkCuccoGameEnd = 0x80923A44; // type:func -EnTa_RunCuccoGame = 0x80923B20; // type:func -EnTa_ThrowSuperCuccos = 0x80923E80; // type:func -EnTa_StartingCuccoGame3 = 0x809240F8; // type:func -EnTa_StartingCuccoGame2 = 0x8092421C; // type:func -EnTa_StartingCuccoGame1 = 0x809242EC; // type:func -EnTa_StartCuccoGame = 0x809243B4; // type:func -EnTa_TalkGeneralInLonLonHouse = 0x8092444C; // type:func -EnTa_GiveItemInLonLonHouse = 0x809244A8; // type:func -EnTa_TalkAfterCuccoGameFirstWon = 0x8092457C; // type:func -EnTa_WaitBuyMilkOrPlayCuccoGameResponse = 0x80924614; // type:func -EnTa_WaitForPlayCuccoGameResponse = 0x809247F0; // type:func -EnTa_WaitForMarryMalonResponse = 0x80924918; // type:func -EnTa_ContinueTalkInLonLonHouse = 0x80924998; // type:func -EnTa_TalkAfterCuccoGameWon = 0x80924A64; // type:func -EnTa_IdleSittingInLonLonHouse = 0x80924B3C; // type:func -EnTa_IdleAfterCuccoGameFinished = 0x80924C3C; // type:func -EnTa_BlinkWaitUntilNext = 0x80924D00; // type:func -EnTa_BlinkAdvanceState = 0x80924D34; // type:func -EnTa_AnimRepeatCurrent = 0x80924DF4; // type:func -EnTa_AnimSleeping = 0x80924E34; // type:func -EnTa_AnimSitSleeping = 0x80924E88; // type:func -EnTa_AnimRunToEnd = 0x80924F68; // type:func -EnTa_Update = 0x80924FC0; // type:func -EnTa_OverrideLimbDraw = 0x80925150; // type:func -EnTa_PostLimbDraw = 0x809252D4; // type:func -EnTa_Draw = 0x80925314; // type:func -EnTkEff_Create = 0x80925A70; // type:func -EnTkEff_Update = 0x80925B14; // type:func -EnTkEff_Draw = 0x80925C20; // type:func -EnTkEff_CreateDflt = 0x80925F18; // type:func -EnTk_RestAnim = 0x80925FD0; // type:func -EnTk_WalkAnim = 0x8092604C; // type:func -EnTk_DigAnim = 0x809260C0; // type:func -EnTk_UpdateEyes = 0x80926140; // type:func -EnTk_CheckFacingPlayer = 0x80926204; // type:func -EnTk_CheckNextSpot = 0x80926288; // type:func -EnTk_CheckCurrentSpot = 0x80926370; // type:func -EnTk_Step = 0x809263E8; // type:func -EnTk_Orient = 0x80926510; // type:func -EnTk_GetTextId = 0x80926680; // type:func -EnTk_UpdateTalkState = 0x809266D4; // type:func -EnTk_ChooseReward = 0x80926870; // type:func -EnTk_DigEff = 0x80926A2C; // type:func -EnTk_Init = 0x80926B9C; // type:func -EnTk_Destroy = 0x80926D18; // type:func -EnTk_Rest = 0x80926D44; // type:func -EnTk_Walk = 0x80926F6C; // type:func -EnTk_Dig = 0x8092703C; // type:func -EnTk_Update = 0x809272A0; // type:func -func_80B1D200 = 0x8092734C; // type:func -EnTk_OverrideLimbDraw = 0x80927378; // type:func -EnTk_PostLimbDraw = 0x809273E4; // type:func -EnTk_Draw = 0x80927498; // type:func -BgMoriBigst_SetupAction = 0x809278A0; // type:func -BgMoriBigst_InitDynapoly = 0x809278AC; // type:func -BgMoriBigst_Init = 0x80927904; // type:func -BgMoriBigst_Destroy = 0x809279DC; // type:func -BgMoriBigst_SetupWaitForMoriTex = 0x80927A10; // type:func -BgMoriBigst_WaitForMoriTex = 0x80927A38; // type:func -BgMoriBigst_SetupNoop = 0x80927B04; // type:func -BgMoriBigst_SetupStalfosFight = 0x80927B28; // type:func -BgMoriBigst_StalfosFight = 0x80927BDC; // type:func -BgMoriBigst_SetupFall = 0x80927C54; // type:func -BgMoriBigst_Fall = 0x80927C7C; // type:func -BgMoriBigst_SetupLanding = 0x80927D08; // type:func -BgMoriBigst_Landing = 0x80927D9C; // type:func -BgMoriBigst_SetupStalfosPairFight = 0x80927DC8; // type:func -BgMoriBigst_StalfosPairFight = 0x80927EE0; // type:func -BgMoriBigst_SetupDone = 0x80927F40; // type:func -BgMoriBigst_Update = 0x80927F64; // type:func -BgMoriBigst_Draw = 0x80927FD8; // type:func -func_808A1800 = 0x809281D0; // type:func -func_808A18FC = 0x809282C8; // type:func -BgMoriElevator_Init = 0x80928350; // type:func -BgMoriElevator_Destroy = 0x80928434; // type:func -BgMoriElevator_IsPlayerRiding = 0x80928474; // type:func -BgMoriElevator_SetupWaitAfterInit = 0x809284D4; // type:func -BgMoriElevator_WaitAfterInit = 0x809284E8; // type:func -func_808A1C30 = 0x8092858C; // type:func -BgMoriElevator_MoveIntoGround = 0x809285A0; // type:func -func_808A1CF4 = 0x80928654; // type:func -BgMoriElevator_MoveAboveGround = 0x809286B0; // type:func -BgMoriElevator_SetupSetPosition = 0x80928764; // type:func -BgMoriElevator_SetPosition = 0x80928778; // type:func -BgMoriElevator_StopMovement = 0x80928940; // type:func -func_808A2008 = 0x8092895C; // type:func -BgMoriElevator_Update = 0x80928A10; // type:func -BgMoriElevator_Draw = 0x80928A68; // type:func -BgMoriKaitenkabe_CrossProduct = 0x80928CC0; // type:func -BgMoriKaitenkabe_Init = 0x80928D34; // type:func -BgMoriKaitenkabe_Destroy = 0x80928DE8; // type:func -BgMoriKaitenkabe_WaitForMoriTex = 0x80928E1C; // type:func -BgMoriKaitenkabe_SetupWait = 0x80928E74; // type:func -BgMoriKaitenkabe_Wait = 0x80928E8C; // type:func -BgMoriKaitenkabe_SetupRotate = 0x80928FEC; // type:func -BgMoriKaitenkabe_Rotate = 0x8092900C; // type:func -BgMoriKaitenkabe_Update = 0x80929178; // type:func -BgMoriKaitenkabe_Draw = 0x8092919C; // type:func -BgMoriRakkatenjo_Init = 0x80929330; // type:func -BgMoriRakkatenjo_Destroy = 0x809293E8; // type:func -BgMoriRakkatenjo_IsLinkUnder = 0x8092941C; // type:func -BgMoriRakkatenjo_IsLinkClose = 0x809294CC; // type:func -BgMoriRakkatenjo_SetupWaitForMoriTex = 0x8092957C; // type:func -BgMoriRakkatenjo_WaitForMoriTex = 0x80929590; // type:func -BgMoriRakkatenjo_SetupWait = 0x809295E8; // type:func -BgMoriRakkatenjo_Wait = 0x80929624; // type:func -BgMoriRakkatenjo_SetupFall = 0x809296F4; // type:func -BgMoriRakkatenjo_Fall = 0x80929714; // type:func -BgMoriRakkatenjo_SetupRest = 0x8092988C; // type:func -BgMoriRakkatenjo_Rest = 0x809298B4; // type:func -BgMoriRakkatenjo_SetupRise = 0x809298E4; // type:func -BgMoriRakkatenjo_Rise = 0x80929904; // type:func -BgMoriRakkatenjo_Update = 0x80929984; // type:func -BgMoriRakkatenjo_Draw = 0x80929A5C; // type:func -EnVm_SetupAction = 0x80929CB0; // type:func -EnVm_Init = 0x80929CBC; // type:func -EnVm_Destroy = 0x80929E2C; // type:func -EnVm_SetupWait = 0x80929E58; // type:func -EnVm_Wait = 0x80929EE4; // type:func -EnVm_SetupAttack = 0x8092A238; // type:func -EnVm_Attack = 0x8092A2DC; // type:func -EnVm_SetupStun = 0x8092A52C; // type:func -EnVm_Stun = 0x8092A5D4; // type:func -EnVm_SetupDie = 0x8092A6E0; // type:func -EnVm_Die = 0x8092A7E8; // type:func -EnVm_CheckHealth = 0x8092A89C; // type:func -EnVm_Update = 0x8092A998; // type:func -EnVm_OverrideLimbDraw = 0x8092AB2C; // type:func -EnVm_PostLimbDraw = 0x8092AB94; // type:func -EnVm_Draw = 0x8092AE6C; // type:func -DemoEffect_SetupUpdate = 0x8092B570; // type:func -DemoEffect_InterpolateCsFrames = 0x8092B57C; // type:func -DemoEffect_InitJewel = 0x8092B5DC; // type:func -DemoEffect_InitGetItem = 0x8092B69C; // type:func -DemoEffect_Init = 0x8092B6E8; // type:func -DemoEffect_Destroy = 0x8092BEE8; // type:func -DemoEffect_WaitForObject = 0x8092BF38; // type:func -DemoEffect_UpdatePositionToParent = 0x8092BF90; // type:func -DemoEffect_UpdateCrystalLight = 0x8092BFC0; // type:func -DemoEffect_MedalSparkle = 0x8092BFF4; // type:func -DemoEffect_UpdateGetItem = 0x8092C18C; // type:func -DemoEffect_InitTimeWarp = 0x8092C3CC; // type:func -DemoEffect_UpdateTimeWarpPullMasterSword = 0x8092C588; // type:func -DemoEffect_TimewarpShrink = 0x8092C62C; // type:func -DemoEffect_UpdateTimeWarpReturnFromChamberOfSages = 0x8092C750; // type:func -DemoEffect_UpdateTimeWarpTimeblock = 0x8092C808; // type:func -DemoEffect_InitTimeWarpTimeblock = 0x8092C8C4; // type:func -DemoEffect_UpdateTriforceSpot = 0x8092C948; // type:func -DemoEffect_UpdateLightRingShrinking = 0x8092CC30; // type:func -DemoEffect_UpdateLightRingExpanding = 0x8092CCC0; // type:func -DemoEffect_UpdateLightRingTriforce = 0x8092CD34; // type:func -DemoEffect_UpdateCreationFireball = 0x8092CDF0; // type:func -DemoEffect_InitCreationFireball = 0x8092CF44; // type:func -DemoEffect_UpdateBlueOrbShrink = 0x8092CF94; // type:func -DemoEffect_UpdateBlueOrbGrow = 0x8092CFFC; // type:func -DemoEffect_UpdateLightEffect = 0x8092D0DC; // type:func -DemoEffect_UpdateLgtShower = 0x8092D3D4; // type:func -DemoEffect_UpdateGodLgtDin = 0x8092D440; // type:func -DemoEffect_UpdateGodLgtNayru = 0x8092D5DC; // type:func -DemoEffect_UpdateGodLgtFarore = 0x8092D7D4; // type:func -DemoEffect_MoveTowardTarget = 0x8092D978; // type:func -DemoEffect_InitJewelColor = 0x8092D9D8; // type:func -DemoEffect_SetJewelColor = 0x8092DAD8; // type:func -DemoEffect_MoveJewelSplit = 0x8092E24C; // type:func -DemoEffect_MoveJewelSpherical = 0x8092E2A8; // type:func -DemoEffect_MoveJewelActivateDoorOfTime = 0x8092E48C; // type:func -DemoEffect_JewelSparkle = 0x8092E6F8; // type:func -DemoEffect_PlayJewelSfx = 0x8092E85C; // type:func -DemoEffect_UpdateJewelAdult = 0x8092E8C0; // type:func -DemoEffect_UpdateJewelChild = 0x8092E904; // type:func -DemoEffect_UpdateDust = 0x8092EB18; // type:func -DemoEffect_Update = 0x8092EC3C; // type:func -DemoEffect_CheckForCue = 0x8092EC60; // type:func -DemoEffect_DrawJewel = 0x8092ECA4; // type:func -DemoEffect_DrawCrystalLight = 0x8092F0E4; // type:func -DemoEffect_DrawFireBall = 0x8092F3BC; // type:func -DemoEffect_DrawGodLgt = 0x8092F548; // type:func -DemoEffect_DrawLightEffect = 0x8092F918; // type:func -DemoEffect_DrawBlueOrb = 0x8092FB50; // type:func -DemoEffect_DrawLgtShower = 0x8092FC78; // type:func -DemoEffect_DrawLightRing = 0x8092FDFC; // type:func -DemoEffect_DrawTriforceSpot = 0x8092FF64; // type:func -DemoEffect_DrawGetItem = 0x809304E8; // type:func -DemoEffect_OverrideLimbDrawTimeWarp = 0x80930580; // type:func -DemoEffect_DrawTimeWarp = 0x80930700; // type:func -DemoEffect_FaceTowardPoint = 0x809307D8; // type:func -DemoEffect_SetPosRotFromCue = 0x80930888; // type:func -DemoEffect_MoveTowardCuePos = 0x809309E8; // type:func -DemoEffect_SetStartPosFromCue = 0x80930A94; // type:func -DemoKankyo_SetupAction = 0x80931110; // type:func -DemoKankyo_Init = 0x8093111C; // type:func -DemoKankyo_Destroy = 0x80931500; // type:func -DemoKankyo_SetupType = 0x8093150C; // type:func -DemoKankyo_DoNothing = 0x80931944; // type:func -DemoKankyo_UpdateWarpIn = 0x80931954; // type:func -DemoKankyo_SetPosFromCue = 0x8093197C; // type:func -DemoKankyo_UpdateRock = 0x80931A6C; // type:func -DemoKankyo_UpdateClouds = 0x80931AE4; // type:func -DemoKankyo_UpdateDoorOfTime = 0x80931B30; // type:func -DemoKankyo_KillDoorOfTimeCollision = 0x80931BCC; // type:func -DemoKankyo_Update = 0x80931BF8; // type:func -DemoKankyo_Draw = 0x80931C1C; // type:func -func_80989B54 = 0x80931DC4; // type:func -DemoKankyo_DrawRain = 0x80931F94; // type:func -DemoKankyo_DrawRock = 0x809325A0; // type:func -DemoKankyo_DrawClouds = 0x809326E4; // type:func -DemoKankyo_DrawDoorOfTime = 0x80932A10; // type:func -DemoKankyo_DrawLightPlane = 0x80932B20; // type:func -DemoKankyo_Vec3fCopy = 0x80932C08; // type:func -DemoKankyo_AddVecGeoToVec3f = 0x80932C28; // type:func -DemoKankyo_Vec3fAddPosRot = 0x80932CA8; // type:func -DemoKankyo_DrawWarpSparkles = 0x80932D04; // type:func -DemoKankyo_DrawSparkles = 0x80933460; // type:func -BgHidanFwbig_Init = 0x80934E00; // type:func -BgHidanFwbig_Destroy = 0x80934FA0; // type:func -BgHidanFwbig_UpdatePosition = 0x80934FCC; // type:func -BgHidanFwbig_WaitForSwitch = 0x8093504C; // type:func -BgHidanFwbig_WaitForCs = 0x809350B0; // type:func -BgHidanFwbig_Rise = 0x809350DC; // type:func -BgHidanFwbig_Lower = 0x80935150; // type:func -BgHidanFwbig_WaitForTimer = 0x80935230; // type:func -BgHidanFwbig_WaitForPlayer = 0x80935280; // type:func -BgHidanFwbig_Move = 0x809352E4; // type:func -BgHidanFwbig_MoveCollider = 0x80935384; // type:func -BgHidanFwbig_Update = 0x80935584; // type:func -BgHidanFwbig_Draw = 0x809356FC; // type:func -EnFloormas_Init = 0x80935AE0; // type:func -EnFloormas_Destroy = 0x80935CF4; // type:func -EnFloormas_MakeInvulnerable = 0x80935D20; // type:func -EnFloormas_MakeVulnerable = 0x80935D44; // type:func -EnFloormas_SetupBigDecideAction = 0x80935D60; // type:func -EnFloormas_SetupStand = 0x80935DA8; // type:func -EnFloormas_SetupBigWalk = 0x80935DEC; // type:func -EnFloormas_SetupBigStopWalk = 0x80935E78; // type:func -EnFloormas_SetupRun = 0x80935EC0; // type:func -EnFloormas_SetupTurn = 0x80935EF0; // type:func -EnFloormas_SetupHover = 0x80936020; // type:func -EnFloormas_SetupCharge = 0x809360F8; // type:func -EnFloormas_SetupLand = 0x8093612C; // type:func -EnFloormas_SetupSplit = 0x809361D8; // type:func -EnFloormas_SetupSmallWalk = 0x80936338; // type:func -EnFloormas_SetupSmallDecideAction = 0x80936388; // type:func -EnFloormas_SetupSmallShrink = 0x809363E8; // type:func -EnFloormas_SetupSmallFollowerJumpAtLeader = 0x809364C0; // type:func -EnFloormas_SetupJumpAtLink = 0x8093652C; // type:func -EnFloormas_SetupGrabLink = 0x80936598; // type:func -EnFloormas_SetupMerge = 0x8093676C; // type:func -EnFloormas_SetupSmallWait = 0x809367C4; // type:func -EnFloormas_SetupTakeDamage = 0x80936848; // type:func -EnFloormas_SetupRecover = 0x80936904; // type:func -EnFloormas_SetupFreeze = 0x80936958; // type:func -EnFloormas_Die = 0x80936A58; // type:func -EnFloormas_BigDecideAction = 0x80936AF4; // type:func -EnFloormas_Stand = 0x80936BB8; // type:func -EnFloormas_BigWalk = 0x80936C44; // type:func -EnFloormas_BigStopWalk = 0x80936DA0; // type:func -EnFloormas_Run = 0x80936DDC; // type:func -EnFloormas_Turn = 0x80936EE8; // type:func -EnFloormas_Hover = 0x809370AC; // type:func -EnFloormas_Slide = 0x80937130; // type:func -EnFloormas_Charge = 0x80937270; // type:func -EnFloormas_Land = 0x80937360; // type:func -EnFloormas_Split = 0x80937548; // type:func -EnFloormas_SmallWalk = 0x809375D0; // type:func -EnFloormas_SmallDecideAction = 0x809376C0; // type:func -EnFloormas_SmallShrink = 0x80937828; // type:func -EnFloormas_JumpAtLink = 0x80937880; // type:func -EnFloormas_GrabLink = 0x809379BC; // type:func -EnFloormas_SmallFollowerJumpAtLeader = 0x80937CD8; // type:func -EnFloormas_Merge = 0x80937EE8; // type:func -EnFloormas_SmallWait = 0x80938198; // type:func -EnFloormas_TakeDamage = 0x809381A8; // type:func -EnFloormas_Recover = 0x8093826C; // type:func -EnFloormas_Freeze = 0x809382A8; // type:func -EnFloormas_ColliderCheck = 0x8093831C; // type:func -EnFloormas_Update = 0x809384CC; // type:func -EnFloormas_OverrideLimbDraw = 0x80938734; // type:func -EnFloormas_PostLimbDraw = 0x80938770; // type:func -EnFloormas_Draw = 0x80938860; // type:func -EnFloormas_DrawHighlighted = 0x8093892C; // type:func -EnHeishi1_Init = 0x80938EC0; // type:func -EnHeishi1_Destroy = 0x809390D8; // type:func -EnHeishi1_SetupWalk = 0x809390E8; // type:func -EnHeishi1_Walk = 0x8093919C; // type:func -EnHeishi1_SetupMoveToLink = 0x809394BC; // type:func -EnHeishi1_MoveToLink = 0x80939578; // type:func -EnHeishi1_SetupWait = 0x80939670; // type:func -EnHeishi1_Wait = 0x80939738; // type:func -EnHeishi1_SetupTurnTowardLink = 0x809398F4; // type:func -EnHeishi1_TurnTowardLink = 0x80939990; // type:func -EnHeishi1_SetupKick = 0x80939A3C; // type:func -EnHeishi1_Kick = 0x80939AD0; // type:func -EnHeishi1_SetupWaitNight = 0x80939BA4; // type:func -EnHeishi1_WaitNight = 0x80939C38; // type:func -EnHeishi1_Update = 0x80939CB8; // type:func -EnHeishi1_OverrideLimbDraw = 0x80939FCC; // type:func -EnHeishi1_Draw = 0x8093A010; // type:func -EnRd_SetupAction = 0x8093A3D0; // type:func -EnRd_Init = 0x8093A3DC; // type:func -EnRd_Destroy = 0x8093A5C8; // type:func -EnRd_UpdateMourningTarget = 0x8093A60C; // type:func -EnRd_SetupIdle = 0x8093A678; // type:func -EnRd_Idle = 0x8093A720; // type:func -EnRd_SetupRiseFromCoffin = 0x8093A94C; // type:func -EnRd_RiseFromCoffin = 0x8093A9EC; // type:func -EnRd_SetupWalkToPlayer = 0x8093AB6C; // type:func -EnRd_WalkToPlayer = 0x8093ABF8; // type:func -EnRd_SetupWalkToHome = 0x8093AF2C; // type:func -EnRd_WalkToHome = 0x8093AFAC; // type:func -EnRd_SetupWalkToParent = 0x8093B1C0; // type:func -EnRd_WalkToParent = 0x8093B244; // type:func -EnRd_SetupGrab = 0x8093B3D8; // type:func -EnRd_Grab = 0x8093B43C; // type:func -EnRd_SetupAttemptPlayerFreeze = 0x8093B7A8; // type:func -EnRd_AttemptPlayerFreeze = 0x8093B820; // type:func -EnRd_SetupStandUp = 0x8093B918; // type:func -EnRd_StandUp = 0x8093B964; // type:func -EnRd_SetupCrouch = 0x8093B9C0; // type:func -EnRd_Crouch = 0x8093BA40; // type:func -EnRd_SetupDamaged = 0x8093BA7C; // type:func -EnRd_Damaged = 0x8093BB08; // type:func -EnRd_SetupDead = 0x8093BC18; // type:func -EnRd_Dead = 0x8093BC90; // type:func -EnRd_SetupStunned = 0x8093BDDC; // type:func -EnRd_Stunned = 0x8093BEC8; // type:func -EnRd_TurnTowardsPlayer = 0x8093BF9C; // type:func -EnRd_UpdateDamage = 0x8093C114; // type:func -EnRd_Update = 0x8093C2E0; // type:func -EnRd_OverrideLimbDraw = 0x8093C4CC; // type:func -EnRd_PostLimbDraw = 0x8093C528; // type:func -EnRd_Draw = 0x8093C670; // type:func -EnPoSisters_Init = 0x8093CC90; // type:func -EnPoSisters_Destroy = 0x8093CEDC; // type:func -func_80AD9240 = 0x8093CF44; // type:func -func_80AD9368 = 0x8093D070; // type:func -func_80AD93C4 = 0x8093D0CC; // type:func -func_80AD943C = 0x8093D144; // type:func -func_80AD944C = 0x8093D158; // type:func -func_80AD94E0 = 0x8093D1EC; // type:func -func_80AD9568 = 0x8093D274; // type:func -func_80AD95D8 = 0x8093D2E4; // type:func -func_80AD96A4 = 0x8093D3B0; // type:func -func_80AD9718 = 0x8093D424; // type:func -func_80AD97C8 = 0x8093D4D4; // type:func -func_80AD98F4 = 0x8093D600; // type:func -func_80AD99D4 = 0x8093D6E0; // type:func -func_80AD9A54 = 0x8093D760; // type:func -func_80AD9AA8 = 0x8093D7B4; // type:func -func_80AD9C24 = 0x8093D930; // type:func -func_80AD9D44 = 0x8093DA50; // type:func -func_80AD9DF0 = 0x8093DAFC; // type:func -func_80AD9E60 = 0x8093DB6C; // type:func -func_80AD9F1C = 0x8093DC28; // type:func -func_80AD9F90 = 0x8093DC9C; // type:func -func_80ADA028 = 0x8093DD34; // type:func -func_80ADA094 = 0x8093DDA0; // type:func -func_80ADA10C = 0x8093DE18; // type:func -func_80ADA1B8 = 0x8093DEC8; // type:func -func_80ADA25C = 0x8093DF6C; // type:func -func_80ADA2BC = 0x8093DFCC; // type:func -func_80ADA35C = 0x8093E06C; // type:func -func_80ADA4A8 = 0x8093E1B8; // type:func -func_80ADA530 = 0x8093E240; // type:func -func_80ADA6A0 = 0x8093E3B0; // type:func -func_80ADA7F0 = 0x8093E500; // type:func -func_80ADA8C0 = 0x8093E5D0; // type:func -func_80ADA9E8 = 0x8093E6F8; // type:func -func_80ADAAA4 = 0x8093E7B4; // type:func -func_80ADAC70 = 0x8093E980; // type:func -func_80ADAD54 = 0x8093EA64; // type:func -func_80ADAE6C = 0x8093EB7C; // type:func -func_80ADAFC0 = 0x8093ECD0; // type:func -func_80ADB17C = 0x8093EE8C; // type:func -func_80ADB2B8 = 0x8093EFC8; // type:func -func_80ADB338 = 0x8093F044; // type:func -func_80ADB4B0 = 0x8093F1C0; // type:func -func_80ADB51C = 0x8093F22C; // type:func -func_80ADB770 = 0x8093F480; // type:func -func_80ADB9F0 = 0x8093F700; // type:func -func_80ADBB6C = 0x8093F87C; // type:func -func_80ADBBF4 = 0x8093F904; // type:func -func_80ADBC88 = 0x8093F998; // type:func -func_80ADBD38 = 0x8093FA4C; // type:func -func_80ADBD8C = 0x8093FAA0; // type:func -func_80ADBEE8 = 0x8093FC00; // type:func -func_80ADBF58 = 0x8093FC70; // type:func -func_80ADC034 = 0x8093FD4C; // type:func -func_80ADC10C = 0x8093FE24; // type:func -EnPoSisters_Update = 0x8093FFE8; // type:func -func_80ADC55C = 0x8094027C; // type:func -EnPoSisters_OverrideLimbDraw = 0x8094049C; // type:func -EnPoSisters_PostLimbDraw = 0x8094068C; // type:func -EnPoSisters_Draw = 0x80940D5C; // type:func -BgHeavyBlock_SetPieceRandRot = 0x80941980; // type:func -BgHeavyBlock_InitPiece = 0x80941A10; // type:func -BgHeavyBlock_SetupDynapoly = 0x80941B8C; // type:func -BgHeavyBlock_Init = 0x80941C00; // type:func -BgHeavyBlock_Destroy = 0x80941E44; // type:func -BgHeavyBlock_MovePiece = 0x80941E8C; // type:func -BgHeavyBlock_SpawnDust = 0x80942050; // type:func -BgHeavyBlock_SpawnPieces = 0x809423B4; // type:func -BgHeavyBlock_Wait = 0x809425AC; // type:func -BgHeavyBlock_LiftedUp = 0x809426D4; // type:func -BgHeavyBlock_Fly = 0x8094283C; // type:func -BgHeavyBlock_DoNothing = 0x80942B54; // type:func -BgHeavyBlock_Land = 0x80942B64; // type:func -BgHeavyBlock_Update = 0x80942DD4; // type:func -BgHeavyBlock_Draw = 0x80942DF8; // type:func -BgHeavyBlock_DrawPiece = 0x80942F60; // type:func -BgPoEvent_InitPaintings = 0x80943270; // type:func -BgPoEvent_InitBlocks = 0x809435EC; // type:func -BgPoEvent_Init = 0x8094379C; // type:func -BgPoEvent_Destroy = 0x809438AC; // type:func -BgPoEvent_BlockWait = 0x80943930; // type:func -BgPoEvent_BlockShake = 0x80943A3C; // type:func -BgPoEvent_CheckBlock = 0x80943AF4; // type:func -BgPoEvent_BlockFall = 0x80943C2C; // type:func -BgPoEvent_BlockIdle = 0x80943D30; // type:func -BgPoEvent_BlockPush = 0x80943FE4; // type:func -BgPoEvent_BlockReset = 0x809441A4; // type:func -BgPoEvent_BlockSolved = 0x809442A4; // type:func -BgPoEvent_AmyWait = 0x8094431C; // type:func -BgPoEvent_AmyPuzzle = 0x80944398; // type:func -BgPoEvent_NextPainting = 0x809444B4; // type:func -BgPoEvent_PaintingEmpty = 0x80944570; // type:func -BgPoEvent_PaintingAppear = 0x809445A0; // type:func -BgPoEvent_PaintingVanish = 0x809445D8; // type:func -BgPoEvent_PaintingPresent = 0x80944628; // type:func -BgPoEvent_PaintingBurn = 0x80944884; // type:func -BgPoEvent_Update = 0x80944A30; // type:func -BgPoEvent_Draw = 0x80944AA0; // type:func -ObjMure_SetCullingImpl = 0x809450B0; // type:func -ObjMure_SetCulling = 0x80945108; // type:func -ObjMure_Init = 0x80945134; // type:func -ObjMure_Destroy = 0x809451E4; // type:func -ObjMure_GetMaxChildSpawns = 0x809451F4; // type:func -ObjMure_GetSpawnPos = 0x80945220; // type:func -ObjMure_SpawnActors0 = 0x80945248; // type:func -ObjMure_SpawnActors1 = 0x80945410; // type:func -ObjMure_SpawnActors = 0x8094555C; // type:func -ObjMure_KillActorsImpl = 0x809455AC; // type:func -ObjMure_KillActors = 0x809456A4; // type:func -ObjMure_CheckChildren = 0x809456C4; // type:func -ObjMure_InitialAction = 0x80945788; // type:func -ObjMure_CulledState = 0x809457A0; // type:func -ObjMure_SetFollowTargets = 0x80945800; // type:func -ObjMure_SetChildToFollowPlayer = 0x809458D8; // type:func -ObjMure_GroupBehavior0 = 0x80945A58; // type:func -ObjMure_GroupBehavior1 = 0x80945C80; // type:func -ObjMure_ActiveState = 0x80945E04; // type:func -ObjMure_Update = 0x80945EAC; // type:func -EnSw_CrossProduct = 0x809460C0; // type:func -func_80B0BE20 = 0x80946134; // type:func -func_80B0C020 = 0x80946334; // type:func -func_80B0C0CC = 0x809463E4; // type:func -EnSw_Init = 0x80946818; // type:func -EnSw_Destroy = 0x80946CE0; // type:func -func_80B0C9F0 = 0x80946D0C; // type:func -func_80B0CBE8 = 0x80946F08; // type:func -func_80B0CCF4 = 0x80947014; // type:func -func_80B0CEA8 = 0x809471C8; // type:func -func_80B0CF44 = 0x80947268; // type:func -func_80B0D14C = 0x80947470; // type:func -func_80B0D364 = 0x80947688; // type:func -func_80B0D3AC = 0x809476D0; // type:func -func_80B0D590 = 0x809478B8; // type:func -func_80B0D878 = 0x80947BA0; // type:func -func_80B0DB00 = 0x80947E28; // type:func -func_80B0DC7C = 0x80947FA8; // type:func -func_80B0DE34 = 0x80948164; // type:func -func_80B0DEA8 = 0x809481E0; // type:func -func_80B0DFFC = 0x80948334; // type:func -func_80B0E314 = 0x8094864C; // type:func -func_80B0E430 = 0x80948764; // type:func -func_80B0E5E0 = 0x80948914; // type:func -func_80B0E728 = 0x80948A60; // type:func -func_80B0E90C = 0x80948C44; // type:func -func_80B0E9BC = 0x80948CF4; // type:func -EnSw_Update = 0x80948DA4; // type:func -EnSw_OverrideLimbDraw = 0x80948E00; // type:func -EnSw_PostLimbDraw = 0x809490A4; // type:func -func_80B0EDB8 = 0x809490BC; // type:func -func_80B0EEA4 = 0x80949174; // type:func -EnSw_Draw = 0x809491A0; // type:func -BossFd_SpawnEmber = 0x809498B0; // type:func -BossFd_SpawnDebris = 0x8094997C; // type:func -BossFd_SpawnDust = 0x80949A4C; // type:func -BossFd_SpawnFireBreath = 0x80949AE4; // type:func -BossFd_SetCameraSpeed = 0x80949BF0; // type:func -BossFd_UpdateCamera = 0x80949C90; // type:func -BossFd_Init = 0x80949DFC; // type:func -BossFd_Destroy = 0x8094A11C; // type:func -BossFd_IsFacingLink = 0x8094A17C; // type:func -BossFd_SetupFly = 0x8094A1AC; // type:func -BossFd_Fly = 0x8094A21C; // type:func -BossFd_Wait = 0x8094C8A4; // type:func -BossFd_Effects = 0x8094CA94; // type:func -BossFd_CollisionCheck = 0x8094D6B4; // type:func -BossFd_Update = 0x8094D768; // type:func -BossFd_UpdateEffects = 0x8094DEA8; // type:func -BossFd_DrawEffects = 0x8094E300; // type:func -BossFd_Draw = 0x8094E9A0; // type:func -BossFd_OverrideRightArmDraw = 0x8094EA58; // type:func -BossFd_OverrideLeftArmDraw = 0x8094EB78; // type:func -BossFd_DrawMane = 0x8094EC98; // type:func -BossFd_OverrideHeadDraw = 0x8094F11C; // type:func -BossFd_PostHeadDraw = 0x8094F214; // type:func -BossFd_DrawBody = 0x8094F268; // type:func -ObjectKankyo_SetupAction = 0x80950C10; // type:func -ObjectKankyo_Init = 0x80950C1C; // type:func -ObjectKankyo_Destroy = 0x80950F1C; // type:func -ObjectKankyo_Snow = 0x80950F40; // type:func -ObjectKankyo_Fairies = 0x80950F50; // type:func -ObjectKankyo_Update = 0x80951D68; // type:func -ObjectKankyo_Draw = 0x80951D8C; // type:func -ObjectKankyo_DrawFairies = 0x80951E10; // type:func -ObjectKankyo_DrawSnow = 0x80952298; // type:func -ObjectKankyo_Lightning = 0x80952A60; // type:func -ObjectKankyo_DrawLightning = 0x80952B08; // type:func -ObjectKankyo_SunGraveSparkInit = 0x80952D04; // type:func -ObjectKankyo_WaitForSunGraveSparkObject = 0x80952D50; // type:func -ObjectKankyo_SunGraveSpark = 0x80952DC0; // type:func -ObjectKankyo_DrawSunGraveSpark = 0x80952E6C; // type:func -ObjectKankyo_InitBeams = 0x809533B4; // type:func -ObjectKankyo_WaitForBeamObject = 0x80953400; // type:func -ObjectKankyo_Beams = 0x80953460; // type:func -ObjectKankyo_DrawBeams = 0x80953540; // type:func -EnDu_SetupAction = 0x80953E90; // type:func -EnDu_GetTextId = 0x80953E9C; // type:func -EnDu_UpdateTalkState = 0x80953F40; // type:func -func_809FDDB4 = 0x8095401C; // type:func -func_809FDE24 = 0x8095408C; // type:func -func_809FDE9C = 0x80954104; // type:func -func_809FDFC0 = 0x80954228; // type:func -func_809FE000 = 0x8095426C; // type:func -func_809FE040 = 0x809542B0; // type:func -func_809FE104 = 0x80954374; // type:func -EnDu_Init = 0x8095441C; // type:func -EnDu_Destroy = 0x809545EC; // type:func -func_809FE3B4 = 0x8095462C; // type:func -func_809FE3C0 = 0x8095463C; // type:func -func_809FE4A4 = 0x80954724; // type:func -func_809FE638 = 0x809548BC; // type:func -func_809FE6CC = 0x80954954; // type:func -func_809FE740 = 0x809549C8; // type:func -func_809FE798 = 0x80954A20; // type:func -func_809FE890 = 0x80954B18; // type:func -func_809FEB08 = 0x80954D94; // type:func -func_809FEC14 = 0x80954EA0; // type:func -func_809FEC70 = 0x80954EFC; // type:func -func_809FECE4 = 0x80954F74; // type:func -EnDu_Update = 0x80954FAC; // type:func -EnDu_OverrideLimbDraw = 0x80955138; // type:func -EnDu_PostLimbDraw = 0x809552B4; // type:func -EnDu_Draw = 0x80955310; // type:func -EnFd_SpawnCore = 0x80955920; // type:func -EnFd_SpawnChildFire = 0x80955A18; // type:func -EnFd_SpawnDot = 0x80955B38; // type:func -EnFd_CheckHammer = 0x80955CA4; // type:func -EnFd_ColliderCheck = 0x80955D40; // type:func -EnFd_CanSeeActor = 0x80955ED8; // type:func -EnFd_FindBomb = 0x80955FE8; // type:func -EnFd_FindPotentialTheat = 0x809560A8; // type:func -EnFd_GetPosAdjAroundCircle = 0x8095611C; // type:func -EnFd_ShouldStopRunning = 0x809561E4; // type:func -EnFd_Fade = 0x80956318; // type:func -EnFd_Init = 0x80956428; // type:func -EnFd_Destroy = 0x80956564; // type:func -EnFd_Reappear = 0x80956590; // type:func -EnFd_SpinAndGrow = 0x80956620; // type:func -EnFd_JumpToGround = 0x809566F4; // type:func -EnFd_Land = 0x80956770; // type:func -EnFd_SpinAndSpawnFire = 0x80956850; // type:func -EnFd_Run = 0x80956A70; // type:func -EnFd_WaitForCore = 0x80956CD0; // type:func -EnFd_Update = 0x80956D48; // type:func -EnFd_OverrideLimbDraw = 0x80956F44; // type:func -EnFd_PostLimbDraw = 0x80956F80; // type:func -EnFd_Draw = 0x809572AC; // type:func -EnFd_SpawnEffect = 0x80957658; // type:func -EnFd_UpdateEffectsFlames = 0x80957748; // type:func -EnFd_UpdateEffectsDots = 0x80957860; // type:func -EnFd_DrawEffectsFlames = 0x8095797C; // type:func -EnFd_DrawEffectsDots = 0x80957D50; // type:func -func_80A693D0 = 0x809585C0; // type:func -func_80A6948C = 0x8095867C; // type:func -func_80A695A4 = 0x80958794; // type:func -EnHorseLinkChild_Init = 0x8095885C; // type:func -EnHorseLinkChild_Destroy = 0x80958A34; // type:func -func_80A6988C = 0x80958A84; // type:func -func_80A698F4 = 0x80958AE8; // type:func -func_80A6993C = 0x80958B30; // type:func -func_80A699FC = 0x80958BF0; // type:func -func_80A69B7C = 0x80958D78; // type:func -func_80A69C18 = 0x80958E18; // type:func -func_80A69EC0 = 0x809590C0; // type:func -func_80A69F5C = 0x80959160; // type:func -func_80A6A068 = 0x8095926C; // type:func -func_80A6A4DC = 0x809596E8; // type:func -func_80A6A5A4 = 0x809597B0; // type:func -func_80A6A724 = 0x80959930; // type:func -func_80A6A7D0 = 0x809599E0; // type:func -EnHorseLinkChild_Update = 0x80959CBC; // type:func -EnHorseLinkChild_PostDraw = 0x80959E14; // type:func -EnHorseLinkChild_OverrideLimbDraw = 0x80959FA0; // type:func -EnHorseLinkChild_Draw = 0x8095A028; // type:func -DoorAna_SetupAction = 0x8095A3C0; // type:func -DoorAna_Init = 0x8095A3CC; // type:func -DoorAna_Destroy = 0x8095A488; // type:func -DoorAna_WaitClosed = 0x8095A4C4; // type:func -DoorAna_WaitOpen = 0x8095A5FC; // type:func -DoorAna_GrabPlayer = 0x8095A7B0; // type:func -DoorAna_Update = 0x8095A85C; // type:func -DoorAna_Draw = 0x8095A8B0; // type:func -BgSpot02Objects_Init = 0x8095AA30; // type:func -BgSpot02Objects_Destroy = 0x8095ACA0; // type:func -func_808AC8FC = 0x8095ACD4; // type:func -func_808AC908 = 0x8095ACE4; // type:func -func_808ACA08 = 0x8095ADE4; // type:func -func_808ACAFC = 0x8095AEDC; // type:func -func_808ACB58 = 0x8095AF38; // type:func -BgSpot02Objects_Update = 0x8095AFB8; // type:func -BgSpot02Objects_Draw = 0x8095AFDC; // type:func -func_808ACC34 = 0x8095B018; // type:func -func_808ACCB8 = 0x8095B09C; // type:func -func_808AD3D4 = 0x8095B788; // type:func -func_808AD450 = 0x8095B804; // type:func -BgHaka_Init = 0x8095BD90; // type:func -BgHaka_Destroy = 0x8095BE0C; // type:func -BgHaka_CheckPlayerOnDirtPatch = 0x8095BE40; // type:func -BgHaka_IdleClosed = 0x8095BED0; // type:func -BgHaka_Pull = 0x8095C024; // type:func -BgHaka_IdleOpened = 0x8095C19C; // type:func -BgHaka_IdleLockedClosed = 0x8095C1D8; // type:func -BgHaka_Update = 0x8095C250; // type:func -BgHaka_Draw = 0x8095C274; // type:func -MagicWind_SetupAction = 0x8095C450; // type:func -MagicWind_Init = 0x8095C45C; // type:func -MagicWind_Destroy = 0x8095C568; // type:func -MagicWind_UpdateAlpha = 0x8095C59C; // type:func -MagicWind_WaitForTimer = 0x8095C6BC; // type:func -MagicWind_Grow = 0x8095C738; // type:func -MagicWind_WaitAtFullSize = 0x8095C788; // type:func -MagicWind_FadeOut = 0x8095C7D4; // type:func -MagicWind_Shrink = 0x8095C838; // type:func -MagicWind_Update = 0x8095C878; // type:func -MagicWind_OverrideLimbDraw = 0x8095C8CC; // type:func -MagicWind_Draw = 0x8095CA50; // type:func -MagicFire_Init = 0x8095E150; // type:func -MagicFire_Destroy = 0x8095E1FC; // type:func -MagicFire_UpdateBeforeCast = 0x8095E220; // type:func -MagicFire_Update = 0x8095E2C4; // type:func -MagicFire_Draw = 0x8095E658; // type:func -func_80AEAC10 = 0x80960450; // type:func -func_80AEAC54 = 0x80960494; // type:func -func_80AEACDC = 0x8096051C; // type:func -func_80AEAD20 = 0x80960560; // type:func -EnRu1_DestroyColliders = 0x809605D8; // type:func -func_80AEADD8 = 0x80960618; // type:func -func_80AEADE0 = 0x80960624; // type:func -func_80AEADF0 = 0x80960638; // type:func -EnRu1_Destroy = 0x80960648; // type:func -EnRu1_UpdateEyes = 0x80960668; // type:func -EnRu1_SetEyeIndex = 0x809606F0; // type:func -EnRu1_SetMouthIndex = 0x80960708; // type:func -func_80AEAECC = 0x80960720; // type:func -EnRu1_IsCsStateIdle = 0x80960788; // type:func -EnRu1_GetCue = 0x809607A8; // type:func -func_80AEAFA0 = 0x809607F4; // type:func -func_80AEAFE0 = 0x80960834; // type:func -func_80AEB020 = 0x80960874; // type:func -EnRu1_FindSwitch = 0x809608DC; // type:func -func_80AEB0EC = 0x80960924; // type:func -func_80AEB104 = 0x8096093C; // type:func -func_80AEB124 = 0x8096095C; // type:func -func_80AEB174 = 0x809609AC; // type:func -func_80AEB1B4 = 0x809609F0; // type:func -func_80AEB264 = 0x80960A1C; // type:func -EnRu1_UpdateSkelAnime = 0x80960AD8; // type:func -func_80AEB364 = 0x80960B1C; // type:func -func_80AEB3A4 = 0x80960B5C; // type:func -func_80AEB3CC = 0x80960B84; // type:func -func_80AEB3DC = 0x80960B98; // type:func -EnRu1_GetCueChannel3 = 0x80960BF4; // type:func -func_80AEB458 = 0x80960C14; // type:func -func_80AEB480 = 0x80960C3C; // type:func -EnRu1_SpawnRipple = 0x80960C64; // type:func -func_80AEB50C = 0x80960CCC; // type:func -func_80AEB59C = 0x80960D5C; // type:func -EnRu1_SpawnSplash = 0x80960E48; // type:func -func_80AEB6E0 = 0x80960EAC; // type:func -func_80AEB738 = 0x80960F08; // type:func -func_80AEB7D0 = 0x80960FA0; // type:func -func_80AEB7E0 = 0x80960FB4; // type:func -func_80AEB87C = 0x80961050; // type:func -func_80AEB89C = 0x80961074; // type:func -func_80AEB914 = 0x809610EC; // type:func -func_80AEB934 = 0x8096110C; // type:func -func_80AEB954 = 0x8096112C; // type:func -func_80AEB974 = 0x8096114C; // type:func -func_80AEBA0C = 0x809611E4; // type:func -func_80AEBA2C = 0x80961204; // type:func -func_80AEBAFC = 0x809612D4; // type:func -func_80AEBB3C = 0x80961318; // type:func -func_80AEBB78 = 0x80961358; // type:func -func_80AEBBF4 = 0x809613D8; // type:func -func_80AEBC30 = 0x80961418; // type:func -func_80AEBC84 = 0x80961470; // type:func -func_80AEBCB8 = 0x809614A8; // type:func -func_80AEBD1C = 0x8096150C; // type:func -func_80AEBD94 = 0x80961584; // type:func -func_80AEBE3C = 0x8096162C; // type:func -func_80AEBEC8 = 0x809616BC; // type:func -func_80AEBF60 = 0x80961754; // type:func -func_80AEBFD8 = 0x809617D0; // type:func -func_80AEC070 = 0x80961868; // type:func -func_80AEC0B4 = 0x809618B0; // type:func -func_80AEC100 = 0x80961904; // type:func -func_80AEC130 = 0x80961938; // type:func -func_80AEC17C = 0x80961988; // type:func -func_80AEC1D4 = 0x809619E8; // type:func -func_80AEC244 = 0x80961A5C; // type:func -func_80AEC2C0 = 0x80961ADC; // type:func -func_80AEC320 = 0x80961B40; // type:func -func_80AEC40C = 0x80961C34; // type:func -func_80AEC4CC = 0x80961CF4; // type:func -func_80AEC4F4 = 0x80961D1C; // type:func -func_80AEC5FC = 0x80961E24; // type:func -func_80AEC650 = 0x80961E78; // type:func -func_80AEC6B0 = 0x80961EDC; // type:func -func_80AEC6E4 = 0x80961F14; // type:func -func_80AEC780 = 0x80961FB4; // type:func -func_80AEC81C = 0x80962054; // type:func -func_80AEC8B8 = 0x809620F0; // type:func -func_80AEC93C = 0x80962178; // type:func -func_80AEC9C4 = 0x80962200; // type:func -func_80AECA18 = 0x80962254; // type:func -func_80AECA44 = 0x80962284; // type:func -func_80AECA94 = 0x809622D8; // type:func -func_80AECAB4 = 0x809622F8; // type:func -func_80AECAD4 = 0x80962318; // type:func -func_80AECB18 = 0x80962360; // type:func -func_80AECB60 = 0x809623AC; // type:func -func_80AECBB8 = 0x80962408; // type:func -func_80AECC1C = 0x80962470; // type:func -func_80AECC84 = 0x809624DC; // type:func -func_80AECCB0 = 0x80962508; // type:func -func_80AECDA0 = 0x809625F8; // type:func -func_80AECE04 = 0x8096265C; // type:func -func_80AECE20 = 0x8096267C; // type:func -func_80AECEB4 = 0x8096270C; // type:func -func_80AECF6C = 0x809627C4; // type:func -func_80AED084 = 0x809628DC; // type:func -func_80AED0B0 = 0x80962908; // type:func -func_80AED0C8 = 0x80962920; // type:func -func_80AED0D8 = 0x80962934; // type:func -func_80AED110 = 0x8096296C; // type:func -func_80AED154 = 0x809629B0; // type:func -func_80AED19C = 0x809629F8; // type:func -func_80AED218 = 0x80962A74; // type:func -func_80AED304 = 0x80962B64; // type:func -func_80AED324 = 0x80962B84; // type:func -func_80AED344 = 0x80962BA4; // type:func -func_80AED374 = 0x80962BD8; // type:func -func_80AED3A4 = 0x80962C0C; // type:func -func_80AED3E0 = 0x80962C4C; // type:func -func_80AED414 = 0x80962C84; // type:func -func_80AED44C = 0x80962CC4; // type:func -func_80AED4FC = 0x80962D78; // type:func -func_80AED520 = 0x80962DA0; // type:func -func_80AED57C = 0x80962E00; // type:func -func_80AED5B8 = 0x80962E40; // type:func -func_80AED5DC = 0x80962E68; // type:func -func_80AED600 = 0x80962E90; // type:func -func_80AED624 = 0x80962EB8; // type:func -func_80AED6DC = 0x80962F70; // type:func -func_80AED6F8 = 0x80962F90; // type:func -func_80AED738 = 0x80962FD0; // type:func -func_80AED83C = 0x809630D8; // type:func -func_80AED8DC = 0x8096317C; // type:func -func_80AEDAE0 = 0x80963380; // type:func -func_80AEDB30 = 0x809633D4; // type:func -func_80AEDEF4 = 0x80963794; // type:func -func_80AEDFF4 = 0x80963898; // type:func -func_80AEE02C = 0x809638D8; // type:func -func_80AEE050 = 0x80963900; // type:func -func_80AEE264 = 0x80963B1C; // type:func -func_80AEE2F8 = 0x80963BB0; // type:func -func_80AEE394 = 0x80963C4C; // type:func -func_80AEE488 = 0x80963D40; // type:func -func_80AEE568 = 0x80963E20; // type:func -func_80AEE628 = 0x80963EE4; // type:func -func_80AEE6D0 = 0x80963F88; // type:func -func_80AEE7C4 = 0x8096407C; // type:func -func_80AEEAC8 = 0x8096439C; // type:func -func_80AEEB24 = 0x809643F8; // type:func -func_80AEEBB4 = 0x80964488; // type:func -func_80AEEBD4 = 0x809644A8; // type:func -func_80AEEC5C = 0x80964534; // type:func -func_80AEECF0 = 0x809645CC; // type:func -func_80AEED58 = 0x80964638; // type:func -func_80AEEDCC = 0x809646B0; // type:func -func_80AEEE34 = 0x8096471C; // type:func -func_80AEEE9C = 0x80964788; // type:func -func_80AEEF08 = 0x809647F8; // type:func -func_80AEEF5C = 0x80964850; // type:func -func_80AEEF68 = 0x80964860; // type:func -func_80AEEFEC = 0x809648E8; // type:func -func_80AEF080 = 0x8096497C; // type:func -func_80AEF0BC = 0x809649BC; // type:func -func_80AEF170 = 0x80964A74; // type:func -func_80AEF188 = 0x80964A8C; // type:func -func_80AEF1F0 = 0x80964AF4; // type:func -func_80AEF29C = 0x80964BA0; // type:func -func_80AEF2AC = 0x80964BB4; // type:func -func_80AEF2D0 = 0x80964BDC; // type:func -func_80AEF354 = 0x80964C68; // type:func -func_80AEF3A8 = 0x80964CC4; // type:func -func_80AEF40C = 0x80964D2C; // type:func -func_80AEF4A8 = 0x80964DCC; // type:func -func_80AEF4E0 = 0x80964E04; // type:func -func_80AEF51C = 0x80964E44; // type:func -func_80AEF540 = 0x80964E6C; // type:func -func_80AEF5B8 = 0x80964EE8; // type:func -func_80AEF624 = 0x80964F58; // type:func -func_80AEF728 = 0x8096505C; // type:func -func_80AEF79C = 0x809650D0; // type:func -func_80AEF820 = 0x80965158; // type:func -func_80AEF890 = 0x809651C8; // type:func -func_80AEF930 = 0x80965254; // type:func -func_80AEF99C = 0x809652C4; // type:func -func_80AEF9D8 = 0x80965300; // type:func -func_80AEFA2C = 0x80965344; // type:func -func_80AEFAAC = 0x809653BC; // type:func -func_80AEFB04 = 0x80965404; // type:func -func_80AEFB68 = 0x80965460; // type:func -func_80AEFBC8 = 0x809654B8; // type:func -func_80AEFC24 = 0x80965518; // type:func -func_80AEFC54 = 0x8096554C; // type:func -func_80AEFCE8 = 0x809655E8; // type:func -func_80AEFD38 = 0x80965638; // type:func -func_80AEFDC0 = 0x809656C4; // type:func -func_80AEFE38 = 0x80965748; // type:func -func_80AEFE84 = 0x80965794; // type:func -func_80AEFE9C = 0x809657AC; // type:func -func_80AEFECC = 0x809657E0; // type:func -func_80AEFF40 = 0x8096585C; // type:func -func_80AEFF94 = 0x809658B8; // type:func -EnRu1_Update = 0x80965954; // type:func -EnRu1_Init = 0x8096599C; // type:func -func_80AF0278 = 0x80965AD8; // type:func -EnRu1_OverrideLimbDraw = 0x80965B48; // type:func -EnRu1_PostLimbDraw = 0x80965BB4; // type:func -EnRu1_DrawNothing = 0x80965C40; // type:func -EnRu1_DrawOpa = 0x80965C50; // type:func -EnRu1_DrawXlu = 0x80965DF4; // type:func -EnRu1_Draw = 0x80965F94; // type:func -BossFd2_SpawnDebris = 0x80967AF0; // type:func -BossFd2_SpawnFireBreath = 0x80967BC8; // type:func -BossFd2_SpawnEmber = 0x80967CDC; // type:func -BossFd2_SpawnSkullPiece = 0x80967DB0; // type:func -BossFd2_SpawnDust = 0x80967E88; // type:func -BossFd2_Init = 0x80967F20; // type:func -BossFd2_Destroy = 0x8096801C; // type:func -BossFd2_SetupEmerge = 0x8096805C; // type:func -BossFd2_Emerge = 0x80968154; // type:func -BossFd2_SetupIdle = 0x80968494; // type:func -BossFd2_Idle = 0x8096853C; // type:func -BossFd2_SetupBurrow = 0x80968690; // type:func -BossFd2_Burrow = 0x80968708; // type:func -BossFd2_SetupBreatheFire = 0x809687D8; // type:func -BossFd2_BreatheFire = 0x8096883C; // type:func -BossFd2_SetupClawSwipe = 0x80968D80; // type:func -BossFd2_ClawSwipe = 0x80968DE0; // type:func -BossFd2_SetupVulnerable = 0x80968E58; // type:func -BossFd2_Vulnerable = 0x80968EB4; // type:func -BossFd2_SetupDamaged = 0x8096910C; // type:func -BossFd2_Damaged = 0x80969168; // type:func -BossFd2_SetupDeath = 0x80969298; // type:func -BossFd2_UpdateCamera = 0x80969328; // type:func -BossFd2_Death = 0x80969498; // type:func -BossFd2_Wait = 0x80969B1C; // type:func -BossFd2_CollisionCheck = 0x80969B64; // type:func -BossFd2_UpdateFace = 0x8096A004; // type:func -BossFd2_Update = 0x8096A170; // type:func -BossFd2_OverrideLimbDraw = 0x8096A324; // type:func -BossFd2_PostLimbDraw = 0x8096A518; // type:func -BossFd2_UpdateMane = 0x8096A5C0; // type:func -BossFd2_DrawMane = 0x8096AB94; // type:func -BossFd2_Draw = 0x8096AFD8; // type:func -EnFdFire_UpdatePos = 0x8096B820; // type:func -EnFdFire_CheckCollider = 0x8096B8E8; // type:func -EnFdFire_Init = 0x8096B94C; // type:func -EnFdFire_Destroy = 0x8096BA54; // type:func -func_80A0E70C = 0x8096BA80; // type:func -EnFdFire_WaitToDie = 0x8096BBBC; // type:func -EnFdFire_DanceTowardsPlayer = 0x8096BBF8; // type:func -EnFdFire_Disappear = 0x8096BDA8; // type:func -EnFdFire_Update = 0x8096BE5C; // type:func -EnFdFire_Draw = 0x8096BF58; // type:func -EnDh_SetupAction = 0x8096C530; // type:func -EnDh_Init = 0x8096C53C; // type:func -EnDh_Destroy = 0x8096C678; // type:func -EnDh_SpawnDebris = 0x8096C6C0; // type:func -EnDh_SetupWait = 0x8096C858; // type:func -EnDh_Wait = 0x8096C90C; // type:func -EnDh_SetupWalk = 0x8096CB30; // type:func -EnDh_Walk = 0x8096CBCC; // type:func -EnDh_SetupRetreat = 0x8096CCD4; // type:func -EnDh_Retreat = 0x8096CD38; // type:func -EnDh_SetupAttack = 0x8096CDC4; // type:func -EnDh_Attack = 0x8096CE24; // type:func -EnDh_SetupBurrow = 0x8096D134; // type:func -EnDh_Burrow = 0x8096D1B8; // type:func -EnDh_SetupDamage = 0x8096D348; // type:func -EnDh_Damage = 0x8096D3C8; // type:func -EnDh_SetupDeath = 0x8096D4F0; // type:func -EnDh_Death = 0x8096D578; // type:func -EnDh_CollisionCheck = 0x8096D6A8; // type:func -EnDh_Update = 0x8096D7F8; // type:func -EnDh_PostLimbDraw = 0x8096D9A8; // type:func -EnDh_Draw = 0x8096DA38; // type:func -EnDha_SetupAction = 0x8096E010; // type:func -EnDha_Init = 0x8096E01C; // type:func -EnDha_Destroy = 0x8096E138; // type:func -EnDha_SetupWait = 0x8096E164; // type:func -EnDha_Wait = 0x8096E1EC; // type:func -EnDha_SetupTakeDamage = 0x8096E6FC; // type:func -EnDha_TakeDamage = 0x8096E728; // type:func -EnDha_SetupDeath = 0x8096E7F0; // type:func -EnDha_Die = 0x8096E860; // type:func -EnDha_UpdateHealth = 0x8096EA1C; // type:func -EnDha_Update = 0x8096EB10; // type:func -EnDha_OverrideLimbDraw = 0x8096EBB8; // type:func -EnDha_PostLimbDraw = 0x8096EC58; // type:func -EnDha_Draw = 0x8096ED70; // type:func -EnRl_Destroy = 0x8096F010; // type:func -func_80AE72D0 = 0x8096F034; // type:func -func_80AE744C = 0x8096F0BC; // type:func -func_80AE7494 = 0x8096F104; // type:func -func_80AE74B4 = 0x8096F128; // type:func -func_80AE74FC = 0x8096F174; // type:func -func_80AE7544 = 0x8096F1C0; // type:func -func_80AE7590 = 0x8096F20C; // type:func -func_80AE7668 = 0x8096F2EC; // type:func -func_80AE7698 = 0x8096F320; // type:func -func_80AE772C = 0x8096F3B4; // type:func -func_80AE7798 = 0x8096F420; // type:func -func_80AE77B8 = 0x8096F440; // type:func -func_80AE77F8 = 0x8096F488; // type:func -func_80AE7838 = 0x8096F4CC; // type:func -func_80AE7878 = 0x8096F514; // type:func -func_80AE78D4 = 0x8096F56C; // type:func -func_80AE7954 = 0x8096F5EC; // type:func -func_80AE79A4 = 0x8096F63C; // type:func -func_80AE7AF8 = 0x8096F790; // type:func -func_80AE7BF8 = 0x8096F89C; // type:func -func_80AE7C64 = 0x8096F908; // type:func -func_80AE7C94 = 0x8096F928; // type:func -func_80AE7CE8 = 0x8096F970; // type:func -func_80AE7D40 = 0x8096F9B4; // type:func -func_80AE7D94 = 0x8096F9FC; // type:func -EnRl_Update = 0x8096FB44; // type:func -EnRl_Init = 0x8096FB8C; // type:func -func_80AE7FD0 = 0x8096FBF8; // type:func -func_80AE7FDC = 0x8096FC08; // type:func -EnRl_Draw = 0x8096FD3C; // type:func -EnEncount1_Init = 0x8096FEF0; // type:func -EnEncount1_SpawnLeevers = 0x80970024; // type:func -EnEncount1_SpawnTektites = 0x80970380; // type:func -EnEncount1_SpawnStalchildOrWolfos = 0x80970518; // type:func -EnEncount1_Update = 0x8097096C; // type:func -DemoDu_Destroy = 0x80970A50; // type:func -DemoDu_UpdateEyes = 0x80970A74; // type:func -DemoDu_SetEyeTexIndex = 0x80970AFC; // type:func -DemoDu_SetMouthTexIndex = 0x80970B14; // type:func -DemoDu_UpdateSkelAnime = 0x80970B2C; // type:func -DemoDu_UpdateBgCheckInfo = 0x80970B50; // type:func -DemoDu_GetCue = 0x80970B98; // type:func -DemoDu_CheckForCue = 0x80970BC0; // type:func -DemoDu_CheckForNoCue = 0x80970C0C; // type:func -DemoDu_SetStartPosRotFromCue = 0x80970C58; // type:func -func_80969DDC = 0x80970CD8; // type:func -DemoDu_InitCs_FireMedallion = 0x80970D68; // type:func -DemoDu_CsFireMedallion_SpawnDoorWarp = 0x80970DD8; // type:func -func_80969F38 = 0x80970E34; // type:func -func_80969FB4 = 0x80970EB0; // type:func -DemoDu_CsFireMedallion_AdvanceTo01 = 0x80970ED0; // type:func -DemoDu_CsFireMedallion_AdvanceTo02 = 0x80970F68; // type:func -DemoDu_CsFireMedallion_AdvanceTo03 = 0x80970FB8; // type:func -DemoDu_CsFireMedallion_AdvanceTo04 = 0x80970FE4; // type:func -DemoDu_CsFireMedallion_AdvanceTo05 = 0x80971078; // type:func -DemoDu_CsFireMedallion_AdvanceTo06 = 0x809710E4; // type:func -DemoDu_UpdateCs_FM_00 = 0x80971130; // type:func -DemoDu_UpdateCs_FM_01 = 0x80971150; // type:func -DemoDu_UpdateCs_FM_02 = 0x80971170; // type:func -DemoDu_UpdateCs_FM_03 = 0x809711A4; // type:func -DemoDu_UpdateCs_FM_04 = 0x809711E4; // type:func -DemoDu_UpdateCs_FM_05 = 0x8097121C; // type:func -DemoDu_UpdateCs_FM_06 = 0x8097125C; // type:func -DemoDu_InitCs_GoronsRuby = 0x80971288; // type:func -DemoDu_CsPlaySfx_GoronLanding = 0x809712D8; // type:func -DemoDu_CsPlaySfx_DaruniaFalling = 0x80971300; // type:func -DemoDu_CsPlaySfx_DaruniaHitsLink = 0x80971330; // type:func -DemoDu_CsPlaySfx_HitBreast = 0x80971388; // type:func -DemoDu_CsPlaySfx_LinkEscapeFromGorons = 0x809713B0; // type:func -DemoDu_CsPlaySfx_LinkSurprised = 0x80971408; // type:func -DemoDu_CsGoronsRuby_UpdateFaceTextures = 0x80971460; // type:func -func_8096A630 = 0x80971568; // type:func -DemoDu_CsGoronsRuby_SpawnDustWhenHittingLink = 0x8097161C; // type:func -DemoDu_CsGoronsRuby_DaruniaFalling = 0x809718B0; // type:func -DemoDu_CsGoronsRuby_AdvanceTo01 = 0x8097198C; // type:func -DemoDu_CsGoronsRuby_AdvanceTo02 = 0x809719A0; // type:func -DemoDu_CsGoronsRuby_AdvanceTo03 = 0x80971A44; // type:func -DemoDu_CsGoronsRuby_AdvanceTo04 = 0x80971A98; // type:func -DemoDu_CsGoronsRuby_AdvanceTo05 = 0x80971AD0; // type:func -DemoDu_CsGoronsRuby_AdvanceTo06 = 0x80971B3C; // type:func -DemoDu_CsGoronsRuby_AdvanceTo07 = 0x80971BD4; // type:func -DemoDu_CsGoronsRuby_AdvanceTo08 = 0x80971C40; // type:func -DemoDu_CsGoronsRuby_AdvanceTo09 = 0x80971CD4; // type:func -DemoDu_CsGoronsRuby_AdvanceTo10 = 0x80971D44; // type:func -DemoDu_CsGoronsRuby_AdvanceTo11 = 0x80971DB0; // type:func -DemoDu_CsGoronsRuby_AdvanceTo12 = 0x80971E44; // type:func -DemoDu_CsGoronsRuby_AdvanceTo13 = 0x80971EB0; // type:func -DemoDu_UpdateCs_GR_00 = 0x80971F40; // type:func -DemoDu_UpdateCs_GR_01 = 0x80971F74; // type:func -DemoDu_UpdateCs_GR_02 = 0x80971FB0; // type:func -DemoDu_UpdateCs_GR_03 = 0x8097200C; // type:func -DemoDu_UpdateCs_GR_04 = 0x8097204C; // type:func -DemoDu_UpdateCs_GR_05 = 0x8097209C; // type:func -DemoDu_UpdateCs_GR_06 = 0x809720E8; // type:func -DemoDu_UpdateCs_GR_07 = 0x80972148; // type:func -DemoDu_UpdateCs_GR_08 = 0x80972194; // type:func -DemoDu_UpdateCs_GR_09 = 0x809721F8; // type:func -DemoDu_UpdateCs_GR_10 = 0x80972258; // type:func -DemoDu_UpdateCs_GR_11 = 0x809722A4; // type:func -DemoDu_UpdateCs_GR_12 = 0x809722F4; // type:func -DemoDu_UpdateCs_GR_13 = 0x80972340; // type:func -DemoDu_InitCs_AfterGanon = 0x80972388; // type:func -DemoDu_CsPlaySfx_WhiteOut = 0x80972428; // type:func -DemoDu_CsAfterGanon_SpawnDemo6K = 0x80972448; // type:func -DemoDu_CsAfterGanon_AdvanceTo01 = 0x809724C8; // type:func -DemoDu_CsAfterGanon_AdvanceTo02 = 0x8097251C; // type:func -DemoDu_CsAfterGanon_BackTo01 = 0x80972670; // type:func -DemoDu_UpdateCs_AG_00 = 0x8097270C; // type:func -DemoDu_UpdateCs_AG_01 = 0x8097272C; // type:func -DemoDu_UpdateCs_AG_02 = 0x80972774; // type:func -DemoDu_Draw_02 = 0x809727BC; // type:func -DemoDu_InitCs_Credits = 0x80972978; // type:func -DemoDu_CsCredits_UpdateShadowAlpha = 0x809729E4; // type:func -DemoDu_CsCredits_AdvanceTo01 = 0x80972A70; // type:func -DemoDu_CsCredits_AdvanceTo02 = 0x80972AA8; // type:func -DemoDu_CsCredits_AdvanceTo03 = 0x80972AF4; // type:func -DemoDu_CsCredits_AdvanceTo04 = 0x80972B34; // type:func -DemoDu_CsCredits_BackTo02 = 0x80972B74; // type:func -DemoDu_CsCredits_HandleCues = 0x80972BBC; // type:func -DemoDu_UpdateCs_CR_00 = 0x80972C68; // type:func -DemoDu_UpdateCs_CR_01 = 0x80972C88; // type:func -DemoDu_UpdateCs_CR_02 = 0x80972CD4; // type:func -DemoDu_UpdateCs_CR_03 = 0x80972D1C; // type:func -DemoDu_UpdateCs_CR_04 = 0x80972D64; // type:func -DemoDu_Update = 0x80972DA8; // type:func -DemoDu_Init = 0x80972DF0; // type:func -DemoDu_Draw_NoDraw = 0x80972E94; // type:func -DemoDu_Draw_01 = 0x80972EA4; // type:func -DemoDu_Draw = 0x8097304C; // type:func -func_80984BE0 = 0x80974230; // type:func -DemoIm_InitCollider = 0x809742B8; // type:func -DemoIm_DestroyCollider = 0x80974304; // type:func -DemoIm_UpdateCollider = 0x80974330; // type:func -func_80984DB8 = 0x80974374; // type:func -func_80984E58 = 0x80974418; // type:func -func_80984F10 = 0x809744D0; // type:func -func_80984F94 = 0x80974558; // type:func -DemoIm_UpdateBgCheckInfo = 0x809745E0; // type:func -DemoIm_UpdateSkelAnime = 0x80974628; // type:func -DemoIm_IsCutsceneIdle = 0x8097464C; // type:func -DemoIm_GetCue = 0x8097466C; // type:func -func_809850E8 = 0x809746B8; // type:func -func_80985134 = 0x80974704; // type:func -func_80985180 = 0x80974750; // type:func -func_80985200 = 0x809747D0; // type:func -DemoIm_ChangeAnim = 0x80974850; // type:func -func_80985310 = 0x809748E0; // type:func -func_80985358 = 0x80974928; // type:func -func_809853B4 = 0x80974984; // type:func -func_80985430 = 0x80974A00; // type:func -func_8098544C = 0x80974A20; // type:func -func_809854DC = 0x80974ABC; // type:func -func_8098557C = 0x80974B5C; // type:func -func_809855A8 = 0x80974B88; // type:func -func_80985640 = 0x80974C20; // type:func -func_809856AC = 0x80974C8C; // type:func -func_809856F8 = 0x80974CD8; // type:func -func_80985718 = 0x80974CF8; // type:func -func_80985738 = 0x80974D18; // type:func -func_80985770 = 0x80974D54; // type:func -func_809857B0 = 0x80974D9C; // type:func -func_809857F0 = 0x80974DE0; // type:func -func_80985830 = 0x80974E28; // type:func -func_80985860 = 0x80974E5C; // type:func -func_809858A8 = 0x80974EA0; // type:func -DemoIm_SpawnLightBall = 0x80974EC0; // type:func -func_80985948 = 0x80974F40; // type:func -func_809859E0 = 0x80974FDC; // type:func -func_80985B34 = 0x80975130; // type:func -func_80985C10 = 0x80975214; // type:func -func_80985C40 = 0x80975234; // type:func -func_80985C94 = 0x8097527C; // type:func -DemoIm_DrawTranslucent = 0x809752C4; // type:func -func_80985E60 = 0x8097540C; // type:func -func_80985EAC = 0x80975458; // type:func -func_80985EF4 = 0x809754A0; // type:func -func_80985F54 = 0x80975500; // type:func -func_80985F64 = 0x80975514; // type:func -func_80985FE8 = 0x80975598; // type:func -func_8098604C = 0x809755FC; // type:func -func_809860C8 = 0x80975678; // type:func -func_809860DC = 0x80975690; // type:func -func_80986148 = 0x809756FC; // type:func -func_809861C4 = 0x80975778; // type:func -func_8098629C = 0x8097583C; // type:func -func_809862E0 = 0x80975880; // type:func -func_809863BC = 0x80975948; // type:func -func_809863DC = 0x80975968; // type:func -func_80986430 = 0x809759C4; // type:func -func_80986494 = 0x80975A30; // type:func -func_809864D4 = 0x80975A78; // type:func -func_8098652C = 0x80975AD8; // type:func -func_80986570 = 0x80975B1C; // type:func -func_809865F8 = 0x80975BA4; // type:func -func_80986700 = 0x80975CB4; // type:func -func_80986710 = 0x80975CC8; // type:func -func_80986794 = 0x80975D4C; // type:func -func_8098680C = 0x80975DC4; // type:func -func_809868E8 = 0x80975E8C; // type:func -func_80986908 = 0x80975EAC; // type:func -func_80986948 = 0x80975EF4; // type:func -func_809869B0 = 0x80975F64; // type:func -func_809869F8 = 0x80975FA8; // type:func -func_80986A5C = 0x8097600C; // type:func -func_80986AD0 = 0x80976080; // type:func -func_80986B2C = 0x809760DC; // type:func -func_80986BA0 = 0x80976150; // type:func -func_80986BE4 = 0x80976194; // type:func -func_80986BF8 = 0x809761A8; // type:func -func_80986C30 = 0x809761E0; // type:func -func_80986CC8 = 0x80976284; // type:func -func_80986CFC = 0x809762B8; // type:func -func_80986D40 = 0x80976300; // type:func -func_80986DC8 = 0x80976368; // type:func -func_80986E20 = 0x809763C4; // type:func -func_80986E40 = 0x809763E4; // type:func -func_80986EAC = 0x80976458; // type:func -func_80986F08 = 0x809764BC; // type:func -func_80986F28 = 0x809764DC; // type:func -func_80986F88 = 0x80976544; // type:func -func_80986FA8 = 0x80976568; // type:func -func_80987018 = 0x809765E0; // type:func -func_80987064 = 0x80976628; // type:func -func_809870F0 = 0x809766B4; // type:func -func_80987128 = 0x809766EC; // type:func -func_80987174 = 0x80976738; // type:func -func_809871B4 = 0x80976778; // type:func -func_809871E8 = 0x809767AC; // type:func -func_80987288 = 0x80976838; // type:func -func_809872A8 = 0x80976858; // type:func -func_809872F0 = 0x809768A4; // type:func -func_80987330 = 0x809768EC; // type:func -DemoIm_Update = 0x80976930; // type:func -DemoIm_Init = 0x80976978; // type:func -DemoIm_Destroy = 0x80976AA0; // type:func -DemoIm_OverrideLimbDraw = 0x80976AC0; // type:func -DemoIm_PostLimbDraw = 0x80976B70; // type:func -DemoIm_DrawNothing = 0x80976BFC; // type:func -DemoIm_DrawSolid = 0x80976C0C; // type:func -DemoIm_Draw = 0x80976D50; // type:func -DemoTreLgt_Init = 0x809781A0; // type:func -DemoTreLgt_Destroy = 0x809781FC; // type:func -func_80993754 = 0x80978228; // type:func -func_8099375C = 0x80978234; // type:func -func_809937B4 = 0x8097828C; // type:func -func_80993848 = 0x80978324; // type:func -DemoTreLgt_Update = 0x809785D8; // type:func -DemoTreLgt_OverrideLimbDraw = 0x8097860C; // type:func -DemoTreLgt_Draw = 0x80978760; // type:func -EnFw_DoBounce = 0x809788B0; // type:func -EnFw_PlayerInRange = 0x80978978; // type:func -EnFw_GetPosAdjAroundCircle = 0x80978A74; // type:func -EnFw_CheckCollider = 0x80978B48; // type:func -EnFw_SpawnDust = 0x80978C08; // type:func -EnFw_Init = 0x80978E50; // type:func -EnFw_Destroy = 0x80978F58; // type:func -EnFw_Bounce = 0x80978F84; // type:func -EnFw_Run = 0x80978FF0; // type:func -EnFw_TurnToParentInitPos = 0x809795C4; // type:func -EnFw_JumpToParentInitPos = 0x809796B8; // type:func -EnFw_Update = 0x8097976C; // type:func -EnFw_OverrideLimbDraw = 0x8097984C; // type:func -EnFw_PostLimbDraw = 0x80979868; // type:func -EnFw_Draw = 0x80979904; // type:func -EnFw_SpawnEffectDust = 0x8097998C; // type:func -EnFw_UpdateEffects = 0x80979A30; // type:func -EnFw_DrawEffects = 0x80979B3C; // type:func -BgVbSima_Init = 0x8097A070; // type:func -BgVbSima_Destroy = 0x8097A0D8; // type:func -BgVbSima_SpawnEmber = 0x8097A10C; // type:func -BgVbSima_Update = 0x8097A1D8; // type:func -BgVbSima_Draw = 0x8097A638; // type:func -EnVbBall_Init = 0x8097A790; // type:func -EnVbBall_Destroy = 0x8097A910; // type:func -EnVbBall_SpawnDebris = 0x8097A94C; // type:func -EnVbBall_SpawnDust = 0x8097AA24; // type:func -EnVbBall_UpdateBones = 0x8097AAC4; // type:func -EnVbBall_Update = 0x8097ADA8; // type:func -EnVbBall_Draw = 0x8097B574; // type:func -BgHakaMegane_Init = 0x8097B940; // type:func -BgHakaMegane_Destroy = 0x8097B9F8; // type:func -func_8087DB24 = 0x8097BA2C; // type:func -func_8087DBF0 = 0x8097BAFC; // type:func -BgHakaMegane_DoNothing = 0x8097BB70; // type:func -BgHakaMegane_Update = 0x8097BB80; // type:func -BgHakaMegane_Draw = 0x8097BBA4; // type:func -BgHakaMeganeBG_Init = 0x8097BD40; // type:func -BgHakaMeganeBG_Destroy = 0x8097BEDC; // type:func -func_8087DFF8 = 0x8097BF10; // type:func -func_8087E040 = 0x8097BF58; // type:func -func_8087E10C = 0x8097C024; // type:func -func_8087E1E0 = 0x8097C0F8; // type:func -func_8087E258 = 0x8097C170; // type:func -func_8087E288 = 0x8097C1A0; // type:func -func_8087E2D8 = 0x8097C1F0; // type:func -func_8087E34C = 0x8097C264; // type:func -BgHakaMeganeBG_Update = 0x8097C274; // type:func -BgHakaMeganeBG_Draw = 0x8097C298; // type:func -BgHakaShip_Init = 0x8097C400; // type:func -BgHakaShip_Destroy = 0x8097C544; // type:func -BgHakaShip_ChildUpdatePosition = 0x8097C584; // type:func -BgHakaShip_WaitForSong = 0x8097C5E0; // type:func -BgHakaShip_CutsceneStationary = 0x8097C658; // type:func -BgHakaShip_Move = 0x8097C6F4; // type:func -BgHakaShip_SetupCrash = 0x8097C8B8; // type:func -BgHakaShip_CrashShake = 0x8097C914; // type:func -BgHakaShip_CrashFall = 0x8097C9A4; // type:func -BgHakaShip_Update = 0x8097CA64; // type:func -BgHakaShip_Draw = 0x8097CAA4; // type:func -BgHakaSgami_Init = 0x8097CE50; // type:func -BgHakaSgami_Destroy = 0x8097D0F8; // type:func -BgHakaSgami_SetupSpin = 0x8097D158; // type:func -BgHakaSgami_Spin = 0x8097D1D0; // type:func -BgHakaSgami_Update = 0x8097D6E4; // type:func -BgHakaSgami_Draw = 0x8097D738; // type:func -EnHeishi2_Init = 0x8097DA70; // type:func -EnHeishi2_Destroy = 0x8097DCF0; // type:func -EnHeishi2_DoNothing1 = 0x8097DD34; // type:func -EnHeishi_DoNothing2 = 0x8097DD44; // type:func -func_80A531E4 = 0x8097DD54; // type:func -func_80A53278 = 0x8097DDE8; // type:func -func_80A5344C = 0x8097DF68; // type:func -func_80A53538 = 0x8097E054; // type:func -func_80A535BC = 0x8097E0DC; // type:func -func_80A53638 = 0x8097E158; // type:func -func_80A5372C = 0x8097E244; // type:func -func_80A53850 = 0x8097E368; // type:func -func_80A53908 = 0x8097E420; // type:func -func_80A5399C = 0x8097E4B4; // type:func -func_80A53AD4 = 0x8097E5D8; // type:func -func_80A53C0C = 0x8097E714; // type:func -func_80A53C90 = 0x8097E79C; // type:func -func_80A53D0C = 0x8097E818; // type:func -func_80A53DF8 = 0x8097E8FC; // type:func -func_80A53F30 = 0x8097EA34; // type:func -func_80A54038 = 0x8097EB3C; // type:func -func_80A540C0 = 0x8097EBC8; // type:func -func_80A541FC = 0x8097ED04; // type:func -func_80A5427C = 0x8097ED88; // type:func -func_80A54320 = 0x8097EE2C; // type:func -func_80A543A0 = 0x8097EEAC; // type:func -func_80A544AC = 0x8097EFB8; // type:func -func_80A5455C = 0x8097F068; // type:func -func_80A546DC = 0x8097F1DC; // type:func -func_80A5475C = 0x8097F25C; // type:func -func_80A54954 = 0x8097F454; // type:func -func_80A549E8 = 0x8097F4E8; // type:func -EnHeishi2_Update = 0x8097F578; // type:func -EnHeishi2_OverrideLimbDraw = 0x8097F6C4; // type:func -EnHeishi2_PostLimbDraw = 0x8097F73C; // type:func -EnHeishi2_DrawKingGuard = 0x8097F774; // type:func -EnHeishi2_Draw = 0x8097F7E8; // type:func -EnEncount2_Init = 0x8097FC70; // type:func -EnEncount2_Wait = 0x8097FCE4; // type:func -EnEncount2_SpawnRocks = 0x8097FF3C; // type:func -EnEncount2_Update = 0x80980504; // type:func -EnEncount2_Draw = 0x809808D0; // type:func -EnEncount2_SpawnEffect = 0x809808F0; // type:func -EnEncount2_UpdateEffects = 0x809809A4; // type:func -EnEncount2_DrawEffects = 0x80980B78; // type:func -EnFireRock_Init = 0x80980EA0; // type:func -EnFireRock_Destroy = 0x80981290; // type:func -EnFireRock_Fall = 0x809812F4; // type:func -EnFireRock_SpawnMoreBrokenPieces = 0x80981648; // type:func -FireRock_WaitSpawnRocksFromCeiling = 0x809817C8; // type:func -FireRock_WaitOnFloor = 0x809818B8; // type:func -EnFireRock_Update = 0x8098199C; // type:func -EnFireRock_Draw = 0x80981C48; // type:func -EnBrob_Init = 0x80981FB0; // type:func -EnBrob_Destroy = 0x80982224; // type:func -EnBrob_SetupIdle = 0x8098227C; // type:func -EnBrob_SetupMoveUp = 0x809822E4; // type:func -EnBrob_SetupWobble = 0x80982344; // type:func -EnBrob_SetupStunned = 0x80982398; // type:func -EnBrob_SetupMoveDown = 0x8098242C; // type:func -EnBrob_SetupShock = 0x809824AC; // type:func -EnBrob_Idle = 0x809824F8; // type:func -EnBrob_MoveUp = 0x809825B8; // type:func -EnBrob_Wobble = 0x809826BC; // type:func -EnBrob_Stunned = 0x8098275C; // type:func -EnBrob_MoveDown = 0x809827F8; // type:func -EnBrob_Shock = 0x809828FC; // type:func -EnBrob_Update = 0x80982B14; // type:func -EnBrob_PostLimbDraw = 0x80982DB0; // type:func -EnBrob_Draw = 0x80982E84; // type:func -MirRay_SetupCollider = 0x809830A0; // type:func -MirRay_MakeShieldLight = 0x80983168; // type:func -MirRay_Init = 0x8098330C; // type:func -MirRay_Destroy = 0x809835A4; // type:func -MirRay_Update = 0x8098361C; // type:func -MirRay_SetIntensity = 0x80983708; // type:func -MirRay_SetupReflectionPolys = 0x809838BC; // type:func -MirRay_RemoveSimilarReflections = 0x80983A98; // type:func -MirRay_ReflectedBeam = 0x80983B9C; // type:func -MirRay_Draw = 0x8098410C; // type:func -MirRay_CheckInFrustum = 0x809843E8; // type:func -func_808B1AE0 = 0x80984950; // type:func -func_808B1BA0 = 0x80984A10; // type:func -func_808B1BEC = 0x80984A5C; // type:func -func_808B1C70 = 0x80984AE8; // type:func -func_808B1CEC = 0x80984B64; // type:func -func_808B1D18 = 0x80984B90; // type:func -func_808B1D44 = 0x80984BBC; // type:func -BgSpot09Obj_Init = 0x80984BFC; // type:func -BgSpot09Obj_Destroy = 0x80984C64; // type:func -BgSpot09Obj_Update = 0x80984CA4; // type:func -BgSpot09Obj_Draw = 0x80984CB4; // type:func -func_808B8910 = 0x80984E70; // type:func -func_808B8A5C = 0x80984F28; // type:func -func_808B8A98 = 0x80984F64; // type:func -func_808B8B08 = 0x80984FD4; // type:func -func_808B8B38 = 0x80985008; // type:func -func_808B8BB4 = 0x80985084; // type:func -func_808B8C90 = 0x80985168; // type:func -func_808B8CC8 = 0x809851A4; // type:func -BgSpot18Obj_Init = 0x809851F8; // type:func -BgSpot18Obj_Destroy = 0x80985254; // type:func -func_808B8DC0 = 0x80985288; // type:func -func_808B8DD0 = 0x8098529C; // type:func -func_808B8DDC = 0x809852AC; // type:func -func_808B8E20 = 0x809852F0; // type:func -func_808B8E64 = 0x80985334; // type:func -func_808B8E7C = 0x80985350; // type:func -func_808B8EE0 = 0x809853B4; // type:func -func_808B8F08 = 0x809853E0; // type:func -func_808B9030 = 0x8098550C; // type:func -func_808B9040 = 0x80985520; // type:func -BgSpot18Obj_Update = 0x80985540; // type:func -BgSpot18Obj_Draw = 0x80985574; // type:func -BossVa_SetupAction = 0x80985740; // type:func -BossVa_AttachToBody = 0x8098574C; // type:func -BossVa_BloodDroplets = 0x80985990; // type:func -BossVa_BloodSplatter = 0x80985A90; // type:func -BossVa_Gore = 0x80985BBC; // type:func -BossVa_Spark = 0x80985CEC; // type:func -BossVa_Tumor = 0x80985E70; // type:func -BossVa_SetSparkEnv = 0x80985FF4; // type:func -BossVa_SetDeathEnv = 0x80986040; // type:func -BossVa_FindBoomerang = 0x809860C0; // type:func -BossVa_KillBari = 0x80986100; // type:func -BossVa_Init = 0x809862EC; // type:func -BossVa_Destroy = 0x80986B3C; // type:func -BossVa_SetupIntro = 0x80986B8C; // type:func -BossVa_BodyIntro = 0x80986C1C; // type:func -BossVa_SetupBodyPhase1 = 0x80987C3C; // type:func -BossVa_BodyPhase1 = 0x80987CE0; // type:func -BossVa_SetupBodyPhase2 = 0x80987F78; // type:func -BossVa_BodyPhase2 = 0x809880A4; // type:func -BossVa_SetupBodyPhase3 = 0x809885A8; // type:func -BossVa_BodyPhase3 = 0x809885E4; // type:func -BossVa_SetupBodyPhase4 = 0x80988C4C; // type:func -BossVa_BodyPhase4 = 0x80988D00; // type:func -BossVa_SetupBodyDeath = 0x80989808; // type:func -BossVa_BodyDeath = 0x809898A0; // type:func -BossVa_SetupSupportIntro = 0x8098A3F8; // type:func -BossVa_SupportIntro = 0x8098A470; // type:func -BossVa_SetupSupportAttached = 0x8098A594; // type:func -BossVa_SupportAttached = 0x8098A618; // type:func -BossVa_SetupSupportCut = 0x8098A840; // type:func -BossVa_SupportCut = 0x8098A908; // type:func -BossVa_SetupStump = 0x8098ADDC; // type:func -BossVa_Stump = 0x8098AE60; // type:func -BossVa_SetupZapperIntro = 0x8098AEF8; // type:func -BossVa_ZapperIntro = 0x8098AF8C; // type:func -BossVa_SetupZapperAttack = 0x8098B04C; // type:func -BossVa_ZapperAttack = 0x8098B0E0; // type:func -BossVa_SetupZapperDamaged = 0x8098BB14; // type:func -BossVa_ZapperDamaged = 0x8098BC1C; // type:func -BossVa_SetupZapperDeath = 0x8098BD30; // type:func -BossVa_ZapperDeath = 0x8098BE04; // type:func -BossVa_SetupZapperEnraged = 0x8098C32C; // type:func -BossVa_ZapperEnraged = 0x8098C3B4; // type:func -BossVa_SetupZapperHold = 0x8098CB0C; // type:func -BossVa_ZapperHold = 0x8098CB8C; // type:func -BossVa_SetupBariIntro = 0x8098CC98; // type:func -BossVa_BariIntro = 0x8098CDA8; // type:func -BossVa_SetupBariPhase3Attack = 0x8098D300; // type:func -BossVa_BariPhase3Attack = 0x8098D3A8; // type:func -BossVa_SetupBariPhase2Attack = 0x8098D7A8; // type:func -BossVa_BariPhase2Attack = 0x8098D850; // type:func -BossVa_SetupBariPhase3Stunned = 0x8098DE68; // type:func -BossVa_BariPhase3Stunned = 0x8098DEC4; // type:func -BossVa_SetupBariDeath = 0x8098E0E0; // type:func -BossVa_BariDeath = 0x8098E138; // type:func -BossVa_SetupDoor = 0x8098E16C; // type:func -BossVa_Door = 0x8098E1BC; // type:func -BossVa_Update = 0x8098E230; // type:func -BossVa_BodyOverrideLimbDraw = 0x8098E43C; // type:func -BossVa_BodyPostLimbDraw = 0x8098E5E0; // type:func -BossVa_SupportOverrideLimbDraw = 0x8098EAE4; // type:func -BossVa_SupportPostLimbDraw = 0x8098EB28; // type:func -BossVa_ZapperOverrideLimbDraw = 0x8098ED78; // type:func -BossVa_ZapperPostLimbDraw = 0x8098EF54; // type:func -BossVa_BariOverrideLimbDraw = 0x8098F3B4; // type:func -BossVa_BariPostLimbDraw = 0x8098F444; // type:func -BossVa_Draw = 0x8098F5D0; // type:func -BossVa_UpdateEffects = 0x8098FBC8; // type:func -BossVa_DrawEffects = 0x80990568; // type:func -BossVa_SpawnSpark = 0x80991370; // type:func -BossVa_SpawnSparkBall = 0x80991660; // type:func -BossVa_SpawnBloodDroplets = 0x809917EC; // type:func -BossVa_SpawnBloodSplatter = 0x809919B8; // type:func -BossVa_SpawnTumor = 0x80991B54; // type:func -BossVa_SpawnGore = 0x80991CF8; // type:func -BossVa_SpawnZapperCharge = 0x80991F18; // type:func -BossVa_DrawDoor = 0x8099206C; // type:func -BgHakaTubo_Init = 0x8099C9D0; // type:func -BgHakaTubo_Destroy = 0x8099CACC; // type:func -BgHakaTubo_Idle = 0x8099CB24; // type:func -BgHakaTubo_DropCollectible = 0x8099CD90; // type:func -BgHakaTubo_Update = 0x8099D054; // type:func -BgHakaTubo_DrawFlameCircle = 0x8099D088; // type:func -BgHakaTubo_Draw = 0x8099D234; // type:func -BgHakaTrap_Init = 0x8099D3F0; // type:func -BgHakaTrap_Destroy = 0x8099D690; // type:func -func_8087FFC0 = 0x8099D714; // type:func -func_808801B8 = 0x8099D914; // type:func -func_808802D8 = 0x8099DA38; // type:func -func_80880484 = 0x8099DBE4; // type:func -func_808805C0 = 0x8099DD20; // type:func -func_808806BC = 0x8099DE1C; // type:func -func_808808F4 = 0x8099E054; // type:func -func_808809B0 = 0x8099E114; // type:func -func_808809E4 = 0x8099E148; // type:func -func_80880AE8 = 0x8099E254; // type:func -func_80880C0C = 0x8099E378; // type:func -BgHakaTrap_Update = 0x8099E3EC; // type:func -func_80880D68 = 0x8099E4DC; // type:func -BgHakaTrap_Draw = 0x8099E578; // type:func -BgHakaHuta_Init = 0x8099E9C0; // type:func -BgHakaHuta_Destroy = 0x8099EA80; // type:func -BgHakaHuta_SpawnDust = 0x8099EAB4; // type:func -BgHakaHuta_PlaySfx = 0x8099EC70; // type:func -BgHakaHuta_SpawnEnemies = 0x8099ECFC; // type:func -BgHakaHuta_Open = 0x8099EFC4; // type:func -BgHakaHuta_SlideOpen = 0x8099F078; // type:func -func_8087D720 = 0x8099F12C; // type:func -BgHakaHuta_DoNothing = 0x8099F2D0; // type:func -BgHakaHuta_Update = 0x8099F2E0; // type:func -BgHakaHuta_Draw = 0x8099F304; // type:func -BgHakaZou_Init = 0x8099F460; // type:func -BgHakaZou_Destroy = 0x8099F748; // type:func -func_808828F4 = 0x8099F798; // type:func -BgHakaZou_Wait = 0x8099F914; // type:func -func_80882BDC = 0x8099FA84; // type:func -func_80882CC4 = 0x8099FB6C; // type:func -func_80882E54 = 0x8099FCFC; // type:func -func_80883000 = 0x8099FEAC; // type:func -func_80883104 = 0x8099FFB0; // type:func -func_80883144 = 0x8099FFF0; // type:func -func_80883254 = 0x809A0100; // type:func -func_80883328 = 0x809A01D8; // type:func -func_808834D8 = 0x809A0388; // type:func -BgHakaZou_DoNothing = 0x809A0418; // type:func -BgHakaZou_Update = 0x809A0428; // type:func -BgHakaZou_Draw = 0x809A046C; // type:func -BgSpot17Funen_Init = 0x809A0650; // type:func -BgSpot17Funen_Destroy = 0x809A0678; // type:func -BgSpot17Funen_Update = 0x809A0688; // type:func -func_808B746C = 0x809A06AC; // type:func -func_808B7478 = 0x809A06BC; // type:func -EnSyatekiItm_Init = 0x809A08A0; // type:func -EnSyatekiItm_Destroy = 0x809A0A04; // type:func -EnSyatekiItm_Idle = 0x809A0A14; // type:func -EnSyatekiItm_StartRound = 0x809A0B24; // type:func -EnSyatekiItm_SpawnTargets = 0x809A0CA0; // type:func -EnSyatekiItm_CheckTargets = 0x809A1120; // type:func -EnSyatekiItm_CleanupGame = 0x809A11C4; // type:func -EnSyatekiItm_EndGame = 0x809A124C; // type:func -EnSyatekiItm_Update = 0x809A1298; // type:func -EnSyatekiMan_Init = 0x809A1640; // type:func -EnSyatekiMan_Destroy = 0x809A16F4; // type:func -EnSyatekiMan_Start = 0x809A1704; // type:func -EnSyatekiMan_SetupIdle = 0x809A1798; // type:func -EnSyatekiMan_Idle = 0x809A17F0; // type:func -EnSyatekiMan_Talk = 0x809A184C; // type:func -EnSyatekiMan_StopTalk = 0x809A19F4; // type:func -EnSyatekiMan_StartGame = 0x809A1A9C; // type:func -EnSyatekiMan_WaitForGame = 0x809A1B5C; // type:func -EnSyatekiMan_EndGame = 0x809A1C78; // type:func -EnSyatekiMan_GivePrize = 0x809A1EC8; // type:func -EnSyatekiMan_FinishPrize = 0x809A1F38; // type:func -EnSyatekiMan_RestartGame = 0x809A1FFC; // type:func -EnSyatekiMan_BlinkWait = 0x809A2064; // type:func -EnSyatekiMan_Blink = 0x809A2098; // type:func -EnSyatekiMan_Update = 0x809A2138; // type:func -EnSyatekiMan_OverrideLimbDraw = 0x809A21D8; // type:func -EnSyatekiMan_Draw = 0x809A2268; // type:func -EnTana_Init = 0x809A2400; // type:func -EnTana_Destroy = 0x809A2450; // type:func -EnTana_Update = 0x809A2460; // type:func -EnTana_DrawWoodenShelves = 0x809A2470; // type:func -EnTana_DrawStoneShelves = 0x809A2508; // type:func -EnNb_GetPath = 0x809A26B0; // type:func -EnNb_GetType = 0x809A26C4; // type:func -EnNb_UpdatePath = 0x809A26D4; // type:func -EnNb_SetupCollider = 0x809A2800; // type:func -EnNb_UpdateCollider = 0x809A284C; // type:func -EnNb_Destroy = 0x809A2890; // type:func -func_80AB0FBC = 0x809A28BC; // type:func -func_80AB1040 = 0x809A2944; // type:func -func_80AB10C4 = 0x809A29CC; // type:func -EnNb_UpdateEyes = 0x809A2A70; // type:func -func_80AB1284 = 0x809A2AF8; // type:func -EnNb_UpdateSkelAnime = 0x809A2B40; // type:func -EnNb_GetCue = 0x809A2B64; // type:func -EnNb_SetStartPosRotFromCue1 = 0x809A2B8C; // type:func -func_80AB1390 = 0x809A2C0C; // type:func -func_80AB13D8 = 0x809A2C58; // type:func -EnNb_SetStartPosRotFromCue2 = 0x809A2CA4; // type:func -EnNb_SetCurrentAnim = 0x809A2D24; // type:func -EnNb_SetChamberAnim = 0x809A2DB4; // type:func -EnNb_SpawnBlueWarp = 0x809A2DFC; // type:func -EnNb_GiveMedallion = 0x809A2E58; // type:func -EnNb_ComeUpImpl = 0x809A2ED4; // type:func -EnNb_SetupChamberCsImpl = 0x809A2EF4; // type:func -EnNb_SetupChamberWarpImpl = 0x809A2F90; // type:func -EnNb_SetupDefaultChamberIdle = 0x809A2FE0; // type:func -EnNb_SetupArmRaise = 0x809A300C; // type:func -EnNb_SetupRaisedArmTransition = 0x809A30A0; // type:func -EnNb_SetupMedallion = 0x809A310C; // type:func -EnNb_SetupChamberCs = 0x809A3158; // type:func -EnNb_SetupChamberWarp = 0x809A3178; // type:func -EnNb_ComeUp = 0x809A3198; // type:func -func_80AB193C = 0x809A31D4; // type:func -EnNb_RaiseArm = 0x809A321C; // type:func -func_80AB19BC = 0x809A3260; // type:func -func_80AB19FC = 0x809A32A8; // type:func -EnNb_SetupLightArrowOrSealingCs = 0x809A32DC; // type:func -EnNb_PlaySealingSfx = 0x809A3320; // type:func -EnNb_InitializeDemo6K = 0x809A3340; // type:func -EnNb_SetupHide = 0x809A33C0; // type:func -EnNb_CheckToFade = 0x809A3414; // type:func -EnNb_SetupLightOrb = 0x809A3568; // type:func -EnNb_Hide = 0x809A3604; // type:func -EnNb_Fade = 0x809A3624; // type:func -EnNb_CreateLightOrb = 0x809A366C; // type:func -EnNb_DrawTransparency = 0x809A36B4; // type:func -EnNb_InitKidnap = 0x809A37FC; // type:func -EnNb_PlayCrySFX = 0x809A3854; // type:func -EnNb_PlayAgonySFX = 0x809A388C; // type:func -EnNb_SetPosInPortal = 0x809A38C4; // type:func -EnNb_SetupCaptureCutsceneState = 0x809A39A8; // type:func -EnNb_SetRaisedArmCaptureAnim = 0x809A39DC; // type:func -EnNb_SetupLookAroundInKidnap = 0x809A3A3C; // type:func -EnNb_SetupKidnap = 0x809A3AB0; // type:func -EnNb_CheckKidnapCsMode = 0x809A3B28; // type:func -func_80AB23A8 = 0x809A3BF0; // type:func -EnNb_MovingInPortal = 0x809A3C28; // type:func -EnNb_SuckedInByPortal = 0x809A3C84; // type:func -EnNb_SetupConfrontation = 0x809A3CE0; // type:func -EnNb_PlayKnuckleDefeatSFX = 0x809A3D24; // type:func -EnNb_PlayKneelingOnGroundSFX = 0x809A3D68; // type:func -EnNb_PlayLookRightSFX = 0x809A3DCC; // type:func -EnNb_PlayLookLeftSFX = 0x809A3E18; // type:func -EnNb_InitDemo6KInConfrontation = 0x809A3E70; // type:func -func_80AB2688 = 0x809A3EE8; // type:func -func_80AB26C8 = 0x809A3F28; // type:func -func_80AB26DC = 0x809A3F40; // type:func -EnNb_SetupKneel = 0x809A3FD8; // type:func -EnNb_CheckIfKneeling = 0x809A4054; // type:func -EnNb_SetupLookRight = 0x809A40C0; // type:func -EnNb_CheckIfLookingRight = 0x809A4140; // type:func -EnNb_SetupLookLeft = 0x809A41AC; // type:func -EnNb_CheckIfLookLeft = 0x809A422C; // type:func -EnNb_SetupDemo6KInConfrontation = 0x809A428C; // type:func -EnNb_SetupRun = 0x809A42CC; // type:func -EnNb_SetupConfrontationDestroy = 0x809A434C; // type:func -EnNb_CheckConfrontationCsMode = 0x809A4364; // type:func -EnNb_CheckConfrontationCsModeWrapper = 0x809A444C; // type:func -func_80AB2C18 = 0x809A446C; // type:func -EnNb_Kneel = 0x809A44B8; // type:func -EnNb_LookRight = 0x809A4528; // type:func -EnNb_LookLeft = 0x809A4598; // type:func -EnNb_Run = 0x809A4600; // type:func -EnNb_ConfrontationDestroy = 0x809A4688; // type:func -func_80AB2E70 = 0x809A46DC; // type:func -func_80AB2FC0 = 0x809A47F8; // type:func -func_80AB2FE4 = 0x809A4820; // type:func -EnNb_SetupCreditsSpawn = 0x809A495C; // type:func -EnNb_SetAlphaInCredits = 0x809A49A4; // type:func -EnNb_SetupCreditsFadeIn = 0x809A4A30; // type:func -EnNb_SetupCreditsSit = 0x809A4A68; // type:func -EnNb_SetupCreditsHeadTurn = 0x809A4AB4; // type:func -EnNb_CheckIfLookingUp = 0x809A4AF4; // type:func -EnNb_CheckCreditsCsModeImpl = 0x809A4B28; // type:func -EnNb_CheckCreditsCsMode = 0x809A4BB4; // type:func -EnNb_CreditsFade = 0x809A4BD4; // type:func -func_80AB3428 = 0x809A4C20; // type:func -EnNb_LookUp = 0x809A4C68; // type:func -EnNb_CrawlspaceSpawnCheck = 0x809A4CAC; // type:func -func_80AB359C = 0x809A4DA8; // type:func -EnNb_SetNoticeSFX = 0x809A4E6C; // type:func -EnNb_GetNoticedStatus = 0x809A4E94; // type:func -func_80AB36DC = 0x809A4EEC; // type:func -EnNb_CheckNoticed = 0x809A4F9C; // type:func -EnNb_SetupIdleCrawlspace = 0x809A4FF4; // type:func -func_80AB3838 = 0x809A504C; // type:func -EnNb_SetupPathMovement = 0x809A50C8; // type:func -EnNb_SetTextIdAsChild = 0x809A5130; // type:func -func_80AB3A7C = 0x809A529C; // type:func -func_80AB3B04 = 0x809A5328; // type:func -func_80AB3B7C = 0x809A53B0; // type:func -EnNb_WaitForNotice = 0x809A53FC; // type:func -EnNb_StandUpAfterNotice = 0x809A5458; // type:func -EnNb_BlockCrawlspace = 0x809A54B8; // type:func -EnNb_InitCrawlspaceDialogue = 0x809A5520; // type:func -EnNb_FollowPath = 0x809A5588; // type:func -func_80AB3DB0 = 0x809A5608; // type:func -func_80AB3E10 = 0x809A5670; // type:func -EnNb_Update = 0x809A56D8; // type:func -EnNb_Init = 0x809A5720; // type:func -EnNb_OverrideLimbDraw = 0x809A583C; // type:func -EnNb_PostLimbDraw = 0x809A58CC; // type:func -EnNb_DrawNothing = 0x809A5958; // type:func -EnNb_DrawDefault = 0x809A5968; // type:func -EnNb_Draw = 0x809A5AAC; // type:func -BossMo_InitRand = 0x809A6C80; // type:func -BossMo_RandZeroOne = 0x809A6CA0; // type:func -BossMo_NearLand = 0x809A6DC8; // type:func -BossMo_SpawnRipple = 0x809A6EC0; // type:func -BossMo_SpawnDroplet = 0x809A6FE0; // type:func -BossMo_SpawnStillDroplet = 0x809A70BC; // type:func -BossMo_SpawnBubble = 0x809A7180; // type:func -BossMo_Init = 0x809A7234; // type:func -BossMo_Destroy = 0x809A761C; // type:func -BossMo_SetupTentacle = 0x809A766C; // type:func -BossMo_Tentacle = 0x809A76C0; // type:func -BossMo_TentCollisionCheck = 0x809AA480; // type:func -BossMo_IntroCs = 0x809AA72C; // type:func -BossMo_DeathCs = 0x809AB844; // type:func -BossMo_CoreCollisionCheck = 0x809AC400; // type:func -BossMo_Core = 0x809AC808; // type:func -BossMo_UpdateCore = 0x809ADE6C; // type:func -BossMo_UpdateTent = 0x809AE09C; // type:func -BossMo_UpdateTentColliders = 0x809AE8D4; // type:func -BossMo_DrawTentacle = 0x809AE980; // type:func -BossMo_DrawWater = 0x809AF0B0; // type:func -BossMo_DrawCore = 0x809AF2C0; // type:func -BossMo_DrawTent = 0x809AFB48; // type:func -BossMo_UpdateEffects = 0x809AFD7C; // type:func -BossMo_DrawEffects = 0x809B048C; // type:func -BossMo_SfxTest = 0x809B0BB8; // type:func -EnSb_Init = 0x809B7260; // type:func -EnSb_Destroy = 0x809B7348; // type:func -EnSb_SpawnBubbles = 0x809B7388; // type:func -EnSb_SetupWaitClosed = 0x809B7438; // type:func -EnSb_SetupOpen = 0x809B74B0; // type:func -EnSb_SetupWaitOpen = 0x809B752C; // type:func -EnSb_SetupLunge = 0x809B75A0; // type:func -EnSb_SetupBounce = 0x809B7648; // type:func -EnSb_SetupCooldown = 0x809B76C0; // type:func -EnSb_WaitClosed = 0x809B77C4; // type:func -EnSb_Open = 0x809B7844; // type:func -EnSb_WaitOpen = 0x809B790C; // type:func -EnSb_TurnAround = 0x809B79C0; // type:func -EnSb_Lunge = 0x809B7AAC; // type:func -EnSb_Bounce = 0x809B7B54; // type:func -EnSb_Cooldown = 0x809B7C88; // type:func -EnSb_IsVulnerable = 0x809B7CF0; // type:func -EnSb_UpdateDamage = 0x809B7E38; // type:func -EnSb_Update = 0x809B8114; // type:func -EnSb_PostLimbDraw = 0x809B8294; // type:func -EnSb_Draw = 0x809B82E4; // type:func -EnBigokuta_Init = 0x809B86A0; // type:func -EnBigokuta_Destroy = 0x809B880C; // type:func -func_809BCE3C = 0x809B8880; // type:func -func_809BCEBC = 0x809B88FC; // type:func -func_809BCF68 = 0x809B89AC; // type:func -func_809BD1C8 = 0x809B8C14; // type:func -func_809BD2E4 = 0x809B8D30; // type:func -func_809BD318 = 0x809B8D64; // type:func -func_809BD370 = 0x809B8DBC; // type:func -func_809BD3AC = 0x809B8DF8; // type:func -func_809BD3E0 = 0x809B8E30; // type:func -func_809BD3F8 = 0x809B8E4C; // type:func -func_809BD47C = 0x809B8ED0; // type:func -func_809BD4A4 = 0x809B8EFC; // type:func -func_809BD524 = 0x809B8F7C; // type:func -func_809BD5E0 = 0x809B9038; // type:func -func_809BD658 = 0x809B90B0; // type:func -func_809BD6B8 = 0x809B9110; // type:func -func_809BD768 = 0x809B91C0; // type:func -func_809BD7F0 = 0x809B9248; // type:func -func_809BD84C = 0x809B92A8; // type:func -func_809BD8DC = 0x809B9338; // type:func -func_809BDAE8 = 0x809B9544; // type:func -func_809BDB90 = 0x809B95EC; // type:func -func_809BDC08 = 0x809B9664; // type:func -func_809BDF34 = 0x809B9994; // type:func -func_809BDFC8 = 0x809B9A28; // type:func -func_809BE058 = 0x809B9AB8; // type:func -func_809BE180 = 0x809B9BE0; // type:func -func_809BE26C = 0x809B9CCC; // type:func -func_809BE3E4 = 0x809B9E44; // type:func -func_809BE4A4 = 0x809B9F04; // type:func -func_809BE518 = 0x809B9F78; // type:func -func_809BE568 = 0x809B9FC8; // type:func -func_809BE798 = 0x809BA1F8; // type:func -EnBigokuta_UpdateDamage = 0x809BA33C; // type:func -EnBigokuta_Update = 0x809BA42C; // type:func -EnBigokuta_OverrideLimbDraw = 0x809BA624; // type:func -EnBigokuta_Draw = 0x809BAA9C; // type:func -EnKarebaba_Init = 0x809BB1A0; // type:func -EnKarebaba_Destroy = 0x809BB2D4; // type:func -EnKarebaba_ResetCollider = 0x809BB314; // type:func -EnKarebaba_SetupGrow = 0x809BB350; // type:func -EnKarebaba_SetupIdle = 0x809BB3A0; // type:func -EnKarebaba_SetupAwaken = 0x809BB3F4; // type:func -EnKarebaba_SetupUpright = 0x809BB470; // type:func -EnKarebaba_SetupSpin = 0x809BB510; // type:func -EnKarebaba_SetupDying = 0x809BB52C; // type:func -EnKarebaba_SetupDeadItemDrop = 0x809BB5A0; // type:func -EnKarebaba_SetupRetract = 0x809BB640; // type:func -EnKarebaba_SetupDead = 0x809BB6C0; // type:func -EnKarebaba_SetupRegrow = 0x809BB74C; // type:func -EnKarebaba_Grow = 0x809BB7A0; // type:func -EnKarebaba_Idle = 0x809BB838; // type:func -EnKarebaba_Awaken = 0x809BB898; // type:func -EnKarebaba_Upright = 0x809BB96C; // type:func -EnKarebaba_Spin = 0x809BBA60; // type:func -EnKarebaba_Dying = 0x809BBBF4; // type:func -EnKarebaba_DeadItemDrop = 0x809BBEAC; // type:func -EnKarebaba_Retract = 0x809BBF14; // type:func -EnKarebaba_Dead = 0x809BBFE8; // type:func -EnKarebaba_Regrow = 0x809BC040; // type:func -EnKarebaba_Update = 0x809BC10C; // type:func -EnKarebaba_DrawBaseShadow = 0x809BC2C0; // type:func -EnKarebaba_Draw = 0x809BC3AC; // type:func -BgBdanObjects_GetProperty = 0x809BCA90; // type:func -BgBdanObjects_SetProperty = 0x809BCAE4; // type:func -BgBdanObjects_Init = 0x809BCB38; // type:func -BgBdanObjects_Destroy = 0x809BCDBC; // type:func -BgBdanObjects_OctoPlatform_WaitForRutoToStartCutscene = 0x809BCE0C; // type:func -BgBdanObjects_OctoPlatform_RaiseToUpperPosition = 0x809BCF60; // type:func -BgBdanObjects_OctoPlatform_WaitForRutoToAdvanceCutscene = 0x809BD05C; // type:func -BgBdanObjects_OctoPlatform_DescendWithBigOcto = 0x809BD198; // type:func -BgBdanObjects_OctoPlatform_PauseBeforeDescending = 0x809BD31C; // type:func -BgBdanObjects_OctoPlatform_WaitForBigOctoToStartBattle = 0x809BD380; // type:func -BgBdanObjects_OctoPlatform_BattleInProgress = 0x809BD3DC; // type:func -BgBdanObjects_SinkToFloorHeight = 0x809BD4B4; // type:func -BgBdanObjects_WaitForPlayerInRange = 0x809BD534; // type:func -BgBdanObjects_RaiseToUpperPosition = 0x809BD5A0; // type:func -BgBdanObjects_DoNothing = 0x809BD638; // type:func -BgBdanObjects_ElevatorOscillate = 0x809BD648; // type:func -BgBdanObjects_WaitForSwitch = 0x809BD77C; // type:func -BgBdanObjects_ChangeWaterBoxLevel = 0x809BD7C8; // type:func -BgBdanObjects_WaitForTimerExpired = 0x809BD890; // type:func -BgBdanObjects_WaitForPlayerOnTop = 0x809BD8E4; // type:func -BgBdanObjects_FallToLowerPos = 0x809BD968; // type:func -BgBdanObjects_Update = 0x809BDA24; // type:func -BgBdanObjects_Draw = 0x809BDA60; // type:func -DemoSa_Destroy = 0x809BDD60; // type:func -func_8098E480 = 0x809BDD84; // type:func -DemoSa_SetEyeIndex = 0x809BDE0C; // type:func -DemoSa_SetMouthIndex = 0x809BDE24; // type:func -func_8098E5C8 = 0x809BDE3C; // type:func -DemoSa_UpdateSkelAnime = 0x809BDE84; // type:func -DemoSa_GetCue = 0x809BDEA8; // type:func -func_8098E654 = 0x809BDED0; // type:func -func_8098E6A0 = 0x809BDF1C; // type:func -func_8098E6EC = 0x809BDF68; // type:func -func_8098E76C = 0x809BDFE8; // type:func -func_8098E7FC = 0x809BE078; // type:func -func_8098E86C = 0x809BE0E8; // type:func -func_8098E8C8 = 0x809BE144; // type:func -func_8098E944 = 0x809BE1C0; // type:func -func_8098E960 = 0x809BE1E0; // type:func -func_8098E9EC = 0x809BE278; // type:func -func_8098EA3C = 0x809BE2C8; // type:func -func_8098EA68 = 0x809BE2F4; // type:func -func_8098EB00 = 0x809BE38C; // type:func -func_8098EB6C = 0x809BE3F8; // type:func -func_8098EBB8 = 0x809BE444; // type:func -func_8098EBD8 = 0x809BE464; // type:func -func_8098EBF8 = 0x809BE484; // type:func -func_8098EC28 = 0x809BE4B8; // type:func -func_8098EC60 = 0x809BE4F8; // type:func -func_8098EC94 = 0x809BE530; // type:func -func_8098ECCC = 0x809BE570; // type:func -func_8098ECF4 = 0x809BE59C; // type:func -func_8098EDB0 = 0x809BE658; // type:func -func_8098EE08 = 0x809BE6B0; // type:func -func_8098EE28 = 0x809BE6D0; // type:func -func_8098EEA8 = 0x809BE750; // type:func -func_8098EEFC = 0x809BE7A4; // type:func -func_8098F050 = 0x809BE8F8; // type:func -func_8098F0E8 = 0x809BE994; // type:func -func_8098F118 = 0x809BE9B4; // type:func -func_8098F16C = 0x809BE9FC; // type:func -DemoSa_DrawXlu = 0x809BEA44; // type:func -func_8098F390 = 0x809BEBE4; // type:func -func_8098F3F0 = 0x809BEC44; // type:func -func_8098F420 = 0x809BEC78; // type:func -func_8098F480 = 0x809BECD4; // type:func -func_8098F50C = 0x809BED60; // type:func -func_8098F544 = 0x809BED98; // type:func -func_8098F590 = 0x809BEDE4; // type:func -func_8098F5D0 = 0x809BEE24; // type:func -func_8098F610 = 0x809BEE64; // type:func -func_8098F654 = 0x809BEEAC; // type:func -func_8098F714 = 0x809BEF58; // type:func -func_8098F734 = 0x809BEF78; // type:func -func_8098F77C = 0x809BEFC4; // type:func -func_8098F7BC = 0x809BF00C; // type:func -func_8098F7FC = 0x809BF054; // type:func -func_8098F83C = 0x809BF098; // type:func -func_8098F8F8 = 0x809BF154; // type:func -func_8098F984 = 0x809BF1E0; // type:func -func_8098F998 = 0x809BF1F8; // type:func -func_8098FA2C = 0x809BF28C; // type:func -func_8098FA84 = 0x809BF2E4; // type:func -func_8098FAE0 = 0x809BF340; // type:func -func_8098FB34 = 0x809BF394; // type:func -func_8098FB68 = 0x809BF3C8; // type:func -func_8098FC44 = 0x809BF490; // type:func -func_8098FC64 = 0x809BF4B0; // type:func -func_8098FC9C = 0x809BF4EC; // type:func -func_8098FCD4 = 0x809BF52C; // type:func -func_8098FD0C = 0x809BF56C; // type:func -DemoSa_Update = 0x809BF5B8; // type:func -DemoSa_Init = 0x809BF600; // type:func -DemoSa_OverrideLimbDraw = 0x809BF6C8; // type:func -DemoSa_DrawNothing = 0x809BF700; // type:func -DemoSa_DrawOpa = 0x809BF710; // type:func -DemoSa_Draw = 0x809BF8A4; // type:func -DemoGo_GetCueChannel = 0x809C0880; // type:func -func_8097C8A8 = 0x809C08BC; // type:func -DemoGo_Destroy = 0x809C0928; // type:func -func_8097C930 = 0x809C094C; // type:func -func_8097C9B8 = 0x809C09D4; // type:func -func_8097C9DC = 0x809C09FC; // type:func -func_8097CA30 = 0x809C0A54; // type:func -func_8097CA78 = 0x809C0A9C; // type:func -func_8097CB0C = 0x809C0B34; // type:func -func_8097CC08 = 0x809C0C34; // type:func -func_8097CCC0 = 0x809C0CEC; // type:func -func_8097CCE0 = 0x809C0D0C; // type:func -DemoGo_UpdateSkelAnime = 0x809C0DC4; // type:func -func_8097CDB0 = 0x809C0DE8; // type:func -func_8097CE10 = 0x809C0E54; // type:func -func_8097CE20 = 0x809C0E68; // type:func -func_8097CE78 = 0x809C0EC4; // type:func -func_8097CEEC = 0x809C0F3C; // type:func -func_8097CF20 = 0x809C0F74; // type:func -func_8097CF9C = 0x809C0FF0; // type:func -func_8097CFDC = 0x809C1030; // type:func -func_8097CFFC = 0x809C1050; // type:func -func_8097D01C = 0x809C1070; // type:func -func_8097D058 = 0x809C10B4; // type:func -func_8097D088 = 0x809C10EC; // type:func -func_8097D0D0 = 0x809C113C; // type:func -func_8097D130 = 0x809C11A4; // type:func -DemoGo_Update = 0x809C1204; // type:func -DemoGo_Init = 0x809C124C; // type:func -func_8097D290 = 0x809C12F8; // type:func -func_8097D29C = 0x809C1308; // type:func -DemoGo_Draw = 0x809C1418; // type:func -EnIn_GetTextIdChild = 0x809C15D0; // type:func -EnIn_GetTextIdAdult = 0x809C1630; // type:func -EnIn_GetTextId = 0x809C1788; // type:func -EnIn_UpdateTalkStateOnClosing = 0x809C17EC; // type:func -EnIn_UpdateTalkStateOnChoice = 0x809C1860; // type:func -EnIn_UpdateTalkStateOnEvent = 0x809C1AB0; // type:func -EnIn_UpdateTalkState = 0x809C1B1C; // type:func -func_80A795C8 = 0x809C1BE4; // type:func -func_80A79690 = 0x809C1CAC; // type:func -EnIn_ChangeAnim = 0x809C1D08; // type:func -func_80A7975C = 0x809C1D78; // type:func -EnIn_GetStartMode = 0x809C1E4C; // type:func -EnIn_UpdateEyes = 0x809C2048; // type:func -func_80A79AB4 = 0x809C20D0; // type:func -func_80A79BAC = 0x809C21C8; // type:func -func_80A79C78 = 0x809C2294; // type:func -EnIn_Init = 0x809C2488; // type:func -EnIn_Destroy = 0x809C2594; // type:func -EnIn_WaitForObject = 0x809C25D8; // type:func -func_80A7A304 = 0x809C2930; // type:func -func_80A7A4BC = 0x809C2AE8; // type:func -func_80A7A4C8 = 0x809C2AF8; // type:func -func_80A7A568 = 0x809C2B9C; // type:func -func_80A7A770 = 0x809C2DA4; // type:func -func_80A7A848 = 0x809C2E7C; // type:func -func_80A7A940 = 0x809C2F74; // type:func -func_80A7AA40 = 0x809C3074; // type:func -func_80A7ABD4 = 0x809C3208; // type:func -func_80A7AE84 = 0x809C34BC; // type:func -func_80A7AEF0 = 0x809C3528; // type:func -func_80A7B018 = 0x809C3654; // type:func -func_80A7B024 = 0x809C3664; // type:func -EnIn_Update = 0x809C3750; // type:func -EnIn_OverrideLimbDraw = 0x809C3964; // type:func -EnIn_PostLimbDraw = 0x809C3BB8; // type:func -EnIn_Draw = 0x809C3CC8; // type:func -EnTr_SetupAction = 0x809C4370; // type:func -EnTr_Init = 0x809C437C; // type:func -EnTr_Destroy = 0x809C44CC; // type:func -EnTr_CrySpellcast = 0x809C44DC; // type:func -EnTr_DoNothing = 0x809C458C; // type:func -EnTr_ChooseAction2 = 0x809C459C; // type:func -EnTr_FlyKidnapCutscene = 0x809C474C; // type:func -func_80B23254 = 0x809C48C8; // type:func -EnTr_ShrinkVanish = 0x809C4B48; // type:func -EnTr_Reappear = 0x809C4D04; // type:func -EnTr_WaitToReappear = 0x809C4E9C; // type:func -EnTr_TakeOff = 0x809C4F5C; // type:func -EnTr_TurnLookOverShoulder = 0x809C5024; // type:func -EnTr_ChooseAction1 = 0x809C5104; // type:func -EnTr_Update = 0x809C5238; // type:func -EnTr_OverrideLimbDraw = 0x809C53F0; // type:func -EnTr_Draw = 0x809C5520; // type:func -func_80B23FDC = 0x809C562C; // type:func -func_80B24038 = 0x809C568C; // type:func -EnTr_SetRotFromCue = 0x809C5888; // type:func -EnTr_SetStartPosRotFromCue = 0x809C5910; // type:func -func_808B4C30 = 0x809C5C70; // type:func -func_808B4C4C = 0x809C5C90; // type:func -func_808B4D04 = 0x809C5D44; // type:func -func_808B4D9C = 0x809C5DD8; // type:func -func_808B4E58 = 0x809C5E88; // type:func -BgSpot16Bombstone_Init = 0x809C6084; // type:func -BgSpot16Bombstone_Destroy = 0x809C6138; // type:func -BgSpot16Bombstone_SpawnDust = 0x809C6184; // type:func -func_808B5240 = 0x809C6220; // type:func -BgSpot16Bombstone_SpawnFragments = 0x809C6388; // type:func -func_808B561C = 0x809C6600; // type:func -func_808B56BC = 0x809C66A0; // type:func -func_808B57E0 = 0x809C679C; // type:func -func_808B5934 = 0x809C68F4; // type:func -func_808B5950 = 0x809C6914; // type:func -func_808B5A78 = 0x809C6A00; // type:func -func_808B5A94 = 0x809C6A20; // type:func -func_808B5AF0 = 0x809C6A84; // type:func -func_808B5B04 = 0x809C6A9C; // type:func -func_808B5B58 = 0x809C6AF4; // type:func -func_808B5B6C = 0x809C6B0C; // type:func -BgSpot16Bombstone_Update = 0x809C6C08; // type:func -BgSpot16Bombstone_Draw = 0x809C6C3C; // type:func -BgHidanKowarerukabe_InitDynaPoly = 0x809C71C0; // type:func -BgHidanKowarerukabe_InitColliderSphere = 0x809C725C; // type:func -BgHidanKowarerukabe_OffsetActorYPos = 0x809C72F0; // type:func -BgHidanKowarerukabe_Init = 0x809C731C; // type:func -BgHidanKowarerukabe_Destroy = 0x809C73CC; // type:func -BgHidanKowarerukabe_SpawnDust = 0x809C7414; // type:func -BgHidanKowarerukabe_FloorBreak = 0x809C7538; // type:func -func_8088A67C = 0x809C7804; // type:func -BgHidanKowarerukabe_LargeWallBreak = 0x809C7A9C; // type:func -BgHidanKowarerukabe_Break = 0x809C7D28; // type:func -BgHidanKowarerukabe_Update = 0x809C7DB8; // type:func -BgHidanKowarerukabe_Draw = 0x809C7E88; // type:func -BgBombwall_InitDynapoly = 0x809C80A0; // type:func -BgBombwall_RotateVec = 0x809C80F8; // type:func -BgBombwall_Init = 0x809C814C; // type:func -BgBombwall_DestroyCollision = 0x809C835C; // type:func -BgBombwall_Destroy = 0x809C83D8; // type:func -func_8086EB5C = 0x809C83F8; // type:func -func_8086ED50 = 0x809C85EC; // type:func -func_8086ED70 = 0x809C8610; // type:func -func_8086EDFC = 0x809C86A0; // type:func -func_8086EE40 = 0x809C86E4; // type:func -func_8086EE94 = 0x809C8738; // type:func -BgBombwall_Update = 0x809C8768; // type:func -BgBombwall_Draw = 0x809C8794; // type:func -EnRu2_InitCollider = 0x809C8960; // type:func -EnRu2_UpdateCollider = 0x809C89AC; // type:func -EnRu2_Destroy = 0x809C89F0; // type:func -EnRu2_UpdateEyes = 0x809C8A1C; // type:func -EnRu2_GetSwitchFlag = 0x809C8AA4; // type:func -EnRu2_GetType = 0x809C8AB8; // type:func -EnRu2_UpdateBgCheckInfo = 0x809C8AC8; // type:func -EnRu2_UpdateSkelAnime = 0x809C8B10; // type:func -EnRu2_GetCue = 0x809C8B34; // type:func -EnRu2_CheckCueMatchingId = 0x809C8B5C; // type:func -EnRu2_CheckCueNotMatchingId = 0x809C8BA8; // type:func -EnRu2_InitPositionFromCue = 0x809C8BF4; // type:func -EnRu2_AnimationChange = 0x809C8C74; // type:func -EnRu2_Rise = 0x809C8D04; // type:func -EnRu2_InitChamberOfSages = 0x809C8D24; // type:func -EnRu2_SpawnBlueWarp = 0x809C8D6C; // type:func -EnRu2_SpawnWaterMedallion = 0x809C8DC8; // type:func -EnRu2_CheckWaterMedallionCutscene = 0x809C8E44; // type:func -EnRu2_CheckIfBlueWarpShouldSpawn = 0x809C8EE0; // type:func -EnRu2_EndRise = 0x809C8F30; // type:func -EnRu2_CheckStartRaisingArms = 0x809C8F5C; // type:func -EnRu2_HoldArmsUp = 0x809C8FF0; // type:func -EnRu2_CheckIfWaterMedallionShouldSpawn = 0x809C9004; // type:func -EnRu2_SetupWaterMedallionCutscene = 0x809C9050; // type:func -EnRu2_AwaitBlueWarp = 0x809C9070; // type:func -EnRu2_RiseThroughBlueWarp = 0x809C9090; // type:func -EnRu2_SageOfWaterDialog = 0x809C90CC; // type:func -EnRu2_RaiseArms = 0x809C9114; // type:func -EnRu2_AwaitWaterMedallion = 0x809C9158; // type:func -EnRu2_FinishWaterMedallionCutscene = 0x809C91A0; // type:func -EnRu2_InitWaterTrial = 0x809C91D4; // type:func -EnRu2_PlayWhiteOutSound = 0x809C9218; // type:func -EnRu2_SpawnLightBall = 0x809C9238; // type:func -EnRu2_CheckFadeIn = 0x809C92B8; // type:func -EnRu2_Fade = 0x809C930C; // type:func -EnRu2_CheckFadeOut = 0x809C9460; // type:func -EnRu2_WaterTrialInvisible = 0x809C94FC; // type:func -EnRu2_WaterTrialFade = 0x809C951C; // type:func -EnRu2_AwaitSpawnLightBall = 0x809C9564; // type:func -EnRu2_DrawXlu = 0x809C95AC; // type:func -EnRu2_InitCredits = 0x809C96F4; // type:func -EnRu2_FadeInCredits = 0x809C973C; // type:func -EnRu2_InitCreditsPosition = 0x809C97C8; // type:func -EnRu2_CheckVisibleInCredits = 0x809C9800; // type:func -EnRu2_SetupTurnHeadDownLeftAnimation = 0x809C984C; // type:func -EnRu2_HoldLookingDownLeftPose = 0x809C988C; // type:func -EnRu2_NextCreditsAction = 0x809C98C0; // type:func -EnRu2_CreditsInvisible = 0x809C994C; // type:func -EnRu2_CreditsFadeIn = 0x809C996C; // type:func -EnRu2_CreditsVisible = 0x809C99B8; // type:func -EnRu2_CreditsTurnHeadDownLeft = 0x809C9A00; // type:func -EnRu2_SetEncounterSwitchFlag = 0x809C9A44; // type:func -EnRu2_GetEncounterSwitchFlag = 0x809C9A74; // type:func -EnRu2_InitWaterTempleEncounter = 0x809C9AA4; // type:func -EnRu2_PlayFanfare = 0x809C9B0C; // type:func -EnRu2_SwimUpProgress = 0x809C9B2C; // type:func -EnRu2_IsPlayerInRangeForEncounter = 0x809C9B98; // type:func -EnRu2_CheckRangeToStartEncounter = 0x809C9BD4; // type:func -EnRu2_StartEncounter = 0x809C9C34; // type:func -EnRu2_EncounterBeginningHandler = 0x809C9C70; // type:func -EnRu2_DialogCameraHandler = 0x809C9D40; // type:func -EnRu2_StartSwimmingUp = 0x809C9E2C; // type:func -EnRu2_EndSwimmingUp = 0x809C9EC4; // type:func -EnRu2_WaterTempleEncounterRangeCheck = 0x809C9F18; // type:func -EnRu2_WaterTempleEncounterUnconditional = 0x809C9F5C; // type:func -EnRu2_WaterTempleEncounterBegin = 0x809C9FC4; // type:func -EnRu2_WaterTempleEncounterDialog = 0x809CA020; // type:func -EnRu2_WaterTempleEncounterEnd = 0x809CA07C; // type:func -EnRu2_WaterTempleSwimmingUp = 0x809CA0D8; // type:func -EnRu2_Update = 0x809CA13C; // type:func -EnRu2_Init = 0x809CA184; // type:func -EnRu2_DrawNothing = 0x809CA27C; // type:func -EnRu2_DrawOpa = 0x809CA28C; // type:func -EnRu2_Draw = 0x809CA3C0; // type:func -ObjDekujr_Init = 0x809CB6E0; // type:func -ObjDekujr_Destroy = 0x809CB7EC; // type:func -ObjDekujr_GetCueStartPos = 0x809CB7FC; // type:func -ObjDekujr_GetCueEndPos = 0x809CB840; // type:func -ObjDekujr_ComeUp = 0x809CB884; // type:func -ObjDekujr_Update = 0x809CBA34; // type:func -ObjDekujr_Draw = 0x809CBB24; // type:func -BgMizuUzu_Init = 0x809CBD20; // type:func -BgMizuUzu_Destroy = 0x809CBD9C; // type:func -func_8089F788 = 0x809CBDD0; // type:func -BgMizuUzu_Update = 0x809CBE48; // type:func -BgMizuUzu_Draw = 0x809CBE6C; // type:func -BgSpot06Objects_Init = 0x809CBEF0; // type:func -BgSpot06Objects_Destroy = 0x809CC2BC; // type:func -BgSpot06Objects_GateSpawnBubbles = 0x809CC324; // type:func -BgSpot06Objects_GateWaitForSwitch = 0x809CC41C; // type:func -BgSpot06Objects_GateWaitToOpen = 0x809CC4B0; // type:func -BgSpot06Objects_GateOpen = 0x809CC4E4; // type:func -BgSpot06Objects_DoNothing = 0x809CC570; // type:func -BgSpot06Objects_LockSpawnWaterRipples = 0x809CC580; // type:func -BgSpot06Objects_LockSpawnBubbles = 0x809CC5E4; // type:func -BgSpot06Objects_LockWait = 0x809CC678; // type:func -BgSpot06Objects_LockPullOutward = 0x809CC89C; // type:func -BgSpot06Objects_LockSwimToSurface = 0x809CC954; // type:func -BgSpot06Objects_LockFloat = 0x809CCBCC; // type:func -BgSpot06Objects_Update = 0x809CCC4C; // type:func -BgSpot06Objects_DrawLakeHyliaWater = 0x809CCCAC; // type:func -BgSpot06Objects_Draw = 0x809CCE94; // type:func -BgSpot06Objects_WaterPlaneCutsceneWait = 0x809CCF58; // type:func -BgSpot06Objects_WaterPlaneCutsceneRise = 0x809CCF84; // type:func -BgIceObjects_Init = 0x809CD2F0; // type:func -BgIceObjects_Destroy = 0x809CD37C; // type:func -BgIceObjects_SetNextTarget = 0x809CD3B0; // type:func -BgIceObjects_CheckPits = 0x809CD830; // type:func -BgIceObjects_Idle = 0x809CD9B8; // type:func -BgIceObjects_Slide = 0x809CDABC; // type:func -BgIceObjects_Reset = 0x809CDE4C; // type:func -BgIceObjects_Stuck = 0x809CDEE8; // type:func -BgIceObjects_Update = 0x809CDF24; // type:func -BgIceObjects_Draw = 0x809CDF48; // type:func -BgHakaWater_Init = 0x809CE230; // type:func -BgHakaWater_Destroy = 0x809CE2BC; // type:func -BgHakaWater_LowerWater = 0x809CE2CC; // type:func -BgHakaWater_Wait = 0x809CE414; // type:func -BgHakaWater_ChangeWaterLevel = 0x809CE4D0; // type:func -BgHakaWater_Update = 0x809CE5D8; // type:func -BgHakaWater_Draw = 0x809CE5FC; // type:func -EnMa2_GetTextId = 0x809CEA30; // type:func -EnMa2_UpdateTalkState = 0x809CEAC8; // type:func -func_80AA1AE4 = 0x809CEB78; // type:func -func_80AA1B58 = 0x809CEBEC; // type:func -func_80AA1C68 = 0x809CECFC; // type:func -EnMa2_UpdateEyes = 0x809CED54; // type:func -EnMa2_ChangeAnim = 0x809CEDE0; // type:func -func_80AA1DB4 = 0x809CEE50; // type:func -EnMa2_Init = 0x809CEEDC; // type:func -EnMa2_Destroy = 0x809CF080; // type:func -func_80AA2018 = 0x809CF0C0; // type:func -func_80AA204C = 0x809CF0F4; // type:func -func_80AA20E4 = 0x809CF190; // type:func -func_80AA21C8 = 0x809CF27C; // type:func -EnMa2_Update = 0x809CF31C; // type:func -EnMa2_OverrideLimbDraw = 0x809CF40C; // type:func -EnMa2_PostLimbDraw = 0x809CF64C; // type:func -EnMa2_Draw = 0x809CF700; // type:func -EnBomChu_Init = 0x809CFA90; // type:func -EnBomChu_Destroy = 0x809CFC30; // type:func -EnBomChu_Explode = 0x809CFC80; // type:func -EnBomChu_CrossProduct = 0x809CFDA0; // type:func -EnBomChu_UpdateFloorPoly = 0x809CFE14; // type:func -EnBomChu_WaitForRelease = 0x809D0048; // type:func -EnBomChu_Move = 0x809D01B8; // type:func -EnBomChu_WaitForKill = 0x809D06D0; // type:func -EnBomChu_ModelToWorld = 0x809D0710; // type:func -EnBomChu_SpawnRipples = 0x809D07C0; // type:func -EnBomChu_Update = 0x809D084C; // type:func -EnBomChu_Draw = 0x809D0C10; // type:func -EnHorseGameCheck_InitIngoRace = 0x809D1130; // type:func -EnHorseGameCheck_DestroyIngoRace = 0x809D11EC; // type:func -EnHorseGameCheck_FinishIngoRace = 0x809D1200; // type:func -EnHorseGameCheck_UpdateIngoRace = 0x809D134C; // type:func -EnHorseGameCheck_InitGerudoArchery = 0x809D17C4; // type:func -EnHorseGameCheck_DestroyGerudoArchery = 0x809D17E4; // type:func -EnHorseGameCheck_UpdateGerudoArchery = 0x809D17F8; // type:func -EnHorseGameCheck_InitType3 = 0x809D1840; // type:func -EnHorseGameCheck_DestroyType3 = 0x809D185C; // type:func -EnHorseGameCheck_UpdateType3 = 0x809D1870; // type:func -EnHorseGameCheck_InitMalonRace = 0x809D1884; // type:func -EnHorseGameCheck_DestroyMalonRace = 0x809D18D4; // type:func -EnHorseGameCheck_FinishMalonRace = 0x809D18E8; // type:func -EnHorseGameCheck_UpdateMalonRace = 0x809D19DC; // type:func -EnHorseGameCheck_Init = 0x809D1EF4; // type:func -EnHorseGameCheck_Destroy = 0x809D1F78; // type:func -EnHorseGameCheck_Update = 0x809D1FB4; // type:func -EnHorseGameCheck_Draw = 0x809D1FF0; // type:func -BossTw_AddDotEffect = 0x809D2200; // type:func -BossTw_AddDmgCloud = 0x809D22F4; // type:func -BossTw_AddRingEffect = 0x809D23F0; // type:func -BossTw_AddPlayerFreezeEffect = 0x809D24F4; // type:func -BossTw_AddFlameEffect = 0x809D25A0; // type:func -BossTw_AddMergeFlameEffect = 0x809D2678; // type:func -BossTw_AddShieldBlastEffect = 0x809D2780; // type:func -BossTw_AddShieldDeflectEffect = 0x809D2868; // type:func -BossTw_AddShieldHitEffect = 0x809D2A30; // type:func -BossTw_Init = 0x809D2BF8; // type:func -BossTw_Destroy = 0x809D3414; // type:func -BossTw_SetupTurnToPlayer = 0x809D347C; // type:func -BossTw_TurnToPlayer = 0x809D34CC; // type:func -BossTw_SetupFlyTo = 0x809D35EC; // type:func -BossTw_FlyTo = 0x809D37F0; // type:func -BossTw_SetupShootBeam = 0x809D3A24; // type:func -BossTw_SpawnGroundBlast = 0x809D3B0C; // type:func -BossTw_BeamHitPlayerCheck = 0x809D3E88; // type:func -BossTw_CheckBeamReflection = 0x809D4080; // type:func -BossTw_BeamReflHitCheck = 0x809D4308; // type:func -BossTw_GetFloorY = 0x809D4430; // type:func -BossTw_ShootBeam = 0x809D4704; // type:func -BossTw_SetupFinishBeamShoot = 0x809D56BC; // type:func -BossTw_FinishBeamShoot = 0x809D5718; // type:func -BossTw_SetupHitByBeam = 0x809D57B0; // type:func -BossTw_HitByBeam = 0x809D5818; // type:func -BossTw_SetupLaugh = 0x809D5AE0; // type:func -BossTw_Laugh = 0x809D5B44; // type:func -BossTw_SetupSpin = 0x809D5BD4; // type:func -BossTw_Spin = 0x809D5C50; // type:func -BossTw_SetupMergeCS = 0x809D5CF0; // type:func -BossTw_MergeCS = 0x809D5D3C; // type:func -BossTw_SetupWait = 0x809D5D80; // type:func -BossTw_Wait = 0x809D5DB8; // type:func -BossTw_TwinrovaSetupMergeCS = 0x809D5E5C; // type:func -BossTw_TwinrovaMergeCS = 0x809D5E7C; // type:func -BossTw_SetupDeathCS = 0x809D6948; // type:func -BossTw_DeathCS = 0x809D69B0; // type:func -BossTw_SetupCSWait = 0x809D6AB8; // type:func -BossTw_CSWait = 0x809D6AF0; // type:func -BossTw_TwinrovaSetupIntroCS = 0x809D6B00; // type:func -BossTw_TwinrovaIntroCS = 0x809D6B38; // type:func -BossTw_DeathBall = 0x809D838C; // type:func -BossTw_TwinrovaSetupDeathCS = 0x809D8688; // type:func -BossTw_DeathCSMsgSfx = 0x809D8744; // type:func -BossTw_TwinrovaDeathCS = 0x809D8F64; // type:func -BossTw_Update = 0x809D9C58; // type:func -BossTw_TwinrovaUpdate = 0x809DA2CC; // type:func -BossTw_OverrideLimbDraw = 0x809DAC48; // type:func -BossTw_PostLimbDraw = 0x809DACFC; // type:func -func_80941BC0 = 0x809DB114; // type:func -func_80942180 = 0x809DB68C; // type:func -func_809426F0 = 0x809DBBA8; // type:func -func_80942C70 = 0x809DC0F0; // type:func -func_80943028 = 0x809DC460; // type:func -BossTw_Draw = 0x809DC664; // type:func -BossTw_TwinrovaOverrideLimbDraw = 0x809DCD20; // type:func -BossTw_TwinrovaPostLimbDraw = 0x809DD14C; // type:func -BossTw_ShieldChargeDraw = 0x809DD288; // type:func -BossTw_SpawnPortalDraw = 0x809DDAF0; // type:func -func_80944C50 = 0x809DDF28; // type:func -BossTw_TwinrovaDraw = 0x809DE30C; // type:func -BossTw_BlastFire = 0x809DE644; // type:func -BossTw_BlastIce = 0x809DEF7C; // type:func -BossTw_BlastShieldCheck = 0x809DFAF0; // type:func -BossTw_BlastUpdate = 0x809DFD80; // type:func -BossTw_BlastDraw = 0x809DFEFC; // type:func -BossTw_DrawDeathBall = 0x809E0480; // type:func -BossTw_UpdateEffects = 0x809E09E0; // type:func -BossTw_InitRand = 0x809E1738; // type:func -BossTw_RandZeroOne = 0x809E1758; // type:func -BossTw_DrawEffects = 0x809E1880; // type:func -BossTw_TwinrovaSetupArriveAtTarget = 0x809E26B4; // type:func -BossTw_TwinrovaArriveAtTarget = 0x809E2728; // type:func -BossTw_TwinrovaSetupChargeBlast = 0x809E2854; // type:func -BossTw_TwinrovaChargeBlast = 0x809E28B4; // type:func -BossTw_TwinrovaSetupShootBlast = 0x809E2AA0; // type:func -BossTw_TwinrovaShootBlast = 0x809E2B28; // type:func -BossTw_TwinrovaSetupDoneBlastShoot = 0x809E2D78; // type:func -BossTw_TwinrovaDoneBlastShoot = 0x809E2DC4; // type:func -BossTw_TwinrovaDamage = 0x809E2E5C; // type:func -BossTw_TwinrovaStun = 0x809E2F88; // type:func -BossTw_TwinrovaSetupGetUp = 0x809E323C; // type:func -BossTw_TwinrovaGetUp = 0x809E32A0; // type:func -BossTw_TwinrovaSetupFly = 0x809E3334; // type:func -BossTw_TwinrovaFly = 0x809E350C; // type:func -BossTw_TwinrovaSetupSpin = 0x809E3780; // type:func -BossTw_TwinrovaSpin = 0x809E37D8; // type:func -BossTw_TwinrovaSetupLaugh = 0x809E3850; // type:func -BossTw_TwinrovaLaugh = 0x809E38B4; // type:func -EnRr_Init = 0x809E7DD0; // type:func -EnRr_Destroy = 0x809E7F70; // type:func -EnRr_Move = 0x809E7FB0; // type:func -EnRr_SetupReach = 0x809E7FD8; // type:func -EnRr_SetupNeutral = 0x809E80D8; // type:func -EnRr_SetupGrabPlayer = 0x809E81A4; // type:func -EnRr_GetMessage = 0x809E82AC; // type:func -EnRr_SetupReleasePlayer = 0x809E8300; // type:func -EnRr_SetupDamage = 0x809E84FC; // type:func -EnRr_SetupApproach = 0x809E85C8; // type:func -EnRr_SetupDeath = 0x809E8680; // type:func -EnRr_SetupStunned = 0x809E8720; // type:func -EnRr_CollisionCheck = 0x809E882C; // type:func -EnRr_InitBodySegments = 0x809E8BBC; // type:func -EnRr_UpdateBodySegments = 0x809E8D7C; // type:func -EnRr_Approach = 0x809E8F00; // type:func -EnRr_Reach = 0x809E8FC0; // type:func -EnRr_GrabPlayer = 0x809E90DC; // type:func -EnRr_Damage = 0x809E91D4; // type:func -EnRr_Death = 0x809E924C; // type:func -EnRr_Retreat = 0x809E95C0; // type:func -EnRr_Stunned = 0x809E9654; // type:func -EnRr_Update = 0x809E96BC; // type:func -EnRr_Draw = 0x809E9AE8; // type:func -EnBa_SetupAction = 0x809EA300; // type:func -EnBa_Init = 0x809EA30C; // type:func -EnBa_Destroy = 0x809EA4F8; // type:func -EnBa_SetupIdle = 0x809EA524; // type:func -EnBa_Idle = 0x809EA564; // type:func -EnBa_SetupFallAsBlob = 0x809EA990; // type:func -EnBa_FallAsBlob = 0x809EAA00; // type:func -EnBa_SetupSwingAtPlayer = 0x809EAAC0; // type:func -EnBa_SwingAtPlayer = 0x809EAB14; // type:func -func_809B7174 = 0x809EB134; // type:func -EnBa_RecoilFromDamage = 0x809EB1B0; // type:func -func_809B75A0 = 0x809EB564; // type:func -EnBa_Die = 0x809EB7E0; // type:func -EnBa_Update = 0x809EBB10; // type:func -EnBa_Draw = 0x809EBBF0; // type:func -EnBx_Init = 0x809EC1D0; // type:func -EnBx_Destroy = 0x809EC3D8; // type:func -func_809D1D0C = 0x809EC404; // type:func -EnBx_Update = 0x809EC4D4; // type:func -EnBx_Draw = 0x809EC7F8; // type:func -EnAnubice_Hover = 0x809ECCD0; // type:func -EnAnubice_AimFireball = 0x809ECD74; // type:func -EnAnubice_Init = 0x809ECE54; // type:func -EnAnubice_Destroy = 0x809ECF6C; // type:func -EnAnubice_FindFlameCircles = 0x809ECFC8; // type:func -EnAnubice_SetupIdle = 0x809ED050; // type:func -EnAnubice_Idle = 0x809ED0F8; // type:func -EnAnubice_GoToHome = 0x809ED1D8; // type:func -EnAnubice_SetupShootFireball = 0x809ED328; // type:func -EnAnubice_ShootFireball = 0x809ED3B0; // type:func -EnAnubice_SetupDie = 0x809ED4B0; // type:func -EnAnubice_Die = 0x809ED580; // type:func -EnAnubice_Update = 0x809ED834; // type:func -EnAnubice_OverrideLimbDraw = 0x809EDC38; // type:func -EnAnubice_PostLimbDraw = 0x809EDC84; // type:func -EnAnubice_Draw = 0x809EDD40; // type:func -EnAnubiceFire_Init = 0x809EDF80; // type:func -EnAnubiceFire_Destroy = 0x809EE0A0; // type:func -func_809B26EC = 0x809EE0CC; // type:func -func_809B27D8 = 0x809EE1B8; // type:func -func_809B2B48 = 0x809EE528; // type:func -EnAnubiceFire_Update = 0x809EE6D4; // type:func -EnAnubiceFire_Draw = 0x809EE8D0; // type:func -BgMoriHashigo_InitDynapoly = 0x809EED40; // type:func -BgMoriHashigo_InitCollider = 0x809EED98; // type:func -BgMoriHashigo_SpawnLadder = 0x809EEE44; // type:func -BgMoriHashigo_InitClasp = 0x809EEEFC; // type:func -BgMoriHashigo_InitLadder = 0x809EEF88; // type:func -BgMoriHashigo_Init = 0x809EEFCC; // type:func -BgMoriHashigo_Destroy = 0x809EF090; // type:func -BgMoriHashigo_SetupWaitForMoriTex = 0x809EF0E8; // type:func -BgMoriHashigo_WaitForMoriTex = 0x809EF0FC; // type:func -BgMoriHashigo_SetupClasp = 0x809EF17C; // type:func -BgMoriHashigo_Clasp = 0x809EF190; // type:func -BgMoriHashigo_SetupLadderWait = 0x809EF1F4; // type:func -BgMoriHashigo_LadderWait = 0x809EF208; // type:func -BgMoriHashigo_SetupLadderFall = 0x809EF23C; // type:func -BgMoriHashigo_LadderFall = 0x809EF278; // type:func -BgMoriHashigo_SetupLadderRest = 0x809EF358; // type:func -BgMoriHashigo_Update = 0x809EF37C; // type:func -BgMoriHashigo_Draw = 0x809EF3B8; // type:func -BgMoriHashira4_SetupAction = 0x809EF600; // type:func -BgMoriHashira4_InitDynaPoly = 0x809EF60C; // type:func -BgMoriHashira4_Init = 0x809EF664; // type:func -BgMoriHashira4_Destroy = 0x809EF778; // type:func -BgMoriHashira4_SetupWaitForMoriTex = 0x809EF7AC; // type:func -BgMoriHashira4_WaitForMoriTex = 0x809EF7D0; // type:func -BgMoriHashira4_SetupPillarsRotate = 0x809EF84C; // type:func -BgMoriHashira4_PillarsRotate = 0x809EF870; // type:func -BgMoriHashira4_GateWait = 0x809EF8A8; // type:func -BgMoriHashira4_GateOpen = 0x809EF954; // type:func -BgMoriHashira4_Update = 0x809EF9AC; // type:func -BgMoriHashira4_Draw = 0x809EF9D8; // type:func -BgMoriIdomizu_SetupAction = 0x809EFB90; // type:func -BgMoriIdomizu_SetWaterLevel = 0x809EFB9C; // type:func -BgMoriIdomizu_Init = 0x809EFBC4; // type:func -BgMoriIdomizu_Destroy = 0x809EFCE8; // type:func -BgMoriIdomizu_SetupWaitForMoriTex = 0x809EFD08; // type:func -BgMoriIdomizu_WaitForMoriTex = 0x809EFD2C; // type:func -BgMoriIdomizu_SetupMain = 0x809EFD84; // type:func -BgMoriIdomizu_Main = 0x809EFDA8; // type:func -BgMoriIdomizu_Update = 0x809EFF6C; // type:func -BgMoriIdomizu_Draw = 0x809EFF98; // type:func -BgSpot16Doughnut_Init = 0x809F01D0; // type:func -BgSpot16Doughnut_Destroy = 0x809F0344; // type:func -BgSpot16Doughnut_Update = 0x809F0354; // type:func -BgSpot16Doughnut_UpdateExpanding = 0x809F03E8; // type:func -BgSpot16Doughnut_Draw = 0x809F0450; // type:func -BgSpot16Doughnut_DrawExpanding = 0x809F0608; // type:func -BgBdanSwitch_InitDynaPoly = 0x809F0790; // type:func -BgBdanSwitch_InitCollision = 0x809F07E8; // type:func -func_8086D0EC = 0x809F083C; // type:func -BgBdanSwitch_Init = 0x809F09A8; // type:func -BgBdanSwitch_Destroy = 0x809F0B64; // type:func -func_8086D4B4 = 0x809F0BD0; // type:func -func_8086D548 = 0x809F0C64; // type:func -func_8086D5C4 = 0x809F0CE0; // type:func -func_8086D5E0 = 0x809F0D00; // type:func -func_8086D67C = 0x809F0D9C; // type:func -func_8086D694 = 0x809F0DB8; // type:func -func_8086D730 = 0x809F0E58; // type:func -func_8086D754 = 0x809F0E80; // type:func -func_8086D7FC = 0x809F0F28; // type:func -func_8086D80C = 0x809F0F3C; // type:func -func_8086D86C = 0x809F0F9C; // type:func -func_8086D888 = 0x809F0FBC; // type:func -func_8086D8BC = 0x809F0FF4; // type:func -func_8086D8CC = 0x809F1008; // type:func -func_8086D944 = 0x809F1080; // type:func -func_8086D95C = 0x809F109C; // type:func -func_8086D9F8 = 0x809F113C; // type:func -func_8086DA1C = 0x809F1164; // type:func -func_8086DAB4 = 0x809F1200; // type:func -func_8086DAC4 = 0x809F1214; // type:func -func_8086DB24 = 0x809F1274; // type:func -func_8086DB40 = 0x809F1294; // type:func -func_8086DB4C = 0x809F12A4; // type:func -func_8086DB68 = 0x809F12C4; // type:func -func_8086DC30 = 0x809F138C; // type:func -func_8086DC48 = 0x809F13A8; // type:func -func_8086DCCC = 0x809F142C; // type:func -func_8086DCE8 = 0x809F144C; // type:func -func_8086DDA8 = 0x809F150C; // type:func -func_8086DDC0 = 0x809F1528; // type:func -BgBdanSwitch_Update = 0x809F15BC; // type:func -func_8086DF58 = 0x809F16C0; // type:func -BgBdanSwitch_Draw = 0x809F1730; // type:func -EnMa1_GetTextId = 0x809F1BC0; // type:func -EnMa1_UpdateTalkState = 0x809F1CA8; // type:func -EnMa1_ShouldSpawn = 0x809F1DF4; // type:func -EnMa1_UpdateEyes = 0x809F1F40; // type:func -EnMa1_ChangeAnim = 0x809F1FB8; // type:func -EnMa1_UpdateTracking = 0x809F2028; // type:func -EnMa1_UpdateSinging = 0x809F20A8; // type:func -EnMa1_Init = 0x809F2120; // type:func -EnMa1_Destroy = 0x809F2288; // type:func -EnMa1_Idle = 0x809F22C8; // type:func -EnMa1_GiveWeirdEgg = 0x809F23E0; // type:func -EnMa1_FinishGivingWeirdEgg = 0x809F2440; // type:func -EnMa1_IdleTeachSong = 0x809F2488; // type:func -EnMa1_StartTeachSong = 0x809F25B4; // type:func -EnMa1_TeachSong = 0x809F2638; // type:func -EnMa1_WaitForPlayback = 0x809F26A0; // type:func -EnMa1_DoNothing = 0x809F2718; // type:func -EnMa1_Update = 0x809F2728; // type:func -EnMa1_OverrideLimbDraw = 0x809F2814; // type:func -EnMa1_PostLimbDraw = 0x809F29A4; // type:func -EnMa1_Draw = 0x809F2A00; // type:func -BossGanonEff_SpawnWindowShard = 0x809F2EA0; // type:func -BossGanonEff_SpawnSparkle = 0x809F2FE0; // type:func -BossGanonEff_SpawnLightRay = 0x809F30DC; // type:func -BossGanonEff_SpawnShock = 0x809F3220; // type:func -BossGanonEff_SpawnLightning = 0x809F32EC; // type:func -BossGanonEff_SpawnDustDark = 0x809F3390; // type:func -BossGanonEff_SpawnDustLight = 0x809F3484; // type:func -BossGanonEff_SpawnShockwave = 0x809F3568; // type:func -BossGanonEff_SpawnBlackDot = 0x809F3660; // type:func -BossGanon_SetColliderPos = 0x809F371C; // type:func -BossGanon_SetAnimationObject = 0x809F3760; // type:func -BossGanon_Init = 0x809F37D0; // type:func -BossGanon_Destroy = 0x809F3D74; // type:func -BossGanon_SetupIntroCutscene = 0x809F3DD8; // type:func -BossGanon_SetIntroCsCamera = 0x809F3EBC; // type:func -BossGanon_IntroCutscene = 0x809F3F5C; // type:func -BossGanon_SetupDeathCutscene = 0x809F565C; // type:func -BossGanon_SetupTowerCutscene = 0x809F5740; // type:func -BossGanon_ShatterWindows = 0x809F5844; // type:func -BossGanon_DeathAndTowerCutscene = 0x809F5988; // type:func -BossGanon_SetupPoundFloor = 0x809F7330; // type:func -BossGanon_PoundFloor = 0x809F736C; // type:func -BossGanon_SetupChargeBigMagic = 0x809F78C0; // type:func -BossGanon_ChargeBigMagic = 0x809F7930; // type:func -BossGanon_SetupWait = 0x809F8138; // type:func -BossGanon_Wait = 0x809F81C0; // type:func -BossGanon_SetupChargeLightBall = 0x809F850C; // type:func -BossGanon_ChargeLightBall = 0x809F857C; // type:func -BossGanon_SetupPlayTennis = 0x809F8730; // type:func -BossGanon_PlayTennis = 0x809F8798; // type:func -BossGanon_SetupBlock = 0x809F8A68; // type:func -BossGanon_Block = 0x809F8B20; // type:func -BossGanon_SetupHitByLightBall = 0x809F8CB0; // type:func -BossGanon_HitByLightBall = 0x809F8DA4; // type:func -BossGanon_SetupVulnerable = 0x809F8FFC; // type:func -BossGanon_Vulnerable = 0x809F91CC; // type:func -BossGanon_SetupDamaged = 0x809F9738; // type:func -BossGanon_Damaged = 0x809F97A0; // type:func -BossGanon_UpdateDamage = 0x809F9860; // type:func -BossGanon_Update = 0x809F9C28; // type:func -BossGanon_OverrideLimbDraw = 0x809FAD90; // type:func -BossGanon_PostLimbDraw = 0x809FAFD0; // type:func -BossGanon_InitRand = 0x809FB32C; // type:func -BossGanon_RandZeroOne = 0x809FB34C; // type:func -BossGanon_DrawShock = 0x809FB474; // type:func -BossGanon_DrawHandLightBall = 0x809FB820; // type:func -BossGanon_DrawBigMagicCharge = 0x809FBA74; // type:func -BossGanon_DrawTriforce = 0x809FC104; // type:func -BossGanon_DrawDarkVortex = 0x809FC4C8; // type:func -func_808E0254 = 0x809FC720; // type:func -BossGanon_GenShadowTexture = 0x809FCBC8; // type:func -BossGanon_DrawShadowTexture = 0x809FCF08; // type:func -BossGanon_Draw = 0x809FD184; // type:func -BossGanon_CheckFallingPlatforms = 0x809FD3CC; // type:func -BossGanon_LightBall_Update = 0x809FD4B4; // type:func -BossGanon_LightBall_Draw = 0x809FDFD4; // type:func -func_808E1EB4 = 0x809FE2E8; // type:func -func_808E229C = 0x809FE6D8; // type:func -func_808E2544 = 0x809FE948; // type:func -func_808E324C = 0x809FF65C; // type:func -BossGanon_UpdateEffects = 0x809FF930; // type:func -BossGanon_DrawEffects = 0x80A00158; // type:func -BossSst_Init = 0x80A18CD0; // type:func -BossSst_Destroy = 0x80A19158; // type:func -BossSst_HeadSetupLurk = 0x80A191A4; // type:func -BossSst_HeadLurk = 0x80A191D8; // type:func -BossSst_HeadSetupIntro = 0x80A19214; // type:func -BossSst_HeadIntro = 0x80A19360; // type:func -BossSst_HeadSetupWait = 0x80A1A178; // type:func -BossSst_HeadWait = 0x80A1A1C8; // type:func -BossSst_HeadSetupNeutral = 0x80A1A244; // type:func -BossSst_HeadNeutral = 0x80A1A264; // type:func -BossSst_HeadSetupDamagedHand = 0x80A1A408; // type:func -BossSst_HeadDamagedHand = 0x80A1A470; // type:func -BossSst_HeadSetupReadyCharge = 0x80A1A568; // type:func -BossSst_HeadReadyCharge = 0x80A1A5C0; // type:func -BossSst_HeadSetupCharge = 0x80A1A664; // type:func -BossSst_HeadCharge = 0x80A1A720; // type:func -BossSst_HeadSetupEndCharge = 0x80A1A980; // type:func -BossSst_HeadEndCharge = 0x80A1AA04; // type:func -BossSst_HeadSetupFrozenHand = 0x80A1AA74; // type:func -BossSst_HeadFrozenHand = 0x80A1AAC8; // type:func -BossSst_HeadSetupUnfreezeHand = 0x80A1AB10; // type:func -BossSst_HeadUnfreezeHand = 0x80A1AB5C; // type:func -BossSst_HeadSetupStunned = 0x80A1AB98; // type:func -BossSst_HeadStunned = 0x80A1AC38; // type:func -BossSst_HeadSetupVulnerable = 0x80A1AEBC; // type:func -BossSst_HeadVulnerable = 0x80A1AF5C; // type:func -BossSst_HeadSetupDamage = 0x80A1B05C; // type:func -BossSst_HeadDamage = 0x80A1B12C; // type:func -BossSst_HeadSetupRecover = 0x80A1B17C; // type:func -BossSst_HeadRecover = 0x80A1B208; // type:func -BossSst_SetCameraTargets = 0x80A1B39C; // type:func -BossSst_UpdateDeathCamera = 0x80A1B4C8; // type:func -BossSst_HeadSetupDeath = 0x80A1B654; // type:func -BossSst_HeadDeath = 0x80A1B7E8; // type:func -BossSst_HeadSetupThrash = 0x80A1BA38; // type:func -BossSst_HeadThrash = 0x80A1BAA0; // type:func -BossSst_HeadSetupDarken = 0x80A1BB1C; // type:func -BossSst_HeadDarken = 0x80A1BB64; // type:func -BossSst_HeadSetupFall = 0x80A1BD8C; // type:func -BossSst_HeadFall = 0x80A1BE24; // type:func -BossSst_HeadSetupMelt = 0x80A1BEC0; // type:func -BossSst_HeadMelt = 0x80A1BF10; // type:func -BossSst_HeadSetupFinish = 0x80A1BFC8; // type:func -BossSst_HeadFinish = 0x80A1C024; // type:func -BossSst_HandSetupWait = 0x80A1C31C; // type:func -BossSst_HandWait = 0x80A1C398; // type:func -BossSst_HandSetupDownbeat = 0x80A1C508; // type:func -BossSst_HandDownbeat = 0x80A1C57C; // type:func -BossSst_HandSetupDownbeatEnd = 0x80A1C6CC; // type:func -BossSst_HandDownbeatEnd = 0x80A1C728; // type:func -BossSst_HandSetupOffbeat = 0x80A1C81C; // type:func -BossSst_HandOffbeat = 0x80A1C890; // type:func -BossSst_HandSetupOffbeatEnd = 0x80A1C970; // type:func -BossSst_HandOffbeatEnd = 0x80A1C9BC; // type:func -BossSst_HandSetupEndSlam = 0x80A1CB00; // type:func -BossSst_HandEndSlam = 0x80A1CB74; // type:func -BossSst_HandSetupRetreat = 0x80A1CBB0; // type:func -BossSst_HandRetreat = 0x80A1CC58; // type:func -BossSst_HandSetupReadySlam = 0x80A1CE84; // type:func -BossSst_HandReadySlam = 0x80A1CEF0; // type:func -BossSst_HandSetupSlam = 0x80A1CFE0; // type:func -BossSst_HandSlam = 0x80A1D070; // type:func -BossSst_HandSetupReadySweep = 0x80A1D254; // type:func -BossSst_HandReadySweep = 0x80A1D2FC; // type:func -BossSst_HandSetupSweep = 0x80A1D420; // type:func -BossSst_HandSweep = 0x80A1D4AC; // type:func -BossSst_HandSetupReadyPunch = 0x80A1D6BC; // type:func -BossSst_HandReadyPunch = 0x80A1D724; // type:func -BossSst_HandSetupPunch = 0x80A1D780; // type:func -BossSst_HandPunch = 0x80A1D808; // type:func -BossSst_HandSetupReadyClap = 0x80A1D94C; // type:func -BossSst_HandReadyClap = 0x80A1DA3C; // type:func -BossSst_HandSetupClap = 0x80A1DC2C; // type:func -BossSst_HandClap = 0x80A1DC9C; // type:func -BossSst_HandSetupEndClap = 0x80A1DEC8; // type:func -BossSst_HandEndClap = 0x80A1DF34; // type:func -BossSst_HandSetupReadyGrab = 0x80A1DFD8; // type:func -BossSst_HandReadyGrab = 0x80A1E05C; // type:func -BossSst_HandSetupGrab = 0x80A1E104; // type:func -BossSst_HandGrab = 0x80A1E190; // type:func -BossSst_HandSetupCrush = 0x80A1E43C; // type:func -BossSst_HandCrush = 0x80A1E494; // type:func -BossSst_HandSetupEndCrush = 0x80A1E5AC; // type:func -BossSst_HandEndCrush = 0x80A1E5FC; // type:func -BossSst_HandSetupSwing = 0x80A1E638; // type:func -BossSst_HandSwing = 0x80A1E6C0; // type:func -BossSst_HandSetupReel = 0x80A1E9F4; // type:func -BossSst_HandReel = 0x80A1EA8C; // type:func -BossSst_HandSetupReadyShake = 0x80A1EBE4; // type:func -BossSst_HandReadyShake = 0x80A1EC34; // type:func -BossSst_HandSetupShake = 0x80A1ED9C; // type:func -BossSst_HandShake = 0x80A1EDB8; // type:func -BossSst_HandSetupReadyCharge = 0x80A1EF4C; // type:func -BossSst_HandReadyCharge = 0x80A1EFA0; // type:func -BossSst_HandSetupStunned = 0x80A1F118; // type:func -BossSst_HandStunned = 0x80A1F1C4; // type:func -BossSst_HandSetupDamage = 0x80A1F320; // type:func -BossSst_HandDamage = 0x80A1F37C; // type:func -BossSst_HandSetupThrash = 0x80A1F454; // type:func -BossSst_HandThrash = 0x80A1F4F0; // type:func -BossSst_HandSetupDarken = 0x80A1F6E4; // type:func -BossSst_HandDarken = 0x80A1F734; // type:func -BossSst_HandSetupFall = 0x80A1F7A8; // type:func -BossSst_HandFall = 0x80A1F7F8; // type:func -BossSst_HandSetupMelt = 0x80A1F87C; // type:func -BossSst_HandMelt = 0x80A1F8B8; // type:func -BossSst_HandSetupFinish = 0x80A1F930; // type:func -BossSst_HandFinish = 0x80A1F95C; // type:func -BossSst_HandSetupRecover = 0x80A1F988; // type:func -BossSst_HandRecover = 0x80A1F9DC; // type:func -BossSst_HandSetupFrozen = 0x80A1FA74; // type:func -BossSst_HandFrozen = 0x80A1FB40; // type:func -BossSst_HandSetupReadyBreakIce = 0x80A1FCA0; // type:func -BossSst_HandReadyBreakIce = 0x80A1FD54; // type:func -BossSst_HandSetupBreakIce = 0x80A1FE70; // type:func -BossSst_HandBreakIce = 0x80A1FE98; // type:func -BossSst_HandGrabPlayer = 0x80A2002C; // type:func -BossSst_HandReleasePlayer = 0x80A200CC; // type:func -BossSst_MoveAround = 0x80A20150; // type:func -BossSst_HandSelectAttack = 0x80A202DC; // type:func -BossSst_HandSetDamage = 0x80A203D8; // type:func -BossSst_HandSetInvulnerable = 0x80A20444; // type:func -BossSst_HeadSfx = 0x80A20484; // type:func -BossSst_HandCollisionCheck = 0x80A204B0; // type:func -BossSst_HeadCollisionCheck = 0x80A2063C; // type:func -BossSst_UpdateHand = 0x80A20788; // type:func -BossSst_UpdateHead = 0x80A20A98; // type:func -BossSst_OverrideHandDraw = 0x80A20D08; // type:func -BossSst_PostHandDraw = 0x80A20D58; // type:func -BossSst_OverrideHandTrailDraw = 0x80A20D94; // type:func -BossSst_DrawHand = 0x80A20DD8; // type:func -BossSst_OverrideHeadDraw = 0x80A21184; // type:func -BossSst_PostHeadDraw = 0x80A21988; // type:func -BossSst_DrawHead = 0x80A21A30; // type:func -BossSst_SpawnHeadShadow = 0x80A21E80; // type:func -BossSst_SpawnHandShadow = 0x80A21FAC; // type:func -BossSst_SpawnShockwave = 0x80A22060; // type:func -BossSst_SpawnIceCrystal = 0x80A2213C; // type:func -BossSst_SpawnIceShard = 0x80A223F8; // type:func -BossSst_IceShatter = 0x80A2264C; // type:func -BossSst_UpdateEffects = 0x80A22818; // type:func -BossSst_DrawEffects = 0x80A22ABC; // type:func -EnNy_Init = 0x80A252A0; // type:func -EnNy_Destroy = 0x80A253DC; // type:func -func_80ABCD40 = 0x80A25408; // type:func -func_80ABCD84 = 0x80A25450; // type:func -func_80ABCD94 = 0x80A25464; // type:func -func_80ABCDAC = 0x80A25480; // type:func -func_80ABCDBC = 0x80A25494; // type:func -EnNy_SetupTurnToStone = 0x80A254D8; // type:func -func_80ABCE38 = 0x80A25514; // type:func -func_80ABCE50 = 0x80A25530; // type:func -func_80ABCE90 = 0x80A25570; // type:func -func_80ABCEEC = 0x80A255CC; // type:func -EnNy_Move = 0x80A2562C; // type:func -EnNy_TurnToStone = 0x80A25740; // type:func -func_80ABD11C = 0x80A25800; // type:func -EnNy_CollisionCheck = 0x80A25874; // type:func -func_80ABD3B8 = 0x80A25A9C; // type:func -EnNy_Update = 0x80A25B84; // type:func -EnNy_SetupDie = 0x80A25E10; // type:func -EnNy_Die = 0x80A26094; // type:func -EnNy_UpdateDeath = 0x80A262A0; // type:func -EnNy_UpdateUnused = 0x80A262E0; // type:func -EnNy_Draw = 0x80A26410; // type:func -EnNy_DrawDeathEffect = 0x80A266E4; // type:func -EnFr_OrientUnderwater = 0x80A26BE0; // type:func -EnFr_Init = 0x80A26CF4; // type:func -EnFr_DrawIdle = 0x80A26DAC; // type:func -EnFr_DrawActive = 0x80A26DD4; // type:func -EnFr_Update = 0x80A26DE8; // type:func -EnFr_Destroy = 0x80A270E0; // type:func -EnFr_IsDivingIntoWater = 0x80A27114; // type:func -EnFr_DivingIntoWater = 0x80A27198; // type:func -EnFr_IsBelowLogSpot = 0x80A27244; // type:func -EnFr_IsAboveAndWithin30DistXZ = 0x80A272A0; // type:func -EnFr_DecrementBlinkTimer = 0x80A2731C; // type:func -EnFr_DecrementBlinkTimerUpdate = 0x80A27344; // type:func -EnFr_SetupJumpingOutOfWater = 0x80A273D4; // type:func -EnFr_JumpingOutOfWater = 0x80A27474; // type:func -EnFr_OrientOnLogSpot = 0x80A27614; // type:func -EnFr_ChooseJumpFromLogSpot = 0x80A276D4; // type:func -EnFr_JumpingUp = 0x80A277E8; // type:func -EnFr_JumpingBackIntoWater = 0x80A27928; // type:func -EnFr_SetScaleActive = 0x80A27A80; // type:func -EnFr_ButterflyPath = 0x80A27B88; // type:func -EnFr_UpdateActive = 0x80A27CE4; // type:func -EnFr_SetupJumpingUp = 0x80A27DC8; // type:func -EnFr_Idle = 0x80A27E68; // type:func -EnFr_Activate = 0x80A27F48; // type:func -EnFr_ActivateCheckFrogSong = 0x80A27FB0; // type:func -func_80A1BE98 = 0x80A28054; // type:func -EnFr_ListeningToOcarinaNotes = 0x80A280CC; // type:func -EnFr_ChildSong = 0x80A28218; // type:func -EnFr_ChildSongFirstTime = 0x80A28350; // type:func -EnFr_TalkBeforeFrogSong = 0x80A283A8; // type:func -EnFr_CheckOcarinaInputFrogSong = 0x80A28410; // type:func -EnFr_DeactivateButterfly = 0x80A2850C; // type:func -EnFr_GetNextNoteFrogSong = 0x80A28554; // type:func -EnFr_SetupFrogSong = 0x80A285D0; // type:func -EnFr_IsFrogSongComplete = 0x80A28644; // type:func -EnFr_OcarinaMistake = 0x80A286F4; // type:func -EnFr_ContinueFrogSong = 0x80A28750; // type:func -EnFr_SetupReward = 0x80A288F4; // type:func -EnFr_PrintTextBox = 0x80A28970; // type:func -EnFr_TalkBeforeReward = 0x80A289B0; // type:func -EnFr_SetReward = 0x80A28A18; // type:func -EnFr_Deactivate = 0x80A28B2C; // type:func -EnFr_GiveReward = 0x80A28C2C; // type:func -EnFr_SetIdle = 0x80A28C8C; // type:func -EnFr_UpdateIdle = 0x80A28CE0; // type:func -EnFr_OverrideLimbDraw = 0x80A28D0C; // type:func -EnFr_PostLimbDraw = 0x80A28D38; // type:func -EnFr_Draw = 0x80A28DF0; // type:func -ItemShield_SetupAction = 0x80A29670; // type:func -ItemShield_Init = 0x80A2967C; // type:func -ItemShield_Destroy = 0x80A297E4; // type:func -func_80B86AC8 = 0x80A29810; // type:func -func_80B86BC8 = 0x80A29914; // type:func -func_80B86CA8 = 0x80A299FC; // type:func -func_80B86F68 = 0x80A29CC0; // type:func -ItemShield_Update = 0x80A29DCC; // type:func -ItemShield_Draw = 0x80A29DF0; // type:func -BgIceShelter_InitColliders = 0x80A2A080; // type:func -BgIceShelter_InitDynaPoly = 0x80A2A1B4; // type:func -BgIceShelter_RotateY = 0x80A2A20C; // type:func -BgIceShelter_Init = 0x80A2A28C; // type:func -BgIceShelter_Destroy = 0x80A2A408; // type:func -BgIceShelter_SpawnSteamAround = 0x80A2A494; // type:func -BgIceShelter_SpawnSteamAlong = 0x80A2A708; // type:func -BgIceShelter_SetupIdle = 0x80A2A96C; // type:func -BgIceShelter_Idle = 0x80A2A988; // type:func -BgIceShelter_SetupMelt = 0x80A2AAC8; // type:func -BgIceShelter_Melt = 0x80A2AAE4; // type:func -BgIceShelter_Update = 0x80A2ACA8; // type:func -BgIceShelter_Draw = 0x80A2ACCC; // type:func -EnIceHono_XZDistanceSquared = 0x80A2B2C0; // type:func -EnIceHono_InitCapturableFlame = 0x80A2B2F0; // type:func -EnIceHono_InitDroppedFlame = 0x80A2B394; // type:func -EnIceHono_InitSmallFlame = 0x80A2B49C; // type:func -EnIceHono_Init = 0x80A2B504; // type:func -EnIceHono_Destroy = 0x80A2B664; // type:func -EnIceHono_InBottleRange = 0x80A2B6BC; // type:func -EnIceHono_SetupActionCapturableFlame = 0x80A2B7AC; // type:func -EnIceHono_CapturableFlame = 0x80A2B7D4; // type:func -EnIceHono_SetupActionDroppedFlame = 0x80A2B884; // type:func -EnIceHono_DropFlame = 0x80A2B8A8; // type:func -EnIceHono_SetupActionSpreadFlames = 0x80A2BA68; // type:func -EnIceHono_SpreadFlames = 0x80A2BA8C; // type:func -EnIceHono_SetupActionSmallFlame = 0x80A2BCE8; // type:func -EnIceHono_SmallFlameMove = 0x80A2BDBC; // type:func -EnIceHono_Update = 0x80A2BF14; // type:func -EnIceHono_Draw = 0x80A2C0A8; // type:func -ItemOcarina_SetupAction = 0x80A2C4B0; // type:func -ItemOcarina_Init = 0x80A2C4BC; // type:func -ItemOcarina_Destroy = 0x80A2C644; // type:func -ItemOcarina_Fly = 0x80A2C654; // type:func -ItemOcarina_GetThrown = 0x80A2C800; // type:func -func_80B864EC = 0x80A2C858; // type:func -func_80B865E0 = 0x80A2C94C; // type:func -ItemOcarina_DoNothing = 0x80A2C9AC; // type:func -ItemOcarina_StartSoTCutscene = 0x80A2C9BC; // type:func -ItemOcarina_WaitInWater = 0x80A2CA30; // type:func -ItemOcarina_Update = 0x80A2CB04; // type:func -ItemOcarina_Draw = 0x80A2CB28; // type:func -MagicDark_Init = 0x80A2CC80; // type:func -MagicDark_Destroy = 0x80A2CD64; // type:func -MagicDark_DiamondUpdate = 0x80A2CD9C; // type:func -MagicDark_DimLighting = 0x80A2CFE4; // type:func -MagicDark_OrbUpdate = 0x80A2D130; // type:func -MagicDark_DiamondDraw = 0x80A2D2D8; // type:func -MagicDark_OrbDraw = 0x80A2D540; // type:func -Demo6K_SetupAction = 0x80A2E4D0; // type:func -Demo6K_Init = 0x80A2E4DC; // type:func -Demo6K_Destroy = 0x80A2E8C4; // type:func -Demo6K_WaitForObject = 0x80A2E8F8; // type:func -func_80966E04 = 0x80A2E950; // type:func -func_80966E98 = 0x80A2E9E8; // type:func -func_80966F84 = 0x80A2EADC; // type:func -func_809670AC = 0x80A2EC04; // type:func -func_8096712C = 0x80A2EC84; // type:func -func_80967244 = 0x80A2ED9C; // type:func -func_80967410 = 0x80A2EF68; // type:func -func_809674E0 = 0x80A2F038; // type:func -func_809676A4 = 0x80A2F1FC; // type:func -func_8096784C = 0x80A2F3A4; // type:func -func_80967A04 = 0x80A2F560; // type:func -func_80967AD0 = 0x80A2F62C; // type:func -func_80967BF8 = 0x80A2F758; // type:func -func_80967DBC = 0x80A2F91C; // type:func -func_80967F10 = 0x80A2FA68; // type:func -Demo6K_Update = 0x80A2FB34; // type:func -func_80967FFC = 0x80A2FB58; // type:func -func_80968298 = 0x80A2FDB4; // type:func -func_8096865C = 0x80A30138; // type:func -func_809688C4 = 0x80A30358; // type:func -func_80968B70 = 0x80A305D4; // type:func -func_80968FB0 = 0x80A309D4; // type:func -func_809691BC = 0x80A30B98; // type:func -EnAnubiceTag_Init = 0x80A31230; // type:func -EnAnubiceTag_Destroy = 0x80A31280; // type:func -EnAnubiceTag_SpawnAnubis = 0x80A31290; // type:func -EnAnubiceTag_ManageAnubis = 0x80A31308; // type:func -EnAnubiceTag_Update = 0x80A3146C; // type:func -EnAnubiceTag_Draw = 0x80A31490; // type:func -BgHakaGate_Init = 0x80A31500; // type:func -BgHakaGate_Destroy = 0x80A317D0; // type:func -BgHakaGate_DoNothing = 0x80A3182C; // type:func -BgHakaGate_StatueInactive = 0x80A3183C; // type:func -BgHakaGate_StatueIdle = 0x80A31878; // type:func -BgHakaGate_StatueTurn = 0x80A31990; // type:func -BgHakaGate_FloorClosed = 0x80A31B74; // type:func -BgHakaGate_FloorOpen = 0x80A31CFC; // type:func -BgHakaGate_GateWait = 0x80A31D88; // type:func -BgHakaGate_GateOpen = 0x80A31DD8; // type:func -BgHakaGate_SkullOfTruth = 0x80A31E68; // type:func -BgHakaGate_FalseSkull = 0x80A31EC4; // type:func -BgHakaGate_Update = 0x80A31F44; // type:func -BgHakaGate_DrawFlame = 0x80A31F8C; // type:func -BgHakaGate_Draw = 0x80A32164; // type:func -BgSpot15Saku_Init = 0x80A325A0; // type:func -BgSpot15Saku_Destroy = 0x80A32654; // type:func -func_808B4930 = 0x80A32688; // type:func -func_808B4978 = 0x80A326D0; // type:func -func_808B4A04 = 0x80A3275C; // type:func -BgSpot15Saku_Update = 0x80A3278C; // type:func -BgSpot15Saku_Draw = 0x80A327C0; // type:func -BgJyaGoroiwa_UpdateCollider = 0x80A328E0; // type:func -BgJyaGoroiwa_InitCollider = 0x80A32938; // type:func -BgJyaGoroiwa_UpdateRotation = 0x80A329A0; // type:func -BgJyaGoroiwa_Init = 0x80A329E0; // type:func -BgJyaGoroiwa_Destroy = 0x80A32A74; // type:func -BgJyaGoroiwa_SetupMove = 0x80A32AA0; // type:func -BgJyaGoroiwa_Move = 0x80A32AD0; // type:func -BgJyaGoroiwa_SetupWait = 0x80A32D64; // type:func -BgJyaGoroiwa_Wait = 0x80A32D7C; // type:func -BgJyaGoroiwa_Update = 0x80A32DCC; // type:func -BgJyaGoroiwa_Draw = 0x80A32EB8; // type:func -BgJyaZurerukabe_InitDynaPoly = 0x80A33060; // type:func -func_8089B4C8 = 0x80A330B8; // type:func -BgJyaZurerukabe_Init = 0x80A33254; // type:func -BgJyaZurerukabe_Destroy = 0x80A33314; // type:func -func_8089B7B4 = 0x80A33360; // type:func -func_8089B7C4 = 0x80A33374; // type:func -func_8089B80C = 0x80A333C0; // type:func -func_8089B870 = 0x80A33428; // type:func -BgJyaZurerukabe_Update = 0x80A334F0; // type:func -BgJyaZurerukabe_Draw = 0x80A33548; // type:func -func_808958F0 = 0x80A33710; // type:func -BgJyaCobra_InitDynapoly = 0x80A33764; // type:func -BgJyaCobra_SpawnRay = 0x80A337BC; // type:func -func_80895A70 = 0x80A33824; // type:func -func_80895BEC = 0x80A339A4; // type:func -func_80895C74 = 0x80A33A28; // type:func -BgJyaCobra_UpdateShadowFromSide = 0x80A33CA8; // type:func -BgJyaCobra_UpdateShadowFromTop = 0x80A342D0; // type:func -BgJyaCobra_Init = 0x80A3458C; // type:func -BgJyaCobra_Destroy = 0x80A34678; // type:func -func_80896918 = 0x80A346AC; // type:func -func_80896950 = 0x80A346E8; // type:func -func_808969F8 = 0x80A34790; // type:func -func_80896ABC = 0x80A34858; // type:func -BgJyaCobra_Update = 0x80A349EC; // type:func -func_80896CB4 = 0x80A34A60; // type:func -func_80896D78 = 0x80A34AE8; // type:func -BgJyaCobra_DrawShadow = 0x80A34C14; // type:func -BgJyaCobra_Draw = 0x80A34E98; // type:func -BgJyaKanaami_InitDynaPoly = 0x80A35450; // type:func -BgJyaKanaami_Init = 0x80A354A8; // type:func -BgJyaKanaami_Destroy = 0x80A35528; // type:func -func_80899880 = 0x80A3555C; // type:func -func_80899894 = 0x80A35574; // type:func -func_8089993C = 0x80A3561C; // type:func -func_80899950 = 0x80A35634; // type:func -func_80899A08 = 0x80A356EC; // type:func -BgJyaKanaami_Update = 0x80A35700; // type:func -BgJyaKanaami_Draw = 0x80A35734; // type:func -Fishing_SetColliderElement = 0x80A35800; // type:func -Fishing_SeedRand = 0x80A35890; // type:func -Fishing_RandZeroOne = 0x80A358B0; // type:func -Fishing_SmoothStepToS = 0x80A35A68; // type:func -Fishing_SpawnRipple = 0x80A35AF4; // type:func -Fishing_SpawnDustSplash = 0x80A35C68; // type:func -Fishing_SpawnWaterDust = 0x80A35DB8; // type:func -Fishing_SpawnBubble = 0x80A35EF8; // type:func -Fishing_SpawnRainDrop = 0x80A3603C; // type:func -Fishing_InitPondProps = 0x80A36138; // type:func -Fishing_Init = 0x80A36424; // type:func -Fishing_Destroy = 0x80A36D34; // type:func -Fishing_UpdateEffects = 0x80A36DA0; // type:func -Fishing_DrawEffects = 0x80A3749C; // type:func -Fishing_DrawStreamSplash = 0x80A38014; // type:func -Fishing_IsAboveCounter = 0x80A38198; // type:func -Fishing_UpdateLine = 0x80A38258; // type:func -Fishing_UpdateLinePos = 0x80A387C4; // type:func -Fishing_DrawLureHook = 0x80A38974; // type:func -Fishing_UpdateSinkingLure = 0x80A38E20; // type:func -Fishing_DrawSinkingLure = 0x80A39110; // type:func -Fishing_DrawLureAndLine = 0x80A3940C; // type:func -Fishing_DrawRod = 0x80A39C70; // type:func -Fishing_UpdateLure = 0x80A3A564; // type:func -Fishing_SplashBySize = 0x80A3C0C8; // type:func -Fishing_SplashBySize2 = 0x80A3C368; // type:func -func_80B70ED4 = 0x80A3C550; // type:func -Fishing_FishLeapSfx = 0x80A3C8C4; // type:func -Fishing_HandleAquariumDialog = 0x80A3C984; // type:func -Fishing_UpdateFish = 0x80A3CADC; // type:func -Fishing_FishOverrideLimbDraw = 0x80A40904; // type:func -Fishing_FishPostLimbDraw = 0x80A409E0; // type:func -Fishing_LoachOverrideLimbDraw = 0x80A40A10; // type:func -Fishing_LoachPostLimbDraw = 0x80A40A74; // type:func -Fishing_DrawFish = 0x80A40AA4; // type:func -Fishing_HandleReedContact = 0x80A40CCC; // type:func -Fishing_HandleLilyPadContact = 0x80A40D8C; // type:func -Fishing_UpdatePondProps = 0x80A40E7C; // type:func -Fishing_DrawPondProps = 0x80A41130; // type:func -Fishing_UpdateGroupFishes = 0x80A41614; // type:func -Fishing_DrawGroupFishes = 0x80A41F34; // type:func -Fishing_HandleOwnerDialog = 0x80A42148; // type:func -Fishing_UpdateOwner = 0x80A42CBC; // type:func -Fishing_OwnerOverrideLimbDraw = 0x80A4469C; // type:func -Fishing_OwnerPostLimbDraw = 0x80A446C8; // type:func -Fishing_DrawOwner = 0x80A447A0; // type:func -ObjOshihiki_InitDynapoly = 0x80A4ED40; // type:func -ObjOshihiki_RotateXZ = 0x80A4ED98; // type:func -ObjOshihiki_StrongEnough = 0x80A4EDEC; // type:func -ObjOshihiki_ResetFloors = 0x80A4EE70; // type:func -ObjOshihiki_GetBlockUnder = 0x80A4EE9C; // type:func -ObjOshihiki_UpdateInitPos = 0x80A4EF2C; // type:func -ObjOshihiki_NoSwitchPress = 0x80A4F05C; // type:func -ObjOshihiki_CheckType = 0x80A4F128; // type:func -ObjOshihiki_SetScale = 0x80A4F178; // type:func -ObjOshihiki_SetTexture = 0x80A4F1B0; // type:func -ObjOshihiki_SetColor = 0x80A4F210; // type:func -ObjOshihiki_Init = 0x80A4F2B8; // type:func -ObjOshihiki_Destroy = 0x80A4F3E0; // type:func -ObjOshihiki_SetFloors = 0x80A4F414; // type:func -ObjOshihiki_GetHighestFloor = 0x80A4F574; // type:func -ObjOshihiki_SetGround = 0x80A4F6C0; // type:func -ObjOshihiki_CheckFloor = 0x80A4F718; // type:func -ObjOshihiki_CheckGround = 0x80A4F770; // type:func -ObjOshihiki_CheckWall = 0x80A4F7E8; // type:func -ObjOshihiki_MoveWithBlockUnder = 0x80A4FA3C; // type:func -ObjOshihiki_SetupOnScene = 0x80A4FB38; // type:func -ObjOshihiki_OnScene = 0x80A4FB70; // type:func -ObjOshihiki_SetupOnActor = 0x80A4FC5C; // type:func -ObjOshihiki_OnActor = 0x80A4FC9C; // type:func -ObjOshihiki_SetupPush = 0x80A4FE94; // type:func -ObjOshihiki_Push = 0x80A4FEC0; // type:func -ObjOshihiki_SetupFall = 0x80A500DC; // type:func -ObjOshihiki_Fall = 0x80A50134; // type:func -ObjOshihiki_Update = 0x80A50238; // type:func -ObjOshihiki_Draw = 0x80A502C0; // type:func -BgGateShutter_Init = 0x80A507F0; // type:func -BgGateShutter_Destroy = 0x80A508D8; // type:func -func_8087828C = 0x80A5090C; // type:func -func_80878300 = 0x80A50980; // type:func -func_808783AC = 0x80A50A30; // type:func -func_808783D4 = 0x80A50A58; // type:func -BgGateShutter_Update = 0x80A50B14; // type:func -BgGateShutter_Draw = 0x80A50B48; // type:func -EffDust_SetupAction = 0x80A50C80; // type:func -EffDust_SetupDraw = 0x80A50C8C; // type:func -EffDust_InitPosAndDistance = 0x80A50C98; // type:func -EffDust_Init = 0x80A50D10; // type:func -EffDust_Destroy = 0x80A50ED0; // type:func -EffDust_UpdateFunc_8099DB28 = 0x80A50EE0; // type:func -EffDust_UpdateFunc_8099DD74 = 0x80A5112C; // type:func -EffDust_UpdateFunc_8099DFC0 = 0x80A51378; // type:func -EffDust_Update = 0x80A5188C; // type:func -EffDust_DrawFunc_8099E4F4 = 0x80A518B0; // type:func -EffDust_DrawFunc_8099E784 = 0x80A51B04; // type:func -EffDust_Draw = 0x80A51E68; // type:func -BgSpot01Fusya_SetupAction = 0x80A52050; // type:func -BgSpot01Fusya_Init = 0x80A5205C; // type:func -BgSpot01Fusya_Destroy = 0x80A520D8; // type:func -func_808AAA50 = 0x80A520E8; // type:func -BgSpot01Fusya_Update = 0x80A521A8; // type:func -BgSpot01Fusya_Draw = 0x80A521CC; // type:func -BgSpot01Idohashira_PlayBreakSfx1 = 0x80A522F0; // type:func -BgSpot01Idohashira_PlayBreakSfx2 = 0x80A52318; // type:func -func_808AAD3C = 0x80A52350; // type:func -func_808AAE6C = 0x80A52488; // type:func -func_808AAF34 = 0x80A52554; // type:func -BgSpot01Idohashira_Destroy = 0x80A52718; // type:func -BgSpot01Idohashira_NotInCsMode = 0x80A5274C; // type:func -BgSpot01Idohashira_GetCue = 0x80A5276C; // type:func -func_808AB18C = 0x80A527B8; // type:func -func_808AB1DC = 0x80A5280C; // type:func -func_808AB29C = 0x80A528B0; // type:func -func_808AB3E8 = 0x80A529FC; // type:func -func_808AB3F8 = 0x80A52A10; // type:func -func_808AB414 = 0x80A52A30; // type:func -func_808AB444 = 0x80A52A5C; // type:func -func_808AB504 = 0x80A52B08; // type:func -func_808AB510 = 0x80A52B18; // type:func -func_808AB530 = 0x80A52B38; // type:func -func_808AB570 = 0x80A52B7C; // type:func -BgSpot01Idohashira_Update = 0x80A52B9C; // type:func -BgSpot01Idohashira_Init = 0x80A52BE4; // type:func -func_808AB700 = 0x80A52CFC; // type:func -BgSpot01Idohashira_Draw = 0x80A52D8C; // type:func -BgSpot01Idomizu_Init = 0x80A52EF0; // type:func -BgSpot01Idomizu_Destroy = 0x80A52F88; // type:func -BgSpot01Idomizu_UpdateWaterLevel = 0x80A52F98; // type:func -BgSpot01Idomizu_Update = 0x80A5304C; // type:func -BgSpot01Idomizu_Draw = 0x80A53070; // type:func -BgPoSyokudai_Init = 0x80A53210; // type:func -BgPoSyokudai_Destroy = 0x80A534B0; // type:func -BgPoSyokudai_Update = 0x80A53520; // type:func -BgPoSyokudai_Draw = 0x80A535A0; // type:func -BgGanonOtyuka_Init = 0x80A53B80; // type:func -BgGanonOtyuka_Destroy = 0x80A53C1C; // type:func -BgGanonOtyuka_WaitToFall = 0x80A53C50; // type:func -BgGanonOtyuka_Fall = 0x80A53EA0; // type:func -BgGanonOtyuka_DoNothing = 0x80A542E0; // type:func -BgGanonOtyuka_Update = 0x80A542F0; // type:func -BgGanonOtyuka_Draw = 0x80A54338; // type:func -func_808B3960 = 0x80A561C0; // type:func -BgSpot15Rrbox_RotatePoint = 0x80A56218; // type:func -func_808B3A34 = 0x80A5626C; // type:func -func_808B3A40 = 0x80A5627C; // type:func -func_808B3AAC = 0x80A562EC; // type:func -BgSpot15Rrbox_Init = 0x80A563D4; // type:func -BgSpot15Rrbox_Destroy = 0x80A564A4; // type:func -BgSpot15Rrbox_TrySnapToCheckedPoint = 0x80A564E0; // type:func -BgSpot15Rrbox_GetFloorHeight = 0x80A56620; // type:func -BgSpot15Rrbox_TrySnapToFloor = 0x80A567A0; // type:func -func_808B4010 = 0x80A56860; // type:func -func_808B4084 = 0x80A568D4; // type:func -func_808B40AC = 0x80A56900; // type:func -func_808B4178 = 0x80A569CC; // type:func -func_808B4194 = 0x80A569EC; // type:func -func_808B4380 = 0x80A56BD8; // type:func -func_808B43D0 = 0x80A56C28; // type:func -func_808B44B8 = 0x80A56CF4; // type:func -func_808B44CC = 0x80A56D0C; // type:func -BgSpot15Rrbox_Update = 0x80A56D30; // type:func -BgSpot15Rrbox_Draw = 0x80A56D9C; // type:func -BgUmaJump_Init = 0x80A56FA0; // type:func -BgUmaJump_Destroy = 0x80A5705C; // type:func -BgUmaJump_Update = 0x80A57090; // type:func -BgUmaJump_Draw = 0x80A570A0; // type:func -EnInsect_InitFlags = 0x80A57130; // type:func -EnInsect_XZDistanceSquared = 0x80A57154; // type:func -EnInsect_InBottleRange = 0x80A57184; // type:func -EnInsect_SetCrawlAnim = 0x80A57274; // type:func -EnInsect_TryFindNearbySoil = 0x80A572C0; // type:func -EnInsect_UpdateCrawlSfx = 0x80A57378; // type:func -EnInsect_Init = 0x80A5740C; // type:func -EnInsect_Destroy = 0x80A57658; // type:func -EnInsect_SetupSlowDown = 0x80A576C8; // type:func -EnInsect_SlowDown = 0x80A57718; // type:func -EnInsect_SetupCrawl = 0x80A578BC; // type:func -EnInsect_Crawl = 0x80A5790C; // type:func -EnInsect_SetupRunFromPlayer = 0x80A57B38; // type:func -EnInsect_RunFromPlayer = 0x80A57B88; // type:func -EnInsect_SetupCaught = 0x80A57D80; // type:func -EnInsect_Caught = 0x80A57DEC; // type:func -EnInsect_SetupDig = 0x80A57EE4; // type:func -EnInsect_Dig = 0x80A57F5C; // type:func -EnInsect_SetupWalkOnWater = 0x80A58180; // type:func -EnInsect_WalkOnWater = 0x80A581E0; // type:func -EnInsect_SetupDrown = 0x80A58514; // type:func -EnInsect_Drown = 0x80A5858C; // type:func -EnInsect_SetupDropped = 0x80A586BC; // type:func -EnInsect_Dropped = 0x80A58784; // type:func -EnInsect_Update = 0x80A58EB4; // type:func -EnInsect_Draw = 0x80A590FC; // type:func -EnButte_SelectFlightParams = 0x80A59650; // type:func -EnButte_ResetTransformationEffect = 0x80A596D4; // type:func -EnButte_UpdateTransformationEffect = 0x80A596F0; // type:func -EnButte_DrawTransformationEffect = 0x80A59728; // type:func -EnButte_Init = 0x80A59964; // type:func -EnButte_Destroy = 0x80A59AD8; // type:func -func_809CD56C = 0x80A59B04; // type:func -func_809CD634 = 0x80A59BCC; // type:func -EnButte_Turn = 0x80A59C94; // type:func -EnButte_SetupFlyAround = 0x80A59D30; // type:func -EnButte_FlyAround = 0x80A59D7C; // type:func -EnButte_SetupFollowLink = 0x80A5A160; // type:func -EnButte_FollowLink = 0x80A5A1AC; // type:func -EnButte_SetupTransformIntoFairy = 0x80A5A560; // type:func -EnButte_TransformIntoFairy = 0x80A5A5B0; // type:func -EnButte_SetupWaitToDie = 0x80A5A66C; // type:func -EnButte_WaitToDie = 0x80A5A68C; // type:func -EnButte_Update = 0x80A5A6BC; // type:func -EnButte_Draw = 0x80A5A7FC; // type:func -EnFish_XZDistanceSquared = 0x80A5AC20; // type:func -EnFish_SetInWaterAnimation = 0x80A5AC50; // type:func -EnFish_SetOutOfWaterAnimation = 0x80A5ACB4; // type:func -EnFish_BeginRespawn = 0x80A5AD18; // type:func -EnFish_SetCutsceneData = 0x80A5AD4C; // type:func -EnFish_ClearCutsceneData = 0x80A5ADE4; // type:func -EnFish_Init = 0x80A5AE0C; // type:func -EnFish_Destroy = 0x80A5AF50; // type:func -EnFish_SetYOffset = 0x80A5AF7C; // type:func -EnFish_InBottleRange = 0x80A5B034; // type:func -EnFish_CheckXZDistanceToPlayer = 0x80A5B124; // type:func -EnFish_Respawning_SetupSlowDown = 0x80A5B154; // type:func -EnFish_Respawning_SlowDown = 0x80A5B1AC; // type:func -EnFish_Respawning_SetupFollowChild = 0x80A5B2A0; // type:func -EnFish_Respawning_FollowChild = 0x80A5B2F8; // type:func -EnFish_Respawning_SetupFleePlayer = 0x80A5B48C; // type:func -EnFish_Respawning_FleePlayer = 0x80A5B4E4; // type:func -EnFish_Respawning_SetupApproachPlayer = 0x80A5B6D4; // type:func -EnFish_Respawning_ApproachPlayer = 0x80A5B72C; // type:func -EnFish_Dropped_SetupFall = 0x80A5B8F0; // type:func -EnFish_Dropped_Fall = 0x80A5B950; // type:func -EnFish_Dropped_SetupFlopOnGround = 0x80A5BA58; // type:func -EnFish_Dropped_FlopOnGround = 0x80A5BB9C; // type:func -EnFish_Dropped_SetupSwimAway = 0x80A5BD78; // type:func -EnFish_Dropped_SwimAway = 0x80A5BDEC; // type:func -EnFish_Unique_SetupSwimIdle = 0x80A5BFB4; // type:func -EnFish_Unique_SwimIdle = 0x80A5C00C; // type:func -EnFish_Cutscene_FlopOnGround = 0x80A5C234; // type:func -EnFish_Cutscene_WiggleFlyingThroughAir = 0x80A5C364; // type:func -EnFish_UpdateCutscene = 0x80A5C400; // type:func -EnFish_OrdinaryUpdate = 0x80A5C5C0; // type:func -EnFish_RespawningUpdate = 0x80A5C744; // type:func -EnFish_Update = 0x80A5C858; // type:func -EnFish_Draw = 0x80A5C904; // type:func -BgSpot08Iceblock_SetupAction = 0x80A5CD30; // type:func -BgSpot08Iceblock_InitDynaPoly = 0x80A5CD3C; // type:func -BgSpot08Iceblock_CheckParams = 0x80A5CD94; // type:func -BgSpot08Iceblock_Bobbing = 0x80A5CDF4; // type:func -BgSpot08Iceblock_SinkUnderPlayer = 0x80A5CE50; // type:func -BgSpot08Iceblock_SetWaterline = 0x80A5CF00; // type:func -BgSpot08Iceblock_MultVectorScalar = 0x80A5CF20; // type:func -BgSpot08Iceblock_CrossProduct = 0x80A5CF54; // type:func -BgSpot08Iceblock_NormalizeVector = 0x80A5CFC8; // type:func -BgSpot08Iceblock_Roll = 0x80A5D064; // type:func -BgSpot08Iceblock_SpawnTwinFloe = 0x80A5D3D8; // type:func -BgSpot08Iceblock_Init = 0x80A5D4D8; // type:func -BgSpot08Iceblock_Destroy = 0x80A5D6CC; // type:func -BgSpot08Iceblock_SetupFloatNonrotating = 0x80A5D700; // type:func -BgSpot08Iceblock_FloatNonrotating = 0x80A5D724; // type:func -BgSpot08Iceblock_SetupFloatRotating = 0x80A5D778; // type:func -BgSpot08Iceblock_FloatRotating = 0x80A5D79C; // type:func -BgSpot08Iceblock_SetupFloatOrbitingTwins = 0x80A5D7FC; // type:func -BgSpot08Iceblock_FloatOrbitingTwins = 0x80A5D820; // type:func -BgSpot08Iceblock_SetupNoAction = 0x80A5D8F8; // type:func -BgSpot08Iceblock_Update = 0x80A5D918; // type:func -BgSpot08Iceblock_Draw = 0x80A5D9B4; // type:func -ItemEtcetera_SetupAction = 0x80A5DD70; // type:func -ItemEtcetera_Init = 0x80A5DD7C; // type:func -ItemEtcetera_Destroy = 0x80A5DEFC; // type:func -ItemEtcetera_WaitForObject = 0x80A5DF0C; // type:func -func_80B85824 = 0x80A5DF64; // type:func -func_80B858B4 = 0x80A5DFFC; // type:func -ItemEtcetera_SpawnSparkles = 0x80A5E0DC; // type:func -ItemEtcetera_MoveFireArrowDown = 0x80A5E1EC; // type:func -func_80B85B28 = 0x80A5E27C; // type:func -ItemEtcetera_UpdateFireArrow = 0x80A5E2C4; // type:func -ItemEtcetera_Update = 0x80A5E344; // type:func -ItemEtcetera_DrawThroughLens = 0x80A5E368; // type:func -ItemEtcetera_Draw = 0x80A5E3C0; // type:func -ArrowFire_SetupAction = 0x80A5E640; // type:func -ArrowFire_Init = 0x80A5E64C; // type:func -ArrowFire_Destroy = 0x80A5E6C8; // type:func -ArrowFire_Charge = 0x80A5E6EC; // type:func -func_80865ECC = 0x80A5E7E0; // type:func -ArrowFire_Hit = 0x80A5E838; // type:func -ArrowFire_Fly = 0x80A5EA04; // type:func -ArrowFire_Update = 0x80A5EB58; // type:func -ArrowFire_Draw = 0x80A5EBAC; // type:func -ArrowIce_SetupAction = 0x80A60520; // type:func -ArrowIce_Init = 0x80A6052C; // type:func -ArrowIce_Destroy = 0x80A605A8; // type:func -ArrowIce_Charge = 0x80A605CC; // type:func -func_80867E8C = 0x80A606C0; // type:func -ArrowIce_Hit = 0x80A60718; // type:func -ArrowIce_Fly = 0x80A608E4; // type:func -ArrowIce_Update = 0x80A60A38; // type:func -ArrowIce_Draw = 0x80A60A8C; // type:func -ArrowLight_SetupAction = 0x80A62420; // type:func -ArrowLight_Init = 0x80A6242C; // type:func -ArrowLight_Destroy = 0x80A624A8; // type:func -ArrowLight_Charge = 0x80A624CC; // type:func -func_80869E6C = 0x80A625C0; // type:func -ArrowLight_Hit = 0x80A62618; // type:func -ArrowLight_Fly = 0x80A627E4; // type:func -ArrowLight_Update = 0x80A62938; // type:func -ArrowLight_Draw = 0x80A6298C; // type:func -ObjKibako_SpawnCollectible = 0x80A64330; // type:func -ObjKibako_ApplyGravity = 0x80A64390; // type:func -ObjKibako_InitCollider = 0x80A643C4; // type:func -ObjKibako_Init = 0x80A6441C; // type:func -ObjKibako_Destroy = 0x80A64494; // type:func -ObjKibako_AirBreak = 0x80A644C0; // type:func -ObjKibako_WaterBreak = 0x80A64740; // type:func -ObjKibako_SetupIdle = 0x80A649C0; // type:func -ObjKibako_Idle = 0x80A649DC; // type:func -ObjKibako_SetupHeld = 0x80A64BD8; // type:func -ObjKibako_Held = 0x80A64C0C; // type:func -ObjKibako_SetupThrown = 0x80A64CD8; // type:func -ObjKibako_Thrown = 0x80A64D38; // type:func -ObjKibako_Update = 0x80A64E74; // type:func -ObjKibako_Draw = 0x80A64E98; // type:func -ObjTsubo_SpawnCollectible = 0x80A65030; // type:func -ObjTsubo_ApplyGravity = 0x80A65090; // type:func -ObjTsubo_SnapToFloor = 0x80A650C4; // type:func -ObjTsubo_InitCollider = 0x80A65160; // type:func -ObjTsubo_Init = 0x80A651B8; // type:func -ObjTsubo_Destroy = 0x80A65288; // type:func -ObjTsubo_AirBreak = 0x80A652B4; // type:func -ObjTsubo_WaterBreak = 0x80A6553C; // type:func -ObjTsubo_SetupWaitForObject = 0x80A657D4; // type:func -ObjTsubo_WaitForObject = 0x80A657E8; // type:func -ObjTsubo_SetupIdle = 0x80A6585C; // type:func -ObjTsubo_Idle = 0x80A65870; // type:func -ObjTsubo_SetupLiftedUp = 0x80A65A80; // type:func -ObjTsubo_LiftedUp = 0x80A65AC4; // type:func -ObjTsubo_SetupThrown = 0x80A65B4C; // type:func -ObjTsubo_Thrown = 0x80A65C14; // type:func -ObjTsubo_Update = 0x80A65DA8; // type:func -ObjTsubo_Draw = 0x80A65DCC; // type:func -EnWonderItem_Destroy = 0x80A66020; // type:func -EnWonderItem_DropCollectible = 0x80A66064; // type:func -EnWonderItem_Init = 0x80A661C0; // type:func -EnWonderItem_MultitagFree = 0x80A6650C; // type:func -EnWonderItem_ProximityDrop = 0x80A66654; // type:func -EnWonderItem_InteractSwitch = 0x80A666BC; // type:func -EnWonderItem_ProximitySwitch = 0x80A666F0; // type:func -EnWonderItem_MultitagOrdered = 0x80A6677C; // type:func -EnWonderItem_BombSoldier = 0x80A668D8; // type:func -EnWonderItem_RollDrop = 0x80A66968; // type:func -EnWonderItem_Update = 0x80A669DC; // type:func -EnIk_Destroy = 0x80A66D50; // type:func -EnIk_SetupAction = 0x80A66DD0; // type:func -EnIk_InitImpl = 0x80A66DDC; // type:func -EnIk_HandleBlocking = 0x80A67028; // type:func -EnIk_FindBreakableProp = 0x80A670B8; // type:func -EnIk_SetupStandUp = 0x80A67158; // type:func -EnIk_StandUp = 0x80A67204; // type:func -EnIk_SetupIdle = 0x80A672E4; // type:func -EnIk_Idle = 0x80A67374; // type:func -EnIk_SetupWalkOrRun = 0x80A674F4; // type:func -EnIk_WalkOrRun = 0x80A675EC; // type:func -EnIk_SetupVerticalAttack = 0x80A67874; // type:func -EnIk_VerticalAttack = 0x80A67904; // type:func -EnIk_SetupPullOutAxe = 0x80A67AB8; // type:func -EnIk_PullOutAxe = 0x80A67B58; // type:func -EnIk_SetupDoubleHorizontalAttack = 0x80A67C14; // type:func -EnIk_DoubleHorizontalAttack = 0x80A67CAC; // type:func -EnIk_SetupRecoverFromHorizontalAttack = 0x80A67E1C; // type:func -EnIk_RecoverFromHorizontalAttack = 0x80A67EA8; // type:func -EnIk_SetupSingleHorizontalAttack = 0x80A67EF0; // type:func -EnIk_SingleHorizontalAttack = 0x80A67F80; // type:func -EnIk_SetupStopAndBlock = 0x80A68040; // type:func -EnIk_StopAndBlock = 0x80A680CC; // type:func -EnIk_SetupReactToAttack = 0x80A681E0; // type:func -EnIk_ReactToAttack = 0x80A68300; // type:func -EnIk_SetupDie = 0x80A683DC; // type:func -EnIk_Die = 0x80A68488; // type:func -EnIk_UpdateDamage = 0x80A68684; // type:func -EnIk_UpdateEnemy = 0x80A689F0; // type:func -EnIk_SetPrimEnvColors = 0x80A68C08; // type:func -EnIk_OverrideLimbDrawEnemy = 0x80A68CC0; // type:func -EnIk_PostLimbDrawEnemy = 0x80A68D80; // type:func -EnIk_DrawEnemy = 0x80A69194; // type:func -EnIk_StartMinibossBgm = 0x80A695CC; // type:func -EnIk_UpdateAction2Sfx = 0x80A695EC; // type:func -EnIk_PlayAxeSpawnSfx = 0x80A697B8; // type:func -EnIk_SpawnAxeSmoke = 0x80A69808; // type:func -EnIk_UpdateBgCheckInfo = 0x80A69A14; // type:func -EnIk_UpdateSkelAnime = 0x80A69A5C; // type:func -EnIk_GetCue = 0x80A69A80; // type:func -EnIk_SetStartPosRotFromCue = 0x80A69AA8; // type:func -EnIk_GetAnimCurFrame = 0x80A69B28; // type:func -EnIk_SetupCsAction0 = 0x80A69B34; // type:func -EnIk_SetupCsAction1 = 0x80A69B48; // type:func -EnIk_SetupCsAction2 = 0x80A69BD4; // type:func -EnIk_HandleEnemyChange = 0x80A69C54; // type:func -EnIk_PlayArmorFallSfx = 0x80A69C94; // type:func -EnIk_PlayDeathSfx = 0x80A69CDC; // type:func -EnIk_SetupCsAction3 = 0x80A69D50; // type:func -EnIk_SetupCsAction4 = 0x80A69E28; // type:func -EnIk_SetupCsAction5 = 0x80A69E64; // type:func -EnIk_CsAction3 = 0x80A69E80; // type:func -EnIk_CsAction4 = 0x80A69EB8; // type:func -EnIk_CsAction5 = 0x80A69EF8; // type:func -EnIk_OverrideLimbDrawDefeat = 0x80A69F34; // type:func -EnIk_PostLimbDrawDefeat = 0x80A69FA0; // type:func -EnIk_CsDrawDefeat = 0x80A6A1EC; // type:func -EnIk_HandleCsCues = 0x80A6A350; // type:func -EnIk_CsAction0 = 0x80A6A44C; // type:func -EnIk_CsAction1 = 0x80A6A46C; // type:func -EnIk_CsAction2 = 0x80A6A4A4; // type:func -EnIk_UpdateCutscene = 0x80A6A508; // type:func -EnIk_OverrideLimbDrawIntro = 0x80A6A550; // type:func -EnIk_PostLimbDrawIntro = 0x80A6A5D4; // type:func -EnIk_CsDrawNothing = 0x80A6A7C0; // type:func -EnIk_CsDrawIntro = 0x80A6A7D0; // type:func -EnIk_DrawCutscene = 0x80A6A934; // type:func -EnIk_CsInit = 0x80A6A97C; // type:func -EnIk_ChangeToEnemy = 0x80A6A9EC; // type:func -EnIk_StartDefeatCutscene = 0x80A6AA58; // type:func -EnIk_Init = 0x80A6AAEC; // type:func -DemoIk_Destroy = 0x80A6B3B0; // type:func -DemoIk_BgCheck = 0x80A6B3C0; // type:func -DemoIk_UpdateSkelAnime = 0x80A6B408; // type:func -DemoIk_GetCue = 0x80A6B42C; // type:func -DemoIk_CheckForCue = 0x80A6B454; // type:func -DemoIk_SetMove = 0x80A6B494; // type:func -DemoIk_EndMove = 0x80A6B4D4; // type:func -DemoIk_GetCurFrame = 0x80A6B4E8; // type:func -DemoIk_SetColors = 0x80A6B4F4; // type:func -DemoIk_GetCueChannel = 0x80A6B598; // type:func -DemoIk_Type1PlaySfx = 0x80A6B5C4; // type:func -DemoIk_SpawnDeadDb = 0x80A6B6C4; // type:func -DemoIk_MoveToStartPos = 0x80A6B868; // type:func -DemoIk_Type1Init = 0x80A6B8E8; // type:func -func_8098393C = 0x80A6BA04; // type:func -func_8098394C = 0x80A6BA18; // type:func -func_809839AC = 0x80A6BA7C; // type:func -func_809839D0 = 0x80A6BAA4; // type:func -DemoIk_Type1Action0 = 0x80A6BB64; // type:func -DemoIk_Type1Action1 = 0x80A6BB84; // type:func -DemoIk_Type1Action2 = 0x80A6BBBC; // type:func -DemoIk_Type1PostLimbDraw = 0x80A6BC24; // type:func -DemoIk_Type1Draw = 0x80A6BD20; // type:func -DemoIk_Type2Init = 0x80A6BE78; // type:func -DemoIk_Type2PlaySfxOnFrame = 0x80A6BF80; // type:func -DemoIk_Type2PlaySfx = 0x80A6BFE0; // type:func -func_80983FDC = 0x80A6C030; // type:func -func_80983FEC = 0x80A6C044; // type:func -func_8098402C = 0x80A6C084; // type:func -func_80984048 = 0x80A6C0A4; // type:func -DemoIk_Type2Action0 = 0x80A6C16C; // type:func -DemoIk_Type2Action1 = 0x80A6C18C; // type:func -DemoIk_Type2Action2 = 0x80A6C1AC; // type:func -DemoIk_Type2OverrideLimbDraw = 0x80A6C1E8; // type:func -DemoIk_Type2PostLimbDraw = 0x80A6C244; // type:func -DemoIk_Type2Draw = 0x80A6C414; // type:func -DemoIk_Update = 0x80A6C578; // type:func -DemoIk_DrawNothing = 0x80A6C5C0; // type:func -DemoIk_Draw = 0x80A6C5D0; // type:func -DemoIk_Init = 0x80A6C618; // type:func -EnSkj_ChangeAnim = 0x80A6C8C0; // type:func -EnSkj_SetupAction = 0x80A6C948; // type:func -EnSkj_CalculateCenter = 0x80A6C9A0; // type:func -EnSkj_SetNaviId = 0x80A6CA38; // type:func -EnSkj_Init = 0x80A6CABC; // type:func -EnSkj_Destroy = 0x80A6CE08; // type:func -EnSkj_RangeCheck = 0x80A6CE34; // type:func -EnSkj_GetItemXzRange = 0x80A6CEB0; // type:func -EnSkj_GetItemYRange = 0x80A6CEF8; // type:func -EnSkj_ShootNeedle = 0x80A6CF24; // type:func -EnSkj_SpawnBlood = 0x80A6D03C; // type:func -EnSkj_CollisionCheck = 0x80A6D194; // type:func -func_80AFEDF8 = 0x80A6D350; // type:func -EnSkj_Backflip = 0x80A6D3DC; // type:func -EnSkj_Fade = 0x80A6D424; // type:func -EnSkj_SetupWaitToShootNeedle = 0x80A6D4B4; // type:func -EnSkj_WaitToShootNeedle = 0x80A6D4F0; // type:func -EnSkj_SetupResetFight = 0x80A6D590; // type:func -EnSkj_SariasSongKidIdle = 0x80A6D5D4; // type:func -EnSkj_SetupDie = 0x80A6D6CC; // type:func -EnSkj_WaitForDeathAnim = 0x80A6D700; // type:func -func_80AFF1F0 = 0x80A6D754; // type:func -EnSkj_PickNextFightAction = 0x80A6D788; // type:func -func_80AFF2A0 = 0x80A6D808; // type:func -EnSkj_WaitForLandAnim = 0x80A6D84C; // type:func -func_80AFF334 = 0x80A6D8A0; // type:func -EnSkj_ResetFight = 0x80A6D8EC; // type:func -EnSkj_SetupStand = 0x80A6D93C; // type:func -EnSkj_Fight = 0x80A6D990; // type:func -EnSkj_SetupNeedleRecover = 0x80A6DB5C; // type:func -EnSkj_NeedleRecover = 0x80A6DB90; // type:func -EnSkj_SetupSpawnDeathEffect = 0x80A6DBCC; // type:func -EnSkj_SpawnDeathEffect = 0x80A6DBF4; // type:func -EnSkj_SetupWaitInRange = 0x80A6DD0C; // type:func -EnSkj_WaitInRange = 0x80A6DD44; // type:func -EnSkj_SetupWaitForSong = 0x80A6DF58; // type:func -EnSkj_WaitForSong = 0x80A6DF7C; // type:func -EnSkj_SetupAfterSong = 0x80A6E250; // type:func -EnSkj_AfterSong = 0x80A6E284; // type:func -EnSkj_SetupTalk = 0x80A6E2D8; // type:func -EnSkj_SariaSongTalk = 0x80A6E2F8; // type:func -func_80AFFE24 = 0x80A6E39C; // type:func -func_80AFFE44 = 0x80A6E3BC; // type:func -EnSkj_SetupPostSariasSong = 0x80A6E434; // type:func -EnSkj_ChangeModeAfterSong = 0x80A6E454; // type:func -EnSkj_SetupMaskTrade = 0x80A6E4BC; // type:func -EnSkj_StartMaskTrade = 0x80A6E4DC; // type:func -EnSkj_JumpFromStump = 0x80A6E544; // type:func -EnSkj_WaitForLanding = 0x80A6E5A8; // type:func -EnSkj_SetupWaitForLandAnimFinish = 0x80A6E5F8; // type:func -EnSkj_WaitForLandAnimFinish = 0x80A6E62C; // type:func -EnSkj_SetupWalkToPlayer = 0x80A6E680; // type:func -EnSkj_WalkToPlayer = 0x80A6E6C4; // type:func -EnSkj_SetupAskForMask = 0x80A6E760; // type:func -EnSkj_AskForMask = 0x80A6E7A8; // type:func -EnSkj_SetupTakeMask = 0x80A6E840; // type:func -EnSkj_TakeMask = 0x80A6E878; // type:func -EnSkj_SetupWaitForMaskTextClear = 0x80A6E910; // type:func -EnSkj_WaitForMaskTextClear = 0x80A6E930; // type:func -EnSkj_SetupWrongSong = 0x80A6E998; // type:func -EnSkj_WrongSong = 0x80A6E9D0; // type:func -EnSkj_SetupWaitForTextClear = 0x80A6EA24; // type:func -EnSkj_SariasSongWaitForTextClear = 0x80A6EA44; // type:func -EnSkj_OcarinaGameSetupWaitForPlayer = 0x80A6EABC; // type:func -EnSkj_OcarinaGameWaitForPlayer = 0x80A6EAFC; // type:func -EnSkj_IsLeavingGame = 0x80A6EB38; // type:func -EnSkj_SetupIdle = 0x80A6EB88; // type:func -EnSkj_Appear = 0x80A6EBBC; // type:func -EnSkj_OcarinaGameIdle = 0x80A6EBE4; // type:func -EnSkj_SetupPlayOcarinaGame = 0x80A6EC30; // type:func -EnSkj_PlayOcarinaGame = 0x80A6EC64; // type:func -EnSkj_SetupLeaveOcarinaGame = 0x80A6ECB0; // type:func -EnSkj_LeaveOcarinaGame = 0x80A6ECF8; // type:func -EnSkj_Update = 0x80A6ED40; // type:func -EnSkj_SariasSongShortStumpUpdate = 0x80A6EF24; // type:func -EnSkj_TurnPlayer = 0x80A6EF4C; // type:func -EnSkj_SetupWaitForOcarina = 0x80A6EF98; // type:func -EnSkj_WaitForOcarina = 0x80A6F054; // type:func -EnSkj_StartOcarinaMinigame = 0x80A6F0FC; // type:func -EnSkj_WaitForPlayback = 0x80A6F188; // type:func -EnSkj_FailedMiniGame = 0x80A6F3F8; // type:func -EnSkj_WaitForNextRound = 0x80A6F438; // type:func -EnSkj_OfferNextRound = 0x80A6F488; // type:func -EnSkj_WaitForOfferResponse = 0x80A6F4C4; // type:func -EnSkj_WonOcarinaMiniGame = 0x80A6F56C; // type:func -EnSkj_WaitToGiveReward = 0x80A6F5AC; // type:func -EnSkj_GiveOcarinaGameReward = 0x80A6F634; // type:func -EnSkj_FinishOcarinaGameRound = 0x80A6F6A8; // type:func -EnSkj_CleanupOcarinaGame = 0x80A6F744; // type:func -EnSkj_OcarinaMinigameShortStumpUpdate = 0x80A6F7C0; // type:func -EnSkj_OverrideLimbDraw = 0x80A6F844; // type:func -EnSkj_PostLimbDraw = 0x80A6F860; // type:func -EnSkj_TranslucentDL = 0x80A6F930; // type:func -EnSkj_OpaqueDL = 0x80A6F988; // type:func -EnSkj_Draw = 0x80A6F9C0; // type:func -EnSkjneedle_Init = 0x80A70210; // type:func -EnSkjneedle_Destroy = 0x80A702A8; // type:func -EnSkjNeedle_CollisionCheck = 0x80A702D4; // type:func -EnSkjneedle_Update = 0x80A70304; // type:func -EnSkjneedle_Draw = 0x80A703F4; // type:func -EnGSwitch_Init = 0x80A70520; // type:func -EnGSwitch_Destroy = 0x80A707B8; // type:func -EnGSwitch_Break = 0x80A707E4; // type:func -EnGSwitch_WaitForObject = 0x80A7098C; // type:func -EnGSwitch_SilverRupeeTracker = 0x80A70A24; // type:func -EnGSwitch_SilverRupeeIdle = 0x80A70B08; // type:func -EnGSwitch_SilverRupeeCollected = 0x80A70BF0; // type:func -EnGSwitch_GalleryRupee = 0x80A70CD4; // type:func -EnGSwitch_ArcheryPot = 0x80A71074; // type:func -EnGSwitch_Kill = 0x80A7135C; // type:func -EnGSwitch_Update = 0x80A7138C; // type:func -EnGSwitch_DrawPot = 0x80A714C0; // type:func -EnGSwitch_DrawRupee = 0x80A71554; // type:func -EnGSwitch_SpawnEffects = 0x80A71684; // type:func -EnGSwitch_UpdateEffects = 0x80A71798; // type:func -EnGSwitch_DrawEffects = 0x80A71958; // type:func -DemoExt_Destroy = 0x80A71D40; // type:func -DemoExt_Init = 0x80A71D50; // type:func -DemoExt_PlayVortexSFX = 0x80A71E08; // type:func -DemoExt_GetCue = 0x80A71E90; // type:func -DemoExt_SetupWait = 0x80A71EB8; // type:func -DemoExt_SetupMaintainVortex = 0x80A71EC8; // type:func -DemoExt_SetupDispellVortex = 0x80A71F54; // type:func -DemoExt_FinishClosing = 0x80A71F6C; // type:func -DemoExt_HandleCues = 0x80A71FD8; // type:func -DemoExt_SetScrollAndRotation = 0x80A72084; // type:func -DemoExt_SetColorsAndScales = 0x80A720D4; // type:func -DemoExt_Wait = 0x80A72210; // type:func -DemoExt_MaintainVortex = 0x80A72230; // type:func -DemoExt_DispellVortex = 0x80A7226C; // type:func -DemoExt_Update = 0x80A722AC; // type:func -DemoExt_DrawNothing = 0x80A722F4; // type:func -DemoExt_DrawVortex = 0x80A72304; // type:func -DemoExt_Draw = 0x80A72584; // type:func -DemoShd_SetupAction = 0x80A72690; // type:func -DemoShd_Init = 0x80A7269C; // type:func -DemoShd_Destroy = 0x80A726EC; // type:func -func_80991298 = 0x80A726FC; // type:func -DemoShd_Update = 0x80A72854; // type:func -DemoShd_Draw = 0x80A72878; // type:func -EnDns_Init = 0x80A74AA0; // type:func -EnDns_Destroy = 0x80A74C14; // type:func -EnDns_ChangeAnim = 0x80A74C40; // type:func -EnDns_CanBuyDekuNuts = 0x80A74CC8; // type:func -EnDns_CanBuyDekuSticks = 0x80A74D80; // type:func -EnDns_CanBuyPrice = 0x80A74E38; // type:func -EnDns_CanBuyDekuSeeds = 0x80A74E68; // type:func -EnDns_CanBuyDekuShield = 0x80A74F30; // type:func -EnDns_CanBuyBombs = 0x80A74F84; // type:func -EnDns_CanBuyArrows = 0x80A75024; // type:func -EnDns_CanBuyBottle = 0x80A750D4; // type:func -EnDns_PayPrice = 0x80A7512C; // type:func -EnDns_PayForDekuNuts = 0x80A75160; // type:func -EnDns_PayForHeartPiece = 0x80A75194; // type:func -EnDns_PayForBombs = 0x80A751DC; // type:func -EnDns_PayForArrows = 0x80A75210; // type:func -EnDns_PayForDekuStickUpgrade = 0x80A75244; // type:func -EnDns_PayForDekuNutUpgrade = 0x80A7528C; // type:func -EnDns_SetupIdle = 0x80A752D4; // type:func -EnDns_Idle = 0x80A75318; // type:func -EnDns_Talk = 0x80A753EC; // type:func -EnDns_OfferSaleItem = 0x80A75524; // type:func -EnDns_SetupSale = 0x80A7563C; // type:func -EnDns_Sale = 0x80A756A8; // type:func -EnDns_SetupBurrow = 0x80A756F4; // type:func -EnDns_SetupNoSaleBurrow = 0x80A757E8; // type:func -EnDns_Burrow = 0x80A75860; // type:func -EnDns_PostBurrow = 0x80A758DC; // type:func -EnDns_Update = 0x80A759E0; // type:func -EnDns_Draw = 0x80A75AD0; // type:func -ElfMsg_SetupAction = 0x80A75E30; // type:func -ElfMsg_KillCheck = 0x80A75E3C; // type:func -ElfMsg_Init = 0x80A75F74; // type:func -ElfMsg_Destroy = 0x80A76068; // type:func -ElfMsg_GetMessageId = 0x80A76078; // type:func -ElfMsg_CallNaviCuboid = 0x80A760A4; // type:func -ElfMsg_WithinXZDistance = 0x80A76174; // type:func -ElfMsg_CallNaviCylinder = 0x80A761C8; // type:func -ElfMsg_Update = 0x80A76290; // type:func -EnHonotrap_FlameCollisionCheck = 0x80A76420; // type:func -EnHonotrap_GetNormal = 0x80A764B4; // type:func -EnHonotrap_InitEye = 0x80A76548; // type:func -EnHonotrap_InitFlame = 0x80A766E4; // type:func -EnHonotrap_Init = 0x80A76824; // type:func -EnHonotrap_Destroy = 0x80A7687C; // type:func -EnHonotrap_SetupEyeIdle = 0x80A768C8; // type:func -EnHonotrap_EyeIdle = 0x80A768E4; // type:func -EnHonotrap_SetupEyeOpen = 0x80A7699C; // type:func -EnHonotrap_EyeOpen = 0x80A769F0; // type:func -EnHonotrap_SetupEyeAttack = 0x80A76AC0; // type:func -EnHonotrap_EyeAttack = 0x80A76AD8; // type:func -EnHonotrap_SetupEyeClose = 0x80A76B08; // type:func -EnHonotrap_EyeClose = 0x80A76B1C; // type:func -EnHonotrap_SetupFlameGrow = 0x80A76B68; // type:func -EnHonotrap_FlameGrow = 0x80A76B7C; // type:func -EnHonotrap_SetupFlameDrop = 0x80A76C10; // type:func -EnHonotrap_FlameDrop = 0x80A76C78; // type:func -EnHonotrap_SetupFlameMove = 0x80A76DBC; // type:func -EnHonotrap_FlameMove = 0x80A76E48; // type:func -EnHonotrap_SetupFlameChase = 0x80A77014; // type:func -EnHonotrap_FlameChase = 0x80A77054; // type:func -EnHonotrap_SetupFlameVanish = 0x80A77208; // type:func -EnHonotrap_FlameVanish = 0x80A7721C; // type:func -EnHonotrap_Update = 0x80A772AC; // type:func -EnHonotrap_DrawEye = 0x80A773F4; // type:func -EnHonotrap_DrawFlame = 0x80A774E4; // type:func -EnHonotrap_Draw = 0x80A7767C; // type:func -EnTuboTrap_Init = 0x80A77980; // type:func -EnTuboTrap_Destroy = 0x80A77A04; // type:func -EnTuboTrap_DropCollectible = 0x80A77A30; // type:func -EnTuboTrap_SpawnEffectsOnLand = 0x80A77A90; // type:func -EnTuboTrap_SpawnEffectsInWater = 0x80A77D04; // type:func -EnTuboTrap_HandleImpact = 0x80A77F84; // type:func -EnTuboTrap_WaitForProximity = 0x80A781AC; // type:func -EnTuboTrap_Levitate = 0x80A782B8; // type:func -EnTuboTrap_Fly = 0x80A78344; // type:func -EnTuboTrap_Update = 0x80A78414; // type:func -EnTuboTrap_Draw = 0x80A784D4; // type:func -ObjIcePoly_Init = 0x80A78620; // type:func -ObjIcePoly_Destroy = 0x80A787E0; // type:func -ObjIcePoly_Idle = 0x80A78830; // type:func -ObjIcePoly_Melt = 0x80A78A60; // type:func -ObjIcePoly_Update = 0x80A78D18; // type:func -ObjIcePoly_Draw = 0x80A78D3C; // type:func -BgSpot03Taki_ApplyOpeningAlpha = 0x80A78FD0; // type:func -BgSpot03Taki_Init = 0x80A7930C; // type:func -BgSpot03Taki_Destroy = 0x80A793BC; // type:func -BgSpot03Taki_HandleWaterfallState = 0x80A793F0; // type:func -BgSpot03Taki_Update = 0x80A795C4; // type:func -BgSpot03Taki_Draw = 0x80A795E8; // type:func -BgSpot07Taki_Init = 0x80A798F0; // type:func -BgSpot07Taki_Destroy = 0x80A7999C; // type:func -BgSpot07Taki_DoNothing = 0x80A799D0; // type:func -BgSpot07Taki_Update = 0x80A799E0; // type:func -BgSpot07Taki_Draw = 0x80A79A04; // type:func -EnFz_Init = 0x80A79EE0; // type:func -EnFz_Destroy = 0x80A7A060; // type:func -EnFz_UpdateTargetPos = 0x80A7A0B0; // type:func -EnFz_ReachedTarget = 0x80A7A1D0; // type:func -EnFz_Damaged = 0x80A7A220; // type:func -EnFz_SpawnIceSmokeHiddenState = 0x80A7A414; // type:func -EnFz_SpawnIceSmokeGrowingState = 0x80A7A420; // type:func -EnFz_SpawnIceSmokeActiveState = 0x80A7A500; // type:func -EnFz_ApplyDamage = 0x80A7A5C4; // type:func -EnFz_SetYawTowardsPlayer = 0x80A7A82C; // type:func -EnFz_SetupDisappear = 0x80A7A86C; // type:func -EnFz_Disappear = 0x80A7A89C; // type:func -EnFz_SetupWait = 0x80A7A91C; // type:func -EnFz_Wait = 0x80A7A95C; // type:func -EnFz_SetupAppear = 0x80A7A9AC; // type:func -EnFz_Appear = 0x80A7A9D8; // type:func -EnFz_SetupAimForMove = 0x80A7AA68; // type:func -EnFz_AimForMove = 0x80A7AAAC; // type:func -EnFz_SetupMoveTowardsPlayer = 0x80A7AAE8; // type:func -EnFz_MoveTowardsPlayer = 0x80A7AB1C; // type:func -EnFz_SetupAimForFreeze = 0x80A7AB58; // type:func -EnFz_AimForFreeze = 0x80A7AB88; // type:func -EnFz_SetupBlowSmoke = 0x80A7ABC4; // type:func -EnFz_BlowSmoke = 0x80A7ABFC; // type:func -EnFz_SetupDespawn = 0x80A7ADE8; // type:func -EnFz_Despawn = 0x80A7AE88; // type:func -EnFz_SetupMelt = 0x80A7AEB8; // type:func -EnFz_Melt = 0x80A7AEFC; // type:func -EnFz_SetupBlowSmokeStationary = 0x80A7AFC4; // type:func -EnFz_BlowSmokeStationary = 0x80A7B008; // type:func -EnFz_Update = 0x80A7B200; // type:func -EnFz_Draw = 0x80A7B390; // type:func -EnFz_SpawnIceSmokeNoFreeze = 0x80A7B54C; // type:func -EnFz_SpawnIceSmokeFreeze = 0x80A7B5F0; // type:func -EnFz_UpdateIceSmoke = 0x80A7B6AC; // type:func -EnFz_DrawEffects = 0x80A7B998; // type:func -EnPoRelay_Init = 0x80A7BEF0; // type:func -EnPoRelay_Destroy = 0x80A7C078; // type:func -EnPoRelay_SetupIdle = 0x80A7C0C0; // type:func -EnPoRelay_Vec3sToVec3f = 0x80A7C0FC; // type:func -EnPoRelay_SetupRace = 0x80A7C140; // type:func -EnPoRelay_SetupEndRace = 0x80A7C208; // type:func -EnPoRelay_CorrectY = 0x80A7C248; // type:func -EnPoRelay_Idle = 0x80A7C2F0; // type:func -EnPoRelay_Talk = 0x80A7C3AC; // type:func -EnPoRelay_Race = 0x80A7C420; // type:func -EnPoRelay_EndRace = 0x80A7C934; // type:func -EnPoRelay_Talk2 = 0x80A7C9F4; // type:func -EnPoRelay_DisappearAndReward = 0x80A7CACC; // type:func -EnPoRelay_Update = 0x80A7CF98; // type:func -EnPoRelay_PostLimbDraw = 0x80A7D08C; // type:func -EnPoRelay_Draw = 0x80A7D280; // type:func -BgRelayObjects_Init = 0x80A7D600; // type:func -BgRelayObjects_Destroy = 0x80A7D840; // type:func -func_808A90F4 = 0x80A7D8AC; // type:func -func_808A91AC = 0x80A7D968; // type:func -func_808A9234 = 0x80A7D9F0; // type:func -BgRelayObjects_DoNothing = 0x80A7DADC; // type:func -func_808A932C = 0x80A7DAEC; // type:func -func_808A939C = 0x80A7DB5C; // type:func -BgRelayObjects_Update = 0x80A7DC30; // type:func -BgRelayObjects_Draw = 0x80A7DC54; // type:func -EnDivingGame_Init = 0x80A7DDB0; // type:func -EnDivingGame_Destroy = 0x80A7DECC; // type:func -EnDivingGame_SpawnRuppy = 0x80A7DF0C; // type:func -EnDivingGame_HasMinigameFinished = 0x80A7E038; // type:func -func_809EDCB0 = 0x80A7E1E4; // type:func -EnDivingGame_Talk = 0x80A7E280; // type:func -EnDivingGame_HandlePlayChoice = 0x80A7E410; // type:func -func_809EE048 = 0x80A7E57C; // type:func -func_809EE0FC = 0x80A7E630; // type:func -func_809EE194 = 0x80A7E6C8; // type:func -EnDivingGame_SetupRupeeThrow = 0x80A7E728; // type:func -EnDivingGame_RupeeThrow = 0x80A7E93C; // type:func -EnDivingGame_SetupUnderwaterViewCs = 0x80A7EBFC; // type:func -func_809EE780 = 0x80A7ECB4; // type:func -func_809EE800 = 0x80A7ED34; // type:func -func_809EE8F0 = 0x80A7EE24; // type:func -func_809EE96C = 0x80A7EEA4; // type:func -func_809EEA00 = 0x80A7EF38; // type:func -func_809EEA90 = 0x80A7EFC8; // type:func -func_809EEAF8 = 0x80A7F034; // type:func -EnDivingGame_Update = 0x80A7F0C4; // type:func -EnDivingGame_EmptyDList = 0x80A7F2F0; // type:func -EnDivingGame_OverrideLimbDraw = 0x80A7F314; // type:func -EnDivingGame_Draw = 0x80A7F474; // type:func -EnKusa_SetupAction = 0x80A7F760; // type:func -EnKusa_SnapToFloor = 0x80A7F770; // type:func -EnKusa_DropCollectible = 0x80A7F814; // type:func -EnKusa_UpdateVelY = 0x80A7F8E0; // type:func -EnKusa_RandScaleVecToZero = 0x80A7F914; // type:func -EnKusa_SetScaleSmall = 0x80A7F998; // type:func -EnKusa_SpawnFragments = 0x80A7F9BC; // type:func -EnKusa_SpawnBugs = 0x80A7FD14; // type:func -EnKusa_InitCollider = 0x80A7FDD0; // type:func -EnKusa_Init = 0x80A7FE28; // type:func -EnKusa_Destroy = 0x80A7FF50; // type:func -EnKusa_SetupWaitForObject = 0x80A7FF7C; // type:func -EnKusa_WaitForObject = 0x80A7FFA0; // type:func -EnKusa_SetupMain = 0x80A80030; // type:func -EnKusa_Main = 0x80A80068; // type:func -EnKusa_SetupLiftedUp = 0x80A80230; // type:func -EnKusa_LiftedUp = 0x80A8026C; // type:func -EnKusa_SetupFall = 0x80A8034C; // type:func -EnKusa_Fall = 0x80A803B8; // type:func -EnKusa_SetupCut = 0x80A80648; // type:func -EnKusa_CutWaitRegrow = 0x80A80698; // type:func -EnKusa_DoNothing = 0x80A806CC; // type:func -EnKusa_SetupUprootedWaitRegrow = 0x80A806DC; // type:func -EnKusa_UprootedWaitRegrow = 0x80A80748; // type:func -EnKusa_SetupRegrow = 0x80A807AC; // type:func -EnKusa_Regrow = 0x80A80804; // type:func -EnKusa_Update = 0x80A8089C; // type:func -EnKusa_Draw = 0x80A80900; // type:func -ObjBean_InitCollider = 0x80A80C40; // type:func -ObjBean_InitDynaPoly = 0x80A80C98; // type:func -ObjBean_FindFloor = 0x80A80CF0; // type:func -func_80B8EBC8 = 0x80A80D58; // type:func -ObjBean_UpdatePosition = 0x80A80D78; // type:func -func_80B8EDF4 = 0x80A80F88; // type:func -func_80B8EE24 = 0x80A80FB8; // type:func -ObjBean_Move = 0x80A81090; // type:func -ObjBean_SetDrawMode = 0x80A810C0; // type:func -ObjBean_SetupPathCount = 0x80A810E4; // type:func -ObjBean_SetupPath = 0x80A81124; // type:func -ObjBean_FollowPath = 0x80A811A0; // type:func -ObjBean_CheckForHorseTrample = 0x80A81448; // type:func -ObjBean_Break = 0x80A814D8; // type:func -ObjBean_UpdateLeaves = 0x80A81750; // type:func -ObjBean_SetupLeavesStill = 0x80A8180C; // type:func -ObjBean_LeavesStill = 0x80A8187C; // type:func -ObjBean_SetupShakeLeaves = 0x80A818C0; // type:func -ObjBean_ShakeLeaves = 0x80A81938; // type:func -ObjBean_SetupShakeLeavesFast = 0x80A819BC; // type:func -ObjBean_ShakeLeavesFast = 0x80A81A00; // type:func -ObjBean_SetupGrow = 0x80A81A88; // type:func -ObjBean_Grow = 0x80A81A9C; // type:func -ObjBean_SetupFlattenLeaves = 0x80A81B00; // type:func -ObjBean_FlattenLeaves = 0x80A81B1C; // type:func -ObjBean_SetupGrown = 0x80A81B98; // type:func -ObjBean_Grown = 0x80A81BDC; // type:func -ObjBean_Init = 0x80A81C38; // type:func -ObjBean_Destroy = 0x80A81DF4; // type:func -ObjBean_SetupWaitForBean = 0x80A81E70; // type:func -ObjBean_WaitForBean = 0x80A81EA8; // type:func -func_80B8FE00 = 0x80A81F24; // type:func -func_80B8FE3C = 0x80A81F5C; // type:func -func_80B8FE6C = 0x80A81F8C; // type:func -func_80B8FEAC = 0x80A81FCC; // type:func -func_80B8FF50 = 0x80A82070; // type:func -func_80B8FF8C = 0x80A820A8; // type:func -func_80B90010 = 0x80A8212C; // type:func -func_80B90050 = 0x80A82168; // type:func -ObjBean_SetupWaitForWater = 0x80A82228; // type:func -ObjBean_WaitForWater = 0x80A82270; // type:func -ObjBean_SetupGrowWaterPhase1 = 0x80A82368; // type:func -ObjBean_GrowWaterPhase1 = 0x80A823A8; // type:func -ObjBean_SetupGrowWaterPhase2 = 0x80A823EC; // type:func -ObjBean_GrowWaterPhase2 = 0x80A82428; // type:func -ObjBean_SetupGrowWaterPhase3 = 0x80A824D8; // type:func -ObjBean_GrowWaterPhase3 = 0x80A82510; // type:func -ObjBean_SetupGrowWaterPhase4 = 0x80A82624; // type:func -ObjBean_GrowWaterPhase4 = 0x80A8265C; // type:func -ObjBean_SetupGrowWaterPhase5 = 0x80A826F8; // type:func -ObjBean_GrowWaterPhase5 = 0x80A82730; // type:func -ObjBean_SetupWaitForPlayer = 0x80A82788; // type:func -ObjBean_WaitForPlayer = 0x80A827B4; // type:func -ObjBean_SetupFly = 0x80A82828; // type:func -ObjBean_Fly = 0x80A8286C; // type:func -ObjBean_SetupWaitForStepOff = 0x80A8299C; // type:func -ObjBean_WaitForStepOff = 0x80A829C8; // type:func -func_80B908EC = 0x80A82A08; // type:func -func_80B90918 = 0x80A82A34; // type:func -func_80B90970 = 0x80A82A90; // type:func -func_80B909B0 = 0x80A82AD0; // type:func -func_80B909F8 = 0x80A82B18; // type:func -func_80B90A34 = 0x80A82B50; // type:func -ObjBean_Update = 0x80A82BF0; // type:func -ObjBean_DrawSoftSoilSpot = 0x80A82D80; // type:func -ObjBean_DrawBeanstalk = 0x80A82E08; // type:func -ObjBean_Draw = 0x80A82E94; // type:func -ObjBombiwa_InitCollision = 0x80A833D0; // type:func -ObjBombiwa_Init = 0x80A83428; // type:func -ObjBombiwa_Destroy = 0x80A834F4; // type:func -ObjBombiwa_Break = 0x80A83520; // type:func -ObjBombiwa_Update = 0x80A83720; // type:func -ObjBombiwa_Draw = 0x80A83830; // type:func -ObjSwitch_RotateY = 0x80A83940; // type:func -ObjSwitch_InitDynaPoly = 0x80A839C0; // type:func -ObjSwitch_InitJntSphCollider = 0x80A83A18; // type:func -ObjSwitch_InitTrisCollider = 0x80A83AB4; // type:func -ObjSwitch_SpawnIce = 0x80A83BD4; // type:func -ObjSwitch_SetOn = 0x80A83C48; // type:func -ObjSwitch_SetOff = 0x80A83CF4; // type:func -ObjSwitch_UpdateTwoTexScrollXY = 0x80A83D7C; // type:func -ObjSwitch_Init = 0x80A83DC4; // type:func -ObjSwitch_Destroy = 0x80A8405C; // type:func -ObjSwitch_FloorUpInit = 0x80A84100; // type:func -ObjSwitch_FloorUp = 0x80A84120; // type:func -ObjSwitch_FloorPressInit = 0x80A84290; // type:func -ObjSwitch_FloorPress = 0x80A842AC; // type:func -ObjSwitch_FloorDownInit = 0x80A8436C; // type:func -ObjSwitch_FloorDown = 0x80A84394; // type:func -ObjSwitch_FloorReleaseInit = 0x80A844E0; // type:func -ObjSwitch_FloorRelease = 0x80A844FC; // type:func -ObjSwitch_EyeIsHit = 0x80A845E0; // type:func -ObjSwitch_EyeFrozenInit = 0x80A84650; // type:func -ObjSwitch_EyeInit = 0x80A84664; // type:func -ObjSwitch_EyeOpenInit = 0x80A846BC; // type:func -ObjSwitch_EyeOpen = 0x80A846D4; // type:func -ObjSwitch_EyeClosingInit = 0x80A84740; // type:func -ObjSwitch_EyeClosing = 0x80A8475C; // type:func -ObjSwitch_EyeClosedInit = 0x80A847D8; // type:func -ObjSwitch_EyeClosed = 0x80A847F4; // type:func -ObjSwitch_EyeOpeningInit = 0x80A848B4; // type:func -ObjSwitch_EyeOpening = 0x80A848D0; // type:func -ObjSwitch_CrystalOffInit = 0x80A84960; // type:func -ObjSwitch_CrystalOff = 0x80A8498C; // type:func -ObjSwitch_CrystalTurnOnInit = 0x80A84AC4; // type:func -ObjSwitch_CrystalTurnOn = 0x80A84AE0; // type:func -ObjSwitch_CrystalOnInit = 0x80A84B68; // type:func -ObjSwitch_CrystalOn = 0x80A84B98; // type:func -ObjSwitch_CrystalTurnOffInit = 0x80A84C60; // type:func -ObjSwitch_CrystalTurnOff = 0x80A84C7C; // type:func -ObjSwitch_Update = 0x80A84D04; // type:func -ObjSwitch_DrawFloor = 0x80A84E40; // type:func -ObjSwitch_DrawFloorRusty = 0x80A84E84; // type:func -ObjSwitch_DrawEye = 0x80A84EB4; // type:func -ObjSwitch_DrawCrystal = 0x80A84FC8; // type:func -ObjSwitch_Draw = 0x80A85224; // type:func -ObjElevator_SetupAction = 0x80A85720; // type:func -func_80B92B08 = 0x80A8572C; // type:func -ObjElevator_Init = 0x80A85784; // type:func -ObjElevator_Destroy = 0x80A85814; // type:func -func_80B92C5C = 0x80A85848; // type:func -func_80B92C80 = 0x80A8586C; // type:func -func_80B92D20 = 0x80A8590C; // type:func -func_80B92D44 = 0x80A85930; // type:func -ObjElevator_Update = 0x80A859B4; // type:func -ObjElevator_Draw = 0x80A859E8; // type:func -ObjLift_SetupAction = 0x80A85AE0; // type:func -ObjLift_InitDynaPoly = 0x80A85AEC; // type:func -ObjLift_SpawnFragments = 0x80A85B44; // type:func -ObjLift_Init = 0x80A85DC8; // type:func -ObjLift_Destroy = 0x80A85EC8; // type:func -ObjLift_SetupWait = 0x80A85EFC; // type:func -ObjLift_Wait = 0x80A85F40; // type:func -ObjLift_SetupShake = 0x80A86030; // type:func -ObjLift_Shake = 0x80A8605C; // type:func -ObjLift_SetupFall = 0x80A861A4; // type:func -ObjLift_Fall = 0x80A86228; // type:func -ObjLift_Update = 0x80A8632C; // type:func -ObjLift_Draw = 0x80A86360; // type:func -ObjHsblock_SetupAction = 0x80A86500; // type:func -func_80B93B68 = 0x80A8650C; // type:func -func_80B93BF0 = 0x80A86564; // type:func -ObjHsblock_Init = 0x80A865E8; // type:func -ObjHsblock_Destroy = 0x80A866B8; // type:func -func_80B93D90 = 0x80A866EC; // type:func -func_80B93DB0 = 0x80A8670C; // type:func -func_80B93DF4 = 0x80A86750; // type:func -func_80B93E38 = 0x80A86798; // type:func -func_80B93E5C = 0x80A867BC; // type:func -ObjHsblock_Update = 0x80A86864; // type:func -ObjHsblock_Draw = 0x80A868B0; // type:func -EnOkarinaTag_Destroy = 0x80A86AD0; // type:func -EnOkarinaTag_Init = 0x80A86AE0; // type:func -func_80ABEF2C = 0x80A86C48; // type:func -func_80ABF0CC = 0x80A86DAC; // type:func -func_80ABF28C = 0x80A86F6C; // type:func -func_80ABF4C8 = 0x80A871B4; // type:func -func_80ABF708 = 0x80A873F4; // type:func -func_80ABF7CC = 0x80A874BC; // type:func -EnOkarinaTag_Update = 0x80A87580; // type:func -EnYabusameMark_Destroy = 0x80A87FD0; // type:func -EnYabusameMark_Init = 0x80A87FFC; // type:func -func_80B42F74 = 0x80A8813C; // type:func -EnYabusameMark_Update = 0x80A88380; // type:func -EnGoroiwa_UpdateCollider = 0x80A886A0; // type:func -EnGoroiwa_InitCollider = 0x80A8870C; // type:func -EnGoroiwa_UpdateFlags = 0x80A88774; // type:func -EnGoroiwa_Vec3fNormalize = 0x80A88798; // type:func -EnGoroiwa_SetSpeed = 0x80A8881C; // type:func -EnGoroiwa_FaceNextWaypoint = 0x80A88844; // type:func -EnGoroiwa_GetPrevWaypointDiff = 0x80A8891C; // type:func -EnGoroiw_CheckEndOfPath = 0x80A88A78; // type:func -EnGoroiwa_SetNextWaypoint = 0x80A88B2C; // type:func -EnGoroiwa_ReverseDirection = 0x80A88B5C; // type:func -EnGoroiwa_InitPath = 0x80A88B84; // type:func -EnGoroiwa_TeleportToWaypoint = 0x80A88BC4; // type:func -EnGoroiwa_InitRotation = 0x80A88C68; // type:func -EnGoroiwa_GetAscendDirection = 0x80A88C84; // type:func -EnGoroiwa_SpawnDust = 0x80A88D48; // type:func -EnGoroiwa_SpawnWaterEffects = 0x80A88F38; // type:func -EnGoroiwa_MoveAndFall = 0x80A8906C; // type:func -EnGoroiwa_Move = 0x80A891A0; // type:func -EnGoroiwa_MoveUpToNextWaypoint = 0x80A893CC; // type:func -EnGoroiwa_MoveDownToNextWaypoint = 0x80A894EC; // type:func -EnGoroiwa_UpdateRotation = 0x80A8984C; // type:func -EnGoroiwa_NextWaypoint = 0x80A899EC; // type:func -EnGoroiwa_SpawnFragments = 0x80A89A74; // type:func -EnGoroiwa_Init = 0x80A89D90; // type:func -EnGoroiwa_Destroy = 0x80A89EC0; // type:func -EnGoroiwa_SetupRoll = 0x80A89EEC; // type:func -EnGoroiwa_Roll = 0x80A89F2C; // type:func -EnGoroiwa_SetupMoveAndFallToGround = 0x80A8A1B0; // type:func -EnGoroiwa_MoveAndFallToGround = 0x80A8A224; // type:func -EnGoroiwa_SetupWait = 0x80A8A2C4; // type:func -EnGoroiwa_Wait = 0x80A8A320; // type:func -EnGoroiwa_SetupMoveUp = 0x80A8A360; // type:func -EnGoroiwa_MoveUp = 0x80A8A3B0; // type:func -EnGoroiwa_SetupMoveDown = 0x80A8A470; // type:func -EnGoroiwa_MoveDown = 0x80A8A4DC; // type:func -EnGoroiwa_Update = 0x80A8A5A4; // type:func -EnGoroiwa_Draw = 0x80A8A704; // type:func -EnExRuppy_Init = 0x80A8AA60; // type:func -EnExRuppy_Destroy = 0x80A8AE38; // type:func -EnExRuppy_SpawnSparkles = 0x80A8AE48; // type:func -EnExRuppy_DropIntoWater = 0x80A8B064; // type:func -EnExRuppy_EnterWater = 0x80A8B144; // type:func -EnExRuppy_Sink = 0x80A8B2B0; // type:func -EnExRuppy_WaitInGame = 0x80A8B3B0; // type:func -EnExRuppy_Kill = 0x80A8B508; // type:func -EnExRuppy_WaitToBlowUp = 0x80A8B54C; // type:func -EnExRuppy_WaitAsCollectible = 0x80A8B678; // type:func -EnExRuppy_GalleryTarget = 0x80A8B6FC; // type:func -EnExRuppy_Update = 0x80A8B75C; // type:func -EnExRuppy_Draw = 0x80A8B7E8; // type:func -EnToryo_Init = 0x80A8BB20; // type:func -EnToryo_Destroy = 0x80A8BD64; // type:func -EnToryo_TalkRespond = 0x80A8BD90; // type:func -EnToryo_DoneTalking = 0x80A8BF84; // type:func -EnToryo_ReactToExchangeItem = 0x80A8BFF0; // type:func -EnToryo_GetTextId = 0x80A8C05C; // type:func -EnToryo_HandleTalking = 0x80A8C128; // type:func -EnToryo_Idle = 0x80A8C2D8; // type:func -EnToryo_Update = 0x80A8C33C; // type:func -EnToryo_Draw = 0x80A8C474; // type:func -EnToryo_OverrideLimbDraw = 0x80A8C4D4; // type:func -EnToryo_PostLimbDraw = 0x80A8C564; // type:func -EnDaiku_ChangeAnim = 0x80A8C7B0; // type:func -EnDaiku_Init = 0x80A8C864; // type:func -EnDaiku_Destroy = 0x80A8CBAC; // type:func -EnDaiku_UpdateTalking = 0x80A8CBD8; // type:func -EnDaiku_UpdateText = 0x80A8CCF4; // type:func -EnDaiku_TentIdle = 0x80A8CFC4; // type:func -EnDaiku_Jailed = 0x80A8CFFC; // type:func -EnDaiku_WaitFreedom = 0x80A8D0CC; // type:func -EnDaiku_InitEscape = 0x80A8D130; // type:func -EnDaiku_EscapeRotate = 0x80A8D338; // type:func -EnDaiku_InitSubCamera = 0x80A8D3A4; // type:func -EnDaiku_UpdateSubCamera = 0x80A8D530; // type:func -EnDaiku_EscapeSuccess = 0x80A8D5E8; // type:func -EnDaiku_EscapeRun = 0x80A8D724; // type:func -EnDaiku_Update = 0x80A8D930; // type:func -EnDaiku_Draw = 0x80A8DA48; // type:func -EnDaiku_OverrideLimbDraw = 0x80A8DB70; // type:func -EnDaiku_PostLimbDraw = 0x80A8DBF4; // type:func -EnNwc_SetUpdate = 0x80A8DEF0; // type:func -EnNwc_ChickNoop = 0x80A8DEFC; // type:func -EnNwc_ChickBgCheck = 0x80A8DF10; // type:func -EnNwc_ChickFall = 0x80A8E00C; // type:func -EnNwc_UpdateChicks = 0x80A8E078; // type:func -EnNwc_DrawChicks = 0x80A8E278; // type:func -EnNwc_Init = 0x80A8E5D4; // type:func -EnNwc_Destroy = 0x80A8E760; // type:func -EnNwc_Idle = 0x80A8E78C; // type:func -EnNwc_Update = 0x80A8E7AC; // type:func -EnNwc_Draw = 0x80A8E800; // type:func -EnBlkobj_SetupAction = 0x80A8E910; // type:func -EnBlkobj_Init = 0x80A8E920; // type:func -EnBlkobj_Destroy = 0x80A8E9D0; // type:func -EnBlkobj_Wait = 0x80A8EA04; // type:func -EnBlkobj_SpawnDarkLink = 0x80A8EA58; // type:func -EnBlkobj_DarkLinkFight = 0x80A8EAD0; // type:func -EnBlkobj_DoNothing = 0x80A8EBAC; // type:func -EnBlkobj_Update = 0x80A8EBBC; // type:func -EnBlkobj_DrawAlpha = 0x80A8EBE0; // type:func -EnBlkobj_Draw = 0x80A8EC5C; // type:func -ItemInbox_Init = 0x80A8EE70; // type:func -ItemInbox_Destroy = 0x80A8EEA4; // type:func -ItemInbox_Wait = 0x80A8EEB4; // type:func -ItemInbox_Update = 0x80A8EEFC; // type:func -ItemInbox_Draw = 0x80A8EF20; // type:func -EnGe1_Init = 0x80A8EFD0; // type:func -EnGe1_Destroy = 0x80A8F294; // type:func -EnGe1_SetTalkAction = 0x80A8F2C0; // type:func -EnGe1_SetAnimationIdle = 0x80A8F3A0; // type:func -EnGe1_CheckAllCarpentersRescued = 0x80A8F424; // type:func -EnGe1_KickPlayer = 0x80A8F460; // type:func -EnGe1_SpotPlayer = 0x80A8F540; // type:func -EnGe1_WatchForPlayerFrontOnly = 0x80A8F5A0; // type:func -EnGe1_ChooseActionFromTextId = 0x80A8F658; // type:func -EnGe1_SetNormalText = 0x80A8F6EC; // type:func -EnGe1_WatchForAndSensePlayer = 0x80A8F71C; // type:func -EnGe1_GetReaction_ValleyFloor = 0x80A8F7E8; // type:func -EnGe1_WaitTillOpened_GTGGuard = 0x80A8F83C; // type:func -EnGe1_Open_GTGGuard = 0x80A8F88C; // type:func -EnGe1_SetupOpen_GTGGuard = 0x80A8F93C; // type:func -EnGe1_RefuseEntryTooPoor_GTGGuard = 0x80A8F9FC; // type:func -EnGe1_OfferOpen_GTGGuard = 0x80A8FA3C; // type:func -EnGe1_RefuseOpenNoCard_GTGGuard = 0x80A8FB2C; // type:func -EnGe1_CheckForCard_GTGGuard = 0x80A8FB70; // type:func -EnGe1_WaitGateOpen_GateOp = 0x80A8FBD8; // type:func -EnGe1_WaitUntilGateOpened_GateOp = 0x80A8FC4C; // type:func -EnGe1_OpenGate_GateOp = 0x80A8FC9C; // type:func -EnGe1_SetupOpenGate_GateOp = 0x80A8FD4C; // type:func -EnGe1_CheckGate_GateOp = 0x80A8FE18; // type:func -EnGe1_Talk_GateGuard = 0x80A8FE94; // type:func -EnGe1_GetReaction_GateGuard = 0x80A8FED8; // type:func -EnGe1_SetupWait_Archery = 0x80A8FF8C; // type:func -EnGe1_WaitTillItemGiven_Archery = 0x80A8FFC4; // type:func -EnGe1_BeginGiveItem_Archery = 0x80A900B8; // type:func -EnGe1_TalkWinPrize_Archery = 0x80A90180; // type:func -EnGe1_TalkTooPoor_Archery = 0x80A901E0; // type:func -EnGe1_WaitDoNothing = 0x80A90244; // type:func -EnGe1_BeginGame_Archery = 0x80A90254; // type:func -EnGe1_TalkOfferPlay_Archery = 0x80A903F4; // type:func -EnGe1_TalkNoPrize_Archery = 0x80A90454; // type:func -EnGe1_TalkAfterGame_Archery = 0x80A904A0; // type:func -EnGe1_TalkNoHorse_Archery = 0x80A905A4; // type:func -EnGe1_Wait_Archery = 0x80A905E8; // type:func -EnGe1_TurnToFacePlayer = 0x80A90680; // type:func -EnGe1_LookAtPlayer = 0x80A90798; // type:func -EnGe1_Update = 0x80A90874; // type:func -EnGe1_CueUpAnimation = 0x80A909BC; // type:func -EnGe1_StopFidget = 0x80A909FC; // type:func -EnGe1_OverrideLimbDraw = 0x80A90A54; // type:func -EnGe1_PostLimbDraw = 0x80A90BA8; // type:func -EnGe1_Draw = 0x80A90C14; // type:func -ObjBlockstop_Init = 0x80A91000; // type:func -ObjBlockstop_Destroy = 0x80A9105C; // type:func -ObjBlockstop_Update = 0x80A9106C; // type:func -EnSda_Init = 0x80A911A0; // type:func -EnSda_Destroy = 0x80A911B0; // type:func -EnSda_Update = 0x80A911C0; // type:func -EnSda_Draw = 0x80A911FC; // type:func -func_80AF8F60 = 0x80A91290; // type:func -func_80AF95C4 = 0x80A918F4; // type:func -func_80AF9C70 = 0x80A91F70; // type:func -EnClearTag_CreateDebrisEffect = 0x80A92890; // type:func -EnClearTag_CreateFireEffect = 0x80A92988; // type:func -EnClearTag_CreateSmokeEffect = 0x80A92A78; // type:func -EnClearTag_CreateFlashEffect = 0x80A92B9C; // type:func -EnClearTag_Destroy = 0x80A92C74; // type:func -EnClearTag_Init = 0x80A92CA0; // type:func -EnClearTag_CalculateFloorTangent = 0x80A92E64; // type:func -EnClearTag_Update = 0x80A92F20; // type:func -EnClearTag_Draw = 0x80A93CD4; // type:func -EnClearTag_UpdateEffects = 0x80A94268; // type:func -EnClearTag_DrawEffects = 0x80A94630; // type:func -EnNiwLady_Init = 0x80A9DE30; // type:func -EnNiwLady_Destroy = 0x80A9DF18; // type:func -EnNiwLady_ChoseAnimation = 0x80A9DF44; // type:func -func_80AB9F24 = 0x80A9E10C; // type:func -func_80ABA21C = 0x80A9E408; // type:func -func_80ABA244 = 0x80A9E434; // type:func -func_80ABA654 = 0x80A9E7B4; // type:func -func_80ABA778 = 0x80A9E8AC; // type:func -func_80ABA878 = 0x80A9E980; // type:func -func_80ABA9B8 = 0x80A9EAC4; // type:func -func_80ABAA9C = 0x80A9EBA8; // type:func -func_80ABAB08 = 0x80A9EC18; // type:func -func_80ABAC00 = 0x80A9ED10; // type:func -func_80ABAC84 = 0x80A9ED98; // type:func -func_80ABAD38 = 0x80A9EE40; // type:func -func_80ABAD7C = 0x80A9EE60; // type:func -EnNiwLady_Update = 0x80A9EF24; // type:func -EnNiwLady_EmptyDList = 0x80A9F18C; // type:func -EnNiwLady_OverrideLimbDraw = 0x80A9F1B0; // type:func -EnNiwLady_Draw = 0x80A9F30C; // type:func -EnGm_Init = 0x80A9F730; // type:func -EnGm_Destroy = 0x80A9F790; // type:func -func_80A3D7C8 = 0x80A9F7BC; // type:func -func_80A3D838 = 0x80A9F82C; // type:func -EnGm_UpdateEye = 0x80A9F9CC; // type:func -EnGm_SetTextID = 0x80A9FA44; // type:func -func_80A3DB04 = 0x80A9FAF8; // type:func -func_80A3DBF4 = 0x80A9FBE8; // type:func -func_80A3DC44 = 0x80A9FC3C; // type:func -func_80A3DD7C = 0x80A9FD78; // type:func -EnGm_ProcessChoiceIndex = 0x80A9FE10; // type:func -func_80A3DF00 = 0x80A9FF00; // type:func -func_80A3DF60 = 0x80A9FF64; // type:func -func_80A3DFBC = 0x80A9FFC4; // type:func -EnGm_Update = 0x80AA0078; // type:func -func_80A3E090 = 0x80AA009C; // type:func -EnGm_Draw = 0x80AA01FC; // type:func -EnMs_SetOfferText = 0x80AA0460; // type:func -EnMs_Init = 0x80AA04DC; // type:func -EnMs_Destroy = 0x80AA0600; // type:func -EnMs_Wait = 0x80AA062C; // type:func -EnMs_Talk = 0x80AA06D8; // type:func -EnMs_Sell = 0x80AA07F4; // type:func -EnMs_TalkAfterPurchase = 0x80AA0890; // type:func -EnMs_Update = 0x80AA08F0; // type:func -EnMs_Draw = 0x80AA09E8; // type:func -func_80A6E3A0 = 0x80AA0B50; // type:func -EnHs_Init = 0x80AA0B5C; // type:func -EnHs_Destroy = 0x80AA0CA0; // type:func -func_80A6E53C = 0x80AA0CCC; // type:func -func_80A6E5EC = 0x80AA0D80; // type:func -func_80A6E630 = 0x80AA0DC4; // type:func -func_80A6E6B0 = 0x80AA0E44; // type:func -func_80A6E6D8 = 0x80AA0E6C; // type:func -func_80A6E70C = 0x80AA0EA4; // type:func -func_80A6E740 = 0x80AA0EDC; // type:func -func_80A6E7BC = 0x80AA0F5C; // type:func -func_80A6E8CC = 0x80AA106C; // type:func -func_80A6E9AC = 0x80AA1148; // type:func -EnHs_Update = 0x80AA1290; // type:func -EnHs_OverrideLimbDraw = 0x80AA13FC; // type:func -EnHs_PostLimbDraw = 0x80AA14B8; // type:func -EnHs_Draw = 0x80AA14F8; // type:func -BgInGate_SetupAction = 0x80AA16F0; // type:func -BgInGate_Init = 0x80AA16FC; // type:func -BgInGate_Destroy = 0x80AA1818; // type:func -func_80892890 = 0x80AA184C; // type:func -BgInGate_DoNothing = 0x80AA194C; // type:func -BgInGate_Update = 0x80AA195C; // type:func -BgInGate_Draw = 0x80AA1980; // type:func -EnKanban_SetFloorRot = 0x80AA1A80; // type:func -EnKanban_Init = 0x80AA1B3C; // type:func -EnKanban_Destroy = 0x80AA1C64; // type:func -EnKanban_Message = 0x80AA1C9C; // type:func -EnKanban_Update = 0x80AA1D54; // type:func -EnKanban_Draw = 0x80AA35D0; // type:func -EnHeishi3_Init = 0x80AA4BD0; // type:func -EnHeishi3_Destroy = 0x80AA4CFC; // type:func -EnHeishi3_SetupGuardType = 0x80AA4D28; // type:func -EnHeishi3_StandSentinelInGrounds = 0x80AA4DD8; // type:func -EnHeishi3_StandSentinelInCastle = 0x80AA4F34; // type:func -EnHeishi3_CatchStart = 0x80AA50A4; // type:func -func_80A55BD4 = 0x80AA514C; // type:func -EnHeishi3_ResetAnimationToIdle = 0x80AA51E4; // type:func -func_80A55D00 = 0x80AA5278; // type:func -EnHeishi3_Update = 0x80AA5328; // type:func -EnHeishi3_OverrideLimbDraw = 0x80AA5408; // type:func -EnHeishi3_Draw = 0x80AA5470; // type:func -EnSyatekiNiw_Init = 0x80AA55A0; // type:func -EnSyatekiNiw_Destroy = 0x80AA56E8; // type:func -EnSyatekiNiw_UpdateRotations = 0x80AA5714; // type:func -EnSyatekiNiw_SetupDefault = 0x80AA5A70; // type:func -EnSyatekiNiw_Default = 0x80AA5AFC; // type:func -EnSyatekiNiw_SetupArchery = 0x80AA602C; // type:func -EnSyatekiNiw_Archery = 0x80AA60E4; // type:func -EnSyatekiNiw_ExitArchery = 0x80AA6560; // type:func -EnSyatekiNiw_SetupRemove = 0x80AA6580; // type:func -EnSyatekiNiw_Remove = 0x80AA6678; // type:func -EnSyatekiNiw_CheckHit = 0x80AA6834; // type:func -EnSyatekiNiw_Update = 0x80AA6904; // type:func -SyatekiNiw_OverrideLimbDraw = 0x80AA6C74; // type:func -EnSyatekiNiw_Draw = 0x80AA6DA4; // type:func -EnSyatekiNiw_SpawnFeather = 0x80AA6E50; // type:func -EnSyatekiNiw_UpdateEffects = 0x80AA6F40; // type:func -EnSyatekiNiw_DrawEffects = 0x80AA70FC; // type:func -EnAttackNiw_Init = 0x80AA7630; // type:func -EnAttackNiw_Destroy = 0x80AA7764; // type:func -func_809B5268 = 0x80AA7798; // type:func -func_809B55EC = 0x80AA7B20; // type:func -func_809B5670 = 0x80AA7BA4; // type:func -func_809B59B0 = 0x80AA7EE4; // type:func -func_809B5C18 = 0x80AA8154; // type:func -EnAttackNiw_Update = 0x80AA8218; // type:func -func_809B5F98 = 0x80AA84DC; // type:func -EnAttackNiw_Draw = 0x80AA8634; // type:func -BgSpot01Idosoko_SetupAction = 0x80AA8890; // type:func -BgSpot01Idosoko_Init = 0x80AA889C; // type:func -BgSpot01Idosoko_Destroy = 0x80AA893C; // type:func -func_808ABF54 = 0x80AA8970; // type:func -BgSpot01Idosoko_Update = 0x80AA8980; // type:func -BgSpot01Idosoko_Draw = 0x80AA89A4; // type:func -func_80AF5560 = 0x80AA8AA0; // type:func -EnSa_GetTextId = 0x80AA8B20; // type:func -EnSa_UpdateTalkState = 0x80AA8C34; // type:func -func_80AF57D8 = 0x80AA8D18; // type:func -func_80AF5894 = 0x80AA8DD8; // type:func -func_80AF58B8 = 0x80AA8E00; // type:func -func_80AF594C = 0x80AA8E94; // type:func -func_80AF59E0 = 0x80AA8F28; // type:func -func_80AF5A74 = 0x80AA8FBC; // type:func -func_80AF5B10 = 0x80AA9058; // type:func -func_80AF5BA4 = 0x80AA90EC; // type:func -func_80AF5C40 = 0x80AA9188; // type:func -func_80AF5CD4 = 0x80AA921C; // type:func -func_80AF5CE4 = 0x80AA9234; // type:func -EnSa_ChangeAnim = 0x80AA92DC; // type:func -func_80AF5DFC = 0x80AA934C; // type:func -func_80AF5F34 = 0x80AA9484; // type:func -func_80AF603C = 0x80AA958C; // type:func -func_80AF609C = 0x80AA95EC; // type:func -func_80AF6130 = 0x80AA9688; // type:func -func_80AF6170 = 0x80AA96CC; // type:func -EnSa_Init = 0x80AA9710; // type:func -EnSa_Destroy = 0x80AA9980; // type:func -func_80AF6448 = 0x80AA99AC; // type:func -func_80AF67D0 = 0x80AA9D38; // type:func -func_80AF683C = 0x80AA9DAC; // type:func -func_80AF68E4 = 0x80AA9E54; // type:func -func_80AF6B20 = 0x80AAA094; // type:func -EnSa_Update = 0x80AAA154; // type:func -EnSa_OverrideLimbDraw = 0x80AAA2E4; // type:func -EnSa_PostLimbDraw = 0x80AAA48C; // type:func -EnSa_Draw = 0x80AAA4E8; // type:func -EnWonderTalk_Destroy = 0x80AAAD10; // type:func -EnWonderTalk_Init = 0x80AAAD20; // type:func -func_80B391CC = 0x80AAADC8; // type:func -func_80B3943C = 0x80AAAF58; // type:func -func_80B395F0 = 0x80AAB0AC; // type:func -EnWonderTalk_Update = 0x80AAB29C; // type:func -BgGjyoBridge_Init = 0x80AAB3A0; // type:func -BgGjyoBridge_Destroy = 0x80AAB458; // type:func -func_808787A4 = 0x80AAB48C; // type:func -BgGjyoBridge_TriggerCutscene = 0x80AAB49C; // type:func -BgGjyoBridge_SpawnBridge = 0x80AAB5F4; // type:func -BgGjyoBridge_Update = 0x80AAB670; // type:func -BgGjyoBridge_Draw = 0x80AAB694; // type:func -EnDs_Init = 0x80AAB890; // type:func -EnDs_Destroy = 0x80AAB960; // type:func -EnDs_Talk = 0x80AAB970; // type:func -EnDs_TalkNoEmptyBottle = 0x80AAB9C0; // type:func -EnDs_TalkAfterGiveOddPotion = 0x80AABA2C; // type:func -EnDs_DisplayOddPotionText = 0x80AABA88; // type:func -EnDs_GiveOddPotion = 0x80AABAE8; // type:func -EnDs_TalkAfterBrewOddPotion = 0x80AABB54; // type:func -EnDs_BrewOddPotion3 = 0x80AABBD4; // type:func -EnDs_BrewOddPotion2 = 0x80AABC78; // type:func -EnDs_BrewOddPotion1 = 0x80AABCCC; // type:func -EnDs_OfferOddPotion = 0x80AABD6C; // type:func -EnDs_CheckRupeesAndBottle = 0x80AABE38; // type:func -EnDs_GiveBluePotion = 0x80AABE88; // type:func -EnDs_OfferBluePotion = 0x80AABEEC; // type:func -EnDs_Wait = 0x80AAC024; // type:func -EnDs_Update = 0x80AAC1A8; // type:func -EnDs_OverrideLimbDraw = 0x80AAC2B0; // type:func -EnDs_PostLimbDraw = 0x80AAC2F8; // type:func -EnDs_Draw = 0x80AAC338; // type:func -EnMk_Init = 0x80AAC4B0; // type:func -EnMk_Destroy = 0x80AAC5C8; // type:func -func_80AACA40 = 0x80AAC5F4; // type:func -func_80AACA94 = 0x80AAC644; // type:func -func_80AACB14 = 0x80AAC6CC; // type:func -func_80AACB6C = 0x80AAC728; // type:func -func_80AACBAC = 0x80AAC764; // type:func -func_80AACC04 = 0x80AAC7BC; // type:func -func_80AACCA0 = 0x80AAC858; // type:func -func_80AACD48 = 0x80AAC900; // type:func -func_80AACE2C = 0x80AAC9E4; // type:func -func_80AACEE8 = 0x80AACAA0; // type:func -func_80AACFA0 = 0x80AACB58; // type:func -func_80AAD014 = 0x80AACBD0; // type:func -EnMk_Wait = 0x80AACC3C; // type:func -EnMk_Update = 0x80AACE90; // type:func -EnMk_OverrideLimbDraw = 0x80AAD0DC; // type:func -EnMk_PostLimbDraw = 0x80AAD124; // type:func -EnMk_Draw = 0x80AAD164; // type:func -EnBomBowlMan_Init = 0x80AAD340; // type:func -EnBomBowlMan_Destroy = 0x80AAD500; // type:func -EnBomBowlMan_SetupWaitAsleep = 0x80AAD510; // type:func -EnBomBowlMan_WaitAsleep = 0x80AAD598; // type:func -EnBomBowlMan_TalkAsleep = 0x80AAD64C; // type:func -EnBomBowlMan_WakeUp = 0x80AAD6C4; // type:func -EnBomBowlMan_BlinkAwake = 0x80AAD748; // type:func -EnBomBowlMan_CheckBeatenDC = 0x80AAD844; // type:func -EnBomBowlMan_WaitNotBeatenDC = 0x80AAD970; // type:func -EnBomBowlMan_TalkNotBeatenDC = 0x80AAD9CC; // type:func -EnBomBowlMan_SetupRunGame = 0x80AADA3C; // type:func -EnBomBowlMan_RunGame = 0x80AADAC0; // type:func -EnBomBowlMan_HandlePlayChoice = 0x80AADCD0; // type:func -func_809C41FC = 0x80AADE8C; // type:func -EnBomBowlMan_SetupChooseShowPrize = 0x80AADFA8; // type:func -EnBomBowlMan_ChooseShowPrize = 0x80AAE0AC; // type:func -EnBomBowlMan_BeginPlayGame = 0x80AAE2F4; // type:func -EnBomBowlMan_Update = 0x80AAE3B0; // type:func -EnBomBowlMan_OverrideLimbDraw = 0x80AAE528; // type:func -EnBomBowlMan_Draw = 0x80AAE570; // type:func -EnBomBowlPit_Init = 0x80AAE880; // type:func -EnBomBowlPit_Destroy = 0x80AAE898; // type:func -EnBomBowlPit_SetupDetectHit = 0x80AAE8A8; // type:func -EnBomBowlPit_DetectHit = 0x80AAE8D4; // type:func -EnBomBowlPit_CameraDollyIn = 0x80AAEBCC; // type:func -EnBomBowlPit_SpawnPrize = 0x80AAEDA8; // type:func -EnBomBowlPit_SetupGivePrize = 0x80AAEE38; // type:func -EnBomBowlPit_GivePrize = 0x80AAEEF0; // type:func -EnBomBowlPit_WaitTillPrizeGiven = 0x80AAEFF4; // type:func -EnBomBowlPit_Reset = 0x80AAF050; // type:func -EnBomBowlPit_Update = 0x80AAF0D0; // type:func -EnOwl_Init = 0x80AAF1F0; // type:func -EnOwl_Destroy = 0x80AAF5D4; // type:func -EnOwl_LookAtLink = 0x80AAF600; // type:func -EnOwl_CheckInitTalk = 0x80AAF63C; // type:func -func_80ACA558 = 0x80AAF7A8; // type:func -func_80ACA5C8 = 0x80AAF81C; // type:func -func_80ACA62C = 0x80AAF87C; // type:func -func_80ACA690 = 0x80AAF8C8; // type:func -func_80ACA6C0 = 0x80AAF8F8; // type:func -func_80ACA71C = 0x80AAF954; // type:func -func_80ACA76C = 0x80AAF9A0; // type:func -func_80ACA7E0 = 0x80AAFA14; // type:func -EnOwl_ConfirmKokiriMessage = 0x80AAFAC0; // type:func -EnOwl_WaitOutsideKokiri = 0x80AAFB60; // type:func -func_80ACA998 = 0x80AAFBD8; // type:func -func_80ACAA54 = 0x80AAFC98; // type:func -func_80ACAAC0 = 0x80AAFD08; // type:func -EnOwl_WaitHyruleCastle = 0x80AAFD78; // type:func -func_80ACAB88 = 0x80AAFDDC; // type:func -func_80ACAC6C = 0x80AAFEC4; // type:func -EnOwl_WaitKakariko = 0x80AAFF34; // type:func -func_80ACAD34 = 0x80AAFF98; // type:func -func_80ACADF0 = 0x80AB0058; // type:func -EnOwl_WaitGerudo = 0x80AB00C8; // type:func -func_80ACAEB8 = 0x80AB012C; // type:func -func_80ACAF74 = 0x80AB01EC; // type:func -EnOwl_WaitLakeHylia = 0x80AB025C; // type:func -func_80ACB03C = 0x80AB02C0; // type:func -EnOwl_WaitZoraRiver = 0x80AB0334; // type:func -func_80ACB148 = 0x80AB03D4; // type:func -EnOwl_WaitHyliaShortcut = 0x80AB0434; // type:func -func_80ACB22C = 0x80AB04C0; // type:func -func_80ACB274 = 0x80AB050C; // type:func -EnOwl_WaitDeathMountainShortcut = 0x80AB0550; // type:func -func_80ACB344 = 0x80AB05E4; // type:func -func_80ACB3E0 = 0x80AB0684; // type:func -func_80ACB440 = 0x80AB06EC; // type:func -func_80ACB4FC = 0x80AB07AC; // type:func -EnOwl_WaitLWPreSaria = 0x80AB081C; // type:func -func_80ACB5C4 = 0x80AB0880; // type:func -func_80ACB680 = 0x80AB0940; // type:func -EnOwl_WaitLWPostSaria = 0x80AB09B0; // type:func -func_80ACB748 = 0x80AB0A14; // type:func -func_80ACB904 = 0x80AB0BD0; // type:func -func_80ACB994 = 0x80AB0C68; // type:func -EnOwl_WaitDefault = 0x80AB0D00; // type:func -func_80ACBAB8 = 0x80AB0D94; // type:func -func_80ACBC0C = 0x80AB0EE8; // type:func -func_80ACBD4C = 0x80AB1024; // type:func -func_80ACBEA0 = 0x80AB1178; // type:func -func_80ACBF50 = 0x80AB1228; // type:func -func_80ACC00C = 0x80AB12E4; // type:func -func_80ACC23C = 0x80AB14A8; // type:func -func_80ACC30C = 0x80AB1574; // type:func -func_80ACC390 = 0x80AB15F8; // type:func -func_80ACC460 = 0x80AB16C8; // type:func -func_80ACC540 = 0x80AB17A8; // type:func -func_80ACC5CC = 0x80AB1834; // type:func -func_80ACC624 = 0x80AB188C; // type:func -EnOwl_Update = 0x80AB1908; // type:func -EnOwl_OverrideLimbDraw = 0x80AB2058; // type:func -EnOwl_PostLimbUpdate = 0x80AB2184; // type:func -EnOwl_Draw = 0x80AB2208; // type:func -EnOwl_ChangeMode = 0x80AB22D4; // type:func -func_80ACD130 = 0x80AB234C; // type:func -func_80ACD1C4 = 0x80AB23E0; // type:func -func_80ACD220 = 0x80AB2440; // type:func -func_80ACD2CC = 0x80AB24EC; // type:func -func_80ACD4D4 = 0x80AB26F4; // type:func -EnIshi_InitCollider = 0x80AB2D90; // type:func -EnIshi_SnapToFloor = 0x80AB2E08; // type:func -EnIshi_SpawnFragmentsSmall = 0x80AB2EAC; // type:func -EnIshi_SpawnFragmentsLarge = 0x80AB3128; // type:func -EnIshi_SpawnDustSmall = 0x80AB3414; // type:func -EnIshi_SpawnDustLarge = 0x80AB3508; // type:func -EnIshi_DropCollectible = 0x80AB35FC; // type:func -EnIshi_Fall = 0x80AB366C; // type:func -func_80A7ED94 = 0x80AB36A0; // type:func -EnIshi_SpawnBugs = 0x80AB3724; // type:func -EnIshi_Init = 0x80AB37E0; // type:func -EnIshi_Destroy = 0x80AB397C; // type:func -EnIshi_SetupWait = 0x80AB39A8; // type:func -EnIshi_Wait = 0x80AB39BC; // type:func -EnIshi_SetupLiftedUp = 0x80AB3C14; // type:func -EnIshi_LiftedUp = 0x80AB3C3C; // type:func -EnIshi_SetupFly = 0x80AB3D10; // type:func -EnIshi_Fly = 0x80AB3E3C; // type:func -EnIshi_Update = 0x80AB41A8; // type:func -EnIshi_DrawSmall = 0x80AB41CC; // type:func -EnIshi_DrawLarge = 0x80AB41FC; // type:func -EnIshi_Draw = 0x80AB42A4; // type:func -ObjHana_Init = 0x80ABBEE0; // type:func -ObjHana_Destroy = 0x80ABBFDC; // type:func -ObjHana_Update = 0x80ABC028; // type:func -ObjHana_Draw = 0x80ABC098; // type:func -ObjLightswitch_InitCollider = 0x80ABC1F0; // type:func -ObjLightswitch_SetSwitchFlag = 0x80ABC28C; // type:func -ObjLightswitch_ClearSwitchFlag = 0x80ABC350; // type:func -ObjLightswitch_SpawnDisappearEffects = 0x80ABC3D0; // type:func -ObjLightswitch_Init = 0x80ABC5F8; // type:func -ObjLightswitch_Destroy = 0x80ABC78C; // type:func -ObjLightswitch_SetupOff = 0x80ABC7B8; // type:func -ObjLightswitch_Off = 0x80ABC7EC; // type:func -ObjLightswitch_SetupTurnOn = 0x80ABC8CC; // type:func -ObjLightswitch_TurnOn = 0x80ABC8F0; // type:func -ObjLightswitch_SetupOn = 0x80ABC9E4; // type:func -ObjLightswitch_On = 0x80ABCA20; // type:func -ObjLightswitch_SetupTurnOff = 0x80ABCB34; // type:func -ObjLightswitch_TurnOff = 0x80ABCB60; // type:func -ObjLightswitch_SetupDisappearDelay = 0x80ABCC50; // type:func -ObjLightswitch_DisappearDelay = 0x80ABCC6C; // type:func -ObjLightswitch_SetupDisappear = 0x80ABCCB4; // type:func -ObjLightswitch_Disappear = 0x80ABCCD0; // type:func -ObjLightswitch_Update = 0x80ABCD14; // type:func -ObjLightswitch_DrawOpa = 0x80ABCDF8; // type:func -ObjLightswitch_DrawXlu = 0x80ABD120; // type:func -ObjLightswitch_Draw = 0x80ABD3D0; // type:func -ObjMure2_SetPosShrubCircle = 0x80ABD620; // type:func -ObjMure2_SetPosShrubScattered = 0x80ABD73C; // type:func -ObjMure2_SetPosRockCircle = 0x80ABD83C; // type:func -ObjMure2_SetActorSpawnParams = 0x80ABD948; // type:func -ObjMure2_SpawnActors = 0x80ABD99C; // type:func -ObjMure2_CleanupAndDie = 0x80ABDAF8; // type:func -func_80B9A534 = 0x80ABDBF8; // type:func -ObjMure2_Init = 0x80ABDC8C; // type:func -ObjMure2_SetupWait = 0x80ABDCEC; // type:func -ObjMure2_Wait = 0x80ABDD00; // type:func -func_80B9A658 = 0x80ABDD24; // type:func -func_80B9A668 = 0x80ABDD38; // type:func -func_80B9A6E8 = 0x80ABDDB8; // type:func -func_80B9A6F8 = 0x80ABDDCC; // type:func -ObjMure2_Update = 0x80ABDE5C; // type:func -EnGo_SetupAction = 0x80ABE040; // type:func -EnGo_GetTextID = 0x80ABE04C; // type:func -EnGo_UpdateTalkState = 0x80ABE3DC; // type:func -EnGo_UpdateTalking = 0x80ABE7FC; // type:func -EnGo_ChangeAnim = 0x80ABE8BC; // type:func -EnGo_IsActorSpawned = 0x80ABE96C; // type:func -EnGo_GetPlayerTrackingYOffset = 0x80ABEACC; // type:func -func_80A3F060 = 0x80ABEB44; // type:func -func_80A3F0E4 = 0x80ABEBC8; // type:func -EnGo_IsCameraModified = 0x80ABEC40; // type:func -EnGo_ReverseAnimation = 0x80ABED44; // type:func -EnGo_UpdateShadow = 0x80ABED5C; // type:func -EnGo_FollowPath = 0x80ABEDE8; // type:func -EnGo_SetMovedPos = 0x80ABEFA4; // type:func -EnGo_SpawnDust = 0x80ABF07C; // type:func -EnGo_IsRollingOnGround = 0x80ABF2A8; // type:func -func_80A3F908 = 0x80ABF3F4; // type:func -EnGo_Init = 0x80ABF624; // type:func -EnGo_Destroy = 0x80ABF974; // type:func -func_80A3FEB4 = 0x80ABF9B4; // type:func -EnGo_StopRolling = 0x80ABF9F8; // type:func -func_80A4008C = 0x80ABFB8C; // type:func -EnGo_GoronLinkRolling = 0x80ABFC1C; // type:func -EnGo_FireGenericActionFunc = 0x80ABFD14; // type:func -EnGo_CurledUp = 0x80ABFD24; // type:func -EnGo_WakeUp = 0x80ABFE24; // type:func -func_80A40494 = 0x80ABFFA0; // type:func -func_80A405CC = 0x80AC00D8; // type:func -EnGo_BiggoronActionFunc = 0x80AC01EC; // type:func -func_80A408D8 = 0x80AC03E4; // type:func -func_80A40A54 = 0x80AC0560; // type:func -func_80A40B1C = 0x80AC0628; // type:func -EnGo_GetItem = 0x80AC0680; // type:func -func_80A40C78 = 0x80AC0788; // type:func -EnGo_Eyedrops = 0x80AC0870; // type:func -func_80A40DCC = 0x80AC08E0; // type:func -EnGo_Update = 0x80AC0964; // type:func -EnGo_DrawCurledUp = 0x80AC0A74; // type:func -EnGo_DrawRolling = 0x80AC0B40; // type:func -EnGo_OverrideLimbDraw = 0x80AC0C6C; // type:func -EnGo_PostLimbDraw = 0x80AC0E88; // type:func -EnGo_Draw = 0x80AC0EE4; // type:func -EnGo_SpawnEffectDust = 0x80AC1084; // type:func -EnGo_UpdateEffects = 0x80AC1128; // type:func -EnGo_DrawEffects = 0x80AC1234; // type:func -EnFu_Init = 0x80AC2680; // type:func -EnFu_Destroy = 0x80AC2794; // type:func -func_80A1D94C = 0x80AC27C0; // type:func -func_80A1DA04 = 0x80AC287C; // type:func -EnFu_WaitChild = 0x80AC2918; // type:func -func_80A1DB60 = 0x80AC29DC; // type:func -func_80A1DBA0 = 0x80AC2A1C; // type:func -func_80A1DBD4 = 0x80AC2A54; // type:func -EnFu_WaitForPlayback = 0x80AC2BC4; // type:func -EnFu_TeachSong = 0x80AC2C2C; // type:func -EnFu_WaitAdult = 0x80AC2CA8; // type:func -EnFu_Update = 0x80AC2DF8; // type:func -EnFu_OverrideLimbDraw = 0x80AC2FA0; // type:func -EnFu_PostLimbDraw = 0x80AC30FC; // type:func -EnFu_Draw = 0x80AC313C; // type:func -EnChanger_Destroy = 0x80AC33D0; // type:func -EnChanger_Init = 0x80AC33E0; // type:func -EnChanger_Wait = 0x80AC38FC; // type:func -EnChanger_OpenChests = 0x80AC39A0; // type:func -EnChanger_SetHeartPieceFlag = 0x80AC3B50; // type:func -EnChanger_Update = 0x80AC3BA0; // type:func -BgJyaMegami_InitDynaPoly = 0x80AC3DB0; // type:func -BgJyaMegami_InitCollider = 0x80AC3E08; // type:func -BgJyaMegami_SpawnEffect = 0x80AC3E5C; // type:func -BgJyaMegami_SetupSpawnEffect = 0x80AC40A0; // type:func -BgJyaMegami_Init = 0x80AC419C; // type:func -BgJyaMegami_Destroy = 0x80AC4230; // type:func -BgJyaMegami_SetupDetectLight = 0x80AC4278; // type:func -BgJyaMegami_DetectLight = 0x80AC4294; // type:func -BgJyaMegami_SetupExplode = 0x80AC4420; // type:func -BgJyaMegami_Explode = 0x80AC44B8; // type:func -BgJyaMegami_Update = 0x80AC4840; // type:func -BgJyaMegami_DrawFace = 0x80AC4864; // type:func -BgJyaMegami_DrawExplode = 0x80AC49A8; // type:func -BgJyaMegami_Draw = 0x80AC4B74; // type:func -BgJyaLift_InitDynapoly = 0x80AC4FA0; // type:func -BgJyaLift_Init = 0x80AC4FF8; // type:func -BgJyaLift_Destroy = 0x80AC50B4; // type:func -BgJyaLift_SetInitPosY = 0x80AC50F8; // type:func -BgJyaLift_DelayMove = 0x80AC511C; // type:func -BgJyaLift_SetupMove = 0x80AC51A0; // type:func -BgJyaLift_Move = 0x80AC51B4; // type:func -BgJyaLift_SetFinalPosY = 0x80AC52D8; // type:func -BgJyaLift_Update = 0x80AC52F0; // type:func -BgJyaLift_Draw = 0x80AC53E0; // type:func -BgJyaBigmirror_SetRoomFlag = 0x80AC54F0; // type:func -BgJyaBigmirror_HandleCobra = 0x80AC5560; // type:func -BgJyaBigmirror_SetBombiwaFlag = 0x80AC56F8; // type:func -BgJyaBigmirror_HandleMirRay = 0x80AC574C; // type:func -BgJyaBigmirror_Init = 0x80AC58F4; // type:func -BgJyaBigmirror_Destroy = 0x80AC5978; // type:func -BgJyaBigmirror_Update = 0x80AC5998; // type:func -BgJyaBigmirror_DrawLightBeam = 0x80AC59E8; // type:func -BgJyaBigmirror_Draw = 0x80AC5B74; // type:func -BgJyaBombchuiwa_SetupCollider = 0x80AC5D40; // type:func -BgJyaBombchuiwa_SetDrawFlags = 0x80AC5D94; // type:func -BgJyaBombchuiwa_Init = 0x80AC5DB8; // type:func -BgJyaBombchuiwa_Destroy = 0x80AC5E38; // type:func -BgJyaBombchuiwa_Break = 0x80AC5E64; // type:func -BgJyaBombchuiwa_SetupWaitForExplosion = 0x80AC60F0; // type:func -BgJyaBombchuiwa_WaitForExplosion = 0x80AC6128; // type:func -BgJyaBombchuiwa_CleanUpAfterExplosion = 0x80AC620C; // type:func -func_808949B8 = 0x80AC6264; // type:func -BgJyaBombchuiwa_SpawnLightRay = 0x80AC62F0; // type:func -BgJyaBombchuiwa_Update = 0x80AC6368; // type:func -BgJyaBombchuiwa_DrawRock = 0x80AC6394; // type:func -BgJyaBombchuiwa_DrawLight = 0x80AC641C; // type:func -BgJyaBombchuiwa_Draw = 0x80AC6678; // type:func -BgJyaAmishutter_InitDynaPoly = 0x80AC6880; // type:func -BgJyaAmishutter_Init = 0x80AC68D8; // type:func -BgJyaAmishutter_Destroy = 0x80AC6920; // type:func -BgJyaAmishutter_SetupWaitForPlayer = 0x80AC6954; // type:func -BgJyaAmishutter_WaitForPlayer = 0x80AC6968; // type:func -func_80893428 = 0x80AC69C4; // type:func -func_80893438 = 0x80AC69D8; // type:func -func_808934B0 = 0x80AC6A50; // type:func -func_808934C0 = 0x80AC6A64; // type:func -func_808934FC = 0x80AC6AA0; // type:func -func_8089350C = 0x80AC6AB4; // type:func -BgJyaAmishutter_Update = 0x80AC6B18; // type:func -BgJyaAmishutter_Draw = 0x80AC6B40; // type:func -BgJyaBombiwa_SetupDynaPoly = 0x80AC6C10; // type:func -BgJyaBombiwa_InitCollider = 0x80AC6C68; // type:func -BgJyaBombiwa_Init = 0x80AC6CBC; // type:func -BgJyaBombiwa_Destroy = 0x80AC6D3C; // type:func -BgJyaBombiwa_Break = 0x80AC6D84; // type:func -BgJyaBombiwa_Update = 0x80AC7018; // type:func -BgJyaBombiwa_Draw = 0x80AC70A8; // type:func -func_808B7710 = 0x80AC71D0; // type:func -func_808B7770 = 0x80AC722C; // type:func -BgSpot18Basket_Init = 0x80AC73E8; // type:func -BgSpot18Basket_Destroy = 0x80AC7534; // type:func -func_808B7AEC = 0x80AC757C; // type:func -func_808B7AFC = 0x80AC7590; // type:func -func_808B7B58 = 0x80AC75EC; // type:func -func_808B7B6C = 0x80AC7604; // type:func -func_808B7BB0 = 0x80AC7648; // type:func -func_808B7BCC = 0x80AC7668; // type:func -func_808B7D38 = 0x80AC77D4; // type:func -func_808B7D50 = 0x80AC77F0; // type:func -func_808B7F74 = 0x80AC7A14; // type:func -func_808B7FC0 = 0x80AC7A64; // type:func -func_808B818C = 0x80AC7C30; // type:func -func_808B81A0 = 0x80AC7C48; // type:func -BgSpot18Basket_Update = 0x80AC7EE0; // type:func -BgSpot18Basket_Draw = 0x80AC7FA4; // type:func -EnGanonOrgan_Init = 0x80AC81C0; // type:func -EnGanonOrgan_Destroy = 0x80AC81DC; // type:func -EnGanonOrgan_Update = 0x80AC81EC; // type:func -EnGanonOrgan_EmptyDList = 0x80AC8230; // type:func -func_80A280BC = 0x80AC8254; // type:func -func_80A28148 = 0x80AC82CC; // type:func -EnGanonOrgan_Draw = 0x80AC833C; // type:func -EnSiofuki_Init = 0x80ACF200; // type:func -EnSiofuki_Destroy = 0x80ACF41C; // type:func -func_80AFBDC8 = 0x80ACF450; // type:func -func_80AFBE8C = 0x80ACF510; // type:func -func_80AFC1D0 = 0x80ACF85C; // type:func -func_80AFC218 = 0x80ACF8A4; // type:func -func_80AFC34C = 0x80ACF9E0; // type:func -func_80AFC3C8 = 0x80ACFA64; // type:func -func_80AFC478 = 0x80ACFB1C; // type:func -func_80AFC544 = 0x80ACFBF0; // type:func -EnSiofuki_Update = 0x80ACFC28; // type:func -EnSiofuki_Draw = 0x80ACFC4C; // type:func -EnStream_SetupAction = 0x80ACFFB0; // type:func -EnStream_Init = 0x80ACFFBC; // type:func -EnStream_Destroy = 0x80AD0024; // type:func -func_80B0B81C = 0x80AD0034; // type:func -EnStream_SuckPlayer = 0x80AD0154; // type:func -EnStream_WaitForPlayer = 0x80AD02EC; // type:func -EnStream_Update = 0x80AD0340; // type:func -EnStream_Draw = 0x80AD0374; // type:func -EnMm_ChangeAnim = 0x80AD0540; // type:func -EnMm_Init = 0x80AD0664; // type:func -EnMm_Destroy = 0x80AD0820; // type:func -func_80AADA70 = 0x80AD084C; // type:func -func_80AADAA0 = 0x80AD0880; // type:func -EnMm_GetTextId = 0x80AD0A14; // type:func -func_80AADCD0 = 0x80AD0AB4; // type:func -EnMm_GetPointCount = 0x80AD0C34; // type:func -func_80AADE60 = 0x80AD0C48; // type:func -func_80AADEF0 = 0x80AD0CDC; // type:func -func_80AAE224 = 0x80AD1014; // type:func -func_80AAE294 = 0x80AD1084; // type:func -func_80AAE50C = 0x80AD12FC; // type:func -func_80AAE598 = 0x80AD1388; // type:func -EnMm_Update = 0x80AD1430; // type:func -EnMm_Draw = 0x80AD14A4; // type:func -EnMm_OverrideLimbDraw = 0x80AD1738; // type:func -EnMm_PostLimbDraw = 0x80AD17CC; // type:func -EnKo_AreObjectsAvailable = 0x80AD1BA0; // type:func -EnKo_AreObjectsLoaded = 0x80AD1CB8; // type:func -EnKo_IsOsAnimeAvailable = 0x80AD1D40; // type:func -EnKo_IsOsAnimeLoaded = 0x80AD1D90; // type:func -EnKo_GetTextIdChild = 0x80AD1DD0; // type:func -EnKo_GetTextIdAdult = 0x80AD2138; // type:func -EnKo_GetTextId = 0x80AD2410; // type:func -EnKo_UpdateTalkState = 0x80AD253C; // type:func -EnKo_GetForestQuestState = 0x80AD293C; // type:func -func_80A97BC0 = 0x80AD29C4; // type:func -func_80A97C7C = 0x80AD2A80; // type:func -EnKo_IsWithinTalkAngle = 0x80AD2B04; // type:func -func_80A97D68 = 0x80AD2B70; // type:func -func_80A97E18 = 0x80AD2C20; // type:func -func_80A97EB0 = 0x80AD2CBC; // type:func -func_80A97F20 = 0x80AD2D30; // type:func -func_80A97F70 = 0x80AD2D80; // type:func -func_80A98034 = 0x80AD2E44; // type:func -func_80A98124 = 0x80AD2F38; // type:func -func_80A98174 = 0x80AD2F88; // type:func -EnKo_ChildStart = 0x80AD306C; // type:func -EnKo_ChildStone = 0x80AD3174; // type:func -EnKo_ChildSaria = 0x80AD327C; // type:func -EnKo_AdultEnemy = 0x80AD3384; // type:func -EnKo_AdultSaved = 0x80AD348C; // type:func -func_80A9877C = 0x80AD3594; // type:func -EnKo_CanSpawn = 0x80AD3750; // type:func -EnKo_Blink = 0x80AD3A34; // type:func -func_80A98CD8 = 0x80AD3AF4; // type:func -EnKo_GetForestQuestState2 = 0x80AD3B4C; // type:func -func_80A98DB4 = 0x80AD3BD8; // type:func -func_80A98ECC = 0x80AD3CF0; // type:func -EnKo_Init = 0x80AD3DB8; // type:func -EnKo_Destroy = 0x80AD3E48; // type:func -func_80A99048 = 0x80AD3E74; // type:func -func_80A99384 = 0x80AD41A4; // type:func -func_80A99438 = 0x80AD4258; // type:func -func_80A99504 = 0x80AD4324; // type:func -func_80A99560 = 0x80AD4384; // type:func -func_80A995CC = 0x80AD43F4; // type:func -EnKo_Update = 0x80AD4530; // type:func -EnKo_OverrideLimbDraw = 0x80AD4694; // type:func -EnKo_PostLimbDraw = 0x80AD49F4; // type:func -EnKo_SetEnvColor = 0x80AD4AC4; // type:func -EnKo_Draw = 0x80AD4B30; // type:func -EnKz_GetTextIdChild = 0x80AD5CE0; // type:func -EnKz_GetTextIdAdult = 0x80AD5D3C; // type:func -EnKz_GetTextId = 0x80AD5DEC; // type:func -EnKz_UpdateTalkState = 0x80AD5E54; // type:func -EnKz_UpdateEyes = 0x80AD6078; // type:func -EnKz_UpdateTalking = 0x80AD60F0; // type:func -func_80A9CB18 = 0x80AD62AC; // type:func -EnKz_FollowPath = 0x80AD646C; // type:func -EnKz_SetMovedPos = 0x80AD65D8; // type:func -EnKz_Init = 0x80AD66A0; // type:func -EnKz_Destroy = 0x80AD682C; // type:func -EnKz_PreMweepWait = 0x80AD6858; // type:func -EnKz_SetupMweep = 0x80AD68C8; // type:func -EnKz_Mweep = 0x80AD69F4; // type:func -EnKz_StopMweep = 0x80AD6B60; // type:func -EnKz_Wait = 0x80AD6BC4; // type:func -EnKz_SetupGetItem = 0x80AD6C2C; // type:func -EnKz_StartTimer = 0x80AD6CC0; // type:func -EnKz_Update = 0x80AD6D58; // type:func -EnKz_OverrideLimbDraw = 0x80AD6E14; // type:func -EnKz_PostLimbDraw = 0x80AD6EE4; // type:func -EnKz_Draw = 0x80AD6F40; // type:func -EnWeatherTag_SetupAction = 0x80AD7280; // type:func -EnWeatherTag_Destroy = 0x80AD728C; // type:func -EnWeatherTag_Init = 0x80AD729C; // type:func -WeatherTag_CheckEnableWeatherEffect = 0x80AD7470; // type:func -WeatherTag_CheckRestoreWeather = 0x80AD7648; // type:func -EnWeatherTag_DisabledCloudyHyruleMarket = 0x80AD7808; // type:func -EnWeatherTag_EnabledCloudyHyruleMarket = 0x80AD7864; // type:func -EnWeatherTag_DisabledCloudyLonLonRanch = 0x80AD78B8; // type:func -EnWeatherTag_EnabledCloudyLonLonRanch = 0x80AD7914; // type:func -EnWeatherTag_DisabledCloudyDeathMountain = 0x80AD7968; // type:func -EnWeatherTag_EnabledCloudyDeathMountain = 0x80AD79C4; // type:func -EnWeatherTag_DisabledCloudySnow = 0x80AD7A18; // type:func -EnWeatherTag_EnabledCloudySnow = 0x80AD7A90; // type:func -EnWeatherTag_DisabledRainLakeHylia = 0x80AD7AFC; // type:func -EnWeatherTag_EnabledRainLakeHylia = 0x80AD7B80; // type:func -EnWeatherTag_DisabledCloudyRainThunderKakariko = 0x80AD7BF8; // type:func -EnWeatherTag_EnabledCloudyRainThunderKakariko = 0x80AD7C90; // type:func -EnWeatherTag_SetSandstormIntensity = 0x80AD7D1C; // type:func -EnWeatherTag_DisabledRainThunder = 0x80AD7E18; // type:func -EnWeatherTag_EnabledRainThunder = 0x80AD7EBC; // type:func -EnWeatherTag_Update = 0x80AD7F70; // type:func -BgSstFloor_Init = 0x80AD8170; // type:func -BgSstFloor_Destroy = 0x80AD81D8; // type:func -BgSstFloor_Update = 0x80AD820C; // type:func -BgSstFloor_Draw = 0x80AD8580; // type:func -EnAni_SetupAction = 0x80AD86D0; // type:func -EnAni_Init = 0x80AD86DC; // type:func -EnAni_Destroy = 0x80AD87F4; // type:func -EnAni_SetText = 0x80AD8820; // type:func -func_809B04F0 = 0x80AD885C; // type:func -func_809B0524 = 0x80AD8894; // type:func -func_809B0558 = 0x80AD88CC; // type:func -func_809B05F0 = 0x80AD8968; // type:func -func_809B064C = 0x80AD89CC; // type:func -func_809B07F8 = 0x80AD8B78; // type:func -func_809B0988 = 0x80AD8D08; // type:func -func_809B0994 = 0x80AD8D18; // type:func -func_809B0A28 = 0x80AD8DAC; // type:func -func_809B0A6C = 0x80AD8DF0; // type:func -EnAni_Update = 0x80AD8E9C; // type:func -EnAni_OverrideLimbDraw = 0x80AD9118; // type:func -EnAni_PostLimbDraw = 0x80AD9160; // type:func -EnAni_Draw = 0x80AD91A0; // type:func -EnExItem_Destroy = 0x80AD9440; // type:func -EnExItem_Init = 0x80AD9450; // type:func -EnExItem_WaitForObject = 0x80AD95AC; // type:func -EnExItem_BowlPrize = 0x80AD9928; // type:func -EnExItem_SetupBowlCounter = 0x80AD9B14; // type:func -EnExItem_BowlCounter = 0x80AD9B3C; // type:func -EnExItem_ExitChest = 0x80AD9B74; // type:func -EnExItem_FairyMagic = 0x80AD9BDC; // type:func -EnExItem_TargetPrizeApproach = 0x80AD9BF4; // type:func -EnExItem_TargetPrizeGive = 0x80AD9E48; // type:func -EnExItem_TargetPrizeFinish = 0x80AD9ED4; // type:func -EnExItem_Update = 0x80AD9F34; // type:func -EnExItem_Draw = 0x80AD9F88; // type:func -EnExItem_DrawItems = 0x80ADA038; // type:func -EnExItem_DrawHeartPiece = 0x80ADA09C; // type:func -EnExItem_DrawMagic = 0x80ADA0D0; // type:func -EnExItem_DrawKey = 0x80ADA118; // type:func -EnExItem_DrawRupee = 0x80ADA208; // type:func -BgJyaIronobj_InitCylinder = 0x80ADA5C0; // type:func -BgJyaIronobj_SpawnPillarParticles = 0x80ADA640; // type:func -BgJyaIronobj_SpawnThroneParticles = 0x80ADAABC; // type:func -BgJyaIronobj_Init = 0x80ADAEE8; // type:func -BgJyaIronobj_Destroy = 0x80ADAF7C; // type:func -func_808992D8 = 0x80ADAFC4; // type:func -func_808992E8 = 0x80ADAFD8; // type:func -BgJyaIronobj_Update = 0x80ADB118; // type:func -BgJyaIronobj_Draw = 0x80ADB13C; // type:func -En_Js_SetupAction = 0x80ADB370; // type:func -EnJs_Init = 0x80ADB37C; // type:func -EnJs_Destroy = 0x80ADB4A0; // type:func -func_80A88F64 = 0x80ADB4CC; // type:func -func_80A89008 = 0x80ADB574; // type:func -func_80A89078 = 0x80ADB5E8; // type:func -func_80A890C0 = 0x80ADB634; // type:func -func_80A8910C = 0x80ADB684; // type:func -func_80A89160 = 0x80ADB6D8; // type:func -func_80A891C4 = 0x80ADB740; // type:func -func_80A89294 = 0x80ADB814; // type:func -func_80A89304 = 0x80ADB888; // type:func -EnJs_Update = 0x80ADB8C0; // type:func -EnJs_OverrideLimbDraw = 0x80ADBB4C; // type:func -EnJs_PostLimbDraw = 0x80ADBB84; // type:func -EnJs_Draw = 0x80ADBBC4; // type:func -EnJsjutan_Init = 0x80ADBD40; // type:func -EnJsjutan_Destroy = 0x80ADBDD4; // type:func -func_80A89860 = 0x80ADBE08; // type:func -func_80A89A6C = 0x80ADC014; // type:func -EnJsjutan_Update = 0x80ADCAF4; // type:func -EnJsjutan_Draw = 0x80ADCBCC; // type:func -EnCs_ChangeAnim = 0x80AE1670; // type:func -EnCs_Init = 0x80AE1794; // type:func -EnCs_Destroy = 0x80AE1928; // type:func -EnCs_GetTalkState = 0x80AE1954; // type:func -EnCs_GetTextId = 0x80AE1A88; // type:func -EnCs_HandleTalking = 0x80AE1B0C; // type:func -EnCs_GetwaypointCount = 0x80AE1C58; // type:func -EnCs_GetPathPoint = 0x80AE1C6C; // type:func -EnCs_HandleWalking = 0x80AE1D00; // type:func -EnCs_Walk = 0x80AE1F18; // type:func -EnCs_Wait = 0x80AE20B8; // type:func -EnCs_Talk = 0x80AE2144; // type:func -EnCs_Update = 0x80AE2208; // type:func -EnCs_Draw = 0x80AE2378; // type:func -EnCs_OverrideLimbDraw = 0x80AE252C; // type:func -EnCs_PostLimbDraw = 0x80AE25BC; // type:func -EnMd_ReverseAnimation = 0x80AE28A0; // type:func -EnMd_UpdateAnimSequence_IdleToHalt = 0x80AE28C8; // type:func -EnMd_UpdateAnimSequence_HaltToCurious = 0x80AE295C; // type:func -EnMd_UpdateAnimSequence_WalkAway = 0x80AE29F0; // type:func -EnMd_UpdateAnimSequence_TwitchIdle_Unused = 0x80AE2AC8; // type:func -EnMd_UpdateAnimSequence_HaltToIdle = 0x80AE2B5C; // type:func -EnMd_UpdateAnimSequence_SurpriseToAnnoyed = 0x80AE2BF8; // type:func -EnMd_UpdateAnimSequence_SurpriseToIdle = 0x80AE2C8C; // type:func -EnMd_UpdateAnimSequence_CuriousToAnnoyed = 0x80AE2D28; // type:func -EnMd_UpdateAnimSequence_AnnoyedToHalt = 0x80AE2DBC; // type:func -EnMd_UpdateAnimSequence_IdleToAnnoyed = 0x80AE2E50; // type:func -EnMd_UpdateAnimSequence_StopWalking = 0x80AE2EE4; // type:func -EnMd_SetAnimSequence = 0x80AE2F80; // type:func -EnMd_UpdateAnimSequence = 0x80AE2F98; // type:func -EnMd_UpdateAnimSequence_WithTalking = 0x80AE3080; // type:func -EnMd_TrackMessageState = 0x80AE32D4; // type:func -EnMd_GetTextIdKokiriForest = 0x80AE3354; // type:func -EnMd_GetTextIdMidosHouse = 0x80AE343C; // type:func -EnMd_GetTextIdLostWoods = 0x80AE3470; // type:func -EnMd_GetTextId = 0x80AE34F0; // type:func -EnMd_UpdateTalkState = 0x80AE3560; // type:func -EnMd_ShouldSpawn = 0x80AE3698; // type:func -EnMd_UpdateEyes = 0x80AE373C; // type:func -EnMd_UpdateTalking = 0x80AE37B4; // type:func -EnMd_FollowPath = 0x80AE39D0; // type:func -EnMd_SetMovedPos = 0x80AE3B3C; // type:func -EnMd_UpdateAlphaByDistance = 0x80AE3C04; // type:func -EnMd_Init = 0x80AE3CB0; // type:func -EnMd_Destroy = 0x80AE3EAC; // type:func -EnMd_Idle = 0x80AE3ED8; // type:func -EnMd_Watch = 0x80AE3F5C; // type:func -EnMd_BlockPath = 0x80AE3FAC; // type:func -EnMd_ListenToOcarina = 0x80AE427C; // type:func -EnMd_Walk = 0x80AE4378; // type:func -EnMd_Update = 0x80AE44A0; // type:func -EnMd_OverrideLimbDraw = 0x80AE4560; // type:func -EnMd_PostLimbDraw = 0x80AE477C; // type:func -EnMd_Draw = 0x80AE47D8; // type:func -EnHy_FindSkelAndHeadObjects = 0x80AE4F10; // type:func -EnHy_AreSkelAndHeadObjectsLoaded = 0x80AE5024; // type:func -EnHy_FindOsAnimeObject = 0x80AE50AC; // type:func -EnHy_IsOsAnimeObjectLoaded = 0x80AE50FC; // type:func -EnHy_GiveItem = 0x80AE513C; // type:func -EnHy_GetTextId = 0x80AE5180; // type:func -EnHy_UpdateTalkState = 0x80AE59C8; // type:func -EnHy_UpdateEyes = 0x80AE5F14; // type:func -EnHy_InitCollider = 0x80AE5FD0; // type:func -EnHy_InitSetProperties = 0x80AE600C; // type:func -EnHy_UpdateCollider = 0x80AE60A4; // type:func -EnHy_OfferBuyBottledItem = 0x80AE61A8; // type:func -EnHy_UpdateNPC = 0x80AE62F0; // type:func -EnHy_ShouldSpawn = 0x80AE6460; // type:func -EnHy_Init = 0x80AE66FC; // type:func -EnHy_Destroy = 0x80AE678C; // type:func -EnHy_WaitForObjects = 0x80AE67B8; // type:func -EnHy_WatchDog = 0x80AE6A84; // type:func -EnHy_Walk = 0x80AE6B40; // type:func -EnHy_Fidget = 0x80AE6C0C; // type:func -EnHy_DoNothing = 0x80AE6C44; // type:func -EnHy_SetupPace = 0x80AE6C54; // type:func -EnHy_Pace = 0x80AE6CE0; // type:func -EnHy_WaitDogFoundRewardGiven = 0x80AE6E5C; // type:func -EnHy_FinishGivingDogFoundReward = 0x80AE6ECC; // type:func -EnHy_Update = 0x80AE6F7C; // type:func -EnHy_OverrideLimbDraw = 0x80AE705C; // type:func -EnHy_PostLimbDraw = 0x80AE73C8; // type:func -EnHy_SetEnvColor = 0x80AE74D4; // type:func -EnHy_Draw = 0x80AE7540; // type:func -EnGanonMant_Init = 0x80AE8850; // type:func -EnGanonMant_Destroy = 0x80AE886C; // type:func -EnGanonMant_Tear = 0x80AE887C; // type:func -EnGanonMant_UpdateStrand = 0x80AE8AD8; // type:func -EnGanonMant_UpdateVertices = 0x80AE909C; // type:func -EnGanonMant_Update = 0x80AE92C0; // type:func -EnGanonMant_DrawCloak = 0x80AE937C; // type:func -EnGanonMant_Draw = 0x80AE9498; // type:func -EnOkarinaEffect_SetupAction = 0x80AECA80; // type:func -EnOkarinaEffect_Destroy = 0x80AECA8C; // type:func -EnOkarinaEffect_Init = 0x80AECB0C; // type:func -EnOkarinaEffect_TriggerStorm = 0x80AECB54; // type:func -EnOkarinaEffect_ManageStorm = 0x80AECBE0; // type:func -EnOkarinaEffect_Update = 0x80AECDB0; // type:func -EnMag_ResetSram = 0x80AECE40; // type:func -EnMag_Init = 0x80AED004; // type:func -EnMag_Destroy = 0x80AED2A8; // type:func -EnMag_CheckSramResetCode = 0x80AED2B0; // type:func -EnMag_Update = 0x80AED3FC; // type:func -EnMag_DrawTextureI8 = 0x80AEDC5C; // type:func -EnMag_DrawEffectTextures = 0x80AEDE8C; // type:func -EnMag_DrawImageRGBA32 = 0x80AEE2EC; // type:func -EnMag_DrawCharTexture = 0x80AEE744; // type:func -EnMag_DrawInner = 0x80AEE8F8; // type:func -EnMag_Draw = 0x80AEFAC0; // type:func -DoorGerudo_Init = 0x80AF1E80; // type:func -DoorGerudo_Destroy = 0x80AF1F30; // type:func -func_809946BC = 0x80AF1F64; // type:func -func_80994750 = 0x80AF1FFC; // type:func -func_8099485C = 0x80AF2108; // type:func -func_8099496C = 0x80AF2218; // type:func -func_809949C8 = 0x80AF2274; // type:func -DoorGerudo_Update = 0x80AF22D0; // type:func -DoorGerudo_Draw = 0x80AF22F4; // type:func -ElfMsg2_SetupAction = 0x80AF2470; // type:func -ElfMsg2_KillCheck = 0x80AF247C; // type:func -ElfMsg2_Init = 0x80AF25B4; // type:func -ElfMsg2_Destroy = 0x80AF2674; // type:func -ElfMsg2_GetMessageId = 0x80AF2684; // type:func -ElfMsg2_WaitForTextClose = 0x80AF2698; // type:func -ElfMsg2_WaitForTextRead = 0x80AF2718; // type:func -ElfMsg2_WaitUntilActivated = 0x80AF2750; // type:func -ElfMsg2_Update = 0x80AF27CC; // type:func -DemoGt_Destroy = 0x80AF28E0; // type:func -DemoGt_PlayEarthquakeSfx = 0x80AF2928; // type:func -DemoGt_PlayExplosion1Sfx = 0x80AF2948; // type:func -DemoGt_PlayExplosion2Sfx = 0x80AF296C; // type:func -DemoGt_Rumble = 0x80AF2990; // type:func -DemoGt_SpawnDust = 0x80AF29C0; // type:func -func_8097D7D8 = 0x80AF2A50; // type:func -DemoGt_SpawnCloudRing = 0x80AF2BD8; // type:func -DemoGt_SpawnExplosionWithSound = 0x80AF2C38; // type:func -DemoGt_SpawnExplosionNoSound = 0x80AF2CEC; // type:func -func_8097DAC8 = 0x80AF2D40; // type:func -func_8097DD28 = 0x80AF2FA0; // type:func -func_8097DF70 = 0x80AF31E8; // type:func -func_8097E1D4 = 0x80AF344C; // type:func -func_8097E454 = 0x80AF36CC; // type:func -DemoGt_IsCutsceneIdle = 0x80AF391C; // type:func -DemoGt_GetCue = 0x80AF393C; // type:func -func_8097E704 = 0x80AF3988; // type:func -func_8097E744 = 0x80AF39C8; // type:func -func_8097E824 = 0x80AF3AA8; // type:func -func_8097ED64 = 0x80AF3FE4; // type:func -DemoGt_IsCutsceneLayer = 0x80AF401C; // type:func -func_8097EDD8 = 0x80AF4044; // type:func -func_8097EE44 = 0x80AF40BC; // type:func -func_8097EEA8_Init0 = 0x80AF4120; // type:func -func_8097EF00 = 0x80AF4178; // type:func -func_8097EF34 = 0x80AF41AC; // type:func -func_8097EF40 = 0x80AF41BC; // type:func -func_8097F0AC = 0x80AF4314; // type:func -func_8097F19C = 0x80AF43F8; // type:func -func_8097F1D8 = 0x80AF443C; // type:func -func_8097F280 = 0x80AF44E4; // type:func -func_8097F3EC = 0x80AF4658; // type:func -DemoGt_Update0 = 0x80AF4698; // type:func -DemoGt_Update8 = 0x80AF4710; // type:func -DemoGt_Draw1 = 0x80AF4788; // type:func -func_8097F904_Init1 = 0x80AF4B4C; // type:func -func_8097F960 = 0x80AF4BA8; // type:func -func_8097F96C = 0x80AF4BB8; // type:func -func_8097FA1C = 0x80AF4C4C; // type:func -func_8097FAFC = 0x80AF4D14; // type:func -func_8097FC1C = 0x80AF4E1C; // type:func -func_8097FCE4 = 0x80AF4ED0; // type:func -func_8097FD70 = 0x80AF4F4C; // type:func -func_8097FDDC = 0x80AF4FC0; // type:func -func_8097FED8 = 0x80AF50C0; // type:func -DemoGt_Update1 = 0x80AF5100; // type:func -DemoGt_Update9 = 0x80AF5150; // type:func -DemoGt_Draw2 = 0x80AF5198; // type:func -func_80980110_Init2 = 0x80AF52CC; // type:func -func_8098016C = 0x80AF5328; // type:func -func_80980178 = 0x80AF5338; // type:func -func_80980184 = 0x80AF5348; // type:func -func_80980218 = 0x80AF53DC; // type:func -func_809802AC = 0x80AF5470; // type:func -func_8098036C = 0x80AF5534; // type:func -func_80980430 = 0x80AF55FC; // type:func -func_80980504 = 0x80AF56BC; // type:func -func_809805D8 = 0x80AF577C; // type:func -func_809806B8 = 0x80AF5844; // type:func -func_8098078C = 0x80AF5904; // type:func -func_8098085C = 0x80AF59C0; // type:func -func_809809C0 = 0x80AF5B0C; // type:func -func_80980AD4 = 0x80AF5C10; // type:func -func_80980B68 = 0x80AF5C90; // type:func -func_80980BFC = 0x80AF5D10; // type:func -func_80980C90 = 0x80AF5D90; // type:func -func_80980D74 = 0x80AF5E7C; // type:func -DemoGt_Update2 = 0x80AF5EBC; // type:func -DemoGt_Update10 = 0x80AF5F00; // type:func -DemoGt_Draw3 = 0x80AF5F3C; // type:func -func_80980F00_Init5 = 0x80AF5FD8; // type:func -func_80980F58 = 0x80AF6030; // type:func -func_80980F8C = 0x80AF6068; // type:func -func_8098103C = 0x80AF611C; // type:func -DemoGt_Update3 = 0x80AF6180; // type:func -DemoGt_Update11 = 0x80AF61C4; // type:func -DemoGt_Update16 = 0x80AF6200; // type:func -DemoGt_Draw4 = 0x80AF6298; // type:func -func_809813CC_Init6 = 0x80AF6480; // type:func -func_80981424 = 0x80AF64D8; // type:func -func_80981458 = 0x80AF6510; // type:func -func_80981524 = 0x80AF65C8; // type:func -DemoGt_Update4 = 0x80AF662C; // type:func -DemoGt_Update12 = 0x80AF6670; // type:func -DemoGt_Update17 = 0x80AF66AC; // type:func -DemoGt_Draw5 = 0x80AF6744; // type:func -func_809818A4_Init7 = 0x80AF6920; // type:func -func_809818FC = 0x80AF6978; // type:func -func_80981930 = 0x80AF69B0; // type:func -DemoGt_Update5 = 0x80AF6A14; // type:func -DemoGt_Update13 = 0x80AF6A58; // type:func -DemoGt_Update18 = 0x80AF6A94; // type:func -DemoGt_Draw6 = 0x80AF6B2C; // type:func -func_80981C94_Init23 = 0x80AF6CE4; // type:func -func_80981CEC = 0x80AF6D3C; // type:func -func_80981D20 = 0x80AF6D74; // type:func -func_80981DC8 = 0x80AF6E1C; // type:func -DemoGt_Update6 = 0x80AF6E5C; // type:func -DemoGt_Update14 = 0x80AF6EA0; // type:func -DemoGt_Draw7 = 0x80AF6EE4; // type:func -func_80982054_Init24 = 0x80AF707C; // type:func -func_809820AC = 0x80AF70D4; // type:func -func_809820E0 = 0x80AF710C; // type:func -func_80982188 = 0x80AF71B4; // type:func -DemoGt_Update7 = 0x80AF71F4; // type:func -DemoGt_Update15 = 0x80AF7238; // type:func -DemoGt_Draw8 = 0x80AF727C; // type:func -DemoGt_Update = 0x80AF7418; // type:func -DemoGt_Init = 0x80AF7460; // type:func -DemoGt_Draw0 = 0x80AF7524; // type:func -DemoGt_Draw = 0x80AF7534; // type:func -EnPoField_Init = 0x80AF7EF0; // type:func -EnPoField_Destroy = 0x80AF80F8; // type:func -EnPoField_SetupWaitForSpawn = 0x80AF8158; // type:func -EnPoField_SetupAppear = 0x80AF821C; // type:func -EnPoField_SetupCirclePlayer = 0x80AF833C; // type:func -EnPoField_SetupFlee = 0x80AF83E4; // type:func -EnPoField_SetupDamage = 0x80AF8478; // type:func -EnPoField_SetupDeath = 0x80AF8534; // type:func -EnPoField_SetupDisappear = 0x80AF8588; // type:func -EnPoField_SetupSoulIdle = 0x80AF8600; // type:func -func_80AD42B0 = 0x80AF86B0; // type:func -func_80AD4384 = 0x80AF8784; // type:func -EnPoField_SetupSoulDisappear = 0x80AF883C; // type:func -EnPoField_SetupInteractWithSoul = 0x80AF8850; // type:func -EnPoField_CorrectYPos = 0x80AF8878; // type:func -EnPoField_SetFleeSpeed = 0x80AF895C; // type:func -EnPoField_WaitForSpawn = 0x80AF8A6C; // type:func -EnPoField_Appear = 0x80AF8CD4; // type:func -EnPoField_CirclePlayer = 0x80AF8E70; // type:func -EnPoField_Flee = 0x80AF90B0; // type:func -EnPoField_Damage = 0x80AF9254; // type:func -EnPoField_Death = 0x80AF92E4; // type:func -EnPoField_Disappear = 0x80AF96FC; // type:func -EnPoField_SoulIdle = 0x80AF97FC; // type:func -EnPoField_SoulUpdateProperties = 0x80AF98E0; // type:func -func_80AD587C = 0x80AF9C88; // type:func -func_80AD58D4 = 0x80AF9CE0; // type:func -EnPoField_SoulDisappear = 0x80AF9EE4; // type:func -EnPoField_SoulInteract = 0x80AF9F24; // type:func -EnPoField_TestForDamage = 0x80AFA084; // type:func -EnPoField_SpawnFlame = 0x80AFA11C; // type:func -EnPoField_UpdateFlame = 0x80AFA170; // type:func -EnPoField_DrawFlame = 0x80AFA29C; // type:func -func_80AD619C = 0x80AFA574; // type:func -func_80AD6330 = 0x80AFA708; // type:func -EnPoField_Update = 0x80AFA87C; // type:func -EnPoField_OverrideLimbDraw2 = 0x80AFA9A8; // type:func -EnPoField_PostLimDraw2 = 0x80AFAAB0; // type:func -EnPoField_Draw = 0x80AFACC0; // type:func -EnPoField_UpdateDead = 0x80AFAFA4; // type:func -EnPoField_DrawSoul = 0x80AFB000; // type:func -EfcErupc_SetupAction = 0x80AFB980; // type:func -EfcErupc_Init = 0x80AFB98C; // type:func -EfcErupc_Destroy = 0x80AFB9F8; // type:func -EfcErupc_UpdateAction = 0x80AFBA08; // type:func -EfcErupc_Update = 0x80AFBC54; // type:func -EfcErupc_Draw = 0x80AFBC90; // type:func -EfcErupc_DrawEffects = 0x80AFBFD0; // type:func -EfcErupc_UpdateEffects = 0x80AFC18C; // type:func -EfcErupc_SpawnEffect = 0x80AFC2B0; // type:func -EfcErupc_InitEffects = 0x80AFC37C; // type:func -BgZg_Destroy = 0x80AFC470; // type:func -func_808C0C50 = 0x80AFC4A4; // type:func -func_808C0C98 = 0x80AFC4EC; // type:func -func_808C0CC8 = 0x80AFC520; // type:func -func_808C0CD4 = 0x80AFC530; // type:func -func_808C0D08 = 0x80AFC564; // type:func -BgZg_Update = 0x80AFC608; // type:func -BgZg_Init = 0x80AFC650; // type:func -func_808C0EEC = 0x80AFC73C; // type:func -BgZg_Draw = 0x80AFC7B8; // type:func -EnHeishi4_Init = 0x80AFC8C0; // type:func -EnHeishi4_Destroy = 0x80AFCAA0; // type:func -func_80A56328 = 0x80AFCACC; // type:func -func_80A563BC = 0x80AFCB60; // type:func -func_80A56544 = 0x80AFCCE8; // type:func -func_80A56614 = 0x80AFCDAC; // type:func -func_80A5673C = 0x80AFCED4; // type:func -func_80A56874 = 0x80AFCFE8; // type:func -func_80A56900 = 0x80AFD074; // type:func -func_80A56994 = 0x80AFD108; // type:func -func_80A56A50 = 0x80AFD1C4; // type:func -func_80A56ACC = 0x80AFD240; // type:func -func_80A56B40 = 0x80AFD2B4; // type:func -EnHeishi4_Update = 0x80AFD428; // type:func -EnHeishi_OverrideLimbDraw = 0x80AFD58C; // type:func -EnHeishi4_Draw = 0x80AFD5F4; // type:func -func_80B533B0 = 0x80AFD7C0; // type:func -func_80B533FC = 0x80AFD80C; // type:func -EnZl3_Destroy = 0x80AFD850; // type:func -func_80B53468 = 0x80AFD87C; // type:func -func_80B53488 = 0x80AFD89C; // type:func -EnZl3_UpdateEyes = 0x80AFD8E8; // type:func -EnZl3_setEyeIndex = 0x80AFD970; // type:func -EnZl3_setMouthIndex = 0x80AFD988; // type:func -func_80B5357C = 0x80AFD9A0; // type:func -func_80B53614 = 0x80AFDA3C; // type:func -func_80B5366C = 0x80AFDA94; // type:func -func_80B536B4 = 0x80AFDADC; // type:func -func_80B536C4 = 0x80AFDAF0; // type:func -func_80B53764 = 0x80AFDB94; // type:func -func_80B537E8 = 0x80AFDC1C; // type:func -func_80B538B0 = 0x80AFDCE4; // type:func -EnZl3_UpdateSkelAnime = 0x80AFDD80; // type:func -func_80B5396C = 0x80AFDDA4; // type:func -func_80B53974 = 0x80AFDDB0; // type:func -func_80B53980 = 0x80AFDDC4; // type:func -func_80B53B64 = 0x80AFDFAC; // type:func -func_80B54360 = 0x80AFE7BC; // type:func -func_80B5458C = 0x80AFE9EC; // type:func -EnZl3_PostLimbDraw = 0x80AFF0E8; // type:func -func_80B54DB4 = 0x80AFF1B4; // type:func -func_80B54DC4 = 0x80AFF1C8; // type:func -func_80B54DD4 = 0x80AFF1DC; // type:func -func_80B54DE0 = 0x80AFF1EC; // type:func -func_80B54E14 = 0x80AFF224; // type:func -func_80B54EA4 = 0x80AFF2B4; // type:func -func_80B54EF4 = 0x80AFF308; // type:func -func_80B54F18 = 0x80AFF330; // type:func -func_80B54FB4 = 0x80AFF3D0; // type:func -func_80B55054 = 0x80AFF454; // type:func -func_80B550F0 = 0x80AFF4F4; // type:func -func_80B55144 = 0x80AFF548; // type:func -func_80B551E0 = 0x80AFF5E8; // type:func -func_80B55220 = 0x80AFF628; // type:func -func_80B55268 = 0x80AFF670; // type:func -func_80B552A8 = 0x80AFF6B0; // type:func -func_80B552DC = 0x80AFF6E4; // type:func -func_80B55334 = 0x80AFF740; // type:func -func_80B55368 = 0x80AFF774; // type:func -func_80B553B4 = 0x80AFF7C0; // type:func -func_80B553E8 = 0x80AFF7F4; // type:func -func_80B55408 = 0x80AFF814; // type:func -func_80B55444 = 0x80AFF850; // type:func -func_80B55550 = 0x80AFF954; // type:func -func_80B555A4 = 0x80AFF9B0; // type:func -func_80B55604 = 0x80AFFA18; // type:func -func_80B5566C = 0x80AFFA88; // type:func -func_80B556CC = 0x80AFFAF0; // type:func -func_80B5572C = 0x80AFFB58; // type:func -func_80B55780 = 0x80AFFBB4; // type:func -func_80B55808 = 0x80AFFC18; // type:func -func_80B5582C = 0x80AFFC40; // type:func -func_80B5585C = 0x80AFFC70; // type:func -func_80B558A8 = 0x80AFFCBC; // type:func -func_80B559C4 = 0x80AFFDDC; // type:func -func_80B55A58 = 0x80AFFE6C; // type:func -func_80B55A84 = 0x80AFFE98; // type:func -func_80B55AC4 = 0x80AFFED8; // type:func -func_80B55B04 = 0x80AFFF18; // type:func -func_80B55B38 = 0x80AFFF4C; // type:func -func_80B55B78 = 0x80AFFF8C; // type:func -func_80B55BAC = 0x80AFFFC0; // type:func -func_80B55C0C = 0x80B00024; // type:func -func_80B55C4C = 0x80B00064; // type:func -func_80B55C70 = 0x80B0008C; // type:func -func_80B55CCC = 0x80B000E4; // type:func -func_80B55D00 = 0x80B00118; // type:func -func_80B55DB0 = 0x80B001CC; // type:func -func_80B55E08 = 0x80B00224; // type:func -func_80B55E48 = 0x80B00264; // type:func -func_80B55E7C = 0x80B00298; // type:func -func_80B55EBC = 0x80B002D8; // type:func -func_80B55EF0 = 0x80B0030C; // type:func -func_80B55F38 = 0x80B00354; // type:func -func_80B55F6C = 0x80B00388; // type:func -func_80B5604C = 0x80B0046C; // type:func -func_80B56090 = 0x80B004B0; // type:func -func_80B56108 = 0x80B0052C; // type:func -func_80B56160 = 0x80B00584; // type:func -func_80B561A0 = 0x80B005C4; // type:func -func_80B561E0 = 0x80B00604; // type:func -func_80B56214 = 0x80B00638; // type:func -func_80B562F4 = 0x80B0071C; // type:func -func_80B5634C = 0x80B00774; // type:func -func_80B5638C = 0x80B007B4; // type:func -func_80B563C0 = 0x80B007E8; // type:func -func_80B56400 = 0x80B00828; // type:func -func_80B56434 = 0x80B0085C; // type:func -func_80B56474 = 0x80B0089C; // type:func -func_80B564A8 = 0x80B008D0; // type:func -func_80B56658 = 0x80B00A70; // type:func -func_80B566AC = 0x80B00ACC; // type:func -func_80B5670C = 0x80B00B34; // type:func -func_80B5676C = 0x80B00B9C; // type:func -func_80B567CC = 0x80B00C04; // type:func -func_80B5682C = 0x80B00C6C; // type:func -func_80B568B4 = 0x80B00CFC; // type:func -func_80B5691C = 0x80B00D6C; // type:func -func_80B5697C = 0x80B00DD4; // type:func -func_80B569E4 = 0x80B00E44; // type:func -func_80B56A68 = 0x80B00ED0; // type:func -func_80B56AE0 = 0x80B00F50; // type:func -func_80B56B54 = 0x80B00FCC; // type:func -func_80B56BA8 = 0x80B01028; // type:func -func_80B56C24 = 0x80B010AC; // type:func -func_80B56C84 = 0x80B01114; // type:func -func_80B56CE4 = 0x80B0117C; // type:func -func_80B56D44 = 0x80B011E4; // type:func -func_80B56DA4 = 0x80B0124C; // type:func -func_80B56DC8 = 0x80B01270; // type:func -func_80B56DEC = 0x80B01298; // type:func -func_80B56E38 = 0x80B012E4; // type:func -func_80B56EB8 = 0x80B01364; // type:func -func_80B56EE4 = 0x80B01394; // type:func -func_80B56F10 = 0x80B013C4; // type:func -func_80B56F8C = 0x80B01418; // type:func -func_80B56FAC = 0x80B01438; // type:func -func_80B57034 = 0x80B014C4; // type:func -func_80B57104 = 0x80B01598; // type:func -func_80B571A8 = 0x80B01640; // type:func -func_80B571FC = 0x80B01694; // type:func -func_80B57240 = 0x80B016D8; // type:func -func_80B57298 = 0x80B01730; // type:func -func_80B572F0 = 0x80B01788; // type:func -func_80B57324 = 0x80B017C0; // type:func -func_80B57350 = 0x80B017EC; // type:func -func_80B573C8 = 0x80B01864; // type:func -func_80B573FC = 0x80B01898; // type:func -func_80B57458 = 0x80B018F4; // type:func -func_80B57564 = 0x80B01A04; // type:func -func_80B575B0 = 0x80B01A58; // type:func -func_80B575D0 = 0x80B01A78; // type:func -func_80B575F0 = 0x80B01A98; // type:func -func_80B5764C = 0x80B01AF4; // type:func -func_80B576C8 = 0x80B01B74; // type:func -func_80B57704 = 0x80B01BB8; // type:func -func_80B5772C = 0x80B01BE4; // type:func -func_80B57754 = 0x80B01C10; // type:func -func_80B577BC = 0x80B01C7C; // type:func -func_80B57858 = 0x80B01D1C; // type:func -func_80B57890 = 0x80B01D58; // type:func -func_80B57A74 = 0x80B01F40; // type:func -func_80B57AAC = 0x80B01F78; // type:func -func_80B57AE0 = 0x80B01FAC; // type:func -func_80B57C54 = 0x80B02124; // type:func -func_80B57C7C = 0x80B0214C; // type:func -func_80B57C8C = 0x80B02160; // type:func -func_80B57CB4 = 0x80B02188; // type:func -func_80B57D60 = 0x80B02230; // type:func -func_80B57D80 = 0x80B02254; // type:func -func_80B57EAC = 0x80B0238C; // type:func -func_80B57EEC = 0x80B023D4; // type:func -func_80B57F1C = 0x80B02408; // type:func -func_80B57F84 = 0x80B02474; // type:func -func_80B58014 = 0x80B0250C; // type:func -func_80B58214 = 0x80B02718; // type:func -func_80B58268 = 0x80B02770; // type:func -func_80B582C8 = 0x80B027D0; // type:func -func_80B584B4 = 0x80B029BC; // type:func -func_80B58624 = 0x80B02B2C; // type:func -func_80B5884C = 0x80B02D5C; // type:func -func_80B58898 = 0x80B02DA8; // type:func -func_80B588E8 = 0x80B02DF8; // type:func -func_80B58938 = 0x80B02E48; // type:func -func_80B5899C = 0x80B02EB0; // type:func -func_80B58A1C = 0x80B02F30; // type:func -func_80B58A50 = 0x80B02F6C; // type:func -func_80B58AAC = 0x80B02FCC; // type:func -func_80B58C08 = 0x80B03128; // type:func -func_80B58D50 = 0x80B03270; // type:func -func_80B58DB0 = 0x80B032D8; // type:func -func_80B58E10 = 0x80B03340; // type:func -func_80B58E7C = 0x80B033B4; // type:func -func_80B58EF4 = 0x80B03434; // type:func -func_80B58F6C = 0x80B034B4; // type:func -func_80B58FDC = 0x80B0352C; // type:func -func_80B5904C = 0x80B035A4; // type:func -func_80B590BC = 0x80B0361C; // type:func -func_80B5912C = 0x80B03694; // type:func -func_80B591BC = 0x80B0372C; // type:func -func_80B5922C = 0x80B037A4; // type:func -func_80B592A8 = 0x80B03828; // type:func -func_80B59340 = 0x80B038C8; // type:func -func_80B593D0 = 0x80B03960; // type:func -func_80B5944C = 0x80B039E4; // type:func -func_80B59698 = 0x80B03BE0; // type:func -func_80B59768 = 0x80B03CB0; // type:func -func_80B59828 = 0x80B03D70; // type:func -func_80B59A80 = 0x80B03FD0; // type:func -func_80B59AD0 = 0x80B04020; // type:func -func_80B59B6C = 0x80B040BC; // type:func -func_80B59DB8 = 0x80B04304; // type:func -EnZl3_Update = 0x80B04374; // type:func -EnZl3_Init = 0x80B043BC; // type:func -EnZl3_OverrideLimbDraw = 0x80B0447C; // type:func -func_80B59FE8 = 0x80B044E4; // type:func -func_80B59FF4 = 0x80B044F4; // type:func -func_80B5A1D0 = 0x80B046A0; // type:func -EnZl3_Draw = 0x80B04848; // type:func -BossGanon2_InitRand = 0x80B05610; // type:func -BossGanon2_RandZeroOne = 0x80B05630; // type:func -func_808FD080 = 0x80B05758; // type:func -BossGanon2_SetObjectSegment = 0x80B057E8; // type:func -func_808FD210 = 0x80B0589C; // type:func -func_808FD27C = 0x80B0590C; // type:func -BossGanon2_Init = 0x80B059EC; // type:func -BossGanon2_Destroy = 0x80B05B1C; // type:func -func_808FD4D4 = 0x80B05B6C; // type:func -func_808FD5C4 = 0x80B05C5C; // type:func -func_808FD5F4 = 0x80B05C90; // type:func -func_808FF898 = 0x80B07F40; // type:func -func_808FFA24 = 0x80B080CC; // type:func -func_808FFAC8 = 0x80B08170; // type:func -func_808FFBBC = 0x80B08268; // type:func -func_808FFC84 = 0x80B08334; // type:func -func_808FFCFC = 0x80B083AC; // type:func -func_808FFDB0 = 0x80B08460; // type:func -func_808FFEBC = 0x80B08570; // type:func -func_808FFF90 = 0x80B08644; // type:func -func_808FFFE0 = 0x80B08694; // type:func -func_809000A0 = 0x80B08754; // type:func -func_80900104 = 0x80B087B4; // type:func -func_80900210 = 0x80B088C0; // type:func -func_8090026C = 0x80B0891C; // type:func -func_809002CC = 0x80B08980; // type:func -func_80900344 = 0x80B089F4; // type:func -func_80900580 = 0x80B08C30; // type:func -func_80900650 = 0x80B08D00; // type:func -func_80900818 = 0x80B08EC8; // type:func -func_80900890 = 0x80B08F40; // type:func -func_80901020 = 0x80B096D4; // type:func -func_8090109C = 0x80B09750; // type:func -func_8090120C = 0x80B098C0; // type:func -func_80902348 = 0x80B0AA04; // type:func -BossGanon2_CollisionCheck = 0x80B0ABE4; // type:func -BossGanon2_Update = 0x80B0AED8; // type:func -func_809034E4 = 0x80B0BBA4; // type:func -func_80903F38 = 0x80B0C5F8; // type:func -func_80904108 = 0x80B0C784; // type:func -func_80904340 = 0x80B0C988; // type:func -func_8090464C = 0x80B0CC78; // type:func -BossGanon2_OverrideLimbDraw = 0x80B0CE0C; // type:func -BossGanon2_PostLimbDraw = 0x80B0CF44; // type:func -func_80904D88 = 0x80B0D308; // type:func -func_80904FC8 = 0x80B0D50C; // type:func -func_8090523C = 0x80B0D730; // type:func -BossGanon2_PostLimbDraw2 = 0x80B0D9C0; // type:func -func_80905674 = 0x80B0DAEC; // type:func -BossGanon2_Draw = 0x80B0DD34; // type:func -BossGanon2_UpdateEffects = 0x80B0E1B4; // type:func -BossGanon2_DrawEffects = 0x80B0E4F8; // type:func -func_80906538 = 0x80B0E8F0; // type:func -BossGanon2_GenShadowTexture = 0x80B0EDB0; // type:func -BossGanon2_DrawShadowTexture = 0x80B0EE68; // type:func -EnKakasi_Destroy = 0x80B18480; // type:func -EnKakasi_Init = 0x80B184AC; // type:func -func_80A8F28C = 0x80B18574; // type:func -func_80A8F320 = 0x80B18608; // type:func -func_80A8F660 = 0x80B18948; // type:func -func_80A8F75C = 0x80B18A44; // type:func -func_80A8F8D0 = 0x80B18BC0; // type:func -func_80A8F9C8 = 0x80B18CAC; // type:func -func_80A8FAA4 = 0x80B18D8C; // type:func -func_80A8FBB8 = 0x80B18E90; // type:func -EnKakasi_Update = 0x80B18F28; // type:func -EnKakasi_Draw = 0x80B1902C; // type:func -EnTakaraMan_Destroy = 0x80B191C0; // type:func -EnTakaraMan_Init = 0x80B191D0; // type:func -func_80B176E0 = 0x80B1931C; // type:func -func_80B1778C = 0x80B193C8; // type:func -func_80B17934 = 0x80B19570; // type:func -func_80B17A6C = 0x80B196A8; // type:func -func_80B17AC4 = 0x80B19704; // type:func -func_80B17B14 = 0x80B19758; // type:func -EnTakaraMan_Update = 0x80B197BC; // type:func -EnTakaraMan_OverrideLimbDraw = 0x80B19894; // type:func -EnTakaraMan_Draw = 0x80B198FC; // type:func -ObjMakeoshihiki_Init = 0x80B19A80; // type:func -ObjMakeoshihiki_Draw = 0x80B19BF4; // type:func -OceffSpot_SetupAction = 0x80B19F10; // type:func -OceffSpot_Init = 0x80B19F1C; // type:func -OceffSpot_Destroy = 0x80B1A078; // type:func -OceffSpot_End = 0x80B1A108; // type:func -OceffSpot_Wait = 0x80B1A1D0; // type:func -OceffSpot_GrowCylinder = 0x80B1A20C; // type:func -OceffSpot_Update = 0x80B1A270; // type:func -OceffSpot_Draw = 0x80B1A548; // type:func -EndTitle_Init = 0x80B1AE40; // type:func -EndTitle_Destroy = 0x80B1AE6C; // type:func -EndTitle_Update = 0x80B1AE74; // type:func -EndTitle_DrawFull = 0x80B1AE7C; // type:func -EndTitle_DrawNintendoLogo = 0x80B1B4D8; // type:func -EnTorch_Init = 0x80B20880; // type:func -DemoEc_Destroy = 0x80B20970; // type:func -DemoEc_Init = 0x80B20994; // type:func -DemoEc_UpdateSkelAnime = 0x80B209DC; // type:func -DemoEc_UpdateBgFlags = 0x80B20A00; // type:func -func_8096D594 = 0x80B20A48; // type:func -func_8096D5D4 = 0x80B20A88; // type:func -func_8096D64C = 0x80B20B00; // type:func -DemoEc_UpdateEyes = 0x80B20B40; // type:func -DemoEc_SetEyeTexIndex = 0x80B20BC8; // type:func -DemoEc_InitSkelAnime = 0x80B20BE0; // type:func -DemoEc_ChangeAnimation = 0x80B20C58; // type:func -DemoEc_AllocColorDList = 0x80B20D14; // type:func -DemoEc_DrawSkeleton = 0x80B20D6C; // type:func -DemoEc_DrawSkeletonCustomColor = 0x80B20EFC; // type:func -DemoEc_UseDrawObject = 0x80B2115C; // type:func -DemoEc_UseAnimationObject = 0x80B211B8; // type:func -DemoEc_GetCue = 0x80B211F0; // type:func -DemoEc_SetStartPosRotFromCue = 0x80B21218; // type:func -DemoEc_InitIngo = 0x80B21298; // type:func -DemoEc_UpdateIngo = 0x80B21338; // type:func -DemoEc_DrawIngo = 0x80B21378; // type:func -DemoEc_InitTalon = 0x80B213AC; // type:func -DemoEc_UpdateTalon = 0x80B2144C; // type:func -DemoEc_DrawTalon = 0x80B2148C; // type:func -DemoEc_InitWindmillMan = 0x80B214C0; // type:func -DemoEc_UpdateWindmillMan = 0x80B21560; // type:func -DemoEc_DrawWindmillMan = 0x80B215A0; // type:func -DemoEc_InitKokiriBoy = 0x80B215D4; // type:func -DemoEc_InitDancingKokiriBoy = 0x80B21674; // type:func -DemoEc_UpdateKokiriBoy = 0x80B21718; // type:func -DemoEc_UpdateDancingKokiriBoy = 0x80B21758; // type:func -DemoEc_DrawKokiriBoy = 0x80B21778; // type:func -DemoEc_InitKokiriGirl = 0x80B217BC; // type:func -DemoEc_InitDancingKokiriGirl = 0x80B2185C; // type:func -DemoEc_UpdateKokiriGirl = 0x80B21900; // type:func -DemoEc_UpdateDancingKokiriGirl = 0x80B21948; // type:func -DemoEc_DrawKokiriGirl = 0x80B21968; // type:func -DemoEc_InitOldMan = 0x80B219BC; // type:func -DemoEc_UpdateOldMan = 0x80B21A5C; // type:func -DemoEc_DrawOldMan = 0x80B21AA4; // type:func -DemoEc_InitBeardedMan = 0x80B21AF8; // type:func -DemoEc_UpdateBeardedMan = 0x80B21B98; // type:func -DemoEc_DrawBeardedMan = 0x80B21BE0; // type:func -DemoEc_InitWoman = 0x80B21C34; // type:func -DemoEc_UpdateWoman = 0x80B21CD4; // type:func -DemoEc_DrawWoman = 0x80B21D1C; // type:func -DemoEc_InitOldWoman = 0x80B21D58; // type:func -DemoEc_UpdateOldWoman = 0x80B21DF8; // type:func -DemoEc_DrawOldWoman = 0x80B21E38; // type:func -DemoEc_InitBossCarpenter = 0x80B21E68; // type:func -DemoEc_UpdateBossCarpenter = 0x80B21F08; // type:func -DemoEc_DrawBossCarpenter = 0x80B21F48; // type:func -DemoEc_InitCarpenter = 0x80B21F74; // type:func -DemoEc_UpdateCarpenter = 0x80B22014; // type:func -DemoEc_CarpenterOverrideLimbDraw = 0x80B22054; // type:func -DemoEc_GetCarpenterPostLimbDList = 0x80B22158; // type:func -DemoEc_CarpenterPostLimbDraw = 0x80B221C0; // type:func -DemoEc_DrawCarpenter = 0x80B22244; // type:func -DemoEc_InitGerudo = 0x80B22280; // type:func -DemoEc_UpdateGerudo = 0x80B22324; // type:func -DemoEc_GetGerudoPostLimbDList = 0x80B2236C; // type:func -DemoEc_GerudoPostLimbDraw = 0x80B223C0; // type:func -DemoEc_DrawGerudo = 0x80B22444; // type:func -DemoEc_InitDancingZora = 0x80B22488; // type:func -DemoEc_UpdateDancingZora = 0x80B2252C; // type:func -DemoEc_DrawDancingZora = 0x80B22574; // type:func -DemoEc_InitKingZora = 0x80B225B0; // type:func -func_8096F1D4 = 0x80B22660; // type:func -func_8096F224 = 0x80B226B0; // type:func -func_8096F26C = 0x80B226F8; // type:func -func_8096F2B0 = 0x80B22740; // type:func -DemoEc_UpdateKingZora = 0x80B227A4; // type:func -func_8096F378 = 0x80B2280C; // type:func -func_8096F3D4 = 0x80B2286C; // type:func -DemoEc_DrawKingZora = 0x80B228B4; // type:func -DemoEc_InitMido = 0x80B228F0; // type:func -func_8096F4FC = 0x80B229A0; // type:func -func_8096F544 = 0x80B229E8; // type:func -func_8096F578 = 0x80B22A1C; // type:func -DemoEc_UpdateMido = 0x80B22A80; // type:func -func_8096F640 = 0x80B22AE8; // type:func -DemoEc_DrawMido = 0x80B22B48; // type:func -DemoEc_InitCucco = 0x80B22B84; // type:func -DemoEc_UpdateCucco = 0x80B22C54; // type:func -DemoEc_DrawCucco = 0x80B22C94; // type:func -DemoEc_InitCuccoLady = 0x80B22CC0; // type:func -DemoEc_UpdateCuccoLady = 0x80B22D64; // type:func -DemoEc_DrawCuccoLady = 0x80B22DAC; // type:func -DemoEc_InitPotionShopOwner = 0x80B22DE8; // type:func -DemoEc_UpdatePotionShopOwner = 0x80B22E8C; // type:func -DemoEc_DrawPotionShopOwner = 0x80B22ED4; // type:func -DemoEc_InitMaskShopOwner = 0x80B22F10; // type:func -DemoEc_UpdateMaskShopOwner = 0x80B22FB4; // type:func -DemoEc_DrawMaskShopOwner = 0x80B22FF4; // type:func -DemoEc_InitFishingOwner = 0x80B23024; // type:func -DemoEc_UpdateFishingOwner = 0x80B230C8; // type:func -DemoEc_FishingOwnerPostLimbDraw = 0x80B23110; // type:func -DemoEc_DrawFishingOwner = 0x80B23190; // type:func -DemoEc_InitBombchuShopOwner = 0x80B231D4; // type:func -DempEc_UpdateBombchuShopOwner = 0x80B23278; // type:func -DemoEc_DrawBombchuShopOwner = 0x80B232C0; // type:func -DemoEc_InitGorons = 0x80B232FC; // type:func -DemoEc_UpdateGorons = 0x80B23434; // type:func -DemoEc_DrawGorons = 0x80B2347C; // type:func -DemoEc_InitMalon = 0x80B234BC; // type:func -DemoEc_UpdateMalon = 0x80B23560; // type:func -DemoEc_DrawMalon = 0x80B235A8; // type:func -DemoEc_InitNpc = 0x80B235E8; // type:func -DemoEc_InitCommon = 0x80B23634; // type:func -DemoEc_Update = 0x80B23708; // type:func -DemoEc_DrawCommon = 0x80B23780; // type:func -DemoEc_Draw = 0x80B23790; // type:func -ShotSun_Init = 0x80B241D0; // type:func -ShotSun_Destroy = 0x80B2428C; // type:func -ShotSun_SpawnFairy = 0x80B242D0; // type:func -ShotSun_TriggerFairy = 0x80B24378; // type:func -ShotSun_UpdateFairySpawner = 0x80B24414; // type:func -ShotSun_UpdateHyliaSun = 0x80B24564; // type:func -ShotSun_Update = 0x80B2479C; // type:func -EnDyExtra_Destroy = 0x80B24890; // type:func -EnDyExtra_Init = 0x80B248A0; // type:func -EnDyExtra_WaitForTrigger = 0x80B24914; // type:func -EnDyExtra_FallAndKill = 0x80B249A8; // type:func -EnDyExtra_Update = 0x80B24A60; // type:func -EnDyExtra_Draw = 0x80B24ACC; // type:func -EnWonderTalk2_Destroy = 0x80B24E30; // type:func -EnWonderTalk2_Init = 0x80B24E40; // type:func -func_80B3A10C = 0x80B24FD0; // type:func -func_80B3A15C = 0x80B25020; // type:func -func_80B3A3D4 = 0x80B251A0; // type:func -func_80B3A4F8 = 0x80B25288; // type:func -EnWonderTalk2_DoNothing = 0x80B253D8; // type:func -EnWonderTalk2_Update = 0x80B253E8; // type:func -EnGe2_ChangeAction = 0x80B254D0; // type:func -EnGe2_Init = 0x80B25578; // type:func -EnGe2_Destroy = 0x80B25790; // type:func -Ge2_DetectPlayerInAction = 0x80B257BC; // type:func -Ge2_DetectPlayerInUpdate = 0x80B25868; // type:func -EnGe2_CheckAllCarpentersRescued = 0x80B25998; // type:func -EnGe2_CaptureClose = 0x80B259C4; // type:func -EnGe2_CaptureCharge = 0x80B25A98; // type:func -EnGe2_CaptureTurn = 0x80B25BCC; // type:func -EnGe2_KnockedOut = 0x80B25C44; // type:func -EnGe2_TurnPlayerSpotted = 0x80B25D3C; // type:func -EnGe2_AboutTurn = 0x80B25E44; // type:func -EnGe2_Walk = 0x80B25EFC; // type:func -EnGe2_Stand = 0x80B25FC4; // type:func -EnGe2_TurnToFacePlayer = 0x80B26004; // type:func -EnGe2_LookAtPlayer = 0x80B2611C; // type:func -EnGe2_SetActionAfterTalk = 0x80B26230; // type:func -EnGe2_WaitLookAtPlayer = 0x80B262F4; // type:func -EnGe2_WaitTillCardGiven = 0x80B26314; // type:func -EnGe2_GiveCard = 0x80B26378; // type:func -EnGe2_ForceTalk = 0x80B2640C; // type:func -EnGe2_SetupCapturePlayer = 0x80B26490; // type:func -EnGe2_MaintainColliderAndSetAnimState = 0x80B26500; // type:func -EnGe2_MoveAndBlink = 0x80B265A8; // type:func -EnGe2_UpdateFriendly = 0x80B26634; // type:func -EnGe2_UpdateAfterTalk = 0x80B2670C; // type:func -EnGe2_Update = 0x80B26760; // type:func -EnGe2_UpdateStunned = 0x80B26948; // type:func -EnGe2_OverrideLimbDraw = 0x80B26A7C; // type:func -EnGe2_PostLimbDraw = 0x80B26AC4; // type:func -EnGe2_Draw = 0x80B26B04; // type:func -ObjRoomtimer_Init = 0x80B26E70; // type:func -ObjRoomtimer_Destroy = 0x80B26EC4; // type:func -func_80B9D054 = 0x80B26EF8; // type:func -func_80B9D0B0 = 0x80B26F58; // type:func -ObjRoomtimer_Update = 0x80B27034; // type:func -EnSsh_SetupAction = 0x80B270C0; // type:func -EnSsh_SpawnShockwave = 0x80B270CC; // type:func -EnSsh_CreateBlureEffect = 0x80B27154; // type:func -EnSsh_CheckCeilingPos = 0x80B27250; // type:func -EnSsh_AddBlureVertex = 0x80B272E8; // type:func -EnSsh_AddBlureSpace = 0x80B273F0; // type:func -EnSsh_InitColliders = 0x80B2741C; // type:func -EnSsh_SetAnimation = 0x80B2755C; // type:func -EnSsh_SetWaitAnimation = 0x80B27690; // type:func -EnSsh_SetReturnAnimation = 0x80B276B0; // type:func -EnSsh_SetLandAnimation = 0x80B276E4; // type:func -EnSsh_SetDropAnimation = 0x80B27728; // type:func -EnSsh_SetStunned = 0x80B27778; // type:func -EnSsh_SetColliderScale = 0x80B277A4; // type:func -EnSsh_Damaged = 0x80B27918; // type:func -EnSsh_Turn = 0x80B279F4; // type:func -EnSsh_Stunned = 0x80B27AC8; // type:func -EnSsh_UpdateYaw = 0x80B27B68; // type:func -EnSsh_Bob = 0x80B27BA4; // type:func -EnSsh_IsCloseToLink = 0x80B27C10; // type:func -EnSsh_IsCloseToHome = 0x80B27CF8; // type:func -EnSsh_IsCloseToGround = 0x80B27D30; // type:func -EnSsh_Sway = 0x80B27D70; // type:func -EnSsh_CheckBodyStickHit = 0x80B27EB4; // type:func -EnSsh_CheckHitPlayer = 0x80B27F28; // type:func -EnSsh_CheckHitFront = 0x80B28030; // type:func -EnSsh_CheckHitBack = 0x80B2808C; // type:func -EnSsh_CollisionCheck = 0x80B28164; // type:func -EnSsh_SetBodyCylinderAC = 0x80B28218; // type:func -EnSsh_SetLegsCylinderAC = 0x80B2825C; // type:func -EnSsh_SetCylinderOC = 0x80B28314; // type:func -EnSsh_SetColliders = 0x80B284EC; // type:func -EnSsh_Init = 0x80B285B4; // type:func -EnSsh_Destroy = 0x80B28748; // type:func -EnSsh_Wait = 0x80B287C8; // type:func -EnSsh_Talk = 0x80B28824; // type:func -EnSsh_Idle = 0x80B28870; // type:func -EnSsh_Land = 0x80B28B08; // type:func -EnSsh_Drop = 0x80B28BF0; // type:func -EnSsh_Return = 0x80B28CF0; // type:func -EnSsh_UpdateColliderScale = 0x80B28DC4; // type:func -EnSsh_Start = 0x80B28E6C; // type:func -EnSsh_Update = 0x80B28EF4; // type:func -EnSsh_OverrideLimbDraw = 0x80B29014; // type:func -EnSsh_PostLimbDraw = 0x80B29104; // type:func -EnSsh_Draw = 0x80B29140; // type:func -EnSth_SetupAction = 0x80B296B0; // type:func -EnSth_Init = 0x80B296BC; // type:func -EnSth_SetupShapeColliderUpdate2AndDraw = 0x80B297B8; // type:func -EnSth_SetupAfterObjectLoaded = 0x80B2983C; // type:func -EnSth_Destroy = 0x80B29960; // type:func -EnSth_WaitForObject = 0x80B2998C; // type:func -EnSth_FacePlayer = 0x80B299E0; // type:func -EnSth_LookAtPlayer = 0x80B29AF8; // type:func -EnSth_RewardObtainedTalk = 0x80B29C0C; // type:func -EnSth_ParentRewardObtainedWait = 0x80B29C88; // type:func -EnSth_GivePlayerItem = 0x80B29D14; // type:func -EnSth_GiveReward = 0x80B29DB0; // type:func -EnSth_RewardUnobtainedTalk = 0x80B29E30; // type:func -EnSth_RewardUnobtainedWait = 0x80B29EAC; // type:func -EnSth_ChildRewardObtainedWait = 0x80B29F50; // type:func -EnSth_Update = 0x80B29FFC; // type:func -EnSth_Update2 = 0x80B2A020; // type:func -EnSth_OverrideLimbDraw = 0x80B2A124; // type:func -EnSth_PostLimbDraw = 0x80B2A280; // type:func -EnSth_AllocColorDList = 0x80B2A2F8; // type:func -EnSth_Draw = 0x80B2A364; // type:func -OceffWipe_Init = 0x80B2D770; // type:func -OceffWipe_Destroy = 0x80B2D7CC; // type:func -OceffWipe_Update = 0x80B2D818; // type:func -OceffWipe_Draw = 0x80B2D878; // type:func -EffectSsDust_Init = 0x80B2E4F0; // type:func -EffectSsDust_Draw = 0x80B2E6A4; // type:func -EffectSsDust_Update = 0x80B2E9EC; // type:func -EffectSsDust_UpdateFire = 0x80B2EAE4; // type:func -EffectSsKiraKira_Init = 0x80B2ED30; // type:func -EffectSsKiraKira_Draw = 0x80B2EED0; // type:func -func_809AABF0 = 0x80B2F0EC; // type:func -func_809AACAC = 0x80B2F1A4; // type:func -func_809AAD6C = 0x80B2F260; // type:func -EffectSsBomb_Init = 0x80B2F3A0; // type:func -EffectSsBomb_Draw = 0x80B2F468; // type:func -EffectSsBomb_Update = 0x80B2F6A0; // type:func -EffectSsBomb2_Init = 0x80B2F7D0; // type:func -EffectSsBomb2_DrawFade = 0x80B2F8C8; // type:func -EffectSsBomb2_DrawLayered = 0x80B2FAB8; // type:func -EffectSsBomb2_Update = 0x80B2FDEC; // type:func -EffectSsBlast_Init = 0x80B300D0; // type:func -EffectSsBlast_Draw = 0x80B3022C; // type:func -EffectSsBlast_Update = 0x80B30398; // type:func -EffectSsGSpk_Init = 0x80B30460; // type:func -EffectSsGSpk_Draw = 0x80B305D0; // type:func -EffectSsGSpk_Update = 0x80B307C4; // type:func -EffectSsGSpk_UpdateNoAccel = 0x80B308CC; // type:func -EffectSsDFire_Init = 0x80B30A10; // type:func -EffectSsDFire_Draw = 0x80B30B5C; // type:func -EffectSsDFire_Update = 0x80B30DA4; // type:func -EffectSsBubble_Init = 0x80B30F00; // type:func -EffectSsBubble_Draw = 0x80B31090; // type:func -EffectSsBubble_Update = 0x80B311E4; // type:func -EffectSsGRipple_Init = 0x80B31380; // type:func -EffectSsGRipple_DrawRipple = 0x80B314FC; // type:func -EffectSsGRipple_Draw = 0x80B316F8; // type:func -EffectSsGRipple_Update = 0x80B31730; // type:func -EffectSsGSplash_Init = 0x80B318E0; // type:func -EffectSsGSplash_Draw = 0x80B31B00; // type:func -EffectSsGSplash_Update = 0x80B31C08; // type:func -EffectSsGMagma_Init = 0x80B31D90; // type:func -EffectSsGMagma_Draw = 0x80B31EE8; // type:func -EffectSsGMagma_Update = 0x80B31F44; // type:func -EffectSsGFire_Init = 0x80B31FF0; // type:func -EffectSsGFire_Draw = 0x80B32130; // type:func -EffectSsGFire_Update = 0x80B321D8; // type:func -EffectSsLightning_Init = 0x80B32280; // type:func -EffectSsLightning_NewLightning = 0x80B32368; // type:func -EffectSsLightning_Draw = 0x80B3240C; // type:func -EffectSsLightning_Update = 0x80B326A4; // type:func -EffectSsDtBubble_Init = 0x80B32950; // type:func -EffectSsDtBubble_Draw = 0x80B32BA4; // type:func -EffectSsDtBubble_Update = 0x80B32DE4; // type:func -EffectSsHahen_CheckForObject = 0x80B32EE0; // type:func -EffectSsHahen_Init = 0x80B32F54; // type:func -EffectSsHahen_Draw = 0x80B330F0; // type:func -EffectSsHahen_DrawGray = 0x80B33250; // type:func -EffectSsHahen_Update = 0x80B333F8; // type:func -EffectSsStick_Init = 0x80B33520; // type:func -EffectSsStick_Draw = 0x80B33680; // type:func -EffectSsStick_Update = 0x80B33820; // type:func -EffectSsSibuki_Init = 0x80B338C0; // type:func -EffectSsSibuki_Draw = 0x80B33A78; // type:func -EffectSsSibuki_Update = 0x80B33C28; // type:func -EffectSsSibuki2_Init = 0x80B33F90; // type:func -EffectSsSibuki2_Draw = 0x80B34040; // type:func -EffectSsSibuki2_Update = 0x80B34224; // type:func -EffectSsGMagma2_Init = 0x80B342C0; // type:func -EffectSsGMagma2_Draw = 0x80B3448C; // type:func -EffectSsGMagma2_Update = 0x80B346A4; // type:func -EffectSsStone1_Init = 0x80B347D0; // type:func -EffectSsStone1_Draw = 0x80B3485C; // type:func -EffectSsStone1_Update = 0x80B34A58; // type:func -EffectSsHitMark_Init = 0x80B34B50; // type:func -EffectSsHitMark_Draw = 0x80B34C50; // type:func -EffectSsHitMark_Update = 0x80B34E5C; // type:func -EffectSsFhgFlash_Init = 0x80B350A0; // type:func -EffectSsFhgFlash_DrawLightBall = 0x80B353EC; // type:func -EffectSsFhgFlash_DrawShock = 0x80B355E0; // type:func -EffectSsFhgFlash_UpdateLightBall = 0x80B357EC; // type:func -EffectSsFhgFlash_UpdateShock = 0x80B35884; // type:func -EffectSsKFire_Init = 0x80B36020; // type:func -EffectSsKFire_Draw = 0x80B360F0; // type:func -EffectSsKFire_Update = 0x80B36358; // type:func -EffectSsSolderSrchBall_Init = 0x80B36460; // type:func -EffectSsSolderSrchBall_Update = 0x80B364E0; // type:func -EffectSsKakera_Init = 0x80B36610; // type:func -func_809A9818 = 0x80B3679C; // type:func -EffectSsKakera_Draw = 0x80B367D8; // type:func -func_809A9BA8 = 0x80B36AC4; // type:func -func_809A9C10 = 0x80B36B30; // type:func -func_809A9DC0 = 0x80B36CE0; // type:func -func_809A9DD8 = 0x80B36CFC; // type:func -func_809A9DEC = 0x80B36D18; // type:func -func_809A9E28 = 0x80B36D54; // type:func -func_809A9E68 = 0x80B36D94; // type:func -func_809A9E88 = 0x80B36DB4; // type:func -func_809A9F10 = 0x80B36E44; // type:func -func_809A9F4C = 0x80B36E84; // type:func -func_809A9FD8 = 0x80B36F18; // type:func -func_809AA0B8 = 0x80B36FF4; // type:func -func_809AA0EC = 0x80B3702C; // type:func -func_809AA230 = 0x80B37174; // type:func -EffectSsKakera_Update = 0x80B37374; // type:func -EffectSsIcePiece_Init = 0x80B376A0; // type:func -EffectSsIcePiece_Draw = 0x80B377EC; // type:func -EffectSsIcePiece_Update = 0x80B37A20; // type:func -EffectSsEnIce_Init = 0x80B37AE0; // type:func -EffectSsEnIce_Draw = 0x80B37D88; // type:func -EffectSsEnIce_UpdateFlying = 0x80B380F8; // type:func -EffectSsEnIce_Update = 0x80B382D0; // type:func -EffectSsFireTail_Init = 0x80B383A0; // type:func -EffectSsFireTail_Draw = 0x80B384BC; // type:func -EffectSsFireTail_Update = 0x80B389C4; // type:func -EffectSsEnFire_Init = 0x80B38AA0; // type:func -EffectSsEnFire_Draw = 0x80B38C68; // type:func -EffectSsEnFire_Update = 0x80B38F70; // type:func -EffectSsExtra_Init = 0x80B391F0; // type:func -EffectSsExtra_Draw = 0x80B39334; // type:func -EffectSsExtra_Update = 0x80B394E8; // type:func -EffectSsFcircle_Init = 0x80B395B0; // type:func -EffectSsFcircle_Draw = 0x80B39670; // type:func -EffectSsFcircle_Update = 0x80B3993C; // type:func -EffectSsDeadDb_Init = 0x80B39A60; // type:func -EffectSsDeadDb_Draw = 0x80B39B7C; // type:func -EffectSsDeadDb_Update = 0x80B39D50; // type:func -EffectSsDeadDd_Init = 0x80B39F40; // type:func -EffectSsDeadDd_Draw = 0x80B3A208; // type:func -EffectSsDeadDd_Update = 0x80B3A3D8; // type:func -EffectSsDeadDs_Init = 0x80B3A4D0; // type:func -EffectSsDeadDs_Draw = 0x80B3A5B8; // type:func -EffectSsDeadDs_Update = 0x80B3A88C; // type:func -EffectSsDeadSound_Init = 0x80B3A950; // type:func -EffectSsDeadSound_Update = 0x80B3A9DC; // type:func -OceffStorm_SetupAction = 0x80B3AA90; // type:func -OceffStorm_Init = 0x80B3AA9C; // type:func -OceffStorm_Destroy = 0x80B3AB6C; // type:func -OceffStorm_DefaultAction = 0x80B3ABB8; // type:func -OceffStorm_UnkAction = 0x80B3AD7C; // type:func -OceffStorm_Update = 0x80B3AD9C; // type:func -OceffStorm_Draw2 = 0x80B3AE08; // type:func -OceffStorm_Draw = 0x80B3AFB8; // type:func -EnWeiyer_Init = 0x80B3C640; // type:func -EnWeiyer_Destroy = 0x80B3C710; // type:func -func_80B32384 = 0x80B3C73C; // type:func -func_80B32434 = 0x80B3C7F0; // type:func -func_80B32494 = 0x80B3C850; // type:func -func_80B32508 = 0x80B3C8C4; // type:func -func_80B32538 = 0x80B3C8F8; // type:func -func_80B325A0 = 0x80B3C964; // type:func -func_80B32660 = 0x80B3CA24; // type:func -func_80B32724 = 0x80B3CAE8; // type:func -func_80B327B0 = 0x80B3CB74; // type:func -func_80B327D8 = 0x80B3CBA0; // type:func -func_80B32804 = 0x80B3CBD0; // type:func -func_80B328E8 = 0x80B3CCB4; // type:func -func_80B32C2C = 0x80B3CFF8; // type:func -func_80B32D30 = 0x80B3D0FC; // type:func -func_80B32DEC = 0x80B3D1B8; // type:func -func_80B32E34 = 0x80B3D204; // type:func -func_80B33018 = 0x80B3D3EC; // type:func -func_80B331CC = 0x80B3D5A0; // type:func -func_80B332B4 = 0x80B3D688; // type:func -func_80B33338 = 0x80B3D70C; // type:func -func_80B333B8 = 0x80B3D78C; // type:func -func_80B3349C = 0x80B3D870; // type:func -func_80B3368C = 0x80B3DA64; // type:func -EnWeiyer_Update = 0x80B3DB44; // type:func -EnWeiyer_OverrideLimbDraw = 0x80B3DCB8; // type:func -EnWeiyer_Draw = 0x80B3DCE8; // type:func -BgSpot05Soko_Init = 0x80B3E040; // type:func -BgSpot05Soko_Destroy = 0x80B3E14C; // type:func -func_808AE5A8 = 0x80B3E180; // type:func -func_808AE5B4 = 0x80B3E190; // type:func -func_808AE630 = 0x80B3E20C; // type:func -BgSpot05Soko_Update = 0x80B3E274; // type:func -BgSpot05Soko_Draw = 0x80B3E298; // type:func -BgJya1flift_InitDynapoly = 0x80B3E360; // type:func -BgJya1flift_InitCollision = 0x80B3E3B8; // type:func -BgJya1flift_Init = 0x80B3E40C; // type:func -BgJya1flift_Destroy = 0x80B3E504; // type:func -BgJya1flift_SetupWaitForSwitch = 0x80B3E55C; // type:func -BgJya1flift_WaitForSwitch = 0x80B3E57C; // type:func -BgJya1flift_SetupDoNothing = 0x80B3E5C0; // type:func -BgJya1flift_DoNothing = 0x80B3E5E0; // type:func -BgJya1flift_ChangeDirection = 0x80B3E5F0; // type:func -BgJya1flift_Move = 0x80B3E618; // type:func -BgJya1flift_ResetMoveDelay = 0x80B3E6FC; // type:func -BgJya1flift_DelayMove = 0x80B3E714; // type:func -BgJya1flift_Update = 0x80B3E754; // type:func -BgJya1flift_Draw = 0x80B3E870; // type:func -BgJyaHaheniron_ColliderInit = 0x80B3E9F0; // type:func -BgJyaHaheniron_SpawnFragments = 0x80B3EA44; // type:func -BgJyaHaheniron_Init = 0x80B3EC70; // type:func -BgJyaHaheniron_Destroy = 0x80B3ED3C; // type:func -BgJyaHaheniron_SetupChairCrumble = 0x80B3ED74; // type:func -BgJyaHaheniron_ChairCrumble = 0x80B3ED88; // type:func -BgJyaHaheniron_SetupPillarCrumble = 0x80B3EEC4; // type:func -BgJyaHaheniron_PillarCrumble = 0x80B3EED8; // type:func -BgJyaHaheniron_SetupRubbleCollide = 0x80B3EF58; // type:func -BgJyaHaheniron_RubbleCollide = 0x80B3EF6C; // type:func -BgJyaHaheniron_Update = 0x80B3EFD0; // type:func -BgJyaHaheniron_Draw = 0x80B3EFFC; // type:func -BgSpot12Gate_InitDynaPoly = 0x80B3F1E0; // type:func -BgSpot12Gate_Init = 0x80B3F238; // type:func -BgSpot12Gate_Destroy = 0x80B3F2B8; // type:func -func_808B30C0 = 0x80B3F2EC; // type:func -func_808B30D8 = 0x80B3F308; // type:func -func_808B3134 = 0x80B3F364; // type:func -func_808B314C = 0x80B3F380; // type:func -func_808B317C = 0x80B3F3B0; // type:func -func_808B318C = 0x80B3F3C4; // type:func -func_808B3274 = 0x80B3F4AC; // type:func -func_808B3298 = 0x80B3F4D4; // type:func -BgSpot12Gate_Update = 0x80B3F4E4; // type:func -BgSpot12Gate_Draw = 0x80B3F518; // type:func -func_808B3420 = 0x80B3F5F0; // type:func -BgSpot12Saku_Init = 0x80B3F648; // type:func -BgSpot12Saku_Destroy = 0x80B3F6C8; // type:func -func_808B3550 = 0x80B3F6FC; // type:func -func_808B357C = 0x80B3F72C; // type:func -func_808B35E4 = 0x80B3F794; // type:func -func_808B3604 = 0x80B3F7B4; // type:func -func_808B3714 = 0x80B3F8C4; // type:func -func_808B37AC = 0x80B3F958; // type:func -BgSpot12Saku_Update = 0x80B3F968; // type:func -BgSpot12Saku_Draw = 0x80B3F99C; // type:func -EnHintnuts_Init = 0x80B3FAB0; // type:func -EnHintnuts_Destroy = 0x80B3FC50; // type:func -EnHintnuts_HitByScrubProjectile1 = 0x80B3FC8C; // type:func -EnHintnuts_SetupWait = 0x80B3FD10; // type:func -EnHintnuts_SetupLookAround = 0x80B3FD90; // type:func -EnHintnuts_SetupThrowScrubProjectile = 0x80B3FDD8; // type:func -EnHintnuts_SetupStand = 0x80B3FE18; // type:func -EnHintnuts_SetupBurrow = 0x80B3FE80; // type:func -EnHintnuts_HitByScrubProjectile2 = 0x80B3FED0; // type:func -EnHintnuts_SetupRun = 0x80B3FFC0; // type:func -EnHintnuts_SetupTalk = 0x80B40008; // type:func -EnHintnuts_SetupLeave = 0x80B40054; // type:func -EnHintnuts_SetupFreeze = 0x80B40114; // type:func -EnHintnuts_Wait = 0x80B401C0; // type:func -EnHintnuts_LookAround = 0x80B40424; // type:func -EnHintnuts_Stand = 0x80B404A8; // type:func -EnHintnuts_ThrowNut = 0x80B4056C; // type:func -EnHintnuts_Burrow = 0x80B406A8; // type:func -EnHintnuts_BeginRun = 0x80B407BC; // type:func -EnHintnuts_BeginFreeze = 0x80B40820; // type:func -EnHintnuts_CheckProximity = 0x80B4085C; // type:func -EnHintnuts_Run = 0x80B408F0; // type:func -EnHintnuts_Talk = 0x80B40B80; // type:func -EnHintnuts_Leave = 0x80B40BEC; // type:func -EnHintnuts_Freeze = 0x80B40DA8; // type:func -EnHintnuts_ColliderCheck = 0x80B40ED4; // type:func -EnHintnuts_Update = 0x80B40F88; // type:func -EnHintnuts_OverrideLimbDraw = 0x80B41110; // type:func -EnHintnuts_Draw = 0x80B41244; // type:func -EnNutsball_Init = 0x80B414E0; // type:func -EnNutsball_Destroy = 0x80B4159C; // type:func -func_80ABBB34 = 0x80B415C8; // type:func -func_80ABBBA8 = 0x80B41640; // type:func -EnNutsball_Update = 0x80B41810; // type:func -EnNutsball_Draw = 0x80B4192C; // type:func -BgSpot00Break_Init = 0x80B41B00; // type:func -BgSpot00Break_Destroy = 0x80B41BAC; // type:func -BgSpot00Break_Update = 0x80B41BE0; // type:func -BgSpot00Break_Draw = 0x80B41BF0; // type:func -EnShopnuts_Init = 0x80B41CA0; // type:func -EnShopnuts_Destroy = 0x80B41DDC; // type:func -EnShopnuts_SetupIdle = 0x80B41E08; // type:func -EnShopnuts_SetupLookAround = 0x80B41E70; // type:func -EnShopnuts_SetupThrowNut = 0x80B41EB8; // type:func -EnShopnuts_SetupPeek = 0x80B41EF8; // type:func -EnShopnuts_SetupBurrow = 0x80B41F60; // type:func -EnShopnuts_SetupSpawnSalesman = 0x80B41FB0; // type:func -EnShopnuts_Idle = 0x80B42008; // type:func -EnShopnuts_LookAround = 0x80B4226C; // type:func -EnShopnuts_Peek = 0x80B422F0; // type:func -EnShopnuts_ThrowNut = 0x80B423B4; // type:func -EnShopnuts_Burrow = 0x80B424F0; // type:func -EnShopnuts_SpawnSalesman = 0x80B425B4; // type:func -EnShopnuts_ColliderCheck = 0x80B42650; // type:func -EnShopnuts_Update = 0x80B426B0; // type:func -EnShopnuts_OverrideLimbDraw = 0x80B427F0; // type:func -EnShopnuts_PostLimbDraw = 0x80B42828; // type:func -EnShopnuts_Draw = 0x80B429C8; // type:func -EnIt_Init = 0x80B42BB0; // type:func -EnIt_Destroy = 0x80B42C1C; // type:func -EnIt_Update = 0x80B42C48; // type:func -EnGeldB_SetupAction = 0x80B42D40; // type:func -EnGeldB_Init = 0x80B42D4C; // type:func -EnGeldB_Destroy = 0x80B42F70; // type:func -EnGeldB_ReactToPlayer = 0x80B42FD8; // type:func -EnGeldB_SetupWait = 0x80B433B0; // type:func -EnGeldB_Wait = 0x80B43444; // type:func -EnGeldB_SetupFlee = 0x80B435C8; // type:func -EnGeldB_Flee = 0x80B43660; // type:func -EnGeldB_SetupReady = 0x80B43788; // type:func -EnGeldB_Ready = 0x80B43810; // type:func -EnGeldB_SetupAdvance = 0x80B43AF4; // type:func -EnGeldB_Advance = 0x80B43B74; // type:func -EnGeldB_SetupRollForward = 0x80B44020; // type:func -EnGeldB_RollForward = 0x80B440D4; // type:func -EnGeldB_SetupPivot = 0x80B4422C; // type:func -EnGeldB_Pivot = 0x80B44278; // type:func -EnGeldB_SetupCircle = 0x80B44458; // type:func -EnGeldB_Circle = 0x80B4452C; // type:func -EnGeldB_SetupSpinDodge = 0x80B44B08; // type:func -EnGeldB_SpinDodge = 0x80B44C70; // type:func -EnGeldB_SetupSlash = 0x80B450C0; // type:func -EnGeldB_Slash = 0x80B45130; // type:func -EnGeldB_SetupSpinAttack = 0x80B45380; // type:func -EnGeldB_SpinAttack = 0x80B45414; // type:func -EnGeldB_SetupRollBack = 0x80B457C8; // type:func -EnGeldB_RollBack = 0x80B45844; // type:func -EnGeldB_SetupStunned = 0x80B45948; // type:func -EnGeldB_Stunned = 0x80B459F4; // type:func -EnGeldB_SetupDamaged = 0x80B45AB0; // type:func -EnGeldB_Damaged = 0x80B45B48; // type:func -EnGeldB_SetupJump = 0x80B45CF0; // type:func -EnGeldB_Jump = 0x80B45DA8; // type:func -EnGeldB_SetupBlock = 0x80B45E90; // type:func -EnGeldB_Block = 0x80B45F48; // type:func -EnGeldB_SetupSidestep = 0x80B46234; // type:func -EnGeldB_Sidestep = 0x80B463C4; // type:func -EnGeldB_SetupDefeated = 0x80B46AE4; // type:func -EnGeldB_Defeated = 0x80B46B88; // type:func -EnGeldB_TurnHead = 0x80B46C44; // type:func -EnGeldB_CollisionCheck = 0x80B46D44; // type:func -EnGeldB_Update = 0x80B46F10; // type:func -EnGeldB_OverrideLimbDraw = 0x80B470FC; // type:func -EnGeldB_PostLimbDraw = 0x80B47244; // type:func -EnGeldB_Draw = 0x80B474BC; // type:func -EnGeldB_DodgeRanged = 0x80B4782C; // type:func -OceffWipe2_Init = 0x80B480F0; // type:func -OceffWipe2_Destroy = 0x80B4814C; // type:func -OceffWipe2_Update = 0x80B48198; // type:func -OceffWipe2_Draw = 0x80B481F8; // type:func -OceffWipe3_Init = 0x80B49860; // type:func -OceffWipe3_Destroy = 0x80B498BC; // type:func -OceffWipe3_Update = 0x80B49908; // type:func -OceffWipe3_Draw = 0x80B49968; // type:func -EnNiwGirl_Init = 0x80B4AFB0; // type:func -EnNiwGirl_Destroy = 0x80B4B150; // type:func -EnNiwGirl_Jump = 0x80B4B160; // type:func -func_80AB9210 = 0x80B4B1E4; // type:func -EnNiwGirl_Talk = 0x80B4B398; // type:func -func_80AB94D0 = 0x80B4B4A8; // type:func -EnNiwGirl_Update = 0x80B4B59C; // type:func -EnNiwGirlOverrideLimbDraw = 0x80B4B7C4; // type:func -EnNiwGirl_Draw = 0x80B4B82C; // type:func -EnDog_PlayWalkSFX = 0x80B4BA80; // type:func -EnDog_PlayRunSFX = 0x80B4BAE8; // type:func -EnDog_PlayBarkSFX = 0x80B4BB50; // type:func -EnDog_PlayAnimAndSFX = 0x80B4BBB8; // type:func -EnDog_CanFollow = 0x80B4BD50; // type:func -EnDog_UpdateWaypoint = 0x80B4BDD4; // type:func -EnDog_Orient = 0x80B4BE60; // type:func -EnDog_Init = 0x80B4BF04; // type:func -EnDog_Destroy = 0x80B4C154; // type:func -EnDog_FollowPath = 0x80B4C180; // type:func -EnDog_ChooseMovement = 0x80B4C318; // type:func -EnDog_FollowPlayer = 0x80B4C408; // type:func -EnDog_RunAway = 0x80B4C588; // type:func -EnDog_FaceLink = 0x80B4C62C; // type:func -EnDog_Wait = 0x80B4C734; // type:func -EnDog_Update = 0x80B4C78C; // type:func -EnDog_OverrideLimbDraw = 0x80B4C858; // type:func -EnDog_PostLimbDraw = 0x80B4C874; // type:func -EnDog_Draw = 0x80B4C88C; // type:func -EnSi_Init = 0x80B4CC30; // type:func -EnSi_Destroy = 0x80B4CCC0; // type:func -func_80AFB748 = 0x80B4CCEC; // type:func -func_80AFB768 = 0x80B4CD10; // type:func -func_80AFB89C = 0x80B4CE44; // type:func -func_80AFB950 = 0x80B4CEFC; // type:func -EnSi_Update = 0x80B4CF90; // type:func -EnSi_Draw = 0x80B4D004; // type:func -BgSpot01Objects2_Init = 0x80B4D130; // type:func -BgSpot01Objects2_Destroy = 0x80B4D20C; // type:func -func_808AC22C = 0x80B4D21C; // type:func -func_808AC2BC = 0x80B4D2B0; // type:func -func_808AC474 = 0x80B4D460; // type:func -BgSpot01Objects2_Update = 0x80B4D470; // type:func -func_808AC4A4 = 0x80B4D494; // type:func -ObjComb_Break = 0x80B4D5F0; // type:func -ObjComb_ChooseItemDrop = 0x80B4D8E0; // type:func -ObjComb_Init = 0x80B4D9B0; // type:func -ObjComb_Destroy = 0x80B4DA20; // type:func -ObjComb_SetupWait = 0x80B4DA4C; // type:func -ObjComb_Wait = 0x80B4DA60; // type:func -ObjComb_Update = 0x80B4DB4C; // type:func -ObjComb_Draw = 0x80B4DBC4; // type:func -func_808B2180 = 0x80B4DE50; // type:func -func_808B2218 = 0x80B4DEE4; // type:func -BgSpot11Bakudankabe_Init = 0x80B4E1FC; // type:func -BgSpot11Bakudankabe_Destroy = 0x80B4E298; // type:func -BgSpot11Bakudankabe_Update = 0x80B4E2E0; // type:func -BgSpot11Bakudankabe_Draw = 0x80B4E37C; // type:func -ObjKibako2_InitCollider = 0x80B4E490; // type:func -ObjKibako2_Break = 0x80B4E4E8; // type:func -ObjKibako2_SpawnCollectible = 0x80B4E764; // type:func -ObjKibako2_Init = 0x80B4E7B4; // type:func -ObjKibako2_Destroy = 0x80B4E860; // type:func -ObjKibako2_Idle = 0x80B4E8A8; // type:func -ObjKibako2_Kill = 0x80B4E980; // type:func -ObjKibako2_Update = 0x80B4EA04; // type:func -ObjKibako2_Draw = 0x80B4EA28; // type:func -EnDntDemo_Destroy = 0x80B4EB50; // type:func -EnDntDemo_Init = 0x80B4EB60; // type:func -EnDntDemo_Judge = 0x80B4ECD0; // type:func -EnDntDemo_Results = 0x80B4F2F0; // type:func -EnDntDemo_Prize = 0x80B4F564; // type:func -EnDntDemo_Update = 0x80B4F640; // type:func -EnDntJiji_Init = 0x80B4F870; // type:func -EnDntJiji_Destroy = 0x80B4F950; // type:func -EnDntJiji_SetFlower = 0x80B4F97C; // type:func -EnDntJiji_SetupWait = 0x80B4F9BC; // type:func -EnDntJiji_Wait = 0x80B4FA6C; // type:func -EnDntJiji_SetupUp = 0x80B4FB24; // type:func -EnDntJiji_Up = 0x80B4FC08; // type:func -EnDntJiji_SetupUnburrow = 0x80B4FC78; // type:func -EnDntJiji_Unburrow = 0x80B4FD5C; // type:func -EnDntJiji_SetupWalk = 0x80B4FDE4; // type:func -EnDntJiji_Walk = 0x80B4FE94; // type:func -EnDntJiji_SetupBurrow = 0x80B4FFD0; // type:func -EnDntJiji_Burrow = 0x80B500C0; // type:func -EnDntJiji_SetupCower = 0x80B500EC; // type:func -EnDntJiji_Cower = 0x80B5022C; // type:func -EnDntJiji_SetupTalk = 0x80B502D0; // type:func -EnDntJiji_Talk = 0x80B50364; // type:func -EnDntJiji_SetupGivePrize = 0x80B50430; // type:func -EnDntJiji_GivePrize = 0x80B504A0; // type:func -EnDntJiji_SetupHide = 0x80B505B0; // type:func -EnDntJiji_Hide = 0x80B50648; // type:func -EnDntJiji_SetupReturn = 0x80B506B4; // type:func -EnDntJiji_Return = 0x80B50764; // type:func -EnDntJiji_Update = 0x80B508DC; // type:func -EnDntJiji_Draw = 0x80B50AB4; // type:func -EnDntNomal_Init = 0x80B50D90; // type:func -EnDntNomal_Destroy = 0x80B50EB8; // type:func -EnDntNomal_WaitForObject = 0x80B50F04; // type:func -EnDntNomal_SetFlower = 0x80B51054; // type:func -EnDntNomal_SetupTargetWait = 0x80B510AC; // type:func -EnDntNomal_TargetWait = 0x80B51154; // type:func -EnDntNomal_SetupTargetUnburrow = 0x80B51430; // type:func -EnDntNomal_TargetUnburrow = 0x80B5154C; // type:func -EnDntNomal_SetupTargetWalk = 0x80B515B8; // type:func -EnDntNomal_TargetWalk = 0x80B5165C; // type:func -EnDntNomal_TargetFacePlayer = 0x80B51748; // type:func -EnDntNomal_SetupTargetTalk = 0x80B517FC; // type:func -EnDntNomal_TargetTalk = 0x80B518A8; // type:func -EnDntNomal_SetupTargetGivePrize = 0x80B51950; // type:func -EnDntNomal_TargetGivePrize = 0x80B519E8; // type:func -EnDntNomal_TargetReturn = 0x80B51B50; // type:func -EnDntNomal_TargetBurrow = 0x80B51D20; // type:func -EnDntNomal_SetupStageWait = 0x80B51D8C; // type:func -EnDntNomal_StageWait = 0x80B51E44; // type:func -EnDntNomal_SetupStageUp = 0x80B51E70; // type:func -EnDntNomal_StageUp = 0x80B51F7C; // type:func -EnDntNomal_SetupStageUnburrow = 0x80B521B0; // type:func -EnDntNomal_StageUnburrow = 0x80B522A4; // type:func -EnDntNomal_SetupStageCelebrate = 0x80B5237C; // type:func -EnDntNomal_StageCelebrate = 0x80B52424; // type:func -EnDntNomal_SetupStageDance = 0x80B5262C; // type:func -EnDntNomal_StageDance = 0x80B5273C; // type:func -EnDntNomal_SetupStageHide = 0x80B528A0; // type:func -EnDntNomal_StageHide = 0x80B5297C; // type:func -EnDntNomal_StageAttackHide = 0x80B52B40; // type:func -EnDntNomal_SetupStageAttack = 0x80B52B74; // type:func -EnDntNomal_StageAttack = 0x80B52C40; // type:func -EnDntNomal_StageSetupReturn = 0x80B52F04; // type:func -EnDntNomal_StageReturn = 0x80B52FA8; // type:func -EnDntNomal_Update = 0x80B530AC; // type:func -EnDntNomal_OverrideLimbDraw = 0x80B53370; // type:func -EnDntNomal_PostLimbDraw = 0x80B53420; // type:func -EnDntNomal_DrawStageScrub = 0x80B534A8; // type:func -EnDntNomal_DrawTargetScrub = 0x80B53698; // type:func -EnGuest_Init = 0x80B53B90; // type:func -EnGuest_Destroy = 0x80B53BF0; // type:func -EnGuest_Update = 0x80B53C1C; // type:func -func_80A5046C = 0x80B53D8C; // type:func -func_80A50518 = 0x80B53E38; // type:func -func_80A5057C = 0x80B53EA0; // type:func -func_80A505CC = 0x80B53EF4; // type:func -func_80A50708 = 0x80B54034; // type:func -EnGuest_OverrideLimbDraw = 0x80B540A0; // type:func -EnGuest_Draw = 0x80B542C8; // type:func -BgBomGuard_SetupAction = 0x80B54530; // type:func -BgBomGuard_Init = 0x80B5453C; // type:func -BgBomGuard_Destroy = 0x80B545D8; // type:func -func_8086E638 = 0x80B5460C; // type:func -BgBomGuard_Update = 0x80B546D8; // type:func -EnHs2_Init = 0x80B54750; // type:func -EnHs2_Destroy = 0x80B54830; // type:func -func_80A6F0B4 = 0x80B5485C; // type:func -func_80A6F164 = 0x80B54910; // type:func -func_80A6F1A4 = 0x80B5494C; // type:func -EnHs2_Update = 0x80B54998; // type:func -EnHs2_OverrideLimbDraw = 0x80B54B04; // type:func -EnHs2_PostLimbDraw = 0x80B54B8C; // type:func -EnHs2_Draw = 0x80B54BCC; // type:func -DemoKekkai_CheckEventFlag = 0x80B54D30; // type:func -DemoKekkai_Init = 0x80B54D74; // type:func -DemoKekkai_Destroy = 0x80B54FA4; // type:func -DemoKekkai_SpawnParticles = 0x80B54FE4; // type:func -DemoKekkai_TowerBarrier = 0x80B55238; // type:func -DemoKekkai_Update = 0x80B55354; // type:func -DemoKekkai_TrialBarrierDispel = 0x80B55480; // type:func -DemoKekkai_TrialBarrierIdle = 0x80B555E0; // type:func -DemoKekkai_DrawTrialBarrier = 0x80B55704; // type:func -DemoKekkai_DrawTowerBarrier = 0x80B55C18; // type:func -func_808B02D0 = 0x80B56020; // type:func -func_808B0324 = 0x80B56074; // type:func -BgSpot08Bakudankabe_Init = 0x80B5636C; // type:func -BgSpot08Bakudankabe_Destroy = 0x80B5640C; // type:func -BgSpot08Bakudankabe_Update = 0x80B56454; // type:func -BgSpot08Bakudankabe_Draw = 0x80B56508; // type:func -func_808B6BC0 = 0x80B566C0; // type:func -BgSpot17Bakudankabe_Init = 0x80B569F0; // type:func -BgSpot17Bakudankabe_Destroy = 0x80B56A84; // type:func -BgSpot17Bakudankabe_Update = 0x80B56AB8; // type:func -BgSpot17Bakudankabe_Draw = 0x80B56B4C; // type:func -func_80B9A9D0 = 0x80B56DB0; // type:func -func_80B9AA90 = 0x80B56E70; // type:func -func_80B9ABA0 = 0x80B56F80; // type:func -func_80B9ACE4 = 0x80B570C4; // type:func -func_80B9ADCC = 0x80B571B0; // type:func -ObjMure3_Init = 0x80B572A4; // type:func -ObjMure3_Destroy = 0x80B57304; // type:func -func_80B9AF24 = 0x80B57314; // type:func -func_80B9AF34 = 0x80B57328; // type:func -func_80B9AF54 = 0x80B5734C; // type:func -func_80B9AF64 = 0x80B57360; // type:func -func_80B9AFEC = 0x80B573E8; // type:func -func_80B9AFFC = 0x80B573FC; // type:func -ObjMure3_Update = 0x80B57478; // type:func -EnTg_GetTextId = 0x80B57580; // type:func -EnTg_UpdateTalkState = 0x80B5761C; // type:func -EnTg_Init = 0x80B576D8; // type:func -EnTg_Destroy = 0x80B577AC; // type:func -EnTg_SpinIfNotTalking = 0x80B577EC; // type:func -EnTg_Update = 0x80B57810; // type:func -EnTg_OverrideLimbDraw = 0x80B57930; // type:func -EnTg_PostLimbDraw = 0x80B5794C; // type:func -EnTg_SetColor = 0x80B579A8; // type:func -EnTg_Draw = 0x80B57A14; // type:func -EnMu_SetupAction = 0x80B57C60; // type:func -EnMu_Interact = 0x80B57C6C; // type:func -EnMu_GetTextId = 0x80B57DCC; // type:func -EnMu_UpdateTalkState = 0x80B57E10; // type:func -EnMu_Init = 0x80B57E7C; // type:func -EnMu_Destroy = 0x80B57F54; // type:func -EnMu_Pose = 0x80B57F78; // type:func -EnMu_Update = 0x80B57FB0; // type:func -EnMu_OverrideLimbDraw = 0x80B580F8; // type:func -EnMu_PostLimbDraw = 0x80B581E4; // type:func -EnMu_DisplayListSetColor = 0x80B581FC; // type:func -EnMu_Draw = 0x80B58268; // type:func -EnGo2_SpawnEffectDust = 0x80B58580; // type:func -EnGo2_UpdateEffects = 0x80B58624; // type:func -EnGo2_DrawEffects = 0x80B58730; // type:func -EnGo2_SpawnDust = 0x80B58A28; // type:func -EnGo2_GetItem = 0x80B58C40; // type:func -EnGo2_GetDialogState = 0x80B58C84; // type:func -EnGo2_GoronFireGenericGetTextId = 0x80B58D04; // type:func -EnGo2_GetTextIdGoronCityRollingBig = 0x80B58D80; // type:func -EnGo2_UpdateTalkStateGoronCityRollingBig = 0x80B58E08; // type:func -EnGo2_GetTextIdGoronDmtBombFlower = 0x80B58F00; // type:func -EnGo2_UpdateTalkStateGoronDmtBombFlower = 0x80B58F3C; // type:func -EnGo2_GetTextIdGoronDmtRollingSmall = 0x80B59054; // type:func -EnGo2_UpdateTalkStateGoronDmtRollingSmall = 0x80B590AC; // type:func -EnGo2_GetTextIdGoronDmtDcEntrance = 0x80B590E8; // type:func -EnGo2_UpdateTalkStateGoronDmtDcEntrance = 0x80B59184; // type:func -EnGo2_GetTextIdGoronCityEntrance = 0x80B591E4; // type:func -EnGo2_UpdateTalkStateGoronCityEntrance = 0x80B59264; // type:func -EnGo2_GetTextIdGoronCityIsland = 0x80B592C4; // type:func -EnGo2_UpdateTalkStateGoronCityIsland = 0x80B59344; // type:func -EnGo2_GetTextIdGoronCityLowestFloor = 0x80B593A4; // type:func -EnGo2_UpdateTalkStateGoronCityLowestFloor = 0x80B59480; // type:func -EnGo2_GetTextIdGoronCityLink = 0x80B594E0; // type:func -EnGo2_UpdateTalkStateGoronCityLink = 0x80B595BC; // type:func -EnGo2_GetTextIdGoronDmtBiggoron = 0x80B597D4; // type:func -EnGo2_UpdateTalkStateGoronDmtBiggoron = 0x80B59854; // type:func -EnGo2_GetTextIdGoronFireGeneric = 0x80B59A68; // type:func -EnGo2_UpdateTalkStateGoronFireGeneric = 0x80B59AA0; // type:func -EnGo2_GetTextIdGoronCityStairwell = 0x80B59B3C; // type:func -EnGo2_UpdateTalkStateGoronCityStairwell = 0x80B59B8C; // type:func -EnGo2_GetTextIdGoronMarketBazaar = 0x80B59BEC; // type:func -EnGo2_UpdateTalkStateGoronMarketBazaar = 0x80B59C00; // type:func -EnGo2_GetTextIdGoronCityLostWoods = 0x80B59C3C; // type:func -EnGo2_UpdateTalkStateGoronCityLostWoods = 0x80B59CAC; // type:func -EnGo2_GetTextIdGoronDmtFairyHint = 0x80B59D0C; // type:func -EnGo2_UpdateTalkStateGoronDmtFairyHint = 0x80B59D64; // type:func -EnGo2_GetTextId = 0x80B59DA0; // type:func -EnGo2_UpdateTalkState = 0x80B59EE4; // type:func -func_80A44790 = 0x80B59FFC; // type:func -EnGo2_SetColliderDim = 0x80B5A0F8; // type:func -EnGo2_SetShape = 0x80B5A134; // type:func -EnGo2_CheckCollision = 0x80B5A1AC; // type:func -EnGo2_SwapInitialFrameAnimFrameCount = 0x80B5A308; // type:func -func_80A44AB0 = 0x80B5A320; // type:func -EnGo2_UpdateWaypoint = 0x80B5A4DC; // type:func -EnGo2_Orient = 0x80B5A558; // type:func -func_80A44D84 = 0x80B5A5FC; // type:func -EnGo2_IsWakingUp = 0x80B5A634; // type:func -EnGo2_IsRollingOnGround = 0x80B5A764; // type:func -EnGo2_BiggoronSetTextId = 0x80B5A900; // type:func -func_80A45288 = 0x80B5AB00; // type:func -func_80A45360 = 0x80B5ABDC; // type:func -EnGo2_RollForward = 0x80B5ACE8; // type:func -func_80A454CC = 0x80B5AD48; // type:func -EnGo2_GetTargetXZSpeed = 0x80B5ADF4; // type:func -EnGo2_IsCameraModified = 0x80B5AE98; // type:func -EnGo2_DefaultWakingUp = 0x80B5AFB4; // type:func -EnGo2_WakingUp = 0x80B5B00C; // type:func -EnGo2_BiggoronWakingUp = 0x80B5B07C; // type:func -EnGo2_SelectGoronWakingUp = 0x80B5B0CC; // type:func -EnGo2_EyeMouthTexState = 0x80B5B1B0; // type:func -EnGo2_SitDownAnimation = 0x80B5B284; // type:func -EnGo2_GetDustData = 0x80B5B39C; // type:func -EnGo2_RollingAnimation = 0x80B5B424; // type:func -EnGo2_WakeUp = 0x80B5B4D8; // type:func -EnGo2_GetItemAnimation = 0x80B5B5CC; // type:func -EnGo2_SetupRolling = 0x80B5B630; // type:func -EnGo2_StopRolling = 0x80B5B6D8; // type:func -EnGo2_IsFreeingGoronInFire = 0x80B5B798; // type:func -EnGo2_IsGoronDmtBombFlower = 0x80B5B830; // type:func -EnGo2_IsGoronRollingBig = 0x80B5B8B0; // type:func -EnGo2_IsGoronFireGeneric = 0x80B5B910; // type:func -EnGo2_IsGoronLinkReversing = 0x80B5B94C; // type:func -EnGo2_IsRolling = 0x80B5B9A8; // type:func -EnGo2_GoronLinkAnimation = 0x80B5BA3C; // type:func -EnGo2_GoronFireCamera = 0x80B5BB70; // type:func -EnGo2_GoronFireClearCamera = 0x80B5BC70; // type:func -EnGo2_BiggoronAnimation = 0x80B5BCB0; // type:func -EnGo2_Init = 0x80B5BD64; // type:func -EnGo2_Destroy = 0x80B5C1F8; // type:func -EnGo2_CurledUp = 0x80B5C208; // type:func -func_80A46B40 = 0x80B5C3DC; // type:func -EnGo2_GoronDmtBombFlowerAnimation = 0x80B5C574; // type:func -EnGo2_GoronRollingBigContinueRolling = 0x80B5C5F8; // type:func -EnGo2_ContinueRolling = 0x80B5C658; // type:func -EnGo2_SlowRolling = 0x80B5C6F0; // type:func -EnGo2_GroundRolling = 0x80B5C828; // type:func -EnGo2_ReverseRolling = 0x80B5C8C4; // type:func -EnGo2_SetupGetItem = 0x80B5C98C; // type:func -EnGo2_SetGetItem = 0x80B5CA00; // type:func -EnGo2_BiggoronEyedrops = 0x80B5CB08; // type:func -EnGo2_GoronLinkStopRolling = 0x80B5CD3C; // type:func -EnGo2_GoronFireGenericAction = 0x80B5CE2C; // type:func -EnGo2_Update = 0x80B5D158; // type:func -EnGo2_DrawCurledUp = 0x80B5D26C; // type:func -EnGo2_DrawRolling = 0x80B5D330; // type:func -EnGo2_OverrideLimbDraw = 0x80B5D46C; // type:func -EnGo2_PostLimbDraw = 0x80B5D688; // type:func -EnGo2_Draw = 0x80B5D6E4; // type:func -EnWf_SetupAction = 0x80B5E5C0; // type:func -EnWf_Init = 0x80B5E5CC; // type:func -EnWf_Destroy = 0x80B5E800; // type:func -EnWf_ChangeAction = 0x80B5E89C; // type:func -EnWf_SetupWaitToAppear = 0x80B5EC6C; // type:func -EnWf_WaitToAppear = 0x80B5ED14; // type:func -EnWf_SetupWait = 0x80B5EE48; // type:func -EnWf_Wait = 0x80B5EED0; // type:func -EnWf_SetupRunAtPlayer = 0x80B5F0EC; // type:func -EnWf_RunAtPlayer = 0x80B5F16C; // type:func -EnWf_SetupSearchForPlayer = 0x80B5F5EC; // type:func -EnWf_SearchForPlayer = 0x80B5F638; // type:func -EnWf_SetupRunAroundPlayer = 0x80B5F818; // type:func -EnWf_RunAroundPlayer = 0x80B5F914; // type:func -EnWf_SetupSlash = 0x80B5FE34; // type:func -EnWf_Slash = 0x80B5FEB0; // type:func -EnWf_SetupRecoilFromBlockedSlash = 0x80B60204; // type:func -EnWf_RecoilFromBlockedSlash = 0x80B602A0; // type:func -EnWf_SetupBackflipAway = 0x80B60498; // type:func -EnWf_BackflipAway = 0x80B60514; // type:func -EnWf_SetupStunned = 0x80B6061C; // type:func -EnWf_Stunned = 0x80B60694; // type:func -EnWf_SetupDamaged = 0x80B60750; // type:func -EnWf_Damaged = 0x80B607E8; // type:func -EnWf_SetupSomersaultAndAttack = 0x80B609F0; // type:func -EnWf_SomersaultAndAttack = 0x80B60AA8; // type:func -EnWf_SetupBlocking = 0x80B60B90; // type:func -EnWf_Blocking = 0x80B60C30; // type:func -EnWf_SetupSidestep = 0x80B60EB4; // type:func -EnWf_Sidestep = 0x80B6104C; // type:func -EnWf_SetupDie = 0x80B6159C; // type:func -EnWf_Die = 0x80B6164C; // type:func -func_80B36F40 = 0x80B61854; // type:func -EnWf_UpdateDamage = 0x80B6194C; // type:func -EnWf_Update = 0x80B61B1C; // type:func -EnWf_OverrideLimbDraw = 0x80B61D70; // type:func -EnWf_PostLimbDraw = 0x80B61DB4; // type:func -EnWf_Draw = 0x80B61F5C; // type:func -EnWf_DodgeRanged = 0x80B62118; // type:func -EnSkb_SetupAction = 0x80B628D0; // type:func -EnSkb_SpawnDebris = 0x80B628DC; // type:func -EnSkb_Init = 0x80B62A8C; // type:func -EnSkb_Destroy = 0x80B62C44; // type:func -EnSkb_DecideNextAction = 0x80B62C9C; // type:func -EnSkb_SetupRiseFromGround = 0x80B62D38; // type:func -EnSkb_RiseFromGround = 0x80B62D9C; // type:func -EnSkb_SetupDespawn = 0x80B62E88; // type:func -EnSkb_Despawn = 0x80B62F30; // type:func -EnSkb_SetupWalkForward = 0x80B62FE4; // type:func -EnSkb_WalkForward = 0x80B6307C; // type:func -EnSkb_SetupAttack = 0x80B6327C; // type:func -EnSkb_Attack = 0x80B63314; // type:func -EnSkb_SetupRecoil = 0x80B633C0; // type:func -EnSkb_Recoil = 0x80B6344C; // type:func -EnSkb_SetupStunned = 0x80B63488; // type:func -EnSkb_Stunned = 0x80B634E4; // type:func -EnSkb_SetupTakeDamage = 0x80B6358C; // type:func -EnSkb_TakeDamage = 0x80B63614; // type:func -EnSkb_SetupDeath = 0x80B63700; // type:func -EnSkb_Death = 0x80B637CC; // type:func -EnSkb_CheckDamage = 0x80B638B8; // type:func -EnSkb_Update = 0x80B63B68; // type:func -EnSkb_OverrideLimbDraw = 0x80B63C90; // type:func -EnSkb_PostLimbDraw = 0x80B63E60; // type:func -EnSkb_Draw = 0x80B63F08; // type:func -DemoGj_GetCollectibleType = 0x80B641C0; // type:func -DemoGj_GetCollectibleAmount = 0x80B641D4; // type:func -DemoGj_GetType = 0x80B641E8; // type:func -DemoGj_InitCylinder = 0x80B641F8; // type:func -DemoGj_HitByExplosion = 0x80B64240; // type:func -DemoGj_DestroyCylinder = 0x80B64278; // type:func -DemoGj_Destroy = 0x80B64330; // type:func -DemoGj_PlayExplosionSfx = 0x80B64374; // type:func -DemoGj_SpawnSmoke = 0x80B643AC; // type:func -DemoGj_DropCollectible = 0x80B64440; // type:func -DemoGj_Explode = 0x80B644D4; // type:func -DemoGj_IsCutsceneLayer = 0x80B64770; // type:func -DemoGj_FindGanon = 0x80B64798; // type:func -DemoGj_InitCommon = 0x80B647E4; // type:func -DemoGj_InitSetIndices = 0x80B6485C; // type:func -DemoGj_DrawCommon = 0x80B648C0; // type:func -DemoGj_DrawRotated = 0x80B6495C; // type:func -DemoGj_SetupRotation = 0x80B64A38; // type:func -func_809797E4 = 0x80B64FD0; // type:func -DemoGj_IsGanondorfRisingFromRubble = 0x80B65004; // type:func -DemoGj_IsGanondorfFloatingInAir = 0x80B65028; // type:func -DemoGj_SetupMovement = 0x80B6504C; // type:func -DemoGj_CheckIfTransformedIntoGanon = 0x80B65770; // type:func -DemoGj_InitRubblePile1 = 0x80B657A8; // type:func -func_8097A000 = 0x80B657D8; // type:func -DemoGj_SpawnSmokePreBattle1 = 0x80B65854; // type:func -func_8097A0E4 = 0x80B658C0; // type:func -func_8097A130 = 0x80B65914; // type:func -DemoGj_Update01 = 0x80B65948; // type:func -DemoGj_Update08 = 0x80B65980; // type:func -DemoGj_DrawRubble2 = 0x80B659B8; // type:func -DemoGj_DrawRotatedRubble2 = 0x80B659DC; // type:func -DemoGj_InitRubblePile2 = 0x80B65A00; // type:func -func_8097A238 = 0x80B65A30; // type:func -DemoGj_SpawnSmokePreBattle2 = 0x80B65AAC; // type:func -func_8097A320 = 0x80B65B1C; // type:func -func_8097A36C = 0x80B65B70; // type:func -DemoGj_Update02 = 0x80B65BA4; // type:func -DemoGj_Update09 = 0x80B65BDC; // type:func -DemoGj_DrawRubble3 = 0x80B65C14; // type:func -DemoGj_DrawRotatedRubble3 = 0x80B65C38; // type:func -DemoGj_InitRubblePile3 = 0x80B65C5C; // type:func -func_8097A474 = 0x80B65C8C; // type:func -func_8097A4F0 = 0x80B65D08; // type:func -func_8097A53C = 0x80B65D5C; // type:func -DemoGj_Update03 = 0x80B65D90; // type:func -DemoGj_Update10 = 0x80B65DC8; // type:func -DemoGj_DrawRubble4 = 0x80B65E00; // type:func -DemoGj_DrawRotatedRubble4 = 0x80B65E24; // type:func -DemoGj_InitRubblePile4 = 0x80B65E48; // type:func -func_8097A644 = 0x80B65E78; // type:func -func_8097A6C0 = 0x80B65EF4; // type:func -func_8097A70C = 0x80B65F48; // type:func -DemoGj_Update04 = 0x80B65F7C; // type:func -DemoGj_Update11 = 0x80B65FB4; // type:func -DemoGj_DrawRubble5 = 0x80B65FEC; // type:func -DemoGj_DrawRotatedRubble5 = 0x80B66010; // type:func -DemoGj_InitRubblePile5 = 0x80B66034; // type:func -func_8097A814 = 0x80B66064; // type:func -func_8097A890 = 0x80B660E0; // type:func -func_8097A8DC = 0x80B66134; // type:func -DemoGj_Update05 = 0x80B66168; // type:func -DemoGj_Update12 = 0x80B661A0; // type:func -DemoGj_DrawRubble6 = 0x80B661D8; // type:func -DemoGj_DrawRotatedRubble6 = 0x80B661FC; // type:func -DemoGj_InitRubblePile6 = 0x80B66220; // type:func -func_8097A9E4 = 0x80B66250; // type:func -func_8097AA60 = 0x80B662CC; // type:func -func_8097AAAC = 0x80B66320; // type:func -DemoGj_Update06 = 0x80B66354; // type:func -DemoGj_Update13 = 0x80B6638C; // type:func -DemoGj_DrawRubble7 = 0x80B663C4; // type:func -DemoGj_DrawRotatedRubble7 = 0x80B663E8; // type:func -DemoGj_InitRubblePile7 = 0x80B6640C; // type:func -func_8097ABB4 = 0x80B6643C; // type:func -DemoGj_SpawnSmokePreBattle3 = 0x80B664B8; // type:func -func_8097AC9C = 0x80B66528; // type:func -func_8097ACE8 = 0x80B6657C; // type:func -DemoGj_Update07 = 0x80B665B0; // type:func -DemoGj_Update14 = 0x80B665E8; // type:func -DemoGj_DrawRubbleTall = 0x80B66620; // type:func -DemoGj_DrawRotatedRubbleTall = 0x80B66644; // type:func -DemoGj_InitRubbleAroundArena = 0x80B66668; // type:func -DemoGj_UpdateRubbleAroundArena = 0x80B66698; // type:func -DemoGj_DrawRubbleAroundArena = 0x80B666E8; // type:func -DemoGj_InitDestructableRubble1 = 0x80B6670C; // type:func -func_8097AEE8 = 0x80B66794; // type:func -DemoGj_SetCylindersAsAC = 0x80B66928; // type:func -DemoGj_DirectedExplosion = 0x80B66994; // type:func -func_8097B128 = 0x80B669D0; // type:func -DemoGj_HasCylinderAnyExploded = 0x80B66A60; // type:func -func_8097B22C = 0x80B66ADC; // type:func -DemoGj_Update15 = 0x80B66BF4; // type:func -DemoGj_Update18 = 0x80B66C2C; // type:func -DemoGj_DrawDestructableRubble1 = 0x80B66C4C; // type:func -DemoGj_InitDestructableRubble2 = 0x80B66C70; // type:func -func_8097B450 = 0x80B66CF8; // type:func -DemoGj_SetCylindersAsAC2 = 0x80B66E48; // type:func -DemoGj_HasCylinderAnyExploded2 = 0x80B66EB4; // type:func -DemoGj_DirectedExplosion2 = 0x80B66F30; // type:func -func_8097B6C4 = 0x80B66F6C; // type:func -func_8097B750 = 0x80B66FFC; // type:func -DemoGj_Update16 = 0x80B67114; // type:func -DemoGj_Update19 = 0x80B6714C; // type:func -DemoGj_DemoGj_InitDestructableRubble2 = 0x80B6716C; // type:func -DemoGj_InitDestructableRubbleTall = 0x80B67190; // type:func -DemoGj_DirectedDoubleExplosion = 0x80B671DC; // type:func -func_8097B9BC = 0x80B67260; // type:func -func_8097BA48 = 0x80B672F0; // type:func -DemoGj_Update17 = 0x80B67424; // type:func -DemoGj_Update20 = 0x80B6745C; // type:func -DemoGj_DemoGj_InitDestructableRubbleTall = 0x80B6747C; // type:func -DemoGj_Update = 0x80B674A0; // type:func -DemoGj_Init = 0x80B674E8; // type:func -DemoGj_DrawNothing = 0x80B675F0; // type:func -DemoGj_Draw = 0x80B67600; // type:func -DemoGeff_Destroy = 0x80B67E70; // type:func -DemoGeff_Init = 0x80B67E80; // type:func -func_80977EA8 = 0x80B67EC8; // type:func -func_80977F80 = 0x80B67F64; // type:func -func_80978030 = 0x80B67FC0; // type:func -func_809781FC = 0x80B6818C; // type:func -func_809782A0 = 0x80B68230; // type:func -func_80978308 = 0x80B68298; // type:func -func_80978344 = 0x80B682D0; // type:func -func_80978370 = 0x80B68300; // type:func -func_809783D4 = 0x80B6834C; // type:func -DemoGeff_Update = 0x80B683E8; // type:func -func_809784D4 = 0x80B68430; // type:func -DemoGeff_Draw = 0x80B68440; // type:func -BgGndFiremeiro_Init = 0x80B68690; // type:func -BgGndFiremeiro_Destroy = 0x80B68744; // type:func -BgGndFiremeiro_Sink = 0x80B68784; // type:func -BgGndFiremeiro_Shake = 0x80B68840; // type:func -BgGndFiremeiro_Rise = 0x80B689E4; // type:func -BgGndFiremeiro_Update = 0x80B68AA4; // type:func -BgGndFiremeiro_Draw = 0x80B68AC8; // type:func -BgGndDarkmeiro_ToggleBlock = 0x80B68BE0; // type:func -BgGndDarkmeiro_Init = 0x80B68C6C; // type:func -BgGndDarkmeiro_Destroy = 0x80B68E98; // type:func -BgGndDarkmeiro_Noop = 0x80B68EE0; // type:func -BgGndDarkmeiro_UpdateBlockTimer = 0x80B68EF0; // type:func -BgGndDarkmeiro_UpdateStaticBlock = 0x80B690E4; // type:func -BgGndDarkmeiro_UpdateSwitchBlock = 0x80B690F4; // type:func -BgGndDarkmeiro_Update = 0x80B69158; // type:func -BgGndDarkmeiro_DrawInvisiblePath = 0x80B6917C; // type:func -BgGndDarkmeiro_DrawSwitchBlock = 0x80B691AC; // type:func -BgGndDarkmeiro_DrawStaticBlock = 0x80B692C4; // type:func -BgGndSoulmeiro_Init = 0x80B693A0; // type:func -BgGndSoulmeiro_Destroy = 0x80B694E4; // type:func -func_8087AF38 = 0x80B69520; // type:func -func_8087B284 = 0x80B6986C; // type:func -func_8087B350 = 0x80B69938; // type:func -BgGndSoulmeiro_Update = 0x80B6998C; // type:func -BgGndSoulmeiro_Draw = 0x80B699B8; // type:func -BgGndNisekabe_Init = 0x80B69C00; // type:func -BgGndNisekabe_Destroy = 0x80B69C3C; // type:func -BgGndNisekabe_Update = 0x80B69C4C; // type:func -BgGndNisekabe_Draw = 0x80B69C80; // type:func -BgGndIceblock_Init = 0x80B69D70; // type:func -BgGndIceblock_Destroy = 0x80B69E5C; // type:func -BgGndIceblock_SetPosition = 0x80B69E90; // type:func -BgGndIceblock_CheckForBlock = 0x80B69F9C; // type:func -BgGndIceblock_NextAction = 0x80B69FD8; // type:func -BgGndIceblock_SetNextPosition = 0x80B6A024; // type:func -BgGndIceblock_Idle = 0x80B6A354; // type:func -BgGndIceblock_Reset = 0x80B6A410; // type:func -BgGndIceblock_Fall = 0x80B6A4D4; // type:func -BgGndIceblock_Hole = 0x80B6A58C; // type:func -BgGndIceblock_Slide = 0x80B6A628; // type:func -BgGndIceblock_Update = 0x80B6A958; // type:func -BgGndIceblock_Draw = 0x80B6A97C; // type:func -BgYdanSp_Init = 0x80B6AE70; // type:func -BgYdanSp_Destroy = 0x80B6B258; // type:func -BgYdanSp_UpdateFloorWebCollision = 0x80B6B2A0; // type:func -BgYdanSp_BurnWeb = 0x80B6B374; // type:func -BgYdanSp_BurnFloorWeb = 0x80B6B3E4; // type:func -BgYdanSp_FloorWebBroken = 0x80B6B6B8; // type:func -BgYdanSp_FloorWebBreaking = 0x80B6B6F8; // type:func -BgYdanSp_FloorWebIdle = 0x80B6B8B8; // type:func -BgYdanSp_BurnWallWeb = 0x80B6BB94; // type:func -BgYdanSp_WallWebIdle = 0x80B6BECC; // type:func -BgYdanSp_Update = 0x80B6C00C; // type:func -BgYdanSp_Draw = 0x80B6C030; // type:func -func_80A2F180 = 0x80B6C590; // type:func -EnGb_Init = 0x80B6C5C0; // type:func -EnGb_Destroy = 0x80B6C9C0; // type:func -func_80A2F608 = 0x80B6CA1C; // type:func -func_80A2F760 = 0x80B6CB74; // type:func -func_80A2F7C0 = 0x80B6CBD4; // type:func -func_80A2F83C = 0x80B6CC50; // type:func -func_80A2F94C = 0x80B6CD6C; // type:func -func_80A2F9C0 = 0x80B6CDE4; // type:func -func_80A2FA50 = 0x80B6CE78; // type:func -func_80A2FB40 = 0x80B6CF68; // type:func -func_80A2FBB0 = 0x80B6CFDC; // type:func -func_80A2FC0C = 0x80B6D03C; // type:func -func_80A2FC70 = 0x80B6D0A4; // type:func -EnGb_Update = 0x80B6D1A8; // type:func -EnGb_Draw = 0x80B6D2E0; // type:func -EnGb_UpdateCagedSouls = 0x80B6D400; // type:func -EnGb_DrawCagedSouls = 0x80B6D758; // type:func -EnGs_Init = 0x80B6DCC0; // type:func -EnGs_Destroy = 0x80B6DD84; // type:func -func_80A4E3EC = 0x80B6DD94; // type:func -func_80A4E470 = 0x80B6DE1C; // type:func -func_80A4E648 = 0x80B6DFDC; // type:func -func_80A4E754 = 0x80B6E0EC; // type:func -func_80A4E910 = 0x80B6E2AC; // type:func -func_80A4EA08 = 0x80B6E3A8; // type:func -func_80A4EB3C = 0x80B6E4DC; // type:func -func_80A4ED34 = 0x80B6E6D4; // type:func -func_80A4F13C = 0x80B6EAE0; // type:func -func_80A4F700 = 0x80B6F0A4; // type:func -func_80A4F734 = 0x80B6F0D8; // type:func -func_80A4F77C = 0x80B6F120; // type:func -EnGs_Update = 0x80B6F19C; // type:func -EnGs_Draw = 0x80B6F334; // type:func -BgMizuBwall_RotateVec3f = 0x80B6FB30; // type:func -BgMizuBwall_Init = 0x80B6FB84; // type:func -BgMizuBwall_Destroy = 0x80B70400; // type:func -BgMizuBwall_SetAlpha = 0x80B70448; // type:func -BgMizuBwall_SpawnDebris = 0x80B705CC; // type:func -BgMizuBwall_Idle = 0x80B708A0; // type:func -BgMizuBwall_Break = 0x80B709A0; // type:func -BgMizuBwall_DoNothing = 0x80B709CC; // type:func -BgMizuBwall_Update = 0x80B709DC; // type:func -BgMizuBwall_Draw = 0x80B70A00; // type:func -BgMizuShutter_Init = 0x80B71000; // type:func -BgMizuShutter_Destroy = 0x80B71260; // type:func -BgMizuShutter_WaitForSwitch = 0x80B71294; // type:func -BgMizuShutter_WaitForCutscene = 0x80B71328; // type:func -BgMizuShutter_Move = 0x80B71374; // type:func -BgMizuShutter_WaitForTimer = 0x80B71560; // type:func -BgMizuShutter_Update = 0x80B715E0; // type:func -BgMizuShutter_Draw = 0x80B71604; // type:func -EnDaikuKakariko_ChangeAnim = 0x80B71800; // type:func -EnDaikuKakariko_Init = 0x80B718B4; // type:func -EnDaikuKakariko_Destroy = 0x80B71C0C; // type:func -EnDaikuKakariko_GetTalkState = 0x80B71C38; // type:func -EnDaikuKakariko_HandleTalking = 0x80B71CDC; // type:func -EnDaikuKakariko_Talk = 0x80B71E98; // type:func -EnDaikuKakariko_Wait = 0x80B71F6C; // type:func -EnDaikuKakariko_StopRunning = 0x80B72008; // type:func -EnDaikuKakariko_Run = 0x80B720B8; // type:func -EnDaikuKakariko_Update = 0x80B72438; // type:func -EnDaikuKakariko_OverrideLimbDraw = 0x80B725B0; // type:func -EnDaikuKakariko_PostLimbDraw = 0x80B72770; // type:func -EnDaikuKakariko_Draw = 0x80B727EC; // type:func -BgBowlWall_Init = 0x80B72BC0; // type:func -BgBowlWall_Destroy = 0x80B72C78; // type:func -BgBowlWall_SpawnBullseyes = 0x80B72CAC; // type:func -BgBowlWall_WaitForHit = 0x80B72E7C; // type:func -BgBowlWall_FallDoEffects = 0x80B72EA0; // type:func -BgBowlWall_FinishFall = 0x80B73154; // type:func -BgBowlWall_Reset = 0x80B73234; // type:func -BgBowlWall_Update = 0x80B732CC; // type:func -BgBowlWall_Draw = 0x80B73300; // type:func -EnWallTubo_Init = 0x80B73540; // type:func -EnWallTubo_Destroy = 0x80B73570; // type:func -EnWallTubo_FindGirl = 0x80B73580; // type:func -EnWallTubo_DetectChu = 0x80B735C4; // type:func -EnWallTubo_SetWallFall = 0x80B737E0; // type:func -EnWallTubo_Update = 0x80B7394C; // type:func -EnPoDesert_Init = 0x80B73A30; // type:func -EnPoDesert_Destroy = 0x80B73BA0; // type:func -EnPoDesert_SetNextPathPoint = 0x80B73BE8; // type:func -EnPoDesert_SetupMoveToNextPoint = 0x80B73D44; // type:func -EnPoDesert_SetupDisappear = 0x80B73D88; // type:func -EnPoDesert_UpdateSpeedModifier = 0x80B73DE8; // type:func -EnPoDesert_WaitForPlayer = 0x80B73E58; // type:func -EnPoDesert_MoveToNextPoint = 0x80B73F24; // type:func -EnPoDesert_Disappear = 0x80B740B8; // type:func -EnPoDesert_Update = 0x80B741A0; // type:func -EnPoDesert_OverrideLimbDraw = 0x80B74294; // type:func -EnPoDesert_PostLimbDraw = 0x80B74320; // type:func -EnPoDesert_Draw = 0x80B74574; // type:func -EnCrow_Init = 0x80B747F0; // type:func -EnCrow_Destroy = 0x80B748E0; // type:func -EnCrow_SetupFlyIdle = 0x80B7490C; // type:func -EnCrow_SetupDiveAttack = 0x80B74940; // type:func -EnCrow_SetupDamaged = 0x80B74974; // type:func -EnCrow_SetupDie = 0x80B74C94; // type:func -EnCrow_SetupTurnAway = 0x80B74CAC; // type:func -EnCrow_SetupRespawn = 0x80B74D34; // type:func -EnCrow_FlyIdle = 0x80B74E28; // type:func -EnCrow_DiveAttack = 0x80B75254; // type:func -EnCrow_Damaged = 0x80B753F8; // type:func -EnCrow_Die = 0x80B75520; // type:func -EnCrow_TurnAway = 0x80B755D0; // type:func -EnCrow_Respawn = 0x80B75674; // type:func -EnCrow_UpdateDamage = 0x80B75740; // type:func -EnCrow_Update = 0x80B757F0; // type:func -EnCrow_OverrideLimbDraw = 0x80B75A0C; // type:func -EnCrow_PostLimbDraw = 0x80B75AF8; // type:func -EnCrow_Draw = 0x80B75BB8; // type:func -DoorKiller_Init = 0x80B75E90; // type:func -DoorKiller_Destroy = 0x80B761E8; // type:func -DoorKiller_SpawnRubble = 0x80B76238; // type:func -DoorKiller_FallAsRubble = 0x80B763E0; // type:func -DoorKiller_IsHit = 0x80B764A0; // type:func -DoorKiller_SetAC = 0x80B764D4; // type:func -DoorKiller_Die = 0x80B76534; // type:func -DoorKiller_RiseBackUp = 0x80B76584; // type:func -DoorKiller_FallOver = 0x80B76734; // type:func -DoorKiller_Wobble = 0x80B76B00; // type:func -DoorKiller_WaitBeforeWobble = 0x80B76C70; // type:func -DoorKiller_Wait = 0x80B76CA4; // type:func -DoorKiller_UpdateTexture = 0x80B76F04; // type:func -DoorKiller_WaitForObject = 0x80B76F98; // type:func -DoorKiller_Update = 0x80B7704C; // type:func -DoorKiller_SetTexture = 0x80B77070; // type:func -DoorKiller_DrawDoor = 0x80B7709C; // type:func -DoorKiller_DrawRubble = 0x80B770F8; // type:func -func_808B27F0 = 0x80B77400; // type:func -func_808B280C = 0x80B77420; // type:func -BgSpot11Oasis_Init = 0x80B77534; // type:func -func_808B2970 = 0x80B77588; // type:func -func_808B2980 = 0x80B7759C; // type:func -func_808B29E0 = 0x80B775FC; // type:func -func_808B29F0 = 0x80B77610; // type:func -func_808B2AA8 = 0x80B776C8; // type:func -func_808B2AB8 = 0x80B776DC; // type:func -BgSpot11Oasis_Update = 0x80B776EC; // type:func -BgSpot11Oasis_Draw = 0x80B778E0; // type:func -BgSpot18Futa_Init = 0x80B77B30; // type:func -BgSpot18Futa_Destroy = 0x80B77B9C; // type:func -BgSpot18Futa_Update = 0x80B77BD0; // type:func -BgSpot18Futa_Draw = 0x80B77C34; // type:func -BgSpot18Shutter_Init = 0x80B77CD0; // type:func -BgSpot18Shutter_Destroy = 0x80B77E80; // type:func -func_808B95AC = 0x80B77EB4; // type:func -func_808B95B8 = 0x80B77EC4; // type:func -func_808B9618 = 0x80B77F24; // type:func -func_808B9698 = 0x80B77FAC; // type:func -func_808B971C = 0x80B78030; // type:func -BgSpot18Shutter_Update = 0x80B7810C; // type:func -BgSpot18Shutter_Draw = 0x80B78130; // type:func -EnMa3_GetTextId = 0x80B78220; // type:func -EnMa3_UpdateTalkState = 0x80B78358; // type:func -func_80AA2E54 = 0x80B785D8; // type:func -func_80AA2EC8 = 0x80B7864C; // type:func -func_80AA2F28 = 0x80B786B0; // type:func -EnMa3_UpdateEyes = 0x80B78708; // type:func -EnMa3_ChangeAnim = 0x80B78794; // type:func -EnMa3_Init = 0x80B78804; // type:func -EnMa3_Destroy = 0x80B78958; // type:func -func_80AA3200 = 0x80B78998; // type:func -EnMa3_Update = 0x80B789CC; // type:func -EnMa3_OverrideLimbDraw = 0x80B78AE0; // type:func -EnMa3_PostLimbDraw = 0x80B78D20; // type:func -EnMa3_Draw = 0x80B78DD4; // type:func -EnCow_RotateY = 0x80B791D0; // type:func -EnCow_SetColliderPos = 0x80B79268; // type:func -EnCow_SetTailPos = 0x80B7935C; // type:func -EnCow_Init = 0x80B793D8; // type:func -EnCow_Destroy = 0x80B79810; // type:func -EnCow_UpdateAnimation = 0x80B7985C; // type:func -EnCow_TalkEnd = 0x80B79A84; // type:func -EnCow_GiveMilkEnd = 0x80B79AFC; // type:func -EnCow_GiveMilkWait = 0x80B79B44; // type:func -EnCow_GiveMilk = 0x80B79BA8; // type:func -EnCow_CheckForEmptyBottle = 0x80B79C44; // type:func -EnCow_Talk = 0x80B79CD4; // type:func -EnCow_Idle = 0x80B79D48; // type:func -EnCow_IdleTail = 0x80B79E64; // type:func -EnCow_Update = 0x80B79FFC; // type:func -EnCow_UpdateTail = 0x80B7A278; // type:func -EnCow_OverrideLimbDraw = 0x80B7A364; // type:func -EnCow_PostLimbDraw = 0x80B7A3B4; // type:func -EnCow_Draw = 0x80B7A3F4; // type:func -EnCow_DrawTail = 0x80B7A454; // type:func -BgIceTurara_Init = 0x80B7A630; // type:func -BgIceTurara_Destroy = 0x80B7A70C; // type:func -BgIceTurara_Break = 0x80B7A754; // type:func -BgIceTurara_Stalagmite = 0x80B7A934; // type:func -BgIceTurara_Wait = 0x80B7A99C; // type:func -BgIceTurara_Shiver = 0x80B7A9D4; // type:func -BgIceTurara_Fall = 0x80B7AB40; // type:func -BgIceTurara_Regrow = 0x80B7AC98; // type:func -BgIceTurara_Update = 0x80B7ACE8; // type:func -BgIceTurara_Draw = 0x80B7AD0C; // type:func -func_80891AC0 = 0x80B7AE60; // type:func -BgIceShutter_Init = 0x80B7AEE8; // type:func -BgIceShutter_Destroy = 0x80B7B068; // type:func -func_80891CF4 = 0x80B7B09C; // type:func -func_80891D6C = 0x80B7B114; // type:func -func_80891DD4 = 0x80B7B17C; // type:func -BgIceShutter_Update = 0x80B7B1E4; // type:func -BgIceShutter_Draw = 0x80B7B208; // type:func -EnKakasi2_Init = 0x80B7B2D0; // type:func -EnKakasi2_Destroy = 0x80B7B42C; // type:func -func_80A90264 = 0x80B7B458; // type:func -func_80A904D8 = 0x80B7B5B0; // type:func -func_80A90578 = 0x80B7B650; // type:func -func_80A9062C = 0x80B7B704; // type:func -func_80A906C4 = 0x80B7B79C; // type:func -EnKakasi2_Update = 0x80B7B80C; // type:func -func_80A90948 = 0x80B7B8CC; // type:func -EnKakasi3_Destroy = 0x80B7B9F0; // type:func -EnKakasi3_Init = 0x80B7BA1C; // type:func -func_80A90E28 = 0x80B7BAE4; // type:func -func_80A90EBC = 0x80B7BB78; // type:func -func_80A911F0 = 0x80B7BEAC; // type:func -func_80A91284 = 0x80B7BF40; // type:func -func_80A91348 = 0x80B7C004; // type:func -func_80A915B8 = 0x80B7C27C; // type:func -func_80A91620 = 0x80B7C2E8; // type:func -func_80A91760 = 0x80B7C428; // type:func -func_80A917FC = 0x80B7C4C8; // type:func -func_80A9187C = 0x80B7C550; // type:func -func_80A918E4 = 0x80B7C5BC; // type:func -func_80A91A90 = 0x80B7C700; // type:func -EnKakasi3_Update = 0x80B7C800; // type:func -EnKakasi3_Draw = 0x80B7C8F8; // type:func -OceffWipe4_Init = 0x80B7CAD0; // type:func -OceffWipe4_Destroy = 0x80B7CB2C; // type:func -OceffWipe4_Update = 0x80B7CB50; // type:func -OceffWipe4_Draw = 0x80B7CBB0; // type:func -EnEg_PlayVoidOutSFX = 0x80B7DAB0; // type:func -EnEg_Destroy = 0x80B7DAD0; // type:func -EnEg_Init = 0x80B7DAE0; // type:func -func_809FFDC8 = 0x80B7DAF0; // type:func -EnEg_Update = 0x80B7DB88; // type:func -EnEg_Draw = 0x80B7DBD0; // type:func -BgMenkuriNisekabe_Init = 0x80B7DC60; // type:func -BgMenkuriNisekabe_Destroy = 0x80B7DC88; // type:func -BgMenkuriNisekabe_Update = 0x80B7DC98; // type:func -BgMenkuriNisekabe_Draw = 0x80B7DCCC; // type:func -EnZo_SpawnRipple = 0x80B7DDB0; // type:func -EnZo_SpawnBubble = 0x80B7DE44; // type:func -EnZo_SpawnSplash = 0x80B7DF74; // type:func -EnZo_UpdateEffectsRipples = 0x80B7E0E0; // type:func -EnZo_UpdateEffectsBubbles = 0x80B7E19C; // type:func -EnZo_UpdateEffectsSplashes = 0x80B7E2CC; // type:func -EnZo_DrawEffectsRipples = 0x80B7E404; // type:func -EnZo_DrawEffectsBubbles = 0x80B7E5B4; // type:func -EnZo_DrawEffectsSplashes = 0x80B7E760; // type:func -EnZo_TreadWaterRipples = 0x80B7E918; // type:func -EnZo_SpawnSplashes = 0x80B7E994; // type:func -EnZo_GetTextId = 0x80B7EB08; // type:func -EnZo_UpdateTalkState = 0x80B7ED7C; // type:func -EnZo_Blink = 0x80B7EEE0; // type:func -EnZo_Dialog = 0x80B7EF58; // type:func -EnZo_PlayerInProximity = 0x80B7F038; // type:func -EnZo_SetAnimation = 0x80B7F0D8; // type:func -EnZo_Init = 0x80B7F1D0; // type:func -EnZo_Destroy = 0x80B7F3D8; // type:func -EnZo_Standing = 0x80B7F3E8; // type:func -EnZo_Submerged = 0x80B7F4CC; // type:func -EnZo_Surface = 0x80B7F50C; // type:func -EnZo_TreadWater = 0x80B7F5F0; // type:func -EnZo_Dive = 0x80B7F7A0; // type:func -EnZo_Update = 0x80B7F8E8; // type:func -EnZo_OverrideLimbDraw = 0x80B7FAC8; // type:func -EnZo_PostLimbDraw = 0x80B7FCE8; // type:func -EnZo_Draw = 0x80B7FD44; // type:func -EffectSsIceSmoke_Init = 0x80B80370; // type:func -EffectSsIceSmoke_Draw = 0x80B80490; // type:func -EffectSsIceSmoke_Update = 0x80B80770; // type:func -ObjMakekinsuta_Init = 0x80B80850; // type:func -func_80B98320 = 0x80B80868; // type:func -ObjMakekinsuta_DoNothing = 0x80B8091C; // type:func -ObjMakekinsuta_Update = 0x80B8092C; // type:func -EnGe3_ChangeAction = 0x80B809A0; // type:func -EnGe3_Init = 0x80B80A48; // type:func -EnGe3_Destroy = 0x80B80B50; // type:func -EnGe3_TurnToFacePlayer = 0x80B80B7C; // type:func -EnGe3_LookAtPlayer = 0x80B80C94; // type:func -EnGe3_Wait = 0x80B80DA8; // type:func -EnGe3_WaitLookAtPlayer = 0x80B80E0C; // type:func -EnGe3_WaitTillCardGiven = 0x80B80E2C; // type:func -EnGe3_GiveCard = 0x80B80E90; // type:func -EnGe3_ForceTalk = 0x80B80F24; // type:func -EnGe3_UpdateCollision = 0x80B80FDC; // type:func -EnGe3_MoveAndBlink = 0x80B81084; // type:func -EnGe3_UpdateWhenNotTalking = 0x80B81110; // type:func -EnGe3_Update = 0x80B811C4; // type:func -EnGe3_OverrideLimbDraw = 0x80B81210; // type:func -EnGe3_PostLimbDraw = 0x80B81364; // type:func -EnGe3_Draw = 0x80B813C0; // type:func -ObjTimeblock_CalculateIsVisible = 0x80B815E0; // type:func -ObjTimeblock_SpawnDemoEffect = 0x80B816A0; // type:func -ObjTimeblock_ToggleSwitchFlag = 0x80B81714; // type:func -ObjTimeblock_Init = 0x80B8175C; // type:func -ObjTimeblock_Destroy = 0x80B81910; // type:func -ObjTimeblock_PlayerIsInRange = 0x80B81944; // type:func -ObjTimeblock_WaitForOcarina = 0x80B81A24; // type:func -ObjTimeblock_WaitForSong = 0x80B81AA4; // type:func -ObjTimeblock_SetupDoNothing = 0x80B81B1C; // type:func -ObjTimeblock_DoNothing = 0x80B81B30; // type:func -ObjTimeblock_SetupNormal = 0x80B81B40; // type:func -ObjTimeblock_Normal = 0x80B81B54; // type:func -func_80BA06AC = 0x80B81CD0; // type:func -ObjTimeblock_SetupAltBehaviorVisible = 0x80B81D80; // type:func -ObjTimeblock_AltBehaviorVisible = 0x80B81D94; // type:func -ObjTimeblock_SetupAltBehaviourNotVisible = 0x80B81E60; // type:func -ObjTimeblock_AltBehaviourNotVisible = 0x80B81E74; // type:func -ObjTimeblock_Update = 0x80B81F44; // type:func -ObjTimeblock_Draw = 0x80B81FCC; // type:func -ObjHamishi_InitCollision = 0x80B82230; // type:func -ObjHamishi_Shake = 0x80B82288; // type:func -ObjHamishi_Break = 0x80B82404; // type:func -ObjHamishi_Init = 0x80B826B0; // type:func -ObjHamishi_Destroy = 0x80B82798; // type:func -ObjHamishi_Update = 0x80B827C4; // type:func -ObjHamishi_Draw = 0x80B828F4; // type:func -EnZl4_SetActiveCamDir = 0x80B82A80; // type:func -EnZl4_SetActiveCamMove = 0x80B82B58; // type:func -EnZl4_GetTextId = 0x80B82BDC; // type:func -EnZl4_UpdateTalkState = 0x80B82C80; // type:func -EnZl4_UpdateFace = 0x80B82CBC; // type:func -EnZl4_SetMove = 0x80B82E0C; // type:func -func_80B5BB78 = 0x80B82E4C; // type:func -EnZl4_GetCueStartPos = 0x80B82E98; // type:func -EnZl4_SetupFromLegendCs = 0x80B82EDC; // type:func -EnZl4_InMovingAnim = 0x80B82FB4; // type:func -EnZl4_Init = 0x80B83084; // type:func -EnZl4_Destroy = 0x80B83240; // type:func -EnZl4_SetNextAnim = 0x80B8326C; // type:func -EnZl4_ReverseAnimation = 0x80B832C0; // type:func -EnZl4_CsWaitForPlayer = 0x80B832E8; // type:func -EnZl4_CsMeetPlayer = 0x80B83448; // type:func -EnZl4_CsAskStone = 0x80B83740; // type:func -EnZl4_CsAskName = 0x80B83C6C; // type:func -EnZl4_CsTellLegend = 0x80B84258; // type:func -EnZl4_CsLookWindow = 0x80B846B4; // type:func -EnZl4_CsWarnAboutGanon = 0x80B848F8; // type:func -EnZl4_CsMakePlan = 0x80B84DC0; // type:func -EnZl4_Cutscene = 0x80B85104; // type:func -EnZl4_Idle = 0x80B8537C; // type:func -EnZl4_TheEnd = 0x80B853F4; // type:func -EnZl4_Update = 0x80B855A4; // type:func -EnZl4_OverrideLimbDraw = 0x80B85654; // type:func -EnZl4_PostLimbDraw = 0x80B857E4; // type:func -EnZl4_Draw = 0x80B85840; // type:func -EnMm2_ChangeAnim = 0x80B874B0; // type:func -func_80AAEF70 = 0x80B875D4; // type:func -EnMm2_Init = 0x80B876A4; // type:func -EnMm2_Destroy = 0x80B8785C; // type:func -func_80AAF224 = 0x80B87888; // type:func -func_80AAF2BC = 0x80B87924; // type:func -func_80AAF330 = 0x80B87998; // type:func -func_80AAF3C0 = 0x80B87A28; // type:func -func_80AAF57C = 0x80B87BE4; // type:func -func_80AAF5EC = 0x80B87C58; // type:func -func_80AAF668 = 0x80B87CD4; // type:func -EnMm2_Update = 0x80B87DC8; // type:func -EnMm2_Draw = 0x80B87F10; // type:func -EnMm2_OverrideLimbDraw = 0x80B87FDC; // type:func -EnMm2_PostLimbDraw = 0x80B88064; // type:func -BgJyaBlock_Init = 0x80B88270; // type:func -BgJyaBlock_Destroy = 0x80B88328; // type:func -BgJyaBlock_Update = 0x80B8835C; // type:func -BgJyaBlock_Draw = 0x80B88380; // type:func -ObjWarp2block_Spawn = 0x80B884E0; // type:func -func_80BA1ECC = 0x80B885BC; // type:func -ObjWarp2block_SwapWithChild = 0x80B8873C; // type:func -func_80BA2218 = 0x80B8890C; // type:func -func_80BA228C = 0x80B8898C; // type:func -func_80BA2304 = 0x80B88A04; // type:func -ObjWarp2block_Init = 0x80B88A48; // type:func -ObjWarp2block_Destroy = 0x80B88B68; // type:func -ObjWarp2block_SetInactive = 0x80B88BA8; // type:func -ObjWarp2block_DoNothing = 0x80B88BC0; // type:func -func_80BA24E8 = 0x80B88BD0; // type:func -func_80BA24F8 = 0x80B88BE4; // type:func -func_80BA2600 = 0x80B88CC8; // type:func -func_80BA2610 = 0x80B88CDC; // type:func -ObjWarp2block_Update = 0x80B88D8C; // type:func -ObjWarp2block_Draw = 0x80B88DC8; // type:func diff --git a/tools/disasm/ique-cn/variables.txt b/tools/disasm/ique-cn/variables.txt deleted file mode 100644 index 3103f86a63..0000000000 --- a/tools/disasm/ique-cn/variables.txt +++ /dev/null @@ -1,23 +0,0 @@ -gCartHandle = 0x80009D60; // size:0x4 type:OSPiHandle* -gCurrentRegion = 0x80009F00; // size:0x4 type:u32 -__osRunQueue = 0x80009F38; // size:0x4 type:OSThread* -__osRunningThread = 0x80009F40; // size:0x4 type:OSThread* -__osFaultedThread = 0x80009F44; // size:0x4 type:OSThread* -__osHwIntTable = 0x8000A070; // size:0x28 -__osPiIntTable = 0x8000A098; // size:0x8 -__osShutdown = 0x8000A0FC; // size:0x4 type:u32 -__OSGlobalIntMask = 0x8000A100; // type:OSHWIntr -__osIntOffTable = 0x8000A670; // size:0x20 type:u8 -__osIntTable = 0x8000A690; // size:0x24 -__osRcpImTable = 0x8000A6C0; // type:u16 -__DriveRomHandle = 0x80010760; // size:0x74 type:OSPiHandle -__osThreadSave = 0x80012BE0; // type:OSThread -__osEventStateTab = 0x80012F40; // size:0x78 -gGameStateOverlayTable = 0x800F8F30; // size:0x120 type:GameStateOverlay -gRegEditor = 0x80127760; // size:0x4 type:RegEditor* -sZeldaArena = 0x80127C50; // size:0x24 type:Arena -gSegments = 0x80129048; // size:0x40 -sFaultDrawer = 0x8012E030; // size:0x3C type:FaultDrawer -sArenaLockMsg = 0x80137E40; // size:0x4 type:OSMesg -gSystemArena = 0x80137E50; // type:Arena -gSaveContext = 0x80137F40; // size:0x1428 type:SaveContext diff --git a/tools/endian.h b/tools/endian.h new file mode 100644 index 0000000000..d69e2e6670 --- /dev/null +++ b/tools/endian.h @@ -0,0 +1,67 @@ +#ifndef ENDIAN_H_ +#define ENDIAN_H_ + +#if defined(__linux__) || defined(__CYGWIN__) +#include +#elif defined(__APPLE__) +#include + +#define htobe16(x) OSSwapHostToBigInt16(x) +#define htole16(x) OSSwapHostToLittleInt16(x) +#define be16toh(x) OSSwapBigToHostInt16(x) +#define le16toh(x) OSSwapLittleToHostInt16(x) + +#define htobe32(x) OSSwapHostToBigInt32(x) +#define htole32(x) OSSwapHostToLittleInt32(x) +#define be32toh(x) OSSwapBigToHostInt32(x) +#define le32toh(x) OSSwapLittleToHostInt32(x) + +#define htobe64(x) OSSwapHostToBigInt64(x) +#define htole64(x) OSSwapHostToLittleInt64(x) +#define be64toh(x) OSSwapBigToHostInt64(x) +#define le64toh(x) OSSwapLittleToHostInt64(x) +#else + +#if !defined(__BYTE_ORDER__) +#error "No endian define provided by compiler" +#endif + +#if (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) + +#define htobe16(x) (x) +#define htole16(x) __builtin_bswap16(x) +#define be16toh(x) (x) +#define le16toh(x) __builtin_bswap16(x) + +#define htobe32(x) (x) +#define htole32(x) __builtin_bswap32(x) +#define be32toh(x) (x) +#define le32toh(x) __builtin_bswap32(x) + +#define htobe64(x) (x) +#define htole64(x) __builtin_bswap64(x) +#define be64toh(x) (x) +#define le64toh(x) __builtin_bswap64(x) + +#else + +#define htobe16(x) __builtin_bswap16(x) +#define htole16(x) (x) +#define be16toh(x) __builtin_bswap16(x) +#define le16toh(x) (x) + +#define htobe32(x) __builtin_bswap32(x) +#define htole32(x) (x) +#define be32toh(x) __builtin_bswap32(x) +#define le32toh(x) (x) + +#define htobe64(x) __builtin_bswap64(x) +#define htole64(x) (x) +#define be64toh(x) __builtin_bswap64(x) +#define le64toh(x) (x) + +#endif + +#endif + +#endif diff --git a/tools/fado/.gitrepo b/tools/fado/.gitrepo index 5fac8601da..c68147bb9b 100644 --- a/tools/fado/.gitrepo +++ b/tools/fado/.gitrepo @@ -6,7 +6,7 @@ [subrepo] remote = git@github.com:EllipticEllipsis/fado.git branch = master - commit = 7fad57f834a86b6a752292996f99f08771f29df4 - parent = 17d683780d3878159959a87a9c4a2683d8781ef2 + commit = a45f99b46d2f70fb14f4648907f493b28a96a78a + parent = 06904e1ee76828591b42f419a5e4f80106de4615 method = merge cmdver = 0.4.6 diff --git a/tools/fado/lib/fairy/fairy.c b/tools/fado/lib/fairy/fairy.c index 8fc090300c..afecec40e9 100644 --- a/tools/fado/lib/fairy/fairy.c +++ b/tools/fado/lib/fairy/fairy.c @@ -364,10 +364,10 @@ void Fairy_InitFile(FairyFileInfo* fileInfo, FILE* file) { off += 1; case SHT_REL: off += 5; - /* This assumes only one reloc section of each name */ - // TODO: is this a problem? { FairySection relocSection = FAIRY_SECTION_OTHER; + FairyRela* relocs; + size_t relocCount; /* Ignore the first 5/6 chars, which will always be ".rel."/".rela." */ if (strcmp(&shstrtab[currentSection.sh_name + off], "text") == 0) { @@ -381,11 +381,23 @@ void Fairy_InitFile(FairyFileInfo* fileInfo, FILE* file) { } FAIRY_DEBUG_PRINTF("Found %s section\n", &shstrtab[currentSection.sh_name]); + relocCount = Fairy_ReadRelocs(&relocs, file, currentSection.sh_type, currentSection.sh_offset, + currentSection.sh_size); + + /* Ignore empty reloc sections */ + if (relocCount == 0) { + free(relocs); + break; + } + + /* This assumes only one non-empty reloc section of each name */ + /* TODO: is this a problem? */ + assert(fileInfo->relocTablesInfo[relocSection].sectionData == NULL); + + fileInfo->relocTablesInfo[relocSection].sectionData = relocs; fileInfo->relocTablesInfo[relocSection].sectionType = SHT_RELA; fileInfo->relocTablesInfo[relocSection].sectionEntrySize = sizeof(FairyRela); - fileInfo->relocTablesInfo[relocSection].sectionEntryCount = - Fairy_ReadRelocs((FairyRela**)&fileInfo->relocTablesInfo[relocSection].sectionData, file, - currentSection.sh_type, currentSection.sh_offset, currentSection.sh_size); + fileInfo->relocTablesInfo[relocSection].sectionEntryCount = relocCount; } break; diff --git a/tools/fix_bss.py b/tools/fix_bss.py index 05cf4293a2..61cb4985d8 100755 --- a/tools/fix_bss.py +++ b/tools/fix_bss.py @@ -91,6 +91,11 @@ def read_relocs(object_path: Path, section_name: str) -> list[Reloc]: with open(object_path, "rb") as f: elffile = elftools.elf.elffile.ELFFile(f) symtab = elffile.get_section_by_name(".symtab") + + section = elffile.get_section_by_name(section_name) + if section is None: + return [] + data = elffile.get_section_by_name(section_name).data() reloc_section = elffile.get_section_by_name(f".rel{section_name}") @@ -165,9 +170,9 @@ def get_file_pointers( # For relocations against a global symbol, subtract the addend so that the pointer # is for the start of the symbol. This can help deal with things like STACK_TOP - # (where the pointer is past the end of the symbol) or negative addends. If the - # relocation is against a section however, it's not useful to subtract the addend, - # so we keep it as-is and hope for the best. + # (where the pointer is past the end of the symbol) or negative addends. We can't + # do this for relocations against a section though, since we need the addend to + # distinguish between different static variables. if reloc.name.startswith("."): # section addend = reloc.addend else: # symbol @@ -441,13 +446,13 @@ def determine_base_bss_ordering( new_symbol = None new_offset = 0 for symbol in build_bss_symbols: - if ( - symbol.offset <= build_offset - and build_offset < symbol.offset + symbol.size - ): + # To handle one-past-the-end pointers, we check <= instead of < for the symbol end. + # This won't work if there is another symbol right after this one, since we'll + # attribute this pointer to that symbol instead. This could prevent us from solving + # BSS ordering, but often the two symbols are adjacent in the baserom too so it works anyway. + if symbol.offset <= build_offset <= symbol.offset + symbol.size: new_symbol = symbol new_offset = base_offset - (build_offset - symbol.offset) - break if new_symbol is None: if p.addend > 0: @@ -698,6 +703,12 @@ def process_file( raise FixBssException(f"Could not determine compiler command line for {file}") output(f"Compiler command: {shlex.join(command_line)}") + + if any(s.startswith("tools/egcs/") for s in command_line): + raise FixBssException( + "Can't automatically fix BSS ordering for EGCS-compiled files" + ) + symbol_table, ucode = run_cfe(command_line, keep_files=False) bss_variables = find_bss_variables(symbol_table, ucode) diff --git a/tools/generate_patch_from_jenkins.sh b/tools/generate_patch_from_jenkins.sh index 4eb98cd3af..0965015ccb 100755 --- a/tools/generate_patch_from_jenkins.sh +++ b/tools/generate_patch_from_jenkins.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -euo pipefail PATCH=$(git diff | base64 -w 0) diff --git a/tools/patch_data_with_rodata_mdebug.py b/tools/patch_data_with_rodata_mdebug.py new file mode 100755 index 0000000000..48059c51e1 --- /dev/null +++ b/tools/patch_data_with_rodata_mdebug.py @@ -0,0 +1,67 @@ +#!/usr/bin/env python3 + +# SPDX-FileCopyrightText: © 2025 ZeldaRET +# SPDX-License-Identifier: CC0-1.0 + +import argparse +import struct + +import elftools.elf.elffile + +# Patches mdebug for files linked with data_with_rodata.ld by replacing storage +# class stData with stRData, since .data symbols are now in the .rodata section + +SC_MASK = 0x03E00000 +SC_SHIFT = 21 + + +def read_u32(f, offset): + f.seek(offset) + return struct.unpack(">I", f.read(4))[0] + + +def write_u32(f, offset, value): + f.seek(offset) + f.write(struct.pack(">I", value)) + + +def patch_sc(f, offset): + value = read_u32(f, offset) + sc = (value & SC_MASK) >> SC_SHIFT + if sc == 2: # scData + value = (value & ~SC_MASK) | (15 << SC_SHIFT) # scRData + write_u32(f, offset, value) + + +def main(): + parser = argparse.ArgumentParser() + + parser.add_argument("file", help="input file") + args = parser.parse_args() + + with open(args.file, "r+b") as f: + elf = elftools.elf.elffile.ELFFile(f) + + mdebug_offset = 0 + for section in elf.iter_sections(): + if section.name == ".mdebug": + mdebug_offset = section["sh_offset"] + break + + if mdebug_offset == 0: + return + + isymMax = read_u32(f, mdebug_offset + 0x20) + cbSymOffset = read_u32(f, mdebug_offset + 0x24) + iextMax = read_u32(f, mdebug_offset + 0x58) + cbExtOffset = read_u32(f, mdebug_offset + 0x5C) + + for i in range(isymMax): + patch_sc(f, cbSymOffset + i * 0xC + 0x8) + + for i in range(iextMax): + patch_sc(f, cbExtOffset + i * 0x10 + 0xC) + + +if __name__ == "__main__": + main() diff --git a/tools/patch_ique_kaleido_reloc.py b/tools/patch_ique_kaleido_reloc.py new file mode 100644 index 0000000000..dd751c4ede --- /dev/null +++ b/tools/patch_ique_kaleido_reloc.py @@ -0,0 +1,13 @@ +#!/usr/bin/env python3 +# +# Patches kaleido bss size in relocations for matching builds. +# + +import sys + +with open(sys.argv[1], "r+") as reloc_sfile: + contents = reloc_sfile.read() + contents = contents.replace(".word _ovl_kaleido_scopeSegmentBssSize\n", ".word 0x10\n") + reloc_sfile.seek(0) + reloc_sfile.write(contents) + reloc_sfile.truncate() diff --git a/tools/permuter_settings.toml b/tools/permuter_settings.toml index b168afec86..607781e373 100644 --- a/tools/permuter_settings.toml +++ b/tools/permuter_settings.toml @@ -2,6 +2,9 @@ build_system = "make" compiler_type = "ido" # adjusts default weights for permuting [preserve_macros] +NULL = "void" +true = "int" +false = "int" "g[DS]P.*" = "void" "gDma.*" = "void" "a[A-Z].*" = "void"