########################################################################################################################## # File automatically-generated by tool: [projectgenerator] version: [3.10.0-B14] date: [Sat Nov 21 15:39:30 CET 2020] ########################################################################################################################## # ------------------------------------------------ # Generic Makefile (based on gcc) # # ChangeLog : # 2017-02-10 - Several enhancements + project update mode # 2015-07-22 - first version # ------------------------------------------------ ###################################### # target ###################################### TARGET = gw_zelda3 ###################################### # building variables ###################################### # debug build? DEBUG = 0 # optimization OPT = -O3 INTFLASH_BANK ?= 2 EXTFLASH_OFFSET ?= 1048576 EXTFLASH_SIZE_MB ?= 15 EXTFLASH_SIZE ?= $(shell echo "$$(( $(EXTFLASH_SIZE_MB) * 1024 * 1024 ))") EXTFLASH_ADDRESS ?= $(shell echo "$$(( $(EXTFLASH_OFFSET) + 0x90000000 ))") LARGE_FLASH ?= 0 export LARGE_FLASH # Used in stm32h7x_spiflash.cfg ifeq ($(LARGE_FLASH), 0) PROGRAM_VERIFY="verify" else # Currently verify is broken for large chips PROGRAM_VERIFY="" endif export USE_4K_ERASE_CMD=0 # Used in stm32h7x_spiflash.cfg # Screenshot support allocates 150kB of external flash ENABLE_SCREENSHOT ?= 0 # Limit to 30 fps for improved stability LIMIT_30FPS ?= 1 # Overclock level: 0 (no overclocking), 1 (intermediate overclocking), or 2 (max overclocking) OVERCLOCK ?= 2 RENDER_FPS ?= 0 PATCH_DIALOGUES ?= 0 # Savestate support allocates 178kB of external flash ENABLE_SAVESTATE ?= 0 # Increase UI speed (item menu, etc.) FASTER_UI ?= 1 # Display battery indicator in item menu BATTERY_INDICATOR ?= 1 # Extended screensize (0 for default screen size 256x224, 1 for full-height 256x240, 2 for full screen 320x240) EXTENDED_SCREEN ?= 1 # Item switch on L/R. Also allows reordering of items in inventory by pressing Y+direction. # Hold X, L, or R inside of the item selection screen to assign items to those buttons. # If X is reassigned, Select opens the map. Push Select while paused to save or quit. # When L or R are assigned items, those buttons will no longer cycle items. FEATURE_SWITCH_LR ?= 0 # Allow turning while dashing FEATURE_TURN_WHILE_DASHING ?= 0 # Allow mirror to be used to warp to the Dark World FEATURE_MIRROR_TO_DARK_WORLD ?= 0 # Collect items (like hearts) with sword instead of having to touch them FEATURE_COLLECT_ITEMS_WITH_SWORD ?= 0 # Level 2-4 sword can be used to break pots FEATURE_BREAK_POTS_WITH_SWORD ?= 0 # Disable the low health beep FEATURE_DISABLE_LOW_HEALTH_BEEP ?= 0 # Avoid waiting too much at the start FEATURE_SKIP_INTRO_ON_KEYPRESS ?= 1 # Display max rupees/bombs/arrows with orange/yellow color FEATURE_SHOW_MAX_ITEMS_IN_YELLOW ?= 0 # Allows up to four bombs active at a time instead of two. FEATURE_MORE_ACTIVE_BOMBS ?= 0 # Can carry 9999 rupees instead of 999 FEATURE_CARRY_MORE_RUPEES ?= 0 # Enable various zelda bug fixes FEATURE_MISC_BUG_FIXES ?= 0 # Allow bird travel to be cancelled by hitting the X key FEATURE_CANCEL_BIRD_TRAVEL ?= 0 # Enable some more advanced zelda bugfixes that change game behavior FEATURE_GAME_CHANGING_BUG_FIXES ?= 0 # Enable this to limit the ItemSwitchLR item cycling to the first 4 items. FEATURE_SWITCH_LR_LIMIT ?= 0 FEATURES := 0 FEATURES := $(shell echo "$$(( $(FEATURES) | $(FEATURE_SWITCH_LR) << 1 ))") FEATURES := $(shell echo "$$(( $(FEATURES) | $(FEATURE_TURN_WHILE_DASHING) << 2 ))") FEATURES := $(shell echo "$$(( $(FEATURES) | $(FEATURE_MIRROR_TO_DARK_WORLD) << 3 ))") FEATURES := $(shell echo "$$(( $(FEATURES) | $(FEATURE_COLLECT_ITEMS_WITH_SWORD) << 4 ))") FEATURES := $(shell echo "$$(( $(FEATURES) | $(FEATURE_BREAK_POTS_WITH_SWORD) << 5 ))") FEATURES := $(shell echo "$$(( $(FEATURES) | $(FEATURE_DISABLE_LOW_HEALTH_BEEP) << 6 ))") FEATURES := $(shell echo "$$(( $(FEATURES) | $(FEATURE_SKIP_INTRO_ON_KEYPRESS) << 7 ))") FEATURES := $(shell echo "$$(( $(FEATURES) | $(FEATURE_SHOW_MAX_ITEMS_IN_YELLOW) << 8 ))") FEATURES := $(shell echo "$$(( $(FEATURES) | $(FEATURE_MORE_ACTIVE_BOMBS) << 9 ))") FEATURES := $(shell echo "$$(( $(FEATURES) | $(FEATURE_CARRY_MORE_RUPEES) << 11 ))") FEATURES := $(shell echo "$$(( $(FEATURES) | $(FEATURE_MISC_BUG_FIXES) << 12 ))") FEATURES := $(shell echo "$$(( $(FEATURES) | $(FEATURE_CANCEL_BIRD_TRAVEL) << 13 ))") FEATURES := $(shell echo "$$(( $(FEATURES) | $(FEATURE_GAME_CHANGING_BUG_FIXES) << 14 ))") FEATURES := $(shell echo "$$(( $(FEATURES) | $(FEATURE_SWITCH_LR_LIMIT) << 15 ))") # Disables all game customizations altogether VANILLA_GAMEPLAY ?= 0 ifneq ($(VANILLA_GAMEPLAY), 0) PATCH_DIALOGUES=0 FASTER_UI=0 BATTERY_INDICATOR=0 FEATURES=0 EXTENDED_SCREEN=0 endif # Language DIALOGUES_LANGUAGE ?= us ifeq ($(DIALOGUES_LANGUAGE), us) LOCALIZED_ROM= LOCALIZED_ROM_PATH= else LOCALIZED_ROM=zelda3_$(DIALOGUES_LANGUAGE).sfc LOCALIZED_ROM_PATH=zelda3/tables/$(LOCALIZED_ROM) endif # Configure Game & Watch target device mario|zelda GNW_TARGET ?= mario # Set the preprocessor options ifeq ($(GNW_TARGET),mario) GNW_TARGET_ZELDA = 0 GNW_TARGET_MARIO = 1 else ifeq ($(GNW_TARGET),zelda) GNW_TARGET_ZELDA = 1 GNW_TARGET_MARIO = 0 else $(error Invalid GNW_TARGET. Valid values {mario|zelda}) endif ####################################### # paths ####################################### # Build path BUILD_DIR = build ###################################### # source ###################################### # C sources C_SOURCES = \ Core/Src/lcd.c \ Core/Src/buttons.c \ Core/Src/bq24072.c \ Core/Src/main.c \ Core/Src/gw_flash.c \ Core/Src/crc32.c \ Core/Src/stm32h7xx_it.c \ Core/Src/stm32h7xx_hal_msp.c \ Core/Src/system_stm32h7xx.c \ Core/Src/porting/zelda_assets_in_intflash.c \ Core/Src/porting/zelda_assets_in_ram.c \ Core/Src/porting/zelda_assets_in_extflash.c \ Core/Src/porting/common.c \ zelda3/zelda_rtl.c \ zelda3/misc.c \ zelda3/nmi.c \ zelda3/poly.c \ zelda3/attract.c \ zelda3/snes/ppu.c \ zelda3/snes/dma.c \ zelda3/spc_player.c \ zelda3/util.c \ zelda3/audio.c \ zelda3/overworld.c \ zelda3/ending.c \ zelda3/select_file.c \ zelda3/dungeon.c \ zelda3/messaging.c \ zelda3/hud.c \ zelda3/load_gfx.c \ zelda3/ancilla.c \ zelda3/player.c \ zelda3/sprite.c \ zelda3/player_oam.c \ zelda3/snes/dsp.c \ zelda3/sprite_main.c \ zelda3/tagalong.c \ zelda3/third_party/opus-1.3.1-stripped/opus_decoder_amalgam.c \ zelda3/tile_detect.c \ zelda3/overlord.c \ # ASM sources ASM_SOURCES = \ startup_bootloader_stm32h7b0xx.s # Version and URL for the STM32CubeH7 SDK SDK_VERSION ?= v1.8.0 SDK_URL ?= https://raw.githubusercontent.com/STMicroelectronics/STM32CubeH7 # Local path for the SDK SDK_DIR ?= Drivers # SDK C sources SDK_C_SOURCES = \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc_ex.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dac_ex.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dac.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma_ex.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma2d.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_exti.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash_ex.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_gpio.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_hsem.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c_ex.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_jpeg.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_ltdc_ex.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_ltdc.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_mdma.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_ospi.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr_ex.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rtc_ex.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rtc.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_sai_ex.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_sai.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_spi_ex.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_spi.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim_ex.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_wwdg.c \ Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.c \ # SDK ASM sources SDK_ASM_SOURCES = \ Drivers/CMSIS/Device/ST/STM32H7xx/Source/Templates/gcc/startup_stm32h7b0xx.s # SDK headers SDK_HEADERS = \ Drivers/CMSIS/Device/ST/STM32H7xx/Include/stm32h7b0xx.h \ Drivers/CMSIS/Device/ST/STM32H7xx/Include/stm32h7xx.h \ Drivers/CMSIS/Device/ST/STM32H7xx/Include/system_stm32h7xx.h \ Drivers/CMSIS/Include/cmsis_compiler.h \ Drivers/CMSIS/Include/cmsis_gcc.h \ Drivers/CMSIS/Include/cmsis_version.h \ Drivers/CMSIS/Include/core_cm7.h \ Drivers/CMSIS/Include/mpu_armv7.h \ Drivers/STM32H7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_ll_adc.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_adc.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_adc_ex.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_cortex.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_dac_ex.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_dac.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_def.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_dma_ex.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_dma.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_dma2d.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_exti.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_flash_ex.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_flash.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_gpio_ex.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_gpio.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_hsem.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_i2c_ex.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_i2c.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_jpeg.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_ltdc_ex.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_ltdc.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_mdma.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_ospi.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_pwr_ex.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_pwr.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_rcc_ex.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_rcc.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_rtc_ex.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_rtc.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_sai_ex.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_sai.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_spi_ex.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_spi.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_tim.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_tim_ex.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_wwdg.h \ Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal.h \ ####################################### # binaries ####################################### PREFIX = arm-none-eabi- # The gcc compiler bin path can be either defined in make command via GCC_PATH variable (> make GCC_PATH=xxx) # either it can be added to the PATH environment variable. ifdef GCC_PATH CC = $(GCC_PATH)/$(PREFIX)gcc AS = $(GCC_PATH)/$(PREFIX)gcc -x assembler-with-cpp CP = $(GCC_PATH)/$(PREFIX)objcopy SZ = $(GCC_PATH)/$(PREFIX)size else CC = $(PREFIX)gcc AS = $(PREFIX)gcc -x assembler-with-cpp CP = $(PREFIX)objcopy SZ = $(PREFIX)size endif HEX = $(CP) -O ihex BIN = $(CP) -O binary -S ECHO = echo PYTHON:=/usr/bin/env python3 ####################################### # CFLAGS ####################################### # cpu CPU = -mcpu=cortex-m7 # fpu FPU = -mfpu=fpv5-d16 # float-abi FLOAT-ABI = -mfloat-abi=hard # mcu MCU = $(CPU) -mthumb $(FPU) $(FLOAT-ABI) # macros for gcc # AS defines AS_DEFS = # C defines C_DEFS = \ -DINTFLASH_BANK=$(INTFLASH_BANK) \ -DUSE_HAL_DRIVER \ -DSTM32H7B0xx \ -DBATTERY_INDICATOR=$(BATTERY_INDICATOR) \ -DENABLE_SCREENSHOT=$(ENABLE_SCREENSHOT) \ -DGNW_TARGET_MARIO=$(GNW_TARGET_MARIO) \ -DGNW_TARGET_ZELDA=$(GNW_TARGET_ZELDA) \ -DLIMIT_30FPS=$(LIMIT_30FPS) \ -DOVERCLOCK=$(OVERCLOCK) \ -DRENDER_FPS=$(RENDER_FPS) \ -DFEATURES=$(FEATURES) \ -DENABLE_SAVESTATE=$(ENABLE_SAVESTATE) \ -DFASTER_UI=$(FASTER_UI) \ -DEXTENDED_SCREEN=$(EXTENDED_SCREEN) \ -DDIALOGUES_LANGUAGE=$(DIALOGUES_LANGUAGE) # AS includes AS_INCLUDES = # C includes C_INCLUDES = \ -ICore/Inc \ -ICore/Inc/porting \ -IDrivers/STM32H7xx_HAL_Driver/Inc \ -IDrivers/STM32H7xx_HAL_Driver/Inc/Legacy \ -IDrivers/CMSIS/Device/ST/STM32H7xx/Include \ -IDrivers/CMSIS/Include \ -I. \ # compile gcc flags ASFLAGS = $(MCU) $(AS_DEFS) $(AS_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections CFLAGS = $(MCU) $(C_DEFS) $(C_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections CFLAGS += -DHEADLESS ifeq ($(DEBUG), 1) CFLAGS += -g -gdwarf-2 #-O0 endif # Generate dependency information CFLAGS += -MMD -MP -MF"$(@:%.o=%.d)" ####################################### # LDFLAGS ####################################### LDFLAGS += -Wl,--defsym=__EXTFLASH_OFFSET__=$(EXTFLASH_OFFSET) LDFLAGS += -Wl,--defsym=__EXTFLASH_TOTAL_LENGTH__=$(EXTFLASH_SIZE) LDFLAGS += -Wl,--defsym=ENABLE_SCREENSHOT=$(ENABLE_SCREENSHOT) LDFLAGS += -Wl,--defsym=ENABLE_SAVESTATE=$(ENABLE_SAVESTATE) ifeq ($(INTFLASH_BANK), 1) INTFLASH_ADDRESS = 0x08000000 else ifeq ($(INTFLASH_BANK), 2) INTFLASH_ADDRESS = 0x08100000 endif LDFLAGS += -Wl,--defsym=__INTFLASH__=$(INTFLASH_ADDRESS) # link script LDSCRIPT = STM32H7B0VBTx_FLASH.ld # libraries LIBS = -lc -lm -lnosys LIBDIR = LDFLAGS += $(MCU) -specs=nano.specs -T$(LDSCRIPT) $(LIBDIR) $(LIBS) -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref -Wl,--gc-sections # default action: build all all: $(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET)_extflash.bin $(BUILD_DIR)/$(TARGET)_intflash.bin ####################################### # download SDK files ####################################### $(SDK_DIR)/%: $(V)$(ECHO) [ WGET ] $(notdir $@) $(V)wget -q $(SDK_URL)/$(SDK_VERSION)/$@ -P $(dir $@) .PHONY: download_sdk download_sdk: $(SDK_HEADERS) $(SDK_C_SOURCES) $(SDK_ASM_SOURCES) ####################################### # build the application ####################################### # list of objects OBJECTS = $(addprefix $(BUILD_DIR)/,$(notdir $(C_SOURCES:.c=.o) $(SDK_C_SOURCES:.c=.o))) vpath %.c $(sort $(dir $(C_SOURCES) $(SDK_C_SOURCES))) # list of ASM program objects OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_SOURCES:.s=.o) $(SDK_ASM_SOURCES:.s=.o))) vpath %.s $(sort $(dir $(ASM_SOURCES) $(SDK_ASM_SOURCES))) # function used to generate prerequisite rules for SDK objects define sdk_obj_prereq_gen $(BUILD_DIR)/$(patsubst %.c,%.o,$(patsubst %.s,%.o,$(notdir $1))): $1 endef # note: the blank line above is intentional # generate all object prerequisite rules $(eval $(foreach obj,$(SDK_C_SOURCES) $(SDK_ASM_SOURCES),$(call sdk_obj_prereq_gen,$(obj)))) $(BUILD_DIR)/%.o: %.c Makefile $(SDK_HEADERS) | $(BUILD_DIR) $(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)/$(notdir $(<:.c=.lst)) $< -o $@ $(BUILD_DIR)/%.o: %.s Makefile $(SDK_HEADERS) | $(BUILD_DIR) $(AS) -c $(CFLAGS) $< -o $@ $(BUILD_DIR)/$(TARGET).elf: assets_extraction $(OBJECTS) Makefile $(CC) $(OBJECTS) $(LDFLAGS) -o $@ $(SZ) $@ $(BUILD_DIR)/%.hex: $(BUILD_DIR)/%.elf | $(BUILD_DIR) $(HEX) $< $@ $(BUILD_DIR)/%.bin: $(BUILD_DIR)/%.elf | $(BUILD_DIR) $(BIN) $< $@ assets_extraction: Core/Src/porting/zelda_assets_in_extflash.c Core/Src/porting/zelda_assets_in_intflash.c Core/Src/porting/zelda_assets_in_ram.c Core/Src/porting/zelda_assets_%.c: scripts/bundle_all_assets.py scripts/update_all_assets.py zelda3/tables/zelda3_assets.dat | $(BUILD_DIR) $(PYTHON) ./scripts/bundle_all_assets.py $(PYTHON) ./scripts/update_all_assets.py # FIXME Handle patching dialogue.txt in restool.py? #zelda3/tables/dialogue.txt: zelda3/tables/zelda3.sfc zelda3/tables/dialogue.txt.patched #zelda3/tables/dialogue.txt.patched: scripts/dialogue.txt.diff # cd zelda3 && make tables/dialogue.txt # if [ $(PATCH_DIALOGUES) -gt 0 ]; then \ # echo 'Patching dialogues file'; \ # if [ -e $@ ]; then patch -R zelda3/tables/dialogue.txt $@; fi; \ # patch zelda3/tables/dialogue.txt $<; \ # cp scripts/dialogue.txt.diff $@; \ # fi zelda3/tables/zelda3_assets.dat: zelda3/tables/zelda3.sfc $(LOCALIZED_ROM_PATH) | $(BUILD_DIR) @if [ "$(LOCALIZED_ROM)" ]; then \ $(ECHO) 'Extracting dialogues from localized ROM: $(LOCALIZED_ROM)'; \ cd zelda3/tables; \ $(PYTHON) restool.py --extract-dialogue -r $(LOCALIZED_ROM); \ $(ECHO) "Extracting game resources with localized dialogues"; \ $(PYTHON) restool.py --extract-from-rom --languages=$(DIALOGUES_LANGUAGE) -r zelda3.sfc; \ else \ $(ECHO) "Extracting game resources"; \ cd zelda3/tables; $(PYTHON) restool.py --extract-from-rom -r zelda3.sfc; \ fi $(BUILD_DIR): mkdir $@ OPENOCD ?= openocd ADAPTER ?= jlink OCDIFACE ?= scripts/interface_$(ADAPTER).cfg GNWMANAGER ?= gnwmanager CAT ?= cat TAMP ?= tamp $(BUILD_DIR)/$(TARGET)_extflash.bin: $(BUILD_DIR)/$(TARGET).elf | $(BUILD_DIR) $(V)$(BIN) -j ._itcram_hot -j ._dtcram_hot -j ._ahbram_hot -j ._ram_exec -j ._extflash $< $(BUILD_DIR)/$(TARGET)_extflash.bin $(BUILD_DIR)/$(TARGET)_intflash.bin: $(BUILD_DIR)/$(TARGET).elf | $(BUILD_DIR) $(V)$(BIN) -j .isr_vector_bootloader -j .text.bootloader -j .rodata.bootloader -j .data.bootloader $< $(BUILD_DIR)/$(TARGET)_intflash.bin $(BUILD_DIR)/$(TARGET)_ram_app.bin: $(BUILD_DIR)/$(TARGET).elf | $(BUILD_DIR) $(V)$(BIN) -j .isr_vector_ram -j .text -j .rodata -j .ARM.extab -j .preinit_array -j .init_array -j .fini_array -j .data $< $(BUILD_DIR)/$(TARGET)_ram_app.bin $(BUILD_DIR)/$(TARGET)_ram_app.bin.tamp: $(BUILD_DIR)/$(TARGET)_ram_app.bin | $(BUILD_DIR) $(V)$(TAMP) compress $< -o $(BUILD_DIR)/$(TARGET)_ram_app.bin.tamp $(BUILD_DIR)/$(TARGET)_intflash_with_payload.bin: $(BUILD_DIR)/$(TARGET)_intflash.bin $(BUILD_DIR)/$(TARGET)_ram_app.bin | $(BUILD_DIR) $(V)$(CAT) $(BUILD_DIR)/$(TARGET)_intflash.bin $(BUILD_DIR)/$(TARGET)_ram_app.bin > $(BUILD_DIR)/$(TARGET)_intflash_with_payload.bin flash_intflash: $(BUILD_DIR)/$(TARGET)_intflash_with_payload.bin $(GNWMANAGER) flash $(INTFLASH_ADDRESS) $< -- start $(INTFLASH_ADDRESS) .PHONY: flash_intflash flash_extflash: $(BUILD_DIR)/$(TARGET)_extflash.bin @$(GNWMANAGER) flash ext $< --offset=$(EXTFLASH_OFFSET) -- start $(INTFLASH_ADDRESS) .PHONY: flash_extflash flash_ram_app: $(BUILD_DIR)/$(TARGET)_ram_app.bin.tamp $(GNWMANAGER) push /apps/$(TARGET).bin.tamp $(BUILD_DIR)/$(TARGET)_ram_app.bin.tamp \ .PHONY: flash_intflash # Programs both the external and internal flash. flash: $(BUILD_DIR)/$(TARGET)_intflash_with_payload.bin $(BUILD_DIR)/$(TARGET)_extflash.bin @$(GNWMANAGER) flash $(INTFLASH_ADDRESS) $(BUILD_DIR)/$(TARGET)_intflash_with_payload.bin \ -- flash ext $(BUILD_DIR)/$(TARGET)_extflash.bin --offset=$(EXTFLASH_OFFSET) \ -- start $(INTFLASH_ADDRESS) \ $(RESET_DBGMCU_CMD) .PHONY: flash # Programs both the external flash and application in filesystem. flash_as_app: $(BUILD_DIR)/$(TARGET)_ram_app.bin.tamp $(BUILD_DIR)/$(TARGET)_extflash.bin @$(GNWMANAGER) push /apps/$(TARGET).bin.tamp $(BUILD_DIR)/$(TARGET)_ram_app.bin.tamp \ -- flash ext $(BUILD_DIR)/$(TARGET)_extflash.bin --offset=$(EXTFLASH_OFFSET) \ -- start bank1 \ $(RESET_DBGMCU_CMD) .PHONY: flash_as_app reset: $(OPENOCD) -f $(OCDIFACE) -c "init; reset; exit" .PHONY: reset reset_dbgmcu: # Reset the DBGMCU configuration register (DBGMCU_CR) $(V)$(OPENOCD) -f ${OCDIFACE} -c "init; reset halt; mww 0x5C001004 0x00000000; resume; exit;" .PHONY: reset_dbgmcu # Starts openocd and attaches to the target. To be used with 'flash_intflash_nc' and 'gdb' openocd: $(OPENOCD) -f $(OCDIFACE) -c "init; halt" .PHONY: openocd dump_logs: $(BUILD_DIR)/$(TARGET).elf $(V)./scripts/dump_logs.sh .PHONY: dump_logs size: $(BUILD_DIR)/$(TARGET).elf $(V)./scripts/size.sh $< .PHONY: size GDB ?= $(PREFIX)gdb debug: $(BUILD_DIR)/$(TARGET).elf $(GDB) $< -ex "target extended-remote :3333" .PHONY: debug ####################################### # clean up ####################################### clean: -rm -fR $(BUILD_DIR) -rm -fR Core/Src/porting/zelda_assets_*.c cd zelda3 && make clean ####################################### # dependencies ####################################### -include $(wildcard $(BUILD_DIR)/*.d) # *** EOF ***