Merge branch 'master' of https://github.com/pret/pokeemerald into build-music-config
1
.gitignore
vendored
@ -21,7 +21,6 @@ sound/**/*.bin
|
||||
sound/songs/midi/*.s
|
||||
tools/agbcc
|
||||
*.map
|
||||
*.ld
|
||||
*.bat
|
||||
*.dump
|
||||
*.sa*
|
||||
|
||||
29
INSTALL.md
@ -33,27 +33,23 @@ WSL1 is the preferred terminal to build **pokeemerald**. The following instructi
|
||||
- Otherwise, **open WSL** and go to [Choosing where to store pokeemerald (WSL1)](#Choosing-where-to-store-pokeemerald-WSL1).
|
||||
|
||||
### Installing WSL1
|
||||
1. Open [Windows Powershell **as Administrator**](https://i.imgur.com/QKmVbP9.png), and run the following command (Right Click or Shift+Insert is paste in the Powershell).
|
||||
1. Open [Windows Powershell **as Administrator**](https://i.imgur.com/QKmVbP9.png), and run the following commands (Right Click or Shift+Insert is paste in the Powershell).
|
||||
|
||||
```powershell
|
||||
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
|
||||
wsl --install -d Ubuntu --enable-wsl1
|
||||
```
|
||||
|
||||
2. Once the process finishes, restart your machine.
|
||||
|
||||
3. The next step is to choose and install a Linux distribution from the Microsoft Store. The following instructions will assume Ubuntu as the Linux distribution of choice.
|
||||
3. Open Windows Powershell **as Administrator** again (after restarting), and run the following command to configure Ubuntu to use WSL1.
|
||||
|
||||
```powershell
|
||||
wsl --set-version Ubuntu 1
|
||||
```
|
||||
<details>
|
||||
<summary><i>Note for advanced users...</i></summary>
|
||||
<summary><i>Note...</i></summary>
|
||||
|
||||
> You can pick a preferred Linux distribution, but setup instructions may differ. Debian should work with the given instructions, but has not been tested.
|
||||
</details>
|
||||
|
||||
4. Open the [Microsoft Store Linux Selection](https://aka.ms/wslstore), click Ubuntu, then click Get, which will install the Ubuntu distribution.
|
||||
<details>
|
||||
<summary><i>Notes...</i></summary>
|
||||
|
||||
> Note 1: If a dialog pops up asking for you to sign into a Microsoft Account, then just close the dialog.
|
||||
> Note 2: If the link does not work, then open the Microsoft Store manually, and search for the Ubuntu app (choose the one with no version number).
|
||||
> WSL may open automatically after restarting, but you can ignore it for now.
|
||||
</details>
|
||||
|
||||
### Setting up WSL1
|
||||
@ -354,6 +350,13 @@ Then proceed to [Choosing where to store pokeemerald (Linux)](#choosing-where-to
|
||||
> [install devkitARM on Arch Linux](#installing-devkitarm-on-arch-linux).
|
||||
</details>
|
||||
|
||||
### NixOS
|
||||
Run the following command to start an interactive shell with the necessary packages:
|
||||
```bash
|
||||
nix-shell -p pkgsCross.arm-embedded.stdenv.cc git pkg-config libpng
|
||||
```
|
||||
Then proceed to [Choosing where to store pokeemerald (Linux)](#choosing-where-to-store-pokeemerald-linux).
|
||||
|
||||
### Other distributions
|
||||
_(Specific instructions for other distributions would be greatly appreciated!)_
|
||||
|
||||
|
||||
437
Makefile
@ -1,50 +1,53 @@
|
||||
TOOLCHAIN := $(DEVKITARM)
|
||||
COMPARE ?= 0
|
||||
|
||||
ifeq (compare,$(MAKECMDGOALS))
|
||||
COMPARE := 1
|
||||
endif
|
||||
|
||||
# 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
|
||||
endif
|
||||
|
||||
PREFIX := arm-none-eabi-
|
||||
OBJCOPY := $(PREFIX)objcopy
|
||||
OBJDUMP := $(PREFIX)objdump
|
||||
AS := $(PREFIX)as
|
||||
|
||||
LD := $(PREFIX)ld
|
||||
|
||||
# note: the makefile must be set up so MODERNCC is never called
|
||||
# if MODERN=0
|
||||
MODERNCC := $(PREFIX)gcc
|
||||
PATH_MODERNCC := PATH="$(PATH)" $(MODERNCC)
|
||||
|
||||
ifeq ($(OS),Windows_NT)
|
||||
EXE := .exe
|
||||
else
|
||||
EXE :=
|
||||
endif
|
||||
|
||||
# GBA rom header
|
||||
TITLE := POKEMON EMER
|
||||
GAME_CODE := BPEE
|
||||
MAKER_CODE := 01
|
||||
REVISION := 0
|
||||
MODERN ?= 0
|
||||
|
||||
# `File name`.gba ('_modern' will be appended to the modern builds)
|
||||
FILE_NAME := pokeemerald
|
||||
BUILD_DIR := build
|
||||
|
||||
# Builds the ROM using a modern compiler
|
||||
MODERN ?= 0
|
||||
# Compares the ROM to a checksum of the original - only makes sense using when non-modern
|
||||
COMPARE ?= 0
|
||||
|
||||
ifeq (modern,$(MAKECMDGOALS))
|
||||
MODERN := 1
|
||||
endif
|
||||
ifeq (compare,$(MAKECMDGOALS))
|
||||
COMPARE := 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
|
||||
endif
|
||||
|
||||
PREFIX := arm-none-eabi-
|
||||
OBJCOPY := $(PREFIX)objcopy
|
||||
OBJDUMP := $(PREFIX)objdump
|
||||
AS := $(PREFIX)as
|
||||
LD := $(PREFIX)ld
|
||||
|
||||
EXE :=
|
||||
ifeq ($(OS),Windows_NT)
|
||||
EXE := .exe
|
||||
endif
|
||||
|
||||
# use arm-none-eabi-cpp for macOS
|
||||
# as macOS's default compiler is clang
|
||||
@ -63,22 +66,29 @@ else
|
||||
CPP := $(PREFIX)cpp
|
||||
endif
|
||||
|
||||
ROM_NAME := pokeemerald.gba
|
||||
ROM_NAME := $(FILE_NAME).gba
|
||||
OBJ_DIR_NAME := $(BUILD_DIR)/emerald
|
||||
MODERN_ROM_NAME := $(FILE_NAME)_modern.gba
|
||||
MODERN_OBJ_DIR_NAME := $(BUILD_DIR)/modern
|
||||
|
||||
ELF_NAME := $(ROM_NAME:.gba=.elf)
|
||||
MAP_NAME := $(ROM_NAME:.gba=.map)
|
||||
OBJ_DIR_NAME := build/emerald
|
||||
|
||||
MODERN_ROM_NAME := pokeemerald_modern.gba
|
||||
MODERN_ELF_NAME := $(MODERN_ROM_NAME:.gba=.elf)
|
||||
MODERN_MAP_NAME := $(MODERN_ROM_NAME:.gba=.map)
|
||||
MODERN_OBJ_DIR_NAME := build/modern
|
||||
|
||||
SHELL := /bin/bash -o pipefail
|
||||
|
||||
ELF = $(ROM:.gba=.elf)
|
||||
MAP = $(ROM:.gba=.map)
|
||||
SYM = $(ROM:.gba=.sym)
|
||||
# Pick our active variables
|
||||
ifeq ($(MODERN),0)
|
||||
ROM := $(ROM_NAME)
|
||||
OBJ_DIR := $(OBJ_DIR_NAME)
|
||||
else
|
||||
ROM := $(MODERN_ROM_NAME)
|
||||
OBJ_DIR := $(MODERN_OBJ_DIR_NAME)
|
||||
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
|
||||
@ -94,48 +104,53 @@ DATA_ASM_BUILDDIR = $(OBJ_DIR)/$(DATA_ASM_SUBDIR)
|
||||
SONG_BUILDDIR = $(OBJ_DIR)/$(SONG_SUBDIR)
|
||||
MID_BUILDDIR = $(OBJ_DIR)/$(MID_SUBDIR)
|
||||
|
||||
SHELL := bash -o pipefail
|
||||
|
||||
# Set flags for tools
|
||||
ASFLAGS := -mcpu=arm7tdmi --defsym MODERN=$(MODERN)
|
||||
|
||||
INCLUDE_DIRS := include
|
||||
INCLUDE_CPP_ARGS := $(INCLUDE_DIRS:%=-iquote %)
|
||||
INCLUDE_SCANINC_ARGS := $(INCLUDE_DIRS:%=-I %)
|
||||
|
||||
O_LEVEL ?= 2
|
||||
CPPFLAGS := $(INCLUDE_CPP_ARGS) -iquote $(GFLIB_SUBDIR) -Wno-trigraphs -DMODERN=$(MODERN)
|
||||
ifeq ($(MODERN),0)
|
||||
CC1 := tools/agbcc/bin/agbcc$(EXE)
|
||||
override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Werror -O2 -fhex-asm -g
|
||||
ROM := $(ROM_NAME)
|
||||
OBJ_DIR := $(OBJ_DIR_NAME)
|
||||
LIBPATH := -L ../../tools/agbcc/lib
|
||||
LIB := $(LIBPATH) -lgcc -lc -L../../libagbsyscall -lagbsyscall
|
||||
CPPFLAGS += -I tools/agbcc/include -I tools/agbcc -nostdinc -undef
|
||||
CC1 := tools/agbcc/bin/agbcc$(EXE)
|
||||
override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Werror -O$(O_LEVEL) -fhex-asm -g
|
||||
LIBPATH := -L ../../tools/agbcc/lib
|
||||
LIB := $(LIBPATH) -lgcc -lc -L../../libagbsyscall -lagbsyscall
|
||||
else
|
||||
CC1 = $(shell $(PATH_MODERNCC) --print-prog-name=cc1) -quiet
|
||||
override CFLAGS += -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -Wno-pointer-to-int-cast
|
||||
ROM := $(MODERN_ROM_NAME)
|
||||
OBJ_DIR := $(MODERN_OBJ_DIR_NAME)
|
||||
LIBPATH := -L "$(dir $(shell $(PATH_MODERNCC) -mthumb -print-file-name=libgcc.a))" -L "$(dir $(shell $(PATH_MODERNCC) -mthumb -print-file-name=libnosys.a))" -L "$(dir $(shell $(PATH_MODERNCC) -mthumb -print-file-name=libc.a))"
|
||||
LIB := $(LIBPATH) -lc -lnosys -lgcc -L../../libagbsyscall -lagbsyscall
|
||||
# Note: The makefile must be set up to not call these if modern == 0
|
||||
MODERNCC := $(PREFIX)gcc
|
||||
PATH_MODERNCC := PATH="$(PATH)" $(MODERNCC)
|
||||
CC1 := $(shell $(PATH_MODERNCC) --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
|
||||
LIBPATH := -L "$(dir $(shell $(PATH_MODERNCC) -mthumb -print-file-name=libgcc.a))" -L "$(dir $(shell $(PATH_MODERNCC) -mthumb -print-file-name=libnosys.a))" -L "$(dir $(shell $(PATH_MODERNCC) -mthumb -print-file-name=libc.a))"
|
||||
LIB := $(LIBPATH) -lc -lnosys -lgcc -L../../libagbsyscall -lagbsyscall
|
||||
endif
|
||||
# Enable debug info if set
|
||||
ifeq ($(DINFO),1)
|
||||
override CFLAGS += -g
|
||||
endif
|
||||
|
||||
CPPFLAGS := -iquote include -iquote $(GFLIB_SUBDIR) -Wno-trigraphs -DMODERN=$(MODERN)
|
||||
ifneq ($(MODERN),1)
|
||||
CPPFLAGS += -I tools/agbcc/include -I tools/agbcc -nostdinc -undef
|
||||
endif
|
||||
|
||||
LDFLAGS = -Map ../../$(MAP)
|
||||
|
||||
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)
|
||||
# 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)
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
@ -145,38 +160,36 @@ MAKEFLAGS += --no-print-directory
|
||||
.SECONDARY:
|
||||
# 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 mostlyclean clean-tools $(TOOLDIRS) libagbsyscall modern tidymodern tidynonmodern
|
||||
RULES_NO_SCAN += libagbsyscall clean clean-assets tidy tidymodern tidynonmodern generated clean-generated
|
||||
.PHONY: all rom modern compare
|
||||
.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 modern libagbsyscall syms,$(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, mostlyclean, clean-tools, $(TOOLDIRS), tidymodern, tidynonmodern don't even build the ROM
|
||||
# libagbsyscall does its own thing
|
||||
ifeq (,$(filter-out clean tidy tools mostlyclean clean-tools $(TOOLDIRS) tidymodern tidynonmodern 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)
|
||||
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.
|
||||
$(call infoshell, $(MAKE) -f make_tools.mk)
|
||||
# Oh and also generate mapjson sources before we use `SCANINC`.
|
||||
$(call infoshell, $(MAKE) generated)
|
||||
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))
|
||||
@ -184,7 +197,7 @@ C_OBJS := $(patsubst $(C_SUBDIR)/%.c,$(C_BUILDDIR)/%.o,$(C_SRCS))
|
||||
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)
|
||||
@ -207,41 +220,29 @@ OBJS_REL := $(patsubst $(OBJ_DIR)/%,%,$(OBJS))
|
||||
|
||||
SUBDIRS := $(sort $(dir $(OBJS)))
|
||||
$(shell mkdir -p $(SUBDIRS))
|
||||
endif
|
||||
|
||||
AUTO_GEN_TARGETS :=
|
||||
|
||||
all: rom
|
||||
|
||||
tools: $(TOOLDIRS)
|
||||
|
||||
syms: $(SYM)
|
||||
|
||||
$(TOOLDIRS):
|
||||
@$(MAKE) -C $@
|
||||
# Pretend rules that are actually flags defer to `make all`
|
||||
modern: all
|
||||
compare: all
|
||||
|
||||
# Other rules
|
||||
rom: $(ROM)
|
||||
ifeq ($(COMPARE),1)
|
||||
@$(SHA1) rom.sha1
|
||||
endif
|
||||
|
||||
# For contributors to make sure a change didn't affect the contents of the ROM.
|
||||
compare: all
|
||||
syms: $(SYM)
|
||||
|
||||
clean: mostlyclean clean-tools
|
||||
clean: tidy clean-tools clean-generated clean-assets
|
||||
@$(MAKE) clean -C libagbsyscall
|
||||
|
||||
clean-tools:
|
||||
@$(foreach tooldir,$(TOOLDIRS),$(MAKE) clean -C $(tooldir);)
|
||||
|
||||
mostlyclean: tidynonmodern tidymodern
|
||||
find sound -iname '*.bin' -exec rm {} +
|
||||
clean-assets:
|
||||
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
|
||||
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 {} +
|
||||
rm -f $(AUTO_GEN_TARGETS)
|
||||
@$(MAKE) clean -C libagbsyscall
|
||||
|
||||
tidy: tidynonmodern tidymodern
|
||||
|
||||
@ -253,16 +254,15 @@ tidymodern:
|
||||
rm -f $(MODERN_ROM_NAME) $(MODERN_ELF_NAME) $(MODERN_MAP_NAME)
|
||||
rm -rf $(MODERN_OBJ_DIR_NAME)
|
||||
|
||||
ifneq ($(MODERN),0)
|
||||
$(C_BUILDDIR)/berry_crush.o: override CFLAGS += -Wno-address-of-packed-member
|
||||
endif
|
||||
|
||||
# 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
|
||||
|
||||
generated: $(AUTO_GEN_TARGETS)
|
||||
|
||||
%.s: ;
|
||||
%.png: ;
|
||||
%.pal: ;
|
||||
@ -276,117 +276,98 @@ include audio_rules.mk
|
||||
%.lz: % ; $(GFX) $< $@
|
||||
%.rl: % ; $(GFX) $< $@
|
||||
|
||||
# NOTE: Tools must have been built prior (FIXME)
|
||||
generated: tools $(AUTO_GEN_TARGETS)
|
||||
clean-generated:
|
||||
-rm -f $(AUTO_GEN_TARGETS)
|
||||
|
||||
ifeq ($(MODERN),0)
|
||||
$(C_BUILDDIR)/libc.o: CC1 := tools/agbcc/bin/old_agbcc$(EXE)
|
||||
$(C_BUILDDIR)/libc.o: CC1 := $(TOOLS_DIR)/agbcc/bin/old_agbcc$(EXE)
|
||||
$(C_BUILDDIR)/libc.o: CFLAGS := -O2
|
||||
|
||||
$(C_BUILDDIR)/siirtc.o: CFLAGS := -mthumb-interwork
|
||||
|
||||
$(C_BUILDDIR)/agb_flash.o: CFLAGS := -O -mthumb-interwork
|
||||
$(C_BUILDDIR)/agb_flash_1m.o: CFLAGS := -O -mthumb-interwork
|
||||
$(C_BUILDDIR)/agb_flash_mx.o: CFLAGS := -O -mthumb-interwork
|
||||
|
||||
$(C_BUILDDIR)/m4a.o: CC1 := tools/agbcc/bin/old_agbcc$(EXE)
|
||||
|
||||
$(C_BUILDDIR)/record_mixing.o: CFLAGS += -ffreestanding
|
||||
$(C_BUILDDIR)/librfu_intr.o: CC1 := tools/agbcc/bin/agbcc_arm$(EXE)
|
||||
$(C_BUILDDIR)/librfu_intr.o: CC1 := $(TOOLS_DIR)/agbcc/bin/agbcc_arm$(EXE)
|
||||
$(C_BUILDDIR)/librfu_intr.o: CFLAGS := -O2 -mthumb-interwork -quiet
|
||||
else
|
||||
$(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
|
||||
endif
|
||||
|
||||
ifeq ($(DINFO),1)
|
||||
override CFLAGS += -g
|
||||
endif
|
||||
# Dependency rules (for the *.c & *.s sources to .o files)
|
||||
# Have to be explicit or else missing files won't be reported.
|
||||
|
||||
# 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.
|
||||
# It doesn't look like $(shell) can be deferred so there might not be a better way (Icedude_907: there is soon).
|
||||
|
||||
ifeq ($(SCAN_DEPS),1)
|
||||
ifeq ($(NODEP),1)
|
||||
$(C_BUILDDIR)/%.o: $(C_SUBDIR)/%.c
|
||||
ifeq (,$(KEEP_TEMPS))
|
||||
@echo "$(CC1) <flags> -o $@ $<"
|
||||
@$(CPP) $(CPPFLAGS) $< | $(PREPROC) $< charmap.txt -i | $(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
|
||||
# For C dependencies.
|
||||
# Args: $1 = Output file without extension (build/assets/src/data), $2 = Input file (src/data.c)
|
||||
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) $$< charmap.txt -i | $$(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
|
||||
$(call C_DEP_IMPL,$1,$2,$1)
|
||||
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)
|
||||
# Internal implementation details.
|
||||
# $1: Output file without extension, $2 input file, $3 temp path (if keeping)
|
||||
define C_DEP_IMPL
|
||||
$1.o: $2
|
||||
ifeq (,$(KEEP_TEMPS))
|
||||
@echo "$(CC1) <flags> -o $@ $<"
|
||||
@$(CPP) $(CPPFLAGS) $< | $(PREPROC) $< charmap.txt -i | $(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) $$< charmap.txt -i | $$(CC1) $$(CFLAGS) -o - - | cat - <(echo -e ".text\n\t.align\t2, 0") | $$(AS) $$(ASFLAGS) -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
|
||||
@$$(CPP) $$(CPPFLAGS) $$< -o $3.i
|
||||
@$$(PREPROC) $3.i charmap.txt | $$(CC1) $$(CFLAGS) -o $3.s
|
||||
@echo -e ".text\n\t.align\t2, 0\n" >> $3.s
|
||||
$$(AS) $$(ASFLAGS) -o $$@ $3.s
|
||||
endif
|
||||
$(call C_SCANINC,$1,$2)
|
||||
endef
|
||||
# Calls SCANINC to find dependencies
|
||||
define C_SCANINC
|
||||
ifneq ($(NODEP),1)
|
||||
$1.o: $2 $$(shell $(SCANINC) $(INCLUDE_SCANINC_ARGS) -I tools/agbcc/include -I gflib $2)
|
||||
endif
|
||||
endef
|
||||
$(foreach src, $(GFLIB_SRCS), $(eval $(call GFLIB_DEP,$(patsubst $(GFLIB_SUBDIR)/%.c,$(GFLIB_BUILDDIR)/%.o, $(src)),$(src),$(patsubst $(GFLIB_SUBDIR)/%.c,%, $(src)))))
|
||||
|
||||
# Create generic rules if no dependency scanning, else create the real rules
|
||||
ifeq ($(NODEP),1)
|
||||
$(eval $(call C_DEP,$(C_BUILDDIR)/%,$(C_SUBDIR)/%.c))
|
||||
$(eval $(call C_DEP,$(GFLIB_BUILDDIR)/%,$(GFLIB_SUBDIR)/%.c))
|
||||
else
|
||||
$(foreach src,$(C_SRCS),$(eval $(call C_DEP,$(OBJ_DIR)/$(basename $(src)),$(src))))
|
||||
$(foreach src,$(GFLIB_SRCS),$(eval $(call C_DEP,$(OBJ_DIR)/$(basename $(src)),$(src))))
|
||||
endif
|
||||
|
||||
ifeq ($(NODEP),1)
|
||||
$(C_BUILDDIR)/%.o: $(C_SUBDIR)/%.s
|
||||
$(PREPROC) $< charmap.txt | $(CPP) -I include - | $(AS) $(ASFLAGS) -o $@
|
||||
else
|
||||
define SRC_ASM_DATA_DEP
|
||||
$1: $2 $$(shell $(SCANINC) -I include -I "" $2)
|
||||
$$(PREPROC) $$< charmap.txt | $$(CPP) -I include - | $$(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
|
||||
# Similar methodology for Assembly files
|
||||
# $1: Output path without extension, $2: Input file (`*.s`)
|
||||
define ASM_DEP
|
||||
$1: $2 $$(shell $(SCANINC) -I include -I "" $2)
|
||||
$1.o: $2
|
||||
$$(AS) $$(ASFLAGS) -o $$@ $$<
|
||||
$(call ASM_SCANINC,$1,$2)
|
||||
endef
|
||||
# As above but first doing a preprocessor pass
|
||||
define ASM_DEP_PREPROC
|
||||
$1.o: $2
|
||||
$$(PREPROC) $$< charmap.txt | $$(CPP) $(INCLUDE_SCANINC_ARGS) - | $$(PREPROC) -ie $$< charmap.txt | $$(AS) $$(ASFLAGS) -o $$@
|
||||
$(call ASM_SCANINC,$1,$2)
|
||||
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 - | $(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))))
|
||||
define ASM_SCANINC
|
||||
ifneq ($(NODEP),1)
|
||||
$1.o: $2 $$(shell $(SCANINC) $(INCLUDE_SCANINC_ARGS) -I "" $2)
|
||||
endif
|
||||
endef
|
||||
|
||||
# Dummy rules or real rules
|
||||
ifeq ($(NODEP),1)
|
||||
$(eval $(call ASM_DEP,$(ASM_BUILDDIR)/%,$(ASM_SUBDIR)/%.s))
|
||||
$(eval $(call ASM_DEP_PREPROC,$(C_BUILDDIR)/%,$(C_SUBDIR)/%.s))
|
||||
$(eval $(call ASM_DEP_PREPROC,$(DATA_ASM_BUILDDIR)/%,$(DATA_ASM_SUBDIR)/%.s))
|
||||
else
|
||||
$(foreach src, $(ASM_SRCS), $(eval $(call ASM_DEP,$(src:%.s=$(OBJ_DIR)/%),$(src))))
|
||||
$(foreach src, $(C_ASM_SRCS), $(eval $(call ASM_DEP_PREPROC,$(src:%.s=$(OBJ_DIR)/%),$(src))))
|
||||
$(foreach src, $(REGULAR_DATA_ASM_SRCS), $(eval $(call ASM_DEP_PREPROC,$(src:%.s=$(OBJ_DIR)/%),$(src))))
|
||||
endif
|
||||
|
||||
$(OBJ_DIR)/sym_bss.ld: sym_bss.txt
|
||||
@ -398,34 +379,34 @@ $(OBJ_DIR)/sym_common.ld: sym_common.txt $(C_OBJS) $(wildcard common_syms/*.txt)
|
||||
$(OBJ_DIR)/sym_ewram.ld: sym_ewram.txt
|
||||
$(RAMSCRGEN) ewram_data $< ENGLISH > $@
|
||||
|
||||
# Linker script
|
||||
ifeq ($(MODERN),0)
|
||||
LD_SCRIPT := ld_script.txt
|
||||
LD_SCRIPT := ld_script.ld
|
||||
LD_SCRIPT_DEPS := $(OBJ_DIR)/sym_bss.ld $(OBJ_DIR)/sym_common.ld $(OBJ_DIR)/sym_ewram.ld
|
||||
else
|
||||
LD_SCRIPT := ld_script_modern.txt
|
||||
LD_SCRIPT := ld_script_modern.ld
|
||||
LD_SCRIPT_DEPS :=
|
||||
endif
|
||||
|
||||
$(OBJ_DIR)/ld_script.ld: $(LD_SCRIPT) $(LD_SCRIPT_DEPS)
|
||||
cd $(OBJ_DIR) && sed "s#tools/#../../tools/#g" ../../$(LD_SCRIPT) > ld_script.ld
|
||||
sed "s#tools/#tools/#g" $(LD_SCRIPT) > $(OBJ_DIR)/ld_script.ld
|
||||
|
||||
$(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 -o ../../$@ $(OBJS_REL) $(LIB)
|
||||
$(FIX) $@ -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent
|
||||
|
||||
$(ROM): $(ELF)
|
||||
$(OBJCOPY) -O binary $< $@
|
||||
$(FIX) $@ -p --silent
|
||||
|
||||
modern: all
|
||||
# Final rules
|
||||
|
||||
libagbsyscall:
|
||||
@$(MAKE) -C libagbsyscall TOOLCHAIN=$(TOOLCHAIN) MODERN=$(MODERN)
|
||||
|
||||
###################
|
||||
### Symbol file ###
|
||||
###################
|
||||
# Elf from object files
|
||||
$(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
|
||||
|
||||
# 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' > $@
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
#!/usr/bin/env bash
|
||||
|
||||
if [[ -d "$DEVKITARM/bin/" ]]; then
|
||||
OBJDUMP_BIN="$DEVKITARM/bin/arm-none-eabi-objdump"
|
||||
|
||||
@ -320,6 +320,9 @@ MossdeepCity_SpaceCenter_2F_EventScript_DefeatedMaxieTabitha::
|
||||
setobjectmovementtype LOCALID_SCIENTIST, MOVEMENT_TYPE_WANDER_AROUND
|
||||
addobject LOCALID_SCIENTIST
|
||||
fadescreen FADE_FROM_BLACK
|
||||
#ifdef BUGFIX
|
||||
releaseall
|
||||
#endif
|
||||
end
|
||||
|
||||
MossdeepCity_SpaceCenter_2F_EventScript_StevenFacePlayer::
|
||||
|
||||
@ -205,8 +205,8 @@ gScriptCmdTable::
|
||||
.4byte ScrCmd_nop1 @ 0xca
|
||||
.4byte ScrCmd_nop1 @ 0xcb
|
||||
.4byte ScrCmd_nop1 @ 0xcc
|
||||
.4byte ScrCmd_setmonmodernfatefulencounter @ 0xcd
|
||||
.4byte ScrCmd_checkmonmodernfatefulencounter @ 0xce
|
||||
.4byte ScrCmd_setmodernfatefulencounter @ 0xcd
|
||||
.4byte ScrCmd_checkmodernfatefulencounter @ 0xce
|
||||
.4byte ScrCmd_trywondercardscript @ 0xcf
|
||||
.4byte ScrCmd_nop1 @ 0xd0
|
||||
.4byte ScrCmd_warpspinenter @ 0xd1
|
||||
|
||||
@ -53,6 +53,9 @@ SafariZone_EventScript_ChoosePokeblock::
|
||||
special OpenPokeblockCaseOnFeeder
|
||||
waitstate
|
||||
goto_if_ne VAR_RESULT, 0xFFFF, SafariZone_EventScript_PokeblockPlaced
|
||||
#ifdef BUGFIX
|
||||
releaseall @ Only gets called from EventScript_PokeBlockFeeder which uses lockall.
|
||||
#endif
|
||||
end
|
||||
|
||||
SafariZone_EventScript_PokeblockPlaced::
|
||||
|
||||
@ -1,8 +1,11 @@
|
||||
#include "global.h"
|
||||
#include "malloc.h"
|
||||
|
||||
static void *sHeapStart;
|
||||
static u32 sHeapSize;
|
||||
|
||||
ALIGNED(4) EWRAM_DATA u8 gHeap[HEAP_SIZE] = {0};
|
||||
|
||||
#define MALLOC_SYSTEM_ID 0xA3A3
|
||||
|
||||
struct MemBlock {
|
||||
@ -52,18 +55,24 @@ void *AllocInternal(void *heapStart, u32 size)
|
||||
if (size & 3)
|
||||
size = 4 * ((size / 4) + 1);
|
||||
|
||||
for (;;) {
|
||||
for (;;)
|
||||
{
|
||||
// Loop through the blocks looking for unused block that's big enough.
|
||||
|
||||
if (!pos->flag) {
|
||||
if (!pos->flag)
|
||||
{
|
||||
foundBlockSize = pos->size;
|
||||
|
||||
if (foundBlockSize >= size) {
|
||||
if (foundBlockSize - size < 2 * sizeof(struct MemBlock)) {
|
||||
if (foundBlockSize >= size)
|
||||
{
|
||||
if (foundBlockSize - size < 2 * sizeof(struct MemBlock))
|
||||
{
|
||||
// The block isn't much bigger than the requested size,
|
||||
// so just use it.
|
||||
pos->flag = TRUE;
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
// The block is significantly bigger than the requested
|
||||
// size, so split the rest into a separate block.
|
||||
foundBlockSize -= sizeof(struct MemBlock);
|
||||
@ -95,15 +104,18 @@ void *AllocInternal(void *heapStart, u32 size)
|
||||
|
||||
void FreeInternal(void *heapStart, void *pointer)
|
||||
{
|
||||
if (pointer) {
|
||||
if (pointer)
|
||||
{
|
||||
struct MemBlock *head = (struct MemBlock *)heapStart;
|
||||
struct MemBlock *block = (struct MemBlock *)((u8 *)pointer - sizeof(struct MemBlock));
|
||||
block->flag = FALSE;
|
||||
|
||||
// If the freed block isn't the last one, merge with the next block
|
||||
// if it's not in use.
|
||||
if (block->next != head) {
|
||||
if (!block->next->flag) {
|
||||
if (block->next != head)
|
||||
{
|
||||
if (!block->next->flag)
|
||||
{
|
||||
block->size += sizeof(struct MemBlock) + block->next->size;
|
||||
block->next->magic = 0;
|
||||
block->next = block->next->next;
|
||||
@ -114,8 +126,10 @@ void FreeInternal(void *heapStart, void *pointer)
|
||||
|
||||
// If the freed block isn't the first one, merge with the previous block
|
||||
// if it's not in use.
|
||||
if (block != head) {
|
||||
if (!block->prev->flag) {
|
||||
if (block != head)
|
||||
{
|
||||
if (!block->prev->flag)
|
||||
{
|
||||
block->prev->next = block->next;
|
||||
|
||||
if (block->next != head)
|
||||
@ -132,7 +146,8 @@ void *AllocZeroedInternal(void *heapStart, u32 size)
|
||||
{
|
||||
void *mem = AllocInternal(heapStart, size);
|
||||
|
||||
if (mem != NULL) {
|
||||
if (mem != NULL)
|
||||
{
|
||||
if (size & 3)
|
||||
size = 4 * ((size / 4) + 1);
|
||||
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
#ifndef GUARD_ALLOC_H
|
||||
#define GUARD_ALLOC_H
|
||||
|
||||
#define HEAP_SIZE 0x1C000
|
||||
|
||||
#define FREE_AND_SET_NULL(ptr) \
|
||||
{ \
|
||||
@ -11,7 +10,8 @@
|
||||
|
||||
#define TRY_FREE_AND_SET_NULL(ptr) if (ptr != NULL) FREE_AND_SET_NULL(ptr)
|
||||
|
||||
extern u8 gHeap[];
|
||||
#define HEAP_SIZE 0x1C000
|
||||
extern u8 gHeap[HEAP_SIZE];
|
||||
|
||||
void *Alloc(u32 size);
|
||||
void *AllocZeroed(u32 size);
|
||||
|
||||
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.4 KiB |
@ -1,6 +1,6 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
48
|
||||
96
|
||||
123 131 0
|
||||
255 255 255
|
||||
222 222 222
|
||||
@ -49,3 +49,51 @@ JASC-PAL
|
||||
49 139 255
|
||||
189 156 90
|
||||
0 0 0
|
||||
123 131 0
|
||||
255 255 255
|
||||
255 238 0
|
||||
255 189 0
|
||||
255 115 0
|
||||
98 98 115
|
||||
41 57 65
|
||||
41 57 106
|
||||
0 0 41
|
||||
255 255 255
|
||||
238 246 57
|
||||
255 0 189
|
||||
49 213 74
|
||||
24 131 32
|
||||
189 156 90
|
||||
0 0 0
|
||||
123 131 0
|
||||
255 255 255
|
||||
197 32 32
|
||||
189 189 189
|
||||
164 164 164
|
||||
98 98 115
|
||||
41 57 65
|
||||
41 57 106
|
||||
0 0 41
|
||||
255 255 255
|
||||
238 246 57
|
||||
189 0 0
|
||||
74 148 180
|
||||
8 90 131
|
||||
189 156 90
|
||||
0 0 0
|
||||
123 131 0
|
||||
255 255 255
|
||||
197 32 32
|
||||
189 189 189
|
||||
164 164 164
|
||||
98 98 115
|
||||
41 57 65
|
||||
41 57 106
|
||||
0 0 41
|
||||
255 255 255
|
||||
238 246 57
|
||||
255 0 189
|
||||
180 205 246
|
||||
49 139 255
|
||||
189 156 90
|
||||
0 0 0
|
||||
|
||||
@ -1,51 +0,0 @@
|
||||
JASC-PAL
|
||||
0100
|
||||
48
|
||||
123 131 0
|
||||
255 255 255
|
||||
255 238 0
|
||||
255 189 0
|
||||
255 115 0
|
||||
98 98 115
|
||||
41 57 65
|
||||
41 57 106
|
||||
0 0 41
|
||||
255 255 255
|
||||
238 246 57
|
||||
255 0 189
|
||||
49 213 74
|
||||
24 131 32
|
||||
189 156 90
|
||||
0 0 0
|
||||
123 131 0
|
||||
255 255 255
|
||||
197 32 32
|
||||
189 189 189
|
||||
164 164 164
|
||||
98 98 115
|
||||
41 57 65
|
||||
41 57 106
|
||||
0 0 41
|
||||
255 255 255
|
||||
238 246 57
|
||||
189 0 0
|
||||
74 148 180
|
||||
8 90 131
|
||||
189 156 90
|
||||
0 0 0
|
||||
123 131 0
|
||||
255 255 255
|
||||
197 32 32
|
||||
189 189 189
|
||||
164 164 164
|
||||
98 98 115
|
||||
41 57 65
|
||||
41 57 106
|
||||
0 0 41
|
||||
255 255 255
|
||||
238 246 57
|
||||
255 0 189
|
||||
180 205 246
|
||||
49 139 255
|
||||
189 156 90
|
||||
0 0 0
|
||||
|
Before Width: | Height: | Size: 111 B After Width: | Height: | Size: 111 B |
|
Before Width: | Height: | Size: 112 B After Width: | Height: | Size: 112 B |
|
Before Width: | Height: | Size: 99 B After Width: | Height: | Size: 99 B |
|
Before Width: | Height: | Size: 99 B After Width: | Height: | Size: 99 B |
1
graphics/unused/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
redyellowgreen_frame.bin
|
||||
@ -21,7 +21,7 @@ JPCONTESTGFXDIR := graphics/contest/japanese
|
||||
POKEDEXGFXDIR := graphics/pokedex
|
||||
STARTERGFXDIR := graphics/starter_choose
|
||||
NAMINGGFXDIR := graphics/naming_screen
|
||||
SPINDAGFXDIR := graphics/spinda_spots
|
||||
SPINDAGFXDIR := graphics/pokemon/spinda/spots
|
||||
|
||||
types := normal fight flying poison ground rock bug ghost steel mystery fire water grass electric psychic ice dragon dark
|
||||
contest_types := cool beauty cute smart tough
|
||||
@ -290,10 +290,10 @@ $(FONTGFXDIR)/short.fwjpnfont: $(FONTGFXDIR)/japanese_short.png
|
||||
$(FONTGFXDIR)/braille.fwjpnfont: $(FONTGFXDIR)/braille.png
|
||||
$(GFX) $< $@
|
||||
|
||||
$(FONTGFXDIR)/frlg_male.fwjpnfont: $(FONTGFXDIR)/japanese_frlg_male_font.png
|
||||
$(FONTGFXDIR)/frlg_male.fwjpnfont: $(FONTGFXDIR)/japanese_frlg_male.png
|
||||
$(GFX) $< $@
|
||||
|
||||
$(FONTGFXDIR)/frlg_female.fwjpnfont: $(FONTGFXDIR)/japanese_frlg_female_font.png
|
||||
$(FONTGFXDIR)/frlg_female.fwjpnfont: $(FONTGFXDIR)/japanese_frlg_female.png
|
||||
$(GFX) $< $@
|
||||
|
||||
|
||||
|
||||
@ -420,7 +420,7 @@ struct BattleStruct
|
||||
u8 arenaTurnCounter;
|
||||
u8 turnSideTracker;
|
||||
u8 unused_6[3];
|
||||
u8 givenExpMons; // Bits for enemy party's pokemon that gave exp to player's party.
|
||||
u8 givenExpMons; // Bits for enemy party's Pokémon that gave exp to player's party.
|
||||
u8 lastTakenMoveFrom[MAX_BATTLERS_COUNT * MAX_BATTLERS_COUNT * 2]; // a 3-D array [target][attacker][byte]
|
||||
u16 castformPalette[NUM_CASTFORM_FORMS][16];
|
||||
union {
|
||||
@ -440,7 +440,7 @@ struct BattleStruct
|
||||
u16 arenaStartHp[2];
|
||||
u8 arenaLostPlayerMons; // Bits for party member, lost as in referee's decision, not by fainting.
|
||||
u8 arenaLostOpponentMons;
|
||||
u8 alreadyStatusedMoveAttempt; // As bits for battlers; For example when using Thunder Wave on an already paralyzed pokemon.
|
||||
u8 alreadyStatusedMoveAttempt; // As bits for battlers; For example when using Thunder Wave on an already paralyzed Pokémon.
|
||||
};
|
||||
|
||||
// The palaceFlags member of struct BattleStruct contains 1 flag per move to indicate which moves the AI should consider,
|
||||
@ -460,26 +460,26 @@ STATIC_ASSERT(sizeof(((struct BattleStruct *)0)->palaceFlags) * 8 >= MAX_BATTLER
|
||||
typeArg = gBattleMoves[move].type; \
|
||||
}
|
||||
|
||||
#define IS_TYPE_PHYSICAL(moveType)(moveType < TYPE_MYSTERY)
|
||||
#define IS_TYPE_SPECIAL(moveType)(moveType > TYPE_MYSTERY)
|
||||
#define IS_TYPE_PHYSICAL(moveType) (moveType < TYPE_MYSTERY)
|
||||
#define IS_TYPE_SPECIAL(moveType) (moveType > TYPE_MYSTERY)
|
||||
|
||||
#define TARGET_TURN_DAMAGED ((gSpecialStatuses[gBattlerTarget].physicalDmg != 0 || gSpecialStatuses[gBattlerTarget].specialDmg != 0))
|
||||
|
||||
#define IS_BATTLER_OF_TYPE(battlerId, type)((gBattleMons[battlerId].type1 == type || gBattleMons[battlerId].type2 == type))
|
||||
#define IS_BATTLER_OF_TYPE(battlerId, type) ((gBattleMons[battlerId].types[0] == type || gBattleMons[battlerId].types[1] == type))
|
||||
#define SET_BATTLER_TYPE(battlerId, type) \
|
||||
{ \
|
||||
gBattleMons[battlerId].type1 = type; \
|
||||
gBattleMons[battlerId].type2 = type; \
|
||||
gBattleMons[battlerId].types[0] = type; \
|
||||
gBattleMons[battlerId].types[1] = type; \
|
||||
}
|
||||
|
||||
#define GET_STAT_BUFF_ID(n)((n & 0xF)) // first four bits 0x1, 0x2, 0x4, 0x8
|
||||
#define GET_STAT_BUFF_VALUE2(n)((n & 0xF0))
|
||||
#define GET_STAT_BUFF_VALUE(n)(((n >> 4) & 7)) // 0x10, 0x20, 0x40
|
||||
#define GET_STAT_BUFF_ID(n) ((n & 0xF)) // first four bits 0x1, 0x2, 0x4, 0x8
|
||||
#define GET_STAT_BUFF_VALUE2(n) ((n & 0xF0))
|
||||
#define GET_STAT_BUFF_VALUE(n) (((n >> 4) & 7)) // 0x10, 0x20, 0x40
|
||||
#define STAT_BUFF_NEGATIVE 0x80 // 0x80, the sign bit
|
||||
|
||||
#define SET_STAT_BUFF_VALUE(n)((((n) << 4) & 0xF0))
|
||||
#define SET_STAT_BUFF_VALUE(n) ((((n) << 4) & 0xF0))
|
||||
|
||||
#define SET_STATCHANGER(statId, stage, goesDown)(gBattleScripting.statChanger = (statId) + (stage << 4) + (goesDown << 7))
|
||||
#define SET_STATCHANGER(statId, stage, goesDown) (gBattleScripting.statChanger = (statId) + (stage << 4) + (goesDown << 7))
|
||||
|
||||
// NOTE: The members of this struct have hard-coded offsets
|
||||
// in include/constants/battle_script_commands.h
|
||||
@ -595,7 +595,7 @@ struct BattleSpriteData
|
||||
|
||||
struct MonSpritesGfx
|
||||
{
|
||||
void *firstDecompressed; // ptr to the decompressed sprite of the first pokemon
|
||||
void *firstDecompressed; // ptr to the decompressed sprite of the first Pokémon
|
||||
union {
|
||||
void *ptr[MAX_BATTLERS_COUNT];
|
||||
u8 *byte[MAX_BATTLERS_COUNT];
|
||||
|
||||
@ -124,8 +124,7 @@ struct ChooseMoveStruct
|
||||
u8 currentPp[MAX_MON_MOVES];
|
||||
u8 maxPp[MAX_MON_MOVES];
|
||||
u16 species;
|
||||
u8 monType1;
|
||||
u8 monType2;
|
||||
u8 monTypes[2];
|
||||
};
|
||||
|
||||
enum
|
||||
|
||||
@ -23,9 +23,9 @@ struct MultiPartnerMenuPokemon
|
||||
};
|
||||
|
||||
// defines for the u8 array gTypeEffectiveness
|
||||
#define TYPE_EFFECT_ATK_TYPE(i)((gTypeEffectiveness[i + 0]))
|
||||
#define TYPE_EFFECT_DEF_TYPE(i)((gTypeEffectiveness[i + 1]))
|
||||
#define TYPE_EFFECT_MULTIPLIER(i)((gTypeEffectiveness[i + 2]))
|
||||
#define TYPE_EFFECT_ATK_TYPE(i) ((gTypeEffectiveness[i + 0]))
|
||||
#define TYPE_EFFECT_DEF_TYPE(i) ((gTypeEffectiveness[i + 1]))
|
||||
#define TYPE_EFFECT_MULTIPLIER(i) ((gTypeEffectiveness[i + 2]))
|
||||
|
||||
// defines for the gTypeEffectiveness multipliers
|
||||
#define TYPE_MUL_NO_EFFECT 0
|
||||
|
||||
@ -33,9 +33,9 @@
|
||||
#define ABILITYEFFECT_WATER_SPORT 254
|
||||
#define ABILITYEFFECT_SWITCH_IN_WEATHER 255
|
||||
|
||||
#define ABILITY_ON_OPPOSING_FIELD(battlerId, abilityId)(AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, battlerId, abilityId, 0, 0))
|
||||
#define ABILITY_ON_FIELD(abilityId)(AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, abilityId, 0, 0))
|
||||
#define ABILITY_ON_FIELD2(abilityId)(AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, abilityId, 0, 0))
|
||||
#define ABILITY_ON_OPPOSING_FIELD(battlerId, abilityId) (AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, battlerId, abilityId, 0, 0))
|
||||
#define ABILITY_ON_FIELD(abilityId) (AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, abilityId, 0, 0))
|
||||
#define ABILITY_ON_FIELD2(abilityId) (AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, abilityId, 0, 0))
|
||||
|
||||
// For the first argument of ItemBattleEffects, to deteremine which block of item effects to try
|
||||
#define ITEMEFFECT_ON_SWITCH_IN 0
|
||||
|
||||
3
include/constants/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
# Will be moved to build/ eventually
|
||||
map_groups.h
|
||||
layouts.h
|
||||
@ -176,7 +176,7 @@
|
||||
#define HITMARKER_ATTACKSTRING_PRINTED (1 << 10)
|
||||
#define HITMARKER_NO_PPDEDUCT (1 << 11)
|
||||
#define HITMARKER_SWAP_ATTACKER_TARGET (1 << 12)
|
||||
#define HITMARKER_IGNORE_SAFEGUARD (1 << 13)
|
||||
#define HITMARKER_STATUS_ABILITY_EFFECT (1 << 13)
|
||||
#define HITMARKER_SYNCHRONISE_EFFECT (1 << 14)
|
||||
#define HITMARKER_RUN (1 << 15)
|
||||
#define HITMARKER_IGNORE_ON_AIR (1 << 16)
|
||||
|
||||
@ -16,12 +16,12 @@
|
||||
#define PALACE_DATA_WIN_STREAK 1
|
||||
#define PALACE_DATA_WIN_STREAK_ACTIVE 2
|
||||
|
||||
// Pokemon in Battle Palace have a move "group" type preference depending on nature
|
||||
// Pokémon in Battle Palace have a move "group" type preference depending on nature
|
||||
#define PALACE_MOVE_GROUP_ATTACK 0
|
||||
#define PALACE_MOVE_GROUP_DEFENSE 1
|
||||
#define PALACE_MOVE_GROUP_SUPPORT 2
|
||||
|
||||
// In palace doubles battles pokemon have a target preference depending on nature
|
||||
// In palace doubles battles Pokémon have a target preference depending on nature
|
||||
#define PALACE_TARGET_STRONGER 0
|
||||
#define PALACE_TARGET_WEAKER 1
|
||||
#define PALACE_TARGET_RANDOM 2
|
||||
|
||||
@ -62,7 +62,7 @@
|
||||
#define DEPT_STORE_FLOORNUM_11F 14
|
||||
#define DEPT_STORE_FLOORNUM_ROOFTOP 15
|
||||
|
||||
// Lilycove Pokemon Trainer Fan Club
|
||||
// Lilycove Pokémon Trainer Fan Club
|
||||
#define NUM_TRAINER_FAN_CLUB_MEMBERS 8
|
||||
|
||||
#define FANCLUB_GOT_FIRST_FANS 7
|
||||
|
||||
@ -8,6 +8,7 @@
|
||||
#define NUM_FOG_DIAGONAL_SPRITES 20
|
||||
#define NUM_SANDSTORM_SPRITES 20
|
||||
#define NUM_SWIRL_SANDSTORM_SPRITES 5
|
||||
#define NUM_SNOWFLAKE_SPRITES 16
|
||||
|
||||
// Controls how the weather should be changing the screen palettes.
|
||||
#define WEATHER_PAL_STATE_CHANGING_WEATHER 0
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
#define GUARD_CONSTANTS_FLAGS_H
|
||||
|
||||
#include "constants/opponents.h"
|
||||
#include "constants/rematches.h"
|
||||
|
||||
// Temporary Flags
|
||||
// These temporary flags are are cleared every time a map is loaded. They are used
|
||||
@ -375,86 +376,89 @@
|
||||
#define FLAG_MET_FRONTIER_BEAUTY_MOVE_TUTOR 0x15A
|
||||
#define FLAG_MET_FRONTIER_SWIMMER_MOVE_TUTOR 0x15B
|
||||
|
||||
// Trainer Rematch Flags
|
||||
#define FLAG_MATCH_CALL_REGISTERED 0x15C
|
||||
#define FLAG_REMATCH_ROSE 0x15D
|
||||
#define FLAG_REMATCH_ANDRES 0x15E
|
||||
#define FLAG_REMATCH_DUSTY 0x15F
|
||||
#define FLAG_REMATCH_LOLA 0x160
|
||||
#define FLAG_REMATCH_RICKY 0x161
|
||||
#define FLAG_REMATCH_LILA_AND_ROY 0x162
|
||||
#define FLAG_REMATCH_CRISTIN 0x163
|
||||
#define FLAG_REMATCH_BROOKE 0x164
|
||||
#define FLAG_REMATCH_WILTON 0x165
|
||||
#define FLAG_REMATCH_VALERIE 0x166
|
||||
#define FLAG_REMATCH_CINDY 0x167
|
||||
#define FLAG_REMATCH_THALIA 0x168
|
||||
#define FLAG_REMATCH_JESSICA 0x169
|
||||
#define FLAG_REMATCH_WINSTON 0x16A
|
||||
#define FLAG_REMATCH_STEVE 0x16B
|
||||
#define FLAG_REMATCH_TONY 0x16C
|
||||
#define FLAG_REMATCH_NOB 0x16D
|
||||
#define FLAG_REMATCH_KOJI 0x16E
|
||||
#define FLAG_REMATCH_FERNANDO 0x16F
|
||||
#define FLAG_REMATCH_DALTON 0x170
|
||||
#define FLAG_REMATCH_BERNIE 0x171
|
||||
#define FLAG_REMATCH_ETHAN 0x172
|
||||
#define FLAG_REMATCH_JOHN_AND_JAY 0x173
|
||||
#define FLAG_REMATCH_JEFFREY 0x174
|
||||
#define FLAG_REMATCH_CAMERON 0x175
|
||||
#define FLAG_REMATCH_JACKI 0x176
|
||||
#define FLAG_REMATCH_WALTER 0x177
|
||||
#define FLAG_REMATCH_KAREN 0x178
|
||||
#define FLAG_REMATCH_JERRY 0x179
|
||||
#define FLAG_REMATCH_ANNA_AND_MEG 0x17A
|
||||
#define FLAG_REMATCH_ISABEL 0x17B
|
||||
#define FLAG_REMATCH_MIGUEL 0x17C
|
||||
#define FLAG_REMATCH_TIMOTHY 0x17D
|
||||
#define FLAG_REMATCH_SHELBY 0x17E
|
||||
#define FLAG_REMATCH_CALVIN 0x17F
|
||||
#define FLAG_REMATCH_ELLIOT 0x180
|
||||
#define FLAG_REMATCH_ISAIAH 0x181
|
||||
#define FLAG_REMATCH_MARIA 0x182
|
||||
#define FLAG_REMATCH_ABIGAIL 0x183
|
||||
#define FLAG_REMATCH_DYLAN 0x184
|
||||
#define FLAG_REMATCH_KATELYN 0x185
|
||||
#define FLAG_REMATCH_BENJAMIN 0x186
|
||||
#define FLAG_REMATCH_PABLO 0x187
|
||||
#define FLAG_REMATCH_NICOLAS 0x188
|
||||
#define FLAG_REMATCH_ROBERT 0x189
|
||||
#define FLAG_REMATCH_LAO 0x18A
|
||||
#define FLAG_REMATCH_CYNDY 0x18B
|
||||
#define FLAG_REMATCH_MADELINE 0x18C
|
||||
#define FLAG_REMATCH_JENNY 0x18D
|
||||
#define FLAG_REMATCH_DIANA 0x18E
|
||||
#define FLAG_REMATCH_AMY_AND_LIV 0x18F
|
||||
#define FLAG_REMATCH_ERNEST 0x190
|
||||
#define FLAG_REMATCH_CORY 0x191
|
||||
#define FLAG_REMATCH_EDWIN 0x192
|
||||
#define FLAG_REMATCH_LYDIA 0x193
|
||||
#define FLAG_REMATCH_ISAAC 0x194
|
||||
#define FLAG_REMATCH_GABRIELLE 0x195
|
||||
#define FLAG_REMATCH_CATHERINE 0x196
|
||||
#define FLAG_REMATCH_JACKSON 0x197
|
||||
#define FLAG_REMATCH_HALEY 0x198
|
||||
#define FLAG_REMATCH_JAMES 0x199
|
||||
#define FLAG_REMATCH_TRENT 0x19A
|
||||
#define FLAG_REMATCH_SAWYER 0x19B
|
||||
#define FLAG_REMATCH_KIRA_AND_DAN 0x19C
|
||||
#define FLAG_REMATCH_WALLY 0x19D
|
||||
#define FLAG_REMATCH_ROXANNE 0x19E
|
||||
#define FLAG_REMATCH_BRAWLY 0x19F
|
||||
#define FLAG_REMATCH_WATTSON 0x1A0
|
||||
#define FLAG_REMATCH_FLANNERY 0x1A1
|
||||
#define FLAG_REMATCH_NORMAN 0x1A2
|
||||
#define FLAG_REMATCH_WINONA 0x1A3
|
||||
#define FLAG_REMATCH_TATE_AND_LIZA 0x1A4
|
||||
// Note: FLAG_REMATCH_JUAN is handled by FLAG_ENABLE_JUAN_MATCH_CALL instead.
|
||||
#define FLAG_REMATCH_SIDNEY 0x1A5
|
||||
#define FLAG_REMATCH_PHOEBE 0x1A6
|
||||
#define FLAG_REMATCH_GLACIA 0x1A7
|
||||
#define FLAG_REMATCH_DRAKE 0x1A8
|
||||
#define FLAG_REMATCH_WALLACE 0x1A9
|
||||
// Flags for whether a rematchable trainer has been registered in the player's Match Call.
|
||||
// Most are used implicitly by adding their REMATCH_* id to TRAINER_REGISTERED_FLAGS_START.
|
||||
// Some Match Call entries (like those for gym leaders, Wally, and all non-trainer NPCs like Prof. Birch)
|
||||
// have their own separate flag that needs to be set to be enabled; see src/pokenav_match_call_data.c
|
||||
#define TRAINER_REGISTERED_FLAGS_START 0x15C
|
||||
#define FLAG_REGISTERED_ROSE (TRAINER_REGISTERED_FLAGS_START + REMATCH_ROSE)
|
||||
#define FLAG_REGISTERED_ANDRES (TRAINER_REGISTERED_FLAGS_START + REMATCH_ANDRES)
|
||||
#define FLAG_REGISTERED_DUSTY (TRAINER_REGISTERED_FLAGS_START + REMATCH_DUSTY)
|
||||
#define FLAG_REGISTERED_LOLA (TRAINER_REGISTERED_FLAGS_START + REMATCH_LOLA)
|
||||
#define FLAG_REGISTERED_RICKY (TRAINER_REGISTERED_FLAGS_START + REMATCH_RICKY)
|
||||
#define FLAG_REGISTERED_LILA_AND_ROY (TRAINER_REGISTERED_FLAGS_START + REMATCH_LILA_AND_ROY)
|
||||
#define FLAG_REGISTERED_CRISTIN (TRAINER_REGISTERED_FLAGS_START + REMATCH_CRISTIN)
|
||||
#define FLAG_REGISTERED_BROOKE (TRAINER_REGISTERED_FLAGS_START + REMATCH_BROOKE)
|
||||
#define FLAG_REGISTERED_WILTON (TRAINER_REGISTERED_FLAGS_START + REMATCH_WILTON)
|
||||
#define FLAG_REGISTERED_VALERIE (TRAINER_REGISTERED_FLAGS_START + REMATCH_VALERIE)
|
||||
#define FLAG_REGISTERED_CINDY (TRAINER_REGISTERED_FLAGS_START + REMATCH_CINDY)
|
||||
#define FLAG_REGISTERED_THALIA (TRAINER_REGISTERED_FLAGS_START + REMATCH_THALIA)
|
||||
#define FLAG_REGISTERED_JESSICA (TRAINER_REGISTERED_FLAGS_START + REMATCH_JESSICA)
|
||||
#define FLAG_REGISTERED_WINSTON (TRAINER_REGISTERED_FLAGS_START + REMATCH_WINSTON)
|
||||
#define FLAG_REGISTERED_STEVE (TRAINER_REGISTERED_FLAGS_START + REMATCH_STEVE)
|
||||
#define FLAG_REGISTERED_TONY (TRAINER_REGISTERED_FLAGS_START + REMATCH_TONY)
|
||||
#define FLAG_REGISTERED_NOB (TRAINER_REGISTERED_FLAGS_START + REMATCH_NOB)
|
||||
#define FLAG_REGISTERED_KOJI (TRAINER_REGISTERED_FLAGS_START + REMATCH_KOJI)
|
||||
#define FLAG_REGISTERED_FERNANDO (TRAINER_REGISTERED_FLAGS_START + REMATCH_FERNANDO)
|
||||
#define FLAG_REGISTERED_DALTON (TRAINER_REGISTERED_FLAGS_START + REMATCH_DALTON)
|
||||
#define FLAG_REGISTERED_BERNIE (TRAINER_REGISTERED_FLAGS_START + REMATCH_BERNIE)
|
||||
#define FLAG_REGISTERED_ETHAN (TRAINER_REGISTERED_FLAGS_START + REMATCH_ETHAN)
|
||||
#define FLAG_REGISTERED_JOHN_AND_JAY (TRAINER_REGISTERED_FLAGS_START + REMATCH_JOHN_AND_JAY)
|
||||
#define FLAG_REGISTERED_JEFFREY (TRAINER_REGISTERED_FLAGS_START + REMATCH_JEFFREY)
|
||||
#define FLAG_REGISTERED_CAMERON (TRAINER_REGISTERED_FLAGS_START + REMATCH_CAMERON)
|
||||
#define FLAG_REGISTERED_JACKI (TRAINER_REGISTERED_FLAGS_START + REMATCH_JACKI)
|
||||
#define FLAG_REGISTERED_WALTER (TRAINER_REGISTERED_FLAGS_START + REMATCH_WALTER)
|
||||
#define FLAG_REGISTERED_KAREN (TRAINER_REGISTERED_FLAGS_START + REMATCH_KAREN)
|
||||
#define FLAG_REGISTERED_JERRY (TRAINER_REGISTERED_FLAGS_START + REMATCH_JERRY)
|
||||
#define FLAG_REGISTERED_ANNA_AND_MEG (TRAINER_REGISTERED_FLAGS_START + REMATCH_ANNA_AND_MEG)
|
||||
#define FLAG_REGISTERED_ISABEL (TRAINER_REGISTERED_FLAGS_START + REMATCH_ISABEL)
|
||||
#define FLAG_REGISTERED_MIGUEL (TRAINER_REGISTERED_FLAGS_START + REMATCH_MIGUEL)
|
||||
#define FLAG_REGISTERED_TIMOTHY (TRAINER_REGISTERED_FLAGS_START + REMATCH_TIMOTHY)
|
||||
#define FLAG_REGISTERED_SHELBY (TRAINER_REGISTERED_FLAGS_START + REMATCH_SHELBY)
|
||||
#define FLAG_REGISTERED_CALVIN (TRAINER_REGISTERED_FLAGS_START + REMATCH_CALVIN)
|
||||
#define FLAG_REGISTERED_ELLIOT (TRAINER_REGISTERED_FLAGS_START + REMATCH_ELLIOT)
|
||||
#define FLAG_REGISTERED_ISAIAH (TRAINER_REGISTERED_FLAGS_START + REMATCH_ISAIAH)
|
||||
#define FLAG_REGISTERED_MARIA (TRAINER_REGISTERED_FLAGS_START + REMATCH_MARIA)
|
||||
#define FLAG_REGISTERED_ABIGAIL (TRAINER_REGISTERED_FLAGS_START + REMATCH_ABIGAIL)
|
||||
#define FLAG_REGISTERED_DYLAN (TRAINER_REGISTERED_FLAGS_START + REMATCH_DYLAN)
|
||||
#define FLAG_REGISTERED_KATELYN (TRAINER_REGISTERED_FLAGS_START + REMATCH_KATELYN)
|
||||
#define FLAG_REGISTERED_BENJAMIN (TRAINER_REGISTERED_FLAGS_START + REMATCH_BENJAMIN)
|
||||
#define FLAG_REGISTERED_PABLO (TRAINER_REGISTERED_FLAGS_START + REMATCH_PABLO)
|
||||
#define FLAG_REGISTERED_NICOLAS (TRAINER_REGISTERED_FLAGS_START + REMATCH_NICOLAS)
|
||||
#define FLAG_REGISTERED_ROBERT (TRAINER_REGISTERED_FLAGS_START + REMATCH_ROBERT)
|
||||
#define FLAG_REGISTERED_LAO (TRAINER_REGISTERED_FLAGS_START + REMATCH_LAO)
|
||||
#define FLAG_REGISTERED_CYNDY (TRAINER_REGISTERED_FLAGS_START + REMATCH_CYNDY)
|
||||
#define FLAG_REGISTERED_MADELINE (TRAINER_REGISTERED_FLAGS_START + REMATCH_MADELINE)
|
||||
#define FLAG_REGISTERED_JENNY (TRAINER_REGISTERED_FLAGS_START + REMATCH_JENNY)
|
||||
#define FLAG_REGISTERED_DIANA (TRAINER_REGISTERED_FLAGS_START + REMATCH_DIANA)
|
||||
#define FLAG_REGISTERED_AMY_AND_LIV (TRAINER_REGISTERED_FLAGS_START + REMATCH_AMY_AND_LIV)
|
||||
#define FLAG_REGISTERED_ERNEST (TRAINER_REGISTERED_FLAGS_START + REMATCH_ERNEST)
|
||||
#define FLAG_REGISTERED_CORY (TRAINER_REGISTERED_FLAGS_START + REMATCH_CORY)
|
||||
#define FLAG_REGISTERED_EDWIN (TRAINER_REGISTERED_FLAGS_START + REMATCH_EDWIN)
|
||||
#define FLAG_REGISTERED_LYDIA (TRAINER_REGISTERED_FLAGS_START + REMATCH_LYDIA)
|
||||
#define FLAG_REGISTERED_ISAAC (TRAINER_REGISTERED_FLAGS_START + REMATCH_ISAAC)
|
||||
#define FLAG_REGISTERED_GABRIELLE (TRAINER_REGISTERED_FLAGS_START + REMATCH_GABRIELLE)
|
||||
#define FLAG_REGISTERED_CATHERINE (TRAINER_REGISTERED_FLAGS_START + REMATCH_CATHERINE)
|
||||
#define FLAG_REGISTERED_JACKSON (TRAINER_REGISTERED_FLAGS_START + REMATCH_JACKSON)
|
||||
#define FLAG_REGISTERED_HALEY (TRAINER_REGISTERED_FLAGS_START + REMATCH_HALEY)
|
||||
#define FLAG_REGISTERED_JAMES (TRAINER_REGISTERED_FLAGS_START + REMATCH_JAMES)
|
||||
#define FLAG_REGISTERED_TRENT (TRAINER_REGISTERED_FLAGS_START + REMATCH_TRENT)
|
||||
#define FLAG_REGISTERED_SAWYER (TRAINER_REGISTERED_FLAGS_START + REMATCH_SAWYER)
|
||||
#define FLAG_REGISTERED_KIRA_AND_DAN (TRAINER_REGISTERED_FLAGS_START + REMATCH_KIRA_AND_DAN)
|
||||
#define FLAG_REGISTERED_WALLY (TRAINER_REGISTERED_FLAGS_START + REMATCH_WALLY)
|
||||
#define FLAG_REGISTERED_ROXANNE (TRAINER_REGISTERED_FLAGS_START + REMATCH_ROXANNE)
|
||||
#define FLAG_REGISTERED_BRAWLY (TRAINER_REGISTERED_FLAGS_START + REMATCH_BRAWLY)
|
||||
#define FLAG_REGISTERED_WATTSON (TRAINER_REGISTERED_FLAGS_START + REMATCH_WATTSON)
|
||||
#define FLAG_REGISTERED_FLANNERY (TRAINER_REGISTERED_FLAGS_START + REMATCH_FLANNERY)
|
||||
#define FLAG_REGISTERED_NORMAN (TRAINER_REGISTERED_FLAGS_START + REMATCH_NORMAN)
|
||||
#define FLAG_REGISTERED_WINONA (TRAINER_REGISTERED_FLAGS_START + REMATCH_WINONA)
|
||||
#define FLAG_REGISTERED_TATE_AND_LIZA (TRAINER_REGISTERED_FLAGS_START + REMATCH_TATE_AND_LIZA)
|
||||
#define FLAG_REGISTERED_JUAN (TRAINER_REGISTERED_FLAGS_START + REMATCH_JUAN)
|
||||
#define FLAG_REGISTERED_SIDNEY (TRAINER_REGISTERED_FLAGS_START + REMATCH_SIDNEY)
|
||||
#define FLAG_REGISTERED_PHOEBE (TRAINER_REGISTERED_FLAGS_START + REMATCH_PHOEBE)
|
||||
#define FLAG_REGISTERED_GLACIA (TRAINER_REGISTERED_FLAGS_START + REMATCH_GLACIA)
|
||||
#define FLAG_REGISTERED_DRAKE (TRAINER_REGISTERED_FLAGS_START + REMATCH_DRAKE)
|
||||
#define FLAG_REGISTERED_WALLACE (TRAINER_REGISTERED_FLAGS_START + REMATCH_WALLACE)
|
||||
|
||||
#define FLAG_UNUSED_0x1AA 0x1AA // Unused Flag
|
||||
#define FLAG_UNUSED_0x1AB 0x1AB // Unused Flag
|
||||
|
||||
@ -2,9 +2,9 @@
|
||||
#define GUARD_CONSTANTS_GLOBAL_H
|
||||
// Invalid Versions show as "----------" in Gen 4 and Gen 5's summary screen.
|
||||
// In Gens 6 and 7, invalid versions instead show "a distant land" in the summary screen.
|
||||
// In Gen 4 only, migrated Pokemon with Diamond, Pearl, or Platinum's ID show as "----------".
|
||||
// In Gen 4 only, migrated Pokémon with Diamond, Pearl, or Platinum's ID show as "----------".
|
||||
// Gen 5 and up read Diamond, Pearl, or Platinum's ID as "Sinnoh".
|
||||
// In Gen 4 and up, migrated Pokemon with HeartGold or SoulSilver's ID show the otherwise unused "Johto" string.
|
||||
// In Gen 4 and up, migrated Pokémon with HeartGold or SoulSilver's ID show the otherwise unused "Johto" string.
|
||||
#define VERSION_SAPPHIRE 1
|
||||
#define VERSION_RUBY 2
|
||||
#define VERSION_EMERALD 3
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
#define FIRST_BALL ITEM_MASTER_BALL
|
||||
#define LAST_BALL ITEM_PREMIER_BALL
|
||||
|
||||
// Pokemon Items
|
||||
// Pokémon Items
|
||||
#define ITEM_POTION 13
|
||||
#define ITEM_ANTIDOTE 14
|
||||
#define ITEM_BURN_HEAL 15
|
||||
@ -441,8 +441,8 @@
|
||||
#define NUM_ROUTE_114_MAN_BERRIES (LAST_ROUTE_114_MAN_BERRY - FIRST_ROUTE_114_MAN_BERRY + 1)
|
||||
#define NUM_ROUTE_114_MAN_BERRIES_SKIPPED (FIRST_ROUTE_114_MAN_BERRY - FIRST_BERRY_INDEX)
|
||||
|
||||
#define ITEM_TO_BERRY(itemId)(((itemId) - FIRST_BERRY_INDEX) + 1)
|
||||
#define ITEM_TO_MAIL(itemId)((itemId) - FIRST_MAIL_INDEX)
|
||||
#define ITEM_TO_BERRY(itemId) (((itemId) - FIRST_BERRY_INDEX) + 1)
|
||||
#define ITEM_TO_MAIL(itemId) ((itemId) - FIRST_MAIL_INDEX)
|
||||
#define MAIL_NONE 0xFF
|
||||
|
||||
#define NUM_TECHNICAL_MACHINES 50
|
||||
@ -476,7 +476,7 @@
|
||||
#define ITEM_B_USE_MEDICINE 1
|
||||
#define ITEM_B_USE_OTHER 2
|
||||
|
||||
// Check if the item is one that can be used on a Pokemon.
|
||||
// Check if the item is one that can be used on a Pokémon.
|
||||
#define ITEM_HAS_EFFECT(item) ((item) >= ITEM_POTION && (item) <= MAX_BERRY_INDEX)
|
||||
|
||||
#endif // GUARD_CONSTANTS_ITEMS_H
|
||||
|
||||
@ -1,450 +0,0 @@
|
||||
#ifndef GUARD_CONSTANTS_LAYOUTS_H
|
||||
#define GUARD_CONSTANTS_LAYOUTS_H
|
||||
|
||||
//
|
||||
// DO NOT MODIFY THIS FILE! It is auto-generated from data/layouts/layouts.json
|
||||
//
|
||||
|
||||
#define LAYOUT_PETALBURG_CITY 1
|
||||
#define LAYOUT_SLATEPORT_CITY 2
|
||||
#define LAYOUT_MAUVILLE_CITY 3
|
||||
#define LAYOUT_RUSTBORO_CITY 4
|
||||
#define LAYOUT_FORTREE_CITY 5
|
||||
#define LAYOUT_LILYCOVE_CITY 6
|
||||
#define LAYOUT_MOSSDEEP_CITY 7
|
||||
#define LAYOUT_SOOTOPOLIS_CITY 8
|
||||
#define LAYOUT_EVER_GRANDE_CITY 9
|
||||
#define LAYOUT_LITTLEROOT_TOWN 10
|
||||
#define LAYOUT_OLDALE_TOWN 11
|
||||
#define LAYOUT_DEWFORD_TOWN 12
|
||||
#define LAYOUT_LAVARIDGE_TOWN 13
|
||||
#define LAYOUT_FALLARBOR_TOWN 14
|
||||
#define LAYOUT_VERDANTURF_TOWN 15
|
||||
#define LAYOUT_PACIFIDLOG_TOWN 16
|
||||
#define LAYOUT_ROUTE101 17
|
||||
#define LAYOUT_ROUTE102 18
|
||||
#define LAYOUT_ROUTE103 19
|
||||
#define LAYOUT_ROUTE104 20
|
||||
#define LAYOUT_ROUTE105 21
|
||||
#define LAYOUT_ROUTE106 22
|
||||
#define LAYOUT_ROUTE107 23
|
||||
#define LAYOUT_ROUTE108 24
|
||||
#define LAYOUT_ROUTE109 25
|
||||
#define LAYOUT_ROUTE110 26
|
||||
#define LAYOUT_ROUTE111 27
|
||||
#define LAYOUT_ROUTE112 28
|
||||
#define LAYOUT_ROUTE113 29
|
||||
#define LAYOUT_ROUTE114 30
|
||||
#define LAYOUT_ROUTE115 31
|
||||
#define LAYOUT_ROUTE116 32
|
||||
#define LAYOUT_ROUTE117 33
|
||||
#define LAYOUT_ROUTE118 34
|
||||
#define LAYOUT_ROUTE119 35
|
||||
#define LAYOUT_ROUTE120 36
|
||||
#define LAYOUT_ROUTE121 37
|
||||
#define LAYOUT_ROUTE122 38
|
||||
#define LAYOUT_ROUTE123 39
|
||||
#define LAYOUT_ROUTE124 40
|
||||
#define LAYOUT_ROUTE125 41
|
||||
#define LAYOUT_ROUTE126 42
|
||||
#define LAYOUT_ROUTE127 43
|
||||
#define LAYOUT_ROUTE128 44
|
||||
#define LAYOUT_ROUTE129 45
|
||||
#define LAYOUT_ROUTE130_MIRAGE_ISLAND 46
|
||||
#define LAYOUT_ROUTE131 47
|
||||
#define LAYOUT_ROUTE132 48
|
||||
#define LAYOUT_ROUTE133 49
|
||||
#define LAYOUT_ROUTE134 50
|
||||
#define LAYOUT_UNDERWATER_ROUTE126 51
|
||||
#define LAYOUT_UNDERWATER_ROUTE127 52
|
||||
#define LAYOUT_UNDERWATER_ROUTE128 53
|
||||
#define LAYOUT_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F 54
|
||||
#define LAYOUT_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F 55
|
||||
#define LAYOUT_LITTLEROOT_TOWN_MAYS_HOUSE_1F 56
|
||||
#define LAYOUT_LITTLEROOT_TOWN_MAYS_HOUSE_2F 57
|
||||
#define LAYOUT_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB 58
|
||||
#define LAYOUT_HOUSE1 59
|
||||
#define LAYOUT_HOUSE2 60
|
||||
#define LAYOUT_POKEMON_CENTER_1F 61
|
||||
#define LAYOUT_POKEMON_CENTER_2F 62
|
||||
#define LAYOUT_MART 63
|
||||
#define LAYOUT_HOUSE3 64
|
||||
#define LAYOUT_DEWFORD_TOWN_GYM 65
|
||||
#define LAYOUT_DEWFORD_TOWN_HALL 66
|
||||
#define LAYOUT_HOUSE4 67
|
||||
#define LAYOUT_LAVARIDGE_TOWN_HERB_SHOP 68
|
||||
#define LAYOUT_LAVARIDGE_TOWN_GYM_1F 69
|
||||
#define LAYOUT_LAVARIDGE_TOWN_GYM_B1F 70
|
||||
#define LAYOUT_LAVARIDGE_TOWN_POKEMON_CENTER_1F 71
|
||||
#define LAYOUT_FALLARBOR_TOWN_LEFTOVER_RSCONTEST_LOBBY 72
|
||||
#define LAYOUT_FALLARBOR_TOWN_LEFTOVER_RSCONTEST_HALL 73
|
||||
#define LAYOUT_LILYCOVE_CITY_HOUSE2 74
|
||||
#define LAYOUT_UNUSED_CONTEST_ROOM1 75
|
||||
#define LAYOUT_VERDANTURF_TOWN_WANDAS_HOUSE 76
|
||||
#define LAYOUT_PACIFIDLOG_TOWN_HOUSE1 77
|
||||
#define LAYOUT_PACIFIDLOG_TOWN_HOUSE2 78
|
||||
#define LAYOUT_PETALBURG_CITY_GYM 79
|
||||
#define LAYOUT_HOUSE_WITH_BED 80
|
||||
#define LAYOUT_SLATEPORT_CITY_STERNS_SHIPYARD_1F 81
|
||||
#define LAYOUT_SLATEPORT_CITY_STERNS_SHIPYARD_2F 82
|
||||
#define LAYOUT_UNUSED_CONTEST_ROOM2 83
|
||||
#define LAYOUT_UNUSED_CONTEST_ROOM3 84
|
||||
#define LAYOUT_SLATEPORT_CITY_POKEMON_FAN_CLUB 85
|
||||
#define LAYOUT_SLATEPORT_CITY_OCEANIC_MUSEUM_1F 86
|
||||
#define LAYOUT_SLATEPORT_CITY_OCEANIC_MUSEUM_2F 87
|
||||
#define LAYOUT_HARBOR 88
|
||||
#define LAYOUT_MAUVILLE_CITY_GYM 89
|
||||
#define LAYOUT_MAUVILLE_CITY_BIKE_SHOP 90
|
||||
#define LAYOUT_MAUVILLE_CITY_GAME_CORNER 91
|
||||
#define LAYOUT_RUSTBORO_CITY_DEVON_CORP_1F 92
|
||||
#define LAYOUT_RUSTBORO_CITY_DEVON_CORP_2F 93
|
||||
#define LAYOUT_RUSTBORO_CITY_GYM 94
|
||||
#define LAYOUT_RUSTBORO_CITY_POKEMON_SCHOOL 95
|
||||
#define LAYOUT_RUSTBORO_CITY_HOUSE 96
|
||||
#define LAYOUT_RUSTBORO_CITY_HOUSE1 97
|
||||
#define LAYOUT_RUSTBORO_CITY_CUTTERS_HOUSE 98
|
||||
#define LAYOUT_FORTREE_CITY_HOUSE1 99
|
||||
#define LAYOUT_FORTREE_CITY_GYM 100
|
||||
#define LAYOUT_FORTREE_CITY_HOUSE2 101
|
||||
#define LAYOUT_ROUTE104_MR_BRINEYS_HOUSE 102
|
||||
#define LAYOUT_LILYCOVE_CITY_LILYCOVE_MUSEUM_1F 103
|
||||
#define LAYOUT_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F 104
|
||||
#define LAYOUT_LILYCOVE_CITY_CONTEST_LOBBY 105
|
||||
#define LAYOUT_LILYCOVE_CITY_CONTEST_HALL 106
|
||||
#define LAYOUT_LILYCOVE_CITY_POKEMON_TRAINER_FAN_CLUB 107
|
||||
#define LAYOUT_MOSSDEEP_CITY_GYM 108
|
||||
#define LAYOUT_SOOTOPOLIS_CITY_GYM_1F 109
|
||||
#define LAYOUT_SOOTOPOLIS_CITY_GYM_B1F 110
|
||||
#define LAYOUT_EVER_GRANDE_CITY_SIDNEYS_ROOM 111
|
||||
#define LAYOUT_EVER_GRANDE_CITY_PHOEBES_ROOM 112
|
||||
#define LAYOUT_EVER_GRANDE_CITY_GLACIAS_ROOM 113
|
||||
#define LAYOUT_EVER_GRANDE_CITY_DRAKES_ROOM 114
|
||||
#define LAYOUT_EVER_GRANDE_CITY_CHAMPIONS_ROOM 115
|
||||
#define LAYOUT_EVER_GRANDE_CITY_SHORT_HALL 116
|
||||
#define LAYOUT_ROUTE104_PRETTY_PETAL_FLOWER_SHOP 117
|
||||
#define LAYOUT_CABLE_CAR_STATION 118
|
||||
#define LAYOUT_ROUTE114_FOSSIL_MANIACS_HOUSE 119
|
||||
#define LAYOUT_ROUTE114_FOSSIL_MANIACS_TUNNEL 120
|
||||
#define LAYOUT_ROUTE114_LANETTES_HOUSE 121
|
||||
#define LAYOUT_ROUTE116_TUNNELERS_REST_HOUSE 122
|
||||
#define LAYOUT_ROUTE117_POKEMON_DAY_CARE 123
|
||||
#define LAYOUT_ROUTE121_SAFARI_ZONE_ENTRANCE 124
|
||||
#define LAYOUT_METEOR_FALLS_1F_1R 125
|
||||
#define LAYOUT_METEOR_FALLS_1F_2R 126
|
||||
#define LAYOUT_METEOR_FALLS_B1F_1R 127
|
||||
#define LAYOUT_METEOR_FALLS_B1F_2R 128
|
||||
#define LAYOUT_RUSTURF_TUNNEL 129
|
||||
#define LAYOUT_UNDERWATER_SOOTOPOLIS_CITY 130
|
||||
#define LAYOUT_DESERT_RUINS 131
|
||||
#define LAYOUT_GRANITE_CAVE_1F 132
|
||||
#define LAYOUT_GRANITE_CAVE_B1F 133
|
||||
#define LAYOUT_GRANITE_CAVE_B2F 134
|
||||
#define LAYOUT_PETALBURG_WOODS 135
|
||||
#define LAYOUT_MT_CHIMNEY 136
|
||||
#define LAYOUT_MT_PYRE_1F 137
|
||||
#define LAYOUT_MT_PYRE_2F 138
|
||||
#define LAYOUT_MT_PYRE_3F 139
|
||||
#define LAYOUT_MT_PYRE_4F 140
|
||||
#define LAYOUT_MT_PYRE_5F 141
|
||||
#define LAYOUT_MT_PYRE_6F 142
|
||||
#define LAYOUT_AQUA_HIDEOUT_1F 143
|
||||
#define LAYOUT_AQUA_HIDEOUT_B1F 144
|
||||
#define LAYOUT_AQUA_HIDEOUT_B2F 145
|
||||
#define LAYOUT_UNDERWATER_SEAFLOOR_CAVERN 146
|
||||
#define LAYOUT_SEAFLOOR_CAVERN_ENTRANCE 147
|
||||
#define LAYOUT_SEAFLOOR_CAVERN_ROOM1 148
|
||||
#define LAYOUT_SEAFLOOR_CAVERN_ROOM2 149
|
||||
#define LAYOUT_SEAFLOOR_CAVERN_ROOM3 150
|
||||
#define LAYOUT_SEAFLOOR_CAVERN_ROOM4 151
|
||||
#define LAYOUT_SEAFLOOR_CAVERN_ROOM5 152
|
||||
#define LAYOUT_SEAFLOOR_CAVERN_ROOM6 153
|
||||
#define LAYOUT_SEAFLOOR_CAVERN_ROOM7 154
|
||||
#define LAYOUT_SEAFLOOR_CAVERN_ROOM8 155
|
||||
#define LAYOUT_SEAFLOOR_CAVERN_ROOM9 156
|
||||
#define LAYOUT_CAVE_OF_ORIGIN_ENTRANCE 157
|
||||
#define LAYOUT_CAVE_OF_ORIGIN_1F 158
|
||||
#define LAYOUT_CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP1 159
|
||||
#define LAYOUT_CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP2 160
|
||||
#define LAYOUT_CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP3 161
|
||||
#define LAYOUT_CAVE_OF_ORIGIN_B1F 162
|
||||
#define LAYOUT_VICTORY_ROAD_1F 163
|
||||
#define LAYOUT_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM 164
|
||||
#define LAYOUT_SHOAL_CAVE_LOW_TIDE_INNER_ROOM 165
|
||||
#define LAYOUT_SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM 166
|
||||
#define LAYOUT_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM 167
|
||||
#define LAYOUT_SHOAL_CAVE_HIGH_TIDE_ENTRANCE_ROOM 168
|
||||
#define LAYOUT_SHOAL_CAVE_HIGH_TIDE_INNER_ROOM 169
|
||||
#define LAYOUT_UNUSED_CAVE1 170
|
||||
#define LAYOUT_UNUSED_CAVE2 171
|
||||
#define LAYOUT_UNUSED_CAVE3 172
|
||||
#define LAYOUT_UNUSED_CAVE4 173
|
||||
#define LAYOUT_UNUSED_CAVE5 174
|
||||
#define LAYOUT_UNUSED_CAVE6 175
|
||||
#define LAYOUT_UNUSED_CAVE7 176
|
||||
#define LAYOUT_UNUSED_CAVE8 177
|
||||
#define LAYOUT_UNUSED_CAVE9 178
|
||||
#define LAYOUT_UNUSED_CAVE10 179
|
||||
#define LAYOUT_UNUSED_CAVE11 180
|
||||
#define LAYOUT_UNUSED_CAVE12 181
|
||||
#define LAYOUT_UNUSED_CAVE13 182
|
||||
#define LAYOUT_UNUSED_CAVE14 183
|
||||
#define LAYOUT_NEW_MAUVILLE_ENTRANCE 184
|
||||
#define LAYOUT_NEW_MAUVILLE_INSIDE 185
|
||||
#define LAYOUT_ABANDONED_SHIP_DECK 186
|
||||
#define LAYOUT_ABANDONED_SHIP_CORRIDORS_1F 187
|
||||
#define LAYOUT_ABANDONED_SHIP_ROOMS_1F 188
|
||||
#define LAYOUT_ABANDONED_SHIP_CORRIDORS_B1F 189
|
||||
#define LAYOUT_ABANDONED_SHIP_ROOMS_B1F 190
|
||||
#define LAYOUT_ABANDONED_SHIP_ROOMS2_B1F 191
|
||||
#define LAYOUT_ABANDONED_SHIP_UNDERWATER1 192
|
||||
#define LAYOUT_ABANDONED_SHIP_ROOM_B1F 193
|
||||
#define LAYOUT_ABANDONED_SHIP_ROOMS2_1F 194
|
||||
#define LAYOUT_ABANDONED_SHIP_CAPTAINS_OFFICE 195
|
||||
#define LAYOUT_ABANDONED_SHIP_UNDERWATER2 196
|
||||
#define LAYOUT_SECRET_BASE_RED_CAVE1 197
|
||||
#define LAYOUT_SECRET_BASE_BROWN_CAVE1 198
|
||||
#define LAYOUT_SECRET_BASE_BLUE_CAVE1 199
|
||||
#define LAYOUT_SECRET_BASE_YELLOW_CAVE1 200
|
||||
#define LAYOUT_SECRET_BASE_TREE1 201
|
||||
#define LAYOUT_SECRET_BASE_SHRUB1 202
|
||||
#define LAYOUT_SECRET_BASE_RED_CAVE2 203
|
||||
#define LAYOUT_SECRET_BASE_BROWN_CAVE2 204
|
||||
#define LAYOUT_SECRET_BASE_BLUE_CAVE2 205
|
||||
#define LAYOUT_SECRET_BASE_YELLOW_CAVE2 206
|
||||
#define LAYOUT_SECRET_BASE_TREE2 207
|
||||
#define LAYOUT_SECRET_BASE_SHRUB2 208
|
||||
#define LAYOUT_SECRET_BASE_RED_CAVE3 209
|
||||
#define LAYOUT_SECRET_BASE_BROWN_CAVE3 210
|
||||
#define LAYOUT_SECRET_BASE_BLUE_CAVE3 211
|
||||
#define LAYOUT_SECRET_BASE_YELLOW_CAVE3 212
|
||||
#define LAYOUT_SECRET_BASE_TREE3 213
|
||||
#define LAYOUT_SECRET_BASE_SHRUB3 214
|
||||
#define LAYOUT_SECRET_BASE_RED_CAVE4 215
|
||||
#define LAYOUT_SECRET_BASE_BROWN_CAVE4 216
|
||||
#define LAYOUT_SECRET_BASE_BLUE_CAVE4 217
|
||||
#define LAYOUT_SECRET_BASE_YELLOW_CAVE4 218
|
||||
#define LAYOUT_SECRET_BASE_TREE4 219
|
||||
#define LAYOUT_SECRET_BASE_SHRUB4 220
|
||||
#define LAYOUT_BATTLE_COLOSSEUM_2P 221
|
||||
#define LAYOUT_TRADE_CENTER 222
|
||||
#define LAYOUT_RECORD_CORNER 223
|
||||
#define LAYOUT_BATTLE_COLOSSEUM_4P 224
|
||||
#define LAYOUT_CONTEST_HALL 225
|
||||
#define LAYOUT_UNUSED_CONTEST_HALL1 226
|
||||
#define LAYOUT_UNUSED_CONTEST_HALL2 227
|
||||
#define LAYOUT_UNUSED_CONTEST_HALL3 228
|
||||
#define LAYOUT_UNUSED_CONTEST_HALL4 229
|
||||
#define LAYOUT_UNUSED_CONTEST_HALL5 230
|
||||
#define LAYOUT_UNUSED_CONTEST_HALL6 231
|
||||
#define LAYOUT_CONTEST_HALL_BEAUTY 232
|
||||
#define LAYOUT_CONTEST_HALL_TOUGH 233
|
||||
#define LAYOUT_CONTEST_HALL_COOL 234
|
||||
#define LAYOUT_CONTEST_HALL_SMART 235
|
||||
#define LAYOUT_CONTEST_HALL_CUTE 236
|
||||
#define LAYOUT_INSIDE_OF_TRUCK 237
|
||||
#define LAYOUT_SAFARI_ZONE_NORTHWEST 238
|
||||
#define LAYOUT_SAFARI_ZONE_NORTH 239
|
||||
#define LAYOUT_SAFARI_ZONE_SOUTHWEST 240
|
||||
#define LAYOUT_SAFARI_ZONE_SOUTH 241
|
||||
#define LAYOUT_UNUSED_OUTDOOR_AREA 242
|
||||
#define LAYOUT_ROUTE109_SEASHORE_HOUSE 243
|
||||
#define LAYOUT_ROUTE110_TRICK_HOUSE_ENTRANCE 244
|
||||
#define LAYOUT_ROUTE110_TRICK_HOUSE_END 245
|
||||
#define LAYOUT_ROUTE110_TRICK_HOUSE_CORRIDOR 246
|
||||
#define LAYOUT_ROUTE110_TRICK_HOUSE_PUZZLE1 247
|
||||
#define LAYOUT_ROUTE110_TRICK_HOUSE_PUZZLE2 248
|
||||
#define LAYOUT_ROUTE110_TRICK_HOUSE_PUZZLE3 249
|
||||
#define LAYOUT_ROUTE110_TRICK_HOUSE_PUZZLE4 250
|
||||
#define LAYOUT_ROUTE110_TRICK_HOUSE_PUZZLE5 251
|
||||
#define LAYOUT_ROUTE110_TRICK_HOUSE_PUZZLE6 252
|
||||
#define LAYOUT_ROUTE110_TRICK_HOUSE_PUZZLE7 253
|
||||
#define LAYOUT_ROUTE110_TRICK_HOUSE_PUZZLE8 254
|
||||
#define LAYOUT_FORTREE_CITY_DECORATION_SHOP 255
|
||||
#define LAYOUT_ROUTE110_SEASIDE_CYCLING_ROAD_ENTRANCE 256
|
||||
#define LAYOUT_LILYCOVE_CITY_DEPARTMENT_STORE_1F 257
|
||||
#define LAYOUT_LILYCOVE_CITY_DEPARTMENT_STORE_2F 258
|
||||
#define LAYOUT_LILYCOVE_CITY_DEPARTMENT_STORE_3F 259
|
||||
#define LAYOUT_LILYCOVE_CITY_DEPARTMENT_STORE_4F 260
|
||||
#define LAYOUT_LILYCOVE_CITY_DEPARTMENT_STORE_5F 261
|
||||
#define LAYOUT_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP 262
|
||||
#define LAYOUT_ROUTE130 263
|
||||
#define LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_LOBBY 264
|
||||
#define LAYOUT_BATTLE_FRONTIER_OUTSIDE_WEST 265
|
||||
#define LAYOUT_BATTLE_ELEVATOR 266
|
||||
#define LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR 267
|
||||
#define LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM 268
|
||||
#define LAYOUT_RUSTBORO_CITY_DEVON_CORP_3F 269
|
||||
#define LAYOUT_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F 270
|
||||
#define LAYOUT_ROUTE119_WEATHER_INSTITUTE_1F 271
|
||||
#define LAYOUT_ROUTE119_WEATHER_INSTITUTE_2F 272
|
||||
#define LAYOUT_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR 273
|
||||
#define LAYOUT_UNDERWATER_ROUTE124 274
|
||||
#define LAYOUT_MOSSDEEP_CITY_SPACE_CENTER_1F 275
|
||||
#define LAYOUT_MOSSDEEP_CITY_SPACE_CENTER_2F 276
|
||||
#define LAYOUT_SS_TIDAL_CORRIDOR 277
|
||||
#define LAYOUT_SS_TIDAL_LOWER_DECK 278
|
||||
#define LAYOUT_SS_TIDAL_ROOMS 279
|
||||
#define LAYOUT_ISLAND_CAVE 280
|
||||
#define LAYOUT_ANCIENT_TOMB 281
|
||||
#define LAYOUT_UNDERWATER_ROUTE134 282
|
||||
#define LAYOUT_UNDERWATER_SEALED_CHAMBER 283
|
||||
#define LAYOUT_SEALED_CHAMBER_OUTER_ROOM 284
|
||||
#define LAYOUT_VICTORY_ROAD_B1F 285
|
||||
#define LAYOUT_VICTORY_ROAD_B2F 286
|
||||
#define LAYOUT_ROUTE104_PROTOTYPE 287
|
||||
#define LAYOUT_GRANITE_CAVE_STEVENS_ROOM 288
|
||||
#define LAYOUT_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS 289
|
||||
#define LAYOUT_SOUTHERN_ISLAND_EXTERIOR 290
|
||||
#define LAYOUT_SOUTHERN_ISLAND_INTERIOR 291
|
||||
#define LAYOUT_JAGGED_PASS 292
|
||||
#define LAYOUT_FIERY_PATH 293
|
||||
#define LAYOUT_RUSTBORO_CITY_FLAT2_1F 294
|
||||
#define LAYOUT_RUSTBORO_CITY_FLAT2_2F 295
|
||||
#define LAYOUT_RUSTBORO_CITY_FLAT2_3F 296
|
||||
#define LAYOUT_SOOTOPOLIS_CITY_LOTAD_AND_SEEDOT_HOUSE 297
|
||||
#define LAYOUT_EVER_GRANDE_CITY_HALL_OF_FAME 298
|
||||
#define LAYOUT_LILYCOVE_CITY_COVE_LILY_MOTEL_1F 299
|
||||
#define LAYOUT_LILYCOVE_CITY_COVE_LILY_MOTEL_2F 300
|
||||
#define LAYOUT_ROUTE124_DIVING_TREASURE_HUNTERS_HOUSE 301
|
||||
#define LAYOUT_MT_PYRE_EXTERIOR 302
|
||||
#define LAYOUT_MT_PYRE_SUMMIT 303
|
||||
#define LAYOUT_SEALED_CHAMBER_INNER_ROOM 304
|
||||
#define LAYOUT_MOSSDEEP_CITY_GAME_CORNER_1F 305
|
||||
#define LAYOUT_MOSSDEEP_CITY_GAME_CORNER_B1F 306
|
||||
#define LAYOUT_SOOTOPOLIS_CITY_HOUSE1 307
|
||||
#define LAYOUT_SOOTOPOLIS_CITY_HOUSE2 308
|
||||
#define LAYOUT_SOOTOPOLIS_CITY_HOUSE3 309
|
||||
#define LAYOUT_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS 310
|
||||
#define LAYOUT_SCORCHED_SLAB 311
|
||||
#define LAYOUT_CAVE_OF_ORIGIN_UNUSED_B4F_LAVA 312
|
||||
#define LAYOUT_RUSTBORO_CITY_FLAT1_1F 313
|
||||
#define LAYOUT_RUSTBORO_CITY_FLAT1_2F 314
|
||||
#define LAYOUT_EVER_GRANDE_CITY_HALL4 315
|
||||
#define LAYOUT_AQUA_HIDEOUT_UNUSED_RUBY_MAP1 316
|
||||
#define LAYOUT_AQUA_HIDEOUT_UNUSED_RUBY_MAP2 317
|
||||
#define LAYOUT_AQUA_HIDEOUT_UNUSED_RUBY_MAP3 318
|
||||
#define LAYOUT_ROUTE131_SKY_PILLAR 319
|
||||
#define LAYOUT_SKY_PILLAR_ENTRANCE 320
|
||||
#define LAYOUT_SKY_PILLAR_OUTSIDE 321
|
||||
#define LAYOUT_SKY_PILLAR_1F 322
|
||||
#define LAYOUT_SKY_PILLAR_2F 323
|
||||
#define LAYOUT_SKY_PILLAR_3F 324
|
||||
#define LAYOUT_SKY_PILLAR_4F 325
|
||||
#define LAYOUT_SEAFLOOR_CAVERN_ROOM9_LAVA 326
|
||||
#define LAYOUT_MOSSDEEP_CITY_STEVENS_HOUSE 327
|
||||
#define LAYOUT_SHOAL_CAVE_LOW_TIDE_ICE_ROOM 328
|
||||
#define LAYOUT_SAFARI_ZONE_REST_HOUSE 329
|
||||
#define LAYOUT_SKY_PILLAR_5F 330
|
||||
#define LAYOUT_SKY_PILLAR_TOP 331
|
||||
#define LAYOUT_BATTLE_FRONTIER_BATTLE_DOME_LOBBY 332
|
||||
#define LAYOUT_BATTLE_FRONTIER_BATTLE_DOME_CORRIDOR 333
|
||||
#define LAYOUT_BATTLE_FRONTIER_BATTLE_DOME_PRE_BATTLE_ROOM 334
|
||||
#define LAYOUT_BATTLE_FRONTIER_BATTLE_DOME_BATTLE_ROOM 335
|
||||
#define LAYOUT_MAGMA_HIDEOUT_1F 336
|
||||
#define LAYOUT_MAGMA_HIDEOUT_2F_1R 337
|
||||
#define LAYOUT_MAGMA_HIDEOUT_2F_2R 338
|
||||
#define LAYOUT_MAGMA_HIDEOUT_3F_1R 339
|
||||
#define LAYOUT_MAGMA_HIDEOUT_3F_2R 340
|
||||
#define LAYOUT_MAGMA_HIDEOUT_4F 341
|
||||
#define LAYOUT_BATTLE_FRONTIER_BATTLE_PALACE_LOBBY 342
|
||||
#define LAYOUT_BATTLE_FRONTIER_BATTLE_PALACE_CORRIDOR 343
|
||||
#define LAYOUT_BATTLE_FRONTIER_BATTLE_PALACE_BATTLE_ROOM 344
|
||||
#define LAYOUT_BATTLE_FRONTIER_OUTSIDE_EAST 345
|
||||
#define LAYOUT_BATTLE_FRONTIER_BATTLE_FACTORY_LOBBY 346
|
||||
#define LAYOUT_BATTLE_FRONTIER_BATTLE_FACTORY_PRE_BATTLE_ROOM 347
|
||||
#define LAYOUT_BATTLE_FRONTIER_BATTLE_FACTORY_BATTLE_ROOM 348
|
||||
#define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_LOBBY 349
|
||||
#define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_CORRIDOR 350
|
||||
#define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_THREE_PATH_ROOM 351
|
||||
#define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_NORMAL 352
|
||||
#define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_FINAL 353
|
||||
#define LAYOUT_BATTLE_FRONTIER_BATTLE_ARENA_LOBBY 354
|
||||
#define LAYOUT_BATTLE_FRONTIER_BATTLE_ARENA_CORRIDOR 355
|
||||
#define LAYOUT_BATTLE_FRONTIER_BATTLE_ARENA_BATTLE_ROOM 356
|
||||
#define LAYOUT_SOOTOPOLIS_CITY_LEGENDS_BATTLE 357
|
||||
#define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_WILD_MONS 358
|
||||
#define LAYOUT_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_UNUSED 359
|
||||
#define LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY 360
|
||||
#define LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_FLOOR 361
|
||||
#define LAYOUT_BATTLE_PYRAMID_SQUARE01 362
|
||||
#define LAYOUT_BATTLE_PYRAMID_SQUARE02 363
|
||||
#define LAYOUT_BATTLE_PYRAMID_SQUARE03 364
|
||||
#define LAYOUT_BATTLE_PYRAMID_SQUARE04 365
|
||||
#define LAYOUT_BATTLE_PYRAMID_SQUARE05 366
|
||||
#define LAYOUT_BATTLE_PYRAMID_SQUARE06 367
|
||||
#define LAYOUT_BATTLE_PYRAMID_SQUARE07 368
|
||||
#define LAYOUT_BATTLE_PYRAMID_SQUARE08 369
|
||||
#define LAYOUT_BATTLE_PYRAMID_SQUARE09 370
|
||||
#define LAYOUT_BATTLE_PYRAMID_SQUARE10 371
|
||||
#define LAYOUT_BATTLE_PYRAMID_SQUARE11 372
|
||||
#define LAYOUT_BATTLE_PYRAMID_SQUARE12 373
|
||||
#define LAYOUT_BATTLE_PYRAMID_SQUARE13 374
|
||||
#define LAYOUT_BATTLE_PYRAMID_SQUARE14 375
|
||||
#define LAYOUT_BATTLE_PYRAMID_SQUARE15 376
|
||||
#define LAYOUT_BATTLE_PYRAMID_SQUARE16 377
|
||||
#define LAYOUT_BATTLE_FRONTIER_BATTLE_PYRAMID_TOP 378
|
||||
#define LAYOUT_MAGMA_HIDEOUT_3F_3R 379
|
||||
#define LAYOUT_MAGMA_HIDEOUT_2F_3R 380
|
||||
#define LAYOUT_MIRAGE_TOWER_1F 381
|
||||
#define LAYOUT_MIRAGE_TOWER_2F 382
|
||||
#define LAYOUT_MIRAGE_TOWER_3F 383
|
||||
#define LAYOUT_BATTLE_TENT_LOBBY 384
|
||||
#define LAYOUT_BATTLE_TENT_CORRIDOR 385
|
||||
#define LAYOUT_BATTLE_TENT_BATTLE_ROOM 386
|
||||
#define LAYOUT_VERDANTURF_TOWN_BATTLE_TENT_BATTLE_ROOM 387
|
||||
#define LAYOUT_MIRAGE_TOWER_4F 388
|
||||
#define LAYOUT_DESERT_UNDERPASS 389
|
||||
#define LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_PARTNER_ROOM 390
|
||||
#define LAYOUT_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR 391
|
||||
#define LAYOUT_ROUTE111_NO_MIRAGE_TOWER 392
|
||||
#define LAYOUT_UNION_ROOM 393
|
||||
#define LAYOUT_SAFARI_ZONE_NORTHEAST 394
|
||||
#define LAYOUT_SAFARI_ZONE_SOUTHEAST 395
|
||||
#define LAYOUT_BATTLE_FRONTIER_RANKING_HALL 396
|
||||
#define LAYOUT_BATTLE_FRONTIER_LOUNGE1 397
|
||||
#define LAYOUT_BATTLE_FRONTIER_EXCHANGE_SERVICE_CORNER 398
|
||||
#define LAYOUT_BATTLE_FRONTIER_RECEPTION_GATE 399
|
||||
#define LAYOUT_ARTISAN_CAVE_B1F 400
|
||||
#define LAYOUT_ARTISAN_CAVE_1F 401
|
||||
#define LAYOUT_FARAWAY_ISLAND_ENTRANCE 402
|
||||
#define LAYOUT_FARAWAY_ISLAND_INTERIOR 403
|
||||
#define LAYOUT_BIRTH_ISLAND_EXTERIOR 404
|
||||
#define LAYOUT_ISLAND_HARBOR 405
|
||||
#define LAYOUT_UNDERWATER_MARINE_CAVE 406
|
||||
#define LAYOUT_MARINE_CAVE_ENTRANCE 407
|
||||
#define LAYOUT_TERRA_CAVE_ENTRANCE 408
|
||||
#define LAYOUT_TERRA_CAVE_END 409
|
||||
#define LAYOUT_UNDERWATER_ROUTE105 410
|
||||
#define LAYOUT_UNDERWATER_ROUTE125 411
|
||||
#define LAYOUT_UNDERWATER_ROUTE129 412
|
||||
#define LAYOUT_MARINE_CAVE_END 413
|
||||
#define LAYOUT_TRAINER_HILL_ENTRANCE 414
|
||||
#define LAYOUT_TRAINER_HILL_1F 415
|
||||
#define LAYOUT_TRAINER_HILL_2F 416
|
||||
#define LAYOUT_TRAINER_HILL_3F 417
|
||||
#define LAYOUT_TRAINER_HILL_4F 418
|
||||
#define LAYOUT_TRAINER_HILL_ROOF 419
|
||||
#define LAYOUT_ALTERING_CAVE 420
|
||||
#define LAYOUT_NAVEL_ROCK_EXTERIOR 421
|
||||
#define LAYOUT_NAVEL_ROCK_ENTRANCE 422
|
||||
#define LAYOUT_NAVEL_ROCK_TOP 423
|
||||
#define LAYOUT_NAVEL_ROCK_BOTTOM 424
|
||||
#define LAYOUT_NAVEL_ROCK_LADDER_ROOM1 425
|
||||
#define LAYOUT_NAVEL_ROCK_LADDER_ROOM2 426
|
||||
#define LAYOUT_NAVEL_ROCK_B1F 427
|
||||
#define LAYOUT_NAVEL_ROCK_FORK 428
|
||||
#define LAYOUT_BATTLE_FRONTIER_LOUNGE2 429
|
||||
#define LAYOUT_BATTLE_FRONTIER_SCOTTS_HOUSE 430
|
||||
#define LAYOUT_METEOR_FALLS_STEVENS_CAVE 431
|
||||
#define LAYOUT_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB_WITH_TABLE 432
|
||||
#define LAYOUT_SKY_PILLAR_1F_CLEAN 433
|
||||
#define LAYOUT_SKY_PILLAR_2F_CLEAN 434
|
||||
#define LAYOUT_SKY_PILLAR_3F_CLEAN 435
|
||||
#define LAYOUT_SKY_PILLAR_4F_CLEAN 436
|
||||
#define LAYOUT_SKY_PILLAR_5F_CLEAN 437
|
||||
#define LAYOUT_SKY_PILLAR_TOP_CLEAN 438
|
||||
#define LAYOUT_SOOTOPOLIS_CITY_MYSTERY_EVENTS_HOUSE_1F 439
|
||||
#define LAYOUT_SOOTOPOLIS_CITY_MYSTERY_EVENTS_HOUSE_B1F 440
|
||||
#define LAYOUT_SOOTOPOLIS_CITY_MYSTERY_EVENTS_HOUSE_1F_STAIRS_UNBLOCKED 441
|
||||
|
||||
#endif // GUARD_CONSTANTS_LAYOUTS_H
|
||||
@ -1,596 +0,0 @@
|
||||
#ifndef GUARD_CONSTANTS_MAP_GROUPS_H
|
||||
#define GUARD_CONSTANTS_MAP_GROUPS_H
|
||||
|
||||
//
|
||||
// DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/map_groups.json
|
||||
//
|
||||
|
||||
// gMapGroup_TownsAndRoutes
|
||||
#define MAP_PETALBURG_CITY (0 | (0 << 8))
|
||||
#define MAP_SLATEPORT_CITY (1 | (0 << 8))
|
||||
#define MAP_MAUVILLE_CITY (2 | (0 << 8))
|
||||
#define MAP_RUSTBORO_CITY (3 | (0 << 8))
|
||||
#define MAP_FORTREE_CITY (4 | (0 << 8))
|
||||
#define MAP_LILYCOVE_CITY (5 | (0 << 8))
|
||||
#define MAP_MOSSDEEP_CITY (6 | (0 << 8))
|
||||
#define MAP_SOOTOPOLIS_CITY (7 | (0 << 8))
|
||||
#define MAP_EVER_GRANDE_CITY (8 | (0 << 8))
|
||||
#define MAP_LITTLEROOT_TOWN (9 | (0 << 8))
|
||||
#define MAP_OLDALE_TOWN (10 | (0 << 8))
|
||||
#define MAP_DEWFORD_TOWN (11 | (0 << 8))
|
||||
#define MAP_LAVARIDGE_TOWN (12 | (0 << 8))
|
||||
#define MAP_FALLARBOR_TOWN (13 | (0 << 8))
|
||||
#define MAP_VERDANTURF_TOWN (14 | (0 << 8))
|
||||
#define MAP_PACIFIDLOG_TOWN (15 | (0 << 8))
|
||||
#define MAP_ROUTE101 (16 | (0 << 8))
|
||||
#define MAP_ROUTE102 (17 | (0 << 8))
|
||||
#define MAP_ROUTE103 (18 | (0 << 8))
|
||||
#define MAP_ROUTE104 (19 | (0 << 8))
|
||||
#define MAP_ROUTE105 (20 | (0 << 8))
|
||||
#define MAP_ROUTE106 (21 | (0 << 8))
|
||||
#define MAP_ROUTE107 (22 | (0 << 8))
|
||||
#define MAP_ROUTE108 (23 | (0 << 8))
|
||||
#define MAP_ROUTE109 (24 | (0 << 8))
|
||||
#define MAP_ROUTE110 (25 | (0 << 8))
|
||||
#define MAP_ROUTE111 (26 | (0 << 8))
|
||||
#define MAP_ROUTE112 (27 | (0 << 8))
|
||||
#define MAP_ROUTE113 (28 | (0 << 8))
|
||||
#define MAP_ROUTE114 (29 | (0 << 8))
|
||||
#define MAP_ROUTE115 (30 | (0 << 8))
|
||||
#define MAP_ROUTE116 (31 | (0 << 8))
|
||||
#define MAP_ROUTE117 (32 | (0 << 8))
|
||||
#define MAP_ROUTE118 (33 | (0 << 8))
|
||||
#define MAP_ROUTE119 (34 | (0 << 8))
|
||||
#define MAP_ROUTE120 (35 | (0 << 8))
|
||||
#define MAP_ROUTE121 (36 | (0 << 8))
|
||||
#define MAP_ROUTE122 (37 | (0 << 8))
|
||||
#define MAP_ROUTE123 (38 | (0 << 8))
|
||||
#define MAP_ROUTE124 (39 | (0 << 8))
|
||||
#define MAP_ROUTE125 (40 | (0 << 8))
|
||||
#define MAP_ROUTE126 (41 | (0 << 8))
|
||||
#define MAP_ROUTE127 (42 | (0 << 8))
|
||||
#define MAP_ROUTE128 (43 | (0 << 8))
|
||||
#define MAP_ROUTE129 (44 | (0 << 8))
|
||||
#define MAP_ROUTE130 (45 | (0 << 8))
|
||||
#define MAP_ROUTE131 (46 | (0 << 8))
|
||||
#define MAP_ROUTE132 (47 | (0 << 8))
|
||||
#define MAP_ROUTE133 (48 | (0 << 8))
|
||||
#define MAP_ROUTE134 (49 | (0 << 8))
|
||||
#define MAP_UNDERWATER_ROUTE124 (50 | (0 << 8))
|
||||
#define MAP_UNDERWATER_ROUTE126 (51 | (0 << 8))
|
||||
#define MAP_UNDERWATER_ROUTE127 (52 | (0 << 8))
|
||||
#define MAP_UNDERWATER_ROUTE128 (53 | (0 << 8))
|
||||
#define MAP_UNDERWATER_ROUTE129 (54 | (0 << 8))
|
||||
#define MAP_UNDERWATER_ROUTE105 (55 | (0 << 8))
|
||||
#define MAP_UNDERWATER_ROUTE125 (56 | (0 << 8))
|
||||
|
||||
// gMapGroup_IndoorLittleroot
|
||||
#define MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F (0 | (1 << 8))
|
||||
#define MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F (1 | (1 << 8))
|
||||
#define MAP_LITTLEROOT_TOWN_MAYS_HOUSE_1F (2 | (1 << 8))
|
||||
#define MAP_LITTLEROOT_TOWN_MAYS_HOUSE_2F (3 | (1 << 8))
|
||||
#define MAP_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB (4 | (1 << 8))
|
||||
|
||||
// gMapGroup_IndoorOldale
|
||||
#define MAP_OLDALE_TOWN_HOUSE1 (0 | (2 << 8))
|
||||
#define MAP_OLDALE_TOWN_HOUSE2 (1 | (2 << 8))
|
||||
#define MAP_OLDALE_TOWN_POKEMON_CENTER_1F (2 | (2 << 8))
|
||||
#define MAP_OLDALE_TOWN_POKEMON_CENTER_2F (3 | (2 << 8))
|
||||
#define MAP_OLDALE_TOWN_MART (4 | (2 << 8))
|
||||
|
||||
// gMapGroup_IndoorDewford
|
||||
#define MAP_DEWFORD_TOWN_HOUSE1 (0 | (3 << 8))
|
||||
#define MAP_DEWFORD_TOWN_POKEMON_CENTER_1F (1 | (3 << 8))
|
||||
#define MAP_DEWFORD_TOWN_POKEMON_CENTER_2F (2 | (3 << 8))
|
||||
#define MAP_DEWFORD_TOWN_GYM (3 | (3 << 8))
|
||||
#define MAP_DEWFORD_TOWN_HALL (4 | (3 << 8))
|
||||
#define MAP_DEWFORD_TOWN_HOUSE2 (5 | (3 << 8))
|
||||
|
||||
// gMapGroup_IndoorLavaridge
|
||||
#define MAP_LAVARIDGE_TOWN_HERB_SHOP (0 | (4 << 8))
|
||||
#define MAP_LAVARIDGE_TOWN_GYM_1F (1 | (4 << 8))
|
||||
#define MAP_LAVARIDGE_TOWN_GYM_B1F (2 | (4 << 8))
|
||||
#define MAP_LAVARIDGE_TOWN_HOUSE (3 | (4 << 8))
|
||||
#define MAP_LAVARIDGE_TOWN_MART (4 | (4 << 8))
|
||||
#define MAP_LAVARIDGE_TOWN_POKEMON_CENTER_1F (5 | (4 << 8))
|
||||
#define MAP_LAVARIDGE_TOWN_POKEMON_CENTER_2F (6 | (4 << 8))
|
||||
|
||||
// gMapGroup_IndoorFallarbor
|
||||
#define MAP_FALLARBOR_TOWN_MART (0 | (5 << 8))
|
||||
#define MAP_FALLARBOR_TOWN_BATTLE_TENT_LOBBY (1 | (5 << 8))
|
||||
#define MAP_FALLARBOR_TOWN_BATTLE_TENT_CORRIDOR (2 | (5 << 8))
|
||||
#define MAP_FALLARBOR_TOWN_BATTLE_TENT_BATTLE_ROOM (3 | (5 << 8))
|
||||
#define MAP_FALLARBOR_TOWN_POKEMON_CENTER_1F (4 | (5 << 8))
|
||||
#define MAP_FALLARBOR_TOWN_POKEMON_CENTER_2F (5 | (5 << 8))
|
||||
#define MAP_FALLARBOR_TOWN_COZMOS_HOUSE (6 | (5 << 8))
|
||||
#define MAP_FALLARBOR_TOWN_MOVE_RELEARNERS_HOUSE (7 | (5 << 8))
|
||||
|
||||
// gMapGroup_IndoorVerdanturf
|
||||
#define MAP_VERDANTURF_TOWN_BATTLE_TENT_LOBBY (0 | (6 << 8))
|
||||
#define MAP_VERDANTURF_TOWN_BATTLE_TENT_CORRIDOR (1 | (6 << 8))
|
||||
#define MAP_VERDANTURF_TOWN_BATTLE_TENT_BATTLE_ROOM (2 | (6 << 8))
|
||||
#define MAP_VERDANTURF_TOWN_MART (3 | (6 << 8))
|
||||
#define MAP_VERDANTURF_TOWN_POKEMON_CENTER_1F (4 | (6 << 8))
|
||||
#define MAP_VERDANTURF_TOWN_POKEMON_CENTER_2F (5 | (6 << 8))
|
||||
#define MAP_VERDANTURF_TOWN_WANDAS_HOUSE (6 | (6 << 8))
|
||||
#define MAP_VERDANTURF_TOWN_FRIENDSHIP_RATERS_HOUSE (7 | (6 << 8))
|
||||
#define MAP_VERDANTURF_TOWN_HOUSE (8 | (6 << 8))
|
||||
|
||||
// gMapGroup_IndoorPacifidlog
|
||||
#define MAP_PACIFIDLOG_TOWN_POKEMON_CENTER_1F (0 | (7 << 8))
|
||||
#define MAP_PACIFIDLOG_TOWN_POKEMON_CENTER_2F (1 | (7 << 8))
|
||||
#define MAP_PACIFIDLOG_TOWN_HOUSE1 (2 | (7 << 8))
|
||||
#define MAP_PACIFIDLOG_TOWN_HOUSE2 (3 | (7 << 8))
|
||||
#define MAP_PACIFIDLOG_TOWN_HOUSE3 (4 | (7 << 8))
|
||||
#define MAP_PACIFIDLOG_TOWN_HOUSE4 (5 | (7 << 8))
|
||||
#define MAP_PACIFIDLOG_TOWN_HOUSE5 (6 | (7 << 8))
|
||||
|
||||
// gMapGroup_IndoorPetalburg
|
||||
#define MAP_PETALBURG_CITY_WALLYS_HOUSE (0 | (8 << 8))
|
||||
#define MAP_PETALBURG_CITY_GYM (1 | (8 << 8))
|
||||
#define MAP_PETALBURG_CITY_HOUSE1 (2 | (8 << 8))
|
||||
#define MAP_PETALBURG_CITY_HOUSE2 (3 | (8 << 8))
|
||||
#define MAP_PETALBURG_CITY_POKEMON_CENTER_1F (4 | (8 << 8))
|
||||
#define MAP_PETALBURG_CITY_POKEMON_CENTER_2F (5 | (8 << 8))
|
||||
#define MAP_PETALBURG_CITY_MART (6 | (8 << 8))
|
||||
|
||||
// gMapGroup_IndoorSlateport
|
||||
#define MAP_SLATEPORT_CITY_STERNS_SHIPYARD_1F (0 | (9 << 8))
|
||||
#define MAP_SLATEPORT_CITY_STERNS_SHIPYARD_2F (1 | (9 << 8))
|
||||
#define MAP_SLATEPORT_CITY_BATTLE_TENT_LOBBY (2 | (9 << 8))
|
||||
#define MAP_SLATEPORT_CITY_BATTLE_TENT_CORRIDOR (3 | (9 << 8))
|
||||
#define MAP_SLATEPORT_CITY_BATTLE_TENT_BATTLE_ROOM (4 | (9 << 8))
|
||||
#define MAP_SLATEPORT_CITY_NAME_RATERS_HOUSE (5 | (9 << 8))
|
||||
#define MAP_SLATEPORT_CITY_POKEMON_FAN_CLUB (6 | (9 << 8))
|
||||
#define MAP_SLATEPORT_CITY_OCEANIC_MUSEUM_1F (7 | (9 << 8))
|
||||
#define MAP_SLATEPORT_CITY_OCEANIC_MUSEUM_2F (8 | (9 << 8))
|
||||
#define MAP_SLATEPORT_CITY_HARBOR (9 | (9 << 8))
|
||||
#define MAP_SLATEPORT_CITY_HOUSE (10 | (9 << 8))
|
||||
#define MAP_SLATEPORT_CITY_POKEMON_CENTER_1F (11 | (9 << 8))
|
||||
#define MAP_SLATEPORT_CITY_POKEMON_CENTER_2F (12 | (9 << 8))
|
||||
#define MAP_SLATEPORT_CITY_MART (13 | (9 << 8))
|
||||
|
||||
// gMapGroup_IndoorMauville
|
||||
#define MAP_MAUVILLE_CITY_GYM (0 | (10 << 8))
|
||||
#define MAP_MAUVILLE_CITY_BIKE_SHOP (1 | (10 << 8))
|
||||
#define MAP_MAUVILLE_CITY_HOUSE1 (2 | (10 << 8))
|
||||
#define MAP_MAUVILLE_CITY_GAME_CORNER (3 | (10 << 8))
|
||||
#define MAP_MAUVILLE_CITY_HOUSE2 (4 | (10 << 8))
|
||||
#define MAP_MAUVILLE_CITY_POKEMON_CENTER_1F (5 | (10 << 8))
|
||||
#define MAP_MAUVILLE_CITY_POKEMON_CENTER_2F (6 | (10 << 8))
|
||||
#define MAP_MAUVILLE_CITY_MART (7 | (10 << 8))
|
||||
|
||||
// gMapGroup_IndoorRustboro
|
||||
#define MAP_RUSTBORO_CITY_DEVON_CORP_1F (0 | (11 << 8))
|
||||
#define MAP_RUSTBORO_CITY_DEVON_CORP_2F (1 | (11 << 8))
|
||||
#define MAP_RUSTBORO_CITY_DEVON_CORP_3F (2 | (11 << 8))
|
||||
#define MAP_RUSTBORO_CITY_GYM (3 | (11 << 8))
|
||||
#define MAP_RUSTBORO_CITY_POKEMON_SCHOOL (4 | (11 << 8))
|
||||
#define MAP_RUSTBORO_CITY_POKEMON_CENTER_1F (5 | (11 << 8))
|
||||
#define MAP_RUSTBORO_CITY_POKEMON_CENTER_2F (6 | (11 << 8))
|
||||
#define MAP_RUSTBORO_CITY_MART (7 | (11 << 8))
|
||||
#define MAP_RUSTBORO_CITY_FLAT1_1F (8 | (11 << 8))
|
||||
#define MAP_RUSTBORO_CITY_FLAT1_2F (9 | (11 << 8))
|
||||
#define MAP_RUSTBORO_CITY_HOUSE1 (10 | (11 << 8))
|
||||
#define MAP_RUSTBORO_CITY_CUTTERS_HOUSE (11 | (11 << 8))
|
||||
#define MAP_RUSTBORO_CITY_HOUSE2 (12 | (11 << 8))
|
||||
#define MAP_RUSTBORO_CITY_FLAT2_1F (13 | (11 << 8))
|
||||
#define MAP_RUSTBORO_CITY_FLAT2_2F (14 | (11 << 8))
|
||||
#define MAP_RUSTBORO_CITY_FLAT2_3F (15 | (11 << 8))
|
||||
#define MAP_RUSTBORO_CITY_HOUSE3 (16 | (11 << 8))
|
||||
|
||||
// gMapGroup_IndoorFortree
|
||||
#define MAP_FORTREE_CITY_HOUSE1 (0 | (12 << 8))
|
||||
#define MAP_FORTREE_CITY_GYM (1 | (12 << 8))
|
||||
#define MAP_FORTREE_CITY_POKEMON_CENTER_1F (2 | (12 << 8))
|
||||
#define MAP_FORTREE_CITY_POKEMON_CENTER_2F (3 | (12 << 8))
|
||||
#define MAP_FORTREE_CITY_MART (4 | (12 << 8))
|
||||
#define MAP_FORTREE_CITY_HOUSE2 (5 | (12 << 8))
|
||||
#define MAP_FORTREE_CITY_HOUSE3 (6 | (12 << 8))
|
||||
#define MAP_FORTREE_CITY_HOUSE4 (7 | (12 << 8))
|
||||
#define MAP_FORTREE_CITY_HOUSE5 (8 | (12 << 8))
|
||||
#define MAP_FORTREE_CITY_DECORATION_SHOP (9 | (12 << 8))
|
||||
|
||||
// gMapGroup_IndoorLilycove
|
||||
#define MAP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F (0 | (13 << 8))
|
||||
#define MAP_LILYCOVE_CITY_COVE_LILY_MOTEL_2F (1 | (13 << 8))
|
||||
#define MAP_LILYCOVE_CITY_LILYCOVE_MUSEUM_1F (2 | (13 << 8))
|
||||
#define MAP_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F (3 | (13 << 8))
|
||||
#define MAP_LILYCOVE_CITY_CONTEST_LOBBY (4 | (13 << 8))
|
||||
#define MAP_LILYCOVE_CITY_CONTEST_HALL (5 | (13 << 8))
|
||||
#define MAP_LILYCOVE_CITY_POKEMON_CENTER_1F (6 | (13 << 8))
|
||||
#define MAP_LILYCOVE_CITY_POKEMON_CENTER_2F (7 | (13 << 8))
|
||||
#define MAP_LILYCOVE_CITY_UNUSED_MART (8 | (13 << 8))
|
||||
#define MAP_LILYCOVE_CITY_POKEMON_TRAINER_FAN_CLUB (9 | (13 << 8))
|
||||
#define MAP_LILYCOVE_CITY_HARBOR (10 | (13 << 8))
|
||||
#define MAP_LILYCOVE_CITY_MOVE_DELETERS_HOUSE (11 | (13 << 8))
|
||||
#define MAP_LILYCOVE_CITY_HOUSE1 (12 | (13 << 8))
|
||||
#define MAP_LILYCOVE_CITY_HOUSE2 (13 | (13 << 8))
|
||||
#define MAP_LILYCOVE_CITY_HOUSE3 (14 | (13 << 8))
|
||||
#define MAP_LILYCOVE_CITY_HOUSE4 (15 | (13 << 8))
|
||||
#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_1F (16 | (13 << 8))
|
||||
#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_2F (17 | (13 << 8))
|
||||
#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_3F (18 | (13 << 8))
|
||||
#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_4F (19 | (13 << 8))
|
||||
#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_5F (20 | (13 << 8))
|
||||
#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP (21 | (13 << 8))
|
||||
#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR (22 | (13 << 8))
|
||||
|
||||
// gMapGroup_IndoorMossdeep
|
||||
#define MAP_MOSSDEEP_CITY_GYM (0 | (14 << 8))
|
||||
#define MAP_MOSSDEEP_CITY_HOUSE1 (1 | (14 << 8))
|
||||
#define MAP_MOSSDEEP_CITY_HOUSE2 (2 | (14 << 8))
|
||||
#define MAP_MOSSDEEP_CITY_POKEMON_CENTER_1F (3 | (14 << 8))
|
||||
#define MAP_MOSSDEEP_CITY_POKEMON_CENTER_2F (4 | (14 << 8))
|
||||
#define MAP_MOSSDEEP_CITY_MART (5 | (14 << 8))
|
||||
#define MAP_MOSSDEEP_CITY_HOUSE3 (6 | (14 << 8))
|
||||
#define MAP_MOSSDEEP_CITY_STEVENS_HOUSE (7 | (14 << 8))
|
||||
#define MAP_MOSSDEEP_CITY_HOUSE4 (8 | (14 << 8))
|
||||
#define MAP_MOSSDEEP_CITY_SPACE_CENTER_1F (9 | (14 << 8))
|
||||
#define MAP_MOSSDEEP_CITY_SPACE_CENTER_2F (10 | (14 << 8))
|
||||
#define MAP_MOSSDEEP_CITY_GAME_CORNER_1F (11 | (14 << 8))
|
||||
#define MAP_MOSSDEEP_CITY_GAME_CORNER_B1F (12 | (14 << 8))
|
||||
|
||||
// gMapGroup_IndoorSootopolis
|
||||
#define MAP_SOOTOPOLIS_CITY_GYM_1F (0 | (15 << 8))
|
||||
#define MAP_SOOTOPOLIS_CITY_GYM_B1F (1 | (15 << 8))
|
||||
#define MAP_SOOTOPOLIS_CITY_POKEMON_CENTER_1F (2 | (15 << 8))
|
||||
#define MAP_SOOTOPOLIS_CITY_POKEMON_CENTER_2F (3 | (15 << 8))
|
||||
#define MAP_SOOTOPOLIS_CITY_MART (4 | (15 << 8))
|
||||
#define MAP_SOOTOPOLIS_CITY_HOUSE1 (5 | (15 << 8))
|
||||
#define MAP_SOOTOPOLIS_CITY_HOUSE2 (6 | (15 << 8))
|
||||
#define MAP_SOOTOPOLIS_CITY_HOUSE3 (7 | (15 << 8))
|
||||
#define MAP_SOOTOPOLIS_CITY_HOUSE4 (8 | (15 << 8))
|
||||
#define MAP_SOOTOPOLIS_CITY_HOUSE5 (9 | (15 << 8))
|
||||
#define MAP_SOOTOPOLIS_CITY_HOUSE6 (10 | (15 << 8))
|
||||
#define MAP_SOOTOPOLIS_CITY_HOUSE7 (11 | (15 << 8))
|
||||
#define MAP_SOOTOPOLIS_CITY_LOTAD_AND_SEEDOT_HOUSE (12 | (15 << 8))
|
||||
#define MAP_SOOTOPOLIS_CITY_MYSTERY_EVENTS_HOUSE_1F (13 | (15 << 8))
|
||||
#define MAP_SOOTOPOLIS_CITY_MYSTERY_EVENTS_HOUSE_B1F (14 | (15 << 8))
|
||||
|
||||
// gMapGroup_IndoorEverGrande
|
||||
#define MAP_EVER_GRANDE_CITY_SIDNEYS_ROOM (0 | (16 << 8))
|
||||
#define MAP_EVER_GRANDE_CITY_PHOEBES_ROOM (1 | (16 << 8))
|
||||
#define MAP_EVER_GRANDE_CITY_GLACIAS_ROOM (2 | (16 << 8))
|
||||
#define MAP_EVER_GRANDE_CITY_DRAKES_ROOM (3 | (16 << 8))
|
||||
#define MAP_EVER_GRANDE_CITY_CHAMPIONS_ROOM (4 | (16 << 8))
|
||||
#define MAP_EVER_GRANDE_CITY_HALL1 (5 | (16 << 8))
|
||||
#define MAP_EVER_GRANDE_CITY_HALL2 (6 | (16 << 8))
|
||||
#define MAP_EVER_GRANDE_CITY_HALL3 (7 | (16 << 8))
|
||||
#define MAP_EVER_GRANDE_CITY_HALL4 (8 | (16 << 8))
|
||||
#define MAP_EVER_GRANDE_CITY_HALL5 (9 | (16 << 8))
|
||||
#define MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F (10 | (16 << 8))
|
||||
#define MAP_EVER_GRANDE_CITY_HALL_OF_FAME (11 | (16 << 8))
|
||||
#define MAP_EVER_GRANDE_CITY_POKEMON_CENTER_1F (12 | (16 << 8))
|
||||
#define MAP_EVER_GRANDE_CITY_POKEMON_CENTER_2F (13 | (16 << 8))
|
||||
#define MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_2F (14 | (16 << 8))
|
||||
|
||||
// gMapGroup_IndoorRoute104
|
||||
#define MAP_ROUTE104_MR_BRINEYS_HOUSE (0 | (17 << 8))
|
||||
#define MAP_ROUTE104_PRETTY_PETAL_FLOWER_SHOP (1 | (17 << 8))
|
||||
|
||||
// gMapGroup_IndoorRoute111
|
||||
#define MAP_ROUTE111_WINSTRATE_FAMILYS_HOUSE (0 | (18 << 8))
|
||||
#define MAP_ROUTE111_OLD_LADYS_REST_STOP (1 | (18 << 8))
|
||||
|
||||
// gMapGroup_IndoorRoute112
|
||||
#define MAP_ROUTE112_CABLE_CAR_STATION (0 | (19 << 8))
|
||||
#define MAP_MT_CHIMNEY_CABLE_CAR_STATION (1 | (19 << 8))
|
||||
|
||||
// gMapGroup_IndoorRoute114
|
||||
#define MAP_ROUTE114_FOSSIL_MANIACS_HOUSE (0 | (20 << 8))
|
||||
#define MAP_ROUTE114_FOSSIL_MANIACS_TUNNEL (1 | (20 << 8))
|
||||
#define MAP_ROUTE114_LANETTES_HOUSE (2 | (20 << 8))
|
||||
|
||||
// gMapGroup_IndoorRoute116
|
||||
#define MAP_ROUTE116_TUNNELERS_REST_HOUSE (0 | (21 << 8))
|
||||
|
||||
// gMapGroup_IndoorRoute117
|
||||
#define MAP_ROUTE117_POKEMON_DAY_CARE (0 | (22 << 8))
|
||||
|
||||
// gMapGroup_IndoorRoute121
|
||||
#define MAP_ROUTE121_SAFARI_ZONE_ENTRANCE (0 | (23 << 8))
|
||||
|
||||
// gMapGroup_Dungeons
|
||||
#define MAP_METEOR_FALLS_1F_1R (0 | (24 << 8))
|
||||
#define MAP_METEOR_FALLS_1F_2R (1 | (24 << 8))
|
||||
#define MAP_METEOR_FALLS_B1F_1R (2 | (24 << 8))
|
||||
#define MAP_METEOR_FALLS_B1F_2R (3 | (24 << 8))
|
||||
#define MAP_RUSTURF_TUNNEL (4 | (24 << 8))
|
||||
#define MAP_UNDERWATER_SOOTOPOLIS_CITY (5 | (24 << 8))
|
||||
#define MAP_DESERT_RUINS (6 | (24 << 8))
|
||||
#define MAP_GRANITE_CAVE_1F (7 | (24 << 8))
|
||||
#define MAP_GRANITE_CAVE_B1F (8 | (24 << 8))
|
||||
#define MAP_GRANITE_CAVE_B2F (9 | (24 << 8))
|
||||
#define MAP_GRANITE_CAVE_STEVENS_ROOM (10 | (24 << 8))
|
||||
#define MAP_PETALBURG_WOODS (11 | (24 << 8))
|
||||
#define MAP_MT_CHIMNEY (12 | (24 << 8))
|
||||
#define MAP_JAGGED_PASS (13 | (24 << 8))
|
||||
#define MAP_FIERY_PATH (14 | (24 << 8))
|
||||
#define MAP_MT_PYRE_1F (15 | (24 << 8))
|
||||
#define MAP_MT_PYRE_2F (16 | (24 << 8))
|
||||
#define MAP_MT_PYRE_3F (17 | (24 << 8))
|
||||
#define MAP_MT_PYRE_4F (18 | (24 << 8))
|
||||
#define MAP_MT_PYRE_5F (19 | (24 << 8))
|
||||
#define MAP_MT_PYRE_6F (20 | (24 << 8))
|
||||
#define MAP_MT_PYRE_EXTERIOR (21 | (24 << 8))
|
||||
#define MAP_MT_PYRE_SUMMIT (22 | (24 << 8))
|
||||
#define MAP_AQUA_HIDEOUT_1F (23 | (24 << 8))
|
||||
#define MAP_AQUA_HIDEOUT_B1F (24 | (24 << 8))
|
||||
#define MAP_AQUA_HIDEOUT_B2F (25 | (24 << 8))
|
||||
#define MAP_UNDERWATER_SEAFLOOR_CAVERN (26 | (24 << 8))
|
||||
#define MAP_SEAFLOOR_CAVERN_ENTRANCE (27 | (24 << 8))
|
||||
#define MAP_SEAFLOOR_CAVERN_ROOM1 (28 | (24 << 8))
|
||||
#define MAP_SEAFLOOR_CAVERN_ROOM2 (29 | (24 << 8))
|
||||
#define MAP_SEAFLOOR_CAVERN_ROOM3 (30 | (24 << 8))
|
||||
#define MAP_SEAFLOOR_CAVERN_ROOM4 (31 | (24 << 8))
|
||||
#define MAP_SEAFLOOR_CAVERN_ROOM5 (32 | (24 << 8))
|
||||
#define MAP_SEAFLOOR_CAVERN_ROOM6 (33 | (24 << 8))
|
||||
#define MAP_SEAFLOOR_CAVERN_ROOM7 (34 | (24 << 8))
|
||||
#define MAP_SEAFLOOR_CAVERN_ROOM8 (35 | (24 << 8))
|
||||
#define MAP_SEAFLOOR_CAVERN_ROOM9 (36 | (24 << 8))
|
||||
#define MAP_CAVE_OF_ORIGIN_ENTRANCE (37 | (24 << 8))
|
||||
#define MAP_CAVE_OF_ORIGIN_1F (38 | (24 << 8))
|
||||
#define MAP_CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP1 (39 | (24 << 8))
|
||||
#define MAP_CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP2 (40 | (24 << 8))
|
||||
#define MAP_CAVE_OF_ORIGIN_UNUSED_RUBY_SAPPHIRE_MAP3 (41 | (24 << 8))
|
||||
#define MAP_CAVE_OF_ORIGIN_B1F (42 | (24 << 8))
|
||||
#define MAP_VICTORY_ROAD_1F (43 | (24 << 8))
|
||||
#define MAP_VICTORY_ROAD_B1F (44 | (24 << 8))
|
||||
#define MAP_VICTORY_ROAD_B2F (45 | (24 << 8))
|
||||
#define MAP_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM (46 | (24 << 8))
|
||||
#define MAP_SHOAL_CAVE_LOW_TIDE_INNER_ROOM (47 | (24 << 8))
|
||||
#define MAP_SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM (48 | (24 << 8))
|
||||
#define MAP_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM (49 | (24 << 8))
|
||||
#define MAP_SHOAL_CAVE_HIGH_TIDE_ENTRANCE_ROOM (50 | (24 << 8))
|
||||
#define MAP_SHOAL_CAVE_HIGH_TIDE_INNER_ROOM (51 | (24 << 8))
|
||||
#define MAP_NEW_MAUVILLE_ENTRANCE (52 | (24 << 8))
|
||||
#define MAP_NEW_MAUVILLE_INSIDE (53 | (24 << 8))
|
||||
#define MAP_ABANDONED_SHIP_DECK (54 | (24 << 8))
|
||||
#define MAP_ABANDONED_SHIP_CORRIDORS_1F (55 | (24 << 8))
|
||||
#define MAP_ABANDONED_SHIP_ROOMS_1F (56 | (24 << 8))
|
||||
#define MAP_ABANDONED_SHIP_CORRIDORS_B1F (57 | (24 << 8))
|
||||
#define MAP_ABANDONED_SHIP_ROOMS_B1F (58 | (24 << 8))
|
||||
#define MAP_ABANDONED_SHIP_ROOMS2_B1F (59 | (24 << 8))
|
||||
#define MAP_ABANDONED_SHIP_UNDERWATER1 (60 | (24 << 8))
|
||||
#define MAP_ABANDONED_SHIP_ROOM_B1F (61 | (24 << 8))
|
||||
#define MAP_ABANDONED_SHIP_ROOMS2_1F (62 | (24 << 8))
|
||||
#define MAP_ABANDONED_SHIP_CAPTAINS_OFFICE (63 | (24 << 8))
|
||||
#define MAP_ABANDONED_SHIP_UNDERWATER2 (64 | (24 << 8))
|
||||
#define MAP_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS (65 | (24 << 8))
|
||||
#define MAP_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS (66 | (24 << 8))
|
||||
#define MAP_ISLAND_CAVE (67 | (24 << 8))
|
||||
#define MAP_ANCIENT_TOMB (68 | (24 << 8))
|
||||
#define MAP_UNDERWATER_ROUTE134 (69 | (24 << 8))
|
||||
#define MAP_UNDERWATER_SEALED_CHAMBER (70 | (24 << 8))
|
||||
#define MAP_SEALED_CHAMBER_OUTER_ROOM (71 | (24 << 8))
|
||||
#define MAP_SEALED_CHAMBER_INNER_ROOM (72 | (24 << 8))
|
||||
#define MAP_SCORCHED_SLAB (73 | (24 << 8))
|
||||
#define MAP_AQUA_HIDEOUT_UNUSED_RUBY_MAP1 (74 | (24 << 8))
|
||||
#define MAP_AQUA_HIDEOUT_UNUSED_RUBY_MAP2 (75 | (24 << 8))
|
||||
#define MAP_AQUA_HIDEOUT_UNUSED_RUBY_MAP3 (76 | (24 << 8))
|
||||
#define MAP_SKY_PILLAR_ENTRANCE (77 | (24 << 8))
|
||||
#define MAP_SKY_PILLAR_OUTSIDE (78 | (24 << 8))
|
||||
#define MAP_SKY_PILLAR_1F (79 | (24 << 8))
|
||||
#define MAP_SKY_PILLAR_2F (80 | (24 << 8))
|
||||
#define MAP_SKY_PILLAR_3F (81 | (24 << 8))
|
||||
#define MAP_SKY_PILLAR_4F (82 | (24 << 8))
|
||||
#define MAP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM (83 | (24 << 8))
|
||||
#define MAP_SKY_PILLAR_5F (84 | (24 << 8))
|
||||
#define MAP_SKY_PILLAR_TOP (85 | (24 << 8))
|
||||
#define MAP_MAGMA_HIDEOUT_1F (86 | (24 << 8))
|
||||
#define MAP_MAGMA_HIDEOUT_2F_1R (87 | (24 << 8))
|
||||
#define MAP_MAGMA_HIDEOUT_2F_2R (88 | (24 << 8))
|
||||
#define MAP_MAGMA_HIDEOUT_3F_1R (89 | (24 << 8))
|
||||
#define MAP_MAGMA_HIDEOUT_3F_2R (90 | (24 << 8))
|
||||
#define MAP_MAGMA_HIDEOUT_4F (91 | (24 << 8))
|
||||
#define MAP_MAGMA_HIDEOUT_3F_3R (92 | (24 << 8))
|
||||
#define MAP_MAGMA_HIDEOUT_2F_3R (93 | (24 << 8))
|
||||
#define MAP_MIRAGE_TOWER_1F (94 | (24 << 8))
|
||||
#define MAP_MIRAGE_TOWER_2F (95 | (24 << 8))
|
||||
#define MAP_MIRAGE_TOWER_3F (96 | (24 << 8))
|
||||
#define MAP_MIRAGE_TOWER_4F (97 | (24 << 8))
|
||||
#define MAP_DESERT_UNDERPASS (98 | (24 << 8))
|
||||
#define MAP_ARTISAN_CAVE_B1F (99 | (24 << 8))
|
||||
#define MAP_ARTISAN_CAVE_1F (100 | (24 << 8))
|
||||
#define MAP_UNDERWATER_MARINE_CAVE (101 | (24 << 8))
|
||||
#define MAP_MARINE_CAVE_ENTRANCE (102 | (24 << 8))
|
||||
#define MAP_MARINE_CAVE_END (103 | (24 << 8))
|
||||
#define MAP_TERRA_CAVE_ENTRANCE (104 | (24 << 8))
|
||||
#define MAP_TERRA_CAVE_END (105 | (24 << 8))
|
||||
#define MAP_ALTERING_CAVE (106 | (24 << 8))
|
||||
#define MAP_METEOR_FALLS_STEVENS_CAVE (107 | (24 << 8))
|
||||
|
||||
// gMapGroup_IndoorDynamic
|
||||
#define MAP_SECRET_BASE_RED_CAVE1 (0 | (25 << 8))
|
||||
#define MAP_SECRET_BASE_BROWN_CAVE1 (1 | (25 << 8))
|
||||
#define MAP_SECRET_BASE_BLUE_CAVE1 (2 | (25 << 8))
|
||||
#define MAP_SECRET_BASE_YELLOW_CAVE1 (3 | (25 << 8))
|
||||
#define MAP_SECRET_BASE_TREE1 (4 | (25 << 8))
|
||||
#define MAP_SECRET_BASE_SHRUB1 (5 | (25 << 8))
|
||||
#define MAP_SECRET_BASE_RED_CAVE2 (6 | (25 << 8))
|
||||
#define MAP_SECRET_BASE_BROWN_CAVE2 (7 | (25 << 8))
|
||||
#define MAP_SECRET_BASE_BLUE_CAVE2 (8 | (25 << 8))
|
||||
#define MAP_SECRET_BASE_YELLOW_CAVE2 (9 | (25 << 8))
|
||||
#define MAP_SECRET_BASE_TREE2 (10 | (25 << 8))
|
||||
#define MAP_SECRET_BASE_SHRUB2 (11 | (25 << 8))
|
||||
#define MAP_SECRET_BASE_RED_CAVE3 (12 | (25 << 8))
|
||||
#define MAP_SECRET_BASE_BROWN_CAVE3 (13 | (25 << 8))
|
||||
#define MAP_SECRET_BASE_BLUE_CAVE3 (14 | (25 << 8))
|
||||
#define MAP_SECRET_BASE_YELLOW_CAVE3 (15 | (25 << 8))
|
||||
#define MAP_SECRET_BASE_TREE3 (16 | (25 << 8))
|
||||
#define MAP_SECRET_BASE_SHRUB3 (17 | (25 << 8))
|
||||
#define MAP_SECRET_BASE_RED_CAVE4 (18 | (25 << 8))
|
||||
#define MAP_SECRET_BASE_BROWN_CAVE4 (19 | (25 << 8))
|
||||
#define MAP_SECRET_BASE_BLUE_CAVE4 (20 | (25 << 8))
|
||||
#define MAP_SECRET_BASE_YELLOW_CAVE4 (21 | (25 << 8))
|
||||
#define MAP_SECRET_BASE_TREE4 (22 | (25 << 8))
|
||||
#define MAP_SECRET_BASE_SHRUB4 (23 | (25 << 8))
|
||||
#define MAP_BATTLE_COLOSSEUM_2P (24 | (25 << 8))
|
||||
#define MAP_TRADE_CENTER (25 | (25 << 8))
|
||||
#define MAP_RECORD_CORNER (26 | (25 << 8))
|
||||
#define MAP_BATTLE_COLOSSEUM_4P (27 | (25 << 8))
|
||||
#define MAP_CONTEST_HALL (28 | (25 << 8))
|
||||
#define MAP_UNUSED_CONTEST_HALL1 (29 | (25 << 8))
|
||||
#define MAP_UNUSED_CONTEST_HALL2 (30 | (25 << 8))
|
||||
#define MAP_UNUSED_CONTEST_HALL3 (31 | (25 << 8))
|
||||
#define MAP_UNUSED_CONTEST_HALL4 (32 | (25 << 8))
|
||||
#define MAP_UNUSED_CONTEST_HALL5 (33 | (25 << 8))
|
||||
#define MAP_UNUSED_CONTEST_HALL6 (34 | (25 << 8))
|
||||
#define MAP_CONTEST_HALL_BEAUTY (35 | (25 << 8))
|
||||
#define MAP_CONTEST_HALL_TOUGH (36 | (25 << 8))
|
||||
#define MAP_CONTEST_HALL_COOL (37 | (25 << 8))
|
||||
#define MAP_CONTEST_HALL_SMART (38 | (25 << 8))
|
||||
#define MAP_CONTEST_HALL_CUTE (39 | (25 << 8))
|
||||
#define MAP_INSIDE_OF_TRUCK (40 | (25 << 8))
|
||||
#define MAP_SS_TIDAL_CORRIDOR (41 | (25 << 8))
|
||||
#define MAP_SS_TIDAL_LOWER_DECK (42 | (25 << 8))
|
||||
#define MAP_SS_TIDAL_ROOMS (43 | (25 << 8))
|
||||
#define MAP_BATTLE_PYRAMID_SQUARE01 (44 | (25 << 8))
|
||||
#define MAP_BATTLE_PYRAMID_SQUARE02 (45 | (25 << 8))
|
||||
#define MAP_BATTLE_PYRAMID_SQUARE03 (46 | (25 << 8))
|
||||
#define MAP_BATTLE_PYRAMID_SQUARE04 (47 | (25 << 8))
|
||||
#define MAP_BATTLE_PYRAMID_SQUARE05 (48 | (25 << 8))
|
||||
#define MAP_BATTLE_PYRAMID_SQUARE06 (49 | (25 << 8))
|
||||
#define MAP_BATTLE_PYRAMID_SQUARE07 (50 | (25 << 8))
|
||||
#define MAP_BATTLE_PYRAMID_SQUARE08 (51 | (25 << 8))
|
||||
#define MAP_BATTLE_PYRAMID_SQUARE09 (52 | (25 << 8))
|
||||
#define MAP_BATTLE_PYRAMID_SQUARE10 (53 | (25 << 8))
|
||||
#define MAP_BATTLE_PYRAMID_SQUARE11 (54 | (25 << 8))
|
||||
#define MAP_BATTLE_PYRAMID_SQUARE12 (55 | (25 << 8))
|
||||
#define MAP_BATTLE_PYRAMID_SQUARE13 (56 | (25 << 8))
|
||||
#define MAP_BATTLE_PYRAMID_SQUARE14 (57 | (25 << 8))
|
||||
#define MAP_BATTLE_PYRAMID_SQUARE15 (58 | (25 << 8))
|
||||
#define MAP_BATTLE_PYRAMID_SQUARE16 (59 | (25 << 8))
|
||||
#define MAP_UNION_ROOM (60 | (25 << 8))
|
||||
|
||||
// gMapGroup_SpecialArea
|
||||
#define MAP_SAFARI_ZONE_NORTHWEST (0 | (26 << 8))
|
||||
#define MAP_SAFARI_ZONE_NORTH (1 | (26 << 8))
|
||||
#define MAP_SAFARI_ZONE_SOUTHWEST (2 | (26 << 8))
|
||||
#define MAP_SAFARI_ZONE_SOUTH (3 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_OUTSIDE_WEST (4 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_LOBBY (5 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_ELEVATOR (6 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR (7 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM (8 | (26 << 8))
|
||||
#define MAP_SOUTHERN_ISLAND_EXTERIOR (9 | (26 << 8))
|
||||
#define MAP_SOUTHERN_ISLAND_INTERIOR (10 | (26 << 8))
|
||||
#define MAP_SAFARI_ZONE_REST_HOUSE (11 | (26 << 8))
|
||||
#define MAP_SAFARI_ZONE_NORTHEAST (12 | (26 << 8))
|
||||
#define MAP_SAFARI_ZONE_SOUTHEAST (13 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_OUTSIDE_EAST (14 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_PARTNER_ROOM (15 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_CORRIDOR (16 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM (17 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_BATTLE_DOME_LOBBY (18 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_BATTLE_DOME_CORRIDOR (19 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_BATTLE_DOME_PRE_BATTLE_ROOM (20 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_BATTLE_DOME_BATTLE_ROOM (21 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_LOBBY (22 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_CORRIDOR (23 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_BATTLE_ROOM (24 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY (25 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_FLOOR (26 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_TOP (27 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_LOBBY (28 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_CORRIDOR (29 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_BATTLE_ROOM (30 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_LOBBY (31 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_PRE_BATTLE_ROOM (32 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_BATTLE_ROOM (33 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_LOBBY (34 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_CORRIDOR (35 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_THREE_PATH_ROOM (36 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_NORMAL (37 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_FINAL (38 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_ROOM_WILD_MONS (39 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_RANKING_HALL (40 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_LOUNGE1 (41 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_EXCHANGE_SERVICE_CORNER (42 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_LOUNGE2 (43 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_LOUNGE3 (44 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_LOUNGE4 (45 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_SCOTTS_HOUSE (46 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_LOUNGE5 (47 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_LOUNGE6 (48 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_LOUNGE7 (49 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_RECEPTION_GATE (50 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_LOUNGE8 (51 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_LOUNGE9 (52 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_POKEMON_CENTER_1F (53 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_POKEMON_CENTER_2F (54 | (26 << 8))
|
||||
#define MAP_BATTLE_FRONTIER_MART (55 | (26 << 8))
|
||||
#define MAP_FARAWAY_ISLAND_ENTRANCE (56 | (26 << 8))
|
||||
#define MAP_FARAWAY_ISLAND_INTERIOR (57 | (26 << 8))
|
||||
#define MAP_BIRTH_ISLAND_EXTERIOR (58 | (26 << 8))
|
||||
#define MAP_BIRTH_ISLAND_HARBOR (59 | (26 << 8))
|
||||
#define MAP_TRAINER_HILL_ENTRANCE (60 | (26 << 8))
|
||||
#define MAP_TRAINER_HILL_1F (61 | (26 << 8))
|
||||
#define MAP_TRAINER_HILL_2F (62 | (26 << 8))
|
||||
#define MAP_TRAINER_HILL_3F (63 | (26 << 8))
|
||||
#define MAP_TRAINER_HILL_4F (64 | (26 << 8))
|
||||
#define MAP_TRAINER_HILL_ROOF (65 | (26 << 8))
|
||||
#define MAP_NAVEL_ROCK_EXTERIOR (66 | (26 << 8))
|
||||
#define MAP_NAVEL_ROCK_HARBOR (67 | (26 << 8))
|
||||
#define MAP_NAVEL_ROCK_ENTRANCE (68 | (26 << 8))
|
||||
#define MAP_NAVEL_ROCK_B1F (69 | (26 << 8))
|
||||
#define MAP_NAVEL_ROCK_FORK (70 | (26 << 8))
|
||||
#define MAP_NAVEL_ROCK_UP1 (71 | (26 << 8))
|
||||
#define MAP_NAVEL_ROCK_UP2 (72 | (26 << 8))
|
||||
#define MAP_NAVEL_ROCK_UP3 (73 | (26 << 8))
|
||||
#define MAP_NAVEL_ROCK_UP4 (74 | (26 << 8))
|
||||
#define MAP_NAVEL_ROCK_TOP (75 | (26 << 8))
|
||||
#define MAP_NAVEL_ROCK_DOWN01 (76 | (26 << 8))
|
||||
#define MAP_NAVEL_ROCK_DOWN02 (77 | (26 << 8))
|
||||
#define MAP_NAVEL_ROCK_DOWN03 (78 | (26 << 8))
|
||||
#define MAP_NAVEL_ROCK_DOWN04 (79 | (26 << 8))
|
||||
#define MAP_NAVEL_ROCK_DOWN05 (80 | (26 << 8))
|
||||
#define MAP_NAVEL_ROCK_DOWN06 (81 | (26 << 8))
|
||||
#define MAP_NAVEL_ROCK_DOWN07 (82 | (26 << 8))
|
||||
#define MAP_NAVEL_ROCK_DOWN08 (83 | (26 << 8))
|
||||
#define MAP_NAVEL_ROCK_DOWN09 (84 | (26 << 8))
|
||||
#define MAP_NAVEL_ROCK_DOWN10 (85 | (26 << 8))
|
||||
#define MAP_NAVEL_ROCK_DOWN11 (86 | (26 << 8))
|
||||
#define MAP_NAVEL_ROCK_BOTTOM (87 | (26 << 8))
|
||||
#define MAP_TRAINER_HILL_ELEVATOR (88 | (26 << 8))
|
||||
|
||||
// gMapGroup_IndoorRoute104Prototype
|
||||
#define MAP_ROUTE104_PROTOTYPE (0 | (27 << 8))
|
||||
#define MAP_ROUTE104_PROTOTYPE_PRETTY_PETAL_FLOWER_SHOP (1 | (27 << 8))
|
||||
|
||||
// gMapGroup_IndoorRoute109
|
||||
#define MAP_ROUTE109_SEASHORE_HOUSE (0 | (28 << 8))
|
||||
|
||||
// gMapGroup_IndoorRoute110
|
||||
#define MAP_ROUTE110_TRICK_HOUSE_ENTRANCE (0 | (29 << 8))
|
||||
#define MAP_ROUTE110_TRICK_HOUSE_END (1 | (29 << 8))
|
||||
#define MAP_ROUTE110_TRICK_HOUSE_CORRIDOR (2 | (29 << 8))
|
||||
#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE1 (3 | (29 << 8))
|
||||
#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE2 (4 | (29 << 8))
|
||||
#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE3 (5 | (29 << 8))
|
||||
#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE4 (6 | (29 << 8))
|
||||
#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE5 (7 | (29 << 8))
|
||||
#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE6 (8 | (29 << 8))
|
||||
#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE7 (9 | (29 << 8))
|
||||
#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE8 (10 | (29 << 8))
|
||||
#define MAP_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE (11 | (29 << 8))
|
||||
#define MAP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE (12 | (29 << 8))
|
||||
|
||||
// gMapGroup_IndoorRoute113
|
||||
#define MAP_ROUTE113_GLASS_WORKSHOP (0 | (30 << 8))
|
||||
|
||||
// gMapGroup_IndoorRoute123
|
||||
#define MAP_ROUTE123_BERRY_MASTERS_HOUSE (0 | (31 << 8))
|
||||
|
||||
// gMapGroup_IndoorRoute119
|
||||
#define MAP_ROUTE119_WEATHER_INSTITUTE_1F (0 | (32 << 8))
|
||||
#define MAP_ROUTE119_WEATHER_INSTITUTE_2F (1 | (32 << 8))
|
||||
#define MAP_ROUTE119_HOUSE (2 | (32 << 8))
|
||||
|
||||
// gMapGroup_IndoorRoute124
|
||||
#define MAP_ROUTE124_DIVING_TREASURE_HUNTERS_HOUSE (0 | (33 << 8))
|
||||
|
||||
#define MAP_GROUPS_COUNT 34
|
||||
|
||||
#endif // GUARD_CONSTANTS_MAP_GROUPS_H
|
||||
@ -9,18 +9,6 @@
|
||||
#define METATILE_BattleDome_Door_Lobby 0x209
|
||||
#define METATILE_BattleDome_Door_PreBattleRoom 0x20A
|
||||
|
||||
// gTileset_BattleFrontierOutsideEast
|
||||
#define METATILE_BattleFrontierOutsideEast_Door 0x3FC
|
||||
#define METATILE_BattleFrontierOutsideEast_Door_BattleArena 0x291
|
||||
#define METATILE_BattleFrontierOutsideEast_Door_BattleTower 0x329
|
||||
#define METATILE_BattleFrontierOutsideEast_Door_Sliding 0x396
|
||||
|
||||
// gTileset_BattleFrontierOutsideWest
|
||||
#define METATILE_BattleFrontierOutsideWest_Door 0x3FC
|
||||
#define METATILE_BattleFrontierOutsideWest_Door_BattleDome 0x28A
|
||||
#define METATILE_BattleFrontierOutsideWest_Door_BattleFactory 0x263
|
||||
#define METATILE_BattleFrontierOutsideWest_Door_Sliding 0x396
|
||||
|
||||
// gTileset_BattleFrontier
|
||||
#define METATILE_BattleFrontier_CorridorOpenDoor_Bottom 0x20F
|
||||
#define METATILE_BattleFrontier_CorridorOpenDoor_Top 0x207
|
||||
@ -36,6 +24,18 @@
|
||||
#define METATILE_BattleFrontier_Elevator_Top1 0x32A
|
||||
#define METATILE_BattleFrontier_Elevator_Top2 0x32B
|
||||
|
||||
// gTileset_BattleFrontierOutsideEast
|
||||
#define METATILE_BattleFrontierOutsideEast_Door 0x3FC
|
||||
#define METATILE_BattleFrontierOutsideEast_Door_BattleArena 0x291
|
||||
#define METATILE_BattleFrontierOutsideEast_Door_BattleTower 0x329
|
||||
#define METATILE_BattleFrontierOutsideEast_Door_Sliding 0x396
|
||||
|
||||
// gTileset_BattleFrontierOutsideWest
|
||||
#define METATILE_BattleFrontierOutsideWest_Door 0x3FC
|
||||
#define METATILE_BattleFrontierOutsideWest_Door_BattleDome 0x28A
|
||||
#define METATILE_BattleFrontierOutsideWest_Door_BattleFactory 0x263
|
||||
#define METATILE_BattleFrontierOutsideWest_Door_Sliding 0x396
|
||||
|
||||
// gTileset_BattlePalace
|
||||
#define METATILE_BattlePalace_Door 0x219
|
||||
|
||||
@ -272,6 +272,18 @@
|
||||
#define METATILE_Lavaridge_NormalGrass 0x206
|
||||
#define METATILE_Lavaridge_RockWall 0x274
|
||||
|
||||
// gTileset_Lilycove
|
||||
#define METATILE_Lilycove_Door 0x246
|
||||
#define METATILE_Lilycove_Door_DeptStore 0x30C
|
||||
#define METATILE_Lilycove_Door_SafariZone 0x32D
|
||||
#define METATILE_Lilycove_Door_Wooden 0x28E
|
||||
#define METATILE_Lilycove_Wailmer0 0x290
|
||||
#define METATILE_Lilycove_Wailmer0_Alt 0x298
|
||||
#define METATILE_Lilycove_Wailmer1 0x291
|
||||
#define METATILE_Lilycove_Wailmer1_Alt 0x299
|
||||
#define METATILE_Lilycove_Wailmer2 0x2A0
|
||||
#define METATILE_Lilycove_Wailmer3 0x2A1
|
||||
|
||||
// gTileset_LilycoveMuseum
|
||||
#define METATILE_LilycoveMuseum_Painting0_Left 0x25A
|
||||
#define METATILE_LilycoveMuseum_Painting0_Right 0x25B
|
||||
@ -284,17 +296,31 @@
|
||||
#define METATILE_LilycoveMuseum_Painting4_Left 0x262
|
||||
#define METATILE_LilycoveMuseum_Painting4_Right 0x263
|
||||
|
||||
// gTileset_Lilycove
|
||||
#define METATILE_Lilycove_Door 0x246
|
||||
#define METATILE_Lilycove_Door_DeptStore 0x30C
|
||||
#define METATILE_Lilycove_Door_SafariZone 0x32D
|
||||
#define METATILE_Lilycove_Door_Wooden 0x28E
|
||||
#define METATILE_Lilycove_Wailmer0 0x290
|
||||
#define METATILE_Lilycove_Wailmer0_Alt 0x298
|
||||
#define METATILE_Lilycove_Wailmer1 0x291
|
||||
#define METATILE_Lilycove_Wailmer1_Alt 0x299
|
||||
#define METATILE_Lilycove_Wailmer2 0x2A0
|
||||
#define METATILE_Lilycove_Wailmer3 0x2A1
|
||||
// gTileset_Mauville
|
||||
#define METATILE_Mauville_DeepSand_BottomMid 0x259
|
||||
#define METATILE_Mauville_DeepSand_Center 0x251
|
||||
#define METATILE_Mauville_Door 0x2AC
|
||||
#define METATILE_Mauville_Door_BattleTent 0x3D4
|
||||
#define METATILE_Mauville_Door_CyclingRoad 0x289
|
||||
#define METATILE_Mauville_Door_Verdanturf 0x3A1
|
||||
#define METATILE_Mauville_MirageTower_Tile0 0x3D8
|
||||
#define METATILE_Mauville_MirageTower_Tile1 0x3D9
|
||||
#define METATILE_Mauville_MirageTower_Tile10 0x3E4
|
||||
#define METATILE_Mauville_MirageTower_Tile11 0x3E5
|
||||
#define METATILE_Mauville_MirageTower_Tile2 0x3DA
|
||||
#define METATILE_Mauville_MirageTower_Tile3 0x3E0
|
||||
#define METATILE_Mauville_MirageTower_Tile4 0x3E1
|
||||
#define METATILE_Mauville_MirageTower_Tile5 0x3E2
|
||||
#define METATILE_Mauville_MirageTower_Tile6 0x3E8
|
||||
#define METATILE_Mauville_MirageTower_Tile7 0x3E9
|
||||
#define METATILE_Mauville_MirageTower_Tile8 0x3EA
|
||||
#define METATILE_Mauville_MirageTower_Tile9 0x3F0
|
||||
#define METATILE_Mauville_MirageTower_TileA 0x3F1
|
||||
#define METATILE_Mauville_MirageTower_TileB 0x3F2
|
||||
#define METATILE_Mauville_MirageTower_TileC 0x3DB
|
||||
#define METATILE_Mauville_MirageTower_TileD 0x3DC
|
||||
#define METATILE_Mauville_MirageTower_TileE 0x3DD
|
||||
#define METATILE_Mauville_MirageTower_TileF 0x3E3
|
||||
|
||||
// gTileset_MauvilleGym
|
||||
#define METATILE_MauvilleGym_FloorTile 0x21A
|
||||
@ -325,38 +351,16 @@
|
||||
#define METATILE_MauvilleGym_RedBeamV1_On 0x241
|
||||
#define METATILE_MauvilleGym_RedBeamV2_On 0x249
|
||||
|
||||
// gTileset_Mauville
|
||||
#define METATILE_Mauville_DeepSand_BottomMid 0x259
|
||||
#define METATILE_Mauville_DeepSand_Center 0x251
|
||||
#define METATILE_Mauville_Door 0x2AC
|
||||
#define METATILE_Mauville_Door_BattleTent 0x3D4
|
||||
#define METATILE_Mauville_Door_CyclingRoad 0x289
|
||||
#define METATILE_Mauville_Door_Verdanturf 0x3A1
|
||||
#define METATILE_Mauville_MirageTower_Tile0 0x3D8
|
||||
#define METATILE_Mauville_MirageTower_Tile1 0x3D9
|
||||
#define METATILE_Mauville_MirageTower_Tile10 0x3E4
|
||||
#define METATILE_Mauville_MirageTower_Tile11 0x3E5
|
||||
#define METATILE_Mauville_MirageTower_Tile2 0x3DA
|
||||
#define METATILE_Mauville_MirageTower_Tile3 0x3E0
|
||||
#define METATILE_Mauville_MirageTower_Tile4 0x3E1
|
||||
#define METATILE_Mauville_MirageTower_Tile5 0x3E2
|
||||
#define METATILE_Mauville_MirageTower_Tile6 0x3E8
|
||||
#define METATILE_Mauville_MirageTower_Tile7 0x3E9
|
||||
#define METATILE_Mauville_MirageTower_Tile8 0x3EA
|
||||
#define METATILE_Mauville_MirageTower_Tile9 0x3F0
|
||||
#define METATILE_Mauville_MirageTower_TileA 0x3F1
|
||||
#define METATILE_Mauville_MirageTower_TileB 0x3F2
|
||||
#define METATILE_Mauville_MirageTower_TileC 0x3DB
|
||||
#define METATILE_Mauville_MirageTower_TileD 0x3DC
|
||||
#define METATILE_Mauville_MirageTower_TileE 0x3DD
|
||||
#define METATILE_Mauville_MirageTower_TileF 0x3E3
|
||||
|
||||
// gTileset_MeteorFalls
|
||||
#define METATILE_MeteorFalls_CaveEntrance_Bottom 0x24E
|
||||
#define METATILE_MeteorFalls_CaveEntrance_Left 0x24D
|
||||
#define METATILE_MeteorFalls_CaveEntrance_Right 0x24F
|
||||
#define METATILE_MeteorFalls_CaveEntrance_Top 0x246
|
||||
|
||||
// gTileset_Mossdeep
|
||||
#define METATILE_Mossdeep_Door 0x2A1
|
||||
#define METATILE_Mossdeep_Door_SpaceCenter 0x2ED
|
||||
|
||||
// gTileset_MossdeepGameCorner
|
||||
#define METATILE_MossdeepGameCorner_CounterClosed_Bottom 0x232
|
||||
#define METATILE_MossdeepGameCorner_CounterClosed_Top 0x22A
|
||||
@ -366,10 +370,6 @@
|
||||
// gTileset_MossdeepGym
|
||||
#define METATILE_MossdeepGym_YellowArrow_Right 0x250
|
||||
|
||||
// gTileset_Mossdeep
|
||||
#define METATILE_Mossdeep_Door 0x2A1
|
||||
#define METATILE_Mossdeep_Door_SpaceCenter 0x2ED
|
||||
|
||||
// gTileset_Pacifidlog
|
||||
#define METATILE_Pacifidlog_Door 0x21A
|
||||
#define METATILE_Pacifidlog_FloatingLogs_HorizontalLeft 0x250
|
||||
@ -388,6 +388,11 @@
|
||||
#define METATILE_Pacifidlog_SubmergedLogs_VerticalBottom 0x262
|
||||
#define METATILE_Pacifidlog_SubmergedLogs_VerticalTop 0x25A
|
||||
|
||||
// gTileset_Petalburg
|
||||
#define METATILE_Petalburg_Door_BirchsLab 0x249
|
||||
#define METATILE_Petalburg_Door_Littleroot 0x248
|
||||
#define METATILE_Petalburg_Door_Oldale 0x287
|
||||
|
||||
// gTileset_PetalburgGym
|
||||
#define METATILE_PetalburgGym_Door 0x224
|
||||
#define METATILE_PetalburgGym_RoomEntrance_Left 0x210
|
||||
@ -398,11 +403,6 @@
|
||||
#define METATILE_PetalburgGym_SlidingDoor_Frame3 0x21B
|
||||
#define METATILE_PetalburgGym_SlidingDoor_Frame4 0x21C
|
||||
|
||||
// gTileset_Petalburg
|
||||
#define METATILE_Petalburg_Door_BirchsLab 0x249
|
||||
#define METATILE_Petalburg_Door_Littleroot 0x248
|
||||
#define METATILE_Petalburg_Door_Oldale 0x287
|
||||
|
||||
// gTileset_PokemonCenter
|
||||
#define METATILE_PokemonCenter_CounterBarrier 0x25D
|
||||
#define METATILE_PokemonCenter_Door_CableClub 0x264
|
||||
@ -431,14 +431,6 @@
|
||||
#define METATILE_PokemonCenter_Floor_ShadowTop 0x21E
|
||||
#define METATILE_PokemonCenter_Floor_ShadowTop_Alt 0x2DC
|
||||
|
||||
// gTileset_RSMossdeepGym
|
||||
#define METATILE_RSMossdeepGym_RedArrow_Down 0x205
|
||||
#define METATILE_RSMossdeepGym_RedArrow_Left 0x20C
|
||||
#define METATILE_RSMossdeepGym_RedArrow_Right 0x204
|
||||
#define METATILE_RSMossdeepGym_RedArrow_Up 0x20D
|
||||
#define METATILE_RSMossdeepGym_Switch_Down 0x239
|
||||
#define METATILE_RSMossdeepGym_Switch_Up 0x238
|
||||
|
||||
// gTileset_Rustboro
|
||||
#define METATILE_Rustboro_Door_Gray 0x21F
|
||||
#define METATILE_Rustboro_Door_Tan 0x22F
|
||||
@ -726,11 +718,6 @@
|
||||
#define METATILE_Slateport_Door 0x2DC
|
||||
#define METATILE_Slateport_Door_BattleTent 0x393
|
||||
|
||||
// gTileset_SootopolisGym
|
||||
#define METATILE_SootopolisGym_Ice_Broken 0x206
|
||||
#define METATILE_SootopolisGym_Ice_Cracked 0x20E
|
||||
#define METATILE_SootopolisGym_Stairs 0x207
|
||||
|
||||
// gTileset_Sootopolis
|
||||
#define METATILE_Sootopolis_Door 0x21E
|
||||
#define METATILE_Sootopolis_Door_Closed 0x248
|
||||
@ -738,6 +725,11 @@
|
||||
#define METATILE_Sootopolis_GymDoor_Closed 0x250
|
||||
#define METATILE_Sootopolis_RoughWater 0x290
|
||||
|
||||
// gTileset_SootopolisGym
|
||||
#define METATILE_SootopolisGym_Ice_Broken 0x206
|
||||
#define METATILE_SootopolisGym_Ice_Cracked 0x20E
|
||||
#define METATILE_SootopolisGym_Stairs 0x207
|
||||
|
||||
// gTileset_TrainerHill
|
||||
#define METATILE_TrainerHill_CounterDoor 0x334
|
||||
#define METATILE_TrainerHill_Door_Elevator_Lobby 0x32C
|
||||
@ -787,4 +779,12 @@
|
||||
#define METATILE_Underwater_FloorShadow 0x228
|
||||
#define METATILE_Underwater_RockWall 0x21E
|
||||
|
||||
// Other
|
||||
#define METATILE_RSMossdeepGym_RedArrow_Down 0x205
|
||||
#define METATILE_RSMossdeepGym_RedArrow_Left 0x20C
|
||||
#define METATILE_RSMossdeepGym_RedArrow_Right 0x204
|
||||
#define METATILE_RSMossdeepGym_RedArrow_Up 0x20D
|
||||
#define METATILE_RSMossdeepGym_Switch_Down 0x239
|
||||
#define METATILE_RSMossdeepGym_Switch_Up 0x238
|
||||
|
||||
#endif // GUARD_METATILE_LABELS_H
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
#ifndef GUARD_CONSTANTS_POKEDEX_H
|
||||
#define GUARD_CONSTANTS_POKEDEX_H
|
||||
|
||||
// National Pokedex order
|
||||
// National Pokédex order
|
||||
enum {
|
||||
NATIONAL_DEX_NONE,
|
||||
// Kanto
|
||||
@ -425,7 +425,7 @@ enum {
|
||||
#define JOHTO_DEX_COUNT NATIONAL_DEX_CELEBI
|
||||
#define NATIONAL_DEX_COUNT NATIONAL_DEX_DEOXYS
|
||||
|
||||
// Hoenn Pokedex order
|
||||
// Hoenn Pokédex order
|
||||
enum {
|
||||
HOENN_DEX_NONE,
|
||||
HOENN_DEX_TREECKO,
|
||||
@ -631,7 +631,7 @@ enum {
|
||||
HOENN_DEX_JIRACHI,
|
||||
HOENN_DEX_DEOXYS,
|
||||
// End of Hoenn Dex (see HOENN_DEX_COUNT)
|
||||
// Here below have values but are excluded from the Pokedex
|
||||
// Here below have values but are excluded from the Pokédex
|
||||
HOENN_DEX_BULBASAUR,
|
||||
HOENN_DEX_IVYSAUR,
|
||||
HOENN_DEX_VENUSAUR,
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
#ifndef GUARD_CONSTANTS_POKEMON_H
|
||||
#define GUARD_CONSTANTS_POKEMON_H
|
||||
|
||||
// Pokemon types
|
||||
// Pokémon types
|
||||
#define TYPE_NONE 255
|
||||
#define TYPE_NORMAL 0
|
||||
#define TYPE_FIGHTING 1
|
||||
@ -23,7 +23,7 @@
|
||||
#define TYPE_DARK 17
|
||||
#define NUMBER_OF_MON_TYPES 18
|
||||
|
||||
// Pokemon egg groups
|
||||
// Pokémon egg groups
|
||||
#define EGG_GROUP_NONE 0
|
||||
#define EGG_GROUP_MONSTER 1
|
||||
#define EGG_GROUP_WATER_1 2
|
||||
@ -43,7 +43,7 @@
|
||||
|
||||
#define EGG_GROUPS_PER_MON 2
|
||||
|
||||
// Pokemon natures
|
||||
// Pokémon natures
|
||||
#define NATURE_HARDY 0
|
||||
#define NATURE_LONELY 1
|
||||
#define NATURE_BRAVE 2
|
||||
@ -71,7 +71,7 @@
|
||||
#define NATURE_QUIRKY 24
|
||||
#define NUM_NATURES 25
|
||||
|
||||
// Pokemon Stats
|
||||
// Pokémon Stats
|
||||
#define STAT_HP 0
|
||||
#define STAT_ATK 1
|
||||
#define STAT_DEF 2
|
||||
@ -220,7 +220,7 @@
|
||||
#define GROWTH_FAST 4
|
||||
#define GROWTH_SLOW 5
|
||||
|
||||
// Body colors for pokedex search
|
||||
// Body colors for Pokédex search
|
||||
#define BODY_COLOR_RED 0
|
||||
#define BODY_COLOR_BLUE 1
|
||||
#define BODY_COLOR_YELLOW 2
|
||||
@ -263,7 +263,7 @@
|
||||
#define MON_PIC_HEIGHT 64
|
||||
#define MON_PIC_SIZE (MON_PIC_WIDTH * MON_PIC_HEIGHT / 2)
|
||||
|
||||
// Most pokemon have 2 frames (a default and an alternate for their animation).
|
||||
// Most Pokémon have 2 frames (a default and an alternate for their animation).
|
||||
// There are 4 exceptions:
|
||||
// - Castform has 4 frames, 1 for each form
|
||||
// - Deoxys has 2 frames, 1 for each form
|
||||
|
||||
6
include/constants/pokemon_icon.h
Normal file
@ -0,0 +1,6 @@
|
||||
#ifndef GUARD_CONSTANTS_POKEMON_ICON_H
|
||||
#define GUARD_CONSTANTS_POKEMON_ICON_H
|
||||
|
||||
#define POKE_ICON_BASE_PAL_TAG 56000
|
||||
|
||||
#endif // GUARD_CONSTANTS_POKEMON_ICON_H
|
||||
89
include/constants/rematches.h
Normal file
@ -0,0 +1,89 @@
|
||||
#ifndef GUARD_REMATCHES_H
|
||||
#define GUARD_REMATCHES_H
|
||||
|
||||
enum {
|
||||
REMATCH_ROSE,
|
||||
REMATCH_ANDRES,
|
||||
REMATCH_DUSTY,
|
||||
REMATCH_LOLA,
|
||||
REMATCH_RICKY,
|
||||
REMATCH_LILA_AND_ROY,
|
||||
REMATCH_CRISTIN,
|
||||
REMATCH_BROOKE,
|
||||
REMATCH_WILTON,
|
||||
REMATCH_VALERIE,
|
||||
REMATCH_CINDY,
|
||||
REMATCH_THALIA,
|
||||
REMATCH_JESSICA,
|
||||
REMATCH_WINSTON,
|
||||
REMATCH_STEVE,
|
||||
REMATCH_TONY,
|
||||
REMATCH_NOB,
|
||||
REMATCH_KOJI,
|
||||
REMATCH_FERNANDO,
|
||||
REMATCH_DALTON,
|
||||
REMATCH_BERNIE,
|
||||
REMATCH_ETHAN,
|
||||
REMATCH_JOHN_AND_JAY,
|
||||
REMATCH_JEFFREY,
|
||||
REMATCH_CAMERON,
|
||||
REMATCH_JACKI,
|
||||
REMATCH_WALTER,
|
||||
REMATCH_KAREN,
|
||||
REMATCH_JERRY,
|
||||
REMATCH_ANNA_AND_MEG,
|
||||
REMATCH_ISABEL,
|
||||
REMATCH_MIGUEL,
|
||||
REMATCH_TIMOTHY,
|
||||
REMATCH_SHELBY,
|
||||
REMATCH_CALVIN,
|
||||
REMATCH_ELLIOT,
|
||||
REMATCH_ISAIAH,
|
||||
REMATCH_MARIA,
|
||||
REMATCH_ABIGAIL,
|
||||
REMATCH_DYLAN,
|
||||
REMATCH_KATELYN,
|
||||
REMATCH_BENJAMIN,
|
||||
REMATCH_PABLO,
|
||||
REMATCH_NICOLAS,
|
||||
REMATCH_ROBERT,
|
||||
REMATCH_LAO,
|
||||
REMATCH_CYNDY,
|
||||
REMATCH_MADELINE,
|
||||
REMATCH_JENNY,
|
||||
REMATCH_DIANA,
|
||||
REMATCH_AMY_AND_LIV,
|
||||
REMATCH_ERNEST,
|
||||
REMATCH_CORY,
|
||||
REMATCH_EDWIN,
|
||||
REMATCH_LYDIA,
|
||||
REMATCH_ISAAC,
|
||||
REMATCH_GABRIELLE,
|
||||
REMATCH_CATHERINE,
|
||||
REMATCH_JACKSON,
|
||||
REMATCH_HALEY,
|
||||
REMATCH_JAMES,
|
||||
REMATCH_TRENT,
|
||||
REMATCH_SAWYER,
|
||||
REMATCH_KIRA_AND_DAN,
|
||||
REMATCH_WALLY_VR, // Entries above WALLY are considered normal trainers, from Wally below are special trainers
|
||||
REMATCH_ROXANNE,
|
||||
REMATCH_BRAWLY,
|
||||
REMATCH_WATTSON,
|
||||
REMATCH_FLANNERY,
|
||||
REMATCH_NORMAN,
|
||||
REMATCH_WINONA,
|
||||
REMATCH_TATE_AND_LIZA,
|
||||
REMATCH_JUAN,
|
||||
REMATCH_SIDNEY, // Entries from SIDNEY below are considered part of REMATCH_ELITE_FOUR_ENTRIES.
|
||||
REMATCH_PHOEBE,
|
||||
REMATCH_GLACIA,
|
||||
REMATCH_DRAKE,
|
||||
REMATCH_WALLACE,
|
||||
REMATCH_TABLE_ENTRIES // The total number of rematch entries. Must be last in enum
|
||||
};
|
||||
|
||||
#define REMATCH_SPECIAL_TRAINER_START REMATCH_WALLY_VR
|
||||
#define REMATCH_ELITE_FOUR_ENTRIES REMATCH_SIDNEY
|
||||
|
||||
#endif // GUARD_REMATCHES_H
|
||||
@ -170,7 +170,7 @@
|
||||
|
||||
#define NUM_SECRET_BASE_FLAGS 32 // by definition, bitfield of 2 u16s
|
||||
|
||||
// TV Show states for Pokemon Contest Live Updates
|
||||
// TV Show states for Pokémon Contest Live Updates
|
||||
#define CONTESTLIVE_STATE_INTRO 0
|
||||
#define CONTESTLIVE_STATE_WON_BOTH_ROUNDS 1
|
||||
#define CONTESTLIVE_STATE_BETTER_ROUND2 2
|
||||
|
||||
@ -209,7 +209,7 @@ struct ContestantStatus
|
||||
u8 comboAppealBonus;
|
||||
u8 repeatJam;
|
||||
u8 nextTurnOrder; // turn position
|
||||
u8 attentionLevel; // How much the Pokemon "stood out"
|
||||
u8 attentionLevel; // How much the Pokémon "stood out"
|
||||
u8 contestantAnimTarget;
|
||||
};
|
||||
|
||||
|
||||
@ -28,9 +28,9 @@ struct MonCoords
|
||||
u8 y_offset;
|
||||
};
|
||||
|
||||
#define MON_COORDS_SIZE(width, height)(DIV_ROUND_UP(width, 8) << 4 | DIV_ROUND_UP(height, 8))
|
||||
#define GET_MON_COORDS_WIDTH(size)((size >> 4) * 8)
|
||||
#define GET_MON_COORDS_HEIGHT(size)((size & 0xF) * 8)
|
||||
#define MON_COORDS_SIZE(width, height) (DIV_ROUND_UP(width, 8) << 4 | DIV_ROUND_UP(height, 8))
|
||||
#define GET_MON_COORDS_WIDTH(size) ((size >> 4) * 8)
|
||||
#define GET_MON_COORDS_HEIGHT(size) ((size & 0xF) * 8)
|
||||
|
||||
struct TrainerMonNoItemDefaultMoves
|
||||
{
|
||||
@ -91,7 +91,7 @@ struct Trainer
|
||||
/*0x24*/ union TrainerMonPtr party;
|
||||
};
|
||||
|
||||
#define TRAINER_ENCOUNTER_MUSIC(trainer)((gTrainers[trainer].encounterMusic_gender & 0x7F))
|
||||
#define TRAINER_ENCOUNTER_MUSIC(trainer) ((gTrainers[trainer].encounterMusic_gender & 0x7F))
|
||||
|
||||
extern const u16 gMinigameDigits_Pal[];
|
||||
extern const u32 gMinigameDigits_Gfx[];
|
||||
|
||||
@ -71,6 +71,12 @@ enum ReflectionTypes
|
||||
#define GROUND_EFFECT_FLAG_HOT_SPRINGS (1 << 18)
|
||||
#define GROUND_EFFECT_FLAG_SEAWEED (1 << 19)
|
||||
|
||||
// Sprite data for the CameraObject functions
|
||||
#define sCamera_FollowSpriteId data[0]
|
||||
#define sCamera_State data[1]
|
||||
#define sCamera_MoveX data[2]
|
||||
#define sCamera_MoveY data[3]
|
||||
|
||||
struct StepAnimTable
|
||||
{
|
||||
const union AnimCmd *const *anims;
|
||||
@ -123,7 +129,7 @@ u8 TrySpawnObjectEvent(u8 localId, u8 mapNum, u8 mapGroup);
|
||||
u8 SpawnSpecialObjectEventParameterized(u8 graphicsId, u8 movementBehavior, u8 localId, s16 x, s16 y, u8 elevation);
|
||||
u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *);
|
||||
void SetSpritePosToMapCoords(s16 mapX, s16 mapY, s16 *destX, s16 *destY);
|
||||
void CameraObjectReset1(void);
|
||||
void CameraObjectReset(void);
|
||||
void ObjectEventSetGraphicsId(struct ObjectEvent *, u8 graphicsId);
|
||||
void ObjectEventTurn(struct ObjectEvent *, u8 direction);
|
||||
void ObjectEventTurnByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup, u8 direction);
|
||||
@ -211,7 +217,7 @@ u16 GetObjectPaletteTag(u8 palSlot);
|
||||
void UpdateObjectEventSpriteInvisibility(struct Sprite *sprite, bool8 invisible);
|
||||
s16 GetFigure8XOffset(s16 idx);
|
||||
s16 GetFigure8YOffset(s16 idx);
|
||||
void CameraObjectReset2(void);
|
||||
void CameraObjectFreeze(void);
|
||||
u8 GetObjectEventBerryTreeId(u8 objectEventId);
|
||||
void SetBerryTreeJustPicked(u8 mapId, u8 mapNumber, u8 mapGroup);
|
||||
bool8 IsBerryTreeSparkling(u8 localId, u8 mapNum, u8 mapGroup);
|
||||
|
||||
@ -75,7 +75,7 @@
|
||||
#define DISPLAY_TILE_HEIGHT (DISPLAY_HEIGHT / TILE_HEIGHT)
|
||||
|
||||
// Size of different tile formats in bytes
|
||||
#define TILE_SIZE(bpp)((bpp) * TILE_WIDTH * TILE_HEIGHT / 8)
|
||||
#define TILE_SIZE(bpp) ((bpp) * TILE_WIDTH * TILE_HEIGHT / 8)
|
||||
#define TILE_SIZE_1BPP TILE_SIZE(1) // 8
|
||||
#define TILE_SIZE_4BPP TILE_SIZE(4) // 32
|
||||
#define TILE_SIZE_8BPP TILE_SIZE(8) // 64
|
||||
|
||||
@ -131,7 +131,7 @@ struct MapEvents
|
||||
struct MapConnection
|
||||
{
|
||||
u8 direction;
|
||||
u32 offset;
|
||||
s32 offset;
|
||||
u8 mapGroup;
|
||||
u8 mapNum;
|
||||
};
|
||||
|
||||
@ -80,7 +80,7 @@
|
||||
// Used in cases where division by 0 can occur in the retail version.
|
||||
// Avoids invalid opcodes on some emulators, and the otherwise UB.
|
||||
#ifdef UBFIX
|
||||
#define SAFE_DIV(a, b) ((b) ? (a) / (b) : 0)
|
||||
#define SAFE_DIV(a, b) (((b) != 0) ? (a) / (b) : 0)
|
||||
#else
|
||||
#define SAFE_DIV(a, b) ((a) / (b))
|
||||
#endif
|
||||
@ -89,7 +89,7 @@
|
||||
// There are cases where GF does a&(n-1) where we would really like to have a%n, because
|
||||
// if n is changed to a value that isn't a power of 2 then a&(n-1) is unlikely to work as
|
||||
// intended, and a%n for powers of 2 isn't always optimized to use &.
|
||||
#define MOD(a, n)(((n) & ((n)-1)) ? ((a) % (n)) : ((a) & ((n)-1)))
|
||||
#define MOD(a, n) (((n) & ((n)-1)) ? ((a) % (n)) : ((a) & ((n)-1)))
|
||||
|
||||
// Extracts the upper 16 bits of a 32-bit number
|
||||
#define HIHALF(n) (((n) & 0xFFFF0000) >> 16)
|
||||
@ -130,12 +130,12 @@
|
||||
f; \
|
||||
})
|
||||
|
||||
#define DIV_ROUND_UP(val, roundBy)(((val) / (roundBy)) + (((val) % (roundBy)) ? 1 : 0))
|
||||
#define DIV_ROUND_UP(val, roundBy) (((val) / (roundBy)) + (((val) % (roundBy)) ? 1 : 0))
|
||||
|
||||
#define ROUND_BITS_TO_BYTES(numBits) DIV_ROUND_UP(numBits, 8)
|
||||
|
||||
// NUM_DEX_FLAG_BYTES allocates more flags than it needs to, as NUM_SPECIES includes the "old unown"
|
||||
// values that don't appear in the Pokedex. NATIONAL_DEX_COUNT does not include these values.
|
||||
// values that don't appear in the Pokédex. NATIONAL_DEX_COUNT does not include these values.
|
||||
#define NUM_DEX_FLAG_BYTES ROUND_BITS_TO_BYTES(NUM_SPECIES)
|
||||
#define NUM_FLAG_BYTES ROUND_BITS_TO_BYTES(FLAGS_COUNT)
|
||||
#define NUM_TRENDY_SAYING_BYTES ROUND_BITS_TO_BYTES(NUM_TRENDY_SAYINGS)
|
||||
@ -520,7 +520,7 @@ struct SaveBlock2
|
||||
/*0x90*/ u8 filler_90[0x8];
|
||||
/*0x98*/ struct Time localTimeOffset;
|
||||
/*0xA0*/ struct Time lastBerryTreeUpdate;
|
||||
/*0xA8*/ u32 gcnLinkFlags; // Read by Pokemon Colosseum/XD
|
||||
/*0xA8*/ u32 gcnLinkFlags; // Read by Pokémon Colosseum/XD
|
||||
/*0xAC*/ u32 encryptionKey;
|
||||
/*0xB0*/ struct PlayersApprentice playerApprentice;
|
||||
/*0xDC*/ struct Apprentice apprentices[APPRENTICE_COUNT];
|
||||
|
||||
@ -32,7 +32,7 @@ extern const u32 gBallGfx_Premier[];
|
||||
extern const u32 gBallPal_Premier[];
|
||||
extern const u32 gOpenPokeballGfx[];
|
||||
|
||||
// pokemon gfx
|
||||
// Pokémon gfx
|
||||
extern const u32 gMonFrontPic_Bulbasaur[];
|
||||
extern const u32 gMonPalette_Bulbasaur[];
|
||||
extern const u32 gMonBackPic_Bulbasaur[];
|
||||
@ -3282,7 +3282,7 @@ extern const u32 gBattleTerrainPalette_StadiumGlacia[];
|
||||
extern const u32 gBattleTerrainPalette_StadiumDrake[];
|
||||
extern const u32 gBattleTerrainPalette_StadiumWallace[];
|
||||
|
||||
// pokedex
|
||||
// Pokédex
|
||||
extern const u32 gPokedexInterface_Gfx[];
|
||||
extern const u16 gPokedexBgHoenn_Pal[];
|
||||
extern const u32 gPokedexMenu_Gfx[];
|
||||
@ -4005,7 +4005,7 @@ extern const u32 gBerryPalette_Starf[];
|
||||
extern const u32 gBerryPic_Enigma[];
|
||||
extern const u32 gBerryPalette_Enigma[];
|
||||
|
||||
//pokenav
|
||||
//PokéNav
|
||||
extern const u16 gPokenavCondition_Pal[];
|
||||
extern const u32 gPokenavCondition_Gfx[];
|
||||
extern const u32 gPokenavCondition_Tilemap[];
|
||||
@ -4879,11 +4879,11 @@ extern const u16 gSlotMachineReelTimePikachu_Pal[];
|
||||
extern const u32 gBattleAnimBgTilemap_Sandstorm[];
|
||||
extern const u32 gBattleAnimBgImage_Sandstorm[];
|
||||
|
||||
// Pokedex Area Screen
|
||||
// Pokédex Area Screen
|
||||
extern const u32 gPokedexAreaScreenAreaUnknown_Gfx[];
|
||||
extern const u16 gPokedexAreaScreenAreaUnknown_Pal[];
|
||||
|
||||
// Pokemon Storage System
|
||||
// Pokémon Storage System
|
||||
extern const u32 gStorageSystemMenu_Gfx[];
|
||||
extern const u16 gStorageSystemPartyMenu_Pal[];
|
||||
extern const u32 gStorageSystemPartyMenu_Tilemap[];
|
||||
@ -5011,7 +5011,7 @@ extern const u32 gBerryCrush_Crusher_Gfx[];
|
||||
extern const u16 gBerryCrush_Crusher_Pal[];
|
||||
extern const u32 gBerryCrush_TextWindows_Tilemap[];
|
||||
|
||||
// Pokenav
|
||||
// PokéNav
|
||||
extern const u32 gPokenavMessageBox_Gfx[];
|
||||
extern const u32 gPokenavMessageBox_Tilemap[];
|
||||
extern const u16 gPokenavMessageBox_Pal[];
|
||||
|
||||
@ -1,90 +1,7 @@
|
||||
#ifndef GUARD_TRAINER_REMATCH_H
|
||||
#define GUARD_TRAINER_REMATCH_H
|
||||
|
||||
enum {
|
||||
REMATCH_ROSE,
|
||||
REMATCH_ANDRES,
|
||||
REMATCH_DUSTY,
|
||||
REMATCH_LOLA,
|
||||
REMATCH_RICKY,
|
||||
REMATCH_LILA_AND_ROY,
|
||||
REMATCH_CRISTIN,
|
||||
REMATCH_BROOKE,
|
||||
REMATCH_WILTON,
|
||||
REMATCH_VALERIE,
|
||||
REMATCH_CINDY,
|
||||
REMATCH_THALIA,
|
||||
REMATCH_JESSICA,
|
||||
REMATCH_WINSTON,
|
||||
REMATCH_STEVE,
|
||||
REMATCH_TONY,
|
||||
REMATCH_NOB,
|
||||
REMATCH_KOJI,
|
||||
REMATCH_FERNANDO,
|
||||
REMATCH_DALTON,
|
||||
REMATCH_BERNIE,
|
||||
REMATCH_ETHAN,
|
||||
REMATCH_JOHN_AND_JAY,
|
||||
REMATCH_JEFFREY,
|
||||
REMATCH_CAMERON,
|
||||
REMATCH_JACKI,
|
||||
REMATCH_WALTER,
|
||||
REMATCH_KAREN,
|
||||
REMATCH_JERRY,
|
||||
REMATCH_ANNA_AND_MEG,
|
||||
REMATCH_ISABEL,
|
||||
REMATCH_MIGUEL,
|
||||
REMATCH_TIMOTHY,
|
||||
REMATCH_SHELBY,
|
||||
REMATCH_CALVIN,
|
||||
REMATCH_ELLIOT,
|
||||
REMATCH_ISAIAH,
|
||||
REMATCH_MARIA,
|
||||
REMATCH_ABIGAIL,
|
||||
REMATCH_DYLAN,
|
||||
REMATCH_KATELYN,
|
||||
REMATCH_BENJAMIN,
|
||||
REMATCH_PABLO,
|
||||
REMATCH_NICOLAS,
|
||||
REMATCH_ROBERT,
|
||||
REMATCH_LAO,
|
||||
REMATCH_CYNDY,
|
||||
REMATCH_MADELINE,
|
||||
REMATCH_JENNY,
|
||||
REMATCH_DIANA,
|
||||
REMATCH_AMY_AND_LIV,
|
||||
REMATCH_ERNEST,
|
||||
REMATCH_CORY,
|
||||
REMATCH_EDWIN,
|
||||
REMATCH_LYDIA,
|
||||
REMATCH_ISAAC,
|
||||
REMATCH_GABRIELLE,
|
||||
REMATCH_CATHERINE,
|
||||
REMATCH_JACKSON,
|
||||
REMATCH_HALEY,
|
||||
REMATCH_JAMES,
|
||||
REMATCH_TRENT,
|
||||
REMATCH_SAWYER,
|
||||
REMATCH_KIRA_AND_DAN,
|
||||
REMATCH_WALLY_VR, // Entries above WALLY are considered normal trainers, from Wally below are special trainers
|
||||
REMATCH_ROXANNE,
|
||||
REMATCH_BRAWLY,
|
||||
REMATCH_WATTSON,
|
||||
REMATCH_FLANNERY,
|
||||
REMATCH_NORMAN,
|
||||
REMATCH_WINONA,
|
||||
REMATCH_TATE_AND_LIZA,
|
||||
REMATCH_JUAN,
|
||||
REMATCH_SIDNEY, // Entries from SIDNEY below are considered part of REMATCH_ELITE_FOUR_ENTRIES.
|
||||
REMATCH_PHOEBE,
|
||||
REMATCH_GLACIA,
|
||||
REMATCH_DRAKE,
|
||||
REMATCH_WALLACE,
|
||||
REMATCH_TABLE_ENTRIES // The total number of rematch entries. Must be last in enum
|
||||
};
|
||||
|
||||
#define REMATCH_SPECIAL_TRAINER_START REMATCH_WALLY_VR
|
||||
#define REMATCH_ELITE_FOUR_ENTRIES REMATCH_SIDNEY
|
||||
#include "constants/rematches.h"
|
||||
|
||||
void UpdateGymLeaderRematch(void);
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
#ifndef GUARD_MAIL_H
|
||||
#define GUARD_MAIL_H
|
||||
|
||||
#define IS_ITEM_MAIL(itemId)((itemId == ITEM_ORANGE_MAIL \
|
||||
#define IS_ITEM_MAIL(itemId) ((itemId == ITEM_ORANGE_MAIL \
|
||||
|| itemId == ITEM_HARBOR_MAIL \
|
||||
|| itemId == ITEM_GLITTER_MAIL \
|
||||
|| itemId == ITEM_MECH_MAIL \
|
||||
|
||||
@ -44,7 +44,7 @@ enum {
|
||||
|
||||
// The number of extra sparkles shown on a Pokémon's condition screen.
|
||||
// All Pokémon start with 1, so the max here is MAX_CONDITION_SPARKLES - 1
|
||||
#define GET_NUM_CONDITION_SPARKLES(sheen)((sheen) != MAX_SHEEN) ? (sheen) / ((u32)MAX_SHEEN / (MAX_CONDITION_SPARKLES - 1) + 1) : MAX_CONDITION_SPARKLES - 1;
|
||||
#define GET_NUM_CONDITION_SPARKLES(sheen) ((sheen) != MAX_SHEEN) ? (sheen) / ((u32)MAX_SHEEN / (MAX_CONDITION_SPARKLES - 1) + 1) : MAX_CONDITION_SPARKLES - 1;
|
||||
|
||||
#define CONDITION_GRAPH_TOP_Y 56
|
||||
#define CONDITION_GRAPH_BOTTOM_Y 121
|
||||
|
||||
@ -276,8 +276,7 @@ struct BattlePokemon
|
||||
/*0x17*/ u32 abilityNum:1;
|
||||
/*0x18*/ s8 statStages[NUM_BATTLE_STATS];
|
||||
/*0x20*/ u8 ability;
|
||||
/*0x21*/ u8 type1;
|
||||
/*0x22*/ u8 type2;
|
||||
/*0x21*/ u8 types[2];
|
||||
/*0x23*/ u8 unknown;
|
||||
/*0x24*/ u8 pp[MAX_MON_MOVES];
|
||||
/*0x28*/ u16 hp;
|
||||
|
||||
@ -14,7 +14,7 @@ void ShowPokemonSummaryScreenHandleDeoxys(u8 mode, struct BoxPokemon *mons, u8 m
|
||||
u8 GetMoveSlotToReplace(void);
|
||||
void SummaryScreen_SetAnimDelayTaskId(u8 taskId);
|
||||
|
||||
// The Pokemon Summary Screen can operate in different modes. Certain features,
|
||||
// The Pokémon Summary Screen can operate in different modes. Certain features,
|
||||
// such as move re-ordering, are available in the different modes.
|
||||
enum PokemonSummaryScreenMode
|
||||
{
|
||||
|
||||
@ -65,8 +65,8 @@ struct PokenavMonList
|
||||
enum
|
||||
{
|
||||
POKENAV_MODE_NORMAL, // Chosen from Start menu.
|
||||
POKENAV_MODE_FORCE_CALL_READY, // Pokenav tutorial before calling Mr. Stone
|
||||
POKENAV_MODE_FORCE_CALL_EXIT, // Pokenav tutorial after calling Mr. Stone
|
||||
POKENAV_MODE_FORCE_CALL_READY, // PokéNav tutorial before calling Mr. Stone
|
||||
POKENAV_MODE_FORCE_CALL_EXIT, // PokéNav tutorial after calling Mr. Stone
|
||||
};
|
||||
|
||||
enum
|
||||
@ -232,8 +232,8 @@ enum
|
||||
[CHECK_PAGE_INTRO_2] = gText_MatchCall##name##_Intro2}
|
||||
|
||||
|
||||
// Pokenav Function IDs
|
||||
// Indices into the LoopedTask tables for each of the main Pokenav features
|
||||
// PokéNav Function IDs
|
||||
// Indices into the LoopedTask tables for each of the main PokéNav features
|
||||
|
||||
enum RegionMapFuncIds
|
||||
{
|
||||
|
||||
@ -13,8 +13,8 @@ u16 Random2(void);
|
||||
|
||||
// The number 1103515245 comes from the example implementation of rand and srand
|
||||
// in the ISO C standard.
|
||||
#define ISO_RANDOMIZE1(val)(1103515245 * (val) + 24691)
|
||||
#define ISO_RANDOMIZE2(val)(1103515245 * (val) + 12345)
|
||||
#define ISO_RANDOMIZE1(val) (1103515245 * (val) + 24691)
|
||||
#define ISO_RANDOMIZE2(val) (1103515245 * (val) + 12345)
|
||||
|
||||
//Sets the initial seed value of the pseudorandom number generator
|
||||
void SeedRng(u16 seed);
|
||||
|
||||
@ -519,7 +519,7 @@ extern const u8 gText_Speed[];
|
||||
extern const u8 gText_Dash[];
|
||||
extern const u8 gText_Plus[];
|
||||
|
||||
//pokedex text
|
||||
//Pokédex text
|
||||
extern const u8 gText_CryOf[];
|
||||
extern const u8 gText_SizeComparedTo[];
|
||||
extern const u8 gText_PokedexRegistration[];
|
||||
@ -1121,7 +1121,7 @@ extern const u8 gTrickHouse_Mechadoll_Six2[];
|
||||
extern const u8 gTrickHouse_Mechadoll_Seven2[];
|
||||
extern const u8 gTrickHouse_Mechadoll_Eight2[];
|
||||
|
||||
// Pokedex strings
|
||||
// Pokédex strings
|
||||
extern const u8 gText_SearchForPkmnBasedOnParameters[];
|
||||
extern const u8 gText_SwitchPokedexListings[];
|
||||
extern const u8 gText_ReturnToPokedex[];
|
||||
@ -2874,7 +2874,7 @@ extern const u8 gText_WantToPlayAgain[];
|
||||
extern const u8 gText_CommunicationStandby3[];
|
||||
extern const u8 gText_SomeoneDroppedOut[];
|
||||
|
||||
// Pokemon jump
|
||||
// Pokémon jump
|
||||
extern const u8 gText_WantToPlayAgain2[];
|
||||
extern const u8 gText_SomeoneDroppedOut2[];
|
||||
extern const u8 gText_CommunicationStandby4[];
|
||||
@ -2949,7 +2949,7 @@ extern const u8 gText_CutenessContest[];
|
||||
extern const u8 gText_SmartnessContest[];
|
||||
extern const u8 gText_ToughnessContest[];
|
||||
|
||||
// Pokenav Match Call
|
||||
// PokéNav Match Call
|
||||
extern const u8 gText_CallCantBeMadeHere[];
|
||||
extern const u8 gText_NumberRegistered[];
|
||||
extern const u8 gText_NumberOfBattles[];
|
||||
@ -2959,7 +2959,7 @@ extern const u8 gText_Call[];
|
||||
extern const u8 gText_Check[];
|
||||
extern const u8 gText_Cancel6[];
|
||||
|
||||
// Pokenav Menu Handler
|
||||
// PokéNav Menu Handler
|
||||
extern const u8 gText_CheckMapOfHoenn[];
|
||||
extern const u8 gText_CheckPokemonInDetail[];
|
||||
extern const u8 gText_CallRegisteredTrainer[];
|
||||
@ -2976,7 +2976,7 @@ extern const u8 gText_FindToughPokemon[];
|
||||
extern const u8 gText_ReturnToConditionMenu[];
|
||||
extern const u8 gText_NoRibbonWinners[];
|
||||
|
||||
// Pokenav
|
||||
// PokéNav
|
||||
extern const u8 gText_NumberIndex[];
|
||||
extern const u8 gText_RibbonsF700[];
|
||||
|
||||
|
||||
@ -3,6 +3,13 @@ ENTRY(Start)
|
||||
gNumMusicPlayers = 4;
|
||||
gMaxLines = 0;
|
||||
|
||||
MEMORY
|
||||
{
|
||||
EWRAM (rwx) : ORIGIN = 0x2000000, LENGTH = 256K
|
||||
IWRAM (rwx) : ORIGIN = 0x3000000, LENGTH = 32K
|
||||
ROM (rx) : ORIGIN = 0x8000000, LENGTH = 32M
|
||||
}
|
||||
|
||||
/* Modify the following load addresses as needed to make more room. Alternately, delete both the
|
||||
declarations below and their references further down to get rid of the gaps. */
|
||||
|
||||
@ -10,15 +17,10 @@ __anim_mon_load_address = 0x8b00000;
|
||||
__gfx_load_address = 0x8c00000;
|
||||
|
||||
SECTIONS {
|
||||
. = 0x2000000;
|
||||
|
||||
ewram (NOLOAD) :
|
||||
ewram 0x2000000 (NOLOAD) :
|
||||
ALIGN(4)
|
||||
{
|
||||
gHeap = .;
|
||||
|
||||
. = 0x1C000;
|
||||
|
||||
INCLUDE "sym_ewram.ld"
|
||||
src/*.o(ewram_data);
|
||||
gflib/*.o(ewram_data);
|
||||
@ -26,12 +28,9 @@ SECTIONS {
|
||||
*libc.a:impure.o(.data);
|
||||
*libc.a:locale.o(.data);
|
||||
*libc.a:mallocr.o(.data);
|
||||
. = 0x40000;
|
||||
}
|
||||
} > EWRAM
|
||||
|
||||
. = 0x3000000;
|
||||
|
||||
iwram (NOLOAD) :
|
||||
iwram 0x3000000 (NOLOAD) :
|
||||
ALIGN(4)
|
||||
{
|
||||
/* .bss starts at 0x3000000 */
|
||||
@ -46,10 +45,9 @@ SECTIONS {
|
||||
/* COMMON starts at 0x30022A8 */
|
||||
INCLUDE "sym_common.ld"
|
||||
*libc.a:sbrkr.o(COMMON);
|
||||
end = .;
|
||||
. = 0x8000;
|
||||
}
|
||||
} > IWRAM
|
||||
|
||||
/* BEGIN ROM DATA */
|
||||
. = 0x8000000;
|
||||
|
||||
.text :
|
||||
@ -343,7 +341,7 @@ SECTIONS {
|
||||
src/gym_leader_rematch.o(.text);
|
||||
src/battle_transition_frontier.o(.text);
|
||||
src/international_string_util.o(.text);
|
||||
} =0
|
||||
} > ROM =0
|
||||
|
||||
script_data :
|
||||
ALIGN(4)
|
||||
@ -356,7 +354,7 @@ SECTIONS {
|
||||
data/battle_ai_scripts.o(script_data);
|
||||
data/contest_ai_scripts.o(script_data);
|
||||
data/mystery_event_script_cmd_table.o(script_data);
|
||||
} =0
|
||||
} > ROM =0
|
||||
|
||||
lib_text :
|
||||
ALIGN(4)
|
||||
@ -440,7 +438,7 @@ SECTIONS {
|
||||
*libc.a:libcfunc.o(.text);
|
||||
*libc.a:lseekr.o(.text);
|
||||
*libc.a:readr.o(.text);
|
||||
} =0
|
||||
} > ROM =0
|
||||
|
||||
.rodata :
|
||||
ALIGN(4)
|
||||
@ -705,7 +703,7 @@ SECTIONS {
|
||||
data/mystery_gift.o(.rodata);
|
||||
src/m4a_tables.o(.rodata);
|
||||
data/sound_data.o(.rodata);
|
||||
} =0
|
||||
} > ROM =0
|
||||
|
||||
song_data :
|
||||
ALIGN(4)
|
||||
@ -1240,7 +1238,7 @@ SECTIONS {
|
||||
sound/songs/midi/ph_nurse_blend.o(.rodata);
|
||||
sound/songs/midi/ph_nurse_held.o(.rodata);
|
||||
sound/songs/midi/ph_nurse_solo.o(.rodata);
|
||||
} =0
|
||||
} > ROM =0
|
||||
|
||||
lib_rodata :
|
||||
SUBALIGN(4)
|
||||
@ -1293,7 +1291,7 @@ SECTIONS {
|
||||
*libc.a:lseekr.o(.rodata);
|
||||
*libc.a:readr.o(.rodata);
|
||||
src/libisagbprn.o(.rodata);
|
||||
} =0
|
||||
} > ROM =0
|
||||
|
||||
multiboot_data :
|
||||
ALIGN(4)
|
||||
@ -1301,19 +1299,19 @@ SECTIONS {
|
||||
data/multiboot_ereader.o(.rodata);
|
||||
data/multiboot_berry_glitch_fix.o(.rodata);
|
||||
data/multiboot_pokemon_colosseum.o(.rodata);
|
||||
} =0
|
||||
} > ROM =0
|
||||
|
||||
anim_mon_front_pic_data __anim_mon_load_address :
|
||||
ALIGN(4)
|
||||
{
|
||||
src/anim_mon_front_pics.o(.rodata);
|
||||
} =0
|
||||
} > ROM =0
|
||||
|
||||
gfx_data __gfx_load_address :
|
||||
ALIGN(4)
|
||||
{
|
||||
src/graphics.o(.rodata);
|
||||
} =0
|
||||
} > ROM =0
|
||||
|
||||
extra :
|
||||
ALIGN(4)
|
||||
@ -1323,7 +1321,7 @@ SECTIONS {
|
||||
src/*.o(.rodata);
|
||||
gflib/*.o(.rodata);
|
||||
data/*.o(.rodata);
|
||||
} = 0
|
||||
} > ROM = 0
|
||||
|
||||
/* DWARF debug sections.
|
||||
Symbols in the DWARF debugging sections are relative to the beginning
|
||||
@ -3,46 +3,40 @@ ENTRY(Start)
|
||||
gNumMusicPlayers = 4;
|
||||
gMaxLines = 0;
|
||||
|
||||
SECTIONS {
|
||||
. = 0x2000000;
|
||||
|
||||
ewram (NOLOAD) :
|
||||
ALIGN(4)
|
||||
{
|
||||
gHeap = .;
|
||||
|
||||
. = 0x1C000;
|
||||
|
||||
src/*.o(ewram_data);
|
||||
gflib/*.o(ewram_data);
|
||||
|
||||
. = 0x40000;
|
||||
MEMORY
|
||||
{
|
||||
EWRAM (rwx) : ORIGIN = 0x2000000, LENGTH = 256K
|
||||
IWRAM (rwx) : ORIGIN = 0x3000000, LENGTH = 32K
|
||||
ROM (rx) : ORIGIN = 0x8000000, LENGTH = 32M
|
||||
}
|
||||
|
||||
. = 0x3000000;
|
||||
SECTIONS {
|
||||
|
||||
iwram (NOLOAD) :
|
||||
ewram 0x2000000 (NOLOAD) :
|
||||
ALIGN(4)
|
||||
{
|
||||
src/*.o(ewram_data);
|
||||
gflib/*.o(ewram_data);
|
||||
} > EWRAM
|
||||
|
||||
iwram 0x3000000 (NOLOAD) :
|
||||
ALIGN(4)
|
||||
{
|
||||
/* .bss starts at 0x3000000 */
|
||||
src/*.o(.bss);
|
||||
gflib/*.o(.bss);
|
||||
data/*.o(.bss);
|
||||
*libc.a:*.o(.bss*);
|
||||
*libnosys.a:*.o(.bss*);
|
||||
|
||||
/* .bss.code starts at 0x3001AA8 */
|
||||
src/m4a.o(.bss.code);
|
||||
|
||||
/* COMMON starts at 0x30022A8 */
|
||||
src/*.o(COMMON);
|
||||
gflib/*.o(COMMON);
|
||||
*libc.a:*.o(COMMON);
|
||||
*libnosys.a:*.o(COMMON);
|
||||
end = .;
|
||||
. = 0x8000;
|
||||
}
|
||||
} > IWRAM
|
||||
|
||||
/* BEGIN ROM DATA */
|
||||
. = 0x8000000;
|
||||
|
||||
.text :
|
||||
@ -55,13 +49,13 @@ SECTIONS {
|
||||
gflib/*.o(.text*);
|
||||
src/*.o(.text*);
|
||||
asm/*.o(.text*);
|
||||
} =0
|
||||
} > ROM =0
|
||||
|
||||
script_data :
|
||||
ALIGN(4)
|
||||
{
|
||||
data/*.o(script_data);
|
||||
} =0
|
||||
} > ROM =0
|
||||
|
||||
lib_text :
|
||||
ALIGN(4)
|
||||
@ -82,7 +76,7 @@ SECTIONS {
|
||||
*libc.a:*.o(.text*);
|
||||
*libnosys.a:*.o(.text*);
|
||||
src/libisagbprn.o(.text);
|
||||
} =0
|
||||
} > ROM =0
|
||||
|
||||
.rodata :
|
||||
ALIGN(4)
|
||||
@ -90,13 +84,13 @@ SECTIONS {
|
||||
src/*.o(.rodata*);
|
||||
gflib/*.o(.rodata*);
|
||||
data/*.o(.rodata*);
|
||||
} =0
|
||||
} > ROM =0
|
||||
|
||||
song_data :
|
||||
ALIGN(4)
|
||||
{
|
||||
sound/songs/*.o(.rodata);
|
||||
} =0
|
||||
} > ROM =0
|
||||
|
||||
lib_rodata :
|
||||
SUBALIGN(4)
|
||||
@ -121,19 +115,19 @@ SECTIONS {
|
||||
data/multiboot_ereader.o(.rodata);
|
||||
data/multiboot_berry_glitch_fix.o(.rodata);
|
||||
data/multiboot_pokemon_colosseum.o(.rodata);
|
||||
} =0
|
||||
} > ROM =0
|
||||
|
||||
anim_mon_front_pic_data :
|
||||
ALIGN(4)
|
||||
{
|
||||
src/anim_mon_front_pics.o(.rodata);
|
||||
} =0
|
||||
} > ROM =0
|
||||
|
||||
gfx_data :
|
||||
ALIGN(4)
|
||||
{
|
||||
src/graphics.o(.rodata);
|
||||
} =0
|
||||
} > ROM =0
|
||||
|
||||
/* DWARF debug sections.
|
||||
Symbols in the DWARF debugging sections are relative to the beginning
|
||||
@ -1,12 +1,22 @@
|
||||
# This controls building executables in the `tools` folder.
|
||||
# Can be invoked through the `Makefile` or standalone.
|
||||
|
||||
MAKEFLAGS += --no-print-directory
|
||||
|
||||
# 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_DIR := tools
|
||||
TOOL_NAMES := aif2pcm bin2c gbafix gbagfx jsonproc mapjson mid2agb preproc ramscrgen rsfont scaninc
|
||||
|
||||
.PHONY: all $(TOOLDIRS)
|
||||
TOOLDIRS := $(TOOL_NAMES:%=$(TOOLS_DIR)/%)
|
||||
|
||||
all: $(TOOLDIRS)
|
||||
# Tool making doesnt require a pokeemerald dependency scan.
|
||||
RULES_NO_SCAN += tools check-tools clean-tools $(TOOLDIRS)
|
||||
.PHONY: $(RULES_NO_SCAN)
|
||||
|
||||
tools: $(TOOLDIRS)
|
||||
|
||||
$(TOOLDIRS):
|
||||
@$(MAKE) -C $@
|
||||
|
||||
clean-tools:
|
||||
@$(foreach tooldir,$(TOOLDIRS),$(MAKE) clean -C $(tooldir);)
|
||||
|
||||
@ -1,31 +1,33 @@
|
||||
# Map JSON data
|
||||
|
||||
# Inputs
|
||||
MAPS_DIR = $(DATA_ASM_SUBDIR)/maps
|
||||
LAYOUTS_DIR = $(DATA_ASM_SUBDIR)/layouts
|
||||
|
||||
# Outputs
|
||||
MAPS_OUTDIR := $(MAPS_DIR)
|
||||
LAYOUTS_OUTDIR := $(LAYOUTS_DIR)
|
||||
INCLUDECONSTS_OUTDIR := include/constants
|
||||
|
||||
AUTO_GEN_TARGETS += $(INCLUDECONSTS_OUTDIR)/map_groups.h
|
||||
AUTO_GEN_TARGETS += $(INCLUDECONSTS_OUTDIR)/layouts.h
|
||||
|
||||
MAP_DIRS := $(dir $(wildcard $(MAPS_DIR)/*/map.json))
|
||||
MAP_CONNECTIONS := $(patsubst $(MAPS_DIR)/%/,$(MAPS_DIR)/%/connections.inc,$(MAP_DIRS))
|
||||
MAP_EVENTS := $(patsubst $(MAPS_DIR)/%/,$(MAPS_DIR)/%/events.inc,$(MAP_DIRS))
|
||||
MAP_HEADERS := $(patsubst $(MAPS_DIR)/%/,$(MAPS_DIR)/%/header.inc,$(MAP_DIRS))
|
||||
|
||||
$(DATA_ASM_BUILDDIR)/maps.o: $(DATA_ASM_SUBDIR)/maps.s $(LAYOUTS_DIR)/layouts.inc $(LAYOUTS_DIR)/layouts_table.inc $(MAPS_DIR)/headers.inc $(MAPS_DIR)/groups.inc $(MAPS_DIR)/connections.inc $(MAP_CONNECTIONS) $(MAP_HEADERS)
|
||||
$(PREPROC) $< charmap.txt | $(CPP) -I include - | $(AS) $(ASFLAGS) -o $@
|
||||
$(PREPROC) $< charmap.txt | $(CPP) -I include - | $(PREPROC) -ie $< charmap.txt | $(AS) $(ASFLAGS) -o $@
|
||||
$(DATA_ASM_BUILDDIR)/map_events.o: $(DATA_ASM_SUBDIR)/map_events.s $(MAPS_DIR)/events.inc $(MAP_EVENTS)
|
||||
$(PREPROC) $< charmap.txt | $(CPP) -I include - | $(AS) $(ASFLAGS) -o $@
|
||||
$(PREPROC) $< charmap.txt | $(CPP) -I include - | $(PREPROC) -ie $< charmap.txt | $(AS) $(ASFLAGS) -o $@
|
||||
|
||||
$(MAPS_DIR)/%/header.inc: $(MAPS_DIR)/%/map.json
|
||||
$(MAPJSON) map emerald $< $(LAYOUTS_DIR)/layouts.json
|
||||
$(MAPS_DIR)/%/events.inc: $(MAPS_DIR)/%/header.inc ;
|
||||
$(MAPS_DIR)/%/connections.inc: $(MAPS_DIR)/%/events.inc ;
|
||||
|
||||
$(MAPS_DIR)/groups.inc: $(MAPS_DIR)/map_groups.json
|
||||
$(MAPJSON) groups emerald $<
|
||||
$(MAPS_DIR)/connections.inc: $(MAPS_DIR)/groups.inc ;
|
||||
$(MAPS_DIR)/events.inc: $(MAPS_DIR)/connections.inc ;
|
||||
$(MAPS_DIR)/headers.inc: $(MAPS_DIR)/events.inc ;
|
||||
include/constants/map_groups.h: $(MAPS_DIR)/headers.inc ;
|
||||
$(MAPS_OUTDIR)/%/header.inc $(MAPS_OUTDIR)/%/events.inc $(MAPS_OUTDIR)/%/connections.inc: $(MAPS_DIR)/%/map.json
|
||||
$(MAPJSON) map emerald $< $(LAYOUTS_DIR)/layouts.json $(@D)
|
||||
|
||||
$(LAYOUTS_DIR)/layouts.inc: $(LAYOUTS_DIR)/layouts.json
|
||||
$(MAPJSON) layouts emerald $<
|
||||
$(LAYOUTS_DIR)/layouts_table.inc: $(LAYOUTS_DIR)/layouts.inc ;
|
||||
include/constants/layouts.h: $(LAYOUTS_DIR)/layouts_table.inc ;
|
||||
$(MAPS_OUTDIR)/connections.inc $(MAPS_OUTDIR)/groups.inc $(MAPS_OUTDIR)/events.inc $(MAPS_OUTDIR)/headers.inc $(INCLUDECONSTS_OUTDIR)/map_groups.h: $(MAPS_DIR)/map_groups.json
|
||||
$(MAPJSON) groups emerald $< $(MAPS_OUTDIR) $(INCLUDECONSTS_OUTDIR)
|
||||
|
||||
$(LAYOUTS_OUTDIR)/layouts.inc $(LAYOUTS_OUTDIR)/layouts_table.inc $(INCLUDECONSTS_OUTDIR)/layouts.h: $(LAYOUTS_DIR)/layouts.json
|
||||
$(MAPJSON) layouts emerald $< $(LAYOUTS_OUTDIR) $(INCLUDECONSTS_OUTDIR)
|
||||
|
||||
@ -1119,16 +1119,16 @@ static void Cmd_get_type(void)
|
||||
switch (typeVar)
|
||||
{
|
||||
case AI_TYPE1_USER: // AI user primary type
|
||||
AI_THINKING_STRUCT->funcResult = gBattleMons[sBattler_AI].type1;
|
||||
AI_THINKING_STRUCT->funcResult = gBattleMons[sBattler_AI].types[0];
|
||||
break;
|
||||
case AI_TYPE1_TARGET: // target primary type
|
||||
AI_THINKING_STRUCT->funcResult = gBattleMons[gBattlerTarget].type1;
|
||||
AI_THINKING_STRUCT->funcResult = gBattleMons[gBattlerTarget].types[0];
|
||||
break;
|
||||
case AI_TYPE2_USER: // AI user secondary type
|
||||
AI_THINKING_STRUCT->funcResult = gBattleMons[sBattler_AI].type2;
|
||||
AI_THINKING_STRUCT->funcResult = gBattleMons[sBattler_AI].types[1];
|
||||
break;
|
||||
case AI_TYPE2_TARGET: // target secondary type
|
||||
AI_THINKING_STRUCT->funcResult = gBattleMons[gBattlerTarget].type2;
|
||||
AI_THINKING_STRUCT->funcResult = gBattleMons[gBattlerTarget].types[1];
|
||||
break;
|
||||
case AI_TYPE_MOVE: // type of move being pointed to
|
||||
AI_THINKING_STRUCT->funcResult = gBattleMoves[AI_THINKING_STRUCT->moveConsidered].type;
|
||||
@ -1392,7 +1392,7 @@ static void Cmd_get_ability(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
AI_THINKING_STRUCT->funcResult = gSpeciesInfo[gBattleMons[battlerId].species].abilities[1]; // AI can't actually reach this part since no pokemon has ability 2 and no ability 1.
|
||||
AI_THINKING_STRUCT->funcResult = gSpeciesInfo[gBattleMons[battlerId].species].abilities[1]; // AI can't actually reach this part since no Pokémon has ability 2 and no ability 1.
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -1445,7 +1445,7 @@ static void Cmd_check_ability(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
ability = gSpeciesInfo[gBattleMons[battlerId].species].abilities[1]; // AI can't actually reach this part since no pokemon has ability 2 and no ability 1.
|
||||
ability = gSpeciesInfo[gBattleMons[battlerId].species].abilities[1]; // AI can't actually reach this part since no Pokémon has ability 2 and no ability 1.
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -1457,9 +1457,9 @@ static void Cmd_check_ability(void)
|
||||
if (ability == 0)
|
||||
AI_THINKING_STRUCT->funcResult = 2; // Unable to answer.
|
||||
else if (ability == gAIScriptPtr[2])
|
||||
AI_THINKING_STRUCT->funcResult = 1; // Pokemon has the ability we wanted to check.
|
||||
AI_THINKING_STRUCT->funcResult = 1; // Pokémon has the ability we wanted to check.
|
||||
else
|
||||
AI_THINKING_STRUCT->funcResult = 0; // Pokemon doesn't have the ability we wanted to check.
|
||||
AI_THINKING_STRUCT->funcResult = 0; // Pokémon doesn't have the ability we wanted to check.
|
||||
|
||||
gAIScriptPtr += 3;
|
||||
}
|
||||
@ -1527,7 +1527,7 @@ static void Cmd_if_type_effectiveness(void)
|
||||
|
||||
// TypeCalc does not assign to gMoveResultFlags, Cmd_typecalc does
|
||||
// This makes the check for gMoveResultFlags below always fail
|
||||
// This is how you get the "dual non-immunity" glitch, where AI
|
||||
// This is how you get the "dual non-immunity" glitch, where AI
|
||||
// will use ineffective moves on immune pokémon if the second type
|
||||
// has a non-neutral, non-immune effectiveness
|
||||
#ifdef BUGFIX
|
||||
|
||||
@ -51,7 +51,7 @@ static bool8 ShouldSwitchIfWonderGuard(void)
|
||||
if (gBattleMons[GetBattlerAtPosition(opposingPosition)].ability != ABILITY_WONDER_GUARD)
|
||||
return FALSE;
|
||||
|
||||
// Check if Pokemon has a super effective move.
|
||||
// Check if Pokémon has a super effective move.
|
||||
for (opposingBattler = GetBattlerAtPosition(opposingPosition), i = 0; i < MAX_MON_MOVES; i++)
|
||||
{
|
||||
move = gBattleMons[gActiveBattler].moves[i];
|
||||
@ -81,7 +81,7 @@ static bool8 ShouldSwitchIfWonderGuard(void)
|
||||
else
|
||||
party = gEnemyParty;
|
||||
|
||||
// Find a Pokemon in the party that has a super effective move.
|
||||
// Find a Pokémon in the party that has a super effective move.
|
||||
for (i = firstId; i < lastId; i++)
|
||||
{
|
||||
if (GetMonData(&party[i], MON_DATA_HP) == 0)
|
||||
@ -113,7 +113,7 @@ static bool8 ShouldSwitchIfWonderGuard(void)
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE; // There is not a single Pokemon in the party that has a super effective move against a mon with Wonder Guard.
|
||||
return FALSE; // There is not a single Pokémon in the party that has a super effective move against a mon with Wonder Guard.
|
||||
}
|
||||
|
||||
static bool8 FindMonThatAbsorbsOpponentsMove(void)
|
||||
@ -706,8 +706,8 @@ u8 GetMostSuitableMonToSwitchInto(void)
|
||||
u8 type1 = gSpeciesInfo[species].types[0];
|
||||
u8 type2 = gSpeciesInfo[species].types[1];
|
||||
u8 typeDmg = TYPE_MUL_NORMAL;
|
||||
ModulateByTypeEffectiveness(gBattleMons[opposingBattler].type1, type1, type2, &typeDmg);
|
||||
ModulateByTypeEffectiveness(gBattleMons[opposingBattler].type2, type1, type2, &typeDmg);
|
||||
ModulateByTypeEffectiveness(gBattleMons[opposingBattler].types[0], type1, type2, &typeDmg);
|
||||
ModulateByTypeEffectiveness(gBattleMons[opposingBattler].types[1], type1, type2, &typeDmg);
|
||||
|
||||
/* Possible bug: this comparison gives the type that takes the most damage, when
|
||||
a "good" AI would want to select the type that takes the least damage. Unknown if this
|
||||
|
||||
13
src/battle_anim_effects_2.c
Executable file → Normal file
@ -3673,7 +3673,6 @@ static void AnimTask_UproarDistortion_Step(u8 taskId)
|
||||
|
||||
static void AnimJaggedMusicNote(struct Sprite *sprite)
|
||||
{
|
||||
int var1;
|
||||
u8 battler = !gBattleAnimArgs[0] ? gBattleAnimAttacker : gBattleAnimTarget;
|
||||
|
||||
if (GetBattlerSide(battler) == B_SIDE_OPPONENT)
|
||||
@ -3684,16 +3683,8 @@ static void AnimJaggedMusicNote(struct Sprite *sprite)
|
||||
sprite->data[0] = 0;
|
||||
sprite->data[1] = (u16)sprite->x << 3;
|
||||
sprite->data[2] = (u16)sprite->y << 3;
|
||||
|
||||
var1 = gBattleAnimArgs[1] << 3;
|
||||
if (var1 < 0)
|
||||
var1 += 7;
|
||||
sprite->data[3] = var1 >> 3;
|
||||
|
||||
var1 = gBattleAnimArgs[2] << 3;
|
||||
if (var1 < 0)
|
||||
var1 += 7;
|
||||
sprite->data[4] = var1 >> 3;
|
||||
sprite->data[3] = (gBattleAnimArgs[1] << 3) / 8;
|
||||
sprite->data[4] = (gBattleAnimArgs[2] << 3) / 8;
|
||||
|
||||
sprite->oam.tileNum += gBattleAnimArgs[3] * 16;
|
||||
sprite->callback = AnimJaggedMusicNote_Step;
|
||||
|
||||
@ -493,7 +493,7 @@ static void AnimFistOrFootRandomPos(struct Sprite *sprite)
|
||||
y *= -1;
|
||||
|
||||
if (GET_BATTLER_SIDE2(battler) == B_SIDE_PLAYER)
|
||||
y += 0xFFF0;
|
||||
y -= 16;
|
||||
|
||||
sprite->x += x;
|
||||
sprite->y += y;
|
||||
|
||||
@ -628,11 +628,13 @@ static void AnimTask_SpiteTargetShadow_Step1(u8 taskId)
|
||||
task->data[3] = 16;
|
||||
task->data[13] = GetAnimBattlerSpriteId(ANIM_TARGET);
|
||||
task->data[4] = OBJ_PLTT_ID2(gSprites[task->data[13]].oam.paletteNum);
|
||||
if (position == 1) {
|
||||
if (position == 1)
|
||||
{
|
||||
u16 mask = DISPCNT_BG1_ON;
|
||||
mask2 = mask;
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
u16 mask = DISPCNT_BG2_ON;
|
||||
mask2 = mask;
|
||||
}
|
||||
|
||||
@ -535,7 +535,7 @@ static void SlideMonToOriginalPos_Step(struct Sprite *sprite)
|
||||
}
|
||||
|
||||
// Linearly translates a mon to a target offset. The horizontal offset
|
||||
// is mirrored for the opponent's pokemon, and the vertical offset
|
||||
// is mirrored for the opponent's Pokémon, and the vertical offset
|
||||
// is only mirrored if arg 3 is set to 1.
|
||||
// arg 0: 0 = attacker, 1 = target
|
||||
// arg 1: target x pixel offset
|
||||
|
||||
@ -77,7 +77,7 @@ static const u8 sCastformBackSpriteYCoords[NUM_CASTFORM_FORMS] =
|
||||
[CASTFORM_ICE] = 0,
|
||||
};
|
||||
|
||||
// Placeholders for pokemon sprites to be created for a move animation effect (e.g. Role Play / Snatch)
|
||||
// Placeholders for Pokémon sprites to be created for a move animation effect (e.g. Role Play / Snatch)
|
||||
#define TAG_MOVE_EFFECT_MON_1 55125
|
||||
#define TAG_MOVE_EFFECT_MON_2 55126
|
||||
|
||||
@ -2085,7 +2085,7 @@ u8 GetBattlerSpriteBGPriorityRank(u8 battlerId)
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Create pokemon sprite to be used for a move animation effect (e.g. Role Play / Snatch)
|
||||
// Create Pokémon sprite to be used for a move animation effect (e.g. Role Play / Snatch)
|
||||
u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, bool32 ignoreDeoxysForm)
|
||||
{
|
||||
u8 spriteId;
|
||||
|
||||
@ -59,15 +59,7 @@ static const union AnimCmd sAnim_SludgeBombHit[] =
|
||||
static const union AnimCmd *const sAnims_PoisonProjectile[] =
|
||||
{
|
||||
sAnim_PoisonProjectile,
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sAnims_AcidPoisonDroplet[] =
|
||||
{
|
||||
sAnim_AcidPoisonDroplet,
|
||||
};
|
||||
|
||||
static const union AnimCmd *const sAnims_SludgeBombHit[] =
|
||||
{
|
||||
sAnim_SludgeBombHit,
|
||||
};
|
||||
|
||||
@ -122,7 +114,7 @@ const struct SpriteTemplate gSludgeBombHitParticleSpriteTemplate =
|
||||
.tileTag = ANIM_TAG_POISON_BUBBLE,
|
||||
.paletteTag = ANIM_TAG_POISON_BUBBLE,
|
||||
.oam = &gOamData_AffineNormal_ObjNormal_16x16,
|
||||
.anims = sAnims_SludgeBombHit,
|
||||
.anims = &sAnims_PoisonProjectile[2],
|
||||
.images = NULL,
|
||||
.affineAnims = sAffineAnims_SludgeBombHit,
|
||||
.callback = AnimSludgeBombHitParticle,
|
||||
@ -145,7 +137,7 @@ const struct SpriteTemplate gAcidPoisonDropletSpriteTemplate =
|
||||
.tileTag = ANIM_TAG_POISON_BUBBLE,
|
||||
.paletteTag = ANIM_TAG_POISON_BUBBLE,
|
||||
.oam = &gOamData_AffineDouble_ObjNormal_16x16,
|
||||
.anims = sAnims_AcidPoisonDroplet,
|
||||
.anims = &sAnims_PoisonProjectile[1],
|
||||
.images = NULL,
|
||||
.affineAnims = gAffineAnims_Droplet,
|
||||
.callback = AnimAcidPoisonDroplet,
|
||||
|
||||
@ -558,7 +558,6 @@ void AnimTask_Rollout(u8 taskId)
|
||||
{
|
||||
u16 var0, var1, var2, var3;
|
||||
u8 rolloutCounter;
|
||||
int var5;
|
||||
s16 pan1, pan2;
|
||||
struct Task *task;
|
||||
|
||||
@ -582,13 +581,7 @@ void AnimTask_Rollout(u8 taskId)
|
||||
task->data[11] = 0;
|
||||
task->data[9] = 0;
|
||||
task->data[12] = 1;
|
||||
|
||||
var5 = task->data[8];
|
||||
if (var5 < 0)
|
||||
var5 += 7;
|
||||
|
||||
task->data[10] = (var5 >> 3) - 1;
|
||||
|
||||
task->data[10] = (task->data[8] / 8) - 1;
|
||||
task->data[2] = var0 * 8;
|
||||
task->data[3] = var1 * 8;
|
||||
task->data[4] = ((var2 - var0) * 8) / task->data[8];
|
||||
|
||||
@ -529,7 +529,7 @@ static void LinkOpponentBufferExecCompleted(void)
|
||||
|
||||
static void LinkOpponentHandleGetMonData(void)
|
||||
{
|
||||
u8 monData[sizeof(struct Pokemon) * 2 + 56]; // this allows to get full data of two pokemon, trying to get more will result in overwriting data
|
||||
u8 monData[sizeof(struct Pokemon) * 2 + 56]; // this allows to get full data of two Pokémon, trying to get more will result in overwriting data
|
||||
u32 size = 0;
|
||||
u8 monToCheck;
|
||||
s32 i;
|
||||
|
||||
@ -423,7 +423,7 @@ static void CompleteOnFinishedBattleAnimation(void)
|
||||
|
||||
static void LinkPartnerHandleGetMonData(void)
|
||||
{
|
||||
u8 monData[sizeof(struct Pokemon) * 2 + 56]; // this allows to get full data of two pokemon, trying to get more will result in overwriting data
|
||||
u8 monData[sizeof(struct Pokemon) * 2 + 56]; // this allows to get full data of two Pokémon, trying to get more will result in overwriting data
|
||||
u32 size = 0;
|
||||
u8 monToCheck;
|
||||
s32 i;
|
||||
|
||||
@ -534,7 +534,7 @@ static void OpponentBufferExecCompleted(void)
|
||||
|
||||
static void OpponentHandleGetMonData(void)
|
||||
{
|
||||
u8 monData[sizeof(struct Pokemon) * 2 + 56]; // this allows to get full data of two pokemon, trying to get more will result in overwriting data
|
||||
u8 monData[sizeof(struct Pokemon) * 2 + 56]; // this allows to get full data of two Pokémon, trying to get more will result in overwriting data
|
||||
u32 size = 0;
|
||||
u8 monToCheck;
|
||||
s32 i;
|
||||
@ -2007,7 +2007,7 @@ static void OpponentHandleEndLinkBattle(void)
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_LINK && !(gBattleTypeFlags & BATTLE_TYPE_IS_MASTER))
|
||||
{
|
||||
gMain.inBattle = 0;
|
||||
gMain.inBattle = FALSE;
|
||||
gMain.callback1 = gPreBattleCallback1;
|
||||
SetMainCallback2(gMain.savedCallback);
|
||||
}
|
||||
|
||||
@ -485,7 +485,7 @@ static void HandleInputChooseMove(void)
|
||||
PlaySE(SE_SELECT);
|
||||
if (moveInfo->moves[gMoveSelectionCursor[gActiveBattler]] == MOVE_CURSE)
|
||||
{
|
||||
if (moveInfo->monType1 != TYPE_GHOST && moveInfo->monType2 != TYPE_GHOST)
|
||||
if (moveInfo->monTypes[0] != TYPE_GHOST && moveInfo->monTypes[1] != TYPE_GHOST)
|
||||
moveTarget = MOVE_TARGET_USER;
|
||||
else
|
||||
moveTarget = MOVE_TARGET_SELECTED;
|
||||
@ -981,12 +981,12 @@ static void Intro_TryShinyAnimShowHealthbox(void)
|
||||
bool32 bgmRestored = FALSE;
|
||||
bool32 battlerAnimsDone = FALSE;
|
||||
|
||||
// Start shiny animation if applicable for 1st pokemon
|
||||
// Start shiny animation if applicable for 1st Pokémon
|
||||
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].triedShinyMonAnim
|
||||
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive)
|
||||
TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
|
||||
|
||||
// Start shiny animation if applicable for 2nd pokemon
|
||||
// Start shiny animation if applicable for 2nd Pokémon
|
||||
if (!gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].triedShinyMonAnim
|
||||
&& !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].ballAnimActive)
|
||||
TryShinyAnimation(BATTLE_PARTNER(gActiveBattler), &gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)]]);
|
||||
@ -1581,7 +1581,7 @@ static void PrintLinkStandbyMsg(void)
|
||||
|
||||
static void PlayerHandleGetMonData(void)
|
||||
{
|
||||
u8 monData[sizeof(struct Pokemon) * 2 + 56]; // this allows to get full data of two pokemon, trying to get more will result in overwriting data
|
||||
u8 monData[sizeof(struct Pokemon) * 2 + 56]; // this allows to get full data of two Pokémon, trying to get more will result in overwriting data
|
||||
u32 size = 0;
|
||||
u8 monToCheck;
|
||||
s32 i;
|
||||
|
||||
@ -607,7 +607,7 @@ static void CompleteOnFinishedBattleAnimation(void)
|
||||
|
||||
static void PlayerPartnerHandleGetMonData(void)
|
||||
{
|
||||
u8 monData[sizeof(struct Pokemon) * 2 + 56]; // this allows to get full data of two pokemon, trying to get more will result in overwriting data
|
||||
u8 monData[sizeof(struct Pokemon) * 2 + 56]; // this allows to get full data of two Pokémon, trying to get more will result in overwriting data
|
||||
u32 size = 0;
|
||||
u8 monToCheck;
|
||||
s32 i;
|
||||
|
||||
@ -515,7 +515,7 @@ static void RecordedOpponentBufferExecCompleted(void)
|
||||
|
||||
static void RecordedOpponentHandleGetMonData(void)
|
||||
{
|
||||
u8 monData[sizeof(struct Pokemon) * 2 + 56]; // this allows to get full data of two pokemon, trying to get more will result in overwriting data
|
||||
u8 monData[sizeof(struct Pokemon) * 2 + 56]; // this allows to get full data of two Pokémon, trying to get more will result in overwriting data
|
||||
u32 size = 0;
|
||||
u8 monToCheck;
|
||||
s32 i;
|
||||
|
||||
@ -498,7 +498,7 @@ static void CompleteOnFinishedBattleAnimation(void)
|
||||
|
||||
static void RecordedPlayerHandleGetMonData(void)
|
||||
{
|
||||
u8 monData[sizeof(struct Pokemon) * 2 + 56]; // this allows to get full data of two pokemon, trying to get more will result in overwriting data
|
||||
u8 monData[sizeof(struct Pokemon) * 2 + 56]; // this allows to get full data of two Pokémon, trying to get more will result in overwriting data
|
||||
u32 size = 0;
|
||||
u8 monToCheck;
|
||||
s32 i;
|
||||
|
||||
@ -425,7 +425,7 @@ static void UNUSED CompleteOnFinishedStatusAnimation(void)
|
||||
|
||||
static void WallyHandleGetMonData(void)
|
||||
{
|
||||
u8 monData[sizeof(struct Pokemon) * 2 + 56]; // this allows to get full data of two pokemon, trying to get more will result in overwriting data
|
||||
u8 monData[sizeof(struct Pokemon) * 2 + 56]; // this allows to get full data of two Pokémon, trying to get more will result in overwriting data
|
||||
u32 size = 0;
|
||||
u8 monToCheck;
|
||||
s32 i;
|
||||
|
||||
@ -2588,7 +2588,7 @@ static void CreateDomeOpponentMon(u8 monPartyId, u16 tournamentTrainerId, u8 tou
|
||||
#ifdef BUGFIX
|
||||
u8 fixedIv = GetDomeTrainerMonIvs(DOME_TRAINERS[tournamentTrainerId].trainerId);
|
||||
#else
|
||||
u8 fixedIv = GetDomeTrainerMonIvs(tournamentTrainerId); // BUG: Using the wrong ID. As a result, all Pokemon have ivs of 3.
|
||||
u8 fixedIv = GetDomeTrainerMonIvs(tournamentTrainerId); // BUG: Using the wrong ID. As a result, all Pokémon have ivs of 3.
|
||||
#endif
|
||||
u8 level = SetFacilityPtrsGetLevel();
|
||||
CreateMonWithEVSpreadNatureOTID(&gEnemyParty[monPartyId],
|
||||
@ -2650,13 +2650,13 @@ static void CreateDomeOpponentMons(u16 tournamentTrainerId)
|
||||
}
|
||||
}
|
||||
|
||||
// Returns a bitmask representing which 2 of the trainer's 3 pokemon to select.
|
||||
// Returns a bitmask representing which 2 of the trainer's 3 Pokémon to select.
|
||||
// The choice is calculated solely depending on the type effectiveness of their
|
||||
// movesets against the player's pokemon.
|
||||
// movesets against the player's Pokémon.
|
||||
// There is a 50% chance of either a "good" or "bad" selection mode being used.
|
||||
// In the good mode movesets are preferred which are more effective against the
|
||||
// player, and in the bad mode the opposite is true. If all 3 pokemon tie, the
|
||||
// other mode will be tried. If they tie again, the pokemon selection is random.
|
||||
// player, and in the bad mode the opposite is true. If all 3 Pokémon tie, the
|
||||
// other mode will be tried. If they tie again, the Pokémon selection is random.
|
||||
int GetDomeTrainerSelectedMons(u16 tournamentTrainerId)
|
||||
{
|
||||
int selectedMonBits;
|
||||
@ -4837,7 +4837,7 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo)
|
||||
if (lost[1])
|
||||
gSprites[sInfoCard->spriteIds[1 + arrId]].oam.paletteNum = 3;
|
||||
|
||||
// Draw left trainer's pokemon icons.
|
||||
// Draw left trainer's Pokémon icons.
|
||||
for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
|
||||
{
|
||||
if (trainerIds[0] == TRAINER_PLAYER)
|
||||
@ -4877,7 +4877,7 @@ static void DisplayMatchInfoOnCard(u8 flags, u8 matchNo)
|
||||
}
|
||||
}
|
||||
|
||||
// Draw right trainer's pokemon icons.
|
||||
// Draw right trainer's Pokémon icons.
|
||||
for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
|
||||
{
|
||||
if (trainerIds[1] == TRAINER_PLAYER)
|
||||
@ -5228,7 +5228,7 @@ static u16 GetWinningMove(int winnerTournamentId, int loserTournamentId, u8 roun
|
||||
int movePower = 0;
|
||||
SetFacilityPtrsGetLevel();
|
||||
|
||||
// Calc move points of all 4 moves for all 3 pokemon hitting all 3 target mons.
|
||||
// Calc move points of all 4 moves for all 3 Pokémon hitting all 3 target mons.
|
||||
for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
|
||||
{
|
||||
for (j = 0; j < MAX_MON_MOVES; j++)
|
||||
|
||||
@ -337,7 +337,7 @@ static void GenerateOpponentMons(void)
|
||||
if (gFacilityTrainerMons[monId].species == SPECIES_UNOWN)
|
||||
continue;
|
||||
|
||||
// Ensure none of the opponent's pokemon are the same as the potential rental pokemon for the player
|
||||
// Ensure none of the opponent's Pokémon are the same as the potential rental Pokémon for the player
|
||||
for (j = 0; j < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.rentalMons); j++)
|
||||
{
|
||||
if (gFacilityTrainerMons[monId].species == gFacilityTrainerMons[gSaveBlock2Ptr->frontier.rentalMons[j].monId].species)
|
||||
@ -346,7 +346,7 @@ static void GenerateOpponentMons(void)
|
||||
if (j != (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.rentalMons))
|
||||
continue;
|
||||
|
||||
// "High tier" pokemon are only allowed on open level mode
|
||||
// "High tier" Pokémon are only allowed on open level mode
|
||||
if (lvlMode == FRONTIER_LVL_50 && monId > FRONTIER_MONS_HIGH_TIER)
|
||||
continue;
|
||||
|
||||
@ -554,7 +554,7 @@ static void GenerateInitialRentalMons(void)
|
||||
i = 0;
|
||||
while (i != PARTY_SIZE)
|
||||
{
|
||||
if (i < rentalRank) // The more times the player has rented, the more initial rentals are generated from a better set of pokemon
|
||||
if (i < rentalRank) // The more times the player has rented, the more initial rentals are generated from a better set of Pokémon
|
||||
monId = GetFactoryMonId(factoryLvlMode, challengeNum, TRUE);
|
||||
else
|
||||
monId = GetFactoryMonId(factoryLvlMode, challengeNum, FALSE);
|
||||
@ -562,7 +562,7 @@ static void GenerateInitialRentalMons(void)
|
||||
if (gFacilityTrainerMons[monId].species == SPECIES_UNOWN)
|
||||
continue;
|
||||
|
||||
// Cannot have two pokemon of the same species.
|
||||
// Cannot have two Pokémon of the same species.
|
||||
for (j = firstMonId; j < firstMonId + i; j++)
|
||||
{
|
||||
u16 existingMonId = monIds[j];
|
||||
|
||||
@ -32,15 +32,15 @@
|
||||
#include "constants/songs.h"
|
||||
#include "constants/rgb.h"
|
||||
|
||||
// Select_ refers to the first Pokemon selection screen where you choose your initial 3 rental Pokemon.
|
||||
// Swap_ refers to the subsequent selection screens where you can swap a Pokemon with one from the beaten trainer
|
||||
// Select_ refers to the first Pokémon selection screen where you choose your initial 3 rental Pokémon.
|
||||
// Swap_ refers to the subsequent selection screens where you can swap a Pokémon with one from the beaten trainer
|
||||
|
||||
// Note that, generally, "Action" will refer to the immediate actions that can be taken on each screen,
|
||||
// i.e. selecting a pokemon or selecting the Cancel button
|
||||
// i.e. selecting a Pokémon or selecting the Cancel button
|
||||
// The "Options menu" will refer to the popup menu that shows when some actions have been selected
|
||||
|
||||
#define SWAP_PLAYER_SCREEN 0 // The screen where the player selects which of their pokemon to swap away
|
||||
#define SWAP_ENEMY_SCREEN 1 // The screen where the player selects which new pokemon from the defeated party to swap for
|
||||
#define SWAP_PLAYER_SCREEN 0 // The screen where the player selects which of their Pokémon to swap away
|
||||
#define SWAP_ENEMY_SCREEN 1 // The screen where the player selects which new Pokémon from the defeated party to swap for
|
||||
|
||||
#define SELECTABLE_MONS_COUNT 6
|
||||
|
||||
@ -89,7 +89,7 @@ struct FactorySelectableMon
|
||||
{
|
||||
u16 monId;
|
||||
u16 ballSpriteId;
|
||||
u8 selectedId; // 0 - not selected, 1 - first pokemon, 2 - second pokemon, 3 - third pokemon
|
||||
u8 selectedId; // 0 - not selected, 1 - first Pokémon, 2 - second Pokémon, 3 - third Pokémon
|
||||
struct Pokemon monData;
|
||||
};
|
||||
|
||||
@ -1060,7 +1060,7 @@ static void SpriteCB_Pokeball(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->oam.paletteNum == IndexOfSpritePaletteTag(PALTAG_BALL_SELECTED))
|
||||
{
|
||||
// Pokeball selected, do rocking animation
|
||||
// Poké Ball selected, do rocking animation
|
||||
if (sprite->animEnded)
|
||||
{
|
||||
if (sprite->data[0] != 0)
|
||||
@ -1084,7 +1084,7 @@ static void SpriteCB_Pokeball(struct Sprite *sprite)
|
||||
}
|
||||
else
|
||||
{
|
||||
// Pokeball not selected, remain still
|
||||
// Poké Ball not selected, remain still
|
||||
StartSpriteAnimIfDifferent(sprite, 0);
|
||||
}
|
||||
}
|
||||
@ -1521,7 +1521,7 @@ static void Select_Task_Exit(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
// Handles the Yes/No prompt when confirming the 3 selected rental pokemon
|
||||
// Handles the Yes/No prompt when confirming the 3 selected rental Pokémon
|
||||
static void Select_Task_HandleYesNo(u8 taskId)
|
||||
{
|
||||
if (sFactorySelectScreen->monPicAnimating == TRUE)
|
||||
@ -1543,14 +1543,14 @@ static void Select_Task_HandleYesNo(u8 taskId)
|
||||
PlaySE(SE_SELECT);
|
||||
if (sFactorySelectScreen->yesNoCursorPos == 0)
|
||||
{
|
||||
// Selected Yes, confirmed selected pokemon
|
||||
// Selected Yes, confirmed selected Pokémon
|
||||
Select_HideChosenMons();
|
||||
gTasks[taskId].tState = 0;
|
||||
gTasks[taskId].func = Select_Task_Exit;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Selected No, continue choosing pokemon
|
||||
// Selected No, continue choosing Pokémon
|
||||
Select_ErasePopupMenu(SELECT_WIN_YES_NO);
|
||||
Select_DeclineChosenMons();
|
||||
sFactorySelectScreen->fadeSpeciesNameActive = TRUE;
|
||||
@ -1560,7 +1560,7 @@ static void Select_Task_HandleYesNo(u8 taskId)
|
||||
}
|
||||
else if (JOY_NEW(B_BUTTON))
|
||||
{
|
||||
// Pressed B, Continue choosing pokemon
|
||||
// Pressed B, Continue choosing Pokémon
|
||||
PlaySE(SE_SELECT);
|
||||
Select_ErasePopupMenu(SELECT_WIN_YES_NO);
|
||||
Select_DeclineChosenMons();
|
||||
@ -1582,7 +1582,7 @@ static void Select_Task_HandleYesNo(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
// Handles the popup menu that shows when a pokemon is selected
|
||||
// Handles the popup menu that shows when a Pokémon is selected
|
||||
static void Select_Task_HandleMenu(u8 taskId)
|
||||
{
|
||||
switch (gTasks[taskId].tState)
|
||||
@ -2415,7 +2415,7 @@ static void Swap_Task_Exit(u8 taskId)
|
||||
{
|
||||
case 0:
|
||||
// Set return value for script
|
||||
// TRUE if player kept their current pokemon
|
||||
// TRUE if player kept their current Pokémon
|
||||
if (sFactorySwapScreen->monSwapped == TRUE)
|
||||
{
|
||||
gTasks[taskId].tState++;
|
||||
@ -2630,7 +2630,7 @@ static void Swap_Task_HandleMenu(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
// Handles input on the two main swap screens (choosing a current pokeon to get rid of, and choosing a new pokemon to receive)
|
||||
// Handles input on the two main swap screens (choosing a current pokeon to get rid of, and choosing a new Pokémon to receive)
|
||||
static void Swap_Task_HandleChooseMons(u8 taskId)
|
||||
{
|
||||
switch (gTasks[taskId].tState)
|
||||
@ -2645,7 +2645,7 @@ static void Swap_Task_HandleChooseMons(u8 taskId)
|
||||
case STATE_CHOOSE_MONS_HANDLE_INPUT:
|
||||
if (JOY_NEW(A_BUTTON))
|
||||
{
|
||||
// Run whatever action is currently selected (a pokeball, the Cancel button, etc.)
|
||||
// Run whatever action is currently selected (a Poké Ball, the Cancel button, etc.)
|
||||
PlaySE(SE_SELECT);
|
||||
sFactorySwapScreen->fadeSpeciesNameActive = FALSE;
|
||||
Swap_PrintMonSpeciesAtFade();
|
||||
@ -3553,7 +3553,7 @@ static void Swap_HandleActionCursorChange(u8 cursorId)
|
||||
{
|
||||
if (cursorId < FRONTIER_PARTY_SIZE)
|
||||
{
|
||||
// Cursor is on one of the pokemon
|
||||
// Cursor is on one of the Pokémon
|
||||
gSprites[sFactorySwapScreen->cursorSpriteId].invisible = FALSE;
|
||||
Swap_HideActionButtonHighlights();
|
||||
gSprites[sFactorySwapScreen->cursorSpriteId].x = gSprites[sFactorySwapScreen->ballSpriteIds[cursorId]].x;
|
||||
|
||||
@ -105,7 +105,7 @@ void FreeBattleSpritesData(void)
|
||||
FREE_AND_SET_NULL(gBattleSpritesDataPtr);
|
||||
}
|
||||
|
||||
// Pokemon chooses move to use in Battle Palace rather than player
|
||||
// Pokémon chooses move to use in Battle Palace rather than player
|
||||
u16 ChooseMoveAndTargetInBattlePalace(void)
|
||||
{
|
||||
s32 i, var1, var2;
|
||||
@ -165,7 +165,7 @@ u16 ChooseMoveAndTargetInBattlePalace(void)
|
||||
chosenMoveId = BattleAI_ChooseMoveOrAction();
|
||||
}
|
||||
|
||||
// If no moves matched the selected group, pick a new move from groups the pokemon has
|
||||
// If no moves matched the selected group, pick a new move from groups the Pokémon has
|
||||
// In this case the AI is not checked again, so the choice may be worse
|
||||
// If a move is chosen this way, there's a 50% chance that it will be unable to use it anyway
|
||||
if (chosenMoveId == -1)
|
||||
@ -264,7 +264,7 @@ u16 ChooseMoveAndTargetInBattlePalace(void)
|
||||
|
||||
if (moveInfo->moves[chosenMoveId] == MOVE_CURSE)
|
||||
{
|
||||
if (moveInfo->monType1 != TYPE_GHOST && moveInfo->monType2 != TYPE_GHOST)
|
||||
if (moveInfo->monTypes[0] != TYPE_GHOST && moveInfo->monTypes[1] != TYPE_GHOST)
|
||||
moveTarget = MOVE_TARGET_USER;
|
||||
else
|
||||
moveTarget = MOVE_TARGET_SELECTED;
|
||||
@ -357,7 +357,7 @@ static u16 GetBattlePalaceTarget(void)
|
||||
return BATTLE_OPPOSITE(gActiveBattler) << 8;
|
||||
}
|
||||
|
||||
// Wait for the pokemon to finish appearing out from the pokeball on send out
|
||||
// Wait for the Pokémon to finish appearing out from the Poké Ball on send out
|
||||
void SpriteCB_WaitForBattlerBallReleaseAnim(struct Sprite *sprite)
|
||||
{
|
||||
u8 spriteId = sprite->data[1];
|
||||
|
||||
@ -196,12 +196,12 @@ static void BattleIntroSlide1(u8 taskId)
|
||||
{
|
||||
if (gTasks[taskId].tTerrain == BATTLE_TERRAIN_LONG_GRASS)
|
||||
{
|
||||
if (gBattle_BG1_Y != 0xFFB0)
|
||||
if (gBattle_BG1_Y != (u16)(-80))
|
||||
gBattle_BG1_Y -= 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gBattle_BG1_Y != 0xFFC8)
|
||||
if (gBattle_BG1_Y != (u16)(-56))
|
||||
gBattle_BG1_Y -= 1;
|
||||
}
|
||||
}
|
||||
|
||||
@ -3343,8 +3343,8 @@ void FaintClearSetData(void)
|
||||
|
||||
gBattleResources->flags->flags[gActiveBattler] = 0;
|
||||
|
||||
gBattleMons[gActiveBattler].type1 = gSpeciesInfo[gBattleMons[gActiveBattler].species].types[0];
|
||||
gBattleMons[gActiveBattler].type2 = gSpeciesInfo[gBattleMons[gActiveBattler].species].types[1];
|
||||
gBattleMons[gActiveBattler].types[0] = gSpeciesInfo[gBattleMons[gActiveBattler].species].types[0];
|
||||
gBattleMons[gActiveBattler].types[1] = gSpeciesInfo[gBattleMons[gActiveBattler].species].types[1];
|
||||
|
||||
ClearBattlerMoveHistory(gActiveBattler);
|
||||
ClearBattlerAbilityHistory(gActiveBattler);
|
||||
@ -3411,8 +3411,8 @@ static void BattleIntroDrawTrainersOrMonsSprites(void)
|
||||
for (i = 0; i < sizeof(struct BattlePokemon); i++)
|
||||
ptr[i] = gBattleBufferB[gActiveBattler][4 + i];
|
||||
|
||||
gBattleMons[gActiveBattler].type1 = gSpeciesInfo[gBattleMons[gActiveBattler].species].types[0];
|
||||
gBattleMons[gActiveBattler].type2 = gSpeciesInfo[gBattleMons[gActiveBattler].species].types[1];
|
||||
gBattleMons[gActiveBattler].types[0] = gSpeciesInfo[gBattleMons[gActiveBattler].species].types[0];
|
||||
gBattleMons[gActiveBattler].types[1] = gSpeciesInfo[gBattleMons[gActiveBattler].species].types[1];
|
||||
gBattleMons[gActiveBattler].ability = GetAbilityBySpecies(gBattleMons[gActiveBattler].species, gBattleMons[gActiveBattler].abilityNum);
|
||||
hpOnSwitchout = &gBattleStruct->hpOnSwitchout[GetBattlerSide(gActiveBattler)];
|
||||
*hpOnSwitchout = gBattleMons[gActiveBattler].hp;
|
||||
@ -4173,8 +4173,8 @@ static void HandleTurnActionSelectionState(void)
|
||||
struct ChooseMoveStruct moveInfo;
|
||||
|
||||
moveInfo.species = gBattleMons[gActiveBattler].species;
|
||||
moveInfo.monType1 = gBattleMons[gActiveBattler].type1;
|
||||
moveInfo.monType2 = gBattleMons[gActiveBattler].type2;
|
||||
moveInfo.monTypes[0] = gBattleMons[gActiveBattler].types[0];
|
||||
moveInfo.monTypes[1] = gBattleMons[gActiveBattler].types[1];
|
||||
|
||||
for (i = 0; i < MAX_MON_MOVES; i++)
|
||||
{
|
||||
|
||||
@ -2152,7 +2152,7 @@ void BufferStringBattle(u16 stringID)
|
||||
}
|
||||
}
|
||||
break;
|
||||
case STRINGID_USEDMOVE: // pokemon used a move msg
|
||||
case STRINGID_USEDMOVE: // Pokémon used a move msg
|
||||
ChooseMoveUsedParticle(gBattleTextBuff1); // buff1 doesn't appear in the string, leftover from japanese move names
|
||||
|
||||
if (gBattleMsgDataPtr->currentMove >= MOVES_COUNT)
|
||||
@ -2313,7 +2313,7 @@ u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst)
|
||||
{
|
||||
u32 dstID = 0; // if they used dstID, why not use srcID as well?
|
||||
const u8 *toCpy = NULL;
|
||||
// This buffer may hold either the name of a trainer, pokemon, or item.
|
||||
// This buffer may hold either the name of a trainer, Pokémon, or item.
|
||||
u8 text[max(max(max(32, TRAINER_NAME_LENGTH + 1), POKEMON_NAME_LENGTH + 1), ITEM_NAME_LENGTH)];
|
||||
u8 multiplayerId;
|
||||
s32 i;
|
||||
|
||||
@ -1267,7 +1267,7 @@ static void TryHealMons(u8 healCount)
|
||||
for (i = 0; i < FRONTIER_PARTY_SIZE; i++)
|
||||
indices[i] = i;
|
||||
|
||||
// Only 'healCount' number of pokemon will be healed.
|
||||
// Only 'healCount' number of Pokémon will be healed.
|
||||
// The order in which they're (attempted to be) healed is random,
|
||||
// and determined by performing 10 random swaps to this index array.
|
||||
for (k = 0; k < 10; k++)
|
||||
|
||||
@ -1395,11 +1395,11 @@ static void Cmd_typecalc(void)
|
||||
else if (TYPE_EFFECT_ATK_TYPE(i) == moveType)
|
||||
{
|
||||
// check type1
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type1)
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].types[0])
|
||||
ModulateDmgByType(TYPE_EFFECT_MULTIPLIER(i));
|
||||
// check type2
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type2 &&
|
||||
gBattleMons[gBattlerTarget].type1 != gBattleMons[gBattlerTarget].type2)
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].types[1] &&
|
||||
gBattleMons[gBattlerTarget].types[0] != gBattleMons[gBattlerTarget].types[1])
|
||||
ModulateDmgByType(TYPE_EFFECT_MULTIPLIER(i));
|
||||
}
|
||||
i += 3;
|
||||
@ -1454,14 +1454,14 @@ static void CheckWonderGuardAndLevitate(void)
|
||||
if (TYPE_EFFECT_ATK_TYPE(i) == moveType)
|
||||
{
|
||||
// check no effect
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type1
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].types[0]
|
||||
&& TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_NO_EFFECT)
|
||||
{
|
||||
gMoveResultFlags |= MOVE_RESULT_DOESNT_AFFECT_FOE;
|
||||
gProtectStructs[gBattlerAttacker].targetNotAffected = 1;
|
||||
}
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type2 &&
|
||||
gBattleMons[gBattlerTarget].type1 != gBattleMons[gBattlerTarget].type2 &&
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].types[1] &&
|
||||
gBattleMons[gBattlerTarget].types[0] != gBattleMons[gBattlerTarget].types[1] &&
|
||||
TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_NO_EFFECT)
|
||||
{
|
||||
gMoveResultFlags |= MOVE_RESULT_DOESNT_AFFECT_FOE;
|
||||
@ -1469,18 +1469,18 @@ static void CheckWonderGuardAndLevitate(void)
|
||||
}
|
||||
|
||||
// check super effective
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type1 && TYPE_EFFECT_MULTIPLIER(i) == 20)
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].types[0] && TYPE_EFFECT_MULTIPLIER(i) == 20)
|
||||
flags |= 1;
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type2
|
||||
&& gBattleMons[gBattlerTarget].type1 != gBattleMons[gBattlerTarget].type2
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].types[1]
|
||||
&& gBattleMons[gBattlerTarget].types[0] != gBattleMons[gBattlerTarget].types[1]
|
||||
&& TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_SUPER_EFFECTIVE)
|
||||
flags |= 1;
|
||||
|
||||
// check not very effective
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type1 && TYPE_EFFECT_MULTIPLIER(i) == 5)
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].types[0] && TYPE_EFFECT_MULTIPLIER(i) == 5)
|
||||
flags |= 2;
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type2
|
||||
&& gBattleMons[gBattlerTarget].type1 != gBattleMons[gBattlerTarget].type2
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].types[1]
|
||||
&& gBattleMons[gBattlerTarget].types[0] != gBattleMons[gBattlerTarget].types[1]
|
||||
&& TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_NOT_EFFECTIVE)
|
||||
flags |= 2;
|
||||
}
|
||||
@ -1570,11 +1570,11 @@ u8 TypeCalc(u16 move, u8 attacker, u8 defender)
|
||||
else if (TYPE_EFFECT_ATK_TYPE(i) == moveType)
|
||||
{
|
||||
// check type1
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[defender].type1)
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[defender].types[0])
|
||||
ModulateDmgByType2(TYPE_EFFECT_MULTIPLIER(i), move, &flags);
|
||||
// check type2
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[defender].type2 &&
|
||||
gBattleMons[defender].type1 != gBattleMons[defender].type2)
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[defender].types[1] &&
|
||||
gBattleMons[defender].types[0] != gBattleMons[defender].types[1])
|
||||
ModulateDmgByType2(TYPE_EFFECT_MULTIPLIER(i), move, &flags);
|
||||
}
|
||||
i += 3;
|
||||
@ -2246,11 +2246,11 @@ void SetMoveEffect(bool8 primary, u8 certain)
|
||||
gBattleScripting.battler = gBattlerAttacker;
|
||||
}
|
||||
|
||||
if (gBattleMons[gEffectBattler].ability == ABILITY_SHIELD_DUST && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
|
||||
if (gBattleMons[gEffectBattler].ability == ABILITY_SHIELD_DUST && !(gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT)
|
||||
&& !primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 9)
|
||||
INCREMENT_RESET_RETURN
|
||||
|
||||
if (gSideStatuses[GET_BATTLER_SIDE(gEffectBattler)] & SIDE_STATUS_SAFEGUARD && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
|
||||
if (gSideStatuses[GET_BATTLER_SIDE(gEffectBattler)] & SIDE_STATUS_SAFEGUARD && !(gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT)
|
||||
&& !primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 7)
|
||||
INCREMENT_RESET_RETURN
|
||||
|
||||
@ -2300,10 +2300,10 @@ void SetMoveEffect(bool8 primary, u8 certain)
|
||||
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
||||
gBattlescriptCurrInstr = BattleScript_PSNPrevention;
|
||||
|
||||
if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
|
||||
if (gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT)
|
||||
{
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_ABILITY_STATUS;
|
||||
gHitMarker &= ~HITMARKER_IGNORE_SAFEGUARD;
|
||||
gHitMarker &= ~HITMARKER_STATUS_ABILITY_EFFECT;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2312,7 +2312,7 @@ void SetMoveEffect(bool8 primary, u8 certain)
|
||||
RESET_RETURN
|
||||
}
|
||||
if ((IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_POISON) || IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_STEEL))
|
||||
&& (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
|
||||
&& (gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT)
|
||||
&& (primary == TRUE || certain == MOVE_EFFECT_CERTAIN))
|
||||
{
|
||||
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
||||
@ -2341,10 +2341,10 @@ void SetMoveEffect(bool8 primary, u8 certain)
|
||||
|
||||
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
||||
gBattlescriptCurrInstr = BattleScript_BRNPrevention;
|
||||
if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
|
||||
if (gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT)
|
||||
{
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_ABILITY_STATUS;
|
||||
gHitMarker &= ~HITMARKER_IGNORE_SAFEGUARD;
|
||||
gHitMarker &= ~HITMARKER_STATUS_ABILITY_EFFECT;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2353,7 +2353,7 @@ void SetMoveEffect(bool8 primary, u8 certain)
|
||||
RESET_RETURN
|
||||
}
|
||||
if (IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_FIRE)
|
||||
&& (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
|
||||
&& (gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT)
|
||||
&& (primary == TRUE || certain == MOVE_EFFECT_CERTAIN))
|
||||
{
|
||||
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
||||
@ -2397,10 +2397,10 @@ void SetMoveEffect(bool8 primary, u8 certain)
|
||||
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
||||
gBattlescriptCurrInstr = BattleScript_PRLZPrevention;
|
||||
|
||||
if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
|
||||
if (gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT)
|
||||
{
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_ABILITY_STATUS;
|
||||
gHitMarker &= ~HITMARKER_IGNORE_SAFEGUARD;
|
||||
gHitMarker &= ~HITMARKER_STATUS_ABILITY_EFFECT;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2425,10 +2425,10 @@ void SetMoveEffect(bool8 primary, u8 certain)
|
||||
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
||||
gBattlescriptCurrInstr = BattleScript_PSNPrevention;
|
||||
|
||||
if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
|
||||
if (gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT)
|
||||
{
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ABILITY_PREVENTS_ABILITY_STATUS;
|
||||
gHitMarker &= ~HITMARKER_IGNORE_SAFEGUARD;
|
||||
gHitMarker &= ~HITMARKER_STATUS_ABILITY_EFFECT;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2437,7 +2437,7 @@ void SetMoveEffect(bool8 primary, u8 certain)
|
||||
RESET_RETURN
|
||||
}
|
||||
if ((IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_POISON) || IS_BATTLER_OF_TYPE(gEffectBattler, TYPE_STEEL))
|
||||
&& (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
|
||||
&& (gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT)
|
||||
&& (primary == TRUE || certain == MOVE_EFFECT_CERTAIN))
|
||||
{
|
||||
BattleScriptPush(gBattlescriptCurrInstr + 1);
|
||||
@ -2480,10 +2480,10 @@ void SetMoveEffect(bool8 primary, u8 certain)
|
||||
BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gEffectBattler].status1), &gBattleMons[gEffectBattler].status1);
|
||||
MarkBattlerForControllerExec(gActiveBattler);
|
||||
|
||||
if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
|
||||
if (gHitMarker & HITMARKER_STATUS_ABILITY_EFFECT)
|
||||
{
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_STATUSED_BY_ABILITY;
|
||||
gHitMarker &= ~HITMARKER_IGNORE_SAFEGUARD;
|
||||
gHitMarker &= ~HITMARKER_STATUS_ABILITY_EFFECT;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -3366,7 +3366,7 @@ static void Cmd_getexp(void)
|
||||
|
||||
if (IsTradedMon(&gPlayerParty[gBattleStruct->expGetterMonId]))
|
||||
{
|
||||
// check if the pokemon doesn't belong to the player
|
||||
// check if the Pokémon doesn't belong to the player
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && gBattleStruct->expGetterMonId >= 3)
|
||||
{
|
||||
i = STRINGID_EMPTYSTRING4;
|
||||
@ -3971,7 +3971,7 @@ static void Cmd_jumpiftype2(void)
|
||||
{
|
||||
u8 battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
|
||||
|
||||
if (gBattlescriptCurrInstr[2] == gBattleMons[battlerId].type1 || gBattlescriptCurrInstr[2] == gBattleMons[battlerId].type2)
|
||||
if (gBattlescriptCurrInstr[2] == gBattleMons[battlerId].types[0] || gBattlescriptCurrInstr[2] == gBattleMons[battlerId].types[1])
|
||||
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 3);
|
||||
else
|
||||
gBattlescriptCurrInstr += 7;
|
||||
@ -4448,7 +4448,7 @@ static void Cmd_moveend(void)
|
||||
}
|
||||
gBattleScripting.moveendState++;
|
||||
break;
|
||||
case MOVEEND_NEXT_TARGET: // For moves hitting two opposing Pokemon.
|
||||
case MOVEEND_NEXT_TARGET: // For moves hitting two opposing Pokémon.
|
||||
if (!(gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE) && gBattleTypeFlags & BATTLE_TYPE_DOUBLE
|
||||
&& !gProtectStructs[gBattlerAttacker].chargingTurn && gBattleMoves[gCurrentMove].target == MOVE_TARGET_BOTH
|
||||
&& !(gHitMarker & HITMARKER_NO_ATTACKSTRING))
|
||||
@ -4520,7 +4520,7 @@ static void Cmd_typecalc2(void)
|
||||
if (TYPE_EFFECT_ATK_TYPE(i) == moveType)
|
||||
{
|
||||
// check type1
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type1)
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].types[0])
|
||||
{
|
||||
if (TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_NO_EFFECT)
|
||||
{
|
||||
@ -4537,22 +4537,22 @@ static void Cmd_typecalc2(void)
|
||||
}
|
||||
}
|
||||
// check type2
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type2)
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].types[1])
|
||||
{
|
||||
if (gBattleMons[gBattlerTarget].type1 != gBattleMons[gBattlerTarget].type2
|
||||
if (gBattleMons[gBattlerTarget].types[0] != gBattleMons[gBattlerTarget].types[1]
|
||||
&& TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_NO_EFFECT)
|
||||
{
|
||||
gMoveResultFlags |= MOVE_RESULT_DOESNT_AFFECT_FOE;
|
||||
break;
|
||||
}
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type2
|
||||
&& gBattleMons[gBattlerTarget].type1 != gBattleMons[gBattlerTarget].type2
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].types[1]
|
||||
&& gBattleMons[gBattlerTarget].types[0] != gBattleMons[gBattlerTarget].types[1]
|
||||
&& TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_NOT_EFFECTIVE)
|
||||
{
|
||||
flags |= MOVE_RESULT_NOT_VERY_EFFECTIVE;
|
||||
}
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].type2
|
||||
&& gBattleMons[gBattlerTarget].type1 != gBattleMons[gBattlerTarget].type2
|
||||
if (TYPE_EFFECT_DEF_TYPE(i) == gBattleMons[gBattlerTarget].types[1]
|
||||
&& gBattleMons[gBattlerTarget].types[0] != gBattleMons[gBattlerTarget].types[1]
|
||||
&& TYPE_EFFECT_MULTIPLIER(i) == TYPE_MUL_SUPER_EFFECTIVE)
|
||||
{
|
||||
flags |= MOVE_RESULT_SUPER_EFFECTIVE;
|
||||
@ -4623,8 +4623,8 @@ static void Cmd_switchindataupdate(void)
|
||||
for (i = 0; i < sizeof(struct BattlePokemon); i++)
|
||||
monData[i] = gBattleBufferB[gActiveBattler][4 + i];
|
||||
|
||||
gBattleMons[gActiveBattler].type1 = gSpeciesInfo[gBattleMons[gActiveBattler].species].types[0];
|
||||
gBattleMons[gActiveBattler].type2 = gSpeciesInfo[gBattleMons[gActiveBattler].species].types[1];
|
||||
gBattleMons[gActiveBattler].types[0] = gSpeciesInfo[gBattleMons[gActiveBattler].species].types[0];
|
||||
gBattleMons[gActiveBattler].types[1] = gSpeciesInfo[gBattleMons[gActiveBattler].species].types[1];
|
||||
gBattleMons[gActiveBattler].ability = GetAbilityBySpecies(gBattleMons[gActiveBattler].species, gBattleMons[gActiveBattler].abilityNum);
|
||||
|
||||
// check knocked off item
|
||||
@ -7270,7 +7270,7 @@ static void Cmd_forcerandomswitch(void)
|
||||
lastMonId = PARTY_SIZE;
|
||||
monsCount = PARTY_SIZE;
|
||||
minNeeded = 1;
|
||||
battler2PartyId = gBattlerPartyIndexes[gBattlerTarget]; // there is only one pokemon out in single battles
|
||||
battler2PartyId = gBattlerPartyIndexes[gBattlerTarget]; // there is only one Pokémon out in single battles
|
||||
battler1PartyId = gBattlerPartyIndexes[gBattlerTarget];
|
||||
}
|
||||
|
||||
@ -7354,8 +7354,8 @@ static void Cmd_tryconversiontypechange(void)
|
||||
else
|
||||
moveType = TYPE_NORMAL;
|
||||
}
|
||||
if (moveType != gBattleMons[gBattlerAttacker].type1
|
||||
&& moveType != gBattleMons[gBattlerAttacker].type2)
|
||||
if (moveType != gBattleMons[gBattlerAttacker].types[0]
|
||||
&& moveType != gBattleMons[gBattlerAttacker].types[1])
|
||||
{
|
||||
break;
|
||||
}
|
||||
@ -7381,7 +7381,7 @@ static void Cmd_tryconversiontypechange(void)
|
||||
moveType = TYPE_NORMAL;
|
||||
}
|
||||
}
|
||||
while (moveType == gBattleMons[gBattlerAttacker].type1 || moveType == gBattleMons[gBattlerAttacker].type2);
|
||||
while (moveType == gBattleMons[gBattlerAttacker].types[0] || moveType == gBattleMons[gBattlerAttacker].types[1]);
|
||||
|
||||
SET_BATTLER_TYPE(gBattlerAttacker, moveType);
|
||||
PREPARE_TYPE_BUFFER(gBattleTextBuff1, moveType);
|
||||
@ -7548,12 +7548,12 @@ static void Cmd_weatherdamage(void)
|
||||
{
|
||||
if (gBattleWeather & B_WEATHER_SANDSTORM)
|
||||
{
|
||||
if (gBattleMons[gBattlerAttacker].type1 != TYPE_ROCK
|
||||
&& gBattleMons[gBattlerAttacker].type1 != TYPE_STEEL
|
||||
&& gBattleMons[gBattlerAttacker].type1 != TYPE_GROUND
|
||||
&& gBattleMons[gBattlerAttacker].type2 != TYPE_ROCK
|
||||
&& gBattleMons[gBattlerAttacker].type2 != TYPE_STEEL
|
||||
&& gBattleMons[gBattlerAttacker].type2 != TYPE_GROUND
|
||||
if (gBattleMons[gBattlerAttacker].types[0] != TYPE_ROCK
|
||||
&& gBattleMons[gBattlerAttacker].types[0] != TYPE_STEEL
|
||||
&& gBattleMons[gBattlerAttacker].types[0] != TYPE_GROUND
|
||||
&& gBattleMons[gBattlerAttacker].types[1] != TYPE_ROCK
|
||||
&& gBattleMons[gBattlerAttacker].types[1] != TYPE_STEEL
|
||||
&& gBattleMons[gBattlerAttacker].types[1] != TYPE_GROUND
|
||||
&& gBattleMons[gBattlerAttacker].ability != ABILITY_SAND_VEIL
|
||||
&& !(gStatuses3[gBattlerAttacker] & STATUS3_UNDERGROUND)
|
||||
&& !(gStatuses3[gBattlerAttacker] & STATUS3_UNDERWATER))
|
||||
@ -7761,7 +7761,7 @@ static void Cmd_setsubstitute(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 4; // one bit value will only work for pokemon which max hp can go to 1020(which is more than possible in games)
|
||||
gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 4; // one bit value will only work for Pokémon which max hp can go to 1020(which is more than possible in games)
|
||||
if (gBattleMoveDamage == 0)
|
||||
gBattleMoveDamage = 1;
|
||||
|
||||
@ -9142,7 +9142,7 @@ static void Cmd_tryswapitems(void)
|
||||
{
|
||||
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
|
||||
}
|
||||
// can't swap if two pokemon don't have an item
|
||||
// can't swap if two Pokémon don't have an item
|
||||
// or if either of them is an enigma berry or a mail
|
||||
else if ((gBattleMons[gBattlerAttacker].item == ITEM_NONE && gBattleMons[gBattlerTarget].item == ITEM_NONE)
|
||||
|| gBattleMons[gBattlerAttacker].item == ITEM_ENIGMA_BERRY
|
||||
|
||||
@ -108,7 +108,7 @@ EWRAM_DATA static u8 *sTrainerBBattleScriptRetAddr = NULL;
|
||||
EWRAM_DATA static bool8 sShouldCheckTrainerBScript = FALSE;
|
||||
EWRAM_DATA static u8 sNoOfPossibleTrainerRetScripts = 0;
|
||||
|
||||
// The first transition is used if the enemy pokemon are lower level than our pokemon.
|
||||
// The first transition is used if the enemy Pokémon are lower level than our Pokémon.
|
||||
// Otherwise, the second transition is used.
|
||||
static const u8 sBattleTransitionTable_Wild[][2] =
|
||||
{
|
||||
@ -845,7 +845,7 @@ static u8 GetTrainerBattleTransition(void)
|
||||
return B_TRANSITION_AQUA;
|
||||
|
||||
if (gTrainers[gTrainerBattleOpponent_A].doubleBattle == TRUE)
|
||||
minPartyCount = 2; // double battles always at least have 2 pokemon.
|
||||
minPartyCount = 2; // double battles always at least have 2 Pokémon.
|
||||
else
|
||||
minPartyCount = 1;
|
||||
|
||||
@ -859,7 +859,7 @@ static u8 GetTrainerBattleTransition(void)
|
||||
return sBattleTransitionTable_Trainer[transitionType][1];
|
||||
}
|
||||
|
||||
#define RANDOM_TRANSITION(table)(table[Random() % ARRAY_COUNT(table)])
|
||||
#define RANDOM_TRANSITION(table) (table[Random() % ARRAY_COUNT(table)])
|
||||
u8 GetSpecialBattleTransition(s32 id)
|
||||
{
|
||||
u16 var;
|
||||
@ -1615,7 +1615,7 @@ static bool32 UpdateRandomTrainerRematches(const struct RematchTrainer *table, u
|
||||
// Trainer already wants a rematch. Don't bother updating it.
|
||||
ret = TRUE;
|
||||
}
|
||||
else if (FlagGet(FLAG_MATCH_CALL_REGISTERED + i)
|
||||
else if (FlagGet(TRAINER_REGISTERED_FLAGS_START + i)
|
||||
&& (Random() % 100) <= 30) // 31% chance of getting a rematch.
|
||||
{
|
||||
SetRematchIdForTrainer(table, i);
|
||||
@ -1744,7 +1744,7 @@ static u32 GetTrainerMatchCallFlag(u32 trainerId)
|
||||
for (i = 0; i < REMATCH_TABLE_ENTRIES; i++)
|
||||
{
|
||||
if (gRematchTable[i].trainerIds[0] == trainerId)
|
||||
return FLAG_MATCH_CALL_REGISTERED + i;
|
||||
return TRAINER_REGISTERED_FLAGS_START + i;
|
||||
}
|
||||
|
||||
return 0xFFFF;
|
||||
|
||||
@ -309,7 +309,7 @@ static void GenerateInitialRentalMons(void)
|
||||
i = 0;
|
||||
while (i != PARTY_SIZE)
|
||||
{
|
||||
// Cannot have two pokemon of the same species.
|
||||
// Cannot have two Pokémon of the same species.
|
||||
monSetId = Random() % NUM_SLATEPORT_TENT_MONS;
|
||||
for (j = firstMonId; j < firstMonId + i; j++)
|
||||
{
|
||||
@ -390,7 +390,7 @@ static void GenerateOpponentMons(void)
|
||||
{
|
||||
sRandMonId = monSet[Random() % numMons];
|
||||
|
||||
// Ensure none of the opponent's pokemon are the same as the potential rental pokemon for the player
|
||||
// Ensure none of the opponent's Pokémon are the same as the potential rental Pokémon for the player
|
||||
for (j = 0; j < (int)ARRAY_COUNT(gSaveBlock2Ptr->frontier.rentalMons); j++)
|
||||
{
|
||||
if (gFacilityTrainerMons[sRandMonId].species == gFacilityTrainerMons[gSaveBlock2Ptr->frontier.rentalMons[j].monId].species)
|
||||
|
||||
@ -1680,8 +1680,8 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount)
|
||||
}
|
||||
|
||||
// Regular battle frontier trainer.
|
||||
// Attempt to fill the trainer's party with random Pokemon until 3 have been
|
||||
// successfully chosen. The trainer's party may not have duplicate pokemon species
|
||||
// Attempt to fill the trainer's party with random Pokémon until 3 have been
|
||||
// successfully chosen. The trainer's party may not have duplicate Pokémon species
|
||||
// or duplicate held items.
|
||||
for (bfMonCount = 0; monSet[bfMonCount] != 0xFFFF; bfMonCount++)
|
||||
;
|
||||
@ -1691,12 +1691,12 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount)
|
||||
{
|
||||
u16 monId = monSet[Random() % bfMonCount];
|
||||
|
||||
// "High tier" pokemon are only allowed on open level mode
|
||||
// "High tier" Pokémon are only allowed on open level mode
|
||||
// 20 is not a possible value for level here
|
||||
if ((level == FRONTIER_MAX_LEVEL_50 || level == 20) && monId > FRONTIER_MONS_HIGH_TIER)
|
||||
continue;
|
||||
|
||||
// Ensure this pokemon species isn't a duplicate.
|
||||
// Ensure this Pokémon species isn't a duplicate.
|
||||
for (j = 0; j < i + firstMonId; j++)
|
||||
{
|
||||
if (GetMonData(&gEnemyParty[j], MON_DATA_SPECIES, NULL) == gFacilityTrainerMons[monId].species)
|
||||
@ -1715,7 +1715,7 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount)
|
||||
if (j != i + firstMonId)
|
||||
continue;
|
||||
|
||||
// Ensure this exact pokemon index isn't a duplicate. This check doesn't seem necessary
|
||||
// Ensure this exact Pokémon index isn't a duplicate. This check doesn't seem necessary
|
||||
// because the species and held items were already checked directly above.
|
||||
for (j = 0; j < i; j++)
|
||||
{
|
||||
@ -1727,7 +1727,7 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount)
|
||||
|
||||
chosenMonIndices[i] = monId;
|
||||
|
||||
// Place the chosen pokemon into the trainer's party.
|
||||
// Place the chosen Pokémon into the trainer's party.
|
||||
CreateMonWithEVSpreadNatureOTID(&gEnemyParty[i + firstMonId],
|
||||
gFacilityTrainerMons[monId].species,
|
||||
level,
|
||||
@ -1737,7 +1737,7 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount)
|
||||
otID);
|
||||
|
||||
friendship = MAX_FRIENDSHIP;
|
||||
// Give the chosen pokemon its specified moves.
|
||||
// Give the chosen Pokémon its specified moves.
|
||||
for (j = 0; j < MAX_MON_MOVES; j++)
|
||||
{
|
||||
SetMonMoveSlot(&gEnemyParty[i + firstMonId], gFacilityTrainerMons[monId].moves[j], j);
|
||||
@ -1748,7 +1748,7 @@ static void FillTrainerParty(u16 trainerId, u8 firstMonId, u8 monCount)
|
||||
SetMonData(&gEnemyParty[i + firstMonId], MON_DATA_FRIENDSHIP, &friendship);
|
||||
SetMonData(&gEnemyParty[i + firstMonId], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]);
|
||||
|
||||
// The pokemon was successfully added to the trainer's party, so it's safe to move on to
|
||||
// The Pokémon was successfully added to the trainer's party, so it's safe to move on to
|
||||
// the next party slot.
|
||||
i++;
|
||||
}
|
||||
@ -1804,7 +1804,7 @@ u16 GetRandomFrontierMonFromSet(u16 trainerId)
|
||||
|
||||
do
|
||||
{
|
||||
// "High tier" pokemon are only allowed on open level mode
|
||||
// "High tier" Pokémon are only allowed on open level mode
|
||||
// 20 is not a possible value for level here
|
||||
monId = monSet[Random() % numMons];
|
||||
} while((level == FRONTIER_MAX_LEVEL_50 || level == 20) && monId > FRONTIER_MONS_HIGH_TIER);
|
||||
@ -2454,8 +2454,8 @@ static void GetPotentialPartnerMoveAndSpecies(u16 trainerId, u16 monId)
|
||||
// These partners can be an NPC or a former/record-mixed Apprentice
|
||||
// When talked to, their response consists of:
|
||||
// PARTNER_MSGID_INTRO - A greeting
|
||||
// PARTNER_MSGID_MON1 - Naming one pokemon on their team, and a move it has
|
||||
// PARTNER_MSGID_MON2_ASK - Naming a second pokemon on their team, a move it has, and asking if they'd like to be their partner
|
||||
// PARTNER_MSGID_MON1 - Naming one Pokémon on their team, and a move it has
|
||||
// PARTNER_MSGID_MON2_ASK - Naming a second Pokémon on their team, a move it has, and asking if they'd like to be their partner
|
||||
// PARTNER_MSGID_ACCEPT - If the player agrees to be their partner
|
||||
// PARTNER_MSGID_REJECT - If the player declines to be their partner
|
||||
static void ShowPartnerCandidateMessage(void)
|
||||
@ -2773,7 +2773,7 @@ static void AwardBattleTowerRibbons(void)
|
||||
#ifdef BUGFIX
|
||||
struct RibbonCounter ribbons[MAX_FRONTIER_PARTY_SIZE];
|
||||
#else
|
||||
struct RibbonCounter ribbons[3]; // BUG: 4 Pokemon can receive ribbons in a double battle mode.
|
||||
struct RibbonCounter ribbons[3]; // BUG: 4 Pokémon can receive ribbons in a double battle mode.
|
||||
#endif
|
||||
u8 ribbonType = 0;
|
||||
u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
|
||||
@ -2982,7 +2982,7 @@ static void FillPartnerParty(u16 trainerId)
|
||||
#ifdef BUGFIX
|
||||
j,
|
||||
#else
|
||||
i, // BUG: personality was stored in the 'j' variable. As a result, Steven's pokemon do not have the intended natures.
|
||||
i, // BUG: personality was stored in the 'j' variable. As a result, Steven's Pokémon do not have the intended natures.
|
||||
#endif
|
||||
OT_ID_PRESET, STEVEN_OTID);
|
||||
for (j = 0; j < PARTY_SIZE; j++)
|
||||
@ -3409,7 +3409,7 @@ static void FillTentTrainerParty_(u16 trainerId, u8 firstMonId, u8 monCount)
|
||||
{
|
||||
u16 monId = monSet[Random() % bfMonCount];
|
||||
|
||||
// Ensure this pokemon species isn't a duplicate.
|
||||
// Ensure this Pokémon species isn't a duplicate.
|
||||
for (j = 0; j < i + firstMonId; j++)
|
||||
{
|
||||
if (GetMonData(&gEnemyParty[j], MON_DATA_SPECIES, NULL) == gFacilityTrainerMons[monId].species)
|
||||
@ -3428,7 +3428,7 @@ static void FillTentTrainerParty_(u16 trainerId, u8 firstMonId, u8 monCount)
|
||||
if (j != i + firstMonId)
|
||||
continue;
|
||||
|
||||
// Ensure this exact pokemon index isn't a duplicate. This check doesn't seem necessary
|
||||
// Ensure this exact Pokémon index isn't a duplicate. This check doesn't seem necessary
|
||||
// because the species and held items were already checked directly above.
|
||||
for (j = 0; j < i; j++)
|
||||
{
|
||||
@ -3440,7 +3440,7 @@ static void FillTentTrainerParty_(u16 trainerId, u8 firstMonId, u8 monCount)
|
||||
|
||||
chosenMonIndices[i] = monId;
|
||||
|
||||
// Place the chosen pokemon into the trainer's party.
|
||||
// Place the chosen Pokémon into the trainer's party.
|
||||
CreateMonWithEVSpreadNatureOTID(&gEnemyParty[i + firstMonId],
|
||||
gFacilityTrainerMons[monId].species,
|
||||
level,
|
||||
@ -3450,7 +3450,7 @@ static void FillTentTrainerParty_(u16 trainerId, u8 firstMonId, u8 monCount)
|
||||
otID);
|
||||
|
||||
friendship = MAX_FRIENDSHIP;
|
||||
// Give the chosen pokemon its specified moves.
|
||||
// Give the chosen Pokémon its specified moves.
|
||||
for (j = 0; j < MAX_MON_MOVES; j++)
|
||||
{
|
||||
SetMonMoveSlot(&gEnemyParty[i + firstMonId], gFacilityTrainerMons[monId].moves[j], j);
|
||||
@ -3461,7 +3461,7 @@ static void FillTentTrainerParty_(u16 trainerId, u8 firstMonId, u8 monCount)
|
||||
SetMonData(&gEnemyParty[i + firstMonId], MON_DATA_FRIENDSHIP, &friendship);
|
||||
SetMonData(&gEnemyParty[i + firstMonId], MON_DATA_HELD_ITEM, &gBattleFrontierHeldItems[gFacilityTrainerMons[monId].itemTableId]);
|
||||
|
||||
// The pokemon was successfully added to the trainer's party, so it's safe to move on to
|
||||
// The Pokémon was successfully added to the trainer's party, so it's safe to move on to
|
||||
// the next party slot.
|
||||
i++;
|
||||
}
|
||||
|
||||
@ -1907,7 +1907,11 @@ static bool8 ClockwiseWipe_TopRight(struct Task *task)
|
||||
{
|
||||
sTransitionData->VBlank_DMA = FALSE;
|
||||
|
||||
#ifdef UBFIX
|
||||
InitBlackWipe(sTransitionData->data, DISPLAY_WIDTH / 2, DISPLAY_HEIGHT / 2, sTransitionData->tWipeEndX, 0, 1, 1);
|
||||
#else
|
||||
InitBlackWipe(sTransitionData->data, DISPLAY_WIDTH / 2, DISPLAY_HEIGHT / 2, sTransitionData->tWipeEndX, -1, 1, 1);
|
||||
#endif
|
||||
do
|
||||
{
|
||||
gScanlineEffectRegBuffers[0][sTransitionData->tWipeCurrY] = (sTransitionData->tWipeCurrX + 1) | ((DISPLAY_WIDTH / 2) << 8);
|
||||
|
||||
@ -526,7 +526,7 @@ static const u16 *const sPointsArray[] =
|
||||
};
|
||||
|
||||
// Points will always be calculated for these messages
|
||||
// even if current pokemon does not have corresponding move
|
||||
// even if current Pokémon does not have corresponding move
|
||||
static const u16 sSpecialBattleStrings[] =
|
||||
{
|
||||
STRINGID_PKMNPERISHCOUNTFELL, STRINGID_PKMNWISHCAMETRUE, STRINGID_PKMNLOSTPPGRUDGE,
|
||||
|
||||
@ -649,7 +649,7 @@ void HandleAction_NothingIsFainted(void)
|
||||
gCurrentTurnActionNumber++;
|
||||
gCurrentActionFuncId = gActionsByTurnOrder[gCurrentTurnActionNumber];
|
||||
gHitMarker &= ~(HITMARKER_DESTINYBOND | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_ATTACKSTRING_PRINTED
|
||||
| HITMARKER_NO_PPDEDUCT | HITMARKER_IGNORE_SAFEGUARD | HITMARKER_IGNORE_ON_AIR
|
||||
| HITMARKER_NO_PPDEDUCT | HITMARKER_STATUS_ABILITY_EFFECT | HITMARKER_IGNORE_ON_AIR
|
||||
| HITMARKER_IGNORE_UNDERGROUND | HITMARKER_IGNORE_UNDERWATER | HITMARKER_PASSIVE_DAMAGE
|
||||
| HITMARKER_OBEYS | HITMARKER_WAKE_UP_CLEAR | HITMARKER_SYNCHRONISE_EFFECT
|
||||
| HITMARKER_CHARGING | HITMARKER_NEVER_SET);
|
||||
@ -662,7 +662,7 @@ void HandleAction_ActionFinished(void)
|
||||
gCurrentActionFuncId = gActionsByTurnOrder[gCurrentTurnActionNumber];
|
||||
SpecialStatusesClear();
|
||||
gHitMarker &= ~(HITMARKER_DESTINYBOND | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_ATTACKSTRING_PRINTED
|
||||
| HITMARKER_NO_PPDEDUCT | HITMARKER_IGNORE_SAFEGUARD | HITMARKER_IGNORE_ON_AIR
|
||||
| HITMARKER_NO_PPDEDUCT | HITMARKER_STATUS_ABILITY_EFFECT | HITMARKER_IGNORE_ON_AIR
|
||||
| HITMARKER_IGNORE_UNDERGROUND | HITMARKER_IGNORE_UNDERWATER | HITMARKER_PASSIVE_DAMAGE
|
||||
| HITMARKER_OBEYS | HITMARKER_WAKE_UP_CLEAR | HITMARKER_SYNCHRONISE_EFFECT
|
||||
| HITMARKER_CHARGING | HITMARKER_NEVER_SET);
|
||||
@ -1545,7 +1545,7 @@ u8 DoBattlerEndTurnEffects(void)
|
||||
if ((gBattleMons[gActiveBattler].status2 & STATUS2_NIGHTMARE) && gBattleMons[gActiveBattler].hp != 0)
|
||||
{
|
||||
// R/S does not perform this sleep check, which causes the nightmare effect to
|
||||
// persist even after the affected Pokemon has been awakened by Shed Skin.
|
||||
// persist even after the affected Pokémon has been awakened by Shed Skin.
|
||||
if (gBattleMons[gActiveBattler].status1 & STATUS1_SLEEP)
|
||||
{
|
||||
gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 4;
|
||||
@ -1625,7 +1625,7 @@ u8 DoBattlerEndTurnEffects(void)
|
||||
}
|
||||
if (gBattlerAttacker != gBattlersCount)
|
||||
{
|
||||
effect = 2; // a pokemon was awaken
|
||||
effect = 2; // a Pokémon was awaken
|
||||
break;
|
||||
}
|
||||
else
|
||||
@ -1685,7 +1685,7 @@ u8 DoBattlerEndTurnEffects(void)
|
||||
if (gDisableStructs[gActiveBattler].disabledMove == gBattleMons[gActiveBattler].moves[i])
|
||||
break;
|
||||
}
|
||||
if (i == MAX_MON_MOVES) // pokemon does not have the disabled move anymore
|
||||
if (i == MAX_MON_MOVES) // Pokémon does not have the disabled move anymore
|
||||
{
|
||||
gDisableStructs[gActiveBattler].disabledMove = MOVE_NONE;
|
||||
gDisableStructs[gActiveBattler].disableTimer = 0;
|
||||
@ -1702,7 +1702,7 @@ u8 DoBattlerEndTurnEffects(void)
|
||||
case ENDTURN_ENCORE: // encore
|
||||
if (gDisableStructs[gActiveBattler].encoreTimer != 0)
|
||||
{
|
||||
if (gBattleMons[gActiveBattler].moves[gDisableStructs[gActiveBattler].encoredMovePos] != gDisableStructs[gActiveBattler].encoredMove) // pokemon does not have the encored move anymore
|
||||
if (gBattleMons[gActiveBattler].moves[gDisableStructs[gActiveBattler].encoredMovePos] != gDisableStructs[gActiveBattler].encoredMove) // Pokémon does not have the encored move anymore
|
||||
{
|
||||
gDisableStructs[gActiveBattler].encoredMove = MOVE_NONE;
|
||||
gDisableStructs[gActiveBattler].encoreTimer = 0;
|
||||
@ -2782,7 +2782,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
|
||||
gBattleCommunication[MOVE_EFFECT_BYTE] += MOVE_EFFECT_AFFECTS_USER;
|
||||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
|
||||
gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
|
||||
gHitMarker |= HITMARKER_STATUS_ABILITY_EFFECT;
|
||||
effect++;
|
||||
}
|
||||
break;
|
||||
@ -2797,7 +2797,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
|
||||
gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_POISON;
|
||||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
|
||||
gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
|
||||
gHitMarker |= HITMARKER_STATUS_ABILITY_EFFECT;
|
||||
effect++;
|
||||
}
|
||||
break;
|
||||
@ -2812,7 +2812,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
|
||||
gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_PARALYSIS;
|
||||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
|
||||
gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
|
||||
gHitMarker |= HITMARKER_STATUS_ABILITY_EFFECT;
|
||||
effect++;
|
||||
}
|
||||
break;
|
||||
@ -2827,7 +2827,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
|
||||
gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_BURN;
|
||||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
|
||||
gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
|
||||
gHitMarker |= HITMARKER_STATUS_ABILITY_EFFECT;
|
||||
effect++;
|
||||
}
|
||||
break;
|
||||
@ -2963,7 +2963,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
|
||||
gBattleScripting.battler = gBattlerTarget;
|
||||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_SynchronizeActivates;
|
||||
gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
|
||||
gHitMarker |= HITMARKER_STATUS_ABILITY_EFFECT;
|
||||
effect++;
|
||||
}
|
||||
break;
|
||||
@ -2979,7 +2979,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
|
||||
gBattleScripting.battler = gBattlerAttacker;
|
||||
BattleScriptPushCursor();
|
||||
gBattlescriptCurrInstr = BattleScript_SynchronizeActivates;
|
||||
gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
|
||||
gHitMarker |= HITMARKER_STATUS_ABILITY_EFFECT;
|
||||
effect++;
|
||||
}
|
||||
break;
|
||||
@ -3003,7 +3003,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
|
||||
if (gBattleMons[i].ability == ABILITY_TRACE && (gStatuses3[i] & STATUS3_TRACE))
|
||||
{
|
||||
u8 target2;
|
||||
side = BATTLE_OPPOSITE(GetBattlerPosition(i)) & BIT_SIDE; // side of the opposing pokemon
|
||||
side = BATTLE_OPPOSITE(GetBattlerPosition(i)) & BIT_SIDE; // side of the opposing Pokémon
|
||||
target1 = GetBattlerAtPosition(side);
|
||||
target2 = GetBattlerAtPosition(side + BIT_FLANK);
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
||||
|
||||
@ -916,14 +916,14 @@ static const u8 sBlackPokeblockFlavorFlags[] = {
|
||||
(1 << FLAVOR_SOUR) | (1 << FLAVOR_SWEET) | (1 << FLAVOR_SPICY),
|
||||
};
|
||||
|
||||
static const u8 sUnused[] =
|
||||
{
|
||||
0xfe, 0x02, 0x02, 0xce, 0xd0, 0x37, 0x44, 0x07, 0x1f, 0x0c, 0x10,
|
||||
0x00, 0xff, 0xfe, 0x91, 0x72, 0xce, 0xd0, 0x37, 0x44, 0x07, 0x1f,
|
||||
0x0c, 0x10, 0x00, 0xff, 0x06, 0x27, 0x02, 0xff, 0x00, 0x0c, 0x48,
|
||||
0x02, 0xff, 0x00, 0x01, 0x1f, 0x02, 0xff, 0x00, 0x16, 0x37, 0x02,
|
||||
0xff, 0x00, 0x0d, 0x50, 0x4b, 0x02, 0xff, 0x06, 0x06, 0x06, 0x06,
|
||||
0x05, 0x03, 0x03, 0x03, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x02
|
||||
static const u8 sJPText_GoodTvReady[] = _("\nいいTVができました "); // Unused
|
||||
static const u8 sJPText_BadTvReady[] = _("\nダメTVができました "); // Unused
|
||||
static const u8 sJPText_Flavors[][5] = {_("からい"), _("しぶい"), _("あまい"), _("にがい"), _("すっぱい")}; // Unused
|
||||
|
||||
static const u8 sUnused[] = {
|
||||
6, 6, 6, 6, 5,
|
||||
3, 3, 3, 2, 2,
|
||||
3, 3, 3, 3, 2
|
||||
};
|
||||
|
||||
static const struct WindowTemplate sBlenderRecordWindowTemplate =
|
||||
@ -1908,7 +1908,7 @@ static void Task_HandleOpponent1(u8 taskId)
|
||||
static void Task_HandleOpponent2(u8 taskId)
|
||||
{
|
||||
u32 var1 = (sBerryBlender->arrowPos + 0x1800) & 0xFFFF;
|
||||
u32 arrowId = sBerryBlender->playerIdToArrowId[2] & 0xFF;
|
||||
u8 arrowId = sBerryBlender->playerIdToArrowId[2];
|
||||
if ((var1 >> 8) > sArrowHitRangeStart[arrowId] + 20 && (var1 >> 8) < sArrowHitRangeStart[arrowId] + 40)
|
||||
{
|
||||
if (!gTasks[taskId].tDidInput)
|
||||
@ -1925,11 +1925,9 @@ static void Task_HandleOpponent2(u8 taskId)
|
||||
}
|
||||
else
|
||||
{
|
||||
u8 value;
|
||||
if (rand > 65)
|
||||
gRecvCmds[2][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_BEST;
|
||||
value = rand - 41;
|
||||
if (value < 25)
|
||||
if (rand > 40 && rand <= 65)
|
||||
gRecvCmds[2][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_GOOD;
|
||||
if (rand < 10)
|
||||
CreateOpponentMissTask(2, 5);
|
||||
@ -1953,7 +1951,7 @@ static void Task_HandleOpponent2(u8 taskId)
|
||||
static void Task_HandleOpponent3(u8 taskId)
|
||||
{
|
||||
u32 var1 = (sBerryBlender->arrowPos + 0x1800) & 0xFFFF;
|
||||
u32 arrowId = sBerryBlender->playerIdToArrowId[3] & 0xFF;
|
||||
u8 arrowId = sBerryBlender->playerIdToArrowId[3];
|
||||
if ((var1 >> 8) > sArrowHitRangeStart[arrowId] + 20 && (var1 >> 8) < sArrowHitRangeStart[arrowId] + 40)
|
||||
{
|
||||
if (gTasks[taskId].data[0] == 0)
|
||||
@ -1971,16 +1969,9 @@ static void Task_HandleOpponent3(u8 taskId)
|
||||
else
|
||||
{
|
||||
if (rand > 60)
|
||||
{
|
||||
gRecvCmds[3][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_BEST;
|
||||
}
|
||||
else
|
||||
{
|
||||
s8 value = rand - 56; // makes me wonder what the original code was
|
||||
u8 value2 = value;
|
||||
if (value2 < 5)
|
||||
gRecvCmds[3][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_GOOD;
|
||||
}
|
||||
else if (rand > 55 && rand <= 60)
|
||||
gRecvCmds[3][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_GOOD;
|
||||
if (rand < 5)
|
||||
CreateOpponentMissTask(3, 5);
|
||||
}
|
||||
@ -2050,7 +2041,8 @@ static void UpdateSpeedFromHit(u16 cmd)
|
||||
switch (cmd)
|
||||
{
|
||||
case LINKCMD_BLENDER_SCORE_BEST:
|
||||
if (sBerryBlender->speed < 1500) {
|
||||
if (sBerryBlender->speed < 1500)
|
||||
{
|
||||
sBerryBlender->speed += (384 / sNumPlayersToSpeedDivisor[sBerryBlender->numPlayers]);
|
||||
}
|
||||
else
|
||||
|
||||
7
src/berry_crush.c
Executable file → Normal file
@ -1373,7 +1373,6 @@ static void CreateBerrySprites(struct BerryCrushGame *game, struct BerryCrushGam
|
||||
u8 spriteId;
|
||||
s16 distance, var1;
|
||||
s16 *data;
|
||||
s32 amplitude;
|
||||
s16 speed;
|
||||
u32 var2;
|
||||
|
||||
@ -1395,11 +1394,7 @@ static void CreateBerrySprites(struct BerryCrushGame *game, struct BerryCrushGam
|
||||
sYAccel = 32;
|
||||
sBitfield = 112; // Setting bits in MASK_TARGET_Y
|
||||
distance = gfx->playerCoords[i]->berryXDest - gfx->playerCoords[i]->berryXOffset;
|
||||
amplitude = distance;
|
||||
if (distance < 0)
|
||||
amplitude += 3;
|
||||
|
||||
sAmplitude = amplitude >> 2;
|
||||
sAmplitude = distance / 4;
|
||||
distance *= 128;
|
||||
var2 = speed + 32;
|
||||
var2 = var2 / 2;
|
||||
|
||||
@ -20,7 +20,7 @@ bool16 ScriptGetPokedexInfo(void)
|
||||
return IsNationalPokedexEnabled();
|
||||
}
|
||||
|
||||
// This shows your Hoenn Pokedex rating and not your National Dex.
|
||||
// This shows your Hoenn Pokédex rating and not your National Dex.
|
||||
const u8 *GetPokedexRatingText(u16 count)
|
||||
{
|
||||
if (count < 10)
|
||||
|
||||
@ -194,7 +194,7 @@ static void SwapMoveDescAndContestTilemaps(void);
|
||||
#define CONTESTANT_TEXT_COLOR_START 10
|
||||
|
||||
enum {
|
||||
// The "{Pokemon Name} / {Trainer Name}" windows.
|
||||
// The "{Pokémon Name} / {Trainer Name}" windows.
|
||||
WIN_CONTESTANT0_NAME,
|
||||
WIN_CONTESTANT1_NAME,
|
||||
WIN_CONTESTANT2_NAME,
|
||||
@ -3434,11 +3434,11 @@ static void RankContestants(void)
|
||||
|
||||
// For each contestant, find the best rank with their point total.
|
||||
// Normally, each point total is different, and this will output the
|
||||
// rankings as expected. However, if two pokemon are tied, then they
|
||||
// rankings as expected. However, if two Pokémon are tied, then they
|
||||
// both get the best rank for that point total.
|
||||
//
|
||||
// For example if the point totals are [100, 80, 80, 50], the ranks will
|
||||
// be [1, 2, 2, 4]. The pokemon with a point total of 80 stop looking
|
||||
// be [1, 2, 2, 4]. The Pokémon with a point total of 80 stop looking
|
||||
// when they see the first 80 in the array, so they both share the '2'
|
||||
// rank.
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
@ -4590,10 +4590,10 @@ void MakeContestantNervous(u8 p)
|
||||
// ContestantStatus::nextTurnOrder field of each contestant. The remaining
|
||||
// turns are assigned such that the turn order will reverse.
|
||||
//
|
||||
// For example, if no pokemon have a defined nextTurnOrder, then the 4th
|
||||
// For example, if no Pokémon have a defined nextTurnOrder, then the 4th
|
||||
// will become 1st, the 3rd will become 2nd, etc.
|
||||
//
|
||||
// Note: This function assumes that multiple pokemon cannot have the same
|
||||
// Note: This function assumes that multiple Pokémon cannot have the same
|
||||
// nextTurnOrder value.
|
||||
static void ApplyNextTurnOrder(void)
|
||||
{
|
||||
|
||||
@ -138,7 +138,8 @@ static void ContestEffect_StartleFrontMon(void)
|
||||
u8 idx = 0;
|
||||
u8 a = eContestAppealResults.contestant;
|
||||
|
||||
if (eContestAppealResults.turnOrder[a] != 0) {
|
||||
if (eContestAppealResults.turnOrder[a] != 0)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < CONTESTANT_COUNT; i++)
|
||||
|
||||
@ -63,12 +63,12 @@ enum {
|
||||
|
||||
struct CreditsData
|
||||
{
|
||||
u16 monToShow[NUM_MON_SLIDES]; // List of Pokemon species ids that will show during the credits
|
||||
u16 monToShow[NUM_MON_SLIDES]; // List of Pokémon species ids that will show during the credits
|
||||
u16 imgCounter; //how many mon images have been shown
|
||||
u16 nextImgPos; //if the next image spawns left/center/right
|
||||
u16 currShownMon; //index into monToShow
|
||||
u16 numMonToShow; //number of pokemon to show, always NUM_MON_SLIDES after determine function
|
||||
u16 caughtMonIds[NATIONAL_DEX_COUNT]; //temporary location to hold a condensed array of all caught pokemon
|
||||
u16 numMonToShow; //number of Pokémon to show, always NUM_MON_SLIDES after determine function
|
||||
u16 caughtMonIds[NATIONAL_DEX_COUNT]; //temporary location to hold a condensed array of all caught Pokémon
|
||||
u16 numCaughtMon; //count of filled spaces in caughtMonIds
|
||||
u16 unused[7];
|
||||
};
|
||||
@ -1555,8 +1555,8 @@ static void DeterminePokemonToShow(void)
|
||||
u16 dexNum;
|
||||
u16 j;
|
||||
|
||||
// Go through the Pokedex, and anything that has gotten caught we put into our massive array.
|
||||
// This basically packs all of the caught pokemon into the front of the array
|
||||
// Go through the Pokédex, and anything that has gotten caught we put into our massive array.
|
||||
// This basically packs all of the caught Pokémon into the front of the array
|
||||
for (dexNum = 1, j = 0; dexNum < NATIONAL_DEX_COUNT; dexNum++)
|
||||
{
|
||||
if (GetSetPokedexFlag(dexNum, FLAG_GET_CAUGHT))
|
||||
@ -1570,14 +1570,14 @@ static void DeterminePokemonToShow(void)
|
||||
for (dexNum = j; dexNum < NATIONAL_DEX_COUNT; dexNum++)
|
||||
sCreditsData->caughtMonIds[dexNum] = NATIONAL_DEX_NONE;
|
||||
|
||||
// Cap the number of pokemon we care about to NUM_MON_SLIDES, the max we show in the credits scene (-1 for the starter)
|
||||
// Cap the number of Pokémon we care about to NUM_MON_SLIDES, the max we show in the credits scene (-1 for the starter)
|
||||
sCreditsData->numCaughtMon = j;
|
||||
if (sCreditsData->numCaughtMon < NUM_MON_SLIDES)
|
||||
sCreditsData->numMonToShow = j;
|
||||
else
|
||||
sCreditsData->numMonToShow = NUM_MON_SLIDES;
|
||||
|
||||
// Loop through our list of caught pokemon and select randomly from it to fill the images to show
|
||||
// Loop through our list of caught Pokémon and select randomly from it to fill the images to show
|
||||
j = 0;
|
||||
do
|
||||
{
|
||||
@ -1598,7 +1598,7 @@ static void DeterminePokemonToShow(void)
|
||||
}
|
||||
while (sCreditsData->numCaughtMon != 0 && j < NUM_MON_SLIDES);
|
||||
|
||||
// If we don't have enough pokemon in the dex to fill everything, copy the selected mon into the end of the array, so it loops
|
||||
// If we don't have enough Pokémon in the dex to fill everything, copy the selected mon into the end of the array, so it loops
|
||||
if (sCreditsData->numMonToShow < NUM_MON_SLIDES)
|
||||
{
|
||||
for (j = sCreditsData->numMonToShow, page = 0; j < NUM_MON_SLIDES; j++)
|
||||
@ -1609,7 +1609,7 @@ static void DeterminePokemonToShow(void)
|
||||
if (page == sCreditsData->numMonToShow)
|
||||
page = 0;
|
||||
}
|
||||
// Ensure the last pokemon is our starter
|
||||
// Ensure the last Pokémon is our starter
|
||||
sCreditsData->monToShow[NUM_MON_SLIDES - 1] = starter;
|
||||
}
|
||||
else
|
||||
@ -1617,7 +1617,7 @@ static void DeterminePokemonToShow(void)
|
||||
// Check to see if our starter has already appeared in this list, break if it has
|
||||
for (dexNum = 0; sCreditsData->monToShow[dexNum] != starter && dexNum < NUM_MON_SLIDES; dexNum++);
|
||||
|
||||
// If it has, swap it with the last pokemon, to ensure our starter is the last image
|
||||
// If it has, swap it with the last Pokémon, to ensure our starter is the last image
|
||||
if (dexNum < sCreditsData->numMonToShow - 1)
|
||||
{
|
||||
sCreditsData->monToShow[dexNum] = sCreditsData->monToShow[NUM_MON_SLIDES-1];
|
||||
@ -1625,7 +1625,7 @@ static void DeterminePokemonToShow(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
// Ensure the last pokemon is our starter
|
||||
// Ensure the last Pokémon is our starter
|
||||
sCreditsData->monToShow[NUM_MON_SLIDES - 1] = starter;
|
||||
}
|
||||
}
|
||||
|
||||
@ -4172,7 +4172,7 @@
|
||||
FRONTIER_MON_##lastmon##_10,\
|
||||
-1
|
||||
|
||||
// The strong Psychic M/F trainers all use the below pokemon
|
||||
// The strong Psychic M/F trainers all use the below Pokémon
|
||||
// Additionally they use 1 of 3 legendary trios, and Latios or Latias depending on gender
|
||||
#define FRONTIER_MONS_PSYCHIC_2(lati, legend1, legend2, legend3) \
|
||||
FRONTIER_MON_WOBBUFFET_1, \
|
||||
|
||||
@ -171,7 +171,7 @@ static const u8 sDecorTilemap_3x2_X[] = {
|
||||
0x06, 0x07, 0x06, 0x07, 0x06, 0x07
|
||||
};
|
||||
|
||||
#define DECORSIZE(width, height)((width) * (height) * 4)
|
||||
#define DECORSIZE(width, height) ((width) * (height) * 4)
|
||||
|
||||
static const struct {
|
||||
const u8 *tiles;
|
||||
|
||||
@ -64,7 +64,7 @@ static const struct PartyMenuBoxInfoRects sPartyBoxInfoRects[] =
|
||||
|
||||
// Each layout array has an array for each of the 6 party slots
|
||||
// The array for each slot has the sprite coords of its various sprites in the following order
|
||||
// Pokemon icon (x, y), held item (x, y), status condition (x, y), menu pokeball (x, y)
|
||||
// Pokémon icon (x, y), held item (x, y), status condition (x, y), menu Poké Ball (x, y)
|
||||
static const u8 sPartyMenuSpriteCoords[PARTY_LAYOUT_COUNT][PARTY_SIZE][4 * 2] =
|
||||
{
|
||||
[PARTY_LAYOUT_SINGLE] =
|
||||
@ -902,7 +902,7 @@ static const struct CompressedSpritePalette sSpritePalette_MenuPokeball =
|
||||
gPartyMenuPokeball_Pal, TAG_POKEBALL
|
||||
};
|
||||
|
||||
// Used for the pokeball sprite on each party slot / Cancel button
|
||||
// Used for the Poké Ball sprite on each party slot / Cancel button
|
||||
static const struct SpriteTemplate sSpriteTemplate_MenuPokeball =
|
||||
{
|
||||
.tileTag = TAG_POKEBALL,
|
||||
|
||||