diff --git a/Makefile b/Makefile deleted file mode 100644 index f712579516..0000000000 --- a/Makefile +++ /dev/null @@ -1,313 +0,0 @@ -### Build Options ### - -# Override these options in settings.mk or with `make SETTING=value'. - -BASEROM = baserom.z64 -TARGET = papermario -COMPARE = 1 -NON_MATCHING = 0 -WATCH_INCLUDES = 1 -WSL_ELEVATE_GUI = 1 - -# Fail early if baserom does not exist -ifeq ($(wildcard $(BASEROM)),) -$(error Baserom `$(BASEROM)' not found.) -endif - -# NON_MATCHING=1 implies COMPARE=0 -ifeq ($(NON_MATCHING),1) -override COMPARE=0 -endif - -# PERMUTER=1 implies WATCH_INCLUDES=0 -ifeq ($(PERMUTER),1) -override WATCH_INCLUDES=0 -endif - - -### Output ### - -BUILD_DIR := build -ROM := $(TARGET).z64 -ELF := $(BUILD_DIR)/$(TARGET).elf -LD_SCRIPT := $(TARGET).ld -LD_MAP := $(BUILD_DIR)/$(TARGET).map -ASSETS_BIN := $(BUILD_DIR)/bin/assets/assets.bin -MSG_BIN := $(BUILD_DIR)/msg.bin -NPC_BIN := $(BUILD_DIR)/sprite/npc.bin - - -### Tools ### - -PYTHON := python3 -N64CKSUM := tools/n64crc -SPLAT_YAML := tools/splat.yaml -SPLAT = $(PYTHON) tools/n64splat/split.py $(BASEROM) $(SPLAT_YAML) . -YAY0COMPRESS = tools/Yay0compress -EMULATOR = mupen64plus - - -CROSS := mips-linux-gnu- -AS := $(CROSS)as -OLD_AS := tools/mips-nintendo-nu64-as -CC := tools/cc1 -CPP := cpp -LD := $(CROSS)ld -OBJCOPY := $(CROSS)objcopy - -WSL := 0 -JAVA := java - -UNAME_S := $(shell uname -s) -ifeq ($(UNAME_S),Linux) - OS=linux - ICONV := iconv --from UTF-8 --to SHIFT-JIS - - ifeq ($(findstring microsoft,$(shell cat /proc/sys/kernel/osrelease)),microsoft) - WSL := 1 - ifeq ($(WSL_ELEVATE_GUI),1) - JAVA := powershell.exe -command java - endif -endif -endif -ifeq ($(UNAME_S),Darwin) - OS=mac - ICONV := tools/iconv.py UTF-8 SHIFT-JIS -endif - -OLD_AS=tools/$(OS)/mips-nintendo-nu64-as -CC=tools/$(OS)/cc1 - -### Compiler Options ### - -CPPFLAGS := -Iinclude -Isrc -D _LANGUAGE_C -D _FINALROM -ffreestanding -DF3DEX_GBI_2 -D_MIPS_SZLONG=32 -Wundef -Wcomment -ASFLAGS := -EB -Iinclude -march=vr4300 -mtune=vr4300 -OLDASFLAGS := -EB -Iinclude -G 0 -CFLAGS := -O2 -quiet -G 0 -mcpu=vr4300 -mfix4300 -mips3 -mgp32 -mfp32 -Wimplicit -Wuninitialized -Wshadow -LDFLAGS := -T undefined_syms.txt -T undefined_syms_auto.txt -T undefined_funcs.txt -T undefined_funcs_auto.txt -T $(BUILD_DIR)/$(LD_SCRIPT) -Map $(LD_MAP) --no-check-sections - -ifeq ($(WATCH_INCLUDES),1) -CPPMFLAGS = -MP -MD -MF $@.mk -MT $(BUILD_DIR)/$*.d -MDEPS = $(BUILD_DIR)/%.d -endif - -ifeq ($(NON_MATCHING),1) -CPPFLAGS += -DNON_MATCHING -endif - --include settings.mk - -### Sources ### - -include sources.mk - -ifeq ($(PERMUTER),1) -override OBJECTS:=$(filter %.c.o, $(OBJECTS)) -endif - -%.d: ; - -ifeq ($(WATCH_INCLUDES),1) --include $(foreach obj, $(OBJECTS), $(obj).mk) -endif - -NPC_DIRS := $(foreach npc, $(NPC_SPRITES), sprite/npc/$(npc)) - -GENERATED_HEADERS := include/ld_addrs.h $(foreach dir, $(NPC_DIRS), include/$(dir).h) - - -### Targets ### - -clean: - rm -rf $(BUILD_DIR) $(LD_SCRIPT) - -clean-all: - rm -rf $(BUILD_DIR) bin msg img sprite .splat_cache $(LD_SCRIPT) - -clean-code: - rm -rf $(BUILD_DIR)/src - -tools: - -setup: clean-all tools - @make split - -split: - make $(LD_SCRIPT) -W $(SPLAT_YAML) - -split-%: - $(SPLAT) --modes ld $* --verbose - -split-all: - $(SPLAT) --modes all - -test: $(ROM) - $(EMULATOR) $< - -%.bin: $(LD_SCRIPT) - -# Compressed files -%.Yay0: % - @mkdir -p $(shell dirname $@) - $(YAY0COMPRESS) $< $@ -# $(BUILD_DIR)/%.bin.Yay0: %.bin -# @mkdir -p $(shell dirname $@) -# $(YAY0COMPRESS) $< $@ - -# Data objects -# $(BUILD_DIR)/%.bin.o: %.bin -# @mkdir -p $(shell dirname $@) -# $(LD) -r -b binary -o $@ $< - -# Compressed data objects -# $(BUILD_DIR)/%.Yay0.o: $(BUILD_DIR)/%.bin.Yay0 -# @mkdir -p $(shell dirname $@) -# $(LD) -r -b binary -o $@ $< - -# Compile C files -# $(BUILD_DIR)/%.c.o: %.c $(MDEPS) | $(GENERATED_HEADERS) -# @mkdir -p $(shell dirname $@) -# $(CPP) $(CPPFLAGS) -o - $(CPPMFLAGS) $< | $(ICONV) | $(CC) $(CFLAGS) -o - | $(OLD_AS) $(OLDASFLAGS) -o $@ - - -# # Compile C files (with DSL macros) -# $(foreach cfile, $(DSL_C_FILES), $(BUILD_DIR)/$(cfile).o): $(BUILD_DIR)/%.c.o: %.c $(MDEPS) tools/compile_dsl_macros.py | $(GENERATED_HEADERS) -# @mkdir -p $(shell dirname $@) -# $(CPP) $(CPPFLAGS) -o - $< $(CPPMFLAGS) | $(PYTHON) tools/compile_dsl_macros.py | $(ICONV) | $(CC) $(CFLAGS) -o - | $(OLD_AS) $(OLDASFLAGS) -o $@ - - -# Assemble handwritten ASM -# $(BUILD_DIR)/%.s.o: %.s -# @mkdir -p $(shell dirname $@) -# $(AS) $(ASFLAGS) -o $@ $< - -# # Data -# $(BUILD_DIR)/data/%.data.o: asm/data/%.data.s -# @mkdir -p $(shell dirname $@) -# $(AS) $(ASFLAGS) -o $@ $< - -# # Rodata -# $(BUILD_DIR)/rodata/%.rodata.o: asm/data/%.rodata.s -# @mkdir -p $(shell dirname $@) -# $(AS) $(ASFLAGS) -o $@ $< - -# Images -# $(BUILD_DIR)/%.png.o: $(BUILD_DIR)/%.png -# $(LD) -r -b binary -o $@ $< -# $(BUILD_DIR)/%.rgba16.png: %.png -# @mkdir -p $(shell dirname $@) -# $(PYTHON) tools/convert_image.py rgba16 $< $@ $(IMG_FLAGS) -# $(BUILD_DIR)/%.rgba32.png: %.png -# @mkdir -p $(shell dirname $@) -# $(PYTHON) tools/convert_image.py rgba32 $< $@ $(IMG_FLAGS) -# $(BUILD_DIR)/%.ci8.png: %.png -# @mkdir -p $(shell dirname $@) -# $(PYTHON) tools/convert_image.py ci8 $< $@ $(IMG_FLAGS) -# $(BUILD_DIR)/%.ci4.png: %.png -# @mkdir -p $(shell dirname $@) -# $(PYTHON) tools/convert_image.py ci4 $< $@ $(IMG_FLAGS) -# $(BUILD_DIR)/%.palette.png: %.png -# @mkdir -p $(shell dirname $@) -# $(PYTHON) tools/convert_image.py palette $< $@ $(IMG_FLAGS) -# $(BUILD_DIR)/%.ia4.png: %.png -# @mkdir -p $(shell dirname $@) -# $(PYTHON) tools/convert_image.py ia4 $< $@ $(IMG_FLAGS) -# $(BUILD_DIR)/%.ia8.png: %.png -# @mkdir -p $(shell dirname $@) -# $(PYTHON) tools/convert_image.py ia8 $< $@ $(IMG_FLAGS) -# $(BUILD_DIR)/%.ia16.png: %.png -# @mkdir -p $(shell dirname $@) -# $(PYTHON) tools/convert_image.py ia16 $< $@ $(IMG_FLAGS) -# $(BUILD_DIR)/%.i4.png: %.png -# @mkdir -p $(shell dirname $@) -# $(PYTHON) tools/convert_image.py i4 $< $@ $(IMG_FLAGS) -# $(BUILD_DIR)/%.i8.png: %.png -# @mkdir -p $(shell dirname $@) -# $(PYTHON) tools/convert_image.py i8 $< $@ $(IMG_FLAGS) - -# Assets -# ASSET_FILES := $(foreach asset, $(ASSETS), $(BUILD_DIR)/bin/assets/$(asset)) -# YAY0_ASSET_FILES := $(foreach asset, $(filter-out %_tex, $(ASSET_FILES)), $(asset).Yay0) -# $(BUILD_DIR)/bin/assets/%: bin/assets/%.bin -# @mkdir -p $(shell dirname $@) -# @cp $< $@ -# $(ASSETS_BIN): $(ASSET_FILES) $(YAY0_ASSET_FILES) sources.mk -# @mkdir -p $(shell dirname $@) -# @echo "building $@" -# @$(PYTHON) tools/build_assets_bin.py $@ $(ASSET_FILES) -# $(ASSETS_BIN:.bin=.o): $(ASSETS_BIN) -# $(LD) -r -b binary -o $@ $< - -# Messages -# $(MSG_BIN): $(MESSAGES) -# @mkdir -p $(shell dirname $@) -# @echo "building $@" -# @$(PYTHON) tools/compile_messages.py $@ /dev/null $(MESSAGES) -# $(MSG_BIN:.bin=.o): $(MSG_BIN) -# $(LD) -r -b binary -o $@ $< - -# Sprites -# $(foreach npc, $(NPC_SPRITES), $(eval $(BUILD_DIR)/sprite/npc/$(npc):: $(shell find sprite/npc/$(npc) -type f 2> /dev/null))) # dependencies -# NPC_YAY0 := $(foreach npc, $(NPC_SPRITES), $(BUILD_DIR)/sprite/npc/$(npc).Yay0) -# $(BUILD_DIR)/sprite/npc/%:: sprite/npc/% tools/compile_npc_sprite.py -# @mkdir -p $(shell dirname $@) -# $(PYTHON) tools/compile_npc_sprite.py $@ $< -# $(NPC_BIN): $(NPC_YAY0) tools/compile_npc_sprites.py -# @mkdir -p $(shell dirname $@) -# @echo "building $@" -# @$(PYTHON) tools/compile_npc_sprites.py $@ $(NPC_YAY0) -# $(NPC_BIN:.bin=.o): $(NPC_BIN) -# $(LD) -r -b binary -o $@ $< -# include/sprite/npc/%.h: sprite/npc/%/SpriteSheet.xml tools/gen_sprite_animations_h.py -# @mkdir -p $(shell dirname $@) -# @echo "building $@" -# @$(PYTHON) tools/gen_sprite_animations_h.py $@ sprite/npc/$* $(NPC_DIRS) - - -### Linker ### - -# $(LD_SCRIPT): $(SPLAT_YAML) -# $(SPLAT) --modes ld bin Yay0 PaperMarioMapFS PaperMarioMessages img PaperMarioNpcSprites --new - -# $(BUILD_DIR)/$(LD_SCRIPT): $(LD_SCRIPT) -# @mkdir -p $(shell dirname $@) -# $(CPP) -P -DBUILD_DIR=$(BUILD_DIR) -o $@ $< - -# $(ROM): $(BUILD_DIR)/$(TARGET).bin -# @cp $< $@ -# ifeq ($(COMPARE),1) -# @sha1sum -c checksum.sha1 || (echo 'The build succeeded, but did not match the base ROM. This is expected if you are making changes to the game. To skip this check, use "make COMPARE=0".' && false) -# endif - -# $(BUILD_DIR)/$(TARGET).elf: $(BUILD_DIR)/$(LD_SCRIPT) $(OBJECTS) -# $(LD) $(LDFLAGS) -o $@ - -# $(BUILD_DIR)/$(TARGET).bin: $(BUILD_DIR)/$(TARGET).elf -# $(OBJCOPY) $< $@ -O binary - -# include/ld_addrs.h: $(BUILD_DIR)/$(LD_SCRIPT) -# grep -E "[^\. ]+ =" $< -o | sed 's/^/extern void* /; s/ =/;/' > $@ - - -### Star Rod (optional) ### - -STAR_ROD := cd tools/star-rod && $(JAVA) -jar StarRod.jar - -sprite/SpriteTable.xml: tools/star-rod sources.mk - $(PYTHON) tools/star-rod/spritetable.xml.py $(NPC_SPRITES) > $@ - -editor: tools/star-rod sprite/SpriteTable.xml - $(STAR_ROD) - - -### Make Settings ### - -.PHONY: clean tools test setup split editor $(ROM) -.DELETE_ON_ERROR: -.SECONDARY: -.PRECIOUS: $(ROM) %.Yay0 -.DEFAULT_GOAL := $(ROM) - -# Remove built-in implicit rules to improve performance -MAKEFLAGS += --no-builtin-rules - -# Fail targets if any command in the pipe exits with error -SHELL = /bin/bash -e -o pipefail diff --git a/diff.py b/diff.py index 8f5daeada2..25ab215507 100755 --- a/diff.py +++ b/diff.py @@ -283,7 +283,7 @@ arch: str = config.get("arch", "mips") baseimg: Optional[str] = config.get("baseimg") myimg: Optional[str] = config.get("myimg") mapfile: Optional[str] = config.get("mapfile") -makeflags: List[str] = config.get("makeflags", []) +build_command: List[str] = config.get("make_command", ["make", *config.get("makeflags", [])]) source_directories: Optional[List[str]] = config.get("source_directories") objdump_executable: Optional[str] = config.get("objdump_executable") map_format: str = config.get("map_format", "gnu") @@ -372,12 +372,12 @@ def eval_line_num(expr: str) -> int: def run_make(target: str) -> None: - subprocess.check_call(["make"] + makeflags + [target]) + subprocess.check_call(build_command + [target]) def run_make_capture_output(target: str) -> "subprocess.CompletedProcess[bytes]": return subprocess.run( - ["make"] + makeflags + [target], + build_command + [target], stderr=subprocess.PIPE, stdout=subprocess.PIPE, ) @@ -676,28 +676,28 @@ elif arch == "ppc": forbidden = set(string.ascii_letters + "_") branch_likely_instructions = set() branch_instructions = { - "b", - "beq", - "beq+", - "beq-", - "bne", - "bne+", - "bne-", - "blt", - "blt+", - "blt-", + "b", + "beq", + "beq+", + "beq-", + "bne", + "bne+", + "bne-", + "blt", + "blt+", + "blt-", "ble", "ble+", - "ble-", - "bdnz", - "bdnz+", + "ble-", + "bdnz", + "bdnz+", "bdnz-", - "bge", - "bge+", - "bge-", - "bgt", - "bgt+", - "bgt-", + "bge", + "bge+", + "bge-", + "bgt", + "bgt+", + "bgt-", } instructions_with_address_immediates = branch_instructions.union({"bl"}) else: diff --git a/diff_settings.py b/diff_settings.py index 52c1cfe713..965287954e 100644 --- a/diff_settings.py +++ b/diff_settings.py @@ -5,4 +5,4 @@ def apply(config, args): config['myimg'] = 'papermario.z64' config['mapfile'] = 'build/papermario.map' config['source_directories'] = ['.'] - config['makeflags'] = ['COMPARE=0', 'WATCH_INCLUDES=0'] + config['make_command'] = ['ninja'] diff --git a/sources.mk b/sources.mk deleted file mode 100644 index eb50f99b69..0000000000 --- a/sources.mk +++ /dev/null @@ -1,64 +0,0 @@ -OBJECTS := $(foreach OBJECT, $(shell $(PYTHON) tools/n64splat/list_objects.py $(SPLAT_YAML)), $(BUILD_DIR)/$(OBJECT)) - -DSL_C_FILES := $(shell grep -lrF "SCRIPT" src) - -MAPS := \ - dro_01 dro_02 \ - hos_00 hos_01 hos_02 hos_03 hos_04 hos_05 hos_06 hos_10 hos_20 \ - isk_01 isk_02 isk_03 isk_04 isk_05 isk_06 isk_07 isk_08 isk_09 isk_10 isk_11 isk_12 isk_13 isk_14 isk_16 isk_18 isk_19 \ - iwa_00 iwa_01 iwa_02 iwa_03 iwa_04 iwa_10 iwa_11 \ - osr_00 osr_01 osr_02 osr_03 kkj_00 kkj_01 kkj_02 kkj_03 kkj_10 kkj_11 kkj_12 kkj_13 kkj_14 kkj_15 kkj_16 kkj_17 kkj_18 kkj_19 kkj_20 kkj_21 kkj_22 kkj_23 kkj_24 kkj_25 kkj_26 kkj_27 kkj_28 kkj_29 \ - kmr_00 kmr_02 kmr_03 kmr_04 kmr_05 kmr_06 kmr_07 kmr_09 kmr_10 kmr_11 kmr_12 kmr_20 kmr_30 \ - kpa_01 kpa_03 kpa_04 kpa_08 kpa_09 kpa_10 kpa_11 kpa_12 kpa_13 kpa_14 kpa_15 kpa_16 kpa_17 kpa_32 kpa_33 kpa_40 kpa_41 kpa_50 kpa_52 kpa_60 kpa_61 kpa_62 kpa_63 kpa_70 kpa_80 kpa_90 kpa_91 kpa_94 kpa_95 kpa_96 kpa_102 kpa_111 kpa_112 kpa_113 kpa_115 kpa_116 kpa_117 kpa_118 kpa_119 kpa_121 kpa_130 kpa_133 kpa_134 \ - machi mac_00 mac_01 mac_02 mac_03 mac_04 mac_05 mac_06 \ - tik_01 tik_02 tik_03 tik_04 tik_05 tik_06 tik_07 tik_08 tik_09 tik_10 tik_12 tik_14 tik_15 tik_17 tik_18 tik_19 tik_20 tik_21 tik_22 tik_23 tik_25 \ - kgr_01 kgr_02 \ - nok_01 nok_02 nok_03 nok_04 nok_11 nok_12 nok_13 nok_14 nok_15 \ - sbk_00 sbk_01 sbk_02 sbk_03 sbk_04 sbk_05 sbk_06 sbk_10 sbk_11 sbk_12 sbk_13 sbk_14 sbk_15 sbk_16 sbk_20 sbk_21 sbk_22 sbk_23 sbk_24 sbk_25 sbk_26 sbk_30 sbk_31 sbk_32 sbk_33 sbk_34 sbk_35 sbk_36 sbk_40 sbk_41 sbk_42 sbk_43 sbk_44 sbk_45 sbk_46 sbk_50 sbk_51 sbk_52 sbk_53 sbk_54 sbk_55 sbk_56 sbk_60 sbk_61 sbk_62 sbk_63 sbk_64 sbk_65 sbk_66 sbk_99 \ - trd_00 trd_01 trd_02 trd_03 trd_04 trd_05 trd_06 trd_07 trd_08 trd_09 trd_10 \ - tst_01 tst_02 tst_03 tst_04 tst_10 tst_11 tst_12 tst_13 tst_20 \ - jan_00 jan_01 jan_02 jan_03 jan_04 jan_05 jan_06 jan_07 jan_08 jan_09 jan_10 jan_11 jan_12 jan_13 jan_14 jan_15 jan_16 jan_17 jan_18 jan_19 jan_22 jan_23 \ - mim_01 mim_02 mim_03 mim_04 mim_05 mim_06 mim_07 mim_08 mim_09 mim_10 mim_11 mim_12 \ - obk_01 obk_02 obk_03 obk_04 obk_05 obk_06 obk_07 obk_08 obk_09 \ - arn_02 arn_03 arn_04 arn_05 arn_07 arn_08 arn_09 arn_10 arn_11 arn_12 arn_13 arn_20 \ - dgb_01 dgb_02 dgb_03 dgb_04 dgb_05 dgb_06 dgb_07 dgb_08 dgb_09 dgb_10 dgb_11 dgb_12 dgb_13 dgb_14 dgb_15 dgb_16 dgb_17 dgb_18 \ - kzn_01 kzn_02 kzn_03 kzn_04 kzn_05 kzn_06 kzn_07 kzn_08 kzn_09 kzn_10 kzn_11 kzn_17 kzn_18 kzn_19 kzn_20 kzn_22 kzn_23 \ - flo_00 flo_03 flo_07 flo_08 flo_09 flo_10 flo_11 flo_12 flo_13 flo_14 flo_15 flo_16 flo_17 flo_18 flo_19 flo_21 flo_22 flo_23 flo_24 flo_25 \ - sam_01 sam_02 sam_03 sam_04 sam_05 sam_06 sam_07 sam_08 sam_09 sam_10 sam_11 sam_12 \ - pra_01 pra_02 pra_03 pra_04 pra_05 pra_09 pra_10 pra_11 pra_13 pra_14 pra_15 pra_16 pra_18 pra_19 pra_20 pra_21 pra_22 pra_29 pra_31 pra_32 pra_33 pra_34 pra_35 pra_40 \ - omo_01 omo_02 omo_03 omo_04 omo_05 omo_06 omo_07 omo_08 omo_09 omo_10 omo_11 omo_12 omo_13 omo_14 omo_15 omo_16 omo_17 \ - end_00 end_01 \ - mgm_00 mgm_01 mgm_02 mgm_03 \ - gv_01 \ - kmr_bt03 kmr_bt04 kmr_bt05 kmr_bt06 \ - nok_bt01 nok_bt02 nok_bt03 nok_bt04 \ - trd_bt00 trd_bt01 trd_bt02 trd_bt03 trd_bt04 trd_bt05 \ - iwa_bt01 iwa_bt02 \ - sbk_bt02 \ - isk_bt01 isk_bt02 isk_bt03 isk_bt04 isk_bt05 isk_bt06 isk_bt07 isk_bt08 \ - arn_bt01 arn_bt02 arn_bt03 arn_bt04 arn_bt05 arn_bt06 \ - dgb_bt01 dgb_bt02 dgb_bt03 dgb_bt04 dgb_bt05 \ - mim_bt01 \ - omo_bt01 omo_bt02 omo_bt03 omo_bt04 omo_bt05 omo_bt06 omo_bt07 \ - kgr_bt01 flo_bt01 flo_bt02 flo_bt03 flo_bt04 flo_bt05 flo_bt06 \ - jan_bt00 jan_bt01 jan_bt02 jan_bt03 jan_bt04 \ - kzn_bt01 kzn_bt02 kzn_bt04 kzn_bt05 sam_bt01 sam_bt02 sam_bt03 sam_bt04 \ - tik_bt01 tik_bt02 tik_bt03 tik_bt04 tik_bt05 \ - pra_bt01 pra_bt02 pra_bt03 pra_bt04 mac_bt01 mac_bt02 \ - kpa_bt01 kpa_bt02 kpa_bt03 kpa_bt04 kpa_bt05 kpa_bt07 kpa_bt08 kpa_bt09 kpa_bt11 kpa_bt13 kpa_bt14 \ - hos_bt01 hos_bt02 \ - kkj_bt01 kkj_bt02 - -ASSETS := \ - $(foreach map, $(MAPS), $(map)_shape $(map)_hit) \ - mac_tex tik_tex kgr_tex kmr_tex iwa_tex sbk_tex dro_tex isk_tex trd_tex nok_tex hos_tex kpa_tex osr_tex kkj_tex tst_tex jan_tex mim_tex obk_tex arn_tex dgb_tex kzn_tex flo_tex sam_tex pra_tex omo_tex end_tex mgm_tex gv__tex \ - kmr_bg nok_bg sbk_bg sbk3_bg iwa_bg hos_bg arn_bg obk_bg omo_bg yos_bg jan_bg fla_bg flb_bg sra_bg yki_bg sam_bg kpa_bg title_bg \ - title_data \ - party_kurio party_kameki party_pinki party_pareta party_resa party_akari party_opuku party_pokopi - -MESSAGES := $(shell find msg -type f -name "*.msg" 2> /dev/null) - -NPC_SPRITES := world_goombario world_kooper world_bombette world_parakarry world_bow world_watt world_sushie world_lakilester battle_goombario battle_kooper battle_bombette battle_parakarry battle_bow battle_watt battle_sushie battle_lakilester kooper_without_shell world_eldstar world_mamar world_skolar world_muskular world_misstar world_klevar world_kalmar battle_eldstar battle_mamar battle_skolar battle_muskular battle_misstar battle_klevar battle_kalmar twink jr_troopa spiked_jr_troopa spiked_para_jr_troopa mage_jr_troopa para_jr_troopa goomba spiked_goomba paragoomba koopa_troopa para_troopa fuzzy bob_omb bullet_bill bill_blaster monty_mole cleft pokey battle_bandit buzzy_beetle swooper stone_chomp putrid_piranha piranha_plant sentinel world_clubba battle_clubba shy_guy groove_guy sky_guy pyro_guy spy_guy medi_guy fuzzipede jungle_guy heart_plant hurt_plant m_bush bubble kent_c_koopa dayzee lakitu spiny bzzap ruff_puff spike_top duplighost albino_dino blooper baby_blooper gulpit dry_bones thrown_bone bony_beetle magikoopa flying_magikoopa world_koopatrol koopatrol hammer_bros bush_basic bush_blocky bush_dry bush_leafy bush_matted world_kammy battle_kammy goomba_bros goomba_king spiky_goomnut dark_toad koopa_bros buzzar tutankoopa chain_chomp world_tubba battle_tubba tubbas_heart big_lantern_ghost shy_squad_guy marshal_guy stilt_guy stilt_guy_unfold shy_stack_guy shy_stack_unfold shy_stack_damage shy_stack_rock general_guy general_guy_bomb tank_guy lava_piranha_head petit_piranha lava_bud huff_n_puff tuff_puff monstar crystal_king world_bowser battle_bowser luigi toad three_sisters vanna_t toad_kid toad_guard harry_t toad_minister postmaster conductor_toad train_station_toad fishmael artist_toad koopa koopa_without_shell world_bob_omb whacka dryite mouser boo yoshi yoshi_kid raven bubulb penguin shiver_toad world_bandit goompa goombaria gooma goompapa goomama the_master chan lee merlon chet_rippo rowf minh_t russ_t tayce_t fice_t bartender chanterelle rip_cheato chuck_quizmo merluvlee merlar merlow star_kid kolorado_wife koopa_koot kolorado battle_kolorado archeologist nomadimouse world_merlee battle_merlee disguised_moustafa moustafa oaklie bootler yakkey gourmet_guy village_leader leaders_friend rafael_raven tolielup gate_flower petunia posie lily rosie sun lakilulu ninji mayor_penguin mayor_penguin_wife penguin_patrol herringway merle star_rod fire coin parade_peach parade_koopas parade_burnt_bowser parade_luigi parade_partners parade_yoshis parade_kolorados parade_chicks parade_ice_show parade_toads parade_batons parade_drums parade_flags parade_horns parade_tubba_balloon parade_wizards parade_mario parade_shy_guys parade_twink leaf - -# Image settings -$(BUILD_DIR)/img/battle/text_action_command_ratings.ia4.png: IMG_FLAGS = --flip-y