Merge with master

This commit is contained in:
DizzyEggg 2019-08-04 23:09:28 +02:00
commit c219776034
159 changed files with 15202 additions and 23234 deletions

View File

@ -30,7 +30,8 @@ matrix:
- g++-7
env: _="Build"
script:
- ./build_tools.sh g++-7
- make -j2 tools CXX=g++-7
- make -j2 compare
- make -j2 modern
after_success:
- .travis/calcrom/webhook.sh pokeemerald

View File

@ -13,12 +13,6 @@ Then get the compiler from https://github.com/pret/agbcc and run the following c
./install.sh PATH_OF_POKEEMERALD_DIRECTORY
```
Then in the pokeemerald directory, build the tools.
```
./build_tools.sh
```
Finally, build the rom.
```
@ -101,3 +95,22 @@ If you've only changed `.c` or `.s` files, you can turn off the dependency scann
`make NODEP=1`
# Building with devkitARM's C compiler
This project supports the `arm-none-eabi-gcc` compiler which ships with devkitARM r52. To build this target, simply run:
make modern
# Building with your own toolchain
To build Pokemon Emerald with a toolchain other than devkitARM, override the `TOOLCHAIN` environment variable with the path to your toolchain. Example:
make compare TOOLCHAIN=/usr/local/arm-none-eabi
The path you pass to the `TOOLCHAIN` variable must contain the subdirectory `bin`. If you compile the `modern` target with this toolchain, the subdirectories `lib`, `include`, and `arm-none-eabi` must also be present.
# Building with debug info
To build the ELF file with enhanced debug info, use the `DINFO` variable:
make compare DINFO=1

View File

@ -1,4 +1,13 @@
include $(DEVKITARM)/base_tools
TOOLCHAIN := $(DEVKITARM)
ifneq (,$(wildcard $(TOOLCHAIN)/base_tools))
include $(TOOLCHAIN)/base_tools
else
export PATH := $(TOOLCHAIN)/bin:$(PATH)
PREFIX := arm-none-eabi-
OBJCOPY := $(PREFIX)objcopy
export CC := $(PREFIX)gcc
export AS := $(PREFIX)as
endif
export CPP := $(PREFIX)cpp
export LD := $(PREFIX)ld
@ -12,12 +21,10 @@ TITLE := POKEMON EMER
GAME_CODE := BPEE
MAKER_CODE := 01
REVISION := 0
MODERN ?= 0
SHELL := /bin/bash -o pipefail
ROM := pokeemerald.gba
OBJ_DIR := build/emerald
ELF = $(ROM:.gba=.elf)
MAP = $(ROM:.gba=.map)
@ -34,16 +41,32 @@ DATA_ASM_BUILDDIR = $(OBJ_DIR)/$(DATA_ASM_SUBDIR)
SONG_BUILDDIR = $(OBJ_DIR)/$(SONG_SUBDIR)
MID_BUILDDIR = $(OBJ_DIR)/$(MID_SUBDIR)
ASFLAGS := -mcpu=arm7tdmi
ASFLAGS := -mcpu=arm7tdmi --defsym MODERN=$(MODERN)
GCC_VER = $(shell $(CC) -dumpversion)
ifeq ($(MODERN),0)
CC1 := tools/agbcc/bin/agbcc$(EXE)
override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Werror -O2 -fhex-asm
ROM := pokeemerald.gba
OBJ_DIR := build/emerald
LIBPATH := -L ../../tools/agbcc/lib
else
CC1 = $(shell $(CC) --print-prog-name=cc1) -quiet
override CFLAGS += -mthumb -mthumb-interwork -O2 -mabi=apcs-gnu -mtune=arm7tdmi -march=armv4t -fno-toplevel-reorder -fno-aggressive-loop-optimizations -Wno-pointer-to-int-cast
ROM := pokeemerald_modern.gba
OBJ_DIR := build/modern
LIBPATH := -L $(TOOLCHAIN)/lib/gcc/arm-none-eabi/$(GCC_VER)/thumb -L $(TOOLCHAIN)/arm-none-eabi/lib/thumb
endif
CPPFLAGS := -I tools/agbcc/include -I tools/agbcc -iquote include -Wno-trigraphs
CPPFLAGS := -iquote include -Wno-trigraphs -DMODERN=$(MODERN)
ifeq ($(MODERN),0)
CPPFLAGS += -I tools/agbcc/include -I tools/agbcc
endif
LDFLAGS = -Map ../../$(MAP)
LIB := -L ../../tools/agbcc/lib -lgcc -lc
LIB := $(LIBPATH) -lgcc -lc
SHA1 := $(shell { command -v sha1sum || command -v shasum; } 2>/dev/null) -c
GFX := tools/gbagfx/gbagfx$(EXE)
@ -56,6 +79,12 @@ FIX := tools/gbafix/gbafix$(EXE)
MAPJSON := tools/mapjson/mapjson$(EXE)
JSONPROC := tools/jsonproc/jsonproc$(EXE)
TOOLDIRS := $(filter-out tools/agbcc tools/binutils,$(wildcard tools/*))
TOOLBASE = $(TOOLDIRS:tools/%=%)
TOOLS = $(foreach tool,$(TOOLBASE),tools/$(tool)/$(tool)$(EXE))
MAKEFLAGS += --no-print-directory
# Clear the default suffixes
.SUFFIXES:
# Don't delete intermediate files
@ -66,7 +95,17 @@ JSONPROC := tools/jsonproc/jsonproc$(EXE)
# Secondary expansion is required for dependency variables in object rules.
.SECONDEXPANSION:
.PHONY: rom clean compare tidy
.PHONY: all rom clean compare tidy tools mostlyclean clean-tools $(TOOLDIRS)
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
ifeq (,$(filter-out all compare,$(MAKECMDGOALS)))
$(call infoshell, $(MAKE) tools)
else
NODEP := 1
endif
C_SRCS := $(wildcard $(C_SUBDIR)/*.c $(C_SUBDIR)/*/*.c $(C_SUBDIR)/*/*/*.c)
C_OBJS := $(patsubst $(C_SUBDIR)/%.c,$(C_BUILDDIR)/%.o,$(C_SRCS))
@ -92,15 +131,27 @@ AUTO_GEN_TARGETS :=
$(shell mkdir -p $(SUBDIRS))
all: rom
tools: $(TOOLDIRS)
$(TOOLDIRS):
@$(MAKE) -C $@
rom: $(ROM)
# For contributors to make sure a change didn't affect the contents of the ROM.
compare: $(ROM)
compare: all
@$(SHA1) rom.sha1
clean: tidy
clean: mostlyclean clean-tools
clean-tools:
@$(foreach tooldir,$(TOOLDIRS),$(MAKE) clean -C $(tooldir);)
mostlyclean: tidy
rm -f sound/direct_sound_samples/*.bin
rm -f $(SONG_OBJS) $(MID_OBJS) $(MID_SUBDIR)/*.s
rm -f $(MID_SUBDIR)/*.s
find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -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
@ -109,7 +160,10 @@ clean: tidy
tidy:
rm -f $(ROM) $(ELF) $(MAP)
rm -r build/*
rm -r $(OBJ_DIR)
ifeq ($(MODERN),0)
@$(MAKE) tidy MODERN=1
endif
include graphics_file_rules.mk
include map_data_rules.mk
@ -133,6 +187,7 @@ sound/direct_sound_samples/cry_%.bin: sound/direct_sound_samples/cry_%.aif ; $(A
sound/%.bin: sound/%.aif ; $(AIF) $< $@
ifeq ($(MODERN),0)
$(C_BUILDDIR)/libc.o: CC1 := tools/agbcc/bin/old_agbcc
$(C_BUILDDIR)/libc.o: CFLAGS := -O2
@ -145,6 +200,7 @@ $(C_BUILDDIR)/agb_flash_mx.o: CFLAGS := -O -mthumb-interwork
$(C_BUILDDIR)/m4a.o: CC1 := tools/agbcc/bin/old_agbcc
$(C_BUILDDIR)/record_mixing.o: CFLAGS += -ffreestanding
endif
ifeq ($(NODEP),1)
$(C_BUILDDIR)/%.o: c_dep :=
@ -192,12 +248,23 @@ $(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 > $@
$(OBJ_DIR)/ld_script.ld: ld_script.txt $(OBJ_DIR)/sym_bss.ld $(OBJ_DIR)/sym_common.ld $(OBJ_DIR)/sym_ewram.ld
cd $(OBJ_DIR) && sed "s#tools/#../../tools/#g" ../../ld_script.txt > ld_script.ld
ifeq ($(MODERN),0)
LD_SCRIPT := ld_script.txt
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_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
$(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS)
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 -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent
$(FIX) $@ -p --silent
modern: ; @$(MAKE) MODERN=1

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -943,7 +943,7 @@ sub_81CA0C8: @ 81CA0C8
lsls r2, r0, 3
subs r2, r0
lsls r2, 2
ldr r1, =gUnknown_08620244
ldr r1, =gUnknown_08620240+4
adds r0, r2, r1
subs r1, 0x4
adds r2, r1

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -5,219 +5,7 @@
@ File centered around AllocSubstruct(7)
thumb_func_start sub_81CEF3C
sub_81CEF3C: @ 81CEF3C
push {r4,lr}
movs r0, 0x7
movs r1, 0x24
bl AllocSubstruct
adds r4, r0, 0
cmp r4, 0
beq _081CEF90
ldr r1, =0x000006ac
movs r0, 0x12
bl AllocSubstruct
str r0, [r4, 0x20]
cmp r0, 0
beq _081CEF90
ldr r0, =sub_81CF010
str r0, [r4]
ldr r0, =sub_81CF11C
movs r1, 0x1
bl CreateLoopedTask
str r0, [r4, 0x4]
movs r0, 0
str r0, [r4, 0x18]
bl sub_81C76AC
ldr r1, =gUnknown_086233A0
lsls r0, 2
adds r0, r1
ldr r0, [r0]
str r0, [r4, 0x14]
movs r0, 0x1
b _081CEF92
.pool
_081CEF90:
movs r0, 0
_081CEF92:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_81CEF3C
thumb_func_start sub_81CEF98
sub_81CEF98: @ 81CEF98
push {r4,lr}
movs r0, 0x7
movs r1, 0x24
bl AllocSubstruct
adds r4, r0, 0
cmp r4, 0
beq _081CEFD4
movs r0, 0x12
bl GetSubstructPtr
str r0, [r4, 0x20]
ldr r0, =sub_81CF030
str r0, [r4]
movs r0, 0x1
str r0, [r4, 0x18]
bl sub_81C76AC
ldr r1, =gUnknown_086233A0
lsls r0, 2
adds r0, r1
ldr r0, [r0]
str r0, [r4, 0x14]
movs r0, 0x1
b _081CEFD6
.pool
_081CEFD4:
movs r0, 0
_081CEFD6:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_81CEF98
thumb_func_start sub_81CEFDC
sub_81CEFDC: @ 81CEFDC
push {lr}
movs r0, 0x7
bl GetSubstructPtr
ldr r1, [r0]
bl _call_via_r1
pop {r1}
bx r1
thumb_func_end sub_81CEFDC
thumb_func_start sub_81CEFF0
sub_81CEFF0: @ 81CEFF0
push {lr}
movs r0, 0x7
bl GetSubstructPtr
ldr r0, [r0, 0x1C]
cmp r0, 0
bne _081CF004
movs r0, 0x12
bl FreePokenavSubstruct
_081CF004:
movs r0, 0x7
bl FreePokenavSubstruct
pop {r0}
bx r0
thumb_func_end sub_81CEFF0
thumb_func_start sub_81CF010
sub_81CF010: @ 81CF010
push {r4,lr}
adds r4, r0, 0
ldr r0, [r4, 0x4]
bl IsLoopedTaskActive
cmp r0, 0
bne _081CF022
ldr r0, =sub_81CF030
str r0, [r4]
_081CF022:
movs r0, 0
pop {r4}
pop {r1}
bx r1
.pool
thumb_func_end sub_81CF010
thumb_func_start sub_81CF030
sub_81CF030: @ 81CF030
push {r4,r5,lr}
adds r4, r0, 0
ldr r2, =gMain
ldrh r1, [r2, 0x30]
movs r0, 0x40
ands r0, r1
cmp r0, 0
beq _081CF048
movs r0, 0x1
b _081CF0A6
.pool
_081CF048:
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _081CF054
movs r0, 0x2
b _081CF0A6
_081CF054:
ldrh r1, [r2, 0x2E]
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _081CF062
movs r0, 0x3
b _081CF0A6
_081CF062:
movs r0, 0x10
ands r0, r1
lsls r0, 16
lsrs r2, r0, 16
cmp r2, 0
beq _081CF072
movs r0, 0x4
b _081CF0A6
_081CF072:
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _081CF088
str r2, [r4, 0x1C]
ldr r0, =sub_81CF0B0
str r0, [r4]
movs r0, 0x5
b _081CF0A6
.pool
_081CF088:
movs r5, 0x1
adds r0, r5, 0
ands r0, r1
cmp r0, 0
bne _081CF096
movs r0, 0
b _081CF0A6
_081CF096:
bl GetSelectedMatchCall
ldr r1, [r4, 0x20]
strh r0, [r1, 0x2]
str r5, [r4, 0x1C]
ldr r0, =sub_81CF0B8
str r0, [r4]
movs r0, 0x6
_081CF0A6:
pop {r4,r5}
pop {r1}
bx r1
.pool
thumb_func_end sub_81CF030
thumb_func_start sub_81CF0B0
sub_81CF0B0: @ 81CF0B0
ldr r0, =0x000186a3
bx lr
.pool
thumb_func_end sub_81CF0B0
thumb_func_start sub_81CF0B8
sub_81CF0B8: @ 81CF0B8
ldr r0, =0x000186a9
bx lr
.pool
thumb_func_end sub_81CF0B8
thumb_func_start sub_81CF0C0
sub_81CF0C0: @ 81CF0C0
push {lr}
movs r0, 0x7
bl GetSubstructPtr
ldr r0, [r0, 0x18]
pop {r1}
bx r1
thumb_func_end sub_81CF0C0
thumb_func_start sub_81CF0D0
sub_81CF0D0: @ 81CF0D0

View File

@ -0,0 +1 @@
gUnknown_03006370

6
common_syms/librfu.txt Normal file
View File

@ -0,0 +1,6 @@
gUnknown_03007870
gUnknown_03007880
gUnknown_03007890
gUnknown_03007894
gUnknown_03007898
gUnknown_030078A0

View File

@ -0,0 +1 @@
gRfuState

View File

@ -1,666 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnknown_082F449C:: @ 82F449C
.byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
.byte 0x08, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x03, 0x08
.byte 0x09, 0x00, 0x00, 0x01, 0x02, 0x05, 0x06, 0x03
.byte 0x04, 0x05, 0x08, 0x09, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01
.byte 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x02, 0x09
.byte 0x00, 0x00, 0x01, 0x04, 0x05, 0x06, 0x07, 0x02
.byte 0x03, 0x04, 0x09, 0x00, 0x00, 0x01, 0x06, 0x07
.byte 0x02, 0x03, 0x04, 0x05, 0x06, 0x09, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02
.byte 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x01, 0x00
.byte 0x00, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x01
.byte 0x02, 0x03, 0x00, 0x00, 0x05, 0x06, 0x07, 0x08
.byte 0x01, 0x02, 0x03, 0x04, 0x05, 0x00, 0x00, 0x07
.byte 0x08, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03
.byte 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0x02
.byte 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00
.byte 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09
.byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x06, 0x07, 0x08
.byte 0x09, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
.byte 0x08, 0x09, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05
.byte 0x06, 0x07, 0x08
gUknnown_082F45AF::
.byte 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03
.byte 0x04, 0x05, 0x05, 0x06, 0x03, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x05
.byte 0x06, 0x06, 0x07, 0x02, 0x02, 0x03, 0x04, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x05
.byte 0x05, 0x06, 0x07, 0x07, 0x08, 0x01, 0x01, 0x02
.byte 0x03, 0x00, 0x00, 0x00, 0x04, 0x05, 0x06, 0x06
.byte 0x07, 0x08, 0x08, 0x09, 0x00, 0x00, 0x01, 0x02
.byte 0x02, 0x03, 0x04, 0x01, 0x00, 0x01, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x02, 0x01
.byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x00, 0x01, 0x00, 0x01, 0x02, 0x01, 0x02
.byte 0x03, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04
.byte 0x00, 0x01, 0x00, 0x01, 0x02, 0x01, 0x02, 0x03
.byte 0x02, 0x03, 0x04, 0x03, 0x04, 0x00, 0x00, 0x00
.byte 0x00, 0x09, 0x09, 0x09, 0x09, 0x01, 0x01, 0x01
.byte 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x00
.byte 0x00, 0x01, 0x01, 0x00, 0x09, 0x09, 0x09, 0x09
.byte 0x09, 0x02, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01
.byte 0x09, 0x09, 0x09, 0x03, 0x03, 0x00, 0x00, 0x01
.byte 0x01, 0x02, 0x02, 0x03, 0x09, 0x03, 0x03, 0x04
.byte 0x04, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03
.byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x04, 0x06, 0x00
.byte 0x00, 0x00, 0x03, 0x05, 0x07, 0x00, 0x00, 0x02
.byte 0x04, 0x06, 0x08, 0x00, 0x01, 0x03, 0x05, 0x06
.byte 0x09
.align 2
gUnknown_082F7DF0_UnrefDupe:: @ 82F4698
.incbin "graphics/link_games/dodrioberry_bg1.gbapal"
.align 2
.incbin "graphics/link_games/dodrioberry_bg2.gbapal"
.align 2
gUnknown_082F7E30_UnrefDupe:: @ 82F46B8
.incbin "graphics/link_games/dodrioberry_pkmn.gbapal"
.align 2
gUnknown_082F7E50_UnrefDupe:: @ 82F46D8
.incbin "graphics/link_games/dodrioberry_shiny.gbapal"
.align 2
gUnknown_082F7E70_UnrefDupe:: @ 82F46F8
.incbin "graphics/link_games/dodrioberry_status.gbapal"
.align 2
gUnknown_082F7E90_UnrefDupe:: @ 82F4718
.incbin "graphics/link_games/dodrioberry_berrysprites.gbapal"
.align 2
gUnknown_082F7EB0_UnrefDupe:: @ 82F4738
.incbin "graphics/link_games/dodrioberry_berrysprites.4bpp.lz"
.align 2
gUnknown_082F8064_UnrefDupe:: @ 82F490C
.incbin "graphics/link_games/dodrioberry_platform.gbapal"
.align 2
gUnknown_082F8084_UnrefDupe:: @ 82F492C
.incbin "graphics/link_games/dodrioberry_bg1.4bpp.lz"
.align 2
gUnknown_082F8914_UnrefDupe:: @ 82F51BC
.incbin "graphics/link_games/dodrioberry_bg2.4bpp.lz"
.align 2
gUnknown_082F96E0_UnrefDupe:: @ 82F5F88
.incbin "graphics/link_games/dodrioberry_status.4bpp.lz"
.align 2
gUnknown_082F9774_UnrefDupe:: @ 82F601C
.incbin "graphics/link_games/dodrioberry_platform.4bpp.lz"
.align 2
gUnknown_082F98BC_UnrefDupe:: @ 82F6164
.incbin "graphics/link_games/dodrioberry_pkmn.4bpp.lz"
.align 2
gUnknown_082FAAD8_UnrefDupe:: @ 82F7380
.incbin "graphics/link_games/dodrioberry_bg1.bin.lz"
.align 2
gUnknown_082FAD44_UnrefDupe:: @ 82F75EC
.incbin "graphics/link_games/dodrioberry_bg2right.bin.lz"
.align 2
gUnknown_082FAF94_UnrefDupe:: @ 82F783C
.incbin "graphics/link_games/dodrioberry_bg2left.bin.lz"
.align 2
gUnknown_082F7A88:: @ 82F7A88
.byte 0x28, 0x18, 0x0d, 0x20, 0x13, 0x0a, 0x16, 0x0d
.byte 0x07, 0x00, 0x00, 0x00
.align 2
gUnknown_082F7A94:: @ 82F7A94
.byte 0x08, 0x05, 0x08, 0x0b, 0x0f, 0x00, 0x00, 0x00
.align 2
gUnknown_082F7A9C:: @ 82F7A9C
.byte 0x05, 0x0a, 0x14, 0x1e, 0x32, 0x46, 0x64, 0x00
.align 2
gUnknown_082F7AA4:: @ 82F7AA4
.byte 0x0f, 0x10, 0x11, 0x12, 0x13, 0x13, 0x12, 0x11
.byte 0x10, 0x0f, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19
.byte 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21
.byte 0x22, 0x22, 0x21, 0x20, 0x1f, 0x1e, 0x00, 0x00
.align 2
gUnknown_082F7AC4:: @ 82F7AC4
.4byte sub_8024DBC
.4byte sub_8024E00
.4byte sub_8024E38
.4byte sub_8024F10
.4byte sub_8024F38
.4byte sub_8025198
.4byte sub_8025324
.4byte sub_8025470
.4byte sub_8025644
.4byte sub_80256AC
.4byte sub_8025758
.4byte sub_80250D4
.align 2
gUnknown_082F7AF4:: @ 82F7AF4
.4byte sub_8024DBC
.4byte sub_8024E00
.4byte sub_8024E38
.4byte sub_8024F10
.4byte sub_8024FFC
.4byte sub_8025230
.4byte sub_8025324
.4byte sub_8025470
.4byte sub_8025644
.4byte sub_80256AC
.4byte sub_8025758
.4byte sub_8025158
.align 2
gUnknown_082F7B24:: @ 82F7B24
.2byte 0x000a, 0x001e, 0x0032, 0x0032
.align 2
gUnknown_082F7B2C:: @ 82F7B2C
.byte 0x00, 0x05, 0x01, 0x14, 0x0b, 0x0f, 0x01, 0x00
.align 2
gUnknown_082F7B34:: @ 82F7B34
.4byte gText_BerriesPicked
.4byte gText_BestScore
.4byte gText_BerriesInRowFivePlayers
.align 2
gUnknown_082F7B40:: @ 82F7B40
.byte 0x04, 0x07, 0x04, 0x00
.align 2
gUnknown_082F7B44:: @ 82F7B44
.2byte 0x0019, 0x0029, 0x0039
gUnknown_082F7B4A:: @ 82F7B4A
.2byte 0x0019, 0x0029, 0x0049
.align 2
gUnknown_082F7B50:: @ 82F7B50
.2byte 0x270f, 0x0000, 0x005a, 0x270f, 0x270f, 0x270f, 0x0046, 0x270f
.2byte 0x270f, 0x0000, 0x270f, 0x0000, 0x270f, 0x270f, 0x003c, 0x0000
.2byte 0x270f, 0x270f, 0x270f, 0x0000
.align 2
gUnknown_082F7B78:: @ 82F7B78
.string "ÀÁÂÇÈÉÊ$"
.align 2
gUnknown_082F7B80:: @ 82F7B80
.string "ABCDEFG$"
.align 2
gUnknown_082F7B88:: @ 82F7B88
.string "0123456$"
.align 2
gUnknown_082F7B90:: @ 82F7B90
.4byte gUnknown_082F7B78
.4byte gUnknown_082F7B78
.4byte gUnknown_082F7B78
.4byte gUnknown_082F7B80
.4byte gUnknown_082F7B88
.align 2
gUnknown_082F7BA4:: @ 82F7BA4 struct BgTemplate
.4byte 0x000001e0
.4byte 0x000012c9
.4byte 0x000012ea
.4byte 0x000021ff
.4byte 0x000000ff
.4byte 0x00000000
.align 2
gUnknown_082F7BBC:: @ 82F7BBC
window_template 0x00, 0x01, 0x01, 0x1c, 0x02, 0x0d, 0x0013
window_template 0x00, 0x01, 0x05, 0x1c, 0x0e, 0x0d, 0x004b
.align 2
gUnknown_082F7BCC:: @ 82F7BCC
window_template 0x00, 0x01, 0x05, 0x1c, 0x07, 0x0d, 0x004b
.align 2
gUnknown_082F7BD4:: @ 82F7BD4
window_template 0x00, 0x01, 0x08, 0x13, 0x03, 0x0d, 0x0013
window_template 0x00, 0x16, 0x07, 0x06, 0x04, 0x0d, 0x004c
.align 2
gUnknown_082F7BE4:: @ 82F7BE4
window_template 0x00, 0x04, 0x06, 0x16, 0x05, 0x0d, 0x0013
.align 2
gUnknown_082F7BEC:: @ 82F7BEC
window_template 0x00, 0x05, 0x08, 0x13, 0x03, 0x0d, 0x0013
.align 2
gUnknown_082F449C_UnrefDupe:: @ 82F7BF4
.byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
.byte 0x08, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x03, 0x08
.byte 0x09, 0x00, 0x00, 0x01, 0x02, 0x05, 0x06, 0x03
.byte 0x04, 0x05, 0x08, 0x09, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01
.byte 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x02, 0x09
.byte 0x00, 0x00, 0x01, 0x04, 0x05, 0x06, 0x07, 0x02
.byte 0x03, 0x04, 0x09, 0x00, 0x00, 0x01, 0x06, 0x07
.byte 0x02, 0x03, 0x04, 0x05, 0x06, 0x09, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02
.byte 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x01, 0x00
.byte 0x00, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x01
.byte 0x02, 0x03, 0x00, 0x00, 0x05, 0x06, 0x07, 0x08
.byte 0x01, 0x02, 0x03, 0x04, 0x05, 0x00, 0x00, 0x07
.byte 0x08, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03
.byte 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0x02
.byte 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00
.byte 0x01, 0x02, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09
.byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x06, 0x07, 0x08
.byte 0x09, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
.byte 0x08, 0x09, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05
.byte 0x06, 0x07, 0x08, 0x04, 0x05, 0x06, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x03, 0x04, 0x05, 0x05, 0x06, 0x03
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x04, 0x05, 0x06, 0x06, 0x07, 0x02, 0x02
.byte 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x03, 0x04, 0x05, 0x05, 0x06, 0x07, 0x07, 0x08
.byte 0x01, 0x01, 0x02, 0x03, 0x00, 0x00, 0x00, 0x04
.byte 0x05, 0x06, 0x06, 0x07, 0x08, 0x08, 0x09, 0x00
.byte 0x00, 0x01, 0x02, 0x02, 0x03, 0x04, 0x01, 0x00
.byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01
.byte 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00
.byte 0x01, 0x02, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01
.byte 0x02, 0x01, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00
.byte 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x01, 0x02
.byte 0x01, 0x02, 0x03, 0x02, 0x03, 0x04, 0x03, 0x04
.byte 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x09, 0x09
.byte 0x01, 0x01, 0x01, 0x09, 0x09, 0x09, 0x09, 0x09
.byte 0x09, 0x09, 0x00, 0x00, 0x01, 0x01, 0x00, 0x09
.byte 0x09, 0x09, 0x09, 0x09, 0x02, 0x02, 0x00, 0x00
.byte 0x01, 0x01, 0x01, 0x09, 0x09, 0x09, 0x03, 0x03
.byte 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x09
.byte 0x03, 0x03, 0x04, 0x04, 0x00, 0x00, 0x01, 0x01
.byte 0x02, 0x02, 0x03, 0x05, 0x00, 0x00, 0x00, 0x00
.byte 0x04, 0x06, 0x00, 0x00, 0x00, 0x03, 0x05, 0x07
.byte 0x00, 0x00, 0x02, 0x04, 0x06, 0x08, 0x00, 0x01
.byte 0x03, 0x05, 0x06, 0x09
.align 2
gDodrioBerryBgPal1:: @ 82F7DF0
.incbin "graphics/link_games/dodrioberry_bg1.gbapal"
.align 2
.incbin "graphics/link_games/dodrioberry_bg2.gbapal"
.align 2
gDodrioBerryPkmnPal:: @ 82F7E30
.incbin "graphics/link_games/dodrioberry_pkmn.gbapal"
.align 2
gDodrioBerryShinyPal:: @ 82F7E50
.incbin "graphics/link_games/dodrioberry_shiny.gbapal"
.align 2
gDodrioBerryStatusPal:: @ 82F7E70
.incbin "graphics/link_games/dodrioberry_status.gbapal"
.align 2
gDodrioBerrySpritesPal:: @ 82F7E90
.incbin "graphics/link_games/dodrioberry_berrysprites.gbapal"
.align 2
gDodrioBerrySpritesGfx:: @ 82F7EB0
.incbin "graphics/link_games/dodrioberry_berrysprites.4bpp.lz"
.align 2
gDodrioBerryPlatformPal:: @ 82F8064
.incbin "graphics/link_games/dodrioberry_platform.gbapal"
.align 2
gDodrioBerryBgGfx1:: @ 82F8084
.incbin "graphics/link_games/dodrioberry_bg1.4bpp.lz"
.align 2
gDodrioBerryBgGfx2:: @ 82F8914
.incbin "graphics/link_games/dodrioberry_bg2.4bpp.lz"
.align 2
gDodrioBerryStatusGfx:: @ 82F96E0
.incbin "graphics/link_games/dodrioberry_status.4bpp.lz"
.align 2
gDodrioBerryPlatformGfx:: @ 82F9774
.incbin "graphics/link_games/dodrioberry_platform.4bpp.lz"
.align 2
gDodrioBerryPkmnGfx:: @ 82F98BC
.incbin "graphics/link_games/dodrioberry_pkmn.4bpp.lz"
.align 2
gDodrioBerryBgTilemap1:: @ 82FAAD8
.incbin "graphics/link_games/dodrioberry_bg1.bin.lz"
.align 2
gDodrioBerryBgTilemap2Right:: @ 82FAD44
.incbin "graphics/link_games/dodrioberry_bg2right.bin.lz"
.align 2
gDodrioBerryBgTilemap2Left:: @ 82FAF94
.incbin "graphics/link_games/dodrioberry_bg2left.bin.lz"
.align 2
gUnknown_082FB1E0:: @ 82FB1E0
.byte 0x00, 0x00, 0x00, 0xc0, 0x00, 0x08, 0x00, 0x00
.align 2
gUnknown_082FB1E8:: @ 82FB1E8
.byte 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00
.align 2
gUnknown_082FB1F0:: @ 82FB1F0
.byte 0x00, 0x00, 0x00, 0x40, 0x00, 0x08, 0x00, 0x00
.align 2
gUnknown_082FB1F8:: @ 82FB1F8
.byte 0x00, 0x40, 0x00, 0xc0, 0x00, 0x0c, 0x00, 0x00
.align 2
gUnknown_082FB200:: @ 82FB200
.2byte 0x0000, 0x0014
.2byte 0xfffe, 0x0000
.align 2
gUnknown_082FB208:: @ 82FB208
.2byte 0x0040, 0x0014
.2byte 0xfffe, 0x0000
.align 2
gUnknown_082FB210:: @ 82FB210
.2byte 0x0080, 0x0014
.2byte 0xfffe, 0x0000
.align 2
gUnknown_082FB218:: @ 82FB218
.2byte 0x00c0, 0x0014
.2byte 0xfffe, 0x0000
.align 2
gUnknown_082FB220:: @ 82FB220
.2byte 0x0100, 0x0014
.2byte 0xfffe, 0x0000
.align 2
gUnknown_082FB228:: @ 82FB228
.4byte gUnknown_082FB200
.4byte gUnknown_082FB208
.4byte gUnknown_082FB210
.4byte gUnknown_082FB218
.4byte gUnknown_082FB220
.align 2
gUnknown_082FB23C:: @ 82FB23C
.2byte 0x0000, 0x0014
.2byte 0xfffe, 0x0000
.align 2
gUnknown_082FB244:: @ 82FB244
.2byte 0x0004, 0x0014
.2byte 0xfffe, 0x0000
.align 2
gUnknown_082FB24C:: @ 82FB24C
.2byte 0x0008, 0x0014
.2byte 0xfffe, 0x0000
.align 2
gUnknown_082FB254:: @ 82FB254
.4byte gUnknown_082FB23C
.4byte gUnknown_082FB244
.4byte gUnknown_082FB24C
.align 2
gUnknown_082FB260:: @ 82FB260
.2byte 0x0000, 0x0014
.2byte 0xfffe, 0x0000
.align 2
gUnknown_082FB268:: @ 82FB268
.2byte 0x0004, 0x0014
.2byte 0xfffe, 0x0000
.align 2
gUnknown_082FB270:: @ 82FB270
.2byte 0x0008, 0x0014
.2byte 0xfffe, 0x0000
.align 2
gUnknown_082FB278:: @ 82FB278
.2byte 0x000c, 0x0014
.2byte 0xfffe, 0x0000
.align 2
gUnknown_082FB280:: @ 82FB280
.2byte 0x0010, 0x0014
.2byte 0xfffe, 0x0000
.align 2
gUnknown_082FB288:: @ 82FB288
.2byte 0x0014, 0x0014
.2byte 0xfffe, 0x0000
.align 2
gUnknown_082FB290:: @ 82FB290
.2byte 0x0018, 0x0014
.2byte 0xfffe, 0x0000
.align 2
gUnknown_082FB298:: @ 82FB298
.2byte 0x001c, 0x0014
.2byte 0xfffe, 0x0000
.align 2
gUnknown_082FB2A0:: @ 82FB2A0
.2byte 0x0020, 0x0014
.2byte 0xfffe, 0x0000
.align 2
gUnknown_082FB2A8:: @ 82FB2A8
.4byte gUnknown_082FB260
.4byte gUnknown_082FB268
.4byte gUnknown_082FB270
.4byte gUnknown_082FB278
.4byte gUnknown_082FB280
.4byte gUnknown_082FB288
.4byte gUnknown_082FB290
.4byte gUnknown_082FB298
.4byte gUnknown_082FB2A0
.align 2
gUnknown_082FB2CC:: @ 82FB2CC
.2byte 0x0000, 0x0014
.2byte 0xfffe, 0x0000
.align 2
gUnknown_082FB2D4:: @ 82FB2D4
.4byte gUnknown_082FB2CC
.align 2
gUnknown_082FB2D8:: @ 82FB2D8
obj_pal gDodrioBerryPkmnPal, 0x0000
.align 2
gUnknown_082FB2E0:: @ 82FB2E0
obj_pal gDodrioBerryShinyPal, 0x0001
.align 2
gUnknown_082FB2E8:: @ 82FB2E8
obj_pal gDodrioBerryStatusPal, 0x0002
.align 2
gUnknown_082FB2F0:: @ 82FB2F0
spr_template 0x0001, 0x0002, gUnknown_082FB1E8, gUnknown_082FB254, NULL, gDummySpriteAffineAnimTable, nullsub_15
.align 2
.byte 0xD4, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x44
.byte 0x45, 0xFB, 0x00, 0x00
.align 2
gUnknown_082FB314:: @ 82FB314
obj_pal gDodrioBerrySpritesPal, 0x0003
.align 2
gUnknown_082FB31C:: @ 82FB31C
.2byte 0x0058, 0x0080, 0x00a8, 0x00d0
.align 2
gUnknown_082FB324:: @ 82FB324
spr_template 0x0002, 0x0003, gUnknown_082FB1F0, gUnknown_082FB2A8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
.align 2
gUnknown_082FB33C:: @ 82FB33C
spr_template 0x0002, 0x0003, gUnknown_082FB1E8, gUnknown_082FB2A8, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
.align 2
gUnknown_082FB354:: @ 82FB354
.byte 0x1E, 0x14
gUnknown_082FB356:: @ 82FB356
.byte 0xE6, 0x00
.align 2
gUnknown_082FB358:: @ 82FB358
.2byte 0x0037, 0x001e, 0x004a, 0x0000
.align 2
gUnknown_082FB360:: @ 82FB360
obj_pal gDodrioBerryPlatformPal, 0x0006
.align 2
gUnknown_082FB368:: @ 82FB368
spr_template 0x0005, 0x0006, gUnknown_082FB1F8, gUnknown_082FB2D4, NULL, gDummySpriteAffineAnimTable, sub_8028CF4
.align 2
gUnknown_082FB380:: @ 82FB380
.byte 0x01, 0x02, 0x03
gUnknown_082FB383:: @ 82FB383
.byte 0x01, 0x04, 0x05
.byte 0x01, 0x08, 0x09
.byte 0x01, 0x06, 0x07
.align 2
gUnknown_082FB38C:: @ 82FB38C
.byte 0x0c, 0x06, 0x00, 0x00
.align 2
gUnknown_082FB390:: @ 82FB390
.byte 0x09, 0x0a, 0x00, 0x00, 0x0f, 0x06, 0x00, 0x00
.align 2
gUnknown_082FB398:: @ 82FB398
.byte 0x0c, 0x06, 0x00, 0x00, 0x12, 0x0a, 0x00, 0x00
.byte 0x06, 0x0a, 0x00, 0x00
.align 2
gUnknown_082FB3A4:: @ 82FB3A4
.byte 0x09, 0x0a, 0x00, 0x00, 0x0f, 0x06, 0x00, 0x00
.byte 0x15, 0x0a, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00
.align 2
gUnknown_082FB3B4:: @ 82FB3B4
.byte 0x0c, 0x06, 0x00, 0x00, 0x12, 0x0a, 0x00, 0x00
.byte 0x17, 0x06, 0x00, 0x00, 0x01, 0x06, 0x00, 0x00
.byte 0x06, 0x0a, 0x00, 0x00
.align 2
gUnknown_082FB3C8:: @ 82FB3C8
.4byte gUnknown_082FB38C
.4byte gUnknown_082FB390
.4byte gUnknown_082FB398
.4byte gUnknown_082FB3A4
.4byte gUnknown_082FB3B4
.align 2
gUnknown_082FB3DC:: @ 82FB3DC
.4byte gText_1Colon
.4byte gText_2Colon
.4byte gText_3Colon
.4byte gText_4Colon
.4byte gText_5Colon
.align 2
gUnknown_082FB3F0:: @ 82FB3F0
.2byte 0x005c, 0x0084, 0x00ac, 0x00d4
gUnknown_082FB3F8:: @ 82FB3F8
.2byte 0x0021, 0x0031, 0x0041, 0x0051, 0x0061
gUnknown_082FB402:: @ 82FB402
.2byte 0x0011, 0x0021, 0x0031, 0x0041, 0x0051
.align 2
gUnknown_082FB40C:: @ 82FB40C
.4byte 0x00000000, sub_8029338
.4byte 0x00000001, sub_8029440
.4byte 0x00000002, sub_802988C
.4byte 0x00000003, sub_802A010
.4byte 0x00000004, sub_802A380
.4byte 0x00000005, sub_802A454
.4byte 0x00000006, sub_802A534
.4byte 0x00000007, sub_802A588
.4byte 0x00000008, unused_0
.4byte 0x00000009, nullsub_16
.align 2
gUnknown_082FB45C:: @ 82FB45C
.byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00

View File

@ -1,573 +0,0 @@
#include "constants/species.h"
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnknown_082FB63C:: @ 82FB63C
.2byte 0x001a, 0x001f, 0x0024, 0x0029, 0x002e, 0x0033, 0x0038, 0x003d
.align 2
gUnknown_082FB64C:: @ 82FB64C
.2byte 0x0000, 0x0001, 0x0001, 0x0002
.align 2
gUnknown_082FB654:: @ 82FB654
.2byte 0x005f, 0x0066, 0x00e4, 0x0105
.align 2
gUnknown_082FB65C:: @ 82FB65C
.byte 0xfd, 0xfa, 0xf8, 0xf6, 0xf3, 0xf1, 0xef, 0xed
.byte 0xeb, 0xe9, 0xe7, 0xe5, 0xe4, 0xe3, 0xe2, 0xe2
.byte 0xe2, 0xe4, 0xe5, 0xe6, 0xe7, 0xe9, 0xea, 0xec
.byte 0xee, 0xef, 0xf1, 0xf3, 0xf5, 0xf8, 0xfa, 0xfc
.byte 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0xfd, 0xfa, 0xf7, 0xf5, 0xf2, 0xf0, 0xee, 0xec
.byte 0xea, 0xe8, 0xe6, 0xe4, 0xe3, 0xe2, 0xe2, 0xe4
.byte 0xe6, 0xe8, 0xea, 0xec, 0xee, 0xf0, 0xf2, 0xf5
.byte 0xf7, 0xfa, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0xfd, 0xfa, 0xf7, 0xf5, 0xf3, 0xf1, 0xef, 0xed
.byte 0xeb, 0xe9, 0xe7, 0xe5, 0xe4, 0xe3, 0xe2, 0xe2
.byte 0xe2, 0xe2, 0xe3, 0xe3, 0xe4, 0xe4, 0xe5, 0xe5
.byte 0xe6, 0xe7, 0xe8, 0xea, 0xec, 0xee, 0xf0, 0xf2
.byte 0xf4, 0xf5, 0xf7, 0xfa, 0xfc, 0xff, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.align 2
gUnknown_082FB6EC:: @ 82FB6EC
.4byte 0x00000000, 0x00000000, 0x00000032, 0x00000064
.4byte 0x000000c8, 0x000001f4
.align 2
gUnknown_082FB704:: @ 82FB704
.2byte 0x008a, 0x008d, 0x008e, 0x008f, 0x0090, 0x0091, 0x0092, 0x0093
.align 2
gUnknown_082FB714:: @ 82FB714
.4byte 0x00001388, 0x00000001, 0x00001f40, 0x00000002
.4byte 0x00002ee0, 0x00000003, 0x00003e80, 0x00000004
.4byte 0x00004e20, 0x00000005
.align 2
gPkmnJumpPal1:: @ 82FB73C
.incbin "graphics/link_games/pkmnjump_pal1.gbapal"
.align 2
gPkmnJumpPal2:: @ 82FB75C
.incbin "graphics/link_games/pkmnjump_pal2.gbapal"
.align 2
gPkmnJumpRopeGfx1:: @ 82FB77C
.incbin "graphics/link_games/pkmnjump_rope1.4bpp.lz"
.align 2
gPkmnJumpRopeGfx2:: @ 82FB89C
.incbin "graphics/link_games/pkmnjump_rope2.4bpp.lz"
.align 2
gPkmnJumpRopeGfx3:: @ 82FBA70
.incbin "graphics/link_games/pkmnjump_rope3.4bpp.lz"
.align 2
gPkmnJumpRopeGfx4:: @ 82FBBA0
.incbin "graphics/link_games/pkmnjump_rope4.4bpp.lz"
.align 2
gPkmnJumpStarGfx:: @ 82FBC9C
.incbin "graphics/link_games/pkmnjump_star.4bpp.lz"
.align 2
gUnknown_082FBE08:: @ 82FBE08
obj_tiles gPkmnJumpRopeGfx1, 0x0600, 0x0005
.align 2
obj_tiles gPkmnJumpRopeGfx2, 0x0c00, 0x0006
.align 2
obj_tiles gPkmnJumpRopeGfx3, 0x0600, 0x0007
.align 2
obj_tiles gPkmnJumpRopeGfx4, 0x0600, 0x0008
.align 2
obj_tiles gPkmnJumpStarGfx, 0x0200, 0x000a
.align 2
gUnknown_082FBE30:: @ 82FBE30
obj_pal gPkmnJumpPal1, 0x0005
.align 2
obj_pal gPkmnJumpPal2, 0x0006
.align 2
gUnknown_082FBE40:: @ 82FBE40
spr_template 0x0000, 0x0000, gUnknown_082FBEC8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
gUnknown_082FBE58:: @ 82FBE58
.2byte 0x0060, 0x0060, 0x0060, 0x0072, 0x0078, 0x0078, 0x0078, 0x0072
.2byte 0x0060, 0x0060, 0x0046, 0x0050, 0x0060, 0x0072, 0x0078, 0x0080
.2byte 0x0078, 0x0072, 0x0060, 0x0050, 0x0032, 0x0048, 0x0060, 0x0072
.2byte 0x0080, 0x0088, 0x0080, 0x0072, 0x0060, 0x0048, 0x002a, 0x0048
.2byte 0x0060, 0x0072, 0x0080, 0x0088, 0x0080, 0x0072, 0x0060, 0x0048
gUnknown_082FBEA8:: @ 82FBEA8
.2byte 0x0010, 0x0028, 0x0048, 0x0068, 0x0088, 0x00a8, 0x00c8, 0x00e0
.align 2
gUnknown_082FBEB8:: @ 82FBEB8
.4byte gUnknown_082FBF78
.4byte gUnknown_082FBF90
.4byte gUnknown_082FBFA8
.4byte gUnknown_082FBFC0
.align 2
gUnknown_082FBEC8:: @ 82FBED0
.byte 0x00, 0x00, 0x00, 0xc0, 0x00, 0x08, 0x00, 0x00
.align 2
gUnknown_082FBED0:: @ 82FBED0
.byte 0x00, 0x80, 0x00, 0x80, 0x00, 0x08, 0x00, 0x00
.align 2
gUnknown_082FBED8:: @ 82FBED8
.byte 0x00, 0x00, 0x00, 0x80, 0x00, 0x08, 0x00, 0x00
.align 2
gUnknown_082FBEE0:: @ 82FBEE0
.byte 0x00, 0x40, 0x00, 0x80, 0x00, 0x08, 0x00, 0x00
.align 2
gUnknown_082FBEE8:: @ 82FBEE8
.2byte 0x0000, 0x0001
.2byte 0xffff, 0x0000
.align 2
gUnknown_082FBEF0:: @ 82FBEF0
.2byte 0x0008, 0x0001
.2byte 0xffff, 0x0000
.align 2
gUnknown_082FBEF8:: @ 82FBEF8
.2byte 0x0010, 0x0001
.2byte 0xffff, 0x0000
.align 2
gUnknown_082FBF00:: @ 82FBF00
.2byte 0x0018, 0x0001
.2byte 0xffff, 0x0000
.align 2
gUnknown_082FBF08:: @ 82FBF08
.2byte 0x0020, 0x0001
.2byte 0xffff, 0x0000
.align 2
gUnknown_082FBF10:: @ 82FBF10
.2byte 0x0028, 0x0001
.2byte 0xffff, 0x0000
.align 2
gUnknown_082FBF18:: @ 82FBF18
.2byte 0x0000, 0x0001
.2byte 0xffff, 0x0000
.align 2
gUnknown_082FBF20:: @ 82FBF20
.2byte 0x0010, 0x0001
.2byte 0xffff, 0x0000
.align 2
gUnknown_082FBF28:: @ 82FBF28
.2byte 0x0020, 0x0001
.2byte 0xffff, 0x0000
.align 2
gUnknown_082FBF30:: @ 82FBF30
.2byte 0x0030, 0x0001
.2byte 0xffff, 0x0000
.align 2
gUnknown_082FBF38:: @ 82FBF38
.2byte 0x0040, 0x0001
.2byte 0xffff, 0x0000
.align 2
gUnknown_082FBF40:: @ 82FBF40
.2byte 0x0050, 0x0001
.2byte 0xffff, 0x0000
.align 2
gUnknown_082FBF48:: @ 82FBF48
.4byte gUnknown_082FBEE8
.4byte gUnknown_082FBEF0
.4byte gUnknown_082FBEF8
.4byte gUnknown_082FBF00
.4byte gUnknown_082FBF08
.4byte gUnknown_082FBF10
.align 2
gUnknown_082FBF60:: @ 82FBF60
.4byte gUnknown_082FBF18
.4byte gUnknown_082FBF20
.4byte gUnknown_082FBF28
.4byte gUnknown_082FBF30
.4byte gUnknown_082FBF38
.4byte gUnknown_082FBF40
.align 2
gUnknown_082FBF78:: @ 82FBF78
spr_template 0x0005, 0x0005, gUnknown_082FBED0, gUnknown_082FBF48, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
.align 2
gUnknown_082FBF90:: @ 82FBF90
spr_template 0x0006, 0x0005, gUnknown_082FBED8, gUnknown_082FBF60, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
.align 2
gUnknown_082FBFA8:: @ 82FBFA8
spr_template 0x0007, 0x0005, gUnknown_082FBEE0, gUnknown_082FBF48, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
.align 2
gUnknown_082FBFC0:: @ 82FBFC0
spr_template 0x0008, 0x0005, gUnknown_082FBEE0, gUnknown_082FBF48, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
.align 2
gUnknown_082FBFD8:: @ 82FBFD8
.byte 0x00, 0x00, 0x00, 0x40, 0x00, 0x04, 0x00, 0x00
.align 2
gUnknown_082FBFE0:: @ 82FBFE0
.2byte 0x0000, 0x0000
.2byte 0xffff, 0x0000
.align 2
gUnknown_082FBFE8:: @ 82FBFE8
.2byte 0x0000, 0x0004
.2byte 0x0004, 0x0004
.2byte 0x0008, 0x0004
.2byte 0x000c, 0x0004
.2byte 0xfffd, 0x0001
.2byte 0x0000, 0x0004
.2byte 0xffff, 0x0000
.align 2
gUnknown_082FC004:: @ 82FC004
.4byte gUnknown_082FBFE0
.4byte gUnknown_082FBFE8
.align 2
gUnknown_082FC00C:: @ 82FC00C
spr_template 0x000a, 0x0005, gUnknown_082FBFD8, gUnknown_082FC004, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
.align 2
gPkmnJumpPal3:: @ 82FC024
.incbin "graphics/link_games/pkmnjump_pal3.gbapal"
.align 2
gPkmnJumpBgPal:: @ 82FC044
.incbin "graphics/link_games/pkmnjump_bg.gbapal"
.align 2
gPkmnJumpBgGfx:: @ 82FC064
.incbin "graphics/link_games/pkmnjump_bg.4bpp.lz"
.align 2
gPkmnJumpBgTilemap:: @ 82FC290
.incbin "graphics/link_games/pkmnjump_bg.bin.lz"
.align 2
gPkmnJumpVenusaurPal:: @ 82FC440
.incbin "graphics/link_games/pkmnjump_venusaur.gbapal"
.align 2
gPkmnJumpVenusaurGfx:: @ 82FC460
.incbin "graphics/link_games/pkmnjump_venusaur.4bpp.lz"
.align 2
gPkmnJumpVenusaurTilemap:: @ 82FCDB0
.incbin "graphics/link_games/pkmnjump_venusaur.bin.lz"
.align 2
gPkmnJumpResultsPal:: @ 82FD168
.incbin "graphics/link_games/pkmnjump_results.gbapal"
.align 2
gPkmnJumpResultsGfx:: @ 82FD188
.incbin "graphics/link_games/pkmnjump_results.4bpp.lz"
.align 2
gPkmnJumpResultsTilemap:: @ 82FDC38
.incbin "graphics/link_games/pkmnjump_results.bin.lz"
.align 2
gUnknown_082FE164:: @ 82FE164 struct BgTemplate
.4byte 0x000001b0, 0x000025e6, 0x000016c9, 0x000031df
.align 2
gUnknown_082FE174:: @ 82FE174
window_template 0x00, 0x13, 0x00, 0x06, 0x02, 0x02, 0x0013
window_template 0x00, 0x08, 0x00, 0x06, 0x02, 0x02, 0x001f
null_window_template
.align 2
gUnknown_082FE18C:: @ 82FE18C
.4byte 0x00000000, sub_802D150
.4byte 0x00000001, sub_802D2E4
.4byte 0x00000002, sub_802D350
.4byte 0x00000003, sub_802D3BC
.4byte 0x00000004, sub_802D448
.4byte 0x00000005, sub_802D4F4
.4byte 0x00000006, sub_802D598
.4byte 0x00000007, sub_802D5E4
.4byte 0x00000009, sub_802D72C
.4byte 0x00000008, sub_802D688
.align 2
gUnknown_082FE1DC:: @ 82FE1DC
.byte 0x00, 0x02, 0x03
gUnknown_082FE1DF:: @ 82FE1DF
.byte 0x02, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00
.byte 0x00, 0x02, 0x00, 0x00, 0x00
.align 2
gUnknown_082FE1EC:: @ 82FE1EC
obj_tiles gUnknown_082FF1F8, 0x0000, 0x0320
.align 2
gUnknown_082FE1F4:: @ 82FE1F4
obj_pal gUnknown_082FF1D8, 0x0320
.align 2
gUnknown_082FE1FC:: @ 82FE1FC
.2byte 0x0006, 0x0008, 0x0010, 0x0008
.align 2
gUnknown_082FE204:: @ 82FE204
.2byte 0x0006, 0x0008, 0x000b, 0x0006, 0x0010, 0x0008
.align 2
gUnknown_082FE210:: @ 82FE210
.2byte 0x0002, 0x0006, 0x0006, 0x0008, 0x0010, 0x0008, 0x0014, 0x0006
.align 2
gUnknown_082FE220:: @ 82FE220
.2byte 0x0002, 0x0006, 0x0006, 0x0008, 0x000b, 0x0006
.2byte 0x0010, 0x0008, 0x0014, 0x0006
.align 2
gUnknown_082FE234:: @ 82FE234
.4byte gUnknown_082FE1FC
.4byte gUnknown_082FE204
.4byte gUnknown_082FE210
.4byte gUnknown_082FE220
.align 2
gUnknown_082FE244:: @ 82FE244
.2byte 0x0058, 0x0098
gUnknown_082FE248:: @ 82FE248
.2byte 0x0058, 0x0078, 0x0098
gUnknown_082FE24E:: @ 82FE24E
.2byte 0x0038, 0x0058, 0x0098, 0x00b8
gUnknown_082FE256:: @ 82FE256
.2byte 0x0038, 0x0058, 0x0078, 0x0098, 0x00b8
.align 2
gUnknown_082FE260:: @ 82FE260
.4byte gUnknown_082FE244
.4byte gUnknown_082FE248
.4byte gUnknown_082FE24E
.4byte gUnknown_082FE256
.align 2
gUnknown_082FE270:: @ 82FE270
.4byte 0x1c010100, 0x00010f09
.align 2
gUnknown_082FE278:: @ 82FE278
.4byte gText_JumpsInARow
.4byte gText_BestScore2
.4byte gText_ExcellentsInARow
.align 2
gPkmnJump321StartPal1:: @ 82FE284
.incbin "graphics/link_games/pkmnjump_321start1.gbapal"
.align 2
gPkmnJump321StartGfx1:: @ 82FE2A4
.incbin "graphics/link_games/pkmnjump_321start1.4bpp.lz"
.align 2
gUnknown_082FE6C8:: @ 82FE6C8
obj_tiles gPkmnJump321StartGfx1, 0x0c00, 0x2000
null_obj_tiles
.align 2
gUnknown_082FE6D8:: @ 82FE6D8
obj_pal gPkmnJump321StartPal1, 0x2000
null_obj_pal
.align 2
gUnknown_082FE6E8:: @ 82FE6E8
.2byte 0x0000, 0x0000
.2byte 0xffff, 0x0000
.align 2
gUnknown_082FE6F0:: @ 82FE6F0
.2byte 0x0010, 0x0000
.2byte 0xffff, 0x0000
.align 2
gUnknown_082FE6F8:: @ 82FE6F8
.2byte 0x0020, 0x0000
.2byte 0xffff, 0x0000
.align 2
gUnknown_082FE700:: @ 82FE700
.2byte 0x0040, 0x0000
.2byte 0xffff, 0x0000
.align 2
gUnknown_082FE708:: @ 82FE708
.2byte 0x0030, 0x0000
.2byte 0xffff, 0x0000
.align 2
gUnknown_082FE710:: @ 82FE710
.2byte 0x0050, 0x0000
.2byte 0xffff, 0x0000
.align 2
gUnknown_082FE718:: @ 82FE718
.4byte gUnknown_082FE6E8
.4byte gUnknown_082FE6F0
.4byte gUnknown_082FE6F8
.4byte gUnknown_082FE700
.4byte gUnknown_082FE708
.4byte gUnknown_082FE710
.align 2
gUnknown_082FE730:: @ 82FE730
spr_template 0x2000, 0x2000, gUnknown_08524914, gUnknown_082FE718, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
.align 2
gUnknown_082FE748:: @ 82FE748
.4byte sub_802E83C
.4byte sub_802E8C8
.4byte sub_802EA50
.4byte sub_802EAB0
.align 2
gPkmnJump321StartPal2:: @ 82FE758
.incbin "graphics/link_games/pkmnjump_321start2.gbapal"
.align 2
gPkmnJump321StartGfx2:: @ 82FE778
.incbin "graphics/link_games/pkmnjump_321start2.4bpp.lz"
.align 2
gUnknown_082FEBCC:: @ 82FEBCC
obj_tiles gPkmnJump321StartGfx2, 0x0e00, 0x0000
.align 2
gUnknown_082FEBD4:: @ 82FEBD4
obj_pal gPkmnJump321StartPal2, 0x0000
.align 2
gUnknown_082FEBDC:: @ 82FEBDC
.byte 0x00, 0x03, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00
.align 2
gUnknown_082FEBE4:: @ 82FEBE4
.byte 0x00, 0x40, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00
.align 2
gUnknown_082FEBEC:: @ 82FEBEC
.2byte 0x0000, 0x0001
.2byte 0xffff, 0x0000
.align 2
gUnknown_082FEBF4:: @ 82FEBF4
.2byte 0x0010, 0x0001
.2byte 0xffff, 0x0000
.align 2
gUnknown_082FEBFC:: @ 82FEBFC
.2byte 0x0020, 0x0001
.2byte 0xffff, 0x0000
.align 2
gUnknown_082FEC04:: @ 82FEC04
.4byte gUnknown_082FEBEC
.4byte gUnknown_082FEBF4
.4byte gUnknown_082FEBFC
.align 2
gUnknown_082FEC10:: @ 82FEC10
.2byte 0x0030, 0x0001
.2byte 0xffff, 0x0000
.align 2
gUnknown_082FEC18:: @ 82FEC18
.2byte 0x0050, 0x0001
.2byte 0xffff, 0x0000
.align 2
gUnknown_082FEC20:: @ 82FEC20
.4byte gUnknown_082FEC10
.4byte gUnknown_082FEC18
.align 2
gUnknown_082FEC28:: @ 82FEC28
.2byte 0x0100, 0x0100
.2byte 0x0000, 0x0000
.2byte 0x7fff, 0x0000
.2byte 0x0000, 0x0000
.align 2
gUnknown_082FEC38:: @ 82FEC38
.2byte 0x0100, 0x0100
.2byte 0x0000, 0x0000
.2byte 0x0010, 0xfff0
.2byte 0x0800, 0x0000
.2byte 0x7fff, 0x0000
.2byte 0x0000, 0x0000
.align 2
gUnknown_082FEC50:: @ 82FEC50
.2byte 0xffee, 0x0012
.2byte 0x0800, 0x0000
.2byte 0x7fff, 0x0000
.2byte 0x0000, 0x0000
.align 2
gUnknown_082FEC60:: @ 82FEC60
.2byte 0x0006, 0xfffa
.2byte 0x0800, 0x0000
.2byte 0xfffc, 0x0004
.2byte 0x0800, 0x0000
.2byte 0x0100, 0x0100
.2byte 0x0000, 0x0000
.2byte 0x7fff, 0x0000
.2byte 0x0000, 0x0000
.align 2
gUnknown_082FEC80:: @ 82FEC80
.4byte gUnknown_082FEC28
.4byte gUnknown_082FEC38
.4byte gUnknown_082FEC50
.4byte gUnknown_082FEC60
gUnknown_082FEC90:: @ 82FEC90
spr_template 0x0000, 0x0000, gUnknown_082FEBDC, gUnknown_082FEC04, NULL, gUnknown_082FEC80, SpriteCallbackDummy
gUnknown_082FECA8:: @ 82FECA8
spr_template 0x0000, 0x0000, gUnknown_082FEBE4, gUnknown_082FEC20, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy

File diff suppressed because it is too large Load Diff

View File

@ -1,207 +0,0 @@
gGiftRibbonDescriptionPart1_2003RegionalTourney:: @ 8623A74
.string "2003 REGIONAL TOURNEY$"
gGiftRibbonDescriptionPart2_Champion:: @ 8623A8A
.string "CHAMPION RIBBON$"
gGiftRibbonDescriptionPart1_2003NationalTourney:: @ 8623A9A
.string "2003 NATIONAL TOURNEY$"
gGiftRibbonDescriptionPart1_2003GlobalCup:: @ 8623AB0
.string "2003 GLOBAL CUP$"
gGiftRibbonDescriptionPart2_RunnerUp:: @ 8623AC0
.string "Runner-up RIBBON$"
gGiftRibbonDescriptionPart2_Semifinalist:: @ 8623AD1
.string "Semifinalist RIBBON$"
gGiftRibbonDescriptionPart1_2004RegionalTourney:: @ 8623AE5
.string "2004 REGIONAL TOURNEY$"
gGiftRibbonDescriptionPart1_2004NationalTourney:: @ 8623AFB
.string "2004 NATIONAL TOURNEY$"
gGiftRibbonDescriptionPart1_2004GlobalCup:: @ 8623B11
.string "2004 GLOBAL CUP$"
gGiftRibbonDescriptionPart1_2005RegionalTourney:: @ 8623B21
.string "2005 REGIONAL TOURNEY$"
gGiftRibbonDescriptionPart1_2005NationalTourney:: @ 8623B37
.string "2005 NATIONAL TOURNEY$"
gGiftRibbonDescriptionPart1_2005GlobalCup:: @ 8623B4D
.string "2005 GLOBAL CUP$"
gGiftRibbonDescriptionPart1_PokemonBattleCup:: @ 8623B5D
.string "POKéMON BATTLE CUP$"
gGiftRibbonDescriptionPart2_Participation:: @ 8623B70
.string "Participation RIBBON$"
gGiftRibbonDescriptionPart1_PokemonLeague:: @ 8623B85
.string "POKéMON LEAGUE$"
gGiftRibbonDescriptionPart1_AdvanceCup:: @ 8623B94
.string "ADVANCE CUP$"
gGiftRibbonDescriptionPart1_PokemonTournament:: @ 8623BA0
.string "POKéMON Tournament$"
gGiftRibbonDescriptionPart2_Participation2:: @ 8623BB3
.string "Participation RIBBON$"
gGiftRibbonDescriptionPart1_PokemonEvent:: @ 8623BC8
.string "POKéMON Event$"
gGiftRibbonDescriptionPart1_PokemonFestival:: @ 8623BD6
.string "POKéMON Festival$"
gGiftRibbonDescriptionPart1_DifficultyClearing:: @ 8623BE7
.string "Difficulty-clearing$"
gGiftRibbonDescriptionPart2_Commemorative:: @ 8623BFB
.string "Commemorative RIBBON$"
gGiftRibbonDescriptionPart1_ClearingAllChallenges:: @ 8623C10
.string "RIBBON awarded for$"
gGiftRibbonDescriptionPart2_ClearingAllChallenges:: @ 8623C23
.string "clearing all challenges.$"
gGiftRibbonDescriptionPart1_100StraightWin:: @ 8623C3C
.string "100-straight Win$"
gGiftRibbonDescriptionPart1_DarknessTower:: @ 8623C4D
.string "DARKNESS TOWER Clear$"
gGiftRibbonDescriptionPart1_RedTower:: @ 8623C62
.string "RED TOWER Clear$"
gGiftRibbonDescriptionPart1_BlackironTower:: @ 8623C72
.string "BLACKIRON TOWER Clear$"
gGiftRibbonDescriptionPart1_FinalTower:: @ 8623C88
.string "FINAL TOWER Clear$"
gGiftRibbonDescriptionPart1_LegendMaking:: @ 8623C9A
.string "Legend-making$"
gGiftRibbonDescriptionPart1_PokemonCenterTokyo:: @ 8623CA8
.string "POKéMON CENTER TOKYO$"
gGiftRibbonDescriptionPart1_PokemonCenterOsaka:: @ 8623CBD
.string "POKéMON CENTER OSAKA$"
gGiftRibbonDescriptionPart1_PokemonCenterNagoya:: @ 8623CD2
.string "POKéMON CENTER NAGOYA$"
gGiftRibbonDescriptionPart1_PokemonCenterNY:: @ 8623CE8
.string "POKéMON CENTER NY$"
gGiftRibbonDescriptionPart1_SummerHolidays:: @ 8623CFA
.string "Summer Holidays RIBBON$"
gGiftRibbonDescriptionPart2_EmptyString:: @ 8623D11
.string "$"
gGiftRibbonDescriptionPart1_WinterHolidays:: @ 8623D12
.string "Winter Holidays RIBBON$"
gGiftRibbonDescriptionPart1_SpringHolidays:: @ 8623D29
.string "Spring Holidays RIBBON$"
gGiftRibbonDescriptionPart1_Evergreen:: @ 8623D40
.string "Evergreen RIBBON$"
gGiftRibbonDescriptionPart1_SpecialHoliday:: @ 8623D51
.string "Special Holiday RIBBON$"
gGiftRibbonDescriptionPart1_HardWorker:: @ 8623D68
.string "Hard Worker RIBBON$"
gGiftRibbonDescriptionPart1_LotsOfFriends:: @ 8623D7B
.string "Lots of Friends RIBBON$"
gGiftRibbonDescriptionPart1_FullOfEnergy:: @ 8623D92
.string "Full of Energy RIBBON$"
gGiftRibbonDescriptionPart1_LovedPokemon:: @ 8623DA8
.string "A commemorative RIBBON$"
gGiftRibbonDescriptionPart2_LovedPokemon:: @ 8623DBF
.string "for a loved POKéMON.$"
gGiftRibbonDescriptionPart1_LoveForPokemon:: @ 8623DD4
.string "RIBBON that shows$"
gGiftRibbonDescriptionPart2_LoveForPokemon:: @ 8623DE6
.string "love for POKéMON.$"
.align 2
gGiftRibbonDescriptionPointers:: @ 8623DF8
.4byte gGiftRibbonDescriptionPart1_2003RegionalTourney, gGiftRibbonDescriptionPart2_Champion
.4byte gGiftRibbonDescriptionPart1_2003NationalTourney, gGiftRibbonDescriptionPart2_Champion
.4byte gGiftRibbonDescriptionPart1_2003GlobalCup, gGiftRibbonDescriptionPart2_Champion
.4byte gGiftRibbonDescriptionPart1_2003RegionalTourney, gGiftRibbonDescriptionPart2_RunnerUp
.4byte gGiftRibbonDescriptionPart1_2003NationalTourney, gGiftRibbonDescriptionPart2_RunnerUp
.4byte gGiftRibbonDescriptionPart1_2003GlobalCup, gGiftRibbonDescriptionPart2_RunnerUp
.4byte gGiftRibbonDescriptionPart1_2003RegionalTourney, gGiftRibbonDescriptionPart2_Semifinalist
.4byte gGiftRibbonDescriptionPart1_2003NationalTourney, gGiftRibbonDescriptionPart2_Semifinalist
.4byte gGiftRibbonDescriptionPart1_2003GlobalCup, gGiftRibbonDescriptionPart2_Semifinalist
.4byte gGiftRibbonDescriptionPart1_2004RegionalTourney, gGiftRibbonDescriptionPart2_Champion
.4byte gGiftRibbonDescriptionPart1_2004NationalTourney, gGiftRibbonDescriptionPart2_Champion
.4byte gGiftRibbonDescriptionPart1_2004GlobalCup, gGiftRibbonDescriptionPart2_Champion
.4byte gGiftRibbonDescriptionPart1_2004RegionalTourney, gGiftRibbonDescriptionPart2_RunnerUp
.4byte gGiftRibbonDescriptionPart1_2004NationalTourney, gGiftRibbonDescriptionPart2_RunnerUp
.4byte gGiftRibbonDescriptionPart1_2004GlobalCup, gGiftRibbonDescriptionPart2_RunnerUp
.4byte gGiftRibbonDescriptionPart1_2004RegionalTourney, gGiftRibbonDescriptionPart2_Semifinalist
.4byte gGiftRibbonDescriptionPart1_2004NationalTourney, gGiftRibbonDescriptionPart2_Semifinalist
.4byte gGiftRibbonDescriptionPart1_2004GlobalCup, gGiftRibbonDescriptionPart2_Semifinalist
.4byte gGiftRibbonDescriptionPart1_2005RegionalTourney, gGiftRibbonDescriptionPart2_Champion
.4byte gGiftRibbonDescriptionPart1_2005NationalTourney, gGiftRibbonDescriptionPart2_Champion
.4byte gGiftRibbonDescriptionPart1_2005GlobalCup, gGiftRibbonDescriptionPart2_Champion
.4byte gGiftRibbonDescriptionPart1_2005RegionalTourney, gGiftRibbonDescriptionPart2_RunnerUp
.4byte gGiftRibbonDescriptionPart1_2005NationalTourney, gGiftRibbonDescriptionPart2_RunnerUp
.4byte gGiftRibbonDescriptionPart1_2005GlobalCup, gGiftRibbonDescriptionPart2_RunnerUp
.4byte gGiftRibbonDescriptionPart1_2005RegionalTourney, gGiftRibbonDescriptionPart2_Semifinalist
.4byte gGiftRibbonDescriptionPart1_2005NationalTourney, gGiftRibbonDescriptionPart2_Semifinalist
.4byte gGiftRibbonDescriptionPart1_2005GlobalCup, gGiftRibbonDescriptionPart2_Semifinalist
.4byte gGiftRibbonDescriptionPart1_PokemonBattleCup, gGiftRibbonDescriptionPart2_Champion
.4byte gGiftRibbonDescriptionPart1_PokemonBattleCup, gGiftRibbonDescriptionPart2_RunnerUp
.4byte gGiftRibbonDescriptionPart1_PokemonBattleCup, gGiftRibbonDescriptionPart2_Semifinalist
.4byte gGiftRibbonDescriptionPart1_PokemonBattleCup, gGiftRibbonDescriptionPart2_Participation
.4byte gGiftRibbonDescriptionPart1_PokemonLeague, gGiftRibbonDescriptionPart2_Champion
.4byte gGiftRibbonDescriptionPart1_PokemonLeague, gGiftRibbonDescriptionPart2_RunnerUp
.4byte gGiftRibbonDescriptionPart1_PokemonLeague, gGiftRibbonDescriptionPart2_Semifinalist
.4byte gGiftRibbonDescriptionPart1_PokemonLeague, gGiftRibbonDescriptionPart2_Participation
.4byte gGiftRibbonDescriptionPart1_AdvanceCup, gGiftRibbonDescriptionPart2_Champion
.4byte gGiftRibbonDescriptionPart1_AdvanceCup, gGiftRibbonDescriptionPart2_RunnerUp
.4byte gGiftRibbonDescriptionPart1_AdvanceCup, gGiftRibbonDescriptionPart2_Semifinalist
.4byte gGiftRibbonDescriptionPart1_AdvanceCup, gGiftRibbonDescriptionPart2_Participation
.4byte gGiftRibbonDescriptionPart1_PokemonTournament, gGiftRibbonDescriptionPart2_Participation2
.4byte gGiftRibbonDescriptionPart1_PokemonEvent, gGiftRibbonDescriptionPart2_Participation2
.4byte gGiftRibbonDescriptionPart1_PokemonFestival, gGiftRibbonDescriptionPart2_Participation2
.4byte gGiftRibbonDescriptionPart1_DifficultyClearing, gGiftRibbonDescriptionPart2_Commemorative
.4byte gGiftRibbonDescriptionPart1_ClearingAllChallenges, gGiftRibbonDescriptionPart2_ClearingAllChallenges
.4byte gGiftRibbonDescriptionPart1_100StraightWin, gGiftRibbonDescriptionPart2_Commemorative
.4byte gGiftRibbonDescriptionPart1_DarknessTower, gGiftRibbonDescriptionPart2_Commemorative
.4byte gGiftRibbonDescriptionPart1_RedTower, gGiftRibbonDescriptionPart2_Commemorative
.4byte gGiftRibbonDescriptionPart1_BlackironTower, gGiftRibbonDescriptionPart2_Commemorative
.4byte gGiftRibbonDescriptionPart1_FinalTower, gGiftRibbonDescriptionPart2_Commemorative
.4byte gGiftRibbonDescriptionPart1_LegendMaking, gGiftRibbonDescriptionPart2_Commemorative
.4byte gGiftRibbonDescriptionPart1_PokemonCenterTokyo, gGiftRibbonDescriptionPart2_Commemorative
.4byte gGiftRibbonDescriptionPart1_PokemonCenterOsaka, gGiftRibbonDescriptionPart2_Commemorative
.4byte gGiftRibbonDescriptionPart1_PokemonCenterNagoya, gGiftRibbonDescriptionPart2_Commemorative
.4byte gGiftRibbonDescriptionPart1_PokemonCenterNY, gGiftRibbonDescriptionPart2_Commemorative
.4byte gGiftRibbonDescriptionPart1_SummerHolidays, gGiftRibbonDescriptionPart2_EmptyString
.4byte gGiftRibbonDescriptionPart1_WinterHolidays, gGiftRibbonDescriptionPart2_EmptyString
.4byte gGiftRibbonDescriptionPart1_SpringHolidays, gGiftRibbonDescriptionPart2_EmptyString
.4byte gGiftRibbonDescriptionPart1_Evergreen, gGiftRibbonDescriptionPart2_EmptyString
.4byte gGiftRibbonDescriptionPart1_SpecialHoliday, gGiftRibbonDescriptionPart2_EmptyString
.4byte gGiftRibbonDescriptionPart1_HardWorker, gGiftRibbonDescriptionPart2_EmptyString
.4byte gGiftRibbonDescriptionPart1_LotsOfFriends, gGiftRibbonDescriptionPart2_EmptyString
.4byte gGiftRibbonDescriptionPart1_FullOfEnergy, gGiftRibbonDescriptionPart2_EmptyString
.4byte gGiftRibbonDescriptionPart1_LovedPokemon, gGiftRibbonDescriptionPart2_LovedPokemon
.4byte gGiftRibbonDescriptionPart1_LoveForPokemon, gGiftRibbonDescriptionPart2_LoveForPokemon

View File

@ -1,84 +0,0 @@
gRibbonDescriptionPart1_Champion:: @ 862383C
.string "CHAMPION-beating, HALL$"
gRibbonDescriptionPart2_Champion:: @ 8623853
.string "OF FAME Member RIBBON$"
gRibbonDescriptionPart1_CoolContest:: @ 8623869
.string "COOL CONTEST$"
gRibbonDescriptionPart1_BeautyContest:: @ 8623876
.string "BEAUTY CONTEST$"
gRibbonDescriptionPart1_CuteContest:: @ 8623885
.string "CUTE CONTEST$"
gRibbonDescriptionPart1_SmartContest:: @ 8623892
.string "SMART CONTEST$"
gRibbonDescriptionPart1_ToughContest:: @ 86238A0
.string "TOUGH CONTEST$"
gRibbonDescriptionPart2_NormalRank:: @ 86238AE
.string "Normal Rank winner!$"
gRibbonDescriptionPart2_SuperRank:: @ 86238C2
.string "Super Rank winner!$"
gRibbonDescriptionPart2_HyperRank:: @ 86238D5
.string "Hyper Rank winner!$"
gRibbonDescriptionPart2_MasterRank:: @ 86238E8
.string "Master Rank winner!$"
gRibbonDescriptionPart1_Winning:: @ 86238FC
.string "For clearing LV50$"
gRibbonDescriptionPart2_Winning:: @ 862390E
.string "at the BATTLE TOWER.$"
gRibbonDescriptionPart1_Victory:: @ 8623923
.string "For clearing Open Level$"
gRibbonDescriptionPart2_Victory:: @ 862393B
.string "at the BATTLE TOWER.$"
gRibbonDescriptionPart1_Artist:: @ 8623950
.string "RIBBON for being chosen$"
gRibbonDescriptionPart2_Artist:: @ 8623968
.string "as a super sketch model.$"
gRibbonDescriptionPart1_Effort:: @ 8623981
.string "RIBBON awarded for$"
gRibbonDescriptionPart2_Effort:: @ 8623994
.string "being a hard worker.$"
.align 2
gRibbonDescriptionPointers:: @ 86239AC
.4byte gRibbonDescriptionPart1_Champion, gRibbonDescriptionPart2_Champion
.4byte gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_NormalRank
.4byte gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_SuperRank
.4byte gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_HyperRank
.4byte gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_MasterRank
.4byte gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_NormalRank
.4byte gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_SuperRank
.4byte gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_HyperRank
.4byte gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_MasterRank
.4byte gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_NormalRank
.4byte gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_SuperRank
.4byte gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_HyperRank
.4byte gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_MasterRank
.4byte gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_NormalRank
.4byte gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_SuperRank
.4byte gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_HyperRank
.4byte gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_MasterRank
.4byte gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_NormalRank
.4byte gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_SuperRank
.4byte gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_HyperRank
.4byte gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_MasterRank
.4byte gRibbonDescriptionPart1_Winning, gRibbonDescriptionPart2_Winning
.4byte gRibbonDescriptionPart1_Victory, gRibbonDescriptionPart2_Victory
.4byte gRibbonDescriptionPart1_Artist, gRibbonDescriptionPart2_Artist
.4byte gRibbonDescriptionPart1_Effort, gRibbonDescriptionPart2_Effort

View File

@ -1,113 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 4
gUnknown_085DFA60:: @ 85DFA60
.incbin "graphics/interface/85DFA60.bin"
gUnknown_085DFA80:: @ 85DFA80
.incbin "graphics/interface/85DFA80.4bpp"
gUnknown_085DFB60:: @ 85DFB60
.incbin "graphics/interface/85DFB60.bin"
gUnknown_085DFC0C:: @ 85DFC0C
.incbin "graphics/interface/85DFC0C.bin"
gUnknown_085DFCB0:: @ 85DFCB0
.4byte 22, 47, 33, 24, 23
gUnknown_085DFCC4:: @ 85DFCC4
.byte 0, 4, 3, 2, 1
gUnknown_085DFCC9:: @ 85DFCC9
.byte 0, 8, 1
gUnknown_085DFCCC:: @ 85DFCCC
.4byte 0x1F8
.4byte 0x31E1
.4byte 0x4021DF
.4byte 0x1172
gUnknown_085DFCDC:: @ 85DFCDC
window_template 0, 0xD, 1, 0xD, 4, 0xF, 1
window_template 0, 0, 0xE, 0xB, 2, 0xF, 0x35
window_template 0, 1, 0x11, 0x1C, 2, 0xF, 0x4B
null_window_template
sUsePokeblockYesNoWinTemplate:: @ 85DFCFC
window_template 0, 0x18, 0xB, 5, 4, 0xF, 0x83
sContestStatNames:: @ 85DFD04
.4byte gText_Coolness
.4byte gText_Toughness
.4byte gText_Smartness
.4byte gText_Cuteness
.4byte gText_Beauty3
gSpriteSheet_ConditionUpDown:: @ 85DFD18
obj_tiles gUsePokeblockUpDown_Gfx, 0x200, 0
gSpritePalette_ConditionUpDown:: @ 85DFD20
obj_pal gUsePokeblockUpDown_Pal, 0
gUnknown_085DFD28:: @ 85DFD28
.2byte 0x9c, 0x24
.2byte 0x75, 0x3b
.2byte 0x75, 0x76
.2byte 0xc5, 0x76
.2byte 0xc5, 0x3b
gUnknown_085DFD3C:: @ 85DFD3C
.2byte 0x4000
.2byte 0x8000
.2byte 0x400
.2byte 0
gUnknown_085DFD44:: @ 85DFD44
obj_image_anim_frame 0, 5
obj_image_anim_end
gUnknown_085DFD4C:: @ 85DFD4C
obj_image_anim_frame 8, 5
obj_image_anim_end
gUnknown_085DFD54:: @ 85DFD54
.4byte gUnknown_085DFD44
.4byte gUnknown_085DFD4C
gSpriteTemplate_085DFD5C:: @ 85DFD5C
spr_template 0, 0, gUnknown_085DFD3C, gUnknown_085DFD54, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
gUnknown_085DFD74:: @ 85DFD74
.2byte 0x4000
.2byte 0xC000
.2byte 0x400
.2byte 0
gUnknown_085DFD7C:: @ 85DFD7C
obj_image_anim_frame 0, 5
obj_image_anim_end
gUnknown_085DFD84:: @ 85DFD84
obj_image_anim_frame 32, 5
obj_image_anim_end
gUnknown_085DFD8C:: @ 85DFD8C
obj_image_anim_frame 64, 5
obj_image_anim_end
gUnknown_085DFD94:: @ 85DFD94
.4byte gUnknown_085DFD7C
.4byte gUnknown_085DFD84
.4byte gUnknown_085DFD8C
gUnknown_085DFDA0:: @ 85DFDA0
spr_template 1, 1, gUnknown_085DFD74, gUnknown_085DFD94, NULL, gDummySpriteAffineAnimTable, sub_8168374
gUnknown_085DFDB8:: @ 85DFDB8
.4byte gUsePokeblockCondition_Pal
.4byte 1

View File

@ -1 +1,3 @@
0000000000000000000000000000000 0 0000000000000000000 00000000000000000000 00000000000000000000000000000
00000000000000000000000000000000 0 0 0 0 00 000000000
0000 0 0 0 0 0 00 000000000
000000 0 0 0 00 0000000000000000000000

View File

@ -1,3 +1 @@
00000000000000000000000000000000 0 0 0 0 00 000000000
0000 0 0 0 0 0 00 000000000
000000 0 0 0 00 0000000000000000000000
0000000000000000000000000000000 0 0000000000000000000 00000000000000000000 00000000000000000000000000000

View File

@ -1,3 +1,3 @@
000000000000000000000000000000000000000000 00 00 0 000000
0000000000
00000000 0 00 00000000000000000000000000
000000000000000000000000000000000000
000000 000 00 0 000000
0000000000 0000000000000 0 00000000 00000000000000

View File

@ -1,3 +1,3 @@
000000000000000000000000000000000000
000000 000 00 0 000000
0000000000 0000000000000 0 00000000 00000000000000
000000000000000000000000000000000000000000 00 00 0 000000
0000000000
00000000 0 00 00000000000000000000000000

View File

@ -1 +1,3 @@
0000000000000000000000000000000000000000000000000000000000000000000000000000000000 0 00000000000000000
00000000000000000000000000 0 00000000
0000000000
000000000 000000000 000 0 00000000 0000000000000000000000000

View File

@ -1,3 +1 @@
00000000000000000000000000 0 00000000
0000000000
000000000 000000000 000 0 00000000 0000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000 0 00000000000000000

View File

@ -161,7 +161,7 @@
{ \
textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \
textVar[1] = B_BUFF_MOVE; \
textVar[2] = move & 0xFF; \
textVar[2] = (move & 0xFF); \
textVar[3] = (move & 0xFF00) >> 8; \
textVar[4] = B_BUFF_EOS; \
}

View File

@ -1,6 +1,8 @@
#ifndef GUARD_BERRY_CRUSH_H
#define GUARD_BERRY_CRUSH_H
#include "main.h"
void sub_8020C70(MainCallback callback);
#endif // GUARD_BERRY_CRUSH_H

View File

@ -0,0 +1,8 @@
#ifndef GUARD_DODRIO_BERRY_PICKING_H
#define GUARD_DODRIO_BERRY_PICKING_H
void sub_802493C(u16 a0, void (*callback)(void));
void sub_8027A5C(void);
void sub_8027AAC(void);
#endif // GUARD_DODRIO_BERRY_PICKING_H

View File

@ -23,9 +23,9 @@ int GetMapBorderIdAt(int x, int y);
int CanCameraMoveInDirection(int direction);
u16 GetBehaviorByMetatileId(u16 metatileId);
void GetCameraFocusCoords(u16 *x, u16 *y);
u8 MapGridGetMetatileLayerTypeAt(s32 x, s32 y);
u8 MapGridGetMetatileLayerTypeAt(int x, int y);
u8 MapGridGetZCoordAt(int x, int y);
u8 CameraMove(s32 deltaX, s32 deltaY);
bool8 CameraMove(int deltaX, int deltaY);
struct MapConnection *sub_8088950(u8 direction, int x, int y);
bool8 sub_80889A8(u8 direction, int x, int y, struct MapConnection *connection);
bool8 sub_8088A0C(int x, int src_width, int dest_width, int offset);

View File

@ -6,9 +6,16 @@
#define TRUE 1
#define FALSE 0
#define BSS_DATA __attribute__((section(".bss")))
#define IWRAM_DATA __attribute__((section("iwram_data")))
#define EWRAM_DATA __attribute__((section("ewram_data")))
#if MODERN
#define NOINLINE __attribute__((noinline))
#else
#define NOINLINE
#endif
#define ALIGNED(n) __attribute__((aligned(n)))
#define SOUND_INFO_PTR (*(struct SoundInfo **)0x3007FF0)

View File

@ -2,6 +2,7 @@
#define GUARD_GLOBAL_H
#include <string.h>
#include <limits.h>
#include "config.h" // we need to define config before gba headers as print stuff needs the functions nulled before defines.
#include "gba/gba.h"
#include "constants/global.h"
@ -68,6 +69,10 @@
#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) >= (b) ? (a) : (b))
#if MODERN
#define abs(x) (((x) < 0) ? -(x) : (x))
#endif
// Extracts the upper 16 bits of a 32-bit number
#define HIHALF(n) (((n) & 0xFFFF0000) >> 16)
@ -164,18 +169,17 @@ struct Pokedex
/*0x44*/ u8 seen[DEX_FLAGS_NO];
};
struct PokemonJumpResults // possibly used in the game itself?
struct PokemonJumpResults
{
u16 jumpsInRow;
u16 field2;
u16 excellentsInRow;
u16 field6;
u16 field8;
u16 fieldA;
u32 field8;
u32 bestJumpScore;
};
struct BerryPickingResults // possibly used in the game itself? Size may be wrong as well
struct BerryPickingResults
{
u32 bestScore;
u16 berriesPicked;

View File

@ -4005,10 +4005,13 @@ extern const u32 gBerryPalette_Starf[];
extern const u32 gBerryPic_Enigma[];
extern const u32 gBerryPalette_Enigma[];
//credits
extern const u32 gCreditsCopyrightEnd_Gfx[];
//pokenav
extern const u16 gPokenavCondition_Pal[];
extern const u32 gPokenavCondition_Gfx[];
extern const u32 gPokenavCondition_Tilemap[];
extern const u16 gPokenavOptions_Tilemap[];
extern const u32 gPokenavOptions_Gfx[];
extern const u16 gPokenavOptions_Pal[];
extern const u8 gPokenavConditionMarker_Gfx[];
extern const u16 gPokenavConditionMarker_Pal[];
extern const u16 gPokenavLeftHeader_Pal[];
@ -4027,6 +4030,9 @@ extern const u32 gPokenavLeftHeaderBeauty_Gfx[];
extern const u32 gPokenavLeftHeaderCute_Gfx[];
extern const u32 gPokenavLeftHeaderSmart_Gfx[];
extern const u32 gPokenavLeftHeaderTough_Gfx[];
extern const u16 gUnknown_08DDE010[];
extern const u32 gUnknown_08DDE030[];
extern const u32 gUnknown_08DDE12C[];
extern const u32 gPageInfoTilemap[];
extern const u32 gUnknown_08D98CC8[];
@ -4080,7 +4086,7 @@ extern const u32 gContestConfetti_Pal[];
extern const u32 gUnknown_08C093F0[];
extern const u32 gSubstituteDollTilemap[];
extern const u32 gSubstituteDollGfx[];
extern const u16 gSubstituteDollPal[];
extern const u32 gSubstituteDollPal[];
extern const u32 gHealthboxSinglesPlayerGfx[];
extern const u32 gHealthboxSinglesOpponentGfx[];
extern const u32 gHealthboxDoublesPlayerGfx[];
@ -4979,6 +4985,9 @@ extern const u32 gLinkMiscMenu_Tilemap[];
// Use Pokeblock
extern const u8 gPokenavConditionCancel_Gfx[];
extern const u16 gPokenavConditionCancel_Pal[];
extern const u8 gUsePokeblockUpDown_Gfx[];
extern const u16 gUsePokeblockUpDown_Pal[];
extern const u16 gUsePokeblockCondition_Pal[];
// Berry Crush
extern const u32 gUnknown_08DE34B8[];

View File

@ -275,10 +275,10 @@ void sub_8010FCC(u32 a0, u32 a1, u32 a2);
void sub_8011C84(void);
void sub_8012188(const u8 *name, struct UnkLinkRfuStruct_02022B14 *structPtr, u8 a2);
bool32 sub_8011B90(void);
void sub_800FE50(u16 *a0);
void sub_800FE50(void *a0);
bool32 sub_800E540(u16 id, u8 *name);
void sub_8011DE0(u32 arg0);
u8 sub_801100C(int a0);
u8 sub_801100C(s32 a0);
void sub_800EF7C(void);
bool8 sub_800DE7C(struct UnkLinkRfuStruct_02022B14 *buff1, u8 *buff2, u8 idx);
bool8 sub_800DF34(struct UnkLinkRfuStruct_02022B14 *buff1, u8 *buff2, u8 idx);

View File

@ -25,7 +25,7 @@ void InitStandardTextBoxWindows(void);
void sub_8197200(void);
u16 RunTextPrintersAndIsPrinter0Active(void);
void sub_81973A4(void);
void DrawDialogueFrame(u8, u8);
void DrawDialogueFrame(u8 windowId, bool8 copyToVram);
void ClearStdWindowAndFrame(u8 windowId, bool8 copyToVram);
u16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 fgColor, u8 bgColor, u8 shadowColor);
void PrintPlayerNameOnWindow(u8, const u8*, u16, u16);

View File

@ -34,6 +34,7 @@ void sub_81D1EC0(void);
void sub_81D1D04(u8 a0);
void sub_81D1ED4(struct UnknownStruct_81D1ED4 *a0);
void sub_81D2108(struct UnknownStruct_81D1ED4 *arg0);
void sub_81D21DC(u8 bg);
void sub_81D20AC(struct UnknownStruct_81D1ED4 *arg0);
void sub_81D2230(struct UnknownStruct_81D1ED4 *arg0);
bool8 sub_81D20BC(struct UnknownStruct_81D1ED4 *arg0);

View File

@ -1,6 +1,8 @@
#ifndef GUARD_PLAYER_PC_H
#define GUARD_PLAYER_PC_H
#include "menu.h"
// local task defines
#define PAGE_INDEX data[0]
#define ITEMS_ABOVE_TOP data[1]

View File

@ -559,7 +559,7 @@ void PlayBattleBGM(void);
void PlayMapChosenOrBattleBGM(u16 songId);
void sub_806E694(u16 songId);
const u32 *GetMonFrontSpritePal(struct Pokemon *mon);
const u32 *GetFrontSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality);
const u32 *GetMonSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality);
const struct CompressedSpritePalette *GetMonSpritePalStruct(struct Pokemon *mon);
const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u16 species, u32 otId , u32 personality);
bool32 IsHMMove2(u16 move);

View File

@ -3,9 +3,12 @@
#include "main.h"
void sub_802EB24(s16 arg0, s16 arg1, s16 arg2, s16 arg3, u8 arg4);
bool32 sub_802EB84(void);
void sub_802A9A8(u16 monId, MainCallback callback);
bool32 sub_802C908(u16 species);
void sub_802C920(void);
void ResetPokeJumpResults(void);
void sub_802E3C4(void);
void sub_802EB24(s16 tileTag, s16 palTag, s16 x, s16 y, u8 subpriority);
bool32 sub_802EB84(void);
#endif //GUARD_POKEMON_JUMP_H
#endif // GUARD_POKEMON_JUMP_H

View File

@ -3,8 +3,21 @@
#include "bg.h"
#include "main.h"
#include "pokemon_storage_system.h"
typedef u32 (*LoopedTask)(int state);
typedef u32 (*LoopedTask)(s32 state);
struct PokenavSub18
{
u16 unk0;
u16 unk2;
struct PokenavMonList
{
u8 boxId;
u8 monId;
u16 unk6;
} unk4[TOTAL_BOXES_COUNT * IN_BOX_COUNT + PARTY_SIZE];
};
// Return values of LoopedTask functions.
#define LT_INC_AND_PAUSE 0
@ -43,7 +56,7 @@ enum
// pokenav.c
void sub_81C7694(u32);
u16 sub_81C76AC(void);
u32 sub_81C76AC(void);
void CB2_InitPokeNav(void);
u32 CreateLoopedTask(LoopedTask loopedTask, u32 priority);
@ -94,7 +107,7 @@ void sub_81C8234(void);
// pokenav_match_call_data.c
bool32 sub_81D17E8(u32 idx);
u8 sub_81D16DC(u32 idx);
u8 MatchCallMapSecGetByIndex(u32 idx);
bool32 sub_81D1BF8(u32 idx);
bool32 MatchCallFlagGetByIndex(u32 idx);
u32 MatchCall_GetRematchTableIdx(u32 idx);
@ -111,7 +124,7 @@ void sub_81C7850(u32 a0);
u32 sub_81C786C(void);
void LoadLeftHeaderGfxForIndex(u32 arg0);
void sub_81C7FA0(u32 arg0, bool32 arg1, bool32 arg2);
void sub_81C7AC0(int a0);
void sub_81C7AC0(s32 a0);
bool32 sub_81C8010(void);
void InitBgTemplates(const struct BgTemplate *templates, int count);
bool32 IsPaletteFadeActive(void);
@ -184,4 +197,22 @@ void sub_81CC62C(int);
u32 sub_81CC65C(void);
void sub_81CC670(void);
#endif //GUARD_POKENAV_H
// pokenav_unk_6.c
bool32 sub_81CD3C4(void);
bool32 sub_81CDD5C(void);
struct UnknownStruct_81D1ED4 *sub_81CDC70(void);
u16 sub_81CDC60(void);
u16 sub_81CDC50(void);
u8 sub_81CDDB0(void);
bool32 sub_81CD548(u8 arg0);
u8 sub_81CDD7C(void);
u8 *sub_81CDD04(u8 id);
u8 *sub_81CDD24(u8 id);
u16 sub_81CDD48(void);
void *sub_81CDCB4(u8 id);
void *sub_81CDCD4(u8 id);
// pokenav_unk_7.c
u8 sub_81CEF14(void);
#endif // GUARD_POKENAV_H

View File

@ -275,6 +275,7 @@ void FreeSpriteOamMatrix(struct Sprite *sprite);
void DestroySpriteAndFreeResources(struct Sprite *sprite);
void sub_800142C(u32 a1, u32 a2, u16 *a3, u16 a4, u32 a5);
void AnimateSprite(struct Sprite *sprite);
void sub_8007E18(struct Sprite* sprite, s16 a2, s16 a3);
void StartSpriteAnim(struct Sprite *sprite, u8 animNum);
void StartSpriteAnimIfDifferent(struct Sprite *sprite, u8 animNum);
void SeekSpriteAnim(struct Sprite *sprite, u8 animCmdIndex);

View File

@ -485,7 +485,6 @@ extern const u8 gText_CryOf[];
extern const u8 gText_SizeComparedTo[];
extern const u8 gText_PokedexRegistration[];
extern const u8 gText_UnkCtrlF908Clear01[];
extern const u8 sText_TenDashes2[];
extern const u8 gText_5MarksPokemon[];
extern const u8 gText_UnkHeight[];
extern const u8 gText_UnkWeight[];
@ -1023,6 +1022,7 @@ extern const u8 gText_PokenavMatchCall_CheckTrainerButtons[];
extern const u8 gText_PokenavRibbons_MonListButtons[];
extern const u8 gText_PokenavRibbons_RibbonListButtons[];
extern const u8 gText_PokenavRibbons_RibbonCheckButtons[];
extern const u8 gText_Number2[];
extern const u8 gUnknown_085EAD37[];
extern const u8 gUnknown_085EAD41[];
@ -2708,6 +2708,28 @@ extern const u8 gText_Symbols[];
extern const u8 gText_Register2[];
extern const u8 gText_Exit2[];
// Dodrio Berry Picking
extern const u8 gText_BerryPickingRecords[];
extern const u8 gText_BerriesPicked[];
extern const u8 gText_BerriesInRowFivePlayers[];
extern const u8 gText_BestScore[];
extern const u8 gText_1Colon[];
extern const u8 gText_2Colon[];
extern const u8 gText_3Colon[];
extern const u8 gText_4Colon[];
extern const u8 gText_5Colon[];
extern const u8 gText_SpacePoints[];
extern const u8 gText_10P30P50P50P[];
extern const u8 gText_AnnouncingPrizes[];
extern const u8 gText_AnnouncingRankings[];
extern const u8 gText_FirstPlacePrize[];
extern const u8 gText_CantHoldAnyMore[];
extern const u8 gText_FilledStorageSpace[];
extern const u8 gText_BerryPickingResults[];
extern const u8 gText_WantToPlayAgain[];
extern const u8 gText_CommunicationStandby3[];
extern const u8 gText_SomeoneDroppedOut[];
// Pokemon jump
extern const u8 gText_WantToPlayAgain2[];
extern const u8 gText_SomeoneDroppedOut2[];
@ -2715,6 +2737,12 @@ extern const u8 gText_CommunicationStandby4[];
extern const u8 gText_AwesomeWonF701F700[];
extern const u8 gText_FilledStorageSpace2[];
extern const u8 gText_CantHoldMore[];
extern const u8 gText_SpacePoints2[];
extern const u8 gText_SpaceTimes3[];
extern const u8 gText_PkmnJumpRecords[];
extern const u8 gText_JumpsInARow[];
extern const u8 gText_BestScore2[];
extern const u8 gText_ExcellentsInARow[];
// Pokenav Match Call
extern const u8 gText_CallCantBeMadeHere[];
@ -2723,4 +2751,35 @@ extern const u8 gText_NumberOfBattles[];
extern const u8 gText_Unknown[];
extern const u8 gText_TrainerCloseBy[];
// pokenav_unk_2
extern const u8 gUnknown_085EBCC5[];
extern const u8 gUnknown_085EBCE8[];
extern const u8 gUnknown_085EBD01[];
extern const u8 gUnknown_085EBD1C[];
extern const u8 gUnknown_085EBD34[];
extern const u8 gUnknown_085EBD83[];
extern const u8 gUnknown_085EBDA2[];
extern const u8 gUnknown_085EBDBF[];
extern const u8 gUnknown_085EBDDB[];
extern const u8 gUnknown_085EBDEE[];
extern const u8 gUnknown_085EBE06[];
extern const u8 gUnknown_085EBE19[];
extern const u8 gUnknown_085EBE2D[];
extern const u8 gUnknown_085EBE41[];
// pokenav_unk_4
extern const u8 gUnknown_085EC017[];
extern const u8 gUnknown_085EC01C[];
extern const u8 gUnknown_085EC022[];
// pokenav_unk_10
extern const u8 gText_RibbonsF700[];
// use_pokeblock
extern const u8 gText_Coolness[];
extern const u8 gText_Toughness[];
extern const u8 gText_Smartness[];
extern const u8 gText_Cuteness[];
extern const u8 gText_Beauty3[];
#endif // GUARD_STRINGS_H

View File

@ -166,7 +166,11 @@ struct TextPrinter
void (*callback)(struct TextPrinterTemplate *, u16); // 0x10
union __attribute__((packed)) {
union
#if !MODERN
__attribute__((packed))
#endif
{
struct TextPrinterSubStruct sub;
u8 fields[7];
} subUnion;

View File

@ -47,294 +47,292 @@ SECTIONS {
.text :
ALIGN(4)
{
asm/crt0.o(.text);
src/main.o(.text);
src/alloc.o(.text);
src/dma3_manager.o(.text);
src/gpu_regs.o(.text);
src/bg.o(.text);
src/blit.o(.text);
src/window.o(.text);
src/text.o(.text);
src/sprite.o(.text);
src/string_util.o(.text);
src/link.o(.text);
src/link_rfu.o(.text);
src/union_room.o(.text);
src/mystery_gift.o(.text);
src/union_room_player_avatar.o(.text);
src/union_room_battle.o(.text);
src/mevent2.o(.text);
src/mevent_801BAAC.o(.text);
src/mevent_server.o(.text);
src/mevent_client.o(.text);
src/mevent_server_helpers.o(.text);
src/mevent_news.o(.text);
src/union_room_chat.o(.text);
src/berry_crush.o(.text);
asm/berry_crush.o(.text);
src/berry_powder.o(.text);
src/dodrio_berry_picking.o(.text);
asm/dodrio_berry_picking.o(.text);
src/pokemon_jump.o(.text);
asm/pokemon_jump.o(.text);
src/rtc.o(.text);
src/main_menu.o(.text);
src/battle_controllers.o(.text);
src/decompress.o(.text);
src/rom_8034C54.o(.text);
src/battle_bg.o(.text);
src/battle_main.o(.text);
src/battle_util.o(.text);
src/battle_script_commands.o(.text);
src/battle_util2.o(.text);
src/battle_controller_player.o(.text);
src/battle_gfx_sfx_util.o(.text);
src/battle_controller_opponent.o(.text);
src/battle_ai_switch_items.o(.text);
src/battle_controller_link_opponent.o(.text);
src/pokemon.o(.text);
src/trig.o(.text);
src/random.o(.text);
src/util.o(.text);
src/daycare.o(.text);
src/egg_hatch.o(.text);
src/battle_interface.o(.text);
src/smokescreen.o(.text);
src/pokeball.o(.text);
src/load_save.o(.text);
src/trade.o(.text);
src/berry_blender.o(.text);
src/play_time.o(.text);
src/new_game.o(.text);
src/overworld.o(.text);
src/fieldmap.o(.text);
src/metatile_behavior.o(.text);
src/field_camera.o(.text);
src/field_door.o(.text);
src/field_player_avatar.o(.text);
src/event_object_movement.o(.text);
src/field_message_box.o(.text);
src/event_obj_lock.o(.text);
src/text_window.o(.text);
src/script.o(.text);
src/scrcmd.o(.text);
src/field_control_avatar.o(.text);
src/event_data.o(.text);
src/coord_event_weather.o(.text);
src/field_tasks.o(.text);
src/clock.o(.text);
src/reset_rtc_screen.o(.text);
src/start_menu.o(.text);
src/tileset_anims.o(.text);
src/palette.o(.text);
src/sound.o(.text);
src/battle_anim.o(.text);
src/battle_anim_mons.o(.text);
src/task.o(.text);
src/reshow_battle_screen.o(.text);
src/battle_anim_status_effects.o(.text);
src/title_screen.o(.text);
src/field_weather.o(.text);
src/field_weather_effect.o(.text);
src/field_screen_effect.o(.text);
src/battle_setup.o(.text);
src/cable_club.o(.text);
src/trainer_see.o(.text);
src/wild_encounter.o(.text);
src/field_effect.o(.text);
src/scanline_effect.o(.text);
src/option_menu.o(.text);
src/pokedex.o(.text);
src/trainer_card.o(.text);
src/frontier_pass.o(.text);
src/pokemon_storage_system.o(.text);
src/pokemon_icon.o(.text);
src/script_movement.o(.text);
src/fldeff_cut.o(.text);
src/mail_data.o(.text);
src/map_name_popup.o(.text);
src/item_menu_icons.o(.text);
src/battle_anim_mon_movement.o(.text);
src/item.o(.text);
src/contest.o(.text);
src/shop.o(.text);
src/fldeff_escalator.o(.text);
src/berry.o(.text);
src/script_menu.o(.text);
src/naming_screen.o(.text);
src/money.o(.text);
src/contest_effect.o(.text);
src/record_mixing.o(.text);
src/secret_base.o(.text);
src/tv.o(.text);
src/contest_link_80F57C4.o(.text);
src/script_pokemon_util_80F87D8.o(.text);
src/field_poison.o(.text);
src/pokemon_size_record.o(.text);
src/fldeff_misc.o(.text);
src/field_special_scene.o(.text);
src/rotating_gate.o(.text);
src/safari_zone.o(.text);
src/contest_link_80FC4F4.o(.text);
src/item_use.o(.text);
src/battle_anim_effects_1.o(.text);
src/battle_anim_effects_2.o(.text);
src/water.o(.text);
src/fire.o(.text);
src/electric.o(.text);
src/ice.o(.text);
src/fight.o(.text);
src/poison.o(.text);
src/flying.o(.text);
src/psychic.o(.text);
src/bug.o(.text);
src/rock.o(.text);
src/ghost.o(.text);
src/dragon.o(.text);
src/dark.o(.text);
src/ground.o(.text);
src/normal.o(.text);
src/battle_anim_utility_funcs.o(.text);
src/battle_intro.o(.text);
src/bike.o(.text);
src/easy_chat.o(.text);
src/mon_markings.o(.text);
src/mauville_old_man.o(.text);
src/mail.o(.text);
src/menu_helpers.o(.text);
src/dewford_trend.o(.text);
src/heal_location.o(.text);
src/region_map.o(.text);
src/contest_painting_effects.o(.text);
src/decoration.o(.text);
src/slot_machine.o(.text);
src/contest_painting.o(.text);
src/battle_ai_script_commands.o(.text);
src/trader.o(.text);
src/starter_choose.o(.text);
src/wallclock.o(.text);
src/fldeff_rocksmash.o(.text);
src/fldeff_dig.o(.text);
src/pokeblock.o(.text);
src/fldeff_flash.o(.text);
src/post_battle_event_funcs.o(.text);
src/time_events.o(.text);
src/birch_pc.o(.text);
src/hof_pc.o(.text);
src/field_specials.o(.text);
src/battle_records.o(.text);
src/pokedex_area_screen.o(.text);
src/evolution_scene.o(.text);
src/roulette.o(.text);
src/pokedex_cry_screen.o(.text);
src/coins.o(.text);
src/landmark.o(.text);
src/fldeff_strength.o(.text);
src/battle_transition.o(.text);
src/battle_controller_link_partner.o(.text);
src/battle_message.o(.text);
src/cable_car.o(.text);
src/math_util.o(.text);
src/roulette_util.o(.text);
src/rom_81520A8.o(.text);
src/save.o(.text);
src/mystery_event_script.o(.text);
src/field_effect_helpers.o(.text);
src/contest_ai.o(.text);
src/battle_anim_sound_tasks.o(.text);
src/battle_controller_safari.o(.text);
src/fldeff_sweetscent.o(.text);
src/battle_anim_effects_3.o(.text);
src/move_relearner.o(.text);
src/fldeff_softboiled.o(.text);
src/decoration_inventory.o(.text);
src/roamer.o(.text);
src/battle_tower.o(.text);
src/use_pokeblock.o(.text);
src/battle_controller_wally.o(.text);
src/player_pc.o(.text);
src/intro.o(.text);
src/reset_save_heap.o(.text);
src/field_region_map.o(.text);
src/battle_anim_special.o(.text);
src/hall_of_fame.o(.text);
src/credits.o(.text);
src/lottery_corner.o(.text);
src/diploma.o(.text);
src/berry_tag_screen.o(.text);
src/mystery_event_menu.o(.text);
src/save_failed_screen.o(.text);
src/braille_puzzles.o(.text);
src/pokeblock_feed.o(.text);
src/clear_save_data_screen.o(.text);
src/intro_credits_graphics.o(.text);
src/evolution_graphics.o(.text);
src/bard_music.o(.text);
src/fldeff_teleport.o(.text);
src/battle_tv.o(.text);
src/pokemon_animation.o(.text);
src/recorded_battle.o(.text);
src/battle_controller_recorded_opponent.o(.text);
src/battle_controller_recorded_player.o(.text);
src/trainer_pokemon_sprites.o(.text);
src/lilycove_lady.o(.text);
src/battle_dome.o(.text);
src/battle_palace.o(.text);
src/match_call.o(.text);
src/menu.o(.text);
src/battle_factory_screen.o(.text);
src/apprentice.o(.text);
src/frontier_util.o(.text);
src/battle_arena.o(.text);
src/battle_factory.o(.text);
src/battle_pike.o(.text);
src/mossdeep_gym.o(.text);
src/battle_pyramid.o(.text);
src/item_menu.o(.text);
src/list_menu.o(.text);
src/dynamic_placeholder_text_util.o(.text);
src/save_location.o(.text);
src/item_icon.o(.text);
src/party_menu.o(.text);
src/battle_tent.o(.text);
src/unk_text_util_2.o(.text);
src/multiboot.o(.text);
src/unk_81BAD84.o(.text);
src/battle_controller_player_partner.o(.text);
src/mirage_tower.o(.text);
src/berry_fix_program.o(.text);
src/pokemon_summary_screen.o(.text);
src/unk_pokedex_area_screen_helper.o(.text);
src/battle_pyramid_bag.o(.text);
src/pokenav.o(.text);
src/pokenav_main_menu.o(.text);
src/pokenav_match_call_ui.o(.text);
src/pokenav_unk_1.o(.text);
src/pokenav_unk_2.o(.text);
asm/pokenav_unk_2.o(.text);
src/pokenav_unk_3.o(.text);
src/pokenav_unk_4.o(.text);
src/pokenav_unk_5.o(.text);
asm/pokenav_unk_6.o(.text);
asm/pokenav_unk_7.o(.text);
asm/pokenav_unk_8.o(.text);
asm/pokenav_unk_9.o(.text);
asm/pokenav_unk_10.o(.text);
src/pokenav_unk_10.o(.text);
src/pokenav_match_call_data.o(.text);
src/menu_specialized.o(.text);
src/ereader_helpers.o(.text);
src/faraway_island.o(.text);
src/ereader_screen.o(.text);
src/trainer_hill.o(.text);
src/rayquaza_scene.o(.text);
src/walda_phrase.o(.text);
src/contest_link_81D9DE4.o(.text);
src/gym_leader_rematch.o(.text);
src/unk_transition.o(.text);
src/international_string_util.o(.text);
src/battle_debug.o(.text);
asm/crt0.o(.text*);
src/main.o(.text*);
src/alloc.o(.text*);
src/dma3_manager.o(.text*);
src/gpu_regs.o(.text*);
src/bg.o(.text*);
src/blit.o(.text*);
src/window.o(.text*);
src/text.o(.text*);
src/sprite.o(.text*);
src/string_util.o(.text*);
src/link.o(.text*);
src/link_rfu.o(.text*);
src/union_room.o(.text*);
src/mystery_gift.o(.text*);
src/union_room_player_avatar.o(.text*);
src/union_room_battle.o(.text*);
src/mevent2.o(.text*);
src/mevent_801BAAC.o(.text*);
src/mevent_server.o(.text*);
src/mevent_client.o(.text*);
src/mevent_server_helpers.o(.text*);
src/mevent_news.o(.text*);
src/union_room_chat.o(.text*);
src/berry_crush.o(.text*);
asm/berry_crush.o(.text*);
src/berry_powder.o(.text*);
src/dodrio_berry_picking.o(.text*);
src/pokemon_jump.o(.text*);
src/rtc.o(.text*);
src/main_menu.o(.text*);
src/battle_controllers.o(.text*);
src/decompress.o(.text*);
src/rom_8034C54.o(.text*);
src/battle_bg.o(.text*);
src/battle_main.o(.text*);
src/battle_util.o(.text*);
src/battle_script_commands.o(.text*);
src/battle_util2.o(.text*);
src/battle_controller_player.o(.text*);
src/battle_gfx_sfx_util.o(.text*);
src/battle_controller_opponent.o(.text*);
src/battle_ai_switch_items.o(.text*);
src/battle_controller_link_opponent.o(.text*);
src/pokemon.o(.text*);
src/trig.o(.text*);
src/random.o(.text*);
src/util.o(.text*);
src/daycare.o(.text*);
src/egg_hatch.o(.text*);
src/battle_interface.o(.text*);
src/smokescreen.o(.text*);
src/pokeball.o(.text*);
src/load_save.o(.text*);
src/trade.o(.text*);
src/berry_blender.o(.text*);
src/play_time.o(.text*);
src/new_game.o(.text*);
src/overworld.o(.text*);
src/fieldmap.o(.text*);
src/metatile_behavior.o(.text*);
src/field_camera.o(.text*);
src/field_door.o(.text*);
src/field_player_avatar.o(.text*);
src/event_object_movement.o(.text*);
src/field_message_box.o(.text*);
src/event_obj_lock.o(.text*);
src/text_window.o(.text*);
src/script.o(.text*);
src/scrcmd.o(.text*);
src/field_control_avatar.o(.text*);
src/event_data.o(.text*);
src/coord_event_weather.o(.text*);
src/field_tasks.o(.text*);
src/clock.o(.text*);
src/reset_rtc_screen.o(.text*);
src/start_menu.o(.text*);
src/tileset_anims.o(.text*);
src/palette.o(.text*);
src/sound.o(.text*);
src/battle_anim.o(.text*);
src/battle_anim_mons.o(.text*);
src/task.o(.text*);
src/reshow_battle_screen.o(.text*);
src/battle_anim_status_effects.o(.text*);
src/title_screen.o(.text*);
src/field_weather.o(.text*);
src/field_weather_effect.o(.text*);
src/field_screen_effect.o(.text*);
src/battle_setup.o(.text*);
src/cable_club.o(.text*);
src/trainer_see.o(.text*);
src/wild_encounter.o(.text*);
src/field_effect.o(.text*);
src/scanline_effect.o(.text*);
src/option_menu.o(.text*);
src/pokedex.o(.text*);
src/trainer_card.o(.text*);
src/frontier_pass.o(.text*);
src/pokemon_storage_system.o(.text*);
src/pokemon_icon.o(.text*);
src/script_movement.o(.text*);
src/fldeff_cut.o(.text*);
src/mail_data.o(.text*);
src/map_name_popup.o(.text*);
src/item_menu_icons.o(.text*);
src/battle_anim_mon_movement.o(.text*);
src/item.o(.text*);
src/contest.o(.text*);
src/shop.o(.text*);
src/fldeff_escalator.o(.text*);
src/berry.o(.text*);
src/script_menu.o(.text*);
src/naming_screen.o(.text*);
src/money.o(.text*);
src/contest_effect.o(.text*);
src/record_mixing.o(.text*);
src/secret_base.o(.text*);
src/tv.o(.text*);
src/contest_link_80F57C4.o(.text*);
src/script_pokemon_util_80F87D8.o(.text*);
src/field_poison.o(.text*);
src/pokemon_size_record.o(.text*);
src/fldeff_misc.o(.text*);
src/field_special_scene.o(.text*);
src/rotating_gate.o(.text*);
src/safari_zone.o(.text*);
src/contest_link_80FC4F4.o(.text*);
src/item_use.o(.text*);
src/battle_anim_effects_1.o(.text*);
src/battle_anim_effects_2.o(.text*);
src/water.o(.text*);
src/fire.o(.text*);
src/electric.o(.text*);
src/ice.o(.text*);
src/fight.o(.text*);
src/poison.o(.text*);
src/flying.o(.text*);
src/psychic.o(.text*);
src/bug.o(.text*);
src/rock.o(.text*);
src/ghost.o(.text*);
src/dragon.o(.text*);
src/dark.o(.text*);
src/ground.o(.text*);
src/normal.o(.text*);
src/battle_anim_utility_funcs.o(.text*);
src/battle_intro.o(.text*);
src/bike.o(.text*);
src/easy_chat.o(.text*);
src/mon_markings.o(.text*);
src/mauville_old_man.o(.text*);
src/mail.o(.text*);
src/menu_helpers.o(.text*);
src/dewford_trend.o(.text*);
src/heal_location.o(.text*);
src/region_map.o(.text*);
src/contest_painting_effects.o(.text*);
src/decoration.o(.text*);
src/slot_machine.o(.text*);
src/contest_painting.o(.text*);
src/battle_ai_script_commands.o(.text*);
src/trader.o(.text*);
src/starter_choose.o(.text*);
src/wallclock.o(.text*);
src/fldeff_rocksmash.o(.text*);
src/fldeff_dig.o(.text*);
src/pokeblock.o(.text*);
src/fldeff_flash.o(.text*);
src/post_battle_event_funcs.o(.text*);
src/time_events.o(.text*);
src/birch_pc.o(.text*);
src/hof_pc.o(.text*);
src/field_specials.o(.text*);
src/battle_records.o(.text*);
src/pokedex_area_screen.o(.text*);
src/evolution_scene.o(.text*);
src/roulette.o(.text*);
src/pokedex_cry_screen.o(.text*);
src/coins.o(.text*);
src/landmark.o(.text*);
src/fldeff_strength.o(.text*);
src/battle_transition.o(.text*);
src/battle_controller_link_partner.o(.text*);
src/battle_message.o(.text*);
src/cable_car.o(.text*);
src/math_util.o(.text*);
src/roulette_util.o(.text*);
src/rom_81520A8.o(.text*);
src/save.o(.text*);
src/mystery_event_script.o(.text*);
src/field_effect_helpers.o(.text*);
src/contest_ai.o(.text*);
src/battle_anim_sound_tasks.o(.text*);
src/battle_controller_safari.o(.text*);
src/fldeff_sweetscent.o(.text*);
src/battle_anim_effects_3.o(.text*);
src/move_relearner.o(.text*);
src/fldeff_softboiled.o(.text*);
src/decoration_inventory.o(.text*);
src/roamer.o(.text*);
src/battle_tower.o(.text*);
src/use_pokeblock.o(.text*);
src/battle_controller_wally.o(.text*);
src/player_pc.o(.text*);
src/intro.o(.text*);
src/reset_save_heap.o(.text*);
src/field_region_map.o(.text*);
src/battle_anim_special.o(.text*);
src/hall_of_fame.o(.text*);
src/credits.o(.text*);
src/lottery_corner.o(.text*);
src/diploma.o(.text*);
src/berry_tag_screen.o(.text*);
src/mystery_event_menu.o(.text*);
src/save_failed_screen.o(.text*);
src/braille_puzzles.o(.text*);
src/pokeblock_feed.o(.text*);
src/clear_save_data_screen.o(.text*);
src/intro_credits_graphics.o(.text*);
src/evolution_graphics.o(.text*);
src/bard_music.o(.text*);
src/fldeff_teleport.o(.text*);
src/battle_tv.o(.text*);
src/pokemon_animation.o(.text*);
src/recorded_battle.o(.text*);
src/battle_controller_recorded_opponent.o(.text*);
src/battle_controller_recorded_player.o(.text*);
src/trainer_pokemon_sprites.o(.text*);
src/lilycove_lady.o(.text*);
src/battle_dome.o(.text*);
src/battle_palace.o(.text*);
src/match_call.o(.text*);
src/menu.o(.text*);
src/battle_factory_screen.o(.text*);
src/apprentice.o(.text*);
src/frontier_util.o(.text*);
src/battle_arena.o(.text*);
src/battle_factory.o(.text*);
src/battle_pike.o(.text*);
src/mossdeep_gym.o(.text*);
src/battle_pyramid.o(.text*);
src/item_menu.o(.text*);
src/list_menu.o(.text*);
src/dynamic_placeholder_text_util.o(.text*);
src/save_location.o(.text*);
src/item_icon.o(.text*);
src/party_menu.o(.text*);
src/battle_tent.o(.text*);
src/unk_text_util_2.o(.text*);
src/multiboot.o(.text*);
src/unk_81BAD84.o(.text*);
src/battle_controller_player_partner.o(.text*);
src/mirage_tower.o(.text*);
src/berry_fix_program.o(.text*);
src/pokemon_summary_screen.o(.text*);
src/unk_pokedex_area_screen_helper.o(.text*);
src/battle_pyramid_bag.o(.text*);
src/pokenav.o(.text*);
src/pokenav_main_menu.o(.text*);
src/pokenav_match_call_ui.o(.text*);
src/pokenav_unk_1.o(.text*);
src/pokenav_unk_2.o(.text*);
asm/pokenav_unk_2.o(.text*);
src/pokenav_unk_3.o(.text*);
src/pokenav_unk_4.o(.text*);
src/pokenav_unk_5.o(.text*);
src/pokenav_unk_6.o(.text*);
src/pokenav_unk_7.o(.text*);
src/pokenav_unk_8.o(.text*);
asm/pokenav_unk_8.o(.text*);
asm/pokenav_unk_9.o(.text*);
src/pokenav_unk_10.o(.text*);
src/pokenav_match_call_data.o(.text*);
src/menu_specialized.o(.text*);
src/ereader_helpers.o(.text*);
src/faraway_island.o(.text*);
src/ereader_screen.o(.text*);
src/trainer_hill.o(.text*);
src/rayquaza_scene.o(.text*);
src/walda_phrase.o(.text*);
src/contest_link_81D9DE4.o(.text*);
src/gym_leader_rematch.o(.text*);
src/unk_transition.o(.text*);
src/battle_debug.o(.text*);
src/international_string_util.o(.text*);
} =0
script_data :
@ -353,70 +351,71 @@ SECTIONS {
lib_text :
ALIGN(4)
{
asm/libgcnmultiboot.o(.text);
asm/m4a_1.o(.text);
src/m4a.o(.text);
src/agb_flash.o(.text);
src/agb_flash_1m.o(.text);
src/agb_flash_mx.o(.text);
src/siirtc.o(.text);
src/librfu_stwi.o(.text);
src/librfu_intr.o(.text);
asm/librfu_intr.o(.text);
src/librfu_rfu.o(.text);
asm/librfu.o(.text);
asm/libagbsyscall.o(.text);
*libgcc.a:_call_via_rX.o(.text);
*libgcc.a:_divdi3.o(.text);
*libgcc.a:_divsi3.o(.text);
*libgcc.a:_dvmd_tls.o(.text);
*libgcc.a:_fixunsdfsi.o(.text);
*libgcc.a:_fixunssfsi.o(.text);
*libgcc.a:_modsi3.o(.text);
*libgcc.a:_muldi3.o(.text);
*libgcc.a:_udivdi3.o(.text);
*libgcc.a:_udivsi3.o(.text);
*libgcc.a:_umodsi3.o(.text);
*libgcc.a:dp-bit.o(.text);
*libgcc.a:fp-bit.o(.text);
*libgcc.a:_lshrdi3.o(.text);
*libgcc.a:_negdi2.o(.text);
*libc.a:memcpy.o(.text);
*libc.a:memset.o(.text);
*libc.a:strcmp.o(.text);
*libc.a:strcpy.o(.text);
*libc.a:vfprintf.o(.text);
*libc.a:vsprintf.o(.text);
*libc.a:fvwrite.o(.text);
*libc.a:locale.o(.text);
*libc.a:findfp.o(.text);
*libc.a:fflush.o(.text);
*libc.a:wsetup.o(.text);
*libc.a:mbtowc_r.o(.text);
*libc.a:s_isinf.o(.text);
*libc.a:s_isnan.o(.text);
*libc.a:memchr.o(.text);
*libc.a:strlen.o(.text);
*libc.a:dtoa.o(.text);
*libc.a:memmove.o(.text);
*libc.a:stdio.o(.text);
*libc.a:mprec.o(.text);
*libc.a:mallocr.o(.text);
*libc.a:fwalk.o(.text);
*libc.a:freer.o(.text);
*libc.a:makebuf.o(.text);
*libc.a:readr.o(.text);
*libc.a:writer.o(.text);
*libc.a:lseekr.o(.text);
*libc.a:closer.o(.text);
*libc.a:callocr.o(.text);
*libc.a:sbrkr.o(.text);
*libc.a:mlock.o(.text);
*libc.a:fstatr.o(.text);
*libc.a:libcfunc.o(.text);
*libc.a:syscalls.o(.text);
*libc.a:errno.o(.text);
src/libisagbprn.o(.text);
asm/libgcnmultiboot.o(.text*);
asm/m4a_1.o(.text*);
src/m4a.o(.text*);
src/agb_flash.o(.text*);
src/agb_flash_1m.o(.text*);
src/agb_flash_mx.o(.text*);
src/siirtc.o(.text*);
src/librfu_stwi.o(.text*);
src/librfu_intr.o(.text*);
asm/librfu_intr.o(.text*);
src/librfu_rfu.o(.text*);
src/librfu.o(.text*);
asm/librfu.o(.text*);
asm/libagbsyscall.o(.text*);
*libgcc.a:_call_via_rX.o(.text*);
*libgcc.a:_divdi3.o(.text*);
*libgcc.a:_divsi3.o(.text*);
*libgcc.a:_dvmd_tls.o(.text*);
*libgcc.a:_fixunsdfsi.o(.text*);
*libgcc.a:_fixunssfsi.o(.text*);
*libgcc.a:_modsi3.o(.text*);
*libgcc.a:_muldi3.o(.text*);
*libgcc.a:_udivdi3.o(.text*);
*libgcc.a:_udivsi3.o(.text*);
*libgcc.a:_umodsi3.o(.text*);
*libgcc.a:dp-bit.o(.text*);
*libgcc.a:fp-bit.o(.text*);
*libgcc.a:_lshrdi3.o(.text*);
*libgcc.a:_negdi2.o(.text*);
*libc.a:memcpy.o(.text*);
*libc.a:memset.o(.text*);
*libc.a:strcmp.o(.text*);
*libc.a:strcpy.o(.text*);
*libc.a:vfprintf.o(.text*);
*libc.a:vsprintf.o(.text*);
*libc.a:fvwrite.o(.text*);
*libc.a:locale.o(.text*);
*libc.a:findfp.o(.text*);
*libc.a:fflush.o(.text*);
*libc.a:wsetup.o(.text*);
*libc.a:mbtowc_r.o(.text*);
*libc.a:s_isinf.o(.text*);
*libc.a:s_isnan.o(.text*);
*libc.a:memchr.o(.text*);
*libc.a:strlen.o(.text*);
*libc.a:dtoa.o(.text*);
*libc.a:memmove.o(.text*);
*libc.a:stdio.o(.text*);
*libc.a:mprec.o(.text*);
*libc.a:mallocr.o(.text*);
*libc.a:fwalk.o(.text*);
*libc.a:freer.o(.text*);
*libc.a:makebuf.o(.text*);
*libc.a:readr.o(.text*);
*libc.a:writer.o(.text*);
*libc.a:lseekr.o(.text*);
*libc.a:closer.o(.text*);
*libc.a:callocr.o(.text*);
*libc.a:sbrkr.o(.text*);
*libc.a:mlock.o(.text*);
*libc.a:fstatr.o(.text*);
*libc.a:libcfunc.o(.text*);
*libc.a:syscalls.o(.text*);
*libc.a:errno.o(.text*);
src/libisagbprn.o(.text*);
} =0
.rodata :
@ -430,7 +429,9 @@ SECTIONS {
data/io_reg.o(.rodata);
src/string_util.o(.rodata);
src/link.o(.rodata);
src/link.o(.rodata.str1.4);
src/link_rfu.o(.rodata);
src/link_rfu.o(.rodata.str1.4);
src/union_room.o(.rodata);
src/mystery_gift.o(.rodata);
src/union_room_player_avatar.o(.rodata);
@ -441,14 +442,14 @@ SECTIONS {
src/mevent_client.o(.rodata);
src/mevent_scripts.o(.rodata);
src/union_room_chat.o(.rodata);
src/berry_crush.o(.rodata);
data/berry_crush.o(.rodata);
data/berry_powder.o(.rodata);
src/dodrio_berry_picking.o(.rodata);
data/dodrio_berry_picking.o(.rodata);
src/pokemon_jump.o(.rodata);
data/pokemon_jump.o(.rodata);
src/rtc.o(.rodata);
src/main_menu.o(.rodata);
src/battle_controllers.o(.rodata);
src/rom_8034C54.o(.rodata);
src/data.o(.rodata);
src/battle_bg.o(.rodata);
@ -458,6 +459,7 @@ SECTIONS {
src/battle_controller_player.o(.rodata);
data/smokescreen.o(.rodata);
src/battle_controller_opponent.o(.rodata);
src/battle_ai_switch_items.o(.rodata);
src/battle_controller_link_opponent.o(.rodata);
src/pokemon.o(.rodata);
src/trig.o(.rodata);
@ -480,6 +482,7 @@ SECTIONS {
src/event_object_movement.o(.rodata);
src/text_window.o(.rodata);
src/scrcmd.o(.rodata);
src/field_control_avatar.o(.rodata);
src/coord_event_weather.o(.rodata);
src/field_tasks.o(.rodata);
src/reset_rtc_screen.o(.rodata);
@ -490,6 +493,7 @@ SECTIONS {
src/battle_anim.o(.rodata);
src/battle_anim_mons.o(.rodata);
data/map_events.o(.rodata);
src/reshow_battle_screen.o(.rodata);
src/battle_anim_status_effects.o(.rodata);
src/title_screen.o(.rodata);
src/field_weather.o(.rodata);
@ -500,6 +504,7 @@ SECTIONS {
src/trainer_see.o(.rodata);
src/wild_encounter.o(.rodata);
src/field_effect.o(.rodata);
src/scanline_effect.o(.rodata);
src/option_menu.o(.rodata);
src/pokedex.o(.rodata);
src/trainer_card.o(.rodata);
@ -522,12 +527,14 @@ SECTIONS {
src/record_mixing.o(.rodata);
src/secret_base.o(.rodata);
src/tv.o(.rodata);
src/contest_link_80F57C4.o(.rodata);
data/contest_link_80F57C4.o(.rodata);
src/script_pokemon_util_80F87D8.o(.rodata);
src/pokemon_size_record.o(.rodata)
src/fldeff_misc.o(.rodata);
src/field_special_scene.o(.rodata);
src/rotating_gate.o(.rodata);
src/contest_link_80FC4F4.o(.rodata);
src/item_use.o(.rodata);
src/battle_anim_effects_1.o(.rodata);
src/battle_anim_effects_2.o(.rodata);
@ -556,6 +563,7 @@ SECTIONS {
src/menu_helpers.o(.rodata);
src/heal_location.o(.rodata);
src/region_map.o(.rodata);
src/contest_painting_effects.o(.rodata);
data/contest_painting_effects.o(.rodata);
src/decoration.o(.rodata);
src/slot_machine.o(.rodata);
@ -582,13 +590,13 @@ SECTIONS {
src/save.o(.rodata);
src/field_effect_helpers.o(.rodata);
src/contest_ai.o(.rodata);
src/battle_anim_sound_tasks.o(.rodata);
src/battle_controller_safari.o(.rodata);
src/battle_anim_effects_3.o(.rodata);
src/move_relearner.o(.rodata);
src/roamer.o(.rodata);
src/battle_tower.o(.rodata);
src/use_pokeblock.o(.rodata);
data/use_pokeblock.o(.rodata);
src/battle_controller_wally.o(.rodata);
src/player_pc.o(.rodata);
src/intro.o(.rodata);
@ -624,6 +632,7 @@ SECTIONS {
src/battle_arena.o(.rodata);
src/battle_factory.o(.rodata);
src/battle_pike.o(.rodata);
src/mossdeep_gym.o(.rodata);
data/mossdeep_gym.o(.rodata);
src/battle_pyramid.o(.rodata);
src/item_menu.o(.rodata);
@ -633,6 +642,7 @@ SECTIONS {
src/party_menu.o(.rodata);
src/battle_tent.o(.rodata);
src/unk_text_util_2.o(.rodata);
src/multiboot.o(.rodata);
src/unk_81BAD84.o(.rodata);
src/battle_controller_player_partner.o(.rodata);
src/mirage_tower.o(.rodata);
@ -644,25 +654,33 @@ SECTIONS {
src/pokenav_main_menu.o(.rodata);
src/pokenav_match_call_ui.o(.rodata);
src/pokenav_unk_1.o(.rodata);
data/pokenav.o(.rodata);
src/pokenav_unk_2.o(.rodata);
src/pokenav_unk_3.o(.rodata);
src/pokenav_unk_4.o(.rodata);
src/pokenav_unk_5.o(.rodata);
src/pokenav_unk_7.o(.rodata);
src/pokenav_unk_8.o(.rodata);
src/pokenav_unk_9.o(.rodata);
src/pokenav_unk_10.o(.rodata);
src/pokenav_match_call_data.o(.rodata);
src/menu_specialized.o(.rodata);
src/ereader_helpers.o(.rodata);
data/ereader_helpers.o(.rodata);
src/faraway_island.o(.rodata);
src/ereader_screen.o(.rodata);
data/ereader_screen.o(.rodata);
src/trainer_hill.o(.rodata);
src/rayquaza_scene.o(.rodata);
src/walda_phrase.o(.rodata);
src/gym_leader_rematch.o(.rodata);
src/unk_transition.o(.rodata);
src/battle_debug.o(.rodata);
data/text_input_strings.o(.rodata);
data/fonts.o(.rodata);
src/mystery_event_msg.o(.rodata);
data/mystery_event_msg.o(.rodata);
src/m4a_tables.o(.rodata);
data/sound_data.o(.rodata);
src/battle_debug.o(.rodata);
} =0
song_data :
@ -1203,6 +1221,7 @@ SECTIONS {
lib_rodata :
SUBALIGN(4)
{
src/m4a.o(.rodata);
src/agb_flash.o(.rodata);
src/agb_flash_1m.o(.rodata);
src/agb_flash_mx.o(.rodata);

156
ld_script_modern.txt Normal file
View File

@ -0,0 +1,156 @@
ENTRY(Start)
gNumMusicPlayers = 4;
gMaxLines = 0;
SECTIONS {
. = 0x2000000;
ewram (NOLOAD) :
ALIGN(4)
{
gHeap = .;
. = 0x1C000;
src/*.o(ewram_data);
. = 0x40000;
}
. = 0x3000000;
iwram (NOLOAD) :
ALIGN(4)
{
/* .bss starts at 0x3000000 */
src/*.o(.bss);
asm/m4a_1.o(.bss);
/* .bss.code starts at 0x3001AA8 */
src/m4a.o(.bss.code);
/* COMMON starts at 0x30022A8 */
src/*.o(COMMON);
*libc.a:sbrkr.o(COMMON);
end = .;
. = 0x8000;
}
. = 0x8000000;
.text :
ALIGN(4)
{
asm/crt0.o(.text);
src/*.o(.text);
asm/*.o(.text);
} =0
script_data :
ALIGN(4)
{
data/*.o(script_data);
} =0
lib_text :
ALIGN(4)
{
asm/libgcnmultiboot.o(.text);
asm/m4a_1.o(.text);
src/m4a.o(.text);
src/agb_flash.o(.text);
src/agb_flash_1m.o(.text);
src/agb_flash_mx.o(.text);
src/siirtc.o(.text);
src/librfu_stwi.o(.text);
src/librfu_intr.o(.text);
asm/librfu_intr.o(.text);
src/librfu_rfu.o(.text);
asm/librfu.o(.text);
asm/libagbsyscall.o(.text);
*libgcc.a:*.o(.text*);
*libc.a:*.o(.text*);
src/libisagbprn.o(.text);
} =0
.rodata :
ALIGN(4)
{
src/*.o(.rodata*);
data/*.o(.rodata*);
} =0
song_data :
ALIGN(4)
{
sound/songs/*.o(.rodata);
} =0
lib_rodata :
SUBALIGN(4)
{
src/m4a.o(.rodata);
src/agb_flash.o(.rodata);
src/agb_flash_1m.o(.rodata);
src/agb_flash_mx.o(.rodata);
src/agb_flash_le.o(.rodata);
src/siirtc.o(.rodata);
data/librfu_rodata.o(.rodata);
*libgcc.a:*.o(.rodata*);
*libc.a:*.o(.rodata*);
*libc.a:*.o(.data*);
src/libisagbprn.o(.rodata);
} =0
other_data :
ALIGN(4)
{
data/unknown_serial_data.o(.rodata);
data/multiboot_berry_glitch_fix.o(.rodata);
data/multiboot_pokemon_colosseum.o(.rodata);
} =0
anim_mon_front_pic_data :
ALIGN(4)
{
src/anim_mon_front_pics.o(.rodata);
} =0
gfx_data :
ALIGN(4)
{
src/graphics.o(.rodata);
} =0
/* DWARF debug sections.
Symbols in the DWARF debugging sections are relative to the beginning
of the section so we begin them at 0. */
/* DWARF 1 */
.debug 0 : { *(.debug) }
.line 0 : { *(.line) }
/* GNU DWARF 1 extensions */
.debug_srcinfo 0 : { *(.debug_srcinfo) }
.debug_sfnames 0 : { *(.debug_sfnames) }
/* DWARF 1.1 and DWARF 2 */
.debug_aranges 0 : { *(.debug_aranges) }
.debug_pubnames 0 : { *(.debug_pubnames) }
/* DWARF 2 */
.debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
.debug_abbrev 0 : { *(.debug_abbrev) }
.debug_line 0 : { *(.debug_line) }
.debug_frame 0 : { *(.debug_frame) }
.debug_str 0 : { *(.debug_str) }
.debug_loc 0 : { *(.debug_loc) }
.debug_macinfo 0 : { *(.debug_macinfo) }
/* Discard everything not specifically mentioned above. */
/DISCARD/ :
{
*(*);
}
}

View File

@ -6338,21 +6338,19 @@ static void sub_8102D8C(s16 a, s16 b, s16* c, s16* d, s8 e)
static void sub_8102DE4(struct Sprite* sprite)
{
int b;
s16 a;
int c;
s16 y, yDelta;
u8 index;
sprite->data[0]++;
b = sprite->data[0] * 5 - ((sprite->data[0] * 5 / 256) << 8);
yDelta = sprite->data[0] * 5 - ((sprite->data[0] * 5 / 256) << 8);
sprite->data[4] += sprite->data[6];
sprite->data[5] += sprite->data[7];
sprite->pos1.x = sprite->data[4] >> 4;
sprite->pos1.y = sprite->data[5] >> 4;
sprite->pos2.y = Sin(b, 15);
a = (u16)sprite->pos1.y;
c = (u16)sprite->pos1.x;
sprite->pos2.y = Sin(yDelta, 15);
if ((u32)((c + 16) << 16) > (0x110) << 16 || a < -16 || a > 0x80)
y = sprite->pos1.y;
if (sprite->pos1.x < -16 || sprite->pos1.x > 256 || y < -16 || y > 128)
{
DestroySpriteAndMatrix(sprite);
}
@ -6373,12 +6371,8 @@ static void sub_8102DE4(struct Sprite* sprite)
void sub_8102EB0(struct Sprite* sprite)
{
int a;
if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
{
a = gBattleAnimArgs[1];
(u16)gBattleAnimArgs[1] = -a;
}
gBattleAnimArgs[1] *= -1;
sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2) + gBattleAnimArgs[1];
sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3) + gBattleAnimArgs[2];
@ -6564,8 +6558,8 @@ static void sub_8103300(struct Sprite* sprite)
static void sub_8103320(struct Sprite* sprite)
{
s16 temp;
s16 temp2;
s16 x1, x2;
sprite->data[1] += 4;
if (sprite->data[1] > 254)
{
@ -6587,20 +6581,21 @@ static void sub_8103320(struct Sprite* sprite)
if (sprite->data[1] > 0x9F)
sprite->subpriority = sprite->data[2];
temp = gSineTable[sprite->data[1]];
sprite->pos2.x = (temp2 = temp >> 3) + (temp2 >> 1);
x1 = gSineTable[sprite->data[1]];
x2 = x1 >> 3;
sprite->pos2.x = (x1 >> 3) + (x2 >> 1);
}
void sub_8103390(struct Sprite* sprite)
{
u8 bank;
u8 battler;
if (gBattleAnimArgs[0] == 0)
bank = gBattleAnimAttacker;
battler = gBattleAnimAttacker;
else
bank = gBattleAnimTarget;
battler = gBattleAnimTarget;
sub_810310C(bank, sprite);
if (GetBattlerSide(bank) == B_SIDE_PLAYER)
sub_810310C(battler, sprite);
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
{
StartSpriteAnim(sprite, 0);
sprite->data[0] = 2;

View File

@ -2548,13 +2548,10 @@ void sub_815BE04(struct Sprite *sprite)
static void sub_815BF44(struct Sprite *sprite)
{
int var0;
s8 var1;
var0 = (u16)sprite->data[2] + (u16)sprite->data[3];
var1 = var0 >> 8;
sprite->pos2.y -= var1;
sprite->data[3] = var0 & 0xFF;
s16 delta = sprite->data[3] + sprite->data[2];
sprite->pos2.y -= delta >> 8;
sprite->data[3] += sprite->data[2];
sprite->data[3] &= 0xFF;
if (sprite->data[4] == 0 && sprite->pos2.y < -8)
{
gSprites[sprite->data[6]].invisible = 0;
@ -2587,19 +2584,12 @@ static void sub_815BFF4(struct Sprite *sprite)
static void sub_815C050(struct Sprite *sprite)
{
u16 d2;
register u16 d3 asm("r1");
int var0;
s8 var1;
if (!sprite->invisible)
{
d2 = sprite->data[2];
d3 = sprite->data[3];
var0 = d2 + d3;
var1 = var0 >> 8;
sprite->pos2.y -= var1;
sprite->data[3] = var0 & 0xFF;
s16 delta = sprite->data[3] + sprite->data[2];
sprite->pos2.y -= delta >> 8;
sprite->data[3] += sprite->data[2];
sprite->data[3] &= 0xFF;
if (--sprite->data[1] == -1)
{
sprite->invisible = 1;

View File

@ -2037,7 +2037,7 @@ u8 sub_80A8394(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority
gMonSpritesGfxPtr->field_17C = AllocZeroed(0x2000);
if (!isBackpic)
{
LoadCompressedPalette(GetFrontSpritePalFromSpeciesAndPersonality(species, trainerId, personality), (palette * 0x10) + 0x100, 0x20);
LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), (palette * 0x10) + 0x100, 0x20);
if (a10 == 1 || sub_80688F8(5, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0)
LoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species],
gMonSpritesGfxPtr->field_17C,
@ -2053,7 +2053,7 @@ u8 sub_80A8394(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority
}
else
{
LoadCompressedPalette(GetFrontSpritePalFromSpeciesAndPersonality(species, trainerId, personality), (palette * 0x10) + 0x100, 0x20);
LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), (palette * 0x10) + 0x100, 0x20);
if (a10 == 1 || sub_80688F8(5, battlerId) == 1 || gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies != 0)
LoadSpecialPokePic_DontHandleDeoxys(&gMonBackPicTable[species],
gMonSpritesGfxPtr->field_17C,

View File

@ -830,15 +830,11 @@ static void Task_HandleSendLinkBuffersData(u8 taskId)
}
}
// fix me
void sub_8033648(void)
{
u8 i;
s32 j;
u16 r6;
u8 *recvBuffer;
u8 *dest;
u8 *src;
if (gReceivedRemoteLinkPlayers != 0 && (gBattleTypeFlags & BATTLE_TYPE_20))
{
@ -849,25 +845,24 @@ void sub_8033648(void)
{
ResetBlockReceivedFlag(i);
recvBuffer = (u8 *)gBlockRecvBuffer[i];
#ifndef NONMATCHING
asm("");
recvBuffer = (u8 *)&gBlockRecvBuffer[i];
#endif
r6 = gBlockRecvBuffer[i][2];
if (gTasks[sLinkReceiveTaskId].data[14] + 9 + r6 > 0x1000)
{
gTasks[sLinkReceiveTaskId].data[12] = gTasks[sLinkReceiveTaskId].data[14];
gTasks[sLinkReceiveTaskId].data[14] = 0;
u8 *dest, *src;
u16 r6 = gBlockRecvBuffer[i][2];
if (gTasks[sLinkReceiveTaskId].data[14] + 9 + r6 > 0x1000)
{
gTasks[sLinkReceiveTaskId].data[12] = gTasks[sLinkReceiveTaskId].data[14];
gTasks[sLinkReceiveTaskId].data[14] = 0;
}
dest = &gLinkBattleRecvBuffer[gTasks[sLinkReceiveTaskId].data[14]];
src = recvBuffer;
for (j = 0; j < r6 + 8; j++)
dest[j] = src[j];
gTasks[sLinkReceiveTaskId].data[14] = gTasks[sLinkReceiveTaskId].data[14] + r6 + 8;
}
dest = &gLinkBattleRecvBuffer[gTasks[sLinkReceiveTaskId].data[14]];
src = recvBuffer;
for (j = 0; j < r6 + 8; j++)
dest[j] = src[j];
gTasks[sLinkReceiveTaskId].data[14] = gTasks[sLinkReceiveTaskId].data[14] + r6 + 8;
}
}
}

View File

@ -1024,13 +1024,13 @@ static const union AnimCmd gUnknown_0860D020[] =
static const union AnimCmd gUnknown_0860D028[] =
{
ANIMCMD_FRAME(18, 129, .vFlip = TRUE),
ANIMCMD_FRAME(18, 1, .vFlip = TRUE),
ANIMCMD_END,
};
static const union AnimCmd gUnknown_0860D030[] =
{
ANIMCMD_FRAME(16, 65, .hFlip = TRUE),
ANIMCMD_FRAME(16, 1, .hFlip = TRUE),
ANIMCMD_END,
};

View File

@ -16,7 +16,7 @@
#include "constants/moves.h"
// IWRAM bss
static IWRAM_DATA bool8 sPerformedRentalSwap;
static bool8 sPerformedRentalSwap;
// This file's functions.
static void InitFactoryChallenge(void);

View File

@ -227,9 +227,9 @@ static EWRAM_DATA u8 *sSwapMenuTilemapBuffer = NULL;
static EWRAM_DATA u8 *sSwapMonCardBgTilemapBuffer = NULL;
// IWRAM bss
static IWRAM_DATA struct FactorySelectMonsStruct *sFactorySelectScreen;
static IWRAM_DATA void (*sSwap_CurrentTableFunc)(u8 taskId);
static IWRAM_DATA struct FactorySwapMonsStruct *sFactorySwapScreen;
static struct FactorySelectMonsStruct *sFactorySelectScreen;
static void (*sSwap_CurrentTableFunc)(u8 taskId);
static struct FactorySwapMonsStruct *sFactorySwapScreen;
// IWRAM common
u8 (*gUnknown_030062E8)(void);

View File

@ -552,7 +552,7 @@ static void BattleLoadMonSpriteGfx(struct Pokemon *mon, u32 battlerId, bool32 op
if (gBattleSpritesDataPtr->battlerData[battlerId].transformSpecies == SPECIES_NONE)
lzPaletteData = GetMonFrontSpritePal(mon);
else
lzPaletteData = GetFrontSpritePalFromSpeciesAndPersonality(species, otId, monsPersonality);
lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(species, otId, monsPersonality);
LZDecompressWram(lzPaletteData, gDecompressionBuffer);
LoadPalette(gDecompressionBuffer, paletteOffset, 0x20);
@ -873,7 +873,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform
dst = (void *)(VRAM + 0x10000 + gSprites[gBattlerSpriteIds[battlerAtk]].oam.tileNum * 32);
DmaCopy32(3, src, dst, 0x800);
paletteOffset = 0x100 + battlerAtk * 16;
lzPaletteData = GetFrontSpritePalFromSpeciesAndPersonality(targetSpecies, otId, personalityValue);
lzPaletteData = GetMonSpritePalFromSpeciesAndPersonality(targetSpecies, otId, personalityValue);
LZDecompressWram(lzPaletteData, gDecompressionBuffer);
LoadPalette(gDecompressionBuffer, paletteOffset, 32);
@ -903,10 +903,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform
void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite)
{
u8 position;
s32 i;
u32 var;
const void *substitutePal;
s32 i, position, palOffset;
if (!loadMonSprite)
{
@ -922,19 +919,16 @@ void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite)
else
LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites[position]);
i = 1;
var = battlerId * 16;
substitutePal = gSubstituteDollPal;
for (; i < 4; i++)
for (i = 1; i < 4; i++)
{
register void *dmaSrc asm("r0") = gMonSpritesGfxPtr->sprites[position];
void *dmaDst = (i * 0x800) + dmaSrc;
u32 dmaSize = 0x800;
DmaCopy32(3, dmaSrc, dmaDst, dmaSize);
i++;i--;
u8 (*ptr)[4][0x800] = gMonSpritesGfxPtr->sprites[position];
ptr++;ptr--; // Needed to match.
DmaCopy32Defvars(3, (*ptr)[0], (*ptr)[i], 0x800);
}
LoadCompressedPalette(substitutePal, 0x100 + var, 32);
palOffset = (battlerId * 16) + 0x100;
LoadCompressedPalette(gSubstituteDollPal, palOffset, 32);
}
else
{

View File

@ -73,6 +73,9 @@ extern const u8 *const gBattlescriptsForUsingItem[];
extern const u8 *const gBattlescriptsForSafariActions[];
// this file's functions
#if !defined(NONMATCHING) && MODERN
#define static
#endif
static void CB2_InitBattleInternal(void);
static void CB2_PreInitMultiBattle(void);
static void CB2_PreInitIngamePlayerPartnerBattle(void);

View File

@ -53,11 +53,11 @@ struct PikeWildMon
};
// IWRAM bss
static IWRAM_DATA u8 sRoomType;
static IWRAM_DATA u8 sStatusMon;
static IWRAM_DATA bool8 sUnknown_0300128E;
static IWRAM_DATA u32 sStatusFlags;
static IWRAM_DATA u8 sNpcId;
static u8 sRoomType;
static u8 sStatusMon;
static bool8 sUnknown_0300128E;
static u32 sStatusFlags;
static u8 sNpcId;
// This file's functions.
static void SetRoomType(void);

View File

@ -44,7 +44,7 @@ static void sub_81BA040(void);
static void sub_81B9EC0(void);
// IWRAM bss
static IWRAM_DATA u16 sRandMonSetId;
static u16 sRandMonSetId;
// const rom data
void static (*const gUnknown_086160B4[])(void) =

View File

@ -262,10 +262,10 @@ static bool8 sub_814842C(struct Sprite *sprite);
static bool8 sub_8148458(struct Sprite *sprite);
// iwram bss vars
IWRAM_DATA static s16 sUnusedRectangularSpiralVar;
IWRAM_DATA static u8 sTestingTransitionId;
IWRAM_DATA static u8 sTestingTransitionState;
IWRAM_DATA static struct StructRectangularSpiral sRectangularSpiralTransition[4];
static s16 sUnusedRectangularSpiralVar;
static u8 sTestingTransitionId;
static u8 sTestingTransitionState;
static struct StructRectangularSpiral sRectangularSpiralTransition[4];
// ewram vars
EWRAM_DATA static struct TransitionData *sTransitionStructPtr = NULL;

View File

@ -194,10 +194,10 @@ EWRAM_DATA static s32 sUnknown_020322BC[5] = {0};
EWRAM_DATA static u32 sUnknown_020322D0 = 0;
// IWRAM bss
IWRAM_DATA static s16 sUnknown_03000DE8[8];
IWRAM_DATA static s16 sUnknown_03000DF8[6];
IWRAM_DATA static s16 sUnknown_03000E04;
IWRAM_DATA static s16 sUnknown_03000E06;
static s16 sUnknown_03000DE8[8];
static s16 sUnknown_03000DF8[6];
static s16 sUnknown_03000E04;
static s16 sUnknown_03000E06;
// IWRAM common
u8 gInGameOpponentsNo;

View File

@ -37,9 +37,9 @@ struct BgConfig2
s32 bg_y;
};
static IWRAM_DATA struct BgControl sGpuBgConfigs;
static IWRAM_DATA struct BgConfig2 sGpuBgConfigs2[4];
static IWRAM_DATA u32 sDmaBusyBitfield[4];
static struct BgControl sGpuBgConfigs;
static struct BgConfig2 sGpuBgConfigs2[4];
static u32 sDmaBusyBitfield[4];
u32 gUnneededFireRedVariable;
@ -220,7 +220,7 @@ static void ShowBgInternal(u8 bg)
(sGpuBgConfigs.configs[bg].wraparound << 13) |
(sGpuBgConfigs.configs[bg].screenSize << 14);
SetGpuReg((bg << 1) + 0x8, value);
SetGpuReg((bg << 1) + REG_OFFSET_BG0CNT, value);
sGpuBgConfigs.bgVisibilityAndMode |= 1 << (bg + 8);
sGpuBgConfigs.bgVisibilityAndMode &= DISPCNT_ALL_BG_AND_MODE_BITS;
@ -914,7 +914,6 @@ void CopyBgTilemapBufferToVram(u8 bg)
void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 width, u8 height)
{
const void *srcCopy;
u16 destX16;
u16 destY16;
u16 mode;
@ -924,27 +923,31 @@ void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 wi
switch (GetBgType(bg))
{
case 0:
srcCopy = src;
{
const u16 * srcCopy = src;
for (destY16 = destY; destY16 < (destY + height); destY16++)
{
for (destX16 = destX; destX16 < (destX + width); destX16++)
{
((u16*)sGpuBgConfigs2[bg].tilemap)[((destY16 * 0x20) + destX16)] = *((u16*)srcCopy)++;
((u16*)sGpuBgConfigs2[bg].tilemap)[((destY16 * 0x20) + destX16)] = *srcCopy++;
}
}
break;
}
case 1:
srcCopy = src;
{
const u8 * srcCopy = src;
mode = GetBgMetricAffineMode(bg, 0x1);
for (destY16 = destY; destY16 < (destY + height); destY16++)
{
for (destX16 = destX; destX16 < (destX + width); destX16++)
{
((u8*)sGpuBgConfigs2[bg].tilemap)[((destY16 * mode) + destX16)] = *((u8*)srcCopy)++;
((u8*)sGpuBgConfigs2[bg].tilemap)[((destY16 * mode) + destX16)] = *srcCopy++;
}
}
break;
}
}
}
}

View File

@ -245,7 +245,7 @@ static void CableCarMainCallback_Setup(void)
{
u16 imebak;
u8 i = 0;
int sizeOut = 0;
u32 sizeOut = 0;
switch (gMain.state)
{

View File

@ -269,8 +269,6 @@ extern const u8 gText_Contest_Fear[];
extern const u8 gText_BDot[];
extern const u8 gText_CDot[];
extern const u8 *const gUnknown_08587E10[];
extern const struct SpriteTemplate gSpriteTemplate_8587AD0;
extern const struct SpriteTemplate gSpriteTemplate_8587B18[];
extern void (*const gContestEffectFuncs[])(void);
static const u8 gUnknown_08587A6C[] =
@ -1268,7 +1266,7 @@ static void sub_80D8108(u8 taskId)
gTasks[taskId].data[0]++;
break;
case 1:
(s16)gBattle_BG1_Y += 7;
*(s16*)&gBattle_BG1_Y += 7;
if ((s16)gBattle_BG1_Y <= 160)
break;
gTasks[taskId].data[0]++;
@ -2975,7 +2973,7 @@ static u8 sub_80DB174(u16 species, u32 otId, u32 personality, u32 index)
else
HandleLoadSpecialPokePic_DontHandleDeoxys(gMonBackPicTable + species, gMonSpritesGfxPtr->sprites[0], species, personality);
LoadCompressedPalette(GetFrontSpritePalFromSpeciesAndPersonality(species, otId, personality), 0x120, 0x20);
LoadCompressedPalette(GetMonSpritePalFromSpeciesAndPersonality(species, otId, personality), 0x120, 0x20);
SetMultiuseSpriteTemplateToPokemon(species, 0);
spriteId = CreateSprite(&gMultiuseSpriteTemplate, 0x70, GetBattlerSpriteFinal_Y(2, species, FALSE), 30);

File diff suppressed because it is too large Load Diff

View File

@ -28,11 +28,11 @@ struct ContestWinner *gUnknown_030061C0;
u16 *gContestPaintingMonPalette;
// IWRAM bss
IWRAM_DATA u8 gContestPaintingState;
IWRAM_DATA u16 gContestPaintingMosaicVal;
IWRAM_DATA u16 gContestPaintingFadeCounter;
IWRAM_DATA bool8 gUnknown_030011F6;
IWRAM_DATA u8 gContestPaintingWindowId;
static u8 gContestPaintingState;
static u16 gContestPaintingMosaicVal;
static u16 gContestPaintingFadeCounter;
static bool8 gUnknown_030011F6;
static u8 gContestPaintingWindowId;
static void ShowContestPainting(void);
static void HoldContestPainting(void);
@ -362,7 +362,7 @@ static void VBlankCB_ContestPainting(void)
void sub_81302E8(u16 species, u8 arg1)
{
const void *pal = GetFrontSpritePalFromSpeciesAndPersonality(species, gUnknown_030061C0->trainerId, gUnknown_030061C0->personality);
const void *pal = GetMonSpritePalFromSpeciesAndPersonality(species, gUnknown_030061C0->trainerId, gUnknown_030061C0->personality);
LZDecompressVram(pal, gContestPaintingMonPalette);
if (!arg1)
{
@ -684,7 +684,7 @@ static void sub_8130760(u8 contestResult)
gUnknown_030061A0.var_16 = 2;
gUnknown_030061A0.var_0 = contestResult;
gUnknown_030061A0.var_10 = 0x6010000;
gUnknown_030061A0.var_10 = OBJ_VRAM0;
sub_8124F2C(&gUnknown_030061A0);
sub_81261A4(&gUnknown_030061A0);

View File

@ -0,0 +1,113 @@
const struct CityMapEntry gPokenavCityMaps[] =
{
{
.mapSecId = 0,
.index = 0,
.tilemap = gPokenavCityMap_Littleroot_0,
},
{
.mapSecId = 1,
.index = 0,
.tilemap = gPokenavCityMap_Oldale_0,
},
{
.mapSecId = 2,
.index = 0,
.tilemap = gPokenavCityMap_Dewford_0,
},
{
.mapSecId = 3,
.index = 0,
.tilemap = gPokenavCityMap_Lavarige_0,
},
{
.mapSecId = 4,
.index = 0,
.tilemap = gPokenavCityMap_Fallarbor_0,
},
{
.mapSecId = 5,
.index = 0,
.tilemap = gPokenavCityMap_Verdanturf_0,
},
{
.mapSecId = 6,
.index = 0,
.tilemap = gPokenavCityMap_Pacifidlog_0,
},
{
.mapSecId = 7,
.index = 0,
.tilemap = gPokenavCityMap_Petalburg_0,
},
{
.mapSecId = 8,
.index = 0,
.tilemap = gPokenavCityMap_Slateport_0,
},
{
.mapSecId = 8,
.index = 1,
.tilemap = gPokenavCityMap_Slateport_1,
},
{
.mapSecId = 9,
.index = 0,
.tilemap = gPokenavCityMap_Mauville_0,
},
{
.mapSecId = 9,
.index = 1,
.tilemap = gPokenavCityMap_Mauville_1,
},
{
.mapSecId = 10,
.index = 0,
.tilemap = gPokenavCityMap_Rustboro_0,
},
{
.mapSecId = 10,
.index = 1,
.tilemap = gPokenavCityMap_Rustboro_1,
},
{
.mapSecId = 11,
.index = 0,
.tilemap = gPokenavCityMap_Fortree_0,
},
{
.mapSecId = 12,
.index = 0,
.tilemap = gPokenavCityMap_Lilycove_0,
},
{
.mapSecId = 12,
.index = 1,
.tilemap = gPokenavCityMap_Lilycove_1,
},
{
.mapSecId = 13,
.index = 0,
.tilemap = gPokenavCityMap_Mossdeep_0,
},
{
.mapSecId = 13,
.index = 1,
.tilemap = gPokenavCityMap_Mossdeep_1,
},
{
.mapSecId = 14,
.index = 0,
.tilemap = gPokenavCityMap_Sootopolis_0,
},
{
.mapSecId = 15,
.index = 0,
.tilemap = gPokenavCityMap_EverGrande_0,
},
{
.mapSecId = 15,
.index = 1,
.tilemap = gPokenavCityMap_EverGrande_1,
},
};

View File

@ -0,0 +1,22 @@
const u32 gPokenavCityMap_Lavarige_0[] = INCBIN_U32("graphics/pokenav/city_maps/lavaridge_0.bin.lz");
const u32 gPokenavCityMap_Fallarbor_0[] = INCBIN_U32("graphics/pokenav/city_maps/fallarbor_0.bin.lz");
const u32 gPokenavCityMap_Fortree_0[] = INCBIN_U32("graphics/pokenav/city_maps/fortree_0.bin.lz");
const u32 gPokenavCityMap_Slateport_0[] = INCBIN_U32("graphics/pokenav/city_maps/slateport_0.bin.lz");
const u32 gPokenavCityMap_Slateport_1[] = INCBIN_U32("graphics/pokenav/city_maps/slateport_1.bin.lz");
const u32 gPokenavCityMap_Rustboro_0[] = INCBIN_U32("graphics/pokenav/city_maps/rustboro_0.bin.lz");
const u32 gPokenavCityMap_Rustboro_1[] = INCBIN_U32("graphics/pokenav/city_maps/rustboro_1.bin.lz");
const u32 gPokenavCityMap_Pacifidlog_0[] = INCBIN_U32("graphics/pokenav/city_maps/pacifidlog_0.bin.lz");
const u32 gPokenavCityMap_Mauville_1[] = INCBIN_U32("graphics/pokenav/city_maps/mauville_1.bin.lz");
const u32 gPokenavCityMap_Mauville_0[] = INCBIN_U32("graphics/pokenav/city_maps/mauville_0.bin.lz");
const u32 gPokenavCityMap_Oldale_0[] = INCBIN_U32("graphics/pokenav/city_maps/oldale_0.bin.lz");
const u32 gPokenavCityMap_Lilycove_1[] = INCBIN_U32("graphics/pokenav/city_maps/lilycove_1.bin.lz");
const u32 gPokenavCityMap_Lilycove_0[] = INCBIN_U32("graphics/pokenav/city_maps/lilycove_0.bin.lz");
const u32 gPokenavCityMap_Littleroot_0[] = INCBIN_U32("graphics/pokenav/city_maps/littleroot_0.bin.lz");
const u32 gPokenavCityMap_Dewford_0[] = INCBIN_U32("graphics/pokenav/city_maps/dewford_0.bin.lz");
const u32 gPokenavCityMap_Sootopolis_0[] = INCBIN_U32("graphics/pokenav/city_maps/sootopolis_0.bin.lz");
const u32 gPokenavCityMap_EverGrande_0[] = INCBIN_U32("graphics/pokenav/city_maps/ever_grande_0.bin.lz");
const u32 gPokenavCityMap_EverGrande_1[] = INCBIN_U32("graphics/pokenav/city_maps/ever_grande_1.bin.lz");
const u32 gPokenavCityMap_Verdanturf_0[] = INCBIN_U32("graphics/pokenav/city_maps/verdanturf_0.bin.lz");
const u32 gPokenavCityMap_Mossdeep_1[] = INCBIN_U32("graphics/pokenav/city_maps/mossdeep_1.bin.lz");
const u32 gPokenavCityMap_Mossdeep_0[] = INCBIN_U32("graphics/pokenav/city_maps/mossdeep_0.bin.lz");
const u32 gPokenavCityMap_Petalburg_0[] = INCBIN_U32("graphics/pokenav/city_maps/petalburg_0.bin.lz");

View File

@ -0,0 +1,115 @@
const u8 gGiftRibbonDescriptionPart1_2003RegionalTourney[] = _("2003 REGIONAL TOURNEY");
const u8 gGiftRibbonDescriptionPart2_Champion[] = _("CHAMPION RIBBON");
const u8 gGiftRibbonDescriptionPart1_2003NationalTourney[] = _("2003 NATIONAL TOURNEY");
const u8 gGiftRibbonDescriptionPart1_2003GlobalCup[] = _("2003 GLOBAL CUP");
const u8 gGiftRibbonDescriptionPart2_RunnerUp[] = _("Runner-up RIBBON");
const u8 gGiftRibbonDescriptionPart2_Semifinalist[] = _("Semifinalist RIBBON");
const u8 gGiftRibbonDescriptionPart1_2004RegionalTourney[] = _("2004 REGIONAL TOURNEY");
const u8 gGiftRibbonDescriptionPart1_2004NationalTourney[] = _("2004 NATIONAL TOURNEY");
const u8 gGiftRibbonDescriptionPart1_2004GlobalCup[] = _("2004 GLOBAL CUP");
const u8 gGiftRibbonDescriptionPart1_2005RegionalTourney[] = _("2005 REGIONAL TOURNEY");
const u8 gGiftRibbonDescriptionPart1_2005NationalTourney[] = _("2005 NATIONAL TOURNEY");
const u8 gGiftRibbonDescriptionPart1_2005GlobalCup[] = _("2005 GLOBAL CUP");
const u8 gGiftRibbonDescriptionPart1_PokemonBattleCup[] = _("POKéMON BATTLE CUP");
const u8 gGiftRibbonDescriptionPart2_Participation[] = _("Participation RIBBON");
const u8 gGiftRibbonDescriptionPart1_PokemonLeague[] = _("POKéMON LEAGUE");
const u8 gGiftRibbonDescriptionPart1_AdvanceCup[] = _("ADVANCE CUP");
const u8 gGiftRibbonDescriptionPart1_PokemonTournament[] = _("POKéMON Tournament");
const u8 gGiftRibbonDescriptionPart2_Participation2[] = _("Participation RIBBON");
const u8 gGiftRibbonDescriptionPart1_PokemonEvent[] = _("POKéMON Event");
const u8 gGiftRibbonDescriptionPart1_PokemonFestival[] = _("POKéMON Festival");
const u8 gGiftRibbonDescriptionPart1_DifficultyClearing[] = _("Difficulty-clearing");
const u8 gGiftRibbonDescriptionPart2_Commemorative[] = _("Commemorative RIBBON");
const u8 gGiftRibbonDescriptionPart1_ClearingAllChallenges[] = _("RIBBON awarded for");
const u8 gGiftRibbonDescriptionPart2_ClearingAllChallenges[] = _("clearing all challenges.");
const u8 gGiftRibbonDescriptionPart1_100StraightWin[] = _("100-straight Win");
const u8 gGiftRibbonDescriptionPart1_DarknessTower[] = _("DARKNESS TOWER Clear");
const u8 gGiftRibbonDescriptionPart1_RedTower[] = _("RED TOWER Clear");
const u8 gGiftRibbonDescriptionPart1_BlackironTower[] = _("BLACKIRON TOWER Clear");
const u8 gGiftRibbonDescriptionPart1_FinalTower[] = _("FINAL TOWER Clear");
const u8 gGiftRibbonDescriptionPart1_LegendMaking[] = _("Legend-making");
const u8 gGiftRibbonDescriptionPart1_PokemonCenterTokyo[] = _("POKéMON CENTER TOKYO");
const u8 gGiftRibbonDescriptionPart1_PokemonCenterOsaka[] = _("POKéMON CENTER OSAKA");
const u8 gGiftRibbonDescriptionPart1_PokemonCenterNagoya[] = _("POKéMON CENTER NAGOYA");
const u8 gGiftRibbonDescriptionPart1_PokemonCenterNY[] = _("POKéMON CENTER NY");
const u8 gGiftRibbonDescriptionPart1_SummerHolidays[] = _("Summer Holidays RIBBON");
const u8 gGiftRibbonDescriptionPart2_EmptyString[] = _("");
const u8 gGiftRibbonDescriptionPart1_WinterHolidays[] = _("Winter Holidays RIBBON");
const u8 gGiftRibbonDescriptionPart1_SpringHolidays[] = _("Spring Holidays RIBBON");
const u8 gGiftRibbonDescriptionPart1_Evergreen[] = _("Evergreen RIBBON");
const u8 gGiftRibbonDescriptionPart1_SpecialHoliday[] = _("Special Holiday RIBBON");
const u8 gGiftRibbonDescriptionPart1_HardWorker[] = _("Hard Worker RIBBON");
const u8 gGiftRibbonDescriptionPart1_LotsOfFriends[] = _("Lots of Friends RIBBON");
const u8 gGiftRibbonDescriptionPart1_FullOfEnergy[] = _("Full of Energy RIBBON");
const u8 gGiftRibbonDescriptionPart1_LovedPokemon[] = _("A commemorative RIBBON");
const u8 gGiftRibbonDescriptionPart2_LovedPokemon[] = _("for a loved POKéMON.");
const u8 gGiftRibbonDescriptionPart1_LoveForPokemon[] = _("RIBBON that shows");
const u8 gGiftRibbonDescriptionPart2_LoveForPokemon[] = _("love for POKéMON.");
const u8 *const gGiftRibbonDescriptionPointers[][2] =
{
{gGiftRibbonDescriptionPart1_2003RegionalTourney, gGiftRibbonDescriptionPart2_Champion},
{gGiftRibbonDescriptionPart1_2003NationalTourney, gGiftRibbonDescriptionPart2_Champion},
{gGiftRibbonDescriptionPart1_2003GlobalCup, gGiftRibbonDescriptionPart2_Champion},
{gGiftRibbonDescriptionPart1_2003RegionalTourney, gGiftRibbonDescriptionPart2_RunnerUp},
{gGiftRibbonDescriptionPart1_2003NationalTourney, gGiftRibbonDescriptionPart2_RunnerUp},
{gGiftRibbonDescriptionPart1_2003GlobalCup, gGiftRibbonDescriptionPart2_RunnerUp},
{gGiftRibbonDescriptionPart1_2003RegionalTourney, gGiftRibbonDescriptionPart2_Semifinalist},
{gGiftRibbonDescriptionPart1_2003NationalTourney, gGiftRibbonDescriptionPart2_Semifinalist},
{gGiftRibbonDescriptionPart1_2003GlobalCup, gGiftRibbonDescriptionPart2_Semifinalist},
{gGiftRibbonDescriptionPart1_2004RegionalTourney, gGiftRibbonDescriptionPart2_Champion},
{gGiftRibbonDescriptionPart1_2004NationalTourney, gGiftRibbonDescriptionPart2_Champion},
{gGiftRibbonDescriptionPart1_2004GlobalCup, gGiftRibbonDescriptionPart2_Champion},
{gGiftRibbonDescriptionPart1_2004RegionalTourney, gGiftRibbonDescriptionPart2_RunnerUp},
{gGiftRibbonDescriptionPart1_2004NationalTourney, gGiftRibbonDescriptionPart2_RunnerUp},
{gGiftRibbonDescriptionPart1_2004GlobalCup, gGiftRibbonDescriptionPart2_RunnerUp},
{gGiftRibbonDescriptionPart1_2004RegionalTourney, gGiftRibbonDescriptionPart2_Semifinalist},
{gGiftRibbonDescriptionPart1_2004NationalTourney, gGiftRibbonDescriptionPart2_Semifinalist},
{gGiftRibbonDescriptionPart1_2004GlobalCup, gGiftRibbonDescriptionPart2_Semifinalist},
{gGiftRibbonDescriptionPart1_2005RegionalTourney, gGiftRibbonDescriptionPart2_Champion},
{gGiftRibbonDescriptionPart1_2005NationalTourney, gGiftRibbonDescriptionPart2_Champion},
{gGiftRibbonDescriptionPart1_2005GlobalCup, gGiftRibbonDescriptionPart2_Champion},
{gGiftRibbonDescriptionPart1_2005RegionalTourney, gGiftRibbonDescriptionPart2_RunnerUp},
{gGiftRibbonDescriptionPart1_2005NationalTourney, gGiftRibbonDescriptionPart2_RunnerUp},
{gGiftRibbonDescriptionPart1_2005GlobalCup, gGiftRibbonDescriptionPart2_RunnerUp},
{gGiftRibbonDescriptionPart1_2005RegionalTourney, gGiftRibbonDescriptionPart2_Semifinalist},
{gGiftRibbonDescriptionPart1_2005NationalTourney, gGiftRibbonDescriptionPart2_Semifinalist},
{gGiftRibbonDescriptionPart1_2005GlobalCup, gGiftRibbonDescriptionPart2_Semifinalist},
{gGiftRibbonDescriptionPart1_PokemonBattleCup, gGiftRibbonDescriptionPart2_Champion},
{gGiftRibbonDescriptionPart1_PokemonBattleCup, gGiftRibbonDescriptionPart2_RunnerUp},
{gGiftRibbonDescriptionPart1_PokemonBattleCup, gGiftRibbonDescriptionPart2_Semifinalist},
{gGiftRibbonDescriptionPart1_PokemonBattleCup, gGiftRibbonDescriptionPart2_Participation},
{gGiftRibbonDescriptionPart1_PokemonLeague, gGiftRibbonDescriptionPart2_Champion},
{gGiftRibbonDescriptionPart1_PokemonLeague, gGiftRibbonDescriptionPart2_RunnerUp},
{gGiftRibbonDescriptionPart1_PokemonLeague, gGiftRibbonDescriptionPart2_Semifinalist},
{gGiftRibbonDescriptionPart1_PokemonLeague, gGiftRibbonDescriptionPart2_Participation},
{gGiftRibbonDescriptionPart1_AdvanceCup, gGiftRibbonDescriptionPart2_Champion},
{gGiftRibbonDescriptionPart1_AdvanceCup, gGiftRibbonDescriptionPart2_RunnerUp},
{gGiftRibbonDescriptionPart1_AdvanceCup, gGiftRibbonDescriptionPart2_Semifinalist},
{gGiftRibbonDescriptionPart1_AdvanceCup, gGiftRibbonDescriptionPart2_Participation},
{gGiftRibbonDescriptionPart1_PokemonTournament, gGiftRibbonDescriptionPart2_Participation2},
{gGiftRibbonDescriptionPart1_PokemonEvent, gGiftRibbonDescriptionPart2_Participation2},
{gGiftRibbonDescriptionPart1_PokemonFestival, gGiftRibbonDescriptionPart2_Participation2},
{gGiftRibbonDescriptionPart1_DifficultyClearing, gGiftRibbonDescriptionPart2_Commemorative},
{gGiftRibbonDescriptionPart1_ClearingAllChallenges, gGiftRibbonDescriptionPart2_ClearingAllChallenges},
{gGiftRibbonDescriptionPart1_100StraightWin, gGiftRibbonDescriptionPart2_Commemorative},
{gGiftRibbonDescriptionPart1_DarknessTower, gGiftRibbonDescriptionPart2_Commemorative},
{gGiftRibbonDescriptionPart1_RedTower, gGiftRibbonDescriptionPart2_Commemorative},
{gGiftRibbonDescriptionPart1_BlackironTower, gGiftRibbonDescriptionPart2_Commemorative},
{gGiftRibbonDescriptionPart1_FinalTower, gGiftRibbonDescriptionPart2_Commemorative},
{gGiftRibbonDescriptionPart1_LegendMaking, gGiftRibbonDescriptionPart2_Commemorative},
{gGiftRibbonDescriptionPart1_PokemonCenterTokyo, gGiftRibbonDescriptionPart2_Commemorative},
{gGiftRibbonDescriptionPart1_PokemonCenterOsaka, gGiftRibbonDescriptionPart2_Commemorative},
{gGiftRibbonDescriptionPart1_PokemonCenterNagoya, gGiftRibbonDescriptionPart2_Commemorative},
{gGiftRibbonDescriptionPart1_PokemonCenterNY, gGiftRibbonDescriptionPart2_Commemorative},
{gGiftRibbonDescriptionPart1_SummerHolidays, gGiftRibbonDescriptionPart2_EmptyString},
{gGiftRibbonDescriptionPart1_WinterHolidays, gGiftRibbonDescriptionPart2_EmptyString},
{gGiftRibbonDescriptionPart1_SpringHolidays, gGiftRibbonDescriptionPart2_EmptyString},
{gGiftRibbonDescriptionPart1_Evergreen, gGiftRibbonDescriptionPart2_EmptyString},
{gGiftRibbonDescriptionPart1_SpecialHoliday, gGiftRibbonDescriptionPart2_EmptyString},
{gGiftRibbonDescriptionPart1_HardWorker, gGiftRibbonDescriptionPart2_EmptyString},
{gGiftRibbonDescriptionPart1_LotsOfFriends, gGiftRibbonDescriptionPart2_EmptyString},
{gGiftRibbonDescriptionPart1_FullOfEnergy, gGiftRibbonDescriptionPart2_EmptyString},
{gGiftRibbonDescriptionPart1_LovedPokemon, gGiftRibbonDescriptionPart2_LovedPokemon},
{gGiftRibbonDescriptionPart1_LoveForPokemon, gGiftRibbonDescriptionPart2_LoveForPokemon}
};

View File

@ -0,0 +1,476 @@
#define MCFLAVOR(name) {gMatchCallFlavorText_##name##_Strategy, \
gMatchCallFlavorText_##name##_Pokemon, \
gMatchCallFlavorText_##name##_Intro1, \
gMatchCallFlavorText_##name##_Intro2}
const u8 gMatchCallFlavorText_AromaLady_Rose_Strategy[] = _("Becalm fighting emotions.");
const u8 gMatchCallFlavorText_AromaLady_Rose_Pokemon[] = _("Fragrant GRASS POKéMON.");
const u8 gMatchCallFlavorText_AromaLady_Rose_Intro1[] = _("Soothing aromas make the");
const u8 gMatchCallFlavorText_AromaLady_Rose_Intro2[] = _("body and mind healthy.");
const u8 gMatchCallFlavorText_RuinManiac_Andres_Strategy[] = _("I'm not very good at this.");
const u8 gMatchCallFlavorText_RuinManiac_Andres_Pokemon[] = _("Ruin-exploration partners.");
const u8 gMatchCallFlavorText_RuinManiac_Andres_Intro1[] = _("I am searching for undersea");
const u8 gMatchCallFlavorText_RuinManiac_Andres_Intro2[] = _("ruins and relics.");
const u8 gMatchCallFlavorText_RuinManiac_Dusty_Strategy[] = _("Overwhelm with power!");
const u8 gMatchCallFlavorText_RuinManiac_Dusty_Pokemon[] = _("Craggy ROCK POKéMON.");
const u8 gMatchCallFlavorText_RuinManiac_Dusty_Intro1[] = _("In search of ancient lore,");
const u8 gMatchCallFlavorText_RuinManiac_Dusty_Intro2[] = _("I travel the world.");
const u8 gMatchCallFlavorText_Tuber_Lola_Strategy[] = _("I'm going to try hard!");
const u8 gMatchCallFlavorText_Tuber_Lola_Pokemon[] = _("Good swimmer POKéMON.");
const u8 gMatchCallFlavorText_Tuber_Lola_Intro1[] = _("I wish I could swim without");
const u8 gMatchCallFlavorText_Tuber_Lola_Intro2[] = _("using an inner tube.");
const u8 gMatchCallFlavorText_Tuber_Ricky_Strategy[] = _("I don't know. I'll try hard.");
const u8 gMatchCallFlavorText_Tuber_Ricky_Pokemon[] = _("WATER POKéMON are buddies.");
const u8 gMatchCallFlavorText_Tuber_Ricky_Intro1[] = _("It's not like I can't swim.");
const u8 gMatchCallFlavorText_Tuber_Ricky_Intro2[] = _("I just like my inner tube.");
const u8 gMatchCallFlavorText_SisAndBro_LilaAndRoy_Strategy[] = _("We split our duties.");
const u8 gMatchCallFlavorText_SisAndBro_LilaAndRoy_Pokemon[] = _("We like friendly POKéMON.");
const u8 gMatchCallFlavorText_SisAndBro_LilaAndRoy_Intro1[] = _("We enjoy POKéMON together");
const u8 gMatchCallFlavorText_SisAndBro_LilaAndRoy_Intro2[] = _("as sister and brother.");
const u8 gMatchCallFlavorText_Cooltrainer_Cristin_Strategy[] = _("I finish with power moves!");
const u8 gMatchCallFlavorText_Cooltrainer_Cristin_Pokemon[] = _("A mix of different types.");
const u8 gMatchCallFlavorText_Cooltrainer_Cristin_Intro1[] = _("I aim to become the ultimate");
const u8 gMatchCallFlavorText_Cooltrainer_Cristin_Intro2[] = _("TRAINER!");
const u8 gMatchCallFlavorText_Cooltrainer_Brooke_Strategy[] = _("Exploit the foe's weakness.");
const u8 gMatchCallFlavorText_Cooltrainer_Brooke_Pokemon[] = _("Balance is crucial.");
const u8 gMatchCallFlavorText_Cooltrainer_Brooke_Intro1[] = _("My goal is to become the");
const u8 gMatchCallFlavorText_Cooltrainer_Brooke_Intro2[] = _("POKéMON CHAMPION.");
const u8 gMatchCallFlavorText_Cooltrainer_Wilton_Strategy[] = _("Upset the opponent.");
const u8 gMatchCallFlavorText_Cooltrainer_Wilton_Pokemon[] = _("Type doesn't matter.");
const u8 gMatchCallFlavorText_Cooltrainer_Wilton_Intro1[] = _("I'm a top student at the");
const u8 gMatchCallFlavorText_Cooltrainer_Wilton_Intro2[] = _("TRAINER'S SCHOOL.");
const u8 gMatchCallFlavorText_HexManiac_Valerie_Strategy[] = _("Slow, steady suffering.");
const u8 gMatchCallFlavorText_HexManiac_Valerie_Pokemon[] = _("Scary to meet at night.");
const u8 gMatchCallFlavorText_HexManiac_Valerie_Intro1[] = _("I see things that others");
const u8 gMatchCallFlavorText_HexManiac_Valerie_Intro2[] = _("can't see...");
const u8 gMatchCallFlavorText_Lady_Cindy_Strategy[] = _("Anything to win.");
const u8 gMatchCallFlavorText_Lady_Cindy_Pokemon[] = _("Gorgeous type!");
const u8 gMatchCallFlavorText_Lady_Cindy_Intro1[] = _("I have a pool specially for");
const u8 gMatchCallFlavorText_Lady_Cindy_Intro2[] = _("my POKéMON at home.");
const u8 gMatchCallFlavorText_Beauty_Thalia_Strategy[] = _("You'll fall under my spell!");
const u8 gMatchCallFlavorText_Beauty_Thalia_Pokemon[] = _("Mature WATER type.");
const u8 gMatchCallFlavorText_Beauty_Thalia_Intro1[] = _("I dream of cruising around");
const u8 gMatchCallFlavorText_Beauty_Thalia_Intro2[] = _("the world on a luxury liner.");
const u8 gMatchCallFlavorText_Beauty_Jessica_Strategy[] = _("I'll lead you astray.");
const u8 gMatchCallFlavorText_Beauty_Jessica_Pokemon[] = _("Cute, of course.");
const u8 gMatchCallFlavorText_Beauty_Jessica_Intro1[] = _("I love the SAFARI ZONE.");
const u8 gMatchCallFlavorText_Beauty_Jessica_Intro2[] = _("I seem to end up there.");
const u8 gMatchCallFlavorText_RichBoy_Winston_Strategy[] = _("Strategy? Who needs it?");
const u8 gMatchCallFlavorText_RichBoy_Winston_Pokemon[] = _("I spent big money on it!");
const u8 gMatchCallFlavorText_RichBoy_Winston_Intro1[] = _("I, being rich, sleep in a");
const u8 gMatchCallFlavorText_RichBoy_Winston_Intro2[] = _("custom POKéMON bed.");
const u8 gMatchCallFlavorText_PokeManiac_Steve_Strategy[] = _("Wrestle down with power.");
const u8 gMatchCallFlavorText_PokeManiac_Steve_Pokemon[] = _("Took all night to catch.");
const u8 gMatchCallFlavorText_PokeManiac_Steve_Intro1[] = _("Big, burly, and buff");
const u8 gMatchCallFlavorText_PokeManiac_Steve_Intro2[] = _("POKéMON are the best...");
const u8 gMatchCallFlavorText_Swimmer_Tony_Strategy[] = _("Ram at full speed!");
const u8 gMatchCallFlavorText_Swimmer_Tony_Pokemon[] = _("Funky WATER type!");
const u8 gMatchCallFlavorText_Swimmer_Tony_Intro1[] = _("If I can't be out swimming,");
const u8 gMatchCallFlavorText_Swimmer_Tony_Intro2[] = _("I'll be pumping weights.");
const u8 gMatchCallFlavorText_BlackBelt_Nob_Strategy[] = _("Grand slam pummeling!");
const u8 gMatchCallFlavorText_BlackBelt_Nob_Pokemon[] = _("FIGHTING type.");
const u8 gMatchCallFlavorText_BlackBelt_Nob_Intro1[] = _("Not to brag, but I can bust");
const u8 gMatchCallFlavorText_BlackBelt_Nob_Intro2[] = _("ten roof tiles!");
const u8 gMatchCallFlavorText_BlackBelt_Koji_Strategy[] = _("Witness karate power!");
const u8 gMatchCallFlavorText_BlackBelt_Koji_Pokemon[] = _("My partners in training!");
const u8 gMatchCallFlavorText_BlackBelt_Koji_Intro1[] = _("Let us discuss matters of");
const u8 gMatchCallFlavorText_BlackBelt_Koji_Intro2[] = _("the world with bare fists!");
const u8 gMatchCallFlavorText_Guitarist_Fernando_Strategy[] = _("Rock to stunning sounds!");
const u8 gMatchCallFlavorText_Guitarist_Fernando_Pokemon[] = _("Electric-and-sound combo!");
const u8 gMatchCallFlavorText_Guitarist_Fernando_Intro1[] = _("My compositions will shock");
const u8 gMatchCallFlavorText_Guitarist_Fernando_Intro2[] = _("you and stun you!");
const u8 gMatchCallFlavorText_Guitarist_Dalton_Strategy[] = _("I'll electrify you!");
const u8 gMatchCallFlavorText_Guitarist_Dalton_Pokemon[] = _("They're ELECTRIC!");
const u8 gMatchCallFlavorText_Guitarist_Dalton_Intro1[] = _("I want to make people cry");
const u8 gMatchCallFlavorText_Guitarist_Dalton_Intro2[] = _("with songs from my heart.");
const u8 gMatchCallFlavorText_Kindler_Bernie_Strategy[] = _("Burn it all down!");
const u8 gMatchCallFlavorText_Kindler_Bernie_Pokemon[] = _("Burn-inducing POKéMON.");
const u8 gMatchCallFlavorText_Kindler_Bernie_Intro1[] = _("When you light a campfire,");
const u8 gMatchCallFlavorText_Kindler_Bernie_Intro2[] = _("be sure there's some water.");
const u8 gMatchCallFlavorText_Camper_Ethan_Strategy[] = _("Hang in and be tenacious!");
const u8 gMatchCallFlavorText_Camper_Ethan_Pokemon[] = _("I'll raise any POKéMON.");
const u8 gMatchCallFlavorText_Camper_Ethan_Intro1[] = _("POKéMON raised in the wild");
const u8 gMatchCallFlavorText_Camper_Ethan_Intro2[] = _("grow strong!");
const u8 gMatchCallFlavorText_OldCouple_JohnAndJay_Strategy[] = _("Our love lets us prevail.");
const u8 gMatchCallFlavorText_OldCouple_JohnAndJay_Pokemon[] = _("We've had them for years.");
const u8 gMatchCallFlavorText_OldCouple_JohnAndJay_Intro1[] = _("Married 50 years, we've");
const u8 gMatchCallFlavorText_OldCouple_JohnAndJay_Intro2[] = _("devotedly raised POKéMON.");
const u8 gMatchCallFlavorText_BugManiac_Jeffrey_Strategy[] = _("Attack in waves!");
const u8 gMatchCallFlavorText_BugManiac_Jeffrey_Pokemon[] = _("BUG POKéMON are cool.");
const u8 gMatchCallFlavorText_BugManiac_Jeffrey_Intro1[] = _("I go into the forest every");
const u8 gMatchCallFlavorText_BugManiac_Jeffrey_Intro2[] = _("day to catch BUG POKéMON.");
const u8 gMatchCallFlavorText_Psychic_Cameron_Strategy[] = _("Daze and confuse!");
const u8 gMatchCallFlavorText_Psychic_Cameron_Pokemon[] = _("Ones with weird powers.");
const u8 gMatchCallFlavorText_Psychic_Cameron_Intro1[] = _("I can see through exactly");
const u8 gMatchCallFlavorText_Psychic_Cameron_Intro2[] = _("what you're thinking!");
const u8 gMatchCallFlavorText_Psychic_Jacki_Strategy[] = _("Battle at full power.");
const u8 gMatchCallFlavorText_Psychic_Jacki_Pokemon[] = _("POKéMON of many mysteries.");
const u8 gMatchCallFlavorText_Psychic_Jacki_Intro1[] = _("When we spoke, I was really");
const u8 gMatchCallFlavorText_Psychic_Jacki_Intro2[] = _("using telepathy.");
const u8 gMatchCallFlavorText_Gentleman_Walter_Strategy[] = _("Calm and collected.");
const u8 gMatchCallFlavorText_Gentleman_Walter_Pokemon[] = _("POKéMON of distinction.");
const u8 gMatchCallFlavorText_Gentleman_Walter_Intro1[] = _("We enjoy a spot of tea");
const u8 gMatchCallFlavorText_Gentleman_Walter_Intro2[] = _("every day. It's imported.");
const u8 gMatchCallFlavorText_SchoolKid_Karen_Strategy[] = _("I use my head to battle.");
const u8 gMatchCallFlavorText_SchoolKid_Karen_Pokemon[] = _("I love any kind of POKéMON!");
const u8 gMatchCallFlavorText_SchoolKid_Karen_Intro1[] = _("My daddy gives me spending");
const u8 gMatchCallFlavorText_SchoolKid_Karen_Intro2[] = _("money if I ace a test.");
const u8 gMatchCallFlavorText_SchoolKid_Jerry_Strategy[] = _("My knowledge rules!");
const u8 gMatchCallFlavorText_SchoolKid_Jerry_Pokemon[] = _("Any smart POKéMON!");
const u8 gMatchCallFlavorText_SchoolKid_Jerry_Intro1[] = _("I want to be a POKéMON");
const u8 gMatchCallFlavorText_SchoolKid_Jerry_Intro2[] = _("researcher in the future.");
const u8 gMatchCallFlavorText_SrAndJr_AnnaAndMeg_Strategy[] = _("We talk it over first.");
const u8 gMatchCallFlavorText_SrAndJr_AnnaAndMeg_Pokemon[] = _("POKéMON that we both like.");
const u8 gMatchCallFlavorText_SrAndJr_AnnaAndMeg_Intro1[] = _("We're senior and junior");
const u8 gMatchCallFlavorText_SrAndJr_AnnaAndMeg_Intro2[] = _("students into POKéMON!");
const u8 gMatchCallFlavorText_Pokefan_Isabel_Strategy[] = _("Go for it, my dears!");
const u8 gMatchCallFlavorText_Pokefan_Isabel_Pokemon[] = _("I have no likes or dislikes.");
const u8 gMatchCallFlavorText_Pokefan_Isabel_Intro1[] = _("While out shopping for");
const u8 gMatchCallFlavorText_Pokefan_Isabel_Intro2[] = _("supper, I battle too.");
const u8 gMatchCallFlavorText_Pokefan_Miguel_Strategy[] = _("I battle with love!");
const u8 gMatchCallFlavorText_Pokefan_Miguel_Pokemon[] = _("A POKéMON raised with love!");
const u8 gMatchCallFlavorText_Pokefan_Miguel_Intro1[] = _("It's important to build");
const u8 gMatchCallFlavorText_Pokefan_Miguel_Intro2[] = _("trust with your POKéMON.");
const u8 gMatchCallFlavorText_Expert_Timothy_Strategy[] = _("I see through your moves!");
const u8 gMatchCallFlavorText_Expert_Timothy_Pokemon[] = _("The essence of FIGHTING.");
const u8 gMatchCallFlavorText_Expert_Timothy_Intro1[] = _("I'm not ready to give way");
const u8 gMatchCallFlavorText_Expert_Timothy_Intro2[] = _("to the young yet!");
const u8 gMatchCallFlavorText_Expert_Shelby_Strategy[] = _("Attack while defending.");
const u8 gMatchCallFlavorText_Expert_Shelby_Pokemon[] = _("The FIGHTING type.");
const u8 gMatchCallFlavorText_Expert_Shelby_Intro1[] = _("Being old, I have my own");
const u8 gMatchCallFlavorText_Expert_Shelby_Intro2[] = _("style of battling.");
const u8 gMatchCallFlavorText_Youngster_Calvin_Strategy[] = _("I do what I can.");
const u8 gMatchCallFlavorText_Youngster_Calvin_Pokemon[] = _("I use different types.");
const u8 gMatchCallFlavorText_Youngster_Calvin_Intro1[] = _("I'm going to keep working");
const u8 gMatchCallFlavorText_Youngster_Calvin_Intro2[] = _("until I beat a GYM LEADER.");
const u8 gMatchCallFlavorText_Fisherman_Elliot_Strategy[] = _("I battle patiently.");
const u8 gMatchCallFlavorText_Fisherman_Elliot_Pokemon[] = _("WATER POKéMON to battle!");
const u8 gMatchCallFlavorText_Fisherman_Elliot_Intro1[] = _("I'm the world's only guy to");
const u8 gMatchCallFlavorText_Fisherman_Elliot_Intro2[] = _("catch a huge POKéMON!");
const u8 gMatchCallFlavorText_Triathlete_Isaiah_Strategy[] = _("Exploit the environment!");
const u8 gMatchCallFlavorText_Triathlete_Isaiah_Pokemon[] = _("All hail the WATER type!");
const u8 gMatchCallFlavorText_Triathlete_Isaiah_Intro1[] = _("I won't be beaten by some");
const u8 gMatchCallFlavorText_Triathlete_Isaiah_Intro2[] = _("beach bum SWIMMER!");
const u8 gMatchCallFlavorText_Triathlete_Maria_Strategy[] = _("Speed above all!");
const u8 gMatchCallFlavorText_Triathlete_Maria_Pokemon[] = _("I use a speedy POKéMON.");
const u8 gMatchCallFlavorText_Triathlete_Maria_Intro1[] = _("A marathon is a challenge");
const u8 gMatchCallFlavorText_Triathlete_Maria_Intro2[] = _("against your own self.");
const u8 gMatchCallFlavorText_Triathlete_Abigail_Strategy[] = _("Defense is crucial.");
const u8 gMatchCallFlavorText_Triathlete_Abigail_Pokemon[] = _("My POKéMON is solid.");
const u8 gMatchCallFlavorText_Triathlete_Abigail_Intro1[] = _("I started this for dieting,");
const u8 gMatchCallFlavorText_Triathlete_Abigail_Intro2[] = _("but I got right into it.");
const u8 gMatchCallFlavorText_Triathlete_Dylan_Strategy[] = _("Strike before stricken!");
const u8 gMatchCallFlavorText_Triathlete_Dylan_Pokemon[] = _("A fast-running POKéMON!");
const u8 gMatchCallFlavorText_Triathlete_Dylan_Intro1[] = _("If you ran and ran, you'd");
const u8 gMatchCallFlavorText_Triathlete_Dylan_Intro2[] = _("become one with the wind.");
const u8 gMatchCallFlavorText_Triathlete_Katelyn_Strategy[] = _("All-out offensive!");
const u8 gMatchCallFlavorText_Triathlete_Katelyn_Pokemon[] = _("WATER POKéMON rule!");
const u8 gMatchCallFlavorText_Triathlete_Katelyn_Intro1[] = _("I must swim over 6 miles");
const u8 gMatchCallFlavorText_Triathlete_Katelyn_Intro2[] = _("every day.");
const u8 gMatchCallFlavorText_Triathlete_Benjamin_Strategy[] = _("Push and push again!");
const u8 gMatchCallFlavorText_Triathlete_Benjamin_Pokemon[] = _("The strength of STEEL.");
const u8 gMatchCallFlavorText_Triathlete_Benjamin_Intro1[] = _("If you're sweating, get");
const u8 gMatchCallFlavorText_Triathlete_Benjamin_Intro2[] = _("fluids into you regularly.");
const u8 gMatchCallFlavorText_Triathlete_Pablo_Strategy[] = _("Draw the power of WATER.");
const u8 gMatchCallFlavorText_Triathlete_Pablo_Pokemon[] = _("Toughened WATER POKéMON.");
const u8 gMatchCallFlavorText_Triathlete_Pablo_Intro1[] = _("Training POKéMON is good,");
const u8 gMatchCallFlavorText_Triathlete_Pablo_Intro2[] = _("but don't neglect yourself.");
const u8 gMatchCallFlavorText_DragonTamer_Nicolas_Strategy[] = _("It's about POKéMON power!");
const u8 gMatchCallFlavorText_DragonTamer_Nicolas_Pokemon[] = _("See the power of DRAGONS!");
const u8 gMatchCallFlavorText_DragonTamer_Nicolas_Intro1[] = _("I'll become legendary as the");
const u8 gMatchCallFlavorText_DragonTamer_Nicolas_Intro2[] = _("strongest one day!");
const u8 gMatchCallFlavorText_BirdKeeper_Robert_Strategy[] = _("I'll show you my technique!");
const u8 gMatchCallFlavorText_BirdKeeper_Robert_Pokemon[] = _("Elegantly wheeling BIRDS.");
const u8 gMatchCallFlavorText_BirdKeeper_Robert_Intro1[] = _("My BIRD POKéMON, deliver my");
const u8 gMatchCallFlavorText_BirdKeeper_Robert_Intro2[] = _("love to that girl!");
const u8 gMatchCallFlavorText_NinjaBoy_Lao_Strategy[] = _("You'll suffer from poison!");
const u8 gMatchCallFlavorText_NinjaBoy_Lao_Pokemon[] = _("Poisonous POKéMON.");
const u8 gMatchCallFlavorText_NinjaBoy_Lao_Intro1[] = _("I undertake training so");
const u8 gMatchCallFlavorText_NinjaBoy_Lao_Intro2[] = _("that I may become a ninja.");
const u8 gMatchCallFlavorText_BattleGirl_Cyndy_Strategy[] = _("The first strike wins!");
const u8 gMatchCallFlavorText_BattleGirl_Cyndy_Pokemon[] = _("Speedy FIGHTING type.");
const u8 gMatchCallFlavorText_BattleGirl_Cyndy_Intro1[] = _("If my POKéMON lose,");
const u8 gMatchCallFlavorText_BattleGirl_Cyndy_Intro2[] = _("I'll carry on the fight!");
const u8 gMatchCallFlavorText_ParasolLady_Madeline_Strategy[] = _("Go, go, my POKéMON!");
const u8 gMatchCallFlavorText_ParasolLady_Madeline_Pokemon[] = _("I'll raise anything.");
const u8 gMatchCallFlavorText_ParasolLady_Madeline_Intro1[] = _("UV rays are your skin's");
const u8 gMatchCallFlavorText_ParasolLady_Madeline_Intro2[] = _("enemy. Get protected.");
const u8 gMatchCallFlavorText_Swimmer_Jenny_Strategy[] = _("No mercy!");
const u8 gMatchCallFlavorText_Swimmer_Jenny_Pokemon[] = _("Cute WATER POKéMON.");
const u8 gMatchCallFlavorText_Swimmer_Jenny_Intro1[] = _("I have too many fans.");
const u8 gMatchCallFlavorText_Swimmer_Jenny_Intro2[] = _("I was interviewed on TV.");
const u8 gMatchCallFlavorText_Picnicker_Diana_Strategy[] = _("I think about this & that.");
const u8 gMatchCallFlavorText_Picnicker_Diana_Pokemon[] = _("I like all POKéMON.");
const u8 gMatchCallFlavorText_Picnicker_Diana_Intro1[] = _("What lies beyond that");
const u8 gMatchCallFlavorText_Picnicker_Diana_Intro2[] = _("yonder hill?");
const u8 gMatchCallFlavorText_Twins_AmyAndLiv_Strategy[] = _("We battle together!");
const u8 gMatchCallFlavorText_Twins_AmyAndLiv_Pokemon[] = _("We train together!");
const u8 gMatchCallFlavorText_Twins_AmyAndLiv_Intro1[] = _("We like the same POKéMON,");
const u8 gMatchCallFlavorText_Twins_AmyAndLiv_Intro2[] = _("but different desserts.");
const u8 gMatchCallFlavorText_Sailor_Ernest_Strategy[] = _("I force things with power!");
const u8 gMatchCallFlavorText_Sailor_Ernest_Pokemon[] = _("WATER and FIGHTING types.");
const u8 gMatchCallFlavorText_Sailor_Ernest_Intro1[] = _("Seamen are rough spirits!");
const u8 gMatchCallFlavorText_Sailor_Ernest_Intro2[] = _("Any complaints?");
const u8 gMatchCallFlavorText_Sailor_Cory_Strategy[] = _("Up for a fight anytime!");
const u8 gMatchCallFlavorText_Sailor_Cory_Pokemon[] = _("WATER POKéMON are my faves!");
const u8 gMatchCallFlavorText_Sailor_Cory_Intro1[] = _("If you want to shout loud,");
const u8 gMatchCallFlavorText_Sailor_Cory_Intro2[] = _("suck in air with your belly!");
const u8 gMatchCallFlavorText_Collector_Edwin_Strategy[] = _("Protect POKéMON from harm.");
const u8 gMatchCallFlavorText_Collector_Edwin_Pokemon[] = _("I love rare POKéMON.");
const u8 gMatchCallFlavorText_Collector_Edwin_Intro1[] = _("I want to collect all the");
const u8 gMatchCallFlavorText_Collector_Edwin_Intro2[] = _("world's rare POKéMON.");
const u8 gMatchCallFlavorText_PkmnBreeder_Lydia_Strategy[] = _("I count on power.");
const u8 gMatchCallFlavorText_PkmnBreeder_Lydia_Pokemon[] = _("POKéMON are my children.");
const u8 gMatchCallFlavorText_PkmnBreeder_Lydia_Intro1[] = _("It takes knowledge and");
const u8 gMatchCallFlavorText_PkmnBreeder_Lydia_Intro2[] = _("love to raise POKéMON.");
const u8 gMatchCallFlavorText_PkmnBreeder_Isaac_Strategy[] = _("Full-on attack!");
const u8 gMatchCallFlavorText_PkmnBreeder_Isaac_Pokemon[] = _("Anything. I'll raise it.");
const u8 gMatchCallFlavorText_PkmnBreeder_Isaac_Intro1[] = _("I give them {POKEBLOCK}S for");
const u8 gMatchCallFlavorText_PkmnBreeder_Isaac_Intro2[] = _("going after CONTEST titles.");
const u8 gMatchCallFlavorText_PkmnBreeder_Gabrielle_Strategy[] = _("I raise POKéMON with care.");
const u8 gMatchCallFlavorText_PkmnBreeder_Gabrielle_Pokemon[] = _("Fun-to-raise POKéMON.");
const u8 gMatchCallFlavorText_PkmnBreeder_Gabrielle_Intro1[] = _("Treat every POKéMON you");
const u8 gMatchCallFlavorText_PkmnBreeder_Gabrielle_Intro2[] = _("meet with respect.");
const u8 gMatchCallFlavorText_PkmnRanger_Catherine_Strategy[] = _("I believe in my POKéMON.");
const u8 gMatchCallFlavorText_PkmnRanger_Catherine_Pokemon[] = _("I like strong POKéMON.");
const u8 gMatchCallFlavorText_PkmnRanger_Catherine_Intro1[] = _("I'm training for rescue");
const u8 gMatchCallFlavorText_PkmnRanger_Catherine_Intro2[] = _("work with my POKéMON.");
const u8 gMatchCallFlavorText_PkmnRanger_Jackson_Strategy[] = _("Attack in waves!");
const u8 gMatchCallFlavorText_PkmnRanger_Jackson_Pokemon[] = _("I use different types.");
const u8 gMatchCallFlavorText_PkmnRanger_Jackson_Intro1[] = _("Those who destroy nature");
const u8 gMatchCallFlavorText_PkmnRanger_Jackson_Intro2[] = _("must never be forgiven!");
const u8 gMatchCallFlavorText_Lass_Haley_Strategy[] = _("I'll show you some guts!");
const u8 gMatchCallFlavorText_Lass_Haley_Pokemon[] = _("Cute POKéMON are my faves!");
const u8 gMatchCallFlavorText_Lass_Haley_Intro1[] = _("After a battle, I always");
const u8 gMatchCallFlavorText_Lass_Haley_Intro2[] = _("bathe with my POKéMON.");
const u8 gMatchCallFlavorText_BugCatcher_James_Strategy[] = _("Lightning-fast attack!");
const u8 gMatchCallFlavorText_BugCatcher_James_Pokemon[] = _("BUG POKéMON are number 1!");
const u8 gMatchCallFlavorText_BugCatcher_James_Intro1[] = _("If you want to catch BUG");
const u8 gMatchCallFlavorText_BugCatcher_James_Intro2[] = _("POKéMON, wake up early.");
const u8 gMatchCallFlavorText_Hiker_Trent_Strategy[] = _("I battle with power.");
const u8 gMatchCallFlavorText_Hiker_Trent_Pokemon[] = _("Hard-bodied POKéMON.");
const u8 gMatchCallFlavorText_Hiker_Trent_Intro1[] = _("I've been planning a month");
const u8 gMatchCallFlavorText_Hiker_Trent_Intro2[] = _("for today's hike.");
const u8 gMatchCallFlavorText_Hiker_Sawyer_Strategy[] = _("I like it hot!");
const u8 gMatchCallFlavorText_Hiker_Sawyer_Pokemon[] = _("Hot POKéMON!");
const u8 gMatchCallFlavorText_Hiker_Sawyer_Intro1[] = _("As much as I love POKéMON,");
const u8 gMatchCallFlavorText_Hiker_Sawyer_Intro2[] = _("I surely like hiking!");
const u8 gMatchCallFlavorText_YoungCouple_LoisAndHal_Strategy[] = _("Lovey-dovey strategy!");
const u8 gMatchCallFlavorText_YoungCouple_LoisAndHal_Pokemon[] = _("Lovey-dovey POKéMON!");
const u8 gMatchCallFlavorText_YoungCouple_LoisAndHal_Intro1[] = _("We're lovey-dovey!");
const u8 gMatchCallFlavorText_YoungCouple_LoisAndHal_Intro2[] = _("Forever lovey-dovey!");
const u8 gMatchCallFlavorText_PkmnTrainer_Wally_Strategy[] = _("We let it all hang out.");
const u8 gMatchCallFlavorText_PkmnTrainer_Wally_Pokemon[] = _("The 1st POKéMON I caught.");
const u8 gMatchCallFlavorText_PkmnTrainer_Wally_Intro1[] = _("POKéMON and I have grown");
const u8 gMatchCallFlavorText_PkmnTrainer_Wally_Intro2[] = _("stronger together.");
const u8 gMatchCallFlavorText_RockinWhiz_Roxanne_Strategy[] = _("ROCK-type power attack.");
const u8 gMatchCallFlavorText_RockinWhiz_Roxanne_Pokemon[] = _("I prefer rock-hard POKéMON.");
const u8 gMatchCallFlavorText_RockinWhiz_Roxanne_Intro1[] = _("A LEADER of a big GYM bears");
const u8 gMatchCallFlavorText_RockinWhiz_Roxanne_Intro2[] = _("a lot of responsibility.");
const u8 gMatchCallFlavorText_TheBigHit_Brawly_Strategy[] = _("Direct physical action!");
const u8 gMatchCallFlavorText_TheBigHit_Brawly_Pokemon[] = _("FIGHTING POKéMON rule!");
const u8 gMatchCallFlavorText_TheBigHit_Brawly_Intro1[] = _("The world awaits me as the");
const u8 gMatchCallFlavorText_TheBigHit_Brawly_Intro2[] = _("next big wave!");
const u8 gMatchCallFlavorText_SwellShock_Wattson_Strategy[] = _("I choose to electrify.");
const u8 gMatchCallFlavorText_SwellShock_Wattson_Pokemon[] = _("Get shocked by electricity!");
const u8 gMatchCallFlavorText_SwellShock_Wattson_Intro1[] = _("One must never throw a");
const u8 gMatchCallFlavorText_SwellShock_Wattson_Intro2[] = _("match. Even I must not.");
const u8 gMatchCallFlavorText_PassionBurn_Flannery_Strategy[] = _("Battle aggressively.");
const u8 gMatchCallFlavorText_PassionBurn_Flannery_Pokemon[] = _("Burn with passion!");
const u8 gMatchCallFlavorText_PassionBurn_Flannery_Intro1[] = _("Completely wash away daily");
const u8 gMatchCallFlavorText_PassionBurn_Flannery_Intro2[] = _("fatigue in hot springs!");
const u8 gMatchCallFlavorText_ReliableOne_Dad_Strategy[] = _("I flexibly adapt my style.");
const u8 gMatchCallFlavorText_ReliableOne_Dad_Pokemon[] = _("Grown in a balanced manner.");
const u8 gMatchCallFlavorText_ReliableOne_Dad_Intro1[] = _("I walk the 30 minutes from");
const u8 gMatchCallFlavorText_ReliableOne_Dad_Intro2[] = _("home to here every day.");
const u8 gMatchCallFlavorText_SkyTamer_Winona_Strategy[] = _("I take advantage of speed.");
const u8 gMatchCallFlavorText_SkyTamer_Winona_Pokemon[] = _("Graceful sky dancers.");
const u8 gMatchCallFlavorText_SkyTamer_Winona_Intro1[] = _("The ultimate would be to");
const u8 gMatchCallFlavorText_SkyTamer_Winona_Intro2[] = _("live as one with nature.");
const u8 gMatchCallFlavorText_MysticDuo_TateAndLiza_Strategy[] = _("We battle in cooperation.");
const u8 gMatchCallFlavorText_MysticDuo_TateAndLiza_Pokemon[] = _("Always friendly POKéMON.");
const u8 gMatchCallFlavorText_MysticDuo_TateAndLiza_Intro1[] = _("Papa has trouble telling");
const u8 gMatchCallFlavorText_MysticDuo_TateAndLiza_Intro2[] = _("the two of us apart!");
const u8 gMatchCallFlavorText_DandyCharm_Juan_Strategy[] = _("I use splendid waterpower.");
const u8 gMatchCallFlavorText_DandyCharm_Juan_Pokemon[] = _("POKéMON of elegance!");
const u8 gMatchCallFlavorText_DandyCharm_Juan_Intro1[] = _("The adulation of beautiful");
const u8 gMatchCallFlavorText_DandyCharm_Juan_Intro2[] = _("ladies fills me with energy!");
const u8 gMatchCallFlavorText_EliteFour_Sidney_Strategy[] = _("Offense over defense!");
const u8 gMatchCallFlavorText_EliteFour_Sidney_Pokemon[] = _("The DARK side's beauties.");
const u8 gMatchCallFlavorText_EliteFour_Sidney_Intro1[] = _("They said I was a punk, but");
const u8 gMatchCallFlavorText_EliteFour_Sidney_Intro2[] = _("I'm one of the ELITE FOUR!");
const u8 gMatchCallFlavorText_EliteFour_Phoebe_Strategy[] = _("Confuse and confound.");
const u8 gMatchCallFlavorText_EliteFour_Phoebe_Pokemon[] = _("There's nothing definite.");
const u8 gMatchCallFlavorText_EliteFour_Phoebe_Intro1[] = _("I wonder how my grandma at");
const u8 gMatchCallFlavorText_EliteFour_Phoebe_Intro2[] = _("MT. PYRE is doing?");
const u8 gMatchCallFlavorText_EliteFour_Glacia_Strategy[] = _("I use items for help.");
const u8 gMatchCallFlavorText_EliteFour_Glacia_Pokemon[] = _("Flaming passion in icy cold!");
const u8 gMatchCallFlavorText_EliteFour_Glacia_Intro1[] = _("The ICE type can be better");
const u8 gMatchCallFlavorText_EliteFour_Glacia_Intro2[] = _("trained in this hot land.");
const u8 gMatchCallFlavorText_EliteFour_Drake_Strategy[] = _("Harness strong abilities.");
const u8 gMatchCallFlavorText_EliteFour_Drake_Pokemon[] = _("The raw power of DRAGONS!");
const u8 gMatchCallFlavorText_EliteFour_Drake_Intro1[] = _("I dedicate myself to the");
const u8 gMatchCallFlavorText_EliteFour_Drake_Intro2[] = _("POKéMON that saved me.");
const u8 gMatchCallFlavorText_Champion_Wallace_Strategy[] = _("Dignity and respect.");
const u8 gMatchCallFlavorText_Champion_Wallace_Pokemon[] = _("I prefer POKéMON of grace.");
const u8 gMatchCallFlavorText_Champion_Wallace_Intro1[] = _("I represent beauty as");
const u8 gMatchCallFlavorText_Champion_Wallace_Intro2[] = _("well as intelligence.");
const u8 *const gMatchCallMessages[][4] =
{
[REMATCH_ROSE] = MCFLAVOR(AromaLady_Rose),
[REMATCH_ANDRES] = MCFLAVOR(RuinManiac_Andres),
[REMATCH_DUSTY] = MCFLAVOR(RuinManiac_Dusty),
[REMATCH_LOLA] = MCFLAVOR(Tuber_Lola),
[REMATCH_RICKY] = MCFLAVOR(Tuber_Ricky),
[REMATCH_LILA_AND_ROY] = MCFLAVOR(SisAndBro_LilaAndRoy),
[REMATCH_CRISTIN] = MCFLAVOR(Cooltrainer_Cristin),
[REMATCH_BROOKE] = MCFLAVOR(Cooltrainer_Brooke),
[REMATCH_WILTON] = MCFLAVOR(Cooltrainer_Wilton),
[REMATCH_VALERIE] = MCFLAVOR(HexManiac_Valerie),
[REMATCH_CINDY] = MCFLAVOR(Lady_Cindy),
[REMATCH_THALIA] = MCFLAVOR(Beauty_Thalia),
[REMATCH_JESSICA] = MCFLAVOR(Beauty_Jessica),
[REMATCH_WINSTON] = MCFLAVOR(RichBoy_Winston),
[REMATCH_STEVE] = MCFLAVOR(PokeManiac_Steve),
[REMATCH_TONY] = MCFLAVOR(Swimmer_Tony),
[REMATCH_NOB] = MCFLAVOR(BlackBelt_Nob),
[REMATCH_KOJI] = MCFLAVOR(BlackBelt_Koji),
[REMATCH_FERNANDO] = MCFLAVOR(Guitarist_Fernando),
[REMATCH_DALTON] = MCFLAVOR(Guitarist_Dalton),
[REMATCH_BERNIE] = MCFLAVOR(Kindler_Bernie),
[REMATCH_ETHAN] = MCFLAVOR(Camper_Ethan),
[REMATCH_JOHN_AND_JAY] = MCFLAVOR(OldCouple_JohnAndJay),
[REMATCH_JEFFREY] = MCFLAVOR(BugManiac_Jeffrey),
[REMATCH_CAMERON] = MCFLAVOR(Psychic_Cameron),
[REMATCH_JACKI] = MCFLAVOR(Psychic_Jacki),
[REMATCH_WALTER] = MCFLAVOR(Gentleman_Walter),
[REMATCH_KAREN] = MCFLAVOR(SchoolKid_Karen),
[REMATCH_JERRY] = MCFLAVOR(SchoolKid_Jerry),
[REMATCH_ANNA_AND_MEG] = MCFLAVOR(SrAndJr_AnnaAndMeg),
[REMATCH_ISABEL] = MCFLAVOR(Pokefan_Isabel),
[REMATCH_MIGUEL] = MCFLAVOR(Pokefan_Miguel),
[REMATCH_TIMOTHY] = MCFLAVOR(Expert_Timothy),
[REMATCH_SHELBY] = MCFLAVOR(Expert_Shelby),
[REMATCH_CALVIN] = MCFLAVOR(Youngster_Calvin),
[REMATCH_ELLIOT] = MCFLAVOR(Fisherman_Elliot),
[REMATCH_ISAIAH] = MCFLAVOR(Triathlete_Isaiah),
[REMATCH_MARIA] = MCFLAVOR(Triathlete_Maria),
[REMATCH_ABIGAIL] = MCFLAVOR(Triathlete_Abigail),
[REMATCH_DYLAN] = MCFLAVOR(Triathlete_Dylan),
[REMATCH_KATELYN] = MCFLAVOR(Triathlete_Katelyn),
[REMATCH_BENJAMIN] = MCFLAVOR(Triathlete_Benjamin),
[REMATCH_PABLO] = MCFLAVOR(Triathlete_Pablo),
[REMATCH_NICOLAS] = MCFLAVOR(DragonTamer_Nicolas),
[REMATCH_ROBERT] = MCFLAVOR(BirdKeeper_Robert),
[REMATCH_LAO] = MCFLAVOR(NinjaBoy_Lao),
[REMATCH_CYNDY] = MCFLAVOR(BattleGirl_Cyndy),
[REMATCH_MADELINE] = MCFLAVOR(ParasolLady_Madeline),
[REMATCH_JENNY] = MCFLAVOR(Swimmer_Jenny),
[REMATCH_DIANA] = MCFLAVOR(Picnicker_Diana),
[REMATCH_AMY_AND_LIV] = MCFLAVOR(Twins_AmyAndLiv),
[REMATCH_ERNEST] = MCFLAVOR(Sailor_Ernest),
[REMATCH_CORY] = MCFLAVOR(Sailor_Cory),
[REMATCH_EDWIN] = MCFLAVOR(Collector_Edwin),
[REMATCH_LYDIA] = MCFLAVOR(PkmnBreeder_Lydia),
[REMATCH_ISAAC] = MCFLAVOR(PkmnBreeder_Isaac),
[REMATCH_GABRIELLE] = MCFLAVOR(PkmnBreeder_Gabrielle),
[REMATCH_CATHERINE] = MCFLAVOR(PkmnRanger_Catherine),
[REMATCH_JACKSON] = MCFLAVOR(PkmnRanger_Jackson),
[REMATCH_HALEY] = MCFLAVOR(Lass_Haley),
[REMATCH_JAMES] = MCFLAVOR(BugCatcher_James),
[REMATCH_TRENT] = MCFLAVOR(Hiker_Trent),
[REMATCH_SAWYER] = MCFLAVOR(Hiker_Sawyer),
[REMATCH_KIRA_AND_DAN] = MCFLAVOR(YoungCouple_LoisAndHal),
[REMATCH_WALLY_3] = MCFLAVOR(PkmnTrainer_Wally),
[REMATCH_ROXANNE] = MCFLAVOR(RockinWhiz_Roxanne),
[REMATCH_BRAWLY] = MCFLAVOR(TheBigHit_Brawly),
[REMATCH_WATTSON] = MCFLAVOR(SwellShock_Wattson),
[REMATCH_FLANNERY] = MCFLAVOR(PassionBurn_Flannery),
[REMATCH_NORMAN] = MCFLAVOR(ReliableOne_Dad),
[REMATCH_WINONA] = MCFLAVOR(SkyTamer_Winona),
[REMATCH_TATE_AND_LIZA] = MCFLAVOR(MysticDuo_TateAndLiza),
[REMATCH_JUAN] = MCFLAVOR(DandyCharm_Juan),
[REMATCH_SIDNEY] = MCFLAVOR(EliteFour_Sidney),
[REMATCH_PHOEBE] = MCFLAVOR(EliteFour_Phoebe),
[REMATCH_GLACIA] = MCFLAVOR(EliteFour_Glacia),
[REMATCH_DRAKE] = MCFLAVOR(EliteFour_Drake),
[REMATCH_WALLACE] = MCFLAVOR(Champion_Wallace),
};

View File

@ -0,0 +1,48 @@
const u8 gRibbonDescriptionPart1_Champion[] = _("CHAMPION-beating, HALL");
const u8 gRibbonDescriptionPart2_Champion[] = _("OF FAME Member RIBBON");
const u8 gRibbonDescriptionPart1_CoolContest[] = _("COOL CONTEST");
const u8 gRibbonDescriptionPart1_BeautyContest[] = _("BEAUTY CONTEST");
const u8 gRibbonDescriptionPart1_CuteContest[] = _("CUTE CONTEST");
const u8 gRibbonDescriptionPart1_SmartContest[] = _("SMART CONTEST");
const u8 gRibbonDescriptionPart1_ToughContest[] = _("TOUGH CONTEST");
const u8 gRibbonDescriptionPart2_NormalRank[] = _("Normal Rank winner!");
const u8 gRibbonDescriptionPart2_SuperRank[] = _("Super Rank winner!");
const u8 gRibbonDescriptionPart2_HyperRank[] = _("Hyper Rank winner!");
const u8 gRibbonDescriptionPart2_MasterRank[] = _("Master Rank winner!");
const u8 gRibbonDescriptionPart1_Winning[] = _("For clearing LV50");
const u8 gRibbonDescriptionPart2_Winning[] = _("at the BATTLE TOWER.");
const u8 gRibbonDescriptionPart1_Victory[] = _("For clearing Open Level");
const u8 gRibbonDescriptionPart2_Victory[] = _("at the BATTLE TOWER.");
const u8 gRibbonDescriptionPart1_Artist[] = _("RIBBON for being chosen");
const u8 gRibbonDescriptionPart2_Artist[] = _("as a super sketch model.");
const u8 gRibbonDescriptionPart1_Effort[] = _("RIBBON awarded for");
const u8 gRibbonDescriptionPart2_Effort[] = _("being a hard worker.");
const u8 *const gRibbonDescriptionPointers[][2] =
{
{gRibbonDescriptionPart1_Champion, gRibbonDescriptionPart2_Champion},
{gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_NormalRank},
{gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_SuperRank},
{gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_HyperRank},
{gRibbonDescriptionPart1_CoolContest, gRibbonDescriptionPart2_MasterRank},
{gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_NormalRank},
{gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_SuperRank},
{gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_HyperRank},
{gRibbonDescriptionPart1_BeautyContest, gRibbonDescriptionPart2_MasterRank},
{gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_NormalRank},
{gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_SuperRank},
{gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_HyperRank},
{gRibbonDescriptionPart1_CuteContest, gRibbonDescriptionPart2_MasterRank},
{gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_NormalRank},
{gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_SuperRank},
{gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_HyperRank},
{gRibbonDescriptionPart1_SmartContest, gRibbonDescriptionPart2_MasterRank},
{gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_NormalRank},
{gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_SuperRank},
{gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_HyperRank},
{gRibbonDescriptionPart1_ToughContest, gRibbonDescriptionPart2_MasterRank},
{gRibbonDescriptionPart1_Winning, gRibbonDescriptionPart2_Winning},
{gRibbonDescriptionPart1_Victory, gRibbonDescriptionPart2_Victory},
{gRibbonDescriptionPart1_Artist, gRibbonDescriptionPart2_Artist},
{gRibbonDescriptionPart1_Effort, gRibbonDescriptionPart2_Effort},
};

View File

@ -8,7 +8,7 @@
#define DMA_REQUEST_COPY16 3
#define DMA_REQUEST_FILL16 4
IWRAM_DATA struct
BSS_DATA struct
{
const u8 *src;
u8 *dest;
@ -17,7 +17,7 @@ IWRAM_DATA struct
u32 value;
} gDma3Requests[MAX_DMA_REQUESTS];
static bool8 gDma3ManagerLocked;
static volatile bool8 gDma3ManagerLocked;
static u8 gDma3RequestCursor;
void ClearDma3Requests(void)

File diff suppressed because it is too large Load Diff

View File

@ -73,7 +73,7 @@ static void CreateRandomEggShardSprite(void);
static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex);
// IWRAM bss
static IWRAM_DATA struct EggHatchData *sEggHatchData;
static struct EggHatchData *sEggHatchData;
// rom data
static const u16 sEggPalette[] = INCBIN_U16("graphics/pokemon/egg/normal.gbapal");

View File

@ -26,17 +26,17 @@ static void sub_81D414C(void);
static void sub_81D3F1C(u32, u32*, u32*);
static void sub_81D3F68(void);
IWRAM_DATA struct Unknown030012C8 gUnknown_030012C8;
IWRAM_DATA u16 gUnknown_030012E0;
IWRAM_DATA u16 gUnknown_030012E2;
IWRAM_DATA u16 gUnknown_030012E4;
IWRAM_DATA u16 gUnknown_030012E6;
IWRAM_DATA u32 gUnknown_030012E8;
IWRAM_DATA u16 gUnknown_030012EC;
IWRAM_DATA u16 gUnknown_030012EE;
IWRAM_DATA u16 gUnknown_030012F0;
IWRAM_DATA u16 gUnknown_030012F2;
IWRAM_DATA u16 gUnknown_030012F4;
static struct Unknown030012C8 gUnknown_030012C8;
static u16 gUnknown_030012E0;
static u16 gUnknown_030012E2;
static u16 gUnknown_030012E4;
static u16 gUnknown_030012E6;
static u32 gUnknown_030012E8;
static u16 gUnknown_030012EC;
static u16 gUnknown_030012EE;
static u16 gUnknown_030012F0;
static u16 gUnknown_030012F2;
static u16 gUnknown_030012F4;
extern const u8 gUnknown_08625B6C[][0x148];

View File

@ -38,7 +38,7 @@ struct Unk03006370
static void sub_81D5084(u8);
extern struct Unk03006370 gUnknown_03006370;
struct Unk03006370 gUnknown_03006370;
extern const u8 gUnknown_089A3470[];
extern const u8 gMultiBootProgram_BerryGlitchFix_Start[];

View File

@ -36,11 +36,11 @@ static void DrawMetatile(s32 a, u16 *b, u16 c);
static void CameraPanningCB_PanAhead(void);
// IWRAM bss vars
static IWRAM_DATA struct FieldCameraOffset sFieldCameraOffset;
static IWRAM_DATA s16 sHorizontalCameraPan;
static IWRAM_DATA s16 sVerticalCameraPan;
static IWRAM_DATA u8 gUnknown_03000E2C;
static IWRAM_DATA void (*sFieldCameraPanningCallback)(void);
static struct FieldCameraOffset sFieldCameraOffset;
static s16 sHorizontalCameraPan;
static s16 sVerticalCameraPan;
static u8 gUnknown_03000E2C;
static void (*sFieldCameraPanningCallback)(void);
struct CameraObject gFieldCamera;
u16 gTotalCameraPixelOffsetY;

View File

@ -232,7 +232,7 @@ static void Fldeff_MoveDeoxysRock_Step(u8 taskId);
// Static RAM declarations
static IWRAM_DATA u8 sActiveList[32];
static u8 sActiveList[32];
// External declarations
extern struct CompressedSpritePalette gMonPaletteTable[]; // GF made a mistake and did not extern it as const.

View File

@ -336,14 +336,9 @@ void player_step(u8 direction, u16 newKeys, u16 heldKeys)
static bool8 TryInterruptEventObjectSpecialAnim(struct EventObject *playerEventObj, u8 direction)
{
#ifdef NONMATCHING
u8 r5 = direction;
u8 r6 = direction;
#else
u8 r5 = direction;
register u8 r6 asm("r6") = direction;
#endif
//a very bad HACK
u8 r5 = direction;
u8 r6 = direction;
r6++; r6--;
if (EventObjectIsMovementOverridden(playerEventObj)
&& !EventObjectClearHeldMovementIfFinished(playerEventObj))

View File

@ -68,7 +68,7 @@ static u8 None_Finish(void);
EWRAM_DATA struct Weather gWeather = {0};
EWRAM_DATA static u8 sFieldEffectPaletteGammaTypes[32] = {0};
IWRAM_DATA static const u8 *sPaletteGammaTypes;
static const u8 *sPaletteGammaTypes;
// The drought weather effect uses a precalculated color lookup table. Presumably this
// is because the underlying color shift calculation is slow.

View File

@ -957,6 +957,7 @@ static void sub_81094D0(u8 taskId) // animate Move_ERUPTION?
break;
default:
break;
}
}

View File

@ -59,11 +59,11 @@ static void CutGrassSpriteCallbackEnd(struct Sprite *);
static void HandleLongGrassOnHyper(u8, s16, s16);
// IWRAM variables
static IWRAM_DATA u8 sCutSquareSide;
static IWRAM_DATA u8 sTileCountFromPlayer_X;
static IWRAM_DATA u8 sTileCountFromPlayer_Y;
static IWRAM_DATA u32 sUnused;
static IWRAM_DATA bool8 sHyperCutTiles[CUT_HYPER_AREA];
static u8 sCutSquareSide;
static u8 sTileCountFromPlayer_X;
static u8 sTileCountFromPlayer_Y;
static u32 sUnused;
static bool8 sHyperCutTiles[CUT_HYPER_AREA];
// EWRAM variables
static EWRAM_DATA u8 *sCutGrassSpriteArrayPtr = NULL;

View File

@ -219,8 +219,8 @@ static void sub_8137404(u8 taskId)
static void sub_8137420(u8 taskId)
{
SetGpuReg(REG_OFFSET_DISPCNT, 0);
LZ77UnCompVram(gCaveTransitionTiles, (void *)0x600C000);
LZ77UnCompVram(gCaveTransitionTilemap, (void *)0x600F800);
LZ77UnCompVram(gCaveTransitionTiles, (void *)(VRAM + 0xC000));
LZ77UnCompVram(gCaveTransitionTilemap, (void *)(VRAM + 0xF800));
LoadPalette(gCaveTransitionPalette_White, 0xE0, 0x20);
LoadPalette(gUnknown_085B28A0, 0xE0, 0x10);
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0
@ -304,8 +304,8 @@ static void sub_81375BC(u8 taskId)
static void sub_81375D8(u8 taskId)
{
SetGpuReg(REG_OFFSET_DISPCNT, 0);
LZ77UnCompVram(gCaveTransitionTiles, (void *)0x600C000);
LZ77UnCompVram(gCaveTransitionTilemap, (void *)0x600F800);
LZ77UnCompVram(gCaveTransitionTiles, (void *)(VRAM + 0xC000));
LZ77UnCompVram(gCaveTransitionTilemap, (void *)(VRAM + 0xF800));
SetGpuReg(REG_OFFSET_BLDCNT, 0);
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
SetGpuReg(REG_OFFSET_BLDY, 0);

View File

@ -1180,7 +1180,8 @@ void sub_8112B78(struct Sprite *sprite)
if (++coeffB > 16)
coeffB = 16;
if (--(s16)coeffA < 0)
--coeffA;
if ((s16)coeffA < 0)
coeffA = 0;
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(coeffA, coeffB));

View File

@ -10,9 +10,9 @@
static u8 sGpuRegBuffer[GPU_REG_BUF_SIZE];
static u8 sGpuRegWaitingList[GPU_REG_BUF_SIZE];
static bool8 sGpuRegBufferLocked;
static bool8 sShouldSyncRegIE;
static u16 sRegIE;
static volatile bool8 sGpuRegBufferLocked;
static volatile bool8 sShouldSyncRegIE;
static vu16 sRegIE;
static void CopyBufferedValueToGpuReg(u8 regOffset);
static void SyncRegIE(void);

View File

@ -18,6 +18,9 @@
extern u16 gUnknown_0203CF30[];
// this file's functions
#if !defined(NONMATCHING) && MODERN
#define static
#endif
static bool8 CheckPyramidBagHasItem(u16 itemId, u16 count);
static bool8 CheckPyramidBagHasSpace(u16 itemId, u16 count);

View File

@ -127,7 +127,7 @@ void sub_81ABAE0(void);
u8 sub_81AB1F0(u8);
void sub_81AC23C(u8);
void BagMenu_MoveCursorCallback(s32 a, bool8 b, struct ListMenu*);
void PrintItemQuantityPlusGFX(u8 rboxId, int item_index_in_pocket, u8 a);
void PrintItemQuantityPlusGFX(u8 rboxId, s32 item_index_in_pocket, u8 a);
void ItemMenu_UseOutOfBattle(u8 taskId);
void ItemMenu_Toss(u8 taskId);
void ItemMenu_Register(u8 taskId);
@ -830,7 +830,7 @@ void BagMenu_MoveCursorCallback(s32 a, bool8 b, struct ListMenu *unused)
}
}
void PrintItemQuantityPlusGFX(u8 rboxId, int item_index_in_pocket, u8 a)
void PrintItemQuantityPlusGFX(u8 rboxId, s32 item_index_in_pocket, u8 a)
{
u16 itemId;
u16 itemQuantity;

9
src/librfu.c Normal file
View File

@ -0,0 +1,9 @@
#include "global.h"
#include "librfu.h"
struct RfuUnk1* gUnknown_03007870[4];
struct RfuUnk2* gUnknown_03007880[4];
struct RfuUnk5 *gUnknown_03007890;
u32 *gUnknown_03007894;
struct RfuUnk3* gUnknown_03007898;
u8 gUnknown_030078A0[12];

View File

@ -1,4 +1,5 @@
#include "global.h"
#include "main.h"
#include "librfu.h"
//TODO: decompile asm/librfu_intr.s to here

View File

@ -1,6 +1,8 @@
#include "global.h"
#include "librfu.h"
struct RfuStruct *gRfuState;
extern IntrFunc IntrSIO32(void);
extern void STWI_stop_timer(void);

View File

@ -52,22 +52,21 @@ struct LinkTestBGInfo
// Static RAM declarations
IWRAM_DATA struct BlockTransfer sBlockSend;
IWRAM_DATA u32 link_c_unused_03000d1c;
IWRAM_DATA struct BlockTransfer sBlockRecv[MAX_LINK_PLAYERS];
IWRAM_DATA u32 sBlockSendDelayCounter;
IWRAM_DATA u32 gUnknown_03000D54;
IWRAM_DATA u8 gUnknown_03000D58;
IWRAM_DATA u32 sPlayerDataExchangeStatus;
IWRAM_DATA u32 gUnknown_03000D60;
IWRAM_DATA u8 sLinkTestLastBlockSendPos;
ALIGNED() IWRAM_DATA u8 sLinkTestLastBlockRecvPos[MAX_LINK_PLAYERS];
IWRAM_DATA u8 sNumVBlanksWithoutSerialIntr;
IWRAM_DATA bool8 sSendBufferEmpty;
IWRAM_DATA u16 sSendNonzeroCheck;
IWRAM_DATA u16 sRecvNonzeroCheck;
IWRAM_DATA u8 sChecksumAvailable;
IWRAM_DATA u8 sHandshakePlayerCount;
static struct BlockTransfer sBlockSend;
static struct BlockTransfer sBlockRecv[MAX_LINK_PLAYERS];
static u32 sBlockSendDelayCounter;
static u32 gUnknown_03000D54;
static u8 gUnknown_03000D58;
static u32 sPlayerDataExchangeStatus;
static u32 gUnknown_03000D60;
static u8 sLinkTestLastBlockSendPos;
static u8 sLinkTestLastBlockRecvPos[MAX_LINK_PLAYERS];
static u8 sNumVBlanksWithoutSerialIntr;
static bool8 sSendBufferEmpty;
static u16 sSendNonzeroCheck;
static u16 sRecvNonzeroCheck;
static u8 sChecksumAvailable;
static u8 sHandshakePlayerCount;
u16 gLinkPartnersHeldKeys[6];
u32 gLinkDebugSeed;

View File

@ -24,10 +24,10 @@ extern u16 gHeldKeyCodeToSend;
struct UnkRfuStruct_1 gUnknown_03004140;
struct UnkRfuStruct_2 gUnknown_03005000;
IWRAM_DATA u8 gUnknown_03000D74;
ALIGNED(4) IWRAM_DATA u8 gUnknown_03000D78[8];
IWRAM_DATA u8 gUnknown_03000D80[16];
IWRAM_DATA u16 gUnknown_03000D90[8];
BSS_DATA u8 gUnknown_03000D74;
ALIGNED(4) BSS_DATA u8 gUnknown_03000D78[8];
BSS_DATA u8 gUnknown_03000D80[16];
BSS_DATA u16 gUnknown_03000D90[8];
EWRAM_DATA u8 gWirelessStatusIndicatorSpriteId = 0;
EWRAM_DATA ALIGNED(4) struct UnkLinkRfuStruct_02022B14 gUnknown_02022B14 = {};
@ -2021,6 +2021,8 @@ void sub_800DBF8(u8 *q1, u8 mode)
}
}
// File boundary here maybe?
void PkmnStrToASCII(u8 *q1, const u8 *q2)
{
s32 i;
@ -2413,7 +2415,7 @@ void RecordMixTrainerNames(void)
}
}
}
// Save the connected trainers first, at the top of the list.
nextSpace = 0;
for (i = 0; i < GetLinkPlayerCount(); i++)
@ -2444,7 +2446,7 @@ void RecordMixTrainerNames(void)
}
}
}
// Finalize the new list, and clean up.
memcpy(gSaveBlock1Ptr->trainerNameRecords, newRecords, 20 * sizeof(struct TrainerNameRecord));
free(newRecords);
@ -3493,7 +3495,7 @@ void sub_800FD14(u16 command)
}
}
void sub_800FE50(u16 *a0)
void sub_800FE50(void *a0)
{
if (gSendCmd[0] == 0 && !sub_8011A80())
{
@ -5142,4 +5144,3 @@ u32 GetRfuRecvQueueLength(void)
{
return gUnknown_03005000.unk_124.unk_8c2;
}

View File

@ -42,10 +42,10 @@ EWRAM_DATA struct LoadedSaveData gLoadedSaveData = {0};
EWRAM_DATA u32 gLastEncryptionKey = 0;
// IWRAM common
IWRAM_DATA bool32 gFlashMemoryPresent;
IWRAM_DATA struct SaveBlock1 *gSaveBlock1Ptr;
IWRAM_DATA struct SaveBlock2 *gSaveBlock2Ptr;
IWRAM_DATA struct PokemonStorage *gPokemonStoragePtr;
bool32 gFlashMemoryPresent;
struct SaveBlock1 *gSaveBlock1Ptr;
struct SaveBlock2 *gSaveBlock2Ptr;
struct PokemonStorage *gPokemonStoragePtr;
// code
void CheckForFlashMemory(void)

View File

@ -1,3 +1,4 @@
#include <string.h>
#include "gba/m4a_internal.h"
extern const u8 gCgb3Vol[];

View File

@ -85,7 +85,27 @@ void EnableVCountIntrAtLine150(void);
void AgbMain()
{
#if MODERN
// Modern compilers are liberal with the stack on entry to this function,
// so RegisterRamReset may crash if it resets IWRAM.
RegisterRamReset(RESET_ALL & ~RESET_IWRAM);
asm("mov\tr1, #0xC0\n"
"\tlsl\tr1, r1, #0x12\n"
"\tmov r2, #0xFC\n"
"\tlsl r2, r2, #0x7\n"
"\tadd\tr2, r1, r2\n"
"\tmov\tr0, #0\n"
"\tmov\tr3, r0\n"
"\tmov\tr4, r0\n"
"\tmov\tr5, r0\n"
".LCU0:\n"
"\tstmia r1!, {r0, r3, r4, r5}\n"
"\tcmp\tr1, r2\n"
"\tbcc\t.LCU0\n"
);
#else
RegisterRamReset(RESET_ALL);
#endif //MODERN
*(vu16 *)BG_PLTT = 0x7FFF;
InitGpuRegManager();
REG_WAITCNT = WAITCNT_PREFETCH_ENABLE | WAITCNT_WS0_S_1 | WAITCNT_WS0_N_3;

View File

@ -176,7 +176,7 @@
static EWRAM_DATA u8 gUnknown_02022D04 = 0;
static EWRAM_DATA u16 sCurrItemAndOptionMenuCheck = 0;
static IWRAM_DATA u8 sBirchSpeechMainTaskId;
static u8 sBirchSpeechMainTaskId;
// Static ROM declarations

View File

@ -33,7 +33,7 @@ static void Task_BardSong(u8 taskId);
static void StorytellerSetup(void);
static void Storyteller_ResetFlag(void);
IWRAM_DATA u8 sSelectedStory;
static u8 sSelectedStory;
struct BardSong gBardSong;

View File

@ -1,6 +1,7 @@
#include "global.h"
#include "alloc.h"
#include "bg.h"
#include "blit.h"
#include "dma3.h"
#include "event_data.h"
#include "graphics.h"
@ -2013,337 +2014,82 @@ void PrintPlayerNameOnWindow(u8 windowId, const u8 *src, u16 x, u16 y)
AddTextPrinterParameterized(windowId, 1, gStringVar4, x, y, 0xFF, 0);
}
//Screw this function, it's long and unreferenced and ugh
struct UnkStruct_819A080 {
u8 *unk00;
u16 unk04;
u16 unk06;
};
#ifdef NONMATCHING
void sub_819A080(struct UnkStruct_819A080 *a0, struct UnkStruct_819A080 *a1, u16 a2, u16 a3, u16 a4, u16 a5, u16 a6, u16 a7)
// Unused. Similar to BlitBitmapRect4Bit.
void sub_819A080(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height)
{
// r3 = a3
// r4 = a5
// r1 = a6
// r5 = a7
// sp+00 = a0
// sp+04 = a1
// sp+08 = a2
// sp+0c = a4
int sp10 = a1->unk04 - a4 < a6 ? a1->unk04 - a4 + a2 : a6 + a2;
int sp14 = a0->unk06 - a5 < a7 ? a3 + a0->unk06 - a5 : a3 + a7;
int sp18 = (a0->unk04 + (a0->unk04 & 0x7)) / 8;
int sp1c = (a1->unk04 + (a1->unk04 & 0x7)) / 8;
int r12; // sp+20
int r8; // sp+24
int r5;
int r6;
u16 r2;
int loopSrcY, loopDstY, loopSrcX, loopDstX, xEnd, yEnd, multiplierSrcY, multiplierDstY;
const u8 *pixelsSrc;
u16 *pixelsDst;
u16 toOrr;
for (r12 = a3, r8 = a5; r12 < sp14; r12++, r8++)
if (dst->width - dstX < width)
xEnd = dst->width - dstX + srcX;
else
xEnd = width + srcX;
if (dst->height - dstY < height)
yEnd = srcY + dst->height - dstY;
else
yEnd = srcY + height;
multiplierSrcY = (src->width + (src->width & 7)) >> 3;
multiplierDstY = (dst->width + (dst->width & 7)) >> 3;
for (loopSrcY = srcY, loopDstY = dstY; loopSrcY < yEnd; loopSrcY++, loopDstY++)
{
for (r5 = a2, r6 = a4; a5 < sp10; a5++, a6++)
for (loopSrcX = srcX, loopDstX = dstX; loopSrcX < xEnd; loopSrcX++, loopDstX++)
{
u8 *r3 = a0->unk00 + ((r5 >> 1) & 0x3) + ((r5 >> 3) << 5) + (((r12 >> 3) * sp18) << 5) + ((r12 & 0x7) << 2);
u8 *r4 = a1->unk00 + ((r6 >> 1) & 0x3) + ((r6 >> 3) << 5) + (((r8 >> 3) * sp1c) << 5) + ((r8 & 0x7) << 2);
if (((uintptr_t)r4) & 0x1)
pixelsSrc = src->pixels + ((loopSrcX >> 1) & 3) + ((loopSrcX >> 3) << 5) + (((loopSrcY >> 3) * multiplierSrcY) << 5) + ((u32)(loopSrcY << 0x1d) >> 0x1B);
pixelsDst = (void*) dst->pixels + ((loopDstX >> 1) & 3) + ((loopDstX >> 3) << 5) + ((( loopDstY >> 3) * multiplierDstY) << 5) + ((u32)( loopDstY << 0x1d) >> 0x1B);
if ((uintptr_t )pixelsDst & 0x1)
{
u16 *r4_2 = (u16 *)(r4 - 1);
if (r6 & 0x1)
pixelsDst = (void*)(pixelsDst) - 1;
if (loopDstX & 0x1)
{
r2 = *r4_2 & 0x0fff;
if (r5 & 0x1)
*r4_2 = r2 | ((*r3 & 0xf0) << 8);
toOrr = *pixelsDst & 0x0fff;
if (loopSrcX & 0x1)
*pixelsDst = toOrr | ((*pixelsSrc & 0xf0) << 8);
else
*r4_2 = r2 | ((*r3 & 0x0f) << 12);
*pixelsDst = toOrr | ((*pixelsSrc & 0x0f) << 12);
}
else
{
r2 = *r4_2 * 0xf0ff;
if (r5 & 0x1)
*r4_2 = r2 | ((*r3 & 0xf0) << 4);
toOrr = *pixelsDst & 0xf0ff;
if (loopSrcX & 0x1)
*pixelsDst = toOrr | ((*pixelsSrc & 0xf0) << 4);
else
*r4_2 = r2 | ((*r3 & 0x0f) << 8);
*pixelsDst = toOrr | ((*pixelsSrc & 0x0f) << 8);
}
}
else
{
u16 *r4_2 = (u16 *)r4;
if (r6 & 1)
if (loopDstX & 1)
{
r2 = *r4_2 & 0xff0f;
if (r5 & 1)
*r4_2 = r2 | ((*r3 & 0xf0) << 0);
toOrr = *pixelsDst & 0xff0f;
if (loopSrcX & 1)
*pixelsDst = toOrr | ((*pixelsSrc & 0xf0) << 0);
else
*r4_2 = r2 | ((*r3 & 0x0f) << 4);
*pixelsDst = toOrr | ((*pixelsSrc & 0x0f) << 4);
}
else
{
r2 = *r4_2 & 0xfff0;
if (r5 & 1)
*r4_2 = r2 | ((*r3 & 0xf0) >> 4);
toOrr = *pixelsDst & 0xfff0;
if (loopSrcX & 1)
*pixelsDst = toOrr | ((*pixelsSrc & 0xf0) >> 4);
else
*r4_2 = r2 | ((*r3 & 0x0f) >> 0);
*pixelsDst = toOrr | ((*pixelsSrc & 0x0f) >> 0);
}
}
// Needed to match, urgh.
#ifndef NONMATCHING
asm("":::"r4");
pixelsDst++;pixelsDst--;
#endif // NONMATCHING
}
}
}
#else
NAKED
void sub_819A080(struct UnkStruct_819A080 *a0, struct UnkStruct_819A080 *a1, u16 a2, u16 a3, u16 a4, u16 a5, u16 a6, u16 a7)
{
asm("push {r4-r7,lr}\n\
mov r7, r10\n\
mov r6, r9\n\
mov r5, r8\n\
push {r5-r7}\n\
sub sp, #0x28\n\
str r0, [sp]\n\
str r1, [sp, #0x4]\n\
ldr r0, [sp, #0x48]\n\
ldr r4, [sp, #0x4C]\n\
ldr r1, [sp, #0x50]\n\
ldr r5, [sp, #0x54]\n\
lsl r2, #16\n\
lsr r2, #16\n\
str r2, [sp, #0x8]\n\
lsl r3, #16\n\
lsr r3, #16\n\
lsl r0, #16\n\
lsr r0, #16\n\
str r0, [sp, #0xC]\n\
lsl r4, #16\n\
lsr r4, #16\n\
lsl r1, #16\n\
lsr r1, #16\n\
lsl r5, #16\n\
lsr r5, #16\n\
ldr r2, [sp, #0x4]\n\
ldrh r0, [r2, #0x4]\n\
ldr r2, [sp, #0xC]\n\
sub r0, r2\n\
ldr r2, [sp, #0x8]\n\
add r2, r1, r2\n\
str r2, [sp, #0x10]\n\
cmp r0, r1\n\
bge _0819A0CC\n\
ldr r1, [sp, #0x8]\n\
add r0, r1\n\
str r0, [sp, #0x10]\n\
_0819A0CC:\n\
ldr r2, [sp, #0x4]\n\
ldrh r1, [r2, #0x6]\n\
sub r0, r1, r4\n\
cmp r0, r5\n\
bge _0819A0DE\n\
add r0, r3, r1\n\
sub r0, r4\n\
str r0, [sp, #0x14]\n\
b _0819A0E2\n\
_0819A0DE:\n\
add r5, r3, r5\n\
str r5, [sp, #0x14]\n\
_0819A0E2:\n\
ldr r0, [sp]\n\
ldrh r1, [r0, #0x4]\n\
mov r2, #0x7\n\
add r0, r1, #0\n\
and r0, r2\n\
add r1, r0\n\
asr r1, #3\n\
str r1, [sp, #0x18]\n\
ldr r0, [sp, #0x4]\n\
ldrh r1, [r0, #0x4]\n\
add r0, r1, #0\n\
and r0, r2\n\
add r1, r0\n\
asr r1, #3\n\
str r1, [sp, #0x1C]\n\
mov r12, r3\n\
mov r8, r4\n\
ldr r1, [sp, #0x14]\n\
cmp r12, r1\n\
blt _0819A10C\n\
b _0819A24A\n\
_0819A10C:\n\
ldr r5, [sp, #0x8]\n\
ldr r6, [sp, #0xC]\n\
mov r2, r12\n\
add r2, #0x1\n\
str r2, [sp, #0x20]\n\
mov r0, r8\n\
add r0, #0x1\n\
str r0, [sp, #0x24]\n\
ldr r1, [sp, #0x10]\n\
cmp r5, r1\n\
blt _0819A124\n\
b _0819A23A\n\
_0819A124:\n\
mov r7, #0x1\n\
mov r2, #0xF0\n\
mov r10, r2\n\
mov r0, #0xF\n\
mov r9, r0\n\
_0819A12E:\n\
asr r0, r5, #1\n\
mov r1, #0x3\n\
and r0, r1\n\
ldr r2, [sp]\n\
ldr r1, [r2]\n\
add r1, r0\n\
asr r0, r5, #3\n\
lsl r0, #5\n\
add r1, r0\n\
mov r2, r12\n\
asr r0, r2, #3\n\
ldr r2, [sp, #0x18]\n\
mul r0, r2\n\
lsl r0, #5\n\
add r1, r0\n\
mov r2, r12\n\
lsl r0, r2, #29\n\
lsr r0, #27\n\
add r3, r1, r0\n\
asr r0, r6, #1\n\
mov r1, #0x3\n\
and r0, r1\n\
ldr r2, [sp, #0x4]\n\
ldr r1, [r2]\n\
add r1, r0\n\
asr r0, r6, #3\n\
lsl r0, #5\n\
add r1, r0\n\
mov r2, r8\n\
asr r0, r2, #3\n\
ldr r2, [sp, #0x1C]\n\
mul r0, r2\n\
lsl r0, #5\n\
add r1, r0\n\
mov r2, r8\n\
lsl r0, r2, #29\n\
lsr r0, #27\n\
add r4, r1, r0\n\
add r0, r4, #0\n\
and r0, r7\n\
cmp r0, #0\n\
beq _0819A1DA\n\
sub r4, #0x1\n\
add r0, r6, #0\n\
and r0, r7\n\
cmp r0, #0\n\
beq _0819A1B2\n\
ldrh r0, [r4]\n\
ldr r2, =0x00000fff\n\
and r2, r0\n\
add r0, r5, #0\n\
and r0, r7\n\
cmp r0, #0\n\
beq _0819A1A8\n\
ldrb r1, [r3]\n\
mov r0, r10\n\
and r0, r1\n\
lsl r0, #8\n\
b _0819A22A\n\
.pool\n\
_0819A1A8:\n\
ldrb r1, [r3]\n\
mov r0, r9\n\
and r0, r1\n\
lsl r0, #12\n\
b _0819A22A\n\
_0819A1B2:\n\
ldrh r0, [r4]\n\
ldr r2, =0x0000f0ff\n\
and r2, r0\n\
add r0, r5, #0\n\
and r0, r7\n\
cmp r0, #0\n\
beq _0819A1D0\n\
ldrb r1, [r3]\n\
mov r0, r10\n\
and r0, r1\n\
lsl r0, #4\n\
b _0819A22A\n\
.pool\n\
_0819A1D0:\n\
ldrb r1, [r3]\n\
mov r0, r9\n\
and r0, r1\n\
lsl r0, #8\n\
b _0819A22A\n\
_0819A1DA:\n\
add r0, r6, #0\n\
and r0, r7\n\
cmp r0, #0\n\
beq _0819A206\n\
ldrh r0, [r4]\n\
ldr r2, =0x0000ff0f\n\
and r2, r0\n\
add r0, r5, #0\n\
and r0, r7\n\
cmp r0, #0\n\
beq _0819A1FC\n\
ldrb r1, [r3]\n\
mov r0, r10\n\
b _0819A228\n\
.pool\n\
_0819A1FC:\n\
ldrb r1, [r3]\n\
mov r0, r9\n\
and r0, r1\n\
lsl r0, #4\n\
b _0819A22A\n\
_0819A206:\n\
ldrh r0, [r4]\n\
ldr r2, =0x0000fff0\n\
and r2, r0\n\
add r0, r5, #0\n\
and r0, r7\n\
cmp r0, #0\n\
beq _0819A224\n\
ldrb r1, [r3]\n\
mov r0, r10\n\
and r0, r1\n\
lsr r0, #4\n\
b _0819A22A\n\
.pool\n\
_0819A224:\n\
ldrb r1, [r3]\n\
mov r0, r9\n\
_0819A228:\n\
and r0, r1\n\
_0819A22A:\n\
orr r2, r0\n\
strh r2, [r4]\n\
add r5, #0x1\n\
add r6, #0x1\n\
ldr r0, [sp, #0x10]\n\
cmp r5, r0\n\
bge _0819A23A\n\
b _0819A12E\n\
_0819A23A:\n\
ldr r1, [sp, #0x20]\n\
mov r12, r1\n\
ldr r2, [sp, #0x24]\n\
mov r8, r2\n\
ldr r0, [sp, #0x14]\n\
cmp r12, r0\n\
bge _0819A24A\n\
b _0819A10C\n\
_0819A24A:\n\
add sp, #0x28\n\
pop {r3-r5}\n\
mov r8, r3\n\
mov r9, r4\n\
mov r10, r5\n\
pop {r4-r7}\n\
pop {r0}\n\
bx r0\n");
}
#endif
void sub_819A25C(u8 palOffset, u16 speciesId)
{

View File

@ -27,7 +27,7 @@ EWRAM_DATA static struct YesNoFuncTable gUnknown_0203A138 = {0};
EWRAM_DATA static u8 gUnknown_0203A140 = 0;
// IWRAM bss vars
IWRAM_DATA static TaskFunc gUnknown_0300117C;
static TaskFunc gUnknown_0300117C;
// const rom data
static const struct OamData sOamData_859F4E8 =

View File

@ -458,338 +458,106 @@ void sub_81D2230(struct UnknownStruct_81D1ED4 *arg0)
arg0->unk354 = 1;
}
/* TODO
static void sub_81D2278(struct UnknownStruct_81D1ED4 *arg0, u16 arg1[66][2], struct UnknownSubStruct_81D1ED4 *arg2, struct UnknownSubStruct_81D1ED4 *arg3, u8 arg4, u16 arg5[66][2])
static void sub_81D2278(struct UnknownStruct_81D1ED4 *arg0, u16 *arg1, struct UnknownSubStruct_81D1ED4 *arg2, struct UnknownSubStruct_81D1ED4 *arg3, u8 arg4, u16 *arg5)
{
s32 var_2C = 0;
u16 r8;
s32 r10, r4, r2, r0, r1, var_30;
u16 i, r8, r10, r0, var_30;
u16 *ptr;
s32 r4, var_2C;
var_2C = 0;
if (arg2->unk2 < arg3->unk2)
{
r2 = arg2->unk2;
r10 = arg2->unk2;
r0 = arg3->unk2;
r1 = arg2->unk0;
r4 = r1 << 10;
r4 = arg2->unk0 << 10;
var_30 = arg3->unk0;
r8 = r0 - r10;
if (r8 != 0)
var_2C = ((var_30 - arg2->unk0) << 10) / r8;
}
else
{
r0 = arg2->unk0;
r0 = arg2->unk2;
r10 = arg3->unk2;
r1 = arg3->unk0;
r4 = r1 << 10;
r4 = arg3->unk0 << 10;
var_30 = arg2->unk0;
r2 = arg3->unk2;
r8 = r0 - r10;
if (r8 != 0)
var_2C = ((var_30 - arg3->unk0) << 10) / r8;
}
r8 = r0 - r2;
if (r8 != 0)
var_2C = ((var_30 - r1) << 10) / r8;
r8++;
if (arg5 == NULL)
{
arg1 += (r10 - 56) * 2;
for (i = 0; i < r8; i++)
{
arg1[arg4] = (r4 >> 10) + ((r4 >> 9) & 1) + arg4;
r4 += var_2C;
arg1 += 2;
}
ptr = arg1 - 2;
}
}
*/
NAKED
static void sub_81D2278(struct UnknownStruct_81D1ED4 *arg0, u16 arg1[66][2], struct UnknownSubStruct_81D1ED4 *arg2, struct UnknownSubStruct_81D1ED4 *arg3, u8 arg4, u16 arg5[66][2])
{
asm_unified("\n\
push {r4-r7,lr}\n\
mov r7, r10\n\
mov r6, r9\n\
mov r5, r8\n\
push {r5-r7}\n\
sub sp, 0x18\n\
str r0, [sp]\n\
adds r6, r1, 0\n\
adds r5, r2, 0\n\
str r3, [sp, 0x4]\n\
ldr r0, [sp, 0x38]\n\
ldr r7, [sp, 0x3C]\n\
lsls r0, 24\n\
lsrs r0, 24\n\
mov r9, r0\n\
movs r0, 0\n\
str r0, [sp, 0xC]\n\
ldrh r0, [r5, 0x2]\n\
ldrh r1, [r3, 0x2]\n\
cmp r0, r1\n\
bcs _081D22B2\n\
adds r2, r0, 0\n\
mov r10, r2\n\
ldrh r0, [r3, 0x2]\n\
ldrh r1, [r5]\n\
lsls r4, r1, 10\n\
ldrh r3, [r3]\n\
str r3, [sp, 0x8]\n\
b _081D22C6\n\
_081D22B2:\n\
ldrh r0, [r5, 0x2]\n\
ldr r1, [sp, 0x4]\n\
ldrh r1, [r1, 0x2]\n\
mov r10, r1\n\
ldr r2, [sp, 0x4]\n\
ldrh r1, [r2]\n\
lsls r4, r1, 10\n\
ldrh r3, [r5]\n\
str r3, [sp, 0x8]\n\
mov r2, r10\n\
_081D22C6:\n\
subs r0, r2\n\
lsls r0, 16\n\
lsrs r0, 16\n\
mov r8, r0\n\
cmp r0, 0\n\
beq _081D22DE\n\
subs r0, r3, r1\n\
lsls r0, 10\n\
mov r1, r8\n\
bl __divsi3\n\
str r0, [sp, 0xC]\n\
_081D22DE:\n\
mov r0, r8\n\
adds r0, 0x1\n\
lsls r0, 16\n\
lsrs r0, 16\n\
mov r8, r0\n\
cmp r7, 0\n\
bne _081D2328\n\
mov r0, r10\n\
subs r0, 0x38\n\
lsls r0, 2\n\
adds r6, r0\n\
movs r5, 0\n\
mov r3, r9\n\
lsls r3, 1\n\
mov r12, r3\n\
ldr r0, [sp, 0x8]\n\
add r0, r9\n\
str r0, [sp, 0x10]\n\
cmp r7, r8\n\
bcs _081D23B6\n\
movs r7, 0x1\n\
_081D2308:\n\
adds r2, r3, r6\n\
asrs r1, r4, 10\n\
asrs r0, r4, 9\n\
ands r0, r7\n\
adds r1, r0\n\
add r1, r9\n\
strh r1, [r2]\n\
ldr r1, [sp, 0xC]\n\
adds r4, r1\n\
adds r6, 0x4\n\
adds r0, r5, 0x1\n\
lsls r0, 16\n\
lsrs r5, r0, 16\n\
cmp r5, r8\n\
bcc _081D2308\n\
b _081D23B6\n\
_081D2328:\n\
ldr r2, [sp, 0xC]\n\
cmp r2, 0\n\
ble _081D23C0\n\
mov r0, r10\n\
subs r0, 0x38\n\
lsls r0, 2\n\
adds r7, r0\n\
movs r5, 0\n\
mov r3, r9\n\
lsls r3, 1\n\
mov r12, r3\n\
ldr r0, [sp, 0x8]\n\
add r0, r9\n\
str r0, [sp, 0x10]\n\
cmp r5, r8\n\
bcs _081D237A\n\
ldr r0, =0x00026bff\n\
cmp r4, r0\n\
bgt _081D237A\n\
mov r1, r12\n\
str r1, [sp, 0x14]\n\
_081D2352:\n\
ldr r3, [sp, 0x14]\n\
adds r2, r3, r7\n\
asrs r1, r4, 10\n\
asrs r0, r4, 9\n\
movs r3, 0x1\n\
ands r0, r3\n\
adds r1, r0\n\
add r1, r9\n\
strh r1, [r2]\n\
ldr r0, [sp, 0xC]\n\
adds r4, r0\n\
adds r7, 0x4\n\
adds r0, r5, 0x1\n\
lsls r0, 16\n\
lsrs r5, r0, 16\n\
cmp r5, r8\n\
bcs _081D237A\n\
ldr r1, =0x00026bff\n\
cmp r4, r1\n\
ble _081D2352\n\
_081D237A:\n\
mov r2, r10\n\
adds r1, r2, r5\n\
ldr r3, [sp]\n\
movs r2, 0xD4\n\
lsls r2, 2\n\
adds r0, r3, r2\n\
strh r1, [r0]\n\
ldrh r0, [r0]\n\
subs r0, 0x38\n\
lsls r0, 2\n\
adds r6, r0\n\
cmp r5, r8\n\
bcs _081D23B6\n\
mov r3, r12\n\
movs r7, 0x1\n\
_081D2398:\n\
adds r2, r3, r6\n\
asrs r1, r4, 10\n\
asrs r0, r4, 9\n\
ands r0, r7\n\
adds r1, r0\n\
add r1, r9\n\
strh r1, [r2]\n\
ldr r0, [sp, 0xC]\n\
adds r4, r0\n\
adds r6, 0x4\n\
adds r0, r5, 0x1\n\
lsls r0, 16\n\
lsrs r5, r0, 16\n\
cmp r5, r8\n\
bcc _081D2398\n\
_081D23B6:\n\
subs r0, r6, 0x4\n\
b _081D248C\n\
.pool\n\
_081D23C0:\n\
ldr r1, [sp, 0xC]\n\
cmp r1, 0\n\
bge _081D2464\n\
mov r0, r10\n\
subs r0, 0x38\n\
lsls r0, 2\n\
adds r6, r0\n\
movs r5, 0\n\
mov r2, r9\n\
lsls r2, 1\n\
mov r12, r2\n\
ldr r3, [sp, 0x8]\n\
add r3, r9\n\
str r3, [sp, 0x10]\n\
cmp r5, r8\n\
bcs _081D241E\n\
adds r3, r2, r6\n\
asrs r1, r4, 10\n\
asrs r0, r4, 9\n\
movs r2, 0x1\n\
ands r0, r2\n\
adds r1, r0\n\
add r1, r9\n\
strh r1, [r3]\n\
b _081D2414\n\
_081D23F2:\n\
ldr r0, [sp, 0xC]\n\
adds r4, r0\n\
adds r6, 0x4\n\
adds r0, r5, 0x1\n\
lsls r0, 16\n\
lsrs r5, r0, 16\n\
cmp r5, r8\n\
bcs _081D241E\n\
mov r1, r12\n\
adds r3, r1, r6\n\
asrs r2, r4, 10\n\
asrs r0, r4, 9\n\
movs r1, 0x1\n\
ands r0, r1\n\
adds r2, r0\n\
add r2, r9\n\
strh r2, [r3]\n\
_081D2414:\n\
ldr r0, =0x00026bff\n\
cmp r4, r0\n\
bgt _081D23F2\n\
movs r0, 0x9B\n\
strh r0, [r3]\n\
_081D241E:\n\
mov r2, r10\n\
adds r1, r2, r5\n\
ldr r3, [sp]\n\
movs r2, 0xD4\n\
lsls r2, 2\n\
adds r0, r3, r2\n\
strh r1, [r0]\n\
ldrh r0, [r0]\n\
subs r0, 0x38\n\
lsls r0, 2\n\
adds r7, r0\n\
cmp r5, r8\n\
bcs _081D245A\n\
mov r3, r12\n\
movs r6, 0x1\n\
_081D243C:\n\
adds r2, r3, r7\n\
asrs r1, r4, 10\n\
asrs r0, r4, 9\n\
ands r0, r6\n\
adds r1, r0\n\
add r1, r9\n\
strh r1, [r2]\n\
ldr r0, [sp, 0xC]\n\
adds r4, r0\n\
adds r7, 0x4\n\
adds r0, r5, 0x1\n\
lsls r0, 16\n\
lsrs r5, r0, 16\n\
cmp r5, r8\n\
bcc _081D243C\n\
_081D245A:\n\
subs r0, r7, 0x4\n\
b _081D248C\n\
.pool\n\
_081D2464:\n\
ldr r1, [sp]\n\
movs r2, 0xD4\n\
lsls r2, 2\n\
adds r0, r1, r2\n\
mov r3, r10\n\
strh r3, [r0]\n\
mov r0, r10\n\
subs r0, 0x38\n\
lsls r0, 2\n\
adds r6, r0\n\
adds r7, r0\n\
ldrh r0, [r5]\n\
adds r0, 0x1\n\
strh r0, [r6, 0x2]\n\
ldr r1, [sp, 0x4]\n\
ldrh r0, [r1]\n\
strh r0, [r7]\n\
movs r0, 0x9B\n\
strh r0, [r7, 0x2]\n\
b _081D2494\n\
_081D248C:\n\
add r0, r12\n\
mov r2, sp\n\
ldrh r2, [r2, 0x10]\n\
strh r2, [r0]\n\
_081D2494:\n\
add sp, 0x18\n\
pop {r3-r5}\n\
mov r8, r3\n\
mov r9, r4\n\
mov r10, r5\n\
pop {r4-r7}\n\
pop {r0}\n\
bx r0\n\
");
else if (var_2C > 0)
{
arg5 += (r10 - 56) * 2;
// Less readable than the other loops, but it has to be written this way to match.
for (i = 0; i < r8; arg5[arg4] = (r4 >> 10) + ((r4 >> 9) & 1) + arg4, r4 += var_2C, arg5 += 2, i++)
{
if (r4 >= (155 << 10))
break;
}
arg0->unk350 = r10 + i;
arg1 += (arg0->unk350 - 56) * 2;
for (; i < r8; i++)
{
arg1[arg4] = (r4 >> 10) + ((r4 >> 9) & 1) + arg4;
r4 += var_2C;
arg1 += 2;
}
ptr = arg1 - 2;
}
else if (var_2C < 0)
{
arg1 += (r10 - 56) * 2;
for (i = 0; i < r8; i++)
{
arg1[arg4] = (r4 >> 10) + ((r4 >> 9) & 1) + arg4;
if (r4 < (155 << 10))
{
arg1[arg4] = 155;
break;
}
r4 += var_2C;
arg1 += 2;
}
arg0->unk350 = r10 + i;
arg5 += (arg0->unk350 - 56) * 2;
for (; i < r8; i++)
{
arg5[arg4] = (r4 >> 10) + ((r4 >> 9) & 1) + arg4;
r4 += var_2C;
arg5 += 2;
}
ptr = arg5 - 2;
}
else
{
arg0->unk350 = r10;
arg1 += (r10 - 56) * 2;
arg5 += (r10 - 56) * 2;
arg1[1] = arg2->unk0 + 1;
arg5[0] = arg3->unk0;
arg5[1] = 155;
return;
}
ptr[arg4] = arg4 + var_30;
}
static void sub_81D24A4(struct UnknownStruct_81D1ED4 *arg0)
@ -799,18 +567,18 @@ static void sub_81D24A4(struct UnknownStruct_81D1ED4 *arg0)
if (arg0->unk12C[0].unk2 < arg0->unk12C[1].unk2)
{
r6 = arg0->unk12C[0].unk2;
sub_81D2278(arg0, arg0->unk140, &arg0->unk12C[0], &arg0->unk12C[1], 1, NULL);
sub_81D2278(arg0, arg0->unk140[0], &arg0->unk12C[0], &arg0->unk12C[1], 1, NULL);
}
else
{
r6 = arg0->unk12C[1].unk2;
sub_81D2278(arg0, arg0->unk140, &arg0->unk12C[1], &arg0->unk12C[0], 0, NULL);
sub_81D2278(arg0, arg0->unk140[0], &arg0->unk12C[1], &arg0->unk12C[0], 0, NULL);
}
sub_81D2278(arg0, arg0->unk140, &arg0->unk12C[1], &arg0->unk12C[2], 1, NULL);
sub_81D2278(arg0, arg0->unk140[0], &arg0->unk12C[1], &arg0->unk12C[2], 1, NULL);
i = (arg0->unk12C[2].unk2 <= arg0->unk12C[3].unk2);
sub_81D2278(arg0, arg0->unk140, &arg0->unk12C[2], &arg0->unk12C[3], i, arg0->unk248);
sub_81D2278(arg0, arg0->unk140[0], &arg0->unk12C[2], &arg0->unk12C[3], i, arg0->unk248[0]);
for (i = 56; i < r6; i++)
{
arg0->unk140[i - 56][0] = 0;
@ -841,15 +609,15 @@ static void sub_81D2634(struct UnknownStruct_81D1ED4 *arg0)
if (arg0->unk12C[0].unk2 < arg0->unk12C[4].unk2)
{
r6 = arg0->unk12C[0].unk2;
sub_81D2278(arg0, arg0->unk248, &arg0->unk12C[0], &arg0->unk12C[4], 0, NULL);
sub_81D2278(arg0, arg0->unk248[0], &arg0->unk12C[0], &arg0->unk12C[4], 0, NULL);
}
else
{
r6 = arg0->unk12C[4].unk2;
sub_81D2278(arg0, arg0->unk248, &arg0->unk12C[4], &arg0->unk12C[0], 1, NULL);
sub_81D2278(arg0, arg0->unk248[0], &arg0->unk12C[4], &arg0->unk12C[0], 1, NULL);
}
sub_81D2278(arg0, arg0->unk248, &arg0->unk12C[4], &arg0->unk12C[3], 0, NULL);
sub_81D2278(arg0, arg0->unk248[0], &arg0->unk12C[4], &arg0->unk12C[3], 0, NULL);
for (i = 56; i < r6; i++)
{
@ -1290,7 +1058,7 @@ void sub_81D3094(void *tilesDst, void *palDst, u16 boxId, u16 monId, u16 arg5, u
u32 personality = GetBoxOrPartyMonData(boxId, monId, MON_DATA_PERSONALITY, NULL);
LoadSpecialPokePic(&gMonFrontPicTable[species], tilesDst, species, personality, TRUE);
LZ77UnCompWram(GetFrontSpritePalFromSpeciesAndPersonality(species, trainerId, personality), palDst);
LZ77UnCompWram(GetMonSpritePalFromSpeciesAndPersonality(species, trainerId, personality), palDst);
}
}

View File

@ -258,7 +258,7 @@ EWRAM_DATA static struct Struct203CF10 *sUnknown_0203CF10 = NULL;
EWRAM_DATA static struct BgRegOffsets *sBgShakeOffsets = NULL;
EWRAM_DATA struct MirageTowerPulseBlend *sMirageTowerPulseBlend = NULL;
IWRAM_DATA static u16 gUnknown_030012A8[8];
static u16 gUnknown_030012A8[8];
bool8 IsMirageTowerVisible(void)
{

View File

@ -1,7 +1,7 @@
#include "gba/gba.h"
#include "multiboot.h"
IWRAM_DATA static u16 MultiBoot_required_data[MULTIBOOT_NCHILD];
static u16 MultiBoot_required_data[MULTIBOOT_NCHILD];
static int MultiBootSend(struct MultiBootParam *mp, u16 data);
static int MultiBootHandShake(struct MultiBootParam *mp);
@ -435,7 +435,7 @@ static int MultiBootHandShake(struct MultiBootParam *mp)
#undef must_data
}
static void MultiBootWaitCycles(u32 cycles)
static NOINLINE void MultiBootWaitCycles(u32 cycles)
{
asm("mov r2, pc");
asm("lsr r2, #24");

View File

@ -37,6 +37,7 @@
#include "contest.h"
#include "item_menu.h"
#include "pokemon_storage_system.h"
#include "pokemon_jump.h"
#include "decoration_inventory.h"
#include "secret_base.h"
#include "player_pc.h"
@ -45,8 +46,6 @@
#include "mevent.h"
#include "union_room_chat.h"
extern void ResetPokeJumpResults(void);
extern const u8 EventScript_ResetAllMapFlags[];
// this file's functions

View File

@ -186,15 +186,15 @@ static u8 GetAdjustedInitialDirection(struct InitialPlayerAvatarState *playerStr
static u16 GetCenterScreenMetatileBehavior(void);
// IWRAM bss vars
IWRAM_DATA static void *sUnusedOverworldCallback;
IWRAM_DATA static u8 sPlayerTradingStates[4];
static void *sUnusedOverworldCallback;
static u8 sPlayerTradingStates[4];
// This callback is called with a player's key code. It then returns an
// adjusted key code, effectively intercepting the input before anything
// can process it.
IWRAM_DATA static u16 (*sPlayerKeyInterceptCallback)(u32);
IWRAM_DATA static bool8 sUnknown_03000E18;
IWRAM_DATA static u8 sRfuKeepAliveTimer;
IWRAM_DATA static u32 sUnusedVar;
static u16 (*sPlayerKeyInterceptCallback)(u32);
static bool8 sUnknown_03000E18;
static u8 sRfuKeepAliveTimer;
static u32 sUnusedVar;
// IWRAM common
u16 *gBGTilemapBuffers1;

Some files were not shown because too many files have changed in this diff Show More