From ffc9f2d4f1fe72a9ac2d803177d612600b5ef22e Mon Sep 17 00:00:00 2001 From: cadmic Date: Mon, 30 Dec 2024 06:30:37 -0800 Subject: [PATCH 01/40] Download EGCS binutils and gcc for iQue (#2391) * Download EGCS binutils and gcc for iQue * Use curl -s for cleaner output --- tools/.gitignore | 1 + tools/Makefile | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/tools/.gitignore b/tools/.gitignore index 37084474b2..8d3a321faa 100644 --- a/tools/.gitignore +++ b/tools/.gitignore @@ -10,3 +10,4 @@ vtxdis yaz0 ido_recomp/ +egcs/ diff --git a/tools/Makefile b/tools/Makefile index c408be611d..37707788f4 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -14,6 +14,10 @@ IDO_RECOMP_VERSION := v1.2 IDO_RECOMP_5_3_DIR := ido_recomp/$(DETECTED_OS)/5.3 IDO_RECOMP_7_1_DIR := ido_recomp/$(DETECTED_OS)/7.1 +EGCS_BINUTILS_VERSION := 0.6 +EGCS_GCC_VERSION := 0.5 +EGCS_DIR := egcs/$(DETECTED_OS) + ifeq ($(shell command -v clang >/dev/null 2>&1; echo $$?),0) CC := clang else @@ -30,14 +34,14 @@ ifneq ($(LLD),0) CFLAGS += -fuse-ld=lld endif -all: $(PROGRAMS) $(IDO_RECOMP_5_3_DIR) $(IDO_RECOMP_7_1_DIR) +all: $(PROGRAMS) $(IDO_RECOMP_5_3_DIR) $(IDO_RECOMP_7_1_DIR) $(EGCS_DIR) $(MAKE) -C ZAPD $(MAKE) -C fado $(MAKE) -C audio clean: $(RM) $(PROGRAMS) $(addsuffix .exe,$(PROGRAMS)) - $(RM) -r ido_recomp + $(RM) -r ido_recomp egcs $(MAKE) -C ZAPD clean $(MAKE) -C fado clean $(MAKE) -C audio clean @@ -65,8 +69,13 @@ $(foreach p,$(PROGRAMS),$(eval $(call COMPILE,$(p)))) $(IDO_RECOMP_5_3_DIR): mkdir -p $@ - curl -L https://github.com/decompals/ido-static-recomp/releases/download/$(IDO_RECOMP_VERSION)/ido-5.3-recomp-$(DETECTED_OS).tar.gz | tar xz -C $@ + curl -sL https://github.com/decompals/ido-static-recomp/releases/download/$(IDO_RECOMP_VERSION)/ido-5.3-recomp-$(DETECTED_OS).tar.gz | tar xz -C $@ $(IDO_RECOMP_7_1_DIR): mkdir -p $@ - curl -L https://github.com/decompals/ido-static-recomp/releases/download/$(IDO_RECOMP_VERSION)/ido-7.1-recomp-$(DETECTED_OS).tar.gz | tar xz -C $@ + curl -sL https://github.com/decompals/ido-static-recomp/releases/download/$(IDO_RECOMP_VERSION)/ido-7.1-recomp-$(DETECTED_OS).tar.gz | tar xz -C $@ + +$(EGCS_DIR): + mkdir -p $@ + curl -sL https://github.com/decompals/mips-binutils-egcs-2.9.5/releases/download/$(EGCS_BINUTILS_VERSION)/mips-binutils-egcs-2.9.5-$(DETECTED_OS).tar.gz | tar xz -C $@ + curl -sL https://github.com/decompals/mips-gcc-egcs-2.91.66/releases/download/$(EGCS_GCC_VERSION)/mips-gcc-egcs-2.91.66-$(DETECTED_OS).tar.gz | tar xz -C $@ From 9dafc2f2e4cecff745be05b7003f4e5b2e9f2ba9 Mon Sep 17 00:00:00 2001 From: cadmic Date: Thu, 2 Jan 2025 00:35:22 -0800 Subject: [PATCH 02/40] [iQue] Build some C files with EGCS (#2396) --- Makefile | 67 +++++++++++++++------ include/attributes.h | 16 ++++- include/libc/assert.h | 2 +- include/libc/stdarg.h | 30 +++++++-- include/libc/stddef.h | 2 +- include/macros.h | 2 + include/ultra64/libc.h | 2 +- include/z64audio.h | 4 +- src/audio/general.c | 2 + src/code/main.c | 2 +- src/code/sched.c | 2 + src/code/z_actor.c | 2 + src/code/z_camera.c | 2 +- src/code/z_en_item00.c | 2 +- src/overlays/actors/ovl_Fishing/z_fishing.c | 2 +- tools/Makefile | 2 +- tools/audio/soundfont_compiler.c | 2 +- tools/permuter_settings.toml | 1 + undefined_syms.txt | 14 +++++ 19 files changed, 121 insertions(+), 37 deletions(-) diff --git a/Makefile b/Makefile index f805b08be1..d5acb63257 100644 --- a/Makefile +++ b/Makefile @@ -57,11 +57,6 @@ N64_EMULATOR ?= # This may also be used to disable debug features on debug ROMs by setting DEBUG_FEATURES to 0 # DEBUG_FEATURES ?= 1 -CFLAGS ?= -CCASFLAGS ?= -CPPFLAGS ?= -CPP_DEFINES ?= - # Version-specific settings REGIONAL_CHECKSUM := 0 ifeq ($(VERSION),ntsc-1.0) @@ -209,7 +204,6 @@ EXTRACTED_DIR := extracted/$(VERSION) VENV := .venv MAKE = make -CPPFLAGS += -P -xc -fno-dollars-in-identifiers ifeq ($(PLATFORM),N64) CPP_DEFINES += -DPLATFORM_N64=1 -DPLATFORM_GC=0 -DPLATFORM_IQUE=0 @@ -287,6 +281,9 @@ ifeq ($(ORIG_COMPILER),1) CCAS := $(CC) endif +EGCS_PREFIX := tools/egcs/$(DETECTED_OS)/ +EGCS_CC := $(EGCS_PREFIX)gcc -B $(EGCS_PREFIX) + AS := $(MIPS_BINUTILS_PREFIX)as LD := $(MIPS_BINUTILS_PREFIX)ld OBJCOPY := $(MIPS_BINUTILS_PREFIX)objcopy @@ -335,10 +332,6 @@ SEQ_CPPFLAGS := -D_LANGUAGE_ASEQ -DMML_VERSION=MML_VERSION_OOT $(CPP_DEFINES) - SBCFLAGS := --matching SFCFLAGS := --matching -CFLAGS += $(CPP_DEFINES) -CCASFLAGS := $(CPP_DEFINES) -CPPFLAGS += $(CPP_DEFINES) - # Extra debugging steps ifeq ($(DEBUG_OBJECTS),1) OBJDUMP_CMD = @$(OBJDUMP) $(OBJDUMP_FLAGS) $@ > $(@:.o=.s) @@ -360,20 +353,20 @@ ifeq ($(DEBUG_FEATURES),1) GBI_DEFINES += -DGBI_DEBUG endif -CFLAGS += $(GBI_DEFINES) - -ASFLAGS := -march=vr4300 -32 -no-pad-sections -Iinclude -I$(EXTRACTED_DIR) +CPPFLAGS += -P -xc -fno-dollars-in-identifiers $(CPP_DEFINES) +ASFLAGS += -march=vr4300 -32 -no-pad-sections -Iinclude -I$(EXTRACTED_DIR) ifeq ($(COMPILER),gcc) - CFLAGS += -G 0 -nostdinc $(INC) -march=vr4300 -mfix4300 -mabi=32 -mno-abicalls -mdivide-breaks -fno-PIC -fno-common -ffreestanding -fbuiltin -fno-builtin-sinf -fno-builtin-cosf $(CHECK_WARNINGS) -funsigned-char - CCASFLAGS += -G 0 -nostdinc $(INC) -march=vr4300 -mfix4300 -mabi=32 -mno-abicalls -fno-PIC -fno-common -Wa,-no-pad-sections + CFLAGS += $(CPP_DEFINES) $(GBI_DEFINES) -G 0 -nostdinc $(INC) -march=vr4300 -mfix4300 -mabi=32 -mno-abicalls -mdivide-breaks -fno-PIC -fno-common -ffreestanding -funsigned-char -fbuiltin -fno-builtin-sinf -fno-builtin-cosf $(CHECK_WARNINGS) + CCASFLAGS += $(CPP_DEFINES) $(GBI_DEFINES) -G 0 -nostdinc $(INC) -march=vr4300 -mfix4300 -mabi=32 -mno-abicalls -fno-PIC -fno-common -Wa,-no-pad-sections MIPS_VERSION := -mips3 else # Suppress warnings for wrong number of macro arguments (to fake variadic # macros) and Microsoft extensions such as anonymous structs (which the # compiler does support but warns for their usage). - CFLAGS += -G 0 -non_shared -fullwarn -verbose -Xcpluscomm $(INC) -Wab,-r4300_mul -woff 516,609,649,838,712,807 - CCASFLAGS += -G 0 -non_shared -fullwarn -verbose -Xcpluscomm $(INC) -Wab,-r4300_mul -woff 516,609,649,838,712,807 -o32 + 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 endif @@ -503,7 +496,7 @@ O_FILES := $(foreach f,$(S_FILES:.s=.o),$(BUILD_DIR)/$f) \ $(foreach f,$(ASSET_C_FILES_COMMITTED:.c=.o),$(BUILD_DIR)/$f) \ $(foreach f,$(BASEROM_BIN_FILES),$(BUILD_DIR)/baserom/$(notdir $f).o) \ $(BUILD_DIR)/src/code/z_message_z_game_over.o \ - $(BUILD_DIR)/src/makerom/ipl3.o + $(BUILD_DIR)/src/makerom/ipl3.o OVL_RELOC_FILES := $(shell $(CPP) $(CPPFLAGS) $(SPEC) | $(BUILD_DIR_REPLACE) | grep -o '[^"]*_reloc.o' ) @@ -564,6 +557,34 @@ endif $(BUILD_DIR)/src/code/jpegutils.o: CC := $(CC_OLD) $(BUILD_DIR)/src/code/jpegdecoder.o: CC := $(CC_OLD) +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/z_locale.o +EGCS_O_FILES += $(BUILD_DIR)/src/boot/z_std_dma.o +EGCS_O_FILES += $(BUILD_DIR)/src/boot/zlib.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_parameter.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_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 +$(EGCS_O_FILES): MIPS_VERSION := -mips3 +endif + ifeq ($(DEBUG_FEATURES),1) $(BUILD_DIR)/src/libc/%.o: OPTFLAGS := -g $(BUILD_DIR)/src/libc/%.o: ASOPTFLAGS := -g @@ -589,7 +610,12 @@ endif $(BUILD_DIR)/src/audio/sfx.o: CFLAGS += -use_readwrite_const $(BUILD_DIR)/src/audio/sequence.o: CFLAGS += -use_readwrite_const +ifeq ($(PLATFORM),IQUE) +$(BUILD_DIR)/src/libultra/%.o: CC := $(EGCS_CC) +$(BUILD_DIR)/src/libultra/%.o: CFLAGS := $(EGCS_CFLAGS) -mno-abicalls +else $(BUILD_DIR)/src/libultra/%.o: CC := $(CC_OLD) +endif $(BUILD_DIR)/src/libultra/libc/ll.o: OPTFLAGS := -O1 $(BUILD_DIR)/src/libultra/libc/ll.o: MIPS_VERSION := -mips3 -32 @@ -648,6 +674,11 @@ endif $(BUILD_DIR)/src/libleo/%.o: CC := $(CC_OLD) $(BUILD_DIR)/src/libleo/%.o: OPTFLAGS := -O2 +ifeq ($(PLATFORM),IQUE) +$(BUILD_DIR)/src/libgcc/%.o: CC := $(EGCS_CC) +$(BUILD_DIR)/src/libgcc/%.o: CFLAGS := $(EGCS_CFLAGS) +endif + $(BUILD_DIR)/assets/misc/z_select_static/%.o: GBI_DEFINES := -DF3DEX_GBI # For using asm_processor on some files: diff --git a/include/attributes.h b/include/attributes.h index c3154cac7b..3276c84325 100644 --- a/include/attributes.h +++ b/include/attributes.h @@ -8,12 +8,22 @@ #endif #define UNUSED __attribute__((unused)) -#define FALLTHROUGH __attribute__((fallthrough)) -#define NORETURN __attribute__((noreturn)) #define NO_REORDER __attribute__((no_reorder)) #define SECTION_DATA __attribute__((section(".data"))) -#ifdef __GNUC__ +#if __GNUC__ >= 7 +#define FALLTHROUGH __attribute__((fallthrough)) +#else +#define FALLTHROUGH +#endif + +#if defined(__GNUC__) && defined(NON_MATCHING) +#define NORETURN __attribute__((noreturn)) +#else +#define NORETURN +#endif + +#if defined(__GNUC__) && defined(NON_MATCHING) #define UNREACHABLE() __builtin_unreachable() #else #define UNREACHABLE() diff --git a/include/libc/assert.h b/include/libc/assert.h index dae8aeb651..de54b8a79c 100644 --- a/include/libc/assert.h +++ b/include/libc/assert.h @@ -29,7 +29,7 @@ __attribute__((noreturn)) void __assert(const char* assertion, const char* file, // Static/compile-time assertions -#if !defined(__sgi) && (defined(__GNUC__) || (__STDC_VERSION__ >= 201112L)) +#if !defined(__sgi) && (__GNUC__ >= 5 || __STDC_VERSION__ >= 201112L) # define static_assert(cond, msg) _Static_assert(cond, msg) #else # ifndef GLUE diff --git a/include/libc/stdarg.h b/include/libc/stdarg.h index 35ce4f944e..ec57a0c846 100644 --- a/include/libc/stdarg.h +++ b/include/libc/stdarg.h @@ -1,16 +1,16 @@ #ifndef STDARG_H #define STDARG_H -// When building with GCC, use the official vaarg macros to avoid warnings and possibly bad codegen. +// When building with modern GCC, use the official vaarg macros to avoid warnings and possibly bad codegen. -#ifdef __GNUC__ +#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 -#else +#elif defined(__sgi) /* IDO */ #ifndef _VA_LIST_ # define _VA_LIST_ @@ -52,6 +52,28 @@ typedef char* va_list; /* No cleanup processing is required for the end of a varargs list: */ #define va_end(__list) -#endif /* __GNUC__ */ +#else /* EGCS */ + +typedef char * __gnuc_va_list; + +#define __va_rounded_size(__TYPE) \ + (((sizeof (__TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int)) + +#define va_start(__AP, __LASTARG) \ + (__AP = (__gnuc_va_list) __builtin_next_arg (__LASTARG)) + +#define va_end(__AP) ((void)0) + +/* We cast to void * and then to TYPE * because this avoids + a warning about increasing the alignment requirement. */ +#define va_arg(__AP, __type) \ + ((__type *) (void *) (__AP = (char *) ((__alignof__(__type) > 4 \ + ? ((__PTRDIFF_TYPE__)__AP + 8 - 1) & -8 \ + : ((__PTRDIFF_TYPE__)__AP + 4 - 1) & -4) \ + + __va_rounded_size(__type))))[-1] + +typedef __gnuc_va_list va_list; + +#endif #endif diff --git a/include/libc/stddef.h b/include/libc/stddef.h index 45620895ee..0c0926ba6b 100644 --- a/include/libc/stddef.h +++ b/include/libc/stddef.h @@ -15,7 +15,7 @@ typedef unsigned long size_t; #endif -#ifdef __GNUC__ +#if __GNUC__ >= 4 #define offsetof(structure, member) __builtin_offsetof (structure, member) #else #define offsetof(structure, member) ((size_t)&(((structure*)0)->member)) diff --git a/include/macros.h b/include/macros.h index 59360541d0..f3fefa96d4 100644 --- a/include/macros.h +++ b/include/macros.h @@ -53,6 +53,8 @@ #define PRINTF osSyncPrintf #elif IDO_PRINTF_WORKAROUND #define PRINTF(args) (void)0 +#elif defined(__GNUC__) && __GNUC__ < 3 +#define PRINTF(format, args...) (void)0 #else #define PRINTF(format, ...) (void)0 #endif diff --git a/include/ultra64/libc.h b/include/ultra64/libc.h index e71cb879d7..3480f101ad 100644 --- a/include/ultra64/libc.h +++ b/include/ultra64/libc.h @@ -5,7 +5,7 @@ void osSyncPrintf(const char* fmt, ...); -#ifdef __GNUC__ +#if defined(__GNUC__) && defined(NON_MATCHING) void bzero(void* __s, unsigned int __n); int bcmp(const void* __sl, const void* __s2, unsigned int __n); void bcopy(const void* __src, void* __dest, unsigned int __n); diff --git a/include/z64audio.h b/include/z64audio.h index 86e2860db6..d60a6aaeb7 100644 --- a/include/z64audio.h +++ b/include/z64audio.h @@ -201,11 +201,9 @@ typedef struct AdpcmBookHeader { * The procedure used to design the codeBook is based on an adaptive clustering algorithm. * The size of the codeBook is (8 * order * numPredictors) and is 8-byte aligned */ -typedef s16 AdpcmBookData[]; - typedef struct AdpcmBook { /* 0x00 */ AdpcmBookHeader header; - /* 0x08 */ AdpcmBookData book; // size 8 * order * numPredictors. 8-byte aligned + /* 0x08 */ s16 book[1]; // size 8 * order * numPredictors. 8-byte aligned } AdpcmBook; // size >= 0x8 typedef struct Sample { diff --git a/src/audio/general.c b/src/audio/general.c index 2a639275bb..cb87548fa8 100644 --- a/src/audio/general.c +++ b/src/audio/general.c @@ -8,6 +8,8 @@ #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 diff --git a/src/code/main.c b/src/code/main.c index 8ad00b52bd..637243160f 100644 --- a/src/code/main.c +++ b/src/code/main.c @@ -24,7 +24,7 @@ extern struct IrqMgr gIrqMgr; #endif #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:141 ntsc-1.1:141 ntsc-1.2:141 pal-1.0:139 pal-1.1:139" + "ntsc-1.0:142 ntsc-1.1:142 ntsc-1.2:142 pal-1.0:140 pal-1.1:140" extern u8 _buffersSegmentEnd[]; diff --git a/src/code/sched.c b/src/code/sched.c index b22f38b402..58aa627a71 100644 --- a/src/code/sched.c +++ b/src/code/sched.c @@ -62,6 +62,8 @@ 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/z_actor.c b/src/code/z_actor.c index 66b9601e56..487b4749b0 100644 --- a/src/code/z_actor.c +++ b/src/code/z_actor.c @@ -24,6 +24,8 @@ static s32 sCurCeilingBgId; 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 #endif diff --git a/src/code/z_camera.c b/src/code/z_camera.c index e4090d484e..b35c18c048 100644 --- a/src/code/z_camera.c +++ b/src/code/z_camera.c @@ -3639,7 +3639,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:144 ntsc-1.1:144 ntsc-1.2:144 pal-1.0:142 pal-1.1:142" + "ntsc-1.0:145 ntsc-1.1:145 ntsc-1.2:145 pal-1.0:143 pal-1.1:143" s32 Camera_KeepOn4(Camera* camera) { static Vec3f D_8015BD50; diff --git a/src/code/z_en_item00.c b/src/code/z_en_item00.c index 64021830da..31386556c5 100644 --- a/src/code/z_en_item00.c +++ b/src/code/z_en_item00.c @@ -3,7 +3,7 @@ #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "overlays/effects/ovl_Effect_Ss_Dead_Sound/z_eff_ss_dead_sound.h" -#pragma increment_block_number "gc-eu:0 gc-eu-mq:0 gc-eu-mq-dbg:0 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128" \ +#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" #define FLAGS 0 diff --git a/src/overlays/actors/ovl_Fishing/z_fishing.c b/src/overlays/actors/ovl_Fishing/z_fishing.c index 0c306a0a00..02bbf1656d 100644 --- a/src/overlays/actors/ovl_Fishing/z_fishing.c +++ b/src/overlays/actors/ovl_Fishing/z_fishing.c @@ -35,7 +35,7 @@ #include "cic6105.h" #endif -#pragma increment_block_number "gc-eu:166 gc-eu-mq:166 gc-jp:166 gc-jp-ce:166 gc-jp-mq:166 gc-us:166 gc-us-mq:166" \ +#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" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/tools/Makefile b/tools/Makefile index 37707788f4..b50027312d 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -15,7 +15,7 @@ IDO_RECOMP_5_3_DIR := ido_recomp/$(DETECTED_OS)/5.3 IDO_RECOMP_7_1_DIR := ido_recomp/$(DETECTED_OS)/7.1 EGCS_BINUTILS_VERSION := 0.6 -EGCS_GCC_VERSION := 0.5 +EGCS_GCC_VERSION := 0.7 EGCS_DIR := egcs/$(DETECTED_OS) ifeq ($(shell command -v clang >/dev/null 2>&1; echo $$?),0) diff --git a/tools/audio/soundfont_compiler.c b/tools/audio/soundfont_compiler.c index 3dbf18eaa5..4f9a5779c4 100644 --- a/tools/audio/soundfont_compiler.c +++ b/tools/audio/soundfont_compiler.c @@ -1076,7 +1076,7 @@ emit_c_samples(FILE *out, soundfont *sf) "NO_REORDER SECTION_DATA ALIGNED(16) AdpcmBookHeader SF%d_%s_BOOK_HEADER = {" "\n" " %d, %d," "\n" "};" "\n" - "NO_REORDER SECTION_DATA AdpcmBookData SF%d_%s_BOOK_DATA = {" "\n", + "NO_REORDER SECTION_DATA s16 SF%d_%s_BOOK_DATA[] = {" "\n", // clang-format on sf->info.index, bookname, sample->aifc.book.order, sample->aifc.book.npredictors, sf->info.index, bookname); diff --git a/tools/permuter_settings.toml b/tools/permuter_settings.toml index 472edb6964..557e748cda 100644 --- a/tools/permuter_settings.toml +++ b/tools/permuter_settings.toml @@ -33,3 +33,4 @@ ACTOR_DEBUG_PRINTF = "void" [decompme.compilers] "tools/ido_recomp/*/7.1/cc" = "ido7.1" "tools/ido_recomp/*/5.3/cc" = "ido5.3" +"tools/egcs/*/gcc" = "egcs_1.1.2-4" diff --git a/undefined_syms.txt b/undefined_syms.txt index deba8affd0..6f663eae89 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -9,3 +9,17 @@ D_0F000000 = 0x0F000000; // z_bg_mjin D_06000000 = 0x06000000; + +#if PLATFORM_IQUE +__divdi3 = 0x80008010; +__moddi3 = 0x800085F0; +__udivdi3 = 0x80008B80; +__umoddi3 = 0x800090F0; +__cmpdi2 = 0x80009600; +__floatdidf = 0x80009650; +__floatdisf = 0x800096A0; +__fixunsdfdi = 0x80009760; +__fixdfdi = 0x80009960; +__fixunssfdi = 0x800099D0; +__fixsfdi = 0x80009BD0; +#endif From 4c88cfd08a9c0f48b16332aaf1d2e322ebc77161 Mon Sep 17 00:00:00 2001 From: Tharo <17233964+Thar0@users.noreply.github.com> Date: Fri, 3 Jan 2025 04:42:28 +0000 Subject: [PATCH 03/40] [iQue] Match makerom (#2397) --- Makefile | 23 ++++++++++++++++++++--- linker_scripts/makerom.ld | 13 +++++++++++++ src/makerom/entry.s | 39 ++++++++++++++++++++++++++++----------- src/makerom/rom_header.s | 9 +++++++++ 4 files changed, 70 insertions(+), 14 deletions(-) create mode 100644 linker_scripts/makerom.ld diff --git a/Makefile b/Makefile index d5acb63257..357fe7e538 100644 --- a/Makefile +++ b/Makefile @@ -281,8 +281,10 @@ ifeq ($(ORIG_COMPILER),1) CCAS := $(CC) endif +# EGCS Compiler EGCS_PREFIX := tools/egcs/$(DETECTED_OS)/ EGCS_CC := $(EGCS_PREFIX)gcc -B $(EGCS_PREFIX) +EGCS_CCAS := $(EGCS_CC) -x assembler-with-cpp AS := $(MIPS_BINUTILS_PREFIX)as LD := $(MIPS_BINUTILS_PREFIX)ld @@ -368,6 +370,9 @@ else 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 -fno-PIC -non_shared -mcpu=4300 -mfix4300 + EGCS_ASOPTFLAGS := endif ifeq ($(COMPILER),ido) @@ -516,7 +521,8 @@ TEXTURE_FILES_OUT := $(foreach f,$(TEXTURE_FILES_PNG_EXTRACTED:.png=.inc.c),$(f: # create build directories $(shell mkdir -p $(BUILD_DIR)/baserom \ - $(BUILD_DIR)/assets/text) + $(BUILD_DIR)/assets/text \ + $(BUILD_DIR)/linker_scripts) $(shell mkdir -p $(foreach dir, \ $(SRC_DIRS) \ $(UNDECOMPILED_DATA_DIRS) \ @@ -681,6 +687,14 @@ endif $(BUILD_DIR)/assets/misc/z_select_static/%.o: GBI_DEFINES := -DF3DEX_GBI +ifeq ($(PLATFORM),IQUE) + +$(BUILD_DIR)/src/makerom/%.o: CCAS := $(EGCS_CCAS) +$(BUILD_DIR)/src/makerom/%.o: CCASFLAGS := $(EGCS_CCASFLAGS) +$(BUILD_DIR)/src/makerom/%.o: ASOPTFLAGS := $(EGCS_ASOPTFLAGS) + +endif + # For using asm_processor on some files: #$(BUILD_DIR)/.../%.o: CC := $(PYTHON) tools/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) -- @@ -784,10 +798,13 @@ $(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 $@ -$(ELF): $(TEXTURE_FILES_OUT) $(ASSET_FILES_OUT) $(O_FILES) $(OVL_RELOC_FILES) $(LDSCRIPT) $(BUILD_DIR)/undefined_syms.txt \ +$(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)/undefined_syms.txt --no-check-sections --accept-unknown-input-arch --emit-relocs -Map $(MAP) -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 $@ + +$(BUILD_DIR)/linker_scripts/makerom.ld: linker_scripts/makerom.ld + $(CPP) -I include $(CPPFLAGS) $< > $@ ## Order-only prerequisites # These ensure e.g. the O_FILES are built before the OVL_RELOC_FILES. diff --git a/linker_scripts/makerom.ld b/linker_scripts/makerom.ld new file mode 100644 index 0000000000..a898c6b34f --- /dev/null +++ b/linker_scripts/makerom.ld @@ -0,0 +1,13 @@ +#include "boot.h" + +/* These are only here due to iQue entry.s using ori to load the lower halves of symbols + * rather than addiu, so the usual relocation operators %hi() and %lo() can't be used. */ + +_bootSegmentBssStart_HI = _bootSegmentBssStart >> 16; + +_bootSegmentBssSize_HI = _bootSegmentBssSize >> 16; + +bootproc_HI = bootproc >> 16; + +BOOT_STACK_TOP = (sBootThreadStack + BOOT_STACK_SIZE); +BOOT_STACK_TOP_HI = BOOT_STACK_TOP >> 16; diff --git a/src/makerom/entry.s b/src/makerom/entry.s index 0a1233d80e..e6074357b0 100644 --- a/src/makerom/entry.s +++ b/src/makerom/entry.s @@ -4,21 +4,38 @@ .text -#if defined(__sgi) && !defined(AVOID_UB) -/* IDO assembler workaround: The makerom tool in the N64 SDK was given the bss segment size as a const +#if defined(NON_MATCHING) || defined(__sgi) +/* Non-matching builds or IDO */ +#define PAD_TO 0x60 +#define LA(reg, sym) la reg, sym +#define BOOT_STACK_TOP sBootThreadStack + BOOT_STACK_SIZE +#else +/* EGCS */ +#define PAD_TO 0x50 +#define LA(reg, sym) \ + lui reg, %lo(sym##_HI); \ + ori reg, %lo(sym) +#endif + +#if !defined(AVOID_UB) +/* Old assembler workarounds: The makerom tool in the N64 SDK was given the bss segment size as a const * literal, and since this literal was < 0x10000 it was loaded in one instruction. We don't have access * to the bss segment size until we link everything so we cannot do the same thing. Instead we must load * only the lower 16 bits of the bss size for matching. * When AVOID_UB is enabled, don't do this and instead load the full symbol value, otherwise not all of * bss may be cleared. */ +#if defined(__sgi) #define LOAD_BSS_SIZE(reg) li reg, %half(_bootSegmentBssSize) #else -#define LOAD_BSS_SIZE(reg) la reg, _bootSegmentBssSize +#define LOAD_BSS_SIZE(reg) ori reg, zero, %lo(_bootSegmentBssSize) +#endif +#else +#define LOAD_BSS_SIZE(reg) LA(reg, _bootSegmentBssSize) #endif LEAF(entrypoint) /* Clear boot segment .bss */ - la t0, _bootSegmentBssStart + LA( t0, _bootSegmentBssStart) LOAD_BSS_SIZE(t1) .clear_bss: sw zero, 0(t0) @@ -28,17 +45,17 @@ LEAF(entrypoint) bnez t1, .clear_bss /* Set up stack and enter program code */ - la sp, sBootThreadStack + BOOT_STACK_SIZE - la t2, bootproc + LA( sp, BOOT_STACK_TOP) + LA( t2, bootproc) jr t2 END(entrypoint) -#ifdef __GNUC__ -/* Pad to a total size of 0x60 */ -.fill 0x60 - (. - entrypoint) -#else -/* IDO can't take absolute differences of symbols.. */ +#ifdef __sgi +/* IDO can't take absolute differences of symbols so the size of the above is hardcoded */ .repeat (0x60 - 0x34) .byte 0 .endr +#else +/* Pad to a total size taking into account the size of the above */ +.fill PAD_TO - (. - entrypoint) #endif diff --git a/src/makerom/rom_header.s b/src/makerom/rom_header.s index d3d938cda3..6b6fe8aa3d 100644 --- a/src/makerom/rom_header.s +++ b/src/makerom/rom_header.s @@ -9,6 +9,9 @@ /* 0x08 */ ENTRYPOINT(0x80000400) /* 0x0C */ OS_VERSION(2, 0, LIBULTRA_VERSION) /* 0x10 */ CHECKSUM() + +#if !PLATFORM_IQUE + /* 0x18 */ PADDING(8) /* 0x20 */ ROM_NAME("THE LEGEND OF ZELDA") /* 0x34 */ PADDING(7) @@ -26,3 +29,9 @@ /* 0x3E */ REGION(PAL) #endif /* 0x3F */ GAME_REVISION(OOT_REVISION) + +#else + + .fill 0x40 - 0x18 + +#endif From bd606ba03850a2baf29690818a6d1f9e9ef1bfc2 Mon Sep 17 00:00:00 2001 From: Tharo <17233964+Thar0@users.noreply.github.com> Date: Sat, 4 Jan 2025 03:58:26 +0000 Subject: [PATCH 04/40] [iQue] Match skapi.s, create bbskapi.h documenting the syscalls (#2400) --- Makefile | 17 ++- include/ultra64/R4300.h | 83 +++++++---- include/ultra64/asm.h | 2 +- include/ultra64/bbskapi.h | 272 +++++++++++++++++++++++++++++++++++ include/ultra64/bcp.h | 29 ++++ src/libultra/bb/sk/skapi.s | 48 +++++++ src/libultra/os/parameters.s | 5 +- src/makerom/entry.s | 6 +- 8 files changed, 421 insertions(+), 41 deletions(-) create mode 100644 include/ultra64/bbskapi.h create mode 100644 include/ultra64/bcp.h diff --git a/Makefile b/Makefile index 357fe7e538..ae776fb033 100644 --- a/Makefile +++ b/Makefile @@ -214,7 +214,7 @@ else ifeq ($(PLATFORM),GC) LIBULTRA_VERSION := L LIBULTRA_PATCH := 0 else ifeq ($(PLATFORM),IQUE) - CPP_DEFINES += -DPLATFORM_N64=0 -DPLATFORM_GC=0 -DPLATFORM_IQUE=1 + CPP_DEFINES += -DPLATFORM_N64=0 -DPLATFORM_GC=0 -DPLATFORM_IQUE=1 -DBBPLAYER LIBULTRA_VERSION := L LIBULTRA_PATCH := 0 else @@ -371,7 +371,7 @@ else 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 -fno-PIC -non_shared -mcpu=4300 -mfix4300 + 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_ASOPTFLAGS := endif @@ -618,17 +618,24 @@ $(BUILD_DIR)/src/audio/sequence.o: CFLAGS += -use_readwrite_const ifeq ($(PLATFORM),IQUE) $(BUILD_DIR)/src/libultra/%.o: CC := $(EGCS_CC) +$(BUILD_DIR)/src/libultra/%.o: CCAS := $(EGCS_CCAS) $(BUILD_DIR)/src/libultra/%.o: CFLAGS := $(EGCS_CFLAGS) -mno-abicalls +$(BUILD_DIR)/src/libultra/%.o: CCASFLAGS := $(EGCS_CCASFLAGS) +$(BUILD_DIR)/src/libultra/%.o: ASOPTFLAGS := $(EGCS_ASOPTFLAGS) + +$(BUILD_DIR)/src/libultra/os/exceptasm.o: MIPS_VERSION := -mips3 +$(BUILD_DIR)/src/libultra/os/invaldcache.o: MIPS_VERSION := -mips3 +$(BUILD_DIR)/src/libultra/os/invalicache.o: MIPS_VERSION := -mips3 +$(BUILD_DIR)/src/libultra/os/writebackdcache.o: MIPS_VERSION := -mips3 +$(BUILD_DIR)/src/libultra/os/writebackdcacheall.o: MIPS_VERSION := -mips3 else $(BUILD_DIR)/src/libultra/%.o: CC := $(CC_OLD) -endif - $(BUILD_DIR)/src/libultra/libc/ll.o: OPTFLAGS := -O1 $(BUILD_DIR)/src/libultra/libc/ll.o: MIPS_VERSION := -mips3 -32 $(BUILD_DIR)/src/libultra/libc/llcvt.o: OPTFLAGS := -O1 $(BUILD_DIR)/src/libultra/libc/llcvt.o: MIPS_VERSION := -mips3 -32 - $(BUILD_DIR)/src/libultra/os/exceptasm.o: MIPS_VERSION := -mips3 -32 +endif $(BUILD_DIR)/src/code/%.o: ASOPTFLAGS := -O2 $(BUILD_DIR)/src/libleo/%.o: ASOPTFLAGS := -O2 diff --git a/include/ultra64/R4300.h b/include/ultra64/R4300.h index be0dfab570..1c2da84f12 100644 --- a/include/ultra64/R4300.h +++ b/include/ultra64/R4300.h @@ -4,10 +4,8 @@ #ifdef _LANGUAGE_C #include "ultratypes.h" #define U32(x) ((u32)x) -#define C_REG(x) (x) #else #define U32(x) (x) -#define C_REG(x) $x #endif /* Segment base addresses and sizes */ @@ -312,33 +310,64 @@ #define WATCHHI_VALIDMASK 0x0000000F /* Coprocessor 0 registers */ -#define C0_INX C_REG(0) -#define C0_RAND C_REG(1) -#define C0_ENTRYLO0 C_REG(2) -#define C0_ENTRYLO1 C_REG(3) -#define C0_CONTEXT C_REG(4) -#define C0_PAGEMASK C_REG(5) /* page mask */ -#define C0_WIRED C_REG(6) /* # wired entries in tlb */ -#define C0_BADVADDR C_REG(8) -#define C0_COUNT C_REG(9) /* free-running counter */ -#define C0_ENTRYHI C_REG(10) -#define C0_COMPARE C_REG(11) /* counter comparison reg. */ -#define C0_SR C_REG(12) -#define C0_CAUSE C_REG(13) -#define C0_EPC C_REG(14) -#define C0_PRID C_REG(15) /* revision identifier */ -#define C0_CONFIG C_REG(16) /* hardware configuration */ -#define C0_LLADDR C_REG(17) /* load linked address */ -#define C0_WATCHLO C_REG(18) /* watchpoint */ -#define C0_WATCHHI C_REG(19) /* watchpoint */ -#define C0_ECC C_REG(26) /* S-cache ECC and primary parity */ -#define C0_CACHE_ERR C_REG(27) /* cache error status */ -#define C0_TAGLO C_REG(28) /* cache operations */ -#define C0_TAGHI C_REG(29) /* cache operations */ -#define C0_ERROR_EPC C_REG(30) /* ECC error prg. counter */ +#ifdef _LANGUAGE_C +#define C0_INX 0 +#define C0_RAND 1 +#define C0_ENTRYLO0 2 +#define C0_ENTRYLO1 3 +#define C0_CONTEXT 4 +#define C0_PAGEMASK 5 /* page mask */ +#define C0_WIRED 6 /* # wired entries in tlb */ +#define C0_BADVADDR 8 +#define C0_COUNT 9 /* free-running counter */ +#define C0_ENTRYHI 10 +#define C0_COMPARE 11 /* counter comparison reg. */ +#define C0_SR 12 +#define C0_CAUSE 13 +#define C0_EPC 14 +#define C0_PRID 15 /* revision identifier */ +#define C0_CONFIG 16 /* hardware configuration */ +#define C0_LLADDR 17 /* load linked address */ +#define C0_WATCHLO 18 /* watchpoint */ +#define C0_WATCHHI 19 /* watchpoint */ +#define C0_ECC 26 /* S-cache ECC and primary parity */ +#define C0_CACHE_ERR 27 /* cache error status */ +#define C0_TAGLO 28 /* cache operations */ +#define C0_TAGHI 29 /* cache operations */ +#define C0_ERROR_EPC 30 /* ECC error prg. counter */ +#else +#define C0_INX $0 +#define C0_RAND $1 +#define C0_ENTRYLO0 $2 +#define C0_ENTRYLO1 $3 +#define C0_CONTEXT $4 +#define C0_PAGEMASK $5 /* page mask */ +#define C0_WIRED $6 /* # wired entries in tlb */ +#define C0_BADVADDR $8 +#define C0_COUNT $9 /* free-running counter */ +#define C0_ENTRYHI $10 +#define C0_COMPARE $11 /* counter comparison reg. */ +#define C0_SR $12 +#define C0_CAUSE $13 +#define C0_EPC $14 +#define C0_PRID $15 /* revision identifier */ +#define C0_CONFIG $16 /* hardware configuration */ +#define C0_LLADDR $17 /* load linked address */ +#define C0_WATCHLO $18 /* watchpoint */ +#define C0_WATCHHI $19 /* watchpoint */ +#define C0_ECC $26 /* S-cache ECC and primary parity */ +#define C0_CACHE_ERR $27 /* cache error status */ +#define C0_TAGLO $28 /* cache operations */ +#define C0_TAGHI $29 /* cache operations */ +#define C0_ERROR_EPC $30 /* ECC error prg. counter */ +#endif /* floating-point status register */ -#define C1_FPCSR C_REG(31) +#ifdef _LANGUAGE_C +#define C1_FPCSR 31 +#else +#define C1_FPCSR $31 +#endif #define FPCSR_FS 0x01000000 /* flush denorm to zero */ #define FPCSR_C 0x00800000 /* condition bit */ diff --git a/include/ultra64/asm.h b/include/ultra64/asm.h index acf6b8f0a7..02ef26e985 100644 --- a/include/ultra64/asm.h +++ b/include/ultra64/asm.h @@ -95,7 +95,7 @@ #define TLBP \ .set noreorder; tlbp; .set reorder -#ifdef __sgi +#ifndef __GNUC__ #define ABS(x, y) \ .globl x; \ x = y diff --git a/include/ultra64/bbskapi.h b/include/ultra64/bbskapi.h new file mode 100644 index 0000000000..7918975475 --- /dev/null +++ b/include/ultra64/bbskapi.h @@ -0,0 +1,272 @@ +/** + * @file bbskapi.h + * + * This file contains the external API for the iQue Player's Secure Kernel Calls. + * + * Applications require permission to call particular Secure Kernel Calls, defined in the associated Ticket. + * Most are not callable by games. + */ +#ifndef BB_SKAPI_H +#define BB_SKAPI_H + +#include "ultratypes.h" + +#define SKC_OK 0 +#define SKC_RECRYPT_INVALID 1 +#define SKC_RECRYPT_2 2 // Complete? +#define SKC_RECRYPT_3 3 // Partial? +#define SKC_RECRYPT_4 4 // Beginning? +#define SKC_INVALID_ARGS -1 +#define SKC_INVALID_TSRL -2 +#define SKC_INVALID_CARL -3 +#define SKC_INVALID_CPRL -4 +#define SKC_INVALID_CERT -9 +#define SKC_NO_PERMISSION -11 + +typedef struct BbAppLaunchCrls BbAppLaunchCrls; +typedef struct BbCertBase BbCertBase; +typedef struct BbEccSig BbEccSig; +typedef struct BbRecryptList BbRecryptList; +typedef struct BbShaHash BbShaHash; +typedef struct BbTicketBundle BbTicketBundle; + +/** + * Retrieves the console's unique BBID. + * + * @param bbId Location to write the BBID to. Must be a pointer to cached DRAM with 4-byte alignment. + * @return + * SKC_NO_PERMISSION If called with insufficient permission. + * SKC_INVALID_ARGS If the supplied pointer is not valid. + * SKC_OK Otherwise. + */ +s32 skGetId(u32* bbId); + +/** + * Prepares to launch an application. + * The provided ticket bundle is verified and made the active ticket bundle. + * The AES decryption hardware is prepared. + * + * @param bundle Ticket Bundle associated with this application. + * @param crls Application Certificate Revocation Lists to check when verifying the ticket bundle. + * The ticket bundle must be signed by the Root signature without going through any + * revoked certificates. + * @param recryptList System Recrypt List (encrypted and digitally signed) + * @return + * SKC_INVALID_ARGS If any inputs are or contain invalid pointers, + * or the ticket is not for this console, + * or the ticket is for a trial that has expired. + * SKC_INVALID_TSRL If the provided TSRL revocation list is invalid. + * SKC_INVALID_CARL If the provided CARL revocation list is invalid. + * SKC_INVALID_CPRL If the provided CPRL revocation list is invalid. + * SKC_INVALID_CERT If a digital certificate was revoked by one of the revocation lists. + * SKC_RECRYPT_3 If the recrypt state for this app is not in an acceptable state to be launched. + * SKC_RECRYPT_4 If the recrypt state for this app is not in an acceptable state to be launched. + * SKC_NO_PERMISSION If called with insufficient permission. + * SKC_OK Otherwise. + */ +s32 skLaunchSetup(BbTicketBundle* bundle, BbAppLaunchCrls* crls, BbRecryptList* recryptList); + +/** + * Launches a prepared application that is assumed to have been loaded into memory at the entrypoint between calling + * skLaunchSetup and calling this. skLaunchSetup must have been called prior to set the active ticket bundle. + * + * @param entrypoint The entrypoint address of the app to launch. + * + * @return + * SKC_INVALID_ARGS If the entrypoint is an invalid pointer, + * or if content failed a hash check for non-recrypted apps, + * or if the content is an expired trial. + * SKC_NO_PERMISSION If called with insufficient permission. + * @note Does not return if the call is successful. + */ +s32 skLaunch(void* entrypoint); + +/** + * Verifies whether a provided Recrypt List is valid. + * + * @param recryptList Pointer to the (encrypted and digitally signed) recrypt list to verify. + * @return + * SKC_OK If the recrypt list is valid + * SKC_INVALID_ARGS If the recrypt list is invalid + * (e.g. contains invalid pointers or its ECDSA signature fails to verify) + * SKC_NO_PERMISSION If called with insufficient permission. + */ +s32 skRecryptListValid(BbRecryptList* recryptList); + +/** + * Begins a new recryption task. Content downloaded is initially encrypted with the Common Key but may be re-encrypted + * with a new randomly generated AES key if the recrypt flag is set in the content metadata. Like with skLaunchSetup, + * the provided ticket bundle is first verified before being made the active ticket bundle. + * + * @param bundle The ticket bundle associated with the content that will be recrypted. + * @param crls Application Certificate Revocation Lists to check when verifying the ticket bundle. + * The ticket bundle must be signed by the Root signature without going through any + * revoked certificates. + * @param recryptList The recrypt list that the AES key will be saved to, after being encrypted with the + * console-specific recrypt list key. + * @return + * SKC_RECRYPT_INVALID If called on a ticket bundle that does not have the recrypt flag set. + * SKC_INVALID_ARGS If any inputs are or contain invalid pointers, + * or the ticket is not for this console, + * or the ticket is for a trial that has expired. + * SKC_INVALID_TSRL If the provided TSRL revocation list is invalid. + * SKC_INVALID_CARL If the provided CARL revocation list is invalid. + * SKC_INVALID_CPRL If the provided CPRL revocation list is invalid. + * SKC_INVALID_CERT If a digital certificate was revoked by one of the revocation lists. + * SKC_NO_PERMISSION If called with insufficient permission. + * Otherwise, one of SKC_RECRYPT_* will be returned communicating the initial state of the recryption process. + */ +s32 skRecryptBegin(BbTicketBundle* bundle, BbAppLaunchCrls* crls, BbRecryptList* recryptList); + +/** + * Recrypts the provided data, using the previously set context. + * Must be called following skRecryptBegin. + * + * @param buf Pointer to app content to encrypt and hash. + * @param size Amount of data to process in this buffer. + * @return + * SKC_INVALID_ARGS If the provided buffer is not fully contained in RAM or is otherwise invalid. + * SKC_NO_PERMISSION If called with insufficient permission. + * SKC_OK Otherwise. + */ +s32 skRecryptData(u8* buf, u32 size); + +/** + * Resumes a partially-complete recryption. The last chunk of successfully-recrypted data must be provided in order to + * set the AES-128-CBC Initialization Vector to continue recryption of the next chunk. + * Must be called following skRecryptBegin. + * + * @param buf Pointer to last chunk of successfully-recrypted content. + * @param size Amount of data available. + * @return + * SKC_INVALID_ARGS If the provided buffer is not fully contained in RAM or is otherwise invalid. + * SKC_NO_PERMISSION If called with insufficient permission. + * SKC_OK Otherwise. + */ +s32 skRecryptComputeState(u8* buf, u32 size); + +/** + * Concludes the recryption process. The SHA-1 hash of the content, computed during recryption, is checked against the + * hash in the active ticket bundle; if it passes, the recrypt list entry for the active content is updated to indicate + * that recryption is complete and was successful. + * + * @param recryptList The (encrypted and digitally signed) recrypt list to update. + * @return + * SKC_OK If recryption succeeded. + * SKC_INVALID_ARGS If recryption failed (e.g. if the hash of the content did not match the hash in the ticket bundle) + * or if the provided recrypt list is invalid or cannot find the entry for the content. + * SKC_NO_PERMISSION If called with insufficient permission. + */ +s32 skRecryptEnd(BbRecryptList* recryptList); + +/** + * Generates a digital signature for the provided SHA-1 hash (treated as a message) using the Elliptic Curve Digital + * Signature Algorithm (ECDSA) on the curve sect233r1 with the console's ECDSA Private Key. Appends an identity of 1 to + * the end of the message prior to signing. + * + * @param hash The SHA-1 hash to sign. + * @param outSignature The resulting ECDSA digital signature. + * @return + * SKC_INVALID_ARGS If either of the arguments is an invalid pointer. + * SKC_NO_PERMISSION If called with insufficient permission. + * SKC_OK Otherwise. + */ +s32 skSignHash(BbShaHash* hash, BbEccSig* outSignature); + +/** + * Verifies a SHA-1 hash (treated as a message) against a digital signature using either the Elliptic Curve Digital + * Signature Algorithm (ECDSA) or the RSA Digital Signature Algorithm. For RSA, either 2048-bit or 4096-bit signatures + * can be recognized. + * + * For verifying self-signed (e.g. via skSignHash) ECDSA signatures the certificate chain and revocation lists are not + * required and may be passed as NULL, the public key is the console's own ECDSA public key. For verifying other types + * of signatures, a valid certificate chain and certificate revocation lists must be provided, in which case the + * signature must be signed by the Root certificate without going through any revoked certificates. + * + * This can only verify hashes signed with an identity of 1, such as those signed via skSignHash. + * + * @param hash The SHA-1 hash to check the signature of. + * @param signature The signature to compare against. May be an ECDSA, RSA2048 or RSA4096 signature. + * @param certChain Certificate Chain, NULL-terminated list of certificate pointers. + * Not required for self-signed ECDSA signatures and must be NULL in that case. + * Should not be more than 5 certificates long. + * Should end on the Root signature. + * @param crls Certificate Revocation Lists to check certificates against. Not required for self-signed ECDSA signatures. + * @return + * SKC_OK If the hash was successfully verified against the signature. + * SKC_INVALID_ARGS If any arguments are invalid pointers, + * or the hash could not be verified against the digital signature, + * or the certificate chain was invalid, + * or if any certificate revocation lists were invalid. + * SKC_INVALID_CERT If a digital certificate was revoked by one of the revocation lists. + * SKC_NO_PERMISSION If called with insufficient permission. + */ +s32 skVerifyHash(BbShaHash* hash, u32* signature, BbCertBase** certChain, BbAppLaunchCrls* crls); + +/** + * Retrieves the consumption counters for all currently-tracked applications and the Ticket ID (TID) Window. + * + * The TID Window determines the TID for the first counter (cc[0]), the other counters (cc[i]) are associated with + * tidWindow + i. + * + * The consumption counters track either the number of minutes that a trial app has been played for, or the number of + * times a trial app has been launched. + * + * @param tidWindow The location to save the TID window to. + * @param cc An array of 26 u16s to save the consumption counters into. + * @return + * SKC_INVALID_ARGS If either pointer is invalid or there is not enough room to save all the consumption counters. + * SKC_NO_PERMISSION If called with insufficient permission. + * SKC_OK Otherwise. + */ +s32 skGetConsumption(u16* tidWindow, u16 cc[26]); + +/** + * Increments the Ticket ID Window by 1 and moves all consumption counters down by 1 slot to match the new window. The + * counter previously at position 0 is forgotten. + * + * @return + * SKC_NO_PERMISSION If called with insufficient permission. + * SKC_INVALID_ARGS If the resulting state could not be saved internally. + * SKC_OK If success. + */ +s32 skAdvanceTicketWindow(void); + +/** + * Overrides the trial limit and trial type stored in the currently loaded ticket. + * + * @param limit The new trial limit. Either a length of time or the number of allowed launches, depending on trial type. + * @param code The new trial type + * 0 = Time-limited in minutes, call skKeepAlive periodically + * 1 = Limited by number of launches + * 2 = Time-limited in minutes, no need to call skKeepAlive (TOVERIFY) + * @return + * SKC_OK If success. + * SKC_INVALID_ARGS If no ticket is currently loaded. + * SKC_NO_PERMISSION If called with insufficient permission. + */ +s32 skSetLimit(u16 limit, u16 code); + +/** + * Returns to the system menu. + * + * @return + * SKC_NO_PERMISSION If called with insufficient permission. + * @note Does not return if called with permission. + */ +s32 skExit(void); + +/** + * Keeps trial applications alive. + * + * The hardware trial timer does not have a very long period so must be refreshed periodically by calling this function. + * This function updates the timer and checks for an expiry. + * + * @return + * SKC_NO_PERMISSION If called with insufficient permission. + * SKC_OK Otherwise. + * @note This function may not return if it detects the trial has expired. + */ +s32 skKeepAlive(void); + +#endif diff --git a/include/ultra64/bcp.h b/include/ultra64/bcp.h new file mode 100644 index 0000000000..7b139b3de0 --- /dev/null +++ b/include/ultra64/bcp.h @@ -0,0 +1,29 @@ +#ifndef BCP_H +#define BCP_H + +#include "rcp.h" + +/****************************************************************************** + * Additional MIPS Interface (MI) Registers + */ + +/** + * Accesses to this register outside of Secure Mode cause an NMI to transfer control + * to the Secure Kernel. + * + * [25] ?: System software writes to this bit when launching an app or game + * [24] SK RAM Access: Set to 1 to enable access to 0x8000 bytes at 0x1FC40000 + * [7] Secure Trap Cause: Memory card removed + * [6] Secure Trap Cause: Power button pressed + * [5] Secure Trap Cause: MI Error + * [4] Secure Trap Cause: PI Error + * [3] Secure Trap Cause: Timer expired + * [2] Secure Trap Cause: Syscall via read of this register outside of secure mode + * [1] Boot ROM Swap: 0 = SK mapped at 0x1FC00000, Boot ROM mapped at 0x1FC20000 + * 1 = Boot ROM mapped at 0x1FC00000, SK mapped at 0x1FC20000 + * [0] Secure Mode: 0 = not in secure mode + * 1 = in secure mode + */ +#define MI_SECURE_EXCEPTION_REG (MI_BASE_REG + 0x14) + +#endif diff --git a/src/libultra/bb/sk/skapi.s b/src/libultra/bb/sk/skapi.s index e69de29bb2..3e80adfcd1 100644 --- a/src/libultra/bb/sk/skapi.s +++ b/src/libultra/bb/sk/skapi.s @@ -0,0 +1,48 @@ +#ifdef BBPLAYER +#include "ultra64/asm.h" +#include "ultra64/regdef.h" +#include "ultra64/bcp.h" + +.text + +#define SKC(name, num) \ + LEAF(name) ;\ + .set noreorder ;\ + /* Load syscall number into v0 */ ;\ + li v0, num ;\ + /* Read from MI_SECURE_EXCEPTION_REG to */ ;\ + /* transfer control to the Secure Kernel */ ;\ + li t0, PHYS_TO_K1(MI_SECURE_EXCEPTION_REG) ;\ + lw t1, (t0) ;\ + nop ;\ + jr ra ;\ + nop ;\ + .set reorder ;\ + END(name) + +SKC(skGetId, 0) +SKC(skLaunchSetup, 1) +SKC(skLaunch, 2) +SKC(skRecryptListValid, 3) +SKC(skRecryptBegin, 4) +SKC(skRecryptData, 5) +SKC(skRecryptComputeState, 6) +SKC(skRecryptEnd, 7) +SKC(skSignHash, 8) +SKC(skVerifyHash, 9) +SKC(skGetConsumption, 10) +SKC(skAdvanceTicketWindow, 11) +SKC(skSetLimit, 12) +SKC(skExit, 13) +SKC(skKeepAlive, 14) + +/* These are not valid for a retail Secure Kernel, their usage pattern is unknown. */ + +SKC(skGetRandomKeyData, 15) +SKC(skDumpVirage, 16) +SKC(skTest2, 17) +SKC(skTest3, 18) +SKC(skResetWindow, 19) +SKC(skValidateRls, 20) + +#endif diff --git a/src/libultra/os/parameters.s b/src/libultra/os/parameters.s index b881148144..179dbcf02f 100644 --- a/src/libultra/os/parameters.s +++ b/src/libultra/os/parameters.s @@ -23,7 +23,4 @@ IPL_SYMBOL(osVersion, 0x80000314, 4) IPL_SYMBOL(osMemSize, 0x80000318, 4) IPL_SYMBOL(osAppNMIBuffer, 0x8000031C, 0x40) - -.repeat 0x60/4 - NOP -.endr +.space 0x60 diff --git a/src/makerom/entry.s b/src/makerom/entry.s index e6074357b0..870b979d69 100644 --- a/src/makerom/entry.s +++ b/src/makerom/entry.s @@ -52,10 +52,8 @@ END(entrypoint) #ifdef __sgi /* IDO can't take absolute differences of symbols so the size of the above is hardcoded */ -.repeat (0x60 - 0x34) - .byte 0 -.endr +.space PAD_TO - 0x34 #else /* Pad to a total size taking into account the size of the above */ -.fill PAD_TO - (. - entrypoint) +.space PAD_TO - (. - entrypoint) #endif From 3aafbf3971502e70f9ff672c3c820137d8f1ce6f Mon Sep 17 00:00:00 2001 From: cadmic Date: Sun, 5 Jan 2025 22:45:12 -0800 Subject: [PATCH 05/40] Match remaining IDO files for iQue (#2394) --- Makefile | 27 +++++++++++++++++------ src/boot/driverominit.c | 7 ++++++ src/code/z_skelanime.c | 2 +- tools/disasm/ique-cn/files_boot.csv | 2 +- tools/patch_ique_driverominit.py | 34 +++++++++++++++++++++++++++++ 5 files changed, 63 insertions(+), 9 deletions(-) create mode 100755 tools/patch_ique_driverominit.py diff --git a/Makefile b/Makefile index ae776fb033..d28ee42a6c 100644 --- a/Makefile +++ b/Makefile @@ -293,6 +293,9 @@ OBJDUMP := $(MIPS_BINUTILS_PREFIX)objdump NM := $(MIPS_BINUTILS_PREFIX)nm STRIP := $(MIPS_BINUTILS_PREFIX)strip +# Command to patch certain object files after they are built +POSTPROCESS_OBJ := @: + # The default iconv on macOS has some differences from GNU iconv, so we use the Homebrew version instead ifeq ($(UNAME_S),Darwin) ICONV := $(shell brew --prefix)/opt/libiconv/bin/iconv @@ -545,6 +548,15 @@ endif ifeq ($(COMPILER),ido) $(BUILD_DIR)/src/boot/driverominit.o: OPTFLAGS := -O2 +ifeq ($(PLATFORM),IQUE) +# iQue's driverominit.o seems to have been patched manually. For non-matching builds we edit the source code instead. +ifneq ($(NON_MATCHING),1) +$(BUILD_DIR)/src/boot/driverominit.o: POSTPROCESS_OBJ := $(PYTHON) tools/patch_ique_driverominit.py +endif + +$(BUILD_DIR)/src/boot/viconfig.o: OPTFLAGS := -O2 +endif + $(BUILD_DIR)/src/code/jpegutils.o: OPTFLAGS := -O2 $(BUILD_DIR)/src/code/jpegdecoder.o: OPTFLAGS := -O2 @@ -630,11 +642,17 @@ $(BUILD_DIR)/src/libultra/os/writebackdcache.o: MIPS_VERSION := -mips3 $(BUILD_DIR)/src/libultra/os/writebackdcacheall.o: MIPS_VERSION := -mips3 else $(BUILD_DIR)/src/libultra/%.o: CC := $(CC_OLD) + $(BUILD_DIR)/src/libultra/libc/ll.o: OPTFLAGS := -O1 $(BUILD_DIR)/src/libultra/libc/ll.o: MIPS_VERSION := -mips3 -32 +$(BUILD_DIR)/src/libultra/libc/ll.o: POSTPROCESS_OBJ := $(PYTHON) tools/set_o32abi_bit.py + $(BUILD_DIR)/src/libultra/libc/llcvt.o: OPTFLAGS := -O1 $(BUILD_DIR)/src/libultra/libc/llcvt.o: MIPS_VERSION := -mips3 -32 +$(BUILD_DIR)/src/libultra/libc/llcvt.o: POSTPROCESS_OBJ := $(PYTHON) tools/set_o32abi_bit.py + $(BUILD_DIR)/src/libultra/os/exceptasm.o: MIPS_VERSION := -mips3 -32 +$(BUILD_DIR)/src/libultra/os/exceptasm.o: POSTPROCESS_OBJ := $(PYTHON) tools/set_o32abi_bit.py endif $(BUILD_DIR)/src/code/%.o: ASOPTFLAGS := -O2 @@ -718,11 +736,6 @@ $(BUILD_DIR)/src/libultra/libc/ll.o: OPTFLAGS := -Ofast $(BUILD_DIR)/src/overlays/%.o: CFLAGS += -fno-merge-constants -mno-explicit-relocs -mno-split-addresses endif -SET_ABI_BIT = @: -$(BUILD_DIR)/src/libultra/os/exceptasm.o: SET_ABI_BIT = $(PYTHON) tools/set_o32abi_bit.py $@ -$(BUILD_DIR)/src/libultra/libc/ll.o: SET_ABI_BIT = $(PYTHON) tools/set_o32abi_bit.py $@ -$(BUILD_DIR)/src/libultra/libc/llcvt.o: SET_ABI_BIT = $(PYTHON) tools/set_o32abi_bit.py $@ - #### Main Targets ### all: rom compress @@ -899,10 +912,10 @@ ifeq ($(COMPILER),ido) # but strip doesn't know about file-relative offsets in .mdebug and doesn't relocate them, ld will # segfault unless .mdebug is removed $(OBJCOPY) --remove-section .mdebug $(@:.o=.tmp.o) $@ - $(SET_ABI_BIT) else $(CCAS) -c $(CCASFLAGS) $(MIPS_VERSION) $(ASOPTFLAGS) -o $@ $< endif + $(POSTPROCESS_OBJ) $@ $(OBJDUMP_CMD) # Incremental link to move z_message and z_game_over data into rodata @@ -933,7 +946,7 @@ ifneq ($(RUN_CC_CHECK),0) $(CC_CHECK) $< endif $(CC) -c $(CFLAGS) $(MIPS_VERSION) $(OPTFLAGS) -o $@ $< - $(SET_ABI_BIT) + $(POSTPROCESS_OBJ) $@ $(OBJDUMP_CMD) $(BUILD_DIR)/src/audio/session_init.o: src/audio/session_init.c $(BUILD_DIR)/assets/audio/soundfont_sizes.h $(BUILD_DIR)/assets/audio/sequence_sizes.h diff --git a/src/boot/driverominit.c b/src/boot/driverominit.c index 7d1441cdd9..5ed69abe07 100644 --- a/src/boot/driverominit.c +++ b/src/boot/driverominit.c @@ -3,7 +3,14 @@ OSPiHandle __DriveRomHandle; OSPiHandle* osDriveRomInit(void) { +#if PLATFORM_IQUE && defined(NON_MATCHING) + // On iQue, the compiled output of this file is patched so that the + // `!first` check is always taken. For non-matching builds, we edit the + // source code instead. + static u32 first = false; +#else static u32 first = true; +#endif register s32 status; register u32 value; register u32 prevInt; diff --git a/src/code/z_skelanime.c b/src/code/z_skelanime.c index a953bdb214..d219815102 100644 --- a/src/code/z_skelanime.c +++ b/src/code/z_skelanime.c @@ -849,7 +849,7 @@ AnimTask* AnimTaskQueue_NewTask(AnimTaskQueue* animTaskQueue, s32 type) { return task; } -#if PLATFORM_N64 +#if !PLATFORM_GC #define LINK_ANIMATION_OFFSET(addr, offset) \ (((uintptr_t)_link_animetionSegmentRomStart) + SEGMENT_OFFSET(addr) + (offset)) #else diff --git a/tools/disasm/ique-cn/files_boot.csv b/tools/disasm/ique-cn/files_boot.csv index 9a878030a2..0aae45345e 100644 --- a/tools/disasm/ique-cn/files_boot.csv +++ b/tools/disasm/ique-cn/files_boot.csv @@ -134,7 +134,7 @@ A7A0,8000ABF0,src/boot/boot_main B190,8000B5E0,src/boot/idle BD90,8000C1E0,src/boot/z_std_dma C500,8000C950,src/boot/zlib -FBB0,80010000,src/boot/driverominit +10310,80010760,src/boot/driverominit 10390,800107E0,src/libultra/io/vimgr 115B0,80011A00,src/libultra/io/pimgr 12940,80012D90,data/boot_common_80012D90 diff --git a/tools/patch_ique_driverominit.py b/tools/patch_ique_driverominit.py new file mode 100755 index 0000000000..f7ca9daac2 --- /dev/null +++ b/tools/patch_ique_driverominit.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python3 +import struct, sys, argparse + +import elftools.elf.elffile + +# Patches driverominit.o to change bnez t6,3c to nop at offset 0x20 in the .text section + +if __name__ == "__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) + + text_offset = 0 + for section in elf.iter_sections(): + if section.name == ".text": + text_offset = section["sh_offset"] + break + + if text_offset == 0: + print("Error: .text section not found") + sys.exit(1) + + f.seek(text_offset + 0x20) + instruction = struct.unpack(">I", f.read(4))[0] + if instruction != 0x15C00006: # bnez t6,3c + print("Error: expected instruction not found, found 0x%08X" % instruction) + sys.exit(1) + + f.seek(text_offset + 0x20) + f.write(struct.pack(">I", 0x00000000)) # nop From 9a60c941fe97f3f566a99e68f29789483f2da282 Mon Sep 17 00:00:00 2001 From: Tharo <17233964+Thar0@users.noreply.github.com> Date: Mon, 6 Jan 2025 07:23:23 +0000 Subject: [PATCH 06/40] [iQue] Match exceptasm.s and parameters.s (#2401) --- Makefile | 3 + include/ultra64/bcp.h | 164 +++++++++++++++++++++++++ include/ultra64/message.h | 10 ++ src/libultra/os/exceptasm.s | 230 +++++++++++++++++++++++++---------- src/libultra/os/parameters.s | 22 ++++ 5 files changed, 368 insertions(+), 61 deletions(-) diff --git a/Makefile b/Makefile index d28ee42a6c..a3155849b3 100644 --- a/Makefile +++ b/Makefile @@ -228,6 +228,9 @@ CPP_DEFINES += -DOOT_REGION=REGION_$(REGION) CPP_DEFINES += -DBUILD_CREATOR="\"$(BUILD_CREATOR)\"" -DBUILD_DATE="\"$(BUILD_DATE)\"" -DBUILD_TIME="\"$(BUILD_TIME)\"" CPP_DEFINES += -DLIBULTRA_VERSION=LIBULTRA_VERSION_$(LIBULTRA_VERSION) CPP_DEFINES += -DLIBULTRA_PATCH=$(LIBULTRA_PATCH) +ifeq ($(PLATFORM),IQUE) + CPP_DEFINES += -DBBPLAYER +endif ifeq ($(DEBUG_FEATURES),1) CPP_DEFINES += -DDEBUG_FEATURES=1 diff --git a/include/ultra64/bcp.h b/include/ultra64/bcp.h index 7b139b3de0..027fecf3f6 100644 --- a/include/ultra64/bcp.h +++ b/include/ultra64/bcp.h @@ -26,4 +26,168 @@ */ #define MI_SECURE_EXCEPTION_REG (MI_BASE_REG + 0x14) +/** + * Read: + * [25] MD (active, 1 if card is currently disconnected else 0) + * [24] Power Button (active, 1 if button is currently pressed else 0) + * [13] MD (pending interrupt) + * [12] Power Button (pending interrupt) + * [11] USB1 + * [10] USB0 + * [ 9] PI_ERR + * [ 8] IDE + * [ 7] AES + * [ 6] FLASH + * [ 5] DP + * [ 4] PI + * [ 3] VI + * [ 2] AI + * [ 1] SI + * [ 0] SP + * + * Write: + * [13] Clear MD Interrupt + */ +#define MI_EX_INTR_REG (MI_BASE_REG + 0x38) + +/* + * MI_EX_INTR_REG: read bits + */ +#define MI_EX_INTR_SP (1 << 0) +#define MI_EX_INTR_SI (1 << 1) +#define MI_EX_INTR_AI (1 << 2) +#define MI_EX_INTR_VI (1 << 3) +#define MI_EX_INTR_PI (1 << 4) +#define MI_EX_INTR_DP (1 << 5) +#define MI_EX_INTR_FLASH (1 << 6) +#define MI_EX_INTR_AES (1 << 7) +#define MI_EX_INTR_IDE (1 << 8) +#define MI_EX_INTR_PI_ERR (1 << 9) +#define MI_EX_INTR_USB0 (1 << 10) +#define MI_EX_INTR_USB1 (1 << 11) +#define MI_EX_INTR_PWR_BTN (1 << 12) +#define MI_EX_INTR_MD (1 << 13) +#define MI_EX_INTR_PWR_BTN_PRESSED (1 << 24) /* updated in real-time, unrelated to interrupt */ +#define MI_EX_INTR_CARD_NOT_PRESENT (1 << 25) /* updated in real-time, unrelated to interrupt */ + +#define MI_EX_INTR_ALL \ + (MI_EX_INTR_FLASH | MI_EX_INTR_AES | MI_EX_INTR_IDE | MI_EX_INTR_PI_ERR | \ + MI_EX_INTR_USB0 | MI_EX_INTR_USB1 | MI_EX_INTR_PWR_BTN | MI_EX_INTR_MD) + +/* + * MI_EX_INTR_REG: write bits + */ +#define MI_EX_INTR_CLR_MD (1 << 13) + +/** + * Write: + * [27:26] Set/Clear MD + * [25:24] Set/Clear BUTTON + * [23:22] Set/Clear USB1 + * [21:20] Set/Clear USB0 + * [19:18] Set/Clear PI_ERR + * [17:16] Set/Clear IDE + * [15:14] Set/Clear AES + * [13:12] Set/Clear FLASH + * [11:10] Set/Clear DP + * [ 9: 8] Set/Clear PI + * [ 7: 6] Set/Clear VI + * [ 5: 4] Set/Clear AI + * [ 3: 2] Set/Clear SI + * [ 1: 0] Set/Clear SP + * + * Read: + * [13] MD + * [12] BUTTON + * [11] USB1 + * [10] USB0 + * [ 9] PI_ERR + * [ 8] IDE + * [ 7] AES + * [ 6] FLASH + * [ 5] DP + * [ 4] PI + * [ 3] VI + * [ 2] AI + * [ 1] SI + * [ 0] SP + */ +#define MI_EX_INTR_MASK_REG (MI_BASE_REG + 0x3C) + +/* + * MI_EX_INTR_MASK_REG: write bits + */ +#define MI_EX_INTR_MASK_CLR_SP (1 << 0) /* clear SP mask */ +#define MI_EX_INTR_MASK_SET_SP (1 << 1) /* set SP mask */ +#define MI_EX_INTR_MASK_CLR_SI (1 << 2) /* clear SI mask */ +#define MI_EX_INTR_MASK_SET_SI (1 << 3) /* set SI mask */ +#define MI_EX_INTR_MASK_CLR_AI (1 << 4) /* clear AI mask */ +#define MI_EX_INTR_MASK_SET_AI (1 << 5) /* set AI mask */ +#define MI_EX_INTR_MASK_CLR_VI (1 << 6) /* clear VI mask */ +#define MI_EX_INTR_MASK_SET_VI (1 << 7) /* set VI mask */ +#define MI_EX_INTR_MASK_CLR_PI (1 << 8) /* clear PI mask */ +#define MI_EX_INTR_MASK_SET_PI (1 << 9) /* set PI mask */ +#define MI_EX_INTR_MASK_CLR_DP (1 << 10) /* clear DP mask */ +#define MI_EX_INTR_MASK_SET_DP (1 << 11) /* set DP mask */ +#define MI_EX_INTR_MASK_CLR_FLASH (1 << 12) /* clear FLASH mask */ +#define MI_EX_INTR_MASK_SET_FLASH (1 << 13) /* set FLASH mask */ +#define MI_EX_INTR_MASK_CLR_AES (1 << 14) /* clear AES mask */ +#define MI_EX_INTR_MASK_SET_AES (1 << 15) /* set AES mask */ +#define MI_EX_INTR_MASK_CLR_IDE (1 << 16) /* clear IDE mask */ +#define MI_EX_INTR_MASK_SET_IDE (1 << 17) /* set IDE mask */ +#define MI_EX_INTR_MASK_CLR_PI_ERR (1 << 18) /* clear PI_ERR mask */ +#define MI_EX_INTR_MASK_SET_PI_ERR (1 << 19) /* set PI_ERR mask */ +#define MI_EX_INTR_MASK_CLR_USB0 (1 << 20) /* clear USB0 mask */ +#define MI_EX_INTR_MASK_SET_USB0 (1 << 21) /* set USB0 mask */ +#define MI_EX_INTR_MASK_CLR_USB1 (1 << 22) /* clear USB1 mask */ +#define MI_EX_INTR_MASK_SET_USB1 (1 << 23) /* set USB1 mask */ +#define MI_EX_INTR_MASK_CLR_PWR_BTN (1 << 24) /* clear PWR_BTN mask */ +#define MI_EX_INTR_MASK_SET_PWR_BTN (1 << 25) /* set PWR_BTN mask */ +#define MI_EX_INTR_MASK_CLR_MD (1 << 26) /* clear MD mask */ +#define MI_EX_INTR_MASK_SET_MD (1 << 27) /* set MD mask */ + +/* + * MI_EX_INTR_MASK_REG: read bits + */ +#define MI_EX_INTR_MASK_SP (1 << 0) /* SP intr mask */ +#define MI_EX_INTR_MASK_SI (1 << 1) /* SI intr mask */ +#define MI_EX_INTR_MASK_AI (1 << 2) /* AI intr mask */ +#define MI_EX_INTR_MASK_VI (1 << 3) /* VI intr mask */ +#define MI_EX_INTR_MASK_PI (1 << 4) /* PI intr mask */ +#define MI_EX_INTR_MASK_DP (1 << 5) /* DP intr mask */ +#define MI_EX_INTR_MASK_FLASH (1 << 6) /* FLASH intr mask */ +#define MI_EX_INTR_MASK_AES (1 << 7) /* AES intr mask */ +#define MI_EX_INTR_MASK_IDE (1 << 8) /* IDE intr mask */ +#define MI_EX_INTR_MASK_PI_ERR (1 << 9) /* PI_ERR intr mask */ +#define MI_EX_INTR_MASK_USB0 (1 << 10) /* USB0 intr mask */ +#define MI_EX_INTR_MASK_USB1 (1 << 11) /* USB1 intr mask */ +#define MI_EX_INTR_MASK_PWR_BTN (1 << 12) /* PWR_BTN intr mask */ +#define MI_EX_INTR_MASK_MD (1 << 13) /* MD intr mask */ + +/****************************************************************************** + * Additional Parallel Interface (PI) Registers + */ + +/** + * Write: + * [31] Execute command after write + * [30] Interrupt when done + * [29:24] ? + * [23:16] NAND Command + * [15] ? + * [14] Buffer Select + * [13:12] Device Select + * [11] Do Error Correction + * [10] NAND Command is Multi-Cycle + * [ 9: 0] Data Transfer Length in Bytes + * + * Writing 0 to this register clears the interrupt + * + * Read: + * [31] Busy + * [11] Single-Bit Error Corrected + * [10] Double-Bit Error Uncorrectable + */ +#define PI_NAND_CTRL_REG (PI_BASE_REG + 0x48) + #endif diff --git a/include/ultra64/message.h b/include/ultra64/message.h index 055c2e3249..dc89dc48ed 100644 --- a/include/ultra64/message.h +++ b/include/ultra64/message.h @@ -21,6 +21,16 @@ #define OS_EVENT_FAULT 12 /* CPU fault event: used by rmon */ #define OS_EVENT_THREADSTATUS 13 /* CPU thread status: used by rmon */ #define OS_EVENT_PRENMI 14 /* Pre NMI interrupt */ +#ifdef BBPLAYER +#define OS_EVENT_FLASH 23 /* NAND flash operation complete */ +#define OS_EVENT_AES 24 /* AES decryption complete */ +#define OS_EVENT_IDE 25 /* IDE transfer complete */ +#define OS_EVENT_PI_ERR 26 /* PI Error? */ +#define OS_EVENT_USB0 27 /* USB Controller 0 */ +#define OS_EVENT_USB1 28 /* USB Controller 1 */ +#define OS_EVENT_UNK_29 29 /* ? */ +#define OS_EVENT_MD 30 /* Memory card removed */ +#endif #ifdef _LANGUAGE_C diff --git a/src/libultra/os/exceptasm.s b/src/libultra/os/exceptasm.s index 3c02267b9e..cdadef1f7f 100644 --- a/src/libultra/os/exceptasm.s +++ b/src/libultra/os/exceptasm.s @@ -5,11 +5,14 @@ #include "ultra64/regdef.h" #include "ultra64/R4300.h" #include "ultra64/rcp.h" +#include "ultra64/bcp.h" #include "ultra64/message.h" #include "ultra64/thread.h" #include "ultra64/exception.h" #include "ultra64/version.h" +#define MESG(x) ((x) << 3) + .data .align 2 @@ -159,15 +162,15 @@ savecontext: /* global interrupt mask. This is however broken, see comments for osSetIntMask. */ la t0, __OSGlobalIntMask lw t0, (t0) - xor t2, t0, ~0 + xor t2, t0, 0xFFFFFFFF andi t2, t2, SR_IMASK or t4, t1, t2 and t3, k1, ~SR_IMASK - andi t0, t0, SR_IMASK or t3, t3, t4 + sw t3, THREAD_SR(k0) + andi t0, t0, SR_IMASK and t1, t1, t0 and k1, k1, ~SR_IMASK - sw t3, THREAD_SR(k0) or k1, k1, t1 savercp: /* Save the currently masked RCP interrupts. */ @@ -178,7 +181,7 @@ savercp: la t0, __OSGlobalIntMask lw t0, (t0) srl t0, t0, RCP_IMASKSHIFT - xor t0, t0, ~0 + xor t0, t0, 0xFFFFFFFF andi t0, t0, (RCP_IMASK >> RCP_IMASKSHIFT) lw t4, THREAD_RCP(k0) and t0, t0, t4 @@ -274,35 +277,146 @@ counter: MFC0( t1, C0_COMPARE) MTC0( t1, C0_COMPARE) /* Post counter message */ - li a0, OS_EVENT_COUNTER*8 + li a0, MESG(OS_EVENT_COUNTER) jal send_mesg /* Mask out interrupt and continue */ and s0, s0, ~CAUSE_IP8 b next_interrupt /** - * IP4/Cartridge Interrupt - * Signalled by the N64 Disk Drive + * N64: + * IP4/Cartridge Interrupt + * Signalled by the N64 Disk Drive + * iQue: + * IP4/BCP Interrupt + * New RCP Interrupts */ cart: - /* Load cart callback set by __osSetHWIntrRoutine */ - la t1, __osHwIntTable - lw t2, (OS_INTR_CART*HWINT_SIZE+HWINT_CALLBACK)(t1) /* Mask out interrupt */ and s0, s0, ~CAUSE_IP4 + /* Load cart callback set by __osSetHWIntrRoutine */ + la t1, __osHwIntTable + addi t1, t1, (OS_INTR_CART * HWINT_SIZE) + lw t2, HWINT_CALLBACK(t1) /* If the callback is NULL, handling is done */ - addi t1, t1, (OS_INTR_CART*HWINT_SIZE) - beqz t2, send_cart_mesg + beqz t2, 1f /* Set up a stack and run the callback */ lw sp, HWINT_SP(t1) jalr t2 - beqz v0, send_cart_mesg + beqz v0, 1f /* Redispatch immediately if the callback returned nonzero */ b redispatch -send_cart_mesg: +1: +#ifndef BBPLAYER /* Post a cart event message */ - li a0, OS_EVENT_CART*8 + li a0, MESG(OS_EVENT_CART) jal send_mesg +#else + /* On the iQue Player the CART interrupt no longer exists. New RCP interrupts are vectored here */ + lw s1, PHYS_TO_K1(MI_EX_INTR_REG) + +flash: + /* Check for FLASH interrupt */ + andi t1, s1, MI_EX_INTR_FLASH + beqz t1, flashx + /* Mask it out */ + andi s1, s1, MI_EX_INTR_ALL & ~MI_EX_INTR_FLASH + /* Clear it */ + li t1, 0 + sw t1, PHYS_TO_K1(PI_NAND_CTRL_REG) + /* Send the event message */ + li a0, MESG(OS_EVENT_FLASH) + jal send_mesg +flashx: +md: + /* Check for MD interrupt */ + andi t1, s1, MI_EX_INTR_MD + beqz t1, mdx + /* Mask it out */ + andi s1, s1, MI_EX_INTR_ALL & ~MI_EX_INTR_MD + /* Clear it */ + li t1, MI_EX_INTR_CLR_MD + sw t1, PHYS_TO_K1(MI_EX_INTR_REG) + /* Send the event message */ + li a0, MESG(OS_EVENT_MD) + jal send_mesg +mdx: +aes: + /* Check for AES interrupt */ + andi t1, s1, MI_EX_INTR_AES + beqz t1, aesx + /* Mask it out */ + andi s1, s1, MI_EX_INTR_ALL & ~MI_EX_INTR_AES + /* Disable the interrupt, this does not clear it. + * The responsibility of clearing and re-enabling + * the interrupt is left to the handler. */ + li t1, MI_EX_INTR_MASK_CLR_AES + sw t1, PHYS_TO_K1(MI_EX_INTR_MASK_REG) + /* Send the event message */ + li a0, MESG(OS_EVENT_AES) + jal send_mesg +aesx: +ide: + /* Check for IDE interrupt */ + andi t1, s1, MI_EX_INTR_IDE + beqz t1, idex + /* Mask it out */ + andi s1, s1, MI_EX_INTR_ALL & ~MI_EX_INTR_IDE + /* Disable the interrupt, this does not clear it. + * The responsibility of clearing and re-enabling + * the interrupt is left to the handler. */ + li t1, MI_EX_INTR_MASK_CLR_IDE + sw t1, PHYS_TO_K1(MI_EX_INTR_MASK_REG) + /* Send the event message */ + li a0, MESG(OS_EVENT_IDE) + jal send_mesg +idex: +pi_err: + /* Check for PI_ERR Interrupt */ + andi t1, s1, MI_EX_INTR_PI_ERR + beqz t1, pi_errx + /* Mask it out */ + andi s1, s1, MI_EX_INTR_ALL & ~MI_EX_INTR_PI_ERR + /* Disable the interrupt, this does not clear it. + * The responsibility of clearing and re-enabling + * the interrupt is left to the handler. */ + li t1, MI_EX_INTR_MASK_CLR_PI_ERR + sw t1, PHYS_TO_K1(MI_EX_INTR_MASK_REG) + /* Send the event message */ + li a0, MESG(OS_EVENT_PI_ERR) + jal send_mesg +pi_errx: +usb0: + /* Check for USB0 Interrupt */ + andi t1, s1, MI_EX_INTR_USB0 + beqz t1, usb0x + /* Mask it out */ + andi s1, s1, MI_EX_INTR_ALL & ~MI_EX_INTR_USB0 + /* Disable the interrupt, this does not clear it. + * The responsibility of clearing and re-enabling + * the interrupt is left to the handler. */ + li t1, MI_EX_INTR_MASK_CLR_USB0 + sw t1, PHYS_TO_K1(MI_EX_INTR_MASK_REG) + /* Send the event message */ + li a0, MESG(OS_EVENT_USB0) + jal send_mesg +usb0x: +usb1: + /* Check for USB1 Interrupt */ + andi t1, s1, MI_EX_INTR_USB1 + beqz t1, usb1x + /* Mask it out */ + andi s1, s1, MI_EX_INTR_ALL & ~MI_EX_INTR_USB1 + /* Disable the interrupt, this does not clear it. + * The responsibility of clearing and re-enabling + * the interrupt is left to the handler. */ + li t1, MI_EX_INTR_MASK_CLR_USB1 + sw t1, PHYS_TO_K1(MI_EX_INTR_MASK_REG) + /* Send the event message */ + li a0, MESG(OS_EVENT_USB1) + jal send_mesg +usb1x: +#endif /* Continue */ b next_interrupt @@ -315,10 +429,10 @@ rcp: /*! @bug this clobbers the t0 register which is expected to hold the value of the */ /*! C0_CAUSE register in the sw1 and sw2 handlers. If the sw1 or sw2 handler runs */ /*! after this, the interrupt will not be cleared properly. */ + lw s1, PHYS_TO_K1(MI_INTR_REG) la t0, __OSGlobalIntMask lw t0, (t0) srl t0, t0, RCP_IMASKSHIFT - lw s1, PHYS_TO_K1(MI_INTR_REG) and s1, s1, t0 /** @@ -327,17 +441,17 @@ rcp: /* Test for sp interrupt */ andi t1, s1, MI_INTR_SP beqz t1, vi - /* Test for yielded or done signals in particular */ - lw t4, PHYS_TO_K1(SP_STATUS_REG) - li t1, (SP_CLR_INTR | SP_CLR_SIG3) - andi t4, t4, (SP_STATUS_YIELDED | SP_STATUS_TASKDONE) /* Mask out SP interrupt */ andi s1, s1, (MI_INTR_SI | MI_INTR_AI | MI_INTR_VI | MI_INTR_PI | MI_INTR_DP) - sw t1, PHYS_TO_K1(SP_STATUS_REG) - beqz t4, sp_other_break + lw t4, PHYS_TO_K1(SP_STATUS_REG) /* Clear interrupt and signal 3 */ + li t1, (SP_CLR_INTR | SP_CLR_SIG3) + sw t1, PHYS_TO_K1(SP_STATUS_REG) + /* Test for yielded or done signals in particular */ + andi t4, t4, (SP_STATUS_YIELDED | SP_STATUS_TASKDONE) + beqz t4, sp_other_break /* Post an SP event message */ - li a0, OS_EVENT_SP*8 + li a0, MESG(OS_EVENT_SP) jal send_mesg beqz s1, NoMoreRcpInts /* Step over sp_other_break handler */ @@ -346,7 +460,7 @@ rcp: sp_other_break: /* An sp signal that is not due to yielding or task completion, such as */ /* an sp breakpoint. Post a different event message */ - li a0, OS_EVENT_SP_BREAK*8 + li a0, MESG(OS_EVENT_SP_BREAK) jal send_mesg beqz s1, NoMoreRcpInts @@ -362,7 +476,7 @@ vi: /* Clear interrupt */ sw zero, PHYS_TO_K1(VI_CURRENT_REG) /* Post vi event message */ - li a0, OS_EVENT_VI*8 + li a0, MESG(OS_EVENT_VI) jal send_mesg beqz s1, NoMoreRcpInts @@ -380,7 +494,7 @@ ai: li t1, 1 sw t1, PHYS_TO_K1(AI_STATUS_REG) /* Post ai event message */ - li a0, OS_EVENT_AI*8 + li a0, MESG(OS_EVENT_AI) jal send_mesg beqz s1, NoMoreRcpInts @@ -397,7 +511,7 @@ si: /* Clear interrupt */ sw zero, PHYS_TO_K1(SI_STATUS_REG) /* Post si event message */ - li a0, OS_EVENT_SI*8 + li a0, MESG(OS_EVENT_SI) jal send_mesg beqz s1, NoMoreRcpInts @@ -409,20 +523,15 @@ pi: andi t1, s1, MI_INTR_PI beqz t1, dp - /* Clear and mask the interrupt */ -#if LIBULTRA_VERSION < LIBULTRA_VERSION_J - li t1, PI_STATUS_CLR_INTR + /* Mask out pi interrupt */ andi s1, s1, (MI_INTR_SP | MI_INTR_SI | MI_INTR_AI | MI_INTR_VI | MI_INTR_DP) - sw t1, PHYS_TO_K1(PI_STATUS_REG) -#else /* Clear the interrupt */ li t1, PI_STATUS_CLR_INTR sw t1, PHYS_TO_K1(PI_STATUS_REG) +#if LIBULTRA_VERSION >= LIBULTRA_VERSION_J /* Load pi callback */ la t1, __osPiIntTable lw t2, HWINT_CALLBACK(t1) - /* Mask out pi interrupt */ - andi s1, s1, (MI_INTR_SP | MI_INTR_SI | MI_INTR_AI | MI_INTR_VI | MI_INTR_DP) /* Skip callback if NULL */ beqz t2, no_pi_callback /* Set up a stack and run the callback */ @@ -434,7 +543,7 @@ pi: #endif no_pi_callback: /* Post pi event message */ - li a0, OS_EVENT_PI*8 + li a0, MESG(OS_EVENT_PI) jal send_mesg skip_pi_mesg: beqz s1, NoMoreRcpInts @@ -453,7 +562,7 @@ dp: li t1, MI_CLR_DP_INTR sw t1, PHYS_TO_K1(MI_INIT_MODE_REG) /* Post dp event message */ - li a0, OS_EVENT_DP*8 + li a0, MESG(OS_EVENT_DP) jal send_mesg NoMoreRcpInts: @@ -483,11 +592,11 @@ firstnmi: li t2, 1 sw t2, (t1) /* Post a PreNMI event message */ - li a0, OS_EVENT_PRENMI*8 + li a0, MESG(OS_EVENT_PRENMI) jal send_mesg /* Mask out and disable IP5/PreNMI interrupt for the highest priority thread */ - lw t2, __osRunQueue and s0, s0, ~SR_IBIT5 + lw t2, __osRunQueue lw k1, THREAD_SR(t2) and k1, k1, ~SR_IBIT5 sw k1, THREAD_SR(t2) @@ -499,7 +608,7 @@ sw2: and t0, t0, ~CAUSE_SW2 MTC0( t0, C0_CAUSE) /* Post sw2 event message */ - li a0, OS_EVENT_SW2*8 + li a0, MESG(OS_EVENT_SW2) jal send_mesg /* Mask out interrupt and continue */ and s0, s0, ~CAUSE_SW2 @@ -510,7 +619,7 @@ sw1: and t0, t0, ~CAUSE_SW1 MTC0( t0, C0_CAUSE) /* Post sw1 event message */ - li a0, OS_EVENT_SW1*8 + li a0, MESG(OS_EVENT_SW1) jal send_mesg /* Mask out interrupt and continue */ and s0, s0, ~CAUSE_SW1 @@ -521,15 +630,15 @@ handle_break: li t1, OS_FLAG_CPU_BREAK sh t1, THREAD_FLAGS(k0) /* Post a cpu break event message */ - li a0, OS_EVENT_CPU_BREAK*8 + li a0, MESG(OS_EVENT_CPU_BREAK) jal send_mesg /* Redispatch */ b redispatch redispatch: - lw t2, __osRunQueue /* Get priority of previously running thread */ lw t1, THREAD_PRI(k0) + lw t2, __osRunQueue /* Get highest priority from waiting threads */ lw t3, THREAD_PRI(t2) bge t1, t3, enqueueRunning @@ -567,7 +676,7 @@ panic: MFC0( t2, C0_BADVADDR) sw t2, THREAD_BADVADDR(k0) /* Post the fault message */ - li a0, OS_EVENT_FAULT*8 + li a0, MESG(OS_EVENT_FAULT) jal send_mesg /* Dispatch next thread */ j __osDispatchThread @@ -576,12 +685,12 @@ panic: * Handles posting event messages to the listening message queue, if there is one */ send_mesg: + /* Save return address */ + move s2, ra /* Load pointer to listening message queue */ la t2, __osEventStateTab addu t2, t2, a0 lw t1, (t2) - /* Save return address */ - move s2, ra /* If there is no listening message queue, done */ beqz t1, send_done @@ -595,14 +704,13 @@ send_mesg: addu t5, t5, t3 rem t5, t5, t4 lw t4, MQ_MSG(t1) - sll t5, t5, 2 + mul t5, t5, 4 addu t4, t4, t5 - /* Fetch the message to post */ - lw t5, 4(t2) - addiu t2, t3, 1 /* Post the message to the message queue */ + lw t5, 4(t2) sw t5, (t4) /* Increment the validCount */ + addiu t2, t3, 1 sw t2, MQ_VALIDCOUNT(t1) /* If there was a thread blocked on this message queue, */ /* wake it up */ @@ -627,10 +735,10 @@ handle_CpU: li t2, 1 /* if not coprocessor 1, panic */ bne t1, t2, panic /* Mark cop1 as usable for previous thread */ - lw k1, THREAD_SR(k0) li t1, 1 - or k1, k1, SR_CU1 sw t1, THREAD_FP(k0) + lw k1, THREAD_SR(k0) + or k1, k1, SR_CU1 sw k1, THREAD_SR(k0) b enqueueRunning END(__osException) @@ -647,7 +755,6 @@ LEAF(__osEnqueueAndYield) lw a1, __osRunningThread /* Save SR */ MFC0( t0, C0_SR) - lw k1, THREAD_FP(a1) ori t0, t0, SR_EXL sw t0, THREAD_SR(a1) /* Save callee-saved registers */ @@ -665,15 +772,16 @@ LEAF(__osEnqueueAndYield) sd ra, THREAD_RA(a1) sw ra, THREAD_PC(a1) /* Save FPU callee-saved registers if the current thread has used the FPU */ + lw k1, THREAD_FP(a1) beqz k1, 1f cfc1 k1, C1_FPCSR + sw k1, THREAD_FPCSR(a1) sdc1 $f20, THREAD_FP20(a1) sdc1 $f22, THREAD_FP22(a1) sdc1 $f24, THREAD_FP24(a1) sdc1 $f26, THREAD_FP26(a1) sdc1 $f28, THREAD_FP28(a1) sdc1 $f30, THREAD_FP30(a1) - sw k1, THREAD_FPCSR(a1) 1: lw k1, THREAD_SR(a1) andi t1, k1, SR_IMASK @@ -682,7 +790,7 @@ LEAF(__osEnqueueAndYield) /* See the comment there for more about this. */ la t0, __OSGlobalIntMask lw t0, (t0) - xor t0, t0, ~0 + xor t0, t0, 0xFFFFFFFF andi t0, t0, SR_IMASK or t1, t1, t0 and k1, k1, ~SR_IMASK @@ -695,10 +803,10 @@ LEAF(__osEnqueueAndYield) /* See the comment there for more about this. */ la k0, __OSGlobalIntMask lw k0, (k0) - lw t0, THREAD_RCP(a1) srl k0, k0, RCP_IMASKSHIFT - xor k0, k0, ~0 + xor k0, k0, 0xFFFFFFFF andi k0, k0, (RCP_IMASK >> RCP_IMASKSHIFT) + lw t0, THREAD_RCP(a1) and k0, k0, t0 or k1, k1, k0 3: @@ -717,9 +825,9 @@ END(__osEnqueueAndYield) * Enqueues `thread` to the thread queue `threadQueue`, inserted by priority */ LEAF(__osEnqueueThread) + move t9, a0 lw t8, (a0) lw t7, THREAD_PRI(a1) - move t9, a0 lw t6, THREAD_PRI(t8) /* If the current highest priority thread is a lower priority than */ /* the new thread, skip searching the queue */ @@ -778,8 +886,8 @@ LEAF(__osDispatchThread) lw k1, THREAD_SR(k0) la t0, __OSGlobalIntMask lw t0, (t0) - andi t1, k1, SR_IMASK andi t0, t0, SR_IMASK + andi t1, k1, SR_IMASK and t1, t1, t0 and k1, k1, ~SR_IMASK or k1, k1, t1 @@ -812,13 +920,13 @@ LEAF(__osDispatchThread) ld t8, THREAD_T8(k0) ld t9, THREAD_T9(k0) ld gp, THREAD_GP(k0) + ld sp, THREAD_SP(k0) + ld fp, THREAD_S8(k0) + ld ra, THREAD_RA(k0) ld k1, THREAD_LO(k0) mtlo k1 ld k1, THREAD_HI(k0) mthi k1 - ld sp, THREAD_SP(k0) - ld fp, THREAD_S8(k0) - ld ra, THREAD_RA(k0) /* Move thread pc to EPC so that eret will return execution to where the thread left off */ lw k1, THREAD_PC(k0) MTC0( k1, C0_EPC) diff --git a/src/libultra/os/parameters.s b/src/libultra/os/parameters.s index 179dbcf02f..8fb324d240 100644 --- a/src/libultra/os/parameters.s +++ b/src/libultra/os/parameters.s @@ -23,4 +23,26 @@ IPL_SYMBOL(osVersion, 0x80000314, 4) IPL_SYMBOL(osMemSize, 0x80000318, 4) IPL_SYMBOL(osAppNMIBuffer, 0x8000031C, 0x40) +#ifdef BBPLAYER + +IPL_SYMBOL(__osBbEepromAddress, 0x8000035C, 4) +IPL_SYMBOL(__osBbEepromSize, 0x80000360, 4) +IPL_SYMBOL(__osBbFlashAddress, 0x80000364, 4) +IPL_SYMBOL(__osBbFlashSize, 0x80000368, 4) +IPL_SYMBOL(__osBbSramAddress, 0x8000036C, 4) +IPL_SYMBOL(__osBbSramSize, 0x80000370, 4) +IPL_SYMBOL(__osBbPakAddress, 0x80000374, 0x10) +IPL_SYMBOL(__osBbPakSize, 0x80000384, 4) +IPL_SYMBOL(__osBbIsBb, 0x80000388, 4) +IPL_SYMBOL(__osBbHackFlags, 0x8000038C, 4) +IPL_SYMBOL(__osBbStashMagic, 0x80000390, 4) +IPL_SYMBOL(__osBbPakBindings, 0x80000394, 0x10) +IPL_SYMBOL(__osBbStateName, 0x800003A4, 0x10) +IPL_SYMBOL(__osBbStateDirty, 0x800003B4, 4) +IPL_SYMBOL(__osBbAuxDataLimit, 0x800003B8, 4) + +.space 0x30 + +#endif + .space 0x60 From c6cceea85b1f064817482ee69214a25d9346bf50 Mon Sep 17 00:00:00 2001 From: cadmic Date: Mon, 6 Jan 2025 01:09:35 -0800 Subject: [PATCH 07/40] [iQue] Match src/libc (#2405) --- Makefile | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index a3155849b3..8eb8b84ce7 100644 --- a/Makefile +++ b/Makefile @@ -585,17 +585,17 @@ EGCS_O_FILES += $(BUILD_DIR)/src/boot/idle.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/boot/zlib.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 @@ -603,10 +603,17 @@ EGCS_O_FILES += $(BUILD_DIR)/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope $(EGCS_O_FILES): CC := $(EGCS_CC) $(EGCS_O_FILES): CFLAGS := $(EGCS_CFLAGS) -mno-abicalls -$(EGCS_O_FILES): MIPS_VERSION := -mips3 +$(EGCS_O_FILES): MIPS_VERSION := endif -ifeq ($(DEBUG_FEATURES),1) +ifeq ($(PLATFORM),IQUE) +$(BUILD_DIR)/src/libc/%.o: CC := $(EGCS_CC) +$(BUILD_DIR)/src/libc/%.o: CCAS := $(EGCS_CCAS) +$(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 := +else ifeq ($(DEBUG_FEATURES),1) $(BUILD_DIR)/src/libc/%.o: OPTFLAGS := -g $(BUILD_DIR)/src/libc/%.o: ASOPTFLAGS := -g else From aaf9c939a47e6613e3b72bb68d0e39c529649975 Mon Sep 17 00:00:00 2001 From: Tharo <17233964+Thar0@users.noreply.github.com> Date: Tue, 7 Jan 2025 05:21:25 +0000 Subject: [PATCH 08/40] [iQue] Match osViSetMode (#2404) --- include/variables.h | 2 ++ src/code/main.c | 2 +- src/code/z_camera.c | 2 +- src/libultra/io/visetmode.c | 6 ++++++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/include/variables.h b/include/variables.h index c24ae4f643..d532f4fe95 100644 --- a/include/variables.h +++ b/include/variables.h @@ -14,6 +14,8 @@ extern s32 osCicId; extern u32 osMemSize; extern u8 osAppNMIBuffer[0x40]; +extern u32 __osBbIsBb; + extern s8 D_80009430; extern vu8 gViConfigBlack; extern u8 gViConfigAdditionalScanLines; diff --git a/src/code/main.c b/src/code/main.c index 637243160f..8ad00b52bd 100644 --- a/src/code/main.c +++ b/src/code/main.c @@ -24,7 +24,7 @@ extern struct IrqMgr gIrqMgr; #endif #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:142 ntsc-1.1:142 ntsc-1.2:142 pal-1.0:140 pal-1.1:140" + "ntsc-1.0:141 ntsc-1.1:141 ntsc-1.2:141 pal-1.0:139 pal-1.1:139" extern u8 _buffersSegmentEnd[]; diff --git a/src/code/z_camera.c b/src/code/z_camera.c index b35c18c048..e4090d484e 100644 --- a/src/code/z_camera.c +++ b/src/code/z_camera.c @@ -3639,7 +3639,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:145 ntsc-1.1:145 ntsc-1.2:145 pal-1.0:143 pal-1.1:143" + "ntsc-1.0:144 ntsc-1.1:144 ntsc-1.2:144 pal-1.0:142 pal-1.1:142" s32 Camera_KeepOn4(Camera* camera) { static Vec3f D_8015BD50; diff --git a/src/libultra/io/visetmode.c b/src/libultra/io/visetmode.c index ab5b3b0e18..8c34a4ee31 100644 --- a/src/libultra/io/visetmode.c +++ b/src/libultra/io/visetmode.c @@ -4,6 +4,12 @@ void osViSetMode(OSViMode* mode) { register u32 prevInt = __osDisableInt(); +#ifdef BBPLAYER + if (__osBbIsBb) { + mode->comRegs.ctrl &= ~VI_CTRL_PIXEL_ADV(2); + } +#endif + __osViNext->modep = mode; __osViNext->state = VI_STATE_MODE_SET; __osViNext->features = __osViNext->modep->comRegs.ctrl; From 727b61aaf88cd2dc3da3acac05dc9e7bff9b8b5b Mon Sep 17 00:00:00 2001 From: Tharo <17233964+Thar0@users.noreply.github.com> Date: Tue, 7 Jan 2025 08:36:34 +0000 Subject: [PATCH 09/40] [iQue] Match libultra/mgu (#2406) --- src/libultra/mgu/mtxf2l.s | 14 +++++++------- src/libultra/mgu/normalize.s | 4 +++- src/libultra/mgu/translate.s | 2 +- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/libultra/mgu/mtxf2l.s b/src/libultra/mgu/mtxf2l.s index 1fada6b530..0268a323ef 100644 --- a/src/libultra/mgu/mtxf2l.s +++ b/src/libultra/mgu/mtxf2l.s @@ -13,23 +13,23 @@ LEAF(guMtxF2L) addu t8, a1, MTX_FRACPART 1: lwc1 ft0, 0(a0) - lwc1 ft3, 4(a0) mul.s ft1, ft0, fv0 - mul.s ft4, ft3, fv0 trunc.w.s ft2, ft1 + lwc1 ft3, 4(a0) + mul.s ft4, ft3, fv0 trunc.w.s ft5, ft4 mfc1 t0, ft2 mfc1 t1, ft5 - srl t3, t1, 0x10 - and t6, t1, 0xFFFF and t2, t0, t9 - sll t5, t0, 0x10 + srl t3, t1, 0x10 or t4, t2, t3 - or t7, t5, t6 sw t4, (MTX_INTPART)(a1) + sll t5, t0, 0x10 + and t6, t1, 0xFFFF + or t7, t5, t6 sw t7, (MTX_FRACPART)(a1) - addu a0, a0, 8 addu a1, a1, 4 + addu a0, a0, 8 bne a1, t8, 1b jr ra diff --git a/src/libultra/mgu/normalize.s b/src/libultra/mgu/normalize.s index da10204d6c..8174527f2c 100644 --- a/src/libultra/mgu/normalize.s +++ b/src/libultra/mgu/normalize.s @@ -8,8 +8,8 @@ LEAF(guNormalize) lwc1 ft0, (a0) lwc1 ft1, (a1) lwc1 ft2, (a2) - li.s t0, 1.0 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 @@ -18,7 +18,9 @@ LEAF(guNormalize) sqrt.s ft4, ft3 div.s ft3, ft5, ft4 mul.s ft4, ft0, ft3 + nop mul.s ft5, ft1, ft3 + nop mul.s ft0, ft2, ft3 swc1 ft4, (a0) swc1 ft5, (a1) diff --git a/src/libultra/mgu/translate.s b/src/libultra/mgu/translate.s index 4ee630751f..cf2d246434 100644 --- a/src/libultra/mgu/translate.s +++ b/src/libultra/mgu/translate.s @@ -23,8 +23,8 @@ LEAF(guTranslate) or t0, t0, t2 sw t0, 0x18(a0) - sll t2, t3, 0x10 sll t0, t1, 0x10 + sll t2, t3, 0x10 srl t2, t2, 0x10 or t0, t0, t2 sw t0, 0x38(a0) From a3c3c38fead604508fef7626fa8ae494d67df52c Mon Sep 17 00:00:00 2001 From: Tharo <17233964+Thar0@users.noreply.github.com> Date: Tue, 7 Jan 2025 09:19:18 +0000 Subject: [PATCH 10/40] [iQue] Match libultra/libc (#2407) --- Makefile | 3 +++ include/libc/stdarg.h | 11 ++++++----- src/libultra/libc/bcmp.s | 2 +- src/libultra/libc/bzero.s | 2 +- src/libultra/libc/xldtob.c | 16 +++++----------- src/libultra/libc/xprintf.c | 10 +++------- 6 files changed, 19 insertions(+), 25 deletions(-) diff --git a/Makefile b/Makefile index 8eb8b84ce7..b255e48e0f 100644 --- a/Makefile +++ b/Makefile @@ -645,6 +645,9 @@ $(BUILD_DIR)/src/libultra/%.o: CFLAGS := $(EGCS_CFLAGS) -mno-abicalls $(BUILD_DIR)/src/libultra/%.o: CCASFLAGS := $(EGCS_CCASFLAGS) $(BUILD_DIR)/src/libultra/%.o: ASOPTFLAGS := $(EGCS_ASOPTFLAGS) +$(BUILD_DIR)/src/libultra/libc/ll.o: OPTFLAGS := -O0 +$(BUILD_DIR)/src/libultra/libc/llcvt.o: OPTFLAGS := -O0 + $(BUILD_DIR)/src/libultra/os/exceptasm.o: MIPS_VERSION := -mips3 $(BUILD_DIR)/src/libultra/os/invaldcache.o: MIPS_VERSION := -mips3 $(BUILD_DIR)/src/libultra/os/invalicache.o: MIPS_VERSION := -mips3 diff --git a/include/libc/stdarg.h b/include/libc/stdarg.h index ec57a0c846..7c7d2800e5 100644 --- a/include/libc/stdarg.h +++ b/include/libc/stdarg.h @@ -66,11 +66,12 @@ typedef char * __gnuc_va_list; /* We cast to void * and then to TYPE * because this avoids a warning about increasing the alignment requirement. */ -#define va_arg(__AP, __type) \ - ((__type *) (void *) (__AP = (char *) ((__alignof__(__type) > 4 \ - ? ((__PTRDIFF_TYPE__)__AP + 8 - 1) & -8 \ - : ((__PTRDIFF_TYPE__)__AP + 4 - 1) & -4) \ - + __va_rounded_size(__type))))[-1] +#define va_arg(__AP, __type) \ + ((__type *) (void *) (__AP = (char *) ((__alignof__(__type) > 4 \ + ? ((__PTRDIFF_TYPE__)__AP + 8 - 1) & -8 \ + : ((__PTRDIFF_TYPE__)__AP + 4 - 1) & -4) \ + + __va_rounded_size (__type))), \ + *(__type *) (void *) (__AP - __va_rounded_size (__type))) typedef __gnuc_va_list va_list; diff --git a/src/libultra/libc/bcmp.s b/src/libultra/libc/bcmp.s index dcd5bc0023..9ef0746cf3 100644 --- a/src/libultra/libc/bcmp.s +++ b/src/libultra/libc/bcmp.s @@ -61,8 +61,8 @@ partaligncmp: addu a3, a3, a0 1: lwl v0, (a0) - lw v1, (a1) lwr v0, 3(a0) + lw v1, (a1) addu a0, a0, 4 addu a1, a1, 4 bne v0, v1, cmpne diff --git a/src/libultra/libc/bzero.s b/src/libultra/libc/bzero.s index 9c6552f654..e1ee69e89a 100644 --- a/src/libultra/libc/bzero.s +++ b/src/libultra/libc/bzero.s @@ -51,8 +51,8 @@ bytezero: /* zero one byte at a time */ addu a1, a1, a0 1: - sb zero, (a0) addiu a0, a0, 1 + sb zero, -1(a0) bne a0, a1, 1b zerodone: jr ra diff --git a/src/libultra/libc/xldtob.c b/src/libultra/libc/xldtob.c index a0ebe5d2d8..1a64baf041 100644 --- a/src/libultra/libc/xldtob.c +++ b/src/libultra/libc/xldtob.c @@ -56,7 +56,7 @@ void _Ldtob(_Pft* args, char code) { } else if (args->prec == 0 && (code == 'g' || code == 'G')) { args->prec = 1; } - err = _Ldunscale(&exp, (_Pft*)args); + err = _Ldunscale(&exp, args); if (err > 0) { memcpy(args->s, err == 2 ? "NaN" : "Inf", args->n1 = 3); return; @@ -76,7 +76,7 @@ void _Ldtob(_Pft* args, char code) { exp = exp * 30103 / 100000 - 4; if (exp < 0) { - n = (3 - exp) & ~3; + n = (-exp + 3) & ~3; exp = -n; for (i = 0; n > 0; n >>= 1, i++) { if ((n & 1) != 0) { @@ -95,7 +95,7 @@ void _Ldtob(_Pft* args, char code) { val /= factor; } - gen = ((code == 'f') ? exp + 10 : 6) + args->prec; + gen = args->prec + ((code == 'f') ? exp + 10 : 6); if (gen > 0x13) { gen = 0x13; } @@ -128,20 +128,14 @@ void _Ldtob(_Pft* args, char code) { --gen, --exp; } - nsig = ((code == 'f') ? exp + 1 : ((code == 'e' || code == 'E') ? 1 : 0)) + args->prec; + nsig = args->prec + ((code == 'f') ? exp + 1 : ((code == 'e' || code == 'E') ? 1 : 0)); if (gen < nsig) { nsig = gen; } if (nsig > 0) { - char drop; + char drop = (nsig < gen && ptr[nsig] > '4') ? '9' : '0'; int n2; - if (nsig < gen && ptr[nsig] > '4') { - drop = '9'; - } else { - drop = '0'; - } - for (n2 = nsig; ptr[--n2] == drop;) { nsig--; } diff --git a/src/libultra/libc/xprintf.c b/src/libultra/libc/xprintf.c index 7fba40b4c4..32a25d383c 100644 --- a/src/libultra/libc/xprintf.c +++ b/src/libultra/libc/xprintf.c @@ -11,7 +11,7 @@ #define ATOI(i, a) \ for (i = 0; isdigit(*a); a++) \ if (i < 999) \ - i = *a + i * 10 - '0'; + i = i * 10 + *a - '0'; #define PUT(fmt, _size) \ if (_size > 0) { \ @@ -93,11 +93,7 @@ int _Printf(PrintCallback pfn, void* arg, const char* fmt, va_list ap) { } } - if (strchr("hlL", *s) != NULL) { - x.qual = *s++; - } else { - x.qual = '\0'; - } + x.qual = (strchr("hlL", *s) != NULL) ? *s++ : '\0'; if (x.qual == 'l' && *s == 'l') { x.qual = 'L'; @@ -126,7 +122,7 @@ static void _Putfld(_Pft* px, va_list* pap, char code, char* ac) { switch (code) { case 'c': - ac[px->n0++] = va_arg(*pap, unsigned int); + ac[px->n0++] = va_arg(*pap, int); break; case 'd': From f329507f97c30a040ff1ea020ed9ff6249360561 Mon Sep 17 00:00:00 2001 From: cadmic Date: Wed, 8 Jan 2025 07:33:49 -0800 Subject: [PATCH 11/40] [iQue] Create/update macros for printing debug strings (#2398) --- Makefile | 12 ++--- include/macros.h | 29 ++++++++++- src/boot/idle.c | 4 +- src/boot/z_locale.c | 4 +- src/boot/z_std_dma.c | 8 ++-- src/code/game.c | 8 ++-- src/code/graph.c | 4 +- src/code/irqmgr.c | 4 +- src/code/main.c | 4 +- src/code/padmgr.c | 4 +- src/code/speed_meter.c | 4 +- src/code/sys_math3d.c | 12 ++--- src/code/z_DLF.c | 4 +- src/code/z_actor.c | 8 ++-- src/code/z_bg_collect.c | 4 +- src/code/z_bgcheck.c | 48 +++++++++---------- src/code/z_collision_check.c | 20 ++++---- src/code/z_eff_shield_particle.c | 4 +- src/code/z_effect_soft_sprite.c | 18 +++---- src/code/z_horse.c | 8 ++-- src/code/z_jpeg.c | 4 +- src/code/z_kaleido_manager.c | 12 ++--- src/code/z_kaleido_scope_call.c | 20 ++++---- src/code/z_map_exp.c | 20 ++++---- src/code/z_message.c | 44 ++++++++--------- src/code/z_parameter.c | 36 +++++++------- src/code/z_room.c | 4 +- src/code/z_scene.c | 8 ++-- src/code/z_skelanime.c | 40 ++++++++-------- src/code/z_skin_matrix.c | 4 +- src/code/z_sram.c | 16 +++---- src/code/z_view.c | 4 +- src/code/z_vr_box.c | 4 +- src/libu64/stackcheck.c | 8 ++-- .../ovl_Bg_Ganon_Otyuka/z_bg_ganon_otyuka.c | 4 +- .../ovl_Bg_Jya_Bombiwa/z_bg_jya_bombiwa.c | 4 +- .../actors/ovl_Bg_Jya_Cobra/z_bg_jya_cobra.c | 4 +- .../z_bg_jya_zurerukabe.c | 4 +- .../ovl_Bg_Spot18_Basket/z_bg_spot18_basket.c | 4 +- src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2.c | 4 +- src/overlays/actors/ovl_Boss_Mo/z_boss_mo.c | 4 +- src/overlays/actors/ovl_En_Fish/z_en_fish.c | 4 +- src/overlays/actors/ovl_En_Fr/z_en_fr.c | 16 +++---- src/overlays/actors/ovl_En_GirlA/z_en_girla.c | 8 ++-- src/overlays/actors/ovl_En_Gm/z_en_gm.c | 4 +- .../actors/ovl_En_Goroiwa/z_en_goroiwa.c | 4 +- src/overlays/actors/ovl_En_Guest/z_en_guest.c | 4 +- .../actors/ovl_En_Insect/z_en_insect.c | 8 ++-- src/overlays/actors/ovl_En_Ishi/z_en_ishi.c | 4 +- .../actors/ovl_En_Kanban/z_en_kanban.c | 6 +-- src/overlays/actors/ovl_En_Kusa/z_en_kusa.c | 4 +- src/overlays/actors/ovl_En_Ossan/z_en_ossan.c | 16 +++---- src/overlays/actors/ovl_En_Owl/z_en_owl.c | 12 ++--- src/overlays/actors/ovl_Fishing/z_fishing.c | 10 ++-- src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c | 12 ++--- .../ovl_Obj_Lightswitch/z_obj_lightswitch.c | 4 +- .../ovl_Obj_Makekinsuta/z_obj_makekinsuta.c | 8 ++-- .../ovl_Obj_Makeoshihiki/z_obj_makeoshihiki.c | 4 +- .../actors/ovl_Obj_Switch/z_obj_switch.c | 4 +- .../ovl_Obj_Warp2block/z_obj_warp2block.c | 4 +- .../actors/ovl_Oceff_Spot/z_oceff_spot.c | 8 ++-- .../ovl_file_choose/z_file_choose.c | 4 +- .../ovl_file_choose/z_file_nameset.c | 4 +- src/overlays/gamestates/ovl_select/z_select.c | 4 +- .../misc/ovl_kaleido_scope/z_kaleido_scope.c | 12 ++--- 65 files changed, 328 insertions(+), 303 deletions(-) diff --git a/Makefile b/Makefile index b255e48e0f..bf8e86ca94 100644 --- a/Makefile +++ b/Makefile @@ -296,6 +296,9 @@ OBJDUMP := $(MIPS_BINUTILS_PREFIX)objdump NM := $(MIPS_BINUTILS_PREFIX)nm STRIP := $(MIPS_BINUTILS_PREFIX)strip +# Command prefix to preprocess a file before running the compiler +PREPROCESS := + # Command to patch certain object files after they are built POSTPROCESS_OBJ := @: @@ -726,19 +729,14 @@ endif $(BUILD_DIR)/assets/misc/z_select_static/%.o: GBI_DEFINES := -DF3DEX_GBI ifeq ($(PLATFORM),IQUE) - $(BUILD_DIR)/src/makerom/%.o: CCAS := $(EGCS_CCAS) $(BUILD_DIR)/src/makerom/%.o: CCASFLAGS := $(EGCS_CCASFLAGS) $(BUILD_DIR)/src/makerom/%.o: ASOPTFLAGS := $(EGCS_ASOPTFLAGS) - endif -# For using asm_processor on some files: -#$(BUILD_DIR)/.../%.o: CC := $(PYTHON) tools/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) -- - ifeq ($(PERMUTER),) # permuter + preprocess.py misbehaves, permuter doesn't care about rodata diffs or bss ordering so just don't use it in that case # Handle encoding (UTF-8 -> EUC-JP) and custom pragmas -$(BUILD_DIR)/src/%.o: CC := ./tools/preprocess.sh -v $(VERSION) -i $(ICONV) -- $(CC) +$(BUILD_DIR)/src/%.o: PREPROCESS := ./tools/preprocess.sh -v $(VERSION) -i $(ICONV) -- endif else @@ -958,7 +956,7 @@ $(BUILD_DIR)/src/%.o: src/%.c ifneq ($(RUN_CC_CHECK),0) $(CC_CHECK) $< endif - $(CC) -c $(CFLAGS) $(MIPS_VERSION) $(OPTFLAGS) -o $@ $< + $(PREPROCESS) $(CC) -c $(CFLAGS) $(MIPS_VERSION) $(OPTFLAGS) -o $@ $< $(POSTPROCESS_OBJ) $@ $(OBJDUMP_CMD) diff --git a/include/macros.h b/include/macros.h index f3fefa96d4..d7547482c0 100644 --- a/include/macros.h +++ b/include/macros.h @@ -1,6 +1,7 @@ #ifndef MACROS_H #define MACROS_H +#include "terminal.h" #include "versions.h" #ifndef AVOID_UB @@ -54,11 +55,37 @@ #elif IDO_PRINTF_WORKAROUND #define PRINTF(args) (void)0 #elif defined(__GNUC__) && __GNUC__ < 3 -#define PRINTF(format, args...) (void)0 +#define PRINTF(format, args...) while (0) osSyncPrintf(format, ##args) #else #define PRINTF(format, ...) (void)0 #endif +#if DEBUG_FEATURES +#define PRINTF_COLOR_BLACK() PRINTF(VT_FGCOL(BLACK)) +#define PRINTF_COLOR_RED() PRINTF(VT_FGCOL(RED)) +#define PRINTF_COLOR_GREEN() PRINTF(VT_FGCOL(GREEN)) +#define PRINTF_COLOR_YELLOW() PRINTF(VT_FGCOL(YELLOW)) +#define PRINTF_COLOR_BLUE() PRINTF(VT_FGCOL(BLUE)) +#define PRINTF_COLOR_MAGENTA() PRINTF(VT_FGCOL(MAGENTA)) +#define PRINTF_COLOR_CYAN() PRINTF(VT_FGCOL(CYAN)) +#define PRINTF_COLOR_WHITE() PRINTF(VT_FGCOL(WHITE)) +#define PRINTF_COLOR_WARNING() PRINTF(VT_COL(YELLOW, BLACK)) +#define PRINTF_COLOR_ERROR() PRINTF(VT_COL(RED, WHITE)) +#define PRINTF_RST() PRINTF(VT_RST) +#else +#define PRINTF_COLOR_BLACK() (void)0 +#define PRINTF_COLOR_RED() (void)0 +#define PRINTF_COLOR_GREEN() (void)0 +#define PRINTF_COLOR_YELLOW() (void)0 +#define PRINTF_COLOR_BLUE() (void)0 +#define PRINTF_COLOR_MAGENTA() (void)0 +#define PRINTF_COLOR_CYAN() (void)0 +#define PRINTF_COLOR_WHITE() (void)0 +#define PRINTF_COLOR_WARNING() (void)0 +#define PRINTF_COLOR_ERROR() (void)0 +#define PRINTF_RST() (void)0 +#endif + #if DEBUG_FEATURES #define LOG(exp, value, format, file, line) \ do { \ diff --git a/src/boot/idle.c b/src/boot/idle.c index ce1eaa9b5c..508fd16c4e 100644 --- a/src/boot/idle.c +++ b/src/boot/idle.c @@ -57,7 +57,7 @@ void Idle_ThreadEntry(void* arg) { PRINTF(T("作製者 : %s\n", "Created by: %s\n"), gBuildCreator); PRINTF(T("作成日時 : %s\n", "Created : %s\n"), gBuildDate); PRINTF("MAKEOPTION: %s\n", gBuildMakeOption); - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF(T("RAMサイズは %d キロバイトです(osMemSize/osGetMemSize)\n", "RAM size is %d kilobytes (osMemSize/osGetMemSize)\n"), (s32)osMemSize / 1024); @@ -70,7 +70,7 @@ void Idle_ThreadEntry(void* arg) { PRINTF(T("YIELDバッファのサイズは %d キロバイトです\n", "YIELD buffer size is %d kilobytes\n"), 3); PRINTF(T("オーディオヒープのサイズは %d キロバイトです\n", "Audio heap size is %d kilobytes\n"), ((intptr_t)&gAudioHeap[ARRAY_COUNT(gAudioHeap)] - (intptr_t)gAudioHeap) / 1024); - PRINTF(VT_RST); + PRINTF_RST(); osCreateViManager(OS_PRIORITY_VIMGR); diff --git a/src/boot/z_locale.c b/src/boot/z_locale.c index 1b8bd4294d..35580e3815 100644 --- a/src/boot/z_locale.c +++ b/src/boot/z_locale.c @@ -37,11 +37,11 @@ void Locale_Init(void) { break; #endif default: - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); PRINTF(T("z_locale_init: 日本用かアメリカ用か判別できません\n", "z_locale_init: Can't tell if it's for Japan or America\n")); LogUtils_HungupThread("../z_locale.c", LN4(86, 92, 101, 118, UNK_LINE)); - PRINTF(VT_RST); + PRINTF_RST(); break; } diff --git a/src/boot/z_std_dma.c b/src/boot/z_std_dma.c index d962f67889..07bd6dadb9 100644 --- a/src/boot/z_std_dma.c +++ b/src/boot/z_std_dma.c @@ -272,7 +272,7 @@ NORETURN void DmaMgr_Error(DmaRequest* req, const char* filename, const char* er char buff2[80]; PRINTF("%c", BEL); - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("DMA致命的エラー(%s)\nROM:%X RAM:%X SIZE:%X %s\n", "DMA Fatal Error (%s)\nROM:%X RAM:%X SIZE:%X %s\n"), errorDesc != NULL ? errorDesc : (errorName != NULL ? errorName : "???"), vrom, ram, size, filename != NULL ? filename : "???"); @@ -283,7 +283,7 @@ NORETURN void DmaMgr_Error(DmaRequest* req, const char* filename, const char* er PRINTF("DMA ERROR: %s %d", sDmaMgrCurFileName, sDmaMgrCurFileLine); } - PRINTF(VT_RST); + PRINTF_RST(); if (req->filename != NULL) { sprintf(buff1, "DMA ERROR: %s %d", req->filename, req->line); @@ -562,12 +562,12 @@ s32 DmaMgr_RequestAsync(DmaRequest* req, void* ram, uintptr_t vrom, size_t size, if (1 && (sDmaMgrQueueFullLogged == 0) && MQ_IS_FULL(&sDmaMgrMsgQueue)) { sDmaMgrQueueFullLogged++; PRINTF("%c", BEL); - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("dmaEntryMsgQが一杯です。キューサイズの再検討をおすすめします。", "dmaEntryMsgQ is full. Reconsider your queue size.")); LOG_NUM("(sizeof(dmaEntryMsgBufs) / sizeof(dmaEntryMsgBufs[0]))", ARRAY_COUNT(sDmaMgrMsgBuf), "../z_std_dma.c", 952); - PRINTF(VT_RST); + PRINTF_RST(); } #endif diff --git a/src/code/game.c b/src/code/game.c index ee29c84496..4367839528 100644 --- a/src/code/game.c +++ b/src/code/game.c @@ -409,12 +409,12 @@ void GameState_Realloc(GameState* gameState, size_t size) { SystemArena_GetSizes(&systemMaxFree, &systemFree, &systemAlloc); if ((systemMaxFree - 0x10) < size) { PRINTF("%c", BEL); - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("メモリが足りません。ハイラルサイズを可能な最大値に変更します\n", "Not enough memory. Change Hyrule size to maximum possible value\n")); PRINTF("(hyral=%08x max=%08x free=%08x alloc=%08x)\n", size, systemMaxFree, systemFree, systemAlloc); - PRINTF(VT_RST); + PRINTF_RST(); size = systemMaxFree - 0x10; } @@ -557,9 +557,9 @@ void* GameState_Alloc(GameState* gameState, size_t size, const char* file, int l } } if (ret != NULL) { - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("game_alloc(%08x) %08x-%08x [%s:%d]\n", size, ret, (uintptr_t)ret + size, file, line); - PRINTF(VT_RST); + PRINTF_RST(); } return ret; } diff --git a/src/code/graph.c b/src/code/graph.c index 091c80bae3..348fe4bf9b 100644 --- a/src/code/graph.c +++ b/src/code/graph.c @@ -188,9 +188,9 @@ void Graph_TaskSet00(GraphicsContext* gfxCtx) { if (msg == (OSMesg)666) { #if DEBUG_FEATURES - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("RCPが帰ってきませんでした。", "RCP did not return.")); - PRINTF(VT_RST); + PRINTF_RST(); LogUtils_LogHexDump((void*)PHYS_TO_K1(SP_BASE_REG), 0x20); LogUtils_LogHexDump((void*)PHYS_TO_K1(DPC_BASE_REG), 0x20); diff --git a/src/code/irqmgr.c b/src/code/irqmgr.c index 3a1e3cdf55..59d7a41cfa 100644 --- a/src/code/irqmgr.c +++ b/src/code/irqmgr.c @@ -185,11 +185,11 @@ void IrqMgr_CheckStacks(void) { PRINTF(T("スタックは大丈夫みたいです\n", "The stack looks ok\n")); } else { PRINTF("%c", BEL); - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("スタックがオーバーフローしたか危険な状態です\n", "Stack overflow or dangerous\n")); PRINTF(T("早々にスタックサイズを増やすか、スタックを消費しないようにしてください\n", "Increase stack size early or don't consume stack\n")); - PRINTF(VT_RST); + PRINTF_RST(); } } diff --git a/src/code/main.c b/src/code/main.c index 8ad00b52bd..bffc9565ad 100644 --- a/src/code/main.c +++ b/src/code/main.c @@ -59,11 +59,11 @@ OSMesg sSerialMsgBuf[1]; #if DEBUG_FEATURES void Main_LogSystemHeap(void) { - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF( T("システムヒープサイズ %08x(%dKB) 開始アドレス %08x\n", "System heap size %08x (%dKB) Start address %08x\n"), gSystemHeapSize, gSystemHeapSize / 1024, _buffersSegmentEnd); - PRINTF(VT_RST); + PRINTF_RST(); } #endif diff --git a/src/code/padmgr.c b/src/code/padmgr.c index 33a5056639..373d4e905f 100644 --- a/src/code/padmgr.c +++ b/src/code/padmgr.c @@ -35,9 +35,9 @@ #define PADMGR_LOG(controllerNum, msg) \ if (DEBUG_FEATURES) { \ - PRINTF(VT_FGCOL(YELLOW)); \ + PRINTF_COLOR_YELLOW(); \ PRINTF(T("padmgr: %dコン: %s\n", "padmgr: Controller %d: %s\n"), (controllerNum) + 1, (msg)); \ - PRINTF(VT_RST); \ + PRINTF_RST(); \ } \ (void)0 diff --git a/src/code/speed_meter.c b/src/code/speed_meter.c index d325099a89..d282e34953 100644 --- a/src/code/speed_meter.c +++ b/src/code/speed_meter.c @@ -185,9 +185,9 @@ void SpeedMeter_DrawAllocEntry(SpeedMeterAllocEntry* this, GraphicsContext* gfxC Gfx* gfx; if (this->maxval == 0) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); LOG_NUM("this->maxval", this->maxval, "../speed_meter.c", 313); - PRINTF(VT_RST); + PRINTF_RST(); } else { OPEN_DISPS(gfxCtx, "../speed_meter.c", 318); diff --git a/src/code/sys_math3d.c b/src/code/sys_math3d.c index 082c62fc71..203b9f2e2a 100644 --- a/src/code/sys_math3d.c +++ b/src/code/sys_math3d.c @@ -127,11 +127,11 @@ void Math3D_LineClosestToPoint(InfiniteLine* line, Vec3f* pos, Vec3f* closestPoi dirVectorLengthSq = Math3D_Vec3fMagnitudeSq(&line->dir); if (IS_ZERO(dirVectorLengthSq)) { - PRINTF(VT_COL(YELLOW, BLACK)); + PRINTF_COLOR_WARNING(); PRINTF(T("Math3D_lineVsPosSuisenCross():直線の長さがありません\n", "Math3D_lineVsPosSuisenCross(): No straight line length\n")); PRINTF(T("cross = pos を返します。\n", "Returns cross = pos.\n")); - PRINTF(VT_RST); + PRINTF_RST(); Math_Vec3f_Copy(closestPoint, pos); //! @bug Missing early return } @@ -930,11 +930,11 @@ f32 Math3D_Plane(Plane* plane, Vec3f* pointOnPlane) { */ f32 Math3D_UDistPlaneToPos(f32 nx, f32 ny, f32 nz, f32 originDist, Vec3f* p) { if (DEBUG_FEATURES && IS_ZERO(sqrtf(SQ(nx) + SQ(ny) + SQ(nz)))) { - PRINTF(VT_COL(YELLOW, BLACK)); + PRINTF_COLOR_WARNING(); PRINTF(T("Math3DLengthPlaneAndPos():法線size がゼロ近いです%f %f %f\n", "Math3DLengthPlaneAndPos(): Normal size is near zero %f %f %f\n"), nx, ny, nz); - PRINTF(VT_RST); + PRINTF_RST(); return 0.0f; } return fabsf(Math3D_DistPlaneToPos(nx, ny, nz, originDist, p)); @@ -949,11 +949,11 @@ f32 Math3D_DistPlaneToPos(f32 nx, f32 ny, f32 nz, f32 originDist, Vec3f* p) { normMagnitude = sqrtf(SQ(nx) + SQ(ny) + SQ(nz)); if (IS_ZERO(normMagnitude)) { - PRINTF(VT_COL(YELLOW, BLACK)); + PRINTF_COLOR_WARNING(); PRINTF(T("Math3DSignedLengthPlaneAndPos():法線size がゼロ近いです%f %f %f\n", "Math3DSignedLengthPlaneAndPos(): Normal size is close to zero %f %f %f\n"), nx, ny, nz); - PRINTF(VT_RST); + PRINTF_RST(); return 0.0f; } return Math3D_Planef(nx, ny, nz, originDist, p) / normMagnitude; diff --git a/src/code/z_DLF.c b/src/code/z_DLF.c index 547dc4bbbd..f56fcc742b 100644 --- a/src/code/z_DLF.c +++ b/src/code/z_DLF.c @@ -18,12 +18,12 @@ void Overlay_LoadGameState(GameStateOverlay* overlayEntry) { return; } - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("OVL(d):Seg:%08x-%08x Ram:%08x-%08x Off:%08x %s\n", overlayEntry->vramStart, overlayEntry->vramEnd, overlayEntry->loadedRamAddr, (u32)overlayEntry->loadedRamAddr + (u32)overlayEntry->vramEnd - (u32)overlayEntry->vramStart, (u32)overlayEntry->vramStart - (u32)overlayEntry->loadedRamAddr, ""); - PRINTF(VT_RST); + PRINTF_RST(); if (overlayEntry->unk_14 != NULL) { overlayEntry->unk_14 = (void*)((u32)overlayEntry->unk_14 - diff --git a/src/code/z_actor.c b/src/code/z_actor.c index 487b4749b0..c0633747fc 100644 --- a/src/code/z_actor.c +++ b/src/code/z_actor.c @@ -3057,7 +3057,7 @@ Actor* Actor_RemoveFromCategory(PlayState* play, ActorContext* actorCtx, Actor* } void Actor_FreeOverlay(ActorOverlay* actorOverlay) { - PRINTF(VT_FGCOL(CYAN)); + PRINTF_COLOR_CYAN(); if (actorOverlay->numLoaded == 0) { ACTOR_DEBUG_PRINTF(T("アクタークライアントが0になりました\n", "Actor clients are now 0\n")); @@ -3080,7 +3080,7 @@ void Actor_FreeOverlay(ActorOverlay* actorOverlay) { actorOverlay->numLoaded); } - PRINTF(VT_RST); + PRINTF_RST(); } Actor* Actor_Spawn(ActorContext* actorCtx, PlayState* play, s16 actorId, f32 posX, f32 posY, f32 posZ, s16 rotX, @@ -3146,13 +3146,13 @@ Actor* Actor_Spawn(ActorContext* actorCtx, PlayState* play, s16 actorId, f32 pos Overlay_Load(overlayEntry->file.vromStart, overlayEntry->file.vromEnd, overlayEntry->vramStart, overlayEntry->vramEnd, overlayEntry->loadedRamAddr); - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("OVL(a):Seg:%08x-%08x Ram:%08x-%08x Off:%08x %s\n", overlayEntry->vramStart, overlayEntry->vramEnd, overlayEntry->loadedRamAddr, (uintptr_t)overlayEntry->loadedRamAddr + (uintptr_t)overlayEntry->vramEnd - (uintptr_t)overlayEntry->vramStart, (uintptr_t)overlayEntry->vramStart - (uintptr_t)overlayEntry->loadedRamAddr, name); - PRINTF(VT_RST); + PRINTF_RST(); overlayEntry->numLoaded = 0; } diff --git a/src/code/z_bg_collect.c b/src/code/z_bg_collect.c index 2bdfc6bcdc..bd349765de 100644 --- a/src/code/z_bg_collect.c +++ b/src/code/z_bg_collect.c @@ -40,14 +40,14 @@ void DynaPolyActor_UpdateCarriedActorPos(CollisionContext* colCtx, s32 bgId, Act if (BGCHECK_XYZ_ABSMAX <= pos.x || pos.x <= -BGCHECK_XYZ_ABSMAX || BGCHECK_XYZ_ABSMAX <= pos.y || pos.y <= -BGCHECK_XYZ_ABSMAX || BGCHECK_XYZ_ABSMAX <= pos.z || pos.z <= -BGCHECK_XYZ_ABSMAX) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); //! @bug file and line are not passed to PRINTF PRINTF(T("BGCheckCollection_typicalActorPos():位置が妥当ではありません。\n" "pos (%f,%f,%f) file:%s line:%d\n", "BGCheckCollection_typicalActorPos(): Position is not valid. \n" "pos (%f,%f,%f) file:%s line:%d\n"), pos.x, pos.y, pos.z); - PRINTF(VT_RST); + PRINTF_RST(); } #endif } diff --git a/src/code/z_bgcheck.c b/src/code/z_bgcheck.c index c8b0e491dc..4310d1d9cb 100644 --- a/src/code/z_bgcheck.c +++ b/src/code/z_bgcheck.c @@ -89,11 +89,11 @@ u16 sSurfaceMaterialToSfxOffset[SURFACE_MATERIAL_MAX] = { s32 BgCheck_PosErrorCheck(Vec3f* pos, const char* file, int line) { if (pos->x >= BGCHECK_XYZ_ABSMAX || pos->x <= -BGCHECK_XYZ_ABSMAX || pos->y >= BGCHECK_XYZ_ABSMAX || pos->y <= -BGCHECK_XYZ_ABSMAX || pos->z >= BGCHECK_XYZ_ABSMAX || pos->z <= -BGCHECK_XYZ_ABSMAX) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("T_BGCheck_PosErrorCheck():位置が妥当ではありません。pos (%f,%f,%f) file:%s line:%d\n", "T_BGCheck_PosErrorCheck(): Position is invalid. pos (%f,%f,%f) file:%s line:%d\n"), pos->x, pos->y, pos->z, file, line); - PRINTF(VT_RST); + PRINTF_RST(); return true; } return false; @@ -307,11 +307,11 @@ void CollisionPoly_GetVerticesByBgId(CollisionPoly* poly, s32 bgId, CollisionCon Vec3s* vtxList; if (poly == NULL || bgId > BG_ACTOR_MAX || dest == NULL) { - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); PRINTF(T("T_Polygon_GetVertex_bg_ai(): Error %d %d %d 引数が適切ではありません。処理を終了します。\n", "T_Polygon_GetVertex_bg_ai(): Error %d %d %d Argument not appropriate. Processing terminated.\n"), poly == NULL, bgId > BG_ACTOR_MAX, dest == NULL); - PRINTF(VT_RST); + PRINTF_RST(); if (dest != NULL) { //! @bug: dest[2] x and y are not set to 0 @@ -1648,10 +1648,10 @@ void BgCheck_Allocate(CollisionContext* colCtx, PlayState* play, CollisionHeader SSNodeList_Alloc(play, &colCtx->polyNodes, tblMax, colCtx->colHeader->numPolygons); lookupTblMemSize = BgCheck_InitializeStaticLookup(colCtx, play, colCtx->lookupTbl); - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF(T("/*---結局 BG使用サイズ %dbyte---*/\n", "/*---BG size used in the end %dbyte---*/\n"), memSize + lookupTblMemSize); - PRINTF(VT_RST); + PRINTF_RST(); DynaPoly_Init(play, &colCtx->dyna); DynaPoly_Alloc(play, &colCtx->dyna); @@ -1669,10 +1669,10 @@ CollisionHeader* BgCheck_GetCollisionHeader(CollisionContext* colCtx, s32 bgId) return NULL; } if (!(colCtx->dyna.bgActorFlags[bgId] & BGACTOR_IN_USE)) { - PRINTF(VT_COL(YELLOW, BLACK)); + PRINTF_COLOR_WARNING(); PRINTF(T("T_BGCheck_getBGDataInfo():そのbg_actor_indexは使われておりません。index=%d\n", "T_BGCheck_getBGDataInfo(): That bg_actor_index is not in use. index=%d\n")); - PRINTF(VT_RST); + PRINTF_RST(); return NULL; } return colCtx->dyna.bgActors[bgId].colHeader; @@ -2738,10 +2738,10 @@ s32 DynaPoly_SetBgActor(PlayState* play, DynaCollisionContext* dyna, Actor* acto } if (!foundSlot) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("DynaPolyInfo_setActor():ダイナミックポリゴン 空きインデックスはありません\n", "DynaPolyInfo_setActor(): Dynamic polygon no free indexes\n")); - PRINTF(VT_RST); + PRINTF_RST(); return BG_ACTOR_MAX; } @@ -2749,9 +2749,9 @@ s32 DynaPoly_SetBgActor(PlayState* play, DynaCollisionContext* dyna, Actor* acto dyna->bitFlag |= DYNAPOLY_INVALIDATE_LOOKUP; dyna->bgActorFlags[bgId] &= ~BGACTOR_1; - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("DynaPolyInfo_setActor():index %d\n", bgId); - PRINTF(VT_RST); + PRINTF_RST(); return bgId; } @@ -2801,27 +2801,27 @@ void DynaPoly_EnableCeilingCollision(PlayState* play, DynaCollisionContext* dyna void DynaPoly_DeleteBgActor(PlayState* play, DynaCollisionContext* dyna, s32 bgId) { DynaPolyActor* actor; - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("DynaPolyInfo_delReserve():index %d\n", bgId); - PRINTF(VT_RST); + PRINTF_RST(); if (!DynaPoly_IsBgIdBgActor(bgId)) { #if DEBUG_FEATURES if (bgId == -1) { - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF(T("DynaPolyInfo_delReserve():削除されているはずの(?)\n" "インデックス(== -1)のため,処理を中止します。\n", "DynaPolyInfo_delReserve():The index that should have been deleted(?)\n" " was(== -1), processing aborted.\n")); - PRINTF(VT_RST); + PRINTF_RST(); } else { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("DynaPolyInfo_delReserve():" "確保していない/出来なかったインデックスの解放のため、処理を中止します。index == %d\n", "DynaPolyInfo_delReserve():" " Unable to deallocate index / index unallocated, processing aborted. index == %d\n"), bgId); - PRINTF(VT_RST); + PRINTF_RST(); } #endif @@ -2880,14 +2880,14 @@ void DynaPoly_AddBgActorToLookup(PlayState* play, DynaCollisionContext* dyna, s3 #if DEBUG_FEATURES if (!(dyna->polyListMax >= *polyStartIndex + pbgdata->numPolygons)) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("DynaPolyInfo_expandSRT():polygon over %dが%dを越えるとダメ\n", "DynaPolyInfo_expandSRT():polygon over do not use if %d exceeds %d\n"), *polyStartIndex + pbgdata->numPolygons, dyna->polyListMax); } if (!(dyna->vtxListMax >= *vtxStartIndex + pbgdata->numVertices)) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("DynaPolyInfo_expandSRT():vertex over %dが%dを越えるとダメ\n", "DynaPolyInfo_expandSRT():vertex over do not use if %d exceeds %d\n"), *vtxStartIndex + pbgdata->numVertices, dyna->vtxListMax); @@ -3067,9 +3067,9 @@ void DynaPoly_UpdateContext(PlayState* play, DynaCollisionContext* dyna) { for (i = 0; i < BG_ACTOR_MAX; i++) { if (dyna->bgActorFlags[i] & BGACTOR_1) { // Initialize BgActor - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF(T("DynaPolyInfo_setup():削除 index=%d\n", "DynaPolyInfo_setup(): Delete index=%d\n"), i); - PRINTF(VT_RST); + PRINTF_RST(); dyna->bgActorFlags[i] = 0; BgActor_Initialize(play, &dyna->bgActors[i]); @@ -3077,9 +3077,9 @@ void DynaPoly_UpdateContext(PlayState* play, DynaCollisionContext* dyna) { } if (dyna->bgActors[i].actor != NULL && dyna->bgActors[i].actor->update == NULL) { // Delete BgActor - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF(T("DynaPolyInfo_setup():削除 index=%d\n", "DynaPolyInfo_setup(): Delete index=%d\n"), i); - PRINTF(VT_RST); + PRINTF_RST(); actor = DynaPoly_GetActor(&play->colCtx, i); if (actor == NULL) { return; diff --git a/src/code/z_collision_check.c b/src/code/z_collision_check.c index 0567fd15a1..aa83c5e532 100644 --- a/src/code/z_collision_check.c +++ b/src/code/z_collision_check.c @@ -367,9 +367,9 @@ s32 Collider_SetJntSphToActor(PlayState* play, ColliderJntSph* dest, ColliderJnt if (dest->elements == NULL) { dest->count = 0; - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("ClObjJntSph_set():zelda_malloc()出来ません。\n", "ClObjJntSph_set():zelda_malloc() Can not.\n")); - PRINTF(VT_RST); + PRINTF_RST(); return false; } @@ -395,9 +395,9 @@ s32 Collider_SetJntSphAllocType1(PlayState* play, ColliderJntSph* dest, Actor* a if (dest->elements == NULL) { dest->count = 0; - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("ClObjJntSph_set3():zelda_malloc_出来ません。\n", "ClObjJntSph_set3():zelda_malloc_ Can not.\n")); - PRINTF(VT_RST); + PRINTF_RST(); return false; } @@ -423,9 +423,9 @@ s32 Collider_SetJntSphAlloc(PlayState* play, ColliderJntSph* dest, Actor* actor, if (dest->elements == NULL) { dest->count = 0; - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("ClObjJntSph_set5():zelda_malloc出来ません\n", "ClObjJntSph_set5():zelda_malloc Can not\n")); - PRINTF(VT_RST); + PRINTF_RST(); return false; } for (destElem = dest->elements, srcElem = src->elements; destElem < dest->elements + dest->count; @@ -729,9 +729,9 @@ s32 Collider_SetTrisAllocType1(PlayState* play, ColliderTris* dest, Actor* actor dest->elements = ZELDA_ARENA_MALLOC(dest->count * sizeof(ColliderTrisElement), "../z_collision_check.c", 2156); if (dest->elements == NULL) { dest->count = 0; - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("ClObjTris_set3():zelda_malloc()出来ません\n", "ClObjTris_set3():zelda_malloc() Can not\n")); - PRINTF(VT_RST); + PRINTF_RST(); return false; } for (destElem = dest->elements, srcElem = src->elements; destElem < dest->elements + dest->count; @@ -755,9 +755,9 @@ s32 Collider_SetTrisAlloc(PlayState* play, ColliderTris* dest, Actor* actor, Col dest->elements = ZELDA_ARENA_MALLOC(dest->count * sizeof(ColliderTrisElement), "../z_collision_check.c", 2207); if (dest->elements == NULL) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("ClObjTris_set5():zelda_malloc出来ません\n", "ClObjTris_set5():zelda_malloc Can not\n")); - PRINTF(VT_RST); + PRINTF_RST(); dest->count = 0; return false; } diff --git a/src/code/z_eff_shield_particle.c b/src/code/z_eff_shield_particle.c index c66934a4ff..74cd6a435a 100644 --- a/src/code/z_eff_shield_particle.c +++ b/src/code/z_eff_shield_particle.c @@ -18,10 +18,10 @@ void EffectShieldParticle_Init(void* thisx, void* initParamsx) { if ((this != NULL) && (initParams != NULL)) { this->numElements = initParams->numElements; if (this->numElements > ARRAY_COUNT(this->elements)) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("EffectShieldParticle_ct():パーティクル数がオーバしてます。\n", "EffectShieldParticle_ct(): Number of particles exceeded.\n")); - PRINTF(VT_RST); + PRINTF_RST(); return; } diff --git a/src/code/z_effect_soft_sprite.c b/src/code/z_effect_soft_sprite.c index 4041426b41..9a3df7eef3 100644 --- a/src/code/z_effect_soft_sprite.c +++ b/src/code/z_effect_soft_sprite.c @@ -197,7 +197,7 @@ void EffectSs_Spawn(PlayState* play, s32 type, s32 priority, void* initParams) { overlayEntry->loadedRamAddr = ZELDA_ARENA_MALLOC_R(overlaySize, "../z_effect_soft_sprite.c", 585); if (overlayEntry->loadedRamAddr == NULL) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("EffectSoftSprite2_makeEffect():zelda_malloc_r()により,%dbyteのメモリ確保ができま\n" "せん。そのため、プログラムのロードも\n" "出来ません。ただいま危険な状態です!\n" @@ -207,18 +207,18 @@ void EffectSs_Spawn(PlayState* play, s32 type, s32 priority, void* initParams) { "cannot be loaded. What a dangerous situation!\n" "Naturally, effects will not be produced either.\n"), overlaySize); - PRINTF(VT_RST); + PRINTF_RST(); return; } Overlay_Load(overlayEntry->file.vromStart, overlayEntry->file.vromEnd, overlayEntry->vramStart, overlayEntry->vramEnd, overlayEntry->loadedRamAddr); - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("EFFECT SS OVL:SegRom %08x %08x, Seg %08x %08x, RamStart %08x, type: %d\n", overlayEntry->file.vromStart, overlayEntry->file.vromEnd, overlayEntry->vramStart, overlayEntry->vramEnd, overlayEntry->loadedRamAddr, type); - PRINTF(VT_RST); + PRINTF_RST(); } profile = (void*)(uintptr_t)((overlayEntry->profile != NULL) @@ -246,14 +246,14 @@ void EffectSs_Spawn(PlayState* play, s32 type, s32 priority, void* initParams) { sEffectSsInfo.table[index].priority = priority; if (profile->init(play, index, &sEffectSsInfo.table[index], initParams) == 0) { - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF(T("EffectSoftSprite2_makeEffect():" "何らかの理由でコンストラクト失敗。コンストラクターがエラーを返しました。" "エフェクトの追加を中止します。\n", "EffectSoftSprite2_makeEffect(): " "Construction failed for some reason. The constructor returned an error. " "Ceasing effect addition.\n")); - PRINTF(VT_RST); + PRINTF_RST(); EffectSs_Reset(&sEffectSsInfo.table[index]); } } @@ -313,7 +313,7 @@ void EffectSs_DrawAll(PlayState* play) { if ((sEffectSsInfo.table[i].pos.x > 32000.0f) || (sEffectSsInfo.table[i].pos.x < -32000.0f) || (sEffectSsInfo.table[i].pos.y > 32000.0f) || (sEffectSsInfo.table[i].pos.y < -32000.0f) || (sEffectSsInfo.table[i].pos.z > 32000.0f) || (sEffectSsInfo.table[i].pos.z < -32000.0f)) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("EffectSoftSprite2_disp():位置が領域外のため " "削除します。エフェクトラベルNo.%d:プログラムの方で対応をお願いします。ここです ==> " "pos(%f, %f, %f)で、ラベルはz_effect_soft_sprite_dlftbls.declにあります。\n", @@ -322,10 +322,10 @@ void EffectSs_DrawAll(PlayState* play) { "pos(%f, %f, %f) and the label is in z_effect_soft_sprite_dlftbls.decl.\n"), sEffectSsInfo.table[i].type, sEffectSsInfo.table[i].pos.x, sEffectSsInfo.table[i].pos.y, sEffectSsInfo.table[i].pos.z); - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF(T("もし、posを別のことに使っている場合相談に応じます。\n", "If you are using pos for something else, consult me.\n")); - PRINTF(VT_RST); + PRINTF_RST(); EffectSs_Delete(&sEffectSsInfo.table[i]); } else { diff --git a/src/code/z_horse.c b/src/code/z_horse.c index 2935a66f89..f6f55c9d06 100644 --- a/src/code/z_horse.c +++ b/src/code/z_horse.c @@ -115,11 +115,11 @@ void Horse_SetupInGameplay(PlayState* play, Player* player) { horseActor->room = -1; } } else { - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); PRINTF( T("Horse_SetNormal():%d セットスポットまずいです。\n", "Horse_SetNormal():%d set spot is no good.\n"), gSaveContext.save.info.horseData.sceneId); - PRINTF(VT_RST); + PRINTF_RST(); Horse_ResetHorseData(play); } } else if ((play->sceneId == SCENE_LON_LON_RANCH) && @@ -291,11 +291,11 @@ void Horse_SetupInCutscene(PlayState* play, Player* player) { void Horse_InitPlayerHorse(PlayState* play, Player* player) { if (LINK_IS_ADULT) { if (!Horse_CanSpawn(gSaveContext.save.info.horseData.sceneId)) { - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); PRINTF( T("Horse_Set_Check():%d セットスポットまずいです。\n", "Horse_Set_Check():%d set spot is no good.\n"), gSaveContext.save.info.horseData.sceneId); - PRINTF(VT_RST); + PRINTF_RST(); Horse_ResetHorseData(play); } diff --git a/src/code/z_jpeg.c b/src/code/z_jpeg.c index 83ec5aafd6..86a97183aa 100644 --- a/src/code/z_jpeg.c +++ b/src/code/z_jpeg.c @@ -337,9 +337,9 @@ s32 Jpeg_Decode(void* data, void* zbuffer, void* work, u32 workSize) { x = y = 0; for (i = 0; i < 300; i += 4) { if (JpegDecoder_Decode(&decoder, (u16*)workBuff->data, 4, i != 0, &state)) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF("Error : Can't decode jpeg\n"); - PRINTF(VT_RST); + PRINTF_RST(); } else { Jpeg_ScheduleDecoderTask(&ctx); osInvalDCache(&workBuff->data, sizeof(workBuff->data[0])); diff --git a/src/code/z_kaleido_manager.c b/src/code/z_kaleido_manager.c index 761d1fb9ec..42ec59fd0a 100644 --- a/src/code/z_kaleido_manager.c +++ b/src/code/z_kaleido_manager.c @@ -19,11 +19,11 @@ void KaleidoManager_LoadOvl(KaleidoMgrOverlay* ovl) { ovl->loadedRamAddr = sKaleidoAreaPtr; Overlay_Load(ovl->file.vromStart, ovl->file.vromEnd, ovl->vramStart, ovl->vramEnd, ovl->loadedRamAddr); - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("OVL(k):Seg:%08x-%08x Ram:%08x-%08x Off:%08x %s\n", ovl->vramStart, ovl->vramEnd, ovl->loadedRamAddr, (uintptr_t)ovl->loadedRamAddr + (uintptr_t)ovl->vramEnd - (uintptr_t)ovl->vramStart, (uintptr_t)ovl->vramStart - (uintptr_t)ovl->loadedRamAddr, ovl->name); - PRINTF(VT_RST); + PRINTF_RST(); ovl->offset = (uintptr_t)ovl->loadedRamAddr - (uintptr_t)ovl->vramStart; gKaleidoMgrCurOvl = ovl; @@ -50,17 +50,17 @@ void KaleidoManager_Init(PlayState* play) { } } - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF(T("KaleidoArea の最大サイズは %d バイトを確保します\n", "The maximum size of KaleidoArea is %d bytes\n"), largestSize); - PRINTF(VT_RST); + PRINTF_RST(); sKaleidoAreaPtr = GAME_STATE_ALLOC(&play->state, largestSize, "../z_kaleido_manager.c", 150); LOG_UTILS_CHECK_NULL_POINTER("KaleidoArea_allocp", sKaleidoAreaPtr, "../z_kaleido_manager.c", 151); - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("KaleidoArea %08x - %08x\n", sKaleidoAreaPtr, (uintptr_t)sKaleidoAreaPtr + largestSize); - PRINTF(VT_RST); + PRINTF_RST(); gKaleidoMgrCurOvl = NULL; } diff --git a/src/code/z_kaleido_scope_call.c b/src/code/z_kaleido_scope_call.c index 69d2b2d9ba..5dd08566dd 100644 --- a/src/code/z_kaleido_scope_call.c +++ b/src/code/z_kaleido_scope_call.c @@ -18,16 +18,16 @@ void KaleidoScopeCall_LoadPlayer(void) { if (gKaleidoMgrCurOvl != playerActorOvl) { if (gKaleidoMgrCurOvl != NULL) { - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF(T("カレイド領域 強制排除\n", "Kaleido area forced exclusion\n")); - PRINTF(VT_RST); + PRINTF_RST(); KaleidoManager_ClearOvl(gKaleidoMgrCurOvl); } - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF(T("プレイヤーアクター搬入\n", "Player actor import\n")); - PRINTF(VT_RST); + PRINTF_RST(); KaleidoManager_LoadOvl(playerActorOvl); } @@ -90,16 +90,16 @@ void KaleidoScopeCall_Update(PlayState* play) { } else if (pauseCtx->state != PAUSE_STATE_OFF) { if (gKaleidoMgrCurOvl != kaleidoScopeOvl) { if (gKaleidoMgrCurOvl != NULL) { - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF(T("カレイド領域 プレイヤー 強制排除\n", "Kaleido area Player Forced Elimination\n")); - PRINTF(VT_RST); + PRINTF_RST(); KaleidoManager_ClearOvl(gKaleidoMgrCurOvl); } - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF(T("カレイド領域 カレイドスコープ搬入\n", "Kaleido area Kaleidoscope loading\n")); - PRINTF(VT_RST); + PRINTF_RST(); KaleidoManager_LoadOvl(kaleidoScopeOvl); } @@ -108,9 +108,9 @@ void KaleidoScopeCall_Update(PlayState* play) { sKaleidoScopeUpdateFunc(play); if (!IS_PAUSED(&play->pauseCtx)) { - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF(T("カレイド領域 カレイドスコープ排出\n", "Kaleido area Kaleidoscope Emission\n")); - PRINTF(VT_RST); + PRINTF_RST(); KaleidoManager_ClearOvl(kaleidoScopeOvl); KaleidoScopeCall_LoadPlayer(); diff --git a/src/code/z_map_exp.c b/src/code/z_map_exp.c index 52e88c1f6f..c658775da3 100644 --- a/src/code/z_map_exp.c +++ b/src/code/z_map_exp.c @@ -30,12 +30,12 @@ void Map_SetPaletteData(PlayState* play, s16 room) { interfaceCtx->mapPaletteIndex = paletteIndex; } - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF(T("PALETEセット 【 i=%x : room=%x 】Room_Inf[%d][4]=%x ( map_palete_no = %d )\n", "PALETE Set 【 i=%x : room=%x 】Room_Inf[%d][4]=%x ( map_palete_no = %d )\n"), paletteIndex, room, mapIndex, gSaveContext.save.info.sceneFlags[mapIndex].rooms, interfaceCtx->mapPaletteIndex); - PRINTF(VT_RST); + PRINTF_RST(); interfaceCtx->mapPalette[paletteIndex * 2] = 2; interfaceCtx->mapPalette[paletteIndex * 2 + 1] = 0xBF; @@ -130,9 +130,9 @@ void Map_InitData(PlayState* play, s16 room) { extendedMapIndex = 0x17; } } - PRINTF(VT_FGCOL(BLUE)); + PRINTF_COLOR_BLUE(); PRINTF("KKK=%d\n", extendedMapIndex); - PRINTF(VT_RST); + PRINTF_RST(); sEntranceIconMapIndex = extendedMapIndex; DMA_REQUEST_SYNC(interfaceCtx->mapSegment, (uintptr_t)_map_grand_staticSegmentRomStart + @@ -158,11 +158,11 @@ void Map_InitData(PlayState* play, s16 room) { case SCENE_WATER_TEMPLE_BOSS: case SCENE_SPIRIT_TEMPLE_BOSS: case SCENE_SHADOW_TEMPLE_BOSS: - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF(T("デクの樹ダンジョンMAP テクスチャDMA(%x) scene_id_offset=%d VREG(30)=%d\n", "Deku Tree Dungeon MAP Texture DMA(%x) scene_id_offset=%d VREG(30)=%d\n"), room, mapIndex, VREG(30)); - PRINTF(VT_RST); + PRINTF_RST(); #if PLATFORM_N64 if ((B_80121220 != NULL) && (B_80121220->unk_28 != NULL) && B_80121220->unk_28(play)) { @@ -219,9 +219,9 @@ void Map_InitRoomData(PlayState* play, s16 room) { interfaceCtx->mapRoomNum = room; interfaceCtx->unk_25A = mapIndex; Map_SetPaletteData(play, room); - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF(T("部屋部屋=%d\n", "Room Room = %d\n"), room); - PRINTF(VT_RST); + PRINTF_RST(); Map_InitData(play, room); break; } @@ -600,9 +600,9 @@ void Map_Update(PlayState* play) { if ((interfaceCtx->mapRoomNum == gMapData->switchFromRoom[mapIndex][i]) && (floor == gMapData->switchFromFloor[mapIndex][i])) { interfaceCtx->mapRoomNum = gMapData->switchToRoom[mapIndex][i]; - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF(T("階層切替=%x\n", "Layer switching = %x\n"), interfaceCtx->mapRoomNum); - PRINTF(VT_RST); + PRINTF_RST(); Map_InitData(play, interfaceCtx->mapRoomNum); gSaveContext.sunsSongState = SUNSSONG_INACTIVE; Map_SavePlayerInitialInfo(play); diff --git a/src/code/z_message.c b/src/code/z_message.c index e17b5f3aad..bfef10aa58 100644 --- a/src/code/z_message.c +++ b/src/code/z_message.c @@ -2515,9 +2515,9 @@ void Message_OpenText(PlayState* play, u16 textId) { msgCtx->textId = textId; if (textId == 0x2030) { // Talking to Ingo as adult in Lon Lon Ranch for the first time before freeing Epona - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF("???????????????? z_message.c ??????????????????\n"); - PRINTF(VT_RST); + PRINTF_RST(); gSaveContext.eventInf[0] = gSaveContext.eventInf[1] = gSaveContext.eventInf[2] = gSaveContext.eventInf[3] = 0; } @@ -2657,9 +2657,9 @@ void Message_OpenText(PlayState* play, u16 textId) { void Message_StartTextbox(PlayState* play, u16 textId, Actor* actor) { MessageContext* msgCtx = &play->msgCtx; - PRINTF(VT_FGCOL(BLUE)); + PRINTF_COLOR_BLUE(); PRINTF(T("めっせーじ=%x(%d)\n", "Message=%x(%d)\n"), textId, actor); - PRINTF(VT_RST); + PRINTF_RST(); msgCtx->ocarinaAction = 0xFFFF; Message_OpenText(play, textId); @@ -2677,9 +2677,9 @@ void Message_ContinueTextbox(PlayState* play, u16 textId) { s32 pad2[3]; #endif - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF(T("めっせーじ=%x message->msg_data\n", "Message=%x message->msg_data\n"), textId, msgCtx->msgLength); - PRINTF(VT_RST); + PRINTF_RST(); msgCtx->msgLength = 0; Message_OpenText(play, textId); @@ -2719,7 +2719,7 @@ void Message_StartOcarinaImpl(PlayState* play, u16 ocarinaActionId) { s16 noStopDoAction; s32 k; - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); for (i = sOcarinaSongBitFlags = 0; i <= (QUEST_SONG_STORMS - QUEST_SONG_MINUET); i++) { if (CHECK_QUEST_ITEM(QUEST_SONG_MINUET + i)) { @@ -2731,7 +2731,7 @@ void Message_StartOcarinaImpl(PlayState* play, u16 ocarinaActionId) { sOcarinaSongBitFlags |= (1 << OCARINA_SONG_SCARECROW_SPAWN); } PRINTF("ocarina_bit = %x\n", sOcarinaSongBitFlags); - PRINTF(VT_RST); + PRINTF_RST(); sHasSunsSong = CHECK_QUEST_ITEM(QUEST_SONG_SUN); msgCtx->ocarinaStaff = AudioOcarina_GetRecordingStaff(); @@ -3352,11 +3352,11 @@ void Message_DrawMain(PlayState* play, Gfx** p) { msgCtx->stateTimer--; if (msgCtx->stateTimer == 0) { AudioOcarina_SetInstrument(OCARINA_INSTRUMENT_OFF); - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("Na_StopOcarinaMode();\n"); PRINTF("Na_StopOcarinaMode();\n"); PRINTF("Na_StopOcarinaMode();\n"); - PRINTF(VT_RST); + PRINTF_RST(); Message_Decode(play); msgCtx->msgMode = MSGMODE_SETUP_DISPLAY_SONG_PLAYED; msgCtx->ocarinaStaff = AudioOcarina_GetPlayingStaff(); @@ -3456,7 +3456,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) { if (msgCtx->lastPlayedSong == OCARINA_SONG_EPONAS) { R_EPONAS_SONG_PLAYED = true; } - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF("☆☆☆ocarina=%d message->ocarina_no=%d ", msgCtx->lastPlayedSong, msgCtx->ocarinaAction); if (msgCtx->ocarinaAction == OCARINA_ACTION_FREE_PLAY_DONE) { @@ -3465,7 +3465,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) { play->msgCtx.ocarinaMode = OCARINA_MODE_0B; } } else if (msgCtx->ocarinaAction >= OCARINA_ACTION_CHECK_MINUET) { - PRINTF(VT_FGCOL(YELLOW)); + 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)) { @@ -3474,7 +3474,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) { play->msgCtx.ocarinaMode = msgCtx->lastPlayedSong - 1; } } else { - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("Ocarina_C_Wind=%d(%d) ☆☆☆ ", OCARINA_ACTION_PLAYBACK_MINUET, msgCtx->ocarinaAction - OCARINA_ACTION_PLAYBACK_MINUET); if (msgCtx->lastPlayedSong == (msgCtx->ocarinaAction - OCARINA_ACTION_PLAYBACK_MINUET)) { @@ -3483,7 +3483,7 @@ void Message_DrawMain(PlayState* play, Gfx** p) { play->msgCtx.ocarinaMode = OCARINA_MODE_04; } } - PRINTF(VT_RST); + PRINTF_RST(); PRINTF("→ OCARINA_MODE=%d\n", play->msgCtx.ocarinaMode); } } @@ -3529,10 +3529,10 @@ void Message_DrawMain(PlayState* play, Gfx** p) { msgCtx->lastPlayedSong = msgCtx->ocarinaStaff->state; msgCtx->msgMode = MSGMODE_SONG_PLAYBACK_SUCCESS; Item_Give(play, ITEM_SONG_MINUET + gOcarinaSongItemMap[msgCtx->ocarinaStaff->state]); - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF(T("z_message.c 取得メロディ=%d\n", "z_message.c Song Acquired = %d\n"), ITEM_SONG_MINUET + msgCtx->ocarinaStaff->state); - PRINTF(VT_RST); + PRINTF_RST(); msgCtx->stateTimer = 20; Audio_PlaySfxGeneral(NA_SE_SY_TRE_BOX_APPEAR, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); @@ -3600,14 +3600,14 @@ void Message_DrawMain(PlayState* play, Gfx** p) { Message_CloseTextbox(play); PRINTF( T("録音終了!!!!!!!!!録音終了\n", "Recording complete!!!!!!!!! Recording Complete\n")); - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF("\n====================================================================\n"); MemCpy(gSaveContext.save.info.scarecrowLongSong, gScarecrowLongSongPtr, sizeof(gSaveContext.save.info.scarecrowLongSong)); for (i = 0; i < ARRAY_COUNT(gSaveContext.save.info.scarecrowLongSong); i++) { PRINTF("%d, ", gSaveContext.save.info.scarecrowLongSong[i]); } - PRINTF(VT_RST); + PRINTF_RST(); PRINTF("\n====================================================================\n"); } DRAW_TEXT(play, &gfx, false); @@ -3665,14 +3665,14 @@ void Message_DrawMain(PlayState* play, Gfx** p) { msgCtx->msgMode = MSGMODE_SCARECROW_SPAWN_RECORDING_DONE; Audio_PlaySfxGeneral(NA_SE_SY_TRE_BOX_APPEAR, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF("\n====================================================================\n"); MemCpy(gSaveContext.save.info.scarecrowSpawnSong, gScarecrowSpawnSongPtr, sizeof(gSaveContext.save.info.scarecrowSpawnSong)); for (i = 0; i < ARRAY_COUNT(gSaveContext.save.info.scarecrowSpawnSong); i++) { PRINTF("%d, ", gSaveContext.save.info.scarecrowSpawnSong[i]); } - PRINTF(VT_RST); + PRINTF_RST(); PRINTF("\n====================================================================\n"); } else if (msgCtx->ocarinaStaff->state == OCARINA_RECORD_REJECTED || CHECK_BTN_ALL(play->state.input[0].press.button, BTN_B)) { @@ -4289,7 +4289,7 @@ void Message_Update(PlayState* play) { gSaveContext.prevHudVisibilityMode = HUD_VISIBILITY_ALL; } if (play->csCtx.state == 0) { - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("day_time=%x active_camera=%d ", gSaveContext.save.cutsceneIndex, play->activeCamId); if (msgCtx->textId != 0x2061 && msgCtx->textId != 0x2025 && msgCtx->textId != 0x208C && @@ -4307,7 +4307,7 @@ void Message_Update(PlayState* play) { } } } - PRINTF(VT_RST); + PRINTF_RST(); msgCtx->msgLength = 0; msgCtx->msgMode = MSGMODE_NONE; interfaceCtx->unk_1FA = interfaceCtx->unk_1FC = 0; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 7987cccd1c..7bd399d1e8 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1135,7 +1135,7 @@ void Interface_SetSceneRestrictions(PlayState* play) { interfaceCtx->restrictions.dinsNayrus = (sRestrictionFlags[i].flags3 & 0x0C) >> 2; interfaceCtx->restrictions.all = (sRestrictionFlags[i].flags3 & 0x03) >> 0; - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF("parameter->button_status = %x,%x,%x\n", sRestrictionFlags[i].flags1, sRestrictionFlags[i].flags2, sRestrictionFlags[i].flags3); PRINTF("h_gage=%d, b_button=%d, a_button=%d, c_bottle=%d\n", interfaceCtx->restrictions.hGauge, @@ -1147,7 +1147,7 @@ void Interface_SetSceneRestrictions(PlayState* play) { PRINTF("c_sunmoon=%d, m_wind=%d, m_magic=%d, another=%d\n", interfaceCtx->restrictions.sunsSong, interfaceCtx->restrictions.farores, interfaceCtx->restrictions.dinsNayrus, interfaceCtx->restrictions.all); - PRINTF(VT_RST); + PRINTF_RST(); return; } i++; @@ -1376,16 +1376,16 @@ u8 Item_Give(PlayState* play, u8 item) { slot = SLOT(sExtraItemBases[item - ITEM_DEKU_STICKS_5]); } - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF("item_get_setting=%d pt=%d z=%x\n", item, slot, gSaveContext.save.info.inventory.items[slot]); - PRINTF(VT_RST); + PRINTF_RST(); if ((item >= ITEM_MEDALLION_FOREST) && (item <= ITEM_MEDALLION_LIGHT)) { gSaveContext.save.info.inventory.questItems |= gBitFlags[item - ITEM_MEDALLION_FOREST + QUEST_MEDALLION_FOREST]; - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF(T("封印 = %x\n", "Seals = %x\n"), gSaveContext.save.info.inventory.questItems); - PRINTF(VT_RST); + PRINTF_RST(); if (item == ITEM_MEDALLION_WATER) { Horse_FixLakeHyliaPosition(play); @@ -1395,38 +1395,38 @@ u8 Item_Give(PlayState* play, u8 item) { } else if ((item >= ITEM_SONG_MINUET) && (item <= ITEM_SONG_STORMS)) { gSaveContext.save.info.inventory.questItems |= gBitFlags[item - ITEM_SONG_MINUET + QUEST_SONG_MINUET]; - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF(T("楽譜 = %x\n", "Musical scores = %x\n"), gSaveContext.save.info.inventory.questItems); PRINTF(T("楽譜 = %x (%x) (%x)\n", "Musical scores = %x (%x) (%x)\n"), gSaveContext.save.info.inventory.questItems, gBitFlags[item - ITEM_SONG_MINUET + QUEST_SONG_MINUET], gBitFlags[item - ITEM_SONG_MINUET]); - PRINTF(VT_RST); + PRINTF_RST(); return ITEM_NONE; } else if ((item >= ITEM_KOKIRI_EMERALD) && (item <= ITEM_ZORA_SAPPHIRE)) { gSaveContext.save.info.inventory.questItems |= gBitFlags[item - ITEM_KOKIRI_EMERALD + QUEST_KOKIRI_EMERALD]; - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF(T("精霊石 = %x\n", "Spiritual Stones = %x\n"), gSaveContext.save.info.inventory.questItems); - PRINTF(VT_RST); + PRINTF_RST(); return ITEM_NONE; } else if ((item == ITEM_STONE_OF_AGONY) || (item == ITEM_GERUDOS_CARD)) { gSaveContext.save.info.inventory.questItems |= gBitFlags[item - ITEM_STONE_OF_AGONY + QUEST_STONE_OF_AGONY]; - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF(T("アイテム = %x\n", "Items = %x\n"), gSaveContext.save.info.inventory.questItems); - PRINTF(VT_RST); + PRINTF_RST(); return ITEM_NONE; } else if (item == ITEM_SKULL_TOKEN) { gSaveContext.save.info.inventory.questItems |= gBitFlags[item - ITEM_SKULL_TOKEN + QUEST_SKULL_TOKEN]; gSaveContext.save.info.inventory.gsTokens++; - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF(T("Nコイン = %x(%d)\n", "N Coins = %x(%d)\n"), gSaveContext.save.info.inventory.questItems, gSaveContext.save.info.inventory.gsTokens); - PRINTF(VT_RST); + PRINTF_RST(); return ITEM_NONE; } else if ((item >= ITEM_SWORD_KOKIRI) && (item <= ITEM_SWORD_BIGGORON)) { @@ -1869,9 +1869,9 @@ u8 Item_CheckObtainability(u8 item) { slot = SLOT(sExtraItemBases[item - ITEM_DEKU_STICKS_5]); } - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("item_get_non_setting=%d pt=%d z=%x\n", item, slot, gSaveContext.save.info.inventory.items[slot]); - PRINTF(VT_RST); + PRINTF_RST(); if ((item >= ITEM_MEDALLION_FOREST) && (item <= ITEM_MEDALLION_LIGHT)) { return ITEM_NONE; @@ -4277,13 +4277,13 @@ void Interface_Update(PlayState* play) { if (gSaveContext.save.info.playerData.isMagicAcquired && (gSaveContext.save.info.playerData.magicLevel == 0)) { gSaveContext.save.info.playerData.magicLevel = gSaveContext.save.info.playerData.isDoubleMagicAcquired + 1; gSaveContext.magicState = MAGIC_STATE_STEP_CAPACITY; - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF(T("魔法スター─────ト!!!!!!!!!\n", "Magic Start!!!!!!!!!\n")); PRINTF("MAGIC_MAX=%d\n", gSaveContext.save.info.playerData.magicLevel); PRINTF("MAGIC_NOW=%d\n", gSaveContext.save.info.playerData.magic); PRINTF("Z_MAGIC_NOW_NOW=%d\n", gSaveContext.magicFillTarget); PRINTF("Z_MAGIC_NOW_MAX=%d\n", gSaveContext.magicCapacity); - PRINTF(VT_RST); + PRINTF_RST(); } Magic_Update(play); diff --git a/src/code/z_room.c b/src/code/z_room.c index 2612e2450c..0c5d37f551 100644 --- a/src/code/z_room.c +++ b/src/code/z_room.c @@ -611,14 +611,14 @@ u32 Room_SetupFirstRoom(PlayState* play, RoomContext* roomCtx) { } } - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF(T("部屋バッファサイズ=%08x(%5.1fK)\n", "Room buffer size=%08x(%5.1fK)\n"), roomBufferSize, roomBufferSize / 1024.0f); roomCtx->bufPtrs[0] = GAME_STATE_ALLOC(&play->state, roomBufferSize, "../z_room.c", 946); PRINTF(T("部屋バッファ開始ポインタ=%08x\n", "Room buffer initial pointer=%08x\n"), roomCtx->bufPtrs[0]); roomCtx->bufPtrs[1] = (void*)((uintptr_t)roomCtx->bufPtrs[0] + roomBufferSize); PRINTF(T("部屋バッファ終了ポインタ=%08x\n", "Room buffer end pointer=%08x\n"), roomCtx->bufPtrs[1]); - PRINTF(VT_RST); + PRINTF_RST(); roomCtx->activeBufPage = 0; roomCtx->status = 0; diff --git a/src/code/z_scene.c b/src/code/z_scene.c index 22d99dda9d..e285587d90 100644 --- a/src/code/z_scene.c +++ b/src/code/z_scene.c @@ -87,9 +87,9 @@ void Object_InitContext(PlayState* play, ObjectContext* objectCtx) { objectCtx->slots[i].id = OBJECT_INVALID; } - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF(T("オブジェクト入れ替えバンク情報 %8.3fKB\n", "Object exchange bank data %8.3fKB\n"), spaceSize / 1024.0f); - PRINTF(VT_RST); + PRINTF_RST(); objectCtx->spaceStart = objectCtx->slots[0].segment = GAME_STATE_ALLOC(&play->state, spaceSize, "../z_scene.c", 219); @@ -195,9 +195,9 @@ s32 Scene_ExecuteCommands(PlayState* play, SceneCmd* sceneCmd) { if (cmdCode < ARRAY_COUNT(sSceneCmdHandlers)) { sSceneCmdHandlers[cmdCode](play, sceneCmd); } else { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("code の値が異常です\n", "code variable is abnormal\n")); - PRINTF(VT_RST); + PRINTF_RST(); } sceneCmd++; diff --git a/src/code/z_skelanime.c b/src/code/z_skelanime.c index d219815102..49502f4ec9 100644 --- a/src/code/z_skelanime.c +++ b/src/code/z_skelanime.c @@ -71,9 +71,9 @@ void SkelAnime_DrawLod(PlayState* play, void** skeleton, Vec3s* jointTable, Over Vec3s rot; if (skeleton == NULL) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("Si2_Lod_draw():skelがNULLです。\n", "Si2_Lod_draw(): skel is NULL.\n")); - PRINTF(VT_RST); + PRINTF_RST(); return; } @@ -184,9 +184,9 @@ void SkelAnime_DrawFlexLod(PlayState* play, void** skeleton, Vec3s* jointTable, Mtx* mtx = GRAPH_ALLOC(play->state.gfxCtx, dListCount * sizeof(Mtx)); if (skeleton == NULL) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("Si2_Lod_draw_SV():skelがNULLです。\n", "Si2_Lod_draw_SV(): skel is NULL.\n")); - PRINTF(VT_RST); + PRINTF_RST(); return; } @@ -287,9 +287,9 @@ void SkelAnime_DrawOpa(PlayState* play, void** skeleton, Vec3s* jointTable, Over Vec3s rot; if (skeleton == NULL) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("Si2_draw():skelがNULLです。\n", "Si2_draw(): skel is NULL.\n")); - PRINTF(VT_RST); + PRINTF_RST(); return; } @@ -400,9 +400,9 @@ void SkelAnime_DrawFlexOpa(PlayState* play, void** skeleton, Vec3s* jointTable, Mtx* mtx = GRAPH_ALLOC(play->state.gfxCtx, dListCount * sizeof(Mtx)); if (skeleton == NULL) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("Si2_draw_SV():skelがNULLです。\n", "Si2_draw_SV(): skel is NULL.\n")); - PRINTF(VT_RST); + PRINTF_RST(); return; } @@ -553,9 +553,9 @@ Gfx* SkelAnime_Draw(PlayState* play, void** skeleton, Vec3s* jointTable, Overrid Vec3s rot; if (skeleton == NULL) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("Si2_draw2():skelがNULLです。NULLを返します。\n", "Si2_draw2(): skel is NULL. Returns NULL.\n")); - PRINTF(VT_RST); + PRINTF_RST(); return NULL; } @@ -661,9 +661,9 @@ Gfx* SkelAnime_DrawFlex(PlayState* play, void** skeleton, Vec3s* jointTable, s32 Mtx* mtx = GRAPH_ALLOC(play->state.gfxCtx, dListCount * sizeof(*mtx)); if (skeleton == NULL) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("Si2_draw2_SV():skelがNULLです。NULLを返します。\n", "Si2_draw2_SV(): skel is NULL. Returns NULL.\n")); - PRINTF(VT_RST); + PRINTF_RST(); return NULL; } @@ -1129,10 +1129,10 @@ void SkelAnime_InitLink(PlayState* play, SkelAnime* skelAnime, FlexSkeletonHeade } if ((skelAnime->jointTable == NULL) || (skelAnime->morphTable == NULL)) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("Skeleton_Info_Rom_SV_ct メモリアロケーションエラー\n", "Skeleton_Info_Rom_SV_ct Memory allocation error\n")); - PRINTF(VT_RST); + PRINTF_RST(); } LinkAnimation_Change(play, skelAnime, animation, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f); @@ -1443,9 +1443,9 @@ BAD_RETURN(s32) SkelAnime_Init(PlayState* play, SkelAnime* skelAnime, SkeletonHe skelAnime->morphTable = morphTable; } if ((skelAnime->jointTable == NULL) || (skelAnime->morphTable == NULL)) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("Skeleton_Info2_ct メモリアロケーションエラー\n", "Skeleton_Info2_ct Memory allocation error\n")); - PRINTF(VT_RST); + PRINTF_RST(); } if (animation != NULL) { @@ -1476,10 +1476,10 @@ BAD_RETURN(s32) SkelAnime_InitFlex(PlayState* play, SkelAnime* skelAnime, FlexSk skelAnime->morphTable = morphTable; } if ((skelAnime->jointTable == NULL) || (skelAnime->morphTable == NULL)) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("Skeleton_Info_Rom_SV_ct メモリアロケーションエラー\n", "Skeleton_Info_Rom_SV_ct Memory allocation error\n")); - PRINTF(VT_RST); + PRINTF_RST(); } if (animation != NULL) { @@ -1501,10 +1501,10 @@ BAD_RETURN(s32) SkelAnime_InitSkin(PlayState* play, SkelAnime* skelAnime, Skelet skelAnime->morphTable = ZELDA_ARENA_MALLOC(skelAnime->limbCount * sizeof(*skelAnime->morphTable), "../z_skelanime.c", 3121); if ((skelAnime->jointTable == NULL) || (skelAnime->morphTable == NULL)) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("Skeleton_Info2_skin2_ct メモリアロケーションエラー\n", "Skeleton_Info2_skin2_ct Memory allocation error\n")); - PRINTF(VT_RST); + PRINTF_RST(); } if (animation != NULL) { diff --git a/src/code/z_skin_matrix.c b/src/code/z_skin_matrix.c index e5d0dfe99b..689fe67107 100644 --- a/src/code/z_skin_matrix.c +++ b/src/code/z_skin_matrix.c @@ -252,10 +252,10 @@ s32 SkinMatrix_Invert(MtxF* src, MtxF* dest) { // Reaching row = 4 means the column is either all 0 or a duplicate column. // Therefore src is a singular matrix (0 determinant). - PRINTF(VT_COL(YELLOW, BLACK)); + PRINTF_COLOR_WARNING(); PRINTF(T("Skin_Matrix_InverseMatrix():逆行列つくれません\n", "Skin_Matrix_InverseMatrix(): Cannot create inverse matrix\n")); - PRINTF(VT_RST); + PRINTF_RST(); return 2; } diff --git a/src/code/z_sram.c b/src/code/z_sram.c index cd3a2f13e6..22d9cc07c8 100644 --- a/src/code/z_sram.c +++ b/src/code/z_sram.c @@ -392,7 +392,7 @@ void Sram_OpenSave(SramContext* sramCtx) { MemCpy(&gSaveContext, sramCtx->readBuff + i, sizeof(Save)); - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF("SCENE_DATA_ID = %d SceneNo = %d\n", gSaveContext.save.info.playerData.savedSceneId, ((void)0, gSaveContext.save.entranceIndex)); @@ -465,14 +465,14 @@ void Sram_OpenSave(SramContext* sramCtx) { } PRINTF("scene_no = %d\n", gSaveContext.save.entranceIndex); - PRINTF(VT_RST); + PRINTF_RST(); if (gSaveContext.save.info.playerData.health < 0x30) { gSaveContext.save.info.playerData.health = 0x30; } if (gSaveContext.save.info.scarecrowLongSongSet) { - PRINTF(VT_FGCOL(BLUE)); + PRINTF_COLOR_BLUE(); PRINTF("\n====================================================================\n"); MemCpy(gScarecrowLongSongPtr, gSaveContext.save.info.scarecrowLongSong, @@ -484,11 +484,11 @@ void Sram_OpenSave(SramContext* sramCtx) { } PRINTF("\n====================================================================\n"); - PRINTF(VT_RST); + PRINTF_RST(); } if (gSaveContext.save.info.scarecrowSpawnSongSet) { - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("\n====================================================================\n"); MemCpy(gScarecrowSpawnSongPtr, gSaveContext.save.info.scarecrowSpawnSong, @@ -500,7 +500,7 @@ void Sram_OpenSave(SramContext* sramCtx) { } PRINTF("\n====================================================================\n"); - PRINTF(VT_RST); + PRINTF_RST(); } // if zelda cutscene has been watched but lullaby was not obtained, restore cutscene and take away letter @@ -993,11 +993,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(VT_FGCOL(BLUE)); + 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(VT_RST); + PRINTF_RST(); func_800F6700(gSaveContext.audioSetting); } diff --git a/src/code/z_view.c b/src/code/z_view.c index 37e8ac9b00..5b68f00bf4 100644 --- a/src/code/z_view.c +++ b/src/code/z_view.c @@ -647,11 +647,11 @@ s32 View_ErrorCheckEyePosition(f32 eyeX, f32 eyeY, f32 eyeZ) { } if (error != 0) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF(T("eye が大きすぎます eye=[%8.3f %8.3f %8.3f] error=%d\n", "eye is too large eye=[%8.3f %8.3f %8.3f] error=%d\n"), eyeX, eyeY, eyeZ, error); - PRINTF(VT_RST); + PRINTF_RST(); } return error; diff --git a/src/code/z_vr_box.c b/src/code/z_vr_box.c index d2aac8c1f3..2e7953362b 100644 --- a/src/code/z_vr_box.c +++ b/src/code/z_vr_box.c @@ -1030,7 +1030,7 @@ void Skybox_Init(GameState* state, SkyboxContext* skyboxCtx, s16 skyboxId) { // Precompute vertices and display lists for drawing the skybox if (skyboxId != SKYBOX_NONE) { - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); if (skyboxCtx->drawType != SKYBOX_DRAW_128) { skyboxCtx->dListBuf = GAME_STATE_ALLOC(state, 8 * 150 * sizeof(Gfx), "../z_vr_box.c", 1636); @@ -1056,6 +1056,6 @@ void Skybox_Init(GameState* state, SkyboxContext* skyboxCtx, s16 skyboxId) { Skybox_Calculate128(skyboxCtx, 5); // compute 5 faces, excludes the bottom face } } - PRINTF(VT_RST); + PRINTF_RST(); } } diff --git a/src/libu64/stackcheck.c b/src/libu64/stackcheck.c index a8b32ffcee..787eb1c3e5 100644 --- a/src/libu64/stackcheck.c +++ b/src/libu64/stackcheck.c @@ -158,12 +158,12 @@ u32 StackCheck_GetState(StackEntry* entry) { if (free == 0) { ret = STACK_STATUS_OVERFLOW; - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); } else if (free < (u32)entry->minSpace && entry->minSpace != -1) { ret = STACK_STATUS_WARNING; - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); } else { - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); ret = STACK_STATUS_OK; } @@ -174,7 +174,7 @@ u32 StackCheck_GetState(StackEntry* entry) { PRINTF("head=%08x tail=%08x last=%08x used=%08x free=%08x [%s]\n", entry->head, entry->tail, last, used, free, entry->name != NULL ? entry->name : "(null)"); - PRINTF(VT_RST); + PRINTF_RST(); #if DEBUG_FEATURES if (ret != STACK_STATUS_OK) { 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 51450109de..5db5debc6a 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 @@ -89,9 +89,9 @@ void BgGanonOtyuka_Destroy(Actor* thisx, PlayState* play2) { DynaPoly_DeleteBgActor(play, &play->colCtx.dyna, this->dyna.bgId); - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("WHY !!!!!!!!!!!!!!!!\n"); - PRINTF(VT_RST); + PRINTF_RST(); } void BgGanonOtyuka_WaitToFall(BgGanonOtyuka* this, PlayState* play) { 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 691e2adbe2..c94ee924b1 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 @@ -92,12 +92,12 @@ void BgJyaBombiwa_Init(Actor* thisx, PlayState* play) { BgJyaBombiwa* this = (BgJyaBombiwa*)thisx; if (PARAMS_GET_U(this->dyna.actor.params, 0, 6) != 0x29) { - PRINTF(VT_COL(YELLOW, BLACK)); + PRINTF_COLOR_WARNING(); // "Warning: Switch Number changed (%s %d)(SW %d)" PRINTF("Warning : Switch Number が変更された(%s %d)(SW %d)\n", "../z_bg_jya_bombiwa.c", 218, PARAMS_GET_U(this->dyna.actor.params, 0, 6)); - PRINTF(VT_RST); + PRINTF_RST(); } BgJyaBombiwa_SetupDynaPoly(this, play, &gBombiwaCol, 0); BgJyaBombiwa_InitCollider(this, play); 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 3b418afec1..c32bd92896 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 @@ -140,10 +140,10 @@ void BgJyaCobra_SpawnRay(BgJyaCobra* this, PlayState* play) { #if DEBUG_FEATURES if (this->dyna.actor.child == NULL) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); // "Error : Mir Ray occurrence failure" PRINTF("Error : Mir Ray 発生失敗 (%s %d)\n", "../z_bg_jya_cobra.c", 270); - PRINTF(VT_RST); + PRINTF_RST(); } #endif } 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 66875ae85b..bbdc93c2f8 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 @@ -125,10 +125,10 @@ void BgJyaZurerukabe_Init(Actor* thisx, PlayState* play) { } if (i == ARRAY_COUNT(D_8089B9F0)) { - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); PRINTF("home pos が変更されたみたい(%s %d)(arg_data 0x%04x)\n", "../z_bg_jya_zurerukabe.c", 299, this->dyna.actor.params); - PRINTF(VT_RST); + PRINTF_RST(); } this->unk_16E = D_8089B9F8[this->unk_168]; 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 95aecef7ff..566d4342b5 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 @@ -155,9 +155,9 @@ void BgSpot18Basket_Init(Actor* thisx, PlayState* play) { this->dyna.actor.shape.rot.y + 0x1555, this->dyna.actor.shape.rot.z, -1); if (this->dyna.actor.child == NULL) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF("Error : 変化壷蓋発生失敗(%s %d)\n", "../z_bg_spot18_basket.c", 351); - PRINTF(VT_RST); + PRINTF_RST(); Actor_Kill(&this->dyna.actor); } } 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 9b9fd17c75..bf270508c4 100644 --- a/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2.c +++ b/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2.c @@ -877,10 +877,10 @@ void BossFd2_CollisionCheck(BossFd2* this, PlayState* play) { } if (((s8)bossFd->actor.colChkInfo.health > 2) || canKill) { bossFd->actor.colChkInfo.health -= damage; - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("damage %d\n", damage); } - PRINTF(VT_RST); + PRINTF_RST(); PRINTF("hp %d\n", bossFd->actor.colChkInfo.health); if ((s8)bossFd->actor.colChkInfo.health <= 0) { 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 3ad6c417b7..fc82d8000e 100644 --- a/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.c +++ b/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.c @@ -1747,7 +1747,7 @@ void BossMo_CoreCollisionCheck(BossMo* this, PlayState* play) { s16 i; Player* player = GET_PLAYER(play); - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF("Core_Damage_check START\n"); if (this->coreCollider.base.atFlags & AT_HIT) { this->coreCollider.base.atFlags &= ~AT_HIT; @@ -1843,7 +1843,7 @@ void BossMo_CoreCollisionCheck(BossMo* this, PlayState* play) { } // "end !!" PRINTF("Core_Damage_check 終わり !!\n"); - PRINTF(VT_RST); + PRINTF_RST(); } void BossMo_Core(BossMo* this, PlayState* play) { 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 7f16563730..8ef16187f3 100644 --- a/src/overlays/actors/ovl_En_Fish/z_en_fish.c +++ b/src/overlays/actors/ovl_En_Fish/z_en_fish.c @@ -384,10 +384,10 @@ void EnFish_Dropped_Fall(EnFish* this, PlayState* play) { EnFish_Dropped_SetupSwimAway(this); } else if ((this->timer <= 0) && (this->actor.params == FISH_DROPPED) && (this->actor.floorHeight < BGCHECK_Y_MIN + 10.0f)) { - PRINTF(VT_COL(YELLOW, BLACK)); + PRINTF_COLOR_WARNING(); // "BG missing? Running Actor_delete" PRINTF("BG 抜け? Actor_delete します(%s %d)\n", "../z_en_sakana.c", 822); - PRINTF(VT_RST); + PRINTF_RST(); Actor_Kill(&this->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 6cf0808a4f..ee133164c2 100644 --- a/src/overlays/actors/ovl_En_Fr/z_en_fr.c +++ b/src/overlays/actors/ovl_En_Fr/z_en_fr.c @@ -245,20 +245,20 @@ void EnFr_Init(Actor* thisx, PlayState* play) { this->actionFunc = EnFr_Idle; } else { if ((this->actor.params >= 6) || (this->actor.params < 0)) { - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); // "The argument is wrong!!" PRINTF("%s[%d] : 引数が間違っている!!(%d)\n", "../z_en_fr.c", 370, this->actor.params); - PRINTF(VT_RST); + PRINTF_RST(); ASSERT(0, "0", "../z_en_fr.c", 372); } this->requiredObjectSlot = Object_GetSlot(&play->objectCtx, OBJECT_GAMEPLAY_FIELD_KEEP); if (this->requiredObjectSlot < 0) { Actor_Kill(&this->actor); - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); // "There is no bank!!" PRINTF("%s[%d] : バンクが無いよ!!\n", "../z_en_fr.c", 380); - PRINTF(VT_RST); + PRINTF_RST(); ASSERT(0, "0", "../z_en_fr.c", 382); } } @@ -980,10 +980,10 @@ void EnFr_Deactivate(EnFr* this, PlayState* play) { EnFr* frog = sEnFrPointers.frogs[frogIndex]; if (frog == NULL) { - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); // "There are no frogs!?" PRINTF("%s[%d]カエルがいない!?\n", "../z_en_fr.c", 1604); - PRINTF(VT_RST); + PRINTF_RST(); return; } else if (frog->isDeactivating != true) { return; @@ -994,10 +994,10 @@ void EnFr_Deactivate(EnFr* this, PlayState* play) { EnFr* frog = sEnFrPointers.frogs[frogIndex]; if (frog == NULL) { - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); // "There are no frogs!?" PRINTF("%s[%d]カエルがいない!?\n", "../z_en_fr.c", 1618); - PRINTF(VT_RST); + PRINTF_RST(); return; } frog->isDeactivating = false; 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 4261af7b18..4ad132c690 100644 --- a/src/overlays/actors/ovl_En_GirlA/z_en_girla.c +++ b/src/overlays/actors/ovl_En_GirlA/z_en_girla.c @@ -382,9 +382,9 @@ void EnGirlA_InitItem(EnGirlA* this, PlayState* play) { if ((params >= SI_MAX) && (params < 0)) { Actor_Kill(&this->actor); - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); PRINTF("引数がおかしいよ(arg_data=%d)!!\n", this->actor.params); - PRINTF(VT_RST); + PRINTF_RST(); ASSERT(0, "0", "../z_en_girlA.c", 1421); return; } @@ -393,9 +393,9 @@ void EnGirlA_InitItem(EnGirlA* this, PlayState* play) { if (this->requiredObjectSlot < 0) { Actor_Kill(&this->actor); - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); PRINTF("バンクが無いよ!!(%s)\n", sShopItemDescriptions[params]); - PRINTF(VT_RST); + PRINTF_RST(); ASSERT(0, "0", "../z_en_girlA.c", 1434); return; } 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 55c10f147d..3ed42e5119 100644 --- a/src/overlays/actors/ovl_En_Gm/z_en_gm.c +++ b/src/overlays/actors/ovl_En_Gm/z_en_gm.c @@ -73,10 +73,10 @@ void EnGm_Init(Actor* thisx, PlayState* play) { this->gmObjectSlot = Object_GetSlot(&play->objectCtx, OBJECT_GM); if (this->gmObjectSlot < 0) { - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); // "There is no model bank! !! (Medi Goron)" PRINTF("モデル バンクが無いよ!!(中ゴロン)\n"); - PRINTF(VT_RST); + PRINTF_RST(); ASSERT(0, "0", "../z_en_gm.c", 145); } diff --git a/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.c b/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.c index 923d4e3e70..56f7b6d975 100644 --- a/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.c +++ b/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.c @@ -610,9 +610,9 @@ void EnGoroiwa_Roll(EnGoroiwa* this, PlayState* play) { } } Actor_SetPlayerKnockbackLarge(play, &this->actor, 2.0f, this->actor.yawTowardsPlayer, 0.0f, 0); - PRINTF(VT_FGCOL(CYAN)); + PRINTF_COLOR_CYAN(); PRINTF("Player ぶっ飛ばし\n"); // "Player knocked down" - PRINTF(VT_RST); + PRINTF_RST(); onHitSetupFuncs[PARAMS_GET_U(this->actor.params, 10, 1)](this); Player_PlaySfx(GET_PLAYER(play), NA_SE_PL_BODY_HIT); if ((this->actor.home.rot.z & 1) == 1) { 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 9bb3cb6783..5c0a14f9d0 100644 --- a/src/overlays/actors/ovl_En_Guest/z_en_guest.c +++ b/src/overlays/actors/ovl_En_Guest/z_en_guest.c @@ -57,10 +57,10 @@ void EnGuest_Init(Actor* thisx, PlayState* play) { } else { this->osAnimeObjectSlot = Object_GetSlot(&play->objectCtx, OBJECT_OS_ANIME); if (this->osAnimeObjectSlot < 0) { - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); // "No such bank!!" PRINTF("%s[%d] : バンクが無いよ!!\n", "../z_en_guest.c", 129); - PRINTF(VT_RST); + PRINTF_RST(); ASSERT(0, "0", "../z_en_guest.c", 132); } } 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 5fcc053a69..4740bbc791 100644 --- a/src/overlays/actors/ovl_En_Insect/z_en_insect.c +++ b/src/overlays/actors/ovl_En_Insect/z_en_insect.c @@ -578,10 +578,10 @@ void EnInsect_Dropped(EnInsect* this, PlayState* play) { distanceSq = Math3D_Vec3fDistSq(&this->actor.world.pos, &this->soilActor->actor.world.pos); } else { if (this->insectFlags & INSECT_FLAG_FOUND_SOIL) { - PRINTF(VT_COL(YELLOW, BLACK)); + PRINTF_COLOR_WARNING(); // "warning: target Actor is NULL" PRINTF("warning:目標 Actor が NULL (%s %d)\n", "../z_en_mushi.c", 1046); - PRINTF(VT_RST); + PRINTF_RST(); } distanceSq = 40.0f; } @@ -706,10 +706,10 @@ void EnInsect_Dropped(EnInsect* this, PlayState* play) { } else if ((type == INSECT_TYPE_FIRST_DROPPED || type == INSECT_TYPE_EXTRA_DROPPED) && (this->insectFlags & INSECT_FLAG_0) && this->lifeTimer <= 0 && this->actionTimer <= 0 && this->actor.floorHeight < BGCHECK_Y_MIN + 10.0f) { - PRINTF(VT_COL(YELLOW, BLACK)); + PRINTF_COLOR_WARNING(); // "BG missing? To do Actor_delete" PRINTF("BG 抜け? Actor_delete します(%s %d)\n", "../z_en_mushi.c", 1197); - PRINTF(VT_RST); + PRINTF_RST(); Actor_Kill(&this->actor); } } diff --git a/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c b/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c index 9fb7bd587c..7e84670426 100644 --- a/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c +++ b/src/overlays/actors/ovl_En_Ishi/z_en_ishi.c @@ -125,10 +125,10 @@ s32 EnIshi_SnapToFloor(EnIshi* this, PlayState* play, f32 arg2) { Math_Vec3f_Copy(&this->actor.home.pos, &this->actor.world.pos); return true; } else { - PRINTF(VT_COL(YELLOW, BLACK)); + PRINTF_COLOR_WARNING(); // "Failure attaching to ground" PRINTF("地面に付着失敗(%s %d)\n", "../z_en_ishi.c", 388); - PRINTF(VT_RST); + PRINTF_RST(); return false; } } 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 d3dce9d5aa..03242220e0 100644 --- a/src/overlays/actors/ovl_En_Kanban/z_en_kanban.c +++ b/src/overlays/actors/ovl_En_Kanban/z_en_kanban.c @@ -463,7 +463,7 @@ void EnKanban_Update(Actor* thisx, PlayState* play2) { this->actor.bgCheckFlags = tempBgFlags; this->actor.depthInWater = tempDepthInWater; - PRINTF(VT_RST); + PRINTF_RST(); if (1) { u8 onGround = (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND); @@ -727,9 +727,9 @@ void EnKanban_Update(Actor* thisx, PlayState* play2) { bomb = bomb->next; } } - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("OCARINA_MODE %d\n", play->msgCtx.ocarinaMode); - PRINTF(VT_RST); + PRINTF_RST(); switch (this->ocarinaFlag) { case 0: if (play->msgCtx.ocarinaMode == OCARINA_MODE_01) { 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 0d938f45c6..e46125878e 100644 --- a/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c +++ b/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c @@ -115,10 +115,10 @@ s32 EnKusa_SnapToFloor(EnKusa* this, PlayState* play, f32 yOffset) { Math_Vec3f_Copy(&this->actor.home.pos, &this->actor.world.pos); return true; } else { - PRINTF(VT_COL(YELLOW, BLACK)); + PRINTF_COLOR_WARNING(); // "Failure attaching to ground" PRINTF("地面に付着失敗(%s %d)\n", "../z_en_kusa.c", 323); - PRINTF(VT_RST); + PRINTF_RST(); return false; } } 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 2016b3bafb..a083ef85d7 100644 --- a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c +++ b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c @@ -593,9 +593,9 @@ void EnOssan_Init(Actor* thisx, PlayState* play) { //! @bug This check will always evaluate to false, it should be || not && if (this->actor.params > OSSAN_TYPE_MASK && this->actor.params < OSSAN_TYPE_KOKIRI) { Actor_Kill(&this->actor); - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); PRINTF("引数がおかしいよ(arg_data=%d)!!\n", this->actor.params); - PRINTF(VT_RST); + PRINTF_RST(); ASSERT(0, "0", "../z_en_oB1.c", 1246); return; } @@ -622,18 +622,18 @@ void EnOssan_Init(Actor* thisx, PlayState* play) { if (this->objectSlot1 < 0) { Actor_Kill(&this->actor); - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); PRINTF("バンクが無いよ!!(%s)\n", sShopkeeperPrintName[this->actor.params]); - PRINTF(VT_RST); + PRINTF_RST(); ASSERT(0, "0", "../z_en_oB1.c", 1284); return; } if (EnOssan_TryGetObjBankIndices(this, play, objectIds) == 0) { Actor_Kill(&this->actor); - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); PRINTF("予備バンクが無いよ!!(%s)\n", sShopkeeperPrintName[this->actor.params]); - PRINTF(VT_RST); + PRINTF_RST(); ASSERT(0, "0", "../z_en_oB1.c", 1295); return; } @@ -2127,10 +2127,10 @@ void EnOssan_InitActionFunc(EnOssan* this, PlayState* play) { this->shelves = (EnTana*)Actor_Find(&play->actorCtx, ACTOR_EN_TANA, ACTORCAT_PROP); if (this->shelves == NULL) { - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); // "Warning!! There are no shelves!!" PRINTF("★★★ 警告!! 棚がないよ!! ★★★\n"); - PRINTF(VT_RST); + PRINTF_RST(); return; } 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 c5ed802b70..46696027f4 100644 --- a/src/overlays/actors/ovl_En_Owl/z_en_owl.c +++ b/src/overlays/actors/ovl_En_Owl/z_en_owl.c @@ -220,11 +220,11 @@ void EnOwl_Init(Actor* thisx, PlayState* play) { break; default: // Outside kokiri forest - PRINTF(VT_FGCOL(CYAN)); + PRINTF_COLOR_CYAN(); PRINTF("no = %d \n", owlType); PRINTF(T("未完成のフクロウ未完成のフクロウ未完成のフクロウ\n", "Unfinished owl unfinished owl unfinished owl\n")); - PRINTF(VT_RST); + PRINTF_RST(); this->actionFlags |= 2; this->unk_3EE = 0x20; this->actionFunc = EnOwl_WaitOutsideKokiri; @@ -927,14 +927,14 @@ void func_80ACC00C(EnOwl* this, PlayState* play) { if (this->actor.xzDistToPlayer < 50.0f) { if (!Play_InCsMode(play)) { owlType = PARAMS_GET_S(this->actor.params, 6, 6); - PRINTF(VT_FGCOL(CYAN)); + PRINTF_COLOR_CYAN(); PRINTF(T("%dのフクロウ\n", "%d owl\n"), owlType); - PRINTF(VT_RST); + PRINTF_RST(); switch (owlType) { case 7: - PRINTF(VT_FGCOL(CYAN)); + PRINTF_COLOR_CYAN(); PRINTF(T("SPOT 06 の デモがはしった\n", "Demo of SPOT 06 has been completed\n")); - PRINTF(VT_RST); + PRINTF_RST(); play->csCtx.script = SEGMENTED_TO_VIRTUAL(gLakeHyliaOwlCs); this->actor.draw = NULL; break; diff --git a/src/overlays/actors/ovl_Fishing/z_fishing.c b/src/overlays/actors/ovl_Fishing/z_fishing.c index 02bbf1656d..a2c5ee5ae6 100644 --- a/src/overlays/actors/ovl_Fishing/z_fishing.c +++ b/src/overlays/actors/ovl_Fishing/z_fishing.c @@ -5172,11 +5172,11 @@ void Fishing_UpdateOwner(Actor* thisx, PlayState* play2) { #if DEBUG_FEATURES if (0) { // Strings existing only in rodata - PRINTF(VT_FGCOL(GREEN)); - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_GREEN(); + PRINTF_COLOR_YELLOW(); PRINTF("plays %x\n"); PRINTF("ys %x\n"); - PRINTF(VT_RST); + PRINTF_RST(); } #endif @@ -5676,9 +5676,9 @@ void Fishing_UpdateOwner(Actor* thisx, PlayState* play2) { sREG(14) = 0; #endif - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("zelda_time %x\n", ((void)0, gSaveContext.save.dayTime)); - PRINTF(VT_RST); + PRINTF_RST(); if (sStormChanceTimer >= 2) { sStormChanceTimer--; 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 1e34d1c586..a7bf1716d7 100644 --- a/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c +++ b/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c @@ -472,18 +472,18 @@ void ObjBean_Init(Actor* thisx, PlayState* play) { if (Flags_GetSwitch(play, PARAMS_GET_U(this->dyna.actor.params, 0, 6)) || (DEBUG_FEATURES && mREG(1) == 1)) { path = PARAMS_GET_U(this->dyna.actor.params, 8, 5); if (path == 0x1F) { - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); // "No path data?" PRINTF("パスデータが無い?(%s %d)(arg_data %xH)\n", "../z_obj_bean.c", 909, this->dyna.actor.params); - PRINTF(VT_RST); + PRINTF_RST(); Actor_Kill(&this->dyna.actor); return; } if (play->pathList[path].count < 3) { - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); // "Incorrect number of path data" PRINTF("パスデータ数が不正(%s %d)(arg_data %xH)\n", "../z_obj_bean.c", 921, this->dyna.actor.params); - PRINTF(VT_RST); + PRINTF_RST(); Actor_Kill(&this->dyna.actor); return; } @@ -888,10 +888,10 @@ void ObjBean_Update(Actor* thisx, PlayState* play) { this->dyna.actor.shape.shadowScale = this->dyna.actor.scale.x * 88.0f; if (ObjBean_CheckForHorseTrample(this, play)) { - PRINTF(VT_FGCOL(CYAN)); + PRINTF_COLOR_CYAN(); // "Horse and bean tree lift collision" PRINTF("馬と豆の木リフト衝突!!!\n"); - PRINTF(VT_RST); + PRINTF_RST(); ObjBean_Break(this, play); DynaPoly_DisableCollision(play, &play->colCtx.dyna, this->dyna.bgId); func_80B908EC(this); 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 a2d8dbbb12..adecf7e08b 100644 --- a/src/overlays/actors/ovl_Obj_Lightswitch/z_obj_lightswitch.c +++ b/src/overlays/actors/ovl_Obj_Lightswitch/z_obj_lightswitch.c @@ -188,10 +188,10 @@ void ObjLightswitch_Init(Actor* thisx, PlayState* play) { if (Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_OBJ_OSHIHIKI, this->actor.home.pos.x, this->actor.home.pos.y, this->actor.home.pos.z, 0, this->actor.home.rot.y, 0, (0xFF << 8) | PUSHBLOCK_SMALL_START_ON) == NULL) { - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); // "Push-pull block occurrence failure" PRINTF("押引ブロック発生失敗(%s %d)(arg_data 0x%04x)\n", "../z_obj_lightswitch.c", 452, this->actor.params); - PRINTF(VT_RST); + PRINTF_RST(); removeSelf = true; } } 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 82e10d0f23..7ac997ae62 100644 --- a/src/overlays/actors/ovl_Obj_Makekinsuta/z_obj_makekinsuta.c +++ b/src/overlays/actors/ovl_Obj_Makekinsuta/z_obj_makekinsuta.c @@ -32,15 +32,15 @@ void ObjMakekinsuta_Init(Actor* thisx, PlayState* play) { ObjMakekinsuta* this = (ObjMakekinsuta*)thisx; if (PARAMS_GET_NOSHIFT(this->actor.params, 13, 2) == 0x4000) { - PRINTF(VT_FGCOL(BLUE)); + PRINTF_COLOR_BLUE(); // "Gold Star Enemy(arg_data %x)" PRINTF("金スタ発生敵(arg_data %x)\n", this->actor.params); - PRINTF(VT_RST); + PRINTF_RST(); } else { - PRINTF(VT_COL(YELLOW, BLACK)); + PRINTF_COLOR_WARNING(); // "Invalid Argument (arg_data %x)(%s %d)" PRINTF("引数不正 (arg_data %x)(%s %d)\n", this->actor.params, "../z_obj_makekinsuta.c", 119); - PRINTF(VT_RST); + PRINTF_RST(); } this->actionFunc = func_80B98320; } diff --git a/src/overlays/actors/ovl_Obj_Makeoshihiki/z_obj_makeoshihiki.c b/src/overlays/actors/ovl_Obj_Makeoshihiki/z_obj_makeoshihiki.c index 1cc2161196..3ea20567ef 100644 --- a/src/overlays/actors/ovl_Obj_Makeoshihiki/z_obj_makeoshihiki.c +++ b/src/overlays/actors/ovl_Obj_Makeoshihiki/z_obj_makeoshihiki.c @@ -72,9 +72,9 @@ void ObjMakeoshihiki_Init(Actor* thisx, PlayState* play) { if (Actor_SpawnAsChild(&play->actorCtx, thisx, play, ACTOR_OBJ_OSHIHIKI, spawnPos->x, spawnPos->y, spawnPos->z, 0, block->rotY, 0, ((block->color << 6) & 0xC0) | (block->type & 0xF) | 0xFF00) == NULL) { // "Push-pull block failure" - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); PRINTF("Error : 押し引きブロック発生失敗(%s %d)\n", "../z_obj_makeoshihiki.c", 194); - PRINTF(VT_RST); + PRINTF_RST(); Actor_Kill(thisx); return; } 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 05f23ebaaf..e791de6297 100644 --- a/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.c +++ b/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.c @@ -322,9 +322,9 @@ void ObjSwitch_Init(Actor* thisx, PlayState* play) { this->dyna.actor.colChkInfo.mass = MASS_IMMOVABLE; if (OBJSWITCH_FROZEN(&this->dyna.actor) && (ObjSwitch_SpawnIce(this, play) == NULL)) { - PRINTF(VT_FGCOL(RED)); + PRINTF_COLOR_RED(); PRINTF("Error : 氷発生失敗 (%s %d)\n", "../z_obj_switch.c", 732); - PRINTF(VT_RST); + PRINTF_RST(); this->dyna.actor.params &= ~OBJSWITCH_FROZEN_FLAG; } 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 ac422c63e8..94c6618470 100644 --- a/src/overlays/actors/ovl_Obj_Warp2block/z_obj_warp2block.c +++ b/src/overlays/actors/ovl_Obj_Warp2block/z_obj_warp2block.c @@ -264,9 +264,9 @@ void func_80BA24F8(ObjWarp2block* this, PlayState* play) { this->unk_174++; if (this->unk_174 > 60) { - PRINTF(VT_COL(RED, WHITE)); + PRINTF_COLOR_ERROR(); PRINTF("Error : 時のブロック(ワープ2)が対でセットされていません(%s %d)\n", "../z_obj_warp2block.c", 505); - PRINTF(VT_RST); + PRINTF_RST(); Actor_Kill(&this->dyna.actor); } } diff --git a/src/overlays/actors/ovl_Oceff_Spot/z_oceff_spot.c b/src/overlays/actors/ovl_Oceff_Spot/z_oceff_spot.c index 7953afe1f8..5aeb61031a 100644 --- a/src/overlays/actors/ovl_Oceff_Spot/z_oceff_spot.c +++ b/src/overlays/actors/ovl_Oceff_Spot/z_oceff_spot.c @@ -85,17 +85,17 @@ void OceffSpot_End(OceffSpot* this, PlayState* play) { if (play->msgCtx.ocarinaAction != OCARINA_ACTION_CHECK_NOWARP_DONE || play->msgCtx.ocarinaMode != OCARINA_MODE_08) { gSaveContext.sunsSongState = SUNSSONG_START; - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); // "Sun's Song Flag" PRINTF("z_oceff_spot 太陽の歌フラグ\n"); - PRINTF(VT_RST); + PRINTF_RST(); } } else { play->msgCtx.ocarinaMode = OCARINA_MODE_04; - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); // "Ocarina End" PRINTF("z_oceff_spot オカリナ終了\n"); - PRINTF(VT_RST); + PRINTF_RST(); } } } 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 3288f115c4..a661b1b48f 100644 --- a/src/overlays/gamestates/ovl_file_choose/z_file_choose.c +++ b/src/overlays/gamestates/ovl_file_choose/z_file_choose.c @@ -1908,10 +1908,10 @@ void FileSelect_LoadGame(GameState* thisx) { // capacity and `magicFillTarget` gSaveContext.save.info.playerData.magicLevel = gSaveContext.save.info.playerData.magic = 0; - PRINTF(VT_FGCOL(GREEN)); + PRINTF_COLOR_GREEN(); PRINTF("Z_MAGIC_NOW_NOW=%d MAGIC_NOW=%d\n", ((void)0, gSaveContext.magicFillTarget), gSaveContext.save.info.playerData.magic); - PRINTF(VT_RST); + PRINTF_RST(); gSaveContext.save.info.playerData.naviTimer = 0; 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 f148c1d78b..9bafd123bd 100644 --- a/src/overlays/gamestates/ovl_file_choose/z_file_nameset.c +++ b/src/overlays/gamestates/ovl_file_choose/z_file_nameset.c @@ -1347,13 +1347,13 @@ void FileSelect_UpdateOptionsMenu(GameState* thisx) { #endif PRINTF("SAVE"); Sram_WriteSramHeader(sramCtx); - PRINTF(VT_FGCOL(YELLOW)); + 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(VT_RST); + PRINTF_RST(); func_800F6700(gSaveContext.audioSetting); PRINTF("終了\n"); return; diff --git a/src/overlays/gamestates/ovl_select/z_select.c b/src/overlays/gamestates/ovl_select/z_select.c index 9506d81338..6a9b1e1b3d 100644 --- a/src/overlays/gamestates/ovl_select/z_select.c +++ b/src/overlays/gamestates/ovl_select/z_select.c @@ -20,9 +20,9 @@ void MapSelect_LoadTitle(MapSelectState* this) { } void MapSelect_LoadGame(MapSelectState* this, s32 entranceIndex) { - PRINTF(VT_FGCOL(BLUE)); + PRINTF_COLOR_BLUE(); PRINTF("\n\n\nFILE_NO=%x\n\n\n", gSaveContext.fileNum); - PRINTF(VT_RST); + PRINTF_RST(); if (gSaveContext.fileNum == 0xFF) { Sram_InitDebugSave(); // Set the fill target to be the saved magic amount 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 bc45e22551..23648dd085 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.c +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.c @@ -1877,10 +1877,10 @@ void KaleidoScope_DrawInfoPanel(PlayState* play) { #if DEBUG_FEATURES if (pauseCtx->pageIndex == PAUSE_MAP) { if (YREG(7) != 0) { - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF("キンスタ数(%d) Get_KIN_STA=%x (%x) (%x)\n", YREG(6), GET_GS_FLAGS(YREG(6)), gAreaGsFlags[YREG(6)], gSaveContext.save.info.gsFlags[YREG(6) >> 2]); - PRINTF(VT_RST); + PRINTF_RST(); YREG(7) = 0; SET_GS_FLAGS(D_8082AE30[pauseCtx->cursorPoint[PAUSE_WORLD_MAP]], @@ -4554,7 +4554,7 @@ void KaleidoScope_Update(PlayState* play) { gSaveContext.healthAccumulator = 0; gSaveContext.magicState = MAGIC_STATE_IDLE; gSaveContext.prevMagicState = MAGIC_STATE_IDLE; - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF("MAGIC_NOW=%d ", gSaveContext.save.info.playerData.magic); PRINTF("Z_MAGIC_NOW_NOW=%d → ", gSaveContext.magicFillTarget); gSaveContext.magicCapacity = 0; @@ -4565,7 +4565,7 @@ void KaleidoScope_Update(PlayState* play) { gSaveContext.save.info.playerData.magicLevel = gSaveContext.save.info.playerData.magic = 0; PRINTF("MAGIC_NOW=%d ", gSaveContext.save.info.playerData.magic); PRINTF("Z_MAGIC_NOW_NOW=%d\n", gSaveContext.magicFillTarget); - PRINTF(VT_RST); + PRINTF_RST(); } else { play->state.running = false; SET_NEXT_GAMESTATE(&play->state, TitleSetup_Init, TitleSetupState); @@ -4636,13 +4636,13 @@ void KaleidoScope_Update(PlayState* play) { gSaveContext.buttonStatus[3] = D_808321A8[3]; gSaveContext.buttonStatus[4] = D_808321A8[4]; interfaceCtx->unk_1FA = interfaceCtx->unk_1FC = 0; - PRINTF(VT_FGCOL(YELLOW)); + PRINTF_COLOR_YELLOW(); PRINTF("i=%d LAST_TIME_TYPE=%d\n", i, gSaveContext.prevHudVisibilityMode); gSaveContext.hudVisibilityMode = HUD_VISIBILITY_NO_CHANGE; Interface_ChangeHudVisibilityMode(gSaveContext.prevHudVisibilityMode); player->talkActor = NULL; Player_SetEquipmentData(play, player); - PRINTF(VT_RST); + PRINTF_RST(); break; } } From 8b5813c86c9c99b1d6099656b90832796e25a152 Mon Sep 17 00:00:00 2001 From: cadmic Date: Thu, 9 Jan 2025 15:36:09 -0800 Subject: [PATCH 12/40] [iQue] Set address of makerom instead of address of boot in spec (#2409) --- spec | 4 +++- src/makerom/rom_header.s | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/spec b/spec index 8372b29ae8..419310744a 100644 --- a/spec +++ b/spec @@ -6,6 +6,9 @@ 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" @@ -13,7 +16,6 @@ endseg beginseg name "boot" - address 0x80000460 include "$(BUILD_DIR)/src/boot/boot_main.o" include "$(BUILD_DIR)/src/boot/idle.o" #if OOT_VERSION >= PAL_1_0 diff --git a/src/makerom/rom_header.s b/src/makerom/rom_header.s index 6b6fe8aa3d..2edf871c40 100644 --- a/src/makerom/rom_header.s +++ b/src/makerom/rom_header.s @@ -6,7 +6,7 @@ /* 0x00 */ ENDIAN_IDENTIFIER /* 0x01 */ PI_DOMAIN_1_CFG(64, 18, 7, 3) /* 0x04 */ SYSTEM_CLOCK_RATE_SETTING(0xF) -/* 0x08 */ ENTRYPOINT(0x80000400) +/* 0x08 */ ENTRYPOINT(entrypoint) /* 0x0C */ OS_VERSION(2, 0, LIBULTRA_VERSION) /* 0x10 */ CHECKSUM() From a57d449196dbf9fcf93004a3655bb5f2a4fc773d Mon Sep 17 00:00:00 2001 From: Tharo <17233964+Thar0@users.noreply.github.com> Date: Fri, 10 Jan 2025 00:31:11 +0000 Subject: [PATCH 13/40] [iQue] Match remaining libultra/io files (#2411) * [iQue] Match remaining libultra/io files * Match osSpTaskYielded * Fix bss, remove double space in controller.h * Fix BSS --- include/ultra64/controller.h | 1 + include/variables.h | 3 ++ spec | 1 + src/boot/z_std_dma.c | 2 +- src/code/main.c | 2 +- src/code/z_bgcheck.c | 2 +- src/code/z_camera.c | 2 +- src/code/z_kankyo.c | 4 +-- src/libultra/io/contquery.c | 4 +++ src/libultra/io/contramread.c | 25 ++++++++++++++++ src/libultra/io/contramwrite.c | 25 ++++++++++++++++ src/libultra/io/contreaddata.c | 17 ++++++++++- src/libultra/io/controller.c | 30 +++++++++++++++++-- src/libultra/io/pfsgetstatus.c | 7 +++++ src/libultra/io/pfsisplug.c | 20 +++++++++++++ src/libultra/io/sirawdma.c | 8 +++++ src/libultra/io/sptaskyielded.c | 13 +++----- .../actors/ovl_En_Po_Field/z_en_po_field.c | 3 +- 18 files changed, 149 insertions(+), 20 deletions(-) diff --git a/include/ultra64/controller.h b/include/ultra64/controller.h index 4ce047a201..1b6d0cf323 100644 --- a/include/ultra64/controller.h +++ b/include/ultra64/controller.h @@ -17,6 +17,7 @@ #define CONT_CMD_WRITE_MEMPACK 3 #define CONT_CMD_READ_EEPROM 4 #define CONT_CMD_WRITE_EEPROM 5 +#define CONT_CMD_CHANNEL_RESET 0xFD #define CONT_CMD_RESET 0xFF #define CONT_CMD_REQUEST_STATUS_TX 1 diff --git a/include/variables.h b/include/variables.h index d532f4fe95..6ad4f7ee4d 100644 --- a/include/variables.h +++ b/include/variables.h @@ -15,6 +15,9 @@ extern u32 osMemSize; extern u8 osAppNMIBuffer[0x40]; extern u32 __osBbIsBb; +extern u32 __osBbHackFlags; +extern u32 __osBbPakAddress[4]; +extern u32 __osBbPakSize; extern s8 D_80009430; extern vu8 gViConfigBlack; diff --git a/spec b/spec index 419310744a..4260c50016 100644 --- a/spec +++ b/spec @@ -808,6 +808,7 @@ beginseg 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" diff --git a/src/boot/z_std_dma.c b/src/boot/z_std_dma.c index 07bd6dadb9..b05b188c64 100644 --- a/src/boot/z_std_dma.c +++ b/src/boot/z_std_dma.c @@ -28,7 +28,7 @@ #endif #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:82 pal-1.0:80 pal-1.1:80" + "ntsc-1.2:78 pal-1.0:76 pal-1.1:76" StackEntry sDmaMgrStackInfo; OSMesgQueue sDmaMgrMsgQueue; diff --git a/src/code/main.c b/src/code/main.c index bffc9565ad..ae4eb3d8f1 100644 --- a/src/code/main.c +++ b/src/code/main.c @@ -24,7 +24,7 @@ extern struct IrqMgr gIrqMgr; #endif #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:141 ntsc-1.1:141 ntsc-1.2:141 pal-1.0:139 pal-1.1:139" + "ntsc-1.0:138 ntsc-1.1:138 ntsc-1.2:138 pal-1.0:136 pal-1.1:136" extern u8 _buffersSegmentEnd[]; diff --git a/src/code/z_bgcheck.c b/src/code/z_bgcheck.c index 4310d1d9cb..8caacb9405 100644 --- a/src/code/z_bgcheck.c +++ b/src/code/z_bgcheck.c @@ -2,7 +2,7 @@ #include "terminal.h" #include "line_numbers.h" -#pragma increment_block_number "ntsc-1.0:128 ntsc-1.1:128 ntsc-1.2:128" +#pragma increment_block_number "ntsc-1.0:120 ntsc-1.1:120 ntsc-1.2:120" 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 e4090d484e..d5aa8ad807 100644 --- a/src/code/z_camera.c +++ b/src/code/z_camera.c @@ -3639,7 +3639,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:144 ntsc-1.1:144 ntsc-1.2:144 pal-1.0:142 pal-1.1:142" + "ntsc-1.0:141 ntsc-1.1:141 ntsc-1.2:141 pal-1.0:139 pal-1.1:139" s32 Camera_KeepOn4(Camera* camera) { static Vec3f D_8015BD50; diff --git a/src/code/z_kankyo.c b/src/code/z_kankyo.c index 2980933cdd..ee48b66f96 100644 --- a/src/code/z_kankyo.c +++ b/src/code/z_kankyo.c @@ -1,5 +1,5 @@ -#pragma increment_block_number "gc-eu:232 gc-eu-mq:232 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:240 pal-1.1:240" +#pragma increment_block_number "gc-eu:228 gc-eu-mq:228 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:236 pal-1.1:236" #include "global.h" #include "ultra64.h" diff --git a/src/libultra/io/contquery.c b/src/libultra/io/contquery.c index 660e2dcd42..9a8370af31 100644 --- a/src/libultra/io/contquery.c +++ b/src/libultra/io/contquery.c @@ -15,7 +15,11 @@ s32 osContStartQuery(OSMesgQueue* mq) { osRecvMesg(mq, NULL, OS_MESG_BLOCK); } ret = __osSiRawStartDma(OS_READ, &__osContPifRam); +#ifdef BBPLAYER + __osContLastCmd = CONT_CMD_CHANNEL_RESET; +#else __osContLastCmd = CONT_CMD_REQUEST_STATUS; +#endif __osSiRelAccess(); return ret; } diff --git a/src/libultra/io/contramread.c b/src/libultra/io/contramread.c index 058f58e80f..01e0703da6 100644 --- a/src/libultra/io/contramread.c +++ b/src/libultra/io/contramread.c @@ -2,9 +2,12 @@ #define BLOCKSIZE 32 +#ifndef BBPLAYER s32 __osPfsLastChannel = -1; +#endif s32 __osContRamRead(OSMesgQueue* ctrlrqueue, s32 channel, u16 addr, u8* data) { +#ifndef BBPLAYER s32 ret; s32 i; u8* ptr; @@ -60,4 +63,26 @@ s32 __osContRamRead(OSMesgQueue* ctrlrqueue, s32 channel, u16 addr, u8* data) { __osSiRelAccess(); return ret; +#else + s32 ret; + + __osSiGetAccess(); + + ret = 0; + if (__osBbPakAddress[channel] != 0) { + if (__osBbPakSize - 0x20 >= addr * 0x20) { + s32 i; + + for (i = 0; i < 0x20; i++) { + data[i] = *(u8*)(__osBbPakAddress[channel] + addr * 0x20 + i); + } + } + } else { + ret = PFS_ERR_NOPACK; + } + + __osSiRelAccess(); + + return ret; +#endif } diff --git a/src/libultra/io/contramwrite.c b/src/libultra/io/contramwrite.c index 6a776a13b8..4bd8ffaa30 100644 --- a/src/libultra/io/contramwrite.c +++ b/src/libultra/io/contramwrite.c @@ -2,6 +2,7 @@ #include "global.h" s32 __osContRamWrite(OSMesgQueue* mq, s32 channel, u16 address, u8* buffer, s32 force) { +#ifndef BBPLAYER s32 ret = 0; s32 i; u8* ptr; @@ -65,4 +66,28 @@ s32 __osContRamWrite(OSMesgQueue* mq, s32 channel, u16 address, u8* buffer, s32 __osSiRelAccess(); return ret; +#else + s32 ret = 0; + + if ((force != true) && (address < PFS_LABEL_AREA) && (address != 0)) { + return 0; + } + + __osSiGetAccess(); + + if (__osBbPakAddress[channel] != 0) { + if (__osBbPakSize - 0x20 >= address * 0x20) { + s32 i; + + for (i = 0; i < 0x20; i++) { + *(u8*)(__osBbPakAddress[channel] + address * 0x20 + i) = buffer[i]; + } + } + } else { + ret = 1; + } + + __osSiRelAccess(); + return ret; +#endif } diff --git a/src/libultra/io/contreaddata.c b/src/libultra/io/contreaddata.c index ff44bc15b8..f1f250e965 100644 --- a/src/libultra/io/contreaddata.c +++ b/src/libultra/io/contreaddata.c @@ -10,7 +10,11 @@ s32 osContStartReadData(OSMesgQueue* mq) { osRecvMesg(mq, NULL, OS_MESG_BLOCK); } ret = __osSiRawStartDma(OS_READ, &__osContPifRam); +#ifdef BBPLAYER + __osContLastCmd = CONT_CMD_CHANNEL_RESET; +#else __osContLastCmd = CONT_CMD_READ_BUTTON; +#endif __osSiRelAccess(); return ret; } @@ -29,7 +33,18 @@ void osContGetReadData(OSContPad* contData) { contData->stick_x = read.joyX; contData->stick_y = read.joyY; } - }; + } + +#ifdef BBPLAYER + if (__osBbIsBb && __osBbHackFlags != 0) { + OSContPad tmp; + contData -= __osMaxControllers; + + tmp = contData[0]; + contData[0] = contData[__osBbHackFlags]; + contData[__osBbHackFlags] = tmp; + } +#endif } void __osPackReadData(void) { diff --git a/src/libultra/io/controller.c b/src/libultra/io/controller.c index 290f1b5854..c6c8d83ca3 100644 --- a/src/libultra/io/controller.c +++ b/src/libultra/io/controller.c @@ -41,7 +41,11 @@ s32 osContInit(OSMesgQueue* mq, u8* ctlBitfield, OSContStatus* status) { osRecvMesg(mq, &msg, OS_MESG_BLOCK); __osContGetInitData(ctlBitfield, status); +#ifdef BBPLAYER + __osContLastCmd = CONT_CMD_CHANNEL_RESET; +#else __osContLastCmd = CONT_CMD_REQUEST_STATUS; +#endif __osSiCreateAccessQueue(); osCreateMesgQueue(&__osEepromTimerMsgQueue, &__osEepromTimerMsg, 1); @@ -52,7 +56,7 @@ void __osContGetInitData(u8* ctlBitfield, OSContStatus* data) { u8* ptr; __OSContRequesFormat req; s32 i; - u8 bitfieldTemp = 0; + u8 bits = 0; ptr = (u8*)&__osContPifRam; @@ -63,10 +67,30 @@ void __osContGetInitData(u8* ctlBitfield, OSContStatus* data) { continue; } data->type = req.typel << 8 | req.typeh; +#ifdef BBPLAYER + data->status = __osBbPakAddress[i] != 0; +#else data->status = req.status; - bitfieldTemp |= 1 << i; +#endif + bits |= 1 << i; } - *ctlBitfield = bitfieldTemp; + +#ifdef BBPLAYER + if (__osBbIsBb && __osBbHackFlags != 0) { + OSContStatus tmp; + + bits = (bits & ~((1 << __osBbHackFlags) | 1)) | ((bits & 1) << __osBbHackFlags) | + ((bits & (1 << __osBbHackFlags)) >> __osBbHackFlags); + + data -= __osMaxControllers; + + tmp = data[0]; + data[0] = data[__osBbHackFlags]; + data[__osBbHackFlags] = tmp; + } +#endif + + *ctlBitfield = bits; } void __osPackRequestData(u8 poll) { diff --git a/src/libultra/io/pfsgetstatus.c b/src/libultra/io/pfsgetstatus.c index 0ec3bd7b4d..aa9851e6e7 100644 --- a/src/libultra/io/pfsgetstatus.c +++ b/src/libultra/io/pfsgetstatus.c @@ -2,6 +2,7 @@ #include "global.h" s32 __osPfsGetStatus(OSMesgQueue* queue, s32 channel) { +#ifndef BBPLAYER s32 ret = 0; OSMesg msg; OSContStatus data; @@ -24,6 +25,12 @@ s32 __osPfsGetStatus(OSMesgQueue* queue, s32 channel) { return PFS_ERR_CONTRFAIL; } return ret; +#else + if (__osBbPakAddress[channel] != 0) { + return 0; + } + return PFS_ERR_NOPACK; +#endif } void __osPfsRequestOneChannel(s32 channel, u8 cmd) { diff --git a/src/libultra/io/pfsisplug.c b/src/libultra/io/pfsisplug.c index d5630fccc5..9a144d0cb5 100644 --- a/src/libultra/io/pfsisplug.c +++ b/src/libultra/io/pfsisplug.c @@ -88,8 +88,28 @@ void __osPfsGetInitData(u8* pattern, OSContStatus* contData) { } contData->type = ((req.typel << 8) | req.typeh); +#ifdef BBPLAYER + contData->status = __osBbPakAddress[i] != 0; +#else contData->status = req.status; +#endif bits |= (1 << i); } + +#ifdef BBPLAYER + if (__osBbIsBb && __osBbHackFlags != 0) { + OSContStatus tmp; + + bits = (bits & ~((1 << __osBbHackFlags) | 1)) | ((bits & 1) << __osBbHackFlags) | + ((bits & (1 << __osBbHackFlags)) >> __osBbHackFlags); + + contData -= __osMaxControllers; + + tmp = contData[0]; + contData[0] = contData[__osBbHackFlags]; + contData[__osBbHackFlags] = tmp; + } +#endif + *pattern = bits; } diff --git a/src/libultra/io/sirawdma.c b/src/libultra/io/sirawdma.c index 9bf499cc6a..0aa2f86942 100644 --- a/src/libultra/io/sirawdma.c +++ b/src/libultra/io/sirawdma.c @@ -1,4 +1,5 @@ #include "global.h" +#include "ultra64/bbskapi.h" #define PIF_RAM_SIZE (PIF_RAM_END + 1 - PIF_RAM_START) @@ -11,6 +12,13 @@ s32 __osSiRawStartDma(s32 dir, void* addr) { } IO_WRITE(SI_DRAM_ADDR_REG, osVirtualToPhysical(addr)); if (dir == OS_READ) { +#ifdef BBPLAYER + if (__osBbIsBb) { + register u32 mask = __osDisableInt(); + skKeepAlive(); + __osRestoreInt(mask); + } +#endif IO_WRITE(SI_PIF_ADDR_RD64B_REG, PIF_RAM_START); } else { IO_WRITE(SI_PIF_ADDR_WR64B_REG, PIF_RAM_START); diff --git a/src/libultra/io/sptaskyielded.c b/src/libultra/io/sptaskyielded.c index d04f673c54..8be0556c33 100644 --- a/src/libultra/io/sptaskyielded.c +++ b/src/libultra/io/sptaskyielded.c @@ -2,18 +2,13 @@ u32 osSpTaskYielded(OSTask* task) { u32 status = __osSpGetStatus(); - u32 ret; + u32 result; - if (status & SP_STATUS_YIELDED) { - ret = OS_TASK_YIELDED; - } else { - ret = 0; - } + result = (status & SP_STATUS_YIELDED) ? OS_TASK_YIELDED : 0; if (status & SP_STATUS_YIELD) { - task->t.flags |= ret; + task->t.flags |= result; task->t.flags &= ~OS_TASK_DP_WAIT; } - - return ret; + return result; } 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 b4de777c72..00eff4a39f 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 @@ -143,7 +143,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" +#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" static Vec3s sSpawnPositions[10]; static u8 sSpawnSwitchFlags[10]; From eed11e3fb5cef266ac1d1e290c0b45dd9d7c3e02 Mon Sep 17 00:00:00 2001 From: Tharo <17233964+Thar0@users.noreply.github.com> Date: Fri, 10 Jan 2025 10:55:31 +0000 Subject: [PATCH 14/40] [iQue] Import vimodes from ultralib (#2403) * [iQue] Import vimodes from ultralib * Account for pixel_advance change on iQue * Actually do the fix properly --- include/ultra64/viint.h | 7 + src/libultra/io/vimodefpalhaf1.c | 47 + src/libultra/io/vimodefpalhan1.c | 47 + src/libultra/io/vimodefpalhpf1.c | 47 + src/libultra/io/vimodefpalhpf2.c | 47 + src/libultra/io/vimodefpalhpn1.c | 47 + src/libultra/io/vimodefpalhpn2.c | 47 + src/libultra/io/vimodefpallaf1.c | 47 + src/libultra/io/vimodefpallaf2.c | 47 + src/libultra/io/vimodefpallan1.c | 56 +- src/libultra/io/vimodefpallan2.c | 47 + src/libultra/io/vimodefpallpf1.c | 47 + src/libultra/io/vimodefpallpf2.c | 47 + src/libultra/io/vimodefpallpn1.c | 47 + src/libultra/io/vimodefpallpn2.c | 47 + src/libultra/io/vimodempalhaf1.c | 47 + src/libultra/io/vimodempalhan1.c | 47 + src/libultra/io/vimodempalhpf1.c | 47 + src/libultra/io/vimodempalhpf2.c | 47 + src/libultra/io/vimodempalhpn1.c | 47 + src/libultra/io/vimodempalhpn2.c | 47 + src/libultra/io/vimodempallaf1.c | 47 + src/libultra/io/vimodempallaf2.c | 47 + src/libultra/io/vimodempallan1.c | 56 +- src/libultra/io/vimodempallan2.c | 47 + src/libultra/io/vimodempallpf1.c | 47 + src/libultra/io/vimodempallpf2.c | 47 + src/libultra/io/vimodempallpn1.c | 47 + src/libultra/io/vimodempallpn2.c | 47 + src/libultra/io/vimodentschaf1.c | 47 + src/libultra/io/vimodentschan1.c | 47 + src/libultra/io/vimodentschpf1.c | 47 + src/libultra/io/vimodentschpf2.c | 47 + src/libultra/io/vimodentschpn1.c | 47 + src/libultra/io/vimodentschpn2.c | 47 + src/libultra/io/vimodentsclaf1.c | 47 + src/libultra/io/vimodentsclaf2.c | 47 + src/libultra/io/vimodentsclan1.c | 56 +- src/libultra/io/vimodentsclan2.c | 47 + src/libultra/io/vimodentsclpf1.c | 47 + src/libultra/io/vimodentsclpf2.c | 47 + src/libultra/io/vimodentsclpn1.c | 47 + src/libultra/io/vimodentsclpn2.c | 47 + src/libultra/io/vimodepalhaf1.c | 47 + src/libultra/io/vimodepalhan1.c | 47 + src/libultra/io/vimodepalhpf1.c | 47 + src/libultra/io/vimodepalhpf2.c | 47 + src/libultra/io/vimodepalhpn1.c | 47 + src/libultra/io/vimodepalhpn2.c | 47 + src/libultra/io/vimodepallaf1.c | 47 + src/libultra/io/vimodepallaf2.c | 47 + src/libultra/io/vimodepallan1.c | 56 +- src/libultra/io/vimodepallan2.c | 47 + src/libultra/io/vimodepallpf1.c | 47 + src/libultra/io/vimodepallpf2.c | 47 + src/libultra/io/vimodepallpn1.c | 47 + src/libultra/io/vimodepallpn2.c | 47 + src/libultra/io/vitbl.c | 1966 ++++++++++++++++++++++++++++++ 58 files changed, 4533 insertions(+), 108 deletions(-) diff --git a/include/ultra64/viint.h b/include/ultra64/viint.h index 6fbdb023df..2df9936405 100644 --- a/include/ultra64/viint.h +++ b/include/ultra64/viint.h @@ -35,5 +35,12 @@ #define ORIGIN(v) (v) #define VINTR(v) (v) #define HSTART(start, end) START(start, end) +#define VSTART(start, end) START(start, end) + +#ifdef BBPLAYER +#define VI_CTRL_PIXEL_ADV_DEFAULT VI_CTRL_PIXEL_ADV(1) +#else +#define VI_CTRL_PIXEL_ADV_DEFAULT VI_CTRL_PIXEL_ADV(3) +#endif #endif diff --git a/src/libultra/io/vimodefpalhaf1.c b/src/libultra/io/vimodefpalhaf1.c index 8b13789179..6444c97a4d 100644 --- a/src/libultra/io/vimodefpalhaf1.c +++ b/src/libultra/io/vimodefpalhaf1.c @@ -1 +1,48 @@ +/** + * @file vimodefpalhaf1.c + * + * FPAL HAF1 Video Mode + * + * H = High Resolution + * A = Anti-Aliased + * F = Deflickered Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeFpalHaf1 = { + OS_VI_FPAL_HAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodefpalhan1.c b/src/libultra/io/vimodefpalhan1.c index 8b13789179..e6243a01f6 100644 --- a/src/libultra/io/vimodefpalhan1.c +++ b/src/libultra/io/vimodefpalhan1.c @@ -1 +1,48 @@ +/** + * @file vimodefpalhan1.c + * + * FPAL HAN1 Video Mode + * + * H = High Resolution + * A = Anti-Aliased + * N = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeFpalHan1 = { + OS_VI_FPAL_HAN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodefpalhpf1.c b/src/libultra/io/vimodefpalhpf1.c index 8b13789179..af827fa466 100644 --- a/src/libultra/io/vimodefpalhpf1.c +++ b/src/libultra/io/vimodefpalhpf1.c @@ -1 +1,48 @@ +/** + * @file vimodefpalhpf1.c + * + * FPAL HPF1 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * F = Deflickered Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeFpalHpf1 = { + OS_VI_FPAL_HPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodefpalhpf2.c b/src/libultra/io/vimodefpalhpf2.c index 8b13789179..3ce09602ab 100644 --- a/src/libultra/io/vimodefpalhpf2.c +++ b/src/libultra/io/vimodefpalhpf2.c @@ -1 +1,48 @@ +/** + * @file vimodefpalhpf2.c + * + * FPAL HPF2 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * F = Deflickered Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeFpalHpf2 = { + OS_VI_FPAL_HPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(0.5, 0.5), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodefpalhpn1.c b/src/libultra/io/vimodefpalhpn1.c index 8b13789179..f789c3baf0 100644 --- a/src/libultra/io/vimodefpalhpn1.c +++ b/src/libultra/io/vimodefpalhpn1.c @@ -1 +1,48 @@ +/** + * @file vimodefpalhpn1.c + * + * FPAL HPN1 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * N = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeFpalHpn1 = { + OS_VI_FPAL_HPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodefpalhpn2.c b/src/libultra/io/vimodefpalhpn2.c index 8b13789179..483dbd8f74 100644 --- a/src/libultra/io/vimodefpalhpn2.c +++ b/src/libultra/io/vimodefpalhpn2.c @@ -1 +1,48 @@ +/** + * @file vimodefpalhpn2.c + * + * FPAL HPN2 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * N = Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeFpalHpn2 = { + OS_VI_FPAL_HPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_3 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodefpallaf1.c b/src/libultra/io/vimodefpallaf1.c index 8b13789179..cd508f053b 100644 --- a/src/libultra/io/vimodefpallaf1.c +++ b/src/libultra/io/vimodefpallaf1.c @@ -1 +1,48 @@ +/** + * @file vimodefpallaf1.c + * + * FPAL LAF1 Video Mode + * + * L = Low Resolution + * A = Anti-Aliased + * F = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeFpalLaf1 = { + OS_VI_FPAL_LAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodefpallaf2.c b/src/libultra/io/vimodefpallaf2.c index 8b13789179..5dd7b99b29 100644 --- a/src/libultra/io/vimodefpallaf2.c +++ b/src/libultra/io/vimodefpallaf2.c @@ -1 +1,48 @@ +/** + * @file vimodefpallaf2.c + * + * FPAL LAF2 Video Mode + * + * L = Low Resolution + * A = Anti-Aliased + * F = Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeFpalLaf2 = { + OS_VI_FPAL_LAF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodefpallan1.c b/src/libultra/io/vimodefpallan1.c index 5fb019cdfb..aad8d8a5ff 100644 --- a/src/libultra/io/vimodefpallan1.c +++ b/src/libultra/io/vimodefpallan1.c @@ -8,7 +8,7 @@ * N = Deinterlaced * 1 = 16-bit Framebuffer */ -#include "global.h" +#include "ultra64.h" #include "ultra64/viint.h" OSViMode osViModeFpalLan1 = { @@ -16,31 +16,33 @@ OSViMode osViModeFpalLan1 = { { // comRegs VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 | - VI_CTRL_PIXEL_ADV(3), // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(625), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, }, - { // fldRegs - { - // [0] - ORIGIN(640), // origin - SCALE(1, 0), // yScale - START(47, 617), // vStart - BURST(107, 2, 9, 0), // vBurst - VINTR(2), // vIntr - }, - { - // [1] - ORIGIN(640), // origin - SCALE(1, 0), // yScale - START(47, 617), // vStart - BURST(107, 2, 9, 0), // vBurst - VINTR(2), // vIntr - } }, }; diff --git a/src/libultra/io/vimodefpallan2.c b/src/libultra/io/vimodefpallan2.c index 8b13789179..a1224f5e73 100644 --- a/src/libultra/io/vimodefpallan2.c +++ b/src/libultra/io/vimodefpallan2.c @@ -1 +1,48 @@ +/** + * @file vimodefpallan2.c + * + * FPAL LAN2 Video Mode + * + * L = Low Resolution + * A = Anti-Aliased + * N = Deinterlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeFpalLan2 = { + OS_VI_FPAL_LAN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodefpallpf1.c b/src/libultra/io/vimodefpallpf1.c index 8b13789179..ed14626d8c 100644 --- a/src/libultra/io/vimodefpallpf1.c +++ b/src/libultra/io/vimodefpallpf1.c @@ -1 +1,48 @@ +/** + * @file vimodefpallpf1.c + * + * FPAL LPF1 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * F = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeFpalLpf1 = { + OS_VI_FPAL_LPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodefpallpf2.c b/src/libultra/io/vimodefpallpf2.c index 8b13789179..9603b26192 100644 --- a/src/libultra/io/vimodefpallpf2.c +++ b/src/libultra/io/vimodefpallpf2.c @@ -1 +1,48 @@ +/** + * @file vimodefpallpf2.c + * + * FPAL LPF2 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * F = Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeFpalLpf2 = { + OS_VI_FPAL_LPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodefpallpn1.c b/src/libultra/io/vimodefpallpn1.c index 8b13789179..2aa76cfff4 100644 --- a/src/libultra/io/vimodefpallpn1.c +++ b/src/libultra/io/vimodefpallpn1.c @@ -1 +1,48 @@ +/** + * @file vimodefpallpn1.c + * + * FPAL LPN1 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * N = Deinterlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeFpalLpn1 = { + OS_VI_FPAL_LPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodefpallpn2.c b/src/libultra/io/vimodefpallpn2.c index 8b13789179..7f6938a323 100644 --- a/src/libultra/io/vimodefpallpn2.c +++ b/src/libultra/io/vimodefpallpn2.c @@ -1 +1,48 @@ +/** + * @file vimodefpallpn2.c + * + * FPAL LPN2 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * N = Deinterlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeFpalLpn2 = { + OS_VI_FPAL_LPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodempalhaf1.c b/src/libultra/io/vimodempalhaf1.c index 8b13789179..7eb17048e0 100644 --- a/src/libultra/io/vimodempalhaf1.c +++ b/src/libultra/io/vimodempalhaf1.c @@ -1 +1,48 @@ +/** + * @file vimodempalhaf1.c + * + * MPAL HAF1 Video Mode + * + * H = High Resolution + * A = Anti-Aliased + * F = Deflickered Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeMpalHaf1 = { + OS_VI_MPAL_HAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + //[0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + //[1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodempalhan1.c b/src/libultra/io/vimodempalhan1.c index 8b13789179..57e594b3d9 100644 --- a/src/libultra/io/vimodempalhan1.c +++ b/src/libultra/io/vimodempalhan1.c @@ -1 +1,48 @@ +/** + * @file vimodempalhan1.c + * + * MPAL HAN1 Video Mode + * + * H = High Resolution + * A = Anti-Aliased + * N = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeMpalHan1 = { + OS_VI_MPAL_HAN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodempalhpf1.c b/src/libultra/io/vimodempalhpf1.c index 8b13789179..6441ef2800 100644 --- a/src/libultra/io/vimodempalhpf1.c +++ b/src/libultra/io/vimodempalhpf1.c @@ -1 +1,48 @@ +/** + * @file vimodempalhpf1.c + * + * MPAL HPF1 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * F = Deflickered Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeMpalHpf1 = { + OS_VI_MPAL_HPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodempalhpf2.c b/src/libultra/io/vimodempalhpf2.c index 8b13789179..e853874fb4 100644 --- a/src/libultra/io/vimodempalhpf2.c +++ b/src/libultra/io/vimodempalhpf2.c @@ -1 +1,48 @@ +/** + * @file vimodempalhpf2.c + * + * MPAL HPF2 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * F = Deflickered Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeMpalHpf2 = { + OS_VI_MPAL_HPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(0.5, 0.5), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodempalhpn1.c b/src/libultra/io/vimodempalhpn1.c index 8b13789179..4a4c22e229 100644 --- a/src/libultra/io/vimodempalhpn1.c +++ b/src/libultra/io/vimodempalhpn1.c @@ -1 +1,48 @@ +/** + * @file vimodempalhpn1.c + * + * MPAL HPN1 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * N = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeMpalHpn1 = { + OS_VI_MPAL_HPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodempalhpn2.c b/src/libultra/io/vimodempalhpn2.c index 8b13789179..fe8f7f6f30 100644 --- a/src/libultra/io/vimodempalhpn2.c +++ b/src/libultra/io/vimodempalhpn2.c @@ -1 +1,48 @@ +/** + * @file vimodempalhpn2.c + * + * MPAL HPN2 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * N = Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeMpalHpn2 = { + OS_VI_MPAL_HPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_3 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodempallaf1.c b/src/libultra/io/vimodempallaf1.c index 8b13789179..29f35cd454 100644 --- a/src/libultra/io/vimodempallaf1.c +++ b/src/libultra/io/vimodempallaf1.c @@ -1 +1,48 @@ +/** + * @file vimodempallaf1.c + * + * MPAL LAF1 Video Mode + * + * L = Low Resolution + * A = Anti-Aliased + * F = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeMpalLaf1 = { + OS_VI_MPAL_LAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodempallaf2.c b/src/libultra/io/vimodempallaf2.c index 8b13789179..783440a4ed 100644 --- a/src/libultra/io/vimodempallaf2.c +++ b/src/libultra/io/vimodempallaf2.c @@ -1 +1,48 @@ +/** + * @file vimodempallaf2.c + * + * MPAL LAF2 Video Mode + * + * L = Low Resolution + * A = Anti-Aliased + * F = Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeMpalLaf2 = { + OS_VI_MPAL_LAF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodempallan1.c b/src/libultra/io/vimodempallan1.c index 23d53987b0..5140c50e55 100644 --- a/src/libultra/io/vimodempallan1.c +++ b/src/libultra/io/vimodempallan1.c @@ -8,7 +8,7 @@ * N = Deinterlaced * 1 = 16-bit Framebuffer */ -#include "global.h" +#include "ultra64.h" #include "ultra64/viint.h" OSViMode osViModeMpalLan1 = { @@ -16,31 +16,33 @@ OSViMode osViModeMpalLan1 = { { // comRegs VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 | - VI_CTRL_PIXEL_ADV(3), // ctrl - WIDTH(320), // width - BURST(57, 30, 5, 70), // burst - VSYNC(525), // vSync - HSYNC(3089, 4), // hSync - LEAP(3097, 3098), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(525), // vSync + HSYNC(3089, 4), // hSync + LEAP(3097, 3098), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, }, - { // fldRegs - { - // [0] - ORIGIN(640), // origin - SCALE(1, 0), // yScale - START(37, 511), // vStart - BURST(4, 2, 14, 0), // vBurst - VINTR(2), // vIntr - }, - { - // [1] - ORIGIN(640), // origin - SCALE(1, 0), // yScale - START(37, 511), // vStart - BURST(4, 2, 14, 0), // vBurst - VINTR(2), // vIntr - } }, }; diff --git a/src/libultra/io/vimodempallan2.c b/src/libultra/io/vimodempallan2.c index 8b13789179..b3717e6c74 100644 --- a/src/libultra/io/vimodempallan2.c +++ b/src/libultra/io/vimodempallan2.c @@ -1 +1,48 @@ +/** + * @file vimodempallan2.c + * + * MPAL LAN2 Video Mode + * + * L = Low Resolution + * A = Anti-Aliased + * N = Deinterlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeMpalLan2 = { + OS_VI_MPAL_LAN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(525), // vSync + HSYNC(3089, 4), // hSync + LEAP(3097, 3098), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodempallpf1.c b/src/libultra/io/vimodempallpf1.c index 8b13789179..52e927bfab 100644 --- a/src/libultra/io/vimodempallpf1.c +++ b/src/libultra/io/vimodempallpf1.c @@ -1 +1,48 @@ +/** + * @file vimodempallpf1.c + * + * MPAL LPF1 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * F = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeMpalLpf1 = { + OS_VI_MPAL_LPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodempallpf2.c b/src/libultra/io/vimodempallpf2.c index 8b13789179..14a918a53d 100644 --- a/src/libultra/io/vimodempallpf2.c +++ b/src/libultra/io/vimodempallpf2.c @@ -1 +1,48 @@ +/** + * @file vimodempallpf2.c + * + * MPAL LPF2 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * F = Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeMpalLpf2 = { + OS_VI_MPAL_LPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodempallpn1.c b/src/libultra/io/vimodempallpn1.c index 8b13789179..ce35838b9e 100644 --- a/src/libultra/io/vimodempallpn1.c +++ b/src/libultra/io/vimodempallpn1.c @@ -1 +1,48 @@ +/** + * @file vimodempallpn1.c + * + * MPAL LPN1 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * N = Deinterlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeMpalLpn1 = { + OS_VI_MPAL_LPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(525), // vSync + HSYNC(3089, 4), // hSync + LEAP(3097, 3098), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodempallpn2.c b/src/libultra/io/vimodempallpn2.c index 8b13789179..1f35696e82 100644 --- a/src/libultra/io/vimodempallpn2.c +++ b/src/libultra/io/vimodempallpn2.c @@ -1 +1,48 @@ +/** + * @file vimodempallpn2.c + * + * MPAL LPN2 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * N = Deinterlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeMpalLpn2 = { + OS_VI_MPAL_LPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(525), // vSync + HSYNC(3089, 4), // hSync + LEAP(3097, 3098), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodentschaf1.c b/src/libultra/io/vimodentschaf1.c index 8b13789179..79b3987a0f 100644 --- a/src/libultra/io/vimodentschaf1.c +++ b/src/libultra/io/vimodentschaf1.c @@ -1 +1,48 @@ +/** + * @file vimodentschaf1.c + * + * NTSC HAF1 Video Mode + * + * H = High Resolution + * A = Anti-Aliased + * F = Deflickered Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeNtscHaf1 = { + OS_VI_NTSC_HAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodentschan1.c b/src/libultra/io/vimodentschan1.c index 8b13789179..994937aa75 100644 --- a/src/libultra/io/vimodentschan1.c +++ b/src/libultra/io/vimodentschan1.c @@ -1 +1,48 @@ +/** + * @file vimodentschan1.c + * + * NTSC HAN1 Video Mode + * + * H = High Resolution + * A = Anti-Aliased + * N = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeNtscHan1 = { + OS_VI_NTSC_HAN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodentschpf1.c b/src/libultra/io/vimodentschpf1.c index 8b13789179..a91addf6e2 100644 --- a/src/libultra/io/vimodentschpf1.c +++ b/src/libultra/io/vimodentschpf1.c @@ -1 +1,48 @@ +/** + * @file vimodentschpf1.c + * + * NTSC HPF1 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * F = Deflickered Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeNtscHpf1 = { + OS_VI_NTSC_HPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodentschpf2.c b/src/libultra/io/vimodentschpf2.c index 8b13789179..54b15f31be 100644 --- a/src/libultra/io/vimodentschpf2.c +++ b/src/libultra/io/vimodentschpf2.c @@ -1 +1,48 @@ +/** + * @file vimodentschpf2.c + * + * NTSC HPF2 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * F = Deflickered Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeNtscHpf2 = { + OS_VI_NTSC_HPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(0.5, 0.5), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodentschpn1.c b/src/libultra/io/vimodentschpn1.c index 8b13789179..83ffa0fd54 100644 --- a/src/libultra/io/vimodentschpn1.c +++ b/src/libultra/io/vimodentschpn1.c @@ -1 +1,48 @@ +/** + * @file vimodentschpn1.c + * + * NTSC HPN1 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * N = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeNtscHpn1 = { + OS_VI_NTSC_HPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodentschpn2.c b/src/libultra/io/vimodentschpn2.c index 8b13789179..5f3fbdf2d9 100644 --- a/src/libultra/io/vimodentschpn2.c +++ b/src/libultra/io/vimodentschpn2.c @@ -1 +1,48 @@ +/** + * @file vimodentschpn2.c + * + * NTSC HPN2 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * N = Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeNtscHpn2 = { + OS_VI_NTSC_HPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_3 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodentsclaf1.c b/src/libultra/io/vimodentsclaf1.c index 8b13789179..236200044d 100644 --- a/src/libultra/io/vimodentsclaf1.c +++ b/src/libultra/io/vimodentsclaf1.c @@ -1 +1,48 @@ +/** + * @file vimodentsclaf1.c + * + * NTSC LAF1 Video Mode + * + * L = Low Resolution + * A = Anti-Aliased + * F = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeNtscLaf1 = { + OS_VI_NTSC_LAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodentsclaf2.c b/src/libultra/io/vimodentsclaf2.c index 8b13789179..5b8d9194f1 100644 --- a/src/libultra/io/vimodentsclaf2.c +++ b/src/libultra/io/vimodentsclaf2.c @@ -1 +1,48 @@ +/** + * @file vimodentsclaf2.c + * + * NTSC LAF2 Video Mode + * + * L = Low Resolution + * A = Anti-Aliased + * F = Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeNtscLaf2 = { + OS_VI_NTSC_LAF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodentsclan1.c b/src/libultra/io/vimodentsclan1.c index 19a7160ac8..44f038a02c 100644 --- a/src/libultra/io/vimodentsclan1.c +++ b/src/libultra/io/vimodentsclan1.c @@ -8,7 +8,7 @@ * N = Deinterlaced * 1 = 16-bit Framebuffer */ -#include "global.h" +#include "ultra64.h" #include "ultra64/viint.h" OSViMode osViModeNtscLan1 = { @@ -16,31 +16,33 @@ OSViMode osViModeNtscLan1 = { { // comRegs VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 | - VI_CTRL_PIXEL_ADV(3), // ctrl - WIDTH(320), // width - BURST(57, 34, 5, 62), // burst - VSYNC(525), // vSync - HSYNC(3093, 0), // hSync - LEAP(3093, 3093), // leap - HSTART(108, 748), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(525), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, }, - { // fldRegs - { - // [0] - ORIGIN(640), // origin - SCALE(1, 0), // yScale - START(37, 511), // vStart - BURST(4, 2, 14, 0), // vBurst - VINTR(2), // vIntr - }, - { - // [1] - ORIGIN(640), // origin - SCALE(1, 0), // yScale - START(37, 511), // vStart - BURST(4, 2, 14, 0), // vBurst - VINTR(2), // vIntr - } }, }; diff --git a/src/libultra/io/vimodentsclan2.c b/src/libultra/io/vimodentsclan2.c index 8b13789179..a34f8ec300 100644 --- a/src/libultra/io/vimodentsclan2.c +++ b/src/libultra/io/vimodentsclan2.c @@ -1 +1,48 @@ +/** + * @file vimodentsclan2.c + * + * NTSC LAN2 Video Mode + * + * L = Low Resolution + * A = Anti-Aliased + * N = Deinterlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeNtscLan2 = { + OS_VI_NTSC_LAN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(525), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodentsclpf1.c b/src/libultra/io/vimodentsclpf1.c index 8b13789179..0824a29184 100644 --- a/src/libultra/io/vimodentsclpf1.c +++ b/src/libultra/io/vimodentsclpf1.c @@ -1 +1,48 @@ +/** + * @file vimodentsclpf1.c + * + * NTSC LPF1 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * F = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeNtscLpf1 = { + OS_VI_NTSC_LPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodentsclpf2.c b/src/libultra/io/vimodentsclpf2.c index 8b13789179..fccfcbbd33 100644 --- a/src/libultra/io/vimodentsclpf2.c +++ b/src/libultra/io/vimodentsclpf2.c @@ -1 +1,48 @@ +/** + * @file vimodentsclpf2.c + * + * NTSC LPF2 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * F = Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeNtscLpf2 = { + OS_VI_NTSC_LPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodentsclpn1.c b/src/libultra/io/vimodentsclpn1.c index 8b13789179..aabe7af792 100644 --- a/src/libultra/io/vimodentsclpn1.c +++ b/src/libultra/io/vimodentsclpn1.c @@ -1 +1,48 @@ +/** + * @file vimodentsclpn1.c + * + * NTSC LPN1 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * N = Deinterlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeNtscLpn1 = { + OS_VI_NTSC_LPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(525), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodentsclpn2.c b/src/libultra/io/vimodentsclpn2.c index 8b13789179..ce05176c3e 100644 --- a/src/libultra/io/vimodentsclpn2.c +++ b/src/libultra/io/vimodentsclpn2.c @@ -1 +1,48 @@ +/** + * @file vimodentsclpn2.c + * + * NTSC LPN2 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * N = Deinterlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeNtscLpn2 = { + OS_VI_NTSC_LPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(525), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodepalhaf1.c b/src/libultra/io/vimodepalhaf1.c index 8b13789179..af4d5de616 100644 --- a/src/libultra/io/vimodepalhaf1.c +++ b/src/libultra/io/vimodepalhaf1.c @@ -1 +1,48 @@ +/** + * @file vimodepalhaf1.c + * + * PAL HAF1 Video Mode + * + * H = High Resolution + * A = Anti-Aliased + * F = Deflickered Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModePalHaf1 = { + OS_VI_PAL_HAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodepalhan1.c b/src/libultra/io/vimodepalhan1.c index 8b13789179..7831490814 100644 --- a/src/libultra/io/vimodepalhan1.c +++ b/src/libultra/io/vimodepalhan1.c @@ -1 +1,48 @@ +/** + * @file vimodepalhan1.c + * + * PAL HAN1 Video Mode + * + * H = High Resolution + * A = Anti-Aliased + * N = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModePalHan1 = { + OS_VI_PAL_HAN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodepalhpf1.c b/src/libultra/io/vimodepalhpf1.c index 8b13789179..954c3a1199 100644 --- a/src/libultra/io/vimodepalhpf1.c +++ b/src/libultra/io/vimodepalhpf1.c @@ -1 +1,48 @@ +/** + * @file vimodepalhpf1.c + * + * PAL HPF1 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * F = Deflickered Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModePalHpf1 = { + OS_VI_PAL_HPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodepalhpf2.c b/src/libultra/io/vimodepalhpf2.c index 8b13789179..e87290f306 100644 --- a/src/libultra/io/vimodepalhpf2.c +++ b/src/libultra/io/vimodepalhpf2.c @@ -1 +1,48 @@ +/** + * @file vimodepalhpf2.c + * + * PAL HPF2 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * F = Deflickered Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModePalHpf2 = { + OS_VI_PAL_HPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(0.5, 0.5), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodepalhpn1.c b/src/libultra/io/vimodepalhpn1.c index 8b13789179..680e48bea8 100644 --- a/src/libultra/io/vimodepalhpn1.c +++ b/src/libultra/io/vimodepalhpn1.c @@ -1 +1,48 @@ +/** + * @file vimodepalhpn1.c + * + * PAL HPN1 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * N = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModePalHpn1 = { + OS_VI_PAL_HPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodepalhpn2.c b/src/libultra/io/vimodepalhpn2.c index 8b13789179..ca4d33c2c6 100644 --- a/src/libultra/io/vimodepalhpn2.c +++ b/src/libultra/io/vimodepalhpn2.c @@ -1 +1,48 @@ +/** + * @file vimodepalhpn2.c + * + * PAL HPN2 Video Mode + * + * H = High Resolution + * P = Point-Sampled + * N = Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModePalHpn2 = { + OS_VI_PAL_HPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_3 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodepallaf1.c b/src/libultra/io/vimodepallaf1.c index 8b13789179..de645b2919 100644 --- a/src/libultra/io/vimodepallaf1.c +++ b/src/libultra/io/vimodepallaf1.c @@ -1 +1,48 @@ +/** + * @file vimodepallaf1.c + * + * PAL LAF1 Video Mode + * + * L = Low Resolution + * A = Anti-Aliased + * F = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModePalLaf1 = { + OS_VI_PAL_LAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodepallaf2.c b/src/libultra/io/vimodepallaf2.c index 8b13789179..a1a4d8c9d3 100644 --- a/src/libultra/io/vimodepallaf2.c +++ b/src/libultra/io/vimodepallaf2.c @@ -1 +1,48 @@ +/** + * @file vimodepallaf2.c + * + * PAL LAF2 Video Mode + * + * L = Low Resolution + * A = Anti-Aliased + * F = Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModePalLaf2 = { + OS_VI_PAL_LAF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodepallan1.c b/src/libultra/io/vimodepallan1.c index 7a8db603f4..f129073406 100644 --- a/src/libultra/io/vimodepallan1.c +++ b/src/libultra/io/vimodepallan1.c @@ -8,7 +8,7 @@ * N = Deinterlaced * 1 = 16-bit Framebuffer */ -#include "global.h" +#include "ultra64.h" #include "ultra64/viint.h" OSViMode osViModePalLan1 = { @@ -16,31 +16,33 @@ OSViMode osViModePalLan1 = { { // comRegs VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 | - VI_CTRL_PIXEL_ADV(3), // ctrl - WIDTH(320), // width - BURST(58, 30, 4, 69), // burst - VSYNC(625), // vSync - HSYNC(3177, 23), // hSync - LEAP(3183, 3181), // leap - HSTART(128, 768), // hStart - SCALE(2, 0), // xScale - VCURRENT(0), // vCurrent + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, }, - { // fldRegs - { - // [0] - ORIGIN(640), // origin - SCALE(1, 0), // yScale - START(95, 569), // vStart - BURST(107, 2, 9, 0), // vBurst - VINTR(2), // vIntr - }, - { - // [1] - ORIGIN(640), // origin - SCALE(1, 0), // yScale - START(95, 569), // vStart - BURST(107, 2, 9, 0), // vBurst - VINTR(2), // vIntr - } }, }; diff --git a/src/libultra/io/vimodepallan2.c b/src/libultra/io/vimodepallan2.c index 8b13789179..310ab266c9 100644 --- a/src/libultra/io/vimodepallan2.c +++ b/src/libultra/io/vimodepallan2.c @@ -1 +1,48 @@ +/** + * @file vimodepallan2.c + * + * PAL LAN2 Video Mode + * + * L = Low Resolution + * A = Anti-Aliased + * N = Deinterlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModePalLan2 = { + OS_VI_PAL_LAN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodepallpf1.c b/src/libultra/io/vimodepallpf1.c index 8b13789179..5d10214ac9 100644 --- a/src/libultra/io/vimodepallpf1.c +++ b/src/libultra/io/vimodepallpf1.c @@ -1 +1,48 @@ +/** + * @file vimodepallpf1.c + * + * PAL LPF1 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * F = Interlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModePalLpf1 = { + OS_VI_PAL_LPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodepallpf2.c b/src/libultra/io/vimodepallpf2.c index 8b13789179..076b3199c3 100644 --- a/src/libultra/io/vimodepallpf2.c +++ b/src/libultra/io/vimodepallpf2.c @@ -1 +1,48 @@ +/** + * @file vimodepallpf2.c + * + * PAL LPF2 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * F = Interlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModePalLpf2 = { + OS_VI_PAL_LPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodepallpn1.c b/src/libultra/io/vimodepallpn1.c index 8b13789179..7eeb37f9e2 100644 --- a/src/libultra/io/vimodepallpn1.c +++ b/src/libultra/io/vimodepallpn1.c @@ -1 +1,48 @@ +/** + * @file vimodepallpn1.c + * + * PAL LPN1 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * N = Deinterlaced + * 1 = 16-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModePalLpn1 = { + OS_VI_PAL_LPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vimodepallpn2.c b/src/libultra/io/vimodepallpn2.c index 8b13789179..e460b87234 100644 --- a/src/libultra/io/vimodepallpn2.c +++ b/src/libultra/io/vimodepallpn2.c @@ -1 +1,48 @@ +/** + * @file vimodepallpn2.c + * + * PAL LPN2 Video Mode + * + * L = Low Resolution + * P = Point-Sampled + * N = Deinterlaced + * 2 = 32-bit Framebuffer + */ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModePalLpn2 = { + OS_VI_PAL_LPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + }, +}; diff --git a/src/libultra/io/vitbl.c b/src/libultra/io/vitbl.c index 8b13789179..8779396bbc 100644 --- a/src/libultra/io/vitbl.c +++ b/src/libultra/io/vitbl.c @@ -1 +1,1967 @@ +#include "ultra64.h" +#include "ultra64/viint.h" +OSViMode osViModeTable[] = { + { + OS_VI_NTSC_LPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(525), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_NTSC_LPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_NTSC_LAN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(525), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_NTSC_LAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_NTSC_LPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(525), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_NTSC_LPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_NTSC_LAN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(525), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_NTSC_LAF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_NTSC_HPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_NTSC_HPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_NTSC_HAN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_NTSC_HAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_NTSC_HPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_3 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_NTSC_HPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(57, 34, 5, 62), // burst + VSYNC(524), // vSync + HSYNC(3093, 0), // hSync + LEAP(3093, 3093), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(35, 509), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(0.5, 0.5), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_PAL_LPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_PAL_LPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_PAL_LAN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_PAL_LAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_PAL_LPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_PAL_LPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_PAL_LAN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_PAL_LAF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_PAL_HPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_PAL_HPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_PAL_HAN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_PAL_HAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_PAL_HPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_3 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(1, 0), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_PAL_HPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(93, 567), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(0.5, 0.5), // yScale + VSTART(95, 569), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_MPAL_LPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(525), // vSync + HSYNC(3089, 4), // hSync + LEAP(3097, 3098), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_MPAL_LPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_MPAL_LAN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(525), // vSync + HSYNC(3089, 4), // hSync + LEAP(3097, 3098), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_MPAL_LAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_MPAL_LPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(525), // vSync + HSYNC(3089, 4), // hSync + LEAP(3097, 3098), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_MPAL_LPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_MPAL_LAN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(525), // vSync + HSYNC(3089, 4), // hSync + LEAP(3097, 3098), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_MPAL_LAF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_MPAL_HPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_MPAL_HPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_MPAL_HAN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_MPAL_HAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + //[0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + //[1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_MPAL_HPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_3 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(1, 0), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_MPAL_HPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(57, 30, 5, 70), // burst + VSYNC(524), // vSync + HSYNC(3088, 0), // hSync + LEAP(3100, 3100), // leap + HSTART(108, 748), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(35, 509), // vStart + BURST(2, 2, 11, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(0.5, 0.5), // yScale + VSTART(37, 511), // vStart + BURST(4, 2, 14, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, +#if BUILD_VERSION >= VERSION_J + { + OS_VI_FPAL_LPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_2 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_FPAL_LPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_FPAL_LAN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_ANTIALIAS_MODE_1 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_FPAL_LAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(640), // origin + SCALE(1, 0.25), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(640), // origin + SCALE(1, 0.75), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_FPAL_LPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_ANTIALIAS_MODE_3 | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_FPAL_LPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_FPAL_LAN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(625), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_FPAL_LAF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(320), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(2, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0.25), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(1280), // origin + SCALE(1, 0.75), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_FPAL_HPN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_FPAL_HPF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_FPAL_HAN1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(1, 0), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_FPAL_HAF1, // type + { + // comRegs + VI_CTRL_TYPE_16 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_DIVOT_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(1280), // origin + SCALE(0.5, 0.5), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_FPAL_HPN2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_3 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(1280), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(1, 0), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(1, 0), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, + { + OS_VI_FPAL_HPF2, // type + { + // comRegs + VI_CTRL_TYPE_32 | VI_CTRL_GAMMA_DITHER_ON | VI_CTRL_GAMMA_ON | VI_CTRL_SERRATE_ON | + VI_CTRL_ANTIALIAS_MODE_2 | VI_CTRL_PIXEL_ADV_DEFAULT, // ctrl + WIDTH(640), // width + BURST(58, 30, 4, 69), // burst + VSYNC(624), // vSync + HSYNC(3177, 23), // hSync + LEAP(3183, 3181), // leap + HSTART(128, 768), // hStart + SCALE(1, 0), // xScale + VCURRENT(0), // vCurrent + }, + { + // fldRegs + { + // [0] + ORIGIN(2560), // origin + SCALE(0.5, 0.5), // yScale + VSTART(45, 615), // vStart + BURST(107, 2, 9, 0), // vBurst + VINTR(2), // vIntr + }, + { + // [1] + ORIGIN(5120), // origin + SCALE(0.5, 0.5), // yScale + VSTART(47, 617), // vStart + BURST(105, 2, 13, 0), // vBurst + VINTR(2), // vIntr + }, + }, + }, +#endif +}; From 94971a61b4eb0bf4d9437cb878263c96460aa5f9 Mon Sep 17 00:00:00 2001 From: Tharo <17233964+Thar0@users.noreply.github.com> Date: Fri, 10 Jan 2025 11:16:19 +0000 Subject: [PATCH 15/40] [iQue] Match handwritten asm files in libultra/os, match C replacements of osGetCount and __osSetCompare (#2413) * [iQue] Match handwritten asm files in libultra/os, match C replacements of osGetCount and __osSetCompare * Format * Adjust some label names in dcache functions --- Makefile | 3 +++ include/ultra64/asm.h | 3 +++ src/libultra/os/invaldcache.s | 30 +++++++++++---------------- src/libultra/os/invalicache.s | 16 +++++++-------- src/libultra/os/setintmask.s | 4 ++-- src/libultra/os/writebackdcache.s | 20 +++++++++--------- src/libultra/reg/_getcount.c | 32 +++++++++++++++++++++++++++++ src/libultra/reg/_setcompare.c | 20 ++++++++++++++++++ tools/disasm/ique-cn/files_boot.csv | 4 ++-- 9 files changed, 91 insertions(+), 41 deletions(-) create mode 100644 src/libultra/reg/_getcount.c create mode 100644 src/libultra/reg/_setcompare.c diff --git a/Makefile b/Makefile index bf8e86ca94..4e3b9affbe 100644 --- a/Makefile +++ b/Makefile @@ -648,6 +648,9 @@ $(BUILD_DIR)/src/libultra/%.o: CFLAGS := $(EGCS_CFLAGS) -mno-abicalls $(BUILD_DIR)/src/libultra/%.o: CCASFLAGS := $(EGCS_CCASFLAGS) $(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/libc/ll.o: OPTFLAGS := -O0 $(BUILD_DIR)/src/libultra/libc/llcvt.o: OPTFLAGS := -O0 diff --git a/include/ultra64/asm.h b/include/ultra64/asm.h index 02ef26e985..d887673fa6 100644 --- a/include/ultra64/asm.h +++ b/include/ultra64/asm.h @@ -78,6 +78,9 @@ #define MTC0(dst, src) \ .set noreorder; mtc0 dst, src; .set reorder +#define CACHE(op, base) \ + .set noreorder; cache op, base; .set reorder + #define CFC1(dst, src) \ .set noreorder; cfc1 dst, src; .set reorder #define CTC1(src, dst) \ diff --git a/src/libultra/os/invaldcache.s b/src/libultra/os/invaldcache.s index 22109e13aa..9cf3d82e05 100644 --- a/src/libultra/os/invaldcache.s +++ b/src/libultra/os/invaldcache.s @@ -20,56 +20,50 @@ * the entire data cache is invalidated. */ LEAF(osInvalDCache) -.set noreorder /* If the amount to invalidate is less than or equal to 0, return immediately */ blez a1, 3f - nop /* If the amount to invalidate is as large as or larger than * the data cache size, invalidate all */ li t3, DCACHE_SIZE bgeu a1, t3, 4f - nop /* Ensure end address doesn't wrap around and end up smaller * than the start address */ move t0, a0 addu t1, a0, a1 bgeu t0, t1, 3f - nop /* Mask start with cache line */ + addiu t1, t1, -DCACHE_LINESIZE andi t2, t0, DCACHE_LINEMASK /* If mask is not zero, the start is not cache aligned */ beqz t2, 1f - addiu t1, t1, -DCACHE_LINESIZE /* Subtract mask result to align to cache line */ subu t0, t0, t2 /* Hit-Writeback-Invalidate unaligned part */ - cache (CACH_PD | C_HWBINV), (t0) + CACHE( (CACH_PD | C_HWBINV), (t0)) /* If that's all there is to do, return early */ bgeu t0, t1, 3f - nop addiu t0, t0, DCACHE_LINESIZE 1: /* Mask end with cache line */ andi t2, t1, DCACHE_LINEMASK /* If mask is not zero, the end is not cache aligned */ - beqz t2, 1f - nop + beqz t2, 2f /* Subtract mask result to align to cache line */ subu t1, t1, t2 /* Hit-Writeback-Invalidate unaligned part */ - cache (CACH_PD | C_HWBINV), DCACHE_LINESIZE(t1) + CACHE( (CACH_PD | C_HWBINV), DCACHE_LINESIZE(t1)) /* If that's all there is to do, return early */ bltu t1, t0, 3f - nop /* Invalidate the rest */ -1: +2: /* Hit-Invalidate */ - cache (CACH_PD | C_HINV), (t0) - bltu t0, t1, 1b + CACHE( (CACH_PD | C_HINV), (t0)) +.set noreorder + bltu t0, t1, 2b addiu t0, t0, DCACHE_LINESIZE +.set reorder 3: jr ra - nop 4: li t0, K0BASE @@ -77,10 +71,10 @@ LEAF(osInvalDCache) addiu t1, t1, -DCACHE_LINESIZE 5: /* Index-Writeback-Invalidate */ - cache (CACH_PD | C_IWBINV), (t0) + CACHE( (CACH_PD | C_IWBINV), (t0)) +.set noreorder bltu t0, t1, 5b addiu t0, DCACHE_LINESIZE - jr ra - nop .set reorder + jr ra END(osInvalDCache) diff --git a/src/libultra/os/invalicache.s b/src/libultra/os/invalicache.s index 757215cf19..ef92d4cb08 100644 --- a/src/libultra/os/invalicache.s +++ b/src/libultra/os/invalicache.s @@ -5,42 +5,40 @@ .text LEAF(osInvalICache) -.set noreorder /* If the amount to invalidate is less than or equal to 0, return immediately */ blez a1, 2f - nop /* If the amount to invalidate is as large as or larger than */ /* the instruction cache size, invalidate all */ li t3, ICACHE_SIZE bgeu a1, t3, 3f - nop /* ensure end address doesn't wrap around and end up smaller */ /* than the start address */ move t0, a0 addu t1, a0, a1 bgeu t0, t1, 2f - nop /* Mask and subtract to align to cache line */ - andi t2, t0, ICACHE_LINEMASK addiu t1, t1, -ICACHE_LINESIZE + andi t2, t0, ICACHE_LINEMASK subu t0, t0, t2 1: - cache (CACH_PI | C_HINV), (t0) + CACHE( (CACH_PI | C_HINV), (t0)) +.set noreorder bltu t0, t1, 1b addiu t0, t0, ICACHE_LINESIZE +.set reorder 2: jr ra - nop 3: li t0, K0BASE addu t1, t0, t3 addiu t1, t1, -ICACHE_LINESIZE 4: - cache (CACH_PI | C_IINV), (t0) + CACHE( (CACH_PI | C_IINV), (t0)) +.set noreorder bltu t0, t1, 4b addiu t0, ICACHE_LINESIZE +.set reorder jr ra - nop .set reorder END(osInvalICache) diff --git a/src/libultra/os/setintmask.s b/src/libultra/os/setintmask.s index bf6bec020b..7b2f5be2f5 100644 --- a/src/libultra/os/setintmask.s +++ b/src/libultra/os/setintmask.s @@ -116,7 +116,7 @@ LEAF(osSetIntMask) la t0, __OSGlobalIntMask lw t3, (t0) /* Bitwise-OR in the disabled CPU bits of __OSGlobalIntMask */ - xor t0, t3, ~0 + xor t0, t3, 0xFFFFFFFF and t0, t0, SR_IMASK or v0, v0, t0 /* Fetch MI_INTR_MASK_REG */ @@ -125,7 +125,7 @@ LEAF(osSetIntMask) beqz t2, 1f srl t1, t3, RCP_IMASKSHIFT /* Bitwise-OR in the disabled RCP bits of __OSGlobalIntMask */ - xor t1, t1, ~0 + xor t1, t1, 0xFFFFFFFF and t1, t1, (RCP_IMASK >> RCP_IMASKSHIFT) or t2, t2, t1 1: diff --git a/src/libultra/os/writebackdcache.s b/src/libultra/os/writebackdcache.s index c7207c7e56..7b2af1b459 100644 --- a/src/libultra/os/writebackdcache.s +++ b/src/libultra/os/writebackdcache.s @@ -13,41 +13,41 @@ */ LEAF(osWritebackDCache) /* If the amount to write back is less than or equal to 0, return immediately */ - blez a1, .ret + blez a1, 2f /* If the amount to write back is as large as or larger than */ /* the data cache size, write back all */ li t3, DCACHE_SIZE - bgeu a1, t3, .all + bgeu a1, t3, 3f /* ensure end address doesn't wrap around and end up smaller */ /* than the start address */ move t0, a0 addu t1, a0, a1 - bgeu t0, t1, .ret + bgeu t0, t1, 2f /* Mask and subtract to align to cache line */ - andi t2, t0, DCACHE_LINEMASK addiu t1, t1, -DCACHE_LINESIZE + andi t2, t0, DCACHE_LINEMASK subu t0, t0, t2 1: + CACHE( (CACH_PD | C_HWB), (t0)) .set noreorder - cache (CACH_PD | C_HWB), (t0) bltu t0, t1, 1b addiu t0, t0, DCACHE_LINESIZE .set reorder -.ret: +2: jr ra /* same as osWritebackDCacheAll in operation */ -.all: +3: li t0, K0BASE addu t1, t0, t3 addiu t1, t1, -DCACHE_LINESIZE -1: +4: + CACHE( (CACH_PD | C_IWBINV), (t0)) .set noreorder - cache (CACH_PD | C_IWBINV), (t0) - bltu t0, t1, 1b + bltu t0, t1, 4b addiu t0, DCACHE_LINESIZE .set reorder jr ra diff --git a/src/libultra/reg/_getcount.c b/src/libultra/reg/_getcount.c new file mode 100644 index 0000000000..53073df994 --- /dev/null +++ b/src/libultra/reg/_getcount.c @@ -0,0 +1,32 @@ +#ifdef BBPLAYER +#include "ultra64.h" + +u32 __osBbLastRCount; +u32 __osBbRCountWraps; +u32 __osBbLastVCount; +u32 __osBbVCountWraps; + +u32 osGetCount(void) { + u32 count; + u32 mask = __osDisableInt(); + + __asm__("mfc0 %0, $%1" : "=r"(count) : "i"(C0_COUNT)); + + if (count < __osBbLastRCount) { + __osBbRCountWraps++; + } + __osBbLastRCount = count; + + count = (((u64)__osBbRCountWraps << 32) | count) * 125ull / 192ull; + + if (count < __osBbLastVCount) { + __osBbVCountWraps++; + } + __osBbLastVCount = count; + + __osRestoreInt(mask); + + return count; +} + +#endif diff --git a/src/libultra/reg/_setcompare.c b/src/libultra/reg/_setcompare.c new file mode 100644 index 0000000000..810afcd8fb --- /dev/null +++ b/src/libultra/reg/_setcompare.c @@ -0,0 +1,20 @@ +#ifdef BBPLAYER +#include "ultra64.h" + +extern u32 __osBbLastRCount; +extern u32 __osBbRCountWraps; +extern u32 __osBbLastVCount; +extern u32 __osBbVCountWraps; + +void __osSetCompare(u32 v) { + if (v != 0) { + u32 mask = __osDisableInt(); + u32 wraps = (v < __osBbLastVCount) ? (__osBbVCountWraps + 1) : __osBbVCountWraps; + + v = (((u64)wraps << 32) | v) * 192ull / 125ull; + + __osRestoreInt(mask); + } + __asm__("mtc0 %0, $%1" ::"r"(v), "i"(C0_COMPARE)); +} +#endif diff --git a/tools/disasm/ique-cn/files_boot.csv b/tools/disasm/ique-cn/files_boot.csv index 0aae45345e..da3d146a1f 100644 --- a/tools/disasm/ique-cn/files_boot.csv +++ b/tools/disasm/ique-cn/files_boot.csv @@ -59,8 +59,8 @@ B50,80000FA0,src/boot/zlib 6F10,80007360,src/libultra/os/seteventmesg 6FE0,80007430,src/libultra/os/getcause 6FF0,80007440,src/libultra/os/setwatchlo -7000,80007450,src/libultra/os/getcount -7100,80007550,src/libultra/os/setcompare +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 From 8118370f4e47fbef1a4bea3fd4bce45adc25a902 Mon Sep 17 00:00:00 2001 From: cadmic Date: Fri, 10 Jan 2025 04:03:51 -0800 Subject: [PATCH 16/40] Only build .o files listed in the spec (#2410) * Only build .o files listed in the spec * Remove useless CPP guards --- Makefile | 28 ++++++---------------------- src/code/db_camera.c | 4 ---- src/code/fault_gc.c | 4 ---- src/code/fault_gc_drawer.c | 4 ---- src/code/fault_n64.c | 4 ---- src/libc64/__osMalloc_gc.c | 4 ---- src/libc64/__osMalloc_n64.c | 4 ---- src/n64dd/n64dd_error_textures.c | 4 ---- 8 files changed, 6 insertions(+), 50 deletions(-) diff --git a/Makefile b/Makefile index 4e3b9affbe..046fc6802a 100644 --- a/Makefile +++ b/Makefile @@ -412,11 +412,8 @@ LDSCRIPT := $(ROM:.z64=.ld) # description of ROM segments SPEC := spec -ifeq ($(COMPILER),ido) -SRC_DIRS := $(shell find src -type d -not -path src/gcc_fix) -else SRC_DIRS := $(shell find src -type d) -endif +UNDECOMPILED_DATA_DIRS := $(shell find data -type d) ifneq ($(wildcard $(EXTRACTED_DIR)/assets/audio),) SAMPLE_EXTRACT_DIRS := $(shell find $(EXTRACTED_DIR)/assets/audio/samples -type d) @@ -495,30 +492,17 @@ 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) \ $(foreach f,$(wildcard assets/text/*.c),$(BUILD_DIR)/$(f:.c=.o)) -UNDECOMPILED_DATA_DIRS := $(shell find data -type d) +# 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') -BASEROM_BIN_FILES := $(wildcard $(EXTRACTED_DIR)/baserom/*) - -# source files -ASSET_C_FILES_EXTRACTED := $(filter-out %.inc.c,$(foreach dir,$(ASSET_BIN_DIRS_EXTRACTED),$(wildcard $(dir)/*.c))) -ASSET_C_FILES_COMMITTED := $(filter-out %.inc.c,$(foreach dir,$(ASSET_BIN_DIRS_COMMITTED),$(wildcard $(dir)/*.c))) -SRC_C_FILES := $(filter-out %.inc.c,$(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c))) -S_FILES := $(foreach dir,$(SRC_DIRS) $(UNDECOMPILED_DATA_DIRS),$(wildcard $(dir)/*.s)) -O_FILES := $(foreach f,$(S_FILES:.s=.o),$(BUILD_DIR)/$f) \ - $(foreach f,$(SRC_C_FILES:.c=.o),$(BUILD_DIR)/$f) \ - $(foreach f,$(ASSET_C_FILES_EXTRACTED:.c=.o),$(f:$(EXTRACTED_DIR)/%=$(BUILD_DIR)/%)) \ - $(foreach f,$(ASSET_C_FILES_COMMITTED:.c=.o),$(BUILD_DIR)/$f) \ - $(foreach f,$(BASEROM_BIN_FILES),$(BUILD_DIR)/baserom/$(notdir $f).o) \ - $(BUILD_DIR)/src/code/z_message_z_game_over.o \ - $(BUILD_DIR)/src/makerom/ipl3.o - -OVL_RELOC_FILES := $(shell $(CPP) $(CPPFLAGS) $(SPEC) | $(BUILD_DIR_REPLACE) | grep -o '[^"]*_reloc.o' ) +# Split out reloc files +O_FILES := $(filter-out %_reloc.o,$(SPEC_O_FILES)) +OVL_RELOC_FILES := $(filter %_reloc.o,$(SPEC_O_FILES)) # Automatic dependency files # (Only asm_processor dependencies and reloc dependencies are handled for now) DEP_FILES := $(O_FILES:.o=.asmproc.d) $(OVL_RELOC_FILES:.o=.d) - TEXTURE_FILES_PNG_EXTRACTED := $(foreach dir,$(ASSET_BIN_DIRS_EXTRACTED),$(wildcard $(dir)/*.png)) TEXTURE_FILES_PNG_COMMITTED := $(foreach dir,$(ASSET_BIN_DIRS_COMMITTED),$(wildcard $(dir)/*.png)) TEXTURE_FILES_JPG_EXTRACTED := $(foreach dir,$(ASSET_BIN_DIRS_EXTRACTED),$(wildcard $(dir)/*.jpg)) diff --git a/src/code/db_camera.c b/src/code/db_camera.c index 7d81dafc9c..242609295d 100644 --- a/src/code/db_camera.c +++ b/src/code/db_camera.c @@ -1,7 +1,5 @@ #include "global.h" -#if DEBUG_FEATURES - #define DEBUG_CAM_CONTROLLER_PORT 2 static PlayState* sPlay; @@ -2368,5 +2366,3 @@ void func_800BB060(void) { int func_800BB06C(void) { return sDebugCamPtr->unk_00 == 2 && sDebugCamAnim.unk_0A != 0; } - -#endif diff --git a/src/code/fault_gc.c b/src/code/fault_gc.c index 9c0c35c78e..5e0ce4c905 100644 --- a/src/code/fault_gc.c +++ b/src/code/fault_gc.c @@ -40,8 +40,6 @@ * 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. */ -#if !PLATFORM_N64 - #pragma increment_block_number "gc-eu:160 gc-eu-mq:160 gc-eu-mq-dbg:160 gc-jp:176 gc-jp-ce:176 gc-jp-mq:176 gc-us:176" \ "gc-us-mq:176" @@ -1340,5 +1338,3 @@ NORETURN void Fault_AddHungupAndCrash(const char* file, int line) { sprintf(msg, "HungUp %s:%d", file, line); Fault_AddHungupAndCrashImpl(msg, NULL); } - -#endif diff --git a/src/code/fault_gc_drawer.c b/src/code/fault_gc_drawer.c index ba294f52d9..9d3478a48f 100644 --- a/src/code/fault_gc_drawer.c +++ b/src/code/fault_gc_drawer.c @@ -9,8 +9,6 @@ #include "terminal.h" #pragma increment_block_number "gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" -#if !PLATFORM_N64 - typedef struct FaultDrawer { /* 0x00 */ u16* fb; /* 0x04 */ u16 w; @@ -344,5 +342,3 @@ void Fault_InitDrawer(void) { bcopy(&sFaultDrawerDefault, &sFaultDrawer, sizeof(FaultDrawer)); sFaultDrawer.fb = (u16*)(PHYS_TO_K0(osMemSize) - sizeof(u16[SCREEN_HEIGHT][SCREEN_WIDTH])); } - -#endif diff --git a/src/code/fault_n64.c b/src/code/fault_n64.c index 7ea68abeb8..720307c0a1 100644 --- a/src/code/fault_n64.c +++ b/src/code/fault_n64.c @@ -1,5 +1,3 @@ -#if PLATFORM_N64 - #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" @@ -849,5 +847,3 @@ NORETURN void Fault_AddHungupAndCrash(const char* file, int line) { sprintf(msg, "HungUp %s:%d", file, line); Fault_AddHungupAndCrashImpl(msg, NULL); } - -#endif diff --git a/src/libc64/__osMalloc_gc.c b/src/libc64/__osMalloc_gc.c index 0338ecf3f8..025c21bff9 100644 --- a/src/libc64/__osMalloc_gc.c +++ b/src/libc64/__osMalloc_gc.c @@ -3,8 +3,6 @@ #include "libc64/os_malloc.h" #include "terminal.h" -#if !PLATFORM_N64 - #define FILL_ALLOC_BLOCK_FLAG (1 << 0) #define FILL_FREE_BLOCK_FLAG (1 << 1) #define CHECK_FREE_BLOCK_FLAG (1 << 2) @@ -891,5 +889,3 @@ u8 ArenaImpl_GetAllocFailures(Arena* arena) { return arena->allocFailures; } #endif - -#endif diff --git a/src/libc64/__osMalloc_n64.c b/src/libc64/__osMalloc_n64.c index 8efb4ec6c8..56996feac9 100644 --- a/src/libc64/__osMalloc_n64.c +++ b/src/libc64/__osMalloc_n64.c @@ -2,8 +2,6 @@ #include "fault.h" #include "libc64/os_malloc.h" -#if PLATFORM_N64 - #define NODE_MAGIC 0x7373 #define NODE_IS_VALID(node) ((node)->magic == NODE_MAGIC) @@ -470,5 +468,3 @@ s32 __osCheckArena(Arena* arena) { u8 ArenaImpl_GetAllocFailures(Arena* arena) { return arena->allocFailures; } - -#endif diff --git a/src/n64dd/n64dd_error_textures.c b/src/n64dd/n64dd_error_textures.c index 037ed7835b..d115fdd6ef 100644 --- a/src/n64dd/n64dd_error_textures.c +++ b/src/n64dd/n64dd_error_textures.c @@ -1,7 +1,5 @@ #include "ultra64.h" -#if PLATFORM_N64 - u64 gN64DDError41Texs[2][0x600 / sizeof(u64)] = { { #include "assets/n64dd/error_textures/n64dd_error_41_jpn.i4.inc.c" @@ -19,5 +17,3 @@ u64 gN64DDPleaseReadManualTexs[2][0x2800 / sizeof(u64)] = { #include "assets/n64dd/error_textures/n64dd_please_read_manual_eng.i4.inc.c" }, }; - -#endif From 84e5afabf946f2ca4b19afbddbd7e23f1feadf3b Mon Sep 17 00:00:00 2001 From: cadmic Date: Fri, 10 Jan 2025 04:53:28 -0800 Subject: [PATCH 17/40] [iQue] Update incbin addresses (#2418) --- baseroms/ique-cn/config.yml | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/baseroms/ique-cn/config.yml b/baseroms/ique-cn/config.yml index 02fcba20a4..86bceb7339 100644 --- a/baseroms/ique-cn/config.yml +++ b/baseroms/ique-cn/config.yml @@ -1,45 +1,45 @@ dmadata_start: 0xB7A0 text_lang: CN -incbins: # TODO: fix these +incbins: - name: ipl3 segment: makerom vram: 0x80000040 size: 0xFC0 - name: rspbootText segment: boot - vram: 0x800065C0 - size: 0x160 + vram: 0x80009C30 + size: 0xD0 - name: aspMainText segment: code - vram: 0x800E3600 + vram: 0x800EBF70 size: 0xFB0 - - name: gspF3DZEX2_NoN_PosLight_fifoText - segment: code - vram: 0x800E45B0 - size: 0x1390 - name: gspS2DEX2d_fifoText segment: code - vram: 0x800E5940 + vram: 0x800ECF20 size: 0x18C0 - name: njpgdspMainText segment: code - vram: 0x800E7200 + vram: 0x800EE7E0 size: 0xAF0 - name: aspMainData segment: code - vram: 0x80114990 + vram: 0x8011FE20 size: 0x2E0 + - name: gspF3DZEX2_NoN_PosLight_fifoText + segment: code + vram: 0x80120100 + size: 0x1630 - name: gspF3DZEX2_NoN_PosLight_fifoData segment: code - vram: 0x80114C70 + vram: 0x80121730 size: 0x420 - name: gspS2DEX2d_fifoData segment: code - vram: 0x80115090 + vram: 0x80121B50 size: 0x390 - name: njpgdspMainData segment: code - vram: 0x80115420 + vram: 0x80121EE0 size: 0x60 variables: gMtxClear: 0x80106980 From 26f91bd3bb51bcac0dc06f21f345beedfe663bcb Mon Sep 17 00:00:00 2001 From: cadmic Date: Fri, 10 Jan 2025 05:31:20 -0800 Subject: [PATCH 18/40] [iQue] Match gzip/zlib decompression (#2416) * [iQue] Match gzip/zlib decompression Co-authored-by: Anghelo Carvajal * Update missed renames in disassembly * Fix some formatting --------- Co-authored-by: Anghelo Carvajal --- Makefile | 2 +- include/functions.h | 4 + spec | 4 + src/boot/inflate.c | 1003 +++++++++++++++++++++++++++ src/boot/z_std_dma.c | 6 + tools/disasm/ique-cn/files_boot.csv | 6 +- tools/disasm/ique-cn/functions.txt | 20 +- 7 files changed, 1039 insertions(+), 6 deletions(-) create mode 100644 src/boot/inflate.c diff --git a/Makefile b/Makefile index 046fc6802a..47f82a7c24 100644 --- a/Makefile +++ b/Makefile @@ -569,9 +569,9 @@ 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/z_locale.o EGCS_O_FILES += $(BUILD_DIR)/src/boot/z_std_dma.o -EGCS_O_FILES += $(BUILD_DIR)/src/boot/zlib.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 diff --git a/include/functions.h b/include/functions.h index 7a114f73c5..092616bcee 100644 --- a/include/functions.h +++ b/include/functions.h @@ -12,7 +12,11 @@ void ViConfig_UpdateBlack(void); void* Yaz0_FirstDMA(void); void* Yaz0_NextDMA(u8* curSrcPos); void Yaz0_DecompressImpl(u8* src, u8* dst); +#if !PLATFORM_IQUE 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 diff --git a/spec b/spec index 4260c50016..f68610d9ea 100644 --- a/spec +++ b/spec @@ -23,7 +23,11 @@ beginseg #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" diff --git a/src/boot/inflate.c b/src/boot/inflate.c new file mode 100644 index 0000000000..c0467dd38c --- /dev/null +++ b/src/boot/inflate.c @@ -0,0 +1,1003 @@ +/* Not copyrighted 1992 by Mark Adler + version c10p1, 10 January 1993 */ + +/* You can do whatever you like with this source file, though I would + prefer that if you modify it and redistribute it that you include + comments to that effect with your name and the date. Thank you. + [The history has been moved to the file ChangeLog.] + */ + +/* + Inflate deflated (PKZIP's method 8 compressed) data. The compression + method searches for as much of the current string of bytes (up to a + length of 258) in the previous 32K bytes. If it doesn't find any + matches (of at least length 3), it codes the next byte. Otherwise, it + codes the length of the matched string and its distance backwards from + the current position. There is a single Huffman code that codes both + single bytes (called "literals") and match lengths. A second Huffman + code codes the distance information, which follows a length code. Each + length or distance code actually represents a base value and a number + of "extra" (sometimes zero) bits to get to add to the base value. At + the end of each deflated block is a special end-of-block (EOB) literal/ + length code. The decoding process is basically: get a literal/length + code; if EOB then done; if a literal, emit the decoded byte; if a + length then get the distance and emit the referred-to bytes from the + sliding window of previously emitted data. + + There are (currently) three kinds of inflate blocks: stored, fixed, and + dynamic. The compressor deals with some chunk of data at a time, and + decides which method to use on a chunk-by-chunk basis. A chunk might + typically be 32K or 64K. If the chunk is uncompressible, then the + "stored" method is used. In this case, the bytes are simply stored as + is, eight bits per byte, with none of the above coding. The bytes are + preceded by a count, since there is no longer an EOB code. + + If the data is compressible, then either the fixed or dynamic methods + are used. In the dynamic method, the compressed data is preceded by + an encoding of the literal/length and distance Huffman codes that are + to be used to decode this block. The representation is itself Huffman + coded, and so is preceded by a description of that code. These code + descriptions take up a little space, and so for small blocks, there is + a predefined set of codes, called the fixed codes. The fixed method is + used if the block codes up smaller that way (usually for quite small + chunks), otherwise the dynamic method is used. In the latter case, the + codes are customized to the probabilities in the current block, and so + can code it much better than the pre-determined fixed codes. + + The Huffman codes themselves are decoded using a multi-level table + lookup, in order to maximize the speed of decoding plus the speed of + building the decoding tables. See the comments below that precede the + lbits and dbits tuning parameters. + */ + +/* + Notes beyond the 1.93a appnote.txt: + + 1. Distance pointers never point before the beginning of the output + stream. + 2. Distance pointers can point back across blocks, up to 32k away. + 3. There is an implied maximum of 7 bits for the bit length table and + 15 bits for the actual data. + 4. If only one code exists, then it is encoded using one bit. (Zero + would be more efficient, but perhaps a little confusing.) If two + codes exist, they are coded using one bit each (0 and 1). + 5. There is no way of sending zero distance codes--a dummy must be + sent if there are none. (History: a pre 2.0 version of PKZIP would + store blocks with no distance codes, but this was discovered to be + too harsh a criterion.) Valid only for 1.93a. 2.04c does allow + zero distance codes, which is sent as one code of zero bits in + length. + 6. There are up to 286 literal/length codes. Code 256 represents the + end-of-block. Note however that the static length tree defines + 288 codes just to fill out the Huffman codes. Codes 286 and 287 + cannot be used though, since there is no length base or extra bits + defined for them. Similarly, there are up to 30 distance codes. + However, static trees define 32 codes (all 5 bits) to fill out the + Huffman codes, but the last two had better not show up in the data. + 7. Unzip can check dynamic Huffman blocks for complete code sets. + The exception is that a single code would not be complete (see #4). + 8. The five bits following the block type is really the number of + literal codes sent minus 257. + 9. Length codes 8,16,16 are interpreted as 13 length codes of 8 bits + (1+6+6). Therefore, to output three times the length, you output + three codes (1+1+1), whereas to output four times the same length, + you only need two codes (1+3). Hmm. + 10. In the tree reconstruction algorithm, Code = Code + Increment + only if BitLength(i) is not zero. (Pretty obvious.) + 11. Correction: 4 Bits: # of Bit Length codes - 4 (4 - 19) + 12. Note: length code 284 can represent 227-258, but length code 285 + really is 258. The last length deserves its own, short code + since it gets used a lot in very redundant files. The length + 258 is special since 258 - 3 (the min match length) is 255. + 13. The literal/length and distance code bit lengths are read as a + single stream of lengths. It is possible (and advantageous) for + a repeat code (16, 17, or 18) to go across the boundary between + the two sets of lengths. + */ + +#include "ultra64/ultratypes.h" +#include "libc/stddef.h" +#include "libc/stdint.h" +#include "alignment.h" +#include "attributes.h" +#include "z64dma.h" + +typedef u8 uch; +typedef u16 ush; +typedef u32 ulg; + +#define Trace(x) +#define Tracev(x) +#define Tracevv(x) +#define Tracecv(c, x) + +#define EOF -1 + +#define WSIZE 0x8000 +#define INBUFSIZ 0x1000 + +typedef struct GzipFileDescriptor { + uintptr_t addr; + s32 size; +} GzipFileDescriptor; + +GzipFileDescriptor ifd; + +unsigned insize; +unsigned inptr; +unsigned outcnt; + +static u8 inbuf[INBUFSIZ]; +static u8* output_ptr; + +int fill_inbuf(int eof_ok); +void flush_window(void); + +/* Huffman code lookup table entry--this entry is four bytes for machines + that have 16-bit pointers (e.g. PC's in the small or medium model). + Valid extra bits are 0..13. e == 15 is EOB (end of block), e == 16 + means that v is a literal, 16 < e < 32 means that v is a pointer to + the next table, which codes e - 16 bits, and lastly e == 99 indicates + an unused code. If a code with e == 99 is looked up, this implies an + error in the data. */ +struct huft { + uch e; /* number of extra bits or operation */ + uch b; /* number of bits in this code or subcode */ + union { + ush n; /* literal, length base, or distance base */ + struct huft* t; /* pointer to next level of table */ + } v; +}; + +/* Function prototypes */ +int huft_free(struct huft*); + +/* The inflate algorithm uses a sliding 32K byte window on the uncompressed + stream to find repeated byte strings. This is implemented here as a + circular buffer. The index is updated simply by incrementing and then + and'ing with 0x7fff (32K-1). */ +/* It is left to other modules to supply the 32K area. It is assumed + to be usable as if it were declared "uch slide[32768];" or as just + "uch *slide;" and then malloc'ed in the latter case. The definition + must be in unzip.h, included above. */ +/* unsigned wp; current position in slide */ +#define wp outcnt +#define flush_output(w) (wp = (w), flush_window()) + +/* Tables for deflate from PKZIP's appnote.txt. */ +static unsigned border[] = { /* Order of the bit length code lengths */ + 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 +}; +static ush cplens[] = { /* Copy lengths for literal codes 257..285 */ + 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, + 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 +}; +/* note: see note #13 above about the 258 in this list. */ +static ush cplext[] = { /* Extra bits for literal codes 257..285 */ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 99, 99 +}; /* 99==invalid */ +static ush cpdist[] = { /* Copy offsets for distance codes 0..29 */ + 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, + 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 +}; +static ush cpdext[] = { /* Extra bits for distance codes */ + 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13 +}; + +/* Macros for inflate() bit peeking and grabbing. + The usage is: + + NEEDBITS(j) + x = b & mask_bits[j]; + DUMPBITS(j) + + where NEEDBITS makes sure that b has at least j bits in it, and + DUMPBITS removes the bits from b. The macros use the variable k + for the number of bits in b. Normally, b and k are register + variables for speed, and are initialized at the beginning of a + routine that uses these macros from a global bit buffer and count. + The macros also use the variable w, which is a cached copy of wp. + + If we assume that EOB will be the longest code, then we will never + ask for bits with NEEDBITS that are beyond the end of the stream. + So, NEEDBITS should not read any more bytes than are needed to + meet the request. Then no bytes need to be "returned" to the buffer + at the end of the last block. + + However, this assumption is not true for fixed blocks--the EOB code + is 7 bits, but the other literal/length codes can be 8 or 9 bits. + (The EOB code is shorter than other codes because fixed blocks are + generally short. So, while a block always has an EOB, many other + literal/length codes have a significantly lower probability of + showing up at all.) However, by making the first table have a + lookup of seven bits, the EOB code will be found in that first + lookup, and so will not require that too many bits be pulled from + the stream. + */ + +ulg bb; /* bit buffer */ +unsigned bk; /* bits in bit buffer */ + +static ush mask_bits[] = { 0x0000, 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff, + 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff }; + +#define GETBYTE() (inptr < insize ? inbuf[inptr++] : fill_inbuf(0)) + +#define NEXTBYTE() (uch) GETBYTE() +#define NEEDBITS(n) \ + { \ + while (k < (n)) { \ + b |= ((ulg)NEXTBYTE()) << k; \ + k += 8; \ + } \ + } +#define DUMPBITS(n) \ + { \ + b >>= (n); \ + k -= (n); \ + } + +/* + Huffman code decoding is performed using a multi-level table lookup. + The fastest way to decode is to simply build a lookup table whose + size is determined by the longest code. However, the time it takes + to build this table can also be a factor if the data being decoded + is not very long. The most common codes are necessarily the + shortest codes, so those codes dominate the decoding time, and hence + the speed. The idea is you can have a shorter table that decodes the + shorter, more probable codes, and then point to subsidiary tables for + the longer codes. The time it costs to decode the longer codes is + then traded against the time it takes to make longer tables. + + This results of this trade are in the variables lbits and dbits + below. lbits is the number of bits the first level table for literal/ + length codes can decode in one step, and dbits is the same thing for + the distance codes. Subsequent tables are also less than or equal to + those sizes. These values may be adjusted either when all of the + codes are shorter than that, in which case the longest code length in + bits is used, or when the shortest code is *longer* than the requested + table size, in which case the length of the shortest code in bits is + used. + + There are two different values for the two tables, since they code a + different number of possibilities each. The literal/length table + codes 286 possible values, or in a flat code, a little over eight + bits. The distance table codes 30 possible values, or a little less + than five bits, flat. The optimum values for speed end up being + about one bit more than those, so lbits is 8+1 and dbits is 5+1. + The optimum values may differ though from machine to machine, and + possibly even between compilers. Your mileage may vary. + */ + +static int lbits = 9; /* bits in base literal/length lookup table */ +static int dbits = 6; /* bits in base distance lookup table */ + +/* If BMAX needs to be larger than 16, then h and x[] should be ulg. */ +#define BMAX 16 /* maximum bit length of any code (16 for explode) */ +#define N_MAX 288 /* maximum number of codes in any set */ + +unsigned hufts; /* track memory usage */ + +#define MEMBUFSIZ 0x2000 + +static u8 gzip_mem_buff[MEMBUFSIZ]; +void* gzip_malloc_addr = gzip_mem_buff; +s32 gzip_malloc_tmp = 0; + +void* gzip_malloc(size_t size) { + void* ret; + + gzip_malloc_tmp += size; + if (gzip_malloc_tmp > MEMBUFSIZ) { + return NULL; + } + + ret = gzip_malloc_addr; + gzip_malloc_addr = (void*)(((uintptr_t)gzip_malloc_addr) + size); + return ret; +} + +void gzip_free(void* ptr) { + gzip_malloc_tmp = 0; + gzip_malloc_addr = gzip_mem_buff; +} + +/* Given a list of code lengths and a maximum table size, make a set of + tables to decode that set of codes. Return zero on success, one if + the given code set is incomplete (the tables are still built in this + case), two if the input is invalid (all zero length codes or an + oversubscribed set of lengths), and three if not enough memory. */ +int huft_build(unsigned* b, /* code lengths in bits (all assumed <= BMAX) */ + unsigned n, /* number of codes (assumed <= N_MAX) */ + unsigned s, /* number of simple-valued codes (0..s-1) */ + ush* d, /* list of base values for non-simple codes */ + ush* e, /* list of extra bits for non-simple codes */ + struct huft** t, /* result: starting table */ + int* m /* maximum lookup bits, returns actual */ +) { + unsigned a; /* counter for codes of length k */ + unsigned c[BMAX + 1]; /* bit length count table */ + unsigned f; /* i repeats in table every f entries */ + int g; /* maximum code length */ + int h; /* table level */ + register unsigned i; /* counter, current code */ + register unsigned j; /* counter */ + register int k; /* number of bits in current code */ + int l; /* bits per table (returned in m) */ + register unsigned* p; /* pointer into c[], b[], or v[] */ + register struct huft* q; /* points to current table */ + struct huft r; /* table entry for structure assignment */ + struct huft* u[BMAX]; /* table stack */ + static unsigned v[N_MAX]; /* values in order of bit length */ + register int w; /* bits before this table == (l * h) */ + unsigned x[BMAX + 1]; /* bit offsets, then code stack */ + unsigned* xp; /* pointer into x */ + int y; /* number of dummy codes added */ + unsigned z; /* number of entries in current table */ + + /* Generate counts for each bit length */ + for (j = 0; j < BMAX + 1; j++) { + c[j] = 0; + } + + p = b; + i = n; + do { + Tracecv(*p, (stderr, (n - i >= ' ' && n - i <= '~' ? "%c %d\n" : "0x%x %d\n"), n - i, *p)); + c[*p]++; /* assume all entries <= BMAX */ + p++; /* Can't combine with above line (Solaris bug) */ + } while (--i); + if (c[0] == n) { /* null input--all zero length codes */ + *t = NULL; + *m = 0; + return 0; + } + + /* Find minimum and maximum length, bound *m by those */ + l = *m; + for (j = 1; j <= BMAX; j++) { + if (c[j]) { + break; + } + } + k = j; /* minimum code length */ + if ((unsigned)l < j) { + l = j; + } + for (i = BMAX; i; i--) { + if (c[i]) { + break; + } + } + g = i; /* maximum code length */ + if ((unsigned)l > i) { + l = i; + } + *m = l; + + /* Adjust last length count to fill out codes, if needed */ + for (y = 1 << j; j < i; j++, y <<= 1) { + if ((y -= c[j]) < 0) { + return 2; /* bad input: more codes than bits */ + } + } + if ((y -= c[i]) < 0) { + return 2; + } + c[i] += y; + + /* Generate starting offsets into the value table for each length */ + x[1] = j = 0; + p = c + 1; + xp = x + 2; + while (--i) { /* note that i == g from above */ + *xp++ = (j += *p++); + } + + /* Make a table of values in order of bit lengths */ + p = b; + i = 0; + do { + if ((j = *p++) != 0) { + v[x[j]++] = i; + } + } while (++i < n); + + /* Generate the Huffman codes and for each, make the table entries */ + x[0] = i = 0; /* first Huffman code is zero */ + p = v; /* grab values in bit order */ + h = -1; /* no tables yet--level -1 */ + w = -l; /* bits decoded == (l * h) */ + u[0] = (struct huft*)NULL; /* just to keep compilers happy */ + q = (struct huft*)NULL; /* ditto */ + z = 0; /* ditto */ + + /* go through the bit lengths (k already is bits in shortest code) */ + for (; k <= g; k++) { + a = c[k]; + while (a--) { + /* here i is the Huffman code of length k bits for value *p */ + /* make tables up to required level */ + while (k > w + l) { + h++; + w += l; /* previous table always l bits */ + + /* compute minimum size table less than or equal to l bits */ + z = (z = g - w) > (unsigned)l ? l : z; /* upper limit on table size */ + if ((f = 1 << (j = k - w)) > a + 1) { /* try a k-w bit table */ + /* too few codes for k-w bit table */ + f -= a + 1; /* deduct codes from patterns left */ + xp = c + k; + while (++j < z) { /* try smaller tables up to z bits */ + if ((f <<= 1) <= *++xp) { + break; /* enough codes to use up j bits */ + } + f -= *xp; /* else deduct codes from patterns */ + } + } + z = 1 << j; /* table entries for j-bit table */ + + /* allocate and link in new table */ + if ((q = (struct huft*)gzip_malloc((z + 1) * sizeof(struct huft))) == (struct huft*)NULL) { + if (h) { + huft_free(u[0]); + } + return 3; /* not enough memory */ + } + hufts += z + 1; /* track memory usage */ + *t = q + 1; /* link to list for huft_free() */ + *(t = &(q->v.t)) = (struct huft*)NULL; + u[h] = ++q; /* table starts after link */ + + /* connect to last table, if there is one */ + if (h) { + x[h] = i; /* save pattern for backing up */ + r.b = (uch)l; /* bits to dump before this table */ + r.e = (uch)(16 + j); /* bits in this table */ + r.v.t = q; /* pointer to this table */ + j = i >> (w - l); /* (get around Turbo C bug) */ + u[h - 1][j] = r; /* connect to last table */ + } + } + + /* set up table entry in r */ + r.b = (uch)(k - w); + if (p >= v + n) { + r.e = 99; /* out of values--invalid code */ + } else if (*p < s) { + r.e = (uch)(*p < 256 ? 16 : 15); /* 256 is end-of-block code */ + r.v.n = (ush)(*p); /* simple code is just the value */ + p++; /* one compiler does not like *p++ */ + } else { + r.e = (uch)e[*p - s]; /* non-simple--look up in lists */ + r.v.n = d[*p++ - s]; + } + + /* fill code-like entries with r */ + f = 1 << (k - w); + for (j = i >> w; j < z; j += f) { + q[j] = r; + } + + /* backwards increment the k-bit code i */ + for (j = 1 << (k - 1); i & j; j >>= 1) { + i ^= j; + } + i ^= j; + + /* backup over finished tables */ + while ((i & ((1 << w) - 1)) != x[h]) { + h--; /* don't need to update q */ + w -= l; + } + } + } + + /* Return true (1) if we were given an incomplete table */ + return y != 0 && g != 1; +} + +/* Free the malloc'ed tables T built by huft_build(), which makes a linked + list of the tables it made, with the links in a dummy first entry of + each table. */ +int huft_free(struct huft* t) { + register struct huft *p, *q; + + /* Go through linked list, freeing from the malloced (t[-1]) address. */ + p = t; + while (p != (struct huft*)NULL) { + q = (--p)->v.t; + gzip_free(p); + p = q; + } + return 0; +} + +/* tl, td: literal/length and distance decoder tables */ +/* bl, bd: number of bits decoded by tl[] and td[] */ +/* inflate (decompress) the codes in a deflated (compressed) block. + Return an error code or zero if it all goes ok. */ +int inflate_codes(struct huft* tl, struct huft* td, int bl, int bd) { + register unsigned e; /* table entry flag/number of extra bits */ + unsigned n, d; /* length and index for copy */ + unsigned w; /* current window position */ + struct huft* t; /* pointer to table entry */ + unsigned ml, md; /* masks for bl and bd bits */ + register ulg b; /* bit buffer */ + register unsigned k; /* number of bits in bit buffer */ + unsigned char* p; + + /* make local copies of globals */ + b = bb; /* initialize bit buffer */ + k = bk; + w = wp; /* initialize window position */ + + /* inflate the coded data */ + ml = mask_bits[bl]; /* precompute masks for speed */ + md = mask_bits[bd]; + for (;;) { /* do until end of block */ + NEEDBITS((unsigned)bl) + if ((e = (t = tl + ((unsigned)b & ml))->e) > 16) { + do { + if (e == 99) { + return 1; + } + DUMPBITS(t->b) + e -= 16; + NEEDBITS(e) + } while ((e = (t = t->v.t + ((unsigned)b & mask_bits[e]))->e) > 16); + } + DUMPBITS(t->b) + if (e == 16) { /* then it's a literal */ + *output_ptr++ = (uch)t->v.n; + w++; + if (w == WSIZE) { + flush_output(w); + w = 0; + } + } else { /* it's an EOB or a length */ + /* exit if end of block */ + if (e == 15) { + break; + } + + /* get length of block to copy */ + NEEDBITS(e) + n = t->v.n + ((unsigned)b & mask_bits[e]); + DUMPBITS(e); + + /* decode distance of block to copy */ + NEEDBITS((unsigned)bd) + if ((e = (t = td + ((unsigned)b & md))->e) > 16) { + do { + if (e == 99) { + return 1; + } + DUMPBITS(t->b) + e -= 16; + NEEDBITS(e) + } while ((e = (t = t->v.t + ((unsigned)b & mask_bits[e]))->e) > 16); + } + DUMPBITS(t->b) + NEEDBITS(e) + d = w - t->v.n - ((unsigned)b & mask_bits[e]); + DUMPBITS(e) + Tracevv((stderr, "\\[%d,%d]", w - d, n)); + + /* do the copy */ + p = output_ptr + d - w; + do { + *output_ptr++ = *p++; + w++; + if (w == WSIZE) { + flush_output(w); + w = 0; + } + d++; + n--; + } while (n != 0); + } + } + + /* restore the globals from the locals */ + wp = w; /* restore global window pointer */ + bb = b; /* restore global bit buffer */ + bk = k; + + /* done */ + return 0; +} + +/* "decompress" an inflated type 0 (stored) block. */ +int inflate_stored(void) { + unsigned n; /* number of bytes in block */ + unsigned w; /* current window position */ + register ulg b; /* bit buffer */ + register unsigned k; /* number of bits in bit buffer */ + + /* make local copies of globals */ + b = bb; /* initialize bit buffer */ + k = bk; + w = wp; /* initialize window position */ + + /* go to byte boundary */ + n = k & 7; + DUMPBITS(n); + + /* get the length and its complement */ + NEEDBITS(16) + n = ((unsigned)b & 0xffff); + DUMPBITS(16) + NEEDBITS(16) + if (n != (unsigned)((~b) & 0xffff)) { + return 1; /* error in compressed data */ + } + DUMPBITS(16) + + /* read and output the compressed data */ + while (n--) { + NEEDBITS(8) + *output_ptr++ = (uch)b; + w++; + if (w == WSIZE) { + flush_output(w); + w = 0; + } + DUMPBITS(8) + } + + /* restore the globals from the locals */ + wp = w; /* restore global window pointer */ + bb = b; /* restore global bit buffer */ + bk = k; + return 0; +} + +/* decompress an inflated type 1 (fixed Huffman codes) block. We should + either replace this with a custom decoder, or at least precompute the + Huffman tables. */ +int inflate_fixed(void) { + int i; /* temporary variable */ + struct huft* tl; /* literal/length code table */ + struct huft* td; /* distance code table */ + int bl; /* lookup bits for tl */ + int bd; /* lookup bits for td */ + static unsigned l[288]; /* length list for huft_build */ + + /* set up literal table */ + for (i = 0; i < 144; i++) { + l[i] = 8; + } + for (; i < 256; i++) { + l[i] = 9; + } + for (; i < 280; i++) { + l[i] = 7; + } + for (; i < 288; i++) { /* make a complete, but wrong code set */ + l[i] = 8; + } + bl = 7; + if ((i = huft_build(l, 288, 257, cplens, cplext, &tl, &bl)) != 0) { + return i; + } + + /* set up distance table */ + for (i = 0; i < 30; i++) { /* make an incomplete code set */ + l[i] = 5; + } + bd = 5; + if ((i = huft_build(l, 30, 0, cpdist, cpdext, &td, &bd)) > 1) { + huft_free(tl); + return i; + } + + /* decompress until an end-of-block code */ + if (inflate_codes(tl, td, bl, bd)) { + return 1; + } + + /* free the decoding tables, return */ + huft_free(td); + huft_free(tl); + return 0; +} + +/* decompress an inflated type 2 (dynamic Huffman codes) block. */ +int inflate_dynamic(void) { + int i; /* temporary variables */ + unsigned j; + unsigned l; /* last length */ + unsigned m; /* mask for bit lengths table */ + unsigned n; /* number of lengths to get */ + UNUSED unsigned w; /* current window position */ + struct huft* tl; /* literal/length code table */ + struct huft* td; /* distance code table */ + int bl; /* lookup bits for tl */ + int bd; /* lookup bits for td */ + unsigned nb; /* number of bit length codes */ + unsigned nl; /* number of literal/length codes */ + unsigned nd; /* number of distance codes */ + static unsigned ll[288 + 32]; /* literal/length and distance code lengths */ + register ulg b; /* bit buffer */ + register unsigned k; /* number of bits in bit buffer */ + + /* make local bit buffer */ + b = bb; + k = bk; + w = wp; + + /* read in table lengths */ + NEEDBITS(5) + nl = 257 + ((unsigned)b & 0x1f); /* number of literal/length codes */ + DUMPBITS(5) + NEEDBITS(5) + nd = 1 + ((unsigned)b & 0x1f); /* number of distance codes */ + DUMPBITS(5) + NEEDBITS(4) + nb = 4 + ((unsigned)b & 0xf); /* number of bit length codes */ + DUMPBITS(4) + if (nl > 288 || nd > 32) { + return 1; /* bad lengths */ + } + + /* read in bit-length-code lengths */ + for (j = 0; j < nb; j++) { + NEEDBITS(3) + ll[border[j]] = (unsigned)b & 7; + DUMPBITS(3) + } + for (; j < 19; j++) { + ll[border[j]] = 0; + } + + /* build decoding table for trees--single level, 7 bit lookup */ + bl = 7; + if ((i = huft_build(ll, 19, 19, NULL, NULL, &tl, &bl)) != 0) { + if (i == 1) { + huft_free(tl); + } + return i; /* incomplete code set */ + } + + /* read in literal and distance code lengths */ + n = nl + nd; + m = mask_bits[bl]; + i = l = 0; + while ((unsigned)i < n) { + NEEDBITS((unsigned)bl) + j = (td = tl + ((unsigned)b & m))->b; + DUMPBITS(j) + j = td->v.n; + if (j < 16) { /* length of code in bits (0..15) */ + ll[i++] = l = j; /* save last length in l */ + } else if (j == 16) { /* repeat last length 3 to 6 times */ + NEEDBITS(2) + j = 3 + ((unsigned)b & 3); + DUMPBITS(2) + if ((unsigned)i + j > n) { + return 1; + } + while (j--) { + ll[i++] = l; + } + } else if (j == 17) { /* 3 to 10 zero length codes */ + NEEDBITS(3) + j = 3 + ((unsigned)b & 7); + DUMPBITS(3) + if ((unsigned)i + j > n) { + return 1; + } + while (j--) { + ll[i++] = 0; + } + l = 0; + } else { /* j == 18: 11 to 138 zero length codes */ + NEEDBITS(7) + j = 11 + ((unsigned)b & 0x7f); + DUMPBITS(7) + if ((unsigned)i + j > n) { + return 1; + } + while (j--) { + ll[i++] = 0; + } + l = 0; + } + } + + /* free decoding table for trees */ + huft_free(tl); + + /* restore the global bit buffer */ + bb = b; + bk = k; + + /* build the decoding tables for literal/length and distance codes */ + bl = lbits; + if ((i = huft_build(ll, nl, 257, cplens, cplext, &tl, &bl)) != 0) { + if (i == 1) { + Trace((stderr, " incomplete literal tree\n")); + huft_free(tl); + } + return i; /* incomplete code set */ + } + bd = dbits; + if ((i = huft_build(ll + nl, nd, 0, cpdist, cpdext, &td, &bd)) != 0) { + if (i == 1) { + Trace((stderr, " incomplete distance tree\n")); + i = 0; + } + } + + /* decompress until an end-of-block code */ + if (inflate_codes(tl, td, bl, bd) != 0) { + return 1; + } + + /* free the decoding tables */ + huft_free(td); + huft_free(tl); + + return 0; +} + +/* decompress an inflated block */ +/* E is the last block flag */ +int inflate_block(int* e) { + unsigned t; /* block type */ + UNUSED unsigned w; /* current window position */ + register ulg b; /* bit buffer */ + register unsigned k; /* number of bits in bit buffer */ + + /* make local bit buffer */ + b = bb; + k = bk; + w = wp; + + /* read in last block bit */ + NEEDBITS(1) + *e = (int)b & 1; + DUMPBITS(1) + + /* read in block type */ + NEEDBITS(2) + t = (unsigned)b & 3; + DUMPBITS(2) + + /* restore the global bit buffer */ + bb = b; + bk = k; + + /* inflate that block type */ + if (t == 2) { + return inflate_dynamic(); + } + if (t == 0) { + return inflate_stored(); + } + if (t == 1) { + return inflate_fixed(); + } + + /* bad block type */ + return 2; +} + +/* decompress an inflated entry */ +int inflate(void) { + int e; /* last block flag */ + int r; /* result code */ + unsigned h; /* maximum struct huft's malloc'ed */ + + /* initialize window, bit buffer */ + wp = 0; + bk = 0; + bb = 0; + + gzip_malloc_tmp = 0; + gzip_malloc_addr = gzip_mem_buff; + + /* decompress until the last block */ + h = 0; + do { + hufts = 0; + if ((r = inflate_block(&e)) != 0) { + return r; + } + if (hufts > h) { + h = hufts; + } + } while (!e); + + /* Undo too much lookahead. The next read will be byte aligned so we + * can discard unused bits in the last meaningful byte. + */ + while (bk >= 8) { + bk -= 8; + inptr--; + } + + /* flush out slide */ + flush_output(wp); + + /* return success */ + Trace((stderr, "<%u> ", h)); + return 0; +} + +size_t gzip_read(GzipFileDescriptor* romInput, void* dst, size_t blockSize) { + size_t alignedSize; + + if (blockSize > (size_t)romInput->size) { + blockSize = romInput->size; + } + + alignedSize = ALIGN8(blockSize); + if (alignedSize > 0) { + DmaMgr_DmaRomToRam(romInput->addr, dst, alignedSize); + } + + romInput->size -= alignedSize; + romInput->addr += alignedSize; + if (romInput->size < 0) { + romInput->size = 0; + } + + return blockSize; +} + +int unzip(void) { + int ret = inflate(); + + if (ret == 3) { + return -1; + } + + if (ret != 0) { + return -1; + } + + return 0; +} + +void clear_bufs(void) { + insize = inptr = 0; +} + +int fill_inbuf(int eof_ok) { + int len; + + /* Read as much as possible */ + insize = 0; + do { + len = gzip_read(&ifd, (char*)inbuf + insize, INBUFSIZ - insize); + if (len == 0 || len == -1) { + break; + } + insize += len; + } while (insize < INBUFSIZ); + + if (insize == 0) { + if (eof_ok) { + return EOF; + } + } + + inptr = 1; + return inbuf[0]; +} + +void flush_window(void) { + outcnt = 0; +} + +void gzip_decompress(uintptr_t romStart, u8* dst, size_t size) { + ifd.addr = romStart; + ifd.size = size; + + output_ptr = dst; + + clear_bufs(); + unzip(); +} diff --git a/src/boot/z_std_dma.c b/src/boot/z_std_dma.c index b05b188c64..ea934a497d 100644 --- a/src/boot/z_std_dma.c +++ b/src/boot/z_std_dma.c @@ -441,7 +441,13 @@ void DmaMgr_ProcessRequest(DmaRequest* req) { // Reduce the thread priority and decompress the file, the decompression routine handles the DMA // in chunks. Restores the thread priority when done. osSetThreadPri(NULL, THREAD_PRI_DMAMGR_LOW); + +#if !PLATFORM_IQUE Yaz0_Decompress(romStart, ram, romSize); +#else + gzip_decompress(romStart, ram, romSize); +#endif + osSetThreadPri(NULL, THREAD_PRI_DMAMGR); found = true; diff --git a/tools/disasm/ique-cn/files_boot.csv b/tools/disasm/ique-cn/files_boot.csv index da3d146a1f..e4d69b501e 100644 --- a/tools/disasm/ique-cn/files_boot.csv +++ b/tools/disasm/ique-cn/files_boot.csv @@ -3,7 +3,7 @@ offset,vram,.text 140,80000590,src/boot/idle 390,800007E0,src/boot/viconfig 4D0,80000920,src/boot/z_std_dma -B50,80000FA0,src/boot/zlib +B50,80000FA0,src/boot/inflate 2830,80002C80,src/boot/z_locale 2870,80002CC0,src/boot/is_debug 2890,80002CE0,src/boot/driverominit @@ -96,7 +96,7 @@ offset,vram,.data 98F0,80009D40,src/boot/viconfig 9910,80009D60,src/boot/carthandle 9920,80009D70,src/boot/z_std_dma -9930,80009D80,src/boot/zlib +9930,80009D80,src/boot/inflate 9AB0,80009F00,src/boot/z_locale 9AC0,80009F10,src/boot/driverominit 9AD0,80009F20,src/libu64/stackcheck @@ -133,7 +133,7 @@ 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/zlib +C500,8000C950,src/boot/inflate 10310,80010760,src/boot/driverominit 10390,800107E0,src/libultra/io/vimgr 115B0,80011A00,src/libultra/io/pimgr diff --git a/tools/disasm/ique-cn/functions.txt b/tools/disasm/ique-cn/functions.txt index b10ad38737..41abd66a7c 100644 --- a/tools/disasm/ique-cn/functions.txt +++ b/tools/disasm/ique-cn/functions.txt @@ -15,6 +15,22 @@ 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 @@ -10285,7 +10301,7 @@ EnGe1_Init = 0x80A8EFD0; // type:func EnGe1_Destroy = 0x80A8F294; // type:func EnGe1_SetTalkAction = 0x80A8F2C0; // type:func EnGe1_SetAnimationIdle = 0x80A8F3A0; // type:func -EnGe1_CheckCarpentersFreed = 0x80A8F424; // type:func +EnGe1_CheckAllCarpentersRescued = 0x80A8F424; // type:func EnGe1_KickPlayer = 0x80A8F460; // type:func EnGe1_SpotPlayer = 0x80A8F540; // type:func EnGe1_WatchForPlayerFrontOnly = 0x80A8F5A0; // type:func @@ -11822,7 +11838,7 @@ EnGe2_Init = 0x80B25578; // type:func EnGe2_Destroy = 0x80B25790; // type:func Ge2_DetectPlayerInAction = 0x80B257BC; // type:func Ge2_DetectPlayerInUpdate = 0x80B25868; // type:func -EnGe2_CheckCarpentersFreed = 0x80B25998; // type:func +EnGe2_CheckAllCarpentersRescued = 0x80B25998; // type:func EnGe2_CaptureClose = 0x80B259C4; // type:func EnGe2_CaptureCharge = 0x80B25A98; // type:func EnGe2_CaptureTurn = 0x80B25BCC; // type:func From e4ad4e5eeefd27fe67b7f29fbac884a7d8a986d2 Mon Sep 17 00:00:00 2001 From: cadmic Date: Fri, 10 Jan 2025 09:47:55 -0800 Subject: [PATCH 19/40] [iQue] Match remaining src/boot files (#2417) * [iQue] Match remaining src/boot files * Fix debug ROM * Use -funsigned-char * Sort ique before gc in LNx macros --- Makefile | 4 +- include/functions.h | 3 - include/line_numbers.h | 16 ++--- spec | 4 ++ src/boot/is_debug_ique.c | 8 +++ src/boot/z_locale.c | 10 +++- src/boot/z_std_dma.c | 93 ++++++++++++++--------------- src/code/graph.c | 6 +- src/code/padmgr.c | 2 +- src/code/sys_cfb.c | 2 +- src/code/z_play.c | 2 +- tools/disasm/ique-cn/files_boot.csv | 2 +- undefined_syms.txt | 1 + 13 files changed, 83 insertions(+), 70 deletions(-) create mode 100644 src/boot/is_debug_ique.c diff --git a/Makefile b/Makefile index 47f82a7c24..ace6cb0f2f 100644 --- a/Makefile +++ b/Makefile @@ -569,7 +569,7 @@ 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 @@ -589,7 +589,7 @@ 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 +$(EGCS_O_FILES): CFLAGS := $(EGCS_CFLAGS) -mno-abicalls -funsigned-char $(EGCS_O_FILES): MIPS_VERSION := endif diff --git a/include/functions.h b/include/functions.h index 092616bcee..f89ce3a0af 100644 --- a/include/functions.h +++ b/include/functions.h @@ -9,9 +9,6 @@ void Main_ThreadEntry(void* arg); void Idle_ThreadEntry(void* arg); void ViConfig_UpdateVi(u32 black); void ViConfig_UpdateBlack(void); -void* Yaz0_FirstDMA(void); -void* Yaz0_NextDMA(u8* curSrcPos); -void Yaz0_DecompressImpl(u8* src, u8* dst); #if !PLATFORM_IQUE void Yaz0_Decompress(uintptr_t romStart, u8* dst, size_t size); #else diff --git a/include/line_numbers.h b/include/line_numbers.h index f0d0ae5faa..bc11d555db 100644 --- a/include/line_numbers.h +++ b/include/line_numbers.h @@ -52,16 +52,16 @@ #define LN2(ntsc_1_0, ntsc_1_1, other) \ LN(ntsc_1_0, ntsc_1_1, other, other, other, other, other, other, other, other, other, other, other, other) -// NTSC 1.0, Gamecube, and all the other versions -#define LN3(ntsc_1_0, other, gc) \ - LN(ntsc_1_0, other, other, other, other, gc, gc, gc, gc, gc, gc, gc, gc, gc) +// NTSC 1.0, iQue, GameCube, and all the other versions +#define LN3(ntsc_1_0, other, ique, gc) \ + LN(ntsc_1_0, other, other, other, other, gc, gc, gc, gc, gc, gc, gc, gc, ique) -// NTSC 1.0, NTSC 1.1, Gamecube, and all the other versions -#define LN4(ntsc_1_0, ntsc_1_1, other, gc, ique) \ +// NTSC 1.0, NTSC 1.1, iQue, GameCube, and all the other versions +#define LN4(ntsc_1_0, ntsc_1_1, other, ique, gc) \ LN(ntsc_1_0, ntsc_1_1, other, other, other, gc, gc, gc, gc, gc, gc, gc, gc, ique) -// NTSC 1.0, NTSC 1.1, NTSC 1.2/PAL 1.0, Gamecube US/JP, Gamecube EU, and Gamecube CE -#define LN5(ntsc_1_0, ntsc_1_1, other, pal_1_1, gc_ntsc, gc_eu, gc_jp_ce) \ - LN(ntsc_1_0, ntsc_1_1, other, other, pal_1_1, gc_ntsc, gc_ntsc, gc_ntsc, gc_ntsc, gc_eu, gc_eu, gc_eu, gc_jp_ce, gc_jp_ce) +// NTSC 1.0, NTSC 1.1, NTSC 1.2/PAL 1.0, iQue, Gamecube US/JP, Gamecube EU, and Gamecube CE +#define LN5(ntsc_1_0, ntsc_1_1, other, pal_1_1, ique, gc_ntsc, gc_eu, gc_jp_ce) \ + LN(ntsc_1_0, ntsc_1_1, other, other, pal_1_1, gc_ntsc, gc_ntsc, gc_ntsc, gc_ntsc, gc_eu, gc_eu, gc_eu, gc_jp_ce, ique) #endif diff --git a/spec b/spec index f68610d9ea..1adb939920 100644 --- a/spec +++ b/spec @@ -35,7 +35,11 @@ beginseg #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" diff --git a/src/boot/is_debug_ique.c b/src/boot/is_debug_ique.c new file mode 100644 index 0000000000..a78fef8235 --- /dev/null +++ b/src/boot/is_debug_ique.c @@ -0,0 +1,8 @@ +void osSyncPrintfUnused() { +} + +void osSyncPrintf() { +} + +void rmonPrintf() { +} diff --git a/src/boot/z_locale.c b/src/boot/z_locale.c index 35580e3815..f320f1e0f4 100644 --- a/src/boot/z_locale.c +++ b/src/boot/z_locale.c @@ -7,7 +7,7 @@ s32 gCurrentRegion = 0; void Locale_Init(void) { -#if PLATFORM_N64 +#if !PLATFORM_GC ALIGNED(4) u8 regionInfo[4]; u8 countryCode; @@ -24,6 +24,7 @@ void Locale_Init(void) { countryCode = sCartInfo.countryCode; #endif +#if !PLATFORM_IQUE switch (countryCode) { case 'J': // "NTSC-J (Japan)" gCurrentRegion = REGION_JP; @@ -40,13 +41,16 @@ void Locale_Init(void) { PRINTF_COLOR_ERROR(); PRINTF(T("z_locale_init: 日本用かアメリカ用か判別できません\n", "z_locale_init: Can't tell if it's for Japan or America\n")); - LogUtils_HungupThread("../z_locale.c", LN4(86, 92, 101, 118, UNK_LINE)); - PRINTF_RST(); + LogUtils_HungupThread("../z_locale.c", LN4(86, 92, 101, UNK_LINE, 118)); + PRINTF(VT_RST); break; } PRINTF(T("z_locale_init:日本用かアメリカ用か3コンで判断させる\n", "z_locale_init: Determine whether it is for Japan or America using 3 controls\n")); +#else + gCurrentRegion = REGION_US; +#endif } void Locale_ResetRegion(void) { diff --git a/src/boot/z_std_dma.c b/src/boot/z_std_dma.c index ea934a497d..0326a1cb60 100644 --- a/src/boot/z_std_dma.c +++ b/src/boot/z_std_dma.c @@ -53,11 +53,20 @@ const char* sDmaMgrFileNames[] = { #include "tables/dmadata_table.h" }; -#endif - #undef DEFINE_DMA_ENTRY -#if PLATFORM_N64 || DEBUG_FEATURES +#endif + +#define SET_IOMSG(ioMsg, queue, rom, ram, buffSize) \ + do { \ + (ioMsg).hdr.pri = OS_MESG_PRI_NORMAL; \ + (ioMsg).hdr.retQueue = (queue); \ + (ioMsg).devAddr = (rom); \ + (ioMsg).dramAddr = (ram); \ + (ioMsg).size = (buffSize); \ + } while (0) + +#if !PLATFORM_GC || DEBUG_FEATURES /** * Compares `str1` and `str2`. * @@ -103,6 +112,9 @@ s32 DmaMgr_DmaRomToRam(uintptr_t rom, void* ram, size_t size) { OSMesg msg; s32 ret; size_t buffSize = gDmaMgrDmaBuffSize; +#if DEBUG_FEATURES + UNUSED s32 pad; +#endif if (buffSize == 0) { buffSize = DMAMGR_DEFAULT_BUFSIZE; @@ -116,13 +128,7 @@ s32 DmaMgr_DmaRomToRam(uintptr_t rom, void* ram, size_t size) { // The system avoids large DMAs as these would stall the PI for too long, potentially causing issues with // audio. To allow audio to continue to DMA whenever it needs to, other DMAs are split into manageable chunks. - if (1) {} // Necessary to match - - ioMsg.hdr.pri = OS_MESG_PRI_NORMAL; - ioMsg.hdr.retQueue = &queue; - ioMsg.devAddr = rom; - ioMsg.dramAddr = ram; - ioMsg.size = buffSize; + SET_IOMSG(ioMsg, &queue, rom, ram, buffSize); if (gDmaMgrVerbose == 10) { PRINTF(T("%10lld ノーマルDMA %08x %08x %08x (%d)\n", "%10lld Normal DMA %08x %08x %08x (%d)\n"), @@ -151,15 +157,9 @@ s32 DmaMgr_DmaRomToRam(uintptr_t rom, void* ram, size_t size) { ram = (u8*)ram + buffSize; } - if (1) { // Also necessary to match - s32 pad[2]; - } + SET_IOMSG(ioMsg, &queue, rom, ram, size); - ioMsg.hdr.pri = OS_MESG_PRI_NORMAL; - ioMsg.hdr.retQueue = &queue; - ioMsg.devAddr = rom; - ioMsg.dramAddr = ram; - ioMsg.size = size; + { UNUSED s32 pad2; } if (gDmaMgrVerbose == 10) { PRINTF(T("%10lld ノーマルDMA %08x %08x %08x (%d)\n", "%10lld Normal DMA %08x %08x %08x (%d)\n"), @@ -242,11 +242,7 @@ void DmaMgr_DmaFromDriveRom(void* ram, uintptr_t rom, size_t size) { osInvalDCache(ram, size); osCreateMesgQueue(&queue, &msg, 1); - ioMsg.hdr.retQueue = &queue; - ioMsg.hdr.pri = OS_MESG_PRI_NORMAL; - ioMsg.devAddr = rom; - ioMsg.dramAddr = ram; - ioMsg.size = size; + SET_IOMSG(ioMsg, &queue, rom, ram, size); handle->transferInfo.cmdType = 2; osEPiStartDma(handle, &ioMsg, OS_READ); @@ -350,7 +346,7 @@ const char* DmaMgr_GetFileName(uintptr_t vrom) { return ret; #elif PLATFORM_GC return ""; -#elif PLATFORM_N64 +#else return "??"; #endif } @@ -380,19 +376,16 @@ void DmaMgr_ProcessRequest(DmaRequest* req) { if (vrom >= iter->file.vromStart && vrom < iter->file.vromEnd) { // Found the region this request falls into -#if PLATFORM_N64 - // Based on the MM Debug ROM, these strings are part of the condition for the empty if statement below, - // as `... && DmaMgr_StrCmp("", "kanji") != 0 && DmaMgr_StrCmp("", "link_animetion") != 0` - (void)""; - (void)"kanji"; - (void)""; - (void)"link_animetion"; -#endif - if (0) { - // The string is defined in .rodata of debug builds but not used, suggesting a debug print is here - // but was optimized out in some way. - PRINTF("DMA ROM:%08X RAM:%08X SIZE:%08X %s\n", vrom, ram, size, filename); +#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) +#endif + { + // The string is defined in .rodata of debug builds but not used, suggesting a debug print is here + // but was optimized out in some way. + PRINTF("DMA ROM:%08X RAM:%08X SIZE:%08X %s\n", vrom, ram, size, filename); + } } if (iter->romEnd == 0) { @@ -405,10 +398,10 @@ void DmaMgr_ProcessRequest(DmaRequest* req) { DMA_ERROR(req, filename, "Segment Alignment Error", T("セグメント境界をまたがってDMA転送することはできません", "DMA transfers cannot cross segment boundaries"), - "../z_std_dma.c", LN3(575, 578, 726)); + "../z_std_dma.c", LN3(575, 578, 595, 726)); } - DmaMgr_DmaRomToRam(iter->romStart + (vrom - iter->file.vromStart), ram, size); + DmaMgr_DmaRomToRam(iter->romStart + vrom - iter->file.vromStart, ram, size); found = true; if (0) { @@ -417,16 +410,16 @@ void DmaMgr_ProcessRequest(DmaRequest* req) { } else { // File is compressed. Files that are stored compressed must be loaded into RAM all at once. - romStart = iter->romStart; romSize = iter->romEnd - iter->romStart; + romStart = iter->romStart; - if (vrom != iter->file.vromStart) { + if (iter->file.vromStart != vrom) { // Error, requested vrom is not the start of a file DMA_ERROR(req, filename, "Can't Transfer Segment", T("圧縮されたセグメントの途中からはDMA転送することはできません", "DMA transfer cannot be performed from the middle of a compressed segment"), - "../z_std_dma.c", LN3(595, 598, 746)); + "../z_std_dma.c", LN3(595, 598, 615, 746)); } if (size != iter->file.vromEnd - iter->file.vromStart) { @@ -435,7 +428,7 @@ void DmaMgr_ProcessRequest(DmaRequest* req) { DMA_ERROR(req, filename, "Can't Transfer Segment", T("圧縮されたセグメントの一部だけをDMA転送することはできません", "It is not possible to DMA only part of a compressed segment"), - "../z_std_dma.c", LN3(601, 604, 752)); + "../z_std_dma.c", LN3(601, 604, 621, 752)); } // Reduce the thread priority and decompress the file, the decompression routine handles the DMA @@ -458,7 +451,7 @@ void DmaMgr_ProcessRequest(DmaRequest* req) { break; } -#if PLATFORM_N64 +#if !PLATFORM_GC if (i != 0) { i += 4; } @@ -475,11 +468,12 @@ void DmaMgr_ProcessRequest(DmaRequest* req) { DMA_ERROR(req, NULL, "DATA DON'T EXIST", T("該当するデータが存在しません", "Corresponding data does not exist"), "../z_std_dma.c", - LN3(621, 624, 771)); + LN3(621, 624, 641, 771)); return; } else { // ROM is uncompressed, allow arbitrary DMA even if the region is not marked in the filesystem - DmaMgr_DmaRomToRam(vrom, ram, size); + romStart = vrom; + DmaMgr_DmaRomToRam(romStart, ram, size); if (0) { PRINTF(T("No Press ROM:%08X RAM:%08X SIZE:%08X (非公式)\n", @@ -540,6 +534,10 @@ s32 DmaMgr_RequestAsync(DmaRequest* req, void* ram, uintptr_t vrom, size_t size, OSMesg msg) { static s32 sDmaMgrQueueFullLogged = 0; +#if PLATFORM_IQUE + PRINTF("dmacopy_bg(%x, %x, %x, %x, %x, %x, %x)\n", req, ram, vrom, size, unk, queue, msg); +#endif + #if DEBUG_FEATURES if ((ram == NULL) || (osMemSize < OS_K0_TO_PHYSICAL(ram) + size) || (vrom & 1) || (vrom > 0x4000000) || (size == 0) || (size & 1)) { @@ -614,9 +612,10 @@ void DmaMgr_Init(void) { // DMA the dma data table to RAM DmaMgr_DmaRomToRam((uintptr_t)_dmadataSegmentRomStart, _dmadataSegmentStart, (u32)(_dmadataSegmentRomEnd - _dmadataSegmentRomStart)); - PRINTF("dma_rom_ad[]\n"); #if DEBUG_FEATURES + PRINTF("dma_rom_ad[]\n"); + name = sDmaMgrFileNames; iter = gDmaDataTable; idx = 0; @@ -647,7 +646,7 @@ void DmaMgr_Init(void) { PRINTF("_bootSegmentRomStart(%08x) != dma_rom_ad[0].rom_b(%08x)\n", _bootSegmentRomStart, gDmaDataTable[0].file.vromEnd); //! @bug The main code file where fault.c resides is not yet loaded - Fault_AddHungupAndCrash("../z_std_dma.c", LN3(837, 840, 1055)); + Fault_AddHungupAndCrash("../z_std_dma.c", LN3(837, 840, 859, 1055)); } // Start the DMA manager diff --git a/src/code/graph.c b/src/code/graph.c index 348fe4bf9b..046e04d374 100644 --- a/src/code/graph.c +++ b/src/code/graph.c @@ -380,7 +380,7 @@ void Graph_Update(GraphicsContext* gfxCtx, GameState* gameState) { PRINTF("%c", BEL); PRINTF(VT_COL(RED, WHITE) T("ダイナミック領域先頭が破壊されています\n", "Dynamic area head is destroyed\n") VT_RST); - Fault_AddHungupAndCrash("../graph.c", LN4(937, 940, 951, 1070, 1067)); + Fault_AddHungupAndCrash("../graph.c", LN4(937, 940, 951, 1067, 1070)); } if (pool->tailMagic != GFXPOOL_TAIL_MAGIC) { @@ -388,7 +388,7 @@ void Graph_Update(GraphicsContext* gfxCtx, GameState* gameState) { PRINTF("%c", BEL); PRINTF(VT_COL(RED, WHITE) T("ダイナミック領域末尾が破壊されています\n", "Dynamic region tail is destroyed\n") VT_RST); - Fault_AddHungupAndCrash("../graph.c", LN4(943, 946, 957, 1076, 1073)); + Fault_AddHungupAndCrash("../graph.c", LN4(943, 946, 957, 1073, 1076)); } } @@ -481,7 +481,7 @@ void Graph_ThreadEntry(void* arg0) { sprintf(faultMsg, "CLASS SIZE= %d bytes", size); Fault_AddHungupAndCrashImpl("GAME CLASS MALLOC FAILED", faultMsg); #else - Fault_AddHungupAndCrash("../graph.c", LN4(1067, 1070, 1081, 1200, 1197)); + Fault_AddHungupAndCrash("../graph.c", LN4(1067, 1070, 1081, 1197, 1200)); #endif } diff --git a/src/code/padmgr.c b/src/code/padmgr.c index 373d4e905f..b5f76b7217 100644 --- a/src/code/padmgr.c +++ b/src/code/padmgr.c @@ -327,7 +327,7 @@ void PadMgr_UpdateInputs(PadMgr* padMgr) { default: // Unknown error response LOG_HEX("padnow1->errno", pad->errno, "../padmgr.c", 396); - Fault_AddHungupAndCrash("../padmgr.c", LN3(379, 382, 397)); + Fault_AddHungupAndCrash("../padmgr.c", LN3(379, 382, 397, 397)); break; } diff --git a/src/code/sys_cfb.c b/src/code/sys_cfb.c index e175ddf944..c3b29d7ac5 100644 --- a/src/code/sys_cfb.c +++ b/src/code/sys_cfb.c @@ -34,7 +34,7 @@ void SysCfb_Init(s32 n64dd) { PRINTF("RAM4M mode\n"); sSysCfbEnd = 0x80400000; } else { - LogUtils_HungupThread("../sys_cfb.c", LN4(305, 308, 322, 354, 341)); + LogUtils_HungupThread("../sys_cfb.c", LN4(305, 308, 322, 341, 354)); } screenSize = SCREEN_WIDTH * SCREEN_HEIGHT; diff --git a/src/code/z_play.c b/src/code/z_play.c index dc61e491c0..d6fc0c660f 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -177,7 +177,7 @@ void Play_SetupTransition(PlayState* this, s32 transitionType) { break; default: - HUNGUP_AND_CRASH("../z_play.c", LN5(2263, 2266, 2269, 2272, 2287, 2290, 2293)); + HUNGUP_AND_CRASH("../z_play.c", LN5(2263, 2266, 2269, 2272, 2282, 2287, 2290, 2293)); break; } } diff --git a/tools/disasm/ique-cn/files_boot.csv b/tools/disasm/ique-cn/files_boot.csv index e4d69b501e..dfbbf225bc 100644 --- a/tools/disasm/ique-cn/files_boot.csv +++ b/tools/disasm/ique-cn/files_boot.csv @@ -5,7 +5,7 @@ offset,vram,.text 4D0,80000920,src/boot/z_std_dma B50,80000FA0,src/boot/inflate 2830,80002C80,src/boot/z_locale -2870,80002CC0,src/boot/is_debug +2870,80002CC0,src/boot/is_debug_ique 2890,80002CE0,src/boot/driverominit 2A70,80002EC0,src/boot/mio0 2B20,80002F70,src/libu64/stackcheck diff --git a/undefined_syms.txt b/undefined_syms.txt index 6f663eae89..4774fe4143 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -11,6 +11,7 @@ D_0F000000 = 0x0F000000; D_06000000 = 0x06000000; #if PLATFORM_IQUE +gzip_decompress = 0x80002C3C; __divdi3 = 0x80008010; __moddi3 = 0x800085F0; __udivdi3 = 0x80008B80; From 0f6c2f9e78eed96e175651d00bcec92dc9cbcd04 Mon Sep 17 00:00:00 2001 From: cadmic Date: Fri, 10 Jan 2025 10:47:09 -0800 Subject: [PATCH 20/40] Fix circular Makefile dependency with assets/text/*.o (#2419) --- Makefile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Makefile b/Makefile index ace6cb0f2f..d0524f0b8b 100644 --- a/Makefile +++ b/Makefile @@ -489,8 +489,7 @@ ASSET_BIN_DIRS := $(ASSET_BIN_DIRS_EXTRACTED) $(ASSET_BIN_DIRS_COMMITTED) ASSET_FILES_BIN_EXTRACTED := $(foreach dir,$(ASSET_BIN_DIRS_EXTRACTED),$(wildcard $(dir)/*.bin)) ASSET_FILES_BIN_COMMITTED := $(foreach dir,$(ASSET_BIN_DIRS_COMMITTED),$(wildcard $(dir)/*.bin)) ASSET_FILES_OUT := $(foreach f,$(ASSET_FILES_BIN_EXTRACTED:.bin=.bin.inc.c),$(f:$(EXTRACTED_DIR)/%=$(BUILD_DIR)/%)) \ - $(foreach f,$(ASSET_FILES_BIN_COMMITTED:.bin=.bin.inc.c),$(BUILD_DIR)/$f) \ - $(foreach f,$(wildcard assets/text/*.c),$(BUILD_DIR)/$(f:.c=.o)) + $(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') From 62c0effccdf56a02f5df741fd31c93080854a150 Mon Sep 17 00:00:00 2001 From: Tharo <17233964+Thar0@users.noreply.github.com> Date: Fri, 10 Jan 2025 20:24:37 +0000 Subject: [PATCH 21/40] [iQue] Match libultra/gu (#2402) * [iQue] Match libultra/gu * Match sqrtf --- src/libultra/gu/rotate.c | 17 +++++++++-------- src/libultra/gu/sqrtf.c | 9 --------- src/libultra/gu/sqrtf.s | 9 +++++++++ src/libultra/gu/us2dex.c | 22 +++++++++++----------- 4 files changed, 29 insertions(+), 28 deletions(-) delete mode 100644 src/libultra/gu/sqrtf.c create mode 100644 src/libultra/gu/sqrtf.s diff --git a/src/libultra/gu/rotate.c b/src/libultra/gu/rotate.c index 7d495e98ef..dc50aba3c5 100644 --- a/src/libultra/gu/rotate.c +++ b/src/libultra/gu/rotate.c @@ -1,7 +1,7 @@ #include "global.h" void guRotateF(f32 m[4][4], f32 a, f32 x, f32 y, f32 z) { - static f32 D_80134D10 = M_PI / 180.0f; + static f32 dtor = M_PI / 180.0f; f32 sine; f32 cosine; f32 ab; @@ -16,14 +16,15 @@ void guRotateF(f32 m[4][4], f32 a, f32 x, f32 y, f32 z) { guNormalize(&x, &y, &z); - a *= D_80134D10; + a *= dtor; sine = sinf(a); cosine = cosf(a); - ab = x * y * (1 - cosine); - bc = y * z * (1 - cosine); - ca = z * x * (1 - cosine); + t = 1.0f - cosine; + ab = x * y * t; + bc = y * z * t; + ca = z * x * t; guMtxIdentF(m); @@ -38,15 +39,15 @@ void guRotateF(f32 m[4][4], f32 a, f32 x, f32 y, f32 z) { #endif t = x * x; - m[0][0] = (1 - t) * cosine + t; + m[0][0] = t + cosine * (1.0f - t); m[2][1] = bc - xs; m[1][2] = bc + xs; t = y * y; - m[1][1] = (1 - t) * cosine + t; + m[1][1] = t + cosine * (1.0f - t); m[2][0] = ca + ys; m[0][2] = ca - ys; t = z * z; - m[2][2] = (1 - t) * cosine + t; + m[2][2] = t + cosine * (1.0f - t); m[1][0] = ab - zs; m[0][1] = ab + zs; } diff --git a/src/libultra/gu/sqrtf.c b/src/libultra/gu/sqrtf.c deleted file mode 100644 index 5e5fa233cc..0000000000 --- a/src/libultra/gu/sqrtf.c +++ /dev/null @@ -1,9 +0,0 @@ -#include "global.h" - -#ifndef __GNUC__ -#define __builtin_sqrtf sqrtf -#endif - -f32 sqrtf(f32 f) { - return __builtin_sqrtf(f); -} diff --git a/src/libultra/gu/sqrtf.s b/src/libultra/gu/sqrtf.s new file mode 100644 index 0000000000..aaf5023593 --- /dev/null +++ b/src/libultra/gu/sqrtf.s @@ -0,0 +1,9 @@ +#include "ultra64/asm.h" +#include "ultra64/regdef.h" + +.text + +LEAF(sqrtf) + sqrt.s fv0, fa0 + j ra +END(sqrtf) diff --git a/src/libultra/gu/us2dex.c b/src/libultra/gu/us2dex.c index d2e5a2b043..b8708c086c 100644 --- a/src/libultra/gu/us2dex.c +++ b/src/libultra/gu/us2dex.c @@ -1,25 +1,25 @@ #include "global.h" void guS2DInitBg(uObjBg* bg) { - u32 size; - s32 tmem = (bg->b.imageFmt == G_IM_FMT_CI) ? 0x100 : 0x200; - u16 shift = (6 - bg->b.imageSiz); + u16 tmem = (bg->b.imageFmt == G_IM_FMT_CI) ? 0x100 : 0x200; + u16 shift = 6 - bg->b.imageSiz; + u32 tsize; if (bg->b.imageLoad == G_BGLT_LOADBLOCK) { bg->b.tmemW = bg->b.imageW >> shift; - bg->b.tmemH = (tmem / bg->b.tmemW) * 4; - bg->b.tmemSizeW = bg->b.tmemW * 2; + bg->b.tmemH = (tmem / bg->b.tmemW) << 2; + bg->b.tmemSizeW = bg->b.tmemW << 1; bg->b.tmemSize = bg->b.tmemH * bg->b.tmemSizeW; bg->b.tmemLoadSH = (bg->b.tmemSize >> 1) - 1; - bg->b.tmemLoadTH = (0x7FF / bg->b.tmemW) + 1; + bg->b.tmemLoadTH = GS_CALC_DXT(bg->b.tmemW); } else { // G_BGLT_LOADTILE bg->b.tmemW = (bg->b.frameW >> shift) + 3; - bg->b.tmemH = (tmem / bg->b.tmemW) * 4; - bg->b.tmemSizeW = (bg->b.imageW >> shift) * 2; + bg->b.tmemH = (tmem / bg->b.tmemW) << 2; + bg->b.tmemSizeW = (bg->b.imageW >> shift) << 1; - size = bg->b.tmemH * bg->b.tmemSizeW; - bg->b.tmemSize = (size >> 16); - bg->b.tmemLoadSH = (size >> 0) & 0xFFFF; + tsize = bg->b.tmemH * bg->b.tmemSizeW; + bg->b.tmemSize = tsize >> 16; + bg->b.tmemLoadSH = tsize & 0xFFFF; bg->b.tmemLoadTH = bg->b.tmemH - 1; } } From 5773b12241d8b5dd1d5bb433339c7661865d880b Mon Sep 17 00:00:00 2001 From: cadmic Date: Fri, 10 Jan 2025 14:31:34 -0800 Subject: [PATCH 22/40] [iQue] Match libgcc (#2412) * [iQue] Match libgcc * Delete old stubs * Squash warning * Put GPL modification notice in libgcc2.inc.c too * Comment wording * Run clang-tidy on libgcc2.inc.c --- .clang-tidy | 2 +- spec | 15 ++ src/libgcc/__cmpdi2.c | 2 + src/libgcc/__cmpdi2.s | 0 src/libgcc/__divdi3.c | 2 + src/libgcc/__divdi3.s | 0 src/libgcc/__fixdfdi.c | 2 + src/libgcc/__fixdfdi.s | 0 src/libgcc/__fixsfdi.c | 2 + src/libgcc/__fixsfdi.s | 0 src/libgcc/__fixunsdfdi.c | 2 + src/libgcc/__fixunsdfdi.s | 0 src/libgcc/__fixunssfdi.c | 2 + src/libgcc/__fixunssfdi.s | 0 src/libgcc/__floatdidf.c | 2 + src/libgcc/__floatdidf.s | 0 src/libgcc/__floatdisf.c | 2 + src/libgcc/__floatdisf.s | 0 src/libgcc/__moddi3.c | 2 + src/libgcc/__moddi3.s | 0 src/libgcc/__udivdi3.c | 2 + src/libgcc/__udivdi3.s | 0 src/libgcc/__umoddi3.c | 2 + src/libgcc/__umoddi3.s | 0 src/libgcc/libgcc2.inc.c | 464 ++++++++++++++++++++++++++++++++++++++ src/libgcc/longlong.h | 149 ++++++++++++ undefined_syms.txt | 15 -- 27 files changed, 651 insertions(+), 16 deletions(-) create mode 100644 src/libgcc/__cmpdi2.c delete mode 100644 src/libgcc/__cmpdi2.s create mode 100644 src/libgcc/__divdi3.c delete mode 100644 src/libgcc/__divdi3.s create mode 100644 src/libgcc/__fixdfdi.c delete mode 100644 src/libgcc/__fixdfdi.s create mode 100644 src/libgcc/__fixsfdi.c delete mode 100644 src/libgcc/__fixsfdi.s create mode 100644 src/libgcc/__fixunsdfdi.c delete mode 100644 src/libgcc/__fixunsdfdi.s create mode 100644 src/libgcc/__fixunssfdi.c delete mode 100644 src/libgcc/__fixunssfdi.s create mode 100644 src/libgcc/__floatdidf.c delete mode 100644 src/libgcc/__floatdidf.s create mode 100644 src/libgcc/__floatdisf.c delete mode 100644 src/libgcc/__floatdisf.s create mode 100644 src/libgcc/__moddi3.c delete mode 100644 src/libgcc/__moddi3.s create mode 100644 src/libgcc/__udivdi3.c delete mode 100644 src/libgcc/__udivdi3.s create mode 100644 src/libgcc/__umoddi3.c delete mode 100644 src/libgcc/__umoddi3.s create mode 100644 src/libgcc/libgcc2.inc.c create mode 100644 src/libgcc/longlong.h diff --git a/.clang-tidy b/.clang-tidy index caf62ab7f8..a56f7b17c9 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,6 +1,6 @@ Checks: '-*,readability-braces-around-statements,readability-inconsistent-declaration-parameter-name' WarningsAsErrors: '' -HeaderFilterRegex: '(src|include)\/.*\.h$' +HeaderFilterRegex: '(src|include)\/.*(\.h|\.inc\.c)$' FormatStyle: 'file' CheckOptions: # Require argument names to match exactly (instead of allowing a name to be a prefix/suffix of another) diff --git a/spec b/spec index 1adb939920..69476bd4e9 100644 --- a/spec +++ b/spec @@ -176,6 +176,21 @@ beginseg 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" diff --git a/src/libgcc/__cmpdi2.c b/src/libgcc/__cmpdi2.c new file mode 100644 index 0000000000..4c477f8263 --- /dev/null +++ b/src/libgcc/__cmpdi2.c @@ -0,0 +1,2 @@ +#define L_cmpdi2 +#include "src/libgcc/libgcc2.inc.c" diff --git a/src/libgcc/__cmpdi2.s b/src/libgcc/__cmpdi2.s deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/libgcc/__divdi3.c b/src/libgcc/__divdi3.c new file mode 100644 index 0000000000..26cc049c2f --- /dev/null +++ b/src/libgcc/__divdi3.c @@ -0,0 +1,2 @@ +#define L_divdi3 +#include "src/libgcc/libgcc2.inc.c" diff --git a/src/libgcc/__divdi3.s b/src/libgcc/__divdi3.s deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/libgcc/__fixdfdi.c b/src/libgcc/__fixdfdi.c new file mode 100644 index 0000000000..a0c73d0b8f --- /dev/null +++ b/src/libgcc/__fixdfdi.c @@ -0,0 +1,2 @@ +#define L_fixdfdi +#include "src/libgcc/libgcc2.inc.c" diff --git a/src/libgcc/__fixdfdi.s b/src/libgcc/__fixdfdi.s deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/libgcc/__fixsfdi.c b/src/libgcc/__fixsfdi.c new file mode 100644 index 0000000000..4e6d6baf7b --- /dev/null +++ b/src/libgcc/__fixsfdi.c @@ -0,0 +1,2 @@ +#define L_fixsfdi +#include "src/libgcc/libgcc2.inc.c" diff --git a/src/libgcc/__fixsfdi.s b/src/libgcc/__fixsfdi.s deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/libgcc/__fixunsdfdi.c b/src/libgcc/__fixunsdfdi.c new file mode 100644 index 0000000000..9940267102 --- /dev/null +++ b/src/libgcc/__fixunsdfdi.c @@ -0,0 +1,2 @@ +#define L_fixunsdfdi +#include "src/libgcc/libgcc2.inc.c" diff --git a/src/libgcc/__fixunsdfdi.s b/src/libgcc/__fixunsdfdi.s deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/libgcc/__fixunssfdi.c b/src/libgcc/__fixunssfdi.c new file mode 100644 index 0000000000..34b123e48f --- /dev/null +++ b/src/libgcc/__fixunssfdi.c @@ -0,0 +1,2 @@ +#define L_fixunssfdi +#include "src/libgcc/libgcc2.inc.c" diff --git a/src/libgcc/__fixunssfdi.s b/src/libgcc/__fixunssfdi.s deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/libgcc/__floatdidf.c b/src/libgcc/__floatdidf.c new file mode 100644 index 0000000000..996973fe0f --- /dev/null +++ b/src/libgcc/__floatdidf.c @@ -0,0 +1,2 @@ +#define L_floatdidf +#include "src/libgcc/libgcc2.inc.c" diff --git a/src/libgcc/__floatdidf.s b/src/libgcc/__floatdidf.s deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/libgcc/__floatdisf.c b/src/libgcc/__floatdisf.c new file mode 100644 index 0000000000..433988fa63 --- /dev/null +++ b/src/libgcc/__floatdisf.c @@ -0,0 +1,2 @@ +#define L_floatdisf +#include "src/libgcc/libgcc2.inc.c" diff --git a/src/libgcc/__floatdisf.s b/src/libgcc/__floatdisf.s deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/libgcc/__moddi3.c b/src/libgcc/__moddi3.c new file mode 100644 index 0000000000..f40a11ec73 --- /dev/null +++ b/src/libgcc/__moddi3.c @@ -0,0 +1,2 @@ +#define L_moddi3 +#include "src/libgcc/libgcc2.inc.c" diff --git a/src/libgcc/__moddi3.s b/src/libgcc/__moddi3.s deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/libgcc/__udivdi3.c b/src/libgcc/__udivdi3.c new file mode 100644 index 0000000000..7c2e52eb78 --- /dev/null +++ b/src/libgcc/__udivdi3.c @@ -0,0 +1,2 @@ +#define L_udivdi3 +#include "src/libgcc/libgcc2.inc.c" diff --git a/src/libgcc/__udivdi3.s b/src/libgcc/__udivdi3.s deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/libgcc/__umoddi3.c b/src/libgcc/__umoddi3.c new file mode 100644 index 0000000000..4cb7dec926 --- /dev/null +++ b/src/libgcc/__umoddi3.c @@ -0,0 +1,2 @@ +#define L_umoddi3 +#include "src/libgcc/libgcc2.inc.c" diff --git a/src/libgcc/__umoddi3.s b/src/libgcc/__umoddi3.s deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/libgcc/libgcc2.inc.c b/src/libgcc/libgcc2.inc.c new file mode 100644 index 0000000000..d8b89b75ef --- /dev/null +++ b/src/libgcc/libgcc2.inc.c @@ -0,0 +1,464 @@ +/* More subroutines needed by GCC output code on some machines. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1989, 92-97, 1998 Free Software Foundation, Inc. + +This file is part of GNU CC. + +GNU CC 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 2, or (at your option) +any later version. + +GNU CC 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 GNU CC; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +/* As a special exception, if you link this library with other files, + some of which are compiled with GCC, to produce an executable, + this library does not by itself cause the resulting executable + to be covered by the GNU General Public License. + This exception does not however invalidate any other reasons why + the executable file might be covered by the GNU General Public License. */ + +/* Modified by ZeldaRET to keep only the parts that are relevant to the iQue build of OoT. */ + +#include "ultra64/ultratypes.h" + +typedef u8 UQItype; +typedef s32 SItype; +typedef u32 USItype; +typedef s64 DItype; +typedef u64 UDItype; + +typedef f32 SFtype; +typedef f64 DFtype; + +typedef s32 word_type; + +#define SI_TYPE_SIZE 32 + +#define DI_SIZE 64 +#define DF_SIZE 53 +#define SF_SIZE 24 + +#define WORD_SIZE 32 +#define HIGH_HALFWORD_COEFF (((UDItype)1) << (WORD_SIZE / 2)) +#define HIGH_WORD_COEFF (((UDItype)1) << WORD_SIZE) + +/* DIstructs are pairs of SItype values in big-endian order. */ + +struct DIstruct { + SItype high, low; +}; + +/* We need this union to unpack/pack DImode values, since we don't have + any arithmetic yet. Incoming DImode parameters are stored into the + `ll' field, and the unpacked result is read from the struct `s'. */ + +typedef union { + struct DIstruct s; + DItype ll; +} DIunion; + +extern DItype __fixunssfdi(SFtype original_a); +extern DItype __fixunsdfdi(DFtype a); + +#if defined(L_divdi3) || defined(L_moddi3) +static inline DItype __negdi2(DItype u) { + DIunion w; + DIunion uu; + + uu.ll = u; + + w.s.low = -uu.s.low; + w.s.high = -uu.s.high - ((USItype)w.s.low > 0); + + return w.ll; +} +#endif + +#if defined(L_udivdi3) || defined(L_divdi3) || defined(L_umoddi3) || defined(L_moddi3) +static const UQItype __clz_tab[] = { + 0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, +}; + +#include "src/libgcc/longlong.h" + +static inline UDItype __udivmoddi4(UDItype n, UDItype d, UDItype* rp) { + DIunion ww; + DIunion nn, dd; + DIunion rr; + USItype d0, d1, n0, n1, n2; + USItype q0, q1; + USItype b, bm; + + nn.ll = n; + dd.ll = d; + + d0 = dd.s.low; + d1 = dd.s.high; + n0 = nn.s.low; + n1 = nn.s.high; + + if (d1 == 0) { + if (d0 > n1) { + /* 0q = nn / 0D */ + + count_leading_zeros(bm, d0); + + if (bm != 0) { + /* Normalize, i.e. make the most significant bit of the + denominator set. */ + + d0 = d0 << bm; + n1 = (n1 << bm) | (n0 >> (SI_TYPE_SIZE - bm)); + n0 = n0 << bm; + } + + udiv_qrnnd(q0, n0, n1, n0, d0); + q1 = 0; + + /* Remainder in n0 >> bm. */ + } else { + /* qq = NN / 0d */ + + if (d0 == 0) { + d0 = 1 / d0; /* Divide intentionally by zero. */ + } + + count_leading_zeros(bm, d0); + + if (bm == 0) { + /* From (n1 >= d0) /\ (the most significant bit of d0 is set), + conclude (the most significant bit of n1 is set) /\ (the + leading quotient digit q1 = 1). + + This special case is necessary, not an optimization. + (Shifts counts of SI_TYPE_SIZE are undefined.) */ + + n1 -= d0; + q1 = 1; + } else { + /* Normalize. */ + + b = SI_TYPE_SIZE - bm; + + d0 = d0 << bm; + n2 = n1 >> b; + n1 = (n1 << bm) | (n0 >> b); + n0 = n0 << bm; + + udiv_qrnnd(q1, n1, n2, n1, d0); + } + + /* n1 != d0... */ + + udiv_qrnnd(q0, n0, n1, n0, d0); + + /* Remainder in n0 >> bm. */ + } + + if (rp != 0) { + rr.s.low = n0 >> bm; + rr.s.high = 0; + *rp = rr.ll; + } + } else { + if (d1 > n1) { + /* 00 = nn / DD */ + + q0 = 0; + q1 = 0; + + /* Remainder in n1n0. */ + if (rp != 0) { + rr.s.low = n0; + rr.s.high = n1; + *rp = rr.ll; + } + } else { + /* 0q = NN / dd */ + + count_leading_zeros(bm, d1); + if (bm == 0) { + /* From (n1 >= d1) /\ (the most significant bit of d1 is set), + conclude (the most significant bit of n1 is set) /\ (the + quotient digit q0 = 0 or 1). + + This special case is necessary, not an optimization. */ + + /* The condition on the next line takes advantage of that + n1 >= d1 (true due to program flow). */ + if (n1 > d1 || n0 >= d0) { + q0 = 1; + sub_ddmmss(n1, n0, n1, n0, d1, d0); + } else { + q0 = 0; + } + + q1 = 0; + + if (rp != 0) { + rr.s.low = n0; + rr.s.high = n1; + *rp = rr.ll; + } + } else { + USItype m1, m0; + /* Normalize. */ + + b = SI_TYPE_SIZE - bm; + + d1 = (d1 << bm) | (d0 >> b); + d0 = d0 << bm; + n2 = n1 >> b; + n1 = (n1 << bm) | (n0 >> b); + n0 = n0 << bm; + + udiv_qrnnd(q0, n1, n2, n1, d1); + umul_ppmm(m1, m0, q0, d0); + + if (m1 > n1 || (m1 == n1 && m0 > n0)) { + q0--; + sub_ddmmss(m1, m0, m1, m0, d1, d0); + } + + q1 = 0; + + /* Remainder in (n1n0 - m1m0) >> bm. */ + if (rp != 0) { + sub_ddmmss(n1, n0, n1, n0, m1, m0); + rr.s.low = (n1 << b) | (n0 >> bm); + rr.s.high = n1 >> bm; + *rp = rr.ll; + } + } + } + } + + ww.s.low = q0; + ww.s.high = q1; + return ww.ll; +} +#endif + +#ifdef L_divdi3 +DItype __divdi3(DItype u, DItype v) { + word_type c = 0; + DIunion uu, vv; + DItype w; + + uu.ll = u; + vv.ll = v; + + if (uu.s.high < 0) { + c = ~c, uu.ll = __negdi2(uu.ll); + } + if (vv.s.high < 0) { + c = ~c, vv.ll = __negdi2(vv.ll); + } + + w = __udivmoddi4(uu.ll, vv.ll, (UDItype*)0); + if (c) { + w = __negdi2(w); + } + + return w; +} +#endif + +#ifdef L_moddi3 +DItype __moddi3(DItype u, DItype v) { + word_type c = 0; + DIunion uu, vv; + DItype w; + + uu.ll = u; + vv.ll = v; + + if (uu.s.high < 0) { + c = ~c, uu.ll = __negdi2(uu.ll); + } + if (vv.s.high < 0) { + vv.ll = __negdi2(vv.ll); + } + + (void)__udivmoddi4(uu.ll, vv.ll, (UDItype*)&w); + if (c) { + w = __negdi2(w); + } + + return w; +} +#endif + +#ifdef L_umoddi3 +UDItype __umoddi3(UDItype u, UDItype v) { + UDItype w; + + (void)__udivmoddi4(u, v, &w); + + return w; +} +#endif + +#ifdef L_udivdi3 +UDItype __udivdi3(UDItype n, UDItype d) { + return __udivmoddi4(n, d, (UDItype*)0); +} +#endif + +#ifdef L_cmpdi2 +word_type __cmpdi2(DItype a, DItype b) { + DIunion au, bu; + + au.ll = a, bu.ll = b; + + if (au.s.high < bu.s.high) { + return 0; + } else if (au.s.high > bu.s.high) { + return 2; + } + if ((USItype)au.s.low < (USItype)bu.s.low) { + return 0; + } else if ((USItype)au.s.low > (USItype)bu.s.low) { + return 2; + } + return 1; +} +#endif + +#ifdef L_fixunsdfdi +DItype __fixunsdfdi(DFtype a) { + DFtype b; + UDItype v; + + if (a < 0) { + return 0; + } + + /* Compute high word of result, as a flonum. */ + b = (a / HIGH_WORD_COEFF); + /* Convert that to fixed (but not to DItype!), + and shift it into the high word. */ + v = (USItype)b; + v <<= WORD_SIZE; + /* Remove high part from the DFtype, leaving the low part as flonum. */ + a -= (DFtype)v; + /* Convert that to fixed (but not to DItype!) and add it in. + Sometimes A comes out negative. This is significant, since + A has more bits than a long int does. */ + if (a < 0) { + v -= (USItype)(-a); + } else { + v += (USItype)a; + } + return v; +} +#endif + +#ifdef L_fixdfdi +DItype __fixdfdi(DFtype a) { + if (a < 0) { + return -__fixunsdfdi(-a); + } + return __fixunsdfdi(a); +} +#endif + +#ifdef L_fixunssfdi +DItype __fixunssfdi(SFtype original_a) { + /* Convert the SFtype to a DFtype, because that is surely not going + to lose any bits. Some day someone else can write a faster version + that avoids converting to DFtype, and verify it really works right. */ + DFtype a = original_a; + DFtype b; + UDItype v; + + if (a < 0) { + return 0; + } + + /* Compute high word of result, as a flonum. */ + b = (a / HIGH_WORD_COEFF); + /* Convert that to fixed (but not to DItype!), + and shift it into the high word. */ + v = (USItype)b; + v <<= WORD_SIZE; + /* Remove high part from the DFtype, leaving the low part as flonum. */ + a -= (DFtype)v; + /* Convert that to fixed (but not to DItype!) and add it in. + Sometimes A comes out negative. This is significant, since + A has more bits than a long int does. */ + if (a < 0) { + v -= (USItype)(-a); + } else { + v += (USItype)a; + } + return v; +} +#endif + +#ifdef L_fixsfdi +DItype __fixsfdi(SFtype a) { + if (a < 0) { + return -__fixunssfdi(-a); + } + return __fixunssfdi(a); +} +#endif + +#ifdef L_floatdidf +DFtype __floatdidf(DItype u) { + DFtype d; + + d = (SItype)(u >> WORD_SIZE); + d *= HIGH_HALFWORD_COEFF; + d *= HIGH_HALFWORD_COEFF; + d += (USItype)(u & (HIGH_WORD_COEFF - 1)); + + return d; +} +#endif + +#ifdef L_floatdisf +SFtype __floatdisf(DItype u) { + /* Do the calculation in DFmode + so that we don't lose any of the precision of the high word + while multiplying it. */ + DFtype f; + + /* Protect against double-rounding error. + Represent any low-order bits, that might be truncated in DFmode, + by a bit that won't be lost. The bit can go in anywhere below the + rounding position of the SFmode. A fixed mask and bit position + handles all usual configurations. It doesn't handle the case + of 128-bit DImode, however. */ + if (DF_SIZE < DI_SIZE && DF_SIZE > (DI_SIZE - DF_SIZE + SF_SIZE)) { +#define REP_BIT ((USItype)1 << (DI_SIZE - DF_SIZE)) + if (!(-((DItype)1 << DF_SIZE) < u && u < ((DItype)1 << DF_SIZE))) { + if ((USItype)u & (REP_BIT - 1)) { + u |= REP_BIT; + } + } + } + f = (SItype)(u >> WORD_SIZE); + f *= HIGH_HALFWORD_COEFF; + f *= HIGH_HALFWORD_COEFF; + f += (USItype)(u & (HIGH_WORD_COEFF - 1)); + + return (SFtype)f; +} +#endif diff --git a/src/libgcc/longlong.h b/src/libgcc/longlong.h new file mode 100644 index 0000000000..403a7f6fa9 --- /dev/null +++ b/src/libgcc/longlong.h @@ -0,0 +1,149 @@ +/* longlong.h -- definitions for mixed size 32/64 bit arithmetic. + Copyright (C) 1991, 92, 94, 95, 96, 1997 Free Software Foundation, Inc. + + This definition file 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 2, or (at your option) any later version. + + This definition file 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., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* Modified by ZeldaRET to keep only the parts that are relevant to the iQue build of OoT. */ + +#define __BITS4 (SI_TYPE_SIZE / 4) +#define __ll_B (1L << (SI_TYPE_SIZE / 2)) +#define __ll_lowpart(t) ((USItype)(t) % __ll_B) +#define __ll_highpart(t) ((USItype)(t) / __ll_B) + +/* Define auxiliary asm macros. + + 1) umul_ppmm(high_prod, low_prod, multipler, multiplicand) + multiplies two USItype integers MULTIPLER and MULTIPLICAND, + and generates a two-part USItype product in HIGH_PROD and + LOW_PROD. + + 2) __umulsidi3(a,b) multiplies two USItype integers A and B, + and returns a UDItype product. This is just a variant of umul_ppmm. + + 3) udiv_qrnnd(quotient, remainder, high_numerator, low_numerator, + denominator) divides a two-word unsigned integer, composed by the + integers HIGH_NUMERATOR and LOW_NUMERATOR, by DENOMINATOR and + places the quotient in QUOTIENT and the remainder in REMAINDER. + HIGH_NUMERATOR must be less than DENOMINATOR for correct operation. + If, in addition, the most significant bit of DENOMINATOR must be 1, + then the pre-processor symbol UDIV_NEEDS_NORMALIZATION is defined to 1. + + 4) sdiv_qrnnd(quotient, remainder, high_numerator, low_numerator, + denominator). Like udiv_qrnnd but the numbers are signed. The + quotient is rounded towards 0. + + 5) count_leading_zeros(count, x) counts the number of zero-bits from + the msb to the first non-zero bit. This is the number of steps X + needs to be shifted left to set the msb. Undefined for X == 0. + + 6) add_ssaaaa(high_sum, low_sum, high_addend_1, low_addend_1, + high_addend_2, low_addend_2) adds two two-word unsigned integers, + composed by HIGH_ADDEND_1 and LOW_ADDEND_1, and HIGH_ADDEND_2 and + LOW_ADDEND_2 respectively. The result is placed in HIGH_SUM and + LOW_SUM. Overflow (i.e. carry out) is not stored anywhere, and is + lost. + + 7) sub_ddmmss(high_difference, low_difference, high_minuend, + low_minuend, high_subtrahend, low_subtrahend) subtracts two + two-word unsigned integers, composed by HIGH_MINUEND_1 and + LOW_MINUEND_1, and HIGH_SUBTRAHEND_2 and LOW_SUBTRAHEND_2 + respectively. The result is placed in HIGH_DIFFERENCE and + LOW_DIFFERENCE. Overflow (i.e. carry out) is not stored anywhere, + and is lost. + + If any of these macros are left undefined for a particular CPU, + C macros are used. */ + +#define add_ssaaaa(sh, sl, ah, al, bh, bl) \ + do { \ + USItype __x; \ + __x = (al) + (bl); \ + (sh) = (ah) + (bh) + (__x < (al)); \ + (sl) = __x; \ + } while (0) + +#define sub_ddmmss(sh, sl, ah, al, bh, bl) \ + do { \ + USItype __x; \ + __x = (al) - (bl); \ + (sh) = (ah) - (bh) - (__x > (al)); \ + (sl) = __x; \ + } while (0) + +#if __GNUC__ < 3 +#define umul_ppmm(w1, w0, u, v) \ + __asm__("multu %2,%3" : "=l"((USItype)(w0)), "=h"((USItype)(w1)) : "d"((USItype)(u)), "d"((USItype)(v))) +#else +#define umul_ppmm(w1, w0, u, v) \ + __asm__("multu %2,%3\n\t" \ + "mflo %0\n\t" \ + "mfhi %1" \ + : "=d"(w0), "=d"(w1) \ + : "d"((USItype)(u)), "d"((USItype)(v))) +#endif + +#define udiv_qrnnd(q, r, n1, n0, d) \ + do { \ + USItype __d1, __d0, __q1, __q0; \ + USItype __r1, __r0, __m; \ + __d1 = __ll_highpart(d); \ + __d0 = __ll_lowpart(d); \ + \ + __r1 = (n1) % __d1; \ + __q1 = (n1) / __d1; \ + __m = (USItype)__q1 * __d0; \ + __r1 = __r1 * __ll_B | __ll_highpart(n0); \ + if (__r1 < __m) { \ + __q1--, __r1 += (d); \ + if (__r1 >= (d)) /* i.e. we didn't get carry when adding to __r1 */ \ + if (__r1 < __m) \ + __q1--, __r1 += (d); \ + } \ + __r1 -= __m; \ + \ + __r0 = __r1 % __d1; \ + __q0 = __r1 / __d1; \ + __m = (USItype)__q0 * __d0; \ + __r0 = __r0 * __ll_B | __ll_lowpart(n0); \ + if (__r0 < __m) { \ + __q0--, __r0 += (d); \ + if (__r0 >= (d)) \ + if (__r0 < __m) \ + __q0--, __r0 += (d); \ + } \ + __r0 -= __m; \ + \ + (q) = (USItype)__q1 * __ll_B | __q0; \ + (r) = __r0; \ + } while (0) + +#define count_leading_zeros(count, x) \ + do { \ + USItype __xr = (x); \ + USItype __a; \ + \ + if (SI_TYPE_SIZE <= 32) { \ + __a = __xr < ((USItype)1 << 2 * __BITS4) \ + ? (__xr < ((USItype)1 << __BITS4) ? 0 : __BITS4) \ + : (__xr < ((USItype)1 << 3 * __BITS4) ? 2 * __BITS4 : 3 * __BITS4); \ + } else { \ + for (__a = SI_TYPE_SIZE - 8; __a > 0; __a -= 8) \ + if (((__xr >> __a) & 0xff) != 0) \ + break; \ + } \ + \ + (count) = SI_TYPE_SIZE - (__clz_tab[__xr >> __a] + __a); \ + } while (0) diff --git a/undefined_syms.txt b/undefined_syms.txt index 4774fe4143..deba8affd0 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -9,18 +9,3 @@ D_0F000000 = 0x0F000000; // z_bg_mjin D_06000000 = 0x06000000; - -#if PLATFORM_IQUE -gzip_decompress = 0x80002C3C; -__divdi3 = 0x80008010; -__moddi3 = 0x800085F0; -__udivdi3 = 0x80008B80; -__umoddi3 = 0x800090F0; -__cmpdi2 = 0x80009600; -__floatdidf = 0x80009650; -__floatdisf = 0x800096A0; -__fixunsdfdi = 0x80009760; -__fixdfdi = 0x80009960; -__fixunssfdi = 0x800099D0; -__fixsfdi = 0x80009BD0; -#endif From 1549f34e8e8e0211d7f6cc672b0ac7f4125d6e03 Mon Sep 17 00:00:00 2001 From: cadmic Date: Fri, 10 Jan 2025 15:05:10 -0800 Subject: [PATCH 23/40] [iQue] Update permuter/decompme import (#2415) * [iQue] Update permuter/decompme import * Fix GCC build --- Makefile | 3 ++- tools/permuter_settings.toml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index d0524f0b8b..70105ac6d5 100644 --- a/Makefile +++ b/Makefile @@ -225,7 +225,6 @@ endif VERSION_MACRO := $(shell echo $(VERSION) | tr a-z-. A-Z__) CPP_DEFINES += -DOOT_VERSION=$(VERSION_MACRO) -DOOT_REVISION=$(REVISION) CPP_DEFINES += -DOOT_REGION=REGION_$(REGION) -CPP_DEFINES += -DBUILD_CREATOR="\"$(BUILD_CREATOR)\"" -DBUILD_DATE="\"$(BUILD_DATE)\"" -DBUILD_TIME="\"$(BUILD_TIME)\"" CPP_DEFINES += -DLIBULTRA_VERSION=LIBULTRA_VERSION_$(LIBULTRA_VERSION) CPP_DEFINES += -DLIBULTRA_PATCH=$(LIBULTRA_PATCH) ifeq ($(PLATFORM),IQUE) @@ -534,6 +533,8 @@ $(shell mkdir -p $(foreach dir, \ $(dir:$(EXTRACTED_DIR)/%=$(BUILD_DIR)/%))) endif +$(BUILD_DIR)/src/boot/build.o: CPP_DEFINES += -DBUILD_CREATOR="\"$(BUILD_CREATOR)\"" -DBUILD_DATE="\"$(BUILD_DATE)\"" -DBUILD_TIME="\"$(BUILD_TIME)\"" + ifeq ($(COMPILER),ido) $(BUILD_DIR)/src/boot/driverominit.o: OPTFLAGS := -O2 diff --git a/tools/permuter_settings.toml b/tools/permuter_settings.toml index 557e748cda..b168afec86 100644 --- a/tools/permuter_settings.toml +++ b/tools/permuter_settings.toml @@ -33,4 +33,4 @@ ACTOR_DEBUG_PRINTF = "void" [decompme.compilers] "tools/ido_recomp/*/7.1/cc" = "ido7.1" "tools/ido_recomp/*/5.3/cc" = "ido5.3" -"tools/egcs/*/gcc" = "egcs_1.1.2-4" +"tools/egcs/*/gcc" = "egcs_1.1.2-4c" From b19b06a5314124824a01573c80addda3f82f7585 Mon Sep 17 00:00:00 2001 From: Tharo <17233964+Thar0@users.noreply.github.com> Date: Fri, 10 Jan 2025 23:54:02 +0000 Subject: [PATCH 24/40] [iQue] Match remaining libultra/os files (#2414) * Match remaining libultra/os files * Align box id macros * Fix bss, format * Fix BSS * Clarify some comments * More bug comment * Comment * Fix BSS --- Makefile | 6 +- include/ultra64/bcp.h | 72 +++++++++++++++++++ include/variables.h | 12 +++- src/boot/z_std_dma.c | 2 +- src/code/fault_gc.c | 4 +- src/code/main.c | 4 +- src/code/z_bgcheck.c | 2 +- src/code/z_camera.c | 4 +- src/code/z_common_data.c | 2 +- src/code/z_kaleido_scope_call.c | 2 +- src/code/z_kankyo.c | 4 +- src/code/z_message.c | 2 +- src/libultra/os/getmemsize.c | 4 ++ src/libultra/os/gettime.c | 2 +- src/libultra/os/initialize.c | 71 ++++++++++++++++-- src/libultra/os/recvmesg.c | 5 +- src/libultra/os/settimer.c | 12 +--- src/libultra/os/stopthread.c | 8 +-- src/libultra/os/thread.c | 16 ++--- src/libultra/os/timerintr.c | 10 ++- src/libultra/os/virtualtophysical.c | 8 +-- .../actors/ovl_player_actor/z_player.c | 4 +- .../misc/ovl_kaleido_scope/z_kaleido_scope.c | 2 +- 23 files changed, 197 insertions(+), 61 deletions(-) diff --git a/Makefile b/Makefile index 70105ac6d5..ebba84f850 100644 --- a/Makefile +++ b/Makefile @@ -214,7 +214,7 @@ else ifeq ($(PLATFORM),GC) LIBULTRA_VERSION := L LIBULTRA_PATCH := 0 else ifeq ($(PLATFORM),IQUE) - CPP_DEFINES += -DPLATFORM_N64=0 -DPLATFORM_GC=0 -DPLATFORM_IQUE=1 -DBBPLAYER + CPP_DEFINES += -DPLATFORM_N64=0 -DPLATFORM_GC=0 -DPLATFORM_IQUE=1 LIBULTRA_VERSION := L LIBULTRA_PATCH := 0 else @@ -702,8 +702,12 @@ else $(BUILD_DIR)/src/libultra/gu/%.o: OPTFLAGS := -O2 $(BUILD_DIR)/src/libultra/io/%.o: OPTFLAGS := -O2 $(BUILD_DIR)/src/libultra/libc/%.o: OPTFLAGS := -O2 +ifeq ($(PLATFORM),IQUE) +$(BUILD_DIR)/src/libultra/os/%.o: OPTFLAGS := -O0 +else $(BUILD_DIR)/src/libultra/os/%.o: OPTFLAGS := -O1 endif +endif $(BUILD_DIR)/src/libleo/%.o: CC := $(CC_OLD) $(BUILD_DIR)/src/libleo/%.o: OPTFLAGS := -O2 diff --git a/include/ultra64/bcp.h b/include/ultra64/bcp.h index 027fecf3f6..78c4584fe7 100644 --- a/include/ultra64/bcp.h +++ b/include/ultra64/bcp.h @@ -190,4 +190,76 @@ */ #define PI_NAND_CTRL_REG (PI_BASE_REG + 0x48) +/** + * [31:16] Box ID + * [31:30] Hardware Revision? (osInitialize checks this and sets __osBbIsBb to 2 if != 0) + * [29:27] ?? (not seen) + * [26:25] ?? (system clock speed identifier?) + * [24:22] ?? (bootrom, checked against MI_10_REG and copied there if mismatch) + * [21:16] ?? (not seen) + * [ 7: 4] GPIO direction control + * [7] RTC Data output enable + * [6] RTC Clock output enable + * [5] Error LED output enable + * [4] Power Control output enable + * [ 3: 0] GPIO in/out value + * [3] RTC Data output value (0=low, 1=high) + * [2] RTC Clock output value (0=low, 1=high) + * [1] Error LED (0=on, 1=off) + * [0] Power Control (0=off, 1=on) + */ +#define PI_GPIO_REG (PI_BASE_REG + 0x60) + +/* Box ID */ +#define PI_GPIO_GET_BOXID(reg) ((reg) >> 16) +#define PI_GPIO_IS_HW_V2(reg) ((reg) & (3 << 30)) + +/* GPIO: Input/Output enables */ +#define PI_GPIO_I_PWR ((0 << 0) << 4) +#define PI_GPIO_O_PWR ((1 << 0) << 4) +#define PI_GPIO_I_LED ((0 << 1) << 4) +#define PI_GPIO_O_LED ((1 << 1) << 4) +#define PI_GPIO_I_RTC_CLK ((0 << 2) << 4) +#define PI_GPIO_O_RTC_CLK ((1 << 2) << 4) +#define PI_GPIO_I_RTC_DAT ((0 << 3) << 4) +#define PI_GPIO_O_RTC_DAT ((1 << 3) << 4) + +/* GPIO: Output controls */ +/* Power */ +#define PI_GPIO_PWR_OFF (0 << 0) +#define PI_GPIO_PWR_ON (1 << 0) +/* LED */ +#define PI_GPIO_LED_ON (0 << 1) +#define PI_GPIO_LED_OFF (1 << 1) +/* RTC */ +#define PI_GPIO_RTC_CLK_LO (0 << 2) +#define PI_GPIO_RTC_CLK_HI (1 << 2) +#define PI_GPIO_RTC_DAT_LO (0 << 3) +#define PI_GPIO_RTC_DAT_HI (1 << 3) + +/* GPIO: Input getters */ +#define PI_GPIO_GET_PWR(reg) (((reg) >> 0) & 1) +#define PI_GPIO_GET_LED(reg) (((reg) >> 1) & 1) +#define PI_GPIO_GET_RTC_CLK(reg) (((reg) >> 2) & 1) +#define PI_GPIO_GET_RTC_DAT(reg) (((reg) >> 3) & 1) + +/** + * [31] ? + */ +#define PI_64_REG (PI_BASE_REG + 0x64) + +/****************************************************************************** + * Additional Serial Interface (SI) Registers + */ + +/** + * ? + */ +#define SI_0C_REG (SI_BASE_REG + 0x0C) + +/** + * ? + */ +#define SI_1C_REG (SI_BASE_REG + 0x1C) + #endif diff --git a/include/variables.h b/include/variables.h index 6ad4f7ee4d..f5f4599e7a 100644 --- a/include/variables.h +++ b/include/variables.h @@ -9,15 +9,23 @@ extern Mtx D_01000000; extern void* osRomBase; extern s32 osTvType; +extern u32 osRomType; +extern u32 osVersion; extern s32 osResetType; extern s32 osCicId; extern u32 osMemSize; extern u8 osAppNMIBuffer[0x40]; extern u32 __osBbIsBb; -extern u32 __osBbHackFlags; -extern u32 __osBbPakAddress[4]; +extern u32 __osBbEepromSize; extern u32 __osBbPakSize; +extern u32 __osBbFlashSize; +extern u32 __osBbEepromAddress; +extern u32 __osBbPakAddress[4]; +extern u32 __osBbFlashAddress; +extern u32 __osBbSramSize; +extern u32 __osBbSramAddress; +extern u32 __osBbHackFlags; extern s8 D_80009430; extern vu8 gViConfigBlack; diff --git a/src/boot/z_std_dma.c b/src/boot/z_std_dma.c index 0326a1cb60..8fe2982e7b 100644 --- a/src/boot/z_std_dma.c +++ b/src/boot/z_std_dma.c @@ -28,7 +28,7 @@ #endif #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:78 pal-1.0:76 pal-1.1:76" + "ntsc-1.2:70 pal-1.0:68 pal-1.1:68" StackEntry sDmaMgrStackInfo; OSMesgQueue sDmaMgrMsgQueue; diff --git a/src/code/fault_gc.c b/src/code/fault_gc.c index 5e0ce4c905..059162c162 100644 --- a/src/code/fault_gc.c +++ b/src/code/fault_gc.c @@ -40,8 +40,8 @@ * 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:176 gc-jp-ce:176 gc-jp-mq:176 gc-us:176" \ - "gc-us-mq:176" +#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" #include "global.h" #include "alloca.h" diff --git a/src/code/main.c b/src/code/main.c index ae4eb3d8f1..d2c3c9f8bc 100644 --- a/src/code/main.c +++ b/src/code/main.c @@ -23,8 +23,8 @@ extern struct IrqMgr gIrqMgr; #include "n64dd.h" #endif -#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:138 ntsc-1.1:138 ntsc-1.2:138 pal-1.0:136 pal-1.1:136" +#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" extern u8 _buffersSegmentEnd[]; diff --git a/src/code/z_bgcheck.c b/src/code/z_bgcheck.c index 8caacb9405..57a2c80289 100644 --- a/src/code/z_bgcheck.c +++ b/src/code/z_bgcheck.c @@ -2,7 +2,7 @@ #include "terminal.h" #include "line_numbers.h" -#pragma increment_block_number "ntsc-1.0:120 ntsc-1.1:120 ntsc-1.2:120" +#pragma increment_block_number "ntsc-1.0:112 ntsc-1.1:112 ntsc-1.2:112" 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 d5aa8ad807..cb59ef55e9 100644 --- a/src/code/z_camera.c +++ b/src/code/z_camera.c @@ -4,7 +4,7 @@ #include "terminal.h" #include "overlays/actors/ovl_En_Horse/z_en_horse.h" -#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq:192" \ +#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \ "ntsc-1.0:128 ntsc-1.1:128 ntsc-1.2:128 pal-1.0:128 pal-1.1:128" s16 Camera_RequestSettingImpl(Camera* camera, s16 requestedSetting, s16 flags); @@ -3639,7 +3639,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:141 ntsc-1.1:141 ntsc-1.2:141 pal-1.0:139 pal-1.1:139" + "ntsc-1.0:133 ntsc-1.1:133 ntsc-1.2:133 pal-1.0:131 pal-1.1:131" s32 Camera_KeepOn4(Camera* camera) { static Vec3f D_8015BD50; diff --git a/src/code/z_common_data.c b/src/code/z_common_data.c index 448e387af3..e8c0a58a6e 100644 --- a/src/code/z_common_data.c +++ b/src/code/z_common_data.c @@ -3,7 +3,7 @@ #include "versions.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:192 ntsc-1.1:192 ntsc-1.2:192 pal-1.0:192 pal-1.1:192" + "ntsc-1.0:176 ntsc-1.1:176 ntsc-1.2:176 pal-1.0:160 pal-1.1:160" ALIGNED(16) SaveContext gSaveContext; u32 D_8015FA88; diff --git a/src/code/z_kaleido_scope_call.c b/src/code/z_kaleido_scope_call.c index 5dd08566dd..10fff2bb07 100644 --- a/src/code/z_kaleido_scope_call.c +++ b/src/code/z_kaleido_scope_call.c @@ -1,4 +1,4 @@ -#pragma increment_block_number "gc-eu:224 gc-eu-mq:224 gc-jp:224 gc-jp-ce:224 gc-jp-mq:224 gc-us:224 gc-us-mq:224" \ +#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" #include "global.h" diff --git a/src/code/z_kankyo.c b/src/code/z_kankyo.c index ee48b66f96..a113a73bff 100644 --- a/src/code/z_kankyo.c +++ b/src/code/z_kankyo.c @@ -1,5 +1,5 @@ -#pragma increment_block_number "gc-eu:228 gc-eu-mq:228 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:236 pal-1.1:236" +#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" #include "global.h" #include "ultra64.h" diff --git a/src/code/z_message.c b/src/code/z_message.c index bfef10aa58..f775929a64 100644 --- a/src/code/z_message.c +++ b/src/code/z_message.c @@ -8,7 +8,7 @@ #endif #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:96 ntsc-1.1:96 ntsc-1.2:96 pal-1.0:128 pal-1.1:128" + "ntsc-1.0:80 ntsc-1.1:80 ntsc-1.2:80 pal-1.0:128 pal-1.1:128" #if !PLATFORM_GC #define OCARINA_BUTTON_A_PRIM_1_R 80 diff --git a/src/libultra/os/getmemsize.c b/src/libultra/os/getmemsize.c index 787346de63..1adbd66ff4 100644 --- a/src/libultra/os/getmemsize.c +++ b/src/libultra/os/getmemsize.c @@ -3,6 +3,7 @@ #define STEP 0x100000 u32 osGetMemSize(void) { +#ifndef BBPLAYER vu32* ptr; u32 size = 0x400000; u32 data0; @@ -28,4 +29,7 @@ u32 osGetMemSize(void) { } return size; +#else + return osMemSize; +#endif } diff --git a/src/libultra/os/gettime.c b/src/libultra/os/gettime.c index 2ca90b0df9..e8943cd9e0 100644 --- a/src/libultra/os/gettime.c +++ b/src/libultra/os/gettime.c @@ -11,5 +11,5 @@ OSTime osGetTime(void) { t = __osCurrentTime; __osRestoreInt(prevInt); - return base + t; + return t + base; } diff --git a/src/libultra/os/initialize.c b/src/libultra/os/initialize.c index 427a517710..300f2743dc 100644 --- a/src/libultra/os/initialize.c +++ b/src/libultra/os/initialize.c @@ -1,4 +1,5 @@ #include "global.h" +#include "ultra64/bcp.h" typedef struct __osExceptionVector { u32 inst1; // lui $k0, %hi(__osException) @@ -59,13 +60,50 @@ void OSINITIALIZE_FUNC(void) { __osSetWatchLo(0x04900000); #endif - while (__osSiRawReadIo((void*)(PIF_RAM_END - 3), &pifdata)) { - ; +#ifdef BBPLAYER + { + u32 x, y; + + // Check for iQue Player hardware by enabling and disabling FLASH and IDE interrupts and checking if the + // register gives the correct response. + IO_WRITE(MI_EX_INTR_MASK_REG, MI_EX_INTR_MASK_SET_FLASH | MI_EX_INTR_MASK_SET_IDE); + x = IO_READ(MI_EX_INTR_MASK_REG); + IO_WRITE(MI_EX_INTR_MASK_REG, MI_EX_INTR_MASK_CLR_FLASH | MI_EX_INTR_MASK_CLR_IDE); + y = IO_READ(MI_EX_INTR_MASK_REG); + + __osBbIsBb = + ((x & (MI_EX_INTR_MASK_FLASH | MI_EX_INTR_MASK_IDE)) == (MI_EX_INTR_MASK_FLASH | MI_EX_INTR_MASK_IDE)) && + ((y & (MI_EX_INTR_MASK_FLASH | MI_EX_INTR_MASK_IDE)) == 0); } - while (__osSiRawWriteIo((void*)(PIF_RAM_END - 3), pifdata | 8)) { - ; + + //! @bug Most games do not have permission to use GPIO, so they often cannot correctly tell if they are running on + //! HW V1 or V2. + if (__osBbIsBb && PI_GPIO_IS_HW_V2(IO_READ(PI_GPIO_REG))) { + __osBbIsBb = 2; } + if (__osBbIsBb) { + // Set IPL boot parameters + osTvType = OS_TV_NTSC; + osRomType = 0; + osResetType = 0; + osVersion = 1; + osMemSize = 0x400000; + } + + if (!__osBbIsBb) { + // The PIF doesn't exist on iQue, no need to enable NMI from PIF +#endif + while (__osSiRawReadIo((void*)(PIF_RAM_END - 3), &pifdata)) { + ; + } + while (__osSiRawWriteIo((void*)(PIF_RAM_END - 3), pifdata | 8)) { + ; + } +#ifdef BBPLAYER + } +#endif + *(__osExceptionVector*)UT_VEC = __osExceptionPreamble; // TLB miss *(__osExceptionVector*)XUT_VEC = __osExceptionPreamble; // XTLB miss *(__osExceptionVector*)ECC_VEC = __osExceptionPreamble; // cache errors @@ -102,6 +140,31 @@ void OSINITIALIZE_FUNC(void) { } #endif +#ifdef BBPLAYER + if (!__osBbIsBb) { + // In a real iQue Player environment (that is, real hardware + app launched from the system menu) + // these are set on app launch by the system menu based on the contents of the game's associated + // ticket. Set some dummy values if not running on iQue Player hardware. + __osBbEepromSize = 0x200; + __osBbPakSize = 0x8000; + __osBbFlashSize = 0x20000; + __osBbEepromAddress = 0x80400000 - 0x200; + __osBbPakAddress[0] = 0x80400000 - 0x8200; + __osBbPakAddress[1] = 0; + __osBbPakAddress[2] = 0; + __osBbPakAddress[3] = 0; + __osBbFlashAddress = 0x80400000 - 0x20000; + __osBbSramSize = __osBbFlashSize; + __osBbSramAddress = __osBbFlashAddress; + } + if (__osBbIsBb) { + IO_WRITE(PI_64_REG, IO_READ(PI_64_REG) & ~0x80000000); + IO_WRITE(MI_EX_INTR_MASK_REG, MI_EX_INTR_MASK_SET_IDE); + IO_WRITE(SI_0C_REG, 0); + IO_WRITE(SI_1C_REG, (IO_READ(SI_1C_REG) & ~0x7F000000) | 0x2F400000); + } +#endif + IO_WRITE(AI_CONTROL_REG, AI_CONTROL_DMA_ON); IO_WRITE(AI_DACRATE_REG, AI_MAX_DAC_RATE - 1); IO_WRITE(AI_BITRATE_REG, AI_MAX_BIT_RATE - 1); diff --git a/src/libultra/os/recvmesg.c b/src/libultra/os/recvmesg.c index f065188cd0..3254867cce 100644 --- a/src/libultra/os/recvmesg.c +++ b/src/libultra/os/recvmesg.c @@ -7,9 +7,10 @@ s32 osRecvMesg(OSMesgQueue* mq, OSMesg* msg, s32 flag) { if (flag == OS_MESG_NOBLOCK) { __osRestoreInt(prevInt); return -1; + } else { + __osRunningThread->state = OS_STATE_WAITING; + __osEnqueueAndYield(&mq->mtqueue); } - __osRunningThread->state = OS_STATE_WAITING; - __osEnqueueAndYield(&mq->mtqueue); } if (msg != NULL) { diff --git a/src/libultra/os/settimer.c b/src/libultra/os/settimer.c index a876641e88..c5632e82c2 100644 --- a/src/libultra/os/settimer.c +++ b/src/libultra/os/settimer.c @@ -12,20 +12,14 @@ s32 osSetTimer(OSTimer* timer, OSTime countdown, OSTime interval, OSMesgQueue* m timer->next = NULL; timer->prev = NULL; timer->interval = interval; - - if (countdown != 0) { - timer->value = countdown; - } else { - timer->value = interval; - } + timer->value = (countdown != 0) ? countdown : interval; timer->mq = mq; timer->msg = msg; #if LIBULTRA_VERSION >= LIBULTRA_VERSION_K prevInt = __osDisableInt(); - if (__osTimerList->next != __osTimerList) { - if (1) {} - + if (__osTimerList->next == __osTimerList) { + } else { next = __osTimerList->next; count = osGetCount(); value = count - __osTimerCounter; diff --git a/src/libultra/os/stopthread.c b/src/libultra/os/stopthread.c index 54a236b49b..53aecd940a 100644 --- a/src/libultra/os/stopthread.c +++ b/src/libultra/os/stopthread.c @@ -2,13 +2,7 @@ void osStopThread(OSThread* thread) { register u32 prevInt = __osDisableInt(); - register u32 state; - - if (thread == NULL) { - state = OS_STATE_RUNNING; - } else { - state = thread->state; - } + register u16 state = (thread == NULL) ? OS_STATE_RUNNING : thread->state; switch (state) { case OS_STATE_RUNNING: diff --git a/src/libultra/os/thread.c b/src/libultra/os/thread.c index c78a34e4ec..0263acb454 100644 --- a/src/libultra/os/thread.c +++ b/src/libultra/os/thread.c @@ -6,16 +6,16 @@ OSThread* __osActiveQueue = (OSThread*)&__osThreadTail; OSThread* __osRunningThread = NULL; OSThread* __osFaultedThread = NULL; -void __osDequeueThread(OSThread** queue, OSThread* thread) { - register OSThread** a2 = queue; - register OSThread* a3 = *a2; +void __osDequeueThread(register OSThread** queue, register OSThread* thread) { + register OSThread* pred = (OSThread*)queue; + register OSThread* succ = pred->next; - while (a3 != NULL) { - if (a3 == thread) { - *a2 = thread->next; + while (succ != NULL) { + if (succ == thread) { + pred->next = thread->next; return; } - a2 = &a3->next; - a3 = *a2; + pred = succ; + succ = pred->next; } } diff --git a/src/libultra/os/timerintr.c b/src/libultra/os/timerintr.c index ce5c12fc5f..3f94368b20 100644 --- a/src/libultra/os/timerintr.c +++ b/src/libultra/os/timerintr.c @@ -11,10 +11,8 @@ void __osTimerServicesInit(void) { __osCurrentTime = 0; __osBaseCounter = 0; __osViIntrCount = 0; - __osTimerList->prev = __osTimerList; - __osTimerList->next = __osTimerList->prev; - __osTimerList->value = 0; - __osTimerList->interval = __osTimerList->value; + __osTimerList->next = __osTimerList->prev = __osTimerList; + __osTimerList->interval = __osTimerList->value = 0; __osTimerList->mq = NULL; __osTimerList->msg = NULL; } @@ -28,7 +26,7 @@ void __osTimerInterrupt(void) { return; } - while (true) { + for (;;) { timer = __osTimerList->next; if (timer == __osTimerList) { __osSetCompare(0); @@ -72,7 +70,7 @@ void __osSetTimerIntr(OSTime time) { prevInt = __osDisableInt(); __osTimerCounter = osGetCount(); - newTime = time + __osTimerCounter; + newTime = __osTimerCounter + time; __osSetCompare((u32)newTime); __osRestoreInt(prevInt); } diff --git a/src/libultra/os/virtualtophysical.c b/src/libultra/os/virtualtophysical.c index 5f8f79d83c..0037572232 100644 --- a/src/libultra/os/virtualtophysical.c +++ b/src/libultra/os/virtualtophysical.c @@ -3,11 +3,9 @@ u32 osVirtualToPhysical(void* vaddr) { if (IS_KSEG0(vaddr)) { return K0_TO_PHYS(vaddr); - } - - if (IS_KSEG1(vaddr)) { + } else if (IS_KSEG1(vaddr)) { return K1_TO_PHYS(vaddr); + } else { + return __osProbeTLB(vaddr); } - - return __osProbeTLB(vaddr); } diff --git a/src/overlays/actors/ovl_player_actor/z_player.c b/src/overlays/actors/ovl_player_actor/z_player.c index e7433105ae..c1f3fe2c58 100644 --- a/src/overlays/actors/ovl_player_actor/z_player.c +++ b/src/overlays/actors/ovl_player_actor/z_player.c @@ -338,14 +338,14 @@ 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:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq:192" \ +#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128" \ "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:160 gc-jp-ce:160 gc-jp-mq:160 gc-us:160 gc-us-mq:160" \ +#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" // .data 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 23648dd085..7a6cff2334 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.c +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.c @@ -16,7 +16,7 @@ #include "terminal.h" #include "versions.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" +#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" #if !PLATFORM_GC #define KALEIDO_PROMPT_CURSOR_R 100 From 8d213e61cf8673f29eacf4dfb1cba893856103ae Mon Sep 17 00:00:00 2001 From: Tharo <17233964+Thar0@users.noreply.github.com> Date: Sat, 11 Jan 2025 02:15:43 +0000 Subject: [PATCH 25/40] [iQue] Match PI-related files in libultra/io (#2408) * [iQue] Match PI-related files in libultra/io, set correct thread ID for vimgr * Create a define for the hardcoded address in devmgr.c * Fix BSS --- include/ultra64/bcp.h | 10 ++++ src/libultra/io/devmgr.c | 27 +++++++++ src/libultra/io/epirawdma.c | 106 +++++++++++++++++++++++++++++++++++- src/libultra/io/pimgr.c | 2 +- 4 files changed, 143 insertions(+), 2 deletions(-) diff --git a/include/ultra64/bcp.h b/include/ultra64/bcp.h index 78c4584fe7..f66fee2f02 100644 --- a/include/ultra64/bcp.h +++ b/include/ultra64/bcp.h @@ -190,6 +190,16 @@ */ #define PI_NAND_CTRL_REG (PI_BASE_REG + 0x48) +/** + * PI internal buffer DMA read length. Writes initiate a DMA from RDRAM to the PI buffer. + */ +#define PI_EX_RD_LEN_REG (PI_BASE_REG + 0x58) + +/** + * PI internal buffer DMA write length. Writes initiate a DMA from the PI buffer to RDRAM. + */ +#define PI_EX_WR_LEN_REG (PI_BASE_REG + 0x5C) + /** * [31:16] Box ID * [31:30] Hardware Revision? (osInitialize checks this and sets __osBbIsBb to 2 if != 0) diff --git a/src/libultra/io/devmgr.c b/src/libultra/io/devmgr.c index d0e7d5289a..05dcb99519 100644 --- a/src/libultra/io/devmgr.c +++ b/src/libultra/io/devmgr.c @@ -2,6 +2,8 @@ #include "ultra64/internal.h" #include "ultra64/leodrive.h" +#define TEMP_BUFFER ((void*)0x80600000) + // os.h #define LEO_BLOCK_MODE 1 #define LEO_TRACK_MODE 2 @@ -14,6 +16,9 @@ void __osDevMgrMain(void* arg) { s32 ret; OSDevMgr* dm = (OSDevMgr*)arg; s32 messageSend; +#ifdef BBPLAYER + s32 check = false; +#endif while (true) { osRecvMesg(dm->cmdQueue, (OSMesg*)&ioMesg, OS_MESG_BLOCK); @@ -78,6 +83,13 @@ void __osDevMgrMain(void* arg) { switch (ioMesg->hdr.type) { case OS_MESG_TYPE_DMAREAD: osRecvMesg(dm->acsQueue, &dummy, OS_MESG_BLOCK); +#ifdef BBPLAYER + if (__osBbIsBb == 1 && ((u32)ioMesg->dramAddr & 0x7F) >= 0x60) { + check = true; + ret = dm->dma(OS_READ, ioMesg->devAddr, TEMP_BUFFER, ioMesg->size); + break; + } +#endif ret = dm->dma(OS_READ, ioMesg->devAddr, ioMesg->dramAddr, ioMesg->size); break; case OS_MESG_TYPE_DMAWRITE: @@ -86,6 +98,13 @@ void __osDevMgrMain(void* arg) { break; case OS_MESG_TYPE_EDMAREAD: osRecvMesg(dm->acsQueue, &dummy, OS_MESG_BLOCK); +#ifdef BBPLAYER + if (__osBbIsBb == 1 && ((u32)ioMesg->dramAddr & 0x7F) >= 0x60) { + check = true; + ret = dm->edma(ioMesg->piHandle, OS_READ, ioMesg->devAddr, TEMP_BUFFER, ioMesg->size); + break; + } +#endif ret = dm->edma(ioMesg->piHandle, OS_READ, ioMesg->devAddr, ioMesg->dramAddr, ioMesg->size); break; case OS_MESG_TYPE_EDMAWRITE: @@ -103,6 +122,14 @@ void __osDevMgrMain(void* arg) { if (ret == 0) { osRecvMesg(dm->evtQueue, &em, OS_MESG_BLOCK); +#ifdef BBPLAYER + if (__osBbIsBb == 1 && check) { + osInvalDCache(TEMP_BUFFER, (ioMesg->size + DCACHE_LINEMASK) & ~DCACHE_LINEMASK); + bcopy(TEMP_BUFFER, ioMesg->dramAddr, ioMesg->size); + check = false; + osWritebackDCache(ioMesg->dramAddr, ioMesg->size); + } +#endif osSendMesg(ioMesg->hdr.retQueue, (OSMesg)ioMesg, OS_MESG_NOBLOCK); osSendMesg(dm->acsQueue, NULL, OS_MESG_NOBLOCK); } diff --git a/src/libultra/io/epirawdma.c b/src/libultra/io/epirawdma.c index ff6bb9a653..dbc072fbb2 100644 --- a/src/libultra/io/epirawdma.c +++ b/src/libultra/io/epirawdma.c @@ -1,8 +1,18 @@ #include "global.h" +#include "ultra64/bcp.h" s32 __osEPiRawStartDma(OSPiHandle* handle, s32 direction, u32 cartAddr, void* dramAddr, size_t size) { - s32 status; +#ifdef BBPLAYER + u64 dummybuf[2]; +#endif + u32 status; OSPiHandle* curHandle; +#ifdef BBPLAYER + u32 buffer; + u32 pgsize; + u16* adr; + u32 i; +#endif status = IO_READ(PI_STATUS_REG); while (status & (PI_STATUS_DMA_BUSY | PI_STATUS_IO_BUSY)) { @@ -53,9 +63,102 @@ s32 __osEPiRawStartDma(OSPiHandle* handle, s32 direction, u32 cartAddr, void* dr curHandle->pulse = handle->pulse; } +#ifdef BBPLAYER + if (direction == OS_READ) { + // Device page size in bytes + pgsize = 1; + for (i = 1; i <= (u32)handle->pageSize + 2; i++) { + pgsize *= 2; + } + + // If the initial cart address mod pgsize is at the last u16 in the page, + // need to do some manual DMAs? + if ((cartAddr & (pgsize - 1)) == pgsize - sizeof(u16)) { + // Read 32 bits starting 2 bytes before the target DMA address, + // so that the lower 16 bits of the result are the first 2 bytes + // of the requested data. + __osEPiRawReadIo(handle, cartAddr - sizeof(u16), &buffer); + + // Poke the lower 16 bits into the destination address + adr = (u16*)PHYS_TO_K1(dramAddr); + *(adr++) = (u16)buffer; + + // Update DMA parameters + cartAddr += sizeof(u16); + dramAddr = adr; + size -= sizeof(u16); + + // If the remaining size is >= 4 + if (size >= sizeof(u32)) { + // Read another 32 bits at the cart addr + __osEPiRawReadIo(handle, cartAddr, &buffer); + + // Store all 32 bits to RAM + adr = (u16*)dramAddr; + *(adr++) = buffer >> 16; + *(adr++) = (u16)buffer; + + // Update DMA parameters again + cartAddr += sizeof(u32); + dramAddr = adr; + size -= sizeof(u32); + + // If we're not at the end of the DMA + if (size != 0) { + // Read 32 bits again + __osEPiRawReadIo(handle, cartAddr, &buffer); + + // Store just the upper 16 bits + adr = (u16*)PHYS_TO_K1(dramAddr); + *(adr++) = buffer >> 16; + + // Update DMA parameters once more + cartAddr += sizeof(u16); + dramAddr = adr; + size -= sizeof(u16); + } + } + } + + // If the end cart address mod pgsize is just 2 bytes into a page or the remaining data size is just 1x u16 + if (((((cartAddr + size) & (pgsize - 1)) == sizeof(u16)) | (size == sizeof(u16))) != 0) { + if ((cartAddr + size) & 2) { + // Read 32 bits at end - 2, store the upper 16 bits + __osEPiRawReadIo(handle, cartAddr + size - sizeof(u16), &buffer); + adr = (u16*)PHYS_TO_K1(dramAddr) + (size - sizeof(u16)) / sizeof(u16); + *adr = buffer >> 16; + } else { + // Read 32 bits at end - 4, store the lower 16 bits + __osEPiRawReadIo(handle, cartAddr + size - sizeof(u32), &buffer); + adr = (u16*)PHYS_TO_K1(dramAddr) + (size - sizeof(u16)) / sizeof(u16); + *adr = (u16)buffer; + } + size -= sizeof(u16); + } + + if (size == 0) { + // If size ended up 0 following the adjustments, run an 8-byte dummy DMA anyway + size = 8; + dramAddr = (void*)dummybuf; + cartAddr = 0; + } + } +#endif + IO_WRITE(PI_DRAM_ADDR_REG, osVirtualToPhysical(dramAddr)); IO_WRITE(PI_CART_ADDR_REG, K1_TO_PHYS(handle->baseAddress | cartAddr)); +#ifdef BBPLAYER + if (direction != OS_READ && direction != OS_WRITE) { + return -1; + } + + if ((handle->baseAddress | cartAddr) <= 0x400) { + IO_WRITE((direction == OS_READ) ? PI_EX_WR_LEN_REG : PI_EX_RD_LEN_REG, size - 1); + } else { + IO_WRITE((direction == OS_READ) ? PI_WR_LEN_REG : PI_RD_LEN_REG, size - 1); + } +#else switch (direction) { case OS_READ: IO_WRITE(PI_WR_LEN_REG, size - 1); @@ -66,5 +169,6 @@ s32 __osEPiRawStartDma(OSPiHandle* handle, s32 direction, u32 cartAddr, void* dr default: return -1; } +#endif return 0; } diff --git a/src/libultra/io/pimgr.c b/src/libultra/io/pimgr.c index e8aa98d01b..7a0b68f8dc 100644 --- a/src/libultra/io/pimgr.c +++ b/src/libultra/io/pimgr.c @@ -40,8 +40,8 @@ void osCreatePiManager(OSPri pri, OSMesgQueue* cmdQueue, OSMesg* cmdBuf, s32 cmd prevInt = __osDisableInt(); __osPiDevMgr.active = true; - __osPiDevMgr.cmdQueue = cmdQueue; __osPiDevMgr.thread = &piThread; + __osPiDevMgr.cmdQueue = cmdQueue; __osPiDevMgr.evtQueue = &piEventQueue; __osPiDevMgr.acsQueue = &__osPiAccessQueue; __osPiDevMgr.dma = __osPiRawStartDma; From 7aa9808b7ef38a19ac9131e91269eb852e0c8c49 Mon Sep 17 00:00:00 2001 From: cadmic Date: Sat, 11 Jan 2025 19:44:14 -0800 Subject: [PATCH 26/40] [iQue] Use CPP includes in spec and update for iQue (#2399) * Update spec for iQue * Use CPP includes for spec overlays, scenes, and libultra * Fix iQue + DEBUG_FEATURES * Define BBPLAYER, merge function definitions * Add Makefile dependency on spec_includes * Fix libc order for iQue * Match src/libultra/bb/sa/common.c to fix linker errors * Use C versions of getcount/setcompare for iQue * Format * Small fixes to line up boot segment * Remove zlib.c --- Makefile | 5 +- include/libc64/os_malloc.h | 2 +- spec | 14899 +------------------------ spec_includes/boot_libultra_gc.inc | 91 + spec_includes/boot_libultra_ique.inc | 72 + spec_includes/boot_libultra_n64.inc | 94 + spec_includes/code_libultra_gc.inc | 95 + spec_includes/code_libultra_ique.inc | 125 + spec_includes/code_libultra_n64.inc | 72 + spec_includes/overlays_gc.inc | 3240 ++++++ spec_includes/overlays_n64_ique.inc | 3240 ++++++ spec_includes/scenes_gc_ique.inc | 4079 +++++++ spec_includes/scenes_n64.inc | 3911 +++++++ src/boot/zlib.c | 1 - src/libultra/bb/sa/common.c | 41 + src/libultra/io/motor.c | 12 + src/libultra/os/parameters.s | 2 +- 17 files changed, 15211 insertions(+), 14770 deletions(-) create mode 100644 spec_includes/boot_libultra_gc.inc create mode 100644 spec_includes/boot_libultra_ique.inc create mode 100644 spec_includes/boot_libultra_n64.inc create mode 100644 spec_includes/code_libultra_gc.inc create mode 100644 spec_includes/code_libultra_ique.inc create mode 100644 spec_includes/code_libultra_n64.inc create mode 100644 spec_includes/overlays_gc.inc create mode 100644 spec_includes/overlays_n64_ique.inc create mode 100644 spec_includes/scenes_gc_ique.inc create mode 100644 spec_includes/scenes_n64.inc delete mode 100644 src/boot/zlib.c diff --git a/Makefile b/Makefile index ebba84f850..8563efa59e 100644 --- a/Makefile +++ b/Makefile @@ -408,8 +408,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_INCLUDES := $(wildcard spec_includes/*.inc) SRC_DIRS := $(shell find src -type d) UNDECOMPILED_DATA_DIRS := $(shell find data -type d) @@ -569,6 +571,7 @@ 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 @@ -840,7 +843,7 @@ $(O_FILES): | asset_files .PHONY: o_files asset_files -$(BUILD_DIR)/$(SPEC): $(SPEC) +$(BUILD_DIR)/$(SPEC): $(SPEC) $(SPEC_INCLUDES) $(CPP) $(CPPFLAGS) $< | $(BUILD_DIR_REPLACE) > $@ $(LDSCRIPT): $(BUILD_DIR)/$(SPEC) 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/spec b/spec index 69476bd4e9..ef63420f3d 100644 --- a/spec +++ b/spec @@ -16,6 +16,7 @@ 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 @@ -42,141 +43,31 @@ beginseg #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 - 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" + // libultra +#if PLATFORM_N64 +#include "spec_includes/boot_libultra_n64.inc" +#elif PLATFORM_GC +#include "spec_includes/boot_libultra_gc.inc" +#elif PLATFORM_IQUE +#include "spec_includes/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" @@ -191,11 +82,33 @@ beginseg 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 + + // 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 @@ -591,6 +504,7 @@ beginseg 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" @@ -738,6 +652,8 @@ beginseg #if DEBUG_FEATURES include "$(BUILD_DIR)/src/code/ucode_disas.o" #endif + + // audio #if OOT_VERSION < NTSC_1_1 || PLATFORM_GC pad_text #endif @@ -757,7 +673,7 @@ beginseg 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 +#if !PLATFORM_N64 && !DEBUG_FEATURES pad_text #endif include "$(BUILD_DIR)/src/audio/sfx_params.o" @@ -766,19 +682,16 @@ beginseg 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" -#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 +#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" @@ -791,191 +704,119 @@ beginseg 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" -#if PLATFORM_N64 include "$(BUILD_DIR)/src/libc64/__osMalloc_n64.o" -#else + 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" -#endif -#if !DEBUG_FEATURES + 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 - include "$(BUILD_DIR)/src/libc64/aprintf.o" -#if !PLATFORM_N64 - include "$(BUILD_DIR)/src/libc64/sleep.o" -#endif + + // jpeg 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 + + // libultra #if PLATFORM_N64 - include "$(BUILD_DIR)/src/libultra/os/getintmask.o" +#include "spec_includes/code_libultra_n64.inc" +#elif PLATFORM_GC +#include "spec_includes/code_libultra_gc.inc" +#elif PLATFORM_IQUE +#include "spec_includes/code_libultra_ique.inc" #endif + + // libc #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" +#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 + // 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 @@ -1124,6491 +965,9 @@ 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 - +#include "spec_includes/overlays_n64_ique.inc" #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 - +#include "spec_includes/overlays_gc.inc" #endif beginseg @@ -11532,8001 +4891,9 @@ 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 - +#include "spec_includes/scenes_n64.inc" #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 - +#include "spec_includes/scenes_gc_ique.inc" #endif beginseg diff --git a/spec_includes/boot_libultra_gc.inc b/spec_includes/boot_libultra_gc.inc new file mode 100644 index 0000000000..5faf2fbbb8 --- /dev/null +++ b/spec_includes/boot_libultra_gc.inc @@ -0,0 +1,91 @@ + 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/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_includes/boot_libultra_ique.inc b/spec_includes/boot_libultra_ique.inc new file mode 100644 index 0000000000..c25edae2ae --- /dev/null +++ b/spec_includes/boot_libultra_ique.inc @@ -0,0 +1,72 @@ + 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/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_includes/boot_libultra_n64.inc b/spec_includes/boot_libultra_n64.inc new file mode 100644 index 0000000000..678326f61d --- /dev/null +++ b/spec_includes/boot_libultra_n64.inc @@ -0,0 +1,94 @@ + 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/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_includes/code_libultra_gc.inc b/spec_includes/code_libultra_gc.inc new file mode 100644 index 0000000000..25839bc917 --- /dev/null +++ b/spec_includes/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_includes/code_libultra_ique.inc b/spec_includes/code_libultra_ique.inc new file mode 100644 index 0000000000..4e53234778 --- /dev/null +++ b/spec_includes/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_includes/code_libultra_n64.inc b/spec_includes/code_libultra_n64.inc new file mode 100644 index 0000000000..7535025d1e --- /dev/null +++ b/spec_includes/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_includes/overlays_gc.inc b/spec_includes/overlays_gc.inc new file mode 100644 index 0000000000..27bbb72b04 --- /dev/null +++ b/spec_includes/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_includes/overlays_n64_ique.inc b/spec_includes/overlays_n64_ique.inc new file mode 100644 index 0000000000..8c1905a5ad --- /dev/null +++ b/spec_includes/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_includes/scenes_gc_ique.inc b/spec_includes/scenes_gc_ique.inc new file mode 100644 index 0000000000..6b1b42b05a --- /dev/null +++ b/spec_includes/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_includes/scenes_n64.inc b/spec_includes/scenes_n64.inc new file mode 100644 index 0000000000..47c82b0bf1 --- /dev/null +++ b/spec_includes/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/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/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/motor.c b/src/libultra/io/motor.c index 252e93875a..b70aa2f8bc 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_INVALID; +#endif } 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 From dbfa95fd01d486ab709d74428c5f666dcc0208ee Mon Sep 17 00:00:00 2001 From: Ben Villalobos <4691428+benvillalobos@users.noreply.github.com> Date: Sun, 12 Jan 2025 11:22:18 -0800 Subject: [PATCH 27/40] Descriptions for Gohma Larva vs Boss Gohma (#2420) * Add descriptions for gohma vs boss gohma * Fix capitalization --- src/overlays/actors/ovl_Boss_Goma/z_boss_goma.c | 6 ++++++ src/overlays/actors/ovl_En_Goma/z_en_goma.c | 6 ++++++ 2 files changed, 12 insertions(+) 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..082b91a56f 100644 --- a/src/overlays/actors/ovl_Boss_Goma/z_boss_goma.c +++ b/src/overlays/actors/ovl_Boss_Goma/z_boss_goma.c @@ -1,3 +1,9 @@ +/* + * 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" 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..575df93e53 100644 --- a/src/overlays/actors/ovl_En_Goma/z_en_goma.c +++ b/src/overlays/actors/ovl_En_Goma/z_en_goma.c @@ -1,3 +1,9 @@ +/* + * 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" From bdc6b5015374cdedcc7b599d3774537bc2802ae1 Mon Sep 17 00:00:00 2001 From: cadmic Date: Mon, 13 Jan 2025 05:32:25 -0800 Subject: [PATCH 28/40] [iQue] Define EGCS macro instead of relying on `__GNUC__` (#2423) * [iQue] Define EGCS macro instead of relying on __GNUC__ * Revert longlong.h --- Makefile | 4 ++-- include/libc/stdarg.h | 21 ++++++++++----------- include/macros.h | 4 ++-- src/audio/general.c | 2 -- src/code/sched.c | 2 -- src/code/z_actor.c | 2 -- src/libgcc/longlong.h | 1 + 7 files changed, 15 insertions(+), 21 deletions(-) diff --git a/Makefile b/Makefile index 8563efa59e..9aec6bdf8e 100644 --- a/Makefile +++ b/Makefile @@ -376,10 +376,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 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/macros.h b/include/macros.h index d7547482c0..c5264ba6a5 100644 --- a/include/macros.h +++ b/include/macros.h @@ -52,10 +52,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 diff --git a/src/audio/general.c b/src/audio/general.c index cb87548fa8..2a639275bb 100644 --- a/src/audio/general.c +++ b/src/audio/general.c @@ -8,8 +8,6 @@ #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 diff --git a/src/code/sched.c b/src/code/sched.c index 58aa627a71..b22f38b402 100644 --- a/src/code/sched.c +++ b/src/code/sched.c @@ -62,8 +62,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/z_actor.c b/src/code/z_actor.c index c0633747fc..309be3077c 100644 --- a/src/code/z_actor.c +++ b/src/code/z_actor.c @@ -24,8 +24,6 @@ static s32 sCurCeilingBgId; 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 #endif 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" \ From e2ed5568e5b7ec77796b43c12e30311e0fd84fec Mon Sep 17 00:00:00 2001 From: cadmic Date: Tue, 14 Jan 2025 05:32:00 -0800 Subject: [PATCH 29/40] [iQue] Match ovl_kaleido_scope (#2421) * [iQue] Match ovl_kaleido_scope * Add bug comment for OOB reads Co-authored-by: Dragorn421 * Preemptively fix merge conflicts --------- Co-authored-by: Dragorn421 --- Makefile | 4 +- include/z64save.h | 6 +- .../misc/ovl_kaleido_scope/z_kaleido_map.c | 18 +- .../misc/ovl_kaleido_scope/z_kaleido_scope.c | 197 +++++++++--------- .../misc/ovl_kaleido_scope/z_kaleido_scope.h | 6 +- .../ique-cn/files_ovl_kaleido_scope.csv | 2 +- 6 files changed, 121 insertions(+), 112 deletions(-) diff --git a/Makefile b/Makefile index 9aec6bdf8e..ec1d5f07bf 100644 --- a/Makefile +++ b/Makefile @@ -592,8 +592,10 @@ 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 := + +$(BUILD_DIR)/src/boot/z_std_dma.o: CFLAGS += -funsigned-char endif ifeq ($(PLATFORM),IQUE) diff --git a/include/z64save.h b/include/z64save.h index 3d61f485f8..142a11294a 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -420,8 +420,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) @@ -432,7 +432,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) \ 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..232e7ae3fe 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_map.c +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_map.c @@ -150,7 +150,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 +181,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 +203,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 +285,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 +550,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 +561,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 +583,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 +601,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_scope.c b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.c index 7a6cff2334..d22caf7fe2 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.c +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.c @@ -721,7 +721,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 +748,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 +775,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 @@ -954,7 +954,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 +1015,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 +1268,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 +1297,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 +1575,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 +1825,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 +2004,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 +2123,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 +2145,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 +2400,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 +2424,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 +2448,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 +2472,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 +2479,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 +2500,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 +2511,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 +2547,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 +2582,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 +2610,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 +2626,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 +2970,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 +3118,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 +3158,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 +3190,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 +3198,7 @@ void KaleidoScope_SetVertices(PlayState* play, GraphicsContext* gfxCtx) { break; } + y -= 32; k += 4; } @@ -3239,13 +3239,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 +3417,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 +3530,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 +3548,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 +3627,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 +3698,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 +3736,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 +3875,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 +3903,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 +4023,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 +4176,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 +4187,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 +4204,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 +4302,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 +4398,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 +4452,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 +4604,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 +4635,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..ce0044ad44 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.h +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.h @@ -7,9 +7,9 @@ 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 diff --git a/tools/disasm/ique-cn/files_ovl_kaleido_scope.csv b/tools/disasm/ique-cn/files_ovl_kaleido_scope.csv index 4f63c0b0e9..938c3ebc0d 100644 --- a/tools/disasm/ique-cn/files_ovl_kaleido_scope.csv +++ b/tools/disasm/ique-cn/files_ovl_kaleido_scope.csv @@ -32,4 +32,4 @@ offset,vram,.ovl offset,vram,.bss 1C030,80830220,src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope -1C040,80830230,.end +1C0A0,80830290,.end From 2b9b7a40b0f80199ca9776888bf6efdf85e8bd4c Mon Sep 17 00:00:00 2001 From: cadmic Date: Tue, 14 Jan 2025 08:55:47 -0800 Subject: [PATCH 30/40] [iQue] Match z_end_title, z_construct, z_common_data, z_parameter, z_title, z_opening (#2424) * [iQue] Match z_end_title * [iQue] Match z_construct * [iQue] Match z_common_data * [iQue] Match z_parameter * [iQue] Match z_title, z_opening * Actually match z_parameter * Give up on stack issues * this->exit = true --- include/macros.h | 4 +- include/z64view.h | 4 +- src/code/z_common_data.c | 2 +- src/code/z_construct.c | 14 ++-- src/code/z_parameter.c | 68 +++++++++++-------- .../actors/ovl_End_Title/z_end_title.c | 10 ++- src/overlays/gamestates/ovl_title/z_title.c | 12 +++- 7 files changed, 67 insertions(+), 47 deletions(-) diff --git a/include/macros.h b/include/macros.h index c5264ba6a5..343484028d 100644 --- a/include/macros.h +++ b/include/macros.h @@ -105,12 +105,12 @@ #define LOG_FLOAT(exp, value, file, line) LOG(exp, value, "%f", file, line) #define SET_NEXT_GAMESTATE(curState, newInit, newStruct) \ - do { \ + if (1) { \ GameState* state = curState; \ \ (state)->init = newInit; \ (state)->size = sizeof(newStruct); \ - } while (0) + } (void)0 #if DEBUG_FEATURES diff --git a/include/z64view.h b/include/z64view.h index 3eb3755a2c..5661a26402 100644 --- a/include/z64view.h +++ b/include/z64view.h @@ -15,10 +15,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/src/code/z_common_data.c b/src/code/z_common_data.c index e8c0a58a6e..f571cb1a66 100644 --- a/src/code/z_common_data.c +++ b/src/code/z_common_data.c @@ -24,7 +24,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..fa0f4a38d2 100644 --- a/src/code/z_construct.c +++ b/src/code/z_construct.c @@ -19,17 +19,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 +204,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 +224,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 +484,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_parameter.c b/src/code/z_parameter.c index 7bd399d1e8..7d09da7e2e 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -639,9 +639,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 +1100,9 @@ void Interface_SetSceneRestrictions(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; s16 i = 0; u8 sceneId; +#if !PLATFORM_IQUE s32 pad[3]; +#endif interfaceCtx->restrictions.all = 0; interfaceCtx->restrictions.dinsNayrus = 0; @@ -1148,7 +1150,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 +1280,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 +1643,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 +1654,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 +1801,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 +1838,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 +2017,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 +2349,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 +2402,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 +2459,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 +2471,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 +2661,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 +2682,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 +2913,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 +3017,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; } @@ -3446,11 +3459,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 +3667,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 +4020,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/overlays/actors/ovl_End_Title/z_end_title.c b/src/overlays/actors/ovl_End_Title/z_end_title.c index 0762c9c5e5..961f96f64f 100644 --- a/src/overlays/actors/ovl_End_Title/z_end_title.c +++ b/src/overlays/actors/ovl_End_Title/z_end_title.c @@ -46,18 +46,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/gamestates/ovl_title/z_title.c b/src/overlays/gamestates/ovl_title/z_title.c index 992cb945bd..416db5fe37 100644 --- a/src/overlays/gamestates/ovl_title/z_title.c +++ b/src/overlays/gamestates/ovl_title/z_title.c @@ -40,7 +40,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 +74,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 +92,9 @@ void ConsoleLogo_Draw(ConsoleLogoState* this) { Vec3f v3; Vec3f v1; Vec3f v2; +#if !PLATFORM_IQUE s32 pad2[2]; +#endif OPEN_DISPS(this->state.gfxCtx, "../z_title.c", 395); @@ -165,6 +167,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 +227,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 { From 4a205b9d4c978bf86f2706fee1560141a8547690 Mon Sep 17 00:00:00 2001 From: cadmic Date: Wed, 15 Jan 2025 13:27:16 -0800 Subject: [PATCH 31/40] [iQue] Fix osMotorInit (#2425) --- src/libultra/io/motor.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libultra/io/motor.c b/src/libultra/io/motor.c index b70aa2f8bc..7350ef9210 100644 --- a/src/libultra/io/motor.c +++ b/src/libultra/io/motor.c @@ -133,6 +133,6 @@ s32 osMotorInit(OSMesgQueue* ctrlrqueue, OSPfs* pfs, s32 channel) { pfs->status = PFS_MOTOR_INITIALIZED; return 0; // "Recognized rumble pak" #else - return PFS_ERR_INVALID; + return PFS_ERR_DEVICE; #endif } From d066586872cc7cc704873b4c7579885d6b3f731a Mon Sep 17 00:00:00 2001 From: cadmic Date: Fri, 17 Jan 2025 03:56:22 -0800 Subject: [PATCH 32/40] [iQue] Match z_sram (#2426) * [iQue] z_sram: Use iQue-specific read/write macros * [iQue] z_sram: Make checksum a struct * [iQue] z_sram: Finish matching * Call the trigraph usage a bug * Fix bss * Sram_iQueReadWrite -> Sram_ReadWriteIQue * Use SRAM_HEADER_MAGIC for loop bound * Rename sZeldaMagic -> sSramDefaultHeader and use less char literals --- Makefile | 2 +- include/z64save.h | 6 +- include/z64sram.h | 2 +- src/boot/z_std_dma.c | 2 +- src/code/main.c | 2 +- src/code/z_camera.c | 2 +- src/code/z_kaleido_scope_call.c | 2 +- src/code/z_kankyo.c | 4 +- src/code/z_sram.c | 134 +++++++++++++------- src/overlays/actors/ovl_Fishing/z_fishing.c | 2 +- tools/disasm/ique-cn/functions.txt | 1 + 11 files changed, 106 insertions(+), 53 deletions(-) diff --git a/Makefile b/Makefile index ec1d5f07bf..9530a56aee 100644 --- a/Makefile +++ b/Makefile @@ -581,7 +581,7 @@ 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_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 diff --git a/include/z64save.h b/include/z64save.h index 142a11294a..ab753a515d 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -84,6 +84,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; @@ -254,7 +258,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 { diff --git a/include/z64sram.h b/include/z64sram.h index 36478c1716..3769f4419d 100644 --- a/include/z64sram.h +++ b/include/z64sram.h @@ -14,7 +14,7 @@ typedef enum SramHeaderField { /* 0x00 */ SRAM_HEADER_SOUND, /* 0x01 */ SRAM_HEADER_ZTARGET, /* 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; #endif diff --git a/src/boot/z_std_dma.c b/src/boot/z_std_dma.c index 8fe2982e7b..ec2aa1f75c 100644 --- a/src/boot/z_std_dma.c +++ b/src/boot/z_std_dma.c @@ -28,7 +28,7 @@ #endif #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:68 pal-1.0:66 pal-1.1:66" StackEntry sDmaMgrStackInfo; OSMesgQueue sDmaMgrMsgQueue; diff --git a/src/code/main.c b/src/code/main.c index d2c3c9f8bc..6e6e3026c4 100644 --- a/src/code/main.c +++ b/src/code/main.c @@ -24,7 +24,7 @@ extern struct IrqMgr gIrqMgr; #endif #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" + "ntsc-1.0:127 ntsc-1.1:127 ntsc-1.2:127 pal-1.0:125 pal-1.1:125" extern u8 _buffersSegmentEnd[]; diff --git a/src/code/z_camera.c b/src/code/z_camera.c index cb59ef55e9..715d3f42c2 100644 --- a/src/code/z_camera.c +++ b/src/code/z_camera.c @@ -3639,7 +3639,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" + "ntsc-1.0:130 ntsc-1.1:130 ntsc-1.2:130 pal-1.0:128 pal-1.1:128" s32 Camera_KeepOn4(Camera* camera) { static Vec3f D_8015BD50; diff --git a/src/code/z_kaleido_scope_call.c b/src/code/z_kaleido_scope_call.c index 10fff2bb07..da348b3316 100644 --- a/src/code/z_kaleido_scope_call.c +++ b/src/code/z_kaleido_scope_call.c @@ -1,4 +1,4 @@ -#pragma increment_block_number "gc-eu:192 gc-eu-mq:192 gc-jp:224 gc-jp-ce:224 gc-jp-mq:224 gc-us:224 gc-us-mq:224" \ +#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:224 ntsc-1.1:224 ntsc-1.2:224 pal-1.0:224 pal-1.1:224" #include "global.h" diff --git a/src/code/z_kankyo.c b/src/code/z_kankyo.c index a113a73bff..eff23ff2a0 100644 --- a/src/code/z_kankyo.c +++ b/src/code/z_kankyo.c @@ -1,5 +1,5 @@ -#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:216 gc-eu-mq:216 gc-jp:212 gc-jp-ce:212 gc-jp-mq:212 gc-us:212 gc-us-mq:212" \ + "ntsc-1.0:208 ntsc-1.1:208 ntsc-1.2:208 pal-1.0:228 pal-1.1:228" #include "global.h" #include "ultra64.h" diff --git a/src/code/z_sram.c b/src/code/z_sram.c index 22d9cc07c8..d7d453c9aa 100644 --- a/src/code/z_sram.c +++ b/src/code/z_sram.c @@ -17,6 +17,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 +51,23 @@ u16 gSramSlotOffsets[] = { SLOT_OFFSET(5), }; -static char sZeldaMagic[] = { '\0', '\0', '\0', '\x98', '\x09', '\x10', '\x21', 'Z', 'E', 'L', 'D', 'A' }; +static u8 sSramDefaultHeader[] = { + // TODO: use enums for these + 0, // SRAM_HEADER_SOUND + 0, // SRAM_HEADER_ZTARGET + 0, // SRAM_HEADER_LANGUAGE + + // SRAM_HEADER_MAGIC + 0x98, + 0x09, + 0x10, + 0x21, + 'Z', + 'E', + 'L', + 'D', + 'A', +}; static SavePlayerData sNewSavePlayerData = { { '\0', '\0', '\0', '\0', '\0', '\0' }, // newf @@ -138,15 +178,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 +192,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 +335,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 +347,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 +354,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 +492,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 +544,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 +591,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 +603,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 +616,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 +629,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 +650,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 +660,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 +685,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 +750,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 +850,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 bug + u8* fileName = fileSelect->fileNames[fileSelect->buttonIndex]; + + gSaveContext.save.info.playerData.playerName[offset] = fileName[offset]; +#endif } gSaveContext.save.info.playerData.newf[0] = 'Z'; @@ -838,8 +886,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 +897,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 +927,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 +961,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 +991,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; @@ -986,7 +1034,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 diff --git a/src/overlays/actors/ovl_Fishing/z_fishing.c b/src/overlays/actors/ovl_Fishing/z_fishing.c index a2c5ee5ae6..63bf23cdc2 100644 --- a/src/overlays/actors/ovl_Fishing/z_fishing.c +++ b/src/overlays/actors/ovl_Fishing/z_fishing.c @@ -35,7 +35,7 @@ #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" \ +#pragma increment_block_number "gc-eu:164 gc-eu-mq:164 gc-jp:164 gc-jp-ce:164 gc-jp-mq:164 gc-us:164 gc-us-mq:164" \ "ntsc-1.0:121 ntsc-1.1:121 ntsc-1.2:121 pal-1.0:121 pal-1.1:121" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED diff --git a/tools/disasm/ique-cn/functions.txt b/tools/disasm/ique-cn/functions.txt index 41abd66a7c..0cbe54456d 100644 --- a/tools/disasm/ique-cn/functions.txt +++ b/tools/disasm/ique-cn/functions.txt @@ -1824,6 +1824,7 @@ SkinMatrix_MtxFToMtx = 0x80095D40; // type:func SkinMatrix_MtxFToNewMtx = 0x80095F58; // type:func SkinMatrix_SetRotateAxis = 0x80095FA0; // type:func func_800A8030 = 0x80096110; // type:func +Sram_ReadWriteIQue = 0x80096280; // type:func Sram_InitNewSave = 0x800962D0; // type:func Sram_InitDebugSave = 0x80096420; // type:func Sram_OpenSave = 0x800965E8; // type:func From 260d92dfb6d42a731a352f47787d4032e1e38504 Mon Sep 17 00:00:00 2001 From: cadmic Date: Fri, 17 Jan 2025 12:37:40 -0800 Subject: [PATCH 33/40] Preserve NULL/true/false macros in permuter/decomp.me import (#2430) --- tools/permuter_settings.toml | 3 +++ 1 file changed, 3 insertions(+) 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" From 161c789886460034f8bf2d39f68f05d54273ecc6 Mon Sep 17 00:00:00 2001 From: mzxrules Date: Fri, 17 Jan 2025 22:23:23 -0500 Subject: [PATCH 34/40] Restructure event flags in z64save.h (4/?): Haggling Townsfolk (#2395) * Haggling Townsfolk flags * suggestion * so there's not going to be a We U? --- include/z64save.h | 26 +++++++++++++++++++------ src/overlays/actors/ovl_En_Mu/z_en_mu.c | 24 +++++++++++------------ 2 files changed, 32 insertions(+), 18 deletions(-) diff --git a/include/z64save.h b/include/z64save.h index ab753a515d..fb8767b0a1 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -968,12 +968,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/src/overlays/actors/ovl_En_Mu/z_en_mu.c b/src/overlays/actors/ovl_En_Mu/z_en_mu.c index dbe5e1b15c..4f4221820f 100644 --- a/src/overlays/actors/ovl_En_Mu/z_en_mu.c +++ b/src/overlays/actors/ovl_En_Mu/z_en_mu.c @@ -58,21 +58,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 +82,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 +90,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) { From c76d2a8a4dc808b14dbf3aaf442c719e333e126f Mon Sep 17 00:00:00 2001 From: cadmic Date: Sun, 19 Jan 2025 16:41:14 -0800 Subject: [PATCH 35/40] [iQue] Match z_kanfont (#2428) --- Makefile | 2 +- include/functions.h | 3 ++ include/message_data_static.h | 6 --- src/code/z_kanfont.c | 60 +++++++++++++++++++++++++----- tools/disasm/ique-cn/functions.txt | 1 + 5 files changed, 56 insertions(+), 16 deletions(-) diff --git a/Makefile b/Makefile index 9530a56aee..4823283c08 100644 --- a/Makefile +++ b/Makefile @@ -578,7 +578,7 @@ 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_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_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 diff --git a/include/functions.h b/include/functions.h index f89ce3a0af..6984ea1634 100644 --- a/include/functions.h +++ b/include/functions.h @@ -74,6 +74,9 @@ void CutsceneFlags_Unset(PlayState* play, s16 flag); s32 CutsceneFlags_Get(PlayState* play, s16 flag); s32 Kanji_OffsetFromShiftJIS(s32 character); +#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); 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/src/code/z_kanfont.c b/src/code/z_kanfont.c index 4093f775a9..985e2d52fa 100644 --- a/src/code/z_kanfont.c +++ b/src/code/z_kanfont.c @@ -19,13 +19,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 +56,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 +83,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 +109,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 bug + 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/tools/disasm/ique-cn/functions.txt b/tools/disasm/ique-cn/functions.txt index 0cbe54456d..1afd8b8b50 100644 --- a/tools/disasm/ique-cn/functions.txt +++ b/tools/disasm/ique-cn/functions.txt @@ -1191,6 +1191,7 @@ KaleidoSetup_Init = 0x8006261C; // type:func KaleidoSetup_Destroy = 0x80062770; // type:func Font_LoadCharWide = 0x80062780; // type:func Font_LoadChar = 0x800627D0; // type:func +Font_LoadCharCHN = 0x8006280C; // type:func Font_LoadMessageBoxIcon = 0x80062848; // type:func Font_LoadOrderedFont = 0x8006287C; // type:func Environment_ZBufValToFixedPoint = 0x80062980; // type:func From c3806155c3adbc29f7ab491fc3c28f4ce76bea60 Mon Sep 17 00:00:00 2001 From: cadmic Date: Sun, 19 Jan 2025 18:41:57 -0800 Subject: [PATCH 36/40] [iQue] Don't use -funsigned-char for z_std_dma (#2427) --- Makefile | 2 -- src/boot/z_std_dma.c | 8 +++++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 4823283c08..5c295d9f20 100644 --- a/Makefile +++ b/Makefile @@ -594,8 +594,6 @@ EGCS_O_FILES += $(BUILD_DIR)/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope $(EGCS_O_FILES): CC := $(EGCS_CC) $(EGCS_O_FILES): CFLAGS := $(EGCS_CFLAGS) -mno-abicalls $(EGCS_O_FILES): MIPS_VERSION := - -$(BUILD_DIR)/src/boot/z_std_dma.o: CFLAGS += -funsigned-char endif ifeq ($(PLATFORM),IQUE) diff --git a/src/boot/z_std_dma.c b/src/boot/z_std_dma.c index ec2aa1f75c..2872d127bd 100644 --- a/src/boot/z_std_dma.c +++ b/src/boot/z_std_dma.c @@ -75,7 +75,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 +338,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 +380,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 From 284ecb114e3a1b1bd04292fe6747d6374652e34c Mon Sep 17 00:00:00 2001 From: cadmic Date: Sun, 19 Jan 2025 19:29:35 -0800 Subject: [PATCH 37/40] [iQue] Match z_actor (#2431) * [iQue] Match z_actor * Reword comment --- Makefile | 2 +- include/z64actor.h | 2 +- include/z64play.h | 2 +- src/code/z_actor.c | 452 +++++++++++--------- src/code/z_parameter.c | 6 +- src/code/z_play.c | 2 +- src/overlays/gamestates/ovl_title/z_title.c | 5 +- 7 files changed, 253 insertions(+), 218 deletions(-) diff --git a/Makefile b/Makefile index 5c295d9f20..6586f3c09a 100644 --- a/Makefile +++ b/Makefile @@ -575,7 +575,7 @@ 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 diff --git a/include/z64actor.h b/include/z64actor.h index 6df2703455..cf93af0a96 100644 --- a/include/z64actor.h +++ b/include/z64actor.h @@ -971,7 +971,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/z64play.h b/include/z64play.h index 224ca196d2..cb2e78edc4 100644 --- a/include/z64play.h +++ b/include/z64play.h @@ -130,7 +130,7 @@ 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); diff --git a/src/code/z_actor.c b/src/code/z_actor.c index 309be3077c..0626f05de2 100644 --- a/src/code/z_actor.c +++ b/src/code/z_actor.c @@ -22,10 +22,20 @@ static s32 sCurCeilingBgId; #define ACTOR_DEBUG_PRINTF \ if (R_ENABLE_ACTOR_DEBUG_PRINTF) \ PRINTF -#elif IDO_PRINTF_WORKAROUND -#define ACTOR_DEBUG_PRINTF(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) { @@ -71,8 +81,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); @@ -98,16 +109,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); @@ -166,15 +180,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; @@ -237,7 +253,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 { @@ -267,11 +287,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) { @@ -296,29 +318,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); @@ -390,7 +410,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; @@ -441,7 +461,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, @@ -790,6 +810,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); @@ -808,7 +829,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); @@ -820,19 +840,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); @@ -922,7 +942,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 } } @@ -942,8 +962,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; @@ -966,11 +986,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); } /** @@ -988,8 +1008,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) { @@ -1065,7 +1085,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; } @@ -1085,6 +1105,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) { @@ -1132,9 +1154,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; @@ -1206,8 +1226,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) { @@ -1347,7 +1366,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; } @@ -1385,13 +1404,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) { @@ -1460,8 +1480,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); } } } @@ -1530,10 +1550,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); @@ -1599,8 +1621,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)) { @@ -1676,19 +1697,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; @@ -1725,8 +1739,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; } @@ -1822,7 +1836,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)) { @@ -2091,7 +2105,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; @@ -2112,10 +2128,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); @@ -2166,7 +2182,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); @@ -2356,10 +2374,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; @@ -2397,7 +2417,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) { @@ -2419,8 +2439,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) { @@ -2478,12 +2498,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); @@ -2503,12 +2522,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); } @@ -2520,6 +2539,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"); @@ -2544,8 +2566,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 bug + 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 }; @@ -2791,7 +2820,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) && @@ -2821,7 +2850,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); @@ -3104,7 +3139,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; } @@ -3136,8 +3171,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; } @@ -3166,8 +3201,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; @@ -3176,9 +3211,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; } @@ -3281,39 +3316,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); @@ -3447,16 +3488,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++; } } } @@ -3477,7 +3516,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; @@ -3556,41 +3595,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); + } } } @@ -3606,7 +3633,7 @@ void BodyBreak_SetInfo(BodyBreak* bodyBreak, s32 limbIndex, s32 minLimbIndex, s3 bodyBreak->val++; } - if (limbIndex != bodyBreak->prevLimbIndex) { + if (bodyBreak->prevLimbIndex != limbIndex) { bodyBreak->count++; } @@ -3621,7 +3648,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) { @@ -3641,10 +3667,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 @@ -3682,8 +3707,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; @@ -3715,7 +3740,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) { @@ -3778,9 +3803,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; @@ -3797,13 +3820,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, @@ -3915,8 +3938,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; @@ -4065,7 +4088,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; @@ -4078,8 +4101,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++) { @@ -4104,8 +4127,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); @@ -4255,7 +4279,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; @@ -4266,7 +4290,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); @@ -4286,12 +4311,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); } @@ -4535,8 +4560,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); } } @@ -4591,7 +4616,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) { @@ -4663,7 +4688,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; @@ -4673,26 +4698,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 { @@ -4702,6 +4729,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; @@ -4709,27 +4737,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 { @@ -4811,28 +4839,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) { @@ -5144,8 +5184,6 @@ u32 func_80035BFC(PlayState* play, s16 arg1) { } else { retTextId = 0x7007; } - } else { - retTextId = 0; } break; case 19: @@ -5487,8 +5525,6 @@ u32 func_80035BFC(PlayState* play, s16 arg1) { } else { retTextId = 0x401A; } - } else { - retTextId = 0; } break; case 58: @@ -5555,8 +5591,6 @@ u32 func_80035BFC(PlayState* play, s16 arg1) { } else { retTextId = 0x2030; } - } else { - retTextId = 0; } } break; @@ -5943,6 +5977,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) { @@ -6070,7 +6106,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_parameter.c b/src/code/z_parameter.c index 7d09da7e2e..5b0629047c 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1100,9 +1100,9 @@ void Interface_SetSceneRestrictions(PlayState* play) { InterfaceContext* interfaceCtx = &play->interfaceCtx; s16 i = 0; u8 sceneId; -#if !PLATFORM_IQUE - s32 pad[3]; -#endif + s32 pad1; + s32 pad2; + s32 pad3; interfaceCtx->restrictions.all = 0; interfaceCtx->restrictions.dinsNayrus = 0; diff --git a/src/code/z_play.c b/src/code/z_play.c index d6fc0c660f..f377a8ce18 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -1622,7 +1622,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/overlays/gamestates/ovl_title/z_title.c b/src/overlays/gamestates/ovl_title/z_title.c index 416db5fe37..8613d7bd37 100644 --- a/src/overlays/gamestates/ovl_title/z_title.c +++ b/src/overlays/gamestates/ovl_title/z_title.c @@ -92,9 +92,8 @@ void ConsoleLogo_Draw(ConsoleLogoState* this) { Vec3f v3; Vec3f v1; Vec3f v2; -#if !PLATFORM_IQUE - s32 pad2[2]; -#endif + s32 pad2; + s32 pad3; OPEN_DISPS(this->state.gfxCtx, "../z_title.c", 395); From 11b7bf2914ff62523110f6fc82c59184a2a8684a Mon Sep 17 00:00:00 2001 From: cadmic Date: Mon, 20 Jan 2025 13:15:13 -0800 Subject: [PATCH 38/40] Write about IDO and EGCS in compilers.md (#2432) * Write about IDO and EGCS in compilers.md * Fix typo * Fix another typo * Apply suggestions from code review Co-authored-by: Tharo <17233964+Thar0@users.noreply.github.com> --------- Co-authored-by: Tharo <17233964+Thar0@users.noreply.github.com> --- docs/compilers.md | 63 ++++++++++++++++++++++++++++++++++++++++++++ src/code/z_actor.c | 2 +- src/code/z_kanfont.c | 2 +- src/code/z_sram.c | 2 +- 4 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 docs/compilers.md 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/src/code/z_actor.c b/src/code/z_actor.c index 0626f05de2..37a370557d 100644 --- a/src/code/z_actor.c +++ b/src/code/z_actor.c @@ -2570,7 +2570,7 @@ void Actor_Draw(PlayState* play, Actor* actor) { 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 bug + // 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); diff --git a/src/code/z_kanfont.c b/src/code/z_kanfont.c index 985e2d52fa..fa038276fe 100644 --- a/src/code/z_kanfont.c +++ b/src/code/z_kanfont.c @@ -119,7 +119,7 @@ void Font_LoadOrderedFont(Font* font) { PRINTF("msg_data=%x, msg_data0=%x jj=%x\n", font->msgOffset, font->msgLength, len); - // Workaround for EGCS bug + // Workaround for EGCS internal compiler error (see docs/compilers.md) msgBufWide = font->msgBufWide; fontBufIndex = 0; for (codePointIndex = 0; msgBufWide[codePointIndex] != MESSAGE_WIDE_END; codePointIndex++) { diff --git a/src/code/z_sram.c b/src/code/z_sram.c index d7d453c9aa..0531e29952 100644 --- a/src/code/z_sram.c +++ b/src/code/z_sram.c @@ -853,7 +853,7 @@ void Sram_InitSave(FileSelectState* fileSelect, SramContext* sramCtx) { #if !PLATFORM_IQUE gSaveContext.save.info.playerData.playerName[offset] = fileSelect->fileNames[fileSelect->buttonIndex][offset]; #else - // Workaround for EGCS bug + // Workaround for EGCS internal compiler error (see docs/compilers.md) u8* fileName = fileSelect->fileNames[fileSelect->buttonIndex]; gSaveContext.save.info.playerData.playerName[offset] = fileName[offset]; From 5346c978a949864fd84bc0587dfed794998cede7 Mon Sep 17 00:00:00 2001 From: cadmic Date: Mon, 20 Jan 2025 14:30:54 -0800 Subject: [PATCH 39/40] format.py: Allow empty files (#2434) --- format.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) 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 From afa0842de4116fd12cdf31655af2375ed10cf148 Mon Sep 17 00:00:00 2001 From: Tharo <17233964+Thar0@users.noreply.github.com> Date: Tue, 21 Jan 2025 20:21:48 +0000 Subject: [PATCH 40/40] [iQue] Import libultra audio library files (#2433) Note about comments in these files: The libultra audio library was originally available to developers in source code form, unlike most of libultra. These files are based on these source code forms, adapted to meet the style of this project. The comments in the files as of this commit are, apart from the style, comments from the original SGI authors. --- Makefile | 2 + include/ultra64.h | 1 - include/ultra64/convert.h | 2 + src/boot/z_std_dma.c | 2 +- src/code/fault_gc.c | 2 +- src/code/sys_math3d.c | 2 +- src/code/z_camera.c | 2 +- src/code/z_collision_check.c | 2 +- src/code/z_kankyo.c | 4 +- src/libultra/audio/auxbus.c | 32 + src/libultra/audio/copy.c | 10 + src/libultra/audio/drvrnew.c | 263 ++++++ src/libultra/audio/env.c | 419 ++++++++++ src/libultra/audio/filter.c | 10 + src/libultra/audio/heapalloc.c | 14 + src/libultra/audio/libaudio.h | 842 ++++++++++++++++++++ src/libultra/audio/libaudio_abi.h | 383 +++++++++ src/libultra/audio/load.c | 374 +++++++++ src/libultra/audio/mainbus.c | 37 + src/libultra/audio/resample.c | 97 +++ src/libultra/audio/reverb.c | 344 ++++++++ src/libultra/audio/save.c | 35 + src/libultra/audio/sl.c | 34 + src/libultra/audio/synallocfx.c | 7 + src/libultra/audio/syndelete.c | 4 + src/libultra/audio/synthInternals.h | 312 ++++++++ src/libultra/audio/synthesizer.c | 218 +++++ src/overlays/actors/ovl_Fishing/z_fishing.c | 2 +- 28 files changed, 3447 insertions(+), 9 deletions(-) create mode 100644 src/libultra/audio/libaudio.h create mode 100644 src/libultra/audio/libaudio_abi.h create mode 100644 src/libultra/audio/synthInternals.h diff --git a/Makefile b/Makefile index 6586f3c09a..d40b7b4845 100644 --- a/Makefile +++ b/Makefile @@ -638,6 +638,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 diff --git a/include/ultra64.h b/include/ultra64.h index e8a4bd0ca7..30e43563e9 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); 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/src/boot/z_std_dma.c b/src/boot/z_std_dma.c index 2872d127bd..b708a54dd0 100644 --- a/src/boot/z_std_dma.c +++ b/src/boot/z_std_dma.c @@ -28,7 +28,7 @@ #endif #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:68 pal-1.0:66 pal-1.1:66" + "ntsc-1.2:66 pal-1.0:64 pal-1.1:64" StackEntry sDmaMgrStackInfo; OSMesgQueue sDmaMgrMsgQueue; diff --git a/src/code/fault_gc.c b/src/code/fault_gc.c index 059162c162..59f95d17ff 100644 --- a/src/code/fault_gc.c +++ b/src/code/fault_gc.c @@ -40,7 +40,7 @@ * 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" \ +#pragma increment_block_number "gc-eu:160 gc-eu-mq:160 gc-eu-mq-dbg:144 gc-jp:160 gc-jp-ce:160 gc-jp-mq:160 gc-us:160" \ "gc-us-mq:160" #include "global.h" diff --git a/src/code/sys_math3d.c b/src/code/sys_math3d.c index 203b9f2e2a..0a773bfb69 100644 --- a/src/code/sys_math3d.c +++ b/src/code/sys_math3d.c @@ -5,7 +5,7 @@ #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" \ +#pragma increment_block_number "gc-eu:98 gc-eu-mq:98 gc-jp:98 gc-jp-ce:98 gc-jp-mq:98 gc-us:98 gc-us-mq:98" \ "ntsc-1.0:80 ntsc-1.1:80 ntsc-1.2:79 pal-1.0:80 pal-1.1:80" s32 Math3D_LineVsLineClosestTwoPoints(Vec3f* lineAPointA, Vec3f* lineAPointB, Vec3f* lineBPointA, Vec3f* lineBPointB, diff --git a/src/code/z_camera.c b/src/code/z_camera.c index 715d3f42c2..f36aba0d7d 100644 --- a/src/code/z_camera.c +++ b/src/code/z_camera.c @@ -3639,7 +3639,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:130 ntsc-1.1:130 ntsc-1.2:130 pal-1.0:128 pal-1.1:128" + "ntsc-1.0:129 ntsc-1.1:129 ntsc-1.2:129 pal-1.0:127 pal-1.1:127" s32 Camera_KeepOn4(Camera* camera) { static Vec3f D_8015BD50; diff --git a/src/code/z_collision_check.c b/src/code/z_collision_check.c index aa83c5e532..03e97bcc16 100644 --- a/src/code/z_collision_check.c +++ b/src/code/z_collision_check.c @@ -16,7 +16,7 @@ #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" + "ntsc-1.0:88 ntsc-1.1:88 ntsc-1.2:88 pal-1.0:88 pal-1.1:88" typedef s32 (*ColChkResetFunc)(PlayState*, Collider*); typedef void (*ColChkApplyFunc)(PlayState*, CollisionCheckContext*, Collider*); diff --git a/src/code/z_kankyo.c b/src/code/z_kankyo.c index eff23ff2a0..1fc96fcb35 100644 --- a/src/code/z_kankyo.c +++ b/src/code/z_kankyo.c @@ -1,5 +1,5 @@ -#pragma increment_block_number "gc-eu:216 gc-eu-mq:216 gc-jp:212 gc-jp-ce:212 gc-jp-mq:212 gc-us:212 gc-us-mq:212" \ - "ntsc-1.0:208 ntsc-1.1:208 ntsc-1.2:208 pal-1.0:228 pal-1.1:228" +#pragma increment_block_number "gc-eu:216 gc-eu-mq:216 gc-jp:192 gc-jp-ce:192 gc-jp-mq:192 gc-us:192 gc-us-mq:192" \ + "ntsc-1.0:208 ntsc-1.1:208 ntsc-1.2:208 pal-1.0:224 pal-1.1:224" #include "global.h" #include "ultra64.h" 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/overlays/actors/ovl_Fishing/z_fishing.c b/src/overlays/actors/ovl_Fishing/z_fishing.c index 63bf23cdc2..5f995aa721 100644 --- a/src/overlays/actors/ovl_Fishing/z_fishing.c +++ b/src/overlays/actors/ovl_Fishing/z_fishing.c @@ -35,7 +35,7 @@ #include "cic6105.h" #endif -#pragma increment_block_number "gc-eu:164 gc-eu-mq:164 gc-jp:164 gc-jp-ce:164 gc-jp-mq:164 gc-us:164 gc-us-mq:164" \ +#pragma increment_block_number "gc-eu:163 gc-eu-mq:163 gc-jp:163 gc-jp-ce:163 gc-jp-mq:163 gc-us:163 gc-us-mq:163" \ "ntsc-1.0:121 ntsc-1.1:121 ntsc-1.2:121 pal-1.0:121 pal-1.1:121" #define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED