diff --git a/Makefile b/Makefile index 8796ed954e3..33d44dcbdb7 100644 --- a/Makefile +++ b/Makefile @@ -115,7 +115,7 @@ endif ASFLAGS := -march=vr4300 -32 -Iinclude ifeq ($(COMPILER),gcc) - CFLAGS += -G 0 -nostdinc $(INC) -DAVOID_UB -march=vr4300 -mfix4300 -mabi=32 -mno-abicalls -mdivide-breaks -fno-zero-initialized-in-bss -fno-toplevel-reorder -ffreestanding -fno-common -fno-merge-constants -mno-explicit-relocs -mno-split-addresses $(CHECK_WARNINGS) -funsigned-char + CFLAGS += -G 0 -nostdinc $(INC) -DAVOID_UB -march=vr4300 -mfix4300 -mabi=32 -mno-abicalls -mdivide-breaks -fno-zero-initialized-in-bss -fno-toplevel-reorder -ffreestanding -fno-common -mno-explicit-relocs -mno-split-addresses $(CHECK_WARNINGS) -funsigned-char MIPS_VERSION := -mips3 else # we support Microsoft extensions such as anonymous structs, which the compiler does support but warns for their usage. Surpress the warnings with -woff. @@ -165,11 +165,17 @@ O_FILES := $(foreach f,$(S_FILES:.s=.o),build/$f) \ $(foreach f,$(C_FILES:.c=.o),build/$f) \ $(foreach f,$(wildcard baserom/*),build/$f.o) -OVL_RELOC_FILES := $(shell $(CPP) $(CPPFLAGS) $(SPEC) | grep -o '[^"]*_reloc.o' ) +SEGMENTS := $(shell $(CPP) $(CPPFLAGS) $(SPEC) | grep -o '^[ \t]*name[ \t]\+".\+"' | sed 's/.*"\(.*\)".*/\1/g' ) +SEGMENTS_OVL := $(filter ovl_%,$(SEGMENTS)) +SEGMENT_DIR := build/segments +SEGMENT_OBJECTS := $(SEGMENTS:%=$(SEGMENT_DIR)/%.o) +SEGMENT_RELOCS := $(SEGMENTS_OVL:%=$(SEGMENT_DIR)/%.reloc.o) +SEGMENT_SCRIPTS := $(SEGMENT_OBJECTS:.o=.ld) +SEGMENT_DEPENDS := $(SEGMENT_OBJECTS:.o=.d) # 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) +DEP_FILES := $(O_FILES:.o=.asmproc.d) TEXTURE_FILES_PNG := $(foreach dir,$(ASSET_BIN_DIRS),$(wildcard $(dir)/*.png)) @@ -178,7 +184,7 @@ TEXTURE_FILES_OUT := $(foreach f,$(TEXTURE_FILES_PNG:.png=.inc.c),build/$f) \ $(foreach f,$(TEXTURE_FILES_JPG:.jpg=.jpg.inc.c),build/$f) \ # create build directories -$(shell mkdir -p build/baserom build/assets/text $(foreach dir,$(SRC_DIRS) $(ASM_DIRS) $(ASSET_BIN_DIRS),build/$(dir))) +$(shell mkdir -p build/baserom build/assets/text $(SEGMENT_DIR) $(foreach dir,$(SRC_DIRS) $(ASM_DIRS) $(ASSET_BIN_DIRS),build/$(dir))) ifeq ($(COMPILER),ido) build/src/code/fault.o: CFLAGS += -trapuv @@ -262,30 +268,44 @@ test: $(ROM) $(ROM): $(ELF) $(ELF2ROM) -cic 6105 $< $@ -$(ELF): $(TEXTURE_FILES_OUT) $(ASSET_FILES_OUT) $(O_FILES) $(OVL_RELOC_FILES) build/ldscript.txt build/undefined_syms.txt - $(LD) -T build/undefined_syms.txt -T build/ldscript.txt --no-check-sections --accept-unknown-input-arch --emit-relocs -Map build/z64.map -o $@ +$(ELF): $(SEGMENT_OBJECTS) $(SEGMENT_RELOCS) build/ldscript.txt build/undefined_syms.txt + $(LD) -T build/undefined_syms.txt -T build/ldscript.txt --emit-relocs -Map build/z64.map -o $@ -## Order-only prerequisites -# These ensure e.g. the O_FILES are built before the OVL_RELOC_FILES. -# The intermediate phony targets avoid quadratically-many dependencies between the targets and prerequisites. +build/undefined_syms.txt: undefined_syms.txt + $(CPP) $(CPPFLAGS) $< > $@ -o_files: $(O_FILES) -$(OVL_RELOC_FILES): | o_files +build/$(SPEC): $(SPEC) + $(CPP) $(CPPFLAGS) $< > $@ -asset_files: $(TEXTURE_FILES_OUT) $(ASSET_FILES_OUT) -$(O_FILES): | asset_files +build/ldscript.txt: build/$(SPEC) + $(MKLDSCRIPT) -r $< $(SEGMENT_DIR) $@ -.PHONY: o_files asset_files +$(SEGMENT_SCRIPTS): build/$(SPEC) +$(SEGMENT_SCRIPTS): %.ld: %.d +$(SEGMENT_DEPENDS): build/$(SPEC) + $(MKLDSCRIPT) -s $< $(SEGMENT_DIR) $(@:$(SEGMENT_DIR)/%.d=%) -build/$(SPEC): $(SPEC) - $(CPP) $(CPPFLAGS) $< > $@ +ifeq ($(MAKECMDGOALS),$(filter-out clean assetclean distclean setup,$(MAKECMDGOALS))) +-include $(SEGMENT_DEPENDS) +endif -build/ldscript.txt: build/$(SPEC) - $(MKLDSCRIPT) $< $@ +$(SEGMENT_DIR)/%.reloc.o: $(SEGMENT_DIR)/%.o + $(FADO) $< -n $( $@ build/baserom/%.o: baserom/% $(OBJCOPY) -I binary -O elf32-big $< $@ @@ -331,10 +351,6 @@ build/src/libultra/libc/llcvt.o: src/libultra/libc/llcvt.c python3 tools/set_o32abi_bit.py $@ @$(OBJDUMP) -d $@ > $(@:.o=.s) -build/src/overlays/%_reloc.o: build/$(SPEC) - $(FADO) $$(tools/reloc_prereq $< $(notdir $*)) -n $(notdir $*) -o $(@:.o=.s) -M $(@:.o=.d) - $(AS) $(ASFLAGS) $(@:.o=.s) -o $@ - build/%.inc.c: %.png $(ZAPD) btex -eh -tt $(subst .,,$(suffix $*)) -i $< -o $@ diff --git a/spec b/spec index 85c79d43a86..6f66080e5be 100644 --- a/spec +++ b/spec @@ -531,19 +531,16 @@ beginseg name "ovl_title" address 0x80800000 include "build/src/overlays/gamestates/ovl_title/z_title.o" - include "build/src/overlays/gamestates/ovl_title/ovl_title_reloc.o" endseg beginseg name "ovl_select" include "build/src/overlays/gamestates/ovl_select/z_select.o" - include "build/src/overlays/gamestates/ovl_select/ovl_select_reloc.o" endseg beginseg name "ovl_opening" include "build/src/overlays/gamestates/ovl_opening/z_opening.o" - include "build/src/overlays/gamestates/ovl_opening/ovl_opening_reloc.o" endseg beginseg @@ -552,7 +549,6 @@ beginseg include "build/src/overlays/gamestates/ovl_file_choose/z_file_copy_erase.o" include "build/src/overlays/gamestates/ovl_file_choose/z_file_nameset_PAL.o" include "build/src/overlays/gamestates/ovl_file_choose/z_file_choose.o" - include "build/src/overlays/gamestates/ovl_file_choose/ovl_file_choose_reloc.o" endseg beginseg @@ -566,739 +562,616 @@ beginseg include "build/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope_PAL.o" include "build/src/overlays/misc/ovl_kaleido_scope/z_lmap_mark.o" include "build/src/overlays/misc/ovl_kaleido_scope/z_lmap_mark_data.o" - include "build/src/overlays/misc/ovl_kaleido_scope/ovl_kaleido_scope_reloc.o" endseg beginseg name "ovl_player_actor" include "build/src/overlays/actors/ovl_player_actor/z_player.o" - include "build/src/overlays/actors/ovl_player_actor/ovl_player_actor_reloc.o" endseg beginseg name "ovl_map_mark_data" include "build/src/overlays/misc/ovl_map_mark_data/z_map_mark_data.o" - include "build/src/overlays/misc/ovl_map_mark_data/ovl_map_mark_data_reloc.o" endseg beginseg name "ovl_En_Test" include "build/src/overlays/actors/ovl_En_Test/z_en_test.o" - include "build/src/overlays/actors/ovl_En_Test/ovl_En_Test_reloc.o" endseg beginseg name "ovl_Arms_Hook" include "build/src/overlays/actors/ovl_Arms_Hook/z_arms_hook.o" - include "build/src/overlays/actors/ovl_Arms_Hook/ovl_Arms_Hook_reloc.o" endseg beginseg name "ovl_Arrow_Fire" include "build/src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire.o" - include "build/src/overlays/actors/ovl_Arrow_Fire/ovl_Arrow_Fire_reloc.o" endseg beginseg name "ovl_Arrow_Ice" include "build/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.o" - include "build/src/overlays/actors/ovl_Arrow_Ice/ovl_Arrow_Ice_reloc.o" endseg beginseg name "ovl_Arrow_Light" include "build/src/overlays/actors/ovl_Arrow_Light/z_arrow_light.o" - include "build/src/overlays/actors/ovl_Arrow_Light/ovl_Arrow_Light_reloc.o" endseg beginseg name "ovl_Bg_Bdan_Objects" include "build/src/overlays/actors/ovl_Bg_Bdan_Objects/z_bg_bdan_objects.o" - include "build/src/overlays/actors/ovl_Bg_Bdan_Objects/ovl_Bg_Bdan_Objects_reloc.o" endseg beginseg name "ovl_Bg_Bdan_Switch" include "build/src/overlays/actors/ovl_Bg_Bdan_Switch/z_bg_bdan_switch.o" - include "build/src/overlays/actors/ovl_Bg_Bdan_Switch/ovl_Bg_Bdan_Switch_reloc.o" endseg beginseg name "ovl_Bg_Bom_Guard" include "build/src/overlays/actors/ovl_Bg_Bom_Guard/z_bg_bom_guard.o" - include "build/src/overlays/actors/ovl_Bg_Bom_Guard/ovl_Bg_Bom_Guard_reloc.o" endseg beginseg name "ovl_Bg_Bombwall" include "build/src/overlays/actors/ovl_Bg_Bombwall/z_bg_bombwall.o" - include "build/src/overlays/actors/ovl_Bg_Bombwall/ovl_Bg_Bombwall_reloc.o" endseg beginseg name "ovl_Bg_Bowl_Wall" include "build/src/overlays/actors/ovl_Bg_Bowl_Wall/z_bg_bowl_wall.o" - include "build/src/overlays/actors/ovl_Bg_Bowl_Wall/ovl_Bg_Bowl_Wall_reloc.o" endseg beginseg name "ovl_Bg_Breakwall" include "build/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.o" - include "build/src/overlays/actors/ovl_Bg_Breakwall/ovl_Bg_Breakwall_reloc.o" endseg beginseg name "ovl_Bg_Ddan_Jd" include "build/src/overlays/actors/ovl_Bg_Ddan_Jd/z_bg_ddan_jd.o" - include "build/src/overlays/actors/ovl_Bg_Ddan_Jd/ovl_Bg_Ddan_Jd_reloc.o" endseg beginseg name "ovl_Bg_Ddan_Kd" include "build/src/overlays/actors/ovl_Bg_Ddan_Kd/z_bg_ddan_kd.o" - include "build/src/overlays/actors/ovl_Bg_Ddan_Kd/ovl_Bg_Ddan_Kd_reloc.o" endseg beginseg name "ovl_Bg_Dodoago" include "build/src/overlays/actors/ovl_Bg_Dodoago/z_bg_dodoago.o" - include "build/src/overlays/actors/ovl_Bg_Dodoago/ovl_Bg_Dodoago_reloc.o" endseg beginseg name "ovl_Bg_Dy_Yoseizo" include "build/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.o" - include "build/src/overlays/actors/ovl_Bg_Dy_Yoseizo/ovl_Bg_Dy_Yoseizo_reloc.o" endseg beginseg name "ovl_Bg_Ganon_Otyuka" include "build/src/overlays/actors/ovl_Bg_Ganon_Otyuka/z_bg_ganon_otyuka.o" - include "build/src/overlays/actors/ovl_Bg_Ganon_Otyuka/ovl_Bg_Ganon_Otyuka_reloc.o" endseg beginseg name "ovl_Bg_Gate_Shutter" include "build/src/overlays/actors/ovl_Bg_Gate_Shutter/z_bg_gate_shutter.o" - include "build/src/overlays/actors/ovl_Bg_Gate_Shutter/ovl_Bg_Gate_Shutter_reloc.o" endseg beginseg name "ovl_Bg_Gjyo_Bridge" include "build/src/overlays/actors/ovl_Bg_Gjyo_Bridge/z_bg_gjyo_bridge.o" - include "build/src/overlays/actors/ovl_Bg_Gjyo_Bridge/ovl_Bg_Gjyo_Bridge_reloc.o" endseg beginseg name "ovl_Bg_Gnd_Darkmeiro" include "build/src/overlays/actors/ovl_Bg_Gnd_Darkmeiro/z_bg_gnd_darkmeiro.o" - include "build/src/overlays/actors/ovl_Bg_Gnd_Darkmeiro/ovl_Bg_Gnd_Darkmeiro_reloc.o" endseg beginseg name "ovl_Bg_Gnd_Firemeiro" include "build/src/overlays/actors/ovl_Bg_Gnd_Firemeiro/z_bg_gnd_firemeiro.o" - include "build/src/overlays/actors/ovl_Bg_Gnd_Firemeiro/ovl_Bg_Gnd_Firemeiro_reloc.o" endseg beginseg name "ovl_Bg_Gnd_Iceblock" include "build/src/overlays/actors/ovl_Bg_Gnd_Iceblock/z_bg_gnd_iceblock.o" - include "build/src/overlays/actors/ovl_Bg_Gnd_Iceblock/ovl_Bg_Gnd_Iceblock_reloc.o" endseg beginseg name "ovl_Bg_Gnd_Nisekabe" include "build/src/overlays/actors/ovl_Bg_Gnd_Nisekabe/z_bg_gnd_nisekabe.o" - include "build/src/overlays/actors/ovl_Bg_Gnd_Nisekabe/ovl_Bg_Gnd_Nisekabe_reloc.o" endseg beginseg name "ovl_Bg_Gnd_Soulmeiro" include "build/src/overlays/actors/ovl_Bg_Gnd_Soulmeiro/z_bg_gnd_soulmeiro.o" - include "build/src/overlays/actors/ovl_Bg_Gnd_Soulmeiro/ovl_Bg_Gnd_Soulmeiro_reloc.o" endseg beginseg name "ovl_Bg_Haka" include "build/src/overlays/actors/ovl_Bg_Haka/z_bg_haka.o" - include "build/src/overlays/actors/ovl_Bg_Haka/ovl_Bg_Haka_reloc.o" endseg beginseg name "ovl_Bg_Haka_Gate" include "build/src/overlays/actors/ovl_Bg_Haka_Gate/z_bg_haka_gate.o" - include "build/src/overlays/actors/ovl_Bg_Haka_Gate/ovl_Bg_Haka_Gate_reloc.o" endseg beginseg name "ovl_Bg_Haka_Huta" include "build/src/overlays/actors/ovl_Bg_Haka_Huta/z_bg_haka_huta.o" - include "build/src/overlays/actors/ovl_Bg_Haka_Huta/ovl_Bg_Haka_Huta_reloc.o" endseg beginseg name "ovl_Bg_Haka_Megane" include "build/src/overlays/actors/ovl_Bg_Haka_Megane/z_bg_haka_megane.o" - include "build/src/overlays/actors/ovl_Bg_Haka_Megane/ovl_Bg_Haka_Megane_reloc.o" endseg beginseg name "ovl_Bg_Haka_MeganeBG" include "build/src/overlays/actors/ovl_Bg_Haka_MeganeBG/z_bg_haka_meganebg.o" - include "build/src/overlays/actors/ovl_Bg_Haka_MeganeBG/ovl_Bg_Haka_MeganeBG_reloc.o" endseg beginseg name "ovl_Bg_Haka_Sgami" include "build/src/overlays/actors/ovl_Bg_Haka_Sgami/z_bg_haka_sgami.o" - include "build/src/overlays/actors/ovl_Bg_Haka_Sgami/ovl_Bg_Haka_Sgami_reloc.o" endseg beginseg name "ovl_Bg_Haka_Ship" include "build/src/overlays/actors/ovl_Bg_Haka_Ship/z_bg_haka_ship.o" - include "build/src/overlays/actors/ovl_Bg_Haka_Ship/ovl_Bg_Haka_Ship_reloc.o" endseg beginseg name "ovl_Bg_Haka_Trap" include "build/src/overlays/actors/ovl_Bg_Haka_Trap/z_bg_haka_trap.o" - include "build/src/overlays/actors/ovl_Bg_Haka_Trap/ovl_Bg_Haka_Trap_reloc.o" endseg beginseg name "ovl_Bg_Haka_Tubo" include "build/src/overlays/actors/ovl_Bg_Haka_Tubo/z_bg_haka_tubo.o" - include "build/src/overlays/actors/ovl_Bg_Haka_Tubo/ovl_Bg_Haka_Tubo_reloc.o" endseg beginseg name "ovl_Bg_Haka_Water" include "build/src/overlays/actors/ovl_Bg_Haka_Water/z_bg_haka_water.o" - include "build/src/overlays/actors/ovl_Bg_Haka_Water/ovl_Bg_Haka_Water_reloc.o" endseg beginseg name "ovl_Bg_Haka_Zou" include "build/src/overlays/actors/ovl_Bg_Haka_Zou/z_bg_haka_zou.o" - include "build/src/overlays/actors/ovl_Bg_Haka_Zou/ovl_Bg_Haka_Zou_reloc.o" endseg beginseg name "ovl_Bg_Heavy_Block" include "build/src/overlays/actors/ovl_Bg_Heavy_Block/z_bg_heavy_block.o" - include "build/src/overlays/actors/ovl_Bg_Heavy_Block/ovl_Bg_Heavy_Block_reloc.o" endseg beginseg name "ovl_Bg_Hidan_Curtain" include "build/src/overlays/actors/ovl_Bg_Hidan_Curtain/z_bg_hidan_curtain.o" - include "build/src/overlays/actors/ovl_Bg_Hidan_Curtain/ovl_Bg_Hidan_Curtain_reloc.o" endseg beginseg name "ovl_Bg_Hidan_Dalm" include "build/src/overlays/actors/ovl_Bg_Hidan_Dalm/z_bg_hidan_dalm.o" - include "build/src/overlays/actors/ovl_Bg_Hidan_Dalm/ovl_Bg_Hidan_Dalm_reloc.o" endseg beginseg name "ovl_Bg_Hidan_Firewall" include "build/src/overlays/actors/ovl_Bg_Hidan_Firewall/z_bg_hidan_firewall.o" - include "build/src/overlays/actors/ovl_Bg_Hidan_Firewall/ovl_Bg_Hidan_Firewall_reloc.o" endseg beginseg name "ovl_Bg_Hidan_Fslift" include "build/src/overlays/actors/ovl_Bg_Hidan_Fslift/z_bg_hidan_fslift.o" - include "build/src/overlays/actors/ovl_Bg_Hidan_Fslift/ovl_Bg_Hidan_Fslift_reloc.o" endseg beginseg name "ovl_Bg_Hidan_Fwbig" include "build/src/overlays/actors/ovl_Bg_Hidan_Fwbig/z_bg_hidan_fwbig.o" - include "build/src/overlays/actors/ovl_Bg_Hidan_Fwbig/ovl_Bg_Hidan_Fwbig_reloc.o" endseg beginseg name "ovl_Bg_Hidan_Hamstep" include "build/src/overlays/actors/ovl_Bg_Hidan_Hamstep/z_bg_hidan_hamstep.o" - include "build/src/overlays/actors/ovl_Bg_Hidan_Hamstep/ovl_Bg_Hidan_Hamstep_reloc.o" endseg beginseg name "ovl_Bg_Hidan_Hrock" include "build/src/overlays/actors/ovl_Bg_Hidan_Hrock/z_bg_hidan_hrock.o" - include "build/src/overlays/actors/ovl_Bg_Hidan_Hrock/ovl_Bg_Hidan_Hrock_reloc.o" endseg beginseg name "ovl_Bg_Hidan_Kousi" include "build/src/overlays/actors/ovl_Bg_Hidan_Kousi/z_bg_hidan_kousi.o" - include "build/src/overlays/actors/ovl_Bg_Hidan_Kousi/ovl_Bg_Hidan_Kousi_reloc.o" endseg beginseg name "ovl_Bg_Hidan_Kowarerukabe" include "build/src/overlays/actors/ovl_Bg_Hidan_Kowarerukabe/z_bg_hidan_kowarerukabe.o" - include "build/src/overlays/actors/ovl_Bg_Hidan_Kowarerukabe/ovl_Bg_Hidan_Kowarerukabe_reloc.o" endseg beginseg name "ovl_Bg_Hidan_Rock" include "build/src/overlays/actors/ovl_Bg_Hidan_Rock/z_bg_hidan_rock.o" - include "build/src/overlays/actors/ovl_Bg_Hidan_Rock/ovl_Bg_Hidan_Rock_reloc.o" endseg beginseg name "ovl_Bg_Hidan_Rsekizou" include "build/src/overlays/actors/ovl_Bg_Hidan_Rsekizou/z_bg_hidan_rsekizou.o" - include "build/src/overlays/actors/ovl_Bg_Hidan_Rsekizou/ovl_Bg_Hidan_Rsekizou_reloc.o" endseg beginseg name "ovl_Bg_Hidan_Sekizou" include "build/src/overlays/actors/ovl_Bg_Hidan_Sekizou/z_bg_hidan_sekizou.o" - include "build/src/overlays/actors/ovl_Bg_Hidan_Sekizou/ovl_Bg_Hidan_Sekizou_reloc.o" endseg beginseg name "ovl_Bg_Hidan_Sima" include "build/src/overlays/actors/ovl_Bg_Hidan_Sima/z_bg_hidan_sima.o" - include "build/src/overlays/actors/ovl_Bg_Hidan_Sima/ovl_Bg_Hidan_Sima_reloc.o" endseg beginseg name "ovl_Bg_Hidan_Syoku" include "build/src/overlays/actors/ovl_Bg_Hidan_Syoku/z_bg_hidan_syoku.o" - include "build/src/overlays/actors/ovl_Bg_Hidan_Syoku/ovl_Bg_Hidan_Syoku_reloc.o" endseg beginseg name "ovl_Bg_Ice_Objects" include "build/src/overlays/actors/ovl_Bg_Ice_Objects/z_bg_ice_objects.o" - include "build/src/overlays/actors/ovl_Bg_Ice_Objects/ovl_Bg_Ice_Objects_reloc.o" endseg beginseg name "ovl_Bg_Ice_Shelter" include "build/src/overlays/actors/ovl_Bg_Ice_Shelter/z_bg_ice_shelter.o" - include "build/src/overlays/actors/ovl_Bg_Ice_Shelter/ovl_Bg_Ice_Shelter_reloc.o" endseg beginseg name "ovl_Bg_Ice_Shutter" include "build/src/overlays/actors/ovl_Bg_Ice_Shutter/z_bg_ice_shutter.o" - include "build/src/overlays/actors/ovl_Bg_Ice_Shutter/ovl_Bg_Ice_Shutter_reloc.o" endseg beginseg name "ovl_Bg_Ice_Turara" include "build/src/overlays/actors/ovl_Bg_Ice_Turara/z_bg_ice_turara.o" - include "build/src/overlays/actors/ovl_Bg_Ice_Turara/ovl_Bg_Ice_Turara_reloc.o" endseg beginseg name "ovl_Bg_Ingate" include "build/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.o" - include "build/src/overlays/actors/ovl_Bg_Ingate/ovl_Bg_Ingate_reloc.o" endseg beginseg name "ovl_Bg_Jya_1flift" include "build/src/overlays/actors/ovl_Bg_Jya_1flift/z_bg_jya_1flift.o" - include "build/src/overlays/actors/ovl_Bg_Jya_1flift/ovl_Bg_Jya_1flift_reloc.o" endseg beginseg name "ovl_Bg_Jya_Amishutter" include "build/src/overlays/actors/ovl_Bg_Jya_Amishutter/z_bg_jya_amishutter.o" - include "build/src/overlays/actors/ovl_Bg_Jya_Amishutter/ovl_Bg_Jya_Amishutter_reloc.o" endseg beginseg name "ovl_Bg_Jya_Bigmirror" include "build/src/overlays/actors/ovl_Bg_Jya_Bigmirror/z_bg_jya_bigmirror.o" - include "build/src/overlays/actors/ovl_Bg_Jya_Bigmirror/ovl_Bg_Jya_Bigmirror_reloc.o" endseg beginseg name "ovl_Bg_Jya_Block" include "build/src/overlays/actors/ovl_Bg_Jya_Block/z_bg_jya_block.o" - include "build/src/overlays/actors/ovl_Bg_Jya_Block/ovl_Bg_Jya_Block_reloc.o" endseg beginseg name "ovl_Bg_Jya_Bombchuiwa" include "build/src/overlays/actors/ovl_Bg_Jya_Bombchuiwa/z_bg_jya_bombchuiwa.o" - include "build/src/overlays/actors/ovl_Bg_Jya_Bombchuiwa/ovl_Bg_Jya_Bombchuiwa_reloc.o" endseg beginseg name "ovl_Bg_Jya_Bombiwa" include "build/src/overlays/actors/ovl_Bg_Jya_Bombiwa/z_bg_jya_bombiwa.o" - include "build/src/overlays/actors/ovl_Bg_Jya_Bombiwa/ovl_Bg_Jya_Bombiwa_reloc.o" endseg beginseg name "ovl_Bg_Jya_Cobra" include "build/src/overlays/actors/ovl_Bg_Jya_Cobra/z_bg_jya_cobra.o" - include "build/src/overlays/actors/ovl_Bg_Jya_Cobra/ovl_Bg_Jya_Cobra_reloc.o" endseg beginseg name "ovl_Bg_Jya_Goroiwa" include "build/src/overlays/actors/ovl_Bg_Jya_Goroiwa/z_bg_jya_goroiwa.o" - include "build/src/overlays/actors/ovl_Bg_Jya_Goroiwa/ovl_Bg_Jya_Goroiwa_reloc.o" endseg beginseg name "ovl_Bg_Jya_Haheniron" include "build/src/overlays/actors/ovl_Bg_Jya_Haheniron/z_bg_jya_haheniron.o" - include "build/src/overlays/actors/ovl_Bg_Jya_Haheniron/ovl_Bg_Jya_Haheniron_reloc.o" endseg beginseg name "ovl_Bg_Jya_Ironobj" include "build/src/overlays/actors/ovl_Bg_Jya_Ironobj/z_bg_jya_ironobj.o" - include "build/src/overlays/actors/ovl_Bg_Jya_Ironobj/ovl_Bg_Jya_Ironobj_reloc.o" endseg beginseg name "ovl_Bg_Jya_Kanaami" include "build/src/overlays/actors/ovl_Bg_Jya_Kanaami/z_bg_jya_kanaami.o" - include "build/src/overlays/actors/ovl_Bg_Jya_Kanaami/ovl_Bg_Jya_Kanaami_reloc.o" endseg beginseg name "ovl_Bg_Jya_Lift" include "build/src/overlays/actors/ovl_Bg_Jya_Lift/z_bg_jya_lift.o" - include "build/src/overlays/actors/ovl_Bg_Jya_Lift/ovl_Bg_Jya_Lift_reloc.o" endseg beginseg name "ovl_Bg_Jya_Megami" include "build/src/overlays/actors/ovl_Bg_Jya_Megami/z_bg_jya_megami.o" - include "build/src/overlays/actors/ovl_Bg_Jya_Megami/ovl_Bg_Jya_Megami_reloc.o" endseg beginseg name "ovl_Bg_Jya_Zurerukabe" include "build/src/overlays/actors/ovl_Bg_Jya_Zurerukabe/z_bg_jya_zurerukabe.o" - include "build/src/overlays/actors/ovl_Bg_Jya_Zurerukabe/ovl_Bg_Jya_Zurerukabe_reloc.o" endseg beginseg name "ovl_Bg_Menkuri_Eye" include "build/src/overlays/actors/ovl_Bg_Menkuri_Eye/z_bg_menkuri_eye.o" - include "build/src/overlays/actors/ovl_Bg_Menkuri_Eye/ovl_Bg_Menkuri_Eye_reloc.o" endseg beginseg name "ovl_Bg_Menkuri_Kaiten" include "build/src/overlays/actors/ovl_Bg_Menkuri_Kaiten/z_bg_menkuri_kaiten.o" - include "build/src/overlays/actors/ovl_Bg_Menkuri_Kaiten/ovl_Bg_Menkuri_Kaiten_reloc.o" endseg beginseg name "ovl_Bg_Menkuri_Nisekabe" include "build/src/overlays/actors/ovl_Bg_Menkuri_Nisekabe/z_bg_menkuri_nisekabe.o" - include "build/src/overlays/actors/ovl_Bg_Menkuri_Nisekabe/ovl_Bg_Menkuri_Nisekabe_reloc.o" endseg beginseg name "ovl_Bg_Mizu_Bwall" include "build/src/overlays/actors/ovl_Bg_Mizu_Bwall/z_bg_mizu_bwall.o" - include "build/src/overlays/actors/ovl_Bg_Mizu_Bwall/ovl_Bg_Mizu_Bwall_reloc.o" endseg beginseg name "ovl_Bg_Mizu_Movebg" include "build/src/overlays/actors/ovl_Bg_Mizu_Movebg/z_bg_mizu_movebg.o" - include "build/src/overlays/actors/ovl_Bg_Mizu_Movebg/ovl_Bg_Mizu_Movebg_reloc.o" endseg beginseg name "ovl_Bg_Mizu_Shutter" include "build/src/overlays/actors/ovl_Bg_Mizu_Shutter/z_bg_mizu_shutter.o" - include "build/src/overlays/actors/ovl_Bg_Mizu_Shutter/ovl_Bg_Mizu_Shutter_reloc.o" endseg beginseg name "ovl_Bg_Mizu_Uzu" include "build/src/overlays/actors/ovl_Bg_Mizu_Uzu/z_bg_mizu_uzu.o" - include "build/src/overlays/actors/ovl_Bg_Mizu_Uzu/ovl_Bg_Mizu_Uzu_reloc.o" endseg beginseg name "ovl_Bg_Mizu_Water" include "build/src/overlays/actors/ovl_Bg_Mizu_Water/z_bg_mizu_water.o" - include "build/src/overlays/actors/ovl_Bg_Mizu_Water/ovl_Bg_Mizu_Water_reloc.o" endseg beginseg name "ovl_Bg_Mjin" include "build/src/overlays/actors/ovl_Bg_Mjin/z_bg_mjin.o" - include "build/src/overlays/actors/ovl_Bg_Mjin/ovl_Bg_Mjin_reloc.o" endseg beginseg name "ovl_Bg_Mori_Bigst" include "build/src/overlays/actors/ovl_Bg_Mori_Bigst/z_bg_mori_bigst.o" - include "build/src/overlays/actors/ovl_Bg_Mori_Bigst/ovl_Bg_Mori_Bigst_reloc.o" endseg beginseg name "ovl_Bg_Mori_Elevator" include "build/src/overlays/actors/ovl_Bg_Mori_Elevator/z_bg_mori_elevator.o" - include "build/src/overlays/actors/ovl_Bg_Mori_Elevator/ovl_Bg_Mori_Elevator_reloc.o" endseg beginseg name "ovl_Bg_Mori_Hashigo" include "build/src/overlays/actors/ovl_Bg_Mori_Hashigo/z_bg_mori_hashigo.o" - include "build/src/overlays/actors/ovl_Bg_Mori_Hashigo/ovl_Bg_Mori_Hashigo_reloc.o" endseg beginseg name "ovl_Bg_Mori_Hashira4" include "build/src/overlays/actors/ovl_Bg_Mori_Hashira4/z_bg_mori_hashira4.o" - include "build/src/overlays/actors/ovl_Bg_Mori_Hashira4/ovl_Bg_Mori_Hashira4_reloc.o" endseg beginseg name "ovl_Bg_Mori_Hineri" include "build/src/overlays/actors/ovl_Bg_Mori_Hineri/z_bg_mori_hineri.o" - include "build/src/overlays/actors/ovl_Bg_Mori_Hineri/ovl_Bg_Mori_Hineri_reloc.o" endseg beginseg name "ovl_Bg_Mori_Idomizu" include "build/src/overlays/actors/ovl_Bg_Mori_Idomizu/z_bg_mori_idomizu.o" - include "build/src/overlays/actors/ovl_Bg_Mori_Idomizu/ovl_Bg_Mori_Idomizu_reloc.o" endseg beginseg name "ovl_Bg_Mori_Kaitenkabe" include "build/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/z_bg_mori_kaitenkabe.o" - include "build/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/ovl_Bg_Mori_Kaitenkabe_reloc.o" endseg beginseg name "ovl_Bg_Mori_Rakkatenjo" include "build/src/overlays/actors/ovl_Bg_Mori_Rakkatenjo/z_bg_mori_rakkatenjo.o" - include "build/src/overlays/actors/ovl_Bg_Mori_Rakkatenjo/ovl_Bg_Mori_Rakkatenjo_reloc.o" endseg beginseg name "ovl_Bg_Po_Event" include "build/src/overlays/actors/ovl_Bg_Po_Event/z_bg_po_event.o" - include "build/src/overlays/actors/ovl_Bg_Po_Event/ovl_Bg_Po_Event_reloc.o" endseg beginseg name "ovl_Bg_Po_Syokudai" include "build/src/overlays/actors/ovl_Bg_Po_Syokudai/z_bg_po_syokudai.o" - include "build/src/overlays/actors/ovl_Bg_Po_Syokudai/ovl_Bg_Po_Syokudai_reloc.o" endseg beginseg name "ovl_Bg_Pushbox" include "build/src/overlays/actors/ovl_Bg_Pushbox/z_bg_pushbox.o" - include "build/src/overlays/actors/ovl_Bg_Pushbox/ovl_Bg_Pushbox_reloc.o" endseg beginseg name "ovl_Bg_Relay_Objects" include "build/src/overlays/actors/ovl_Bg_Relay_Objects/z_bg_relay_objects.o" - include "build/src/overlays/actors/ovl_Bg_Relay_Objects/ovl_Bg_Relay_Objects_reloc.o" endseg beginseg name "ovl_Bg_Spot00_Break" include "build/src/overlays/actors/ovl_Bg_Spot00_Break/z_bg_spot00_break.o" - include "build/src/overlays/actors/ovl_Bg_Spot00_Break/ovl_Bg_Spot00_Break_reloc.o" endseg beginseg name "ovl_Bg_Spot00_Hanebasi" include "build/src/overlays/actors/ovl_Bg_Spot00_Hanebasi/z_bg_spot00_hanebasi.o" - include "build/src/overlays/actors/ovl_Bg_Spot00_Hanebasi/ovl_Bg_Spot00_Hanebasi_reloc.o" endseg beginseg name "ovl_Bg_Spot01_Fusya" include "build/src/overlays/actors/ovl_Bg_Spot01_Fusya/z_bg_spot01_fusya.o" - include "build/src/overlays/actors/ovl_Bg_Spot01_Fusya/ovl_Bg_Spot01_Fusya_reloc.o" endseg beginseg name "ovl_Bg_Spot01_Idohashira" include "build/src/overlays/actors/ovl_Bg_Spot01_Idohashira/z_bg_spot01_idohashira.o" - include "build/src/overlays/actors/ovl_Bg_Spot01_Idohashira/ovl_Bg_Spot01_Idohashira_reloc.o" endseg beginseg name "ovl_Bg_Spot01_Idomizu" include "build/src/overlays/actors/ovl_Bg_Spot01_Idomizu/z_bg_spot01_idomizu.o" - include "build/src/overlays/actors/ovl_Bg_Spot01_Idomizu/ovl_Bg_Spot01_Idomizu_reloc.o" endseg beginseg name "ovl_Bg_Spot01_Idosoko" include "build/src/overlays/actors/ovl_Bg_Spot01_Idosoko/z_bg_spot01_idosoko.o" - include "build/src/overlays/actors/ovl_Bg_Spot01_Idosoko/ovl_Bg_Spot01_Idosoko_reloc.o" endseg beginseg name "ovl_Bg_Spot01_Objects2" include "build/src/overlays/actors/ovl_Bg_Spot01_Objects2/z_bg_spot01_objects2.o" - include "build/src/overlays/actors/ovl_Bg_Spot01_Objects2/ovl_Bg_Spot01_Objects2_reloc.o" endseg beginseg name "ovl_Bg_Spot02_Objects" include "build/src/overlays/actors/ovl_Bg_Spot02_Objects/z_bg_spot02_objects.o" - include "build/src/overlays/actors/ovl_Bg_Spot02_Objects/ovl_Bg_Spot02_Objects_reloc.o" endseg beginseg name "ovl_Bg_Spot03_Taki" include "build/src/overlays/actors/ovl_Bg_Spot03_Taki/z_bg_spot03_taki.o" - include "build/src/overlays/actors/ovl_Bg_Spot03_Taki/ovl_Bg_Spot03_Taki_reloc.o" endseg beginseg name "ovl_Bg_Spot05_Soko" include "build/src/overlays/actors/ovl_Bg_Spot05_Soko/z_bg_spot05_soko.o" - include "build/src/overlays/actors/ovl_Bg_Spot05_Soko/ovl_Bg_Spot05_Soko_reloc.o" endseg beginseg name "ovl_Bg_Spot06_Objects" include "build/src/overlays/actors/ovl_Bg_Spot06_Objects/z_bg_spot06_objects.o" - include "build/src/overlays/actors/ovl_Bg_Spot06_Objects/ovl_Bg_Spot06_Objects_reloc.o" endseg beginseg name "ovl_Bg_Spot07_Taki" include "build/src/overlays/actors/ovl_Bg_Spot07_Taki/z_bg_spot07_taki.o" - include "build/src/overlays/actors/ovl_Bg_Spot07_Taki/ovl_Bg_Spot07_Taki_reloc.o" endseg beginseg name "ovl_Bg_Spot08_Bakudankabe" include "build/src/overlays/actors/ovl_Bg_Spot08_Bakudankabe/z_bg_spot08_bakudankabe.o" - include "build/src/overlays/actors/ovl_Bg_Spot08_Bakudankabe/ovl_Bg_Spot08_Bakudankabe_reloc.o" endseg beginseg name "ovl_Bg_Spot08_Iceblock" include "build/src/overlays/actors/ovl_Bg_Spot08_Iceblock/z_bg_spot08_iceblock.o" - include "build/src/overlays/actors/ovl_Bg_Spot08_Iceblock/ovl_Bg_Spot08_Iceblock_reloc.o" endseg beginseg name "ovl_Bg_Spot09_Obj" include "build/src/overlays/actors/ovl_Bg_Spot09_Obj/z_bg_spot09_obj.o" - include "build/src/overlays/actors/ovl_Bg_Spot09_Obj/ovl_Bg_Spot09_Obj_reloc.o" endseg beginseg name "ovl_Bg_Spot11_Bakudankabe" include "build/src/overlays/actors/ovl_Bg_Spot11_Bakudankabe/z_bg_spot11_bakudankabe.o" - include "build/src/overlays/actors/ovl_Bg_Spot11_Bakudankabe/ovl_Bg_Spot11_Bakudankabe_reloc.o" endseg beginseg name "ovl_Bg_Spot11_Oasis" include "build/src/overlays/actors/ovl_Bg_Spot11_Oasis/z_bg_spot11_oasis.o" - include "build/src/overlays/actors/ovl_Bg_Spot11_Oasis/ovl_Bg_Spot11_Oasis_reloc.o" endseg beginseg name "ovl_Bg_Spot12_Gate" include "build/src/overlays/actors/ovl_Bg_Spot12_Gate/z_bg_spot12_gate.o" - include "build/src/overlays/actors/ovl_Bg_Spot12_Gate/ovl_Bg_Spot12_Gate_reloc.o" endseg beginseg name "ovl_Bg_Spot12_Saku" include "build/src/overlays/actors/ovl_Bg_Spot12_Saku/z_bg_spot12_saku.o" - include "build/src/overlays/actors/ovl_Bg_Spot12_Saku/ovl_Bg_Spot12_Saku_reloc.o" endseg beginseg name "ovl_Bg_Spot15_Rrbox" include "build/src/overlays/actors/ovl_Bg_Spot15_Rrbox/z_bg_spot15_rrbox.o" - include "build/src/overlays/actors/ovl_Bg_Spot15_Rrbox/ovl_Bg_Spot15_Rrbox_reloc.o" endseg beginseg name "ovl_Bg_Spot15_Saku" include "build/src/overlays/actors/ovl_Bg_Spot15_Saku/z_bg_spot15_saku.o" - include "build/src/overlays/actors/ovl_Bg_Spot15_Saku/ovl_Bg_Spot15_Saku_reloc.o" endseg beginseg name "ovl_Bg_Spot16_Bombstone" include "build/src/overlays/actors/ovl_Bg_Spot16_Bombstone/z_bg_spot16_bombstone.o" - include "build/src/overlays/actors/ovl_Bg_Spot16_Bombstone/ovl_Bg_Spot16_Bombstone_reloc.o" endseg beginseg name "ovl_Bg_Spot16_Doughnut" include "build/src/overlays/actors/ovl_Bg_Spot16_Doughnut/z_bg_spot16_doughnut.o" - include "build/src/overlays/actors/ovl_Bg_Spot16_Doughnut/ovl_Bg_Spot16_Doughnut_reloc.o" endseg beginseg name "ovl_Bg_Spot17_Bakudankabe" include "build/src/overlays/actors/ovl_Bg_Spot17_Bakudankabe/z_bg_spot17_bakudankabe.o" - include "build/src/overlays/actors/ovl_Bg_Spot17_Bakudankabe/ovl_Bg_Spot17_Bakudankabe_reloc.o" endseg beginseg name "ovl_Bg_Spot17_Funen" include "build/src/overlays/actors/ovl_Bg_Spot17_Funen/z_bg_spot17_funen.o" - include "build/src/overlays/actors/ovl_Bg_Spot17_Funen/ovl_Bg_Spot17_Funen_reloc.o" endseg beginseg name "ovl_Bg_Spot18_Basket" include "build/src/overlays/actors/ovl_Bg_Spot18_Basket/z_bg_spot18_basket.o" - include "build/src/overlays/actors/ovl_Bg_Spot18_Basket/ovl_Bg_Spot18_Basket_reloc.o" endseg beginseg name "ovl_Bg_Spot18_Futa" include "build/src/overlays/actors/ovl_Bg_Spot18_Futa/z_bg_spot18_futa.o" - include "build/src/overlays/actors/ovl_Bg_Spot18_Futa/ovl_Bg_Spot18_Futa_reloc.o" endseg beginseg name "ovl_Bg_Spot18_Obj" include "build/src/overlays/actors/ovl_Bg_Spot18_Obj/z_bg_spot18_obj.o" - include "build/src/overlays/actors/ovl_Bg_Spot18_Obj/ovl_Bg_Spot18_Obj_reloc.o" endseg beginseg name "ovl_Bg_Spot18_Shutter" include "build/src/overlays/actors/ovl_Bg_Spot18_Shutter/z_bg_spot18_shutter.o" - include "build/src/overlays/actors/ovl_Bg_Spot18_Shutter/ovl_Bg_Spot18_Shutter_reloc.o" endseg beginseg name "ovl_Bg_Sst_Floor" include "build/src/overlays/actors/ovl_Bg_Sst_Floor/z_bg_sst_floor.o" - include "build/src/overlays/actors/ovl_Bg_Sst_Floor/ovl_Bg_Sst_Floor_reloc.o" endseg beginseg name "ovl_Bg_Toki_Hikari" include "build/src/overlays/actors/ovl_Bg_Toki_Hikari/z_bg_toki_hikari.o" - include "build/src/overlays/actors/ovl_Bg_Toki_Hikari/ovl_Bg_Toki_Hikari_reloc.o" endseg beginseg @@ -1307,182 +1180,152 @@ beginseg include "build/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_2.o" include "build/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd_cutscene_data_3.o" include "build/src/overlays/actors/ovl_Bg_Toki_Swd/z_bg_toki_swd.o" - include "build/src/overlays/actors/ovl_Bg_Toki_Swd/ovl_Bg_Toki_Swd_reloc.o" endseg beginseg name "ovl_Bg_Treemouth" include "build/src/overlays/actors/ovl_Bg_Treemouth/z_bg_treemouth_cutscene_data.o" include "build/src/overlays/actors/ovl_Bg_Treemouth/z_bg_treemouth.o" - include "build/src/overlays/actors/ovl_Bg_Treemouth/ovl_Bg_Treemouth_reloc.o" endseg beginseg name "ovl_Bg_Umajump" include "build/src/overlays/actors/ovl_Bg_Umajump/z_bg_umajump.o" - include "build/src/overlays/actors/ovl_Bg_Umajump/ovl_Bg_Umajump_reloc.o" endseg beginseg name "ovl_Bg_Vb_Sima" include "build/src/overlays/actors/ovl_Bg_Vb_Sima/z_bg_vb_sima.o" - include "build/src/overlays/actors/ovl_Bg_Vb_Sima/ovl_Bg_Vb_Sima_reloc.o" endseg beginseg name "ovl_Bg_Ydan_Hasi" include "build/src/overlays/actors/ovl_Bg_Ydan_Hasi/z_bg_ydan_hasi.o" - include "build/src/overlays/actors/ovl_Bg_Ydan_Hasi/ovl_Bg_Ydan_Hasi_reloc.o" endseg beginseg name "ovl_Bg_Ydan_Maruta" include "build/src/overlays/actors/ovl_Bg_Ydan_Maruta/z_bg_ydan_maruta.o" - include "build/src/overlays/actors/ovl_Bg_Ydan_Maruta/ovl_Bg_Ydan_Maruta_reloc.o" endseg beginseg name "ovl_Bg_Ydan_Sp" include "build/src/overlays/actors/ovl_Bg_Ydan_Sp/z_bg_ydan_sp.o" - include "build/src/overlays/actors/ovl_Bg_Ydan_Sp/ovl_Bg_Ydan_Sp_reloc.o" endseg beginseg name "ovl_Bg_Zg" include "build/src/overlays/actors/ovl_Bg_Zg/z_bg_zg.o" - include "build/src/overlays/actors/ovl_Bg_Zg/ovl_Bg_Zg_reloc.o" endseg beginseg name "ovl_Boss_Dodongo" include "build/src/overlays/actors/ovl_Boss_Dodongo/z_boss_dodongo.o" - include "build/src/overlays/actors/ovl_Boss_Dodongo/ovl_Boss_Dodongo_reloc.o" endseg beginseg name "ovl_Boss_Fd" include "build/src/overlays/actors/ovl_Boss_Fd/z_boss_fd.o" - include "build/src/overlays/actors/ovl_Boss_Fd/ovl_Boss_Fd_reloc.o" endseg beginseg name "ovl_Boss_Fd2" include "build/src/overlays/actors/ovl_Boss_Fd2/z_boss_fd2.o" - include "build/src/overlays/actors/ovl_Boss_Fd2/ovl_Boss_Fd2_reloc.o" endseg beginseg name "ovl_Boss_Ganon" include "build/src/overlays/actors/ovl_Boss_Ganon/z_boss_ganon.o" - include "build/src/overlays/actors/ovl_Boss_Ganon/ovl_Boss_Ganon_reloc.o" endseg beginseg name "ovl_Boss_Ganon2" include "build/src/overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.o" - include "build/src/overlays/actors/ovl_Boss_Ganon2/ovl_Boss_Ganon2_reloc.o" endseg beginseg name "ovl_Boss_Ganondrof" include "build/src/overlays/actors/ovl_Boss_Ganondrof/z_boss_ganondrof.o" - include "build/src/overlays/actors/ovl_Boss_Ganondrof/ovl_Boss_Ganondrof_reloc.o" endseg beginseg name "ovl_Boss_Goma" include "build/src/overlays/actors/ovl_Boss_Goma/z_boss_goma.o" - include "build/src/overlays/actors/ovl_Boss_Goma/ovl_Boss_Goma_reloc.o" endseg beginseg name "ovl_Boss_Mo" include "build/src/overlays/actors/ovl_Boss_Mo/z_boss_mo.o" - include "build/src/overlays/actors/ovl_Boss_Mo/ovl_Boss_Mo_reloc.o" endseg beginseg name "ovl_Boss_Sst" include "build/src/overlays/actors/ovl_Boss_Sst/z_boss_sst.o" - include "build/src/overlays/actors/ovl_Boss_Sst/ovl_Boss_Sst_reloc.o" endseg beginseg name "ovl_Boss_Tw" include "build/src/overlays/actors/ovl_Boss_Tw/z_boss_tw.o" - include "build/src/overlays/actors/ovl_Boss_Tw/ovl_Boss_Tw_reloc.o" endseg beginseg name "ovl_Boss_Va" include "build/src/overlays/actors/ovl_Boss_Va/z_boss_va.o" - include "build/src/overlays/actors/ovl_Boss_Va/ovl_Boss_Va_reloc.o" endseg beginseg name "ovl_Demo_6K" include "build/src/overlays/actors/ovl_Demo_6K/z_demo_6k.o" - include "build/src/overlays/actors/ovl_Demo_6K/ovl_Demo_6K_reloc.o" endseg beginseg name "ovl_Demo_Du" include "build/src/overlays/actors/ovl_Demo_Du/z_demo_du.o" - include "build/src/overlays/actors/ovl_Demo_Du/ovl_Demo_Du_reloc.o" endseg beginseg name "ovl_Demo_Ec" include "build/src/overlays/actors/ovl_Demo_Ec/z_demo_ec.o" - include "build/src/overlays/actors/ovl_Demo_Ec/ovl_Demo_Ec_reloc.o" endseg beginseg name "ovl_Demo_Effect" include "build/src/overlays/actors/ovl_Demo_Effect/z_demo_effect.o" - include "build/src/overlays/actors/ovl_Demo_Effect/ovl_Demo_Effect_reloc.o" endseg beginseg name "ovl_Demo_Ext" include "build/src/overlays/actors/ovl_Demo_Ext/z_demo_ext.o" - include "build/src/overlays/actors/ovl_Demo_Ext/ovl_Demo_Ext_reloc.o" endseg beginseg name "ovl_Demo_Geff" include "build/src/overlays/actors/ovl_Demo_Geff/z_demo_geff.o" - include "build/src/overlays/actors/ovl_Demo_Geff/ovl_Demo_Geff_reloc.o" endseg beginseg name "ovl_Demo_Gj" include "build/src/overlays/actors/ovl_Demo_Gj/z_demo_gj.o" - include "build/src/overlays/actors/ovl_Demo_Gj/ovl_Demo_Gj_reloc.o" endseg beginseg name "ovl_Demo_Go" include "build/src/overlays/actors/ovl_Demo_Go/z_demo_go.o" - include "build/src/overlays/actors/ovl_Demo_Go/ovl_Demo_Go_reloc.o" endseg beginseg name "ovl_Demo_Gt" include "build/src/overlays/actors/ovl_Demo_Gt/z_demo_gt.o" - include "build/src/overlays/actors/ovl_Demo_Gt/ovl_Demo_Gt_reloc.o" endseg beginseg name "ovl_Demo_Ik" include "build/src/overlays/actors/ovl_Demo_Ik/z_demo_ik.o" - include "build/src/overlays/actors/ovl_Demo_Ik/ovl_Demo_Ik_reloc.o" endseg beginseg name "ovl_Demo_Im" include "build/src/overlays/actors/ovl_Demo_Im/z_demo_im.o" - include "build/src/overlays/actors/ovl_Demo_Im/ovl_Demo_Im_reloc.o" endseg beginseg @@ -1496,1875 +1339,1563 @@ beginseg include "build/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data7.o" include "build/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo_cutscene_data8.o" include "build/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.o" - include "build/src/overlays/actors/ovl_Demo_Kankyo/ovl_Demo_Kankyo_reloc.o" endseg beginseg name "ovl_Demo_Kekkai" include "build/src/overlays/actors/ovl_Demo_Kekkai/z_demo_kekkai.o" - include "build/src/overlays/actors/ovl_Demo_Kekkai/ovl_Demo_Kekkai_reloc.o" endseg beginseg name "ovl_Demo_Sa" include "build/src/overlays/actors/ovl_Demo_Sa/z_demo_sa.o" - include "build/src/overlays/actors/ovl_Demo_Sa/ovl_Demo_Sa_reloc.o" endseg beginseg name "ovl_Demo_Shd" include "build/src/overlays/actors/ovl_Demo_Shd/z_demo_shd.o" - include "build/src/overlays/actors/ovl_Demo_Shd/ovl_Demo_Shd_reloc.o" endseg beginseg name "ovl_Demo_Tre_Lgt" include "build/src/overlays/actors/ovl_Demo_Tre_Lgt/z_demo_tre_lgt.o" - include "build/src/overlays/actors/ovl_Demo_Tre_Lgt/ovl_Demo_Tre_Lgt_reloc.o" endseg beginseg name "ovl_Door_Ana" include "build/src/overlays/actors/ovl_Door_Ana/z_door_ana.o" - include "build/src/overlays/actors/ovl_Door_Ana/ovl_Door_Ana_reloc.o" endseg beginseg name "ovl_Door_Gerudo" include "build/src/overlays/actors/ovl_Door_Gerudo/z_door_gerudo.o" - include "build/src/overlays/actors/ovl_Door_Gerudo/ovl_Door_Gerudo_reloc.o" endseg beginseg name "ovl_Door_Killer" include "build/src/overlays/actors/ovl_Door_Killer/z_door_killer.o" - include "build/src/overlays/actors/ovl_Door_Killer/ovl_Door_Killer_reloc.o" endseg beginseg name "ovl_Door_Shutter" include "build/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.o" - include "build/src/overlays/actors/ovl_Door_Shutter/ovl_Door_Shutter_reloc.o" endseg beginseg name "ovl_Door_Toki" include "build/src/overlays/actors/ovl_Door_Toki/z_door_toki.o" - include "build/src/overlays/actors/ovl_Door_Toki/ovl_Door_Toki_reloc.o" endseg beginseg name "ovl_Door_Warp1" include "build/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.o" - include "build/src/overlays/actors/ovl_Door_Warp1/ovl_Door_Warp1_reloc.o" endseg beginseg name "ovl_Efc_Erupc" include "build/src/overlays/actors/ovl_Efc_Erupc/z_efc_erupc.o" - include "build/src/overlays/actors/ovl_Efc_Erupc/ovl_Efc_Erupc_reloc.o" endseg beginseg name "ovl_Eff_Dust" include "build/src/overlays/actors/ovl_Eff_Dust/z_eff_dust.o" - include "build/src/overlays/actors/ovl_Eff_Dust/ovl_Eff_Dust_reloc.o" endseg beginseg name "ovl_Effect_Ss_Blast" include "build/src/overlays/effects/ovl_Effect_Ss_Blast/z_eff_ss_blast.o" - include "build/src/overlays/effects/ovl_Effect_Ss_Blast/ovl_Effect_Ss_Blast_reloc.o" endseg beginseg name "ovl_Effect_Ss_Bomb" include "build/src/overlays/effects/ovl_Effect_Ss_Bomb/z_eff_ss_bomb.o" - include "build/src/overlays/effects/ovl_Effect_Ss_Bomb/ovl_Effect_Ss_Bomb_reloc.o" endseg beginseg name "ovl_Effect_Ss_Bomb2" include "build/src/overlays/effects/ovl_Effect_Ss_Bomb2/z_eff_ss_bomb2.o" - include "build/src/overlays/effects/ovl_Effect_Ss_Bomb2/ovl_Effect_Ss_Bomb2_reloc.o" endseg beginseg name "ovl_Effect_Ss_Bubble" include "build/src/overlays/effects/ovl_Effect_Ss_Bubble/z_eff_ss_bubble.o" - include "build/src/overlays/effects/ovl_Effect_Ss_Bubble/ovl_Effect_Ss_Bubble_reloc.o" endseg beginseg name "ovl_Effect_Ss_D_Fire" include "build/src/overlays/effects/ovl_Effect_Ss_D_Fire/z_eff_ss_d_fire.o" - include "build/src/overlays/effects/ovl_Effect_Ss_D_Fire/ovl_Effect_Ss_D_Fire_reloc.o" endseg beginseg name "ovl_Effect_Ss_Dead_Db" include "build/src/overlays/effects/ovl_Effect_Ss_Dead_Db/z_eff_ss_dead_db.o" - include "build/src/overlays/effects/ovl_Effect_Ss_Dead_Db/ovl_Effect_Ss_Dead_Db_reloc.o" endseg beginseg name "ovl_Effect_Ss_Dead_Dd" include "build/src/overlays/effects/ovl_Effect_Ss_Dead_Dd/z_eff_ss_dead_dd.o" - include "build/src/overlays/effects/ovl_Effect_Ss_Dead_Dd/ovl_Effect_Ss_Dead_Dd_reloc.o" endseg beginseg name "ovl_Effect_Ss_Dead_Ds" include "build/src/overlays/effects/ovl_Effect_Ss_Dead_Ds/z_eff_ss_dead_ds.o" - include "build/src/overlays/effects/ovl_Effect_Ss_Dead_Ds/ovl_Effect_Ss_Dead_Ds_reloc.o" endseg beginseg name "ovl_Effect_Ss_Dead_Sound" include "build/src/overlays/effects/ovl_Effect_Ss_Dead_Sound/z_eff_ss_dead_sound.o" - include "build/src/overlays/effects/ovl_Effect_Ss_Dead_Sound/ovl_Effect_Ss_Dead_Sound_reloc.o" endseg beginseg name "ovl_Effect_Ss_Dt_Bubble" include "build/src/overlays/effects/ovl_Effect_Ss_Dt_Bubble/z_eff_ss_dt_bubble.o" - include "build/src/overlays/effects/ovl_Effect_Ss_Dt_Bubble/ovl_Effect_Ss_Dt_Bubble_reloc.o" endseg beginseg name "ovl_Effect_Ss_Dust" include "build/src/overlays/effects/ovl_Effect_Ss_Dust/z_eff_ss_dust.o" - include "build/src/overlays/effects/ovl_Effect_Ss_Dust/ovl_Effect_Ss_Dust_reloc.o" endseg beginseg name "ovl_Effect_Ss_En_Fire" include "build/src/overlays/effects/ovl_Effect_Ss_En_Fire/z_eff_ss_en_fire.o" - include "build/src/overlays/effects/ovl_Effect_Ss_En_Fire/ovl_Effect_Ss_En_Fire_reloc.o" endseg beginseg name "ovl_Effect_Ss_En_Ice" include "build/src/overlays/effects/ovl_Effect_Ss_En_Ice/z_eff_ss_en_ice.o" - include "build/src/overlays/effects/ovl_Effect_Ss_En_Ice/ovl_Effect_Ss_En_Ice_reloc.o" endseg beginseg name "ovl_Effect_Ss_Extra" include "build/src/overlays/effects/ovl_Effect_Ss_Extra/z_eff_ss_extra.o" - include "build/src/overlays/effects/ovl_Effect_Ss_Extra/ovl_Effect_Ss_Extra_reloc.o" endseg beginseg name "ovl_Effect_Ss_Fcircle" include "build/src/overlays/effects/ovl_Effect_Ss_Fcircle/z_eff_ss_fcircle.o" - include "build/src/overlays/effects/ovl_Effect_Ss_Fcircle/ovl_Effect_Ss_Fcircle_reloc.o" endseg beginseg name "ovl_Effect_Ss_Fhg_Flash" include "build/src/overlays/effects/ovl_Effect_Ss_Fhg_Flash/z_eff_ss_fhg_flash.o" - include "build/src/overlays/effects/ovl_Effect_Ss_Fhg_Flash/ovl_Effect_Ss_Fhg_Flash_reloc.o" endseg beginseg name "ovl_Effect_Ss_Fire_Tail" include "build/src/overlays/effects/ovl_Effect_Ss_Fire_Tail/z_eff_ss_fire_tail.o" - include "build/src/overlays/effects/ovl_Effect_Ss_Fire_Tail/ovl_Effect_Ss_Fire_Tail_reloc.o" endseg beginseg name "ovl_Effect_Ss_G_Fire" include "build/src/overlays/effects/ovl_Effect_Ss_G_Fire/z_eff_ss_g_fire.o" - include "build/src/overlays/effects/ovl_Effect_Ss_G_Fire/ovl_Effect_Ss_G_Fire_reloc.o" endseg beginseg name "ovl_Effect_Ss_G_Magma" include "build/src/overlays/effects/ovl_Effect_Ss_G_Magma/z_eff_ss_g_magma.o" - include "build/src/overlays/effects/ovl_Effect_Ss_G_Magma/ovl_Effect_Ss_G_Magma_reloc.o" endseg beginseg name "ovl_Effect_Ss_G_Magma2" include "build/src/overlays/effects/ovl_Effect_Ss_G_Magma2/z_eff_ss_g_magma2.o" - include "build/src/overlays/effects/ovl_Effect_Ss_G_Magma2/ovl_Effect_Ss_G_Magma2_reloc.o" endseg beginseg name "ovl_Effect_Ss_G_Ripple" include "build/src/overlays/effects/ovl_Effect_Ss_G_Ripple/z_eff_ss_g_ripple.o" - include "build/src/overlays/effects/ovl_Effect_Ss_G_Ripple/ovl_Effect_Ss_G_Ripple_reloc.o" endseg beginseg name "ovl_Effect_Ss_G_Spk" include "build/src/overlays/effects/ovl_Effect_Ss_G_Spk/z_eff_ss_g_spk.o" - include "build/src/overlays/effects/ovl_Effect_Ss_G_Spk/ovl_Effect_Ss_G_Spk_reloc.o" endseg beginseg name "ovl_Effect_Ss_G_Splash" include "build/src/overlays/effects/ovl_Effect_Ss_G_Splash/z_eff_ss_g_splash.o" - include "build/src/overlays/effects/ovl_Effect_Ss_G_Splash/ovl_Effect_Ss_G_Splash_reloc.o" endseg beginseg name "ovl_Effect_Ss_Hahen" include "build/src/overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.o" - include "build/src/overlays/effects/ovl_Effect_Ss_Hahen/ovl_Effect_Ss_Hahen_reloc.o" endseg beginseg name "ovl_Effect_Ss_HitMark" include "build/src/overlays/effects/ovl_Effect_Ss_HitMark/z_eff_ss_hitmark.o" - include "build/src/overlays/effects/ovl_Effect_Ss_HitMark/ovl_Effect_Ss_HitMark_reloc.o" endseg beginseg name "ovl_Effect_Ss_Ice_Piece" include "build/src/overlays/effects/ovl_Effect_Ss_Ice_Piece/z_eff_ss_ice_piece.o" - include "build/src/overlays/effects/ovl_Effect_Ss_Ice_Piece/ovl_Effect_Ss_Ice_Piece_reloc.o" endseg beginseg name "ovl_Effect_Ss_Ice_Smoke" include "build/src/overlays/effects/ovl_Effect_Ss_Ice_Smoke/z_eff_ss_ice_smoke.o" - include "build/src/overlays/effects/ovl_Effect_Ss_Ice_Smoke/ovl_Effect_Ss_Ice_Smoke_reloc.o" endseg beginseg name "ovl_Effect_Ss_K_Fire" include "build/src/overlays/effects/ovl_Effect_Ss_K_Fire/z_eff_ss_k_fire.o" - include "build/src/overlays/effects/ovl_Effect_Ss_K_Fire/ovl_Effect_Ss_K_Fire_reloc.o" endseg beginseg name "ovl_Effect_Ss_Kakera" include "build/src/overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.o" - include "build/src/overlays/effects/ovl_Effect_Ss_Kakera/ovl_Effect_Ss_Kakera_reloc.o" endseg beginseg name "ovl_Effect_Ss_KiraKira" include "build/src/overlays/effects/ovl_Effect_Ss_KiraKira/z_eff_ss_kirakira.o" - include "build/src/overlays/effects/ovl_Effect_Ss_KiraKira/ovl_Effect_Ss_KiraKira_reloc.o" endseg beginseg name "ovl_Effect_Ss_Lightning" include "build/src/overlays/effects/ovl_Effect_Ss_Lightning/z_eff_ss_lightning.o" - include "build/src/overlays/effects/ovl_Effect_Ss_Lightning/ovl_Effect_Ss_Lightning_reloc.o" endseg beginseg name "ovl_Effect_Ss_Sibuki" include "build/src/overlays/effects/ovl_Effect_Ss_Sibuki/z_eff_ss_sibuki.o" - include "build/src/overlays/effects/ovl_Effect_Ss_Sibuki/ovl_Effect_Ss_Sibuki_reloc.o" endseg beginseg name "ovl_Effect_Ss_Sibuki2" include "build/src/overlays/effects/ovl_Effect_Ss_Sibuki2/z_eff_ss_sibuki2.o" - include "build/src/overlays/effects/ovl_Effect_Ss_Sibuki2/ovl_Effect_Ss_Sibuki2_reloc.o" endseg beginseg name "ovl_Effect_Ss_Solder_Srch_Ball" include "build/src/overlays/effects/ovl_Effect_Ss_Solder_Srch_Ball/z_eff_ss_solder_srch_ball.o" - include "build/src/overlays/effects/ovl_Effect_Ss_Solder_Srch_Ball/ovl_Effect_Ss_Solder_Srch_Ball_reloc.o" endseg beginseg name "ovl_Effect_Ss_Stick" include "build/src/overlays/effects/ovl_Effect_Ss_Stick/z_eff_ss_stick.o" - include "build/src/overlays/effects/ovl_Effect_Ss_Stick/ovl_Effect_Ss_Stick_reloc.o" endseg beginseg name "ovl_Effect_Ss_Stone1" include "build/src/overlays/effects/ovl_Effect_Ss_Stone1/z_eff_ss_stone1.o" - include "build/src/overlays/effects/ovl_Effect_Ss_Stone1/ovl_Effect_Ss_Stone1_reloc.o" endseg beginseg name "ovl_Elf_Msg" include "build/src/overlays/actors/ovl_Elf_Msg/z_elf_msg.o" - include "build/src/overlays/actors/ovl_Elf_Msg/ovl_Elf_Msg_reloc.o" endseg beginseg name "ovl_Elf_Msg2" include "build/src/overlays/actors/ovl_Elf_Msg2/z_elf_msg2.o" - include "build/src/overlays/actors/ovl_Elf_Msg2/ovl_Elf_Msg2_reloc.o" endseg beginseg name "ovl_En_Am" include "build/src/overlays/actors/ovl_En_Am/z_en_am.o" - include "build/src/overlays/actors/ovl_En_Am/ovl_En_Am_reloc.o" endseg beginseg name "ovl_En_Ani" include "build/src/overlays/actors/ovl_En_Ani/z_en_ani.o" - include "build/src/overlays/actors/ovl_En_Ani/ovl_En_Ani_reloc.o" endseg beginseg name "ovl_En_Anubice" include "build/src/overlays/actors/ovl_En_Anubice/z_en_anubice.o" - include "build/src/overlays/actors/ovl_En_Anubice/ovl_En_Anubice_reloc.o" endseg beginseg name "ovl_En_Anubice_Fire" include "build/src/overlays/actors/ovl_En_Anubice_Fire/z_en_anubice_fire.o" - include "build/src/overlays/actors/ovl_En_Anubice_Fire/ovl_En_Anubice_Fire_reloc.o" endseg beginseg name "ovl_En_Anubice_Tag" include "build/src/overlays/actors/ovl_En_Anubice_Tag/z_en_anubice_tag.o" - include "build/src/overlays/actors/ovl_En_Anubice_Tag/ovl_En_Anubice_Tag_reloc.o" endseg beginseg name "ovl_En_Arow_Trap" include "build/src/overlays/actors/ovl_En_Arow_Trap/z_en_arow_trap.o" - include "build/src/overlays/actors/ovl_En_Arow_Trap/ovl_En_Arow_Trap_reloc.o" endseg beginseg name "ovl_En_Arrow" include "build/src/overlays/actors/ovl_En_Arrow/z_en_arrow.o" - include "build/src/overlays/actors/ovl_En_Arrow/ovl_En_Arrow_reloc.o" endseg beginseg name "ovl_En_Attack_Niw" include "build/src/overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.o" - include "build/src/overlays/actors/ovl_En_Attack_Niw/ovl_En_Attack_Niw_reloc.o" endseg beginseg name "ovl_En_Ba" include "build/src/overlays/actors/ovl_En_Ba/z_en_ba.o" - include "build/src/overlays/actors/ovl_En_Ba/ovl_En_Ba_reloc.o" endseg beginseg name "ovl_En_Bb" include "build/src/overlays/actors/ovl_En_Bb/z_en_bb.o" - include "build/src/overlays/actors/ovl_En_Bb/ovl_En_Bb_reloc.o" endseg beginseg name "ovl_En_Bdfire" include "build/src/overlays/actors/ovl_En_Bdfire/z_en_bdfire.o" - include "build/src/overlays/actors/ovl_En_Bdfire/ovl_En_Bdfire_reloc.o" endseg beginseg name "ovl_En_Bigokuta" include "build/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.o" - include "build/src/overlays/actors/ovl_En_Bigokuta/ovl_En_Bigokuta_reloc.o" endseg beginseg name "ovl_En_Bili" include "build/src/overlays/actors/ovl_En_Bili/z_en_bili.o" - include "build/src/overlays/actors/ovl_En_Bili/ovl_En_Bili_reloc.o" endseg beginseg name "ovl_En_Bird" include "build/src/overlays/actors/ovl_En_Bird/z_en_bird.o" - include "build/src/overlays/actors/ovl_En_Bird/ovl_En_Bird_reloc.o" endseg beginseg name "ovl_En_Blkobj" include "build/src/overlays/actors/ovl_En_Blkobj/z_en_blkobj.o" - include "build/src/overlays/actors/ovl_En_Blkobj/ovl_En_Blkobj_reloc.o" endseg beginseg name "ovl_En_Bom" include "build/src/overlays/actors/ovl_En_Bom/z_en_bom.o" - include "build/src/overlays/actors/ovl_En_Bom/ovl_En_Bom_reloc.o" endseg beginseg name "ovl_En_Bom_Bowl_Man" include "build/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.o" - include "build/src/overlays/actors/ovl_En_Bom_Bowl_Man/ovl_En_Bom_Bowl_Man_reloc.o" endseg beginseg name "ovl_En_Bom_Bowl_Pit" include "build/src/overlays/actors/ovl_En_Bom_Bowl_Pit/z_en_bom_bowl_pit.o" - include "build/src/overlays/actors/ovl_En_Bom_Bowl_Pit/ovl_En_Bom_Bowl_Pit_reloc.o" endseg beginseg name "ovl_En_Bom_Chu" include "build/src/overlays/actors/ovl_En_Bom_Chu/z_en_bom_chu.o" - include "build/src/overlays/actors/ovl_En_Bom_Chu/ovl_En_Bom_Chu_reloc.o" endseg beginseg name "ovl_En_Bombf" include "build/src/overlays/actors/ovl_En_Bombf/z_en_bombf.o" - include "build/src/overlays/actors/ovl_En_Bombf/ovl_En_Bombf_reloc.o" endseg beginseg name "ovl_En_Boom" include "build/src/overlays/actors/ovl_En_Boom/z_en_boom.o" - include "build/src/overlays/actors/ovl_En_Boom/ovl_En_Boom_reloc.o" endseg beginseg name "ovl_En_Box" include "build/src/overlays/actors/ovl_En_Box/z_en_box.o" - include "build/src/overlays/actors/ovl_En_Box/ovl_En_Box_reloc.o" endseg beginseg name "ovl_En_Brob" include "build/src/overlays/actors/ovl_En_Brob/z_en_brob.o" - include "build/src/overlays/actors/ovl_En_Brob/ovl_En_Brob_reloc.o" endseg beginseg name "ovl_En_Bubble" include "build/src/overlays/actors/ovl_En_Bubble/z_en_bubble.o" - include "build/src/overlays/actors/ovl_En_Bubble/ovl_En_Bubble_reloc.o" endseg beginseg name "ovl_En_Butte" include "build/src/overlays/actors/ovl_En_Butte/z_en_butte.o" - include "build/src/overlays/actors/ovl_En_Butte/ovl_En_Butte_reloc.o" endseg beginseg name "ovl_En_Bw" include "build/src/overlays/actors/ovl_En_Bw/z_en_bw.o" - include "build/src/overlays/actors/ovl_En_Bw/ovl_En_Bw_reloc.o" endseg beginseg name "ovl_En_Bx" include "build/src/overlays/actors/ovl_En_Bx/z_en_bx.o" - include "build/src/overlays/actors/ovl_En_Bx/ovl_En_Bx_reloc.o" endseg beginseg name "ovl_En_Changer" include "build/src/overlays/actors/ovl_En_Changer/z_en_changer.o" - include "build/src/overlays/actors/ovl_En_Changer/ovl_En_Changer_reloc.o" endseg beginseg name "ovl_En_Clear_Tag" include "build/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.o" - include "build/src/overlays/actors/ovl_En_Clear_Tag/ovl_En_Clear_Tag_reloc.o" endseg beginseg name "ovl_En_Cow" include "build/src/overlays/actors/ovl_En_Cow/z_en_cow.o" - include "build/src/overlays/actors/ovl_En_Cow/ovl_En_Cow_reloc.o" endseg beginseg name "ovl_En_Crow" include "build/src/overlays/actors/ovl_En_Crow/z_en_crow.o" - include "build/src/overlays/actors/ovl_En_Crow/ovl_En_Crow_reloc.o" endseg beginseg name "ovl_En_Cs" include "build/src/overlays/actors/ovl_En_Cs/z_en_cs.o" - include "build/src/overlays/actors/ovl_En_Cs/ovl_En_Cs_reloc.o" endseg beginseg name "ovl_En_Daiku" include "build/src/overlays/actors/ovl_En_Daiku/z_en_daiku.o" - include "build/src/overlays/actors/ovl_En_Daiku/ovl_En_Daiku_reloc.o" endseg beginseg name "ovl_En_Daiku_Kakariko" include "build/src/overlays/actors/ovl_En_Daiku_Kakariko/z_en_daiku_kakariko.o" - include "build/src/overlays/actors/ovl_En_Daiku_Kakariko/ovl_En_Daiku_Kakariko_reloc.o" endseg beginseg name "ovl_En_Dekubaba" include "build/src/overlays/actors/ovl_En_Dekubaba/z_en_dekubaba.o" - include "build/src/overlays/actors/ovl_En_Dekubaba/ovl_En_Dekubaba_reloc.o" endseg beginseg name "ovl_En_Dekunuts" include "build/src/overlays/actors/ovl_En_Dekunuts/z_en_dekunuts.o" - include "build/src/overlays/actors/ovl_En_Dekunuts/ovl_En_Dekunuts_reloc.o" endseg beginseg name "ovl_En_Dh" include "build/src/overlays/actors/ovl_En_Dh/z_en_dh.o" - include "build/src/overlays/actors/ovl_En_Dh/ovl_En_Dh_reloc.o" endseg beginseg name "ovl_En_Dha" include "build/src/overlays/actors/ovl_En_Dha/z_en_dha.o" - include "build/src/overlays/actors/ovl_En_Dha/ovl_En_Dha_reloc.o" endseg beginseg name "ovl_En_Diving_Game" include "build/src/overlays/actors/ovl_En_Diving_Game/z_en_diving_game.o" - include "build/src/overlays/actors/ovl_En_Diving_Game/ovl_En_Diving_Game_reloc.o" endseg beginseg name "ovl_En_Dns" include "build/src/overlays/actors/ovl_En_Dns/z_en_dns.o" - include "build/src/overlays/actors/ovl_En_Dns/ovl_En_Dns_reloc.o" endseg beginseg name "ovl_En_Dnt_Demo" include "build/src/overlays/actors/ovl_En_Dnt_Demo/z_en_dnt_demo.o" - include "build/src/overlays/actors/ovl_En_Dnt_Demo/ovl_En_Dnt_Demo_reloc.o" endseg beginseg name "ovl_En_Dnt_Jiji" include "build/src/overlays/actors/ovl_En_Dnt_Jiji/z_en_dnt_jiji.o" - include "build/src/overlays/actors/ovl_En_Dnt_Jiji/ovl_En_Dnt_Jiji_reloc.o" endseg beginseg name "ovl_En_Dnt_Nomal" include "build/src/overlays/actors/ovl_En_Dnt_Nomal/z_en_dnt_nomal.o" - include "build/src/overlays/actors/ovl_En_Dnt_Nomal/ovl_En_Dnt_Nomal_reloc.o" endseg beginseg name "ovl_En_Dodojr" include "build/src/overlays/actors/ovl_En_Dodojr/z_en_dodojr.o" - include "build/src/overlays/actors/ovl_En_Dodojr/ovl_En_Dodojr_reloc.o" endseg beginseg name "ovl_En_Dodongo" include "build/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.o" - include "build/src/overlays/actors/ovl_En_Dodongo/ovl_En_Dodongo_reloc.o" endseg beginseg name "ovl_En_Dog" include "build/src/overlays/actors/ovl_En_Dog/z_en_dog.o" - include "build/src/overlays/actors/ovl_En_Dog/ovl_En_Dog_reloc.o" endseg beginseg name "ovl_En_Door" include "build/src/overlays/actors/ovl_En_Door/z_en_door.o" - include "build/src/overlays/actors/ovl_En_Door/ovl_En_Door_reloc.o" endseg beginseg name "ovl_En_Ds" include "build/src/overlays/actors/ovl_En_Ds/z_en_ds.o" - include "build/src/overlays/actors/ovl_En_Ds/ovl_En_Ds_reloc.o" endseg beginseg name "ovl_En_Du" include "build/src/overlays/actors/ovl_En_Du/z_en_du.o" - include "build/src/overlays/actors/ovl_En_Du/ovl_En_Du_reloc.o" endseg beginseg name "ovl_En_Dy_Extra" include "build/src/overlays/actors/ovl_En_Dy_Extra/z_en_dy_extra.o" - include "build/src/overlays/actors/ovl_En_Dy_Extra/ovl_En_Dy_Extra_reloc.o" endseg beginseg name "ovl_En_Eg" include "build/src/overlays/actors/ovl_En_Eg/z_en_eg.o" - include "build/src/overlays/actors/ovl_En_Eg/ovl_En_Eg_reloc.o" endseg beginseg name "ovl_En_Eiyer" include "build/src/overlays/actors/ovl_En_Eiyer/z_en_eiyer.o" - include "build/src/overlays/actors/ovl_En_Eiyer/ovl_En_Eiyer_reloc.o" endseg beginseg name "ovl_En_Elf" include "build/src/overlays/actors/ovl_En_Elf/z_en_elf.o" - include "build/src/overlays/actors/ovl_En_Elf/ovl_En_Elf_reloc.o" endseg beginseg name "ovl_En_Encount1" include "build/src/overlays/actors/ovl_En_Encount1/z_en_encount1.o" - include "build/src/overlays/actors/ovl_En_Encount1/ovl_En_Encount1_reloc.o" endseg beginseg name "ovl_En_Encount2" include "build/src/overlays/actors/ovl_En_Encount2/z_en_encount2.o" - include "build/src/overlays/actors/ovl_En_Encount2/ovl_En_Encount2_reloc.o" endseg beginseg name "ovl_En_Ex_Item" include "build/src/overlays/actors/ovl_En_Ex_Item/z_en_ex_item.o" - include "build/src/overlays/actors/ovl_En_Ex_Item/ovl_En_Ex_Item_reloc.o" endseg beginseg name "ovl_En_Ex_Ruppy" include "build/src/overlays/actors/ovl_En_Ex_Ruppy/z_en_ex_ruppy.o" - include "build/src/overlays/actors/ovl_En_Ex_Ruppy/ovl_En_Ex_Ruppy_reloc.o" endseg beginseg name "ovl_En_Fd" include "build/src/overlays/actors/ovl_En_Fd/z_en_fd.o" - include "build/src/overlays/actors/ovl_En_Fd/ovl_En_Fd_reloc.o" endseg beginseg name "ovl_En_Fd_Fire" include "build/src/overlays/actors/ovl_En_Fd_Fire/z_en_fd_fire.o" - include "build/src/overlays/actors/ovl_En_Fd_Fire/ovl_En_Fd_Fire_reloc.o" endseg beginseg name "ovl_En_Fhg_Fire" include "build/src/overlays/actors/ovl_En_Fhg_Fire/z_en_fhg_fire.o" - include "build/src/overlays/actors/ovl_En_Fhg_Fire/ovl_En_Fhg_Fire_reloc.o" endseg beginseg name "ovl_En_Fire_Rock" include "build/src/overlays/actors/ovl_En_Fire_Rock/z_en_fire_rock.o" - include "build/src/overlays/actors/ovl_En_Fire_Rock/ovl_En_Fire_Rock_reloc.o" endseg beginseg name "ovl_En_Firefly" include "build/src/overlays/actors/ovl_En_Firefly/z_en_firefly.o" - include "build/src/overlays/actors/ovl_En_Firefly/ovl_En_Firefly_reloc.o" endseg beginseg name "ovl_En_Fish" include "build/src/overlays/actors/ovl_En_Fish/z_en_fish.o" - include "build/src/overlays/actors/ovl_En_Fish/ovl_En_Fish_reloc.o" endseg beginseg name "ovl_En_Floormas" include "build/src/overlays/actors/ovl_En_Floormas/z_en_floormas.o" - include "build/src/overlays/actors/ovl_En_Floormas/ovl_En_Floormas_reloc.o" endseg beginseg name "ovl_En_Fr" include "build/src/overlays/actors/ovl_En_Fr/z_en_fr.o" - include "build/src/overlays/actors/ovl_En_Fr/ovl_En_Fr_reloc.o" endseg beginseg name "ovl_En_Fu" include "build/src/overlays/actors/ovl_En_Fu/z_en_fu.o" - include "build/src/overlays/actors/ovl_En_Fu/ovl_En_Fu_reloc.o" endseg beginseg name "ovl_En_Fw" include "build/src/overlays/actors/ovl_En_Fw/z_en_fw.o" - include "build/src/overlays/actors/ovl_En_Fw/ovl_En_Fw_reloc.o" endseg beginseg name "ovl_En_Fz" include "build/src/overlays/actors/ovl_En_Fz/z_en_fz.o" - include "build/src/overlays/actors/ovl_En_Fz/ovl_En_Fz_reloc.o" endseg beginseg name "ovl_En_G_Switch" include "build/src/overlays/actors/ovl_En_G_Switch/z_en_g_switch.o" - include "build/src/overlays/actors/ovl_En_G_Switch/ovl_En_G_Switch_reloc.o" endseg beginseg name "ovl_En_Ganon_Mant" include "build/src/overlays/actors/ovl_En_Ganon_Mant/z_en_ganon_mant.o" - include "build/src/overlays/actors/ovl_En_Ganon_Mant/ovl_En_Ganon_Mant_reloc.o" endseg beginseg name "ovl_En_Ganon_Organ" include "build/src/overlays/actors/ovl_En_Ganon_Organ/z_en_ganon_organ.o" - include "build/src/overlays/actors/ovl_En_Ganon_Organ/ovl_En_Ganon_Organ_reloc.o" endseg beginseg name "ovl_En_Gb" include "build/src/overlays/actors/ovl_En_Gb/z_en_gb.o" - include "build/src/overlays/actors/ovl_En_Gb/ovl_En_Gb_reloc.o" endseg beginseg name "ovl_En_Ge1" include "build/src/overlays/actors/ovl_En_Ge1/z_en_ge1.o" - include "build/src/overlays/actors/ovl_En_Ge1/ovl_En_Ge1_reloc.o" endseg beginseg name "ovl_En_Ge2" include "build/src/overlays/actors/ovl_En_Ge2/z_en_ge2.o" - include "build/src/overlays/actors/ovl_En_Ge2/ovl_En_Ge2_reloc.o" endseg beginseg name "ovl_En_Ge3" include "build/src/overlays/actors/ovl_En_Ge3/z_en_ge3.o" - include "build/src/overlays/actors/ovl_En_Ge3/ovl_En_Ge3_reloc.o" endseg beginseg name "ovl_En_GeldB" include "build/src/overlays/actors/ovl_En_GeldB/z_en_geldb.o" - include "build/src/overlays/actors/ovl_En_GeldB/ovl_En_GeldB_reloc.o" endseg beginseg name "ovl_En_GirlA" include "build/src/overlays/actors/ovl_En_GirlA/z_en_girla.o" - include "build/src/overlays/actors/ovl_En_GirlA/ovl_En_GirlA_reloc.o" endseg beginseg name "ovl_En_Gm" include "build/src/overlays/actors/ovl_En_Gm/z_en_gm.o" - include "build/src/overlays/actors/ovl_En_Gm/ovl_En_Gm_reloc.o" endseg beginseg name "ovl_En_Go" include "build/src/overlays/actors/ovl_En_Go/z_en_go.o" - include "build/src/overlays/actors/ovl_En_Go/ovl_En_Go_reloc.o" endseg beginseg name "ovl_En_Go2" include "build/src/overlays/actors/ovl_En_Go2/z_en_go2.o" - include "build/src/overlays/actors/ovl_En_Go2/ovl_En_Go2_reloc.o" endseg beginseg name "ovl_En_Goma" include "build/src/overlays/actors/ovl_En_Goma/z_en_goma.o" - include "build/src/overlays/actors/ovl_En_Goma/ovl_En_Goma_reloc.o" endseg beginseg name "ovl_En_Goroiwa" include "build/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.o" - include "build/src/overlays/actors/ovl_En_Goroiwa/ovl_En_Goroiwa_reloc.o" endseg beginseg name "ovl_En_Gs" include "build/src/overlays/actors/ovl_En_Gs/z_en_gs.o" - include "build/src/overlays/actors/ovl_En_Gs/ovl_En_Gs_reloc.o" endseg beginseg name "ovl_En_Guest" include "build/src/overlays/actors/ovl_En_Guest/z_en_guest.o" - include "build/src/overlays/actors/ovl_En_Guest/ovl_En_Guest_reloc.o" endseg beginseg name "ovl_En_Hata" include "build/src/overlays/actors/ovl_En_Hata/z_en_hata.o" - include "build/src/overlays/actors/ovl_En_Hata/ovl_En_Hata_reloc.o" endseg beginseg name "ovl_En_Heishi1" include "build/src/overlays/actors/ovl_En_Heishi1/z_en_heishi1.o" - include "build/src/overlays/actors/ovl_En_Heishi1/ovl_En_Heishi1_reloc.o" endseg beginseg name "ovl_En_Heishi2" include "build/src/overlays/actors/ovl_En_Heishi2/z_en_heishi2.o" - include "build/src/overlays/actors/ovl_En_Heishi2/ovl_En_Heishi2_reloc.o" endseg beginseg name "ovl_En_Heishi3" include "build/src/overlays/actors/ovl_En_Heishi3/z_en_heishi3.o" - include "build/src/overlays/actors/ovl_En_Heishi3/ovl_En_Heishi3_reloc.o" endseg beginseg name "ovl_En_Heishi4" include "build/src/overlays/actors/ovl_En_Heishi4/z_en_heishi4.o" - include "build/src/overlays/actors/ovl_En_Heishi4/ovl_En_Heishi4_reloc.o" endseg beginseg name "ovl_En_Hintnuts" include "build/src/overlays/actors/ovl_En_Hintnuts/z_en_hintnuts.o" - include "build/src/overlays/actors/ovl_En_Hintnuts/ovl_En_Hintnuts_reloc.o" endseg beginseg name "ovl_En_Holl" include "build/src/overlays/actors/ovl_En_Holl/z_en_holl.o" - include "build/src/overlays/actors/ovl_En_Holl/ovl_En_Holl_reloc.o" endseg beginseg name "ovl_En_Honotrap" include "build/src/overlays/actors/ovl_En_Honotrap/z_en_honotrap.o" - include "build/src/overlays/actors/ovl_En_Honotrap/ovl_En_Honotrap_reloc.o" endseg beginseg name "ovl_En_Horse" include "build/src/overlays/actors/ovl_En_Horse/z_en_horse.o" - include "build/src/overlays/actors/ovl_En_Horse/ovl_En_Horse_reloc.o" endseg beginseg name "ovl_En_Horse_Game_Check" include "build/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.o" - include "build/src/overlays/actors/ovl_En_Horse_Game_Check/ovl_En_Horse_Game_Check_reloc.o" endseg beginseg name "ovl_En_Horse_Ganon" include "build/src/overlays/actors/ovl_En_Horse_Ganon/z_en_horse_ganon.o" - include "build/src/overlays/actors/ovl_En_Horse_Ganon/ovl_En_Horse_Ganon_reloc.o" endseg beginseg name "ovl_En_Horse_Link_Child" include "build/src/overlays/actors/ovl_En_Horse_Link_Child/z_en_horse_link_child.o" - include "build/src/overlays/actors/ovl_En_Horse_Link_Child/ovl_En_Horse_Link_Child_reloc.o" endseg beginseg name "ovl_En_Horse_Normal" include "build/src/overlays/actors/ovl_En_Horse_Normal/z_en_horse_normal.o" - include "build/src/overlays/actors/ovl_En_Horse_Normal/ovl_En_Horse_Normal_reloc.o" endseg beginseg name "ovl_En_Horse_Zelda" include "build/src/overlays/actors/ovl_En_Horse_Zelda/z_en_horse_zelda.o" - include "build/src/overlays/actors/ovl_En_Horse_Zelda/ovl_En_Horse_Zelda_reloc.o" endseg beginseg name "ovl_En_Hs" include "build/src/overlays/actors/ovl_En_Hs/z_en_hs.o" - include "build/src/overlays/actors/ovl_En_Hs/ovl_En_Hs_reloc.o" endseg beginseg name "ovl_En_Hs2" include "build/src/overlays/actors/ovl_En_Hs2/z_en_hs2.o" - include "build/src/overlays/actors/ovl_En_Hs2/ovl_En_Hs2_reloc.o" endseg beginseg name "ovl_En_Hy" include "build/src/overlays/actors/ovl_En_Hy/z_en_hy.o" - include "build/src/overlays/actors/ovl_En_Hy/ovl_En_Hy_reloc.o" endseg beginseg name "ovl_En_Ice_Hono" include "build/src/overlays/actors/ovl_En_Ice_Hono/z_en_ice_hono.o" - include "build/src/overlays/actors/ovl_En_Ice_Hono/ovl_En_Ice_Hono_reloc.o" endseg beginseg name "ovl_En_Ik" include "build/src/overlays/actors/ovl_En_Ik/z_en_ik.o" - include "build/src/overlays/actors/ovl_En_Ik/ovl_En_Ik_reloc.o" endseg beginseg name "ovl_En_In" include "build/src/overlays/actors/ovl_En_In/z_en_in.o" - include "build/src/overlays/actors/ovl_En_In/ovl_En_In_reloc.o" endseg beginseg name "ovl_En_Insect" include "build/src/overlays/actors/ovl_En_Insect/z_en_insect.o" - include "build/src/overlays/actors/ovl_En_Insect/ovl_En_Insect_reloc.o" endseg beginseg name "ovl_En_Ishi" include "build/src/overlays/actors/ovl_En_Ishi/z_en_ishi.o" - include "build/src/overlays/actors/ovl_En_Ishi/ovl_En_Ishi_reloc.o" endseg beginseg name "ovl_En_It" include "build/src/overlays/actors/ovl_En_It/z_en_it.o" - include "build/src/overlays/actors/ovl_En_It/ovl_En_It_reloc.o" endseg beginseg name "ovl_En_Jj" include "build/src/overlays/actors/ovl_En_Jj/z_en_jj.o" - include "build/src/overlays/actors/ovl_En_Jj/ovl_En_Jj_reloc.o" endseg beginseg name "ovl_En_Js" include "build/src/overlays/actors/ovl_En_Js/z_en_js.o" - include "build/src/overlays/actors/ovl_En_Js/ovl_En_Js_reloc.o" endseg beginseg name "ovl_En_Jsjutan" include "build/src/overlays/actors/ovl_En_Jsjutan/z_en_jsjutan.o" - include "build/src/overlays/actors/ovl_En_Jsjutan/ovl_En_Jsjutan_reloc.o" endseg beginseg name "ovl_En_Kakasi" include "build/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.o" - include "build/src/overlays/actors/ovl_En_Kakasi/ovl_En_Kakasi_reloc.o" endseg beginseg name "ovl_En_Kakasi2" include "build/src/overlays/actors/ovl_En_Kakasi2/z_en_kakasi2.o" - include "build/src/overlays/actors/ovl_En_Kakasi2/ovl_En_Kakasi2_reloc.o" endseg beginseg name "ovl_En_Kakasi3" include "build/src/overlays/actors/ovl_En_Kakasi3/z_en_kakasi3.o" - include "build/src/overlays/actors/ovl_En_Kakasi3/ovl_En_Kakasi3_reloc.o" endseg beginseg name "ovl_En_Kanban" include "build/src/overlays/actors/ovl_En_Kanban/z_en_kanban.o" - include "build/src/overlays/actors/ovl_En_Kanban/ovl_En_Kanban_reloc.o" endseg beginseg name "ovl_En_Karebaba" include "build/src/overlays/actors/ovl_En_Karebaba/z_en_karebaba.o" - include "build/src/overlays/actors/ovl_En_Karebaba/ovl_En_Karebaba_reloc.o" endseg beginseg name "ovl_En_Ko" include "build/src/overlays/actors/ovl_En_Ko/z_en_ko.o" - include "build/src/overlays/actors/ovl_En_Ko/ovl_En_Ko_reloc.o" endseg beginseg name "ovl_En_Kusa" include "build/src/overlays/actors/ovl_En_Kusa/z_en_kusa.o" - include "build/src/overlays/actors/ovl_En_Kusa/ovl_En_Kusa_reloc.o" endseg beginseg name "ovl_En_Kz" include "build/src/overlays/actors/ovl_En_Kz/z_en_kz.o" - include "build/src/overlays/actors/ovl_En_Kz/ovl_En_Kz_reloc.o" endseg beginseg name "ovl_En_Light" include "build/src/overlays/actors/ovl_En_Light/z_en_light.o" - include "build/src/overlays/actors/ovl_En_Light/ovl_En_Light_reloc.o" endseg beginseg name "ovl_En_Lightbox" include "build/src/overlays/actors/ovl_En_Lightbox/z_en_lightbox.o" - include "build/src/overlays/actors/ovl_En_Lightbox/ovl_En_Lightbox_reloc.o" endseg beginseg name "ovl_En_M_Fire1" include "build/src/overlays/actors/ovl_En_M_Fire1/z_en_m_fire1.o" - include "build/src/overlays/actors/ovl_En_M_Fire1/ovl_En_M_Fire1_reloc.o" endseg beginseg name "ovl_En_M_Thunder" include "build/src/overlays/actors/ovl_En_M_Thunder/z_en_m_thunder.o" - include "build/src/overlays/actors/ovl_En_M_Thunder/ovl_En_M_Thunder_reloc.o" endseg beginseg name "ovl_En_Ma1" include "build/src/overlays/actors/ovl_En_Ma1/z_en_ma1.o" - include "build/src/overlays/actors/ovl_En_Ma1/ovl_En_Ma1_reloc.o" endseg beginseg name "ovl_En_Ma2" include "build/src/overlays/actors/ovl_En_Ma2/z_en_ma2.o" - include "build/src/overlays/actors/ovl_En_Ma2/ovl_En_Ma2_reloc.o" endseg beginseg name "ovl_En_Ma3" include "build/src/overlays/actors/ovl_En_Ma3/z_en_ma3.o" - include "build/src/overlays/actors/ovl_En_Ma3/ovl_En_Ma3_reloc.o" endseg beginseg name "ovl_En_Mag" include "build/src/overlays/actors/ovl_En_Mag/z_en_mag.o" - include "build/src/overlays/actors/ovl_En_Mag/ovl_En_Mag_reloc.o" endseg beginseg name "ovl_En_Mb" include "build/src/overlays/actors/ovl_En_Mb/z_en_mb.o" - include "build/src/overlays/actors/ovl_En_Mb/ovl_En_Mb_reloc.o" endseg beginseg name "ovl_En_Md" include "build/src/overlays/actors/ovl_En_Md/z_en_md.o" - include "build/src/overlays/actors/ovl_En_Md/ovl_En_Md_reloc.o" endseg beginseg name "ovl_En_Mk" include "build/src/overlays/actors/ovl_En_Mk/z_en_mk.o" - include "build/src/overlays/actors/ovl_En_Mk/ovl_En_Mk_reloc.o" endseg beginseg name "ovl_En_Mm" include "build/src/overlays/actors/ovl_En_Mm/z_en_mm.o" - include "build/src/overlays/actors/ovl_En_Mm/ovl_En_Mm_reloc.o" endseg beginseg name "ovl_En_Mm2" include "build/src/overlays/actors/ovl_En_Mm2/z_en_mm2.o" - include "build/src/overlays/actors/ovl_En_Mm2/ovl_En_Mm2_reloc.o" endseg beginseg name "ovl_En_Ms" include "build/src/overlays/actors/ovl_En_Ms/z_en_ms.o" - include "build/src/overlays/actors/ovl_En_Ms/ovl_En_Ms_reloc.o" endseg beginseg name "ovl_En_Mu" include "build/src/overlays/actors/ovl_En_Mu/z_en_mu.o" - include "build/src/overlays/actors/ovl_En_Mu/ovl_En_Mu_reloc.o" endseg beginseg name "ovl_En_Nb" include "build/src/overlays/actors/ovl_En_Nb/z_en_nb.o" - include "build/src/overlays/actors/ovl_En_Nb/ovl_En_Nb_reloc.o" endseg beginseg name "ovl_En_Niw" include "build/src/overlays/actors/ovl_En_Niw/z_en_niw.o" - include "build/src/overlays/actors/ovl_En_Niw/ovl_En_Niw_reloc.o" endseg beginseg name "ovl_En_Niw_Girl" include "build/src/overlays/actors/ovl_En_Niw_Girl/z_en_niw_girl.o" - include "build/src/overlays/actors/ovl_En_Niw_Girl/ovl_En_Niw_Girl_reloc.o" endseg beginseg name "ovl_En_Niw_Lady" include "build/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.o" - include "build/src/overlays/actors/ovl_En_Niw_Lady/ovl_En_Niw_Lady_reloc.o" endseg beginseg name "ovl_En_Nutsball" include "build/src/overlays/actors/ovl_En_Nutsball/z_en_nutsball.o" - include "build/src/overlays/actors/ovl_En_Nutsball/ovl_En_Nutsball_reloc.o" endseg beginseg name "ovl_En_Nwc" include "build/src/overlays/actors/ovl_En_Nwc/z_en_nwc.o" - include "build/src/overlays/actors/ovl_En_Nwc/ovl_En_Nwc_reloc.o" endseg beginseg name "ovl_En_Ny" include "build/src/overlays/actors/ovl_En_Ny/z_en_ny.o" - include "build/src/overlays/actors/ovl_En_Ny/ovl_En_Ny_reloc.o" endseg beginseg name "ovl_En_OE2" include "build/src/overlays/actors/ovl_En_OE2/z_en_oe2.o" - include "build/src/overlays/actors/ovl_En_OE2/ovl_En_OE2_reloc.o" endseg beginseg name "ovl_En_Okarina_Effect" include "build/src/overlays/actors/ovl_En_Okarina_Effect/z_en_okarina_effect.o" - include "build/src/overlays/actors/ovl_En_Okarina_Effect/ovl_En_Okarina_Effect_reloc.o" endseg beginseg name "ovl_En_Okarina_Tag" include "build/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag_cutscene_data.o" include "build/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.o" - include "build/src/overlays/actors/ovl_En_Okarina_Tag/ovl_En_Okarina_Tag_reloc.o" endseg beginseg name "ovl_En_Okuta" include "build/src/overlays/actors/ovl_En_Okuta/z_en_okuta.o" - include "build/src/overlays/actors/ovl_En_Okuta/ovl_En_Okuta_reloc.o" endseg beginseg name "ovl_En_Ossan" include "build/src/overlays/actors/ovl_En_Ossan/z_en_ossan.o" - include "build/src/overlays/actors/ovl_En_Ossan/ovl_En_Ossan_reloc.o" endseg beginseg name "ovl_En_Owl" include "build/src/overlays/actors/ovl_En_Owl/z_en_owl.o" - include "build/src/overlays/actors/ovl_En_Owl/ovl_En_Owl_reloc.o" endseg beginseg name "ovl_En_Part" include "build/src/overlays/actors/ovl_En_Part/z_en_part.o" - include "build/src/overlays/actors/ovl_En_Part/ovl_En_Part_reloc.o" endseg beginseg name "ovl_En_Peehat" include "build/src/overlays/actors/ovl_En_Peehat/z_en_peehat.o" - include "build/src/overlays/actors/ovl_En_Peehat/ovl_En_Peehat_reloc.o" endseg beginseg name "ovl_En_Po_Desert" include "build/src/overlays/actors/ovl_En_Po_Desert/z_en_po_desert.o" - include "build/src/overlays/actors/ovl_En_Po_Desert/ovl_En_Po_Desert_reloc.o" endseg beginseg name "ovl_En_Po_Field" include "build/src/overlays/actors/ovl_En_Po_Field/z_en_po_field.o" - include "build/src/overlays/actors/ovl_En_Po_Field/ovl_En_Po_Field_reloc.o" endseg beginseg name "ovl_En_Po_Relay" include "build/src/overlays/actors/ovl_En_Po_Relay/z_en_po_relay.o" - include "build/src/overlays/actors/ovl_En_Po_Relay/ovl_En_Po_Relay_reloc.o" endseg beginseg name "ovl_En_Po_Sisters" include "build/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.o" - include "build/src/overlays/actors/ovl_En_Po_Sisters/ovl_En_Po_Sisters_reloc.o" endseg beginseg name "ovl_En_Poh" include "build/src/overlays/actors/ovl_En_Poh/z_en_poh.o" - include "build/src/overlays/actors/ovl_En_Poh/ovl_En_Poh_reloc.o" endseg beginseg name "ovl_En_Pu_box" include "build/src/overlays/actors/ovl_En_Pu_box/z_en_pu_box.o" - include "build/src/overlays/actors/ovl_En_Pu_box/ovl_En_Pu_box_reloc.o" endseg beginseg name "ovl_En_Rd" include "build/src/overlays/actors/ovl_En_Rd/z_en_rd.o" - include "build/src/overlays/actors/ovl_En_Rd/ovl_En_Rd_reloc.o" endseg beginseg name "ovl_En_Reeba" include "build/src/overlays/actors/ovl_En_Reeba/z_en_reeba.o" - include "build/src/overlays/actors/ovl_En_Reeba/ovl_En_Reeba_reloc.o" endseg beginseg name "ovl_En_River_Sound" include "build/src/overlays/actors/ovl_En_River_Sound/z_en_river_sound.o" - include "build/src/overlays/actors/ovl_En_River_Sound/ovl_En_River_Sound_reloc.o" endseg beginseg name "ovl_En_Rl" include "build/src/overlays/actors/ovl_En_Rl/z_en_rl.o" - include "build/src/overlays/actors/ovl_En_Rl/ovl_En_Rl_reloc.o" endseg beginseg name "ovl_En_Rr" include "build/src/overlays/actors/ovl_En_Rr/z_en_rr.o" - include "build/src/overlays/actors/ovl_En_Rr/ovl_En_Rr_reloc.o" endseg beginseg name "ovl_En_Ru1" include "build/src/overlays/actors/ovl_En_Ru1/z_en_ru1.o" - include "build/src/overlays/actors/ovl_En_Ru1/ovl_En_Ru1_reloc.o" endseg beginseg name "ovl_En_Ru2" include "build/src/overlays/actors/ovl_En_Ru2/z_en_ru2.o" - include "build/src/overlays/actors/ovl_En_Ru2/ovl_En_Ru2_reloc.o" endseg beginseg name "ovl_En_Sa" include "build/src/overlays/actors/ovl_En_Sa/z_en_sa.o" - include "build/src/overlays/actors/ovl_En_Sa/ovl_En_Sa_reloc.o" endseg beginseg name "ovl_En_Sb" include "build/src/overlays/actors/ovl_En_Sb/z_en_sb.o" - include "build/src/overlays/actors/ovl_En_Sb/ovl_En_Sb_reloc.o" endseg beginseg name "ovl_En_Scene_Change" include "build/src/overlays/actors/ovl_En_Scene_Change/z_en_scene_change.o" - include "build/src/overlays/actors/ovl_En_Scene_Change/ovl_En_Scene_Change_reloc.o" endseg beginseg name "ovl_En_Sda" include "build/src/overlays/actors/ovl_En_Sda/z_en_sda.o" - include "build/src/overlays/actors/ovl_En_Sda/ovl_En_Sda_reloc.o" endseg beginseg name "ovl_En_Shopnuts" include "build/src/overlays/actors/ovl_En_Shopnuts/z_en_shopnuts.o" - include "build/src/overlays/actors/ovl_En_Shopnuts/ovl_En_Shopnuts_reloc.o" endseg beginseg name "ovl_En_Si" include "build/src/overlays/actors/ovl_En_Si/z_en_si.o" - include "build/src/overlays/actors/ovl_En_Si/ovl_En_Si_reloc.o" endseg beginseg name "ovl_En_Siofuki" include "build/src/overlays/actors/ovl_En_Siofuki/z_en_siofuki.o" - include "build/src/overlays/actors/ovl_En_Siofuki/ovl_En_Siofuki_reloc.o" endseg beginseg name "ovl_En_Skb" include "build/src/overlays/actors/ovl_En_Skb/z_en_skb.o" - include "build/src/overlays/actors/ovl_En_Skb/ovl_En_Skb_reloc.o" endseg beginseg name "ovl_En_Skj" include "build/src/overlays/actors/ovl_En_Skj/z_en_skj.o" - include "build/src/overlays/actors/ovl_En_Skj/ovl_En_Skj_reloc.o" endseg beginseg name "ovl_En_Skjneedle" include "build/src/overlays/actors/ovl_En_Skjneedle/z_en_skjneedle.o" - include "build/src/overlays/actors/ovl_En_Skjneedle/ovl_En_Skjneedle_reloc.o" endseg beginseg name "ovl_En_Ssh" include "build/src/overlays/actors/ovl_En_Ssh/z_en_ssh.o" - include "build/src/overlays/actors/ovl_En_Ssh/ovl_En_Ssh_reloc.o" endseg beginseg name "ovl_En_St" include "build/src/overlays/actors/ovl_En_St/z_en_st.o" - include "build/src/overlays/actors/ovl_En_St/ovl_En_St_reloc.o" endseg beginseg name "ovl_En_Sth" include "build/src/overlays/actors/ovl_En_Sth/z_en_sth.o" - include "build/src/overlays/actors/ovl_En_Sth/ovl_En_Sth_reloc.o" endseg beginseg name "ovl_En_Stream" include "build/src/overlays/actors/ovl_En_Stream/z_en_stream.o" - include "build/src/overlays/actors/ovl_En_Stream/ovl_En_Stream_reloc.o" endseg beginseg name "ovl_En_Sw" include "build/src/overlays/actors/ovl_En_Sw/z_en_sw.o" - include "build/src/overlays/actors/ovl_En_Sw/ovl_En_Sw_reloc.o" endseg beginseg name "ovl_En_Syateki_Itm" include "build/src/overlays/actors/ovl_En_Syateki_Itm/z_en_syateki_itm.o" - include "build/src/overlays/actors/ovl_En_Syateki_Itm/ovl_En_Syateki_Itm_reloc.o" endseg beginseg name "ovl_En_Syateki_Man" include "build/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.o" - include "build/src/overlays/actors/ovl_En_Syateki_Man/ovl_En_Syateki_Man_reloc.o" endseg beginseg name "ovl_En_Syateki_Niw" include "build/src/overlays/actors/ovl_En_Syateki_Niw/z_en_syateki_niw.o" - include "build/src/overlays/actors/ovl_En_Syateki_Niw/ovl_En_Syateki_Niw_reloc.o" endseg beginseg name "ovl_En_Ta" include "build/src/overlays/actors/ovl_En_Ta/z_en_ta.o" - include "build/src/overlays/actors/ovl_En_Ta/ovl_En_Ta_reloc.o" endseg beginseg name "ovl_En_Takara_Man" include "build/src/overlays/actors/ovl_En_Takara_Man/z_en_takara_man.o" - include "build/src/overlays/actors/ovl_En_Takara_Man/ovl_En_Takara_Man_reloc.o" endseg beginseg name "ovl_En_Tana" include "build/src/overlays/actors/ovl_En_Tana/z_en_tana.o" - include "build/src/overlays/actors/ovl_En_Tana/ovl_En_Tana_reloc.o" endseg beginseg name "ovl_En_Tg" include "build/src/overlays/actors/ovl_En_Tg/z_en_tg.o" - include "build/src/overlays/actors/ovl_En_Tg/ovl_En_Tg_reloc.o" endseg beginseg name "ovl_En_Tite" include "build/src/overlays/actors/ovl_En_Tite/z_en_tite.o" - include "build/src/overlays/actors/ovl_En_Tite/ovl_En_Tite_reloc.o" endseg beginseg name "ovl_En_Tk" include "build/src/overlays/actors/ovl_En_Tk/z_en_tk.o" - include "build/src/overlays/actors/ovl_En_Tk/ovl_En_Tk_reloc.o" endseg beginseg name "ovl_En_Torch" include "build/src/overlays/actors/ovl_En_Torch/z_en_torch.o" - include "build/src/overlays/actors/ovl_En_Torch/ovl_En_Torch_reloc.o" endseg beginseg name "ovl_En_Torch2" include "build/src/overlays/actors/ovl_En_Torch2/z_en_torch2.o" - include "build/src/overlays/actors/ovl_En_Torch2/ovl_En_Torch2_reloc.o" endseg beginseg name "ovl_En_Toryo" include "build/src/overlays/actors/ovl_En_Toryo/z_en_toryo.o" - include "build/src/overlays/actors/ovl_En_Toryo/ovl_En_Toryo_reloc.o" endseg beginseg name "ovl_En_Tp" include "build/src/overlays/actors/ovl_En_Tp/z_en_tp.o" - include "build/src/overlays/actors/ovl_En_Tp/ovl_En_Tp_reloc.o" endseg beginseg name "ovl_En_Tr" include "build/src/overlays/actors/ovl_En_Tr/z_en_tr.o" - include "build/src/overlays/actors/ovl_En_Tr/ovl_En_Tr_reloc.o" endseg beginseg name "ovl_En_Trap" include "build/src/overlays/actors/ovl_En_Trap/z_en_trap.o" - include "build/src/overlays/actors/ovl_En_Trap/ovl_En_Trap_reloc.o" endseg beginseg name "ovl_En_Tubo_Trap" include "build/src/overlays/actors/ovl_En_Tubo_Trap/z_en_tubo_trap.o" - include "build/src/overlays/actors/ovl_En_Tubo_Trap/ovl_En_Tubo_Trap_reloc.o" endseg beginseg name "ovl_En_Vali" include "build/src/overlays/actors/ovl_En_Vali/z_en_vali.o" - include "build/src/overlays/actors/ovl_En_Vali/ovl_En_Vali_reloc.o" endseg beginseg name "ovl_En_Vase" include "build/src/overlays/actors/ovl_En_Vase/z_en_vase.o" - include "build/src/overlays/actors/ovl_En_Vase/ovl_En_Vase_reloc.o" endseg beginseg name "ovl_En_Vb_Ball" include "build/src/overlays/actors/ovl_En_Vb_Ball/z_en_vb_ball.o" - include "build/src/overlays/actors/ovl_En_Vb_Ball/ovl_En_Vb_Ball_reloc.o" endseg beginseg name "ovl_En_Viewer" include "build/src/overlays/actors/ovl_En_Viewer/z_en_viewer.o" - include "build/src/overlays/actors/ovl_En_Viewer/ovl_En_Viewer_reloc.o" endseg beginseg name "ovl_En_Vm" include "build/src/overlays/actors/ovl_En_Vm/z_en_vm.o" - include "build/src/overlays/actors/ovl_En_Vm/ovl_En_Vm_reloc.o" endseg beginseg name "ovl_En_Wall_Tubo" include "build/src/overlays/actors/ovl_En_Wall_Tubo/z_en_wall_tubo.o" - include "build/src/overlays/actors/ovl_En_Wall_Tubo/ovl_En_Wall_Tubo_reloc.o" endseg beginseg name "ovl_En_Wallmas" include "build/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.o" - include "build/src/overlays/actors/ovl_En_Wallmas/ovl_En_Wallmas_reloc.o" endseg beginseg name "ovl_En_Weather_Tag" include "build/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.o" - include "build/src/overlays/actors/ovl_En_Weather_Tag/ovl_En_Weather_Tag_reloc.o" endseg beginseg name "ovl_En_Weiyer" include "build/src/overlays/actors/ovl_En_Weiyer/z_en_weiyer.o" - include "build/src/overlays/actors/ovl_En_Weiyer/ovl_En_Weiyer_reloc.o" endseg beginseg name "ovl_En_Wf" include "build/src/overlays/actors/ovl_En_Wf/z_en_wf.o" - include "build/src/overlays/actors/ovl_En_Wf/ovl_En_Wf_reloc.o" endseg beginseg name "ovl_En_Wonder_Item" include "build/src/overlays/actors/ovl_En_Wonder_Item/z_en_wonder_item.o" - include "build/src/overlays/actors/ovl_En_Wonder_Item/ovl_En_Wonder_Item_reloc.o" endseg beginseg name "ovl_En_Wonder_Talk" include "build/src/overlays/actors/ovl_En_Wonder_Talk/z_en_wonder_talk.o" - include "build/src/overlays/actors/ovl_En_Wonder_Talk/ovl_En_Wonder_Talk_reloc.o" endseg beginseg name "ovl_En_Wonder_Talk2" include "build/src/overlays/actors/ovl_En_Wonder_Talk2/z_en_wonder_talk2.o" - include "build/src/overlays/actors/ovl_En_Wonder_Talk2/ovl_En_Wonder_Talk2_reloc.o" endseg beginseg name "ovl_En_Wood02" include "build/src/overlays/actors/ovl_En_Wood02/z_en_wood02.o" - include "build/src/overlays/actors/ovl_En_Wood02/ovl_En_Wood02_reloc.o" endseg beginseg name "ovl_En_Xc" include "build/src/overlays/actors/ovl_En_Xc/z_en_xc.o" - include "build/src/overlays/actors/ovl_En_Xc/ovl_En_Xc_reloc.o" endseg beginseg name "ovl_En_Yabusame_Mark" include "build/src/overlays/actors/ovl_En_Yabusame_Mark/z_en_yabusame_mark.o" - include "build/src/overlays/actors/ovl_En_Yabusame_Mark/ovl_En_Yabusame_Mark_reloc.o" endseg beginseg name "ovl_En_Yukabyun" include "build/src/overlays/actors/ovl_En_Yukabyun/z_en_yukabyun.o" - include "build/src/overlays/actors/ovl_En_Yukabyun/ovl_En_Yukabyun_reloc.o" endseg beginseg name "ovl_En_Zf" include "build/src/overlays/actors/ovl_En_Zf/z_en_zf.o" - include "build/src/overlays/actors/ovl_En_Zf/ovl_En_Zf_reloc.o" endseg beginseg name "ovl_En_Zl1" include "build/src/overlays/actors/ovl_En_Zl1/z_en_zl1_cutscene_data.o" include "build/src/overlays/actors/ovl_En_Zl1/z_en_zl1.o" - include "build/src/overlays/actors/ovl_En_Zl1/ovl_En_Zl1_reloc.o" endseg beginseg name "ovl_En_Zl2" include "build/src/overlays/actors/ovl_En_Zl2/z_en_zl2.o" - include "build/src/overlays/actors/ovl_En_Zl2/ovl_En_Zl2_reloc.o" endseg beginseg name "ovl_En_Zl3" include "build/src/overlays/actors/ovl_En_Zl3/z_en_zl3.o" - include "build/src/overlays/actors/ovl_En_Zl3/ovl_En_Zl3_reloc.o" endseg beginseg name "ovl_En_Zl4" include "build/src/overlays/actors/ovl_En_Zl4/z_en_zl4.o" - include "build/src/overlays/actors/ovl_En_Zl4/ovl_En_Zl4_reloc.o" endseg beginseg name "ovl_En_Zo" include "build/src/overlays/actors/ovl_En_Zo/z_en_zo.o" - include "build/src/overlays/actors/ovl_En_Zo/ovl_En_Zo_reloc.o" endseg beginseg name "ovl_En_fHG" include "build/src/overlays/actors/ovl_En_fHG/z_en_fhg.o" - include "build/src/overlays/actors/ovl_En_fHG/ovl_En_fHG_reloc.o" endseg beginseg name "ovl_End_Title" include "build/src/overlays/actors/ovl_End_Title/z_end_title.o" - include "build/src/overlays/actors/ovl_End_Title/ovl_End_Title_reloc.o" endseg beginseg name "ovl_Fishing" include "build/src/overlays/actors/ovl_Fishing/z_fishing.o" - include "build/src/overlays/actors/ovl_Fishing/ovl_Fishing_reloc.o" endseg beginseg name "ovl_Item_B_Heart" include "build/src/overlays/actors/ovl_Item_B_Heart/z_item_b_heart.o" - include "build/src/overlays/actors/ovl_Item_B_Heart/ovl_Item_B_Heart_reloc.o" endseg beginseg name "ovl_Item_Etcetera" include "build/src/overlays/actors/ovl_Item_Etcetera/z_item_etcetera.o" - include "build/src/overlays/actors/ovl_Item_Etcetera/ovl_Item_Etcetera_reloc.o" endseg beginseg name "ovl_Item_Inbox" include "build/src/overlays/actors/ovl_Item_Inbox/z_item_inbox.o" - include "build/src/overlays/actors/ovl_Item_Inbox/ovl_Item_Inbox_reloc.o" endseg beginseg name "ovl_Item_Ocarina" include "build/src/overlays/actors/ovl_Item_Ocarina/z_item_ocarina.o" - include "build/src/overlays/actors/ovl_Item_Ocarina/ovl_Item_Ocarina_reloc.o" endseg beginseg name "ovl_Item_Shield" include "build/src/overlays/actors/ovl_Item_Shield/z_item_shield.o" - include "build/src/overlays/actors/ovl_Item_Shield/ovl_Item_Shield_reloc.o" endseg beginseg name "ovl_Magic_Dark" include "build/src/overlays/actors/ovl_Magic_Dark/z_magic_dark.o" - include "build/src/overlays/actors/ovl_Magic_Dark/ovl_Magic_Dark_reloc.o" endseg beginseg name "ovl_Magic_Fire" include "build/src/overlays/actors/ovl_Magic_Fire/z_magic_fire.o" - include "build/src/overlays/actors/ovl_Magic_Fire/ovl_Magic_Fire_reloc.o" endseg beginseg name "ovl_Magic_Wind" include "build/src/overlays/actors/ovl_Magic_Wind/z_magic_wind.o" - include "build/src/overlays/actors/ovl_Magic_Wind/ovl_Magic_Wind_reloc.o" endseg beginseg name "ovl_Mir_Ray" include "build/src/overlays/actors/ovl_Mir_Ray/z_mir_ray.o" - include "build/src/overlays/actors/ovl_Mir_Ray/ovl_Mir_Ray_reloc.o" endseg beginseg name "ovl_Obj_Bean" include "build/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.o" - include "build/src/overlays/actors/ovl_Obj_Bean/ovl_Obj_Bean_reloc.o" endseg beginseg name "ovl_Obj_Blockstop" include "build/src/overlays/actors/ovl_Obj_Blockstop/z_obj_blockstop.o" - include "build/src/overlays/actors/ovl_Obj_Blockstop/ovl_Obj_Blockstop_reloc.o" endseg beginseg name "ovl_Obj_Bombiwa" include "build/src/overlays/actors/ovl_Obj_Bombiwa/z_obj_bombiwa.o" - include "build/src/overlays/actors/ovl_Obj_Bombiwa/ovl_Obj_Bombiwa_reloc.o" endseg beginseg name "ovl_Obj_Comb" include "build/src/overlays/actors/ovl_Obj_Comb/z_obj_comb.o" - include "build/src/overlays/actors/ovl_Obj_Comb/ovl_Obj_Comb_reloc.o" endseg beginseg name "ovl_Obj_Dekujr" include "build/src/overlays/actors/ovl_Obj_Dekujr/z_obj_dekujr.o" - include "build/src/overlays/actors/ovl_Obj_Dekujr/ovl_Obj_Dekujr_reloc.o" endseg beginseg name "ovl_Obj_Elevator" include "build/src/overlays/actors/ovl_Obj_Elevator/z_obj_elevator.o" - include "build/src/overlays/actors/ovl_Obj_Elevator/ovl_Obj_Elevator_reloc.o" endseg beginseg name "ovl_Obj_Hamishi" include "build/src/overlays/actors/ovl_Obj_Hamishi/z_obj_hamishi.o" - include "build/src/overlays/actors/ovl_Obj_Hamishi/ovl_Obj_Hamishi_reloc.o" endseg beginseg name "ovl_Obj_Hana" include "build/src/overlays/actors/ovl_Obj_Hana/z_obj_hana.o" - include "build/src/overlays/actors/ovl_Obj_Hana/ovl_Obj_Hana_reloc.o" endseg beginseg name "ovl_Obj_Hsblock" include "build/src/overlays/actors/ovl_Obj_Hsblock/z_obj_hsblock.o" - include "build/src/overlays/actors/ovl_Obj_Hsblock/ovl_Obj_Hsblock_reloc.o" endseg beginseg name "ovl_Obj_Ice_Poly" include "build/src/overlays/actors/ovl_Obj_Ice_Poly/z_obj_ice_poly.o" - include "build/src/overlays/actors/ovl_Obj_Ice_Poly/ovl_Obj_Ice_Poly_reloc.o" endseg beginseg name "ovl_Obj_Kibako" include "build/src/overlays/actors/ovl_Obj_Kibako/z_obj_kibako.o" - include "build/src/overlays/actors/ovl_Obj_Kibako/ovl_Obj_Kibako_reloc.o" endseg beginseg name "ovl_Obj_Kibako2" include "build/src/overlays/actors/ovl_Obj_Kibako2/z_obj_kibako2.o" - include "build/src/overlays/actors/ovl_Obj_Kibako2/ovl_Obj_Kibako2_reloc.o" endseg beginseg name "ovl_Obj_Lift" include "build/src/overlays/actors/ovl_Obj_Lift/z_obj_lift.o" - include "build/src/overlays/actors/ovl_Obj_Lift/ovl_Obj_Lift_reloc.o" endseg beginseg name "ovl_Obj_Lightswitch" include "build/src/overlays/actors/ovl_Obj_Lightswitch/z_obj_lightswitch.o" - include "build/src/overlays/actors/ovl_Obj_Lightswitch/ovl_Obj_Lightswitch_reloc.o" endseg beginseg name "ovl_Obj_Makekinsuta" include "build/src/overlays/actors/ovl_Obj_Makekinsuta/z_obj_makekinsuta.o" - include "build/src/overlays/actors/ovl_Obj_Makekinsuta/ovl_Obj_Makekinsuta_reloc.o" endseg beginseg name "ovl_Obj_Makeoshihiki" include "build/src/overlays/actors/ovl_Obj_Makeoshihiki/z_obj_makeoshihiki.o" - include "build/src/overlays/actors/ovl_Obj_Makeoshihiki/ovl_Obj_Makeoshihiki_reloc.o" endseg beginseg name "ovl_Obj_Mure" include "build/src/overlays/actors/ovl_Obj_Mure/z_obj_mure.o" - include "build/src/overlays/actors/ovl_Obj_Mure/ovl_Obj_Mure_reloc.o" endseg beginseg name "ovl_Obj_Mure2" include "build/src/overlays/actors/ovl_Obj_Mure2/z_obj_mure2.o" - include "build/src/overlays/actors/ovl_Obj_Mure2/ovl_Obj_Mure2_reloc.o" endseg beginseg name "ovl_Obj_Mure3" include "build/src/overlays/actors/ovl_Obj_Mure3/z_obj_mure3.o" - include "build/src/overlays/actors/ovl_Obj_Mure3/ovl_Obj_Mure3_reloc.o" endseg beginseg name "ovl_Obj_Oshihiki" include "build/src/overlays/actors/ovl_Obj_Oshihiki/z_obj_oshihiki.o" - include "build/src/overlays/actors/ovl_Obj_Oshihiki/ovl_Obj_Oshihiki_reloc.o" endseg beginseg name "ovl_Obj_Roomtimer" include "build/src/overlays/actors/ovl_Obj_Roomtimer/z_obj_roomtimer.o" - include "build/src/overlays/actors/ovl_Obj_Roomtimer/ovl_Obj_Roomtimer_reloc.o" endseg beginseg name "ovl_Obj_Switch" include "build/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.o" - include "build/src/overlays/actors/ovl_Obj_Switch/ovl_Obj_Switch_reloc.o" endseg beginseg name "ovl_Obj_Syokudai" include "build/src/overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.o" - include "build/src/overlays/actors/ovl_Obj_Syokudai/ovl_Obj_Syokudai_reloc.o" endseg beginseg name "ovl_Obj_Timeblock" include "build/src/overlays/actors/ovl_Obj_Timeblock/z_obj_timeblock.o" - include "build/src/overlays/actors/ovl_Obj_Timeblock/ovl_Obj_Timeblock_reloc.o" endseg beginseg name "ovl_Obj_Tsubo" include "build/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.o" - include "build/src/overlays/actors/ovl_Obj_Tsubo/ovl_Obj_Tsubo_reloc.o" endseg beginseg name "ovl_Obj_Warp2block" include "build/src/overlays/actors/ovl_Obj_Warp2block/z_obj_warp2block.o" - include "build/src/overlays/actors/ovl_Obj_Warp2block/ovl_Obj_Warp2block_reloc.o" endseg beginseg name "ovl_Object_Kankyo" include "build/src/overlays/actors/ovl_Object_Kankyo/z_object_kankyo.o" - include "build/src/overlays/actors/ovl_Object_Kankyo/ovl_Object_Kankyo_reloc.o" endseg beginseg name "ovl_Oceff_Spot" include "build/src/overlays/actors/ovl_Oceff_Spot/z_oceff_spot.o" - include "build/src/overlays/actors/ovl_Oceff_Spot/ovl_Oceff_Spot_reloc.o" endseg beginseg name "ovl_Oceff_Storm" include "build/src/overlays/actors/ovl_Oceff_Storm/z_oceff_storm.o" - include "build/src/overlays/actors/ovl_Oceff_Storm/ovl_Oceff_Storm_reloc.o" endseg beginseg name "ovl_Oceff_Wipe" include "build/src/overlays/actors/ovl_Oceff_Wipe/z_oceff_wipe.o" - include "build/src/overlays/actors/ovl_Oceff_Wipe/ovl_Oceff_Wipe_reloc.o" endseg beginseg name "ovl_Oceff_Wipe2" include "build/src/overlays/actors/ovl_Oceff_Wipe2/z_oceff_wipe2.o" - include "build/src/overlays/actors/ovl_Oceff_Wipe2/ovl_Oceff_Wipe2_reloc.o" endseg beginseg name "ovl_Oceff_Wipe3" include "build/src/overlays/actors/ovl_Oceff_Wipe3/z_oceff_wipe3.o" - include "build/src/overlays/actors/ovl_Oceff_Wipe3/ovl_Oceff_Wipe3_reloc.o" endseg beginseg name "ovl_Oceff_Wipe4" include "build/src/overlays/actors/ovl_Oceff_Wipe4/z_oceff_wipe4.o" - include "build/src/overlays/actors/ovl_Oceff_Wipe4/ovl_Oceff_Wipe4_reloc.o" endseg beginseg name "ovl_Shot_Sun" include "build/src/overlays/actors/ovl_Shot_Sun/z_shot_sun.o" - include "build/src/overlays/actors/ovl_Shot_Sun/ovl_Shot_Sun_reloc.o" endseg beginseg diff --git a/tools/mkldscript.c b/tools/mkldscript.c index a2c992e3ae7..307d0660f39 100644 --- a/tools/mkldscript.c +++ b/tools/mkldscript.c @@ -1,298 +1,478 @@ -#include -#include -#include -#include #include #include #include - #include "spec.h" #include "util.h" -// Note: *SECTION ALIGNMENT* Object files built with a compiler such as GCC can, by default, use narrower -// alignment for sections size, compared to IDO padding sections to a 0x10-aligned size. -// To properly generate relocations relative to section starts, sections currently need to be aligned -// explicitly (to 0x10 currently, a narrower alignment might work), otherwise the linker does implicit alignment -// and inserts padding between the address indicated by section start symbols (such as *SegmentRoDataStart) and -// the actual aligned start of the section. -// With IDO, the padding of sections to an aligned size makes the section start at aligned addresses out of the box, -// so the explicit alignment has no further effect. - -struct Segment *g_segments; -int g_segmentsCount; - -static void write_ld_script(FILE *fout) +/** + * Note: *SECTION ALIGNMENT* + * + * Object files built with a compiler other than IDO such as GCC can, by default, use narrower alignment + * for sections than 0x10. Currently in order to generate correct relocations, each section must be + * aligned to 0x10, so we explicitly align sections in the linker script. Without this, the linker may + * implicitly align and insert padding between the section start symbol (such as *SegmentRoDataStart) + * and the actual aligned start of the section. + * This has no effect with IDO as sections are already properly aligned after compilation. + * + * We can't use the ALIGN and SUBALIGN expressions on the sections because they might impose a narrower + * alignment then the input sections require. We align sections manually instead. + */ +#define SUBALIGN 0x10 + +static void write_text_sections(FILE *f, const struct Segment *seg) { int i; - int j; - fputs("OUTPUT_ARCH (mips)\n\n" - "SECTIONS {\n" - " _RomSize = 0;\n" - " _RomStart = _RomSize;\n\n", - fout); + fprintf(f, "\t\t_%sSegmentTextStart = .;\n\n", seg->name); - for (i = 0; i < g_segmentsCount; i++) + for (i = 0; i < seg->includesCount; i++) { - const struct Segment *seg = &g_segments[i]; - - // align start of ROM segment - if (seg->fields & (1 << STMT_romalign)) - fprintf(fout, " _RomSize = (_RomSize + %i) & ~ %i;\n", seg->romalign - 1, seg->romalign - 1); + fprintf(f, "\t\t%s (.text)\n", seg->includes[i].fpath); - // initialized data (.text, .data, .rodata, .sdata) + if (seg->includes[i].linkerPadding != 0) + fprintf(f, "\t\t. += 0x%X;\n", seg->includes[i].linkerPadding); - // Increment the start of the section - //if (seg->fields & (1 << STMT_increment)) - //fprintf(fout, " . += 0x%08X;\n", seg->increment); - - fprintf(fout, " _%sSegmentRomStartTemp = _RomSize;\n" - " _%sSegmentRomStart = _%sSegmentRomStartTemp;\n" - " ..%s ", seg->name, seg->name, seg->name, seg->name); + fprintf(f, "\t\t. = ALIGN(0x%X);\n", SUBALIGN); + } - if (seg->fields & (1 << STMT_after)) - fprintf(fout, "_%sSegmentEnd ", seg->after); - else if (seg->fields & (1 << STMT_number)) - fprintf(fout, "0x%02X000000 ", seg->number); - else if (seg->fields & (1 << STMT_address)) - fprintf(fout, "0x%08X ", seg->address); + fprintf(f, + "\n" + "\t\t. = ALIGN(0x%X);\n" + "\t\t_%sSegmentTextEnd = .;\n" + "\t\t_%sSegmentTextSize = ABSOLUTE(_%sSegmentTextEnd - _%sSegmentTextStart);\n", + seg->align, + seg->name, + seg->name, seg->name, seg->name + ); +} - // (AT(_RomSize) isn't necessary, but adds useful "load address" lines to the map file) - fprintf(fout, ": AT(_RomSize)\n {\n" - " _%sSegmentStart = .;\n" - " . = ALIGN(0x10);\n" - " _%sSegmentTextStart = .;\n", - seg->name, seg->name); +static void write_data_sections(FILE *f, const struct Segment *seg) +{ + int i; - if (seg->fields & (1 << STMT_align)) - fprintf(fout, " . = ALIGN(0x%X);\n", seg->align); + fprintf(f, "\t\t_%sSegmentDataStart = .;\n\n", seg->name); - for (j = 0; j < seg->includesCount; j++) + for (i = 0; i < seg->includesCount; i++) + { + if (!seg->includes[i].dataWithRodata) { - fprintf(fout, " %s (.text)\n", seg->includes[j].fpath); - if (seg->includes[j].linkerPadding != 0) - fprintf(fout, " . += 0x%X;\n", seg->includes[j].linkerPadding); - fprintf(fout, " . = ALIGN(0x10);\n"); + fprintf(f, "\t\t%s (.data)\n", seg->includes[i].fpath); + fprintf(f, "\t\t. = ALIGN(0x%X);\n", SUBALIGN); } + } - fprintf(fout, " _%sSegmentTextEnd = .;\n", seg->name); + fprintf(f, + "\n" + "\t\t. = ALIGN(0x%X);\n" + "\t\t_%sSegmentDataEnd = .;\n" + "\t\t_%sSegmentDataSize = ABSOLUTE(_%sSegmentDataEnd - _%sSegmentDataStart);\n", + seg->align, + seg->name, + seg->name, seg->name, seg->name + ); +} - fprintf(fout, " _%sSegmentTextSize = ABSOLUTE( _%sSegmentTextEnd - _%sSegmentTextStart );\n", seg->name, seg->name, seg->name); +static void write_rodata_sections(FILE *f, const struct Segment *seg) +{ + int i; - fprintf(fout, " _%sSegmentDataStart = .;\n", seg->name); + fprintf(f, "\t\t_%sSegmentRoDataStart = .;\n\n", seg->name); - for (j = 0; j < seg->includesCount; j++) + for (i = 0; i < seg->includesCount; i++) + { + if (seg->includes[i].dataWithRodata) { - if (!seg->includes[j].dataWithRodata) - fprintf(fout, " %s (.data)\n" - " . = ALIGN(0x10);\n", seg->includes[j].fpath); + fprintf(f, "\t\t%s (.data)\n", seg->includes[i].fpath); + fprintf(f, "\t\t. = ALIGN(0x%X);\n", SUBALIGN); } + fprintf(f, "\t\t%s (.rodata)\n", seg->includes[i].fpath); + fprintf(f, "\t\t. = ALIGN(0x%X);\n", SUBALIGN); + fprintf(f, "\t\t%s (.rodata.str1.4)\n", seg->includes[i].fpath); + fprintf(f, "\t\t. = ALIGN(0x%X);\n", SUBALIGN); + fprintf(f, "\t\t%s (.rodata.cst4)\n", seg->includes[i].fpath); + fprintf(f, "\t\t. = ALIGN(0x%X);\n", SUBALIGN); + fprintf(f, "\t\t%s (.rodata.cst8)\n", seg->includes[i].fpath); + fprintf(f, "\t\t. = ALIGN(0x%X);\n", SUBALIGN); + } - /* - for (j = 0; j < seg->includesCount; j++) - fprintf(fout, " %s (.rodata)\n", seg->includes[j].fpath); + fprintf(f, + "\n" + "\t\t. = ALIGN(0x%X);\n" + "\t\t_%sSegmentRoDataEnd = .;\n" + "\t\t_%sSegmentRoDataSize = ABSOLUTE(_%sSegmentRoDataEnd - _%sSegmentRoDataStart);\n", + seg->align, + seg->name, + seg->name, seg->name, seg->name + ); +} - for (j = 0; j < seg->includesCount; j++) - fprintf(fout, " %s (.sdata)\n", seg->includes[j].fpath); - */ +static void write_bss_sections(FILE *f, const struct Segment *seg) +{ + int i; - //fprintf(fout, " . = ALIGN(0x10);\n"); - fprintf(fout, " _%sSegmentDataEnd = .;\n", seg->name); + fprintf(f, "\t\t_%sSegmentBssStart = .;\n\n", seg->name); - fprintf(fout, " _%sSegmentDataSize = ABSOLUTE( _%sSegmentDataEnd - _%sSegmentDataStart );\n", seg->name, seg->name, seg->name); + for (i = 0; i < seg->includesCount; i++) + { + fprintf(f, "\t\t%s (.sbss)\n", seg->includes[i].fpath); + fprintf(f, "\t\t. = ALIGN(0x%X);\n", SUBALIGN); + } + for (i = 0; i < seg->includesCount; i++) + { + fprintf(f, "\t\t%s (.scommon)\n", seg->includes[i].fpath); + fprintf(f, "\t\t. = ALIGN(0x%X);\n", SUBALIGN); + } + for (i = 0; i < seg->includesCount; i++) + { + fprintf(f, "\t\t%s (.bss)\n", seg->includes[i].fpath); + fprintf(f, "\t\t. = ALIGN(0x%X);\n", SUBALIGN); + } + for (i = 0; i < seg->includesCount; i++) + { + fprintf(f, "\t\t%s (COMMON)\n", seg->includes[i].fpath); + fprintf(f, "\t\t. = ALIGN(0x%X);\n", SUBALIGN); + } - fprintf(fout, " _%sSegmentRoDataStart = .;\n", seg->name); + fprintf(f, + "\n" + "\t\t. = ALIGN(0x%X);\n" + "\t\t_%sSegmentBssEnd = .;\n" + "\t\t_%sSegmentBssSize = ABSOLUTE(_%sSegmentBssEnd - _%sSegmentBssStart);\n", + seg->align, + seg->name, + seg->name, seg->name, seg->name + ); +} - for (j = 0; j < seg->includesCount; j++) - { - if (seg->includes[j].dataWithRodata) - fprintf(fout, " %s (.data)\n" - " . = ALIGN(0x10);\n", seg->includes[j].fpath); - - fprintf(fout, " %s (.rodata)\n" - " . = ALIGN(0x10);\n", seg->includes[j].fpath); - // Compilers other than IDO, such as GCC, produce different sections such as - // the ones named directly below. These sections do not contain values that - // need relocating, but we need to ensure that the base .rodata section - // always comes first. The reason this is important is due to relocs assuming - // the base of .rodata being the offset for the relocs and thus needs to remain - // the beginning of the entire rodata area in order to remain consistent. - // Inconsistencies will lead to various .rodata reloc crashes as a result of - // either missing relocs or wrong relocs. - fprintf(fout, " %s (.rodata.str1.4)\n" - " . = ALIGN(0x10);\n", seg->includes[j].fpath); - fprintf(fout, " %s (.rodata.cst4)\n" - " . = ALIGN(0x10);\n", seg->includes[j].fpath); - fprintf(fout, " %s (.rodata.cst8)\n" - " . = ALIGN(0x10);\n", seg->includes[j].fpath); - } +static void write_sections_finale(FILE *f) +{ + fprintf(f, + /* Debugging Sections */ + + "\t.reginfo : { *(.reginfo) }\n" + "\t.pdr : { *(.pdr) }\n" + "\n" + "\t.comment 0 : { *(.comment) }\n" + "\t.gnu.build.attributes 0 : { *(.gnu.build.attributes) }\n" + "\n" + /* DWARF debug sections */ + /* DWARF 1 */ + "\t.debug 0 : { *(.debug) }\n" + "\t.line 0 : { *(.line) }\n" + "\n" + /* GNU DWARF 1 extensions */ + "\t.debug_srcinfo 0 : { *(.debug_srcinfo) }\n" + "\t.debug_sfnames 0 : { *(.debug_sfnames) }\n" + "\n" + /* DWARF 1.1 and DWARF 2 */ + "\t.debug_aranges 0 : { *(.debug_aranges) }\n" + "\t.debug_pubnames 0 : { *(.debug_pubnames) }\n" + "\n" + /* DWARF 2 */ + "\t.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }\n" + "\t.debug_abbrev 0 : { *(.debug_abbrev) }\n" + "\t.debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) }\n" + "\t.debug_frame 0 : { *(.debug_frame) }\n" + "\t.debug_str 0 : { *(.debug_str) }\n" + "\t.debug_loc 0 : { *(.debug_loc) }\n" + "\t.debug_macinfo 0 : { *(.debug_macinfo) }\n" + "\n" + /* SGI/MIPS DWARF 2 extensions */ + "\t.debug_weaknames 0 : { *(.debug_weaknames) }\n" + "\t.debug_funcnames 0 : { *(.debug_funcnames) }\n" + "\t.debug_typenames 0 : { *(.debug_typenames) }\n" + "\t.debug_varnames 0 : { *(.debug_varnames) }\n" + "\n" + /* DWARF 3 */ + "\t.debug_pubtypes 0 : { *(.debug_pubtypes) }\n" + "\t.debug_ranges 0 : { *(.debug_ranges) }\n" + "\n" + /* DWARF extensions */ + "\t.debug_addr 0 : { *(.debug_addr) }\n" + "\t.debug_line_str 0 : { *(.debug_line_str) }\n" + "\t.debug_loclists 0 : { *(.debug_loclists) }\n" + "\t.debug_macro 0 : { *(.debug_macro) }\n" + "\t.debug_names 0 : { *(.debug_names) }\n" + "\t.debug_rnglists 0 : { *(.debug_rnglists) }\n" + "\t.debug_str_offsets 0 : { *(.debug_str_offsets) }\n" + "\t.debug_sup 0 : { *(.debug_sup) }\n" + "\n" + /* gnu attributes */ + "\t.gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }\n" + /* mdebug debug sections */ + "\t.mdebug 0 : { KEEP (*(.mdebug)) }\n" + "\t.mdebug.abi32 0 : { KEEP (*(.mdebug.abi32)) }\n" + "\n" + + /* Discard all other sections not mentioned above */ + + "\t/DISCARD/ :\n" + "\t{\n" + "\t\t*(*);\n" + "\t}\n" + ); +} - fprintf(fout, " _%sSegmentRoDataEnd = .;\n", seg->name); +static void write_segment_script(const char *dir, const struct Segment *seg) +{ + char fname[1024]; + FILE *f; - fprintf(fout, " _%sSegmentRoDataSize = ABSOLUTE( _%sSegmentRoDataEnd - _%sSegmentRoDataStart );\n", seg->name, seg->name, seg->name); + snprintf(fname, sizeof(fname), "%s/%s.ld", dir, seg->name); + f = fopen(fname, "w"); + if (f == NULL) + util_fatal_error("failed to open file '%s' for writing", fname); - fprintf(fout, " _%sSegmentSDataStart = .;\n", seg->name); + /* start */ + fprintf(f, + "OUTPUT_ARCH (mips)\n" + "\n" + "SECTIONS\n" + "{\n" + ); - for (j = 0; j < seg->includesCount; j++) - fprintf(fout, " %s (.sdata)\n" - " . = ALIGN(0x10);\n", seg->includes[j].fpath); + /* .text */ + fprintf(f, "\t.text :"); - fprintf(fout, " _%sSegmentSDataEnd = .;\n", seg->name); + if (seg->fields & (1 << STMT_align)) + fprintf(f, " ALIGN(0x%X)", seg->align); - fprintf(fout, " _%sSegmentOvlStart = .;\n", seg->name); + fprintf(f, "\n\t{\n"); + write_text_sections(f, seg); + fprintf(f, "\t}\n\n"); - for (j = 0; j < seg->includesCount; j++) - fprintf(fout, " %s (.ovl)\n", seg->includes[j].fpath); + /* .data */ + fprintf(f, "\t.data :"); - fprintf(fout, " _%sSegmentOvlEnd = .;\n", seg->name); + if (seg->fields & (1 << STMT_align)) + fprintf(f, " ALIGN(0x%X)", seg->align); - if (seg->fields & (1 << STMT_increment)) - fprintf(fout, " . += 0x%08X;\n", seg->increment); + fprintf(f, "\n\t{\n"); + write_data_sections(f, seg); + fprintf(f, "\t}\n\n"); - fputs(" }\n", fout); + /* .rodata */ + fprintf(f, "\t.rodata :"); - fprintf(fout, " _RomSize += ( _%sSegmentOvlEnd - _%sSegmentTextStart );\n", seg->name, seg->name); + if (seg->fields & (1 << STMT_align)) + fprintf(f, " ALIGN(0x%X)", seg->align); - fprintf(fout, " _%sSegmentRomEndTemp = _RomSize;\n" - "_%sSegmentRomEnd = _%sSegmentRomEndTemp;\n\n", - seg->name, seg->name, seg->name); + fprintf(f, "\n\t{\n"); + write_rodata_sections(f, seg); + fprintf(f, "\t}\n\n"); - // align end of ROM segment - if (seg->fields & (1 << STMT_romalign)) - fprintf(fout, " _RomSize = (_RomSize + %i) & ~ %i;\n", seg->romalign - 1, seg->romalign - 1); + /* .bss */ + fprintf(f, "\t.bss (NOLOAD) :"); - // uninitialized data (.sbss, .scommon, .bss, COMMON) - fprintf(fout, " ..%s.bss ADDR(..%s) + SIZEOF(..%s) (NOLOAD) :\n" - /*" ..%s.bss :\n"*/ - " {\n" - " . = ALIGN(0x10);\n" - " _%sSegmentBssStart = .;\n", - seg->name, seg->name, seg->name, seg->name); + if (seg->fields & (1 << STMT_align)) + fprintf(f, " ALIGN(0x%X)", seg->align); - if (seg->fields & (1 << STMT_align)) - fprintf(fout, " . = ALIGN(0x%X);\n", seg->align); + fprintf(f, "\n\t{\n"); + write_bss_sections(f, seg); + fprintf(f, "\t}\n\n"); - for (j = 0; j < seg->includesCount; j++) - fprintf(fout, " %s (.sbss)\n" - " . = ALIGN(0x10);\n", seg->includes[j].fpath); + write_sections_finale(f); + fprintf(f, "}\n"); - for (j = 0; j < seg->includesCount; j++) - fprintf(fout, " %s (.scommon)\n" - " . = ALIGN(0x10);\n", seg->includes[j].fpath); + fclose(f); +} - for (j = 0; j < seg->includesCount; j++) - fprintf(fout, " %s (.bss)\n" - " . = ALIGN(0x10);\n", seg->includes[j].fpath); +static void write_segment_deps(const char *dir, const struct Segment *seg) +{ + char fname[1024]; + FILE *f; + int i; - for (j = 0; j < seg->includesCount; j++) - fprintf(fout, " %s (COMMON)\n" - " . = ALIGN(0x10);\n", seg->includes[j].fpath); + snprintf(fname, sizeof(fname), "%s/%s.d", dir, seg->name); + f = fopen(fname, "w"); + if (f == NULL) + util_fatal_error("failed to open file '%s' for writing", fname); - fprintf(fout, " . = ALIGN(0x10);\n" - " _%sSegmentBssEnd = .;\n" - " _%sSegmentEnd = .;\n" - " }\n" - " _%sSegmentBssSize = ABSOLUTE( _%sSegmentBssEnd - _%sSegmentBssStart );\n\n", - seg->name, seg->name, seg->name, seg->name, seg->name); + for (i = 0; i < seg->includesCount; i++) + { + fprintf(f, + "%s/%s.o: %s\n", + dir, seg->name, seg->includes[i].fpath + ); + } - // Increment the end of the segment - //if (seg->fields & (1 << STMT_increment)) - //fprintf(fout, " . += 0x%08X;\n", seg->increment); + fclose(f); +} + +static void write_rom_script(const char *dir, const char *fname, const struct Segment *segments, int segment_count) +{ + FILE *f; + int i; - //fprintf(fout, " ..%s.ovl ADDR(..%s) + SIZEOF(..%s) :\n" - // /*" ..%s.bss :\n"*/ - // " {\n", - // seg->name, seg->name, seg->name); - //fprintf(fout, " _%sSegmentOvlStart = .;\n", seg->name); + f = fopen(fname, "w"); + if (f == NULL) + util_fatal_error("failed to open file '%s' for writing", fname); + + /* start */ + fprintf(f, + "OUTPUT_ARCH (mips)\n" + "\n" + "SECTIONS\n" + "{\n" + "\t_RomStart = 0;\n" + "\t_RomSize = 0;\n" + "\n" + ); + + for (i = 0; i < segment_count; i++) + { + const struct Segment *seg = &segments[i]; + bool isOverlay = strncmp(seg->name, "ovl_", 4) == 0; + + /* begin segment */ + if (seg->fields & (1 << STMT_romalign)) + fprintf(f, "\t_RomSize = ALIGN(_RomSize, %i);\n", seg->romalign); - //for (j = 0; j < seg->includesCount; j++) - // fprintf(fout, " %s (.ovl)\n", seg->includes[j].fpath); + fprintf(f, + "\t_%sSegmentRomStartTemp = _RomSize;\n" + "\t_%sSegmentRomStart = _%sSegmentRomStartTemp;\n", + seg->name, + seg->name, seg->name + ); - ////fprintf(fout, " . = ALIGN(0x10);\n"); + /* placement */ + fprintf(f, "\t_%sSegmentStart = ", seg->name); + if (seg->fields & (1 << STMT_after)) + fprintf(f, "_%sSegmentEnd", seg->after); + else if (seg->fields & (1 << STMT_number)) + fprintf(f, "0x%02X000000", seg->number); + else if (seg->fields & (1 << STMT_address)) + fprintf(f, "0x%08X", seg->address); + else + fprintf(f, "."); + fprintf(f, ";\n\n"); + + fprintf(f, "\t..%s _%sSegmentStart : AT(_%sSegmentRomStart)\n\t{\n", + seg->name, seg->name, seg->name); + + /* content sections */ + fprintf(f, "\t\t%s/%s.o (.text)\n", dir, seg->name); + fprintf(f, "\t\t%s/%s.o (.data)\n", dir, seg->name); + fprintf(f, "\t\t%s/%s.o (.rodata)\n", dir, seg->name); + + /* overlay relocation section */ + if (isOverlay) { + fprintf(f, + "\n" + "\t\t_%sSegmentOvlStart = .;\n" + "\t\t%s/%s.reloc.o (.ovl)\n" + "\t\t_%sSegmentOvlEnd = .;\n" + "\t\t_%sSegmentOvlSize = ABSOLUTE(_%sSegmentOvlEnd - _%sSegmentOvlStart);\n", + seg->name, + dir, seg->name, + seg->name, + seg->name, seg->name, seg->name + ); + } - //fprintf(fout, " _%sSegmentOvlEnd = .;\n", seg->name); + /* loadable sections done */ + if (seg->fields & (1 << STMT_increment)) + fprintf(f, "\n\t. += 0x%08X;\n", seg->increment); + + fprintf(f, + "\t}\n" + "\n" + "\t_%sSegmentRomSize = ABSOLUTE(_%sSegment%sEnd - _%sSegmentTextStart);\n" + "\t_RomSize += _%sSegmentRomSize;\n" + "\t_%sSegmentRomEndTemp = _RomSize;\n" + "\t_%sSegmentRomEnd = _%sSegmentRomEndTemp;\n", + seg->name, seg->name, isOverlay ? "Ovl": "RoData", seg->name, + seg->name, + seg->name, + seg->name, seg->name + ); - //fprintf(fout, "\n }\n"); + if (seg->fields & (1 << STMT_romalign)) + fprintf(f, "\t_RomSize = ALIGN(_RomSize, %i);\n", seg->romalign); + + /* .bss sections */ + fprintf(f, + "\n" + "\t..%s.bss (NOLOAD) :\n" + "\t{\n" + "\t\t%s/%s.o (.bss)\n" + "\t}\n", + seg->name, + dir, seg->name + ); + + /* end segment */ + fprintf(f, + "\n" + "\t_%sSegmentEnd = .;\n" + "\t_%sSegmentSize = ABSOLUTE(_%sSegmentEnd - _%sSegmentStart);\n" + "\n\n", + seg->name, + seg->name, seg->name, seg->name + ); } - fputs(" _RomEnd = _RomSize;\n\n", fout); - - // Debugging sections - fputs( - // mdebug debug sections - " .mdebug : { *(.mdebug) }" "\n" - " .mdebug.abi32 : { *(.mdebug.abi32) }" "\n" - // DWARF debug sections - // Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. - // DWARF 1 - " .debug 0 : { *(.debug) }" "\n" - " .line 0 : { *(.line) }" "\n" - // GNU DWARF 1 extensions - " .debug_srcinfo 0 : { *(.debug_srcinfo) }" "\n" - " .debug_sfnames 0 : { *(.debug_sfnames) }" "\n" - // DWARF 1.1 and DWARF 2 - " .debug_aranges 0 : { *(.debug_aranges) }" "\n" - " .debug_pubnames 0 : { *(.debug_pubnames) }" "\n" - // DWARF 2 - " .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }" "\n" - " .debug_abbrev 0 : { *(.debug_abbrev) }" "\n" - " .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) }" "\n" - " .debug_frame 0 : { *(.debug_frame) }" "\n" - " .debug_str 0 : { *(.debug_str) }" "\n" - " .debug_loc 0 : { *(.debug_loc) }" "\n" - " .debug_macinfo 0 : { *(.debug_macinfo) }" "\n" - // SGI/MIPS DWARF 2 extensions - " .debug_weaknames 0 : { *(.debug_weaknames) }" "\n" - " .debug_funcnames 0 : { *(.debug_funcnames) }" "\n" - " .debug_typenames 0 : { *(.debug_typenames) }" "\n" - " .debug_varnames 0 : { *(.debug_varnames) }" "\n" - // DWARF 3 - " .debug_pubtypes 0 : { *(.debug_pubtypes) }" "\n" - " .debug_ranges 0 : { *(.debug_ranges) }" "\n" - // DWARF Extension - " .debug_macro 0 : { *(.debug_macro) }" "\n" - " .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }" "\n", fout); - - // Discard all other sections not mentioned above - fputs(" /DISCARD/ :" "\n" - " {" "\n" - " *(*);" "\n" - " }" "\n", fout); - fputs("}\n", fout); + fprintf(f, "\t_RomEnd = _RomSize;\n\n"); + + /* end */ + write_sections_finale(f); + fprintf(f, "}\n"); + + fclose(f); } static void usage(const char *execname) { - fprintf(stderr, "Nintendo 64 linker script generation tool v0.03\n" - "usage: %s SPEC_FILE LD_SCRIPT\n" - "SPEC_FILE file describing the organization of object files into segments\n" - "LD_SCRIPT filename of output linker script\n", - execname); + fprintf(stderr, + "Ocarina of Time linker script generator\n" + "usage:\n" + "\t%s -s \n" + "\t\tWrite a linker script and dependencies for the specified segment\n" + "\t\n" + "\t%s -r \n" + "\t\tWrite a linker script for linking all the segments together\n", + execname, + execname + ); } int main(int argc, char **argv) { - FILE *ldout; void *spec; size_t size; - if (argc != 3) + if (argc == 5 && strcmp(argv[1], "-s") == 0) { - usage(argv[0]); - return 1; - } + struct Segment seg; - spec = util_read_whole_file(argv[1], &size); - parse_rom_spec(spec, &g_segments, &g_segmentsCount); + spec = util_read_whole_file(argv[2], &size); + if (!get_single_segment_by_name(&seg, spec, argv[4])) + util_fatal_error("failed to find segment '%s' in '%s'", argv[4], argv[2]); - ldout = fopen(argv[2], "w"); - if (ldout == NULL) - util_fatal_error("failed to open file '%s' for writing", argv[2]); - write_ld_script(ldout); - fclose(ldout); + write_segment_script(argv[3], &seg); + write_segment_deps(argv[3], &seg); - free_rom_spec(g_segments, g_segmentsCount); - free(spec); + free_single_segment_elements(&seg); + free(spec); + return EXIT_SUCCESS; + } + else if (argc == 5 && strcmp(argv[1], "-r") == 0) + { + struct Segment *segments = NULL; + int segment_count = 0; + + spec = util_read_whole_file(argv[2], &size); + parse_rom_spec(spec, &segments, &segment_count); + + write_rom_script(argv[3], argv[4], segments, segment_count); - return 0; + free_rom_spec(segments, segment_count); + free(spec); + return EXIT_SUCCESS; + } + else + { + usage(argv[0]); + return EXIT_FAILURE; + } }