diff --git a/Makefile b/Makefile index 19ebd2a682..1fcd8a66e5 100644 --- a/Makefile +++ b/Makefile @@ -78,6 +78,7 @@ MKLDSCRIPT := tools/mkldscript MKDMADATA := tools/mkdmadata ELF2ROM := tools/elf2rom ZAPD := tools/ZAPD/ZAPD.out +FADO := tools/fado/fado.elf OPTFLAGS := -O2 ASFLAGS := -march=vr4300 -32 -Iinclude @@ -118,9 +119,12 @@ 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' ) + # Automatic dependency files -# (Only asm_processor dependencies are handled for now) -DEP_FILES := $(O_FILES:.o=.asmproc.d) +# (Only asm_processor dependencies and reloc dependencies are handled for now) +DEP_FILES := $(O_FILES:.o=.asmproc.d) $(OVL_RELOC_FILES:.o=.d) + TEXTURE_FILES_PNG := $(foreach dir,$(ASSET_BIN_DIRS),$(wildcard $(dir)/*.png)) TEXTURE_FILES_JPG := $(foreach dir,$(ASSET_BIN_DIRS),$(wildcard $(dir)/*.jpg)) @@ -177,21 +181,6 @@ ifeq ($(COMPARE),1) @md5sum -c checksum.md5 endif -$(ROM): $(ELF) - $(ELF2ROM) -cic 6105 $< $@ - -$(ELF): $(TEXTURE_FILES_OUT) $(ASSET_FILES_OUT) $(O_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 $@ - -build/$(SPEC): $(SPEC) - $(CPP) $(CPPFLAGS) $< > $@ - -build/ldscript.txt: build/$(SPEC) - $(MKLDSCRIPT) $< $@ - -build/undefined_syms.txt: undefined_syms.txt - $(CPP) $(CPPFLAGS) $< > build/undefined_syms.txt - clean: $(RM) -r $(ROM) $(ELF) build @@ -211,14 +200,42 @@ setup: python3 extract_baserom.py python3 extract_assets.py -j$(N_THREADS) -resources: $(ASSET_FILES_OUT) test: $(ROM) $(EMULATOR) $(EMU_FLAGS) $< + .PHONY: all clean setup test distclean assetclean #### Various Recipes #### +$(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 $@ + +## 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. + +o_files: $(O_FILES) +$(OVL_RELOC_FILES): | o_files + +asset_files: $(TEXTURE_FILES_OUT) $(ASSET_FILES_OUT) +$(O_FILES): | asset_files + +.PHONY: o_files asset_files + + +build/$(SPEC): $(SPEC) + $(CPP) $(CPPFLAGS) $< > $@ + +build/ldscript.txt: build/$(SPEC) + $(MKLDSCRIPT) $< $@ + +build/undefined_syms.txt: undefined_syms.txt + $(CPP) $(CPPFLAGS) $< > $@ + build/baserom/%.o: baserom/% $(OBJCOPY) -I binary -O elf32-big $< $@ @@ -226,7 +243,7 @@ build/asm/%.o: asm/%.s $(AS) $(ASFLAGS) $< -o $@ build/data/%.o: data/%.s - iconv --from UTF-8 --to EUC-JP $< | $(AS) $(ASFLAGS) -o $@ + $(AS) $(ASFLAGS) $< -o $@ build/assets/text/%.enc.h: assets/text/%.h assets/text/charmap.txt python3 tools/msgenc.py assets/text/charmap.txt $< $@ @@ -246,13 +263,6 @@ build/dmadata_table_spec.h: build/$(SPEC) build/src/boot/z_std_dma.o: build/dmadata_table_spec.h build/src/dmadata/dmadata.o: build/dmadata_table_spec.h -build/src/overlays/%.o: src/overlays/%.c - $(CC) -c $(CFLAGS) $(MIPS_VERSION) $(OPTFLAGS) -o $@ $< - $(CC_CHECK) $< - $(ZAPD) bovl -eh -i $@ -cfg $< --outputpath $(@D)/$(notdir $(@D))_reloc.s - -test -f $(@D)/$(notdir $(@D))_reloc.s && $(AS) $(ASFLAGS) $(@D)/$(notdir $(@D))_reloc.s -o $(@D)/$(notdir $(@D))_reloc.o - @$(OBJDUMP) -d $@ > $(@:.o=.s) - build/src/%.o: src/%.c $(CC) -c $(CFLAGS) $(MIPS_VERSION) $(OPTFLAGS) -o $@ $< $(CC_CHECK) $< @@ -270,6 +280,10 @@ 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/src/overlays/actors/ovl_Arms_Hook/overlay.cfg b/src/overlays/actors/ovl_Arms_Hook/overlay.cfg deleted file mode 100644 index 6e225f98ab..0000000000 --- a/src/overlays/actors/ovl_Arms_Hook/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Arms_Hook -z_arms_hook.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Arrow_Fire/overlay.cfg b/src/overlays/actors/ovl_Arrow_Fire/overlay.cfg deleted file mode 100644 index b3ece32969..0000000000 --- a/src/overlays/actors/ovl_Arrow_Fire/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Arrow_Fire -z_arrow_fire.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Arrow_Ice/overlay.cfg b/src/overlays/actors/ovl_Arrow_Ice/overlay.cfg deleted file mode 100644 index 0a413dcd1d..0000000000 --- a/src/overlays/actors/ovl_Arrow_Ice/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Arrow_Ice -z_arrow_ice.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Arrow_Light/overlay.cfg b/src/overlays/actors/ovl_Arrow_Light/overlay.cfg deleted file mode 100644 index 2b09e9f3b1..0000000000 --- a/src/overlays/actors/ovl_Arrow_Light/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Arrow_Light -z_arrow_light.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Bdan_Objects/overlay.cfg b/src/overlays/actors/ovl_Bg_Bdan_Objects/overlay.cfg deleted file mode 100644 index 126b5ba4d0..0000000000 --- a/src/overlays/actors/ovl_Bg_Bdan_Objects/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Bdan_Objects -z_bg_bdan_objects.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Bdan_Switch/overlay.cfg b/src/overlays/actors/ovl_Bg_Bdan_Switch/overlay.cfg deleted file mode 100644 index 5a097108ab..0000000000 --- a/src/overlays/actors/ovl_Bg_Bdan_Switch/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Bdan_Switch -z_bg_bdan_switch.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Bom_Guard/overlay.cfg b/src/overlays/actors/ovl_Bg_Bom_Guard/overlay.cfg deleted file mode 100644 index 68cfc62302..0000000000 --- a/src/overlays/actors/ovl_Bg_Bom_Guard/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Bom_Guard -z_bg_bom_guard.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Bombwall/overlay.cfg b/src/overlays/actors/ovl_Bg_Bombwall/overlay.cfg deleted file mode 100644 index 0009b06348..0000000000 --- a/src/overlays/actors/ovl_Bg_Bombwall/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Bombwall -z_bg_bombwall.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Bowl_Wall/overlay.cfg b/src/overlays/actors/ovl_Bg_Bowl_Wall/overlay.cfg deleted file mode 100644 index 249acd8673..0000000000 --- a/src/overlays/actors/ovl_Bg_Bowl_Wall/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Bowl_Wall -z_bg_bowl_wall.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Breakwall/overlay.cfg b/src/overlays/actors/ovl_Bg_Breakwall/overlay.cfg deleted file mode 100644 index 4c4419cd48..0000000000 --- a/src/overlays/actors/ovl_Bg_Breakwall/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Breakwall -z_bg_breakwall.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Ddan_Jd/overlay.cfg b/src/overlays/actors/ovl_Bg_Ddan_Jd/overlay.cfg deleted file mode 100644 index 5b444cc995..0000000000 --- a/src/overlays/actors/ovl_Bg_Ddan_Jd/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Ddan_Jd -z_bg_ddan_jd.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Ddan_Kd/overlay.cfg b/src/overlays/actors/ovl_Bg_Ddan_Kd/overlay.cfg deleted file mode 100644 index 486e8ce746..0000000000 --- a/src/overlays/actors/ovl_Bg_Ddan_Kd/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Ddan_Kd -z_bg_ddan_kd.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Dodoago/overlay.cfg b/src/overlays/actors/ovl_Bg_Dodoago/overlay.cfg deleted file mode 100644 index cb9c58b96b..0000000000 --- a/src/overlays/actors/ovl_Bg_Dodoago/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Dodoago -z_bg_dodoago.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Dy_Yoseizo/overlay.cfg b/src/overlays/actors/ovl_Bg_Dy_Yoseizo/overlay.cfg deleted file mode 100644 index c508bc233e..0000000000 --- a/src/overlays/actors/ovl_Bg_Dy_Yoseizo/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Dy_Yoseizo -z_bg_dy_yoseizo.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Ganon_Otyuka/overlay.cfg b/src/overlays/actors/ovl_Bg_Ganon_Otyuka/overlay.cfg deleted file mode 100644 index 06bc4e6fbc..0000000000 --- a/src/overlays/actors/ovl_Bg_Ganon_Otyuka/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Ganon_Otyuka -z_bg_ganon_otyuka.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Gate_Shutter/overlay.cfg b/src/overlays/actors/ovl_Bg_Gate_Shutter/overlay.cfg deleted file mode 100644 index bd5d0dba50..0000000000 --- a/src/overlays/actors/ovl_Bg_Gate_Shutter/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Gate_Shutter -z_bg_gate_shutter.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Gjyo_Bridge/overlay.cfg b/src/overlays/actors/ovl_Bg_Gjyo_Bridge/overlay.cfg deleted file mode 100644 index 62476e48a6..0000000000 --- a/src/overlays/actors/ovl_Bg_Gjyo_Bridge/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Gjyo_Bridge -z_bg_gjyo_bridge.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Gnd_Darkmeiro/overlay.cfg b/src/overlays/actors/ovl_Bg_Gnd_Darkmeiro/overlay.cfg deleted file mode 100644 index cad0106a8e..0000000000 --- a/src/overlays/actors/ovl_Bg_Gnd_Darkmeiro/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Gnd_Darkmeiro -z_bg_gnd_darkmeiro.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Gnd_Firemeiro/overlay.cfg b/src/overlays/actors/ovl_Bg_Gnd_Firemeiro/overlay.cfg deleted file mode 100644 index fac2b2a2ed..0000000000 --- a/src/overlays/actors/ovl_Bg_Gnd_Firemeiro/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Gnd_Firemeiro -z_bg_gnd_firemeiro.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Gnd_Iceblock/overlay.cfg b/src/overlays/actors/ovl_Bg_Gnd_Iceblock/overlay.cfg deleted file mode 100644 index 059db587a2..0000000000 --- a/src/overlays/actors/ovl_Bg_Gnd_Iceblock/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Gnd_Iceblock -z_bg_gnd_iceblock.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Gnd_Nisekabe/overlay.cfg b/src/overlays/actors/ovl_Bg_Gnd_Nisekabe/overlay.cfg deleted file mode 100644 index ceed691674..0000000000 --- a/src/overlays/actors/ovl_Bg_Gnd_Nisekabe/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Gnd_Nisekabe -z_bg_gnd_nisekabe.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Gnd_Soulmeiro/overlay.cfg b/src/overlays/actors/ovl_Bg_Gnd_Soulmeiro/overlay.cfg deleted file mode 100644 index 96d34d9e29..0000000000 --- a/src/overlays/actors/ovl_Bg_Gnd_Soulmeiro/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Gnd_Soulmeiro -z_bg_gnd_soulmeiro.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Haka/overlay.cfg b/src/overlays/actors/ovl_Bg_Haka/overlay.cfg deleted file mode 100644 index 9f3509be52..0000000000 --- a/src/overlays/actors/ovl_Bg_Haka/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Haka -z_bg_haka.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Haka_Gate/overlay.cfg b/src/overlays/actors/ovl_Bg_Haka_Gate/overlay.cfg deleted file mode 100644 index f01f314ff5..0000000000 --- a/src/overlays/actors/ovl_Bg_Haka_Gate/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Haka_Gate -z_bg_haka_gate.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Haka_Huta/overlay.cfg b/src/overlays/actors/ovl_Bg_Haka_Huta/overlay.cfg deleted file mode 100644 index cbfd9ac79a..0000000000 --- a/src/overlays/actors/ovl_Bg_Haka_Huta/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Haka_Huta -z_bg_haka_huta.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Haka_Megane/overlay.cfg b/src/overlays/actors/ovl_Bg_Haka_Megane/overlay.cfg deleted file mode 100644 index 715f5833f4..0000000000 --- a/src/overlays/actors/ovl_Bg_Haka_Megane/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Haka_Megane -z_bg_haka_megane.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Haka_MeganeBG/overlay.cfg b/src/overlays/actors/ovl_Bg_Haka_MeganeBG/overlay.cfg deleted file mode 100644 index 481fdc4e9b..0000000000 --- a/src/overlays/actors/ovl_Bg_Haka_MeganeBG/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Haka_MeganeBG -z_bg_haka_meganebg.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Haka_Sgami/overlay.cfg b/src/overlays/actors/ovl_Bg_Haka_Sgami/overlay.cfg deleted file mode 100644 index f8fffb6436..0000000000 --- a/src/overlays/actors/ovl_Bg_Haka_Sgami/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Haka_Sgami -z_bg_haka_sgami.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Haka_Ship/overlay.cfg b/src/overlays/actors/ovl_Bg_Haka_Ship/overlay.cfg deleted file mode 100644 index 4a6fca3366..0000000000 --- a/src/overlays/actors/ovl_Bg_Haka_Ship/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Haka_Ship -z_bg_haka_ship.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Haka_Trap/overlay.cfg b/src/overlays/actors/ovl_Bg_Haka_Trap/overlay.cfg deleted file mode 100644 index 3f3e64679d..0000000000 --- a/src/overlays/actors/ovl_Bg_Haka_Trap/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Haka_Trap -z_bg_haka_trap.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Haka_Tubo/overlay.cfg b/src/overlays/actors/ovl_Bg_Haka_Tubo/overlay.cfg deleted file mode 100644 index 45c7bd8d39..0000000000 --- a/src/overlays/actors/ovl_Bg_Haka_Tubo/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Haka_Tubo -z_bg_haka_tubo.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Haka_Water/overlay.cfg b/src/overlays/actors/ovl_Bg_Haka_Water/overlay.cfg deleted file mode 100644 index 7ead6d3a36..0000000000 --- a/src/overlays/actors/ovl_Bg_Haka_Water/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Haka_Water -z_bg_haka_water.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Haka_Zou/overlay.cfg b/src/overlays/actors/ovl_Bg_Haka_Zou/overlay.cfg deleted file mode 100644 index a421cd377d..0000000000 --- a/src/overlays/actors/ovl_Bg_Haka_Zou/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Haka_Zou -z_bg_haka_zou.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Heavy_Block/overlay.cfg b/src/overlays/actors/ovl_Bg_Heavy_Block/overlay.cfg deleted file mode 100644 index 869fe4b863..0000000000 --- a/src/overlays/actors/ovl_Bg_Heavy_Block/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Heavy_Block -z_bg_heavy_block.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Hidan_Curtain/overlay.cfg b/src/overlays/actors/ovl_Bg_Hidan_Curtain/overlay.cfg deleted file mode 100644 index 97c36563f7..0000000000 --- a/src/overlays/actors/ovl_Bg_Hidan_Curtain/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Hidan_Curtain -z_bg_hidan_curtain.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Hidan_Dalm/overlay.cfg b/src/overlays/actors/ovl_Bg_Hidan_Dalm/overlay.cfg deleted file mode 100644 index b4a46cd82e..0000000000 --- a/src/overlays/actors/ovl_Bg_Hidan_Dalm/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Hidan_Dalm -z_bg_hidan_dalm.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Hidan_Firewall/overlay.cfg b/src/overlays/actors/ovl_Bg_Hidan_Firewall/overlay.cfg deleted file mode 100644 index 2a2df67157..0000000000 --- a/src/overlays/actors/ovl_Bg_Hidan_Firewall/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Hidan_Firewall -z_bg_hidan_firewall.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Hidan_Fslift/overlay.cfg b/src/overlays/actors/ovl_Bg_Hidan_Fslift/overlay.cfg deleted file mode 100644 index 49746f8dbe..0000000000 --- a/src/overlays/actors/ovl_Bg_Hidan_Fslift/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Hidan_Fslift -z_bg_hidan_fslift.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Hidan_Fwbig/overlay.cfg b/src/overlays/actors/ovl_Bg_Hidan_Fwbig/overlay.cfg deleted file mode 100644 index da0600fa1f..0000000000 --- a/src/overlays/actors/ovl_Bg_Hidan_Fwbig/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Hidan_Fwbig -z_bg_hidan_fwbig.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Hidan_Hamstep/overlay.cfg b/src/overlays/actors/ovl_Bg_Hidan_Hamstep/overlay.cfg deleted file mode 100644 index 448282ee08..0000000000 --- a/src/overlays/actors/ovl_Bg_Hidan_Hamstep/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Hidan_Hamstep -z_bg_hidan_hamstep.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Hidan_Hrock/overlay.cfg b/src/overlays/actors/ovl_Bg_Hidan_Hrock/overlay.cfg deleted file mode 100644 index 8eed67d670..0000000000 --- a/src/overlays/actors/ovl_Bg_Hidan_Hrock/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Hidan_Hrock -z_bg_hidan_hrock.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Hidan_Kousi/overlay.cfg b/src/overlays/actors/ovl_Bg_Hidan_Kousi/overlay.cfg deleted file mode 100644 index a115958b7d..0000000000 --- a/src/overlays/actors/ovl_Bg_Hidan_Kousi/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Hidan_Kousi -z_bg_hidan_kousi.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Hidan_Kowarerukabe/overlay.cfg b/src/overlays/actors/ovl_Bg_Hidan_Kowarerukabe/overlay.cfg deleted file mode 100644 index 8eedc03271..0000000000 --- a/src/overlays/actors/ovl_Bg_Hidan_Kowarerukabe/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Hidan_Kowarerukabe -z_bg_hidan_kowarerukabe.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Hidan_Rock/overlay.cfg b/src/overlays/actors/ovl_Bg_Hidan_Rock/overlay.cfg deleted file mode 100644 index 948cd360bd..0000000000 --- a/src/overlays/actors/ovl_Bg_Hidan_Rock/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Hidan_Rock -z_bg_hidan_rock.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Hidan_Rsekizou/overlay.cfg b/src/overlays/actors/ovl_Bg_Hidan_Rsekizou/overlay.cfg deleted file mode 100644 index 61cfb3882e..0000000000 --- a/src/overlays/actors/ovl_Bg_Hidan_Rsekizou/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Hidan_Rsekizou -z_bg_hidan_rsekizou.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Hidan_Sekizou/overlay.cfg b/src/overlays/actors/ovl_Bg_Hidan_Sekizou/overlay.cfg deleted file mode 100644 index b49271060a..0000000000 --- a/src/overlays/actors/ovl_Bg_Hidan_Sekizou/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Hidan_Sekizou -z_bg_hidan_sekizou.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Hidan_Sima/overlay.cfg b/src/overlays/actors/ovl_Bg_Hidan_Sima/overlay.cfg deleted file mode 100644 index f71a8d4acd..0000000000 --- a/src/overlays/actors/ovl_Bg_Hidan_Sima/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Hidan_Sima -z_bg_hidan_sima.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Hidan_Syoku/overlay.cfg b/src/overlays/actors/ovl_Bg_Hidan_Syoku/overlay.cfg deleted file mode 100644 index dc42e709e6..0000000000 --- a/src/overlays/actors/ovl_Bg_Hidan_Syoku/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Hidan_Syoku -z_bg_hidan_syoku.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Ice_Objects/overlay.cfg b/src/overlays/actors/ovl_Bg_Ice_Objects/overlay.cfg deleted file mode 100644 index ca0747641f..0000000000 --- a/src/overlays/actors/ovl_Bg_Ice_Objects/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Ice_Objects -z_bg_ice_objects.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Ice_Shelter/overlay.cfg b/src/overlays/actors/ovl_Bg_Ice_Shelter/overlay.cfg deleted file mode 100644 index 69ffbf1e88..0000000000 --- a/src/overlays/actors/ovl_Bg_Ice_Shelter/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Ice_Shelter -z_bg_ice_shelter.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Ice_Shutter/overlay.cfg b/src/overlays/actors/ovl_Bg_Ice_Shutter/overlay.cfg deleted file mode 100644 index c693f3c122..0000000000 --- a/src/overlays/actors/ovl_Bg_Ice_Shutter/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Ice_Shutter -z_bg_ice_shutter.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Ice_Turara/overlay.cfg b/src/overlays/actors/ovl_Bg_Ice_Turara/overlay.cfg deleted file mode 100644 index 97dba0c6da..0000000000 --- a/src/overlays/actors/ovl_Bg_Ice_Turara/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Ice_Turara -z_bg_ice_turara.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Ingate/overlay.cfg b/src/overlays/actors/ovl_Bg_Ingate/overlay.cfg deleted file mode 100644 index a9ba89ae8e..0000000000 --- a/src/overlays/actors/ovl_Bg_Ingate/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Ingate -z_bg_ingate.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Jya_1flift/overlay.cfg b/src/overlays/actors/ovl_Bg_Jya_1flift/overlay.cfg deleted file mode 100644 index 1ec3221ad5..0000000000 --- a/src/overlays/actors/ovl_Bg_Jya_1flift/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Jya_1flift -z_bg_jya_1flift.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Jya_Amishutter/overlay.cfg b/src/overlays/actors/ovl_Bg_Jya_Amishutter/overlay.cfg deleted file mode 100644 index c361a381c6..0000000000 --- a/src/overlays/actors/ovl_Bg_Jya_Amishutter/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Jya_Amishutter -z_bg_jya_amishutter.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Jya_Bigmirror/overlay.cfg b/src/overlays/actors/ovl_Bg_Jya_Bigmirror/overlay.cfg deleted file mode 100644 index 5f9eb38a71..0000000000 --- a/src/overlays/actors/ovl_Bg_Jya_Bigmirror/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Jya_Bigmirror -z_bg_jya_bigmirror.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Jya_Block/overlay.cfg b/src/overlays/actors/ovl_Bg_Jya_Block/overlay.cfg deleted file mode 100644 index c2fe5642b7..0000000000 --- a/src/overlays/actors/ovl_Bg_Jya_Block/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Jya_Block -z_bg_jya_block.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Jya_Bombchuiwa/overlay.cfg b/src/overlays/actors/ovl_Bg_Jya_Bombchuiwa/overlay.cfg deleted file mode 100644 index 932f49cd2a..0000000000 --- a/src/overlays/actors/ovl_Bg_Jya_Bombchuiwa/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Jya_Bombchuiwa -z_bg_jya_bombchuiwa.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Jya_Bombiwa/overlay.cfg b/src/overlays/actors/ovl_Bg_Jya_Bombiwa/overlay.cfg deleted file mode 100644 index 3b3289acc2..0000000000 --- a/src/overlays/actors/ovl_Bg_Jya_Bombiwa/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Jya_Bombiwa -z_bg_jya_bombiwa.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Jya_Cobra/overlay.cfg b/src/overlays/actors/ovl_Bg_Jya_Cobra/overlay.cfg deleted file mode 100644 index 634d788a81..0000000000 --- a/src/overlays/actors/ovl_Bg_Jya_Cobra/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Jya_Cobra -z_bg_jya_cobra.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Jya_Goroiwa/overlay.cfg b/src/overlays/actors/ovl_Bg_Jya_Goroiwa/overlay.cfg deleted file mode 100644 index fe70455dbd..0000000000 --- a/src/overlays/actors/ovl_Bg_Jya_Goroiwa/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Jya_Goroiwa -z_bg_jya_goroiwa.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Jya_Haheniron/overlay.cfg b/src/overlays/actors/ovl_Bg_Jya_Haheniron/overlay.cfg deleted file mode 100644 index d8ac254f29..0000000000 --- a/src/overlays/actors/ovl_Bg_Jya_Haheniron/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Jya_Haheniron -z_bg_jya_haheniron.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Jya_Ironobj/overlay.cfg b/src/overlays/actors/ovl_Bg_Jya_Ironobj/overlay.cfg deleted file mode 100644 index aaa48b583e..0000000000 --- a/src/overlays/actors/ovl_Bg_Jya_Ironobj/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Jya_Ironobj -z_bg_jya_ironobj.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Jya_Kanaami/overlay.cfg b/src/overlays/actors/ovl_Bg_Jya_Kanaami/overlay.cfg deleted file mode 100644 index 8ead8384f2..0000000000 --- a/src/overlays/actors/ovl_Bg_Jya_Kanaami/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Jya_Kanaami -z_bg_jya_kanaami.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Jya_Lift/overlay.cfg b/src/overlays/actors/ovl_Bg_Jya_Lift/overlay.cfg deleted file mode 100644 index 126a0c4fd2..0000000000 --- a/src/overlays/actors/ovl_Bg_Jya_Lift/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Jya_Lift -z_bg_jya_lift.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Jya_Megami/overlay.cfg b/src/overlays/actors/ovl_Bg_Jya_Megami/overlay.cfg deleted file mode 100644 index 79c6bfe20f..0000000000 --- a/src/overlays/actors/ovl_Bg_Jya_Megami/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Jya_Megami -z_bg_jya_megami.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Jya_Zurerukabe/overlay.cfg b/src/overlays/actors/ovl_Bg_Jya_Zurerukabe/overlay.cfg deleted file mode 100644 index 1c2a8ef95f..0000000000 --- a/src/overlays/actors/ovl_Bg_Jya_Zurerukabe/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Jya_Zurerukabe -z_bg_jya_zurerukabe.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Menkuri_Eye/overlay.cfg b/src/overlays/actors/ovl_Bg_Menkuri_Eye/overlay.cfg deleted file mode 100644 index c21667f9ca..0000000000 --- a/src/overlays/actors/ovl_Bg_Menkuri_Eye/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Menkuri_Eye -z_bg_menkuri_eye.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Menkuri_Kaiten/overlay.cfg b/src/overlays/actors/ovl_Bg_Menkuri_Kaiten/overlay.cfg deleted file mode 100644 index d8670e9571..0000000000 --- a/src/overlays/actors/ovl_Bg_Menkuri_Kaiten/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Menkuri_Kaiten -z_bg_menkuri_kaiten.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Menkuri_Nisekabe/overlay.cfg b/src/overlays/actors/ovl_Bg_Menkuri_Nisekabe/overlay.cfg deleted file mode 100644 index 9f7b25fae5..0000000000 --- a/src/overlays/actors/ovl_Bg_Menkuri_Nisekabe/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Menkuri_Nisekabe -z_bg_menkuri_nisekabe.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Mizu_Bwall/overlay.cfg b/src/overlays/actors/ovl_Bg_Mizu_Bwall/overlay.cfg deleted file mode 100644 index 9ecaada6f8..0000000000 --- a/src/overlays/actors/ovl_Bg_Mizu_Bwall/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Mizu_Bwall -z_bg_mizu_bwall.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Mizu_Movebg/overlay.cfg b/src/overlays/actors/ovl_Bg_Mizu_Movebg/overlay.cfg deleted file mode 100644 index 2c9b956b51..0000000000 --- a/src/overlays/actors/ovl_Bg_Mizu_Movebg/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Mizu_Movebg -z_bg_mizu_movebg.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Mizu_Shutter/overlay.cfg b/src/overlays/actors/ovl_Bg_Mizu_Shutter/overlay.cfg deleted file mode 100644 index a0016b23c0..0000000000 --- a/src/overlays/actors/ovl_Bg_Mizu_Shutter/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Mizu_Shutter -z_bg_mizu_shutter.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Mizu_Uzu/overlay.cfg b/src/overlays/actors/ovl_Bg_Mizu_Uzu/overlay.cfg deleted file mode 100644 index d1bd34f4bf..0000000000 --- a/src/overlays/actors/ovl_Bg_Mizu_Uzu/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Mizu_Uzu -z_bg_mizu_uzu.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Mizu_Water/overlay.cfg b/src/overlays/actors/ovl_Bg_Mizu_Water/overlay.cfg deleted file mode 100644 index 35d3bece4b..0000000000 --- a/src/overlays/actors/ovl_Bg_Mizu_Water/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Mizu_Water -z_bg_mizu_water.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Mjin/overlay.cfg b/src/overlays/actors/ovl_Bg_Mjin/overlay.cfg deleted file mode 100644 index 3fbab2bbb5..0000000000 --- a/src/overlays/actors/ovl_Bg_Mjin/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Mjin -z_bg_mjin.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Mori_Bigst/overlay.cfg b/src/overlays/actors/ovl_Bg_Mori_Bigst/overlay.cfg deleted file mode 100644 index 13b2d2e058..0000000000 --- a/src/overlays/actors/ovl_Bg_Mori_Bigst/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Mori_Bigst -z_bg_mori_bigst.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Mori_Elevator/overlay.cfg b/src/overlays/actors/ovl_Bg_Mori_Elevator/overlay.cfg deleted file mode 100644 index 5cb4dff123..0000000000 --- a/src/overlays/actors/ovl_Bg_Mori_Elevator/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Mori_Elevator -z_bg_mori_elevator.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Mori_Hashigo/overlay.cfg b/src/overlays/actors/ovl_Bg_Mori_Hashigo/overlay.cfg deleted file mode 100644 index 589e0080f3..0000000000 --- a/src/overlays/actors/ovl_Bg_Mori_Hashigo/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Mori_Hashigo -z_bg_mori_hashigo.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Mori_Hashira4/overlay.cfg b/src/overlays/actors/ovl_Bg_Mori_Hashira4/overlay.cfg deleted file mode 100644 index cd62293654..0000000000 --- a/src/overlays/actors/ovl_Bg_Mori_Hashira4/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Mori_Hashira4 -z_bg_mori_hashira4.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Mori_Hineri/overlay.cfg b/src/overlays/actors/ovl_Bg_Mori_Hineri/overlay.cfg deleted file mode 100644 index 2649411d9d..0000000000 --- a/src/overlays/actors/ovl_Bg_Mori_Hineri/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Mori_Hineri -z_bg_mori_hineri.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Mori_Idomizu/overlay.cfg b/src/overlays/actors/ovl_Bg_Mori_Idomizu/overlay.cfg deleted file mode 100644 index 8b6b01ef40..0000000000 --- a/src/overlays/actors/ovl_Bg_Mori_Idomizu/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Mori_Idomizu -z_bg_mori_idomizu.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/overlay.cfg b/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/overlay.cfg deleted file mode 100644 index 0794da7f74..0000000000 --- a/src/overlays/actors/ovl_Bg_Mori_Kaitenkabe/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Mori_Kaitenkabe -z_bg_mori_kaitenkabe.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Mori_Rakkatenjo/overlay.cfg b/src/overlays/actors/ovl_Bg_Mori_Rakkatenjo/overlay.cfg deleted file mode 100644 index 1bb5ef8213..0000000000 --- a/src/overlays/actors/ovl_Bg_Mori_Rakkatenjo/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Mori_Rakkatenjo -z_bg_mori_rakkatenjo.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Po_Event/overlay.cfg b/src/overlays/actors/ovl_Bg_Po_Event/overlay.cfg deleted file mode 100644 index 4f10897dec..0000000000 --- a/src/overlays/actors/ovl_Bg_Po_Event/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Po_Event -z_bg_po_event.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Po_Syokudai/overlay.cfg b/src/overlays/actors/ovl_Bg_Po_Syokudai/overlay.cfg deleted file mode 100644 index 71126110e8..0000000000 --- a/src/overlays/actors/ovl_Bg_Po_Syokudai/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Po_Syokudai -z_bg_po_syokudai.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Pushbox/overlay.cfg b/src/overlays/actors/ovl_Bg_Pushbox/overlay.cfg deleted file mode 100644 index bbc85e3be2..0000000000 --- a/src/overlays/actors/ovl_Bg_Pushbox/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Pushbox -z_bg_pushbox.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Relay_Objects/overlay.cfg b/src/overlays/actors/ovl_Bg_Relay_Objects/overlay.cfg deleted file mode 100644 index 36f5ce748c..0000000000 --- a/src/overlays/actors/ovl_Bg_Relay_Objects/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Relay_Objects -z_bg_relay_objects.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Spot00_Break/overlay.cfg b/src/overlays/actors/ovl_Bg_Spot00_Break/overlay.cfg deleted file mode 100644 index 85137acb5e..0000000000 --- a/src/overlays/actors/ovl_Bg_Spot00_Break/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Spot00_Break -z_bg_spot00_break.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Spot00_Hanebasi/overlay.cfg b/src/overlays/actors/ovl_Bg_Spot00_Hanebasi/overlay.cfg deleted file mode 100644 index 7b63fe87e2..0000000000 --- a/src/overlays/actors/ovl_Bg_Spot00_Hanebasi/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Spot00_Hanebasi -z_bg_spot00_hanebasi.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Spot01_Fusya/overlay.cfg b/src/overlays/actors/ovl_Bg_Spot01_Fusya/overlay.cfg deleted file mode 100644 index b78ff61a95..0000000000 --- a/src/overlays/actors/ovl_Bg_Spot01_Fusya/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Spot01_Fusya -z_bg_spot01_fusya.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Spot01_Idohashira/overlay.cfg b/src/overlays/actors/ovl_Bg_Spot01_Idohashira/overlay.cfg deleted file mode 100644 index 2a8c4bcb17..0000000000 --- a/src/overlays/actors/ovl_Bg_Spot01_Idohashira/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Spot01_Idohashira -z_bg_spot01_idohashira.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Spot01_Idomizu/overlay.cfg b/src/overlays/actors/ovl_Bg_Spot01_Idomizu/overlay.cfg deleted file mode 100644 index 82f62f8ce3..0000000000 --- a/src/overlays/actors/ovl_Bg_Spot01_Idomizu/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Spot01_Idomizu -z_bg_spot01_idomizu.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Spot01_Idosoko/overlay.cfg b/src/overlays/actors/ovl_Bg_Spot01_Idosoko/overlay.cfg deleted file mode 100644 index 7507e9516d..0000000000 --- a/src/overlays/actors/ovl_Bg_Spot01_Idosoko/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Spot01_Idosoko -z_bg_spot01_idosoko.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Spot01_Objects2/overlay.cfg b/src/overlays/actors/ovl_Bg_Spot01_Objects2/overlay.cfg deleted file mode 100644 index 88d2050368..0000000000 --- a/src/overlays/actors/ovl_Bg_Spot01_Objects2/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Spot01_Objects2 -z_bg_spot01_objects2.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Spot02_Objects/overlay.cfg b/src/overlays/actors/ovl_Bg_Spot02_Objects/overlay.cfg deleted file mode 100644 index 23f73c190d..0000000000 --- a/src/overlays/actors/ovl_Bg_Spot02_Objects/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Spot02_Objects -z_bg_spot02_objects.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Spot03_Taki/overlay.cfg b/src/overlays/actors/ovl_Bg_Spot03_Taki/overlay.cfg deleted file mode 100644 index e84765a4fb..0000000000 --- a/src/overlays/actors/ovl_Bg_Spot03_Taki/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Spot03_Taki -z_bg_spot03_taki.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Spot05_Soko/overlay.cfg b/src/overlays/actors/ovl_Bg_Spot05_Soko/overlay.cfg deleted file mode 100644 index 3cd51f2bed..0000000000 --- a/src/overlays/actors/ovl_Bg_Spot05_Soko/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Spot05_Soko -z_bg_spot05_soko.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Spot06_Objects/overlay.cfg b/src/overlays/actors/ovl_Bg_Spot06_Objects/overlay.cfg deleted file mode 100644 index 9fdeda0a16..0000000000 --- a/src/overlays/actors/ovl_Bg_Spot06_Objects/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Spot06_Objects -z_bg_spot06_objects.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Spot07_Taki/overlay.cfg b/src/overlays/actors/ovl_Bg_Spot07_Taki/overlay.cfg deleted file mode 100644 index b0d5c5f8c5..0000000000 --- a/src/overlays/actors/ovl_Bg_Spot07_Taki/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Spot07_Taki -z_bg_spot07_taki.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Spot08_Bakudankabe/overlay.cfg b/src/overlays/actors/ovl_Bg_Spot08_Bakudankabe/overlay.cfg deleted file mode 100644 index a1cf09abee..0000000000 --- a/src/overlays/actors/ovl_Bg_Spot08_Bakudankabe/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Spot08_Bakudankabe -z_bg_spot08_bakudankabe.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Spot08_Iceblock/overlay.cfg b/src/overlays/actors/ovl_Bg_Spot08_Iceblock/overlay.cfg deleted file mode 100644 index e19a49807f..0000000000 --- a/src/overlays/actors/ovl_Bg_Spot08_Iceblock/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Spot08_Iceblock -z_bg_spot08_iceblock.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Spot09_Obj/overlay.cfg b/src/overlays/actors/ovl_Bg_Spot09_Obj/overlay.cfg deleted file mode 100644 index 0495042cf5..0000000000 --- a/src/overlays/actors/ovl_Bg_Spot09_Obj/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Spot09_Obj -z_bg_spot09_obj.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Spot11_Bakudankabe/overlay.cfg b/src/overlays/actors/ovl_Bg_Spot11_Bakudankabe/overlay.cfg deleted file mode 100644 index 433b8d5ef3..0000000000 --- a/src/overlays/actors/ovl_Bg_Spot11_Bakudankabe/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Spot11_Bakudankabe -z_bg_spot11_bakudankabe.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Spot11_Oasis/overlay.cfg b/src/overlays/actors/ovl_Bg_Spot11_Oasis/overlay.cfg deleted file mode 100644 index 22154033cb..0000000000 --- a/src/overlays/actors/ovl_Bg_Spot11_Oasis/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Spot11_Oasis -z_bg_spot11_oasis.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Spot12_Gate/overlay.cfg b/src/overlays/actors/ovl_Bg_Spot12_Gate/overlay.cfg deleted file mode 100644 index edfdb06175..0000000000 --- a/src/overlays/actors/ovl_Bg_Spot12_Gate/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Spot12_Gate -z_bg_spot12_gate.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Spot12_Saku/overlay.cfg b/src/overlays/actors/ovl_Bg_Spot12_Saku/overlay.cfg deleted file mode 100644 index ae67c09087..0000000000 --- a/src/overlays/actors/ovl_Bg_Spot12_Saku/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Spot12_Saku -z_bg_spot12_saku.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Spot15_Rrbox/overlay.cfg b/src/overlays/actors/ovl_Bg_Spot15_Rrbox/overlay.cfg deleted file mode 100644 index dab8fff0b5..0000000000 --- a/src/overlays/actors/ovl_Bg_Spot15_Rrbox/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Spot15_Rrbox -z_bg_spot15_rrbox.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Spot15_Saku/overlay.cfg b/src/overlays/actors/ovl_Bg_Spot15_Saku/overlay.cfg deleted file mode 100644 index 5c70ae4e92..0000000000 --- a/src/overlays/actors/ovl_Bg_Spot15_Saku/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Spot15_Saku -z_bg_spot15_saku.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Spot16_Bombstone/overlay.cfg b/src/overlays/actors/ovl_Bg_Spot16_Bombstone/overlay.cfg deleted file mode 100644 index e621ed0d5e..0000000000 --- a/src/overlays/actors/ovl_Bg_Spot16_Bombstone/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Spot16_Bombstone -z_bg_spot16_bombstone.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Spot16_Doughnut/overlay.cfg b/src/overlays/actors/ovl_Bg_Spot16_Doughnut/overlay.cfg deleted file mode 100644 index d3e6d16c49..0000000000 --- a/src/overlays/actors/ovl_Bg_Spot16_Doughnut/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Spot16_Doughnut -z_bg_spot16_doughnut.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Spot17_Bakudankabe/overlay.cfg b/src/overlays/actors/ovl_Bg_Spot17_Bakudankabe/overlay.cfg deleted file mode 100644 index fd3f8979e0..0000000000 --- a/src/overlays/actors/ovl_Bg_Spot17_Bakudankabe/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Spot17_Bakudankabe -z_bg_spot17_bakudankabe.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Spot17_Funen/overlay.cfg b/src/overlays/actors/ovl_Bg_Spot17_Funen/overlay.cfg deleted file mode 100644 index dc02f1d58c..0000000000 --- a/src/overlays/actors/ovl_Bg_Spot17_Funen/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Spot17_Funen -z_bg_spot17_funen.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Spot18_Basket/overlay.cfg b/src/overlays/actors/ovl_Bg_Spot18_Basket/overlay.cfg deleted file mode 100644 index 5674aa85cf..0000000000 --- a/src/overlays/actors/ovl_Bg_Spot18_Basket/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Spot18_Basket -z_bg_spot18_basket.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Spot18_Futa/overlay.cfg b/src/overlays/actors/ovl_Bg_Spot18_Futa/overlay.cfg deleted file mode 100644 index 2e72dc3960..0000000000 --- a/src/overlays/actors/ovl_Bg_Spot18_Futa/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Spot18_Futa -z_bg_spot18_futa.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Spot18_Obj/overlay.cfg b/src/overlays/actors/ovl_Bg_Spot18_Obj/overlay.cfg deleted file mode 100644 index 4f8a1874c9..0000000000 --- a/src/overlays/actors/ovl_Bg_Spot18_Obj/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Spot18_Obj -z_bg_spot18_obj.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Spot18_Shutter/overlay.cfg b/src/overlays/actors/ovl_Bg_Spot18_Shutter/overlay.cfg deleted file mode 100644 index 14f1e6b37f..0000000000 --- a/src/overlays/actors/ovl_Bg_Spot18_Shutter/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Spot18_Shutter -z_bg_spot18_shutter.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Sst_Floor/overlay.cfg b/src/overlays/actors/ovl_Bg_Sst_Floor/overlay.cfg deleted file mode 100644 index d14667dc80..0000000000 --- a/src/overlays/actors/ovl_Bg_Sst_Floor/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Sst_Floor -z_bg_sst_floor.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Toki_Hikari/overlay.cfg b/src/overlays/actors/ovl_Bg_Toki_Hikari/overlay.cfg deleted file mode 100644 index be3eab0857..0000000000 --- a/src/overlays/actors/ovl_Bg_Toki_Hikari/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Toki_Hikari -z_bg_toki_hikari.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Toki_Swd/overlay.cfg b/src/overlays/actors/ovl_Bg_Toki_Swd/overlay.cfg deleted file mode 100644 index b0a3ac22e4..0000000000 --- a/src/overlays/actors/ovl_Bg_Toki_Swd/overlay.cfg +++ /dev/null @@ -1,5 +0,0 @@ -ovl_Bg_Toki_Swd -z_bg_toki_swd_cutscene_data_1.c -z_bg_toki_swd_cutscene_data_2.c -z_bg_toki_swd_cutscene_data_3.c -z_bg_toki_swd.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Treemouth/overlay.cfg b/src/overlays/actors/ovl_Bg_Treemouth/overlay.cfg deleted file mode 100644 index c575bdc1b0..0000000000 --- a/src/overlays/actors/ovl_Bg_Treemouth/overlay.cfg +++ /dev/null @@ -1,3 +0,0 @@ -ovl_Bg_Treemouth -z_bg_treemouth_cutscene_data.c -z_bg_treemouth.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Umajump/overlay.cfg b/src/overlays/actors/ovl_Bg_Umajump/overlay.cfg deleted file mode 100644 index 7f937153fd..0000000000 --- a/src/overlays/actors/ovl_Bg_Umajump/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Umajump -z_bg_umajump.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Vb_Sima/overlay.cfg b/src/overlays/actors/ovl_Bg_Vb_Sima/overlay.cfg deleted file mode 100644 index 6e12803876..0000000000 --- a/src/overlays/actors/ovl_Bg_Vb_Sima/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Vb_Sima -z_bg_vb_sima.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Ydan_Hasi/overlay.cfg b/src/overlays/actors/ovl_Bg_Ydan_Hasi/overlay.cfg deleted file mode 100644 index 4bce10169e..0000000000 --- a/src/overlays/actors/ovl_Bg_Ydan_Hasi/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Ydan_Hasi -z_bg_ydan_hasi.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Ydan_Maruta/overlay.cfg b/src/overlays/actors/ovl_Bg_Ydan_Maruta/overlay.cfg deleted file mode 100644 index d288e7ec60..0000000000 --- a/src/overlays/actors/ovl_Bg_Ydan_Maruta/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Ydan_Maruta -z_bg_ydan_maruta.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Ydan_Sp/overlay.cfg b/src/overlays/actors/ovl_Bg_Ydan_Sp/overlay.cfg deleted file mode 100644 index 803a4a2572..0000000000 --- a/src/overlays/actors/ovl_Bg_Ydan_Sp/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Ydan_Sp -z_bg_ydan_sp.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Bg_Zg/overlay.cfg b/src/overlays/actors/ovl_Bg_Zg/overlay.cfg deleted file mode 100644 index c67e38d64c..0000000000 --- a/src/overlays/actors/ovl_Bg_Zg/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Bg_Zg -z_bg_zg.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Boss_Dodongo/overlay.cfg b/src/overlays/actors/ovl_Boss_Dodongo/overlay.cfg deleted file mode 100644 index 8e709ff6cf..0000000000 --- a/src/overlays/actors/ovl_Boss_Dodongo/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Boss_Dodongo -z_boss_dodongo.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Boss_Fd/overlay.cfg b/src/overlays/actors/ovl_Boss_Fd/overlay.cfg deleted file mode 100644 index 0028d73b27..0000000000 --- a/src/overlays/actors/ovl_Boss_Fd/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Boss_Fd -z_boss_fd.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Boss_Fd2/overlay.cfg b/src/overlays/actors/ovl_Boss_Fd2/overlay.cfg deleted file mode 100644 index ffe651b7f5..0000000000 --- a/src/overlays/actors/ovl_Boss_Fd2/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Boss_Fd2 -z_boss_fd2.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Boss_Ganon/overlay.cfg b/src/overlays/actors/ovl_Boss_Ganon/overlay.cfg deleted file mode 100644 index 98273eae2d..0000000000 --- a/src/overlays/actors/ovl_Boss_Ganon/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Boss_Ganon -z_boss_ganon.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Boss_Ganon2/overlay.cfg b/src/overlays/actors/ovl_Boss_Ganon2/overlay.cfg deleted file mode 100644 index c8364eed5e..0000000000 --- a/src/overlays/actors/ovl_Boss_Ganon2/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Boss_Ganon2 -z_boss_ganon2.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Boss_Ganondrof/overlay.cfg b/src/overlays/actors/ovl_Boss_Ganondrof/overlay.cfg deleted file mode 100644 index cf2b50890f..0000000000 --- a/src/overlays/actors/ovl_Boss_Ganondrof/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Boss_Ganondrof -z_boss_ganondrof.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Boss_Goma/overlay.cfg b/src/overlays/actors/ovl_Boss_Goma/overlay.cfg deleted file mode 100644 index cd0c058152..0000000000 --- a/src/overlays/actors/ovl_Boss_Goma/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Boss_Goma -z_boss_goma.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Boss_Mo/overlay.cfg b/src/overlays/actors/ovl_Boss_Mo/overlay.cfg deleted file mode 100644 index 50c46c2c7f..0000000000 --- a/src/overlays/actors/ovl_Boss_Mo/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Boss_Mo -z_boss_mo.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Boss_Sst/overlay.cfg b/src/overlays/actors/ovl_Boss_Sst/overlay.cfg deleted file mode 100644 index 270e8ac409..0000000000 --- a/src/overlays/actors/ovl_Boss_Sst/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Boss_Sst -z_boss_sst.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Boss_Tw/overlay.cfg b/src/overlays/actors/ovl_Boss_Tw/overlay.cfg deleted file mode 100644 index 403bc04024..0000000000 --- a/src/overlays/actors/ovl_Boss_Tw/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Boss_Tw -z_boss_tw.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Boss_Va/overlay.cfg b/src/overlays/actors/ovl_Boss_Va/overlay.cfg deleted file mode 100644 index 7e04333cf9..0000000000 --- a/src/overlays/actors/ovl_Boss_Va/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Boss_Va -z_boss_va.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Demo_6K/overlay.cfg b/src/overlays/actors/ovl_Demo_6K/overlay.cfg deleted file mode 100644 index d798432e3a..0000000000 --- a/src/overlays/actors/ovl_Demo_6K/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Demo_6K -z_demo_6k.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Demo_Du/overlay.cfg b/src/overlays/actors/ovl_Demo_Du/overlay.cfg deleted file mode 100644 index 62d777da90..0000000000 --- a/src/overlays/actors/ovl_Demo_Du/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Demo_Du -z_demo_du.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Demo_Ec/overlay.cfg b/src/overlays/actors/ovl_Demo_Ec/overlay.cfg deleted file mode 100644 index 6c80b9df63..0000000000 --- a/src/overlays/actors/ovl_Demo_Ec/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Demo_Ec -z_demo_ec.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Demo_Effect/overlay.cfg b/src/overlays/actors/ovl_Demo_Effect/overlay.cfg deleted file mode 100644 index 85969bfc6a..0000000000 --- a/src/overlays/actors/ovl_Demo_Effect/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Demo_Effect -z_demo_effect.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Demo_Ext/overlay.cfg b/src/overlays/actors/ovl_Demo_Ext/overlay.cfg deleted file mode 100644 index 88187192e1..0000000000 --- a/src/overlays/actors/ovl_Demo_Ext/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Demo_Ext -z_demo_ext.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Demo_Geff/overlay.cfg b/src/overlays/actors/ovl_Demo_Geff/overlay.cfg deleted file mode 100644 index d054453875..0000000000 --- a/src/overlays/actors/ovl_Demo_Geff/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Demo_Geff -z_demo_geff.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Demo_Gj/overlay.cfg b/src/overlays/actors/ovl_Demo_Gj/overlay.cfg deleted file mode 100644 index b787ad6a7e..0000000000 --- a/src/overlays/actors/ovl_Demo_Gj/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Demo_Gj -z_demo_gj.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Demo_Go/overlay.cfg b/src/overlays/actors/ovl_Demo_Go/overlay.cfg deleted file mode 100644 index 76e82e3de0..0000000000 --- a/src/overlays/actors/ovl_Demo_Go/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Demo_Go -z_demo_go.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Demo_Gt/overlay.cfg b/src/overlays/actors/ovl_Demo_Gt/overlay.cfg deleted file mode 100644 index 3c64fecffd..0000000000 --- a/src/overlays/actors/ovl_Demo_Gt/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Demo_Gt -z_demo_gt.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Demo_Ik/overlay.cfg b/src/overlays/actors/ovl_Demo_Ik/overlay.cfg deleted file mode 100644 index 4c864ff2b3..0000000000 --- a/src/overlays/actors/ovl_Demo_Ik/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Demo_Ik -z_demo_ik.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Demo_Im/overlay.cfg b/src/overlays/actors/ovl_Demo_Im/overlay.cfg deleted file mode 100644 index c070c61a8c..0000000000 --- a/src/overlays/actors/ovl_Demo_Im/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Demo_Im -z_demo_im.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Demo_Kankyo/overlay.cfg b/src/overlays/actors/ovl_Demo_Kankyo/overlay.cfg deleted file mode 100644 index 1f3ce3e64d..0000000000 --- a/src/overlays/actors/ovl_Demo_Kankyo/overlay.cfg +++ /dev/null @@ -1,10 +0,0 @@ -ovl_Demo_Kankyo -z_demo_kankyo_cutscene_data1.c -z_demo_kankyo_cutscene_data2.c -z_demo_kankyo_cutscene_data3.c -z_demo_kankyo_cutscene_data4.c -z_demo_kankyo_cutscene_data5.c -z_demo_kankyo_cutscene_data6.c -z_demo_kankyo_cutscene_data7.c -z_demo_kankyo_cutscene_data8.c -z_demo_kankyo.c diff --git a/src/overlays/actors/ovl_Demo_Kekkai/overlay.cfg b/src/overlays/actors/ovl_Demo_Kekkai/overlay.cfg deleted file mode 100644 index e7419e3c30..0000000000 --- a/src/overlays/actors/ovl_Demo_Kekkai/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Demo_Kekkai -z_demo_kekkai.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Demo_Sa/overlay.cfg b/src/overlays/actors/ovl_Demo_Sa/overlay.cfg deleted file mode 100644 index 6081f1d0ab..0000000000 --- a/src/overlays/actors/ovl_Demo_Sa/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Demo_Sa -z_demo_sa.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Demo_Shd/overlay.cfg b/src/overlays/actors/ovl_Demo_Shd/overlay.cfg deleted file mode 100644 index 6f91505005..0000000000 --- a/src/overlays/actors/ovl_Demo_Shd/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Demo_Shd -z_demo_shd.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Demo_Tre_Lgt/overlay.cfg b/src/overlays/actors/ovl_Demo_Tre_Lgt/overlay.cfg deleted file mode 100644 index 6f33fc2234..0000000000 --- a/src/overlays/actors/ovl_Demo_Tre_Lgt/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Demo_Tre_Lgt -z_demo_tre_lgt.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Door_Ana/overlay.cfg b/src/overlays/actors/ovl_Door_Ana/overlay.cfg deleted file mode 100644 index b6b13642a4..0000000000 --- a/src/overlays/actors/ovl_Door_Ana/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Door_Ana -z_door_ana.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Door_Gerudo/overlay.cfg b/src/overlays/actors/ovl_Door_Gerudo/overlay.cfg deleted file mode 100644 index 0434a1dc2c..0000000000 --- a/src/overlays/actors/ovl_Door_Gerudo/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Door_Gerudo -z_door_gerudo.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Door_Killer/overlay.cfg b/src/overlays/actors/ovl_Door_Killer/overlay.cfg deleted file mode 100644 index c0adeaee01..0000000000 --- a/src/overlays/actors/ovl_Door_Killer/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Door_Killer -z_door_killer.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Door_Shutter/overlay.cfg b/src/overlays/actors/ovl_Door_Shutter/overlay.cfg deleted file mode 100644 index b20abaaeb8..0000000000 --- a/src/overlays/actors/ovl_Door_Shutter/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Door_Shutter -z_door_shutter.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Door_Toki/overlay.cfg b/src/overlays/actors/ovl_Door_Toki/overlay.cfg deleted file mode 100644 index 9ec633fce5..0000000000 --- a/src/overlays/actors/ovl_Door_Toki/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Door_Toki -z_door_toki.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Door_Warp1/overlay.cfg b/src/overlays/actors/ovl_Door_Warp1/overlay.cfg deleted file mode 100644 index b0466dec9d..0000000000 --- a/src/overlays/actors/ovl_Door_Warp1/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Door_Warp1 -z_door_warp1.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Efc_Erupc/overlay.cfg b/src/overlays/actors/ovl_Efc_Erupc/overlay.cfg deleted file mode 100644 index 2c1ba81b6b..0000000000 --- a/src/overlays/actors/ovl_Efc_Erupc/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Efc_Erupc -z_efc_erupc.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Eff_Dust/overlay.cfg b/src/overlays/actors/ovl_Eff_Dust/overlay.cfg deleted file mode 100644 index f37e215659..0000000000 --- a/src/overlays/actors/ovl_Eff_Dust/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Eff_Dust -z_eff_dust.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Elf_Msg/overlay.cfg b/src/overlays/actors/ovl_Elf_Msg/overlay.cfg deleted file mode 100644 index af8b8d09a5..0000000000 --- a/src/overlays/actors/ovl_Elf_Msg/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Elf_Msg -z_elf_msg.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Elf_Msg2/overlay.cfg b/src/overlays/actors/ovl_Elf_Msg2/overlay.cfg deleted file mode 100644 index bc1453f463..0000000000 --- a/src/overlays/actors/ovl_Elf_Msg2/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Elf_Msg2 -z_elf_msg2.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Am/overlay.cfg b/src/overlays/actors/ovl_En_Am/overlay.cfg deleted file mode 100644 index 74a22ea249..0000000000 --- a/src/overlays/actors/ovl_En_Am/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Am -z_en_am.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Ani/overlay.cfg b/src/overlays/actors/ovl_En_Ani/overlay.cfg deleted file mode 100644 index bb68fed252..0000000000 --- a/src/overlays/actors/ovl_En_Ani/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Ani -z_en_ani.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Anubice/overlay.cfg b/src/overlays/actors/ovl_En_Anubice/overlay.cfg deleted file mode 100644 index 9414c3d7cc..0000000000 --- a/src/overlays/actors/ovl_En_Anubice/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Anubice -z_en_anubice.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Anubice_Fire/overlay.cfg b/src/overlays/actors/ovl_En_Anubice_Fire/overlay.cfg deleted file mode 100644 index 6f2a5040ca..0000000000 --- a/src/overlays/actors/ovl_En_Anubice_Fire/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Anubice_Fire -z_en_anubice_fire.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Anubice_Tag/overlay.cfg b/src/overlays/actors/ovl_En_Anubice_Tag/overlay.cfg deleted file mode 100644 index 592e70d961..0000000000 --- a/src/overlays/actors/ovl_En_Anubice_Tag/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Anubice_Tag -z_en_anubice_tag.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Arow_Trap/overlay.cfg b/src/overlays/actors/ovl_En_Arow_Trap/overlay.cfg deleted file mode 100644 index 60feecd525..0000000000 --- a/src/overlays/actors/ovl_En_Arow_Trap/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Arow_Trap -z_en_arow_trap.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Arrow/overlay.cfg b/src/overlays/actors/ovl_En_Arrow/overlay.cfg deleted file mode 100644 index 555bff86bf..0000000000 --- a/src/overlays/actors/ovl_En_Arrow/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Arrow -z_en_arrow.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Attack_Niw/overlay.cfg b/src/overlays/actors/ovl_En_Attack_Niw/overlay.cfg deleted file mode 100644 index 4090388350..0000000000 --- a/src/overlays/actors/ovl_En_Attack_Niw/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Attack_Niw -z_en_attack_niw.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Ba/overlay.cfg b/src/overlays/actors/ovl_En_Ba/overlay.cfg deleted file mode 100644 index 1c1d2eebc4..0000000000 --- a/src/overlays/actors/ovl_En_Ba/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Ba -z_en_ba.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Bb/overlay.cfg b/src/overlays/actors/ovl_En_Bb/overlay.cfg deleted file mode 100644 index 25e2aceb42..0000000000 --- a/src/overlays/actors/ovl_En_Bb/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Bb -z_en_bb.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Bdfire/overlay.cfg b/src/overlays/actors/ovl_En_Bdfire/overlay.cfg deleted file mode 100644 index 9fad9252ce..0000000000 --- a/src/overlays/actors/ovl_En_Bdfire/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Bdfire -z_en_bdfire.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Bigokuta/overlay.cfg b/src/overlays/actors/ovl_En_Bigokuta/overlay.cfg deleted file mode 100644 index 0fc368ded4..0000000000 --- a/src/overlays/actors/ovl_En_Bigokuta/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Bigokuta -z_en_bigokuta.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Bili/overlay.cfg b/src/overlays/actors/ovl_En_Bili/overlay.cfg deleted file mode 100644 index 99ec79107b..0000000000 --- a/src/overlays/actors/ovl_En_Bili/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Bili -z_en_bili.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Bird/overlay.cfg b/src/overlays/actors/ovl_En_Bird/overlay.cfg deleted file mode 100644 index 63352b2d53..0000000000 --- a/src/overlays/actors/ovl_En_Bird/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Bird -z_en_bird.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Blkobj/overlay.cfg b/src/overlays/actors/ovl_En_Blkobj/overlay.cfg deleted file mode 100644 index 8fc5575154..0000000000 --- a/src/overlays/actors/ovl_En_Blkobj/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Blkobj -z_en_blkobj.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Bom/overlay.cfg b/src/overlays/actors/ovl_En_Bom/overlay.cfg deleted file mode 100644 index 9720e379a1..0000000000 --- a/src/overlays/actors/ovl_En_Bom/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Bom -z_en_bom.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Bom_Bowl_Man/overlay.cfg b/src/overlays/actors/ovl_En_Bom_Bowl_Man/overlay.cfg deleted file mode 100644 index 70873c905c..0000000000 --- a/src/overlays/actors/ovl_En_Bom_Bowl_Man/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Bom_Bowl_Man -z_en_bom_bowl_man.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Bom_Bowl_Pit/overlay.cfg b/src/overlays/actors/ovl_En_Bom_Bowl_Pit/overlay.cfg deleted file mode 100644 index f9a70a7145..0000000000 --- a/src/overlays/actors/ovl_En_Bom_Bowl_Pit/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Bom_Bowl_Pit -z_en_bom_bowl_pit.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Bom_Chu/overlay.cfg b/src/overlays/actors/ovl_En_Bom_Chu/overlay.cfg deleted file mode 100644 index 9df38a6434..0000000000 --- a/src/overlays/actors/ovl_En_Bom_Chu/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Bom_Chu -z_en_bom_chu.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Bombf/overlay.cfg b/src/overlays/actors/ovl_En_Bombf/overlay.cfg deleted file mode 100644 index 879a9ec845..0000000000 --- a/src/overlays/actors/ovl_En_Bombf/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Bombf -z_en_bombf.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Boom/overlay.cfg b/src/overlays/actors/ovl_En_Boom/overlay.cfg deleted file mode 100644 index e355d7d491..0000000000 --- a/src/overlays/actors/ovl_En_Boom/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Boom -z_en_boom.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Box/overlay.cfg b/src/overlays/actors/ovl_En_Box/overlay.cfg deleted file mode 100644 index 9b83609242..0000000000 --- a/src/overlays/actors/ovl_En_Box/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Box -z_en_box.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Brob/overlay.cfg b/src/overlays/actors/ovl_En_Brob/overlay.cfg deleted file mode 100644 index 3e105e0384..0000000000 --- a/src/overlays/actors/ovl_En_Brob/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Brob -z_en_brob.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Bubble/overlay.cfg b/src/overlays/actors/ovl_En_Bubble/overlay.cfg deleted file mode 100644 index 4fec2c4b7f..0000000000 --- a/src/overlays/actors/ovl_En_Bubble/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Bubble -z_en_bubble.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Butte/overlay.cfg b/src/overlays/actors/ovl_En_Butte/overlay.cfg deleted file mode 100644 index 9908f70848..0000000000 --- a/src/overlays/actors/ovl_En_Butte/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Butte -z_en_butte.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Bw/overlay.cfg b/src/overlays/actors/ovl_En_Bw/overlay.cfg deleted file mode 100644 index 149e0e86e0..0000000000 --- a/src/overlays/actors/ovl_En_Bw/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Bw -z_en_bw.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Bx/overlay.cfg b/src/overlays/actors/ovl_En_Bx/overlay.cfg deleted file mode 100644 index 7afd79198d..0000000000 --- a/src/overlays/actors/ovl_En_Bx/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Bx -z_en_bx.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Changer/overlay.cfg b/src/overlays/actors/ovl_En_Changer/overlay.cfg deleted file mode 100644 index 828a4cf64d..0000000000 --- a/src/overlays/actors/ovl_En_Changer/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Changer -z_en_changer.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Clear_Tag/overlay.cfg b/src/overlays/actors/ovl_En_Clear_Tag/overlay.cfg deleted file mode 100644 index 903267810d..0000000000 --- a/src/overlays/actors/ovl_En_Clear_Tag/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Clear_Tag -z_en_clear_tag.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Cow/overlay.cfg b/src/overlays/actors/ovl_En_Cow/overlay.cfg deleted file mode 100644 index dd3936d585..0000000000 --- a/src/overlays/actors/ovl_En_Cow/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Cow -z_en_cow.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Crow/overlay.cfg b/src/overlays/actors/ovl_En_Crow/overlay.cfg deleted file mode 100644 index 6ec1379209..0000000000 --- a/src/overlays/actors/ovl_En_Crow/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Crow -z_en_crow.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Cs/overlay.cfg b/src/overlays/actors/ovl_En_Cs/overlay.cfg deleted file mode 100644 index bb55b8e1b2..0000000000 --- a/src/overlays/actors/ovl_En_Cs/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Cs -z_en_cs.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Daiku/overlay.cfg b/src/overlays/actors/ovl_En_Daiku/overlay.cfg deleted file mode 100644 index ca11a74165..0000000000 --- a/src/overlays/actors/ovl_En_Daiku/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Daiku -z_en_daiku.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Daiku_Kakariko/overlay.cfg b/src/overlays/actors/ovl_En_Daiku_Kakariko/overlay.cfg deleted file mode 100644 index 7ed0a57e0f..0000000000 --- a/src/overlays/actors/ovl_En_Daiku_Kakariko/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Daiku_Kakariko -z_en_daiku_kakariko.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Dekubaba/overlay.cfg b/src/overlays/actors/ovl_En_Dekubaba/overlay.cfg deleted file mode 100644 index 0a26dc1b3f..0000000000 --- a/src/overlays/actors/ovl_En_Dekubaba/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Dekubaba -z_en_dekubaba.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Dekunuts/overlay.cfg b/src/overlays/actors/ovl_En_Dekunuts/overlay.cfg deleted file mode 100644 index 9f264c7197..0000000000 --- a/src/overlays/actors/ovl_En_Dekunuts/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Dekunuts -z_en_dekunuts.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Dh/overlay.cfg b/src/overlays/actors/ovl_En_Dh/overlay.cfg deleted file mode 100644 index 5eca266fd7..0000000000 --- a/src/overlays/actors/ovl_En_Dh/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Dh -z_en_dh.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Dha/overlay.cfg b/src/overlays/actors/ovl_En_Dha/overlay.cfg deleted file mode 100644 index aa371cb760..0000000000 --- a/src/overlays/actors/ovl_En_Dha/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Dha -z_en_dha.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Diving_Game/overlay.cfg b/src/overlays/actors/ovl_En_Diving_Game/overlay.cfg deleted file mode 100644 index 2aa57f0746..0000000000 --- a/src/overlays/actors/ovl_En_Diving_Game/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Diving_Game -z_en_diving_game.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Dns/overlay.cfg b/src/overlays/actors/ovl_En_Dns/overlay.cfg deleted file mode 100644 index f57de8708c..0000000000 --- a/src/overlays/actors/ovl_En_Dns/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Dns -z_en_dns.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Dnt_Demo/overlay.cfg b/src/overlays/actors/ovl_En_Dnt_Demo/overlay.cfg deleted file mode 100644 index 28eeb8cb48..0000000000 --- a/src/overlays/actors/ovl_En_Dnt_Demo/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Dnt_Demo -z_en_dnt_demo.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Dnt_Jiji/overlay.cfg b/src/overlays/actors/ovl_En_Dnt_Jiji/overlay.cfg deleted file mode 100644 index fee3e926dc..0000000000 --- a/src/overlays/actors/ovl_En_Dnt_Jiji/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Dnt_Jiji -z_en_dnt_jiji.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Dnt_Nomal/overlay.cfg b/src/overlays/actors/ovl_En_Dnt_Nomal/overlay.cfg deleted file mode 100644 index 46188804a0..0000000000 --- a/src/overlays/actors/ovl_En_Dnt_Nomal/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Dnt_Nomal -z_en_dnt_nomal.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Dodojr/overlay.cfg b/src/overlays/actors/ovl_En_Dodojr/overlay.cfg deleted file mode 100644 index 14ac593f17..0000000000 --- a/src/overlays/actors/ovl_En_Dodojr/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Dodojr -z_en_dodojr.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Dodongo/overlay.cfg b/src/overlays/actors/ovl_En_Dodongo/overlay.cfg deleted file mode 100644 index 4e328d6664..0000000000 --- a/src/overlays/actors/ovl_En_Dodongo/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Dodongo -z_en_dodongo.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Dog/overlay.cfg b/src/overlays/actors/ovl_En_Dog/overlay.cfg deleted file mode 100644 index cfd0109d86..0000000000 --- a/src/overlays/actors/ovl_En_Dog/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Dog -z_en_dog.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Door/overlay.cfg b/src/overlays/actors/ovl_En_Door/overlay.cfg deleted file mode 100644 index f19f38eb4b..0000000000 --- a/src/overlays/actors/ovl_En_Door/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Door -z_en_door.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Ds/overlay.cfg b/src/overlays/actors/ovl_En_Ds/overlay.cfg deleted file mode 100644 index 489fde99b1..0000000000 --- a/src/overlays/actors/ovl_En_Ds/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Ds -z_en_ds.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Du/overlay.cfg b/src/overlays/actors/ovl_En_Du/overlay.cfg deleted file mode 100644 index 62a3dfa26e..0000000000 --- a/src/overlays/actors/ovl_En_Du/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Du -z_en_du.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Dy_Extra/overlay.cfg b/src/overlays/actors/ovl_En_Dy_Extra/overlay.cfg deleted file mode 100644 index ec3debcb79..0000000000 --- a/src/overlays/actors/ovl_En_Dy_Extra/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Dy_Extra -z_en_dy_extra.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Eg/overlay.cfg b/src/overlays/actors/ovl_En_Eg/overlay.cfg deleted file mode 100644 index 778ecb57b3..0000000000 --- a/src/overlays/actors/ovl_En_Eg/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Eg -z_en_eg.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Eiyer/overlay.cfg b/src/overlays/actors/ovl_En_Eiyer/overlay.cfg deleted file mode 100644 index 0f4228c537..0000000000 --- a/src/overlays/actors/ovl_En_Eiyer/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Eiyer -z_en_eiyer.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Elf/overlay.cfg b/src/overlays/actors/ovl_En_Elf/overlay.cfg deleted file mode 100644 index dc696e76fe..0000000000 --- a/src/overlays/actors/ovl_En_Elf/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Elf -z_en_elf.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Encount1/overlay.cfg b/src/overlays/actors/ovl_En_Encount1/overlay.cfg deleted file mode 100644 index 9d354733bc..0000000000 --- a/src/overlays/actors/ovl_En_Encount1/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Encount1 -z_en_encount1.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Encount2/overlay.cfg b/src/overlays/actors/ovl_En_Encount2/overlay.cfg deleted file mode 100644 index 41978acd3e..0000000000 --- a/src/overlays/actors/ovl_En_Encount2/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Encount2 -z_en_encount2.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Ex_Item/overlay.cfg b/src/overlays/actors/ovl_En_Ex_Item/overlay.cfg deleted file mode 100644 index 7e135ad841..0000000000 --- a/src/overlays/actors/ovl_En_Ex_Item/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Ex_Item -z_en_ex_item.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Ex_Ruppy/overlay.cfg b/src/overlays/actors/ovl_En_Ex_Ruppy/overlay.cfg deleted file mode 100644 index 10c14f0be9..0000000000 --- a/src/overlays/actors/ovl_En_Ex_Ruppy/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Ex_Ruppy -z_en_ex_ruppy.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Fd/overlay.cfg b/src/overlays/actors/ovl_En_Fd/overlay.cfg deleted file mode 100644 index 15188e2ebd..0000000000 --- a/src/overlays/actors/ovl_En_Fd/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Fd -z_en_fd.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Fd_Fire/overlay.cfg b/src/overlays/actors/ovl_En_Fd_Fire/overlay.cfg deleted file mode 100644 index 5b8ccd91e8..0000000000 --- a/src/overlays/actors/ovl_En_Fd_Fire/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Fd_Fire -z_en_fd_fire.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Fhg_Fire/overlay.cfg b/src/overlays/actors/ovl_En_Fhg_Fire/overlay.cfg deleted file mode 100644 index ca0dcc3019..0000000000 --- a/src/overlays/actors/ovl_En_Fhg_Fire/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Fhg_Fire -z_en_fhg_fire.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Fire_Rock/overlay.cfg b/src/overlays/actors/ovl_En_Fire_Rock/overlay.cfg deleted file mode 100644 index 0c4ac7c904..0000000000 --- a/src/overlays/actors/ovl_En_Fire_Rock/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Fire_Rock -z_en_fire_rock.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Firefly/overlay.cfg b/src/overlays/actors/ovl_En_Firefly/overlay.cfg deleted file mode 100644 index 03e7fda2e1..0000000000 --- a/src/overlays/actors/ovl_En_Firefly/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Firefly -z_en_firefly.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Fish/overlay.cfg b/src/overlays/actors/ovl_En_Fish/overlay.cfg deleted file mode 100644 index d9f53ae6e6..0000000000 --- a/src/overlays/actors/ovl_En_Fish/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Fish -z_en_fish.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Floormas/overlay.cfg b/src/overlays/actors/ovl_En_Floormas/overlay.cfg deleted file mode 100644 index d67b2458a3..0000000000 --- a/src/overlays/actors/ovl_En_Floormas/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Floormas -z_en_floormas.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Fr/overlay.cfg b/src/overlays/actors/ovl_En_Fr/overlay.cfg deleted file mode 100644 index 845ee8d839..0000000000 --- a/src/overlays/actors/ovl_En_Fr/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Fr -z_en_fr.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Fu/overlay.cfg b/src/overlays/actors/ovl_En_Fu/overlay.cfg deleted file mode 100644 index baa4d99683..0000000000 --- a/src/overlays/actors/ovl_En_Fu/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Fu -z_en_fu.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Fw/overlay.cfg b/src/overlays/actors/ovl_En_Fw/overlay.cfg deleted file mode 100644 index 5b7f2586b9..0000000000 --- a/src/overlays/actors/ovl_En_Fw/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Fw -z_en_fw.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Fz/overlay.cfg b/src/overlays/actors/ovl_En_Fz/overlay.cfg deleted file mode 100644 index 633b436969..0000000000 --- a/src/overlays/actors/ovl_En_Fz/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Fz -z_en_fz.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_G_Switch/overlay.cfg b/src/overlays/actors/ovl_En_G_Switch/overlay.cfg deleted file mode 100644 index 2e766f2f2f..0000000000 --- a/src/overlays/actors/ovl_En_G_Switch/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_G_Switch -z_en_g_switch.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Ganon_Mant/overlay.cfg b/src/overlays/actors/ovl_En_Ganon_Mant/overlay.cfg deleted file mode 100644 index 1021d95c03..0000000000 --- a/src/overlays/actors/ovl_En_Ganon_Mant/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Ganon_Mant -z_en_ganon_mant.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Ganon_Organ/overlay.cfg b/src/overlays/actors/ovl_En_Ganon_Organ/overlay.cfg deleted file mode 100644 index 63318fabac..0000000000 --- a/src/overlays/actors/ovl_En_Ganon_Organ/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Ganon_Organ -z_en_ganon_organ.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Gb/overlay.cfg b/src/overlays/actors/ovl_En_Gb/overlay.cfg deleted file mode 100644 index 8d22cba0a3..0000000000 --- a/src/overlays/actors/ovl_En_Gb/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Gb -z_en_gb.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Ge1/overlay.cfg b/src/overlays/actors/ovl_En_Ge1/overlay.cfg deleted file mode 100644 index 18e7146228..0000000000 --- a/src/overlays/actors/ovl_En_Ge1/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Ge1 -z_en_ge1.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Ge2/overlay.cfg b/src/overlays/actors/ovl_En_Ge2/overlay.cfg deleted file mode 100644 index 79517718a2..0000000000 --- a/src/overlays/actors/ovl_En_Ge2/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Ge2 -z_en_ge2.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Ge3/overlay.cfg b/src/overlays/actors/ovl_En_Ge3/overlay.cfg deleted file mode 100644 index 68a1d20c38..0000000000 --- a/src/overlays/actors/ovl_En_Ge3/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Ge3 -z_en_ge3.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_GeldB/overlay.cfg b/src/overlays/actors/ovl_En_GeldB/overlay.cfg deleted file mode 100644 index 0caa4bc46b..0000000000 --- a/src/overlays/actors/ovl_En_GeldB/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_GeldB -z_en_geldb.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_GirlA/overlay.cfg b/src/overlays/actors/ovl_En_GirlA/overlay.cfg deleted file mode 100644 index ad7002b953..0000000000 --- a/src/overlays/actors/ovl_En_GirlA/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_GirlA -z_en_girla.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Gm/overlay.cfg b/src/overlays/actors/ovl_En_Gm/overlay.cfg deleted file mode 100644 index 3707b7ae07..0000000000 --- a/src/overlays/actors/ovl_En_Gm/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Gm -z_en_gm.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Go/overlay.cfg b/src/overlays/actors/ovl_En_Go/overlay.cfg deleted file mode 100644 index c6044ab024..0000000000 --- a/src/overlays/actors/ovl_En_Go/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Go -z_en_go.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Go2/overlay.cfg b/src/overlays/actors/ovl_En_Go2/overlay.cfg deleted file mode 100644 index db7a81d825..0000000000 --- a/src/overlays/actors/ovl_En_Go2/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Go2 -z_en_go2.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Goma/overlay.cfg b/src/overlays/actors/ovl_En_Goma/overlay.cfg deleted file mode 100644 index 1aa4767b5b..0000000000 --- a/src/overlays/actors/ovl_En_Goma/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Goma -z_en_goma.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Goroiwa/overlay.cfg b/src/overlays/actors/ovl_En_Goroiwa/overlay.cfg deleted file mode 100644 index 5db6c25a9e..0000000000 --- a/src/overlays/actors/ovl_En_Goroiwa/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Goroiwa -z_en_goroiwa.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Gs/overlay.cfg b/src/overlays/actors/ovl_En_Gs/overlay.cfg deleted file mode 100644 index 1cad507f28..0000000000 --- a/src/overlays/actors/ovl_En_Gs/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Gs -z_en_gs.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Guest/overlay.cfg b/src/overlays/actors/ovl_En_Guest/overlay.cfg deleted file mode 100644 index 7cec3da6e7..0000000000 --- a/src/overlays/actors/ovl_En_Guest/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Guest -z_en_guest.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Hata/overlay.cfg b/src/overlays/actors/ovl_En_Hata/overlay.cfg deleted file mode 100644 index 80cb9e3efb..0000000000 --- a/src/overlays/actors/ovl_En_Hata/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Hata -z_en_hata.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Heishi1/overlay.cfg b/src/overlays/actors/ovl_En_Heishi1/overlay.cfg deleted file mode 100644 index 0a3aff2dac..0000000000 --- a/src/overlays/actors/ovl_En_Heishi1/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Heishi1 -z_en_heishi1.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Heishi2/overlay.cfg b/src/overlays/actors/ovl_En_Heishi2/overlay.cfg deleted file mode 100644 index 3d2c223398..0000000000 --- a/src/overlays/actors/ovl_En_Heishi2/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Heishi2 -z_en_heishi2.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Heishi3/overlay.cfg b/src/overlays/actors/ovl_En_Heishi3/overlay.cfg deleted file mode 100644 index 2f4c399cc5..0000000000 --- a/src/overlays/actors/ovl_En_Heishi3/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Heishi3 -z_en_heishi3.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Heishi4/overlay.cfg b/src/overlays/actors/ovl_En_Heishi4/overlay.cfg deleted file mode 100644 index 08114c18e1..0000000000 --- a/src/overlays/actors/ovl_En_Heishi4/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Heishi4 -z_en_heishi4.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Hintnuts/overlay.cfg b/src/overlays/actors/ovl_En_Hintnuts/overlay.cfg deleted file mode 100644 index 74040d0a58..0000000000 --- a/src/overlays/actors/ovl_En_Hintnuts/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Hintnuts -z_en_hintnuts.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Holl/overlay.cfg b/src/overlays/actors/ovl_En_Holl/overlay.cfg deleted file mode 100644 index 1abe68fc76..0000000000 --- a/src/overlays/actors/ovl_En_Holl/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Holl -z_en_holl.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Honotrap/overlay.cfg b/src/overlays/actors/ovl_En_Honotrap/overlay.cfg deleted file mode 100644 index 5603e9eea8..0000000000 --- a/src/overlays/actors/ovl_En_Honotrap/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Honotrap -z_en_honotrap.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Horse/overlay.cfg b/src/overlays/actors/ovl_En_Horse/overlay.cfg deleted file mode 100644 index 53a8dd3101..0000000000 --- a/src/overlays/actors/ovl_En_Horse/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Horse -z_en_horse.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Horse_Game_Check/overlay.cfg b/src/overlays/actors/ovl_En_Horse_Game_Check/overlay.cfg deleted file mode 100644 index 6bc1190701..0000000000 --- a/src/overlays/actors/ovl_En_Horse_Game_Check/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Horse_Game_Check -z_en_horse_game_check.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Horse_Ganon/overlay.cfg b/src/overlays/actors/ovl_En_Horse_Ganon/overlay.cfg deleted file mode 100644 index 39b45440fa..0000000000 --- a/src/overlays/actors/ovl_En_Horse_Ganon/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Horse_Ganon -z_en_horse_ganon.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Horse_Link_Child/overlay.cfg b/src/overlays/actors/ovl_En_Horse_Link_Child/overlay.cfg deleted file mode 100644 index c29fcefcf0..0000000000 --- a/src/overlays/actors/ovl_En_Horse_Link_Child/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Horse_Link_Child -z_en_horse_link_child.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Horse_Normal/overlay.cfg b/src/overlays/actors/ovl_En_Horse_Normal/overlay.cfg deleted file mode 100644 index 5f01a4f88e..0000000000 --- a/src/overlays/actors/ovl_En_Horse_Normal/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Horse_Normal -z_en_horse_normal.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Horse_Zelda/overlay.cfg b/src/overlays/actors/ovl_En_Horse_Zelda/overlay.cfg deleted file mode 100644 index 69654692a8..0000000000 --- a/src/overlays/actors/ovl_En_Horse_Zelda/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Horse_Zelda -z_en_horse_zelda.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Hs/overlay.cfg b/src/overlays/actors/ovl_En_Hs/overlay.cfg deleted file mode 100644 index deba359cf2..0000000000 --- a/src/overlays/actors/ovl_En_Hs/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Hs -z_en_hs.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Hs2/overlay.cfg b/src/overlays/actors/ovl_En_Hs2/overlay.cfg deleted file mode 100644 index 49ec1cb781..0000000000 --- a/src/overlays/actors/ovl_En_Hs2/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Hs2 -z_en_hs2.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Hy/overlay.cfg b/src/overlays/actors/ovl_En_Hy/overlay.cfg deleted file mode 100644 index 3854c6e510..0000000000 --- a/src/overlays/actors/ovl_En_Hy/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Hy -z_en_hy.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Ice_Hono/overlay.cfg b/src/overlays/actors/ovl_En_Ice_Hono/overlay.cfg deleted file mode 100644 index dba3e703fc..0000000000 --- a/src/overlays/actors/ovl_En_Ice_Hono/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Ice_Hono -z_en_ice_hono.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Ik/overlay.cfg b/src/overlays/actors/ovl_En_Ik/overlay.cfg deleted file mode 100644 index 561dc46807..0000000000 --- a/src/overlays/actors/ovl_En_Ik/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Ik -z_en_ik.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_In/overlay.cfg b/src/overlays/actors/ovl_En_In/overlay.cfg deleted file mode 100644 index 37fcf602c3..0000000000 --- a/src/overlays/actors/ovl_En_In/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_In -z_en_in.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Insect/overlay.cfg b/src/overlays/actors/ovl_En_Insect/overlay.cfg deleted file mode 100644 index 416ba3cdd0..0000000000 --- a/src/overlays/actors/ovl_En_Insect/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Insect -z_en_insect.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Ishi/overlay.cfg b/src/overlays/actors/ovl_En_Ishi/overlay.cfg deleted file mode 100644 index 0f1d93b9dc..0000000000 --- a/src/overlays/actors/ovl_En_Ishi/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Ishi -z_en_ishi.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_It/overlay.cfg b/src/overlays/actors/ovl_En_It/overlay.cfg deleted file mode 100644 index 032a7821d0..0000000000 --- a/src/overlays/actors/ovl_En_It/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_It -z_en_it.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Jj/overlay.cfg b/src/overlays/actors/ovl_En_Jj/overlay.cfg deleted file mode 100644 index 0b1d4a6c29..0000000000 --- a/src/overlays/actors/ovl_En_Jj/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Jj -z_en_jj.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Js/overlay.cfg b/src/overlays/actors/ovl_En_Js/overlay.cfg deleted file mode 100644 index c9fadacb48..0000000000 --- a/src/overlays/actors/ovl_En_Js/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Js -z_en_js.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Jsjutan/overlay.cfg b/src/overlays/actors/ovl_En_Jsjutan/overlay.cfg deleted file mode 100644 index b1c825c557..0000000000 --- a/src/overlays/actors/ovl_En_Jsjutan/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Jsjutan -z_en_jsjutan.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Kakasi/overlay.cfg b/src/overlays/actors/ovl_En_Kakasi/overlay.cfg deleted file mode 100644 index fd0c29502a..0000000000 --- a/src/overlays/actors/ovl_En_Kakasi/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Kakasi -z_en_kakasi.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Kakasi2/overlay.cfg b/src/overlays/actors/ovl_En_Kakasi2/overlay.cfg deleted file mode 100644 index bcae4ca81d..0000000000 --- a/src/overlays/actors/ovl_En_Kakasi2/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Kakasi2 -z_en_kakasi2.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Kakasi3/overlay.cfg b/src/overlays/actors/ovl_En_Kakasi3/overlay.cfg deleted file mode 100644 index 96cac7509f..0000000000 --- a/src/overlays/actors/ovl_En_Kakasi3/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Kakasi3 -z_en_kakasi3.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Kanban/overlay.cfg b/src/overlays/actors/ovl_En_Kanban/overlay.cfg deleted file mode 100644 index 13110e639f..0000000000 --- a/src/overlays/actors/ovl_En_Kanban/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Kanban -z_en_kanban.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Karebaba/overlay.cfg b/src/overlays/actors/ovl_En_Karebaba/overlay.cfg deleted file mode 100644 index ff684b370c..0000000000 --- a/src/overlays/actors/ovl_En_Karebaba/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Karebaba -z_en_karebaba.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Ko/overlay.cfg b/src/overlays/actors/ovl_En_Ko/overlay.cfg deleted file mode 100644 index e915ef3890..0000000000 --- a/src/overlays/actors/ovl_En_Ko/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Ko -z_en_ko.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Kusa/overlay.cfg b/src/overlays/actors/ovl_En_Kusa/overlay.cfg deleted file mode 100644 index 8d211cfe16..0000000000 --- a/src/overlays/actors/ovl_En_Kusa/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Kusa -z_en_kusa.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Kz/overlay.cfg b/src/overlays/actors/ovl_En_Kz/overlay.cfg deleted file mode 100644 index 91be242f34..0000000000 --- a/src/overlays/actors/ovl_En_Kz/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Kz -z_en_kz.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Light/overlay.cfg b/src/overlays/actors/ovl_En_Light/overlay.cfg deleted file mode 100644 index ad3fc60d5b..0000000000 --- a/src/overlays/actors/ovl_En_Light/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Light -z_en_light.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Lightbox/overlay.cfg b/src/overlays/actors/ovl_En_Lightbox/overlay.cfg deleted file mode 100644 index 0fe513589c..0000000000 --- a/src/overlays/actors/ovl_En_Lightbox/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Lightbox -z_en_lightbox.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_M_Fire1/overlay.cfg b/src/overlays/actors/ovl_En_M_Fire1/overlay.cfg deleted file mode 100644 index dee57af39f..0000000000 --- a/src/overlays/actors/ovl_En_M_Fire1/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_M_Fire1 -z_en_m_fire1.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_M_Thunder/overlay.cfg b/src/overlays/actors/ovl_En_M_Thunder/overlay.cfg deleted file mode 100644 index 5060b9695e..0000000000 --- a/src/overlays/actors/ovl_En_M_Thunder/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_M_Thunder -z_en_m_thunder.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Ma1/overlay.cfg b/src/overlays/actors/ovl_En_Ma1/overlay.cfg deleted file mode 100644 index 75ea5173fc..0000000000 --- a/src/overlays/actors/ovl_En_Ma1/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Ma1 -z_en_ma1.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Ma2/overlay.cfg b/src/overlays/actors/ovl_En_Ma2/overlay.cfg deleted file mode 100644 index 7e3348692d..0000000000 --- a/src/overlays/actors/ovl_En_Ma2/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Ma2 -z_en_ma2.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Ma3/overlay.cfg b/src/overlays/actors/ovl_En_Ma3/overlay.cfg deleted file mode 100644 index 97a6699845..0000000000 --- a/src/overlays/actors/ovl_En_Ma3/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Ma3 -z_en_ma3.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Mag/overlay.cfg b/src/overlays/actors/ovl_En_Mag/overlay.cfg deleted file mode 100644 index 6719c8c454..0000000000 --- a/src/overlays/actors/ovl_En_Mag/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Mag -z_en_mag.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Mb/overlay.cfg b/src/overlays/actors/ovl_En_Mb/overlay.cfg deleted file mode 100644 index 62dad5b4ee..0000000000 --- a/src/overlays/actors/ovl_En_Mb/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Mb -z_en_mb.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Md/overlay.cfg b/src/overlays/actors/ovl_En_Md/overlay.cfg deleted file mode 100644 index d5eae23c53..0000000000 --- a/src/overlays/actors/ovl_En_Md/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Md -z_en_md.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Mk/overlay.cfg b/src/overlays/actors/ovl_En_Mk/overlay.cfg deleted file mode 100644 index 0ff0d40980..0000000000 --- a/src/overlays/actors/ovl_En_Mk/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Mk -z_en_mk.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Mm/overlay.cfg b/src/overlays/actors/ovl_En_Mm/overlay.cfg deleted file mode 100644 index fb0211f759..0000000000 --- a/src/overlays/actors/ovl_En_Mm/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Mm -z_en_mm.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Mm2/overlay.cfg b/src/overlays/actors/ovl_En_Mm2/overlay.cfg deleted file mode 100644 index f5fa0c20b6..0000000000 --- a/src/overlays/actors/ovl_En_Mm2/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Mm2 -z_en_mm2.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Ms/overlay.cfg b/src/overlays/actors/ovl_En_Ms/overlay.cfg deleted file mode 100644 index 639739ad66..0000000000 --- a/src/overlays/actors/ovl_En_Ms/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Ms -z_en_ms.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Mu/overlay.cfg b/src/overlays/actors/ovl_En_Mu/overlay.cfg deleted file mode 100644 index fc4db448fc..0000000000 --- a/src/overlays/actors/ovl_En_Mu/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Mu -z_en_mu.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Nb/overlay.cfg b/src/overlays/actors/ovl_En_Nb/overlay.cfg deleted file mode 100644 index ded64728e7..0000000000 --- a/src/overlays/actors/ovl_En_Nb/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Nb -z_en_nb.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Niw/overlay.cfg b/src/overlays/actors/ovl_En_Niw/overlay.cfg deleted file mode 100644 index fa15473608..0000000000 --- a/src/overlays/actors/ovl_En_Niw/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Niw -z_en_niw.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Niw_Girl/overlay.cfg b/src/overlays/actors/ovl_En_Niw_Girl/overlay.cfg deleted file mode 100644 index 40a7dac88d..0000000000 --- a/src/overlays/actors/ovl_En_Niw_Girl/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Niw_Girl -z_en_niw_girl.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Niw_Lady/overlay.cfg b/src/overlays/actors/ovl_En_Niw_Lady/overlay.cfg deleted file mode 100644 index 7074475a59..0000000000 --- a/src/overlays/actors/ovl_En_Niw_Lady/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Niw_Lady -z_en_niw_lady.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Nutsball/overlay.cfg b/src/overlays/actors/ovl_En_Nutsball/overlay.cfg deleted file mode 100644 index 5c2e01f57d..0000000000 --- a/src/overlays/actors/ovl_En_Nutsball/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Nutsball -z_en_nutsball.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Nwc/overlay.cfg b/src/overlays/actors/ovl_En_Nwc/overlay.cfg deleted file mode 100644 index ec5920a934..0000000000 --- a/src/overlays/actors/ovl_En_Nwc/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Nwc -z_en_nwc.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Ny/overlay.cfg b/src/overlays/actors/ovl_En_Ny/overlay.cfg deleted file mode 100644 index 6775370dde..0000000000 --- a/src/overlays/actors/ovl_En_Ny/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Ny -z_en_ny.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_OE2/overlay.cfg b/src/overlays/actors/ovl_En_OE2/overlay.cfg deleted file mode 100644 index e9993622fb..0000000000 --- a/src/overlays/actors/ovl_En_OE2/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_OE2 -z_en_oe2.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Okarina_Effect/overlay.cfg b/src/overlays/actors/ovl_En_Okarina_Effect/overlay.cfg deleted file mode 100644 index b51c8fd496..0000000000 --- a/src/overlays/actors/ovl_En_Okarina_Effect/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Okarina_Effect -z_en_okarina_effect.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Okarina_Tag/overlay.cfg b/src/overlays/actors/ovl_En_Okarina_Tag/overlay.cfg deleted file mode 100644 index 0cb0a85cc2..0000000000 --- a/src/overlays/actors/ovl_En_Okarina_Tag/overlay.cfg +++ /dev/null @@ -1,3 +0,0 @@ -ovl_En_Okarina_Tag -z_en_okarina_tag_cutscene_data.c -z_en_okarina_tag.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Okuta/overlay.cfg b/src/overlays/actors/ovl_En_Okuta/overlay.cfg deleted file mode 100644 index 22cf8c2b8d..0000000000 --- a/src/overlays/actors/ovl_En_Okuta/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Okuta -z_en_okuta.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Ossan/overlay.cfg b/src/overlays/actors/ovl_En_Ossan/overlay.cfg deleted file mode 100644 index a37210a107..0000000000 --- a/src/overlays/actors/ovl_En_Ossan/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Ossan -z_en_ossan.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Owl/overlay.cfg b/src/overlays/actors/ovl_En_Owl/overlay.cfg deleted file mode 100644 index e2ce536858..0000000000 --- a/src/overlays/actors/ovl_En_Owl/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Owl -z_en_owl.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Part/overlay.cfg b/src/overlays/actors/ovl_En_Part/overlay.cfg deleted file mode 100644 index 36744d4c4b..0000000000 --- a/src/overlays/actors/ovl_En_Part/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Part -z_en_part.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Peehat/overlay.cfg b/src/overlays/actors/ovl_En_Peehat/overlay.cfg deleted file mode 100644 index c4b3c95334..0000000000 --- a/src/overlays/actors/ovl_En_Peehat/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Peehat -z_en_peehat.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Po_Desert/overlay.cfg b/src/overlays/actors/ovl_En_Po_Desert/overlay.cfg deleted file mode 100644 index fa99461742..0000000000 --- a/src/overlays/actors/ovl_En_Po_Desert/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Po_Desert -z_en_po_desert.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Po_Field/overlay.cfg b/src/overlays/actors/ovl_En_Po_Field/overlay.cfg deleted file mode 100644 index e5336f11e6..0000000000 --- a/src/overlays/actors/ovl_En_Po_Field/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Po_Field -z_en_po_field.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Po_Relay/overlay.cfg b/src/overlays/actors/ovl_En_Po_Relay/overlay.cfg deleted file mode 100644 index 0250fc0f28..0000000000 --- a/src/overlays/actors/ovl_En_Po_Relay/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Po_Relay -z_en_po_relay.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Po_Sisters/overlay.cfg b/src/overlays/actors/ovl_En_Po_Sisters/overlay.cfg deleted file mode 100644 index fdece9e813..0000000000 --- a/src/overlays/actors/ovl_En_Po_Sisters/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Po_Sisters -z_en_po_sisters.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Poh/overlay.cfg b/src/overlays/actors/ovl_En_Poh/overlay.cfg deleted file mode 100644 index 8db12e90cf..0000000000 --- a/src/overlays/actors/ovl_En_Poh/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Poh -z_en_poh.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Pu_box/overlay.cfg b/src/overlays/actors/ovl_En_Pu_box/overlay.cfg deleted file mode 100644 index 285b3b329c..0000000000 --- a/src/overlays/actors/ovl_En_Pu_box/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Pu_box -z_en_pu_box.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Rd/overlay.cfg b/src/overlays/actors/ovl_En_Rd/overlay.cfg deleted file mode 100644 index c9aea975f4..0000000000 --- a/src/overlays/actors/ovl_En_Rd/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Rd -z_en_rd.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Reeba/overlay.cfg b/src/overlays/actors/ovl_En_Reeba/overlay.cfg deleted file mode 100644 index 618a8fe4b3..0000000000 --- a/src/overlays/actors/ovl_En_Reeba/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Reeba -z_en_reeba.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_River_Sound/overlay.cfg b/src/overlays/actors/ovl_En_River_Sound/overlay.cfg deleted file mode 100644 index 19d6d70db5..0000000000 --- a/src/overlays/actors/ovl_En_River_Sound/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_River_Sound -z_en_river_sound.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Rl/overlay.cfg b/src/overlays/actors/ovl_En_Rl/overlay.cfg deleted file mode 100644 index 8a08edc5fd..0000000000 --- a/src/overlays/actors/ovl_En_Rl/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Rl -z_en_rl.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Rr/overlay.cfg b/src/overlays/actors/ovl_En_Rr/overlay.cfg deleted file mode 100644 index faf1f2a427..0000000000 --- a/src/overlays/actors/ovl_En_Rr/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Rr -z_en_rr.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Ru1/overlay.cfg b/src/overlays/actors/ovl_En_Ru1/overlay.cfg deleted file mode 100644 index b1d1e4f709..0000000000 --- a/src/overlays/actors/ovl_En_Ru1/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Ru1 -z_en_ru1.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Ru2/overlay.cfg b/src/overlays/actors/ovl_En_Ru2/overlay.cfg deleted file mode 100644 index 64c927953d..0000000000 --- a/src/overlays/actors/ovl_En_Ru2/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Ru2 -z_en_ru2.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Sa/overlay.cfg b/src/overlays/actors/ovl_En_Sa/overlay.cfg deleted file mode 100644 index e1e74d9ae1..0000000000 --- a/src/overlays/actors/ovl_En_Sa/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Sa -z_en_sa.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Sb/overlay.cfg b/src/overlays/actors/ovl_En_Sb/overlay.cfg deleted file mode 100644 index 148b344e03..0000000000 --- a/src/overlays/actors/ovl_En_Sb/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Sb -z_en_sb.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Scene_Change/overlay.cfg b/src/overlays/actors/ovl_En_Scene_Change/overlay.cfg deleted file mode 100644 index 1008eb9cba..0000000000 --- a/src/overlays/actors/ovl_En_Scene_Change/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Scene_Change -z_en_scene_change.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Sda/overlay.cfg b/src/overlays/actors/ovl_En_Sda/overlay.cfg deleted file mode 100644 index 0f765ed172..0000000000 --- a/src/overlays/actors/ovl_En_Sda/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Sda -z_en_sda.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Shopnuts/overlay.cfg b/src/overlays/actors/ovl_En_Shopnuts/overlay.cfg deleted file mode 100644 index 98c83c453c..0000000000 --- a/src/overlays/actors/ovl_En_Shopnuts/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Shopnuts -z_en_shopnuts.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Si/overlay.cfg b/src/overlays/actors/ovl_En_Si/overlay.cfg deleted file mode 100644 index b3a95c38f9..0000000000 --- a/src/overlays/actors/ovl_En_Si/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Si -z_en_si.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Siofuki/overlay.cfg b/src/overlays/actors/ovl_En_Siofuki/overlay.cfg deleted file mode 100644 index 1f0e1c9358..0000000000 --- a/src/overlays/actors/ovl_En_Siofuki/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Siofuki -z_en_siofuki.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Skb/overlay.cfg b/src/overlays/actors/ovl_En_Skb/overlay.cfg deleted file mode 100644 index fb944241af..0000000000 --- a/src/overlays/actors/ovl_En_Skb/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Skb -z_en_skb.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Skj/overlay.cfg b/src/overlays/actors/ovl_En_Skj/overlay.cfg deleted file mode 100644 index 6b7ccaa7ac..0000000000 --- a/src/overlays/actors/ovl_En_Skj/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Skj -z_en_skj.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Skjneedle/overlay.cfg b/src/overlays/actors/ovl_En_Skjneedle/overlay.cfg deleted file mode 100644 index 2e98927122..0000000000 --- a/src/overlays/actors/ovl_En_Skjneedle/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Skjneedle -z_en_skjneedle.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Ssh/overlay.cfg b/src/overlays/actors/ovl_En_Ssh/overlay.cfg deleted file mode 100644 index 6af115392e..0000000000 --- a/src/overlays/actors/ovl_En_Ssh/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Ssh -z_en_ssh.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_St/overlay.cfg b/src/overlays/actors/ovl_En_St/overlay.cfg deleted file mode 100644 index a392d12905..0000000000 --- a/src/overlays/actors/ovl_En_St/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_St -z_en_st.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Sth/overlay.cfg b/src/overlays/actors/ovl_En_Sth/overlay.cfg deleted file mode 100644 index 6598ce8719..0000000000 --- a/src/overlays/actors/ovl_En_Sth/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Sth -z_en_sth.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Stream/overlay.cfg b/src/overlays/actors/ovl_En_Stream/overlay.cfg deleted file mode 100644 index 24778c4759..0000000000 --- a/src/overlays/actors/ovl_En_Stream/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Stream -z_en_stream.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Sw/overlay.cfg b/src/overlays/actors/ovl_En_Sw/overlay.cfg deleted file mode 100644 index 0ef5068f5d..0000000000 --- a/src/overlays/actors/ovl_En_Sw/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Sw -z_en_sw.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Syateki_Itm/overlay.cfg b/src/overlays/actors/ovl_En_Syateki_Itm/overlay.cfg deleted file mode 100644 index 9bb9d1fb7d..0000000000 --- a/src/overlays/actors/ovl_En_Syateki_Itm/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Syateki_Itm -z_en_syateki_itm.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Syateki_Man/overlay.cfg b/src/overlays/actors/ovl_En_Syateki_Man/overlay.cfg deleted file mode 100644 index b6f965104b..0000000000 --- a/src/overlays/actors/ovl_En_Syateki_Man/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Syateki_Man -z_en_syateki_man.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Syateki_Niw/overlay.cfg b/src/overlays/actors/ovl_En_Syateki_Niw/overlay.cfg deleted file mode 100644 index 1a95bd9e63..0000000000 --- a/src/overlays/actors/ovl_En_Syateki_Niw/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Syateki_Niw -z_en_syateki_niw.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Ta/overlay.cfg b/src/overlays/actors/ovl_En_Ta/overlay.cfg deleted file mode 100644 index e7faf5ba0f..0000000000 --- a/src/overlays/actors/ovl_En_Ta/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Ta -z_en_ta.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Takara_Man/overlay.cfg b/src/overlays/actors/ovl_En_Takara_Man/overlay.cfg deleted file mode 100644 index 3f1f957896..0000000000 --- a/src/overlays/actors/ovl_En_Takara_Man/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Takara_Man -z_en_takara_man.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Tana/overlay.cfg b/src/overlays/actors/ovl_En_Tana/overlay.cfg deleted file mode 100644 index c2344e6e5d..0000000000 --- a/src/overlays/actors/ovl_En_Tana/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Tana -z_en_tana.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Test/overlay.cfg b/src/overlays/actors/ovl_En_Test/overlay.cfg deleted file mode 100644 index 4fdf8aec82..0000000000 --- a/src/overlays/actors/ovl_En_Test/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Test -z_en_test.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Tg/overlay.cfg b/src/overlays/actors/ovl_En_Tg/overlay.cfg deleted file mode 100644 index a210bd7606..0000000000 --- a/src/overlays/actors/ovl_En_Tg/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Tg -z_en_tg.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Tite/overlay.cfg b/src/overlays/actors/ovl_En_Tite/overlay.cfg deleted file mode 100644 index 6f8d608eb7..0000000000 --- a/src/overlays/actors/ovl_En_Tite/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Tite -z_en_tite.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Tk/overlay.cfg b/src/overlays/actors/ovl_En_Tk/overlay.cfg deleted file mode 100644 index 0108dd1a41..0000000000 --- a/src/overlays/actors/ovl_En_Tk/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Tk -z_en_tk.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Torch/overlay.cfg b/src/overlays/actors/ovl_En_Torch/overlay.cfg deleted file mode 100644 index f1f2e9450a..0000000000 --- a/src/overlays/actors/ovl_En_Torch/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Torch -z_en_torch.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Torch2/overlay.cfg b/src/overlays/actors/ovl_En_Torch2/overlay.cfg deleted file mode 100644 index d5368deb94..0000000000 --- a/src/overlays/actors/ovl_En_Torch2/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Torch2 -z_en_torch2.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Toryo/overlay.cfg b/src/overlays/actors/ovl_En_Toryo/overlay.cfg deleted file mode 100644 index 157ab21411..0000000000 --- a/src/overlays/actors/ovl_En_Toryo/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Toryo -z_en_toryo.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Tp/overlay.cfg b/src/overlays/actors/ovl_En_Tp/overlay.cfg deleted file mode 100644 index c19bf9094f..0000000000 --- a/src/overlays/actors/ovl_En_Tp/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Tp -z_en_tp.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Tr/overlay.cfg b/src/overlays/actors/ovl_En_Tr/overlay.cfg deleted file mode 100644 index 3940cfc7e9..0000000000 --- a/src/overlays/actors/ovl_En_Tr/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Tr -z_en_tr.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Trap/overlay.cfg b/src/overlays/actors/ovl_En_Trap/overlay.cfg deleted file mode 100644 index 1fcb2b079f..0000000000 --- a/src/overlays/actors/ovl_En_Trap/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Trap -z_en_trap.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Tubo_Trap/overlay.cfg b/src/overlays/actors/ovl_En_Tubo_Trap/overlay.cfg deleted file mode 100644 index 709f03264a..0000000000 --- a/src/overlays/actors/ovl_En_Tubo_Trap/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Tubo_Trap -z_en_tubo_trap.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Vali/overlay.cfg b/src/overlays/actors/ovl_En_Vali/overlay.cfg deleted file mode 100644 index 5d33ef4454..0000000000 --- a/src/overlays/actors/ovl_En_Vali/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Vali -z_en_vali.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Vase/overlay.cfg b/src/overlays/actors/ovl_En_Vase/overlay.cfg deleted file mode 100644 index efe5442f3a..0000000000 --- a/src/overlays/actors/ovl_En_Vase/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Vase -z_en_vase.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Vb_Ball/overlay.cfg b/src/overlays/actors/ovl_En_Vb_Ball/overlay.cfg deleted file mode 100644 index 6c0ffe21fe..0000000000 --- a/src/overlays/actors/ovl_En_Vb_Ball/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Vb_Ball -z_en_vb_ball.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Viewer/overlay.cfg b/src/overlays/actors/ovl_En_Viewer/overlay.cfg deleted file mode 100644 index ba4782e028..0000000000 --- a/src/overlays/actors/ovl_En_Viewer/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Viewer -z_en_viewer.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Vm/overlay.cfg b/src/overlays/actors/ovl_En_Vm/overlay.cfg deleted file mode 100644 index 28cb398d2e..0000000000 --- a/src/overlays/actors/ovl_En_Vm/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Vm -z_en_vm.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Wall_Tubo/overlay.cfg b/src/overlays/actors/ovl_En_Wall_Tubo/overlay.cfg deleted file mode 100644 index fc25640e5b..0000000000 --- a/src/overlays/actors/ovl_En_Wall_Tubo/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Wall_Tubo -z_en_wall_tubo.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Wallmas/overlay.cfg b/src/overlays/actors/ovl_En_Wallmas/overlay.cfg deleted file mode 100644 index badbf57d02..0000000000 --- a/src/overlays/actors/ovl_En_Wallmas/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Wallmas -z_en_wallmas.c diff --git a/src/overlays/actors/ovl_En_Weather_Tag/overlay.cfg b/src/overlays/actors/ovl_En_Weather_Tag/overlay.cfg deleted file mode 100644 index 20cb696b83..0000000000 --- a/src/overlays/actors/ovl_En_Weather_Tag/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Weather_Tag -z_en_weather_tag.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Weiyer/overlay.cfg b/src/overlays/actors/ovl_En_Weiyer/overlay.cfg deleted file mode 100644 index 12371fe27f..0000000000 --- a/src/overlays/actors/ovl_En_Weiyer/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Weiyer -z_en_weiyer.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Wf/overlay.cfg b/src/overlays/actors/ovl_En_Wf/overlay.cfg deleted file mode 100644 index f58c55a546..0000000000 --- a/src/overlays/actors/ovl_En_Wf/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Wf -z_en_wf.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Wonder_Item/overlay.cfg b/src/overlays/actors/ovl_En_Wonder_Item/overlay.cfg deleted file mode 100644 index f01b29d922..0000000000 --- a/src/overlays/actors/ovl_En_Wonder_Item/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Wonder_Item -z_en_wonder_item.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Wonder_Talk/overlay.cfg b/src/overlays/actors/ovl_En_Wonder_Talk/overlay.cfg deleted file mode 100644 index 3429627fcb..0000000000 --- a/src/overlays/actors/ovl_En_Wonder_Talk/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Wonder_Talk -z_en_wonder_talk.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Wonder_Talk2/overlay.cfg b/src/overlays/actors/ovl_En_Wonder_Talk2/overlay.cfg deleted file mode 100644 index 4a5e35c028..0000000000 --- a/src/overlays/actors/ovl_En_Wonder_Talk2/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Wonder_Talk2 -z_en_wonder_talk2.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Wood02/overlay.cfg b/src/overlays/actors/ovl_En_Wood02/overlay.cfg deleted file mode 100644 index 88abbc0a01..0000000000 --- a/src/overlays/actors/ovl_En_Wood02/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Wood02 -z_en_wood02.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Xc/overlay.cfg b/src/overlays/actors/ovl_En_Xc/overlay.cfg deleted file mode 100644 index 2da7646b32..0000000000 --- a/src/overlays/actors/ovl_En_Xc/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Xc -z_en_xc.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Yabusame_Mark/overlay.cfg b/src/overlays/actors/ovl_En_Yabusame_Mark/overlay.cfg deleted file mode 100644 index 44774356b0..0000000000 --- a/src/overlays/actors/ovl_En_Yabusame_Mark/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Yabusame_Mark -z_en_yabusame_mark.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Yukabyun/overlay.cfg b/src/overlays/actors/ovl_En_Yukabyun/overlay.cfg deleted file mode 100644 index bc18c05b3d..0000000000 --- a/src/overlays/actors/ovl_En_Yukabyun/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Yukabyun -z_en_yukabyun.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Zf/overlay.cfg b/src/overlays/actors/ovl_En_Zf/overlay.cfg deleted file mode 100644 index 1f2106d6a5..0000000000 --- a/src/overlays/actors/ovl_En_Zf/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Zf -z_en_zf.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Zl1/overlay.cfg b/src/overlays/actors/ovl_En_Zl1/overlay.cfg deleted file mode 100644 index 7f3abc054c..0000000000 --- a/src/overlays/actors/ovl_En_Zl1/overlay.cfg +++ /dev/null @@ -1,3 +0,0 @@ -ovl_En_Zl1 -z_en_zl1_cutscene_data.c -z_en_zl1.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Zl2/overlay.cfg b/src/overlays/actors/ovl_En_Zl2/overlay.cfg deleted file mode 100644 index 00b489cda0..0000000000 --- a/src/overlays/actors/ovl_En_Zl2/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Zl2 -z_en_zl2.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Zl3/overlay.cfg b/src/overlays/actors/ovl_En_Zl3/overlay.cfg deleted file mode 100644 index 9d463776bc..0000000000 --- a/src/overlays/actors/ovl_En_Zl3/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Zl3 -z_en_zl3.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Zl4/overlay.cfg b/src/overlays/actors/ovl_En_Zl4/overlay.cfg deleted file mode 100644 index a18e3abe7b..0000000000 --- a/src/overlays/actors/ovl_En_Zl4/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Zl4 -z_en_zl4.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_Zo/overlay.cfg b/src/overlays/actors/ovl_En_Zo/overlay.cfg deleted file mode 100644 index f9565837ad..0000000000 --- a/src/overlays/actors/ovl_En_Zo/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_Zo -z_en_zo.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_En_fHG/overlay.cfg b/src/overlays/actors/ovl_En_fHG/overlay.cfg deleted file mode 100644 index efb2c4ab69..0000000000 --- a/src/overlays/actors/ovl_En_fHG/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_En_fHG -z_en_fhg.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_End_Title/overlay.cfg b/src/overlays/actors/ovl_End_Title/overlay.cfg deleted file mode 100644 index e57db71f6e..0000000000 --- a/src/overlays/actors/ovl_End_Title/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_End_Title -z_end_title.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Fishing/overlay.cfg b/src/overlays/actors/ovl_Fishing/overlay.cfg deleted file mode 100644 index 98022af4fa..0000000000 --- a/src/overlays/actors/ovl_Fishing/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Fishing -z_fishing.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Item_B_Heart/overlay.cfg b/src/overlays/actors/ovl_Item_B_Heart/overlay.cfg deleted file mode 100644 index 338cfc0b55..0000000000 --- a/src/overlays/actors/ovl_Item_B_Heart/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Item_B_Heart -z_item_b_heart.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Item_Etcetera/overlay.cfg b/src/overlays/actors/ovl_Item_Etcetera/overlay.cfg deleted file mode 100644 index 35442ee420..0000000000 --- a/src/overlays/actors/ovl_Item_Etcetera/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Item_Etcetera -z_item_etcetera.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Item_Inbox/overlay.cfg b/src/overlays/actors/ovl_Item_Inbox/overlay.cfg deleted file mode 100644 index f6106a526c..0000000000 --- a/src/overlays/actors/ovl_Item_Inbox/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Item_Inbox -z_item_inbox.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Item_Ocarina/overlay.cfg b/src/overlays/actors/ovl_Item_Ocarina/overlay.cfg deleted file mode 100644 index 04f38c0aed..0000000000 --- a/src/overlays/actors/ovl_Item_Ocarina/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Item_Ocarina -z_item_ocarina.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Item_Shield/overlay.cfg b/src/overlays/actors/ovl_Item_Shield/overlay.cfg deleted file mode 100644 index a0d435b238..0000000000 --- a/src/overlays/actors/ovl_Item_Shield/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Item_Shield -z_item_shield.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Magic_Dark/overlay.cfg b/src/overlays/actors/ovl_Magic_Dark/overlay.cfg deleted file mode 100644 index d946dede13..0000000000 --- a/src/overlays/actors/ovl_Magic_Dark/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Magic_Dark -z_magic_dark.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Magic_Fire/overlay.cfg b/src/overlays/actors/ovl_Magic_Fire/overlay.cfg deleted file mode 100644 index 7d03dba8fe..0000000000 --- a/src/overlays/actors/ovl_Magic_Fire/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Magic_Fire -z_magic_fire.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Magic_Wind/overlay.cfg b/src/overlays/actors/ovl_Magic_Wind/overlay.cfg deleted file mode 100644 index b9cc3ab1e0..0000000000 --- a/src/overlays/actors/ovl_Magic_Wind/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Magic_Wind -z_magic_wind.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Mir_Ray/overlay.cfg b/src/overlays/actors/ovl_Mir_Ray/overlay.cfg deleted file mode 100644 index 5c3cfc3794..0000000000 --- a/src/overlays/actors/ovl_Mir_Ray/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Mir_Ray -z_mir_ray.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Obj_Bean/overlay.cfg b/src/overlays/actors/ovl_Obj_Bean/overlay.cfg deleted file mode 100644 index da5ceb8c4a..0000000000 --- a/src/overlays/actors/ovl_Obj_Bean/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Obj_Bean -z_obj_bean.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Obj_Blockstop/overlay.cfg b/src/overlays/actors/ovl_Obj_Blockstop/overlay.cfg deleted file mode 100644 index deddea6713..0000000000 --- a/src/overlays/actors/ovl_Obj_Blockstop/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Obj_Blockstop -z_obj_blockstop.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Obj_Bombiwa/overlay.cfg b/src/overlays/actors/ovl_Obj_Bombiwa/overlay.cfg deleted file mode 100644 index 04039706ba..0000000000 --- a/src/overlays/actors/ovl_Obj_Bombiwa/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Obj_Bombiwa -z_obj_bombiwa.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Obj_Comb/overlay.cfg b/src/overlays/actors/ovl_Obj_Comb/overlay.cfg deleted file mode 100644 index 7b35d3f8a4..0000000000 --- a/src/overlays/actors/ovl_Obj_Comb/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Obj_Comb -z_obj_comb.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Obj_Dekujr/overlay.cfg b/src/overlays/actors/ovl_Obj_Dekujr/overlay.cfg deleted file mode 100644 index 730489c967..0000000000 --- a/src/overlays/actors/ovl_Obj_Dekujr/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Obj_Dekujr -z_obj_dekujr.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Obj_Elevator/overlay.cfg b/src/overlays/actors/ovl_Obj_Elevator/overlay.cfg deleted file mode 100644 index 0594ff201b..0000000000 --- a/src/overlays/actors/ovl_Obj_Elevator/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Obj_Elevator -z_obj_elevator.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Obj_Hamishi/overlay.cfg b/src/overlays/actors/ovl_Obj_Hamishi/overlay.cfg deleted file mode 100644 index 4dc5f5f200..0000000000 --- a/src/overlays/actors/ovl_Obj_Hamishi/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Obj_Hamishi -z_obj_hamishi.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Obj_Hana/overlay.cfg b/src/overlays/actors/ovl_Obj_Hana/overlay.cfg deleted file mode 100644 index d763c98eda..0000000000 --- a/src/overlays/actors/ovl_Obj_Hana/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Obj_Hana -z_obj_hana.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Obj_Hsblock/overlay.cfg b/src/overlays/actors/ovl_Obj_Hsblock/overlay.cfg deleted file mode 100644 index 835ca45d75..0000000000 --- a/src/overlays/actors/ovl_Obj_Hsblock/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Obj_Hsblock -z_obj_hsblock.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Obj_Ice_Poly/overlay.cfg b/src/overlays/actors/ovl_Obj_Ice_Poly/overlay.cfg deleted file mode 100644 index 9bd402b906..0000000000 --- a/src/overlays/actors/ovl_Obj_Ice_Poly/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Obj_Ice_Poly -z_obj_ice_poly.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Obj_Kibako/overlay.cfg b/src/overlays/actors/ovl_Obj_Kibako/overlay.cfg deleted file mode 100644 index c5b4abe025..0000000000 --- a/src/overlays/actors/ovl_Obj_Kibako/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Obj_Kibako -z_obj_kibako.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Obj_Kibako2/overlay.cfg b/src/overlays/actors/ovl_Obj_Kibako2/overlay.cfg deleted file mode 100644 index 1d9010892f..0000000000 --- a/src/overlays/actors/ovl_Obj_Kibako2/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Obj_Kibako2 -z_obj_kibako2.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Obj_Lift/overlay.cfg b/src/overlays/actors/ovl_Obj_Lift/overlay.cfg deleted file mode 100644 index 7908828b21..0000000000 --- a/src/overlays/actors/ovl_Obj_Lift/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Obj_Lift -z_obj_lift.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Obj_Lightswitch/overlay.cfg b/src/overlays/actors/ovl_Obj_Lightswitch/overlay.cfg deleted file mode 100644 index 357c07f95c..0000000000 --- a/src/overlays/actors/ovl_Obj_Lightswitch/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Obj_Lightswitch -z_obj_lightswitch.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Obj_Makekinsuta/overlay.cfg b/src/overlays/actors/ovl_Obj_Makekinsuta/overlay.cfg deleted file mode 100644 index 133d41dc1b..0000000000 --- a/src/overlays/actors/ovl_Obj_Makekinsuta/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Obj_Makekinsuta -z_obj_makekinsuta.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Obj_Makeoshihiki/overlay.cfg b/src/overlays/actors/ovl_Obj_Makeoshihiki/overlay.cfg deleted file mode 100644 index 91da51bb44..0000000000 --- a/src/overlays/actors/ovl_Obj_Makeoshihiki/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Obj_Makeoshihiki -z_obj_makeoshihiki.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Obj_Mure/overlay.cfg b/src/overlays/actors/ovl_Obj_Mure/overlay.cfg deleted file mode 100644 index 890e0f5a6c..0000000000 --- a/src/overlays/actors/ovl_Obj_Mure/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Obj_Mure -z_obj_mure.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Obj_Mure2/overlay.cfg b/src/overlays/actors/ovl_Obj_Mure2/overlay.cfg deleted file mode 100644 index 521b57981b..0000000000 --- a/src/overlays/actors/ovl_Obj_Mure2/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Obj_Mure2 -z_obj_mure2.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Obj_Mure3/overlay.cfg b/src/overlays/actors/ovl_Obj_Mure3/overlay.cfg deleted file mode 100644 index 40be2771fd..0000000000 --- a/src/overlays/actors/ovl_Obj_Mure3/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Obj_Mure3 -z_obj_mure3.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Obj_Oshihiki/overlay.cfg b/src/overlays/actors/ovl_Obj_Oshihiki/overlay.cfg deleted file mode 100644 index 8bf6abc0f8..0000000000 --- a/src/overlays/actors/ovl_Obj_Oshihiki/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Obj_Oshihiki -z_obj_oshihiki.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Obj_Roomtimer/overlay.cfg b/src/overlays/actors/ovl_Obj_Roomtimer/overlay.cfg deleted file mode 100644 index 475e0c0cdd..0000000000 --- a/src/overlays/actors/ovl_Obj_Roomtimer/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Obj_Roomtimer -z_obj_roomtimer.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Obj_Switch/overlay.cfg b/src/overlays/actors/ovl_Obj_Switch/overlay.cfg deleted file mode 100644 index d186004665..0000000000 --- a/src/overlays/actors/ovl_Obj_Switch/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Obj_Switch -z_obj_switch.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Obj_Syokudai/overlay.cfg b/src/overlays/actors/ovl_Obj_Syokudai/overlay.cfg deleted file mode 100644 index 1de5278f79..0000000000 --- a/src/overlays/actors/ovl_Obj_Syokudai/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Obj_Syokudai -z_obj_syokudai.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Obj_Timeblock/overlay.cfg b/src/overlays/actors/ovl_Obj_Timeblock/overlay.cfg deleted file mode 100644 index 958f7cca8b..0000000000 --- a/src/overlays/actors/ovl_Obj_Timeblock/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Obj_Timeblock -z_obj_timeblock.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Obj_Tsubo/overlay.cfg b/src/overlays/actors/ovl_Obj_Tsubo/overlay.cfg deleted file mode 100644 index bb4aa18b4b..0000000000 --- a/src/overlays/actors/ovl_Obj_Tsubo/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Obj_Tsubo -z_obj_tsubo.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Obj_Warp2block/overlay.cfg b/src/overlays/actors/ovl_Obj_Warp2block/overlay.cfg deleted file mode 100644 index 03fae6f503..0000000000 --- a/src/overlays/actors/ovl_Obj_Warp2block/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Obj_Warp2block -z_obj_warp2block.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Object_Kankyo/overlay.cfg b/src/overlays/actors/ovl_Object_Kankyo/overlay.cfg deleted file mode 100644 index 4f5de80bc1..0000000000 --- a/src/overlays/actors/ovl_Object_Kankyo/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Object_Kankyo -z_object_kankyo.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Oceff_Spot/overlay.cfg b/src/overlays/actors/ovl_Oceff_Spot/overlay.cfg deleted file mode 100644 index 73b0a750e4..0000000000 --- a/src/overlays/actors/ovl_Oceff_Spot/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Oceff_Spot -z_oceff_spot.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Oceff_Storm/overlay.cfg b/src/overlays/actors/ovl_Oceff_Storm/overlay.cfg deleted file mode 100644 index 0c37d359e5..0000000000 --- a/src/overlays/actors/ovl_Oceff_Storm/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Oceff_Storm -z_oceff_storm.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Oceff_Wipe/overlay.cfg b/src/overlays/actors/ovl_Oceff_Wipe/overlay.cfg deleted file mode 100644 index 68939d3ea8..0000000000 --- a/src/overlays/actors/ovl_Oceff_Wipe/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Oceff_Wipe -z_oceff_wipe.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Oceff_Wipe2/overlay.cfg b/src/overlays/actors/ovl_Oceff_Wipe2/overlay.cfg deleted file mode 100644 index 0cece95f54..0000000000 --- a/src/overlays/actors/ovl_Oceff_Wipe2/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Oceff_Wipe2 -z_oceff_wipe2.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Oceff_Wipe3/overlay.cfg b/src/overlays/actors/ovl_Oceff_Wipe3/overlay.cfg deleted file mode 100644 index 0ffc948624..0000000000 --- a/src/overlays/actors/ovl_Oceff_Wipe3/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Oceff_Wipe3 -z_oceff_wipe3.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Oceff_Wipe4/overlay.cfg b/src/overlays/actors/ovl_Oceff_Wipe4/overlay.cfg deleted file mode 100644 index b472c89e41..0000000000 --- a/src/overlays/actors/ovl_Oceff_Wipe4/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Oceff_Wipe4 -z_oceff_wipe4.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_Shot_Sun/overlay.cfg b/src/overlays/actors/ovl_Shot_Sun/overlay.cfg deleted file mode 100644 index 6b7ee6e65d..0000000000 --- a/src/overlays/actors/ovl_Shot_Sun/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Shot_Sun -z_shot_sun.c \ No newline at end of file diff --git a/src/overlays/actors/ovl_player_actor/overlay.cfg b/src/overlays/actors/ovl_player_actor/overlay.cfg deleted file mode 100644 index 78e5ddf186..0000000000 --- a/src/overlays/actors/ovl_player_actor/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_player_actor -z_player.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_Blast/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_Blast/overlay.cfg deleted file mode 100644 index 56f7d5a4be..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_Blast/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_Blast -z_eff_ss_blast.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_Bomb/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_Bomb/overlay.cfg deleted file mode 100644 index 91898a280c..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_Bomb/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_Bomb -z_eff_ss_bomb.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_Bomb2/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_Bomb2/overlay.cfg deleted file mode 100644 index cfc1156fdd..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_Bomb2/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_Bomb2 -z_eff_ss_bomb2.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_Bubble/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_Bubble/overlay.cfg deleted file mode 100644 index fc2a8c3c21..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_Bubble/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_Bubble -z_eff_ss_bubble.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_D_Fire/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_D_Fire/overlay.cfg deleted file mode 100644 index d004cc690b..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_D_Fire/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_D_Fire -z_eff_ss_d_fire.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_Dead_Db/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_Dead_Db/overlay.cfg deleted file mode 100644 index a9a3c7a413..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_Dead_Db/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_Dead_Db -z_eff_ss_dead_db.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_Dead_Dd/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_Dead_Dd/overlay.cfg deleted file mode 100644 index 3276595582..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_Dead_Dd/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_Dead_Dd -z_eff_ss_dead_dd.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_Dead_Ds/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_Dead_Ds/overlay.cfg deleted file mode 100644 index f2e95c377c..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_Dead_Ds/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_Dead_Ds -z_eff_ss_dead_ds.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_Dead_Sound/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_Dead_Sound/overlay.cfg deleted file mode 100644 index 0989b0a00c..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_Dead_Sound/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_Dead_Sound -z_eff_ss_dead_sound.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_Dt_Bubble/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_Dt_Bubble/overlay.cfg deleted file mode 100644 index 6e48c1cf19..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_Dt_Bubble/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_Dt_Bubble -z_eff_ss_dt_bubble.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_Dust/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_Dust/overlay.cfg deleted file mode 100644 index 2de92a0c35..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_Dust/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_Dust -z_eff_ss_dust.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_En_Fire/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_En_Fire/overlay.cfg deleted file mode 100644 index a923b6f58a..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_En_Fire/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_En_Fire -z_eff_ss_en_fire.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_En_Ice/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_En_Ice/overlay.cfg deleted file mode 100644 index 50953ee9be..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_En_Ice/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_En_Ice -z_eff_ss_en_ice.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_Extra/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_Extra/overlay.cfg deleted file mode 100644 index ff3908b419..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_Extra/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_Extra -z_eff_ss_extra.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_Fcircle/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_Fcircle/overlay.cfg deleted file mode 100644 index 68c543924e..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_Fcircle/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_Fcircle -z_eff_ss_fcircle.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_Fhg_Flash/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_Fhg_Flash/overlay.cfg deleted file mode 100644 index 82a96866a1..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_Fhg_Flash/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_Fhg_Flash -z_eff_ss_fhg_flash.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_Fire_Tail/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_Fire_Tail/overlay.cfg deleted file mode 100644 index 772cb7f64d..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_Fire_Tail/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_Fire_Tail -z_eff_ss_fire_tail.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_G_Fire/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_G_Fire/overlay.cfg deleted file mode 100644 index 662bd6b10f..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_G_Fire/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_G_Fire -z_eff_ss_g_fire.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_G_Magma/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_G_Magma/overlay.cfg deleted file mode 100644 index 7c28ef157d..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_G_Magma/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_G_Magma -z_eff_ss_g_magma.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_G_Magma2/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_G_Magma2/overlay.cfg deleted file mode 100644 index ef72d37fef..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_G_Magma2/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_G_Magma2 -z_eff_ss_g_magma2.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_G_Ripple/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_G_Ripple/overlay.cfg deleted file mode 100644 index 95a5ee04c9..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_G_Ripple/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_G_Ripple -z_eff_ss_g_ripple.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_G_Spk/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_G_Spk/overlay.cfg deleted file mode 100644 index 7d3b6318dd..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_G_Spk/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_G_Spk -z_eff_ss_g_spk.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_G_Splash/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_G_Splash/overlay.cfg deleted file mode 100644 index 89826d8d3d..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_G_Splash/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_G_Splash -z_eff_ss_g_splash.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_Hahen/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_Hahen/overlay.cfg deleted file mode 100644 index 5042c45bbe..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_Hahen/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_Hahen -z_eff_ss_hahen.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_HitMark/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_HitMark/overlay.cfg deleted file mode 100644 index c618d9c518..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_HitMark/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_HitMark -z_eff_ss_hitmark.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_Ice_Piece/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_Ice_Piece/overlay.cfg deleted file mode 100644 index 0fa058f07b..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_Ice_Piece/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_Ice_Piece -z_eff_ss_ice_piece.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_Ice_Smoke/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_Ice_Smoke/overlay.cfg deleted file mode 100644 index 22627be007..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_Ice_Smoke/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_Ice_Smoke -z_eff_ss_ice_smoke.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_K_Fire/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_K_Fire/overlay.cfg deleted file mode 100644 index 83af5f816f..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_K_Fire/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_K_Fire -z_eff_ss_k_fire.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_Kakera/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_Kakera/overlay.cfg deleted file mode 100644 index 2a7ba92249..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_Kakera/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_Kakera -z_eff_ss_kakera.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_KiraKira/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_KiraKira/overlay.cfg deleted file mode 100644 index 199919a6ac..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_KiraKira/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_KiraKira -z_eff_ss_kirakira.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_Lightning/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_Lightning/overlay.cfg deleted file mode 100644 index 6d7e902c6c..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_Lightning/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_Lightning -z_eff_ss_lightning.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_Sibuki/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_Sibuki/overlay.cfg deleted file mode 100644 index a6247696d6..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_Sibuki/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_Sibuki -z_eff_ss_sibuki.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_Sibuki2/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_Sibuki2/overlay.cfg deleted file mode 100644 index e28bf323de..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_Sibuki2/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_Sibuki2 -z_eff_ss_sibuki2.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_Solder_Srch_Ball/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_Solder_Srch_Ball/overlay.cfg deleted file mode 100644 index 836ea6be9f..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_Solder_Srch_Ball/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_Solder_Srch_Ball -z_eff_ss_solder_srch_ball.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_Stick/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_Stick/overlay.cfg deleted file mode 100644 index 85612ee655..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_Stick/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_Stick -z_eff_ss_stick.c \ No newline at end of file diff --git a/src/overlays/effects/ovl_Effect_Ss_Stone1/overlay.cfg b/src/overlays/effects/ovl_Effect_Ss_Stone1/overlay.cfg deleted file mode 100644 index e8a07932b6..0000000000 --- a/src/overlays/effects/ovl_Effect_Ss_Stone1/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_Effect_Ss_Stone1 -z_eff_ss_stone1.c \ No newline at end of file diff --git a/src/overlays/gamestates/ovl_file_choose/overlay.cfg b/src/overlays/gamestates/ovl_file_choose/overlay.cfg deleted file mode 100644 index 6ab3dccebf..0000000000 --- a/src/overlays/gamestates/ovl_file_choose/overlay.cfg +++ /dev/null @@ -1,5 +0,0 @@ -ovl_file_choose -z_file_nameset_data.c -z_file_copy_erase.c -z_file_nameset_PAL.c -z_file_choose.c \ No newline at end of file diff --git a/src/overlays/gamestates/ovl_opening/overlay.cfg b/src/overlays/gamestates/ovl_opening/overlay.cfg deleted file mode 100644 index da20c5e821..0000000000 --- a/src/overlays/gamestates/ovl_opening/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_opening -z_opening.c \ No newline at end of file diff --git a/src/overlays/gamestates/ovl_select/overlay.cfg b/src/overlays/gamestates/ovl_select/overlay.cfg deleted file mode 100644 index 6059f7a58b..0000000000 --- a/src/overlays/gamestates/ovl_select/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_select -z_select.c \ No newline at end of file diff --git a/src/overlays/gamestates/ovl_title/overlay.cfg b/src/overlays/gamestates/ovl_title/overlay.cfg deleted file mode 100644 index ab50611327..0000000000 --- a/src/overlays/gamestates/ovl_title/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_title -z_title.c \ No newline at end of file diff --git a/src/overlays/misc/ovl_kaleido_scope/overlay.cfg b/src/overlays/misc/ovl_kaleido_scope/overlay.cfg deleted file mode 100644 index d9bc0eb65a..0000000000 --- a/src/overlays/misc/ovl_kaleido_scope/overlay.cfg +++ /dev/null @@ -1,10 +0,0 @@ -ovl_kaleido_scope -z_kaleido_collect.c -z_kaleido_debug.c -z_kaleido_equipment.c -z_kaleido_item.c -z_kaleido_map_PAL.c -z_kaleido_prompt.c -z_kaleido_scope_PAL.c -z_lmap_mark.c -z_lmap_mark_data.c \ No newline at end of file diff --git a/src/overlays/misc/ovl_map_mark_data/overlay.cfg b/src/overlays/misc/ovl_map_mark_data/overlay.cfg deleted file mode 100644 index b29d893c08..0000000000 --- a/src/overlays/misc/ovl_map_mark_data/overlay.cfg +++ /dev/null @@ -1,2 +0,0 @@ -ovl_map_mark_data -z_map_mark_data.c \ No newline at end of file diff --git a/tools/.gitignore b/tools/.gitignore index e656d33ec0..4dff1be3ae 100644 --- a/tools/.gitignore +++ b/tools/.gitignore @@ -4,6 +4,7 @@ elf2rom makeromfs mkdmadata mkldscript +reloc_prereq vtxdis yaz0 diff --git a/tools/Makefile b/tools/Makefile index 5356fd8909..4d342e2485 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -1,5 +1,5 @@ CFLAGS := -Wall -Wextra -pedantic -std=c99 -g -O2 -PROGRAMS := elf2rom makeromfs mkdmadata mkldscript vtxdis yaz0 +PROGRAMS := elf2rom makeromfs mkdmadata mkldscript reloc_prereq vtxdis yaz0 ifeq ($(shell command -v clang >/dev/null 2>&1; echo $$?),0) CC := clang @@ -18,22 +18,26 @@ ifneq ($(LLD),0) endif all: $(PROGRAMS) - cd ZAPD && $(MAKE) + $(MAKE) -C ZAPD + $(MAKE) -C fado clean: $(RM) $(PROGRAMS) $(addsuffix .exe,$(PROGRAMS)) $(MAKE) -C ZAPD clean + $(MAKE) -C fado clean distclean: clean .PHONY: all clean distclean -elf2rom_SOURCES := elf2rom.c elf32.c n64chksum.c util.c -makeromfs_SOURCES := makeromfs.c n64chksum.c util.c -mkdmadata_SOURCES := mkdmadata.c spec.c util.c -mkldscript_SOURCES := mkldscript.c spec.c util.c -vtxdis_SOURCES := vtxdis.c -yaz0_SOURCES := yaz0tool.c yaz0.c util.c +elf2rom_SOURCES := elf2rom.c elf32.c n64chksum.c util.c +makeromfs_SOURCES := makeromfs.c n64chksum.c util.c +mkdmadata_SOURCES := mkdmadata.c spec.c util.c +mkldscript_SOURCES := mkldscript.c spec.c util.c +reloc_prereq_SOURCES := reloc_prereq.c spec.c util.c +vtxdis_SOURCES := vtxdis.c +yaz0_SOURCES := yaz0tool.c yaz0.c util.c + define COMPILE = $(1): $($1_SOURCES) diff --git a/tools/elf32.h b/tools/elf32.h index 666f6e917b..d291883f52 100644 --- a/tools/elf32.h +++ b/tools/elf32.h @@ -1,5 +1,7 @@ -#ifndef _ELF_H_ -#define _ELF_H_ +#ifndef ELF_H +#define ELF_H + +#include enum { diff --git a/tools/fado/.clang-format b/tools/fado/.clang-format new file mode 100644 index 0000000000..c7b900f060 --- /dev/null +++ b/tools/fado/.clang-format @@ -0,0 +1,23 @@ +IndentWidth: 4 +Language: Cpp +UseTab: Never +ColumnLimit: 120 +PointerAlignment: Left +BreakBeforeBraces: Attach +SpaceAfterCStyleCast: false +Cpp11BracedListStyle: false +IndentCaseLabels: true +BinPackArguments: true +BinPackParameters: true +AlignAfterOpenBracket: Align +AlignOperands: true +BreakBeforeTernaryOperators: true +BreakBeforeBinaryOperators: None +AllowShortBlocksOnASingleLine: true +AllowShortIfStatementsOnASingleLine: false +AllowShortLoopsOnASingleLine: false +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: false +AlignEscapedNewlines: Left +AlignTrailingComments: true +SortIncludes: false diff --git a/tools/fado/.gitignore b/tools/fado/.gitignore new file mode 100644 index 0000000000..83b94860c7 --- /dev/null +++ b/tools/fado/.gitignore @@ -0,0 +1,56 @@ +# Prerequisites +*.d + +# Object files +*.o +*.ko +*.obj +*.elf + +# Linker output +*.ilk +*.map +*.exp + +# Precompiled Headers +*.gch +*.pch + +# Libraries +*.lib +*.a +*.la +*.lo + +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib + +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex + +# Debug files +*.dSYM/ +*.su +*.idb +*.pdb + +# Kernel Module Compile Results +*.mod* +*.cmd +.tmp_versions/ +modules.order +Module.symvers +Mkfile.old +dkms.conf + +# Custom +build/ +.vscode diff --git a/tools/fado/.gitrepo b/tools/fado/.gitrepo new file mode 100644 index 0000000000..d45228dd07 --- /dev/null +++ b/tools/fado/.gitrepo @@ -0,0 +1,12 @@ +; DO NOT EDIT (unless you know what you are doing) +; +; This subdirectory is a git "subrepo", and this file is maintained by the +; git-subrepo command. See https://github.com/git-commands/git-subrepo#readme +; +[subrepo] + remote = git@github.com:EllipticEllipsis/fado.git + branch = master + commit = 43c339a597dfd308f14540b1151dc289f6cdb786 + parent = a5ed690de0e30b4a0355481bbabecb83b99bc102 + method = merge + cmdver = 0.4.3 diff --git a/tools/fado/LICENSE b/tools/fado/LICENSE new file mode 100644 index 0000000000..0ad25db4bd --- /dev/null +++ b/tools/fado/LICENSE @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. diff --git a/tools/fado/Makefile b/tools/fado/Makefile new file mode 100644 index 0000000000..79bf34a535 --- /dev/null +++ b/tools/fado/Makefile @@ -0,0 +1,69 @@ +DEBUG ?= 0 +LLD ?= 0 +ASAN ?= 0 + +ELF := fado.elf + +CC := $(shell ./find_program.sh gcc clang clang-[0-9][0-9] clang-[0-9]) +LD := $(shell ./find_program.sh ld ld.lld ld.lld-*) +INC := -I include -I lib +WARNINGS := -Wall -Wextra -Wpedantic -Wshadow -Werror=implicit-function-declaration -Wvla -Wno-unused-function +CFLAGS := -std=c11 +LDFLAGS := + +ifeq ($(DEBUG),0) + OPTFLAGS := -O2 + CFLAGS += -Werror +else + OPTFLAGS := -O0 -g3 -DDEBUG_ON +endif + +ifneq ($(ASAN),0) + CFLAGS += -fsanitize=address -fsanitize=pointer-compare -fsanitize=pointer-subtract -fsanitize=undefined +endif + +ifneq ($(LLD),0) + LDFLAGS += -fuse-ld=lld +else +ifneq ($(LD),ld) + LDFLAGS += -fuse-ld=lld +endif +endif + +# GCC is too stupid to be trusted with these warnings +ifeq ($(CC),gcc) + WARNINGS += -Wno-implicit-fallthrough -Wno-maybe-uninitialized +endif + +SRC_DIRS := $(shell find src -type d) +C_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c)) +H_FILES := $(foreach dir,$(INC),$(wildcard $(dir)/*.h)) +O_FILES := $(foreach f,$(C_FILES:.c=.o),build/$f) + +LIB_DIRS := $(shell find lib -type d) +# exclude test file since we don't want it +C_LIB_FILES := $(filter-out lib/vc_vector/vc_vector_test.c, $(foreach dir,$(LIB_DIRS),$(wildcard $(dir)/*.c))) +O_LIB_FILES := $(foreach f,$(C_LIB_FILES:.c=.o),build/$f) + +# Main targets +all: $(ELF) + +clean: + $(RM) -r build $(ELF) + +format: + clang-format-11 -i $(C_FILES) $(H_FILES) + +.PHONY: all clean format + +# create build directories +$(shell mkdir -p $(foreach dir,$(SRC_DIRS),build/$(dir)) $(foreach dir,$(LIB_DIRS),build/$(dir))) + +$(ELF): $(O_FILES) $(O_LIB_FILES) + $(CC) $(INC) $(WARNINGS) $(CFLAGS) $(OPTFLAGS) $(LDFLAGS) -o $@ $^ + +build/%.o: %.c $(H_FILES) + $(CC) -c $(INC) $(WARNINGS) $(CFLAGS) $(OPTFLAGS) -o $@ $< + +build/lib/%.o: lib/%.c + $(CC) -c $(INC) $(WARNINGS) $(CFLAGS) $(OPTFLAGS) -o $@ $< diff --git a/tools/fado/README.md b/tools/fado/README.md new file mode 100644 index 0000000000..9ff8e3e725 --- /dev/null +++ b/tools/fado/README.md @@ -0,0 +1,11 @@ +# fado +*Fairy-Assisted (relocations for) Decomplied Overlays* + + +Contains +- **Fairy** a library for reading N64 ELF files (big-endian) +- **Fado** a program for generating the `.ovl`/relocation section for Zelda64 overlay files + +Compatible with both IDO and GCC. + +Format is the standard .ovl section, with the relocs divided by section. It will also print the name the associated variable if it can find it in the ELF (for IDO, this is only if it is not static, whereas GCC sometimes seems to retain all of them). diff --git a/tools/fado/find_program.sh b/tools/fado/find_program.sh new file mode 100755 index 0000000000..755b94c584 --- /dev/null +++ b/tools/fado/find_program.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +for i in "${@:2}" + do + RESULT=$(IFS=:;find $PATH -maxdepth 1 -name "$i" -print -quit 2> /dev/null | grep -o '[^/]*$') + COUNT=$(echo "$RESULT" | wc -c) + + if [ $COUNT -gt 1 ] + then + echo $RESULT + exit 0 + fi + done + +echo $1 +exit 0 diff --git a/tools/fado/include/fado.h b/tools/fado/include/fado.h new file mode 100644 index 0000000000..6044d0a245 --- /dev/null +++ b/tools/fado/include/fado.h @@ -0,0 +1,8 @@ +/* Copyright (C) 2021 Elliptic Ellipsis */ +/* SPDX-License-Identifier: AGPL-3.0-only */ +#pragma once + +#include + +void Fado_Relocs(FILE* outputFile, int inputFilesCount, FILE** inputFiles, const char* ovlName); +// void Fado_WriteRelocFile(FILE* outputFile, FILE** inputFiles, int inputFilesCount); diff --git a/tools/fado/include/help.h b/tools/fado/include/help.h new file mode 100644 index 0000000000..e005262794 --- /dev/null +++ b/tools/fado/include/help.h @@ -0,0 +1,24 @@ +/* Copyright (C) 2021 Elliptic Ellipsis */ +/* SPDX-License-Identifier: AGPL-3.0-only */ +#pragma once + +#include +#include + +typedef struct { + struct option longOpt; + char* helpArg; + char* helpMsg; +} OptInfo; + +typedef struct { + char* helpArg; + char* helpMsg; +} PosArgInfo; + +/* Formatting sizes used by Help_PrintHelp. Change them before calling Help_PrintHelp to use custom values */ +extern size_t helpTextWidth; +extern size_t helpDtIndent; +extern size_t helpDdIndent; + +void Help_PrintHelp(const char* prologue, size_t posArgCount, const PosArgInfo* posArgInfo, size_t optCount, const OptInfo* optInfo, const char* epilogue); diff --git a/tools/fado/include/macros.h b/tools/fado/include/macros.h new file mode 100644 index 0000000000..9d3731080d --- /dev/null +++ b/tools/fado/include/macros.h @@ -0,0 +1,21 @@ +/* Copyright (C) 2021 Elliptic Ellipsis */ +/* SPDX-License-Identifier: AGPL-3.0-only */ +#pragma once + +#include "vc_vector/vc_vector.h" + +/* C macros */ +#define ARRAY_COUNT(arr) (signed long long)(sizeof(arr) / sizeof(arr[0])) +#define ARRAY_COUNTU(arr) (unsigned long long)(sizeof(arr) / sizeof(arr[0])) + +/* Mathematical macros */ +#define ABS(x) ((x) < 0 ? -(x) : (x)) + +#define CLAMP(x, min, max) ((x) < (min) ? (min) : (x) > (max) ? (max) : (x)) +#define CLAMP_MAX(x, max) ((x) > (max) ? (max) : (x)) +#define CLAMP_MIN(x, min) ((x) < (min) ? (min) : (x)) +#define MEDIAN3(a1, a2, a3) \ + ((a2 >= a1) ? ((a3 >= a2) ? a2 : ((a1 >= a3) ? a1 : a3)) : ((a2 >= a3) ? a2 : ((a3 >= a1) ? a1 : a3))) + +/* vc_vector macros - really these should go in vc_vector.h, but not much choice without touching the library files */ +#define VC_FOREACH(i, v) for (i = vc_vector_begin(v); i != vc_vector_end(v); i = vc_vector_next(v, i)) diff --git a/tools/fado/include/mido.h b/tools/fado/include/mido.h new file mode 100644 index 0000000000..b40d8a4c30 --- /dev/null +++ b/tools/fado/include/mido.h @@ -0,0 +1,6 @@ +#pragma once + +#include +#include "vc_vector/vc_vector.h" + +int Mido_WriteDependencyFile(FILE* dependencyFile, const char* relocFile, vc_vector* inputFilesVector); diff --git a/tools/fado/lib/fairy/fairy.c b/tools/fado/lib/fairy/fairy.c new file mode 100644 index 0000000000..90bd4d1c5b --- /dev/null +++ b/tools/fado/lib/fairy/fairy.c @@ -0,0 +1,330 @@ +/** + * Functions for working with N64 ELF files. + * For now relies on (GNU) elf.h, but may move away from this in future. + */ +/* Copyright (C) 2021 Elliptic Ellipsis */ +/* SPDX-License-Identifier: AGPL-3.0-only */ +#include "fairy.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "vc_vector/vc_vector.h" + +VerbosityLevel gVerbosity = VERBOSITY_NONE; + +int Fairy_DebugPrintf(const char* file, int line, const char* func,VerbosityLevel level, const char* fmt, ...) { + if (gVerbosity >= level) { + int ret = 0; + va_list args; + va_start(args, fmt); + + if (gVerbosity >= VERBOSITY_DEBUG) { + ret += fprintf(stderr, "%s:%d:%s: ", file, line, func); + } + + ret += vfprintf(stderr, fmt, args); + va_end(args); + return ret; + } + return 0; +} + +/* Endian readers. MIPS is BE, so only need these */ +static Elf32_Half Fairy_ReadHalf(const uint8_t* data) { + return data[0] << 8 | data[1] << 0; +} + +static Elf32_Word Fairy_ReadWord(const uint8_t* data) { + return data[0] << 24 | data[1] << 16 | data[2] << 8 | data[3] << 0; +} + +static bool Fairy_VerifyMagic(const uint8_t* data) { + return (data[0] == 0x7F && data[1] == 'E' && data[2] == 'L' && data[3] == 'F'); +} + +static uint16_t Fairy_Swap16(uint16_t x) { + return ((x & 0xFF) << 0x8) | ((x & 0xFF00) >> 0x8); +} + +static uint32_t Fairy_Swap32(uint32_t x) { + return ((x & 0xFF) << 0x18) | ((x & 0xFF00) << 0x8) | ((x & 0xFF0000) >> 0x8) | ((x & 0xFF000000) >> 0x18); +} + +/* "Re-encode/Re-endianise", i.e. byteswap if required */ +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define REEND16(x) Fairy_Swap16(x) +#define REEND32(x) Fairy_Swap32(x) +#else +#define REEND16(x) (x) +#define REEND32(x) (x) +#endif + +const char* Fairy_StringFromDefine(const FairyDefineString* dict, int define) { + size_t i; + for (i = 0; dict[i].string != NULL; i++) { + if (dict[i].define == define) { + return dict[i].string; + } + } + return NULL; +} + +/** + * Returns true if the string 'initial' is contained in the string 'string' + * 'initial' must be null-terminated, 'string' ideally is. + */ +bool Fairy_StartsWith(const char* string, const char* initial) { + char s; + char i; + do { + s = *string++; + i = *initial++; + if (i == '\0') { + return true; + } + } while (s == i); + return false; +} + +/* Reading functions */ + +/** + * Every reading function: + * - Returns the pointer to the struct + * - Takes the ouput struct or array as its first argument. This must be pre-allocated + * - Takes the input file as the second argument (At least until I am persuaded to read the whole file into RAM...) + * - The rest of the arguments are important information about the struct it is reading (offset and size, usually) + */ + +FairyFileHeader* Fairy_ReadFileHeader(FairyFileHeader* header, FILE* file) { + fseek(file, 0, SEEK_SET); + assert(fread(header, 0x34, 1, file) != 0); + + if (!Fairy_VerifyMagic(header->e_ident)) { + fprintf(stderr, "Not a valid ELF file\n"); + return NULL; + } + + if (header->e_ident[EI_CLASS] != ELFCLASS32) { + fprintf(stderr, "Not a 32-bit ELF file\n"); + return NULL; + } + + header->e_type = REEND16(header->e_type); + header->e_machine = REEND16(header->e_machine); + header->e_version = REEND32(header->e_version); + header->e_entry = REEND32(header->e_entry); + header->e_phoff = REEND32(header->e_phoff); + header->e_shoff = REEND32(header->e_shoff); + header->e_flags = REEND32(header->e_flags); + header->e_ehsize = REEND16(header->e_ehsize); + header->e_phentsize = REEND16(header->e_phentsize); + header->e_phnum = REEND16(header->e_phnum); + header->e_shentsize = REEND16(header->e_shentsize); + header->e_shnum = REEND16(header->e_shnum); + header->e_shstrndx = REEND16(header->e_shstrndx); + + return header; +} + +/* tableOffset and number should be obtained from the file header */ +FairySecHeader* Fairy_ReadSectionTable(FairySecHeader* sectionTable, FILE* file, size_t tableOffset, size_t number) { + size_t entrySize = sizeof(FairySecHeader); + size_t tableSize = number * entrySize; + + fseek(file, tableOffset, SEEK_SET); + assert(fread(sectionTable, tableSize, 1, file) != 0); + + /* Since the section table happens to only have entries of width 4, we can byteswap it by pretending it is a raw + * uint32_t array */ + { + size_t i; + uint32_t* data = (uint32_t*)sectionTable; + for (i = 0; i < tableSize / sizeof(uint32_t); i++) { + data[i] = REEND32(data[i]); + } + } + + return sectionTable; +} + +FairySym* Fairy_ReadSymbolTable(FairySym* symbolTable, FILE* file, size_t tableOffset, size_t tableSize) { + size_t number = tableSize / sizeof(FairySym); + + fseek(file, tableOffset, SEEK_SET); + assert(fread(symbolTable, tableSize, 1, file) != 0); + + /* Reend the variables that are larger than bytes */ + { + size_t i; + for (i = 0; i < number; i++) { + symbolTable[i].st_name = REEND32(symbolTable[i].st_name); + symbolTable[i].st_value = REEND32(symbolTable[i].st_value); + symbolTable[i].st_size = REEND32(symbolTable[i].st_size); + symbolTable[i].st_shndx = REEND16(symbolTable[i].st_shndx); + } + } + + return symbolTable; +} + +/* Can be used for both the section header string table and the strtab */ +char* Fairy_ReadStringTable(char* stringTable, FILE* file, size_t tableOffset, size_t tableSize) { + fseek(file, tableOffset, SEEK_SET); + assert(fread(stringTable, tableSize, 1, file) != 0); + return stringTable; +} + +/* offset and number are attained from the section table */ +FairyRel* Fairy_ReadRelocs(FairyRel* relocTable, FILE* file, size_t offset, size_t size) { + fseek(file, offset, SEEK_SET); + assert(fread(relocTable, size, 1, file) != 0); + + /* Reend the variables that are larger than bytes */ + { + size_t i; + uint32_t* data = (uint32_t*)relocTable; + for (i = 0; i < size / sizeof(uint32_t); i++) { + data[i] = REEND32(data[i]); + } + } + + return relocTable; +} + +char* Fairy_GetSectionName(FairySecHeader* sectionTable, char* shstrtab, size_t index) { + return &shstrtab[sectionTable[index].sh_name]; +} + +/* Look up the index in the symbol table and return a pointer to the beginning of its string */ +char* Fairy_GetSymbolName(FairySym* symtab, char* strtab, size_t index) { + return &strtab[symtab[index].st_name]; +} + +/* FairyFileInfo functions */ + +void Fairy_InitFile(FairyFileInfo* fileInfo, FILE* file) { + FairyFileHeader fileHeader; + FairySecHeader* sectionTable; + char* shstrtab; + int i; + + assert(fileInfo != NULL); + assert(file != NULL); + + fileInfo->progBitsSections = vc_vector_create(3, sizeof(Elf32_Section), NULL); + for (i = 0; i < 3; i++) { + fileInfo->progBitsSizes[i] = 0; + } + Fairy_ReadFileHeader(&fileHeader, file); + + sectionTable = malloc(fileHeader.e_shnum * fileHeader.e_shentsize); + Fairy_ReadSectionTable(sectionTable, file, fileHeader.e_shoff, fileHeader.e_shnum); + + shstrtab = malloc(sectionTable[fileHeader.e_shstrndx].sh_size * sizeof(char)); + fseek(file, sectionTable[fileHeader.e_shstrndx].sh_offset, SEEK_SET); + assert(fread(shstrtab, sectionTable[fileHeader.e_shstrndx].sh_size, 1, file) != 0); + + /* Search for the sections we need */ + { + size_t currentIndex; + FairySecHeader currentSection; + for (currentIndex = 0; currentIndex < 3; currentIndex++) { + fileInfo->relocTablesInfo[currentIndex].sectionData = NULL; + } + + for (currentIndex = 0; currentIndex < fileHeader.e_shnum; currentIndex++) { + currentSection = sectionTable[currentIndex]; + + switch (currentSection.sh_type) { + case SHT_PROGBITS: + assert(vc_vector_push_back(fileInfo->progBitsSections, ¤tIndex)); + if (strcmp(&shstrtab[currentSection.sh_name + 1], "text") == 0) { + fileInfo->progBitsSizes[FAIRY_SECTION_TEXT] += currentSection.sh_size; + FAIRY_DEBUG_PRINTF("text section size: 0x%X\n", fileInfo->progBitsSizes[FAIRY_SECTION_TEXT]); + } else if (strcmp(&shstrtab[currentSection.sh_name + 1], "data") == 0) { + fileInfo->progBitsSizes[FAIRY_SECTION_DATA] += currentSection.sh_size; + FAIRY_DEBUG_PRINTF("data section size: 0x%X\n", fileInfo->progBitsSizes[FAIRY_SECTION_DATA]); + } else if (Fairy_StartsWith(&shstrtab[currentSection.sh_name + 1], "rodata")) { /* May be several */ + fileInfo->progBitsSizes[FAIRY_SECTION_RODATA] += currentSection.sh_size; + FAIRY_DEBUG_PRINTF("rodata section size: 0x%X\n", fileInfo->progBitsSizes[FAIRY_SECTION_RODATA]); + } + break; + + case SHT_SYMTAB: + if (strcmp(&shstrtab[currentSection.sh_name + 1], "symtab") == 0) { + fileInfo->symtabInfo.sectionSize = currentSection.sh_size; + fileInfo->symtabInfo.sectionData = malloc(currentSection.sh_size); + Fairy_ReadSymbolTable(fileInfo->symtabInfo.sectionData, file, currentSection.sh_offset, + currentSection.sh_size); + } + break; + + case SHT_STRTAB: + if (strcmp(&shstrtab[currentSection.sh_name + 1], "strtab") == 0) { + FAIRY_DEBUG_PRINTF("%s", "strtab found\n"); + fileInfo->strtab = malloc(currentSection.sh_size); + Fairy_ReadStringTable(fileInfo->strtab, file, currentSection.sh_offset, currentSection.sh_size); + } + break; + + case SHT_REL: + /* This assumes only one reloc section of each name */ + // TODO: is this a problem? + { + FairySection relocSection = FAIRY_SECTION_OTHER; + + if (strcmp(&shstrtab[currentSection.sh_name + 5], "text") == 0) { + relocSection = FAIRY_SECTION_TEXT; + FAIRY_DEBUG_PRINTF("%s", "Found rel.text section\n"); + } else if (strcmp(&shstrtab[currentSection.sh_name + 5], "data") == 0) { + relocSection = FAIRY_SECTION_DATA; + FAIRY_DEBUG_PRINTF("%s", "Found rel.data section\n"); + } else if (strcmp(&shstrtab[currentSection.sh_name + 5], "rodata") == 0) { + relocSection = FAIRY_SECTION_RODATA; + FAIRY_DEBUG_PRINTF("%s", "Found rel.rodata section\n"); + } else { + break; + } + + fileInfo->relocTablesInfo[relocSection].sectionSize = currentSection.sh_size; + fileInfo->relocTablesInfo[relocSection].sectionData = malloc(currentSection.sh_size); + Fairy_ReadRelocs(fileInfo->relocTablesInfo[relocSection].sectionData, file, + currentSection.sh_offset, currentSection.sh_size); + } + break; + + default: + break; + } + } + } + + free(sectionTable); + free(shstrtab); +} + +void Fairy_DestroyFile(FairyFileInfo* fileInfo) { + size_t i; + for (i = 0; i < 3; i++) { + if (fileInfo->relocTablesInfo[i].sectionData != NULL) { + FAIRY_DEBUG_PRINTF("Freeing reloc section %zd data\n", i); + free(fileInfo->relocTablesInfo[i].sectionData); + } + } + + vc_vector_release(fileInfo->progBitsSections); + + FAIRY_DEBUG_PRINTF("%s","Freeing symtab data\n"); + free(fileInfo->symtabInfo.sectionData); + + FAIRY_DEBUG_PRINTF("%s", "Freeing strtab data\n"); + free(fileInfo->strtab); +} diff --git a/tools/fado/lib/fairy/fairy.h b/tools/fado/lib/fairy/fairy.h new file mode 100644 index 0000000000..573ca61290 --- /dev/null +++ b/tools/fado/lib/fairy/fairy.h @@ -0,0 +1,70 @@ +/* Copyright (C) 2021 Elliptic Ellipsis */ +/* SPDX-License-Identifier: AGPL-3.0-only */ +#pragma once + +#include +#include +#include + +#include "vc_vector/vc_vector.h" + +#define FAIRY_DEF_STRING(prefix, x) \ + { prefix##x, #x } + +typedef enum { + VERBOSITY_NONE, + VERBOSITY_INFO, + VERBOSITY_DEBUG //, +} VerbosityLevel; + +extern VerbosityLevel gVerbosity; + +typedef Elf32_Ehdr FairyFileHeader; +typedef Elf32_Shdr FairySecHeader; +typedef Elf32_Sym FairySym; +typedef Elf32_Rel FairyRel; + +typedef struct { + int define; + const char* string; +} FairyDefineString; + +typedef struct { + void* sectionData; + size_t sectionSize; +} FairySectionInfo; + +typedef struct { + FairySectionInfo symtabInfo; + char* strtab; + Elf32_Word progBitsSizes[3]; + vc_vector* progBitsSections; + FairySectionInfo relocTablesInfo[3]; +} FairyFileInfo; + +typedef enum { + FAIRY_SECTION_TEXT, + FAIRY_SECTION_DATA, + FAIRY_SECTION_RODATA, + FAIRY_SECTION_OTHER //, +} FairySection; + +/* Prints debugging information to stderr. To be used via the macros. */ +int Fairy_DebugPrintf(const char* file, int line, const char* func, VerbosityLevel level, const char* fmt, ...); +#define FAIRY_INFO_PRINTF(fmt, ...) Fairy_DebugPrintf(__FILE__, __LINE__, __func__, VERBOSITY_INFO, fmt, __VA_ARGS__) +#define FAIRY_DEBUG_PRINTF(fmt, ...) Fairy_DebugPrintf(__FILE__, __LINE__, __func__, VERBOSITY_DEBUG, fmt, __VA_ARGS__) + +const char* Fairy_StringFromDefine(const FairyDefineString* dict, int define); +bool Fairy_StartsWith(const char* string, const char* initial); + +FairyFileHeader* Fairy_ReadFileHeader(FairyFileHeader* header, FILE* file); +FairySecHeader* Fairy_ReadSectionTable(FairySecHeader* sectionTable, FILE* file, size_t tableOffset, size_t number); +FairySym* Fairy_ReadSymbolTable(FairySym* symbolTable, FILE* file, size_t tableOffset, size_t tableSize); +char* Fairy_ReadStringTable(char* stringTable, FILE* file, size_t tableOffset, size_t tableSize); +FairyRel* Fairy_ReadRelocs(FairyRel* relocTable, FILE* file, size_t offset, size_t number); + +char* Fairy_GetSectionName(FairySecHeader* sectionTable, char* shstrtab, size_t index); +char* Fairy_GetSymbolName(FairySym* symtab, char* strtab, size_t index); + +void Fairy_InitFile(FairyFileInfo* fileInfo, FILE* file); +void Fairy_DestroyFile(FairyFileInfo* fileInfo); diff --git a/tools/fado/lib/fairy/fairy_data.inc b/tools/fado/lib/fairy/fairy_data.inc new file mode 100644 index 0000000000..b4e29ceb09 --- /dev/null +++ b/tools/fado/lib/fairy/fairy_data.inc @@ -0,0 +1,126 @@ +/* Copyright (C) 2021 Elliptic Ellipsis */ +/* SPDX-License-Identifier: AGPL-3.0-only */ +#include "fairy.h" +#include + +// clang-format off +static const FairyDefineString stTypes[] = { + FAIRY_DEF_STRING(STT_, NOTYPE), + FAIRY_DEF_STRING(STT_, OBJECT), + FAIRY_DEF_STRING(STT_, FUNC), + FAIRY_DEF_STRING(STT_, SECTION), + FAIRY_DEF_STRING(STT_, FILE), + FAIRY_DEF_STRING(STT_, COMMON), + FAIRY_DEF_STRING(STT_, TLS), + FAIRY_DEF_STRING(STT_, NUM), + FAIRY_DEF_STRING(STT_, LOOS), + FAIRY_DEF_STRING(STT_, GNU_IFUNC), + FAIRY_DEF_STRING(STT_, HIOS), + FAIRY_DEF_STRING(STT_, LOPROC), + FAIRY_DEF_STRING(STT_, HIPROC), + { 0 }, +}; + +static const FairyDefineString stBinds[] = { + FAIRY_DEF_STRING(STB_, LOCAL), + FAIRY_DEF_STRING(STB_, GLOBAL), + FAIRY_DEF_STRING(STB_, WEAK), + FAIRY_DEF_STRING(STB_, NUM), + FAIRY_DEF_STRING(STB_, LOOS), + FAIRY_DEF_STRING(STB_, GNU_UNIQUE), + FAIRY_DEF_STRING(STB_, HIOS), + FAIRY_DEF_STRING(STB_, LOPROC), + FAIRY_DEF_STRING(STB_, HIPROC), + { 0 }, +}; + +static const FairyDefineString stVisibilities[] = { + FAIRY_DEF_STRING(STV_, DEFAULT), + FAIRY_DEF_STRING(STV_, INTERNAL), + FAIRY_DEF_STRING(STV_, HIDDEN), + FAIRY_DEF_STRING(STV_, PROTECTED), + { 0 }, +}; + +/* TODO: understand this data better: there are several cases with the same number */ +static const FairyDefineString shTypes[] = { + FAIRY_DEF_STRING(SHT_, NULL), + FAIRY_DEF_STRING(SHT_, PROGBITS), + FAIRY_DEF_STRING(SHT_, SYMTAB), + FAIRY_DEF_STRING(SHT_, STRTAB), + FAIRY_DEF_STRING(SHT_, RELA), + FAIRY_DEF_STRING(SHT_, HASH), + FAIRY_DEF_STRING(SHT_, DYNAMIC), + FAIRY_DEF_STRING(SHT_, NOTE), + FAIRY_DEF_STRING(SHT_, NOBITS), + FAIRY_DEF_STRING(SHT_, REL), + FAIRY_DEF_STRING(SHT_, SHLIB), + FAIRY_DEF_STRING(SHT_, DYNSYM), + FAIRY_DEF_STRING(SHT_, INIT_ARRAY), + FAIRY_DEF_STRING(SHT_, FINI_ARRAY), + FAIRY_DEF_STRING(SHT_, PREINIT_ARRAY), + FAIRY_DEF_STRING(SHT_, GROUP), + FAIRY_DEF_STRING(SHT_, SYMTAB_SHNDX), + FAIRY_DEF_STRING(SHT_, NUM), + FAIRY_DEF_STRING(SHT_, LOOS), + FAIRY_DEF_STRING(SHT_, GNU_ATTRIBUTES), + FAIRY_DEF_STRING(SHT_, GNU_HASH), + FAIRY_DEF_STRING(SHT_, GNU_LIBLIST), + FAIRY_DEF_STRING(SHT_, CHECKSUM), + FAIRY_DEF_STRING(SHT_, LOSUNW), + FAIRY_DEF_STRING(SHT_, SUNW_move), + FAIRY_DEF_STRING(SHT_, SUNW_COMDAT), + FAIRY_DEF_STRING(SHT_, SUNW_syminfo), + FAIRY_DEF_STRING(SHT_, GNU_verdef), + FAIRY_DEF_STRING(SHT_, GNU_verneed), + FAIRY_DEF_STRING(SHT_, GNU_versym), + FAIRY_DEF_STRING(SHT_, HISUNW), + FAIRY_DEF_STRING(SHT_, HIOS), + FAIRY_DEF_STRING(SHT_, LOPROC), + FAIRY_DEF_STRING(SHT_, HIPROC), + FAIRY_DEF_STRING(SHT_, LOUSER), + FAIRY_DEF_STRING(SHT_, HIUSER), + FAIRY_DEF_STRING(SHT_, MIPS_LIBLIST), + FAIRY_DEF_STRING(SHT_, MIPS_MSYM), + FAIRY_DEF_STRING(SHT_, MIPS_CONFLICT), + FAIRY_DEF_STRING(SHT_, MIPS_GPTAB), + FAIRY_DEF_STRING(SHT_, MIPS_UCODE), + FAIRY_DEF_STRING(SHT_, MIPS_DEBUG), + FAIRY_DEF_STRING(SHT_, MIPS_REGINFO), + FAIRY_DEF_STRING(SHT_, MIPS_PACKAGE), + FAIRY_DEF_STRING(SHT_, MIPS_PACKSYM), + FAIRY_DEF_STRING(SHT_, MIPS_RELD), + FAIRY_DEF_STRING(SHT_, MIPS_IFACE), + FAIRY_DEF_STRING(SHT_, MIPS_CONTENT), + FAIRY_DEF_STRING(SHT_, MIPS_OPTIONS), + FAIRY_DEF_STRING(SHT_, MIPS_SHDR), + FAIRY_DEF_STRING(SHT_, MIPS_FDESC), + FAIRY_DEF_STRING(SHT_, MIPS_EXTSYM), + FAIRY_DEF_STRING(SHT_, MIPS_DENSE), + FAIRY_DEF_STRING(SHT_, MIPS_PDESC), + FAIRY_DEF_STRING(SHT_, MIPS_LOCSYM), + FAIRY_DEF_STRING(SHT_, MIPS_AUXSYM), + FAIRY_DEF_STRING(SHT_, MIPS_OPTSYM), + FAIRY_DEF_STRING(SHT_, MIPS_LOCSTR), + FAIRY_DEF_STRING(SHT_, MIPS_LINE), + FAIRY_DEF_STRING(SHT_, MIPS_RFDESC), + FAIRY_DEF_STRING(SHT_, MIPS_DELTASYM), + FAIRY_DEF_STRING(SHT_, MIPS_DELTAINST), + FAIRY_DEF_STRING(SHT_, MIPS_DELTACLASS), + FAIRY_DEF_STRING(SHT_, MIPS_DWARF), + FAIRY_DEF_STRING(SHT_, MIPS_DELTADECL), + FAIRY_DEF_STRING(SHT_, MIPS_SYMBOL_LIB), + FAIRY_DEF_STRING(SHT_, MIPS_EVENTS), + FAIRY_DEF_STRING(SHT_, MIPS_TRANSLATE), + FAIRY_DEF_STRING(SHT_, MIPS_PIXIE), + FAIRY_DEF_STRING(SHT_, MIPS_XLATE), + FAIRY_DEF_STRING(SHT_, MIPS_XLATE_DEBUG), + FAIRY_DEF_STRING(SHT_, MIPS_WHIRL), + FAIRY_DEF_STRING(SHT_, MIPS_EH_REGION), + FAIRY_DEF_STRING(SHT_, MIPS_XLATE_OLD), + FAIRY_DEF_STRING(SHT_, MIPS_PDR_EXCEPTION), + // FAIRY_DEF_STRING(SHT_, MIPS_XHASH), /* New in 2019 */ + { 0 }, +}; + +// clang-format on diff --git a/tools/fado/lib/fairy/fairy_print.c b/tools/fado/lib/fairy/fairy_print.c new file mode 100644 index 0000000000..65fb7e015e --- /dev/null +++ b/tools/fado/lib/fairy/fairy_print.c @@ -0,0 +1,462 @@ +/** + * Functions for printing various sections of an N64 ELF file using the functions in Fairy, similarly to readelf + */ +/* Copyright (C) 2021 Elliptic Ellipsis */ +/* SPDX-License-Identifier: AGPL-3.0-only */ +#include "fairy.h" + +#include +#include +#include +#include +#include +#include + +#include "fairy_data.inc" + +void Fairy_PrintSymbolTable(FILE* inputFile) { + FairyFileHeader fileHeader; + FairySecHeader* sectionTable; + size_t shstrndx; + char* shstrtab; + FairySym* symbolTable = NULL; + size_t symbolTableNum = 0; + char* strtab = NULL; + + Fairy_ReadFileHeader(&fileHeader, inputFile); + sectionTable = malloc(fileHeader.e_shentsize * fileHeader.e_shnum); + shstrndx = fileHeader.e_shstrndx; + + Fairy_ReadSectionTable(sectionTable, inputFile, fileHeader.e_shoff, fileHeader.e_shnum); + + shstrtab = malloc(sectionTable[shstrndx].sh_size * sizeof(char)); + + fseek(inputFile, sectionTable[shstrndx].sh_offset, SEEK_SET); + assert(fread(shstrtab, sectionTable[shstrndx].sh_size, 1, inputFile) != 0); + + { + size_t currentIndex; + size_t strtabndx = 0; + for (currentIndex = 0; currentIndex < fileHeader.e_shnum; currentIndex++) { + FairySecHeader currentHeader = sectionTable[currentIndex]; + + switch (currentHeader.sh_type) { + case SHT_SYMTAB: + if (strcmp(&shstrtab[currentHeader.sh_name], ".symtab") == 0) { + printf("symtab found\n"); + symbolTableNum = currentHeader.sh_size / sizeof(FairySym); + symbolTable = malloc(currentHeader.sh_size); + Fairy_ReadSymbolTable(symbolTable, inputFile, currentHeader.sh_offset, currentHeader.sh_size); + } + break; + + case SHT_STRTAB: + if (strcmp(&shstrtab[currentHeader.sh_name], ".strtab") == 0) { + strtabndx = currentIndex; + } + break; + + default: + break; + } + } + + if (symbolTable == NULL) { + puts("No symtab found."); + free(sectionTable); + return; + } + + if (strtabndx != 0) { + printf("strtab found\n"); + printf("Size: %X bytes\n", sectionTable[strtabndx].sh_size); + strtab = malloc(sectionTable[strtabndx].sh_size); + printf("and mallocked\n"); + fseek(inputFile, sectionTable[strtabndx].sh_offset, SEEK_SET); + printf("file offset sought: %X\n", sectionTable[strtabndx].sh_offset); + assert(fread(strtab, sectionTable[strtabndx].sh_size, 1, inputFile) != 0); + printf("file read\n"); + } + } + + { + size_t currentIndex; + printf("Symbol table\n"); + printf(" Num: Value Size Type Bind Vis Ndx Name\n"); + for (currentIndex = 0; currentIndex < symbolTableNum; currentIndex++) { + FairySym currentSymbol = symbolTable[currentIndex]; + printf("%4zd: ", currentIndex); + printf("%08X ", currentSymbol.st_value); + printf("%4X ", currentSymbol.st_size); + printf("%-11s ", Fairy_StringFromDefine(stTypes, ELF32_ST_TYPE(currentSymbol.st_info))); + printf("%-10s ", Fairy_StringFromDefine(stBinds, ELF32_ST_BIND(currentSymbol.st_info))); + printf("%-11s ", Fairy_StringFromDefine(stVisibilities, ELF32_ST_VISIBILITY(currentSymbol.st_other))); + + if (currentSymbol.st_shndx != 0) { + printf("%3X ", currentSymbol.st_shndx); + } else { + printf("UND "); + } + + if (strtab != NULL) { + printf("%s", &strtab[currentSymbol.st_name]); + } else { + printf("%4X ", currentSymbol.st_name); + } + putchar('\n'); + } + } + + free(sectionTable); + free(symbolTable); + if (strtab != NULL) { + free(strtab); + } +} + +void Fairy_PrintRelocs(FILE* inputFile) { + FairyFileHeader fileHeader; + FairySecHeader* sectionTable; + FairyRel* relocs; + size_t shstrndx; + char* shstrtab; + size_t currentSection; + + Fairy_ReadFileHeader(&fileHeader, inputFile); + sectionTable = malloc(fileHeader.e_shentsize * fileHeader.e_shnum); + shstrndx = fileHeader.e_shstrndx; + + Fairy_ReadSectionTable(sectionTable, inputFile, fileHeader.e_shoff, fileHeader.e_shnum); + + shstrtab = malloc(sectionTable[shstrndx].sh_size * sizeof(char)); + + fseek(inputFile, sectionTable[shstrndx].sh_offset, SEEK_SET); + assert(fread(shstrtab, sectionTable[shstrndx].sh_size, 1, inputFile) != 0); + + for (currentSection = 0; currentSection < fileHeader.e_shnum; currentSection++) { + if (sectionTable[currentSection].sh_type != SHT_REL) { + continue; + } + printf("Section size: %d\n", sectionTable[currentSection].sh_size); + + relocs = malloc(sectionTable[currentSection].sh_size * sizeof(char)); + + Fairy_ReadRelocs(relocs, inputFile, sectionTable[currentSection].sh_offset, + sectionTable[currentSection].sh_size); + + // fseek(inputFile, sectionTable[currentSection].sh_offset, SEEK_SET); + // assert(fread(relocs, sectionTable[currentSection].sh_size, 1, inputFile) != 0); + + printf("Relocs in section [%2zd]: %s:\n", currentSection, shstrtab + sectionTable[currentSection].sh_name); + printf("Offset Info Type Symbol\n"); + { + size_t currentReloc; + for (currentReloc = 0; currentReloc < sectionTable[currentSection].sh_size / sizeof(*relocs); + currentReloc++) { + + printf("%08X,%08X ", relocs[currentReloc].r_offset, relocs[currentReloc].r_info); + + switch (ELF32_R_TYPE(relocs[currentReloc].r_info)) { + case R_MIPS_NONE: + printf("%-15s", "R_MIPS_NONE"); + break; + case R_MIPS_16: + printf("%-15s", "R_MIPS_16"); + break; + case R_MIPS_32: + printf("%-15s", "R_MIPS_32"); + break; + case R_MIPS_REL32: + printf("%-15s", "R_MIPS_REL32"); + break; + case R_MIPS_26: + printf("%-15s", "R_MIPS_26"); + break; + case R_MIPS_HI16: + printf("%-15s", "R_MIPS_HI16"); + break; + case R_MIPS_LO16: + printf("%-15s", "R_MIPS_LO16"); + break; + default: + break; + } + + printf("%X", ELF32_R_SYM(relocs[currentReloc].r_info)); + + putchar('\n'); + } + putchar('\n'); + } + putchar('\n'); + + free(relocs); + } + free(sectionTable); + free(shstrtab); +} + +void Fairy_PrintSectionTable(FILE* inputFile) { + FairyFileHeader fileHeader; + FairySecHeader* sectionTable; + size_t shstrndx; + char* shstrtab; + size_t currentSection; + + Fairy_ReadFileHeader(&fileHeader, inputFile); + sectionTable = malloc(fileHeader.e_shentsize * fileHeader.e_shnum); + shstrndx = fileHeader.e_shstrndx; + + Fairy_ReadSectionTable(sectionTable, inputFile, fileHeader.e_shoff, fileHeader.e_shnum); + + shstrtab = malloc(sectionTable[shstrndx].sh_size * sizeof(char)); + + fseek(inputFile, sectionTable[shstrndx].sh_offset, SEEK_SET); + assert(fread(shstrtab, sectionTable[shstrndx].sh_size, 1, inputFile) != 0); + + printf("[Nr] Name Type Addr Off Size ES Flg Lk Inf Al\n"); + for (currentSection = 0; currentSection < fileHeader.e_shnum; currentSection++) { + FairySecHeader entry = sectionTable[currentSection]; + printf("[%2zd] ", currentSection); + printf("%-15s", shstrtab + entry.sh_name); + + printf("%-15s", Fairy_StringFromDefine(shTypes, entry.sh_type)); + + // printf("%08X ", entry.sh_type); + printf("%08X ", entry.sh_addr); + printf("%06X ", entry.sh_offset); + printf("%06X ", entry.sh_size); + printf("%02X ", entry.sh_entsize); + // printf("%08X ", entry.sh_flags); + + { + char flagChars[] = { 'W', 'A', 'X', 'M', 'S', 'I', 'L', 'O', 'G', 'T', 'C', 'x', 'o', 'E', 'p' }; + uint32_t flags = entry.sh_flags; + size_t shift; + int pad = 4; + for (shift = 0; shift < sizeof(flagChars); shift++) { + if ((flags >> shift) & 1) { + putchar(flagChars[shift]); + pad--; + } + } + if (pad > 0) { + printf("%*s", pad, ""); + } + } + + printf("%2X ", entry.sh_link); + printf("%3X ", entry.sh_info); + printf("%2X", entry.sh_addralign); + putchar('\n'); + } +} + +typedef enum { REL_SECTION_NONE, REL_SECTION_TEXT, REL_SECTION_DATA, REL_SECTION_RODATA } FairyOverlayRelSection; + +const char* relSectionStrings[] = { + NULL, + ".text", + ".data", + ".rodata", +}; + +static uint32_t Fairy_PackReloc(FairyOverlayRelSection sec, FairyRel rel) { + return (sec << 0x1E) | (ELF32_R_TYPE(rel.r_info) << 0x18) | rel.r_offset; +} + +void Fairy_PrintSectionSizes(FairySecHeader* sectionTable, FILE* inputFile, size_t tableSize, char* shstrtab) { + size_t number = tableSize / sizeof(FairySecHeader); + FairySecHeader currentHeader; + char* sectionName; + size_t relocSectionsCount = 0; + size_t* relocSectionIndices; + int* relocSectionSection; + size_t currentRelocSection = 0; + FairySecHeader symtabHeader; + FairySym* symtab; + FairySecHeader strtabHeader; + char* strtab = NULL; + // size_t symtabSize; + + uint32_t textSize = 0; + uint32_t dataSize = 0; + uint32_t rodataSize = 0; + uint32_t bssSize = 0; + uint32_t relocCount = 0; + + size_t currentSection; + bool symtabFound = false; + bool strtabFound = false; + /* Count the reloc sections */ + for (currentSection = 0; currentSection < number; currentSection++) { + if (sectionTable[currentSection].sh_type == SHT_REL) { + relocSectionsCount++; + } + } + printf("relocSectionsCount: %zd\n", relocSectionsCount); + + relocSectionIndices = malloc(relocSectionsCount * sizeof(int)); + relocSectionSection = malloc(relocSectionsCount * sizeof(int)); + + /* Find the section sizes and the reloc sections */ + for (currentSection = 0; currentSection < number; currentSection++) { + currentHeader = sectionTable[currentSection]; + sectionName = &shstrtab[currentHeader.sh_name + 1]; /* ignore the initial '.' */ + switch (currentHeader.sh_type) { + case SHT_PROGBITS: + if (Fairy_StartsWith(sectionName, "rodata")) { + printf("rodata\n"); + rodataSize += currentHeader.sh_size; + break; + } + if (Fairy_StartsWith(sectionName, "data")) { + printf("data\n"); + dataSize += currentHeader.sh_size; + break; + } + if (Fairy_StartsWith(sectionName, "text")) { + printf("text\n"); + textSize += currentHeader.sh_size; + break; + } + break; + + case SHT_NOBITS: + if (Fairy_StartsWith(sectionName, "bss")) { + printf("bss\n"); + bssSize += currentHeader.sh_size; + } + break; + + case SHT_REL: + relocSectionIndices[currentRelocSection] = currentSection; + sectionName += 4; /* ignore the "rel." part */ + if (Fairy_StartsWith(sectionName, "rodata")) { + printf(".rel.rodata\n"); + relocSectionSection[currentRelocSection] = REL_SECTION_RODATA; + } else if (Fairy_StartsWith(sectionName, "data")) { + printf(".rel.data\n"); + relocSectionSection[currentRelocSection] = REL_SECTION_DATA; + } else if (Fairy_StartsWith(sectionName, "text")) { + printf(".rel.text\n"); + relocSectionSection[currentRelocSection] = REL_SECTION_TEXT; + } + + currentRelocSection++; + break; + + case SHT_SYMTAB: + if (Fairy_StartsWith(sectionName, "symtab")) { + symtabHeader = currentHeader; + symtabFound = true; + } + break; + + case SHT_STRTAB: + if (Fairy_StartsWith(sectionName, "strtab")) { + strtabHeader = currentHeader; + strtabFound = true; + } + break; + + default: + break; + } + } + /* Can use symbols here too */ + puts(".section .ovl"); + printf("# OverlayInfo\n"); + printf(".word 0x%08X # .text size\n", textSize); + printf(".word 0x%08X # .data size\n", dataSize); + printf(".word 0x%08X # .rodata size\n", rodataSize); + printf(".word 0x%08X # .bss size\n\n", bssSize); + + if (!symtabFound) { + fprintf(stderr, "Symbol table not found"); + return; + } + /* Obtain the symbol table */ + symtab = malloc(symtabHeader.sh_size); + + // TODO: Consider replacing this with a lighter-weight read: sufficient to get the name, shndx + Fairy_ReadSymbolTable(symtab, inputFile, symtabHeader.sh_offset, symtabHeader.sh_size); + + if (!strtabFound) { + fprintf(stderr, "String table not found"); + } else { + /* Obtain the string table */ + strtab = malloc(strtabHeader.sh_size); + fseek(inputFile, strtabHeader.sh_offset, SEEK_SET); + assert(fread(strtab, strtabHeader.sh_size, 1, inputFile) != 0); + } + + /* Do single-file relocs */ + { + FairyRel* relocs; + for (currentSection = 0; currentSection < relocSectionsCount; currentSection++) { + size_t currentReloc; + size_t sectionRelocCount; + currentHeader = sectionTable[relocSectionIndices[currentSection]]; + sectionRelocCount = currentHeader.sh_size / sizeof(FairyRel); + relocs = malloc(currentHeader.sh_size); + Fairy_ReadRelocs(relocs, inputFile, currentHeader.sh_offset, currentHeader.sh_size); + + for (currentReloc = 0; currentReloc < sectionRelocCount; currentReloc++) { + FairySym symbol = symtab[ELF32_R_SYM(relocs[currentReloc].r_info)]; + if (symbol.st_shndx == SHN_UNDEF) { + continue; // TODO: this is where multifile has to look elsewhere + } + + printf(".word 0x%08X", Fairy_PackReloc(relocSectionSection[currentSection], relocs[currentReloc])); + printf(" # %X (%s), %X, 0x%06X", relocSectionSection[currentSection], &shstrtab[currentHeader.sh_name], + ELF32_R_TYPE(relocs[currentReloc].r_info), relocs[currentReloc].r_offset); + if (strtab != NULL) { + printf(", %s", &strtab[symbol.st_name]); + } + putchar('\n'); + + relocCount++; + } + + free(relocs); + } + } + + printf(".word %d # relocCount\n", relocCount); + + { + uint32_t ovlSectionSize = ((relocCount + 8) & ~0x03) * sizeof(uint32_t); + + printf("\n.word 0x%08X # Overlay section size\n", ovlSectionSize); + } + + free(relocSectionIndices); + free(relocSectionSection); + if (strtab != NULL) { + free(strtab); + } +} + +void PrintZeldaReloc(FILE* inputFile) { + FairyFileHeader fileHeader; + FairySecHeader* sectionTable; + size_t shstrndx; + char* shstrtab; + + Fairy_ReadFileHeader(&fileHeader, inputFile); + sectionTable = malloc(fileHeader.e_shentsize * fileHeader.e_shnum); + shstrndx = fileHeader.e_shstrndx; + + Fairy_ReadSectionTable(sectionTable, inputFile, fileHeader.e_shoff, fileHeader.e_shnum); + + shstrtab = malloc(sectionTable[shstrndx].sh_size * sizeof(char)); + + fseek(inputFile, sectionTable[shstrndx].sh_offset, SEEK_SET); + assert(fread(shstrtab, sectionTable[shstrndx].sh_size, 1, inputFile) != 0); + + Fairy_PrintSectionSizes(sectionTable, inputFile, fileHeader.e_shentsize * fileHeader.e_shnum, shstrtab); + + free(sectionTable); + free(shstrtab); +} diff --git a/tools/fado/lib/fairy/fairy_print.h b/tools/fado/lib/fairy/fairy_print.h new file mode 100644 index 0000000000..85061be223 --- /dev/null +++ b/tools/fado/lib/fairy/fairy_print.h @@ -0,0 +1,7 @@ +/* Copyright (C) 2021 Elliptic Ellipsis */ +/* SPDX-License-Identifier: AGPL-3.0-only */ +#include + +void Fairy_PrintSymbolTable(FILE* inputFile); +void Fairy_PrintRelocs(FILE* inputFile); +void Fairy_PrintSectionTable(FILE* inputFile); diff --git a/tools/fado/lib/vc_vector/.gitrepo b/tools/fado/lib/vc_vector/.gitrepo new file mode 100644 index 0000000000..7ab27b998a --- /dev/null +++ b/tools/fado/lib/vc_vector/.gitrepo @@ -0,0 +1,12 @@ +; DO NOT EDIT (unless you know what you are doing) +; +; This subdirectory is a git "subrepo", and this file is maintained by the +; git-subrepo command. See https://github.com/git-commands/git-subrepo#readme +; +[subrepo] + remote = git@github.com:skogorev/vc_vector.git + branch = master + commit = 39108a4b0aeb904636514b37f418c590084220a7 + parent = 462bee5811d54659236ca51481d01b76c69a37a7 + method = merge + cmdver = 0.4.3 diff --git a/tools/fado/lib/vc_vector/.travis.yml b/tools/fado/lib/vc_vector/.travis.yml new file mode 100644 index 0000000000..f30dfb8e20 --- /dev/null +++ b/tools/fado/lib/vc_vector/.travis.yml @@ -0,0 +1,6 @@ +language: c +compiler: + - gcc + - clang +script: + - make && make test diff --git a/tools/fado/lib/vc_vector/LICENSE.md b/tools/fado/lib/vc_vector/LICENSE.md new file mode 100644 index 0000000000..05929e19d9 --- /dev/null +++ b/tools/fado/lib/vc_vector/LICENSE.md @@ -0,0 +1,21 @@ +#The MIT License (MIT) + +*Copyright (c) 2016 Skogorev Anton* + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/tools/fado/lib/vc_vector/Makefile b/tools/fado/lib/vc_vector/Makefile new file mode 100644 index 0000000000..129ee97e39 --- /dev/null +++ b/tools/fado/lib/vc_vector/Makefile @@ -0,0 +1,33 @@ +OUT_DIR := build +CFLAGS := -O2 -g -std=c99 -Wall -Wextra -Wpedantic -Werror + +SRCS := $(wildcard *.c) +OBJS := $(patsubst %.c,$(OUT_DIR)/%.o,$(SRCS)) + +LIB_NAME := vc-vector +SOBJ := $(OUT_DIR)/lib$(LIB_NAME).so + +.PHONY: all lib test clean + +all: lib + +lib: $(SOBJ) + +test: $(OUT_DIR)/test_runner + $(OUT_DIR)/test_runner + +clean: + rm -rf $(OUT_DIR) + +$(OUT_DIR): + mkdir -p $(OUT_DIR) + +$(SOBJ): vc_vector.c | $(OUT_DIR) + $(CC) $(CFLAGS) -shared -fPIC $< -o $@ + +$(OUT_DIR)/%.o: %.c | $(OUT_DIR) + $(CC) $(CFLAGS) -c $< -o $@ + +$(OUT_DIR)/test_runner: $(OBJS) | $(OUT_DIR) + $(CC) $^ -o $@ + diff --git a/tools/fado/lib/vc_vector/README.md b/tools/fado/lib/vc_vector/README.md new file mode 100644 index 0000000000..c8f8b2ae37 --- /dev/null +++ b/tools/fado/lib/vc_vector/README.md @@ -0,0 +1,92 @@ +# vc_vector +Fast simple C vector implementation + +[![Build Status: make && make test](https://travis-ci.org/skogorev/vc_vector.svg)](https://travis-ci.org/skogorev/vc_vector) + +## Usage + +### Basic +```c +#include "vc_vector.h" + +int main() { + // Creates an empty vector with the default reserved size + // and without custom deleter. Vector will contain 'int' + vc_vector* v = vc_vector_create(0, sizeof(int), NULL); + if (!v) { + return 1; + } + + const int count = 10; + for (int i = 0; i < count; ++i) { + // The function takes a pointer to the elements, + // but the vector will make a copy of the element + vc_vector_push_back(v, &i); + } + + // Print each vector element + for (void* i = vc_vector_begin(v); + i != vc_vector_end(v); + i = vc_vector_next(v, i)) { + printf("%u; ", *(int*)i); + } + + vc_vector_release(v); + return 0; +} +``` + +### Advanced +```c +#include "vc_vector.h" + +struct Item { + int val1; + int val2; +}; + +int main() { + const int n = 10; + + // Creates an empty vector with the reserved size for the 'n' elements + // and with custom deleter 'free'. Vector will contain pointers to 'Item' + vc_vector* v = vc_vector_create(n, sizeof(struct Node*), free); + if (!v) { + return 1; + } + + struct Item* item = NULL; + const int count = n + 1; + // Vector automatically increases the reserved size when 'n + 1' will be added + for (int i = 0; i < count; ++i) { + // Creating item + item = malloc(sizeof(struct Item)); + if (!item) { + continue; + } + + item->val1 = i; + item->val2 = 0; + + // Pushing to the end of the vector + if (!vc_vector_push_back(v, item)) { + // If the item was not pushed, you have to delete it + free(item); + } + } + + // ... + + // Calls custom deleter 'free' for all items + // and releases the vector + vc_vector_release(v); + return 0; +} +``` + +## Projects that use vc_vector +[kraken.io](https://kraken.io/) + +## License + +[MIT License](LICENSE.md) diff --git a/tools/fado/lib/vc_vector/vc_vector.c b/tools/fado/lib/vc_vector/vc_vector.c new file mode 100644 index 0000000000..3f677c242a --- /dev/null +++ b/tools/fado/lib/vc_vector/vc_vector.c @@ -0,0 +1,329 @@ +#include "vc_vector.h" +#include +#include + +#define GROWTH_FACTOR 1.5 +#define DEFAULT_COUNT_OF_ELEMENTS 8 +#define MINIMUM_COUNT_OF_ELEMENTS 2 + +// ---------------------------------------------------------------------------- + +// vc_vector structure + +struct vc_vector { + size_t count; + size_t element_size; + size_t reserved_size; + char* data; + vc_vector_deleter* deleter; +}; + +// ---------------------------------------------------------------------------- + +// Auxiliary methods + +bool vc_vector_realloc(vc_vector* vector, size_t new_count) { + const size_t new_size = new_count * vector->element_size; + char* new_data = (char*)realloc(vector->data, new_size); + if (!new_data) { + return false; + } + + vector->reserved_size = new_size; + vector->data = new_data; + return true; +} + +// [first_index, last_index) +void vc_vector_call_deleter(vc_vector* vector, size_t first_index, size_t last_index) { + for (size_t i = first_index; i < last_index; ++i) { + vector->deleter(vc_vector_at(vector, i)); + } +} + +void vc_vector_call_deleter_all(vc_vector* vector) { + vc_vector_call_deleter(vector, 0, vc_vector_count(vector)); +} + +// ---------------------------------------------------------------------------- + +// Control + +vc_vector* vc_vector_create(size_t count_elements, size_t size_of_element, vc_vector_deleter* deleter) { + vc_vector* v = (vc_vector*)malloc(sizeof(vc_vector)); + if (v != NULL) { + v->data = NULL; + v->count = 0; + v->element_size = size_of_element; + v->deleter = deleter; + + if (count_elements < MINIMUM_COUNT_OF_ELEMENTS) { + count_elements = DEFAULT_COUNT_OF_ELEMENTS; + } + + if (size_of_element < 1 || + !vc_vector_realloc(v, count_elements)) { + free(v); + v = NULL; + } + } + + return v; +} + +vc_vector* vc_vector_create_copy(const vc_vector* vector) { + vc_vector* new_vector = vc_vector_create(vector->reserved_size / vector->count, + vector->element_size, + vector->deleter); + if (!new_vector) { + return new_vector; + } + + if (memcpy(vector->data, + new_vector->data, + new_vector->element_size * vector->count) == NULL) { + vc_vector_release(new_vector); + new_vector = NULL; + return new_vector; + } + + new_vector->count = vector->count; + return new_vector; +} + +void vc_vector_release(vc_vector* vector) { + if (vector->deleter != NULL) { + vc_vector_call_deleter_all(vector); + } + + if (vector->reserved_size != 0) { + free(vector->data); + } + + free(vector); +} + +bool vc_vector_is_equals(vc_vector* vector1, vc_vector* vector2) { + const size_t size_vector1 = vc_vector_size(vector1); + if (size_vector1 != vc_vector_size(vector2)) { + return false; + } + + return memcmp(vector1->data, vector2->data, size_vector1) == 0; +} + +float vc_vector_get_growth_factor() { + return GROWTH_FACTOR; +} + +size_t vc_vector_get_default_count_of_elements() { + return DEFAULT_COUNT_OF_ELEMENTS; +} + +size_t vc_vector_struct_size() { + return sizeof(vc_vector); +} + +// ---------------------------------------------------------------------------- + +// Element access + +void* vc_vector_at(vc_vector* vector, size_t index) { + return vector->data + index * vector->element_size; +} + +void* vc_vector_front(vc_vector* vector) { + return vector->data; +} + +void* vc_vector_back(vc_vector* vector) { + return vector->data + (vector->count - 1) * vector->element_size; +} + +void* vc_vector_data(vc_vector* vector) { + return vector->data; +} + +// ---------------------------------------------------------------------------- + +// Iterators + +void* vc_vector_begin(vc_vector* vector) { + return vector->data; +} + +void* vc_vector_end(vc_vector* vector) { + return vector->data + vector->element_size * vector->count; +} + +void* vc_vector_next(vc_vector* vector, void* i) { + return (char *)i + vector->element_size; +} + +// ---------------------------------------------------------------------------- + +// Capacity + +bool vc_vector_empty(vc_vector* vector) { + return vector->count == 0; +} + +size_t vc_vector_count(const vc_vector* vector) { + return vector->count; +} + +size_t vc_vector_size(const vc_vector* vector) { + return vector->count * vector->element_size; +} + +size_t vc_vector_max_count(const vc_vector* vector) { + return vector->reserved_size / vector->element_size; +} + +size_t vc_vector_max_size(const vc_vector* vector) { + return vector->reserved_size; +} + +bool vc_vector_reserve_count(vc_vector* vector, size_t new_count) { + if (new_count < vector->count) { + return false; + } + + size_t new_size = vector->element_size * new_count; + if (new_size == vector->reserved_size) { + return true; + } + + return vc_vector_realloc(vector, new_count); +} + +bool vc_vector_reserve_size(vc_vector* vector, size_t new_size) { + return vc_vector_reserve_count(vector, new_size / vector->element_size); +} + +// ---------------------------------------------------------------------------- + +// Modifiers + +void vc_vector_clear(vc_vector* vector) { + if (vector->deleter != NULL) { + vc_vector_call_deleter_all(vector); + } + + vector->count = 0; +} + +bool vc_vector_insert(vc_vector* vector, size_t index, const void* value) { + if (vc_vector_max_count(vector) < vector->count + 1) { + if (!vc_vector_realloc(vector, vc_vector_max_count(vector) * GROWTH_FACTOR)) { + return false; + } + } + + if (!memmove(vc_vector_at(vector, index + 1), + vc_vector_at(vector, index), + vector->element_size * (vector->count - index))) { + + return false; + } + + if (memcpy(vc_vector_at(vector, index), + value, + vector->element_size) == NULL) { + return false; + } + + ++vector->count; + return true; +} + +bool vc_vector_erase(vc_vector* vector, size_t index) { + if (vector->deleter != NULL) { + vector->deleter(vc_vector_at(vector, index)); + } + + if (!memmove(vc_vector_at(vector, index), + vc_vector_at(vector, index + 1), + vector->element_size * (vector->count - index))) { + return false; + } + + vector->count--; + return true; +} + +bool vc_vector_erase_range(vc_vector* vector, size_t first_index, size_t last_index) { + if (vector->deleter != NULL) { + vc_vector_call_deleter(vector, first_index, last_index); + } + + if (!memmove(vc_vector_at(vector, first_index), + vc_vector_at(vector, last_index), + vector->element_size * (vector->count - last_index))) { + return false; + } + + vector->count -= last_index - first_index; + return true; +} + +bool vc_vector_append(vc_vector* vector, const void* values, size_t count) { + const size_t count_new = count + vc_vector_count(vector); + + if (vc_vector_max_count(vector) < count_new) { + size_t max_count_to_reserved = vc_vector_max_count(vector) * GROWTH_FACTOR; + while (count_new > max_count_to_reserved) { + max_count_to_reserved *= GROWTH_FACTOR; + } + + if (!vc_vector_realloc(vector, max_count_to_reserved)) { + return false; + } + } + + if (memcpy(vector->data + vector->count * vector->element_size, + values, + vector->element_size * count) == NULL) { + return false; + } + + vector->count = count_new; + return true; +} + +bool vc_vector_push_back(vc_vector* vector, const void* value) { + if (!vc_vector_append(vector, value, 1)) { + return false; + } + + return true; +} + +bool vc_vector_pop_back(vc_vector* vector) { + if (vector->deleter != NULL) { + vector->deleter(vc_vector_back(vector)); + } + + vector->count--; + return true; +} + +bool vc_vector_replace(vc_vector* vector, size_t index, const void* value) { + if (vector->deleter != NULL) { + vector->deleter(vc_vector_at(vector, index)); + } + + return memcpy(vc_vector_at(vector, index), + value, + vector->element_size) != NULL; +} + +bool vc_vector_replace_multiple(vc_vector* vector, size_t index, const void* values, size_t count) { + if (vector->deleter != NULL) { + vc_vector_call_deleter(vector, index, index + count); + } + + return memcpy(vc_vector_at(vector, index), + values, + vector->element_size * count) != NULL; +} diff --git a/tools/fado/lib/vc_vector/vc_vector.h b/tools/fado/lib/vc_vector/vc_vector.h new file mode 100644 index 0000000000..2b1422c1a5 --- /dev/null +++ b/tools/fado/lib/vc_vector/vc_vector.h @@ -0,0 +1,120 @@ +#ifndef VCVECTOR_H +#define VCVECTOR_H + +#include +#include + +typedef struct vc_vector vc_vector; +typedef void (vc_vector_deleter)(void *); + +// ---------------------------------------------------------------------------- +// Control +// ---------------------------------------------------------------------------- + +// Constructs an empty vector with an reserver size for count_elements. +vc_vector* vc_vector_create(size_t count_elements, size_t size_of_element, vc_vector_deleter* deleter); + +// Constructs a copy of an existing vector. +vc_vector* vc_vector_create_copy(const vc_vector* vector); + +// Releases the vector. +void vc_vector_release(vc_vector* vector); + +// Compares vector content +bool vc_vector_is_equals(vc_vector* vector1, vc_vector* vector2); + +// Returns constant value of the vector growth factor. +float vc_vector_get_growth_factor(); + +// Returns constant value of the vector default count of elements. +size_t vc_vector_get_default_count_of_elements(); + +// Returns constant value of the vector struct size. +size_t vc_vector_struct_size(); + +// ---------------------------------------------------------------------------- +// Element access +// ---------------------------------------------------------------------------- + +// Returns the item at index position in the vector. +void* vc_vector_at(vc_vector* vector, size_t index); + +// Returns the first item in the vector. +void* vc_vector_front(vc_vector* vector); + +// Returns the last item in the vector. +void* vc_vector_back(vc_vector* vector); + +// Returns a pointer to the data stored in the vector. The pointer can be used to access and modify the items in the vector. +void* vc_vector_data(vc_vector* vector); + +// ---------------------------------------------------------------------------- +// Iterators +// ---------------------------------------------------------------------------- + +// Returns a pointer to the first item in the vector. +void* vc_vector_begin(vc_vector* vector); + +// Returns a pointer to the imaginary item after the last item in the vector. +void* vc_vector_end(vc_vector* vector); + +// Returns a pointer to the next element of vector after 'i'. +void* vc_vector_next(vc_vector* vector, void* i); + +// ---------------------------------------------------------------------------- +// Capacity +// ---------------------------------------------------------------------------- + +// Returns true if the vector is empty; otherwise returns false. +bool vc_vector_empty(vc_vector* vector); + +// Returns the number of elements in the vector. +size_t vc_vector_count(const vc_vector* vector); + +// Returns the size (in bytes) of occurrences of value in the vector. +size_t vc_vector_size(const vc_vector* vector); + +// Returns the maximum number of elements that the vector can hold. +size_t vc_vector_max_count(const vc_vector* vector); + +// Returns the maximum size (in bytes) that the vector can hold. +size_t vc_vector_max_size(const vc_vector* vector); + +// Resizes the container so that it contains n elements. +bool vc_vector_reserve_count(vc_vector* vector, size_t new_count); + +// Resizes the container so that it contains new_size / element_size elements. +bool vc_vector_reserve_size(vc_vector* vector, size_t new_size); + +// ---------------------------------------------------------------------------- +// Modifiers +// ---------------------------------------------------------------------------- + +// Removes all elements from the vector (without reallocation). +void vc_vector_clear(vc_vector* vector); + +// The container is extended by inserting a new element at position. +bool vc_vector_insert(vc_vector* vector, size_t index, const void* value); + +// Removes from the vector a single element by 'index' +bool vc_vector_erase(vc_vector* vector, size_t index); + +// Removes from the vector a range of elements '[first_index, last_index)'. +bool vc_vector_erase_range(vc_vector* vector, size_t first_index, size_t last_index); + +// Inserts multiple values at the end of the vector. +bool vc_vector_append(vc_vector* vector, const void* values, size_t count); + +// Inserts value at the end of the vector. +bool vc_vector_push_back(vc_vector* vector, const void* value); + +// Removes the last item in the vector. +bool vc_vector_pop_back(vc_vector* vector); + +// Replace value by index in the vector. +bool vc_vector_replace(vc_vector* vector, size_t index, const void* value); + +// Replace multiple values by index in the vector. +bool vc_vector_replace_multiple(vc_vector* vector, size_t index, const void* values, size_t count); + +#endif // VCVECTOR_H diff --git a/tools/fado/lib/vc_vector/vc_vector_test.c b/tools/fado/lib/vc_vector/vc_vector_test.c new file mode 100644 index 0000000000..03a0544206 --- /dev/null +++ b/tools/fado/lib/vc_vector/vc_vector_test.c @@ -0,0 +1,353 @@ +#include "vc_vector_test.h" +#include +#include +#include +#include "vc_vector.h" + +#define ASSERT_EQ(expected, actual) \ + do { \ + if ((expected) != (actual)) { \ + fprintf(stderr, \ + "Failed line %u. Expected: %"PRIuMAX". Actual: %"PRIuMAX".\n", \ + __LINE__, (uintmax_t)(expected), (uintmax_t)(actual)); \ + abort(); \ + } \ + } while (0) + +#define ASSERT_NE(not_expected, actual) \ + do { \ + if ((not_expected) == (actual)) { \ + fprintf(stderr, \ + "Failed line %u. Unexpected actual value: %"PRIuMAX".\n", \ + __LINE__, (uintmax_t)(actual)); \ + abort(); \ + } \ + } while (0) + +#define ASSERT_TRUE(actual) ASSERT_EQ(true, (actual)) + +#define ASSERT_FALSE(actual) ASSERT_EQ(false, (actual)) + +#define PRINT_VECTOR(vector, type, format) \ + do { \ + for (void* i = vc_vector_begin(vector); \ + i != vc_vector_end(vector); \ + i = vc_vector_next(vector, i)) { \ + fprintf(stderr, format, *(type*)i); \ + } \ + fprintf(stderr, "\n"); \ + } while (0) + +#define PRINT_VECTOR_INT(vector) PRINT_VECTOR(vector, int, "%d; ") +#define PRINT_VECTOR_STR(vector) PRINT_VECTOR(vector, char *, "%s; ") + +char *mystrdup(const char *s) { + size_t size = strlen(s) + 1; + char *copy = malloc(size); + if (copy != NULL) + memcpy(copy, s, size); + return copy; +} + +// ---------------------------------------------------------------------------- + +void test_vc_vector_create() { + const size_t size_of_type = sizeof(int); + const size_t default_count_of_elements = vc_vector_get_default_count_of_elements(); + + // Creating vector with default count of elements + vc_vector* vector = vc_vector_create(0, size_of_type, NULL); + ASSERT_NE(NULL, vector); + ASSERT_EQ(0, vc_vector_count(vector)); + ASSERT_EQ(0, vc_vector_size(vector)); + ASSERT_EQ(default_count_of_elements, vc_vector_max_count(vector)); + ASSERT_EQ(size_of_type * default_count_of_elements, vc_vector_max_size(vector)); + vc_vector_release(vector); + + // Creating vector with custom count of elements + const size_t test_count_of_elements = 7; + vector = vc_vector_create(test_count_of_elements, size_of_type, NULL); + ASSERT_NE(NULL, vector); + ASSERT_EQ(0, vc_vector_count(vector)); + ASSERT_EQ(0, vc_vector_size(vector)); + ASSERT_EQ(test_count_of_elements, vc_vector_max_count(vector)); + ASSERT_EQ(size_of_type * test_count_of_elements, vc_vector_max_size(vector)); + vc_vector_release(vector); + + // Creating vector with zero size of single element + vector = vc_vector_create(0, 0, NULL); + ASSERT_EQ(NULL, vector); + + // Creating copy of vector + vector = vc_vector_create(0, size_of_type, NULL); + ASSERT_NE(NULL, vector); + for (int i = 0; (size_t)i < test_count_of_elements; ++i) { + ASSERT_TRUE(vc_vector_push_back(vector, &i)); + } + + vc_vector* vector_copy = vc_vector_create_copy(vector); + ASSERT_NE(NULL, vector_copy); + ASSERT_TRUE(vc_vector_is_equals(vector, vector_copy)); + + vc_vector_release(vector_copy); + vc_vector_release(vector); + + printf("%s passed.\n", __func__); +} + +void test_vc_vector_element_access() { + const int test_num_start = 18; + const int test_num_end = 36; + const size_t size_of_type = sizeof(test_num_start); + + vc_vector* vector = vc_vector_create(0, size_of_type, NULL); + ASSERT_NE(0, vector); + for (int i = test_num_start; i <= test_num_end; ++i) { + ASSERT_TRUE(vc_vector_push_back(vector, &i)); + } + + ASSERT_EQ(test_num_start, *(int*)vc_vector_front(vector)); + ASSERT_EQ(test_num_start, *(int*)vc_vector_data(vector)); + ASSERT_EQ(test_num_end, *(int*)vc_vector_back(vector)); + + for (int i = test_num_start, j = 0; i <= test_num_end; ++i, ++j) { + ASSERT_EQ(i, *(int*)vc_vector_at(vector, j)); + } + + vc_vector_release(vector); + + printf("%s passed.\n", __func__); +} + +void test_vc_vector_iterators() { + vc_vector* vector = vc_vector_create(0, sizeof(int), NULL); + ASSERT_NE(NULL, vector); + + const size_t test_count_of_elements = 23; + for (int i = 0; (size_t)i < test_count_of_elements; ++i) { + ASSERT_TRUE(vc_vector_push_back(vector, &i)); + } + + int j = 0; + for (void* i = vc_vector_begin(vector); + i != vc_vector_end(vector); + i = vc_vector_next(vector, i), ++j) { + ASSERT_EQ(j, *(int*)i); + } + + ASSERT_EQ(test_count_of_elements, (size_t)j); + vc_vector_release(vector); + + printf("%s passed.\n", __func__); +} + +void test_vc_vector_capacity() { + const size_t size_of_element = sizeof(int); + const float growth_factor = vc_vector_get_growth_factor(); + ASSERT_EQ(1.5, growth_factor); + + const size_t count_of_elements_initialized = 22; + const size_t max_size_of_vector_initialized = count_of_elements_initialized * size_of_element; + const size_t count_of_elements_ended = 23; + const size_t size_of_vector_ended = count_of_elements_ended * size_of_element; + const size_t max_count_of_vector_ended = count_of_elements_initialized * growth_factor; + const size_t max_size_of_vector_ended = max_count_of_vector_ended * size_of_element; + + vc_vector* vector = vc_vector_create(count_of_elements_initialized, size_of_element, NULL); + ASSERT_NE(NULL, vector); + + ASSERT_EQ(0, vc_vector_count(vector)); + ASSERT_TRUE(vc_vector_empty(vector)); + ASSERT_EQ(0, vc_vector_size(vector)); + ASSERT_EQ(count_of_elements_initialized, vc_vector_max_count(vector)); + ASSERT_EQ(max_size_of_vector_initialized, vc_vector_max_size(vector)); + + for (int i = 0; (size_t)i < count_of_elements_ended; ++i) { + ASSERT_TRUE(vc_vector_push_back(vector, &i)); + } + + ASSERT_EQ(count_of_elements_ended, vc_vector_count(vector)); + ASSERT_FALSE(vc_vector_empty(vector)); + ASSERT_EQ(size_of_vector_ended, vc_vector_size(vector)); + ASSERT_EQ(max_count_of_vector_ended, vc_vector_max_count(vector)); + ASSERT_EQ(max_size_of_vector_ended, vc_vector_max_size(vector)); + + const size_t test_reserve_count_fail = 10; + ASSERT_FALSE(vc_vector_reserve_count(vector, test_reserve_count_fail)); + + const size_t test_reserve_count = 35; + ASSERT_TRUE(vc_vector_reserve_count(vector, test_reserve_count)); + ASSERT_EQ(test_reserve_count, vc_vector_max_count(vector)); + ASSERT_EQ(test_reserve_count * size_of_element, vc_vector_max_size(vector)); + + // Second time with the same value + ASSERT_TRUE(vc_vector_reserve_count(vector, test_reserve_count)); + ASSERT_EQ(test_reserve_count, vc_vector_max_count(vector)); + ASSERT_EQ(test_reserve_count * size_of_element, vc_vector_max_size(vector)); + + const size_t test_reserve_size = 123 * size_of_element; + ASSERT_TRUE(vc_vector_reserve_size(vector, test_reserve_size)); + ASSERT_EQ(test_reserve_size / size_of_element, vc_vector_max_count(vector)); + ASSERT_EQ(test_reserve_size, vc_vector_max_size(vector)); + + vc_vector_release(vector); + + printf("%s passed.\n", __func__); +} + +void test_vc_vector_modifiers() { + const int begin[] = { + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 + }; + const size_t size_of_element = sizeof(begin[0]); + const size_t count_of_elements = sizeof(begin) / size_of_element; + + // After deleting first, last and one middle elements + const int after_deleting_some_elements[] = { + /* 1, */ 2, 3, 4, 5, 6, 7, 8, 9, 10, /* 11, */ 12, 13, 14, 15, 16, 17, 18, 19, /* 20 */ + }; + + // After deleting first 3 elemets from begin, 4 from middle and 3 from end + const int after_deleting_some_ranges[] = { + /* 1, 2, 3, */ 4, 5, 6, 7, 8, /* 9, 10, 11, 12, */ 13, 14, 15, 16, 17, /* 18, 19, 20 */ + }; + + vc_vector* vector = vc_vector_create(0, size_of_element, NULL); + ASSERT_NE(NULL, vector); + + // Append test + + ASSERT_TRUE(vc_vector_append(vector, begin, count_of_elements)); + + ASSERT_EQ(count_of_elements, vc_vector_count(vector)); + for (size_t i = 0; i < vc_vector_count(vector); ++i) { + ASSERT_EQ(begin[i], *(int*)vc_vector_at(vector, i)); + } + + // Pop back test + + while (vc_vector_count(vector) > 0) { + ASSERT_TRUE(vc_vector_pop_back(vector)); + } + + ASSERT_TRUE(vc_vector_empty(vector)); + + // Push back test + + for (size_t i = 0; i < count_of_elements; ++i) { + ASSERT_TRUE(vc_vector_push_back(vector, &begin[i])); + } + + ASSERT_EQ(count_of_elements, vc_vector_count(vector)); + for (size_t i = 0; i < vc_vector_count(vector); ++i) { + ASSERT_EQ(begin[i], *(int*)vc_vector_at(vector, i)); + } + + // Erase test + + vc_vector_clear(vector); + ASSERT_TRUE(vc_vector_append(vector, begin, count_of_elements)); + + ASSERT_TRUE(vc_vector_erase(vector, 0)); + ASSERT_TRUE(vc_vector_erase(vector, vc_vector_count(vector) - 1)); + ASSERT_TRUE(vc_vector_erase(vector, vc_vector_count(vector) / 2)); + + ASSERT_EQ(sizeof(after_deleting_some_elements) / size_of_element, vc_vector_count(vector)); + for (size_t i = 0; i < vc_vector_count(vector); ++i) { + ASSERT_EQ(after_deleting_some_elements[i], *(int*)vc_vector_at(vector, i)); + } + + // Erase range test + + vc_vector_clear(vector); + ASSERT_TRUE(vc_vector_append(vector, begin, count_of_elements)); + + ASSERT_TRUE(vc_vector_erase_range(vector, 0, 3)); + ASSERT_TRUE(vc_vector_erase_range(vector, vc_vector_count(vector) - 3, vc_vector_count(vector))); + ASSERT_TRUE(vc_vector_erase_range(vector, vc_vector_count(vector) / 2 - 2, vc_vector_count(vector) / 2 + 2)); + + ASSERT_EQ(sizeof(after_deleting_some_ranges) / size_of_element, vc_vector_count(vector)); + for (size_t i = 0; i < vc_vector_count(vector); ++i) { + ASSERT_EQ(after_deleting_some_ranges[i], *(int*)vc_vector_at(vector, i)); + } + + // Insert test + + vc_vector_clear(vector); + for (size_t i = 1; i < count_of_elements - 1; ++i) { + ASSERT_TRUE(vc_vector_insert(vector, i - 1, &begin[i])); + } + + ASSERT_TRUE(vc_vector_insert(vector, 0, &begin[0])); + ASSERT_TRUE(vc_vector_insert(vector, vc_vector_count(vector), &begin[count_of_elements - 1])); + + ASSERT_EQ(count_of_elements, vc_vector_count(vector)); + for (size_t i = 0; i < vc_vector_count(vector); ++i) { + ASSERT_EQ(begin[i], *(int*)vc_vector_at(vector, i)); + } + + vc_vector_release(vector); + + printf("%s passed.\n", __func__); +} + +void test_vc_vector_strfreefunc(void *data) { + free(*(char **)data); +} + +void test_vc_vector_with_strfreefunc() { + // creates a vector of pointers to char, i.e. a vector of variable sized strings + vc_vector* vector = vc_vector_create(3, sizeof(char *), test_vc_vector_strfreefunc); + ASSERT_NE(NULL, vector); + + char *strs[] = { + mystrdup("abcde"), + mystrdup("edcba"), + mystrdup("1234554321"), + mystrdup("!@#$%"), + mystrdup("not empty string"), + mystrdup(""), + mystrdup("Hello World"), + mystrdup("xxxxx"), + mystrdup("yyyyy") + }; + + for (size_t i = 0; i < 3; ++i) { + ASSERT_TRUE(vc_vector_push_back(vector, &strs[i])); + } + + ASSERT_EQ(3, vc_vector_count(vector)); + + for (size_t i = 3; i < 6; ++i) { + ASSERT_TRUE(vc_vector_insert(vector, i, &strs[i])); + } + + ASSERT_EQ(6, vc_vector_count(vector)); + vc_vector_clear(vector); // strs[0-6] were freed + ASSERT_EQ(0, vc_vector_count(vector)); + + for (size_t i = 6; i < 9; ++i) { + ASSERT_TRUE(vc_vector_push_back(vector, &strs[i])); + } + + ASSERT_EQ(3, vc_vector_count(vector)); + + vc_vector_release(vector); + + printf("%s passed.\n", __func__); +} + +void vc_vector_run_tests() { + test_vc_vector_create(); + test_vc_vector_element_access(); + test_vc_vector_iterators(); + test_vc_vector_capacity(); + test_vc_vector_modifiers(); + test_vc_vector_with_strfreefunc(); +} + +int main() { + vc_vector_run_tests(); + printf("Tests passed.\n"); + return 0; +} diff --git a/tools/fado/lib/vc_vector/vc_vector_test.h b/tools/fado/lib/vc_vector/vc_vector_test.h new file mode 100644 index 0000000000..9439ea3c61 --- /dev/null +++ b/tools/fado/lib/vc_vector/vc_vector_test.h @@ -0,0 +1,6 @@ +#ifndef VCVECTORTESTS_H +#define VCVECTORTESTS_H + +void vc_vector_run_tests(); + +#endif // VCVECTORTESTS_H diff --git a/tools/fado/src/fado.c b/tools/fado/src/fado.c new file mode 100644 index 0000000000..9edb394cd3 --- /dev/null +++ b/tools/fado/src/fado.c @@ -0,0 +1,310 @@ +/** + * Code specific to reading and outputting Zelda 64 relocations + */ +/* Copyright (C) 2021 Elliptic Ellipsis */ +/* SPDX-License-Identifier: AGPL-3.0-only */ +#include "fado.h" + +#include +#include +#include +#include +#include +#include +#include "fairy/fairy.h" +#include "macros.h" +#include "vc_vector/vc_vector.h" + +/* String-finding-related functions */ + +bool Fado_CheckInProgBitsSections(Elf32_Section section, vc_vector* progBitsSections) { + Elf32_Section* i; + VC_FOREACH(i, progBitsSections) { + if (*i == section) { + return true; + } + } + return false; +} + +/** + * For each input file, construct a vector of pointers to the starts of the strings defined in that file. + */ +void Fado_ConstructStringVectors(vc_vector** stringVectors, FairyFileInfo* fileInfo, int numFiles) { + int currentFile; + size_t currentSym; + + for (currentFile = 0; currentFile < numFiles; currentFile++) { + FairySym* symtab = fileInfo[currentFile].symtabInfo.sectionData; + + stringVectors[currentFile] = vc_vector_create(0x40, sizeof(char**), NULL); + + /* Build a vector of pointers to defined symbols' names */ + for (currentSym = 0; currentSym < fileInfo[currentFile].symtabInfo.sectionSize / sizeof(FairySym); + currentSym++) { + if ((symtab[currentSym].st_shndx != STN_UNDEF) && + Fado_CheckInProgBitsSections(symtab[currentSym].st_shndx, fileInfo[currentFile].progBitsSections)) { + /* Have to pass a double pointer so it copies the pointer instead of the start of the string */ + char* stringPtr = &fileInfo[currentFile].strtab[symtab[currentSym].st_name]; + assert(vc_vector_push_back(stringVectors[currentFile], &stringPtr)); + } + } + } +} + +bool Fado_FindSymbolNameInOtherFiles(const char* name, int thisFile, vc_vector** stringVectors, int numFiles) { + int currentFile; + char** currentString; + + for (currentFile = 0; currentFile < numFiles; currentFile++) { + if (currentFile == thisFile) { + continue; + } + VC_FOREACH(currentString, stringVectors[currentFile]) { + if (strcmp(name, *currentString) == 0) { + FAIRY_DEBUG_PRINTF("Match found for %s\n", name); + return true; + } + } + } + FAIRY_DEBUG_PRINTF("No match found for %s\n", name); + return false; +} + +void Fado_DestroyStringVectors(vc_vector** stringVectors, int numFiles) { + int currentFile; + for (currentFile = 0; currentFile < numFiles; currentFile++) { + vc_vector_release(stringVectors[currentFile]); + } + free(stringVectors); +} + +typedef struct { + size_t symbolIndex; + int file; + uint32_t relocWord; +} FadoRelocInfo; + +/* Construct the Zelda64ovl-compatible reloc word from an ELF reloc */ +FadoRelocInfo Fado_MakeReloc(int file, FairySection section, FairyRel* data) { + FadoRelocInfo relocInfo = { 0 }; + uint32_t sectionPrefix = 0; + + relocInfo.symbolIndex = ELF32_R_SYM(data->r_info); + relocInfo.file = file; + + switch (section) { + case FAIRY_SECTION_TEXT: + sectionPrefix = 1; + break; + + case FAIRY_SECTION_DATA: + sectionPrefix = 2; + break; + + case FAIRY_SECTION_RODATA: + sectionPrefix = 3; + break; + + default: + fprintf(stderr, "warning: Relocation section is invalid.\n"); + break; + } + relocInfo.relocWord = + ((sectionPrefix & 3) << 0x1E) | (ELF32_R_TYPE(data->r_info) << 0x18) | (data->r_offset & 0xFFFFFF); + + return relocInfo; +} + +static const FairyDefineString relSectionNames[] = { + FAIRY_DEF_STRING(FAIRY_SECTION_, TEXT), + FAIRY_DEF_STRING(FAIRY_SECTION_, DATA), + FAIRY_DEF_STRING(FAIRY_SECTION_, RODATA), + { 0 }, +}; + +/* Taken from elf.h */ +static const FairyDefineString relTypeNames[] = { + FAIRY_DEF_STRING(, R_MIPS_NONE), /* No reloc */ + FAIRY_DEF_STRING(, R_MIPS_16), /* Direct 16 bit */ + FAIRY_DEF_STRING(, R_MIPS_32), /* Direct 32 bit */ + FAIRY_DEF_STRING(, R_MIPS_REL32), /* PC relative 32 bit */ + FAIRY_DEF_STRING(, R_MIPS_26), /* Direct 26 bit shifted */ + FAIRY_DEF_STRING(, R_MIPS_HI16), /* High 16 bit */ + FAIRY_DEF_STRING(, R_MIPS_LO16), /* Low 16 bit */ + FAIRY_DEF_STRING(, R_MIPS_GPREL16), /* GP relative 16 bit */ + FAIRY_DEF_STRING(, R_MIPS_LITERAL), /* 16 bit literal entry */ + FAIRY_DEF_STRING(, R_MIPS_GOT16), /* 16 bit GOT entry */ + FAIRY_DEF_STRING(, R_MIPS_PC16), /* PC relative 16 bit */ + FAIRY_DEF_STRING(, R_MIPS_CALL16), /* 16 bit GOT entry for function */ + FAIRY_DEF_STRING(, R_MIPS_GPREL32), /* GP relative 32 bit */ + FAIRY_DEF_STRING(, R_MIPS_SHIFT5), + FAIRY_DEF_STRING(, R_MIPS_SHIFT6), + FAIRY_DEF_STRING(, R_MIPS_64), + FAIRY_DEF_STRING(, R_MIPS_GOT_DISP), + FAIRY_DEF_STRING(, R_MIPS_GOT_PAGE), + FAIRY_DEF_STRING(, R_MIPS_GOT_OFST), + FAIRY_DEF_STRING(, R_MIPS_GOT_HI16), + FAIRY_DEF_STRING(, R_MIPS_GOT_LO16), + FAIRY_DEF_STRING(, R_MIPS_SUB), + FAIRY_DEF_STRING(, R_MIPS_INSERT_A), + FAIRY_DEF_STRING(, R_MIPS_INSERT_B), + FAIRY_DEF_STRING(, R_MIPS_DELETE), + FAIRY_DEF_STRING(, R_MIPS_HIGHER), + FAIRY_DEF_STRING(, R_MIPS_HIGHEST), + FAIRY_DEF_STRING(, R_MIPS_CALL_HI16), + FAIRY_DEF_STRING(, R_MIPS_CALL_LO16), + FAIRY_DEF_STRING(, R_MIPS_SCN_DISP), + FAIRY_DEF_STRING(, R_MIPS_REL16), + FAIRY_DEF_STRING(, R_MIPS_ADD_IMMEDIATE), + FAIRY_DEF_STRING(, R_MIPS_PJUMP), + FAIRY_DEF_STRING(, R_MIPS_RELGOT), + FAIRY_DEF_STRING(, R_MIPS_JALR), + FAIRY_DEF_STRING(, R_MIPS_TLS_DTPMOD32), /* Module number 32 bit */ + FAIRY_DEF_STRING(, R_MIPS_TLS_DTPREL32), /* Module-relative offset 32 bit */ + FAIRY_DEF_STRING(, R_MIPS_TLS_DTPMOD64), /* Module number 64 bit */ + FAIRY_DEF_STRING(, R_MIPS_TLS_DTPREL64), /* Module-relative offset 64 bit */ + FAIRY_DEF_STRING(, R_MIPS_TLS_GD), /* 16 bit GOT offset for GD */ + FAIRY_DEF_STRING(, R_MIPS_TLS_LDM), /* 16 bit GOT offset for LDM */ + FAIRY_DEF_STRING(, R_MIPS_TLS_DTPREL_HI16), /* Module-relative offset, high 16 bits */ + FAIRY_DEF_STRING(, R_MIPS_TLS_DTPREL_LO16), /* Module-relative offset, low 16 bits */ + FAIRY_DEF_STRING(, R_MIPS_TLS_GOTTPREL), /* 16 bit GOT offset for IE */ + FAIRY_DEF_STRING(, R_MIPS_TLS_TPREL32), /* TP-relative offset, 32 bit */ + FAIRY_DEF_STRING(, R_MIPS_TLS_TPREL64), /* TP-relative offset, 64 bit */ + FAIRY_DEF_STRING(, R_MIPS_TLS_TPREL_HI16), /* TP-relative offset, high 16 bits */ + FAIRY_DEF_STRING(, R_MIPS_TLS_TPREL_LO16), /* TP-relative offset, low 16 bits */ + FAIRY_DEF_STRING(, R_MIPS_GLOB_DAT), + FAIRY_DEF_STRING(, R_MIPS_COPY), + FAIRY_DEF_STRING(, R_MIPS_JUMP_SLOT), + FAIRY_DEF_STRING(, R_MIPS_NUM), +}; + +/** + * Find all the necessary relocations to retain (those defined in any input file), and print them in the appropriate + * format. + */ +void Fado_Relocs(FILE* outputFile, int inputFilesCount, FILE** inputFiles, const char* ovlName) { + /* General information structs */ + FairyFileInfo* fileInfos = malloc(inputFilesCount * sizeof(FairyFileInfo)); + + /* Symbol tables for each file */ + FairySym** symtabs = malloc(inputFilesCount * sizeof(FairySym*)); + + /* Lists of names of symbols defined in files of the overlay */ + vc_vector** stringVectors = malloc(inputFilesCount * sizeof(vc_vector*)); + + /* The relocs in the format we will print */ + vc_vector* relocList[FAIRY_SECTION_OTHER]; /* Maximum number of reloc sections */ + + /* Offset of current file's current section into the overlay's whole section */ + uint32_t sectionOffset[FAIRY_SECTION_OTHER] = { 0 }; + + /* Total number of relocs */ + uint32_t relocCount = 0; + + /* iterators */ + int currentFile; + FairySection section; + size_t relocIndex; + + for (currentFile = 0; currentFile < inputFilesCount; currentFile++) { + FAIRY_INFO_PRINTF("Begin initialising file %d info.\n", currentFile); + Fairy_InitFile(&fileInfos[currentFile], inputFiles[currentFile]); + FAIRY_INFO_PRINTF("Initialising file %d info complete.\n", currentFile); + + symtabs[currentFile] = fileInfos[currentFile].symtabInfo.sectionData; + } + + Fado_ConstructStringVectors(stringVectors, fileInfos, inputFilesCount); + FAIRY_INFO_PRINTF("%s", "symtabs set\n"); + + /* Construct relocList of all relevant relocs */ + for (section = FAIRY_SECTION_TEXT; section < FAIRY_SECTION_OTHER; section++) { + relocList[section] = vc_vector_create(0x100, sizeof(FadoRelocInfo), NULL); + + for (currentFile = 0; currentFile < inputFilesCount; currentFile++) { + FairyRel* relSection = fileInfos[currentFile].relocTablesInfo[section].sectionData; + if (relSection != NULL) { + + for (relocIndex = 0; + relocIndex < fileInfos[currentFile].relocTablesInfo[section].sectionSize / sizeof(FairyRel); + relocIndex++) { + FadoRelocInfo currentReloc = Fado_MakeReloc(currentFile, section, &relSection[relocIndex]); + + if ((symtabs[currentFile][currentReloc.symbolIndex].st_shndx != STN_UNDEF) || + Fado_FindSymbolNameInOtherFiles( + &fileInfos[currentFile].strtab[symtabs[currentFile][currentReloc.symbolIndex].st_name], + currentFile, stringVectors, inputFilesCount)) { + + currentReloc.relocWord += sectionOffset[section]; + FAIRY_DEBUG_PRINTF("current section offset: %d\n", sectionOffset[section]); + vc_vector_push_back(relocList[section], ¤tReloc); + relocCount++; + } + } + } else { + FAIRY_INFO_PRINTF("%s", "Ignoring empty reloc section\n"); + } + + sectionOffset[section] += fileInfos[currentFile].progBitsSizes[section]; + FAIRY_INFO_PRINTF("section offset: %d\n", sectionOffset[section]); + } + } + + { + /* Write header */ + fprintf(outputFile, ".section .ovl\n"); + fprintf(outputFile, "# %sOverlayInfo\n", ovlName); + fprintf(outputFile, ".word _%sSegmentTextSize\n", ovlName); + fprintf(outputFile, ".word _%sSegmentDataSize\n", ovlName); + fprintf(outputFile, ".word _%sSegmentRoDataSize\n", ovlName); + fprintf(outputFile, ".word _%sSegmentBssSize\n", ovlName); + + fprintf(outputFile, "\n.word %d # relocCount\n", relocCount); + + /* Write reloc table */ + for (section = FAIRY_SECTION_TEXT; section < FAIRY_SECTION_OTHER; section++) { + if (vc_vector_count(relocList[section]) == 0) { + FAIRY_INFO_PRINTF("%s", "Ignoring empty reloc section\n"); + continue; + } + + fprintf(outputFile, "\n# %s RELOCS\n", Fairy_StringFromDefine(relSectionNames, section)); + + { + FadoRelocInfo* currentReloc; + VC_FOREACH(currentReloc, relocList[section]) { + fprintf(outputFile, ".word 0x%X # %-11s 0x%06X %s\n", currentReloc->relocWord, + Fairy_StringFromDefine(relTypeNames, (currentReloc->relocWord >> 0x18) & 0x3F), + currentReloc->relocWord & 0xFFFFFF, + Fairy_GetSymbolName(symtabs[currentReloc->file], fileInfos[currentReloc->file].strtab, + currentReloc->symbolIndex)); + } + } + } + + /* print pads and section size */ + for (relocCount += 5; ((relocCount + 1) & 3) != 0; relocCount++) { + fprintf(outputFile, ".word 0\n"); + } + fprintf(outputFile, "\n.word 0x%08X # %sOverlayInfoOffset\n", 4 * (relocCount + 1), ovlName); + } + + for (currentFile = 0; currentFile < inputFilesCount; currentFile++) { + Fairy_DestroyFile(&fileInfos[currentFile]); + FAIRY_INFO_PRINTF("Freed file %d\n", currentFile); + } + + for (section = FAIRY_SECTION_TEXT; section < FAIRY_SECTION_OTHER; section++) { + if (relocList[section] != NULL) { + vc_vector_release(relocList[section]); + } + FAIRY_INFO_PRINTF("Freed relocList[%d]\n", section); + } + + Fado_DestroyStringVectors(stringVectors, inputFilesCount); + FAIRY_INFO_PRINTF("%s", "Freed string vectors\n"); + free(symtabs); + FAIRY_INFO_PRINTF("%s", "Freed symtabs\n"); + free(fileInfos); +} diff --git a/tools/fado/src/help.c b/tools/fado/src/help.c new file mode 100644 index 0000000000..ddb9939a16 --- /dev/null +++ b/tools/fado/src/help.c @@ -0,0 +1,162 @@ +/** + * Getopt-compatible printing of formatted help. + */ +/* Copyright (C) 2021 Elliptic Ellipsis */ +/* SPDX-License-Identifier: AGPL-3.0-only */ +#include "help.h" + +#include +#include +#include +#include +#include +#include + +#include "macros.h" + +/* Values of the variables used by Help_PrintHelp. Defaults are taken from common terminal programs like grep */ +size_t helpTextWidth = 80; +size_t helpDtIndent = 2; +size_t helpDdIndent = 25; + +/** + * Prints a paragraph, word wrapped to helpTextWidth, with a hanging indent. initialColumn is used to determine how wide + * the first line should be, while indentFirstLine should be true if there is no previous text on the line (an ordinary + * paragraph), and false if there is (e.g. as a description list description) + */ +void Help_PrintFlowAndIndent(const char* string, size_t initialColumn, size_t textWidth, size_t hangingIndent, + bool indentFirstLine) { + size_t column = initialColumn; + size_t index = 0; + size_t inLength = strlen(string); + size_t lookAhead; + bool shouldBreak; + + assert(initialColumn < textWidth); + assert(hangingIndent < textWidth); + + if (indentFirstLine) { + printf("%*s", (int)initialColumn, ""); + } + + for (; index <= inLength; index++) { + shouldBreak = 0; + + if (column == textWidth) { + printf("%c\n%*s", string[index], (int)hangingIndent, ""); + column = hangingIndent; + continue; + } + + column++; + + switch (string[index]) { + case '\0': + return; + + case ' ': + if (column == hangingIndent) { + continue; + } + + for (lookAhead = 0; lookAhead <= textWidth - column; lookAhead++) { + // printf("%c\n", src[index + lookAhead]); + if (string[index + lookAhead + 1] == ' ' || string[index + lookAhead + 1] == '\0') { + putchar(' '); + shouldBreak = 1; + break; + } + } + if (shouldBreak) { /* Damn shared keywords. */ + break; + } + case '\n': + printf("\n%*s", (int)hangingIndent, ""); + column = hangingIndent; + break; + + default: + putchar(string[index]); + break; + } + } +} + +/** + * Prints help in the form + * ``` + * prologue (word wrapped) + * + * Positional arguments + * arg1 Description (word + * wrapped) + * arg2 Description (word + * wrapped) + * + * Options + * -a --long-name=ARG Description (word + * wrapped) + * + * epilogue (word wrapped) + * ``` + * where the positional arguments are described using the posArgInfo array, and options are fed using the OptInfo array, + * which should both be null-terminated. posArgCount/optCount is the actual number of positional arguments/options: it + * is used to guarantee no garbage is printed even if the user has not null-terminated the array. (optCount is required + * for constructing the getopt option array anyway.) + */ +void Help_PrintHelp(const char* prologue, size_t posArgCount, const PosArgInfo* posArgInfo, size_t optCount, + const OptInfo* optInfo, const char* epilogue) { + size_t i; + size_t dtLength; + int padding; + + Help_PrintFlowAndIndent(prologue, 0, helpTextWidth, 0, false); + + if (posArgCount != 0) { + printf("\nPositional Argument\n"); + for (i = 0; i < optCount; i++) { + if (posArgInfo[i].helpArg == 0) { + break; + } + + dtLength = helpDtIndent + strlen(posArgInfo[i].helpArg); + + padding = helpDdIndent - dtLength - 2; + printf("%*s%s%*s ", (int)helpDtIndent, "", posArgInfo[i].helpArg, CLAMP_MIN(padding, 0), ""); + + Help_PrintFlowAndIndent(posArgInfo[i].helpMsg, CLAMP_MIN(dtLength + 2, helpDdIndent), helpTextWidth, + helpDdIndent, false); + printf("\n"); + } + } + + if (optCount != 0) { + printf("\nOptions\n"); + + for (i = 0; i < optCount; i++) { + if (optInfo[i].longOpt.val == 0) { + break; + } + + dtLength = helpDtIndent + 6 + strlen(optInfo[i].longOpt.name); + + if (optInfo[i].helpArg == NULL) { + padding = helpDdIndent - dtLength - 2; + printf("%*s-%c, --%s%*s ", (int)helpDtIndent, "", optInfo[i].longOpt.val, optInfo[i].longOpt.name, + CLAMP_MIN(padding, 0), ""); + } else { + dtLength += 1 + strlen(optInfo[i].helpArg); + padding = helpDdIndent - dtLength - 2; + printf("%*s-%c, --%s=%s%*s ", (int)helpDtIndent, "", optInfo[i].longOpt.val, optInfo[i].longOpt.name, + optInfo[i].helpArg, CLAMP_MIN(padding, 0), ""); + } + Help_PrintFlowAndIndent(optInfo[i].helpMsg, CLAMP_MIN(dtLength + 2, helpDdIndent), helpTextWidth, + helpDdIndent, false); + printf("\n"); + } + } + + printf("\n"); + Help_PrintFlowAndIndent(epilogue, 0, helpTextWidth, 0, false); + printf("\n"); +} diff --git a/tools/fado/src/main.c b/tools/fado/src/main.c new file mode 100644 index 0000000000..18347651a4 --- /dev/null +++ b/tools/fado/src/main.c @@ -0,0 +1,229 @@ +/* Copyright (C) 2021 Elliptic Ellipsis */ +/* SPDX-License-Identifier: AGPL-3.0-only */ +#include +#include +#include +#include +#include + +#include "macros.h" +#include "fairy/fairy.h" +#include "fado.h" +#include "help.h" +#include "mido.h" +#include "vc_vector/vc_vector.h" + +#include "version.inc" + +void PrintVersion() { + printf("Fado (Fairy-Assisted relocations for Decompiled Overlays), version %s\n", versionNumber); + printf("Copyright (C) 2021 Elliptic Ellipsis\n"); + printf("%s\n", credits); + printf("Repository available at %s.\n", repo); +} + +#if defined _WIN32 || defined __CYGWIN__ +#define PATH_SEPARATOR '\\' +#else +#define PATH_SEPARATOR '/' +#endif + +/** + * (Bad) filename-parsing idea to get the overlay name from the filename. Output must be freed separately. + */ +char* GetOverlayNameFromFilename(const char* src) { + char* ret; + const char* ptr; + const char* start = src; + const char* end = src; + + for (ptr = src; *ptr != '\0'; ptr++) { + if (*ptr == PATH_SEPARATOR) { + start = end + 1; + end = ptr; + } + } + + if (end == src) { + return NULL; + } + + ret = malloc((end - start + 1) * sizeof(char)); + memcpy(ret, start, end - start); + ret[end - start] = '\0'; + + return ret; +} + +#define OPTSTR "M:n:o:v:hV" +#define USAGE_STRING "Usage: %s [-hV] [-n name] [-o output_file] [-v level] input_files ...\n" + +#define HELP_PROLOGUE \ + "Fado (Fairy-Assisted relocations for Decompiled Overlays\n" \ + "Extract relocations from object files and convert them into the format required by Zelda 64 overlays.\n" +#define HELP_EPILOGUE repo + +// clang-format off +static const PosArgInfo posArgInfo[] = { + { "INPUT_FILE", "Every positional argument is an input file, and there should be at least one input file. All inputs are relocatable .o (object) ELF files" }, + { NULL, NULL } +}; + +static const OptInfo optInfo[] = { + { { "make-dependency", required_argument, NULL, 'M' }, "FILE", "Write the output file's Makefile dependencies to FILE" }, + { { "name", required_argument, NULL, 'n' }, "NAME", "Use NAME as the overlay name. Will use the deepest folder name in the input file's path if not specified" }, + { { "output-file", required_argument, NULL, 'o' }, "FILE", "Output to FILE. Will use stdout if none is specified" }, + { { "verbosity", required_argument, NULL, 'v' }, "N", "Verbosity level, one of 0 (None, default), 1 (Info), 2 (Debug)" }, + + { { "help", no_argument, NULL, 'h' }, NULL, "Display this message and exit" }, + { { "version", no_argument, NULL, 'V' }, NULL, "Display version information" }, + + { { NULL, 0, NULL, '\0' }, NULL, NULL }, +}; +// clang-format on + +static size_t posArgCount = ARRAY_COUNT(optInfo); +static size_t optCount = ARRAY_COUNT(optInfo); +static struct option longOptions[ARRAY_COUNT(optInfo)]; + +void ConstructLongOpts() { + size_t i; + + for (i = 0; i < optCount; i++) { + longOptions[i] = optInfo[i].longOpt; + } +} + +int main(int argc, char** argv) { + int opt; + int inputFilesCount; + FILE** inputFiles; + FILE* outputFile = stdout; + char* outputFileName; + char* dependencyFileName = NULL; + char* ovlName = NULL; + + ConstructLongOpts(); + + if (argc < 2) { + printf(USAGE_STRING, argv[0]); + fprintf(stderr, "No input file specified\n"); + return EXIT_FAILURE; + } + + while (true) { + int optionIndex = 0; + + if ((opt = getopt_long(argc, argv, OPTSTR, longOptions, &optionIndex)) == -1) { + break; + } + + switch (opt) { + case 'M': + dependencyFileName = optarg; + break; + + case 'n': + ovlName = optarg; + break; + + case 'o': + outputFileName = optarg; + outputFile = fopen(optarg, "wb"); + if (outputFile == NULL) { + fprintf(stderr, "error: unable to open output file '%s' for writing", optarg); + return EXIT_FAILURE; + } + break; + + case 'v': + if (sscanf(optarg, "%u", &gVerbosity) == 0) { + fprintf(stderr, "warning: verbosity argument '%s' should be a nonnegative decimal integer", optarg); + } + break; + + case 'h': + printf(USAGE_STRING, argv[0]); + Help_PrintHelp(HELP_PROLOGUE, posArgCount, posArgInfo, optCount, optInfo, HELP_EPILOGUE); + return EXIT_FAILURE; + + case 'V': + PrintVersion(); + return EXIT_FAILURE; + + default: + fprintf(stderr, "?? getopt returned character code 0x%X ??\n", opt); + break; + } + } + + FAIRY_INFO_PRINTF("%s", "Options processed\n"); + + { + int i; + + inputFilesCount = argc - optind; + if (inputFilesCount == 0) { + fprintf(stderr, "No input files specified. Exiting.\n"); + return EXIT_FAILURE; + } + + inputFiles = malloc(inputFilesCount * sizeof(FILE*)); + for (i = 0; i < inputFilesCount; i++) { + FAIRY_INFO_PRINTF("Using input file %s\n", argv[optind + i]); + inputFiles[i] = fopen(argv[optind + i], "rb"); + if (inputFiles[i] == NULL) { + fprintf(stderr, "error: unable to open input file '%s' for reading", argv[optind + i]); + return EXIT_FAILURE; + } + } + + FAIRY_INFO_PRINTF("Found %d input file%s\n", inputFilesCount, (inputFilesCount == 1 ? "" : "s")); + + if (ovlName == NULL) { // If a name has not been set using an arg + ovlName = GetOverlayNameFromFilename(argv[optind]); + Fado_Relocs(outputFile, inputFilesCount, inputFiles, ovlName); + free(ovlName); + } else { + Fado_Relocs(outputFile, inputFilesCount, inputFiles, ovlName); + } + + for (i = 0; i < inputFilesCount; i++) { + fclose(inputFiles[i]); + } + free(inputFiles); + if (outputFile != stdout) { + fclose(outputFile); + } + } + + if (dependencyFileName != NULL) { + int fileNameLength = strlen(outputFileName); + char* objectFile = malloc((strlen(outputFileName) + 1) * sizeof(char)); + vc_vector* inputFilesVector = vc_vector_create(inputFilesCount, sizeof(char*), NULL); + char* extensionStart; + FILE* dependencyFile = fopen(dependencyFileName, "w"); + + if (dependencyFile == NULL) { + fprintf(stderr, "error: unable to open dependency file '%s' for writing", dependencyFileName); + return EXIT_FAILURE; + } + + strcpy(objectFile, outputFileName); + extensionStart = strrchr(objectFile, '.'); + if (extensionStart == objectFile + fileNameLength) { + fprintf(stderr, "error: file name should not end in a '.'"); + return EXIT_FAILURE; + } + strcpy(extensionStart, ".o"); + vc_vector_append(inputFilesVector, &argv[optind], inputFilesCount); + + Mido_WriteDependencyFile(dependencyFile, objectFile, inputFilesVector); + + free(objectFile); + vc_vector_release(inputFilesVector); + fclose(dependencyFile); + } + + return EXIT_SUCCESS; +} diff --git a/tools/fado/src/mido.c b/tools/fado/src/mido.c new file mode 100644 index 0000000000..bc5f3ed8a0 --- /dev/null +++ b/tools/fado/src/mido.c @@ -0,0 +1,20 @@ +#include "mido.h" + +#include +#include "macros.h" +#include "vc_vector/vc_vector.h" + +int Mido_WriteDependencyFile(FILE* dependencyFile, const char* relocFile, vc_vector* inputFilesVector) { + char** inputFile; + + fprintf(dependencyFile, "%s:", relocFile); + + VC_FOREACH(inputFile, inputFilesVector) { + fprintf(dependencyFile, " %s", *inputFile); + } + fputs("\n\n", dependencyFile); + VC_FOREACH(inputFile, inputFilesVector) { + fprintf(dependencyFile, "%s:\n\n", *inputFile); + } + return 0; +} diff --git a/tools/fado/src/version.inc b/tools/fado/src/version.inc new file mode 100644 index 0000000000..2b2938d352 --- /dev/null +++ b/tools/fado/src/version.inc @@ -0,0 +1,5 @@ +/* Copyright (C) 2021 Elliptic Ellipsis */ +/* SPDX-License-Identifier: AGPL-3.0-only */ +const char versionNumber[] = "1.1.1"; +const char credits[] = "Written by Elliptic Ellipsis\n Special Thanks: AngheloAlf"; +const char repo[] = "https://github.com/EllipticEllipsis/fado/"; diff --git a/tools/mkdmadata.c b/tools/mkdmadata.c index a9ed12db7d..79fb7d44fc 100644 --- a/tools/mkdmadata.c +++ b/tools/mkdmadata.c @@ -49,6 +49,7 @@ int main(int argc, char **argv) util_fatal_error("failed to open file '%s' for writing", argv[2]); write_dmadata_table(dmaout); fclose(dmaout); + free_rom_spec(g_segments, g_segmentsCount); free(spec); return 0; diff --git a/tools/mkldscript.c b/tools/mkldscript.c index f491a6a669..2239e864e2 100644 --- a/tools/mkldscript.c +++ b/tools/mkldscript.c @@ -227,6 +227,7 @@ int main(int argc, char **argv) write_ld_script(ldout); fclose(ldout); + free_rom_spec(g_segments, g_segmentsCount); free(spec); return 0; diff --git a/tools/n64chksum.h b/tools/n64chksum.h index 0ca13a819b..f5b73be49c 100644 --- a/tools/n64chksum.h +++ b/tools/n64chksum.h @@ -1,5 +1,7 @@ -#ifndef _N64CHKSUM_H_ -#define _N64CHKSUM_H_ +#ifndef N64CHKSUM_H +#define N64CHKSUM_H + +#include bool n64chksum_calculate(const uint8_t *romData, int cicType, uint32_t *chksum); diff --git a/tools/reloc_prereq.c b/tools/reloc_prereq.c new file mode 100644 index 0000000000..ea117f12ef --- /dev/null +++ b/tools/reloc_prereq.c @@ -0,0 +1,89 @@ +#include +#include +#include +#include + +#include "spec.h" +#include "util.h" + +void print_usage(char* prog_name) { + printf("USAGE: %s SPEC OVERLAY_SEGMENT_NAME\n" + "Search the preprocessed SPEC for an overlay segment name, \n" + "e.g. \"ovl_En_Firefly\", and return a space-separated list of the files it\n" + "includes. The relocation file must be the last include in the segment\n" + "OVERLAY_SEGMENT_NAME, and have the filename \"OVERLAY_SEGMENT_NAME_reloc.o\",\n" + "but can be in a different directory from the other files.\n", + prog_name); +} + +int main(int argc, char** argv) { + char* spec_path; + char* overlay_name; + char* spec; + size_t size; + Segment segment; + int exit_status = 0; + bool segmentFound = false; + + if (argc != 3) { + print_usage(argv[0]); + return 1; + } + + spec_path = argv[1]; + overlay_name = argv[2]; + + // printf("spec path: %s\n", spec_path); + // printf("overlay name: %s\n", overlay_name); + + spec = util_read_whole_file(spec_path, &size); + segmentFound = get_single_segment_by_name(&segment, spec, overlay_name); + + if (!segmentFound) { + fprintf(stderr, ERRMSG_START "no segment \"%s\" found\n" ERRMSG_END, overlay_name); + goto error_out; + } + + { + size_t overlay_name_length; + const char* reloc_suffix = "_reloc.o"; + char* expected_filename; + + /* Relocation file must be the last `include` (so .ovl section is linked last) */ + if (strstr(segment.includes[segment.includesCount - 1].fpath, reloc_suffix) == NULL) { + fprintf(stderr, ERRMSG_START "last include in overlay segment \"%s\" is not a `%s` file\n" ERRMSG_END, + overlay_name, reloc_suffix); + goto error_out; + } + + overlay_name_length = strlen(overlay_name); + expected_filename = malloc(overlay_name_length + strlen(reloc_suffix) + 1); + strcpy(expected_filename, overlay_name); + strcat(expected_filename, reloc_suffix); + + if (strstr(segment.includes[segment.includesCount - 1].fpath, expected_filename) == NULL) { + fprintf(stderr, ERRMSG_START "Relocation file \"%s\" should have filename \"%s\"\n" ERRMSG_END, + segment.includes[segment.includesCount - 1].fpath, expected_filename); + goto error_out; + } + free(expected_filename); + } + { + int i; + /* Skip `_reloc.o` include */ + for (i = 0; i < segment.includesCount - 1; i++) { + printf("%s ", segment.includes[i].fpath); + } + putchar('\n'); + } + + if (0) { + error_out: + exit_status = 1; + } + + free_single_segment_elements(&segment); + free(spec); + + return exit_status; +} diff --git a/tools/spec.c b/tools/spec.c index a31c5c0924..6a901a8300 100644 --- a/tools/spec.c +++ b/tools/spec.c @@ -140,6 +140,101 @@ static const char *const stmtNames[] = [STMT_pad_text] = "pad_text", }; +STMTId get_stmt_id_by_stmt_name(const char *stmtName, int lineNum) { + STMTId stmt; + + for (stmt = 0; stmt < ARRAY_COUNT(stmtNames); stmt++) { + if (strcmp(stmtName, stmtNames[stmt]) == 0) + return stmt; + } + util_fatal_error("line %i: unknown statement '%s'", lineNum, stmtName); + return -1; +} + +bool parse_segment_statement(struct Segment *currSeg, STMTId stmt, char* args, int lineNum) { + // ensure no duplicates (except for 'include' or 'pad_text') + if (stmt != STMT_include && stmt != STMT_include_data_with_rodata && stmt != STMT_pad_text && + (currSeg->fields & (1 << stmt))) + util_fatal_error("line %i: duplicate '%s' statement", lineNum, stmtNames[stmt]); + + currSeg->fields |= 1 << stmt; + + // statements valid within a segment definition + switch (stmt) + { + case STMT_beginseg: + util_fatal_error("line %i: '%s' inside of a segment definition", lineNum, stmtNames[stmt]); + break; + case STMT_endseg: + // verify segment data + if (currSeg->name == NULL) + util_fatal_error("line %i: no name specified for segment", lineNum); + if (currSeg->includesCount == 0) + util_fatal_error("line %i: no includes specified for segment", lineNum); + return true; + break; + case STMT_name: + if (!parse_quoted_string(args, &currSeg->name)) + util_fatal_error("line %i: invalid name", lineNum); + break; + case STMT_after: + if (!parse_quoted_string(args, &currSeg->after)) + util_fatal_error("line %i: invalid name for 'after'", lineNum); + break; + case STMT_address: + if (!parse_number(args, &currSeg->address)) + util_fatal_error("line %i: expected number after 'address'", lineNum); + break; + case STMT_number: + if (!parse_number(args, &currSeg->number)) + util_fatal_error("line %i: expected number after 'number'", lineNum); + break; + case STMT_flags: + if (!parse_flags(args, &currSeg->flags)) + util_fatal_error("line %i: invalid flags", lineNum); + break; + case STMT_align: + if (!parse_number(args, &currSeg->align)) + util_fatal_error("line %i: expected number after 'align'", lineNum); + if (!is_pow_of_2(currSeg->align)) + util_fatal_error("line %i: alignment is not a power of two", lineNum); + break; + case STMT_romalign: + if (!parse_number(args, &currSeg->romalign)) + util_fatal_error("line %i: expected number after 'romalign'", lineNum); + if (!is_pow_of_2(currSeg->romalign)) + util_fatal_error("line %i: alignment is not a power of two", lineNum); + break; + case STMT_include: + case STMT_include_data_with_rodata: + currSeg->includesCount++; + currSeg->includes = realloc(currSeg->includes, currSeg->includesCount * sizeof(*currSeg->includes)); + + if (!parse_quoted_string(args, &currSeg->includes[currSeg->includesCount - 1].fpath)) + util_fatal_error("line %i: invalid filename", lineNum); + + currSeg->includes[currSeg->includesCount - 1].linkerPadding = 0; + currSeg->includes[currSeg->includesCount - 1].dataWithRodata = (stmt == STMT_include_data_with_rodata); + break; + case STMT_increment: + if (!parse_number(args, &currSeg->increment)) + util_fatal_error("line %i: expected number after 'increment'", lineNum); + break; + case STMT_pad_text: + currSeg->includes[currSeg->includesCount - 1].linkerPadding += 0x10; + break; + default: + fprintf(stderr, "warning: '%s' is not implemented\n", stmtNames[stmt]); + break; + } + return false; +} + +/** + * `segments` should be freed with `free_rom_spec` after use. + * Will write to the contents of `spec` to introduce string terminating '\0's. + * `segments` also contains pointers to inside `spec`, so `spec` should not be freed before `segments` + */ void parse_rom_spec(char *spec, struct Segment **segments, int *segment_count) { int lineNum = 1; @@ -161,90 +256,13 @@ void parse_rom_spec(char *spec, struct Segment **segments, int *segment_count) if (line[0] != 0 && stmtName[0] != 0) { char *args = token_split(stmtName); - unsigned int stmt; - - for (stmt = 0; stmt < ARRAY_COUNT(stmtNames); stmt++) - if (strcmp(stmtName, stmtNames[stmt]) == 0) - goto got_stmt; - util_fatal_error("line %i: unknown statement '%s'", lineNum, stmtName); - got_stmt: + STMTId stmt = get_stmt_id_by_stmt_name(stmtName, lineNum); if (currSeg != NULL) { - // ensure no duplicates (except for 'include' or 'pad_text') - if (stmt != STMT_include && stmt != STMT_include_data_with_rodata && stmt != STMT_pad_text && - (currSeg->fields & (1 << stmt))) - util_fatal_error("line %i: duplicate '%s' statement", lineNum, stmtName); - - currSeg->fields |= 1 << stmt; - - // statements valid within a segment definition - switch (stmt) - { - case STMT_beginseg: - util_fatal_error("line %i: '%s' inside of a segment definition", lineNum, stmtName); - break; - case STMT_endseg: - // verify segment data - if (currSeg->name == NULL) - util_fatal_error("line %i: no name specified for segment", lineNum); - if (currSeg->includesCount == 0) - util_fatal_error("line %i: no includes specified for segment", lineNum); + bool segmentEnded = parse_segment_statement(currSeg, stmt, args, lineNum); + if (segmentEnded) { currSeg = NULL; - break; - case STMT_name: - if (!parse_quoted_string(args, &currSeg->name)) - util_fatal_error("line %i: invalid name", lineNum); - break; - case STMT_after: - if (!parse_quoted_string(args, &currSeg->after)) - util_fatal_error("line %i: invalid name for 'after'", lineNum); - break; - case STMT_address: - if (!parse_number(args, &currSeg->address)) - util_fatal_error("line %i: expected number after 'address'", lineNum); - break; - case STMT_number: - if (!parse_number(args, &currSeg->number)) - util_fatal_error("line %i: expected number after 'number'", lineNum); - break; - case STMT_flags: - if (!parse_flags(args, &currSeg->flags)) - util_fatal_error("line %i: invalid flags", lineNum); - break; - case STMT_align: - if (!parse_number(args, &currSeg->align)) - util_fatal_error("line %i: expected number after 'align'", lineNum); - if (!is_pow_of_2(currSeg->align)) - util_fatal_error("line %i: alignment is not a power of two", lineNum); - break; - case STMT_romalign: - if (!parse_number(args, &currSeg->romalign)) - util_fatal_error("line %i: expected number after 'romalign'", lineNum); - if (!is_pow_of_2(currSeg->romalign)) - util_fatal_error("line %i: alignment is not a power of two", lineNum); - break; - case STMT_include: - case STMT_include_data_with_rodata: - currSeg->includesCount++; - currSeg->includes = realloc(currSeg->includes, currSeg->includesCount * sizeof(*currSeg->includes)); - - if (!parse_quoted_string(args, &currSeg->includes[currSeg->includesCount - 1].fpath)) - util_fatal_error("line %i: invalid filename", lineNum); - - currSeg->includes[currSeg->includesCount - 1].linkerPadding = 0; - currSeg->includes[currSeg->includesCount - 1].dataWithRodata = (stmt == STMT_include_data_with_rodata); - break; - case STMT_increment: - if (!parse_number(args, &currSeg->increment)) - util_fatal_error("line %i: expected number after 'increment'", lineNum); - break; - case STMT_pad_text: - currSeg->includes[currSeg->includesCount - 1].linkerPadding += 0x10; - break; - default: - fprintf(stderr, "warning: '%s' is not implemented\n", stmtName); - break; } } else @@ -271,6 +289,70 @@ void parse_rom_spec(char *spec, struct Segment **segments, int *segment_count) } } +/** + * @brief Parses the spec, looking only for the segment with the name `segmentName`. + * Returns true if the segment was found, false otherwise + * + * @param[out] dstSegment The Segment to be filled. Will only contain the data of the searched segment, or garbage if the segment was not found. dstSegment must be previously allocated, a stack variable is recommended + * @param[in,out] spec A null-terminated string containing the whole spec file. This string will be modified by this function + * @param[in] segmentName The name of the segment being searched + */ +bool get_single_segment_by_name(struct Segment* dstSegment, char *spec, const char *segmentName) { + bool insideSegment = false; + int lineNum = 1; + char *line = spec; + + memset(dstSegment, 0, sizeof(struct Segment)); + + // iterate over lines + while (line[0] != '\0') { + char *nextLine = line_split(line); + char* stmtName = skip_whitespace(line); + + if (stmtName[0] != '\0') { + char *args = token_split(stmtName); + STMTId stmt = get_stmt_id_by_stmt_name(stmtName, lineNum); + + if (insideSegment) { + bool segmentEnded = parse_segment_statement(dstSegment, stmt, args, lineNum); + + if (stmt == STMT_name) { + if (strcmp(segmentName, dstSegment->name) != 0) { + // Not the segment we are looking for + insideSegment = false; + } + } else if (segmentEnded) { + return true; + } + } else { + if (stmt == STMT_beginseg) { + insideSegment = true; + if (dstSegment->includes != NULL) { + free(dstSegment->includes); + } + memset(dstSegment, 0, sizeof(struct Segment)); + } + } + } + + line = nextLine; + lineNum++; + } + + return false; +} + +/** + * @brief Frees the elements of the passed Segment. Will not free the pointer itself + * + * @param segment + */ +void free_single_segment_elements(struct Segment *segment) { + if (segment->includes != NULL) { + free(segment->includes); + } +} + void free_rom_spec(struct Segment *segments, int segment_count) { int i; diff --git a/tools/spec.h b/tools/spec.h index 9f2164fd7b..f87f83ec80 100644 --- a/tools/spec.h +++ b/tools/spec.h @@ -1,8 +1,10 @@ -#ifndef _SPEC_H_ -#define _SPEC_H_ +#ifndef SPEC_H +#define SPEC_H -enum -{ +#include +#include + +typedef enum { STMT_address, STMT_after, STMT_align, @@ -18,27 +20,24 @@ enum STMT_stack, STMT_increment, STMT_pad_text, -}; +} STMTId; -enum -{ +enum { FLAG_BOOT = (1 << 0), FLAG_OBJECT = (1 << 1), FLAG_RAW = (1 << 2), }; -struct Include -{ - char *fpath; +struct Include { + char* fpath; int linkerPadding; uint8_t dataWithRodata; }; -struct Segment -{ +typedef struct Segment { uint32_t fields; - char *name; - char *after; + char* name; + char* after; uint32_t flags; uint32_t address; uint32_t stack; @@ -47,12 +46,16 @@ struct Segment uint32_t increment; uint32_t entry; uint32_t number; - struct Include *includes; + struct Include* includes; int includesCount; -}; +} Segment; -void parse_rom_spec(char *spec, struct Segment **segments, int *segment_count); +void parse_rom_spec(char* spec, struct Segment** segments, int* segment_count); -void free_rom_spec(struct Segment *segments, int segment_count); +bool get_single_segment_by_name(struct Segment* dstSegment, char *spec, const char *segmentName); + +void free_single_segment_elements(struct Segment *segment); + +void free_rom_spec(struct Segment* segments, int segment_count); #endif diff --git a/tools/util.c b/tools/util.c index 421215fcea..824e089e07 100644 --- a/tools/util.c +++ b/tools/util.c @@ -12,18 +12,18 @@ void util_fatal_error(const char *msgfmt, ...) { va_list args; - fputs("error: ", stderr); + fputs(ERRMSG_START, stderr); va_start(args, msgfmt); vfprintf(stderr, msgfmt, args); va_end(args); - fputc('\n', stderr); + fputs(ERRMSG_END "\n", stderr); exit(1); } -// reads a whole file into memory, and returns a pointer to the data +// reads a whole file into memory, and returns a malloc'd pointer to the data. void *util_read_whole_file(const char *filename, size_t *pSize) { FILE *file = fopen(filename, "rb"); diff --git a/tools/util.h b/tools/util.h index e34800a193..ed692bf53d 100644 --- a/tools/util.h +++ b/tools/util.h @@ -1,5 +1,12 @@ -#ifndef _UTIL_H_ -#define _UTIL_H_ +#ifndef UTIL_H +#define UTIL_H + +#include +#include +#include + +#define ERRMSG_START "\x1b[91merror\x1b[97m: " +#define ERRMSG_END "\x1b[0m" #ifdef __GNUC__ __attribute__((format(printf, 1, 2), noreturn))