Merge branch 'upcoming' of https://github.com/rh-hideout/pokeemerald-expansion into rhh/dexnav
2
.github/pull_request_template.md
vendored
@ -21,5 +21,5 @@
|
||||
<!-- If it doesn't apply, feel free to remove this section. -->
|
||||
|
||||
## **Discord contact info**
|
||||
<!--- formatted as name#numbers, e.g. Lunos#4026 -->
|
||||
<!--- Formatted as username (e.g. Lunos) or username#numbers (e.g. Lunos#4026) -->
|
||||
<!--- Contributors must join https://discord.gg/6CzjAG6GZk -->
|
||||
|
||||
3
.github/workflows/build.yml
vendored
@ -25,7 +25,7 @@ jobs:
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install -y build-essential libpng-dev libelf-dev
|
||||
# build-essential, git, and libpng-dev are already installed
|
||||
# build-essential and git are already installed
|
||||
# gcc-arm-none-eabi is only needed for the modern build
|
||||
# as an alternative to dkP
|
||||
|
||||
@ -38,5 +38,4 @@ jobs:
|
||||
env:
|
||||
TEST: 1
|
||||
run: |
|
||||
make -j${nproc} -O pokeemerald-test.elf
|
||||
make -j${nproc} check
|
||||
|
||||
1
.gitignore
vendored
@ -38,5 +38,6 @@ prefabs.json
|
||||
*.diff
|
||||
*.sym
|
||||
*.js
|
||||
/pokeemerald-*.png
|
||||
src/data/map_group_count.h
|
||||
tools/trainerproc/trainerproc
|
||||
|
||||
@ -24,7 +24,7 @@ Unscientific benchmarks suggest **msys2 is 2x slower** than WSL1, and **Cygwin i
|
||||
|
||||
All of the Windows instructions assume that the default drive is C:\\. If this differs to your actual drive letter, then replace C with the correct drive letter when reading the instructions.
|
||||
|
||||
**A note of caution**: As Windows 7 is officially unsupported by Microsoft and Windows 8 has very little usage, some maintainers are unwilling to maintain the Windows 7/8 instructions. Thus, these instructions may break in the future with fixes taking longer than fixes to the Windows 10 instructions.
|
||||
**A note of caution**: As Windows 7 and Windows 8 are officially unsupported by Microsoft, some maintainers are unwilling to maintain the Windows 7/8 instructions. Thus, these instructions may break in the future with fixes taking longer than fixes to the Windows 10/11 instructions.
|
||||
|
||||
## Windows 10/11 (WSL1)
|
||||
WSL1 is the preferred terminal to build **pokeemerald Expansion**. The following instructions will explain how to install WSL1 (referred to interchangeably as WSL).
|
||||
|
||||
662
Makefile
@ -1,155 +1,172 @@
|
||||
TOOLCHAIN := $(DEVKITARM)
|
||||
COMPARE ?= 0
|
||||
# GBA rom header
|
||||
TITLE := POKEMON EMER
|
||||
GAME_CODE := BPEE
|
||||
MAKER_CODE := 01
|
||||
REVISION := 0
|
||||
KEEP_TEMPS ?= 0
|
||||
|
||||
# `File name`.gba
|
||||
FILE_NAME := pokeemerald
|
||||
BUILD_DIR := build
|
||||
|
||||
# Compares the ROM to a checksum of the original - only makes sense using when non-modern
|
||||
COMPARE ?= 0
|
||||
# Executes the Test Runner System that checks that all mechanics work as expected
|
||||
TEST ?= 0
|
||||
# Enables -fanalyzer C flag to analyze in depth potential UBs
|
||||
ANALYZE ?= 0
|
||||
# Count unused warnings as errors. Used by RH-Hideout's repo
|
||||
UNUSED_ERROR ?= 0
|
||||
# Adds -Og and -g flags, which optimize the build for debugging and include debug info respectively
|
||||
DEBUG ?= 0
|
||||
|
||||
ifeq (compare,$(MAKECMDGOALS))
|
||||
COMPARE := 1
|
||||
endif
|
||||
ifeq (check,$(MAKECMDGOALS))
|
||||
TEST := 1
|
||||
endif
|
||||
ifeq (debug,$(MAKECMDGOALS))
|
||||
DEBUG := 1
|
||||
endif
|
||||
|
||||
# Default make rule
|
||||
all: rom
|
||||
|
||||
# Toolchain selection
|
||||
TOOLCHAIN := $(DEVKITARM)
|
||||
# don't use dkP's base_tools anymore
|
||||
# because the redefinition of $(CC) conflicts
|
||||
# with when we want to use $(CC) to preprocess files
|
||||
# thus, manually create the variables for the bin
|
||||
# files, or use arm-none-eabi binaries on the system
|
||||
# if dkP is not installed on this system
|
||||
|
||||
ifneq (,$(TOOLCHAIN))
|
||||
ifneq ($(wildcard $(TOOLCHAIN)/bin),)
|
||||
export PATH := $(TOOLCHAIN)/bin:$(PATH)
|
||||
endif
|
||||
ifneq ($(wildcard $(TOOLCHAIN)/bin),)
|
||||
export PATH := $(TOOLCHAIN)/bin:$(PATH)
|
||||
endif
|
||||
endif
|
||||
|
||||
PREFIX := arm-none-eabi-
|
||||
OBJCOPY := $(PREFIX)objcopy
|
||||
OBJDUMP := $(PREFIX)objdump
|
||||
AS := $(PREFIX)as
|
||||
|
||||
LD := $(PREFIX)ld
|
||||
|
||||
ARMCC := $(PREFIX)gcc
|
||||
PATH_ARMCC := PATH="$(PATH)" $(ARMCC)
|
||||
|
||||
ifeq ($(OS),Windows_NT)
|
||||
EXE := .exe
|
||||
else
|
||||
EXE :=
|
||||
endif
|
||||
|
||||
TITLE := POKEMON EMER
|
||||
GAME_CODE := BPEE
|
||||
MAKER_CODE := 01
|
||||
REVISION := 0
|
||||
TEST ?= 0
|
||||
ANALYZE ?= 0
|
||||
UNUSED_ERROR ?= 0
|
||||
DEBUG ?= 0
|
||||
|
||||
ifeq (check,$(MAKECMDGOALS))
|
||||
TEST := 1
|
||||
endif
|
||||
|
||||
ifeq (debug,$(MAKECMDGOALS))
|
||||
DEBUG := 1
|
||||
ifeq ($(OS),Windows_NT)
|
||||
EXE := .exe
|
||||
endif
|
||||
|
||||
CPP := $(PREFIX)cpp
|
||||
|
||||
ROM_NAME := pokeemerald.gba
|
||||
ROM_NAME := $(FILE_NAME).gba
|
||||
OBJ_DIR_NAME := $(BUILD_DIR)/modern
|
||||
OBJ_DIR_NAME_TEST := $(BUILD_DIR)/modern-test
|
||||
OBJ_DIR_NAME_DEBUG := $(BUILD_DIR)/modern-debug
|
||||
|
||||
ELF_NAME := $(ROM_NAME:.gba=.elf)
|
||||
MAP_NAME := $(ROM_NAME:.gba=.map)
|
||||
OBJ_DIR_NAME := build/modern
|
||||
TESTELF = $(ROM_NAME:.gba=-test.elf)
|
||||
HEADLESSELF = $(ROM_NAME:.gba=-test-headless.elf)
|
||||
|
||||
SHELL := bash -o pipefail
|
||||
|
||||
ELF = $(ROM:.gba=.elf)
|
||||
MAP = $(ROM:.gba=.map)
|
||||
SYM = $(ROM:.gba=.sym)
|
||||
|
||||
TEST_OBJ_DIR_NAME := build/modern-test
|
||||
DEBUG_OBJ_DIR_NAME := build/modern-debug
|
||||
|
||||
TESTELF = $(ROM:.gba=-test.elf)
|
||||
HEADLESSELF = $(ROM:.gba=-test-headless.elf)
|
||||
# Pick our active variables
|
||||
ROM := $(ROM_NAME)
|
||||
ifeq ($(TEST), 0)
|
||||
OBJ_DIR := $(OBJ_DIR_NAME)
|
||||
else
|
||||
OBJ_DIR := $(OBJ_DIR_NAME_TEST)
|
||||
endif
|
||||
ifeq ($(DEBUG),1)
|
||||
OBJ_DIR := $(OBJ_DIR_NAME_DEBUG)
|
||||
endif
|
||||
ifeq ($(TESTELF),$(MAKECMDGOALS))
|
||||
TEST := 1
|
||||
endif
|
||||
ELF := $(ROM:.gba=.elf)
|
||||
MAP := $(ROM:.gba=.map)
|
||||
SYM := $(ROM:.gba=.sym)
|
||||
|
||||
# Commonly used directories
|
||||
C_SUBDIR = src
|
||||
GFLIB_SUBDIR = gflib
|
||||
ASM_SUBDIR = asm
|
||||
DATA_SRC_SUBDIR = src/data
|
||||
DATA_ASM_SUBDIR = data
|
||||
SONG_SUBDIR = sound/songs
|
||||
MID_SUBDIR = sound/songs/midi
|
||||
SAMPLE_SUBDIR = sound/direct_sound_samples
|
||||
CRY_SUBDIR = sound/direct_sound_samples/cries
|
||||
TEST_SUBDIR = test
|
||||
|
||||
C_BUILDDIR = $(OBJ_DIR)/$(C_SUBDIR)
|
||||
GFLIB_BUILDDIR = $(OBJ_DIR)/$(GFLIB_SUBDIR)
|
||||
ASM_BUILDDIR = $(OBJ_DIR)/$(ASM_SUBDIR)
|
||||
DATA_ASM_BUILDDIR = $(OBJ_DIR)/$(DATA_ASM_SUBDIR)
|
||||
SONG_BUILDDIR = $(OBJ_DIR)/$(SONG_SUBDIR)
|
||||
MID_BUILDDIR = $(OBJ_DIR)/$(MID_SUBDIR)
|
||||
TEST_BUILDDIR = $(OBJ_DIR)/$(TEST_SUBDIR)
|
||||
|
||||
SHELL := bash -o pipefail
|
||||
|
||||
# Set flags for tools
|
||||
ASFLAGS := -mcpu=arm7tdmi --defsym MODERN=1
|
||||
|
||||
CC1 = $(shell $(PATH_ARMCC) --print-prog-name=cc1) -quiet
|
||||
override CFLAGS += -mthumb -mthumb-interwork -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast -std=gnu17 -Werror -Wall -Wno-strict-aliasing -Wno-attribute-alias -Woverride-init
|
||||
INCLUDE_DIRS := include
|
||||
INCLUDE_CPP_ARGS := $(INCLUDE_DIRS:%=-iquote %)
|
||||
INCLUDE_SCANINC_ARGS := $(INCLUDE_DIRS:%=-I %)
|
||||
|
||||
ifeq ($(DEBUG),1)
|
||||
O_LEVEL ?= g
|
||||
else
|
||||
O_LEVEL ?= 2
|
||||
endif
|
||||
CPPFLAGS := $(INCLUDE_CPP_ARGS) -Wno-trigraphs -DMODERN=1 -DTESTING=$(TEST)
|
||||
ARMCC := $(PREFIX)gcc
|
||||
PATH_ARMCC := PATH="$(PATH)" $(ARMCC)
|
||||
CC1 := $(shell $(PATH_ARMCC) --print-prog-name=cc1) -quiet
|
||||
override CFLAGS += -mthumb -mthumb-interwork -O$(O_LEVEL) -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast -std=gnu17 -Werror -Wall -Wno-strict-aliasing -Wno-attribute-alias -Woverride-init
|
||||
ifeq ($(ANALYZE),1)
|
||||
override CFLAGS += -fanalyzer
|
||||
override CFLAGS += -fanalyzer
|
||||
endif
|
||||
# Only throw an error for unused elements if its RH-Hideout's repo
|
||||
ifeq ($(UNUSED_ERROR),0)
|
||||
ifneq ($(GITHUB_REPOSITORY_OWNER),rh-hideout)
|
||||
override CFLAGS += -Wno-error=unused-variable -Wno-error=unused-const-variable -Wno-error=unused-parameter -Wno-error=unused-function -Wno-error=unused-but-set-parameter -Wno-error=unused-but-set-variable -Wno-error=unused-value -Wno-error=unused-local-typedefs
|
||||
ifneq ($(GITHUB_REPOSITORY_OWNER),rh-hideout)
|
||||
override CFLAGS += -Wno-error=unused-variable -Wno-error=unused-const-variable -Wno-error=unused-parameter -Wno-error=unused-function -Wno-error=unused-but-set-parameter -Wno-error=unused-but-set-variable -Wno-error=unused-value -Wno-error=unused-local-typedefs
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
ROM := $(ROM_NAME)
|
||||
OBJ_DIR := $(OBJ_DIR_NAME)
|
||||
LIBPATH := -L "$(dir $(shell $(PATH_ARMCC) -mthumb -print-file-name=libgcc.a))" -L "$(dir $(shell $(PATH_ARMCC) -mthumb -print-file-name=libnosys.a))" -L "$(dir $(shell $(PATH_ARMCC) -mthumb -print-file-name=libc.a))"
|
||||
LIB := $(LIBPATH) -lc -lnosys -lgcc -L../../libagbsyscall -lagbsyscall
|
||||
|
||||
ifeq ($(DEBUG),1)
|
||||
override CFLAGS += -Og -g
|
||||
# Enable debug info if set
|
||||
ifeq ($(DINFO),1)
|
||||
override CFLAGS += -g
|
||||
else
|
||||
override CFLAGS += -O2
|
||||
ifeq ($(DEBUG),1)
|
||||
override CFLAGS += -g
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(TESTELF),$(MAKECMDGOALS))
|
||||
TEST := 1
|
||||
ifeq ($(NOOPT),1)
|
||||
override CFLAGS := $(filter-out -O1 -Og -O2,$(CFLAGS))
|
||||
override CFLAGS += -O0
|
||||
endif
|
||||
|
||||
ifeq ($(TEST),1)
|
||||
OBJ_DIR := $(TEST_OBJ_DIR_NAME)
|
||||
endif
|
||||
ifeq ($(DEBUG),1)
|
||||
OBJ_DIR := $(DEBUG_OBJ_DIR_NAME)
|
||||
endif
|
||||
|
||||
|
||||
CPPFLAGS := -iquote include -iquote $(GFLIB_SUBDIR) -Wno-trigraphs -DMODERN=1 -DTESTING=$(TEST)
|
||||
|
||||
SHA1 := $(shell { command -v sha1sum || command -v shasum; } 2>/dev/null) -c
|
||||
GFX := tools/gbagfx/gbagfx$(EXE)
|
||||
AIF := tools/aif2pcm/aif2pcm$(EXE)
|
||||
MID := tools/mid2agb/mid2agb$(EXE)
|
||||
SCANINC := tools/scaninc/scaninc$(EXE)
|
||||
PREPROC := tools/preproc/preproc$(EXE)
|
||||
RAMSCRGEN := tools/ramscrgen/ramscrgen$(EXE)
|
||||
FIX := tools/gbafix/gbafix$(EXE)
|
||||
MAPJSON := tools/mapjson/mapjson$(EXE)
|
||||
JSONPROC := tools/jsonproc/jsonproc$(EXE)
|
||||
PATCHELF := tools/patchelf/patchelf$(EXE)
|
||||
ROMTEST ?= $(shell { command -v mgba-rom-test || command -v tools/mgba/mgba-rom-test$(EXE); } 2>/dev/null)
|
||||
ROMTESTHYDRA := tools/mgba-rom-test-hydra/mgba-rom-test-hydra$(EXE)
|
||||
TRAINERPROC := tools/trainerproc/trainerproc$(EXE)
|
||||
# Variable filled out in other make files
|
||||
AUTO_GEN_TARGETS :=
|
||||
include make_tools.mk
|
||||
# Tool executables
|
||||
GFX := $(TOOLS_DIR)/gbagfx/gbagfx$(EXE)
|
||||
AIF := $(TOOLS_DIR)/aif2pcm/aif2pcm$(EXE)
|
||||
MID := $(TOOLS_DIR)/mid2agb/mid2agb$(EXE)
|
||||
SCANINC := $(TOOLS_DIR)/scaninc/scaninc$(EXE)
|
||||
PREPROC := $(TOOLS_DIR)/preproc/preproc$(EXE)
|
||||
RAMSCRGEN := $(TOOLS_DIR)/ramscrgen/ramscrgen$(EXE)
|
||||
FIX := $(TOOLS_DIR)/gbafix/gbafix$(EXE)
|
||||
MAPJSON := $(TOOLS_DIR)/mapjson/mapjson$(EXE)
|
||||
JSONPROC := $(TOOLS_DIR)/jsonproc/jsonproc$(EXE)
|
||||
TRAINERPROC := $(TOOLS_DIR)/trainerproc/trainerproc$(EXE)
|
||||
PATCHELF := $(TOOLS_DIR)/patchelf/patchelf$(EXE)
|
||||
ROMTEST ?= $(shell { command -v mgba-rom-test || command -v $(TOOLS_DIR)/mgba/mgba-rom-test$(EXE); } 2>/dev/null)
|
||||
ROMTESTHYDRA := $(TOOLS_DIR)/mgba-rom-test-hydra/mgba-rom-test-hydra$(EXE)
|
||||
|
||||
PERL := perl
|
||||
|
||||
# Inclusive list. If you don't want a tool to be built, don't add it here.
|
||||
TOOLDIRS := tools/aif2pcm tools/bin2c tools/gbafix tools/gbagfx tools/jsonproc tools/mapjson tools/mid2agb tools/preproc tools/ramscrgen tools/rsfont tools/scaninc tools/trainerproc
|
||||
CHECKTOOLDIRS = tools/patchelf tools/mgba-rom-test-hydra
|
||||
TOOLBASE = $(TOOLDIRS:tools/%=%)
|
||||
TOOLS = $(foreach tool,$(TOOLBASE),tools/$(tool)/$(tool)$(EXE))
|
||||
SHA1 := $(shell { command -v sha1sum || command -v shasum; } 2>/dev/null) -c
|
||||
|
||||
MAKEFLAGS += --no-print-directory
|
||||
|
||||
@ -160,37 +177,41 @@ MAKEFLAGS += --no-print-directory
|
||||
# Delete files that weren't built properly
|
||||
.DELETE_ON_ERROR:
|
||||
|
||||
# Secondary expansion is required for dependency variables in object rules.
|
||||
.SECONDEXPANSION:
|
||||
|
||||
.PHONY: all rom clean compare tidy tools check-tools mostlyclean clean-tools clean-check-tools $(TOOLDIRS) $(CHECKTOOLDIRS) libagbsyscall agbcc modern tidymodern tidynonmodern check history debug
|
||||
RULES_NO_SCAN += libagbsyscall clean clean-assets tidy tidymodern tidycheck generated clean-generated $(TESTELF)
|
||||
.PHONY: all rom agbcc modern compare check debug
|
||||
.PHONY: $(RULES_NO_SCAN)
|
||||
|
||||
infoshell = $(foreach line, $(shell $1 | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line))))
|
||||
|
||||
# Build tools when building the rom
|
||||
# Disable dependency scanning for clean/tidy/tools
|
||||
# Use a separate minimal makefile for speed
|
||||
# Since we don't need to reload most of this makefile
|
||||
ifeq (,$(filter-out all rom compare agbcc modern check libagbsyscall syms $(TESTELF) debug,$(MAKECMDGOALS)))
|
||||
$(call infoshell, $(MAKE) -f make_tools.mk)
|
||||
else
|
||||
NODEP ?= 1
|
||||
endif
|
||||
|
||||
# check if we need to scan dependencies based on the rule
|
||||
ifeq (,$(MAKECMDGOALS))
|
||||
SCAN_DEPS ?= 1
|
||||
else
|
||||
# clean, tidy, tools, check-tools, mostlyclean, clean-tools, clean-check-tools, $(TOOLDIRS), $(CHECKTOOLDIRS), tidymodern, tidynonmodern, tidycheck don't even build the ROM
|
||||
# libagbsyscall does its own thing
|
||||
ifeq (,$(filter-out clean tidy tools mostlyclean clean-tools $(TOOLDIRS) clean-check-tools $(CHECKTOOLDIRS) tidymodern tidynonmodern tidycheck libagbsyscall,$(MAKECMDGOALS)))
|
||||
SCAN_DEPS ?= 0
|
||||
else
|
||||
SCAN_DEPS ?= 1
|
||||
# Check if we need to scan dependencies based on the chosen rule OR user preference
|
||||
NODEP ?= 0
|
||||
# Check if we need to pre-build tools and generate assets based on the chosen rule.
|
||||
SETUP_PREREQS ?= 1
|
||||
# Disable dependency scanning for rules that don't need it.
|
||||
ifneq (,$(MAKECMDGOALS))
|
||||
ifeq (,$(filter-out $(RULES_NO_SCAN),$(MAKECMDGOALS)))
|
||||
NODEP := 1
|
||||
SETUP_PREREQS := 0
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(SCAN_DEPS),1)
|
||||
.SHELLSTATUS ?= 0
|
||||
|
||||
ifeq ($(SETUP_PREREQS),1)
|
||||
# If set on: Default target or a rule requiring a scan
|
||||
# Forcibly execute `make tools` since we need them for what we are doing.
|
||||
$(foreach line, $(shell $(MAKE) -f make_tools.mk | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line))))
|
||||
ifneq ($(.SHELLSTATUS),0)
|
||||
$(error Errors occurred while building tools. See error messages above for more details)
|
||||
endif
|
||||
# Oh and also generate mapjson sources before we use `SCANINC`.
|
||||
$(foreach line, $(shell $(MAKE) generated | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line))))
|
||||
ifneq ($(.SHELLSTATUS),0)
|
||||
$(error Errors occurred while generating map-related sources. See error messages above for more details)
|
||||
endif
|
||||
endif
|
||||
|
||||
# Collect sources
|
||||
C_SRCS_IN := $(wildcard $(C_SUBDIR)/*.c $(C_SUBDIR)/*/*.c $(C_SUBDIR)/*/*/*.c)
|
||||
C_SRCS := $(foreach src,$(C_SRCS_IN),$(if $(findstring .inc.c,$(src)),,$(src)))
|
||||
C_OBJS := $(patsubst $(C_SUBDIR)/%.c,$(C_BUILDDIR)/%.o,$(C_SRCS))
|
||||
@ -200,10 +221,7 @@ TEST_SRCS := $(foreach src,$(TEST_SRCS_IN),$(if $(findstring .inc.c,$(src)),,$(s
|
||||
TEST_OBJS := $(patsubst $(TEST_SUBDIR)/%.c,$(TEST_BUILDDIR)/%.o,$(TEST_SRCS))
|
||||
TEST_OBJS_REL := $(patsubst $(OBJ_DIR)/%,%,$(TEST_OBJS))
|
||||
|
||||
GFLIB_SRCS := $(wildcard $(GFLIB_SUBDIR)/*.c)
|
||||
GFLIB_OBJS := $(patsubst $(GFLIB_SUBDIR)/%.c,$(GFLIB_BUILDDIR)/%.o,$(GFLIB_SRCS))
|
||||
|
||||
C_ASM_SRCS += $(wildcard $(C_SUBDIR)/*.s $(C_SUBDIR)/*/*.s $(C_SUBDIR)/*/*/*.s)
|
||||
C_ASM_SRCS := $(wildcard $(C_SUBDIR)/*.s $(C_SUBDIR)/*/*.s $(C_SUBDIR)/*/*/*.s)
|
||||
C_ASM_OBJS := $(patsubst $(C_SUBDIR)/%.s,$(C_BUILDDIR)/%.o,$(C_ASM_SRCS))
|
||||
|
||||
ASM_SRCS := $(wildcard $(ASM_SUBDIR)/*.s)
|
||||
@ -221,243 +239,16 @@ SONG_OBJS := $(patsubst $(SONG_SUBDIR)/%.s,$(SONG_BUILDDIR)/%.o,$(SONG_SRCS))
|
||||
MID_SRCS := $(wildcard $(MID_SUBDIR)/*.mid)
|
||||
MID_OBJS := $(patsubst $(MID_SUBDIR)/%.mid,$(MID_BUILDDIR)/%.o,$(MID_SRCS))
|
||||
|
||||
OBJS := $(C_OBJS) $(GFLIB_OBJS) $(C_ASM_OBJS) $(ASM_OBJS) $(DATA_ASM_OBJS) $(SONG_OBJS) $(MID_OBJS)
|
||||
OBJS := $(C_OBJS) $(C_ASM_OBJS) $(ASM_OBJS) $(DATA_ASM_OBJS) $(SONG_OBJS) $(MID_OBJS)
|
||||
OBJS_REL := $(patsubst $(OBJ_DIR)/%,%,$(OBJS))
|
||||
|
||||
SUBDIRS := $(sort $(dir $(OBJS) $(dir $(TEST_OBJS))))
|
||||
$(shell mkdir -p $(SUBDIRS))
|
||||
endif
|
||||
|
||||
AUTO_GEN_TARGETS :=
|
||||
|
||||
all: history rom
|
||||
|
||||
history:
|
||||
@bash ./check_history.sh
|
||||
|
||||
tools: $(TOOLDIRS)
|
||||
|
||||
check-tools: $(CHECKTOOLDIRS)
|
||||
|
||||
syms: $(SYM)
|
||||
|
||||
$(TOOLDIRS):
|
||||
@$(MAKE) -C $@
|
||||
|
||||
$(CHECKTOOLDIRS):
|
||||
@$(MAKE) -C $@
|
||||
|
||||
rom: $(ROM)
|
||||
ifeq ($(COMPARE),1)
|
||||
@$(SHA1) rom.sha1
|
||||
endif
|
||||
|
||||
# For contributors to make sure a change didn't affect the contents of the ROM.
|
||||
# Pretend rules that are actually flags defer to `make all`
|
||||
modern: all
|
||||
compare: all
|
||||
|
||||
clean: mostlyclean clean-tools clean-check-tools
|
||||
|
||||
clean-tools:
|
||||
@$(foreach tooldir,$(TOOLDIRS),$(MAKE) clean -C $(tooldir);)
|
||||
|
||||
clean-check-tools:
|
||||
@$(foreach tooldir,$(CHECKTOOLDIRS),$(MAKE) clean -C $(tooldir);)
|
||||
|
||||
mostlyclean: tidynonmodern tidymodern tidycheck tidydebug
|
||||
find sound -iname '*.bin' -exec rm {} +
|
||||
rm -f $(MID_SUBDIR)/*.s
|
||||
find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.rl' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} +
|
||||
rm -f $(DATA_ASM_SUBDIR)/layouts/layouts.inc $(DATA_ASM_SUBDIR)/layouts/layouts_table.inc
|
||||
rm -f $(DATA_ASM_SUBDIR)/maps/connections.inc $(DATA_ASM_SUBDIR)/maps/events.inc $(DATA_ASM_SUBDIR)/maps/groups.inc $(DATA_ASM_SUBDIR)/maps/headers.inc $(DATA_SRC_SUBDIR)/map_group_count.h
|
||||
find $(DATA_ASM_SUBDIR)/maps \( -iname 'connections.inc' -o -iname 'events.inc' -o -iname 'header.inc' \) -exec rm {} +
|
||||
rm -f $(AUTO_GEN_TARGETS)
|
||||
@$(MAKE) clean -C libagbsyscall
|
||||
|
||||
tidy: tidymodern tidycheck tidydebug
|
||||
|
||||
tidymodern:
|
||||
rm -f $(ROM_NAME) $(ELF_NAME) $(MAP_NAME)
|
||||
rm -rf $(OBJ_DIR_NAME)
|
||||
|
||||
tidycheck:
|
||||
rm -f $(TESTELF) $(HEADLESSELF)
|
||||
rm -rf $(TEST_OBJ_DIR_NAME)
|
||||
|
||||
tidydebug:
|
||||
rm -rf $(DEBUG_OBJ_DIR_NAME)
|
||||
|
||||
include graphics_file_rules.mk
|
||||
include map_data_rules.mk
|
||||
include spritesheet_rules.mk
|
||||
include json_data_rules.mk
|
||||
include songs.mk
|
||||
|
||||
%.s: ;
|
||||
%.png: ;
|
||||
%.pal: ;
|
||||
%.aif: ;
|
||||
|
||||
%.1bpp: %.png ; $(GFX) $< $@
|
||||
%.4bpp: %.png ; $(GFX) $< $@
|
||||
%.8bpp: %.png ; $(GFX) $< $@
|
||||
%.gbapal: %.pal ; $(GFX) $< $@
|
||||
%.gbapal: %.png ; $(GFX) $< $@
|
||||
%.lz: % ; $(GFX) $< $@
|
||||
%.rl: % ; $(GFX) $< $@
|
||||
|
||||
$(CRY_SUBDIR)/uncomp_%.bin: $(CRY_SUBDIR)/uncomp_%.aif ; $(AIF) $< $@
|
||||
$(CRY_SUBDIR)/%.bin: $(CRY_SUBDIR)/%.aif ; $(AIF) $< $@ --compress
|
||||
sound/%.bin: sound/%.aif ; $(AIF) $< $@
|
||||
|
||||
COMPETITIVE_PARTY_SYNTAX := $(shell PATH="$(PATH)"; echo 'COMPETITIVE_PARTY_SYNTAX' | $(CPP) $(CPPFLAGS) -imacros include/global.h | tail -n1)
|
||||
ifeq ($(COMPETITIVE_PARTY_SYNTAX),1)
|
||||
%.h: %.party tools ; $(CPP) $(CPPFLAGS) -traditional-cpp - < $< | $(TRAINERPROC) -o $@ -i $< -
|
||||
endif
|
||||
|
||||
$(C_BUILDDIR)/berry_crush.o: override CFLAGS += -Wno-address-of-packed-member
|
||||
$(C_BUILDDIR)/librfu_intr.o: CFLAGS := -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast
|
||||
$(C_BUILDDIR)/pokedex_plus_hgss.o: CFLAGS := -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -Wno-pointer-to-int-cast -std=gnu17 -Werror -Wall -Wno-strict-aliasing -Wno-attribute-alias -Woverride-init
|
||||
# Annoyingly we can't turn this on just for src/data/trainers.h
|
||||
$(C_BUILDDIR)/data.o: CFLAGS += -fno-show-column -fno-diagnostics-show-caret
|
||||
|
||||
ifeq ($(DINFO),1)
|
||||
override CFLAGS += -g
|
||||
endif
|
||||
|
||||
ifeq ($(NOOPT),1)
|
||||
override CFLAGS := $(filter-out -O1 -Og -O2,$(CFLAGS))
|
||||
override CFLAGS += -O0
|
||||
endif
|
||||
|
||||
# The dep rules have to be explicit or else missing files won't be reported.
|
||||
# As a side effect, they're evaluated immediately instead of when the rule is invoked.
|
||||
# It doesn't look like $(shell) can be deferred so there might not be a better way.
|
||||
|
||||
ifeq ($(SCAN_DEPS),1)
|
||||
ifeq ($(NODEP),1)
|
||||
$(C_BUILDDIR)/%.o: $(C_SUBDIR)/%.c
|
||||
ifeq (,$(KEEP_TEMPS))
|
||||
@echo "$(CC1) <flags> -o $@ $<"
|
||||
@$(CPP) $(CPPFLAGS) $< | $(PREPROC) -i $< charmap.txt | $(CC1) $(CFLAGS) -o - - | cat - <(echo -e ".text\n\t.align\t2, 0") | $(AS) $(ASFLAGS) -o $@ -
|
||||
else
|
||||
@$(CPP) $(CPPFLAGS) $< -o $(C_BUILDDIR)/$*.i
|
||||
@$(PREPROC) $(C_BUILDDIR)/$*.i charmap.txt | $(CC1) $(CFLAGS) -o $(C_BUILDDIR)/$*.s
|
||||
@echo -e ".text\n\t.align\t2, 0\n" >> $(C_BUILDDIR)/$*.s
|
||||
$(AS) $(ASFLAGS) -o $@ $(C_BUILDDIR)/$*.s
|
||||
endif
|
||||
else
|
||||
define C_DEP
|
||||
$1: $2 $$(shell $(SCANINC) -I include -I tools/agbcc/include -I gflib $2)
|
||||
ifeq (,$$(KEEP_TEMPS))
|
||||
@echo "$$(CC1) <flags> -o $$@ $$<"
|
||||
@$$(CPP) $$(CPPFLAGS) $$< | $$(PREPROC) -i $$< charmap.txt | $$(CC1) $$(CFLAGS) -o - - | cat - <(echo -e ".text\n\t.align\t2, 0") | $$(AS) $$(ASFLAGS) -o $$@ -
|
||||
else
|
||||
@$$(CPP) $$(CPPFLAGS) $$< -o $$(C_BUILDDIR)/$3.i
|
||||
@$$(PREPROC) $$(C_BUILDDIR)/$3.i charmap.txt | $$(CC1) $$(CFLAGS) -o $$(C_BUILDDIR)/$3.s
|
||||
@echo -e ".text\n\t.align\t2, 0\n" >> $$(C_BUILDDIR)/$3.s
|
||||
$$(AS) $$(ASFLAGS) -o $$@ $$(C_BUILDDIR)/$3.s
|
||||
endif
|
||||
endef
|
||||
$(foreach src, $(C_SRCS), $(eval $(call C_DEP,$(patsubst $(C_SUBDIR)/%.c,$(C_BUILDDIR)/%.o,$(src)),$(src),$(patsubst $(C_SUBDIR)/%.c,%,$(src)))))
|
||||
endif
|
||||
|
||||
ifeq ($(NODEP),1)
|
||||
$(GFLIB_BUILDDIR)/%.o: $(GFLIB_SUBDIR)/%.c $$(c_dep)
|
||||
ifeq (,$(KEEP_TEMPS))
|
||||
@echo "$(CC1) <flags> -o $@ $<"
|
||||
@$(CPP) $(CPPFLAGS) $< | $(PREPROC) -i $< charmap.txt | $(CC1) $(CFLAGS) -o - - | cat - <(echo -e ".text\n\t.align\t2, 0") | $(AS) $(ASFLAGS) -o $@ -
|
||||
else
|
||||
@$(CPP) $(CPPFLAGS) $< -o $(GFLIB_BUILDDIR)/$*.i
|
||||
@$(PREPROC) $(GFLIB_BUILDDIR)/$*.i charmap.txt | $(CC1) $(CFLAGS) -o $(GFLIB_BUILDDIR)/$*.s
|
||||
@echo -e ".text\n\t.align\t2, 0\n" >> $(GFLIB_BUILDDIR)/$*.s
|
||||
$(AS) $(ASFLAGS) -o $@ $(GFLIB_BUILDDIR)/$*.s
|
||||
endif
|
||||
else
|
||||
define GFLIB_DEP
|
||||
$1: $2 $$(shell $(SCANINC) -I include -I tools/agbcc/include -I gflib $2)
|
||||
ifeq (,$$(KEEP_TEMPS))
|
||||
@echo "$$(CC1) <flags> -o $$@ $$<"
|
||||
@$$(CPP) $$(CPPFLAGS) $$< | $$(PREPROC) -i $$< charmap.txt | $$(CC1) $$(CFLAGS) -o - - | cat - <(echo -e ".text\n\t.align\t2, 0") | $$(AS) $$(ASFLAGS) -o $$@ -
|
||||
else
|
||||
@$$(CPP) $$(CPPFLAGS) $$< -o $$(GFLIB_BUILDDIR)/$3.i
|
||||
@$$(PREPROC) $$(GFLIB_BUILDDIR)/$3.i charmap.txt | $$(CC1) $$(CFLAGS) -o $$(GFLIB_BUILDDIR)/$3.s
|
||||
@echo -e ".text\n\t.align\t2, 0\n" >> $$(GFLIB_BUILDDIR)/$3.s
|
||||
$$(AS) $$(ASFLAGS) -o $$@ $$(GFLIB_BUILDDIR)/$3.s
|
||||
endif
|
||||
endef
|
||||
$(foreach src, $(GFLIB_SRCS), $(eval $(call GFLIB_DEP,$(patsubst $(GFLIB_SUBDIR)/%.c,$(GFLIB_BUILDDIR)/%.o, $(src)),$(src),$(patsubst $(GFLIB_SUBDIR)/%.c,%, $(src)))))
|
||||
endif
|
||||
|
||||
ifeq ($(NODEP),1)
|
||||
$(C_BUILDDIR)/%.o: $(C_SUBDIR)/%.s
|
||||
$(PREPROC) $< charmap.txt | $(CPP) -I include - | $(PREPROC) -i $$< charmap.txt | $(AS) $(ASFLAGS) -o $@
|
||||
else
|
||||
define SRC_ASM_DATA_DEP
|
||||
$1: $2 $$(shell $(SCANINC) -I include -I "" $2)
|
||||
$$(PREPROC) $$< charmap.txt | $$(CPP) -I include - | $$(PREPROC) -ie $$< charmap.txt | $$(AS) $$(ASFLAGS) -o $$@
|
||||
endef
|
||||
$(foreach src, $(C_ASM_SRCS), $(eval $(call SRC_ASM_DATA_DEP,$(patsubst $(C_SUBDIR)/%.s,$(C_BUILDDIR)/%.o, $(src)),$(src))))
|
||||
endif
|
||||
|
||||
ifeq ($(NODEP),1)
|
||||
$(ASM_BUILDDIR)/%.o: $(ASM_SUBDIR)/%.s
|
||||
$(AS) $(ASFLAGS) -o $@ $<
|
||||
else
|
||||
define ASM_DEP
|
||||
$1: $2 $$(shell $(SCANINC) -I include -I "" $2)
|
||||
$$(AS) $$(ASFLAGS) -o $$@ $$<
|
||||
endef
|
||||
$(foreach src, $(ASM_SRCS), $(eval $(call ASM_DEP,$(patsubst $(ASM_SUBDIR)/%.s,$(ASM_BUILDDIR)/%.o, $(src)),$(src))))
|
||||
endif
|
||||
|
||||
ifeq ($(NODEP),1)
|
||||
$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s
|
||||
$(PREPROC) $< charmap.txt | $(CPP) -I include - | $(PREPROC) -ie $$< charmap.txt | $(AS) $(ASFLAGS) -o $@
|
||||
else
|
||||
$(foreach src, $(REGULAR_DATA_ASM_SRCS), $(eval $(call SRC_ASM_DATA_DEP,$(patsubst $(DATA_ASM_SUBDIR)/%.s,$(DATA_ASM_BUILDDIR)/%.o, $(src)),$(src))))
|
||||
endif
|
||||
endif
|
||||
|
||||
$(SONG_BUILDDIR)/%.o: $(SONG_SUBDIR)/%.s
|
||||
$(AS) $(ASFLAGS) -I sound -o $@ $<
|
||||
|
||||
$(OBJ_DIR)/sym_bss.ld: sym_bss.txt
|
||||
$(RAMSCRGEN) .bss $< ENGLISH > $@
|
||||
|
||||
$(OBJ_DIR)/sym_common.ld: sym_common.txt $(C_OBJS) $(wildcard common_syms/*.txt)
|
||||
$(RAMSCRGEN) COMMON $< ENGLISH -c $(C_BUILDDIR),common_syms > $@
|
||||
|
||||
$(OBJ_DIR)/sym_ewram.ld: sym_ewram.txt
|
||||
$(RAMSCRGEN) ewram_data $< ENGLISH > $@
|
||||
|
||||
# NOTE: Depending on event_scripts.o is hacky, but we want to depend on everything event_scripts.s depends on without having to alter scaninc
|
||||
$(DATA_SRC_SUBDIR)/pokemon/teachable_learnsets.h: $(DATA_ASM_BUILDDIR)/event_scripts.o
|
||||
python3 tools/learnset_helpers/teachable.py
|
||||
|
||||
# NOTE: Based on C_DEP above, but without NODEP and KEEP_TEMPS handling.
|
||||
define TEST_DEP
|
||||
$1: $2 $$(shell $(SCANINC) -I include -I tools/agbcc/include -I gflib $2)
|
||||
@echo "$$(CC1) <flags> -o $$@ $$<"
|
||||
@$$(CPP) $$(CPPFLAGS) $$< | $$(PREPROC) -i $$< charmap.txt | $$(CC1) $$(CFLAGS) -o - - | cat - <(echo -e ".text\n\t.align\t2, 0") | $$(AS) $$(ASFLAGS) -o $$@ -
|
||||
endef
|
||||
$(foreach src, $(TEST_SRCS), $(eval $(call TEST_DEP,$(patsubst $(TEST_SUBDIR)/%.c,$(TEST_BUILDDIR)/%.o,$(src)),$(src),$(patsubst $(TEST_SUBDIR)/%.c,%,$(src)))))
|
||||
|
||||
LD_SCRIPT := ld_script_modern.ld
|
||||
LD_SCRIPT_DEPS :=
|
||||
|
||||
$(OBJ_DIR)/ld_script.ld: $(LD_SCRIPT) $(LD_SCRIPT_DEPS)
|
||||
cd $(OBJ_DIR) && sed "s#tools/#../../tools/#g" ../../$(LD_SCRIPT) > ld_script.ld
|
||||
|
||||
LDFLAGS = -Map ../../$(MAP)
|
||||
$(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS) libagbsyscall
|
||||
@echo "cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ <objects> <lib>"
|
||||
@cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld --print-memory-usage -o ../../$@ $(OBJS_REL) $(LIB) | cat
|
||||
$(FIX) $@ -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent
|
||||
|
||||
$(ROM): $(ELF)
|
||||
$(OBJCOPY) -O binary $< $@
|
||||
$(FIX) $@ -p --silent
|
||||
|
||||
debug: all
|
||||
# Uncomment the next line, and then comment the 4 lines after it to reenable agbcc.
|
||||
#agbcc: all
|
||||
agbcc:
|
||||
@ -465,10 +256,6 @@ agbcc:
|
||||
@echo "Search for 'agbcc: all' in Makefile to reenable agbcc."
|
||||
@exit 1
|
||||
|
||||
modern: all
|
||||
|
||||
debug: all
|
||||
|
||||
LD_SCRIPT_TEST := ld_script_test.ld
|
||||
|
||||
$(OBJ_DIR)/ld_script_test.ld: $(LD_SCRIPT_TEST) $(LD_SCRIPT_DEPS)
|
||||
@ -491,12 +278,171 @@ check: $(TESTELF)
|
||||
$(PATCHELF) $(HEADLESSELF) gTestRunnerHeadless '\x01' gTestRunnerSkipIsFail "$(TEST_SKIP_IS_FAIL)"
|
||||
$(ROMTESTHYDRA) $(ROMTEST) $(OBJCOPY) $(HEADLESSELF)
|
||||
|
||||
# Other rules
|
||||
rom: $(ROM)
|
||||
ifeq ($(COMPARE),1)
|
||||
@$(SHA1) rom.sha1
|
||||
endif
|
||||
|
||||
syms: $(SYM)
|
||||
|
||||
clean: tidy clean-tools clean-check-tools clean-generated clean-assets
|
||||
@$(MAKE) clean -C libagbsyscall
|
||||
|
||||
clean-assets:
|
||||
rm -f $(MID_SUBDIR)/*.s
|
||||
rm -f $(DATA_ASM_SUBDIR)/layouts/layouts.inc $(DATA_ASM_SUBDIR)/layouts/layouts_table.inc
|
||||
rm -f $(DATA_ASM_SUBDIR)/maps/connections.inc $(DATA_ASM_SUBDIR)/maps/events.inc $(DATA_ASM_SUBDIR)/maps/groups.inc $(DATA_ASM_SUBDIR)/maps/headers.inc $(DATA_SRC_SUBDIR)/map_group_count.h
|
||||
find sound -iname '*.bin' -exec rm {} +
|
||||
find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.rl' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} +
|
||||
find $(DATA_ASM_SUBDIR)/maps \( -iname 'connections.inc' -o -iname 'events.inc' -o -iname 'header.inc' \) -exec rm {} +
|
||||
|
||||
tidy: tidymodern tidycheck tidydebug
|
||||
|
||||
tidymodern:
|
||||
rm -f $(ROM_NAME) $(ELF_NAME) $(MAP_NAME)
|
||||
rm -rf $(OBJ_DIR_NAME)
|
||||
|
||||
tidycheck:
|
||||
rm -f $(TESTELF) $(HEADLESSELF)
|
||||
rm -rf $(OBJ_DIR_NAME_TEST)
|
||||
|
||||
tidydebug:
|
||||
rm -rf $(DEBUG_OBJ_DIR_NAME)
|
||||
|
||||
# Other rules
|
||||
include graphics_file_rules.mk
|
||||
include map_data_rules.mk
|
||||
include spritesheet_rules.mk
|
||||
include json_data_rules.mk
|
||||
include audio_rules.mk
|
||||
|
||||
# NOTE: Tools must have been built prior (FIXME)
|
||||
# so you can't really call this rule directly
|
||||
generated: $(AUTO_GEN_TARGETS)
|
||||
|
||||
%.s: ;
|
||||
%.png: ;
|
||||
%.pal: ;
|
||||
%.aif: ;
|
||||
|
||||
%.1bpp: %.png ; $(GFX) $< $@
|
||||
%.4bpp: %.png ; $(GFX) $< $@
|
||||
%.8bpp: %.png ; $(GFX) $< $@
|
||||
%.gbapal: %.pal ; $(GFX) $< $@
|
||||
%.gbapal: %.png ; $(GFX) $< $@
|
||||
%.lz: % ; $(GFX) $< $@
|
||||
%.rl: % ; $(GFX) $< $@
|
||||
|
||||
clean-generated:
|
||||
-rm -f $(AUTO_GEN_TARGETS)
|
||||
|
||||
COMPETITIVE_PARTY_SYNTAX := $(shell PATH="$(PATH)"; echo 'COMPETITIVE_PARTY_SYNTAX' | $(CPP) $(CPPFLAGS) -imacros include/gba/defines.h -imacros include/config/general.h | tail -n1)
|
||||
ifeq ($(COMPETITIVE_PARTY_SYNTAX),1)
|
||||
%.h: %.party ; $(CPP) $(CPPFLAGS) -traditional-cpp - < $< | $(TRAINERPROC) -o $@ -i $< -
|
||||
endif
|
||||
|
||||
$(C_BUILDDIR)/librfu_intr.o: CFLAGS := -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast
|
||||
$(C_BUILDDIR)/berry_crush.o: override CFLAGS += -Wno-address-of-packed-member
|
||||
$(C_BUILDDIR)/pokedex_plus_hgss.o: CFLAGS := -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -Wno-pointer-to-int-cast -std=gnu17 -Werror -Wall -Wno-strict-aliasing -Wno-attribute-alias -Woverride-init
|
||||
# Annoyingly we can't turn this on just for src/data/trainers.h
|
||||
$(C_BUILDDIR)/data.o: CFLAGS += -fno-show-column -fno-diagnostics-show-caret
|
||||
|
||||
# Dependency rules (for the *.c & *.s sources to .o files)
|
||||
# Have to be explicit or else missing files won't be reported.
|
||||
|
||||
# As a side effect, they're evaluated immediately instead of when the rule is invoked.
|
||||
# It doesn't look like $(shell) can be deferred so there might not be a better way (Icedude_907: there is soon).
|
||||
|
||||
$(C_BUILDDIR)/%.o: $(C_SUBDIR)/%.c
|
||||
ifneq ($(KEEP_TEMPS),1)
|
||||
@echo "$(CC1) <flags> -o $@ $<"
|
||||
@$(CPP) $(CPPFLAGS) $< | $(PREPROC) -i $< charmap.txt | $(CC1) $(CFLAGS) -o - - | cat - <(echo -e ".text\n\t.align\t2, 0") | $(AS) $(ASFLAGS) -o $@ -
|
||||
else
|
||||
@$(CPP) $(CPPFLAGS) $< -o $*.i
|
||||
@$(PREPROC) $*.i charmap.txt | $(CC1) $(CFLAGS) -o $*.s
|
||||
@echo -e ".text\n\t.align\t2, 0\n" >> $*.s
|
||||
$(AS) $(ASFLAGS) -o $@ $*.s
|
||||
endif
|
||||
|
||||
$(C_BUILDDIR)/%.d: $(C_SUBDIR)/%.c
|
||||
$(SCANINC) -M $@ $(INCLUDE_SCANINC_ARGS) -I tools/agbcc/include $<
|
||||
|
||||
ifneq ($(NODEP),1)
|
||||
-include $(addprefix $(OBJ_DIR)/,$(C_SRCS:.c=.d))
|
||||
endif
|
||||
|
||||
$(ASM_BUILDDIR)/%.o: $(ASM_SUBDIR)/%.s
|
||||
$(AS) $(ASFLAGS) -o $@ $<
|
||||
|
||||
$(ASM_BUILDDIR)/%.d: $(ASM_SUBDIR)/%.s
|
||||
$(SCANINC) -M $@ $(INCLUDE_SCANINC_ARGS) -I "" $<
|
||||
|
||||
ifneq ($(NODEP),1)
|
||||
-include $(addprefix $(OBJ_DIR)/,$(ASM_SRCS:.s=.d))
|
||||
endif
|
||||
|
||||
$(C_BUILDDIR)/%.o: $(C_SUBDIR)/%.s
|
||||
$(PREPROC) $< charmap.txt | $(CPP) $(INCLUDE_SCANINC_ARGS) - | $(PREPROC) -ie $< charmap.txt | $(AS) $(ASFLAGS) -o $@
|
||||
|
||||
$(C_BUILDDIR)/%.d: $(C_SUBDIR)/%.s
|
||||
$(SCANINC) -M $@ $(INCLUDE_SCANINC_ARGS) -I "" $<
|
||||
|
||||
ifneq ($(NODEP),1)
|
||||
-include $(addprefix $(OBJ_DIR)/,$(C_ASM_SRCS:.s=.d))
|
||||
endif
|
||||
|
||||
$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s
|
||||
$(PREPROC) $< charmap.txt | $(CPP) $(INCLUDE_SCANINC_ARGS) - | $(PREPROC) -ie $< charmap.txt | $(AS) $(ASFLAGS) -o $@
|
||||
|
||||
$(DATA_ASM_BUILDDIR)/%.d: $(DATA_ASM_SUBDIR)/%.s
|
||||
$(SCANINC) -M $@ $(INCLUDE_SCANINC_ARGS) -I "" $<
|
||||
|
||||
ifneq ($(NODEP),1)
|
||||
-include $(addprefix $(OBJ_DIR)/,$(REGULAR_DATA_ASM_SRCS:.s=.d))
|
||||
endif
|
||||
|
||||
$(OBJ_DIR)/sym_bss.ld: sym_bss.txt
|
||||
$(RAMSCRGEN) .bss $< ENGLISH > $@
|
||||
|
||||
$(OBJ_DIR)/sym_common.ld: sym_common.txt $(C_OBJS) $(wildcard common_syms/*.txt)
|
||||
$(RAMSCRGEN) COMMON $< ENGLISH -c $(C_BUILDDIR),common_syms > $@
|
||||
|
||||
$(OBJ_DIR)/sym_ewram.ld: sym_ewram.txt
|
||||
$(RAMSCRGEN) ewram_data $< ENGLISH > $@
|
||||
|
||||
# NOTE: Depending on event_scripts.o is hacky, but we want to depend on everything event_scripts.s depends on without having to alter scaninc
|
||||
$(DATA_SRC_SUBDIR)/pokemon/teachable_learnsets.h: $(DATA_ASM_BUILDDIR)/event_scripts.o
|
||||
python3 $(TOOLS_DIR)/learnset_helpers/teachable.py
|
||||
|
||||
# NOTE: Based on C_DEP above, but without NODEP and KEEP_TEMPS handling.
|
||||
define TEST_DEP
|
||||
$1: $2 $$(shell $(SCANINC) -I include -I $(TOOLS_DIR)/agbcc/include $2)
|
||||
@echo "$$(CC1) <flags> -o $$@ $$<"
|
||||
@$$(CPP) $$(CPPFLAGS) $$< | $$(PREPROC) -i $$< charmap.txt | $$(CC1) $$(CFLAGS) -o - - | cat - <(echo -e ".text\n\t.align\t2, 0") | $$(AS) $$(ASFLAGS) -o $$@ -
|
||||
endef
|
||||
$(foreach src, $(TEST_SRCS), $(eval $(call TEST_DEP,$(patsubst $(TEST_SUBDIR)/%.c,$(TEST_BUILDDIR)/%.o,$(src)),$(src),$(patsubst $(TEST_SUBDIR)/%.c,%,$(src)))))
|
||||
|
||||
# Linker script
|
||||
LD_SCRIPT := ld_script_modern.ld
|
||||
LD_SCRIPT_DEPS :=
|
||||
|
||||
# Final rules
|
||||
|
||||
libagbsyscall:
|
||||
@$(MAKE) -C libagbsyscall TOOLCHAIN=$(TOOLCHAIN) MODERN=1
|
||||
|
||||
###################
|
||||
### Symbol file ###
|
||||
###################
|
||||
# Elf from object files
|
||||
$(ELF): $(LD_SCRIPT) $(LD_SCRIPT_DEPS) $(OBJS) libagbsyscall
|
||||
@cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ../../$< --print-memory-usage -o ../../$@ $(OBJS_REL) $(LIB) | cat
|
||||
@echo "cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ../../$< --print-memory-usage -o ../../$@ <objs> <libs> | cat"
|
||||
$(FIX) $@ -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent
|
||||
|
||||
# Builds the rom from the elf file
|
||||
$(ROM): $(ELF)
|
||||
$(OBJCOPY) -O binary $< $@
|
||||
$(FIX) $@ -p --silent
|
||||
|
||||
# Symbol file (`make syms`)
|
||||
$(SYM): $(ELF)
|
||||
$(OBJDUMP) -t $< | sort -u | grep -E "^0[2389]" | $(PERL) -p -e 's/^(\w{8}) (\w).{6} \S+\t(\w{8}) (\S+)$$/\1 \2 \3 \4/g' > $@
|
||||
|
||||
@ -141,25 +141,25 @@
|
||||
|
||||
.macro if_points_less_than num:req, destination:req
|
||||
.byte 0x16
|
||||
.byte \num
|
||||
.2byte \num
|
||||
.4byte \destination
|
||||
.endm
|
||||
|
||||
.macro if_points_more_than num:req, destination:req
|
||||
.byte 0x17
|
||||
.byte \num
|
||||
.2byte \num
|
||||
.4byte \destination
|
||||
.endm
|
||||
|
||||
.macro if_points_eq num:req, destination:req
|
||||
.byte 0x18
|
||||
.byte \num
|
||||
.2byte \num
|
||||
.4byte \destination
|
||||
.endm
|
||||
|
||||
.macro if_points_not_eq num:req, destination:req
|
||||
.byte 0x19
|
||||
.byte \num
|
||||
.2byte \num
|
||||
.4byte \destination
|
||||
.endm
|
||||
|
||||
@ -171,25 +171,25 @@
|
||||
|
||||
.macro if_preliminary_points_less_than num:req, destination:req
|
||||
.byte 0x1B
|
||||
.byte \num
|
||||
.2byte \num
|
||||
.4byte \destination
|
||||
.endm
|
||||
|
||||
.macro if_preliminary_points_more_than num:req, destination:req
|
||||
.byte 0x1C
|
||||
.byte \num
|
||||
.2byte \num
|
||||
.4byte \destination
|
||||
.endm
|
||||
|
||||
.macro if_preliminary_points_eq num:req, destination:req
|
||||
.byte 0x1D
|
||||
.byte \num
|
||||
.2byte \num
|
||||
.4byte \destination
|
||||
.endm
|
||||
|
||||
.macro if_preliminary_points_not_eq num:req, destination:req
|
||||
.byte 0x1E
|
||||
.byte \num
|
||||
.2byte \num
|
||||
.4byte \destination
|
||||
.endm
|
||||
|
||||
|
||||
49
audio_rules.mk
Normal file
@ -0,0 +1,49 @@
|
||||
# This file contains rules for making assemblies for most music in the game.
|
||||
|
||||
CRY_SUBDIR := sound/direct_sound_samples/cries
|
||||
|
||||
MID_ASM_DIR := $(MID_SUBDIR)
|
||||
CRY_BIN_DIR := $(CRY_SUBDIR)
|
||||
SOUND_BIN_DIR := sound
|
||||
|
||||
SPECIAL_OUTDIRS := $(MID_ASM_DIR) $(CRY_BIN_DIR)
|
||||
SPECIAL_OUTDIRS += $(SOUND_BIN_DIR) $(SOUND_BIN_DIR)/direct_sound_samples/phonemes $(SOUND_BIN_DIR)/direct_sound_samples/cries
|
||||
$(shell mkdir -p $(SPECIAL_OUTDIRS) )
|
||||
|
||||
# Assembly song compilation
|
||||
$(SONG_BUILDDIR)/%.o: $(SONG_SUBDIR)/%.s
|
||||
$(AS) $(ASFLAGS) -I sound -o $@ $<
|
||||
$(MID_BUILDDIR)/%.o: $(MID_ASM_DIR)/%.s
|
||||
$(AS) $(ASFLAGS) -I sound -o $@ $<
|
||||
|
||||
# Compressed cries
|
||||
$(CRY_BIN_DIR)/%.bin: $(CRY_SUBDIR)/%.aif
|
||||
$(AIF) $< $@ --compress
|
||||
|
||||
# Uncompressed cries
|
||||
$(CRY_BIN_DIR)/uncomp_%.bin: $(CRY_SUBDIR)/uncomp_%.aif
|
||||
$(AIF) $< $@
|
||||
|
||||
# Uncompressed sounds
|
||||
$(SOUND_BIN_DIR)/%.bin: sound/%.aif
|
||||
$(AIF) $< $@
|
||||
|
||||
# For each line in midi.cfg, we do some trickery to convert it into a make rule for the `.mid` file described on the line
|
||||
# Data following the colon in said file corresponds to arguments passed into mid2agb
|
||||
MID_CFG_PATH := $(MID_SUBDIR)/midi.cfg
|
||||
|
||||
# $1: Source path no extension, $2 Options
|
||||
define MID_RULE
|
||||
$(MID_ASM_DIR)/$1.s: $(MID_SUBDIR)/$1.mid $(MID_CFG_PATH)
|
||||
$(MID) $$< $$@ $2
|
||||
endef
|
||||
# source path, remaining text (options)
|
||||
define MID_EXPANSION
|
||||
$(eval $(call MID_RULE,$(basename $(patsubst %:,%,$(word 1,$1))),$(wordlist 2,999,$1)))
|
||||
endef
|
||||
|
||||
$(foreach line,$(shell cat $(MID_CFG_PATH) | sed "s/ /__SPACE__/g"),$(call MID_EXPANSION,$(subst __SPACE__, ,$(line))))
|
||||
|
||||
# Warn users building without a .cfg - build will fail at link time
|
||||
$(MID_ASM_DIR)/%.s: $(MID_SUBDIR)/%.mid
|
||||
$(warning $< does not have an associated entry in midi.cfg! It cannot be built)
|
||||
@ -566,8 +566,8 @@ gStdScripts_End::
|
||||
.include "data/maps/Route110_TrickHousePuzzle6/scripts.inc"
|
||||
.include "data/maps/Route110_TrickHousePuzzle7/scripts.inc"
|
||||
.include "data/maps/Route110_TrickHousePuzzle8/scripts.inc"
|
||||
.include "data/maps/Route110_SeasideCyclingRoadNorthEntrance/scripts.inc"
|
||||
.include "data/maps/Route110_SeasideCyclingRoadSouthEntrance/scripts.inc"
|
||||
.include "data/maps/Route110_SeasideCyclingRoadNorthEntrance/scripts.inc"
|
||||
.include "data/maps/Route113_GlassWorkshop/scripts.inc"
|
||||
.include "data/maps/Route123_BerryMastersHouse/scripts.inc"
|
||||
.include "data/maps/Route119_WeatherInstitute_1F/scripts.inc"
|
||||
|
||||
@ -64,7 +64,7 @@
|
||||
"trainer_type": "TRAINER_TYPE_NONE",
|
||||
"trainer_sight_or_berry_tree_id": "0",
|
||||
"script": "FallarborTown_PokemonCenter_1F_EventScript_Lanette",
|
||||
"flag": "FLAG_HIDE_FALLORBOR_POKEMON_CENTER_LANETTE"
|
||||
"flag": "FLAG_HIDE_FALLARBOR_POKEMON_CENTER_LANETTE"
|
||||
}
|
||||
],
|
||||
"warp_events": [
|
||||
|
||||
@ -518,28 +518,28 @@
|
||||
"x": 15,
|
||||
"y": 16,
|
||||
"elevation": 0,
|
||||
"dest_map": "MAP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE",
|
||||
"dest_map": "MAP_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE",
|
||||
"dest_warp_id": "0"
|
||||
},
|
||||
{
|
||||
"x": 18,
|
||||
"y": 16,
|
||||
"elevation": 0,
|
||||
"dest_map": "MAP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE",
|
||||
"dest_map": "MAP_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE",
|
||||
"dest_warp_id": "2"
|
||||
},
|
||||
{
|
||||
"x": 16,
|
||||
"y": 88,
|
||||
"elevation": 0,
|
||||
"dest_map": "MAP_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE",
|
||||
"dest_map": "MAP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE",
|
||||
"dest_warp_id": "0"
|
||||
},
|
||||
{
|
||||
"x": 19,
|
||||
"y": 88,
|
||||
"elevation": 0,
|
||||
"dest_map": "MAP_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE",
|
||||
"dest_map": "MAP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE",
|
||||
"dest_warp_id": "2"
|
||||
}
|
||||
],
|
||||
|
||||
@ -34,28 +34,28 @@
|
||||
"y": 5,
|
||||
"elevation": 0,
|
||||
"dest_map": "MAP_ROUTE110",
|
||||
"dest_warp_id": "4"
|
||||
"dest_warp_id": "2"
|
||||
},
|
||||
{
|
||||
"x": 2,
|
||||
"y": 5,
|
||||
"elevation": 0,
|
||||
"dest_map": "MAP_ROUTE110",
|
||||
"dest_warp_id": "4"
|
||||
"dest_warp_id": "2"
|
||||
},
|
||||
{
|
||||
"x": 12,
|
||||
"y": 5,
|
||||
"elevation": 0,
|
||||
"dest_map": "MAP_ROUTE110",
|
||||
"dest_warp_id": "5"
|
||||
"dest_warp_id": "3"
|
||||
},
|
||||
{
|
||||
"x": 13,
|
||||
"y": 5,
|
||||
"elevation": 0,
|
||||
"dest_map": "MAP_ROUTE110",
|
||||
"dest_warp_id": "5"
|
||||
"dest_warp_id": "3"
|
||||
}
|
||||
],
|
||||
"coord_events": [
|
||||
|
||||
@ -1,6 +1,16 @@
|
||||
Route110_SeasideCyclingRoadNorthEntrance_MapScripts::
|
||||
map_script MAP_SCRIPT_ON_TRANSITION, Route110_SeasideCyclingRoadNorthEntrance_OnTransition
|
||||
.byte 0
|
||||
|
||||
Route110_SeasideCyclingRoadNorthEntrance_OnTransition:
|
||||
call_if_eq VAR_CYCLING_CHALLENGE_STATE, 3, Route110_SeasideCyclingRoadNorthEntrance_EventScript_RestartChallenge
|
||||
call_if_eq VAR_CYCLING_CHALLENGE_STATE, 2, Route110_SeasideCyclingRoadNorthEntrance_EventScript_RestartChallenge
|
||||
end
|
||||
|
||||
Route110_SeasideCyclingRoadNorthEntrance_EventScript_RestartChallenge::
|
||||
setvar VAR_CYCLING_CHALLENGE_STATE, 1
|
||||
return
|
||||
|
||||
Route110_SeasideCyclingRoadNorthEntrance_EventScript_Clerk::
|
||||
lock
|
||||
faceplayer
|
||||
@ -11,12 +21,17 @@ Route110_SeasideCyclingRoadNorthEntrance_EventScript_Clerk::
|
||||
Route110_SeasideCyclingRoadNorthEntrance_EventScript_BikeCheck::
|
||||
lockall
|
||||
specialvar VAR_RESULT, GetPlayerAvatarBike
|
||||
call_if_eq VAR_RESULT, 2, Route110_SeasideCyclingRoadNorthEntrance_EventScript_OnMachBike
|
||||
goto_if_eq VAR_RESULT, 0, Route110_SeasideCyclingRoadNorthEntrance_EventScript_NoBike
|
||||
setflag FLAG_SYS_CYCLING_ROAD
|
||||
setvar VAR_TEMP_1, 1
|
||||
releaseall
|
||||
end
|
||||
|
||||
Route110_SeasideCyclingRoadNorthEntrance_EventScript_OnMachBike::
|
||||
setvar VAR_CYCLING_CHALLENGE_STATE, 1
|
||||
return
|
||||
|
||||
Route110_SeasideCyclingRoadNorthEntrance_EventScript_NoBike::
|
||||
msgbox Route110_SeasideCyclingRoadNorthEntrance_Text_TooDangerousToWalk, MSGBOX_DEFAULT
|
||||
closemessage
|
||||
@ -31,6 +46,7 @@ Route110_SeasideCyclingRoadNorthEntrance_Movement_PushPlayerBackFromCounter:
|
||||
|
||||
Route110_SeasideCyclingRoadNorthEntrance_EventScript_ClearCyclingRoad::
|
||||
lockall
|
||||
setvar VAR_CYCLING_CHALLENGE_STATE, 0
|
||||
clearflag FLAG_SYS_CYCLING_ROAD
|
||||
setvar VAR_TEMP_1, 0
|
||||
releaseall
|
||||
|
||||
@ -34,28 +34,28 @@
|
||||
"y": 5,
|
||||
"elevation": 0,
|
||||
"dest_map": "MAP_ROUTE110",
|
||||
"dest_warp_id": "2"
|
||||
"dest_warp_id": "4"
|
||||
},
|
||||
{
|
||||
"x": 2,
|
||||
"y": 5,
|
||||
"elevation": 0,
|
||||
"dest_map": "MAP_ROUTE110",
|
||||
"dest_warp_id": "2"
|
||||
"dest_warp_id": "4"
|
||||
},
|
||||
{
|
||||
"x": 12,
|
||||
"y": 5,
|
||||
"elevation": 0,
|
||||
"dest_map": "MAP_ROUTE110",
|
||||
"dest_warp_id": "3"
|
||||
"dest_warp_id": "5"
|
||||
},
|
||||
{
|
||||
"x": 13,
|
||||
"y": 5,
|
||||
"elevation": 0,
|
||||
"dest_map": "MAP_ROUTE110",
|
||||
"dest_warp_id": "3"
|
||||
"dest_warp_id": "5"
|
||||
}
|
||||
],
|
||||
"coord_events": [
|
||||
|
||||
@ -1,16 +1,6 @@
|
||||
Route110_SeasideCyclingRoadSouthEntrance_MapScripts::
|
||||
map_script MAP_SCRIPT_ON_TRANSITION, Route110_SeasideCyclingRoadSouthEntrance_OnTransition
|
||||
.byte 0
|
||||
|
||||
Route110_SeasideCyclingRoadSouthEntrance_OnTransition:
|
||||
call_if_eq VAR_CYCLING_CHALLENGE_STATE, 3, Route110_SeasideCyclingRoadSouthEntrance_EventScript_RestartChallenge
|
||||
call_if_eq VAR_CYCLING_CHALLENGE_STATE, 2, Route110_SeasideCyclingRoadSouthEntrance_EventScript_RestartChallenge
|
||||
end
|
||||
|
||||
Route110_SeasideCyclingRoadSouthEntrance_EventScript_RestartChallenge::
|
||||
setvar VAR_CYCLING_CHALLENGE_STATE, 1
|
||||
return
|
||||
|
||||
Route110_SeasideCyclingRoadSouthEntrance_EventScript_Clerk::
|
||||
lock
|
||||
faceplayer
|
||||
@ -21,17 +11,12 @@ Route110_SeasideCyclingRoadSouthEntrance_EventScript_Clerk::
|
||||
Route110_SeasideCyclingRoadSouthEntrance_EventScript_BikeCheck::
|
||||
lockall
|
||||
specialvar VAR_RESULT, GetPlayerAvatarBike
|
||||
call_if_eq VAR_RESULT, 2, Route110_SeasideCyclingRoadSouthEntrance_EventScript_OnMachBike
|
||||
goto_if_eq VAR_RESULT, 0, Route110_SeasideCyclingRoadSouthEntrance_EventScript_NoBike
|
||||
setflag FLAG_SYS_CYCLING_ROAD
|
||||
setvar VAR_TEMP_1, 1
|
||||
releaseall
|
||||
end
|
||||
|
||||
Route110_SeasideCyclingRoadSouthEntrance_EventScript_OnMachBike::
|
||||
setvar VAR_CYCLING_CHALLENGE_STATE, 1
|
||||
return
|
||||
|
||||
Route110_SeasideCyclingRoadSouthEntrance_EventScript_NoBike::
|
||||
msgbox Route110_SeasideCyclingRoadSouthEntrance_Text_TooDangerousToWalk, MSGBOX_DEFAULT
|
||||
closemessage
|
||||
@ -46,7 +31,6 @@ Route110_SeasideCyclingRoadSouthEntrance_Movement_PushPlayerBackFromCounter:
|
||||
|
||||
Route110_SeasideCyclingRoadSouthEntrance_EventScript_ClearCyclingRoad::
|
||||
lockall
|
||||
setvar VAR_CYCLING_CHALLENGE_STATE, 0
|
||||
clearflag FLAG_SYS_CYCLING_ROAD
|
||||
setvar VAR_TEMP_1, 0
|
||||
releaseall
|
||||
|
||||
@ -604,8 +604,8 @@
|
||||
"Route110_TrickHousePuzzle6",
|
||||
"Route110_TrickHousePuzzle7",
|
||||
"Route110_TrickHousePuzzle8",
|
||||
"Route110_SeasideCyclingRoadNorthEntrance",
|
||||
"Route110_SeasideCyclingRoadSouthEntrance"
|
||||
"Route110_SeasideCyclingRoadSouthEntrance",
|
||||
"Route110_SeasideCyclingRoadNorthEntrance"
|
||||
],
|
||||
"gMapGroup_IndoorRoute113": [
|
||||
"Route113_GlassWorkshop"
|
||||
|
||||
21
dev_scripts/gba_gfx/delete_files_of_same_name.py
Normal file
@ -0,0 +1,21 @@
|
||||
import glob
|
||||
import re
|
||||
import json
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
# THIS IS A TEMPORARY SCRIPT MADE TO DELETE FILES WITH THE "footprint.png" NAME
|
||||
# FROM THE "graphics/pokemon_old" folder, AS MOST OF THEM ALREADY EXISTED IN "graphics/pokemon".
|
||||
#
|
||||
# I'M SAVING IT HERE IN CASE IT'S NEEDED SOMEWHERE IN THE FUTURE, THOUGH TWEAKING MIGHT BE NEEDED.
|
||||
# - AsparagusEduardo
|
||||
|
||||
def rename_files(dir, filename):
|
||||
for root, dirs, files in os.walk(dir):
|
||||
for name in files:
|
||||
if name.endswith(filename):
|
||||
fullName = os.path.join(root, name)
|
||||
print(fullName + " deleted.")
|
||||
os.remove(fullName)
|
||||
|
||||
rename_files("graphics/pokemon_old", 'footprint.png')
|
||||
22
dev_scripts/gba_gfx/rename_files_of_same_name.py
Normal file
@ -0,0 +1,22 @@
|
||||
import glob
|
||||
import re
|
||||
import json
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
def rename_files(dirOld, dirNew, old, new):
|
||||
for root, dirs, files in os.walk(dirOld):
|
||||
for name in files:
|
||||
if name.endswith(old):
|
||||
originalName = os.path.join(root, name)
|
||||
newName = originalName.replace(old, new)
|
||||
newName = newName.replace(dirOld, dirNew)
|
||||
print(originalName + " -> " + newName)
|
||||
os.rename(originalName, newName)
|
||||
|
||||
rename_files("graphics/pokemon_old", "graphics/pokemon", 'anim_front.png', "anim_front_gba.png")
|
||||
rename_files("graphics/pokemon_old", "graphics/pokemon", 'normal.pal', "normal_gba.pal")
|
||||
rename_files("graphics/pokemon_old", "graphics/pokemon", 'shiny.pal', "shiny_gba.pal")
|
||||
rename_files("graphics/pokemon_old", "graphics/pokemon", 'back.png', "back_gba.png")
|
||||
rename_files("graphics/pokemon_old", "graphics/pokemon", 'icon.png', "icon_gba.png")
|
||||
rename_files("graphics/pokemon_old", "graphics/pokemon", 'footprint.png', "footprint_gba.png")
|
||||
BIN
graphics/pokemon/abra/anim_front_gba.png
Normal file
|
After Width: | Height: | Size: 698 B |
BIN
graphics/pokemon/abra/back_gba.png
Normal file
|
After Width: | Height: | Size: 616 B |
BIN
graphics/pokemon/abra/icon_gba.png
Normal file
|
After Width: | Height: | Size: 327 B |
19
graphics/pokemon/abra/normal_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
246 246 246
|
||||
255 0 255
|
||||
255 0 255
|
||||
255 0 255
|
||||
255 0 255
|
||||
213 180 82
|
||||
172 131 41
|
||||
148 106 16
|
||||
98 49 0
|
||||
255 0 255
|
||||
255 0 255
|
||||
255 255 123
|
||||
255 238 41
|
||||
213 180 0
|
||||
139 98 0
|
||||
16 16 16
|
||||
19
graphics/pokemon/abra/shiny_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
246 246 246
|
||||
255 0 255
|
||||
255 0 255
|
||||
255 0 255
|
||||
255 0 255
|
||||
205 180 180
|
||||
172 148 148
|
||||
148 115 123
|
||||
106 49 123
|
||||
255 0 255
|
||||
255 0 255
|
||||
255 255 222
|
||||
255 255 115
|
||||
246 180 41
|
||||
164 82 0
|
||||
16 16 16
|
||||
BIN
graphics/pokemon/absol/anim_front_gba.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
graphics/pokemon/absol/back_gba.png
Normal file
|
After Width: | Height: | Size: 673 B |
BIN
graphics/pokemon/absol/icon_gba.png
Normal file
|
After Width: | Height: | Size: 371 B |
19
graphics/pokemon/absol/normal_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
123 156 180
|
||||
255 255 255
|
||||
222 222 238
|
||||
197 197 213
|
||||
148 148 172
|
||||
255 123 115
|
||||
205 41 32
|
||||
123 41 49
|
||||
172 172 205
|
||||
131 131 172
|
||||
90 90 131
|
||||
41 57 57
|
||||
148 164 164
|
||||
115 131 131
|
||||
82 98 98
|
||||
0 0 0
|
||||
19
graphics/pokemon/absol/shiny_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
123 156 180
|
||||
255 255 255
|
||||
238 222 230
|
||||
222 189 213
|
||||
197 156 189
|
||||
49 180 255
|
||||
0 115 189
|
||||
123 41 49
|
||||
172 172 205
|
||||
131 131 172
|
||||
90 90 131
|
||||
41 57 57
|
||||
205 115 98
|
||||
172 82 65
|
||||
131 41 24
|
||||
0 0 0
|
||||
BIN
graphics/pokemon/aerodactyl/anim_front_gba.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
graphics/pokemon/aerodactyl/back_gba.png
Normal file
|
After Width: | Height: | Size: 602 B |
BIN
graphics/pokemon/aerodactyl/icon_gba.png
Normal file
|
After Width: | Height: | Size: 369 B |
19
graphics/pokemon/aerodactyl/normal_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
213 213 189
|
||||
255 0 255
|
||||
255 0 255
|
||||
255 0 255
|
||||
197 139 205
|
||||
148 98 180
|
||||
115 65 148
|
||||
65 16 98
|
||||
222 98 98
|
||||
139 49 49
|
||||
16 16 16
|
||||
238 246 255
|
||||
205 213 222
|
||||
148 172 180
|
||||
49 82 90
|
||||
255 255 255
|
||||
19
graphics/pokemon/aerodactyl/shiny_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
213 213 189
|
||||
255 0 255
|
||||
255 0 255
|
||||
255 0 255
|
||||
98 148 255
|
||||
65 115 230
|
||||
16 65 180
|
||||
24 24 106
|
||||
222 98 98
|
||||
139 49 49
|
||||
16 16 16
|
||||
255 222 255
|
||||
238 180 230
|
||||
180 123 180
|
||||
123 57 131
|
||||
255 255 255
|
||||
BIN
graphics/pokemon/aggron/anim_front_gba.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
graphics/pokemon/aggron/back_gba.png
Normal file
|
After Width: | Height: | Size: 860 B |
BIN
graphics/pokemon/aggron/icon_gba.png
Normal file
|
After Width: | Height: | Size: 367 B |
19
graphics/pokemon/aggron/normal_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
148 172 156
|
||||
74 74 65
|
||||
106 106 106
|
||||
139 139 139
|
||||
172 172 172
|
||||
57 57 65
|
||||
123 106 106
|
||||
156 139 139
|
||||
189 172 172
|
||||
222 205 205
|
||||
255 255 255
|
||||
172 57 74
|
||||
222 106 106
|
||||
255 131 131
|
||||
106 189 255
|
||||
0 0 0
|
||||
19
graphics/pokemon/aggron/shiny_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
148 172 156
|
||||
32 90 90
|
||||
65 123 115
|
||||
90 156 148
|
||||
148 197 205
|
||||
74 41 24
|
||||
123 123 90
|
||||
156 156 123
|
||||
189 189 156
|
||||
222 222 197
|
||||
255 255 255
|
||||
172 57 74
|
||||
222 106 106
|
||||
255 131 131
|
||||
255 123 82
|
||||
0 0 0
|
||||
BIN
graphics/pokemon/aipom/anim_front_gba.png
Normal file
|
After Width: | Height: | Size: 924 B |
BIN
graphics/pokemon/aipom/back_gba.png
Normal file
|
After Width: | Height: | Size: 592 B |
BIN
graphics/pokemon/aipom/icon_gba.png
Normal file
|
After Width: | Height: | Size: 399 B |
19
graphics/pokemon/aipom/normal_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
205 205 172
|
||||
255 255 255
|
||||
213 131 255
|
||||
180 98 230
|
||||
139 57 180
|
||||
82 32 106
|
||||
255 246 197
|
||||
255 238 164
|
||||
238 197 90
|
||||
197 156 82
|
||||
139 106 65
|
||||
255 0 255
|
||||
213 213 213
|
||||
123 123 123
|
||||
90 90 90
|
||||
0 0 0
|
||||
19
graphics/pokemon/aipom/shiny_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
205 205 172
|
||||
255 255 255
|
||||
255 131 164
|
||||
230 98 139
|
||||
189 57 106
|
||||
115 32 65
|
||||
255 238 230
|
||||
255 222 213
|
||||
238 189 180
|
||||
222 123 131
|
||||
189 82 90
|
||||
255 0 255
|
||||
213 213 213
|
||||
123 123 123
|
||||
90 90 90
|
||||
16 16 16
|
||||
BIN
graphics/pokemon/alakazam/anim_front_gba.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
graphics/pokemon/alakazam/back_gba.png
Normal file
|
After Width: | Height: | Size: 864 B |
BIN
graphics/pokemon/alakazam/icon_gba.png
Normal file
|
After Width: | Height: | Size: 401 B |
19
graphics/pokemon/alakazam/normal_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
230 230 230
|
||||
255 255 255
|
||||
222 222 222
|
||||
180 180 180
|
||||
90 90 90
|
||||
213 180 82
|
||||
172 131 41
|
||||
139 98 16
|
||||
98 49 0
|
||||
255 0 255
|
||||
255 0 255
|
||||
255 255 123
|
||||
255 238 41
|
||||
213 180 0
|
||||
139 98 0
|
||||
16 16 16
|
||||
19
graphics/pokemon/alakazam/shiny_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
230 230 230
|
||||
255 255 255
|
||||
222 222 222
|
||||
180 180 180
|
||||
90 90 90
|
||||
230 123 189
|
||||
189 82 148
|
||||
131 41 106
|
||||
82 0 41
|
||||
255 0 255
|
||||
255 0 255
|
||||
255 205 74
|
||||
213 172 0
|
||||
172 115 0
|
||||
123 32 0
|
||||
16 16 16
|
||||
BIN
graphics/pokemon/altaria/anim_front_gba.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
graphics/pokemon/altaria/back_gba.png
Normal file
|
After Width: | Height: | Size: 685 B |
BIN
graphics/pokemon/altaria/icon_gba.png
Normal file
|
After Width: | Height: | Size: 419 B |
19
graphics/pokemon/altaria/normal_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
115 205 139
|
||||
255 255 255
|
||||
131 131 148
|
||||
197 197 213
|
||||
255 164 131
|
||||
255 98 65
|
||||
131 32 8
|
||||
172 213 255
|
||||
115 180 238
|
||||
98 139 197
|
||||
65 106 156
|
||||
238 246 255
|
||||
222 222 238
|
||||
172 180 197
|
||||
41 57 90
|
||||
0 0 0
|
||||
19
graphics/pokemon/altaria/shiny_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
115 205 139
|
||||
255 255 255
|
||||
131 131 148
|
||||
197 197 213
|
||||
255 164 131
|
||||
255 98 65
|
||||
131 32 8
|
||||
255 238 131
|
||||
255 205 98
|
||||
222 172 65
|
||||
156 106 0
|
||||
238 246 255
|
||||
222 222 238
|
||||
172 180 197
|
||||
123 74 0
|
||||
0 0 0
|
||||
BIN
graphics/pokemon/ampharos/anim_front_gba.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
graphics/pokemon/ampharos/back_gba.png
Normal file
|
After Width: | Height: | Size: 714 B |
BIN
graphics/pokemon/ampharos/icon_gba.png
Normal file
|
After Width: | Height: | Size: 430 B |
19
graphics/pokemon/ampharos/normal_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
205 205 172
|
||||
255 255 255
|
||||
255 238 74
|
||||
255 197 16
|
||||
213 148 0
|
||||
148 74 0
|
||||
255 0 255
|
||||
230 230 230
|
||||
172 172 172
|
||||
98 106 106
|
||||
16 16 16
|
||||
255 98 0
|
||||
197 65 0
|
||||
139 32 0
|
||||
90 0 0
|
||||
255 0 255
|
||||
19
graphics/pokemon/ampharos/shiny_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
205 205 172
|
||||
255 255 255
|
||||
246 180 213
|
||||
213 148 180
|
||||
189 115 156
|
||||
139 82 106
|
||||
255 0 255
|
||||
230 230 230
|
||||
172 172 172
|
||||
98 106 106
|
||||
16 16 16
|
||||
131 205 246
|
||||
65 106 205
|
||||
32 65 156
|
||||
49 74 139
|
||||
255 0 255
|
||||
BIN
graphics/pokemon/anorith/anim_front_gba.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
graphics/pokemon/anorith/back_gba.png
Normal file
|
After Width: | Height: | Size: 445 B |
BIN
graphics/pokemon/anorith/icon_gba.png
Normal file
|
After Width: | Height: | Size: 377 B |
19
graphics/pokemon/anorith/normal_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
205 205 172
|
||||
255 255 255
|
||||
172 205 172
|
||||
139 172 139
|
||||
115 139 115
|
||||
90 115 90
|
||||
246 238 197
|
||||
230 205 148
|
||||
197 164 98
|
||||
148 82 74
|
||||
255 123 82
|
||||
222 82 32
|
||||
222 222 222
|
||||
180 180 189
|
||||
106 106 123
|
||||
0 0 0
|
||||
19
graphics/pokemon/anorith/shiny_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
205 205 172
|
||||
255 255 255
|
||||
255 213 172
|
||||
230 180 139
|
||||
197 148 106
|
||||
164 115 74
|
||||
246 238 197
|
||||
230 205 148
|
||||
197 164 98
|
||||
131 90 32
|
||||
255 82 74
|
||||
222 82 32
|
||||
222 222 222
|
||||
180 180 189
|
||||
106 106 123
|
||||
41 41 57
|
||||
BIN
graphics/pokemon/arbok/anim_front_gba.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
graphics/pokemon/arbok/back_gba.png
Normal file
|
After Width: | Height: | Size: 509 B |
BIN
graphics/pokemon/arbok/icon_gba.png
Normal file
|
After Width: | Height: | Size: 373 B |
19
graphics/pokemon/arbok/normal_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
213 213 180
|
||||
255 255 74
|
||||
238 222 24
|
||||
189 172 16
|
||||
255 172 131
|
||||
246 115 74
|
||||
197 65 24
|
||||
156 16 0
|
||||
16 16 16
|
||||
222 164 197
|
||||
189 115 164
|
||||
156 74 131
|
||||
106 32 90
|
||||
255 0 255
|
||||
205 205 205
|
||||
255 255 255
|
||||
19
graphics/pokemon/arbok/shiny_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
213 213 180
|
||||
255 255 74
|
||||
238 222 24
|
||||
189 172 16
|
||||
180 197 230
|
||||
148 164 197
|
||||
106 123 156
|
||||
49 65 98
|
||||
16 16 16
|
||||
222 180 65
|
||||
180 139 24
|
||||
139 98 24
|
||||
98 57 0
|
||||
255 0 255
|
||||
205 205 205
|
||||
255 255 255
|
||||
BIN
graphics/pokemon/arcanine/anim_front_gba.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
graphics/pokemon/arcanine/back_gba.png
Normal file
|
After Width: | Height: | Size: 790 B |
BIN
graphics/pokemon/arcanine/icon_gba.png
Normal file
|
After Width: | Height: | Size: 445 B |
19
graphics/pokemon/arcanine/normal_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
230 230 230
|
||||
255 255 246
|
||||
222 222 213
|
||||
90 90 90
|
||||
255 98 65
|
||||
197 49 32
|
||||
82 16 16
|
||||
255 246 172
|
||||
255 246 148
|
||||
246 189 106
|
||||
172 98 32
|
||||
255 139 82
|
||||
238 115 49
|
||||
197 82 49
|
||||
98 16 0
|
||||
16 16 16
|
||||
19
graphics/pokemon/arcanine/shiny_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
230 230 230
|
||||
255 255 246
|
||||
222 222 213
|
||||
90 90 90
|
||||
255 98 65
|
||||
197 49 32
|
||||
82 16 16
|
||||
255 246 238
|
||||
255 238 197
|
||||
230 197 156
|
||||
148 115 82
|
||||
255 230 115
|
||||
222 189 74
|
||||
180 148 32
|
||||
115 82 0
|
||||
16 16 16
|
||||
BIN
graphics/pokemon/ariados/anim_front_gba.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
graphics/pokemon/ariados/back_gba.png
Normal file
|
After Width: | Height: | Size: 706 B |
BIN
graphics/pokemon/ariados/icon_gba.png
Normal file
|
After Width: | Height: | Size: 430 B |
19
graphics/pokemon/ariados/normal_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
205 205 172
|
||||
255 255 255
|
||||
255 172 57
|
||||
255 123 41
|
||||
205 82 0
|
||||
139 32 0
|
||||
74 0 0
|
||||
255 238 90
|
||||
222 180 74
|
||||
148 115 49
|
||||
189 148 255
|
||||
148 90 238
|
||||
106 49 172
|
||||
189 189 189
|
||||
106 106 106
|
||||
16 16 16
|
||||
19
graphics/pokemon/ariados/shiny_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
205 205 172
|
||||
255 255 255
|
||||
238 139 189
|
||||
205 106 164
|
||||
139 65 123
|
||||
115 16 82
|
||||
82 8 49
|
||||
255 238 90
|
||||
222 180 74
|
||||
148 115 49
|
||||
148 213 255
|
||||
98 164 230
|
||||
32 82 180
|
||||
189 189 189
|
||||
106 106 106
|
||||
16 16 16
|
||||
BIN
graphics/pokemon/armaldo/anim_front_gba.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
graphics/pokemon/armaldo/back_gba.png
Normal file
|
After Width: | Height: | Size: 898 B |
BIN
graphics/pokemon/armaldo/icon_gba.png
Normal file
|
After Width: | Height: | Size: 383 B |
19
graphics/pokemon/armaldo/normal_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
205 205 172
|
||||
255 255 255
|
||||
189 189 222
|
||||
139 139 189
|
||||
115 115 172
|
||||
90 90 139
|
||||
246 238 197
|
||||
255 222 106
|
||||
222 180 98
|
||||
57 65 82
|
||||
255 98 74
|
||||
189 57 0
|
||||
222 222 222
|
||||
180 180 189
|
||||
106 106 123
|
||||
0 0 0
|
||||
19
graphics/pokemon/armaldo/shiny_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
205 205 172
|
||||
255 255 255
|
||||
246 197 189
|
||||
213 164 156
|
||||
180 131 123
|
||||
148 98 90
|
||||
246 238 197
|
||||
255 222 106
|
||||
222 180 98
|
||||
115 65 57
|
||||
255 98 74
|
||||
189 57 0
|
||||
222 222 222
|
||||
222 98 82
|
||||
180 57 41
|
||||
0 0 0
|
||||
BIN
graphics/pokemon/aron/anim_front_gba.png
Normal file
|
After Width: | Height: | Size: 568 B |
BIN
graphics/pokemon/aron/back_gba.png
Normal file
|
After Width: | Height: | Size: 437 B |
BIN
graphics/pokemon/aron/icon_gba.png
Normal file
|
After Width: | Height: | Size: 262 B |
19
graphics/pokemon/aron/normal_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
148 172 156
|
||||
74 74 65
|
||||
106 106 106
|
||||
139 139 139
|
||||
172 172 172
|
||||
57 57 65
|
||||
123 106 106
|
||||
156 139 139
|
||||
189 172 172
|
||||
222 205 205
|
||||
255 255 255
|
||||
172 57 74
|
||||
222 106 106
|
||||
255 131 131
|
||||
106 189 255
|
||||
0 0 0
|
||||
19
graphics/pokemon/aron/shiny_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
148 172 156
|
||||
32 90 90
|
||||
65 123 115
|
||||
90 156 148
|
||||
148 197 205
|
||||
74 41 24
|
||||
123 123 90
|
||||
156 156 123
|
||||
189 189 156
|
||||
222 222 197
|
||||
255 255 255
|
||||
172 57 74
|
||||
222 106 106
|
||||
255 131 131
|
||||
255 123 82
|
||||
0 0 0
|
||||
BIN
graphics/pokemon/articuno/anim_front_gba.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
graphics/pokemon/articuno/back_gba.png
Normal file
|
After Width: | Height: | Size: 504 B |
BIN
graphics/pokemon/articuno/icon_gba.png
Normal file
|
After Width: | Height: | Size: 384 B |
19
graphics/pokemon/articuno/normal_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
213 213 189
|
||||
213 238 255
|
||||
172 213 255
|
||||
139 180 230
|
||||
98 148 205
|
||||
57 106 164
|
||||
65 65 90
|
||||
255 0 255
|
||||
255 0 255
|
||||
139 164 213
|
||||
90 115 164
|
||||
74 74 106
|
||||
189 41 57
|
||||
230 98 115
|
||||
16 16 16
|
||||
255 255 255
|
||||
19
graphics/pokemon/articuno/shiny_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
213 213 189
|
||||
255 255 255
|
||||
238 246 255
|
||||
205 230 255
|
||||
156 189 246
|
||||
98 131 238
|
||||
57 74 148
|
||||
255 0 255
|
||||
255 0 255
|
||||
139 164 213
|
||||
90 115 164
|
||||
74 74 106
|
||||
189 41 57
|
||||
230 98 115
|
||||
16 16 16
|
||||
255 255 255
|
||||
BIN
graphics/pokemon/azumarill/anim_front_gba.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
graphics/pokemon/azumarill/back_gba.png
Normal file
|
After Width: | Height: | Size: 541 B |
BIN
graphics/pokemon/azumarill/icon_gba.png
Normal file
|
After Width: | Height: | Size: 445 B |
19
graphics/pokemon/azumarill/normal_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
205 205 172
|
||||
255 255 255
|
||||
205 205 205
|
||||
156 156 156
|
||||
106 106 106
|
||||
16 16 16
|
||||
131 205 255
|
||||
90 172 230
|
||||
49 131 197
|
||||
74 74 131
|
||||
255 0 255
|
||||
255 0 255
|
||||
230 82 0
|
||||
197 41 0
|
||||
123 0 0
|
||||
255 0 255
|
||||
19
graphics/pokemon/azumarill/shiny_gba.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
205 205 172
|
||||
255 255 255
|
||||
205 205 205
|
||||
156 156 156
|
||||
106 106 106
|
||||
16 16 16
|
||||
255 238 82
|
||||
255 213 57
|
||||
213 172 24
|
||||
131 90 41
|
||||
255 0 255
|
||||
255 0 255
|
||||
238 74 65
|
||||
197 24 57
|
||||
123 0 0
|
||||
255 0 255
|
||||
BIN
graphics/pokemon/azurill/anim_front_gba.png
Normal file
|
After Width: | Height: | Size: 1007 B |
BIN
graphics/pokemon/azurill/back_gba.png
Normal file
|
After Width: | Height: | Size: 601 B |
BIN
graphics/pokemon/azurill/icon_gba.png
Normal file
|
After Width: | Height: | Size: 342 B |