Merge branch '_RHH/upcoming' into _RHH/pr/upcoming/lighting-expansion-v2
@ -23,20 +23,15 @@ body:
|
||||
label: Version
|
||||
description: What version of pokeemerald-expansion are you using as a base?
|
||||
options:
|
||||
- 1.9.3 (Latest release)
|
||||
- 1.10.0 (Latest release)
|
||||
- master (default, unreleased bugfixes)
|
||||
- upcoming (Edge)
|
||||
- 1.9.4
|
||||
- 1.9.3
|
||||
- 1.9.2
|
||||
- 1.9.1
|
||||
- 1.9.0
|
||||
- 1.8.6
|
||||
- 1.8.5
|
||||
- 1.8.4
|
||||
- 1.8.3
|
||||
- 1.8.2
|
||||
- 1.8.1
|
||||
- 1.8.0
|
||||
- pre-1.8.0
|
||||
- pre-1.9.0
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
|
||||
13
.github/ISSUE_TEMPLATE/02_battle_ai_issues.yaml
vendored
@ -23,20 +23,15 @@ body:
|
||||
label: Version
|
||||
description: What version of pokeemerald-expansion are you using as a base?
|
||||
options:
|
||||
- 1.9.3 (Latest release)
|
||||
- 1.10.0 (Latest release)
|
||||
- master (default, unreleased bugfixes)
|
||||
- upcoming (Edge)
|
||||
- 1.9.4
|
||||
- 1.9.3
|
||||
- 1.9.2
|
||||
- 1.9.1
|
||||
- 1.9.0
|
||||
- 1.8.6
|
||||
- 1.8.5
|
||||
- 1.8.4
|
||||
- 1.8.3
|
||||
- 1.8.2
|
||||
- 1.8.1
|
||||
- 1.8.0
|
||||
- pre-1.8.0
|
||||
- pre-1.9.0
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
|
||||
13
.github/ISSUE_TEMPLATE/04_other_errors.yaml
vendored
@ -23,20 +23,15 @@ body:
|
||||
label: Version
|
||||
description: What version of pokeemerald-expansion are you using as a base?
|
||||
options:
|
||||
- 1.9.3 (Latest release)
|
||||
- 1.10.0 (Latest release)
|
||||
- master (default, unreleased bugfixes)
|
||||
- upcoming (Edge)
|
||||
- 1.9.4
|
||||
- 1.9.3
|
||||
- 1.9.2
|
||||
- 1.9.1
|
||||
- 1.9.0
|
||||
- 1.8.6
|
||||
- 1.8.5
|
||||
- 1.8.4
|
||||
- 1.8.3
|
||||
- 1.8.2
|
||||
- 1.8.1
|
||||
- 1.8.0
|
||||
- pre-1.8.0
|
||||
- pre-1.9.0
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
|
||||
14
.github/pull_request_template.md
vendored
@ -1,5 +1,9 @@
|
||||
<!--- Provide a general summary of your changes in the Title above -->
|
||||
|
||||
<!--- Before submitting, please make sure your pull request meets the scope guidelines. If unsure, please open a thread in #pr-discussions.-->
|
||||
<!--- Scope Guidelines: https://github.com/rh-hideout/pokeemerald-expansion/blob/master/docs/scope.md -->
|
||||
<!--- #pr-discussions: https://discord.com/channels/419213663107416084/1102784418369785948 -->
|
||||
|
||||
## Description
|
||||
<!--- Describe your changes in detail -->
|
||||
|
||||
@ -13,13 +17,19 @@
|
||||
|
||||
## **People who collaborated with me in this PR**
|
||||
<!-- Please credit everyone else that contributed to this PR, be it code and/or assets. -->
|
||||
<!-- Use their GitHub tag if they have one. -->
|
||||
<!-- Use their GitHub tag if they have one (or add "@/" at the start if they don't). Be sure to start the line using @ so the automatic changelog can properly detect the collaborators. -->
|
||||
<!-- Eg.: "@Lunos for sprites, @/Masuda for support" -->
|
||||
<!-- If it doesn't apply, feel free to remove this section. -->
|
||||
|
||||
## Feature(s) this PR does NOT handle:
|
||||
<!-- If your PR contains any unfinished features that are not considered merge-blocking, please list them here for clarity so no one can forget. -->
|
||||
<!-- If it doesn't apply, feel free to remove this section. -->
|
||||
|
||||
## Things to note in the release changelog:
|
||||
<!-- We use an automated system to generate our changelogs, so if there's something of note that our end users should know in regards to this change besides the title of this PR, they should be added here. -->
|
||||
<!-- *MUST* be structured as bullet points. -->
|
||||
<!-- 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
|
||||
|
||||
@ -1,6 +1,11 @@
|
||||
# Pokeemerald-Expansion Changelogs
|
||||
|
||||
## 1.10.x
|
||||
- **[Version 1.10.0](docs/changelogs/1.10.x/1.10.0.md) - ✨ Feature Release**
|
||||
|
||||
## 1.9.x
|
||||
- **[Version 1.9.4](docs/changelogs/1.9.x/1.9.4.md) - 🧹 Bugfix Release**
|
||||
- **[Version 1.9.3](docs/changelogs/1.9.x/1.9.3.md) - 🧹 Bugfix Release**
|
||||
- **[Version 1.9.2](docs/changelogs/1.9.x/1.9.2.md) - 🧹 Bugfix Release**
|
||||
- **[Version 1.9.1](docs/changelogs/1.9.x/1.9.1.md) - 🧹 Bugfix Release**
|
||||
- **[Version 1.9.0](docs/changelogs/1.9.x/1.9.0.md) - ✨ Feature Release**
|
||||
|
||||
@ -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).
|
||||
|
||||
668
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,177 @@ 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)
|
||||
@: # Silence the "Nothing to be done for `generated'" message, which some people were confusing for an error.
|
||||
|
||||
|
||||
%.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
|
||||
|
||||
$(TEST_BUILDDIR)/%.o: $(TEST_SUBDIR)/%.c
|
||||
@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 $@ -
|
||||
|
||||
$(TEST_BUILDDIR)/%.d: $(TEST_SUBDIR)/%.c
|
||||
$(SCANINC) -M $@ $(INCLUDE_SCANINC_ARGS) -I tools/agbcc/include $<
|
||||
|
||||
ifneq ($(NODEP),1)
|
||||
-include $(addprefix $(OBJ_DIR)/,$(TEST_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
|
||||
|
||||
# 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
|
||||
LDFLAGS = -Map ../../$(MAP)
|
||||
$(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' > $@
|
||||
|
||||
13
README.md
@ -6,12 +6,16 @@
|
||||
|
||||
pokeemerald-expansion is a decomp hack base project based off pret's [pokeemerald](https://github.com/pret/pokeemerald) decompilation project. It's recommended that any new projects that plan on using it, to clone this repository instead of pret's vanilla repository, as we regurlarly incorporate pret's documentation changes. This is ***NOT*** a standalone romhack, and as such, most features will be unavailable and/or unbalanced if played as is.
|
||||
|
||||
## Using pokeemerald-expansion
|
||||
|
||||
If you use pokeemerald-expansion in your hack, please add RHH (Rom Hacking Hideout) to your credits list. Optionally, you can list the version used, so it can help players know what features to expect.
|
||||
You can phrase it as the following:
|
||||
```
|
||||
Based off RHH's pokeemerald-expansion 1.9.3 https://github.com/rh-hideout/pokeemerald-expansion/
|
||||
Based off RHH's pokeemerald-expansion 1.10.0 https://github.com/rh-hideout/pokeemerald-expansion/
|
||||
```
|
||||
|
||||
Please follow the instructions in `INSTALL.md` to get pokeemerald-expansion set up on your machine.
|
||||
|
||||
## What features are included?
|
||||
- ***IMPORTANT*❗❗ Read through these to learn what features you can toggle**:
|
||||
- [Battle configurations](https://github.com/rh-hideout/pokeemerald-expansion/blob/master/include/config/battle.h)
|
||||
@ -119,11 +123,6 @@ Based off RHH's pokeemerald-expansion 1.9.3 https://github.com/rh-hideout/pokeem
|
||||
- ***Gen 6+ Exp. Share*** (configurable)
|
||||
- Berserk Gene
|
||||
- Most battle items from Gen 4+
|
||||
- Existing item data but missing effects:
|
||||
- Gimmighoul Coin
|
||||
- Booster Energy
|
||||
- Tera Shards
|
||||
- Tera Orb
|
||||
- ***Feature branches incorporated (with permission):***
|
||||
- [RHH intro credits](https://github.com/Xhyzi/pokeemerald/tree/rhh-intro-credits) by @Xhyzi.
|
||||
- A small signature from all of us to show the collective effort in the project :)
|
||||
@ -178,7 +177,7 @@ With this, you'll get the latest version of pokeemerald-expansion, plus a couple
|
||||
- Check your current version.
|
||||
- You can check in the debug menu's `Utilities -> Expansion Version` option.
|
||||
- If the option is not available, you possibly have version 1.6.2 or older. In that case, please check the [changelogs](CHANGELOG.md) to determine your version based on the features available on your repository.
|
||||
- Once you have your remote set up, run the command `git pull RHH expansion/X.Y.Z`, replacing X, Y and Z with the digits of the respective version you want to update to (eg, to update to 1.9.3, use `git pull RHH expansion/1.9.3`).
|
||||
- Once you have your remote set up, run the command `git pull RHH expansion/X.Y.Z`, replacing X, Y and Z with the digits of the respective version you want to update to (eg, to update to 1.10.0, use `git pull RHH expansion/1.10.0`).
|
||||
- ***Important:*** If you are several versions behind, we recommend updating one minor version at a time, skipping directly to the latest patch version (eg, 1.5.3 -> 1.6.2 -> 1.7.4 and so on)
|
||||
- Alternatively, you can update to unreleased versions of the expansion.
|
||||
- ***master (stable):*** It contains unreleased **bugfixes** that will come in the next patch version. To merge, use `git pull RHH master`.
|
||||
|
||||
@ -356,7 +356,7 @@
|
||||
.byte 0x3a
|
||||
.endm
|
||||
|
||||
.macro healthbar_update battler:req
|
||||
.macro absorbhealthbarupdate battler:req
|
||||
.byte 0x3b
|
||||
.byte \battler
|
||||
.endm
|
||||
@ -798,9 +798,7 @@
|
||||
2:
|
||||
.endm
|
||||
|
||||
.macro setmultihitcounter value:req
|
||||
.byte 0x8d
|
||||
.byte \value
|
||||
.macro unused_0x8d
|
||||
.endm
|
||||
|
||||
.macro initmultihitstring
|
||||
@ -834,7 +832,7 @@
|
||||
.byte 0x94
|
||||
.endm
|
||||
|
||||
.macro unused_95
|
||||
.macro copybidedmg
|
||||
.byte 0x95
|
||||
.endm
|
||||
|
||||
@ -1104,7 +1102,7 @@
|
||||
.byte 0xcc
|
||||
.endm
|
||||
|
||||
.macro cureifburnedparalysedorpoisoned failInstr:req
|
||||
.macro curestatuswithmove failInstr:req
|
||||
.byte 0xcd
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
@ -1232,11 +1230,11 @@
|
||||
.byte 0xe5
|
||||
.endm
|
||||
|
||||
.macro unused3
|
||||
.macro unused_0xE6
|
||||
.byte 0xe6
|
||||
.endm
|
||||
|
||||
.macro unused4
|
||||
.macro unused_0xE7
|
||||
.byte 0xe7
|
||||
.endm
|
||||
|
||||
@ -1669,6 +1667,11 @@
|
||||
callnative BS_DamageToQuarterTargetHP
|
||||
.endm
|
||||
|
||||
.macro jumpifsleepclause jumpInstr:req
|
||||
callnative BS_JumpIfSleepClause
|
||||
.4byte \jumpInstr
|
||||
.endm
|
||||
|
||||
.macro ficklebeamdamagecalculation
|
||||
callnative BS_FickleBeamDamageCalculation
|
||||
.endm
|
||||
@ -1726,6 +1729,15 @@
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
.macro tryhitswitchtarget failInstr:req
|
||||
callnative BS_TryHitSwitchTarget
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
.macro setmagiccoattarget
|
||||
callnative BS_SetMagicCoatTarget
|
||||
.endm
|
||||
|
||||
.macro jumpifcommanderactive jumpInstr:req
|
||||
callnative BS_JumpIfCommanderActive
|
||||
.4byte \jumpInstr
|
||||
@ -1739,15 +1751,45 @@
|
||||
callnative BS_WaitFanfare
|
||||
.endm
|
||||
|
||||
.macro setbeakblast
|
||||
callnative BS_SetBeakBlast
|
||||
.endm
|
||||
|
||||
.macro cantarshotwork failInstr:req
|
||||
callnative BS_CanTarShotWork
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
.macro removeterrain
|
||||
callnative BS_RemoveTerrain
|
||||
.endm
|
||||
|
||||
.macro setmoveresultflags flags:req
|
||||
callnative BS_SetMoveResultFlags
|
||||
.2byte \flags
|
||||
.endm
|
||||
|
||||
.macro clearmoveresultflags flags:req
|
||||
callnative BS_ClearMoveResultFlags
|
||||
.2byte \flags
|
||||
.endm
|
||||
|
||||
.macro jumpifmoveresultflags flags:req failInstr:req
|
||||
callnative BS_JumpIfMoveResultFlags
|
||||
.2byte \flags
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
.macro jumpifcriticalhit failInstr:req
|
||||
callnative BS_JumpIfCriticalHit
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
@ various command changed to more readable macros
|
||||
.macro cancelmultiturnmoves battler:req
|
||||
various \battler, VARIOUS_CANCEL_MULTI_TURN_MOVES
|
||||
.endm
|
||||
|
||||
.macro setmagiccoattarget battler:req
|
||||
various \battler, VARIOUS_SET_MAGIC_COAT_TARGET
|
||||
.endm
|
||||
|
||||
.macro getifcantrunfrombattle battler:req
|
||||
various \battler, VARIOUS_IS_RUNNING_IMPOSSIBLE
|
||||
.endm
|
||||
@ -1965,11 +2007,6 @@
|
||||
various BS_ATTACKER, VARIOUS_SET_ARG_TO_BATTLE_DAMAGE
|
||||
.endm
|
||||
|
||||
.macro tryhitswitchtarget failInstr:req
|
||||
various BS_ATTACKER, VARIOUS_TRY_HIT_SWITCH_TARGET
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
.macro tryautotomize battler:req, failInstr:req
|
||||
various \battler, VARIOUS_TRY_AUTOTOMIZE
|
||||
.4byte \failInstr
|
||||
@ -1993,9 +2030,10 @@
|
||||
.4byte \jumpInstr
|
||||
.endm
|
||||
|
||||
.macro trypsychoshift failInstr:req
|
||||
.macro trypsychoshift failInstr:req sleepClauseFailInstr:req
|
||||
various BS_ATTACKER, VARIOUS_PSYCHO_SHIFT
|
||||
.4byte \failInstr
|
||||
.4byte \sleepClauseFailInstr
|
||||
.endm
|
||||
|
||||
.macro curestatus battler:req
|
||||
@ -2218,10 +2256,6 @@
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
.macro removeterrain
|
||||
various BS_ATTACKER, VARIOUS_REMOVE_TERRAIN
|
||||
.endm
|
||||
|
||||
.macro trytoclearprimalweather
|
||||
various BS_ATTACKER, VARIOUS_TRY_TO_CLEAR_PRIMAL_WEATHER
|
||||
.endm
|
||||
@ -2270,11 +2304,6 @@
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
.macro cantarshotwork battler:req, failInstr:req
|
||||
various \battler, VARIOUS_CAN_TAR_SHOT_WORK
|
||||
.4byte \failInstr
|
||||
.endm
|
||||
|
||||
.macro checkpoltergeist battler:req, failInstr:req
|
||||
various \battler, VARIOUS_CHECK_POLTERGEIST
|
||||
.4byte \failInstr
|
||||
@ -2316,10 +2345,6 @@
|
||||
various \battler, VARIOUS_BATTLER_ITEM_TO_LAST_USED_ITEM
|
||||
.endm
|
||||
|
||||
.macro setbeakblast battler:req
|
||||
various \battler, VARIOUS_SET_BEAK_BLAST
|
||||
.endm
|
||||
|
||||
.macro swapsidestatuses
|
||||
various BS_ATTACKER, VARIOUS_SWAP_SIDE_STATUSES
|
||||
.endm
|
||||
@ -2400,7 +2425,7 @@
|
||||
.endm
|
||||
|
||||
.macro jumpifmovehadnoeffect jumpInstr:req
|
||||
jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_NO_EFFECT, \jumpInstr
|
||||
jumpifmoveresultflags MOVE_RESULT_NO_EFFECT, \jumpInstr
|
||||
.endm
|
||||
|
||||
.macro jumpifside battler:req, side:req, equalJumpInstr:req
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -2340,3 +2340,95 @@
|
||||
.macro hideitemdescription
|
||||
callnative ScriptHideItemDescription
|
||||
.endm
|
||||
|
||||
@ Remove all of specified item from the player's bag and return the number of removed items to VAR_RESULT
|
||||
.macro removeallitem itemId:req
|
||||
callnative ScrCmd_removeallitem
|
||||
.2byte \itemId
|
||||
.endm
|
||||
|
||||
@ Stores the position of the given object in destX and destY. Mode CURRENT_POSITION will take the object's current position. Mode TEMPLATE_POSITION will take the object's template position.
|
||||
.macro getobjectxy localId:req, posType:req, destX:req, destY:req
|
||||
callnative ScrCmd_getobjectxy
|
||||
.2byte \localId
|
||||
.2byte \posType
|
||||
.2byte \destX
|
||||
.2byte \destY
|
||||
.endm
|
||||
|
||||
.macro getobjecttemplatexy localId:req, posType = TEMPLATE_POSITION, destX:req, destY:req
|
||||
callnative ScrCmd_getobjectxy
|
||||
.2byte \localId
|
||||
.2byte \posType
|
||||
.2byte \destX
|
||||
.2byte \destY
|
||||
.endm
|
||||
|
||||
.macro getobjectcurrentxy localId:req, posType = CURRENT_POSITION, destX:req, destY:req
|
||||
callnative ScrCmd_getobjectxy
|
||||
.2byte \localId
|
||||
.2byte \posType
|
||||
.2byte \destX
|
||||
.2byte \destY
|
||||
.endm
|
||||
|
||||
@ Return TRUE to dest if there is an object at the position x and y.
|
||||
.macro checkobjectat x:req, y:req, dest = VAR_RESULT
|
||||
callnative ScrCmd_checkobjectat
|
||||
.2byte \x
|
||||
.2byte \y
|
||||
.2byte \dest
|
||||
.endm
|
||||
|
||||
@ Returns the state of the Pokedex Seen Flag to VAR_RESULT for the Pokemon with speciesId
|
||||
.macro getseenmon species:req
|
||||
callnative Scrcmd_getsetpokedexflag
|
||||
.2byte \species
|
||||
.2byte FLAG_GET_SEEN
|
||||
.endm
|
||||
|
||||
@ Returns the state of the Pokedex Caught Flag to VAR_RESULT for the Pokemon with speciesId
|
||||
.macro getcaughtmon species:req
|
||||
callnative Scrcmd_getsetpokedexflag
|
||||
.2byte \species
|
||||
.2byte FLAG_GET_CAUGHT
|
||||
.endm
|
||||
|
||||
@ Sets the Pokedex Seen Flag for the Pokemon with speciesId
|
||||
.macro setseenmon species:req
|
||||
callnative Scrcmd_getsetpokedexflag
|
||||
.2byte \species
|
||||
.2byte FLAG_SET_SEEN
|
||||
.endm
|
||||
|
||||
@ Sets the Pokedex Caught Flag for the Pokemon with speciesId
|
||||
.macro setcaughtmon species:req
|
||||
callnative Scrcmd_getsetpokedexflag
|
||||
.2byte \species
|
||||
.2byte FLAG_SET_CAUGHT
|
||||
.endm
|
||||
|
||||
@ Check if the Player has speciesId in their party. OPEN_PARTY_SCREEN will have the player select a mon from their party. NO_PARTY_SCREEN will automatically check every mon in the player's party.
|
||||
.macro checkspecies speciesId:req, mode=NO_PARTY_SCREEN
|
||||
.if \mode == OPEN_PARTY_SCREEN
|
||||
special ChoosePartyMon
|
||||
waitstate
|
||||
callnative Scrcmd_checkspecies_choose
|
||||
.2byte \speciesId
|
||||
.else
|
||||
callnative Scrcmd_checkspecies
|
||||
.2byte \speciesId
|
||||
.endif
|
||||
.endm
|
||||
|
||||
.macro checkspecies_choose speciesId:req
|
||||
checkspecies \speciesId, OPEN_PARTY_SCREEN
|
||||
.endm
|
||||
|
||||
@ Gets the facing direction of a given event object and stores it in the variable dest.
|
||||
.macro getobjectfacingdirection localId:req, dest:req
|
||||
callnative Scrcmd_getobjectfacingdirection
|
||||
.2byte \localId
|
||||
.2byte \dest
|
||||
.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)
|
||||
12
charmap.txt
@ -370,7 +370,7 @@ B_ATK_NAME_WITH_PREFIX = FD 0F
|
||||
B_DEF_NAME_WITH_PREFIX = FD 10
|
||||
B_EFF_NAME_WITH_PREFIX = FD 11 @ EFF = short for gEffectBattler
|
||||
@ FD 12 - preiously gActiveBattler with prefix
|
||||
B_SCR_ACTIVE_NAME_WITH_PREFIX = FD 13
|
||||
B_SCR_NAME_WITH_PREFIX = FD 13
|
||||
B_CURRENT_MOVE = FD 14
|
||||
B_LAST_MOVE = FD 15
|
||||
B_LAST_ITEM = FD 16
|
||||
@ -411,8 +411,17 @@ B_ATK_TEAM2 = FD 38
|
||||
B_DEF_NAME = FD 39
|
||||
B_DEF_TEAM1 = FD 3A
|
||||
B_DEF_TEAM2 = FD 3B
|
||||
B_DEF_PARTNER_NAME = FD 3C
|
||||
@ FD 3C - preiously gActiveBattler
|
||||
@ FD 3D - preiously gActiveBattler without Illusion Check
|
||||
B_ATK_NAME_WITH_PREFIX2 = FD 3E
|
||||
B_DEF_NAME_WITH_PREFIX2 = FD 3F
|
||||
B_EFF_NAME_WITH_PREFIX2 = FD 40
|
||||
B_SCR_NAME_WITH_PREFIX2 = FD 41
|
||||
B_TRAINER1_NAME_WITH_CLASS = FD 42
|
||||
B_TRAINER2_NAME_WITH_CLASS = FD 43
|
||||
B_PARTNER_NAME_WITH_CLASS = FD 44
|
||||
B_ATK_TRAINER_NAME_WITH_CLASS = FD 45
|
||||
|
||||
@ indicates the end of a town/city name (before " TOWN" or " CITY")
|
||||
NAME_END = FC 00
|
||||
@ -457,6 +466,7 @@ FONT_SMALL_NARROW = FC 06 08
|
||||
FONT_NARROWER = FC 06 0A
|
||||
FONT_SMALL_NARROWER = FC 06 0B
|
||||
FONT_SHORT_NARROW = FC 06 0C
|
||||
FONT_SHORT_NARROWER = FC 06 0D
|
||||
|
||||
@ colors
|
||||
|
||||
|
||||
@ -934,6 +934,44 @@ gBattleAnimMove_ToxicSpikes::
|
||||
end
|
||||
|
||||
gBattleAnimMove_HeartSwap::
|
||||
loadspritegfx ANIM_TAG_RED_HEART
|
||||
loadspritegfx ANIM_TAG_PINKVIO_ORB
|
||||
loadspritegfx ANIM_TAG_SPARKLE_2
|
||||
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 0, 8, RGB(31, 24, 26)
|
||||
createvisualtask AnimTask_HeartSwap, 3, ANIM_TARGET
|
||||
createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_TARGET, RGB_WHITE, 12, 3, 1
|
||||
loopsewithpan SE_M_TAIL_WHIP, SOUND_PAN_ATTACKER, 10, 8
|
||||
delay 16
|
||||
createvisualtask AnimTask_HeartSwap, 3, ANIM_ATTACKER
|
||||
createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_ATTACKER, RGB_WHITE, 12, 3, 1
|
||||
waitforvisualfinish
|
||||
createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, -15, 0, 0, 0, 32, 60
|
||||
createsprite gGrantingStarsSpriteTemplate, ANIM_TARGET, 2, -15, 0, 0, 0, 32, 60
|
||||
delay 8
|
||||
createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 2, 12, -5, 0, 0, 32, 60
|
||||
createsprite gGrantingStarsSpriteTemplate, ANIM_TARGET, 2, 12, -5, 0, 0, 32, 60
|
||||
delay 4
|
||||
playsewithpan SE_SHINY, SOUND_PAN_ATTACKER
|
||||
createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_ATTACKER, RGB(31, 25, 27), 12, 3, 1
|
||||
createvisualtask AnimTask_ScaleMonAndRestore, 5, -3, -3, 16, ANIM_ATTACKER, 0
|
||||
createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_TARGET, RGB(31, 25, 27), 12, 3, 1
|
||||
createvisualtask AnimTask_ScaleMonAndRestore, 5, -3, -3, 16, ANIM_TARGET, 0
|
||||
createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, 160, -32
|
||||
createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, -256, -40
|
||||
createsprite gRedHeartBurstSpriteTemplate, ANIM_TARGET, 3, 128, -16
|
||||
createvisualtask AnimTask_BlendBattleAnimPal, 10, F_PAL_BG, 3, 8, 0, RGB(31, 24, 26)
|
||||
createsprite gRedHeartCharmSpriteTemplate, ANIM_ATTACKER, 3, 0, 20
|
||||
playsewithpan SE_M_MORNING_SUN, SOUND_PAN_ATTACKER
|
||||
delay 15
|
||||
createsprite gRedHeartCharmSpriteTemplate, ANIM_ATTACKER, 3, -20, 20
|
||||
playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER
|
||||
delay 15
|
||||
createsprite gRedHeartCharmSpriteTemplate, ANIM_ATTACKER, 3, 20, 20
|
||||
playsewithpan SE_M_CHARM, SOUND_PAN_ATTACKER
|
||||
waitforvisualfinish
|
||||
clearmonbg ANIM_ATTACKER
|
||||
clearmonbg ANIM_TARGET
|
||||
blendoff
|
||||
end
|
||||
|
||||
gBattleAnimMove_AquaRing::
|
||||
@ -3628,7 +3666,7 @@ gBattleAnimMove_DarkVoid::
|
||||
loopsewithpan SE_M_CONFUSE_RAY, SOUND_PAN_ATTACKER, 5, 2
|
||||
delay 48
|
||||
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, -768, 21, 0, 112 @Last is duration
|
||||
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_DEF_PARTNER, -768, 21, 0, 112 @Last is duration
|
||||
createsprite gSlideMonToOffsetPartnerSpriteTemplate, ANIM_ATTACKER, 2, ANIM_DEF_PARTNER, -768, 21, 0, 112 @Last is duration
|
||||
delay 64
|
||||
invisible ANIM_TARGET
|
||||
invisible ANIM_DEF_PARTNER
|
||||
@ -3636,7 +3674,7 @@ gBattleAnimMove_DarkVoid::
|
||||
createsprite gDarkVoidPurpleStarsTemplate, ANIM_ATTACKER, 2, 0, 0, ANIM_DEF_PARTNER, 0, 32, 60
|
||||
waitforvisualfinish
|
||||
createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0, 16
|
||||
createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_DEF_PARTNER, 0, 16
|
||||
createsprite gSlideMonToOriginalPosPartnerSpriteTemplate, ANIM_ATTACKER, 2, ANIM_DEF_PARTNER, 0, 16
|
||||
delay 32
|
||||
call UnsetPsychicBg
|
||||
visible ANIM_TARGET
|
||||
@ -7672,6 +7710,17 @@ gBattleAnimMove_NobleRoar::
|
||||
end
|
||||
|
||||
gBattleAnimMove_IonDeluge::
|
||||
loadspritegfx ANIM_TAG_IONS
|
||||
loopsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER, 10, 12
|
||||
createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS_2), 2, 0, 4, RGB_YELLOW
|
||||
waitforvisualfinish
|
||||
createvisualtask AnimTask_CreateIons, 2, 0, 3, 120
|
||||
createvisualtask AnimTask_CreateIons, 2, 0, 3, 120
|
||||
delay 120
|
||||
delay 30
|
||||
waitforvisualfinish
|
||||
createvisualtask AnimTask_BlendBattleAnimPal, 10, (F_PAL_BG | F_PAL_BATTLERS_2), 2, 4, 0, RGB_YELLOW
|
||||
waitforvisualfinish
|
||||
end
|
||||
|
||||
gBattleAnimMove_ParabolicCharge::
|
||||
@ -9231,8 +9280,8 @@ gBattleAnimMove_ThousandArrows::
|
||||
playsewithpan SE_M_THUNDERBOLT2, SOUND_PAN_ATTACKER
|
||||
waitforvisualfinish
|
||||
delay 0x30
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_RIGHT, 10, 0x32
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_LEFT, 10, 0x32
|
||||
createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 10, 0x32
|
||||
createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 0x32
|
||||
call ThousandArrowsDown
|
||||
call ThousandArrowsDown
|
||||
call ThousandArrowsDown
|
||||
@ -9432,8 +9481,8 @@ gBattleAnimMove_LandsWrath::
|
||||
fadetobg BG_FISSURE
|
||||
waitbgfadeout
|
||||
playsewithpan SE_M_EARTHQUAKE, 0x0
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_RIGHT, 10, 0x32
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_LEFT, 10, 0x32
|
||||
createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 10, 0x32
|
||||
createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 0x32
|
||||
createvisualtask AnimTask_PositionFissureBgOnBattler, 5, ANIM_TARGET, 5, -1
|
||||
waitbgfadein
|
||||
waitforvisualfinish
|
||||
@ -9600,8 +9649,8 @@ gBattleAnimMove_PrecipiceBlades::
|
||||
fadetobg 0x15
|
||||
waitbgfadeout
|
||||
createvisualtask AnimTask_PositionFissureBgOnBattler, 5, ANIM_TARGET, 5, -1
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_RIGHT, 10, 0x5
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_LEFT, 10, 0x5
|
||||
createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 10, 0x5
|
||||
createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 0x5
|
||||
playsewithpan SE_M_EARTHQUAKE, 0x0
|
||||
createvisualtask AnimTask_IsTargetPlayerSide, 0x2
|
||||
jumpargeq 0x7, ANIM_TARGET, PrecipiceBladesOpponent
|
||||
@ -10044,7 +10093,6 @@ gBattleAnimMove_FloralHealing::
|
||||
loadspritegfx ANIM_TAG_ORBS @circles
|
||||
loadspritegfx ANIM_TAG_PINK_PETAL @pink particles
|
||||
monbg ANIM_ATTACKER
|
||||
monbg ANIM_TARGET
|
||||
playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER
|
||||
call CIRCLES_LEAVES
|
||||
call CIRCLES_LEAVES
|
||||
@ -10052,6 +10100,7 @@ gBattleAnimMove_FloralHealing::
|
||||
panse SE_M_COMET_PUNCH, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 0x2, 0x0
|
||||
playsewithpan SE_M_TWISTER, 0x0
|
||||
createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x46, 0x1, 0x40
|
||||
clearmonbg ANIM_ATTACKER
|
||||
delay 0x2
|
||||
createsprite gFloralHealingWindLeavesTemplate, ANIM_ATTACKER, 2, 0x3c, 0x0, 0x40
|
||||
delay 0x2
|
||||
@ -10074,6 +10123,7 @@ gBattleAnimMove_FloralHealing::
|
||||
createsprite gSweetScentPetalSpriteTemplate, ANIM_ATTACKER, 2, 0x55, 0x0, 0x78
|
||||
delay 0x2
|
||||
loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_TARGET, 0x12, 0xa
|
||||
monbg ANIM_TARGET
|
||||
call FloralHealingSpores
|
||||
call FloralHealingSpores
|
||||
call FloralHealingSpores
|
||||
@ -10084,7 +10134,6 @@ gBattleAnimMove_FloralHealing::
|
||||
createsprite gGrantingStarsSpriteTemplate, ANIM_ATTACKER, 16, 0xc, 0xfffb, 0x1, 0x0, 0x20, 0x3c, 0x1
|
||||
waitforvisualfinish
|
||||
clearmonbg ANIM_TARGET
|
||||
clearmonbg ANIM_ATTACKER
|
||||
end
|
||||
FloralHealingSpores:
|
||||
createsprite gFloralHealingFlowerTemplate, ANIM_ATTACKER, 2, 0x0, 0xffec, 0x55, 0x50, 0x0
|
||||
@ -11712,8 +11761,8 @@ gBattleAnimMove_StompingTantrum::
|
||||
monbg ANIM_TARGET
|
||||
createvisualtask AnimTask_Splash, 2, ANIM_ATTACKER, 3
|
||||
delay 0x5
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_RIGHT, 10, 0x5
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_LEFT, 10, 0x5
|
||||
createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 10, 0x5
|
||||
createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 0x5
|
||||
createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0x0, 0x0
|
||||
createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0x0, 0x1
|
||||
createsprite gStompingTantrumRockTemplate, ANIM_ATTACKER, 2, 0x0, 0x2
|
||||
@ -11848,8 +11897,8 @@ gBattleAnimMove_PrismaticLaser::
|
||||
unloadspritegfx ANIM_TAG_ICE_CHUNK
|
||||
unloadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT
|
||||
delay 0x1E
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_RIGHT, 10, 0x32
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_LEFT, 10, 0x32
|
||||
createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 10, 0x32
|
||||
createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 0x32
|
||||
playsewithpan SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER
|
||||
call PrismaticLaserRain
|
||||
call PrismaticLaserRain
|
||||
@ -16121,11 +16170,11 @@ SandsearStormFireSpin:
|
||||
|
||||
@Credits to Skeli
|
||||
gBattleAnimMove_LunarBlessing::
|
||||
loadspritegfx ANIM_TAG_BLUE_STAR
|
||||
loadspritegfx ANIM_TAG_MOON
|
||||
loadspritegfx ANIM_TAG_SPARKLE_2
|
||||
loadspritegfx ANIM_TAG_GUARD_RING
|
||||
loadspritegfx ANIM_TAG_SMALL_EMBER @Yellow colour for ring
|
||||
loadspritegfx ANIM_TAG_BLUE_STAR
|
||||
monbg ANIM_ATK_PARTNER
|
||||
setalpha 16, 0
|
||||
createvisualtask AnimTask_BlendBattleAnimPal, 0xa, F_PAL_BG, 0x1, 0x0, 0x10, 0x0
|
||||
@ -16530,8 +16579,8 @@ gBattleAnimMove_GigatonHammer::
|
||||
delay 18
|
||||
createvisualtask AnimTask_SquishTarget, 0x2
|
||||
delay 6
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_RIGHT, 10, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_LEFT, 10, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 10, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 50
|
||||
call GigatonHammerImpact
|
||||
waitforvisualfinish
|
||||
end
|
||||
@ -18025,10 +18074,12 @@ PopulationBombContinue:
|
||||
waitforvisualfinish
|
||||
end
|
||||
|
||||
gBattleAnimMove_RevivalBlessing::
|
||||
goto gBattleAnimMove_LunarBlessing
|
||||
|
||||
gBattleAnimMove_TeraBlast::
|
||||
gBattleAnimMove_OrderUp::
|
||||
gBattleAnimMove_GlaiveRush::
|
||||
gBattleAnimMove_RevivalBlessing::
|
||||
gBattleAnimMove_SaltCure::
|
||||
gBattleAnimMove_TripleDive::
|
||||
gBattleAnimMove_Doodle::
|
||||
@ -20231,8 +20282,8 @@ gBattleAnimMove_LowKick::
|
||||
end
|
||||
|
||||
gBattleAnimMove_Earthquake::
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_RIGHT, 10, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_LEFT, 10, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 10, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 50
|
||||
playsewithpan SE_M_EARTHQUAKE, 0
|
||||
delay 10
|
||||
createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14
|
||||
@ -20242,8 +20293,8 @@ gBattleAnimMove_Earthquake::
|
||||
|
||||
gBattleAnimMove_Fissure::
|
||||
loadspritegfx ANIM_TAG_MUD_SAND
|
||||
createvisualtask AnimTask_HorizontalShake, 3, ANIM_PLAYER_RIGHT, 10, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 3, ANIM_TARGET, 10, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 10, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 10, 50
|
||||
playsewithpan SE_M_EARTHQUAKE, SOUND_PAN_TARGET
|
||||
delay 8
|
||||
call FissureDirtPlumeFar
|
||||
@ -20969,13 +21020,13 @@ gBattleAnimMove_Magnitude::
|
||||
MagnitudeEnd:
|
||||
end
|
||||
MagnitudeRegular:
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_RIGHT, 0, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_LEFT, 0, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 0, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 0, 50
|
||||
loopsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET, 8, 10
|
||||
goto MagnitudeEnd
|
||||
MagnitudeIntense:
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_RIGHT, 0, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_LEFT, 0, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 0, 50
|
||||
createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 0, 50
|
||||
loopsewithpan SE_M_STRENGTH, SOUND_PAN_TARGET, 8, 10
|
||||
delay 10
|
||||
createsprite gComplexPaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, F_PAL_BG, 3, 1, RGB_BLACK, 14, RGB_WHITE, 14
|
||||
@ -21448,8 +21499,8 @@ gBattleAnimMove_Eruption::
|
||||
createsprite gEruptionFallingRockSpriteTemplate, ANIM_ATTACKER, 40, 110, -32, 64, 50, 0
|
||||
createsprite gEruptionFallingRockSpriteTemplate, ANIM_ATTACKER, 40, 60, -32, 80, 70, 1
|
||||
delay 22
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_RIGHT, 8, 60
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_LEFT, 8, 60
|
||||
createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 8, 60
|
||||
createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 8, 60
|
||||
loopsewithpan SE_M_ROCK_THROW, SOUND_PAN_TARGET, 16, 12
|
||||
delay 80
|
||||
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 40, F_PAL_BG | F_PAL_BATTLERS, 4, 4, 0, RGB_RED
|
||||
@ -21479,7 +21530,7 @@ gBattleAnimMove_Imprison::
|
||||
waitforvisualfinish
|
||||
delay 4
|
||||
createsprite gRedXSpriteTemplate, ANIM_ATTACKER, 5, ANIM_ATTACKER, 40
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_LEFT, 1, 10
|
||||
createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 1, 10
|
||||
playsewithpan SE_M_HYPER_BEAM, SOUND_PAN_ATTACKER
|
||||
clearmonbg ANIM_DEF_PARTNER
|
||||
call UnsetPsychicBg
|
||||
@ -28953,8 +29004,8 @@ gBattleAnimMove_BreakneckBlitz::
|
||||
loadspritegfx ANIM_TAG_CIRCLE_OF_LIGHT
|
||||
loadspritegfx ANIM_TAG_METEOR
|
||||
loadspritegfx ANIM_TAG_FLAT_ROCK
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_RIGHT, 5, 32 @ shake screen
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_PLAYER_LEFT, 5, 32 @ shake banks
|
||||
createvisualtask AnimTask_HorizontalShake, 5, (MAX_BATTLERS_COUNT + 1), 5, 32 @ shake screen
|
||||
createvisualtask AnimTask_HorizontalShake, 5, MAX_BATTLERS_COUNT, 5, 32 @ shake banks
|
||||
playsewithpan SE_M_EARTHQUAKE, 0x0
|
||||
monbg ANIM_ATTACKER
|
||||
splitbgprio ANIM_ATTACKER
|
||||
@ -33476,7 +33527,7 @@ gBattleAnimMove_ClangorousSoulblaze::
|
||||
delay 0x2
|
||||
createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0xFFE0, 0x1, 0xffff
|
||||
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0xfd00, 0xa, 0x0, 0x2a
|
||||
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, ANIM_DEF_PARTNER, 0xfd00, 0xa, 0x0, 0x2a
|
||||
createsprite gSlideMonToOffsetPartnerSpriteTemplate, ANIM_ATTACKER, 2, ANIM_DEF_PARTNER, 0xfd00, 0xa, 0x0, 0x2a
|
||||
delay 0x20
|
||||
createvisualtask AnimTask_StartSlidingBg, 0x5, 0x0, 0x20, 0x1, 0xffff
|
||||
delay 0xC
|
||||
@ -33668,7 +33719,7 @@ FINISH_SOULBLAZE:
|
||||
call ResetFromWhiteScreen
|
||||
blendoff
|
||||
createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_TARGET, 0x0, 0x10
|
||||
createsprite gSlideMonToOriginalPosSpriteTemplate, ANIM_ATTACKER, 2, ANIM_DEF_PARTNER, 0x0, 0x10
|
||||
createsprite gSlideMonToOriginalPosPartnerSpriteTemplate, ANIM_ATTACKER, 2, ANIM_DEF_PARTNER, 0x0, 0x10
|
||||
waitforvisualfinish
|
||||
end
|
||||
ClangorousSoulblazeEnergySwirl:
|
||||
@ -34691,7 +34742,7 @@ gBattleAnimMove_GMaxTerror::
|
||||
gBattleAnimMove_MaxPhantasm::
|
||||
createvisualtask AnimTask_DynamaxGrowth, 0x5, 0x1, 0x1
|
||||
waitforvisualfinish
|
||||
goto gBattleAnimMove_PhantomForce
|
||||
goto gBattleAnimMove_ShadowBall
|
||||
end
|
||||
|
||||
gBattleAnimMove_GMaxGravitas::
|
||||
|
||||
@ -48,7 +48,7 @@ BattleScript_UseItemMessage:
|
||||
return
|
||||
|
||||
BattleScript_ItemRestoreHPRet:
|
||||
bichalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT
|
||||
clearmoveresultflags MOVE_RESULT_NO_EFFECT
|
||||
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
|
||||
healthbarupdate BS_SCRIPTING
|
||||
datahpupdate BS_SCRIPTING
|
||||
@ -69,7 +69,7 @@ BattleScript_ItemRestoreHPEnd:
|
||||
|
||||
BattleScript_ItemRestoreHP_Party::
|
||||
jumpifbyte CMP_EQUAL, gBattleCommunication, TRUE, BattleScript_ItemRestoreHP_SendOutRevivedBattler
|
||||
bichalfword gMoveResultFlags, MOVE_RESULT_NO_EFFECT
|
||||
clearmoveresultflags MOVE_RESULT_NO_EFFECT
|
||||
printstring STRINGID_ITEMRESTOREDSPECIESHEALTH
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
return
|
||||
|
||||
@ -42,6 +42,7 @@
|
||||
#include "constants/metatile_labels.h"
|
||||
#include "constants/moves.h"
|
||||
#include "constants/party_menu.h"
|
||||
#include "constants/pokedex.h"
|
||||
#include "constants/pokemon.h"
|
||||
#include "constants/roulette.h"
|
||||
#include "constants/script_menu.h"
|
||||
@ -565,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"
|
||||
|
||||
@ -447,3 +447,122 @@ Debug_EventScript_EWRAMCounters::
|
||||
Debug_EventScript_EWRAMCounters_Text::
|
||||
.string "Follower Steps: {STR_VAR_1}.\n"
|
||||
.string "Fishing Chain: {STR_VAR_2}.$"
|
||||
|
||||
Debug_EventScript_FontTest_Text_1::
|
||||
.string "{FONT_SHORT_NARROWER}" @ Edit this to test your font
|
||||
.string "Angel Adept Blind Bodice Clique\n"
|
||||
.string "Coast Dunce Docile Enact Eosin\l"
|
||||
.string "Furlong Focal Gnome Gondola Human\l"
|
||||
.string "Hoist Inlet Iodine Justin Jocose\l"
|
||||
.string "Knoll Koala Linden Loads Milliner\l"
|
||||
.string "Modal Number Nodule Onset Oddball\l"
|
||||
.string "Pneumo Poncho Quanta Qophs Rhone\l"
|
||||
.string "Roman Snout Sodium Tundra Tocsin\l"
|
||||
.string "Uncle Udder Vulcan Vocal Whale\l"
|
||||
.string "Woman Xmas Xenon Yunnan Young\l"
|
||||
.string "Zloty Zodiac.$"
|
||||
|
||||
Debug_EventScript_FontTest_Text_2::
|
||||
.string "{FONT_SHORT_NARROWER}" @ Edit this to test your font
|
||||
.string "Angel angel adept for the nuance loads\n"
|
||||
.string "of the arena cocoa and quaalude. Blind\l"
|
||||
.string "blind bodice for the submit oboe of the\l"
|
||||
.string "club snob and abbot. Clique clique\l"
|
||||
.string "coast for the pouch loco of the franc\l"
|
||||
.string "assoc and accede. Dunce dunce docile\l"
|
||||
.string "for the loudness mastodon of the\l"
|
||||
.string "loud statehood and huddle.$"
|
||||
|
||||
Debug_EventScript_FontTest_Text_3::
|
||||
.string "{FONT_SHORT_NARROWER}" @ Edit this to test your font
|
||||
.string "Enact enact eosin for the quench coed\n"
|
||||
.string "of the pique canoe and bleep. Furlong\l"
|
||||
.string "furlong focal for the genuflect\l"
|
||||
.string "profound of the motif aloof and offers.\l"
|
||||
.string "Gnome gnome gondola for the impugn\l"
|
||||
.string "logos of the unplug analog and smuggle.\l"
|
||||
.string "Human human hoist for the buddhist\l"
|
||||
.string "alcohol of the riyadh caliph and\l"
|
||||
.string "bathhouse.$"
|
||||
|
||||
Debug_EventScript_FontTest_Text_4::
|
||||
.string "{FONT_SHORT_NARROWER}" @ Edit this to test your font
|
||||
.string "Inlet inlet iodine for the quince\n"
|
||||
.string "champion of the ennui scampi and shiite.\l"
|
||||
.string "Justin justin jocose for the djibouti\l"
|
||||
.string "sojourn of the oranj raj and hajjis.\l"
|
||||
.string "Knoll knoll koala for the banknote\l"
|
||||
.string "lookout of the dybbuk outlook and\l"
|
||||
.string "trekked. Linden linden loads for the\l"
|
||||
.string "ulna monolog of the consul menthol and\l"
|
||||
.string "shallot.$"
|
||||
|
||||
Debug_EventScript_FontTest_Text_5::
|
||||
.string "{FONT_SHORT_NARROWER}" @ Edit this to test your font
|
||||
.string "Milliner milliner modal for the alumna\n"
|
||||
.string "solomon of the album custom and summon.\l"
|
||||
.string "Number number nodule for the unmade\l"
|
||||
.string "economic of the shotgun bison and\l"
|
||||
.string "tunnel. Onset onset oddball for the\l"
|
||||
.string "abandon podium of the antiquo tempo\l"
|
||||
.string "and moonlit. Pneumo pneumo poncho for\l"
|
||||
.string "the dauphin opossum of the holdup\l"
|
||||
.string "bishop and supplies.$"
|
||||
|
||||
Debug_EventScript_FontTest_Text_6::
|
||||
.string "{FONT_SHORT_NARROWER}" @ Edit this to test your font
|
||||
.string "Quanta quanta qophs for the inquest\n"
|
||||
.string "sheqel of the cinq coq and suqqu. Rhone\l"
|
||||
.string "rhone roman for the burnt porous of the\l"
|
||||
.string "lemur clamor and carrot. Snout snout\l"
|
||||
.string "sodium for the ensnare bosom of the\l"
|
||||
.string "genus pathos and missing. Tundra\l"
|
||||
.string "tundra tocsin for the nutmeg isotope\l"
|
||||
.string "of the peasant ingot and ottoman.$"
|
||||
|
||||
Debug_EventScript_FontTest_Text_7::
|
||||
.string "{FONT_SHORT_NARROWER}" @ Edit this to test your font
|
||||
.string "Uncle uncle udder for the dunes cloud\n"
|
||||
.string "of the hindu thou and continuum. Vulcan\l"
|
||||
.string "vulcan vocal for the alluvial ovoid of\l"
|
||||
.string "the yugoslav chekhov and revved. Whale\l"
|
||||
.string "whale woman for the meanwhile blowout\l"
|
||||
.string "of the forepaw meadow and glowworm.\l"
|
||||
.string "Xmas xmas xenon for the bauxite\l"
|
||||
.string "doxology of the tableaux equinox and\l"
|
||||
.string "exxon.$"
|
||||
|
||||
Debug_EventScript_FontTest_Text_8::
|
||||
.string "{FONT_SHORT_NARROWER}" @ Edit this to test your font
|
||||
.string "Yunnan yunnan young for the dynamo\n"
|
||||
.string "coyote of the obloquy employ and\l"
|
||||
.string "sayyid. Zloty zloty zodiac for the gizmo\l"
|
||||
.string "ozone of the franz laissez and buzzing.$"
|
||||
|
||||
Debug_PrintFontTest::
|
||||
msgbox Debug_EventScript_FontTest_Text_1, MSGBOX_DEFAULT
|
||||
msgbox Debug_EventScript_FontTest_Text_2, MSGBOX_DEFAULT
|
||||
msgbox Debug_EventScript_FontTest_Text_3, MSGBOX_DEFAULT
|
||||
msgbox Debug_EventScript_FontTest_Text_4, MSGBOX_DEFAULT
|
||||
msgbox Debug_EventScript_FontTest_Text_5, MSGBOX_DEFAULT
|
||||
msgbox Debug_EventScript_FontTest_Text_6, MSGBOX_DEFAULT
|
||||
msgbox Debug_EventScript_FontTest_Text_7, MSGBOX_DEFAULT
|
||||
msgbox Debug_EventScript_FontTest_Text_8, MSGBOX_DEFAULT
|
||||
releaseall
|
||||
end
|
||||
|
||||
Debug_EventScript_FontTest::
|
||||
lockall
|
||||
goto Debug_PrintFontTest
|
||||
@ goto_if_eq VAR_RESULT, 0, Debug_NoPokemon
|
||||
@ dynmultipush Debug_EventScript_InflictStatus1_Text_Single, 0
|
||||
@ dynmultipush Debug_EventScript_InflictStatus1_Text_PartyWide, 1
|
||||
@ dynmultipush Debug_EventScript_InflictStatus1_Text_Close, 2
|
||||
@ dynmultistack 0, 0, FALSE, 3 FALSE, 0, NULL
|
||||
@ switch VAR_RESULT
|
||||
@ case 0, Debug_EventScript_InflictStatus1_Single
|
||||
@ case 1, Debug_EventScript_InflictStatus1_Party
|
||||
@ case 2, Debug_EventScript_InflictStatus1_Close
|
||||
@Debug_EventScript_InflictStatus1_Close:
|
||||
@ releaseall
|
||||
@ end
|
||||
|
||||
@ -368,6 +368,23 @@ EventScript_EndSurface::
|
||||
releaseall
|
||||
end
|
||||
|
||||
EventScript_DigCommon:
|
||||
isfollowerfieldmoveuser VAR_0x8004
|
||||
setfieldeffectargument 3, VAR_0x8004 @ skip pose if true
|
||||
dofieldeffect FLDEFF_USE_DIG
|
||||
waitstate
|
||||
EventScript_DigSealedChamber:: @ fallthrough
|
||||
setflag FLAG_SAFE_FOLLOWER_MOVEMENT
|
||||
call_if_eq VAR_0x8004, TRUE, EventScript_FollowerFieldMove
|
||||
callnative DoBrailleDigEffect
|
||||
releaseall
|
||||
end
|
||||
|
||||
@ Use Dig from party menu
|
||||
EventScript_UseDig::
|
||||
lockall
|
||||
goto EventScript_DigCommon
|
||||
|
||||
Text_CantDive:
|
||||
.string "The sea is deep here. A POKéMON\n"
|
||||
.string "may be able to go underwater.$"
|
||||
|
||||
21
dev_scripts/competitive_defines/rename_subfolders.py
Normal file
@ -0,0 +1,21 @@
|
||||
import glob
|
||||
import re
|
||||
import json
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
def rename_subdirs(rootDir, old, new):
|
||||
for root, dirs, files in os.walk(rootDir):
|
||||
for name in files:
|
||||
originalName = os.path.join(root, name)
|
||||
if root.endswith(old) and os.path.isfile(originalName):
|
||||
newName = originalName.replace(old + '/', new + '/')
|
||||
print(originalName + " -> " + newName)
|
||||
if (not os.path.isdir(root.replace(old, '') + new)):
|
||||
os.mkdir(root.replace(old, '') + new)
|
||||
os.rename(originalName, newName)
|
||||
|
||||
rename_subdirs("graphics/pokemon", '/alolan', "/alola")
|
||||
rename_subdirs("graphics/pokemon", '/galarian', "/galar")
|
||||
rename_subdirs("graphics/pokemon", '/hisuian', "/hisui")
|
||||
rename_subdirs("graphics/pokemon", '/gigantamax', "/gmax")
|
||||
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")
|
||||
@ -18,7 +18,10 @@
|
||||
- [v1.6.x](tutorials/how_to_new_pokemon_1_6_0.md)
|
||||
- [How to use the Testing System](tutorials/how_to_testing_system.md)
|
||||
- [Changelog](./CHANGELOG.md)
|
||||
- [1.10.x]()
|
||||
- [Version 1.10.0](changelogs/1.10.x/1.10.0.md)
|
||||
- [1.9.x]()
|
||||
- [Version 1.9.4](changelogs/1.9.x/1.9.4.md)
|
||||
- [Version 1.9.3](changelogs/1.9.x/1.9.3.md)
|
||||
- [Version 1.9.2](changelogs/1.9.x/1.9.2.md)
|
||||
- [Version 1.9.1](changelogs/1.9.x/1.9.1.md)
|
||||
@ -64,3 +67,4 @@
|
||||
- [Version 0.9.0](changelogs/0.9.x/0.9.0.md)
|
||||
- [Team Procedures]()
|
||||
- [How to make an Expansion version](team_procedures/expansion_versions.md)
|
||||
- [Scope Guidelines](scope.md)
|
||||
|
||||
324
docs/changelogs/1.10.x/1.10.0.md
Normal file
@ -0,0 +1,324 @@
|
||||
# Version 1.10.0
|
||||
|
||||
```md
|
||||
## How to update
|
||||
- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`.
|
||||
- Once you have your remote set up, run the command `git pull RHH expansion/1.10.0`.
|
||||
```
|
||||
|
||||
## 🌋 *REFACTORS* 🌋
|
||||
📜 = Uses a migration script.
|
||||
* Changes Evolution methods to Enums by @AlexOn1ine in [#4977](https://github.com/rh-hideout/pokeemerald-expansion/pull/4977)
|
||||
* Turn item hold effects into an enum by @Bassoonian in [#5498](https://github.com/rh-hideout/pokeemerald-expansion/pull/5498)
|
||||
* Change `GET_MOVE_TYPE` to a function by @AlexOn1ine in [#5090](https://github.com/rh-hideout/pokeemerald-expansion/pull/5090)
|
||||
* Created `COMPOUND_STRING`s for default player names by @fdeblasio in [#5037](https://github.com/rh-hideout/pokeemerald-expansion/pull/5037)
|
||||
* Removed agbcc by @mrgriffin in [#4994](https://github.com/rh-hideout/pokeemerald-expansion/pull/4994)
|
||||
* Refactor Frontier Brains by @fdeblasio in [#5027](https://github.com/rh-hideout/pokeemerald-expansion/pull/5027)
|
||||
* Removed all instances of `gBitTable[x]` by @hedara90 in [#5123](https://github.com/rh-hideout/pokeemerald-expansion/pull/5123)
|
||||
* Made `BuildColorMaps` redundant by using static tables by @pkmnsnfrn in [#5289](https://github.com/rh-hideout/pokeemerald-expansion/pull/5289)
|
||||
* Removed `FRONTIER_BRAIN_SPRITES` and updated `TRAINER_SPRITE`, `TRAINER_BACK_SPRITE`, and `TRAINER_CLASS` by @fdeblasio in [#5166](https://github.com/rh-hideout/pokeemerald-expansion/pull/5166)
|
||||
* Added `ShouldSwitch` result to `AiLogicData` by @Pawkkie and @AlexOn1ine had the idea! in [#5440](https://github.com/rh-hideout/pokeemerald-expansion/pull/5440)
|
||||
* Switch AI refactor + considers free switches by @Pawkkie in [#5379](https://github.com/rh-hideout/pokeemerald-expansion/pull/5379)
|
||||
* Refactor `ShouldSwitchIfAllBadMoves` by @Pawkkie in [#5452](https://github.com/rh-hideout/pokeemerald-expansion/pull/5452)
|
||||
* Updated Wring Out effects to match Eruption effects by @AsparagusEduardo in [#5549](https://github.com/rh-hideout/pokeemerald-expansion/pull/5549)
|
||||
- Changed Wring Out/Crush Grip/Hard Press to use `power` instead of `argument` to determine its max power, just like how Eruption/Water Spout/Dragon Energy do it.
|
||||
- Also:
|
||||
- Renamed `EFFECT_VARY_POWER_BASED_ON_HP` to `EFFECT_POWER_BASED_ON_TARGET_HP`
|
||||
- Renamed `EFFECT_ERUPTION` to `EFFECT_POWER_BASED_ON_USER_HP`
|
||||
* Update battle messages to Gen 5+ standards by @kittenchilly in [#3240](https://github.com/rh-hideout/pokeemerald-expansion/pull/3240)
|
||||
* Should switch refactor to facilitate switch prediction by @Pawkkie in [#5466](https://github.com/rh-hideout/pokeemerald-expansion/pull/5466)
|
||||
* Unwind `TRAINER_CLASS` macro by @SBird1337 in [#5611](https://github.com/rh-hideout/pokeemerald-expansion/pull/5611)
|
||||
* Refactors Absorb to use `Moveend` by @AlexOn1ine in [#5670](https://github.com/rh-hideout/pokeemerald-expansion/pull/5670)
|
||||
* For new absorbing moves an argument should be added in `moves_info.h`
|
||||
* Changes name of `B_SCR_NAME_WITH_PREFIX` by @AlexOn1ine in [#5675](https://github.com/rh-hideout/pokeemerald-expansion/pull/5675)
|
||||
|
||||
## 🧬 General 🧬
|
||||
### Added
|
||||
* Added performance counter by @hedara90 and @SBird1337 provided the actual code in [#5284](https://github.com/rh-hideout/pokeemerald-expansion/pull/5284)
|
||||
* Added debug build target by @u8-Salem in [#4817](https://github.com/rh-hideout/pokeemerald-expansion/pull/4817)
|
||||
* Added `AUTO_SCROLL_TEXT` and `NUM_FRAMES_AUTO_SCROLL_DELAY` by @pkmnsnfrn in [#5054](https://github.com/rh-hideout/pokeemerald-expansion/pull/5054)
|
||||
* Adds `SAVE_TYPE_ERROR_SCREEN` by @pkmnsnfrn in [#5188](https://github.com/rh-hideout/pokeemerald-expansion/pull/5188)
|
||||
* Move Relearner and Renaming From Summary Screen by @ravepossum in [#5513](https://github.com/rh-hideout/pokeemerald-expansion/pull/5513)
|
||||
* Automatic Line Breaks, somewhat even lines by @hedara90 and @AsparagusEduardo in [#5689](https://github.com/rh-hideout/pokeemerald-expansion/pull/5689)
|
||||
- Automatically insert line breaks into a string with `BreakStringAutomatic`.
|
||||
- This function does not modify strings with existing line breaks.
|
||||
- Remove existing line breaks from a string with `StripLineBreaks`.
|
||||
|
||||
### Changed
|
||||
* Removed agbcc by @mrgriffin in [#4994](https://github.com/rh-hideout/pokeemerald-expansion/pull/4994)
|
||||
* Removed all instances of `gBitTable[x]` by @hedara90 in [#5123](https://github.com/rh-hideout/pokeemerald-expansion/pull/5123)
|
||||
* Converted Mechadoll text to `COMPOUND_STRING`s by @fdeblasio in [#5276](https://github.com/rh-hideout/pokeemerald-expansion/pull/5276)
|
||||
* New terrain bgs by @TheTrueSadfish in [#5162](https://github.com/rh-hideout/pokeemerald-expansion/pull/5162)
|
||||
* Removed agbcc screenshots from `.gitignore` by @Bassoonian in [#5538](https://github.com/rh-hideout/pokeemerald-expansion/pull/5538)
|
||||
* Set default battle shadow to Gen3 by @hedara90 in [#5632](https://github.com/rh-hideout/pokeemerald-expansion/pull/5632)
|
||||
- Note: Trainerslides don't work properly with Gen4 shadows.
|
||||
* Convert 3 variouses to `callnatives` by @AlexOn1ine in [#5646](https://github.com/rh-hideout/pokeemerald-expansion/pull/5646)
|
||||
|
||||
## 🗺️ Overworld 🗺️
|
||||
### Added
|
||||
* FRLG+ whiteout message by @cawtds in [#4967](https://github.com/rh-hideout/pokeemerald-expansion/pull/4967)
|
||||
* Dynamic Move Types in Summary Screen/Battle by @Galaxeeh in [#5084](https://github.com/rh-hideout/pokeemerald-expansion/pull/5084)
|
||||
* Adds `OW_BERRY_IMMORTAL` by @pkmnsnfrn in [#5187](https://github.com/rh-hideout/pokeemerald-expansion/pull/5187)
|
||||
* (Default Off) Item Description Headers by @ghoulslash in [#4767](https://github.com/rh-hideout/pokeemerald-expansion/pull/4767)
|
||||
* RTC-based wild encounters by @hjk321 in [#5313](https://github.com/rh-hideout/pokeemerald-expansion/pull/5313)
|
||||
* Added `MB_X_Y_STAIR_WARP` metatile behaviors by @pkmnsnfrn in [#5278](https://github.com/rh-hideout/pokeemerald-expansion/pull/5278)
|
||||
* Added Sideways Stairs by @ghoulslash in [#4836](https://github.com/rh-hideout/pokeemerald-expansion/pull/4836)
|
||||
* Added `OW_UNION_DISABLE_CHECK` and `OW_FLAG_MOVE_UNION_ROOM_CHECK` by @pkmnsnfrn in [#5448](https://github.com/rh-hideout/pokeemerald-expansion/pull/5448)
|
||||
* Adds new scripting macros to increase developer quality of life by @pkmnsnfrn in [#5177](https://github.com/rh-hideout/pokeemerald-expansion/pull/5177)
|
||||
* Added more later gen fishing mechanics by @kittenchilly in [#5518](https://github.com/rh-hideout/pokeemerald-expansion/pull/5518)
|
||||
|
||||
### Changed
|
||||
* Created PokeNav `COMPOUND_STRING`s by @fdeblasio in [#4983](https://github.com/rh-hideout/pokeemerald-expansion/pull/4983)
|
||||
* Added `I_REPEL_INCLUDE_FAINTED` config and behavior by @kittenchilly in [#5239](https://github.com/rh-hideout/pokeemerald-expansion/pull/5239)
|
||||
* RTC-based wild encounters follow up by @AlexOn1ine in [#5328](https://github.com/rh-hideout/pokeemerald-expansion/pull/5328)
|
||||
* Revert rtc based encounters by @AlexOn1ine in [#5331](https://github.com/rh-hideout/pokeemerald-expansion/pull/5331)
|
||||
* Made BuildColorMaps redundant by using static tables by @pkmnsnfrn in [#5289](https://github.com/rh-hideout/pokeemerald-expansion/pull/5289)
|
||||
* Added `OW_AUTO_SIGNPOST` and associated metatile behaviors by @pkmnsnfrn in [#5044](https://github.com/rh-hideout/pokeemerald-expansion/pull/5044)
|
||||
* Added support for overworld sprite gender differences + add all the sprites by @kittenchilly in [#5394](https://github.com/rh-hideout/pokeemerald-expansion/pull/5394)
|
||||
|
||||
### Fixed
|
||||
* Added some null pointer checks by @tertu-m in [#5130](https://github.com/rh-hideout/pokeemerald-expansion/pull/5130)
|
||||
* Reset item flags on new game by @ghoulslash in [#5363](https://github.com/rh-hideout/pokeemerald-expansion/pull/5363)
|
||||
* Follower female fix by @hedara90 in [#5475](https://github.com/rh-hideout/pokeemerald-expansion/pull/5475)
|
||||
|
||||
## 🐉 Pokémon 🐉
|
||||
### Added
|
||||
* Added config to change Vivillon's breeding form by @kittenchilly in [#4813](https://github.com/rh-hideout/pokeemerald-expansion/pull/4813)
|
||||
* Added back GBA sprites via config by @AsparagusEduardo and @AlexOn1ine for their help with script to migrate data from vanilla to our current `gSpeciesInfo` in [#5206](https://github.com/rh-hideout/pokeemerald-expansion/pull/5206)
|
||||
* Added config to disable gender differences by @AsparagusEduardo in [#5595](https://github.com/rh-hideout/pokeemerald-expansion/pull/5595)
|
||||
|
||||
### Changed
|
||||
* Made perfect IV count into a granular setting by @AsparagusEduardo in [#5115](https://github.com/rh-hideout/pokeemerald-expansion/pull/5115)
|
||||
* Updated species defines by @pkmnsnfrn in [#5075](https://github.com/rh-hideout/pokeemerald-expansion/pull/5075)
|
||||
* Added support for overworld sprite gender differences + add all the sprites by @kittenchilly in [#5394](https://github.com/rh-hideout/pokeemerald-expansion/pull/5394)
|
||||
* Renamed folders and symbols to match species defines by @AsparagusEduardo in [#5581](https://github.com/rh-hideout/pokeemerald-expansion/pull/5581)
|
||||
- Burmy and Wormadam footprints were in a `plant` subfolder. They have been moved to the species root folder
|
||||
- Paldean Wooper's subfolder was named `wooper_paldean` instead of just `paldean`. This has been corrected.
|
||||
- Zen Mode Galarian Darmanitan's folder was located in `darmanitan/galarian/zen_mode`. This has been corrected to `darmanitan/galar_zen`, alongside Galarian Standard Mode's `darmanitan/galar_standard`.
|
||||
- Also updated Ogerpon's folders similarly.
|
||||
- Renamed `SPECIES_PIKACHU_PARTNER_CAP` to `SPECIES_PIKACHU_PARTNER`.
|
||||
* Changing `EVO_NONE` from `0xFFFE` to `0` by @GhoulMage in [#5547](https://github.com/rh-hideout/pokeemerald-expansion/pull/5547)
|
||||
- There could be a case for out of bounds errors if arrays or iterations are happening where you're using + 1 or - 1, as `EVO_FRIENDSHIP` used to be the first index although it started with 1.
|
||||
|
||||
### Fixed
|
||||
* Follower female fix by @hedara90 in [#5475](https://github.com/rh-hideout/pokeemerald-expansion/pull/5475)
|
||||
* Fixed some gba sprites by @SubzeroEclipse in [#5607](https://github.com/rh-hideout/pokeemerald-expansion/pull/5607)
|
||||
|
||||
## ⚔️ Battle General ⚔️
|
||||
### Added
|
||||
* FRLG+ whiteout message by @cawtds in [#4967](https://github.com/rh-hideout/pokeemerald-expansion/pull/4967)
|
||||
* Added B_SHOW_TYPES and cleaned up IsDoubleBattle by @pkmnsnfrn in [#5131](https://github.com/rh-hideout/pokeemerald-expansion/pull/5131)
|
||||
* EV Caps and EV Items by @Flash1Lucky and @AlexOn1ine in [#5269](https://github.com/rh-hideout/pokeemerald-expansion/pull/5269)
|
||||
* Added in-battle shadows underneath all enemy battlers by @lhearachel in [#5178](https://github.com/rh-hideout/pokeemerald-expansion/pull/5178)
|
||||
* Added Gen 1 Crit Chance by @Pawkkie in [#5439](https://github.com/rh-hideout/pokeemerald-expansion/pull/5439)
|
||||
* Added battle flag that prevents running from wild Pokémon by @SarnPoke in [#5502](https://github.com/rh-hideout/pokeemerald-expansion/pull/5502)
|
||||
|
||||
### Changed
|
||||
* Refactor Frontier Brains by @fdeblasio in [#5027](https://github.com/rh-hideout/pokeemerald-expansion/pull/5027)
|
||||
* Removed some hardcoding of move IDs + Gen4/5 Defog by @AsparagusEduardo in [#5156](https://github.com/rh-hideout/pokeemerald-expansion/pull/5156)
|
||||
* Convert 8 various to `callnatives` by @AsparagusEduardo in [#5172](https://github.com/rh-hideout/pokeemerald-expansion/pull/5172)
|
||||
* Anger Shell use `saveattacker` by @ghoulslash in [#5409](https://github.com/rh-hideout/pokeemerald-expansion/pull/5409)
|
||||
* Clean up Unseen Fist Check by @AlexOn1ine in [#5420](https://github.com/rh-hideout/pokeemerald-expansion/pull/5420)
|
||||
* Updated species defines by @pkmnsnfrn in [#5075](https://github.com/rh-hideout/pokeemerald-expansion/pull/5075)
|
||||
* Removes Crit Chance preproc by @AlexOn1ine in [#5520](https://github.com/rh-hideout/pokeemerald-expansion/pull/5520)
|
||||
* Update battle messages to Gen 5+ standards by @kittenchilly in [#3240](https://github.com/rh-hideout/pokeemerald-expansion/pull/3240)
|
||||
* More post-#3240 cleanup by @kittenchilly in [#5593](https://github.com/rh-hideout/pokeemerald-expansion/pull/5593)
|
||||
* Unwind `TRAINER_CLASS` macro by @SBird1337 in [#5611](https://github.com/rh-hideout/pokeemerald-expansion/pull/5611)
|
||||
* Removes redundant Decorate check by @AlexOn1ine in [#5696](https://github.com/rh-hideout/pokeemerald-expansion/pull/5696)
|
||||
* Changes target bit of Flower Shield by @AlexOn1ine in [#5698](https://github.com/rh-hideout/pokeemerald-expansion/pull/5698)
|
||||
|
||||
### Fixed
|
||||
* Fixed a sprite issue with `B_SHOW_TYPES` by @pkmnsnfrn in [#5157](https://github.com/rh-hideout/pokeemerald-expansion/pull/5157)
|
||||
* Dynamic Move Display fixes by @Galaxeeh in [#5251](https://github.com/rh-hideout/pokeemerald-expansion/pull/5251)
|
||||
* Fixed a display issue with `B_SHOW_TYPES` by @pkmnsnfrn and @iriv24 in [#5201](https://github.com/rh-hideout/pokeemerald-expansion/pull/5201)
|
||||
* Fixed Gen 3 foreseen and Beat Up damage type by @hedara90 in [#5323](https://github.com/rh-hideout/pokeemerald-expansion/pull/5323)
|
||||
* Fixes Defog used by the wrong side when there is a Substitue and Screen by @AlexOn1ine in [#5381](https://github.com/rh-hideout/pokeemerald-expansion/pull/5381)
|
||||
* Fixes Hidden Power dynamic type bug by @AlexOn1ine in [#5463](https://github.com/rh-hideout/pokeemerald-expansion/pull/5463)
|
||||
* Display the correct shadow size when sending out a new Pokemon by @lhearachel in [#5618](https://github.com/rh-hideout/pokeemerald-expansion/pull/5618)
|
||||
* Fixed text wrap obtaining the incorrect glyph width by @AsparagusEduardo and @AlexOn1ine for their help verifying that the fix works with one of his custom strings in [#5620](https://github.com/rh-hideout/pokeemerald-expansion/pull/5620)
|
||||
* Improve line breaks/scrolls by @cawtds in [#5641](https://github.com/rh-hideout/pokeemerald-expansion/pull/5641)
|
||||
* Fixed Order Up + Tera Stellar breaking each other with Commander by @PhallenTree in [#5667](https://github.com/rh-hideout/pokeemerald-expansion/pull/5667)
|
||||
* Fixes wrong Id when AI chooses mon to switch in by @AlexOn1ine in [#5684](https://github.com/rh-hideout/pokeemerald-expansion/pull/5684)
|
||||
* Fixes Absorb regression caused by #5670 by @AlexOn1ine in [#5688](https://github.com/rh-hideout/pokeemerald-expansion/pull/5688)
|
||||
* Fixes heal blocked leeach seed in tests by @AlexOn1ine in [#5700](https://github.com/rh-hideout/pokeemerald-expansion/pull/5700)
|
||||
* Trainer class+name expansion fix for Battle Frontier by @hedara90 in [#5699](https://github.com/rh-hideout/pokeemerald-expansion/pull/5699)
|
||||
|
||||
## 🤹 Moves 🤹
|
||||
### Changed
|
||||
* Added Population Bomb animation by @kittenchilly in [#5194](https://github.com/rh-hideout/pokeemerald-expansion/pull/5194)
|
||||
* Move battle anim arrays to C by @cawtds in [#5306](https://github.com/rh-hideout/pokeemerald-expansion/pull/5306)
|
||||
* Grass/Water Pledge Swamp Animation + Sea of Fire animation tweak by @SonikkuA-DatH in [#5325](https://github.com/rh-hideout/pokeemerald-expansion/pull/5325)
|
||||
* New animations for many moves more details in description by @TheTrueSadfish in [#5367](https://github.com/rh-hideout/pokeemerald-expansion/pull/5367)
|
||||
* Use move effect for some moves instead of ids by @AlexOn1ine in [#5433](https://github.com/rh-hideout/pokeemerald-expansion/pull/5433)
|
||||
* Adds Commander and Order Up by @AlexOn1ine in [#5246](https://github.com/rh-hideout/pokeemerald-expansion/pull/5246)
|
||||
* Heart Swap Move Animation by @SonikkuA-DatH in [#5460](https://github.com/rh-hideout/pokeemerald-expansion/pull/5460)
|
||||
* Update `shed_tail.c` by @Bassoonian in [#5494](https://github.com/rh-hideout/pokeemerald-expansion/pull/5494)
|
||||
* Added Ion Deluge animation by @kittenchilly in [#5467](https://github.com/rh-hideout/pokeemerald-expansion/pull/5467)
|
||||
* Updated Wring Out effects to match Eruption effects by @AsparagusEduardo in [#5549](https://github.com/rh-hideout/pokeemerald-expansion/pull/5549)
|
||||
- Changed Wring Out/Crush Grip/Hard Press to use `power` instead of `argument` to determine its max power, just like how Eruption/Water Spout/Dragon Energy do it. Also:
|
||||
- Renamed `EFFECT_VARY_POWER_BASED_ON_HP` to `EFFECT_POWER_BASED_ON_TARGET_HP`
|
||||
- Renamed `EFFECT_ERUPTION` to `EFFECT_POWER_BASED_ON_USER_HP`
|
||||
* Refactors Absorb to use Moveend by @AlexOn1ine in [#5670](https://github.com/rh-hideout/pokeemerald-expansion/pull/5670)
|
||||
* For new absorbing moves an argument should be added in `moves_info.h`
|
||||
|
||||
### Fixed
|
||||
* Dark Void, Clangorous Soulblaze, vortex animation fixes by @TheTrueSadfish in [#5650](https://github.com/rh-hideout/pokeemerald-expansion/pull/5650)
|
||||
|
||||
## 🎭 Abilities 🎭
|
||||
### Changed
|
||||
* Adds Commander and Order Up by @AlexOn1ine in [#5246](https://github.com/rh-hideout/pokeemerald-expansion/pull/5246)
|
||||
|
||||
## 🧶 Items 🧶
|
||||
### Added
|
||||
* Adds `OW_BERRY_IMMORTAL` by @pkmnsnfrn in [#5187](https://github.com/rh-hideout/pokeemerald-expansion/pull/5187)
|
||||
* Added functionality to Poké Flute and Town Map by @kittenchilly and @LOuroboros basically did the Town Map implementation in [#5405](https://github.com/rh-hideout/pokeemerald-expansion/pull/5405)
|
||||
* Decouple Poke Ball ids from item ids by @AlexOn1ine in [#5560](https://github.com/rh-hideout/pokeemerald-expansion/pull/5560)
|
||||
|
||||
### Changed
|
||||
* Consolidated the values of Rotom's moves and added Gen9 base form effect by @fdeblasio in [#5186](https://github.com/rh-hideout/pokeemerald-expansion/pull/5186)
|
||||
* Added `I_REPEL_INCLUDE_FAINTED` config and behavior by @kittenchilly in [#5239](https://github.com/rh-hideout/pokeemerald-expansion/pull/5239)
|
||||
|
||||
### Fixed
|
||||
* Replace hardcoded flute check with consumability check by @Bassoonian in [#5508](https://github.com/rh-hideout/pokeemerald-expansion/pull/5508)
|
||||
|
||||
## 🤖 Battle AI 🤖
|
||||
### Added
|
||||
* Adds config to show target of ingame partner by @AlexOn1ine in [#5307](https://github.com/rh-hideout/pokeemerald-expansion/pull/5307)
|
||||
* Switch AI refactor + considers free switches by @Pawkkie in [#5379](https://github.com/rh-hideout/pokeemerald-expansion/pull/5379)
|
||||
* New AI flag for marking the two last Pokémon as Ace Pokémon by @GhoulMage in [#5587](https://github.com/rh-hideout/pokeemerald-expansion/pull/5587)
|
||||
|
||||
### Changed
|
||||
* Chilly Reception AI by @kittenchilly in [#5271](https://github.com/rh-hideout/pokeemerald-expansion/pull/5271)
|
||||
* Shed Tail AI by @SarnPoke and @AlexOn1ine, @Pawkkie in [#5275](https://github.com/rh-hideout/pokeemerald-expansion/pull/5275)
|
||||
* More missing AI logic by @kittenchilly in [#5279](https://github.com/rh-hideout/pokeemerald-expansion/pull/5279)
|
||||
* Adds basic trainer and smart trainer flags by @AlexOn1ine in [#5298](https://github.com/rh-hideout/pokeemerald-expansion/pull/5298)
|
||||
* `AI_FLAG_SETUP_FIRST_TURN` rename and clarifications by @Pawkkie in [#5310](https://github.com/rh-hideout/pokeemerald-expansion/pull/5310)
|
||||
* Added Composite AI Flags to Docs by @Pawkkie in [#5349](https://github.com/rh-hideout/pokeemerald-expansion/pull/5349)
|
||||
* AI frostbite score fixes and improvements by @Pawkkie and @kittenchilly for the suggestion! in [#5362](https://github.com/rh-hideout/pokeemerald-expansion/pull/5362)
|
||||
* Switch AI `hitsToKO` considers one shot prevention by @Pawkkie in [#5371](https://github.com/rh-hideout/pokeemerald-expansion/pull/5371)
|
||||
* Adds `CanEndureHit` AI function by @AlexOn1ine in [#5373](https://github.com/rh-hideout/pokeemerald-expansion/pull/5373)
|
||||
* Switch AI `hitsToKO` considers Disguise by @Pawkkie in [#5375](https://github.com/rh-hideout/pokeemerald-expansion/pull/5375)
|
||||
* Added `ShouldSwitch` result to `AiLogicData` by @Pawkkie and @AlexOn1ine had the idea! in [#5440](https://github.com/rh-hideout/pokeemerald-expansion/pull/5440)
|
||||
* Removes duplicate code in AI functions by @AlexOn1ine in [#5457](https://github.com/rh-hideout/pokeemerald-expansion/pull/5457)
|
||||
* Unify `GetBattlerAbility`/`TerrainAffected` to remove duplicate ai function by @AlexOn1ine in [#5497](https://github.com/rh-hideout/pokeemerald-expansion/pull/5497)
|
||||
* `ShouldSwitchIfGameStatePrompt` Tests by @Pawkkie in [#5462](https://github.com/rh-hideout/pokeemerald-expansion/pull/5462)
|
||||
* `AI_FLAG_ACE_POKEMON` takes into account separate trainers by @GhoulMage and @/uvula on Discord noted the weird behaviour. in [#5608](https://github.com/rh-hideout/pokeemerald-expansion/pull/5608)
|
||||
- Fix for the AI not considering both trainers Ace Pokémons in double battles with `AI_FLAG_ACE_POKEMON`.
|
||||
* Moves that deal a Fixed amount don't need AI handling by @AlexOn1ine in [#5614](https://github.com/rh-hideout/pokeemerald-expansion/pull/5614)
|
||||
* Combines `CalculateMoveDamage` arguments into a struct by @AlexOn1ine in [#5570](https://github.com/rh-hideout/pokeemerald-expansion/pull/5570)
|
||||
|
||||
### Fixed
|
||||
* AI burn score fixes and improvements by @Pawkkie and @iriv24 and @AlexOn1ine in [#5356](https://github.com/rh-hideout/pokeemerald-expansion/pull/5356)
|
||||
* Improve AI's Skill Swap handling in double battles by @Pawkkie in [#5360](https://github.com/rh-hideout/pokeemerald-expansion/pull/5360)
|
||||
* Refactor `ShouldSwitchIfAllBadMoves` by @Pawkkie in [#5452](https://github.com/rh-hideout/pokeemerald-expansion/pull/5452)
|
||||
* Should switch refactor to facilitate switch prediction by @Pawkkie in [#5466](https://github.com/rh-hideout/pokeemerald-expansion/pull/5466)
|
||||
* Fixes Switch in flag not restoring mons properly with test by @Pawkkie and @iriv24 for finding, @AlexOn1ine for fixing in [#5746](https://github.com/rh-hideout/pokeemerald-expansion/pull/5746)
|
||||
|
||||
## 🧹 Other Cleanup 🧹
|
||||
* Removed metadata in AIF files by @SombrAbsol in [#4958](https://github.com/rh-hideout/pokeemerald-expansion/pull/4958)
|
||||
* Removed `gPaletteDecompressionBuffer` and unused palette functions/vars by @DizzyEggg in [#4841](https://github.com/rh-hideout/pokeemerald-expansion/pull/4841)
|
||||
* Changes Evolution methods to `enum`s by @AlexOn1ine in [#4977](https://github.com/rh-hideout/pokeemerald-expansion/pull/4977)
|
||||
* Doesn't compile on some compilers by @AlexOn1ine in [#5099](https://github.com/rh-hideout/pokeemerald-expansion/pull/5099)
|
||||
* Update `event.inc` to accomodate new `gDecompressionBuffer` name by @Bassoonian in [#5100](https://github.com/rh-hideout/pokeemerald-expansion/pull/5100)
|
||||
* Created `COMPOUND_STRING`s for default player names by @fdeblasio in [#5037](https://github.com/rh-hideout/pokeemerald-expansion/pull/5037)
|
||||
* Changed single-use berry blender strings to be `COMPOUND_STRING`s by @fdeblasio in [#4963](https://github.com/rh-hideout/pokeemerald-expansion/pull/4963)
|
||||
* Made perfect IV count into a granular setting by @AsparagusEduardo in [#5115](https://github.com/rh-hideout/pokeemerald-expansion/pull/5115)
|
||||
* Dynamic move type clean up by @AlexOn1ine in [#5132](https://github.com/rh-hideout/pokeemerald-expansion/pull/5132)
|
||||
* Refactor Frontier Brains by @fdeblasio in [#5027](https://github.com/rh-hideout/pokeemerald-expansion/pull/5027)
|
||||
* Removed some hardcoding of move IDs + Gen4/5 Defog by @AsparagusEduardo in [#5156](https://github.com/rh-hideout/pokeemerald-expansion/pull/5156)
|
||||
* Teatime animations use `B_WAIT_TIME_LONG` by @AsparagusEduardo in [#5173](https://github.com/rh-hideout/pokeemerald-expansion/pull/5173)
|
||||
* Created PokeNav `COMPOUND_STRING`s by @fdeblasio in [#4983](https://github.com/rh-hideout/pokeemerald-expansion/pull/4983)
|
||||
* Removed `gBitTable` usage again by @hedara90 in [#5193](https://github.com/rh-hideout/pokeemerald-expansion/pull/5193)
|
||||
* Removed support for the original LCG random number generator by @tertu-m in [#5078](https://github.com/rh-hideout/pokeemerald-expansion/pull/5078)
|
||||
* Deprecate MMBN Names by @pkmnsnfrn in [#5240](https://github.com/rh-hideout/pokeemerald-expansion/pull/5240)
|
||||
* Convert 8 various to `callnatives` by @AsparagusEduardo in [#5172](https://github.com/rh-hideout/pokeemerald-expansion/pull/5172)
|
||||
* Converted PC strings to `COMPOUND_STRING`s by @fdeblasio in [#5314](https://github.com/rh-hideout/pokeemerald-expansion/pull/5314)
|
||||
* Cleaned up duplicate dynamic type functions by @AsparagusEduardo in [#5338](https://github.com/rh-hideout/pokeemerald-expansion/pull/5338)
|
||||
* Removes redundant `moveTargetType` ai function by @AlexOn1ine in [#5354](https://github.com/rh-hideout/pokeemerald-expansion/pull/5354)
|
||||
* Made `BuildColorMaps` redundant by using static tables by @pkmnsnfrn in [#5289](https://github.com/rh-hideout/pokeemerald-expansion/pull/5289)
|
||||
* Some strings were switched by @AlexOn1ine in [#5374](https://github.com/rh-hideout/pokeemerald-expansion/pull/5374)
|
||||
* Switch AI hitsToKO considers Disguise by @Pawkkie in [#5375](https://github.com/rh-hideout/pokeemerald-expansion/pull/5375)
|
||||
* Cleaned up a bit of code with `GetBattlerPartyData` by @AlexOn1ine in [#5378](https://github.com/rh-hideout/pokeemerald-expansion/pull/5378)
|
||||
* Minor Gem check optimazation by @AlexOn1ine in [#5401](https://github.com/rh-hideout/pokeemerald-expansion/pull/5401)
|
||||
* Simplify HP Logic by @AreaZR in [#5403](https://github.com/rh-hideout/pokeemerald-expansion/pull/5403)
|
||||
* Anger Shell use `saveattacker` by @ghoulslash in [#5409](https://github.com/rh-hideout/pokeemerald-expansion/pull/5409)
|
||||
* Converted berry and PokeBlock strings to `COMPOUND_STRING`s by @fdeblasio in [#5324](https://github.com/rh-hideout/pokeemerald-expansion/pull/5324)
|
||||
* Merge item description branch history by @Bassoonian in [#5419](https://github.com/rh-hideout/pokeemerald-expansion/pull/5419)
|
||||
* Clean up Unseen Fist Check by @AlexOn1ine in [#5420](https://github.com/rh-hideout/pokeemerald-expansion/pull/5420)
|
||||
* Merge level_caps and ev_caps into one caps file by @kittenchilly in [#5429](https://github.com/rh-hideout/pokeemerald-expansion/pull/5429)
|
||||
* Removed trailing whitespace pass 10-2-2024 (Upcoming) by @kittenchilly in [#5456](https://github.com/rh-hideout/pokeemerald-expansion/pull/5456)
|
||||
* Fixed Commander test name by @Bassoonian in [#5458](https://github.com/rh-hideout/pokeemerald-expansion/pull/5458)
|
||||
* Updated species defines by @pkmnsnfrn in [#5075](https://github.com/rh-hideout/pokeemerald-expansion/pull/5075)
|
||||
* Adds padding in `AiLogicData` by @AlexOn1ine in [#5468](https://github.com/rh-hideout/pokeemerald-expansion/pull/5468)
|
||||
* Simplify `BS_FAINTED_MULTIPLE_1` double battle logic in openpartyscreen by @ghoulslash in [#5435](https://github.com/rh-hideout/pokeemerald-expansion/pull/5435)
|
||||
* Removes duplicate code in AI functions by @AlexOn1ine in [#5457](https://github.com/rh-hideout/pokeemerald-expansion/pull/5457)
|
||||
* `ShouldPivot` type cleanup by @Pawkkie in [#5441](https://github.com/rh-hideout/pokeemerald-expansion/pull/5441)
|
||||
* Turn item hold effects into an enum by @Bassoonian in [#5498](https://github.com/rh-hideout/pokeemerald-expansion/pull/5498)
|
||||
* Unify `GetBattlerAbility`/`TerrainAffected` to remove duplicate ai function by @AlexOn1ine in [#5497](https://github.com/rh-hideout/pokeemerald-expansion/pull/5497)
|
||||
* Clean up Shedinja code by @Bassoonian in [#5501](https://github.com/rh-hideout/pokeemerald-expansion/pull/5501)
|
||||
* Clean up `scrcmd` PR by @Bassoonian in [#5511](https://github.com/rh-hideout/pokeemerald-expansion/pull/5511)
|
||||
* Removes Crit Chance preproc by @AlexOn1ine in [#5520](https://github.com/rh-hideout/pokeemerald-expansion/pull/5520)
|
||||
* Removed agbcc screenshots from gitignore by @Bassoonian in [#5538](https://github.com/rh-hideout/pokeemerald-expansion/pull/5538)
|
||||
* Removed unnecessary `gBattlerAttacker` usage by @AlexOn1ine in [#5554](https://github.com/rh-hideout/pokeemerald-expansion/pull/5554)
|
||||
* Removed remaining line breaks from #3240 + Prefix wrap fix by @AsparagusEduardo in [#5556](https://github.com/rh-hideout/pokeemerald-expansion/pull/5556)
|
||||
* More post-#3240 cleanup by @kittenchilly in [#5593](https://github.com/rh-hideout/pokeemerald-expansion/pull/5593)
|
||||
* Renamed folders and symbols to match species defines by @AsparagusEduardo in [#5581](https://github.com/rh-hideout/pokeemerald-expansion/pull/5581)
|
||||
- Also:
|
||||
- Burmy and Wormadam footprints were in a `plant` subfolder. They have been moved to the species root folder
|
||||
- Paldean Wooper's subfolder was named `wooper_paldean` instead of just `paldean`. This has been corrected.
|
||||
- Zen Mode Galarian Darmanitan's folder was located in `darmanitan/galarian/zen_mode`. This has been corrected to `darmanitan/galar_zen`, alongside Galarian Standard Mode's `darmanitan/galar_standard`.
|
||||
- Also updated Ogerpon's folders similarly.
|
||||
- Renamed `SPECIES_PIKACHU_PARTNER_CAP` to `SPECIES_PIKACHU_PARTNER`.
|
||||
* Minor `BattleStruct` clean up by @AlexOn1ine in [#5585](https://github.com/rh-hideout/pokeemerald-expansion/pull/5585)
|
||||
* Fixed a ball update oversight by @Bassoonian in [#5609](https://github.com/rh-hideout/pokeemerald-expansion/pull/5609)
|
||||
* `AI_FLAG_ACE_POKEMON` takes into account separate trainers by @GhoulMage and @/uvula on Discord noted the weird behaviour in [#5608](https://github.com/rh-hideout/pokeemerald-expansion/pull/5608)
|
||||
- Fix for the AI not considering both trainers Ace Pokémons in double battles with `AI_FLAG_ACE_POKEMON`.
|
||||
* Moves that deal a Fixed amount don't need AI handling by @AlexOn1ine in [#5614](https://github.com/rh-hideout/pokeemerald-expansion/pull/5614)
|
||||
* Combines `CalculateMoveDamage` arguments into a struct by @AlexOn1ine in [#5570](https://github.com/rh-hideout/pokeemerald-expansion/pull/5570)
|
||||
* Follow up for #5570 by @AlexOn1ine in [#5625](https://github.com/rh-hideout/pokeemerald-expansion/pull/5625)
|
||||
* `AI_CalcDamage` clean up by @AlexOn1ine in [#5629](https://github.com/rh-hideout/pokeemerald-expansion/pull/5629)
|
||||
* Convert 3 variouses to `callnatives` by @AlexOn1ine in [#5646](https://github.com/rh-hideout/pokeemerald-expansion/pull/5646)
|
||||
* Convert `gBattleStringsTable` to `COMPOUND_STRING`s by @AsparagusEduardo in [#5649](https://github.com/rh-hideout/pokeemerald-expansion/pull/5649)
|
||||
* Added merged placeholder text for trainer name with class by @kittenchilly in [#5622](https://github.com/rh-hideout/pokeemerald-expansion/pull/5622)
|
||||
* Cleans up Primal Reversion code by @AlexOn1ine in [#5659](https://github.com/rh-hideout/pokeemerald-expansion/pull/5659)
|
||||
* Critical Hit documentation and distorted match up struct switch by @AlexOn1ine in [#5665](https://github.com/rh-hideout/pokeemerald-expansion/pull/5665)
|
||||
* Changes name of `B_SCR_NAME_WITH_PREFIX` by @AlexOn1ine in [#5675](https://github.com/rh-hideout/pokeemerald-expansion/pull/5675)
|
||||
* Removes redundant Decorate check by @AlexOn1ine in [#5696](https://github.com/rh-hideout/pokeemerald-expansion/pull/5696)
|
||||
* Changes taget bit of Flower Shield by @AlexOn1ine in [#5698](https://github.com/rh-hideout/pokeemerald-expansion/pull/5698)
|
||||
* Changing `EVO_NONE` from `0xFFFE` to `0` by @GhoulMage in [#5547](https://github.com/rh-hideout/pokeemerald-expansion/pull/5547)
|
||||
- There could be a case for out of bounds errors if arrays or iterations are happening where you're using + 1 or - 1, as `EVO_FRIENDSHIP` used to be the first index although it started with 1.
|
||||
|
||||
## 🧪 Test Runner 🧪
|
||||
### Changed
|
||||
* Fixed Commander test name by @Bassoonian in [#5458](https://github.com/rh-hideout/pokeemerald-expansion/pull/5458)
|
||||
* `ShouldSwitchIfGameStatePrompt` Tests by @Pawkkie in [#5462](https://github.com/rh-hideout/pokeemerald-expansion/pull/5462)
|
||||
* Added various tests, add `RNG_RANDOM_TARGET` by @ghoulslash in [#5438](https://github.com/rh-hideout/pokeemerald-expansion/pull/5438)
|
||||
* Added Costar Tests, Download Test for Doubles by @ghoulslash in [#5526](https://github.com/rh-hideout/pokeemerald-expansion/pull/5526)
|
||||
* Updated Wring Out effects to match Eruption effects by @AsparagusEduardo in [#5549](https://github.com/rh-hideout/pokeemerald-expansion/pull/5549)
|
||||
- Changed Wring Out/Crush Grip/Hard Press to use `power` instead of `argument` to determine its max power, just like how Eruption/Water Spout/Dragon Energy do it. Also:
|
||||
- Renamed `EFFECT_VARY_POWER_BASED_ON_HP` to `EFFECT_POWER_BASED_ON_TARGET_HP`
|
||||
- Renamed `EFFECT_ERUPTION` to `EFFECT_POWER_BASED_ON_USER_HP`
|
||||
* Healer ability tests by @Pawkkie in [#5559](https://github.com/rh-hideout/pokeemerald-expansion/pull/5559)
|
||||
* Mark all tests as used by @mrgriffin in [#5531](https://github.com/rh-hideout/pokeemerald-expansion/pull/5531)
|
||||
|
||||
### Fixed
|
||||
* Should switch refactor to facilitate switch prediction by @Pawkkie in [#5466](https://github.com/rh-hideout/pokeemerald-expansion/pull/5466)
|
||||
|
||||
## 📚 Documentation 📚
|
||||
* `DoBattleIntro` state documentation by @AsparagusEduardo and @ShinyDragonHunter in [#5231](https://github.com/rh-hideout/pokeemerald-expansion/pull/5231)
|
||||
* Deprecate MMBN Names by @pkmnsnfrn in [#5240](https://github.com/rh-hideout/pokeemerald-expansion/pull/5240)
|
||||
* `AI_FLAG_SETUP_FIRST_TURN` Rename and Clarifications by @Pawkkie in [#5310](https://github.com/rh-hideout/pokeemerald-expansion/pull/5310)
|
||||
* Added Composite AI Flags to Docs by @Pawkkie in [#5349](https://github.com/rh-hideout/pokeemerald-expansion/pull/5349)
|
||||
* Updated the new pokemon tutorial for 1.10 by @hedara90 in [#5721](https://github.com/rh-hideout/pokeemerald-expansion/pull/5721)
|
||||
- Some changes compared to previous.
|
||||
|
||||
## New Contributors
|
||||
* @SombrAbsol made their first contribution in [#4958](https://github.com/rh-hideout/pokeemerald-expansion/pull/4958)
|
||||
* @Galaxeeh made their first contribution in [#5084](https://github.com/rh-hideout/pokeemerald-expansion/pull/5084)
|
||||
* @Flash1Lucky made their first contribution in [#5269](https://github.com/rh-hideout/pokeemerald-expansion/pull/5269)
|
||||
* @GhoulMage made their first contribution in [#5547](https://github.com/rh-hideout/pokeemerald-expansion/pull/5547)
|
||||
|
||||
**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.9.4...expansion/1.10.0
|
||||
|
||||
<!--Last PR: 5547-->
|
||||
<!--Used to keep track of the last PR merged in case new ones come in before the changelog is done.-->
|
||||
201
docs/changelogs/1.9.x/1.9.4.md
Normal file
@ -0,0 +1,201 @@
|
||||
# Version 1.9.4
|
||||
|
||||
```md
|
||||
## How to update
|
||||
- If you haven't set up a remote, run the command `git remote add RHH https://github.com/rh-hideout/pokeemerald-expansion`.
|
||||
- Once you have your remote set up, run the command `git pull RHH expansion/1.9.4`.
|
||||
```
|
||||
|
||||
## 🌋 IMPORTANT 🌋
|
||||
- This update integrates pret's latest Makefile changes, which rearranges the entire file in order to speed up compilation times overall. If you did any changes to it (such as installing Poryscript) and are having issues resolving the conflicts, keep expansion's version of Makefile and reapply your changes afterwards.
|
||||
|
||||
## 🧬 General 🧬
|
||||
### Fixed
|
||||
* Fixed alignment errors in `EWRAM_INIT` and friends when using u8, u16, etc. by @aronson in [#5512](https://github.com/rh-hideout/pokeemerald-expansion/pull/5512)
|
||||
* Update test LD script to respect 4 byte data section alignment by @aronson in [#5517](https://github.com/rh-hideout/pokeemerald-expansion/pull/5517)
|
||||
* Fixed Missing `string_util.h` include in `mini_printf.c` by @mrgriffin in [#5572](https://github.com/rh-hideout/pokeemerald-expansion/pull/5572)
|
||||
* Fixed unnecessary dependency scanning for test build and test rom names by @ravepossum in [#5594](https://github.com/rh-hideout/pokeemerald-expansion/pull/5594)
|
||||
* Fixed makefile: dependencies for `map_group_count.h` by @SBird1337 in [#5648](https://github.com/rh-hideout/pokeemerald-expansion/pull/5648)
|
||||
- Fixes an issue that caused the build to fail on updates to `src/debug.c` due to mismatched dependency.
|
||||
|
||||
## 🗺️ Overworld 🗺️
|
||||
### Changed
|
||||
* Followers sprite fixes by @Cafeei in [#5669](https://github.com/rh-hideout/pokeemerald-expansion/pull/5669)
|
||||
* Follower fixes, Melmetal, Patrat, Woobat by @hedara90 in [#5685](https://github.com/rh-hideout/pokeemerald-expansion/pull/5685)
|
||||
* Fixed Farfetch'd overworld sprite by @hedara90 in [#5711](https://github.com/rh-hideout/pokeemerald-expansion/pull/5711)
|
||||
|
||||
### Fixed
|
||||
* Fixed Berry mutations always generating a Persim Berry by @Bassoonian in [#5504](https://github.com/rh-hideout/pokeemerald-expansion/pull/5504)
|
||||
|
||||
## 🐉 Pokémon 🐉
|
||||
### Changed
|
||||
* Changing `EVO_NONE` from `0xFFFE` to `0` by @GhoulMage in [#5547](https://github.com/rh-hideout/pokeemerald-expansion/pull/5547)
|
||||
- There could be a case for out of bounds errors if arrays or iterations are happening where you're using + 1 or - 1, as `EVO_FRIENDSHIP` used to be the first index although it started with 1.
|
||||
* PokeCommunity sprites batch (October) by @kittenchilly in [#5655](https://github.com/rh-hideout/pokeemerald-expansion/pull/5655)
|
||||
* Followers sprite fixes by @Cafeei in [#5669](https://github.com/rh-hideout/pokeemerald-expansion/pull/5669)
|
||||
* Follower fixes, Melmetal, Patrat, Woobat by @hedara90 in [#5685](https://github.com/rh-hideout/pokeemerald-expansion/pull/5685)
|
||||
* Fixed Farfetch'd overworld sprite by @hedara90 in [#5711](https://github.com/rh-hideout/pokeemerald-expansion/pull/5711)
|
||||
|
||||
### Fixed
|
||||
* Fixed `P_FRIENDSHIP_EVO_THRESHOLD` not checking for Gen 8 by @kittenchilly in [#5503](https://github.com/rh-hideout/pokeemerald-expansion/pull/5503)
|
||||
* Fixed HGSS dex search printing wrong mon after selecting evos by @ravepossum in [#5552](https://github.com/rh-hideout/pokeemerald-expansion/pull/5552)
|
||||
* Fixed 64px uncompressed followers by @hedara90 in [#5601](https://github.com/rh-hideout/pokeemerald-expansion/pull/5601)
|
||||
* Deoxys Sprite/Animation Fixes by @SarnPoke in [#5603](https://github.com/rh-hideout/pokeemerald-expansion/pull/5603)
|
||||
* Fixes Aegislash not reverting back by @AlexOn1ine in [#5734](https://github.com/rh-hideout/pokeemerald-expansion/pull/5734)
|
||||
|
||||
## ⚔️ Battle General ⚔️
|
||||
### Changed
|
||||
* Fixed damage calc modifiers by @AlexOn1ine in [#5604](https://github.com/rh-hideout/pokeemerald-expansion/pull/5604)
|
||||
|
||||
### Fixed
|
||||
* Fixed Shiny Pokemon not being shiny after transforming with a gimmick by @hedara90 in [#5573](https://github.com/rh-hideout/pokeemerald-expansion/pull/5573)
|
||||
* Handle showdowns apostrophe the same way as ASCII apostrophe by @cawtds in [#5712](https://github.com/rh-hideout/pokeemerald-expansion/pull/5712)
|
||||
* Fixes Misty Terrain displaying wrong message by @AlexOn1ine in [#5742](https://github.com/rh-hideout/pokeemerald-expansion/pull/5742)
|
||||
* Fixes Dynamax dynamic move type by @AlexOn1ine in [#5739](https://github.com/rh-hideout/pokeemerald-expansion/pull/5739)
|
||||
|
||||
## 🤹 Moves 🤹
|
||||
### Changed
|
||||
* Fixed damage calc modifiers by @AlexOn1ine in [#5604](https://github.com/rh-hideout/pokeemerald-expansion/pull/5604)
|
||||
* Updated ability popups for Skill Swap, Mummy/Lingering Aroma, Worry Seed, Simple Beam, fix Doodle/Role Play bugs by @PhallenTree in [#5493](https://github.com/rh-hideout/pokeemerald-expansion/pull/5493)
|
||||
|
||||
### Fixed
|
||||
* Fixed Follow Me failing in Single Battles for Gen 6/7 config by @AsparagusEduardo in [#5542](https://github.com/rh-hideout/pokeemerald-expansion/pull/5542)
|
||||
* Fixed `AnimTask_HorizontalShake` uses for shaking screen in battle anims by @ghoulslash in [#5562](https://github.com/rh-hideout/pokeemerald-expansion/pull/5562)
|
||||
* Fixed weather genie move anims and Springtide Storm targets by @ravepossum in [#5553](https://github.com/rh-hideout/pokeemerald-expansion/pull/5553)
|
||||
* Fixes Magic Guard not preventing Salt Cure by @AlexOn1ine in [#5583](https://github.com/rh-hideout/pokeemerald-expansion/pull/5583)
|
||||
* Fixes Dragon Tail using the effect twice during a Parental Bond attack by @AlexOn1ine in [#5630](https://github.com/rh-hideout/pokeemerald-expansion/pull/5630)
|
||||
* Fixes Magic Coat message by @AlexOn1ine in [#5645](https://github.com/rh-hideout/pokeemerald-expansion/pull/5645)
|
||||
* Fixes Take heart by @AlexOn1ine in [#5658](https://github.com/rh-hideout/pokeemerald-expansion/pull/5658)
|
||||
* Fixed Floral Healing anim by @AlexOn1ine in [#5733](https://github.com/rh-hideout/pokeemerald-expansion/pull/5733)
|
||||
* Fixes Population Bomb / Triple Kick missing message by @AlexOn1ine in [#5747](https://github.com/rh-hideout/pokeemerald-expansion/pull/5747)
|
||||
* Changes Max Phantasm move anim script call by @AlexOn1ine in [#5737](https://github.com/rh-hideout/pokeemerald-expansion/pull/5737)
|
||||
* Fixes Partner targeting and Acupressure/Ally Switch interaction by @AlexOn1ine in [#5446](https://github.com/rh-hideout/pokeemerald-expansion/pull/5446)
|
||||
* Revival Blessing fixes + Using Lunar Blessing's animation by @ghoulslash in [#5490](https://github.com/rh-hideout/pokeemerald-expansion/pull/5490)
|
||||
* Fixed curse + Protean interaction by @hedara90 in [#5663](https://github.com/rh-hideout/pokeemerald-expansion/pull/5663)
|
||||
* Added Minimize interaction to Supercell Slam by @hedara90 in [#5713](https://github.com/rh-hideout/pokeemerald-expansion/pull/5713)
|
||||
|
||||
## 🎭 Abilities 🎭
|
||||
### Changed
|
||||
* Fixed damage calc modifiers by @AlexOn1ine in [#5604](https://github.com/rh-hideout/pokeemerald-expansion/pull/5604)
|
||||
|
||||
### Fixed
|
||||
* Adds tests and Costar fix from PR #5526 by @AlexOn1ine in [#5529](https://github.com/rh-hideout/pokeemerald-expansion/pull/5529)
|
||||
* Fixes Red Card / Eject Pack interaction with Emergency Exit by @AlexOn1ine in [#5657](https://github.com/rh-hideout/pokeemerald-expansion/pull/5657)
|
||||
* Fixed curse + Protean interaction by @hedara90 in [#5663](https://github.com/rh-hideout/pokeemerald-expansion/pull/5663)
|
||||
* Mimicry updates typing with `RemoveAllTerrains()` by @AERDU in [#5666](https://github.com/rh-hideout/pokeemerald-expansion/pull/5666)
|
||||
* Updated ability popups for Skill Swap, Mummy/Lingering Aroma, Worry Seed, Simple Beam, fix Doodle/Role Play bugs by @PhallenTree in [#5493](https://github.com/rh-hideout/pokeemerald-expansion/pull/5493)
|
||||
* Fixed curse + Protean interaction by @hedara90 in [#5663](https://github.com/rh-hideout/pokeemerald-expansion/pull/5663)
|
||||
* Fixes Ice Face regression by @AlexOn1ine in [#5678](https://github.com/rh-hideout/pokeemerald-expansion/pull/5678)
|
||||
* Fixes Neutralizing Gas crashes + adds missing interaction, Regenerator small fix by @PhallenTree in [#5694](https://github.com/rh-hideout/pokeemerald-expansion/pull/5694)
|
||||
|
||||
## 🧶 Items 🧶
|
||||
### Changed
|
||||
* Removes duplicate Booster Energy code by @AlexOn1ine in [#5656](https://github.com/rh-hideout/pokeemerald-expansion/pull/5656)
|
||||
|
||||
### Fixed
|
||||
* Fixes Red Card / Eject Pack interaction with Emergency Exit by @AlexOn1ine in [#5657](https://github.com/rh-hideout/pokeemerald-expansion/pull/5657)
|
||||
* Fixes Red Card / Eject Pack interaction by @AlexOn1ine in [#5724](https://github.com/rh-hideout/pokeemerald-expansion/pull/5724)
|
||||
* Fixes gems triggering on confusion damage by @AlexOn1ine in [#5723](https://github.com/rh-hideout/pokeemerald-expansion/pull/5723)
|
||||
* Fixes Kee Maranga and Enigma Berry by @AlexOn1ine in [#5727](https://github.com/rh-hideout/pokeemerald-expansion/pull/5727)
|
||||
* Fixes Blunder Policy by @AlexOn1ine in [#5722](https://github.com/rh-hideout/pokeemerald-expansion/pull/5722)
|
||||
* Fixes Rusted Shield/Sword allowed to be Knocked Off from Zamazenta/Zacian by @iriv24 in [#5750](https://github.com/rh-hideout/pokeemerald-expansion/pull/5750)
|
||||
|
||||
## 🤖 Battle AI 🤖
|
||||
### Fixed
|
||||
* Fixed certain move data being cleared on turn end by @Pawkkie and @AlexOn1ine in [#5488](https://github.com/rh-hideout/pokeemerald-expansion/pull/5488)
|
||||
* Global is used instead of passed var by @AlexOn1ine in [#5546](https://github.com/rh-hideout/pokeemerald-expansion/pull/5546)
|
||||
* Fixes `dynamicMoveType` global not being reset during AI calcs by @AlexOn1ine in [#5628](https://github.com/rh-hideout/pokeemerald-expansion/pull/5628)
|
||||
|
||||
## 🧹 Other Cleanup 🧹
|
||||
* Remove one redundant call of `SetAiLogicDataForTurn` in `DoBattleIntro` by @AlexOn1ine in [#5491](https://github.com/rh-hideout/pokeemerald-expansion/pull/5491)
|
||||
* Cleanup extraneous function in `battle_anim.h` by @hedara90 in [#5506](https://github.com/rh-hideout/pokeemerald-expansion/pull/5506)
|
||||
* Add newline to move relearner string by @Bassoonian in [#5523](https://github.com/rh-hideout/pokeemerald-expansion/pull/5523)
|
||||
* Fixed 10,000,000 Volt Thunderbolt name by @AsparagusEduardo in [#5533](https://github.com/rh-hideout/pokeemerald-expansion/pull/5533)
|
||||
* Added constant to expansion inclusive copyright magic number by @pkmnsnfrn in [#5413](https://github.com/rh-hideout/pokeemerald-expansion/pull/5413)
|
||||
* Centralise AI Tests trainer name by @Bassoonian in [#5532](https://github.com/rh-hideout/pokeemerald-expansion/pull/5532)
|
||||
* Remove now outdated information from readme by @Bassoonian in [#5548](https://github.com/rh-hideout/pokeemerald-expansion/pull/5548)
|
||||
* Changing `EVO_NONE` from `0xFFFE` to `0` by @GhoulMage in [#5547](https://github.com/rh-hideout/pokeemerald-expansion/pull/5547)
|
||||
- There could be a case for out of bounds errors if arrays or iterations are happening where you're using + 1 or - 1, as `EVO_FRIENDSHIP` used to be the first index although it started with 1.
|
||||
* Shed Skin chance fix by @Pawkkie in [#5558](https://github.com/rh-hideout/pokeemerald-expansion/pull/5558)
|
||||
* Restore test file dependencies so they're rebuilt properly by @ravepossum in [#5617](https://github.com/rh-hideout/pokeemerald-expansion/pull/5617)
|
||||
* Improve `SEND_OUT` error message; require Speed for all battlers by @mrgriffin in [#5631](https://github.com/rh-hideout/pokeemerald-expansion/pull/5631)
|
||||
* Removes duplicate Booster Energy code by @AlexOn1ine in [#5656](https://github.com/rh-hideout/pokeemerald-expansion/pull/5656)
|
||||
* Wrong assumtion in dauntless_shield.c by @AlexOn1ine in [#5692](https://github.com/rh-hideout/pokeemerald-expansion/pull/5692)
|
||||
|
||||
## 🧪 Test Runner 🧪
|
||||
### Added
|
||||
* Add curious medicine test by @ghoulslash in [#5540](https://github.com/rh-hideout/pokeemerald-expansion/pull/5540)
|
||||
* Tests: detect task leaks by @mrgriffin in [#5528](https://github.com/rh-hideout/pokeemerald-expansion/pull/5528)
|
||||
|
||||
### Changed
|
||||
* Add text width tests for move, ability, item, and pokedex descriptions by @kittenchilly in [#5505](https://github.com/rh-hideout/pokeemerald-expansion/pull/5505)
|
||||
* Centralise AI Tests trainer name by @Bassoonian in [#5532](https://github.com/rh-hideout/pokeemerald-expansion/pull/5532)
|
||||
* Add basic Steam Engine, Guard Dog Tests by @ghoulslash in [#5569](https://github.com/rh-hideout/pokeemerald-expansion/pull/5569)
|
||||
* Fixed damage test by @GhoulMage and @mrgriffin for teaching me pokeemerald-expansion tests in [#5574](https://github.com/rh-hideout/pokeemerald-expansion/pull/5574)
|
||||
* Fallback `memmem` implementation by @mrgriffin in [#5561](https://github.com/rh-hideout/pokeemerald-expansion/pull/5561)
|
||||
* Hydra: Support `%p` in test summaries by @mrgriffin in [#5626](https://github.com/rh-hideout/pokeemerald-expansion/pull/5626)
|
||||
* Improve `SEND_OUT` error message; require Speed for all battlers by @mrgriffin in [#5631](https://github.com/rh-hideout/pokeemerald-expansion/pull/5631)
|
||||
* Check that `PASSES_RANDOMLY` affected a `Random` call by @mrgriffin in [#5635](https://github.com/rh-hideout/pokeemerald-expansion/pull/5635)
|
||||
* Wrong assumtion in dauntless_shield.c by @AlexOn1ine in [#5692](https://github.com/rh-hideout/pokeemerald-expansion/pull/5692)
|
||||
|
||||
### Fixed
|
||||
* Update test LD script to respect 4 byte data section alignment by @aronson in [#5517](https://github.com/rh-hideout/pokeemerald-expansion/pull/5517)
|
||||
* Adds tests and Costar fix from PR #5526 by @AlexOn1ine in [#5529](https://github.com/rh-hideout/pokeemerald-expansion/pull/5529)
|
||||
* Fixed broken Starting Terrain test by @hedara90 in [#5582](https://github.com/rh-hideout/pokeemerald-expansion/pull/5582)
|
||||
|
||||
## 📚 Documentation 📚
|
||||
* Add changelog header in PR template to aid automation by @AsparagusEduardo in [#5539](https://github.com/rh-hideout/pokeemerald-expansion/pull/5539)
|
||||
* Added compressed OW mon VRAM notice in config file by @AsparagusEduardo in [#5599](https://github.com/rh-hideout/pokeemerald-expansion/pull/5599)
|
||||
* Update `README.md` to link to `INSTALL.md` by @Pawkkie in [#5720](https://github.com/rh-hideout/pokeemerald-expansion/pull/5720)
|
||||
* Fixes minor move desc errors by @AlexOn1ine in [#5728](https://github.com/rh-hideout/pokeemerald-expansion/pull/5728)
|
||||
|
||||
## 📦 Branch Synchronisation 📦
|
||||
### pret
|
||||
* 15th of October in [#5527](https://github.com/rh-hideout/pokeemerald-expansion/pull/5527)
|
||||
* Slight storage system documentation by @luckytyphlosion in [pret#2024](https://github.com/pret/pokeemerald/pull/2024)
|
||||
* Clean up defines lacking spaces by @Bassoonian in [pret#2025](https://github.com/pret/pokeemerald/pull/2025)
|
||||
* UB fix in battle_transition.c by @cawtds in [pret#2007](https://github.com/pret/pokeemerald/pull/2007)
|
||||
* preproc: support arbitrary expressions in enums by @mrgriffin in [pret#2026](https://github.com/pret/pokeemerald/pull/2026)
|
||||
* [Build System Rewrite] Refactored `Makefile` by @Icedude907 in [pret#1950](https://github.com/pret/pokeemerald/pull/1950)
|
||||
* Fixed incorrect point macros in contest_ai_script.inc by @NTx86 in [pret#2028](https://github.com/pret/pokeemerald/pull/2028)
|
||||
* [Build System Rewrite] Massive build speed improvement via scaninc changes by @Icedude907 in [pret#1954](https://github.com/pret/pokeemerald/pull/1954)
|
||||
* [Build System Rewrite] Improved audio rules by @Icedude907 in [pret#1957](https://github.com/pret/pokeemerald/pull/1957)
|
||||
* Update INSTALL.md to state that Windows 8 is no longer supported by Microsoft by @luciofstars in [pret#2029](https://github.com/pret/pokeemerald/pull/2029)
|
||||
* Update pull_request_template.md to include Discord username update by @luciofstars in [pret#2030](https://github.com/pret/pokeemerald/pull/2030)
|
||||
* remove ScriptContext_Enable from secret_base.h by @DizzyEggg in [pret#2032](https://github.com/pret/pokeemerald/pull/2032)
|
||||
* Remove gflib by @Kurausukun in [pret#2033](https://github.com/pret/pokeemerald/pull/2033)
|
||||
* Minor toolchain fixes by @GriffinRichards in [pret#2031](https://github.com/pret/pokeemerald/pull/2031)
|
||||
* Bugfix for cable car hikerGraphicsIds array by @Scyrous in [pret#2039](https://github.com/pret/pokeemerald/pull/2039)
|
||||
* Remove explicit symbol sizes in sym_common.txt by @GriffinRichards in [pret#2038](https://github.com/pret/pokeemerald/pull/2038)
|
||||
* Ignore mGBA screenshots by @Jaizu in [pret#2041](https://github.com/pret/pokeemerald/pull/2041)
|
||||
* Replaced copyright magic numbers in intro.c with constants by @pkmnsnfrn in [pret#2035](https://github.com/pret/pokeemerald/pull/2035)
|
||||
* Fixed typo: | should be || in Task_TryFieldPoisonWhiteOut by @AreaZR in [pret#2044](https://github.com/pret/pokeemerald/pull/2044)
|
||||
* [preproc] support C23 enum underlying type syntax by @mrgriffin in [pret#2043](https://github.com/pret/pokeemerald/pull/2043)
|
||||
* Fixed deleting files with dependency files by @mid-kid in [pret#2045](https://github.com/pret/pokeemerald/pull/2045)
|
||||
* Remove unnecessary looping for rule generation and unroll macros by @mid-kid in [pret#2046](https://github.com/pret/pokeemerald/pull/2046)
|
||||
* Get rid of common syms by @luckytyphlosion in [pret#2040](https://github.com/pret/pokeemerald/pull/2040)
|
||||
* Bugfix for cable car hikerGraphicsIds array by @Scyrous in [pret#2039](https://github.com/pret/pokeemerald/pull/2039)
|
||||
* UB fix in battle_transition.c by @cawtds in [pret#2007](https://github.com/pret/pokeemerald/pull/2007)
|
||||
* Fixed typo: | should be || in Task_TryFieldPoisonWhiteOut by @AreaZR in [pret#2044](https://github.com/pret/pokeemerald/pull/2044)
|
||||
* Get rid of common syms by @luckytyphlosion in [pret#2040](https://github.com/pret/pokeemerald/pull/2040)
|
||||
* Fixed incorrect point macros in contest_ai_script.inc by @NTx86 in [pret#2028](https://github.com/pret/pokeemerald/pull/2028)
|
||||
* 5th of November in [#5644](https://github.com/rh-hideout/pokeemerald-expansion/pull/5644)
|
||||
* Added define value for bard sound length by @fdeblasio in [pret#2052](https://github.com/pret/pokeemerald/pull/2052)
|
||||
* Silence 'Nothing to be done for generated' messages by @GriffinRichards in [pret#2059](https://github.com/pret/pokeemerald/pull/2059)
|
||||
* Lay out emerald version png horizontally by @GriffinRichards in [pret#2062](https://github.com/pret/pokeemerald/pull/2062)
|
||||
* 29 of November in [#5736](https://github.com/rh-hideout/pokeemerald-expansion/pull/5736)
|
||||
* Remove usage of gHeap in sSpritePalettes_ContestantsTurnBlinkEffect by @Lactozilla in [pret#2064](https://github.com/pret/pokeemerald/pull/2064)
|
||||
* BUGFIX: Fix Counter and Mirror Coat checking the wrong category by @surtr-games in [pret#2066](https://github.com/pret/pokeemerald/pull/2066)
|
||||
* Add TRY_DRAW_SPOT_PIXEL by @GriffinRichards in [pret#2055](https://github.com/pret/pokeemerald/pull/2055)
|
||||
* Added extra encoded character support by @AsparagusEduardo in [pret#2050](https://github.com/pret/pokeemerald/pull/2050)
|
||||
### merrp's followers
|
||||
* Merrp merge (12th of October) by @Bassoonian in [#5514](https://github.com/rh-hideout/pokeemerald-expansion/pull/5514)
|
||||
- d80190fe105eee12bbf74ae29647ac909084d35c fix: Dig in Sealed Chamber no longer freezes follower.
|
||||
|
||||
## New Contributors
|
||||
* @AERDU made their first contribution in [#5666](https://github.com/rh-hideout/pokeemerald-expansion/pull/5666)
|
||||
|
||||
**Full Changelog**: https://github.com/rh-hideout/pokeemerald-expansion/compare/expansion/1.9.3...expansion/1.9.4
|
||||
|
||||
<!--Last PR: 5603-->
|
||||
<!--Used to keep track of the last PR merged in case new ones come in before the changelog is done.-->
|
||||
54
docs/scope.md
Normal file
@ -0,0 +1,54 @@
|
||||
# Document Purpose
|
||||
|
||||
This document is a guide for contributors and Senate to decide if a feature is within "scope" for pokeemerald-expansion. If a feature is not in scope, then it should not be merged. Even if an opened PR is within scope, this does not mean it will be merged, as acceptance criteria will often come down to the details of the implementation.
|
||||
|
||||
# Definitions
|
||||
|
||||
* **Showdown Supported (SS)**: A core series game who's metagame can be played on Showdown.
|
||||
* Notably, this is every [core series game](https://bulbapedia.bulbagarden.net/wiki/Core_series#List_of_core_series_games) except Pokémon Legends: Arceus.
|
||||
* **Base Expansion Version**: "A .gba file built from an unmodified `master` or `upcoming` branch of `pokeemerald-expansion`.
|
||||
* **Vanilla Emerald Version**: A .gba file built from an unmodified `master` branch of pret's `pokeemerald`.
|
||||
|
||||
# Guidelines
|
||||
|
||||
A pull request meets the scope criteria if:
|
||||
* The feature does not belong to a category considered “not in scope” AND
|
||||
* The feature belongs to a category considered “in scope”
|
||||
|
||||
## In Scope Categories
|
||||
|
||||
1. **SS Species:** Adds Species that have appeared in a Showdown-supported title
|
||||
2. **SS Moves:** Adds Moves and Move Animations that have appeared in a Showdown-supported title
|
||||
3. **SS Abilities:** Adds Abilities that have appeared in a Showdown-supported title
|
||||
4. **SS Items:** Adds Items that have appeared in a Showdown-supported title
|
||||
5. **SS Gimmicks:** Adds Gimmicks that have appeared in a Showdown-supported title
|
||||
6. **SS Battle Types:** Adds Special Battle Types that have appeared in a Showdown-supported title
|
||||
7. **SS Battle Mechanics:** Adds mechanical battle changes that have appeared in a Showdown-supported title
|
||||
8. **Improve Battle AI:** Improve the Battle AI in a way that allows it to approach the skill and capability of a human competitive player
|
||||
9. **Base Link Compatibility:** Link compatibility with base
|
||||
10. **SS Overworld / Menu Updates:** Replicate overworld or menu changes from Showdown-supported Pokémon titles
|
||||
11. **Speed Up:** Speed up the player experience of features found in base
|
||||
12. **Compression:** Automatically compress assets
|
||||
13. **Novel Experience:** Adds a novel experience included in another Showdown Supported title
|
||||
15. **Helper Features:** Eases the addition or inclusion of any of the aforementioned
|
||||
|
||||
## Not In Scope Categories
|
||||
|
||||
1. **Non-SS Species**: Adds Species that have NOT appeared in a Showdown-supported title
|
||||
2. **Non-SS Moves**: Adds Moves and Move Animations that have NOT appeared in a Showdown-supported title
|
||||
3. **Non-SS Abilities**: Adds Abilities that have NOT appeared in a Showdown-supported title
|
||||
4. **Non-SS Items**: Adds Items that have NOT appeared in a Showdown-supported title
|
||||
5. **Non-SS Gimmicks**: Adds Gimmicks that have NOT appeared in a Showdown-supported title
|
||||
6. **Non-SS Battle Types**: Adds Special Battle Types that have NOT appeared in a Showdown-supported title
|
||||
7. **Duplicate Feature UI**: Adds functionality that duplicates the core functionality of an existing vanilla feature
|
||||
8. **Vanilla Link Compatibility**: Link compatibility with vanilla
|
||||
|
||||
## Discussion Required Categories
|
||||
|
||||
Pull Requests that fall into this category should be brought up to maintainers, who will discuss and vote as to whether or not the feature is considered in scope. Considerations for acceptance may include invasiveness of implementation, popularity, ease of maintenance, etc.
|
||||
|
||||
1. **Developer Ease of Use:** Lowers barrier of entry for developers to use existing behavior
|
||||
2. **Fangame Features:** Adds a popular feature from other fangames
|
||||
3. **Popular Non-SS Features:** Exceptions can be made for uniquely popular or requested features (Drowsy, PLA Legend Plate, etc.)
|
||||
4. **External Program**: External programs like poryscript, porymoves, etc.
|
||||
|
||||
@ -134,7 +134,10 @@ Affects when the AI chooses to switch. AI will make smarter decisions about when
|
||||
* The current mon loses the 1v1 quickly and has at least ½ HP, or ¼ and Regenerator
|
||||
|
||||
## `AI_FLAG_ACE_POKEMON`
|
||||
Marks the last Pokemon in the party as the Ace Pokemon. It will not be used unless it is the last one remaining, or is forced to be switched in (Roar, U-Turn with 1 mon remaining, etc.)
|
||||
Marks the last Pokemon in the party as the Ace Pokemon. It will not be used unless it is the last one remaining, or is forced to be switched in (Roar, U-Turn with 1 mon remaining, etc.). If you are challenged by two different trainers at the same time, only the ones with this flag will have Ace Pokémon. For example vs one trainer with `AI_FLAG_ACE_POKEMON`and the other without, there will be a total of 1 Ace Pokémon.
|
||||
|
||||
## `AI_FLAG_DOUBLE_ACE_POKEMON`
|
||||
Marks the last two Pokémon in the party as Ace Pokémon, with the same behaviour as `AI_FLAG_ACE_POKEMON`. Intented for double battles where you battle one trainer id that represents two trainers, ie Twins, Couples. If you apply this flag to trainers outside of double battles or in cases where two trainers can challenge you at the same time, it has the same behaviour. For example vs two trainers with `AI_FLAG_DOUBLE_ACE_POKEMON` there will be a total of 4 Ace Pokémon.
|
||||
|
||||
## `AI_FLAG_OMNISCIENT`
|
||||
AI has full knowledge of player moves, abilities, and hold items, and can use this knowledge when making decisions.
|
||||
@ -162,3 +165,6 @@ AI always assumes it will roll the lowest possible result when comparing damage
|
||||
|
||||
## `AI_FLAG_SEQUENCE_SWITCHING`
|
||||
AI will always switch out after a KO in exactly party order as defined in the trainer data (ie. slot 1, then 2, then 3, etc.). The AI will never switch out mid-battle unless forced to (Roar etc.). If the AI uses a move that requires a switch where it makes a decision about what to send in (U-Turn etc.), it will always switch out into the lowest available party index.
|
||||
|
||||
## `AI_FLAG_WEIGH_ABILITY_PREDICTION`
|
||||
AI will predict the player's ability based to its aiRating. Without this flag the AI randomly assumes an ability with an even distribution between all possible abilities until one is confirmed. With this flag, it instead guesses proportionally to each ability's aiRating, making it far more likely to guess an ability like Water Absorb than Damp if both are options.
|
||||
|
||||
1163
docs/tutorials/how_to_new_pokemon_1_10_0.md
Normal file
@ -44,7 +44,7 @@ SINGLE_BATTLE_TEST("Stun Spore inflicts paralysis")
|
||||
TURN { MOVE(player, MOVE_STUN_SPORE); } // 3.
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_STUN_SPORE, player);
|
||||
MESSAGE("Foe Wobbuffet is paralyzed! It may be unable to move!"); // 4
|
||||
MESSAGE("The opposing Wobbuffet is paralyzed, so it may be unable to move!"); // 4
|
||||
STATUS_ICON(opponent, paralysis: TRUE); // 4.
|
||||
}
|
||||
}
|
||||
@ -86,7 +86,7 @@ SINGLE_BATTLE_TEST("Stun Spore does not affect Grass-types")
|
||||
TURN { MOVE(player, MOVE_STUN_SPORE); } // 3.
|
||||
} SCENE {
|
||||
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_STUN_SPORE, player); // 4.
|
||||
MESSAGE("It doesn't affect Foe Oddish…"); // 5.
|
||||
MESSAGE("It doesn't affect the opposing Oddish…"); // 5.
|
||||
}
|
||||
}
|
||||
```
|
||||
@ -226,7 +226,7 @@ SINGLE_BATTLE_TEST("Paralysis has a 25% chance of skipping the turn")
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_CELEBRATE); }
|
||||
} SCENE {
|
||||
MESSAGE("Wobbuffet is paralyzed! It can't move!");
|
||||
MESSAGE("Wobbuffet couldn't move because it's paralyzed!");
|
||||
}
|
||||
}
|
||||
```
|
||||
@ -428,7 +428,7 @@ Spaces in pattern match newlines (\n, \l, and \p) in the message.
|
||||
Often used to check that a battler took its turn but it failed, e.g.:
|
||||
```
|
||||
MESSAGE("Wobbuffet used Dream Eater!");
|
||||
MESSAGE("Foe Wobbuffet wasn't affected!");
|
||||
MESSAGE("The opposing Wobbuffet wasn't affected!");
|
||||
```
|
||||
|
||||
### `STATUS_ICON`
|
||||
@ -452,7 +452,7 @@ Causes the test to fail if the `SCENE` command succeeds before the following com
|
||||
```
|
||||
// Our Wobbuffet does not Celebrate before the foe's.
|
||||
NOT MESSAGE("Wobbuffet used Celebrate!");
|
||||
MESSAGE("Foe Wobbuffet used Celebrate!");
|
||||
MESSAGE("The opposing Wobbuffet used Celebrate!");
|
||||
```
|
||||
**NOTE**: If this condition fails, the viewable ROM freezes at the NOT command.
|
||||
**WARNING: `NOT` is an alias of `NONE_OF`, so it behaves surprisingly when applied to multiple commands wrapped in braces.**
|
||||
@ -467,7 +467,7 @@ Causes the test to fail unless one of the `SCENE` commands succeeds.
|
||||
```
|
||||
ONE_OF {
|
||||
MESSAGE("Wobbuffet used Celebrate!");
|
||||
MESSAGE("Wobbuffet is paralyzed! It can't move!");
|
||||
MESSAGE("Wobbuffet couldn't move because it's paralyzed!");
|
||||
}
|
||||
```
|
||||
|
||||
@ -482,9 +482,9 @@ Causes the test to fail if one of the `SCENE` commands succeeds before the comma
|
||||
// Our Wobbuffet does not move before the foe's.
|
||||
NONE_OF {
|
||||
MESSAGE("Wobbuffet used Celebrate!");
|
||||
MESSAGE("Wobbuffet is paralyzed! It can't move!");
|
||||
MESSAGE("Wobbuffet couldn't move because it's paralyzed!");
|
||||
}
|
||||
MESSAGE("Foe Wobbuffet used Celebrate!");
|
||||
MESSAGE("The opposing Wobbuffet used Celebrate!");
|
||||
```
|
||||
|
||||
### `PLAYER_PARTY`
|
||||
|
||||
BIN
graphics/balls/strange.png
Normal file
|
After Width: | Height: | Size: 358 B |
BIN
graphics/battle_anims/sprites/pinkvio_orb.png
Normal file
|
After Width: | Height: | Size: 4.9 KiB |
BIN
graphics/fonts/latin_short_narrower.png
Normal file
|
After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 4.3 KiB |
19
graphics/items/icon_palettes/strange_ball.pal
Normal file
@ -0,0 +1,19 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
180 180 180
|
||||
164 226 197
|
||||
238 242 230
|
||||
139 170 180
|
||||
8 113 115
|
||||
0 157 156
|
||||
106 222 172
|
||||
41 182 189
|
||||
90 206 172
|
||||
90 182 180
|
||||
8 0 0
|
||||
65 190 189
|
||||
115 194 189
|
||||
0 117 131
|
||||
0 129 131
|
||||
0 12 0
|
||||
BIN
graphics/items/icons/strange_ball.png
Normal file
|
After Width: | Height: | Size: 304 B |
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
|
||||
|
Before Width: | Height: | Size: 514 B After Width: | Height: | Size: 514 B |
|
Before Width: | Height: | Size: 815 B After Width: | Height: | Size: 815 B |
|
Before Width: | Height: | Size: 484 B After Width: | Height: | Size: 484 B |
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
|
||||
|
Before Width: | Height: | Size: 581 B After Width: | Height: | Size: 581 B |
|
Before Width: | Height: | Size: 713 B After Width: | Height: | Size: 713 B |
|
Before Width: | Height: | Size: 418 B After Width: | Height: | Size: 418 B |
|
Before Width: | Height: | Size: 411 B After Width: | Height: | Size: 410 B |