Merge branch '_pret/master' into _RHH/pr/master/pretSync20241015
This commit is contained in:
commit
80447bee8e
140 changed files with 928 additions and 1969 deletions
2
.github/pull_request_template.md
vendored
2
.github/pull_request_template.md
vendored
|
@ -21,5 +21,5 @@
|
||||||
<!-- If it doesn't apply, feel free to remove this section. -->
|
<!-- If it doesn't apply, feel free to remove this section. -->
|
||||||
|
|
||||||
## **Discord contact info**
|
## **Discord contact info**
|
||||||
<!--- formatted as name#numbers, e.g. Lunos#4026 -->
|
<!--- Formatted as username (e.g. Lunos) or username#numbers (e.g. Lunos#4026) -->
|
||||||
<!--- Contributors must join https://discord.gg/6CzjAG6GZk -->
|
<!--- Contributors must join https://discord.gg/6CzjAG6GZk -->
|
||||||
|
|
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
|
@ -32,7 +32,7 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
sudo apt update
|
sudo apt update
|
||||||
sudo apt install -y build-essential libpng-dev libelf-dev
|
sudo apt install -y build-essential libpng-dev libelf-dev
|
||||||
# build-essential, git, and libpng-dev are already installed
|
# build-essential and git are already installed
|
||||||
# gcc-arm-none-eabi is only needed for the modern build
|
# gcc-arm-none-eabi is only needed for the modern build
|
||||||
# as an alternative to dkP
|
# as an alternative to dkP
|
||||||
|
|
||||||
|
|
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -38,5 +38,7 @@ prefabs.json
|
||||||
*.diff
|
*.diff
|
||||||
*.sym
|
*.sym
|
||||||
*.js
|
*.js
|
||||||
|
/pokeemerald-*.png
|
||||||
|
/pokeemerald_modern-*.png
|
||||||
src/data/map_group_count.h
|
src/data/map_group_count.h
|
||||||
tools/trainerproc/trainerproc
|
tools/trainerproc/trainerproc
|
||||||
|
|
|
@ -24,7 +24,7 @@ Unscientific benchmarks suggest **msys2 is 2x slower** than WSL1, and **Cygwin i
|
||||||
|
|
||||||
All of the Windows instructions assume that the default drive is C:\\. If this differs to your actual drive letter, then replace C with the correct drive letter when reading the instructions.
|
All of the Windows instructions assume that the default drive is C:\\. If this differs to your actual drive letter, then replace C with the correct drive letter when reading the instructions.
|
||||||
|
|
||||||
**A note of caution**: As Windows 7 is officially unsupported by Microsoft and Windows 8 has very little usage, some maintainers are unwilling to maintain the Windows 7/8 instructions. Thus, these instructions may break in the future with fixes taking longer than fixes to the Windows 10 instructions.
|
**A note of caution**: As Windows 7 and Windows 8 are officially unsupported by Microsoft, some maintainers are unwilling to maintain the Windows 7/8 instructions. Thus, these instructions may break in the future with fixes taking longer than fixes to the Windows 10/11 instructions.
|
||||||
|
|
||||||
## Windows 10/11 (WSL1)
|
## Windows 10/11 (WSL1)
|
||||||
WSL1 is the preferred terminal to build **pokeemerald Expansion**. The following instructions will explain how to install WSL1 (referred to interchangeably as WSL).
|
WSL1 is the preferred terminal to build **pokeemerald Expansion**. The following instructions will explain how to install WSL1 (referred to interchangeably as WSL).
|
||||||
|
|
161
Makefile
161
Makefile
|
@ -3,6 +3,7 @@ TITLE := POKEMON EMER
|
||||||
GAME_CODE := BPEE
|
GAME_CODE := BPEE
|
||||||
MAKER_CODE := 01
|
MAKER_CODE := 01
|
||||||
REVISION := 0
|
REVISION := 0
|
||||||
|
KEEP_TEMPS ?= 0
|
||||||
|
|
||||||
# `File name`.gba ('_agbcc' will be appended to the non-modern builds)
|
# `File name`.gba ('_agbcc' will be appended to the non-modern builds)
|
||||||
FILE_NAME := pokeemerald
|
FILE_NAME := pokeemerald
|
||||||
|
@ -113,18 +114,14 @@ SYM := $(ROM:.gba=.sym)
|
||||||
|
|
||||||
# Commonly used directories
|
# Commonly used directories
|
||||||
C_SUBDIR = src
|
C_SUBDIR = src
|
||||||
GFLIB_SUBDIR = gflib
|
|
||||||
ASM_SUBDIR = asm
|
ASM_SUBDIR = asm
|
||||||
DATA_SRC_SUBDIR = src/data
|
DATA_SRC_SUBDIR = src/data
|
||||||
DATA_ASM_SUBDIR = data
|
DATA_ASM_SUBDIR = data
|
||||||
SONG_SUBDIR = sound/songs
|
SONG_SUBDIR = sound/songs
|
||||||
MID_SUBDIR = sound/songs/midi
|
MID_SUBDIR = sound/songs/midi
|
||||||
SAMPLE_SUBDIR = sound/direct_sound_samples
|
|
||||||
CRY_SUBDIR = sound/direct_sound_samples/cries
|
|
||||||
TEST_SUBDIR = test
|
TEST_SUBDIR = test
|
||||||
|
|
||||||
C_BUILDDIR = $(OBJ_DIR)/$(C_SUBDIR)
|
C_BUILDDIR = $(OBJ_DIR)/$(C_SUBDIR)
|
||||||
GFLIB_BUILDDIR = $(OBJ_DIR)/$(GFLIB_SUBDIR)
|
|
||||||
ASM_BUILDDIR = $(OBJ_DIR)/$(ASM_SUBDIR)
|
ASM_BUILDDIR = $(OBJ_DIR)/$(ASM_SUBDIR)
|
||||||
DATA_ASM_BUILDDIR = $(OBJ_DIR)/$(DATA_ASM_SUBDIR)
|
DATA_ASM_BUILDDIR = $(OBJ_DIR)/$(DATA_ASM_SUBDIR)
|
||||||
SONG_BUILDDIR = $(OBJ_DIR)/$(SONG_SUBDIR)
|
SONG_BUILDDIR = $(OBJ_DIR)/$(SONG_SUBDIR)
|
||||||
|
@ -141,7 +138,7 @@ INCLUDE_CPP_ARGS := $(INCLUDE_DIRS:%=-iquote %)
|
||||||
INCLUDE_SCANINC_ARGS := $(INCLUDE_DIRS:%=-I %)
|
INCLUDE_SCANINC_ARGS := $(INCLUDE_DIRS:%=-I %)
|
||||||
|
|
||||||
O_LEVEL ?= 2
|
O_LEVEL ?= 2
|
||||||
CPPFLAGS := $(INCLUDE_CPP_ARGS) -iquote $(GFLIB_SUBDIR) -Wno-trigraphs -DMODERN=$(MODERN) -DTESTING=$(TEST)
|
CPPFLAGS := $(INCLUDE_CPP_ARGS) -Wno-trigraphs -DMODERN=$(MODERN) -DTESTING=$(TEST)
|
||||||
ifeq ($(MODERN),0)
|
ifeq ($(MODERN),0)
|
||||||
CPPFLAGS += -I tools/agbcc/include -I tools/agbcc -nostdinc -undef
|
CPPFLAGS += -I tools/agbcc/include -I tools/agbcc -nostdinc -undef
|
||||||
CC1 := tools/agbcc/bin/agbcc$(EXE)
|
CC1 := tools/agbcc/bin/agbcc$(EXE)
|
||||||
|
@ -200,8 +197,6 @@ MAKEFLAGS += --no-print-directory
|
||||||
.SECONDARY:
|
.SECONDARY:
|
||||||
# Delete files that weren't built properly
|
# Delete files that weren't built properly
|
||||||
.DELETE_ON_ERROR:
|
.DELETE_ON_ERROR:
|
||||||
# Secondary expansion is required for dependency variables in object rules.
|
|
||||||
.SECONDEXPANSION:
|
|
||||||
|
|
||||||
RULES_NO_SCAN += libagbsyscall clean clean-assets tidy tidymodern tidynonmodern tidycheck generated clean-generated $(TESTELF)
|
RULES_NO_SCAN += libagbsyscall clean clean-assets tidy tidymodern tidynonmodern tidycheck generated clean-generated $(TESTELF)
|
||||||
.PHONY: all rom agbcc modern compare check
|
.PHONY: all rom agbcc modern compare check
|
||||||
|
@ -221,12 +216,20 @@ ifneq (,$(MAKECMDGOALS))
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
.SHELLSTATUS ?= 0
|
||||||
|
|
||||||
ifeq ($(SETUP_PREREQS),1)
|
ifeq ($(SETUP_PREREQS),1)
|
||||||
# If set on: Default target or a rule requiring a scan
|
# If set on: Default target or a rule requiring a scan
|
||||||
# Forcibly execute `make tools` since we need them for what we are doing.
|
# Forcibly execute `make tools` since we need them for what we are doing.
|
||||||
$(call infoshell, $(MAKE) -f make_tools.mk)
|
$(foreach line, $(shell $(MAKE) -f make_tools.mk | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line))))
|
||||||
|
ifneq ($(.SHELLSTATUS),0)
|
||||||
|
$(error Errors occurred while building tools. See error messages above for more details)
|
||||||
|
endif
|
||||||
# Oh and also generate mapjson sources before we use `SCANINC`.
|
# Oh and also generate mapjson sources before we use `SCANINC`.
|
||||||
$(call infoshell, $(MAKE) generated)
|
$(foreach line, $(shell $(MAKE) generated | sed "s/ /__SPACE__/g"), $(info $(subst __SPACE__, ,$(line))))
|
||||||
|
ifneq ($(.SHELLSTATUS),0)
|
||||||
|
$(error Errors occurred while generating map-related sources. See error messages above for more details)
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Collect sources
|
# Collect sources
|
||||||
|
@ -239,9 +242,6 @@ TEST_SRCS := $(foreach src,$(TEST_SRCS_IN),$(if $(findstring .inc.c,$(src)),,$(s
|
||||||
TEST_OBJS := $(patsubst $(TEST_SUBDIR)/%.c,$(TEST_BUILDDIR)/%.o,$(TEST_SRCS))
|
TEST_OBJS := $(patsubst $(TEST_SUBDIR)/%.c,$(TEST_BUILDDIR)/%.o,$(TEST_SRCS))
|
||||||
TEST_OBJS_REL := $(patsubst $(OBJ_DIR)/%,%,$(TEST_OBJS))
|
TEST_OBJS_REL := $(patsubst $(OBJ_DIR)/%,%,$(TEST_OBJS))
|
||||||
|
|
||||||
GFLIB_SRCS := $(wildcard $(GFLIB_SUBDIR)/*.c)
|
|
||||||
GFLIB_OBJS := $(patsubst $(GFLIB_SUBDIR)/%.c,$(GFLIB_BUILDDIR)/%.o,$(GFLIB_SRCS))
|
|
||||||
|
|
||||||
C_ASM_SRCS := $(wildcard $(C_SUBDIR)/*.s $(C_SUBDIR)/*/*.s $(C_SUBDIR)/*/*/*.s)
|
C_ASM_SRCS := $(wildcard $(C_SUBDIR)/*.s $(C_SUBDIR)/*/*.s $(C_SUBDIR)/*/*/*.s)
|
||||||
C_ASM_OBJS := $(patsubst $(C_SUBDIR)/%.s,$(C_BUILDDIR)/%.o,$(C_ASM_SRCS))
|
C_ASM_OBJS := $(patsubst $(C_SUBDIR)/%.s,$(C_BUILDDIR)/%.o,$(C_ASM_SRCS))
|
||||||
|
|
||||||
|
@ -260,7 +260,7 @@ SONG_OBJS := $(patsubst $(SONG_SUBDIR)/%.s,$(SONG_BUILDDIR)/%.o,$(SONG_SRCS))
|
||||||
MID_SRCS := $(wildcard $(MID_SUBDIR)/*.mid)
|
MID_SRCS := $(wildcard $(MID_SUBDIR)/*.mid)
|
||||||
MID_OBJS := $(patsubst $(MID_SUBDIR)/%.mid,$(MID_BUILDDIR)/%.o,$(MID_SRCS))
|
MID_OBJS := $(patsubst $(MID_SUBDIR)/%.mid,$(MID_BUILDDIR)/%.o,$(MID_SRCS))
|
||||||
|
|
||||||
OBJS := $(C_OBJS) $(GFLIB_OBJS) $(C_ASM_OBJS) $(ASM_OBJS) $(DATA_ASM_OBJS) $(SONG_OBJS) $(MID_OBJS)
|
OBJS := $(C_OBJS) $(C_ASM_OBJS) $(ASM_OBJS) $(DATA_ASM_OBJS) $(SONG_OBJS) $(MID_OBJS)
|
||||||
OBJS_REL := $(patsubst $(OBJ_DIR)/%,%,$(OBJS))
|
OBJS_REL := $(patsubst $(OBJ_DIR)/%,%,$(OBJS))
|
||||||
|
|
||||||
SUBDIRS := $(sort $(dir $(OBJS) $(dir $(TEST_OBJS))))
|
SUBDIRS := $(sort $(dir $(OBJS) $(dir $(TEST_OBJS))))
|
||||||
|
@ -337,34 +337,31 @@ include graphics_file_rules.mk
|
||||||
include map_data_rules.mk
|
include map_data_rules.mk
|
||||||
include spritesheet_rules.mk
|
include spritesheet_rules.mk
|
||||||
include json_data_rules.mk
|
include json_data_rules.mk
|
||||||
include songs.mk
|
include audio_rules.mk
|
||||||
|
|
||||||
|
# NOTE: Tools must have been built prior (FIXME)
|
||||||
|
# so you can't really call this rule directly
|
||||||
generated: $(AUTO_GEN_TARGETS)
|
generated: $(AUTO_GEN_TARGETS)
|
||||||
|
|
||||||
%.s: ;
|
%.s: ;
|
||||||
%.png: ;
|
%.png: ;
|
||||||
%.pal: ;
|
%.pal: ;
|
||||||
%.aif: ;
|
%.aif: ;
|
||||||
|
|
||||||
%.1bpp: %.png ; $(GFX) $< $@
|
%.1bpp: %.png ; $(GFX) $< $@
|
||||||
%.4bpp: %.png ; $(GFX) $< $@
|
%.4bpp: %.png ; $(GFX) $< $@
|
||||||
%.8bpp: %.png ; $(GFX) $< $@
|
%.8bpp: %.png ; $(GFX) $< $@
|
||||||
%.gbapal: %.pal ; $(GFX) $< $@
|
%.gbapal: %.pal ; $(GFX) $< $@
|
||||||
%.gbapal: %.png ; $(GFX) $< $@
|
%.gbapal: %.png ; $(GFX) $< $@
|
||||||
%.lz: % ; $(GFX) $< $@
|
%.lz: % ; $(GFX) $< $@
|
||||||
%.rl: % ; $(GFX) $< $@
|
%.rl: % ; $(GFX) $< $@
|
||||||
$(CRY_SUBDIR)/uncomp_%.bin: $(CRY_SUBDIR)/uncomp_%.aif ; $(AIF) $< $@
|
|
||||||
$(CRY_SUBDIR)/%.bin: $(CRY_SUBDIR)/%.aif ; $(AIF) $< $@ --compress
|
|
||||||
sound/%.bin: sound/%.aif ; $(AIF) $< $@
|
|
||||||
|
|
||||||
# NOTE: Tools must have been built prior (FIXME)
|
|
||||||
generated: tools $(AUTO_GEN_TARGETS)
|
|
||||||
clean-generated:
|
clean-generated:
|
||||||
-rm -f $(AUTO_GEN_TARGETS)
|
-rm -f $(AUTO_GEN_TARGETS)
|
||||||
|
|
||||||
COMPETITIVE_PARTY_SYNTAX := $(shell PATH="$(PATH)"; echo 'COMPETITIVE_PARTY_SYNTAX' | $(CPP) $(CPPFLAGS) -imacros include/gba/defines.h -imacros include/config/general.h | tail -n1)
|
COMPETITIVE_PARTY_SYNTAX := $(shell PATH="$(PATH)"; echo 'COMPETITIVE_PARTY_SYNTAX' | $(CPP) $(CPPFLAGS) -imacros include/gba/defines.h -imacros include/config/general.h | tail -n1)
|
||||||
ifeq ($(COMPETITIVE_PARTY_SYNTAX),1)
|
ifeq ($(COMPETITIVE_PARTY_SYNTAX),1)
|
||||||
%.h: %.party tools ; $(CPP) $(CPPFLAGS) -traditional-cpp - < $< | $(TRAINERPROC) -o $@ -i $< -
|
%.h: %.party ; $(CPP) $(CPPFLAGS) -traditional-cpp - < $< | $(TRAINERPROC) -o $@ -i $< -
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(MODERN),0)
|
ifeq ($(MODERN),0)
|
||||||
|
@ -392,76 +389,53 @@ endif
|
||||||
# As a side effect, they're evaluated immediately instead of when the rule is invoked.
|
# As a side effect, they're evaluated immediately instead of when the rule is invoked.
|
||||||
# It doesn't look like $(shell) can be deferred so there might not be a better way (Icedude_907: there is soon).
|
# It doesn't look like $(shell) can be deferred so there might not be a better way (Icedude_907: there is soon).
|
||||||
|
|
||||||
# For C dependencies.
|
$(C_BUILDDIR)/%.o: $(C_SUBDIR)/%.c
|
||||||
# Args: $1 = Output file without extension (build/assets/src/data), $2 = Input file (src/data.c)
|
ifneq ($(KEEP_TEMPS),1)
|
||||||
define C_DEP
|
@echo "$(CC1) <flags> -o $@ $<"
|
||||||
$(call C_DEP_IMPL,$1,$2,$1)
|
@$(CPP) $(CPPFLAGS) $< | $(PREPROC) -i $< charmap.txt | $(CC1) $(CFLAGS) -o - - | cat - <(echo -e ".text\n\t.align\t2, 0") | $(AS) $(ASFLAGS) -o $@ -
|
||||||
endef
|
|
||||||
# Internal implementation details.
|
|
||||||
# $1: Output file without extension, $2 input file, $3 temp path (if keeping)
|
|
||||||
define C_DEP_IMPL
|
|
||||||
$1.o: $2
|
|
||||||
ifeq (,$(KEEP_TEMPS))
|
|
||||||
@echo "$$(CC1) <flags> -o $$@ $$<"
|
|
||||||
@$$(CPP) $$(CPPFLAGS) $$< | $$(PREPROC) -i $$< charmap.txt | $$(CC1) $$(CFLAGS) -o - - | cat - <(echo -e ".text\n\t.align\t2, 0") | $$(AS) $$(ASFLAGS) -o $$@ -
|
|
||||||
else
|
else
|
||||||
@$$(CPP) $$(CPPFLAGS) $$< -o $3.i
|
@$(CPP) $(CPPFLAGS) $< -o $*.i
|
||||||
@$$(PREPROC) $3.i charmap.txt | $$(CC1) $$(CFLAGS) -o $3.s
|
@$(PREPROC) $*.i charmap.txt | $(CC1) $(CFLAGS) -o $*.s
|
||||||
@echo -e ".text\n\t.align\t2, 0\n" >> $3.s
|
@echo -e ".text\n\t.align\t2, 0\n" >> $*.s
|
||||||
$$(AS) $$(ASFLAGS) -o $$@ $3.s
|
$(AS) $(ASFLAGS) -o $@ $*.s
|
||||||
endif
|
endif
|
||||||
$(call C_SCANINC,$1,$2)
|
|
||||||
endef
|
$(C_BUILDDIR)/%.d: $(C_SUBDIR)/%.c
|
||||||
# Calls SCANINC to find dependencies
|
$(SCANINC) -M $@ $(INCLUDE_SCANINC_ARGS) -I tools/agbcc/include $<
|
||||||
define C_SCANINC
|
|
||||||
ifneq ($(NODEP),1)
|
ifneq ($(NODEP),1)
|
||||||
$1.o: $2 $$(shell $(SCANINC) $(INCLUDE_SCANINC_ARGS) -I tools/agbcc/include -I gflib $2)
|
-include $(addprefix $(OBJ_DIR)/,$(C_SRCS:.c=.d))
|
||||||
endif
|
|
||||||
endef
|
|
||||||
|
|
||||||
# Create generic rules if no dependency scanning, else create the real rules
|
|
||||||
ifeq ($(NODEP),1)
|
|
||||||
$(eval $(call C_DEP,$(C_BUILDDIR)/%,$(C_SUBDIR)/%.c))
|
|
||||||
$(eval $(call C_DEP,$(GFLIB_BUILDDIR)/%,$(GFLIB_SUBDIR)/%.c))
|
|
||||||
else
|
|
||||||
$(foreach src,$(C_SRCS),$(eval $(call C_DEP,$(OBJ_DIR)/$(basename $(src)),$(src))))
|
|
||||||
$(foreach src,$(GFLIB_SRCS),$(eval $(call C_DEP,$(OBJ_DIR)/$(basename $(src)),$(src))))
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Similar methodology for Assembly files
|
$(ASM_BUILDDIR)/%.o: $(ASM_SUBDIR)/%.s
|
||||||
# $1: Output path without extension, $2: Input file (`*.s`)
|
$(AS) $(ASFLAGS) -o $@ $<
|
||||||
define ASM_DEP
|
|
||||||
$1.o: $2
|
$(ASM_BUILDDIR)/%.d: $(ASM_SUBDIR)/%.s
|
||||||
$$(AS) $$(ASFLAGS) -o $$@ $$<
|
$(SCANINC) -M $@ $(INCLUDE_SCANINC_ARGS) -I "" $<
|
||||||
$(call ASM_SCANINC,$1,$2)
|
|
||||||
endef
|
|
||||||
# As above but first doing a preprocessor pass
|
|
||||||
define ASM_DEP_PREPROC
|
|
||||||
$1.o: $2
|
|
||||||
$$(PREPROC) $$< charmap.txt | $$(CPP) $(INCLUDE_SCANINC_ARGS) - | $$(PREPROC) -ie $$< charmap.txt | $$(AS) $$(ASFLAGS) -o $$@
|
|
||||||
$(call ASM_SCANINC,$1,$2)
|
|
||||||
endef
|
|
||||||
|
|
||||||
define ASM_SCANINC
|
|
||||||
ifneq ($(NODEP),1)
|
ifneq ($(NODEP),1)
|
||||||
$1.o: $2 $$(shell $(SCANINC) $(INCLUDE_SCANINC_ARGS) -I "" $2)
|
-include $(addprefix $(OBJ_DIR)/,$(ASM_SRCS:.s=.d))
|
||||||
endif
|
|
||||||
endef
|
|
||||||
|
|
||||||
# Dummy rules or real rules
|
|
||||||
ifeq ($(NODEP),1)
|
|
||||||
$(eval $(call ASM_DEP,$(ASM_BUILDDIR)/%,$(ASM_SUBDIR)/%.s))
|
|
||||||
$(eval $(call ASM_DEP_PREPROC,$(C_BUILDDIR)/%,$(C_SUBDIR)/%.s))
|
|
||||||
$(eval $(call ASM_DEP_PREPROC,$(DATA_ASM_BUILDDIR)/%,$(DATA_ASM_SUBDIR)/%.s))
|
|
||||||
else
|
|
||||||
$(foreach src, $(ASM_SRCS), $(eval $(call ASM_DEP,$(src:%.s=$(OBJ_DIR)/%),$(src))))
|
|
||||||
$(foreach src, $(C_ASM_SRCS), $(eval $(call ASM_DEP_PREPROC,$(src:%.s=$(OBJ_DIR)/%),$(src))))
|
|
||||||
$(foreach src, $(REGULAR_DATA_ASM_SRCS), $(eval $(call ASM_DEP_PREPROC,$(src:%.s=$(OBJ_DIR)/%),$(src))))
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Additional rules
|
$(C_BUILDDIR)/%.o: $(C_SUBDIR)/%.s
|
||||||
$(SONG_BUILDDIR)/%.o: $(SONG_SUBDIR)/%.s
|
$(PREPROC) $< charmap.txt | $(CPP) $(INCLUDE_SCANINC_ARGS) - | $(PREPROC) -ie $< charmap.txt | $(AS) $(ASFLAGS) -o $@
|
||||||
$(AS) $(ASFLAGS) -I sound -o $@ $<
|
|
||||||
|
$(C_BUILDDIR)/%.d: $(C_SUBDIR)/%.s
|
||||||
|
$(SCANINC) -M $@ $(INCLUDE_SCANINC_ARGS) -I "" $<
|
||||||
|
|
||||||
|
ifneq ($(NODEP),1)
|
||||||
|
-include $(addprefix $(OBJ_DIR)/,$(C_ASM_SRCS:.s=.d))
|
||||||
|
endif
|
||||||
|
|
||||||
|
$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s
|
||||||
|
$(PREPROC) $< charmap.txt | $(CPP) $(INCLUDE_SCANINC_ARGS) - | $(PREPROC) -ie $< charmap.txt | $(AS) $(ASFLAGS) -o $@
|
||||||
|
|
||||||
|
$(DATA_ASM_BUILDDIR)/%.d: $(DATA_ASM_SUBDIR)/%.s
|
||||||
|
$(SCANINC) -M $@ $(INCLUDE_SCANINC_ARGS) -I "" $<
|
||||||
|
|
||||||
|
ifneq ($(NODEP),1)
|
||||||
|
-include $(addprefix $(OBJ_DIR)/,$(REGULAR_DATA_ASM_SRCS:.s=.d))
|
||||||
|
endif
|
||||||
|
|
||||||
$(OBJ_DIR)/sym_bss.ld: sym_bss.txt
|
$(OBJ_DIR)/sym_bss.ld: sym_bss.txt
|
||||||
$(RAMSCRGEN) .bss $< ENGLISH > $@
|
$(RAMSCRGEN) .bss $< ENGLISH > $@
|
||||||
|
@ -493,18 +467,15 @@ LD_SCRIPT := ld_script_modern.ld
|
||||||
LD_SCRIPT_DEPS :=
|
LD_SCRIPT_DEPS :=
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$(OBJ_DIR)/ld_script.ld: $(LD_SCRIPT) $(LD_SCRIPT_DEPS)
|
|
||||||
sed "s#tools/#tools/#g" $(LD_SCRIPT) > $(OBJ_DIR)/ld_script.ld
|
|
||||||
|
|
||||||
# Final rules
|
# Final rules
|
||||||
|
|
||||||
libagbsyscall:
|
libagbsyscall:
|
||||||
@$(MAKE) -C libagbsyscall TOOLCHAIN=$(TOOLCHAIN) MODERN=$(MODERN)
|
@$(MAKE) -C libagbsyscall TOOLCHAIN=$(TOOLCHAIN) MODERN=$(MODERN)
|
||||||
|
|
||||||
# Elf from object files
|
# Elf from object files
|
||||||
$(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS) libagbsyscall
|
$(ELF): $(LD_SCRIPT) $(LD_SCRIPT_DEPS) $(OBJS) libagbsyscall
|
||||||
@echo "cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ <objects> <lib>"
|
@cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ../../$< --print-memory-usage -o ../../$@ $(OBJS_REL) $(LIB) | cat
|
||||||
@cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld --print-memory-usage -o ../../$@ $(OBJS_REL) $(LIB) | cat
|
@echo "cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ../../$< --print-memory-usage -o ../../$@ <objs> <libs> | cat"
|
||||||
$(FIX) $@ -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent
|
$(FIX) $@ -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent
|
||||||
|
|
||||||
# Builds the rom from the elf file
|
# Builds the rom from the elf file
|
||||||
|
|
|
@ -141,25 +141,25 @@
|
||||||
|
|
||||||
.macro if_points_less_than num:req, destination:req
|
.macro if_points_less_than num:req, destination:req
|
||||||
.byte 0x16
|
.byte 0x16
|
||||||
.byte \num
|
.2byte \num
|
||||||
.4byte \destination
|
.4byte \destination
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro if_points_more_than num:req, destination:req
|
.macro if_points_more_than num:req, destination:req
|
||||||
.byte 0x17
|
.byte 0x17
|
||||||
.byte \num
|
.2byte \num
|
||||||
.4byte \destination
|
.4byte \destination
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro if_points_eq num:req, destination:req
|
.macro if_points_eq num:req, destination:req
|
||||||
.byte 0x18
|
.byte 0x18
|
||||||
.byte \num
|
.2byte \num
|
||||||
.4byte \destination
|
.4byte \destination
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro if_points_not_eq num:req, destination:req
|
.macro if_points_not_eq num:req, destination:req
|
||||||
.byte 0x19
|
.byte 0x19
|
||||||
.byte \num
|
.2byte \num
|
||||||
.4byte \destination
|
.4byte \destination
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
@ -171,25 +171,25 @@
|
||||||
|
|
||||||
.macro if_preliminary_points_less_than num:req, destination:req
|
.macro if_preliminary_points_less_than num:req, destination:req
|
||||||
.byte 0x1B
|
.byte 0x1B
|
||||||
.byte \num
|
.2byte \num
|
||||||
.4byte \destination
|
.4byte \destination
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro if_preliminary_points_more_than num:req, destination:req
|
.macro if_preliminary_points_more_than num:req, destination:req
|
||||||
.byte 0x1C
|
.byte 0x1C
|
||||||
.byte \num
|
.2byte \num
|
||||||
.4byte \destination
|
.4byte \destination
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro if_preliminary_points_eq num:req, destination:req
|
.macro if_preliminary_points_eq num:req, destination:req
|
||||||
.byte 0x1D
|
.byte 0x1D
|
||||||
.byte \num
|
.2byte \num
|
||||||
.4byte \destination
|
.4byte \destination
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro if_preliminary_points_not_eq num:req, destination:req
|
.macro if_preliminary_points_not_eq num:req, destination:req
|
||||||
.byte 0x1E
|
.byte 0x1E
|
||||||
.byte \num
|
.2byte \num
|
||||||
.4byte \destination
|
.4byte \destination
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
|
49
audio_rules.mk
Normal file
49
audio_rules.mk
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
# This file contains rules for making assemblies for most music in the game.
|
||||||
|
|
||||||
|
CRY_SUBDIR := sound/direct_sound_samples/cries
|
||||||
|
|
||||||
|
MID_ASM_DIR := $(MID_SUBDIR)
|
||||||
|
CRY_BIN_DIR := $(CRY_SUBDIR)
|
||||||
|
SOUND_BIN_DIR := sound
|
||||||
|
|
||||||
|
SPECIAL_OUTDIRS := $(MID_ASM_DIR) $(CRY_BIN_DIR)
|
||||||
|
SPECIAL_OUTDIRS += $(SOUND_BIN_DIR) $(SOUND_BIN_DIR)/direct_sound_samples/phonemes $(SOUND_BIN_DIR)/direct_sound_samples/cries
|
||||||
|
$(shell mkdir -p $(SPECIAL_OUTDIRS) )
|
||||||
|
|
||||||
|
# Assembly song compilation
|
||||||
|
$(SONG_BUILDDIR)/%.o: $(SONG_SUBDIR)/%.s
|
||||||
|
$(AS) $(ASFLAGS) -I sound -o $@ $<
|
||||||
|
$(MID_BUILDDIR)/%.o: $(MID_ASM_DIR)/%.s
|
||||||
|
$(AS) $(ASFLAGS) -I sound -o $@ $<
|
||||||
|
|
||||||
|
# Compressed cries
|
||||||
|
$(CRY_BIN_DIR)/%.bin: $(CRY_SUBDIR)/%.aif
|
||||||
|
$(AIF) $< $@ --compress
|
||||||
|
|
||||||
|
# Uncompressed cries
|
||||||
|
$(CRY_BIN_DIR)/uncomp_%.bin: $(CRY_SUBDIR)/uncomp_%.aif
|
||||||
|
$(AIF) $< $@
|
||||||
|
|
||||||
|
# Uncompressed sounds
|
||||||
|
$(SOUND_BIN_DIR)/%.bin: sound/%.aif
|
||||||
|
$(AIF) $< $@
|
||||||
|
|
||||||
|
# For each line in midi.cfg, we do some trickery to convert it into a make rule for the `.mid` file described on the line
|
||||||
|
# Data following the colon in said file corresponds to arguments passed into mid2agb
|
||||||
|
MID_CFG_PATH := $(MID_SUBDIR)/midi.cfg
|
||||||
|
|
||||||
|
# $1: Source path no extension, $2 Options
|
||||||
|
define MID_RULE
|
||||||
|
$(MID_ASM_DIR)/$1.s: $(MID_SUBDIR)/$1.mid $(MID_CFG_PATH)
|
||||||
|
$(MID) $$< $$@ $2
|
||||||
|
endef
|
||||||
|
# source path, remaining text (options)
|
||||||
|
define MID_EXPANSION
|
||||||
|
$(eval $(call MID_RULE,$(basename $(patsubst %:,%,$(word 1,$1))),$(wordlist 2,999,$1)))
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(foreach line,$(shell cat $(MID_CFG_PATH) | sed "s/ /__SPACE__/g"),$(call MID_EXPANSION,$(subst __SPACE__, ,$(line))))
|
||||||
|
|
||||||
|
# Warn users building without a .cfg - build will fail at link time
|
||||||
|
$(MID_ASM_DIR)/%.s: $(MID_SUBDIR)/%.mid
|
||||||
|
$(warning $< does not have an associated entry in midi.cfg! It cannot be built)
|
|
@ -1 +0,0 @@
|
||||||
lman
|
|
|
@ -1,10 +0,0 @@
|
||||||
gFlashTimeoutFlag
|
|
||||||
PollFlashStatus
|
|
||||||
WaitForFlashWrite
|
|
||||||
ProgramFlashSector
|
|
||||||
gFlash
|
|
||||||
ProgramFlashByte
|
|
||||||
gFlashNumRemainingBytes
|
|
||||||
EraseFlashChip
|
|
||||||
EraseFlashSector
|
|
||||||
gFlashMaxTime
|
|
|
@ -1,3 +0,0 @@
|
||||||
gApprenticePartyMovesData
|
|
||||||
gApprenticeQuestionData
|
|
||||||
gApprenticeFunc
|
|
|
@ -1,3 +0,0 @@
|
||||||
gMonShrinkDuration
|
|
||||||
gMonShrinkDelta
|
|
||||||
gMonShrinkDistance
|
|
|
@ -1,3 +0,0 @@
|
||||||
gBattlerControllerFuncs
|
|
||||||
gBattleControllerData
|
|
||||||
gBattlerControllerEndFuncs
|
|
|
@ -1 +0,0 @@
|
||||||
gFactorySelect_CurrentOptionFunc
|
|
|
@ -1,7 +0,0 @@
|
||||||
gPreBattleCallback1
|
|
||||||
gBattleMainFunc
|
|
||||||
gBattleResults
|
|
||||||
gLeveledUpInBattle
|
|
||||||
gHealthboxSpriteIds
|
|
||||||
gMultiUsePlayerCursor
|
|
||||||
gNumberOfMovesToChoose
|
|
|
@ -1 +0,0 @@
|
||||||
gFrontierTempParty
|
|
|
@ -1 +0,0 @@
|
||||||
gInGameOpponentsNo
|
|
|
@ -1 +0,0 @@
|
||||||
gWindowTileAutoAllocEnabled
|
|
|
@ -1 +0,0 @@
|
||||||
gContestRngValue
|
|
|
@ -1,4 +0,0 @@
|
||||||
gContestMonPixels
|
|
||||||
gImageProcessingContext
|
|
||||||
gContestPaintingWinner
|
|
||||||
gContestPaintingMonPalette
|
|
|
@ -1 +0,0 @@
|
||||||
gEReaderData
|
|
|
@ -1 +0,0 @@
|
||||||
gCB2_AfterEvolution
|
|
|
@ -1,3 +0,0 @@
|
||||||
sPlayerToMewDeltaX
|
|
||||||
sPlayerToMewDeltaY
|
|
||||||
sMewDirectionCandidates
|
|
|
@ -1,3 +0,0 @@
|
||||||
gFieldCamera
|
|
||||||
gTotalCameraPixelOffsetY
|
|
||||||
gTotalCameraPixelOffsetX
|
|
|
@ -1 +0,0 @@
|
||||||
gSelectedObjectEvent
|
|
|
@ -1 +0,0 @@
|
||||||
gScrollableMultichoice_ListMenuTemplate
|
|
|
@ -1 +0,0 @@
|
||||||
gBackupMapLayout
|
|
|
@ -1,10 +0,0 @@
|
||||||
gCanvasColumnStart
|
|
||||||
gCanvasPixels
|
|
||||||
gCanvasRowEnd
|
|
||||||
gCanvasHeight
|
|
||||||
gCanvasColumnEnd
|
|
||||||
gCanvasRowStart
|
|
||||||
gCanvasMonPersonality
|
|
||||||
gCanvasWidth
|
|
||||||
gCanvasPalette
|
|
||||||
gCanvasPaletteStart
|
|
|
@ -1,2 +0,0 @@
|
||||||
gIntroFrameCounter
|
|
||||||
gMultibootProgramStruct
|
|
|
@ -1,5 +0,0 @@
|
||||||
gRfuSlotStatusUNI
|
|
||||||
gRfuSlotStatusNI
|
|
||||||
gRfuLinkStatus
|
|
||||||
gRfuStatic
|
|
||||||
gRfuFixed
|
|
|
@ -1 +0,0 @@
|
||||||
gRfuSIO32Id
|
|
|
@ -1 +0,0 @@
|
||||||
gSTWIStatus
|
|
|
@ -1,35 +0,0 @@
|
||||||
gLinkPartnersHeldKeys
|
|
||||||
gLinkDebugSeed
|
|
||||||
gLocalLinkPlayerBlock
|
|
||||||
gLinkErrorOccurred
|
|
||||||
gLinkDebugFlags
|
|
||||||
gLinkFiller1
|
|
||||||
gRemoteLinkPlayersNotReceived
|
|
||||||
gBlockReceivedStatus
|
|
||||||
gLinkFiller2
|
|
||||||
gLinkHeldKeys
|
|
||||||
gRecvCmds
|
|
||||||
gLinkStatus
|
|
||||||
gLinkDummy1
|
|
||||||
gLinkDummy2
|
|
||||||
gReadyToExitStandby
|
|
||||||
gReadyToCloseLink
|
|
||||||
gReadyCloseLinkType
|
|
||||||
gSuppressLinkErrorMessage
|
|
||||||
gWirelessCommType
|
|
||||||
gSavedLinkPlayerCount
|
|
||||||
gSendCmd
|
|
||||||
gSavedMultiplayerId
|
|
||||||
gReceivedRemoteLinkPlayers
|
|
||||||
gLinkTestBGInfo
|
|
||||||
gLinkCallback
|
|
||||||
gShouldAdvanceLinkState
|
|
||||||
gLinkTestBlockChecksums
|
|
||||||
gBlockRequestType
|
|
||||||
gLinkFiller3
|
|
||||||
gLinkFiller4
|
|
||||||
gLinkFiller5
|
|
||||||
gLastSendQueueCount
|
|
||||||
gLink
|
|
||||||
gLastRecvQueueCount
|
|
||||||
gLinkSavedIme
|
|
|
@ -1,2 +0,0 @@
|
||||||
gRfuAPIBuffer
|
|
||||||
gRfu
|
|
|
@ -1,2 +0,0 @@
|
||||||
gListMenuOverride
|
|
||||||
gMultiuseListMenuTemplate
|
|
|
@ -1,4 +0,0 @@
|
||||||
gFlashMemoryPresent
|
|
||||||
gSaveBlock1Ptr
|
|
||||||
gSaveBlock2Ptr
|
|
||||||
gPokemonStoragePtr
|
|
|
@ -1,12 +0,0 @@
|
||||||
gSoundInfo
|
|
||||||
gPokemonCrySongs
|
|
||||||
gPokemonCryMusicPlayers
|
|
||||||
gMPlayInfo_BGM
|
|
||||||
gMPlayJumpTable
|
|
||||||
gCgbChans
|
|
||||||
gMPlayInfo_SE1
|
|
||||||
gMPlayInfo_SE2
|
|
||||||
gPokemonCryTracks
|
|
||||||
gPokemonCrySong
|
|
||||||
gMPlayMemAccArea
|
|
||||||
gMPlayInfo_SE3
|
|
|
@ -1,10 +0,0 @@
|
||||||
gKeyRepeatStartDelay
|
|
||||||
gLinkTransferringData
|
|
||||||
gMain
|
|
||||||
gKeyRepeatContinueDelay
|
|
||||||
gSoftResetDisabled
|
|
||||||
gIntrTable
|
|
||||||
gLinkVSyncDisabled
|
|
||||||
IntrMain_Buffer
|
|
||||||
gPcmDmaCounter
|
|
||||||
gAgbMainLoop_sp
|
|
|
@ -1 +0,0 @@
|
||||||
gBardSong
|
|
|
@ -1,8 +0,0 @@
|
||||||
gOverworldTilemapBuffer_Bg2
|
|
||||||
gOverworldTilemapBuffer_Bg1
|
|
||||||
gOverworldTilemapBuffer_Bg3
|
|
||||||
gHeldKeyCodeToSend
|
|
||||||
gFieldCallback
|
|
||||||
gFieldCallback2
|
|
||||||
gLocalLinkPlayerId
|
|
||||||
gFieldLinkPlayerCount
|
|
|
@ -1 +0,0 @@
|
||||||
gItemUseCB
|
|
|
@ -1,2 +0,0 @@
|
||||||
gUnusedPokedexU8
|
|
||||||
gPokedexVBlankCB
|
|
|
@ -1 +0,0 @@
|
||||||
gDexCryScreenState
|
|
|
@ -1,2 +0,0 @@
|
||||||
gRngValue
|
|
||||||
gRng2Value
|
|
|
@ -1 +0,0 @@
|
||||||
gLocalTime
|
|
|
@ -1,13 +0,0 @@
|
||||||
gLastWrittenSector
|
|
||||||
gLastSaveCounter
|
|
||||||
gLastKnownGoodSector
|
|
||||||
gDamagedSaveSectors
|
|
||||||
gSaveCounter
|
|
||||||
gReadWriteSector
|
|
||||||
gIncrementalSectorId
|
|
||||||
gSaveUnusedVar
|
|
||||||
gSaveFileStatus
|
|
||||||
gGameContinueCallback
|
|
||||||
gRamSaveSectorLocations
|
|
||||||
gSaveUnusedVar2
|
|
||||||
gSaveAttemptStatus
|
|
|
@ -1 +0,0 @@
|
||||||
gDisableMusic
|
|
|
@ -1,2 +0,0 @@
|
||||||
gOamMatrixAllocBitmap
|
|
||||||
gReservedSpritePaletteCount
|
|
|
@ -1 +0,0 @@
|
||||||
gMenuCallback
|
|
|
@ -1 +0,0 @@
|
||||||
gTasks
|
|
|
@ -1,4 +0,0 @@
|
||||||
gFonts
|
|
||||||
gDisableTextPrinters
|
|
||||||
gCurGlyph
|
|
||||||
gTextFlags
|
|
|
@ -1,5 +0,0 @@
|
||||||
gWhichTrainerToFaceAfterBattle
|
|
||||||
gPostBattleMovementScript
|
|
||||||
gApproachingTrainers
|
|
||||||
gNoOfApproachingTrainers
|
|
||||||
gTrainerApproachedPlayer
|
|
|
@ -1,4 +0,0 @@
|
||||||
sCurTVShowSlot
|
|
||||||
sTV_SecretBaseVisitMovesTemp
|
|
||||||
sTV_DecorationsBuffer
|
|
||||||
sTV_SecretBaseVisitMonsTemp
|
|
|
@ -1,2 +0,0 @@
|
||||||
gTransparentTileNumber
|
|
||||||
gWindowBgTilemapBuffers
|
|
|
@ -64,7 +64,7 @@
|
||||||
"trainer_type": "TRAINER_TYPE_NONE",
|
"trainer_type": "TRAINER_TYPE_NONE",
|
||||||
"trainer_sight_or_berry_tree_id": "0",
|
"trainer_sight_or_berry_tree_id": "0",
|
||||||
"script": "FallarborTown_PokemonCenter_1F_EventScript_Lanette",
|
"script": "FallarborTown_PokemonCenter_1F_EventScript_Lanette",
|
||||||
"flag": "FLAG_HIDE_FALLORBOR_POKEMON_CENTER_LANETTE"
|
"flag": "FLAG_HIDE_FALLARBOR_POKEMON_CENTER_LANETTE"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"warp_events": [
|
"warp_events": [
|
||||||
|
|
|
@ -919,7 +919,7 @@
|
||||||
#define FLAG_HIDE_LITTLEROOT_TOWN_FAT_MAN 0x364
|
#define FLAG_HIDE_LITTLEROOT_TOWN_FAT_MAN 0x364
|
||||||
#define FLAG_HIDE_SLATEPORT_CITY_STERNS_SHIPYARD_MR_BRINEY 0x365
|
#define FLAG_HIDE_SLATEPORT_CITY_STERNS_SHIPYARD_MR_BRINEY 0x365
|
||||||
#define FLAG_HIDE_LANETTES_HOUSE_LANETTE 0x366
|
#define FLAG_HIDE_LANETTES_HOUSE_LANETTE 0x366
|
||||||
#define FLAG_HIDE_FALLORBOR_POKEMON_CENTER_LANETTE 0x367
|
#define FLAG_HIDE_FALLARBOR_POKEMON_CENTER_LANETTE 0x367
|
||||||
#define FLAG_HIDE_TRICK_HOUSE_ENTRANCE_MAN 0x368
|
#define FLAG_HIDE_TRICK_HOUSE_ENTRANCE_MAN 0x368
|
||||||
#define FLAG_HIDE_LILYCOVE_CONTEST_HALL_BLEND_MASTER_REPLACEMENT 0x369
|
#define FLAG_HIDE_LILYCOVE_CONTEST_HALL_BLEND_MASTER_REPLACEMENT 0x369
|
||||||
#define FLAG_HIDE_DESERT_UNDERPASS_FOSSIL 0x36A
|
#define FLAG_HIDE_DESERT_UNDERPASS_FOSSIL 0x36A
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#define EWRAM_DATA __attribute__((section(".sbss")))
|
#define EWRAM_DATA __attribute__((section(".sbss")))
|
||||||
#define IWRAM_INIT __attribute__((section(".iwram")))
|
#define IWRAM_INIT __attribute__((section(".iwram")))
|
||||||
#define EWRAM_INIT __attribute__((section(".ewram")))
|
#define EWRAM_INIT __attribute__((section(".ewram")))
|
||||||
|
#define COMMON_DATA __attribute__((section("common_data")))
|
||||||
#define UNUSED __attribute__((unused))
|
#define UNUSED __attribute__((unused))
|
||||||
|
|
||||||
#if MODERN
|
#if MODERN
|
||||||
|
|
|
@ -24,7 +24,6 @@ void SetCurSecretBaseIdFromPosition(const struct MapPosition *position, const st
|
||||||
void TrySetCurSecretBaseIndex(void);
|
void TrySetCurSecretBaseIndex(void);
|
||||||
void CheckPlayerHasSecretBase(void);
|
void CheckPlayerHasSecretBase(void);
|
||||||
void ToggleSecretBaseEntranceMetatile(void);
|
void ToggleSecretBaseEntranceMetatile(void);
|
||||||
void ScriptContext_Enable(void);
|
|
||||||
void ReceiveSecretBasesData(void *records, size_t recordSize, u8 linkIdx);
|
void ReceiveSecretBasesData(void *records, size_t recordSize, u8 linkIdx);
|
||||||
|
|
||||||
#endif //GUARD_SECRET_BASE_H
|
#endif //GUARD_SECRET_BASE_H
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#ifndef GUARD_TEXT_H
|
#ifndef GUARD_TEXT_H
|
||||||
#define GUARD_TEXT_H
|
#define GUARD_TEXT_H
|
||||||
|
|
||||||
#include "characters.h"
|
#include "constants/characters.h"
|
||||||
|
|
||||||
// Given as a text speed when all the text should be
|
// Given as a text speed when all the text should be
|
||||||
// loaded at once but not copied to vram yet.
|
// loaded at once but not copied to vram yet.
|
34
ld_script.ld
34
ld_script.ld
|
@ -47,7 +47,6 @@ SECTIONS {
|
||||||
/* .bss starts at 0x3000000 */
|
/* .bss starts at 0x3000000 */
|
||||||
INCLUDE "sym_bss.ld"
|
INCLUDE "sym_bss.ld"
|
||||||
src/*.o(.bss);
|
src/*.o(.bss);
|
||||||
gflib/*.o(.bss);
|
|
||||||
data/*.o(.bss);
|
data/*.o(.bss);
|
||||||
|
|
||||||
/* .bss.code starts at 0x3001AA8 */
|
/* .bss.code starts at 0x3001AA8 */
|
||||||
|
@ -55,6 +54,7 @@ SECTIONS {
|
||||||
|
|
||||||
/* COMMON starts at 0x30022A8 */
|
/* COMMON starts at 0x30022A8 */
|
||||||
INCLUDE "sym_common.ld"
|
INCLUDE "sym_common.ld"
|
||||||
|
src/*.o(COMMON);
|
||||||
*libc.a:sbrkr.o(COMMON);
|
*libc.a:sbrkr.o(COMMON);
|
||||||
} > IWRAM
|
} > IWRAM
|
||||||
|
|
||||||
|
@ -69,15 +69,15 @@ SECTIONS {
|
||||||
src/rom_header_rhh.o(.text.*);
|
src/rom_header_rhh.o(.text.*);
|
||||||
src/crt0.o(.text);
|
src/crt0.o(.text);
|
||||||
src/main.o(.text);
|
src/main.o(.text);
|
||||||
gflib/malloc.o(.text);
|
src/malloc.o(.text);
|
||||||
gflib/dma3_manager.o(.text);
|
src/dma3_manager.o(.text);
|
||||||
gflib/gpu_regs.o(.text);
|
src/gpu_regs.o(.text);
|
||||||
gflib/bg.o(.text);
|
src/bg.o(.text);
|
||||||
gflib/blit.o(.text);
|
src/blit.o(.text);
|
||||||
gflib/window.o(.text);
|
src/window.o(.text);
|
||||||
gflib/text.o(.text);
|
src/text.o(.text);
|
||||||
gflib/sprite.o(.text);
|
src/sprite.o(.text);
|
||||||
gflib/string_util.o(.text);
|
src/string_util.o(.text);
|
||||||
src/link.o(.text);
|
src/link.o(.text);
|
||||||
src/AgbRfu_LinkManager.o(.text);
|
src/AgbRfu_LinkManager.o(.text);
|
||||||
src/link_rfu_3.o(.text);
|
src/link_rfu_3.o(.text);
|
||||||
|
@ -464,12 +464,12 @@ SECTIONS {
|
||||||
src/rom_header.o(.rodata);
|
src/rom_header.o(.rodata);
|
||||||
src/rom_header_gf.o(.rodata);
|
src/rom_header_gf.o(.rodata);
|
||||||
src/main.o(.rodata);
|
src/main.o(.rodata);
|
||||||
gflib/bg.o(.rodata);
|
src/bg.o(.rodata);
|
||||||
gflib/window.o(.rodata);
|
src/window.o(.rodata);
|
||||||
gflib/text.o(.rodata);
|
src/text.o(.rodata);
|
||||||
gflib/sprite.o(.rodata);
|
src/sprite.o(.rodata);
|
||||||
gflib/io_reg.o(.rodata);
|
src/io_reg.o(.rodata);
|
||||||
gflib/string_util.o(.rodata);
|
src/string_util.o(.rodata);
|
||||||
src/link.o(.rodata);
|
src/link.o(.rodata);
|
||||||
src/link.o(.rodata.str1.4);
|
src/link.o(.rodata.str1.4);
|
||||||
src/AgbRfu_LinkManager.o(.rodata);
|
src/AgbRfu_LinkManager.o(.rodata);
|
||||||
|
@ -1336,9 +1336,7 @@ SECTIONS {
|
||||||
ALIGN(4)
|
ALIGN(4)
|
||||||
{
|
{
|
||||||
src/*.o(.text);
|
src/*.o(.text);
|
||||||
gflib/*.o(.text);
|
|
||||||
src/*.o(.rodata);
|
src/*.o(.rodata);
|
||||||
gflib/*.o(.rodata);
|
|
||||||
data/*.o(.rodata);
|
data/*.o(.rodata);
|
||||||
} > ROM = 0
|
} > ROM = 0
|
||||||
|
|
||||||
|
|
|
@ -41,15 +41,14 @@ SECTIONS {
|
||||||
ALIGN(4)
|
ALIGN(4)
|
||||||
{
|
{
|
||||||
src/*.o(.bss);
|
src/*.o(.bss);
|
||||||
gflib/*.o(.bss);
|
|
||||||
data/*.o(.bss);
|
data/*.o(.bss);
|
||||||
*libc.a:*.o(.bss*);
|
*libc.a:*.o(.bss*);
|
||||||
*libnosys.a:*.o(.bss*);
|
*libnosys.a:*.o(.bss*);
|
||||||
|
|
||||||
src/m4a.o(.bss.code);
|
src/m4a.o(.bss.code);
|
||||||
|
|
||||||
|
src/*.o(common_data);
|
||||||
src/*.o(COMMON);
|
src/*.o(COMMON);
|
||||||
gflib/*.o(COMMON);
|
|
||||||
*libc.a:*.o(COMMON);
|
*libc.a:*.o(COMMON);
|
||||||
*libnosys.a:*.o(COMMON);
|
*libnosys.a:*.o(COMMON);
|
||||||
} > IWRAM
|
} > IWRAM
|
||||||
|
@ -64,7 +63,6 @@ SECTIONS {
|
||||||
src/rom_header_rhh.o(.text.*);
|
src/rom_header_rhh.o(.text.*);
|
||||||
src/crt0.o(.text);
|
src/crt0.o(.text);
|
||||||
src/main.o(.text);
|
src/main.o(.text);
|
||||||
gflib/*.o(.text*);
|
|
||||||
src/*.o(.text*);
|
src/*.o(.text*);
|
||||||
asm/*.o(.text*);
|
asm/*.o(.text*);
|
||||||
} > ROM =0
|
} > ROM =0
|
||||||
|
@ -100,7 +98,6 @@ SECTIONS {
|
||||||
ALIGN(4)
|
ALIGN(4)
|
||||||
{
|
{
|
||||||
src/*.o(.rodata*);
|
src/*.o(.rodata*);
|
||||||
gflib/*.o(.rodata*);
|
|
||||||
data/*.o(.rodata*);
|
data/*.o(.rodata*);
|
||||||
} > ROM =0
|
} > ROM =0
|
||||||
|
|
||||||
|
|
|
@ -50,6 +50,7 @@ SECTIONS {
|
||||||
|
|
||||||
src/m4a.o(.bss.code);
|
src/m4a.o(.bss.code);
|
||||||
|
|
||||||
|
src/*.o(common_data);
|
||||||
src/*.o(COMMON);
|
src/*.o(COMMON);
|
||||||
gflib/*.o(COMMON);
|
gflib/*.o(COMMON);
|
||||||
data/*.o(COMMON);
|
data/*.o(COMMON);
|
||||||
|
|
420
sound/songs/midi/midi.cfg
Normal file
420
sound/songs/midi/midi.cfg
Normal file
|
@ -0,0 +1,420 @@
|
||||||
|
mus_abandoned_ship.mid: -E -R50 -G030 -V080
|
||||||
|
mus_abnormal_weather.mid: -E -R50 -G089 -V080
|
||||||
|
mus_aqua_magma_hideout.mid: -E -R50 -G076 -V084
|
||||||
|
mus_awaken_legend.mid: -E -R50 -G012 -V090 -P5
|
||||||
|
mus_b_arena.mid: -E -R50 -G104 -V090
|
||||||
|
mus_b_dome_lobby.mid: -E -R50 -G111 -V056
|
||||||
|
mus_b_dome.mid: -E -R50 -G111 -V090
|
||||||
|
mus_b_factory.mid: -E -R50 -G113 -V100
|
||||||
|
mus_b_frontier.mid: -E -R50 -G103 -V094
|
||||||
|
mus_b_palace.mid: -E -R50 -G108 -V105
|
||||||
|
mus_b_pike.mid: -E -R50 -G112 -V092
|
||||||
|
mus_b_pyramid_top.mid: -E -R50 -G107 -V077
|
||||||
|
mus_b_pyramid.mid: -E -R50 -G106 -V079
|
||||||
|
mus_b_tower_rs.mid: -E -R50 -G035 -V080
|
||||||
|
mus_b_tower.mid: -E -R50 -G110 -V100
|
||||||
|
mus_birch_lab.mid: -E -R50 -G033 -V080
|
||||||
|
mus_c_comm_center.mid: -E -R50 -V080
|
||||||
|
mus_c_vs_legend_beast.mid: -E -R50 -V080
|
||||||
|
mus_cable_car.mid: -E -R50 -G071 -V078
|
||||||
|
mus_caught.mid: -E -R50 -G025 -V080
|
||||||
|
mus_cave_of_origin.mid: -E -R50 -G037 -V080
|
||||||
|
mus_contest_lobby.mid: -E -R50 -G098 -V060
|
||||||
|
mus_contest_results.mid: -E -R50 -G092 -V080
|
||||||
|
mus_contest_winner.mid: -E -R50 -G085 -V100
|
||||||
|
mus_contest.mid: -E -R50 -G086 -V088
|
||||||
|
mus_credits.mid: -E -R50 -G101 -V100
|
||||||
|
mus_cycling.mid: -E -R50 -G049 -V083
|
||||||
|
mus_dewford.mid: -E -R50 -G073 -V078
|
||||||
|
mus_dummy.mid: -E -R40
|
||||||
|
mus_encounter_aqua.mid: -E -R50 -G065 -V086
|
||||||
|
mus_encounter_brendan.mid: -E -R50 -G067 -V078
|
||||||
|
mus_encounter_champion.mid: -E -R50 -G100 -V076
|
||||||
|
mus_encounter_cool.mid: -E -R50 -G063 -V086
|
||||||
|
mus_encounter_elite_four.mid: -E -R50 -G096 -V078
|
||||||
|
mus_encounter_female.mid: -E -R50 -G053 -V072
|
||||||
|
mus_encounter_girl.mid: -E -R50 -G027 -V080
|
||||||
|
mus_encounter_hiker.mid: -E -R50 -G097 -V076
|
||||||
|
mus_encounter_intense.mid: -E -R50 -G062 -V078
|
||||||
|
mus_encounter_interviewer.mid: -E -R50 -G099 -V062
|
||||||
|
mus_encounter_magma.mid: -E -R50 -G087 -V072
|
||||||
|
mus_encounter_male.mid: -E -R50 -G028 -V080
|
||||||
|
mus_encounter_may.mid: -E -R50 -G061 -V078
|
||||||
|
mus_encounter_rich.mid: -E -R50 -G043 -V094
|
||||||
|
mus_encounter_suspicious.mid: -E -R50 -G069 -V078
|
||||||
|
mus_encounter_swimmer.mid: -E -R50 -G036 -V080
|
||||||
|
mus_encounter_twins.mid: -E -R50 -G095 -V075
|
||||||
|
mus_end.mid: -E -R50 -G102 -V036
|
||||||
|
mus_ever_grande.mid: -E -R50 -G068 -V086
|
||||||
|
mus_evolution_intro.mid: -E -R50 -G026 -V080
|
||||||
|
mus_evolution.mid: -E -R50 -G026 -V080
|
||||||
|
mus_evolved.mid: -E -R50 -G012 -V090 -P5
|
||||||
|
mus_fallarbor.mid: -E -R50 -G083 -V100
|
||||||
|
mus_follow_me.mid: -E -R50 -G066 -V074
|
||||||
|
mus_fortree.mid: -E -R50 -G032 -V080
|
||||||
|
mus_game_corner.mid: -E -R50 -G072 -V072
|
||||||
|
mus_gsc_pewter.mid: -E -R50 -V080
|
||||||
|
mus_gsc_route38.mid: -E -R50 -V080
|
||||||
|
mus_gym.mid: -E -R50 -G013 -V080
|
||||||
|
mus_hall_of_fame_room.mid: -E -R50 -G093 -V080
|
||||||
|
mus_hall_of_fame.mid: -E -R50 -G082 -V078
|
||||||
|
mus_heal.mid: -E -R50 -G012 -V090 -P5
|
||||||
|
mus_help.mid: -E -R50 -G056 -V078
|
||||||
|
mus_intro_battle.mid: -E -R50 -G088 -V088
|
||||||
|
mus_intro.mid: -E -R50 -G060 -V090
|
||||||
|
mus_level_up.mid: -E -R50 -G012 -V090 -P5
|
||||||
|
mus_lilycove_museum.mid: -E -R50 -G020 -V080
|
||||||
|
mus_lilycove.mid: -E -R50 -G054 -V085
|
||||||
|
mus_link_contest_p1.mid: -E -R50 -G039 -V079
|
||||||
|
mus_link_contest_p2.mid: -E -R50 -G040 -V090
|
||||||
|
mus_link_contest_p3.mid: -E -R50 -G041 -V075
|
||||||
|
mus_link_contest_p4.mid: -E -R50 -G042 -V090
|
||||||
|
mus_littleroot_test.mid: -E -R50 -G034 -V099
|
||||||
|
mus_littleroot.mid: -E -R50 -G051 -V100
|
||||||
|
mus_move_deleted.mid: -E -R50 -G012 -V090 -P5
|
||||||
|
mus_mt_chimney.mid: -E -R50 -G052 -V078
|
||||||
|
mus_mt_pyre_exterior.mid: -E -R50 -G080 -V080
|
||||||
|
mus_mt_pyre.mid: -E -R50 -G078 -V088
|
||||||
|
mus_obtain_b_points.mid: -E -R50 -G103 -V090 -P5
|
||||||
|
mus_obtain_badge.mid: -E -R50 -G012 -V090 -P5
|
||||||
|
mus_obtain_berry.mid: -E -R50 -G012 -V090 -P5
|
||||||
|
mus_obtain_item.mid: -E -R50 -G012 -V090 -P5
|
||||||
|
mus_obtain_symbol.mid: -E -R50 -G103 -V100 -P5
|
||||||
|
mus_obtain_tmhm.mid: -E -R50 -G012 -V090 -P5
|
||||||
|
mus_oceanic_museum.mid: -E -R50 -G023 -V080
|
||||||
|
mus_oldale.mid: -E -R50 -G019 -V080
|
||||||
|
mus_petalburg_woods.mid: -E -R50 -G018 -V080
|
||||||
|
mus_petalburg.mid: -E -R50 -G015 -V080
|
||||||
|
mus_poke_center.mid: -E -R50 -G046 -V092
|
||||||
|
mus_poke_mart.mid: -E -R50 -G050 -V085
|
||||||
|
mus_rayquaza_appears.mid: -E -R50 -G109 -V090
|
||||||
|
mus_register_match_call.mid: -E -R50 -G105 -V090 -P5
|
||||||
|
mus_rg_berry_pick.mid: -E -R50 -G132 -V090
|
||||||
|
mus_rg_caught_intro.mid: -E -R50 -G179 -V094 -P5
|
||||||
|
mus_rg_caught.mid: -E -R50 -G170 -V100
|
||||||
|
mus_rg_celadon.mid: -E -R50 -G168 -V070
|
||||||
|
mus_rg_cinnabar.mid: -E -R50 -G138 -V090
|
||||||
|
mus_rg_credits.mid: -E -R50 -G149 -V090
|
||||||
|
mus_rg_cycling.mid: -E -R50 -G141 -V090
|
||||||
|
mus_rg_dex_rating.mid: -E -R50 -G175 -V070 -P5
|
||||||
|
mus_rg_encounter_boy.mid: -E -R50 -G144 -V090
|
||||||
|
mus_rg_encounter_deoxys.mid: -E -R50 -G184 -V079
|
||||||
|
mus_rg_encounter_girl.mid: -E -R50 -G143 -V051
|
||||||
|
mus_rg_encounter_gym_leader: -E -R50 -G144 -V090
|
||||||
|
mus_rg_encounter_rival.mid: -E -R50 -G174 -V079
|
||||||
|
mus_rg_encounter_rocket.mid: -E -R50 -G142 -V096
|
||||||
|
mus_rg_follow_me.mid: -E -R50 -G131 -V068
|
||||||
|
mus_rg_fuchsia.mid: -E -R50 -G167 -V090
|
||||||
|
mus_rg_game_corner.mid: -E -R50 -G132 -V090
|
||||||
|
mus_rg_game_freak.mid: -E -R50 -G181 -V075
|
||||||
|
mus_rg_gym.mid: -E -R50 -G134 -V090
|
||||||
|
mus_rg_hall_of_fame.mid: -E -R50 -G145 -V079
|
||||||
|
mus_rg_heal.mid: -E -R50 -G140 -V090
|
||||||
|
mus_rg_intro_fight.mid: -E -R50 -G136 -V090
|
||||||
|
mus_rg_jigglypuff.mid: -E -R50 -G135 -V068 -P5
|
||||||
|
mus_rg_lavender.mid: -E -R50 -G139 -V090
|
||||||
|
mus_rg_mt_moon.mid: -E -R50 -G147 -V090
|
||||||
|
mus_rg_mystery_gift.mid: -E -R50 -G183 -V100
|
||||||
|
mus_rg_net_center.mid: -E -R50 -G162 -V096
|
||||||
|
mus_rg_new_game_exit.mid: -E -R50 -G182 -V088
|
||||||
|
mus_rg_new_game_instruct.mid: -E -R50 -G182 -V085
|
||||||
|
mus_rg_new_game_intro.mid: -E -R50 -G182 -V088
|
||||||
|
mus_rg_oak_lab.mid: -E -R50 -G160 -V075
|
||||||
|
mus_rg_oak.mid: -E -R50 -G161 -V086
|
||||||
|
mus_rg_obtain_key_item.mid: -E -R50 -G178 -V077 -P5
|
||||||
|
mus_rg_pallet.mid: -E -R50 -G159 -V100
|
||||||
|
mus_rg_pewter.mid: -E -R50 -G173 -V084
|
||||||
|
mus_rg_photo.mid: -E -R50 -G180 -V100 -P5
|
||||||
|
mus_rg_poke_center.mid: -E -R50 -G162 -V096
|
||||||
|
mus_rg_poke_flute.mid: -E -R50 -G165 -V048 -P5
|
||||||
|
mus_rg_poke_jump.mid: -E -R50 -G132 -V090
|
||||||
|
mus_rg_poke_mansion.mid: -E -R50 -G148 -V090
|
||||||
|
mus_rg_poke_tower.mid: -E -R50 -G165 -V090
|
||||||
|
mus_rg_rival_exit.mid: -E -R50 -G174 -V079
|
||||||
|
mus_rg_rocket_hideout.mid: -E -R50 -G133 -V090
|
||||||
|
mus_rg_route1.mid: -E -R50 -G150 -V079
|
||||||
|
mus_rg_route3.mid: -E -R50 -G152 -V083
|
||||||
|
mus_rg_route11.mid: -E -R50 -G153 -V090
|
||||||
|
mus_rg_route24.mid: -E -R50 -G151 -V086
|
||||||
|
mus_rg_sevii_45.mid: -E -R50 -G188 -V084
|
||||||
|
mus_rg_sevii_67.mid: -E -R50 -G189 -V084
|
||||||
|
mus_rg_sevii_123.mid: -E -R50 -G173 -V084
|
||||||
|
mus_rg_sevii_cave.mid: -E -R50 -G147 -V090
|
||||||
|
mus_rg_sevii_dungeon.mid: -E -R50 -G146 -V090
|
||||||
|
mus_rg_sevii_route.mid: -E -R50 -G187 -V080
|
||||||
|
mus_rg_silph.mid: -E -R50 -G166 -V076
|
||||||
|
mus_rg_slow_pallet.mid: -E -R50 -G159 -V092
|
||||||
|
mus_rg_ss_anne.mid: -E -R50 -G163 -V090
|
||||||
|
mus_rg_surf.mid: -E -R50 -G164 -V071
|
||||||
|
mus_rg_teachy_tv_menu.mid: -E -R50 -G186 -V059
|
||||||
|
mus_rg_teachy_tv_show.mid: -E -R50 -G131 -V068
|
||||||
|
mus_rg_title.mid: -E -R50 -G137 -V090
|
||||||
|
mus_rg_trainer_tower.mid: -E -R50 -G134 -V090
|
||||||
|
mus_rg_union_room.mid: -E -R50 -G132 -V090
|
||||||
|
mus_rg_vermillion.mid: -E -R50 -G172 -V090
|
||||||
|
mus_rg_victory_gym_leader.mid: -E -R50 -G171 -V090
|
||||||
|
mus_rg_victory_road.mid: -E -R50 -G154 -V090
|
||||||
|
mus_rg_victory_trainer.mid: -E -R50 -G169 -V089
|
||||||
|
mus_rg_victory_wild.mid: -E -R50 -G170 -V090
|
||||||
|
mus_rg_viridian_forest.mid: -E -R50 -G146 -V090
|
||||||
|
mus_rg_vs_champion.mid: -E -R50 -G158 -V090
|
||||||
|
mus_rg_vs_deoxys.mid: -E -R50 -G185 -V080
|
||||||
|
mus_rg_vs_gym_leader.mid: -E -R50 -G155 -V090
|
||||||
|
mus_rg_vs_legend.mid: -E -R50 -G157 -V090
|
||||||
|
mus_rg_vs_mewtwo.mid: -E -R50 -G157 -V090
|
||||||
|
mus_rg_vs_trainer.mid: -E -R50 -G156 -V090
|
||||||
|
mus_rg_vs_wild.mid: -E -R50 -G157 -V090
|
||||||
|
mus_roulette.mid: -E -R50 -G038 -V080
|
||||||
|
mus_route101.mid: -E -R50 -G011 -V080
|
||||||
|
mus_route104.mid: -E -R50 -G047 -V097
|
||||||
|
mus_route110.mid: -E -R50 -G010 -V080
|
||||||
|
mus_route111.mid: -E -R50 -G055 -V076
|
||||||
|
mus_route113.mid: -E -R50 -G064 -V084
|
||||||
|
mus_route119.mid: -E -R50 -G048 -V096
|
||||||
|
mus_route120.mid: -E -R50 -G014 -V080
|
||||||
|
mus_route122.mid: -E -R50 -G021 -V080
|
||||||
|
mus_rustboro.mid: -E -R50 -G045 -V085
|
||||||
|
mus_safari_zone.mid: -E -R50 -G074 -V082
|
||||||
|
mus_sailing.mid: -E -R50 -G077 -V086
|
||||||
|
mus_school.mid: -E -R50 -G081 -V100
|
||||||
|
mus_sealed_chamber.mid: -E -R50 -G084 -V100
|
||||||
|
mus_slateport.mid: -E -R50 -G079 -V070
|
||||||
|
mus_slots_jackpot.mid: -E -R50 -G012 -V090 -P5
|
||||||
|
mus_slots_win.mid: -E -R50 -G012 -V090 -P5
|
||||||
|
mus_sootopolis.mid: -E -R50 -G091 -V062
|
||||||
|
mus_surf.mid: -E -R50 -G017 -V080
|
||||||
|
mus_title.mid: -E -R50 -G059 -V090
|
||||||
|
mus_too_bad.mid: -E -R50 -G012 -V090 -P5
|
||||||
|
mus_trick_house.mid: -E -R50 -G094 -V070
|
||||||
|
mus_underwater.mid: -E -R50 -G057 -V094
|
||||||
|
mus_verdanturf.mid: -E -R50 -G044 -V090
|
||||||
|
mus_victory_aqua_magma.mid: -E -R50 -G070 -V088
|
||||||
|
mus_victory_gym_leader.mid: -E -R50 -G024 -V080
|
||||||
|
mus_victory_league.mid: -E -R50 -G029 -V080
|
||||||
|
mus_victory_road.mid: -E -R50 -G075 -V076
|
||||||
|
mus_victory_trainer.mid: -E -R50 -G058 -V091
|
||||||
|
mus_victory_wild.mid: -E -R50 -G025 -V080
|
||||||
|
mus_vs_aqua_magma_leader.mid: -E -R50 -G126 -V080 -P1
|
||||||
|
mus_vs_aqua_magma.mid: -E -R50 -G118 -V080 -P1
|
||||||
|
mus_vs_champion.mid: -E -R50 -G121 -V080 -P1
|
||||||
|
mus_vs_elite_four.mid: -E -R50 -G125 -V080 -P1
|
||||||
|
mus_vs_frontier_brain.mid: -E -R50 -G115 -V090 -P1
|
||||||
|
mus_vs_gym_leader.mid: -E -R50 -G120 -V080 -P1
|
||||||
|
mus_vs_kyogre_groudon.mid: -E -R50 -G123 -V080 -P1
|
||||||
|
mus_vs_mew.mid: -E -R50 -G116 -V090
|
||||||
|
mus_vs_rayquaza.mid: -E -R50 -G114 -V080 -P1
|
||||||
|
mus_vs_regi.mid: -E -R50 -G122 -V080 -P1
|
||||||
|
mus_vs_rival.mid: -E -R50 -G124 -V080 -P1
|
||||||
|
mus_vs_trainer.mid: -E -R50 -G119 -V080 -P1
|
||||||
|
mus_vs_wild.mid: -E -R50 -G117 -V080 -P1
|
||||||
|
mus_weather_groudon.mid: -E -R50 -G090 -V050
|
||||||
|
ph_choice_blend.mid: -E -G130 -P4
|
||||||
|
ph_choice_held.mid: -E -G130 -P4
|
||||||
|
ph_choice_solo.mid: -E -G130 -P4
|
||||||
|
ph_cloth_blend.mid: -E -G130 -P4
|
||||||
|
ph_cloth_held.mid: -E -G130 -P4
|
||||||
|
ph_cloth_solo.mid: -E -G130 -P4
|
||||||
|
ph_cure_blend.mid: -E -G130 -P4
|
||||||
|
ph_cure_held.mid: -E -G130 -P4
|
||||||
|
ph_cure_solo.mid: -E -G130 -P4
|
||||||
|
ph_dress_blend.mid: -E -G130 -P4
|
||||||
|
ph_dress_held.mid: -E -G130 -P4
|
||||||
|
ph_dress_solo.mid: -E -G130 -P4
|
||||||
|
ph_face_blend.mid: -E -G130 -P4
|
||||||
|
ph_face_held.mid: -E -G130 -P4
|
||||||
|
ph_face_solo.mid: -E -G130 -P4
|
||||||
|
ph_fleece_blend.mid: -E -G130 -P4
|
||||||
|
ph_fleece_held.mid: -E -G130 -P4
|
||||||
|
ph_fleece_solo.mid: -E -G130 -P4
|
||||||
|
ph_foot_blend.mid: -E -G130 -P4
|
||||||
|
ph_foot_held.mid: -E -G130 -P4
|
||||||
|
ph_foot_solo.mid: -E -G130 -P4
|
||||||
|
ph_goat_blend.mid: -E -G130 -P4
|
||||||
|
ph_goat_held.mid: -E -G130 -P4
|
||||||
|
ph_goat_solo.mid: -E -G130 -P4
|
||||||
|
ph_goose_blend.mid: -E -G130 -P4
|
||||||
|
ph_goose_held.mid: -E -G130 -P4
|
||||||
|
ph_goose_solo.mid: -E -G130 -P4
|
||||||
|
ph_kit_blend.mid: -E -G130 -P4
|
||||||
|
ph_kit_held.mid: -E -G130 -P4
|
||||||
|
ph_kit_solo.mid: -E -G130 -P4
|
||||||
|
ph_lot_blend.mid: -E -G130 -P4
|
||||||
|
ph_lot_held.mid: -E -G130 -P4
|
||||||
|
ph_lot_solo.mid: -E -G130 -P4
|
||||||
|
ph_mouth_blend.mid: -E -G130 -P4
|
||||||
|
ph_mouth_held.mid: -E -G130 -P4
|
||||||
|
ph_mouth_solo.mid: -E -G130 -P4
|
||||||
|
ph_nurse_blend.mid: -E -G130 -P4
|
||||||
|
ph_nurse_held.mid: -E -G130 -P4
|
||||||
|
ph_nurse_solo.mid: -E -G130 -P4
|
||||||
|
ph_price_blend.mid: -E -G130 -P4
|
||||||
|
ph_price_held.mid: -E -G130 -P4
|
||||||
|
ph_price_solo.mid: -E -G130 -P4
|
||||||
|
ph_strut_blend.mid: -E -G130 -P4
|
||||||
|
ph_strut_held.mid: -E -G130 -P4
|
||||||
|
ph_strut_solo.mid: -E -G130 -P4
|
||||||
|
ph_thought_blend.mid: -E -G130 -P4
|
||||||
|
ph_thought_held.mid: -E -G130 -P4
|
||||||
|
ph_thought_solo.mid: -E -G130 -P4
|
||||||
|
ph_trap_blend.mid: -E -G130 -P4
|
||||||
|
ph_trap_held.mid: -E -G130 -P4
|
||||||
|
ph_trap_solo.mid: -E -G130 -P4
|
||||||
|
se_a.mid: -E -R50 -G128 -V095 -P4
|
||||||
|
se_applause.mid: -E -R50 -G128 -V100 -P5
|
||||||
|
se_arena_timeup1.mid: -E -R50 -G129 -P5
|
||||||
|
se_arena_timeup2.mid: -E -R50 -G129 -P5
|
||||||
|
se_ball_bounce_1.mid: -E -R50 -G128 -V100 -P4
|
||||||
|
se_ball_bounce_2.mid: -E -R50 -G128 -V100 -P4
|
||||||
|
se_ball_bounce_3.mid: -E -R50 -G128 -V100 -P4
|
||||||
|
se_ball_bounce_4.mid: -E -R50 -G128 -V100 -P4
|
||||||
|
se_ball_open.mid: -E -R50 -G127 -V100 -P5
|
||||||
|
se_ball_throw.mid: -E -R50 -G128 -V120 -P5
|
||||||
|
se_ball_trade.mid: -E -R50 -G127 -V100 -P5
|
||||||
|
se_ball_tray_ball.mid: -E -R50 -G128 -V110 -P5
|
||||||
|
se_ball_tray_enter.mid: -E -R50 -G128 -V110 -P5
|
||||||
|
se_ball_tray_exit.mid: -E -R50 -G127 -V100 -P5
|
||||||
|
se_ball.mid: -E -R50 -G127 -V070 -P4
|
||||||
|
se_balloon_blue.mid: -E -R50 -G128 -V105 -P4
|
||||||
|
se_balloon_red.mid: -E -R50 -G128 -V105 -P4
|
||||||
|
se_balloon_yellow.mid: -E -R50 -G128 -V105 -P4
|
||||||
|
se_bang.mid: -E -R50 -G128 -V110 -P4
|
||||||
|
se_berry_blender.mid: -E -R50 -G128 -V090 -P4
|
||||||
|
se_bike_bell.mid: -E -R50 -G128 -V090 -P4
|
||||||
|
se_bike_hop.mid: -E -R50 -G127 -V090 -P4
|
||||||
|
se_boo.mid: -E -R50 -G127 -V110 -P4
|
||||||
|
se_breakable_door.mid: -E -R50 -G128 -V110 -P4
|
||||||
|
se_bridge_walk.mid: -E -R50 -G128 -V095 -P4
|
||||||
|
se_card.mid: -E -R50 -G127 -V100 -P4
|
||||||
|
se_click.mid: -E -R50 -G127 -V110 -P4
|
||||||
|
se_contest_condition_lose.mid: -E -R50 -G127 -V110 -P4
|
||||||
|
se_contest_curtain_fall.mid: -E -R50 -G128 -V070 -P5
|
||||||
|
se_contest_curtain_rise.mid: -E -R50 -G128 -V070 -P5
|
||||||
|
se_contest_heart.mid: -E -R50 -G128 -V090 -P5
|
||||||
|
se_contest_icon_change.mid: -E -R50 -G128 -V110 -P5
|
||||||
|
se_contest_icon_clear.mid: -E -R50 -G128 -V090 -P5
|
||||||
|
se_contest_mons_turn.mid: -E -R50 -G128 -V090 -P5
|
||||||
|
se_contest_place.mid: -E -R50 -G127 -V110 -P4
|
||||||
|
se_dex_search.mid: -E -R50 -G127 -v100 -P5
|
||||||
|
se_ding_dong.mid: -E -R50 -G127 -V090 -P5
|
||||||
|
se_door.mid: -E -R50 -G127 -V080 -P5
|
||||||
|
se_downpour_stop.mid: -E -R50 -G128 -V100 -P2
|
||||||
|
se_downpour.mid: -E -R50 -G128 -V100 -P2
|
||||||
|
se_e.mid: -E -R50 -G128 -V120 -P4
|
||||||
|
se_effective.mid: -E -R50 -G127 -V110 -P5
|
||||||
|
se_egg_hatch.mid: -E -R50 -G128 -V120 -P5
|
||||||
|
se_elevator.mid: -E -R50 -G128 -V100 -P4
|
||||||
|
se_escalator.mid: -E -R50 -G128 -V100 -P4
|
||||||
|
se_exit.mid: -E -R50 -G127 -V120 -P5
|
||||||
|
se_exp_max.mid: -E -R50 -G128 -V094 -P5
|
||||||
|
se_exp.mid: -E -R50 -G127 -V080 -P5
|
||||||
|
se_failure.mid: -E -R50 -G127 -V120 -P4
|
||||||
|
se_faint.mid: -E -R50 -G127 -V110 -P5
|
||||||
|
se_fall.mid: -E -R50 -G128 -V110 -P4
|
||||||
|
se_field_poison.mid: -E -R50 -G127 -V110 -P5
|
||||||
|
se_flee.mid: -E -R50 -G127 -V090 -P5
|
||||||
|
se_fu_zaku.mid: -E -R50 -G127 -V120 -P4
|
||||||
|
se_glass_flute.mid: -E -R50 -G128 -V105 -P5
|
||||||
|
se_i.mid: -E -R50 -G128 -V120 -P4
|
||||||
|
se_ice_break.mid: -E -R50 -G128 -V100 -P4
|
||||||
|
se_ice_crack.mid: -E -R50 -G127 -V100 -P4
|
||||||
|
se_ice_stairs.mid: -E -R50 -G128 -V090 -P4
|
||||||
|
se_intro_blast.mid: -E -R50 -G127 -V100 -P5
|
||||||
|
se_itemfinder.mid: -E -R50 -G127 -V090 -P5
|
||||||
|
se_lavaridge_fall_warp.mid: -E -R50 -G127 -P4
|
||||||
|
se_ledge.mid: -E -R50 -G127 -V100 -P4
|
||||||
|
se_low_health.mid: -E -R50 -G127 -V100 -P3
|
||||||
|
se_m_bind.mid: -E -R50 -G128 -V100 -P4
|
||||||
|
se_m_comet_punch.mid: -E -R50 -G128 -V120 -P4
|
||||||
|
se_m_cut.mid: -E -R50 -G128 -V120 -P4
|
||||||
|
se_m_double_slap.mid: -E -R50 -G128 -V110 -P4
|
||||||
|
se_m_fire_punch.mid: -E -R50 -G128 -V110 -P4
|
||||||
|
se_m_fly.mid: -E -R50 -G128 -V110 -P4
|
||||||
|
se_m_gust.mid: -E -R50 -G128 -V110 -P4
|
||||||
|
se_m_gust2.mid: -E -R50 -G128 -V110 -P4
|
||||||
|
se_m_headbutt.mid: -E -R50 -G128 -V110 -P4
|
||||||
|
se_m_horn_attack.mid: -E -R50 -G128 -V110 -P4
|
||||||
|
se_m_jump_kick.mid: -E -R50 -G128 -V110 -P4
|
||||||
|
se_m_leer.mid: -E -R50 -G128 -V110 -P4
|
||||||
|
se_m_mega_kick.mid: -E -R50 -G128 -V090 -P4
|
||||||
|
se_m_mega_kick2.mid: -E -R50 -G128 -V110 -P4
|
||||||
|
se_m_pay_day.mid: -E -R50 -G128 -V095 -P4
|
||||||
|
se_m_razor_wind.mid: -E -R50 -G128 -V110 -P4
|
||||||
|
se_m_razor_wind2.mid: -E -R50 -G128 -V090 -P4
|
||||||
|
se_m_sand_attack.mid: -E -R50 -G128 -V110 -P4
|
||||||
|
se_m_scratch.mid: -E -R50 -G128 -V110 -P4
|
||||||
|
se_m_swords_dance.mid: -E -R50 -G128 -V100 -P4
|
||||||
|
se_m_tail_whip.mid: -E -R50 -G128 -V110 -P4
|
||||||
|
se_m_take_down.mid: -E -R50 -G128 -V105 -P4
|
||||||
|
se_m_vicegrip.mid: -E -R50 -G128 -V110 -P4
|
||||||
|
se_m_wing_attack.mid: -E -R50 -G128 -V105 -P4
|
||||||
|
se_mud_ball.mid: -E -R50 -G128 -V110 -P4
|
||||||
|
se_mugshot.mid: -E -R50 -G128 -V090 -P5
|
||||||
|
se_n.mid: -E -R50 -G128 -P4
|
||||||
|
se_not_effective.mid: -E -R50 -G127 -V110 -P5
|
||||||
|
se_note_a.mid: -E -R50 -G128 -V110 -P4
|
||||||
|
se_note_b.mid: -E -R50 -G128 -V110 -P4
|
||||||
|
se_note_c_high.mid: -E -R50 -G128 -V110 -P4
|
||||||
|
se_note_c.mid: -E -R50 -G128 -V110 -P4
|
||||||
|
se_note_d.mid: -E -R50 -G128 -V110 -P4
|
||||||
|
se_note_e.mid: -E -R50 -G128 -V110 -P4
|
||||||
|
se_note_f.mid: -E -R50 -G128 -V110 -P4
|
||||||
|
se_note_g.mid: -E -R50 -G128 -V110 -P4
|
||||||
|
se_o.mid: -E -R50 -G128 -V120 -P4
|
||||||
|
se_orb.mid: -E -R50 -G128 -V100 -P5
|
||||||
|
se_pc_login.mid: -E -R50 -G127 -V100 -P5
|
||||||
|
se_pc_off.mid: -E -R50 -G127 -V100 -P5
|
||||||
|
se_pc_on.mid: -E -R50 -G127 -V100 -P5
|
||||||
|
se_pike_curtain_close.mid: -E -R50 -G129 -P5
|
||||||
|
se_pike_curtain_open.mid: -E -R50 -G129 -P5
|
||||||
|
se_pin.mid: -E -R50 -G127 -V060 -P4
|
||||||
|
se_pokenav_call.mid: -E -R50 -G129 -V120 -P5
|
||||||
|
se_pokenav_hang_up.mid: -E -R50 -G129 -V110 -P5
|
||||||
|
se_pokenav_off.mid: -E -R50 -G127 -V100 -P5
|
||||||
|
se_pokenav_on.mid: -E -R50 -G127 -V100 -P5
|
||||||
|
se_puddle.mid: -E -R50 -G128 -V020 -P4
|
||||||
|
se_rain_stop.mid: -E -R50 -G128 -V080 -P2
|
||||||
|
se_rain.mid: -E -R50 -G128 -V080 -P2
|
||||||
|
se_repel.mid: -E -R50 -G127 -V090 -P4
|
||||||
|
se_rg_bag_cursor.mid: -E -R50 -G129 -P5
|
||||||
|
se_rg_bag_pocket.mid: -E -R50 -G129 -P5
|
||||||
|
se_rg_ball_click.mid: -E -R50 -G129 -V100 -P5
|
||||||
|
se_rg_card_flip.mid: -E -R50 -G129 -P5
|
||||||
|
se_rg_card_flipping.mid: -E -R50 -G129 -P5
|
||||||
|
se_rg_card_open.mid: -E -R50 -G129 -V112 -P5
|
||||||
|
se_rg_deoxys_move.mid: -E -R50 -G129 -V080 -P5
|
||||||
|
se_rg_door.mid: -E -R50 -G129 -V100 -P5
|
||||||
|
se_rg_help_close.mid: -E -R50 -G129 -V095 -P5
|
||||||
|
se_rg_help_error.mid: -E -R50 -G129 -V125 -P5
|
||||||
|
se_rg_help_open.mid: -E -R50 -G129 -V096 -P5
|
||||||
|
se_rg_poke_jump_failure.mid: -E -R50 -G127 -P5
|
||||||
|
se_rg_poke_jump_success.mid: -E -R50 -G128 -V110 -P5
|
||||||
|
se_rg_shop.mid: -E -R50 -G129 -V080 -P5
|
||||||
|
se_rg_ss_anne_horn.mid: -E -R50 -G129 -V096 -P5
|
||||||
|
se_rotating_gate.mid: -E -R50 -G128 -V090 -P4
|
||||||
|
se_roulette_ball.mid: -E -R50 -G128 -V110 -P2
|
||||||
|
se_roulette_ball2.mid: -E -R50 -G128 -V110 -P2
|
||||||
|
se_save.mid: -E -R50 -G128 -V080 -P5
|
||||||
|
se_select.mid: -E -R50 -G127 -V080 -P5
|
||||||
|
se_shiny.mid: -E -R50 -G128 -V095 -P5
|
||||||
|
se_ship.mid: -E -R50 -G127 -V075 -P4
|
||||||
|
se_shop.mid: -E -R50 -G127 -V090 -P5
|
||||||
|
se_sliding_door.mid: -E -R50 -G128 -V095 -P4
|
||||||
|
se_success.mid: -E -R50 -G127 -V080 -P4
|
||||||
|
se_sudowoodo_shake.mid: -E -R50 -G129 -V077 -P5
|
||||||
|
se_super_effective.mid: -E -R50 -G127 -V110 -P5
|
||||||
|
se_switch.mid: -E -R50 -G127 -V100 -P4
|
||||||
|
se_taillow_wing_flap.mid: -E -R50 -G128 -V105 -P5
|
||||||
|
se_thunder.mid: -E -R50 -G128 -V110 -P3
|
||||||
|
se_thunder2.mid: -E -R50 -G128 -V110 -P3
|
||||||
|
se_thunderstorm_stop.mid: -E -R50 -G128 -V080 -P2
|
||||||
|
se_thunderstorm.mid: -E -R50 -G128 -V080 -P2
|
||||||
|
se_truck_door.mid: -E -R50 -G128 -V110 -P4
|
||||||
|
se_truck_move.mid: -E -R50 -G128 -P4
|
||||||
|
se_truck_stop.mid: -E -R50 -G128 -P4
|
||||||
|
se_truck_unload.mid: -E -R50 -G127 -P4
|
||||||
|
se_u.mid: -E -R50 -G128 -P4
|
||||||
|
se_unlock.mid: -E -R50 -G128 -V100 -P4
|
||||||
|
se_use_item.mid: -E -R50 -G127 -V100 -P5
|
||||||
|
se_vend.mid: -E -R50 -G128 -V110 -P4
|
||||||
|
se_warp_in.mid: -E -R50 -G127 -V090 -P4
|
||||||
|
se_warp_out.mid: -E -R50 -G127 -V090 -P4
|
|
@ -14,7 +14,7 @@
|
||||||
#define FSP_ON 0x01
|
#define FSP_ON 0x01
|
||||||
#define FSP_START 0x02
|
#define FSP_START 0x02
|
||||||
|
|
||||||
LINK_MANAGER lman;
|
COMMON_DATA LINK_MANAGER lman = {0};
|
||||||
|
|
||||||
static void rfu_LMAN_clearVariables(void);
|
static void rfu_LMAN_clearVariables(void);
|
||||||
static void rfu_LMAN_settingPCSWITCH(u32 rand);
|
static void rfu_LMAN_settingPCSWITCH(u32 rand);
|
||||||
|
|
|
@ -6,16 +6,16 @@ static u16 sTimerCount;
|
||||||
static vu16 *sTimerReg;
|
static vu16 *sTimerReg;
|
||||||
static u16 sSavedIme;
|
static u16 sSavedIme;
|
||||||
|
|
||||||
u8 gFlashTimeoutFlag;
|
COMMON_DATA u8 gFlashTimeoutFlag = 0;
|
||||||
u8 (*PollFlashStatus)(u8 *);
|
COMMON_DATA u8 (*PollFlashStatus)(u8 *) = NULL;
|
||||||
u16 (*WaitForFlashWrite)(u8 phase, u8 *addr, u8 lastData);
|
COMMON_DATA u16 (*WaitForFlashWrite)(u8 phase, u8 *addr, u8 lastData) = NULL;
|
||||||
u16 (*ProgramFlashSector)(u16 sectorNum, u8 *src);
|
COMMON_DATA u16 (*ProgramFlashSector)(u16 sectorNum, u8 *src) = NULL;
|
||||||
const struct FlashType *gFlash;
|
COMMON_DATA const struct FlashType *gFlash = NULL;
|
||||||
u16 (*ProgramFlashByte)(u16 sectorNum, u32 offset, u8 data);
|
COMMON_DATA u16 (*ProgramFlashByte)(u16 sectorNum, u32 offset, u8 data) = NULL;
|
||||||
u16 gFlashNumRemainingBytes;
|
COMMON_DATA u16 gFlashNumRemainingBytes = 0;
|
||||||
u16 (*EraseFlashChip)();
|
COMMON_DATA u16 (*EraseFlashChip)() = NULL;
|
||||||
u16 (*EraseFlashSector)(u16 sectorNum);
|
COMMON_DATA u16 (*EraseFlashSector)(u16 sectorNum) = 0;
|
||||||
const u16 *gFlashMaxTime;
|
COMMON_DATA const u16 *gFlashMaxTime = NULL;
|
||||||
|
|
||||||
void SetReadFlash1(u16 *dest);
|
void SetReadFlash1(u16 *dest);
|
||||||
|
|
||||||
|
|
|
@ -75,9 +75,9 @@ struct ApprenticeQuestionData
|
||||||
};
|
};
|
||||||
|
|
||||||
// IWRAM common
|
// IWRAM common
|
||||||
struct ApprenticePartyMovesData *gApprenticePartyMovesData;
|
COMMON_DATA struct ApprenticePartyMovesData *gApprenticePartyMovesData = NULL;
|
||||||
struct ApprenticeQuestionData *gApprenticeQuestionData;
|
COMMON_DATA struct ApprenticeQuestionData *gApprenticeQuestionData = NULL;
|
||||||
void (*gApprenticeFunc)(void);
|
COMMON_DATA void (*gApprenticeFunc)(void) = NULL;
|
||||||
|
|
||||||
// This file's functions.
|
// This file's functions.
|
||||||
static u16 GetRandomAlternateMove(u8 monId);
|
static u16 GetRandomAlternateMove(u8 monId);
|
||||||
|
|
|
@ -23,9 +23,9 @@
|
||||||
#include "constants/rgb.h"
|
#include "constants/rgb.h"
|
||||||
|
|
||||||
// iwram
|
// iwram
|
||||||
u32 gMonShrinkDuration;
|
COMMON_DATA u32 gMonShrinkDuration = 0;
|
||||||
u16 gMonShrinkDelta;
|
COMMON_DATA u16 gMonShrinkDelta = 0;
|
||||||
u16 gMonShrinkDistance;
|
COMMON_DATA u16 gMonShrinkDistance = 0;
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
BALL_ROLL_1,
|
BALL_ROLL_1,
|
||||||
|
|
|
@ -30,9 +30,9 @@ static EWRAM_DATA u8 sLinkSendTaskId = 0;
|
||||||
static EWRAM_DATA u8 sLinkReceiveTaskId = 0;
|
static EWRAM_DATA u8 sLinkReceiveTaskId = 0;
|
||||||
EWRAM_DATA struct UnusedControllerStruct gUnusedControllerStruct = {}; // Debug? Unused code that writes to it, never read
|
EWRAM_DATA struct UnusedControllerStruct gUnusedControllerStruct = {}; // Debug? Unused code that writes to it, never read
|
||||||
|
|
||||||
void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(u32 battler);
|
COMMON_DATA void (*gBattlerControllerFuncs[MAX_BATTLERS_COUNT])(u32 battler) = {0};
|
||||||
u8 gBattleControllerData[MAX_BATTLERS_COUNT]; // Used by the battle controllers to store misc sprite/task IDs for each battler
|
COMMON_DATA u8 gBattleControllerData[MAX_BATTLERS_COUNT] = {0}; // Used by the battle controllers to store misc sprite/task IDs for each battler
|
||||||
void (*gBattlerControllerEndFuncs[MAX_BATTLERS_COUNT])(u32 battler); // Controller's buffer complete function for each battler
|
COMMON_DATA void (*gBattlerControllerEndFuncs[MAX_BATTLERS_COUNT])(u32 battler) = {0}; // Controller's buffer complete function for each battler
|
||||||
|
|
||||||
static void CreateTasksForSendRecvLinkBuffers(void);
|
static void CreateTasksForSendRecvLinkBuffers(void);
|
||||||
static void InitLinkBtlControllers(void);
|
static void InitLinkBtlControllers(void);
|
||||||
|
|
|
@ -256,7 +256,7 @@ static struct FactorySelectScreen *sFactorySelectScreen;
|
||||||
static void (*sSwap_CurrentOptionFunc)(u8 taskId);
|
static void (*sSwap_CurrentOptionFunc)(u8 taskId);
|
||||||
static struct FactorySwapScreen *sFactorySwapScreen;
|
static struct FactorySwapScreen *sFactorySwapScreen;
|
||||||
|
|
||||||
u8 (*gFactorySelect_CurrentOptionFunc)(void);
|
COMMON_DATA u8 (*gFactorySelect_CurrentOptionFunc)(void) = NULL;
|
||||||
|
|
||||||
static const u16 sPokeballGray_Pal[] = INCBIN_U16("graphics/battle_frontier/factory_screen/pokeball_gray.gbapal");
|
static const u16 sPokeballGray_Pal[] = INCBIN_U16("graphics/battle_frontier/factory_screen/pokeball_gray.gbapal");
|
||||||
static const u16 sPokeballSelected_Pal[] = INCBIN_U16("graphics/battle_frontier/factory_screen/pokeball_selected.gbapal");
|
static const u16 sPokeballSelected_Pal[] = INCBIN_U16("graphics/battle_frontier/factory_screen/pokeball_selected.gbapal");
|
||||||
|
|
|
@ -235,13 +235,13 @@ EWRAM_DATA u8 gPartyCriticalHits[PARTY_SIZE] = {0};
|
||||||
EWRAM_DATA static u8 sTriedEvolving = 0;
|
EWRAM_DATA static u8 sTriedEvolving = 0;
|
||||||
EWRAM_DATA u8 gCategoryIconSpriteId = 0;
|
EWRAM_DATA u8 gCategoryIconSpriteId = 0;
|
||||||
|
|
||||||
void (*gPreBattleCallback1)(void);
|
COMMON_DATA void (*gPreBattleCallback1)(void) = NULL;
|
||||||
void (*gBattleMainFunc)(void);
|
COMMON_DATA void (*gBattleMainFunc)(void) = NULL;
|
||||||
struct BattleResults gBattleResults;
|
COMMON_DATA struct BattleResults gBattleResults = {0};
|
||||||
u8 gLeveledUpInBattle;
|
COMMON_DATA u8 gLeveledUpInBattle = 0;
|
||||||
u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT];
|
COMMON_DATA u8 gHealthboxSpriteIds[MAX_BATTLERS_COUNT] = {0};
|
||||||
u8 gMultiUsePlayerCursor;
|
COMMON_DATA u8 gMultiUsePlayerCursor = 0;
|
||||||
u8 gNumberOfMovesToChoose;
|
COMMON_DATA u8 gNumberOfMovesToChoose = 0;
|
||||||
|
|
||||||
static const struct ScanlineEffectParams sIntroScanlineParams16Bit =
|
static const struct ScanlineEffectParams sIntroScanlineParams16Bit =
|
||||||
{
|
{
|
||||||
|
|
|
@ -45,7 +45,7 @@ EWRAM_DATA const struct BattleFrontierTrainer *gFacilityTrainers = NULL;
|
||||||
EWRAM_DATA const struct TrainerMon *gFacilityTrainerMons = NULL;
|
EWRAM_DATA const struct TrainerMon *gFacilityTrainerMons = NULL;
|
||||||
|
|
||||||
// IWRAM common
|
// IWRAM common
|
||||||
u16 gFrontierTempParty[MAX_FRONTIER_PARTY_SIZE];
|
COMMON_DATA u16 gFrontierTempParty[MAX_FRONTIER_PARTY_SIZE] = {0};
|
||||||
|
|
||||||
// This file's functions.
|
// This file's functions.
|
||||||
static void InitTowerChallenge(void);
|
static void InitTowerChallenge(void);
|
||||||
|
|
|
@ -246,7 +246,7 @@ static s16 sPokeblockPresentFlavors[FLAVOR_COUNT + 1];
|
||||||
static s16 sDebug_MaxRPMStage;
|
static s16 sDebug_MaxRPMStage;
|
||||||
static s16 sDebug_GameTimeStage;
|
static s16 sDebug_GameTimeStage;
|
||||||
|
|
||||||
u8 gInGameOpponentsNo;
|
COMMON_DATA u8 gInGameOpponentsNo = 0;
|
||||||
|
|
||||||
static const u16 sBlenderCenter_Pal[] = INCBIN_U16("graphics/berry_blender/center.gbapal");
|
static const u16 sBlenderCenter_Pal[] = INCBIN_U16("graphics/berry_blender/center.gbapal");
|
||||||
static const u8 sBlenderCenter_Tilemap[] = INCBIN_U8("graphics/berry_blender/center_map.bin");
|
static const u8 sBlenderCenter_Tilemap[] = INCBIN_U8("graphics/berry_blender/center_map.bin");
|
||||||
|
|
|
@ -38,7 +38,7 @@ static struct BgControl sGpuBgConfigs;
|
||||||
static struct BgConfig2 sGpuBgConfigs2[NUM_BACKGROUNDS];
|
static struct BgConfig2 sGpuBgConfigs2[NUM_BACKGROUNDS];
|
||||||
static u32 sDmaBusyBitfield[NUM_BACKGROUNDS];
|
static u32 sDmaBusyBitfield[NUM_BACKGROUNDS];
|
||||||
|
|
||||||
u32 gWindowTileAutoAllocEnabled;
|
COMMON_DATA u32 gWindowTileAutoAllocEnabled = 0;
|
||||||
|
|
||||||
static const struct BgConfig sZeroedBgControlStruct = { 0 };
|
static const struct BgConfig sZeroedBgControlStruct = { 0 };
|
||||||
|
|
|
@ -880,8 +880,12 @@ static void CreateCableCarSprites(void)
|
||||||
// 1/64 chance for an NPC to appear hiking on the ground below the Cable Car
|
// 1/64 chance for an NPC to appear hiking on the ground below the Cable Car
|
||||||
if ((rval % 64) == 0)
|
if ((rval % 64) == 0)
|
||||||
{
|
{
|
||||||
// Unclear if this was intentional, but the - 1 in the below ARRAY_COUNT means the Zigzagoon is never used
|
// BUGFIX: The - 1 in the below ARRAY_COUNT means the Zigzagoon is never used
|
||||||
|
#ifdef BUGFIX
|
||||||
|
spriteId = CreateObjectGraphicsSprite(hikerGraphicsIds[rval % ARRAY_COUNT(hikerGraphicsIds)], hikerCallbacks[GOING_DOWN], hikerCoords[GOING_DOWN][0], hikerCoords[GOING_DOWN][1], 106);
|
||||||
|
#else
|
||||||
spriteId = CreateObjectGraphicsSprite(hikerGraphicsIds[rval % (ARRAY_COUNT(hikerGraphicsIds) - 1)], hikerCallbacks[GOING_DOWN], hikerCoords[GOING_DOWN][0], hikerCoords[GOING_DOWN][1], 106);
|
spriteId = CreateObjectGraphicsSprite(hikerGraphicsIds[rval % (ARRAY_COUNT(hikerGraphicsIds) - 1)], hikerCallbacks[GOING_DOWN], hikerCoords[GOING_DOWN][0], hikerCoords[GOING_DOWN][1], 106);
|
||||||
|
#endif
|
||||||
if (spriteId != MAX_SPRITES)
|
if (spriteId != MAX_SPRITES)
|
||||||
{
|
{
|
||||||
gSprites[spriteId].oam.priority = 2;
|
gSprites[spriteId].oam.priority = 2;
|
||||||
|
|
|
@ -358,7 +358,7 @@ EWRAM_DATA bool8 gCurContestWinnerIsForArtist = 0;
|
||||||
EWRAM_DATA u8 gCurContestWinnerSaveIdx = 0;
|
EWRAM_DATA u8 gCurContestWinnerSaveIdx = 0;
|
||||||
|
|
||||||
// IWRAM common vars.
|
// IWRAM common vars.
|
||||||
rng_value_t gContestRngValue;
|
COMMON_DATA rng_value_t gContestRngValue = {0};
|
||||||
|
|
||||||
extern const u8 gText_LinkStandby4[];
|
extern const u8 gText_LinkStandby4[];
|
||||||
extern const u8 gText_BDot[];
|
extern const u8 gText_BDot[];
|
||||||
|
|
|
@ -21,10 +21,10 @@
|
||||||
#include "window.h"
|
#include "window.h"
|
||||||
#include "constants/rgb.h"
|
#include "constants/rgb.h"
|
||||||
|
|
||||||
u16 (*gContestMonPixels)[][32];
|
COMMON_DATA u16 (*gContestMonPixels)[][32] = {0};
|
||||||
struct ImageProcessingContext gImageProcessingContext;
|
COMMON_DATA struct ImageProcessingContext gImageProcessingContext = {0};
|
||||||
struct ContestWinner *gContestPaintingWinner;
|
COMMON_DATA struct ContestWinner *gContestPaintingWinner = {0};
|
||||||
u16 *gContestPaintingMonPalette;
|
COMMON_DATA u16 *gContestPaintingMonPalette = NULL;
|
||||||
|
|
||||||
static u8 sHoldState;
|
static u8 sHoldState;
|
||||||
static u16 sMosaicVal;
|
static u16 sMosaicVal;
|
||||||
|
|
|
@ -40,7 +40,10 @@ struct EReaderData
|
||||||
|
|
||||||
static void Task_EReader(u8);
|
static void Task_EReader(u8);
|
||||||
|
|
||||||
struct EReaderData gEReaderData;
|
// This belongs in COMMON somewhere between party_menu and ereader_screen, but it's unused so it's unclear where.
|
||||||
|
COMMON_DATA UNUSED u8 gUnknownSpace[64] = {0};
|
||||||
|
|
||||||
|
COMMON_DATA struct EReaderData gEReaderData = {0};
|
||||||
|
|
||||||
extern const u8 gMultiBootProgram_EReader_Start[];
|
extern const u8 gMultiBootProgram_EReader_Start[];
|
||||||
extern const u8 gMultiBootProgram_EReader_End[];
|
extern const u8 gMultiBootProgram_EReader_End[];
|
||||||
|
|
|
@ -47,7 +47,7 @@ struct EvoInfo
|
||||||
static EWRAM_DATA struct EvoInfo *sEvoStructPtr = NULL;
|
static EWRAM_DATA struct EvoInfo *sEvoStructPtr = NULL;
|
||||||
static EWRAM_DATA u16 *sBgAnimPal = NULL;
|
static EWRAM_DATA u16 *sBgAnimPal = NULL;
|
||||||
|
|
||||||
void (*gCB2_AfterEvolution)(void);
|
COMMON_DATA void (*gCB2_AfterEvolution)(void) = NULL;
|
||||||
|
|
||||||
#define sEvoCursorPos gBattleCommunication[1] // when learning a new move
|
#define sEvoCursorPos gBattleCommunication[1] // when learning a new move
|
||||||
#define sEvoGraphicsTaskId gBattleCommunication[2]
|
#define sEvoGraphicsTaskId gBattleCommunication[2]
|
||||||
|
|
|
@ -39,9 +39,9 @@ static s16 sVerticalCameraPan;
|
||||||
static bool8 sBikeCameraPanFlag;
|
static bool8 sBikeCameraPanFlag;
|
||||||
static void (*sFieldCameraPanningCallback)(void);
|
static void (*sFieldCameraPanningCallback)(void);
|
||||||
|
|
||||||
struct CameraObject gFieldCamera;
|
COMMON_DATA struct CameraObject gFieldCamera = {0};
|
||||||
u16 gTotalCameraPixelOffsetY;
|
COMMON_DATA u16 gTotalCameraPixelOffsetY = 0;
|
||||||
u16 gTotalCameraPixelOffsetX;
|
COMMON_DATA u16 gTotalCameraPixelOffsetX = 0;
|
||||||
|
|
||||||
static void ResetCameraOffset(struct FieldCameraOffset *cameraOffset)
|
static void ResetCameraOffset(struct FieldCameraOffset *cameraOffset)
|
||||||
{
|
{
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
static EWRAM_DATA u8 sWildEncounterImmunitySteps = 0;
|
static EWRAM_DATA u8 sWildEncounterImmunitySteps = 0;
|
||||||
static EWRAM_DATA u16 sPrevMetatileBehavior = 0;
|
static EWRAM_DATA u16 sPrevMetatileBehavior = 0;
|
||||||
|
|
||||||
u8 gSelectedObjectEvent;
|
COMMON_DATA u8 gSelectedObjectEvent = 0;
|
||||||
|
|
||||||
static void GetPlayerPosition(struct MapPosition *);
|
static void GetPlayerPosition(struct MapPosition *);
|
||||||
static void GetInFrontOfPlayerPosition(struct MapPosition *);
|
static void GetInFrontOfPlayerPosition(struct MapPosition *);
|
||||||
|
|
|
@ -93,7 +93,11 @@ static void Task_TryFieldPoisonWhiteOut(u8 taskId)
|
||||||
if (AllMonsFainted())
|
if (AllMonsFainted())
|
||||||
{
|
{
|
||||||
// Battle facilities have their own white out script to handle the challenge loss
|
// Battle facilities have their own white out script to handle the challenge loss
|
||||||
|
#ifdef BUGFIX
|
||||||
|
if (InBattlePyramid() || InBattlePike() || InTrainerHillChallenge())
|
||||||
|
#else
|
||||||
if (InBattlePyramid() | InBattlePike() || InTrainerHillChallenge())
|
if (InBattlePyramid() | InBattlePike() || InTrainerHillChallenge())
|
||||||
|
#endif
|
||||||
gSpecialVar_Result = FLDPSN_FRONTIER_WHITEOUT;
|
gSpecialVar_Result = FLDPSN_FRONTIER_WHITEOUT;
|
||||||
else
|
else
|
||||||
gSpecialVar_Result = FLDPSN_WHITEOUT;
|
gSpecialVar_Result = FLDPSN_WHITEOUT;
|
||||||
|
|
|
@ -96,7 +96,7 @@ static EWRAM_DATA u8 sFrontierExchangeCorner_ItemIconWindowId = 0;
|
||||||
static EWRAM_DATA u8 sPCBoxToSendMon = 0;
|
static EWRAM_DATA u8 sPCBoxToSendMon = 0;
|
||||||
static EWRAM_DATA u32 sBattleTowerMultiBattleTypeFlags = 0;
|
static EWRAM_DATA u32 sBattleTowerMultiBattleTypeFlags = 0;
|
||||||
|
|
||||||
struct ListMenuTemplate gScrollableMultichoice_ListMenuTemplate;
|
COMMON_DATA struct ListMenuTemplate gScrollableMultichoice_ListMenuTemplate = {0};
|
||||||
EWRAM_DATA u16 gScrollableMultichoice_ScrollOffset = 0;
|
EWRAM_DATA u16 gScrollableMultichoice_ScrollOffset = 0;
|
||||||
|
|
||||||
void TryLoseFansFromPlayTime(void);
|
void TryLoseFansFromPlayTime(void);
|
||||||
|
|
|
@ -32,7 +32,7 @@ EWRAM_DATA struct Camera gCamera = {0};
|
||||||
EWRAM_DATA static struct ConnectionFlags sMapConnectionFlags = {0};
|
EWRAM_DATA static struct ConnectionFlags sMapConnectionFlags = {0};
|
||||||
EWRAM_DATA static u32 UNUSED sFiller = 0; // without this, the next file won't align properly
|
EWRAM_DATA static u32 UNUSED sFiller = 0; // without this, the next file won't align properly
|
||||||
|
|
||||||
struct BackupMapLayout gBackupMapLayout;
|
COMMON_DATA struct BackupMapLayout gBackupMapLayout = {0};
|
||||||
|
|
||||||
static const struct ConnectionFlags sDummyConnectionFlags = {0};
|
static const struct ConnectionFlags sDummyConnectionFlags = {0};
|
||||||
|
|
||||||
|
|
|
@ -4,16 +4,16 @@
|
||||||
#include "constants/rgb.h"
|
#include "constants/rgb.h"
|
||||||
|
|
||||||
// IWRAM common
|
// IWRAM common
|
||||||
u8 gCanvasColumnStart;
|
COMMON_DATA u8 gCanvasColumnStart = 0;
|
||||||
u16 *gCanvasPixels;
|
COMMON_DATA u16 *gCanvasPixels = NULL;
|
||||||
u8 gCanvasRowEnd;
|
COMMON_DATA u8 gCanvasRowEnd = 0;
|
||||||
u8 gCanvasHeight;
|
COMMON_DATA u8 gCanvasHeight = 0;
|
||||||
u8 gCanvasColumnEnd;
|
COMMON_DATA u8 gCanvasColumnEnd = 0;
|
||||||
u8 gCanvasRowStart;
|
COMMON_DATA u8 gCanvasRowStart = 0;
|
||||||
u8 gCanvasMonPersonality;
|
COMMON_DATA u8 gCanvasMonPersonality = 0;
|
||||||
u8 gCanvasWidth;
|
COMMON_DATA u8 gCanvasWidth = 0;
|
||||||
u16 *gCanvasPalette;
|
COMMON_DATA u16 *gCanvasPalette = NULL;
|
||||||
u16 gCanvasPaletteStart;
|
COMMON_DATA u16 gCanvasPaletteStart = 0;
|
||||||
|
|
||||||
static void ApplyImageEffect_Pointillism(void);
|
static void ApplyImageEffect_Pointillism(void);
|
||||||
static void ApplyImageEffect_Blur(void);
|
static void ApplyImageEffect_Blur(void);
|
||||||
|
|
16
src/intro.c
16
src/intro.c
|
@ -112,6 +112,12 @@ extern const struct CompressedSpriteSheet gBattleAnimPicTable[];
|
||||||
extern const struct CompressedSpritePalette gBattleAnimPaletteTable[];
|
extern const struct CompressedSpritePalette gBattleAnimPaletteTable[];
|
||||||
extern const struct SpriteTemplate gAncientPowerRockSpriteTemplate[];
|
extern const struct SpriteTemplate gAncientPowerRockSpriteTemplate[];
|
||||||
|
|
||||||
|
enum {
|
||||||
|
COPYRIGHT_INITIALIZE,
|
||||||
|
COPYRIGHT_START_FADE = 140,
|
||||||
|
COPYRIGHT_START_INTRO,
|
||||||
|
};
|
||||||
|
|
||||||
#define TAG_VOLBEAT 1500
|
#define TAG_VOLBEAT 1500
|
||||||
#define TAG_TORCHIC 1501
|
#define TAG_TORCHIC 1501
|
||||||
#define TAG_MANECTRIC 1502
|
#define TAG_MANECTRIC 1502
|
||||||
|
@ -172,8 +178,8 @@ static EWRAM_DATA u16 sIntroCharacterGender = 0;
|
||||||
static EWRAM_DATA u16 UNUSED sUnusedVar = 0;
|
static EWRAM_DATA u16 UNUSED sUnusedVar = 0;
|
||||||
static EWRAM_DATA u16 sFlygonYOffset = 0;
|
static EWRAM_DATA u16 sFlygonYOffset = 0;
|
||||||
|
|
||||||
u32 gIntroFrameCounter;
|
COMMON_DATA u32 gIntroFrameCounter = 0;
|
||||||
struct GcmbStruct gMultibootProgramStruct;
|
COMMON_DATA struct GcmbStruct gMultibootProgramStruct = {0};
|
||||||
|
|
||||||
static const u16 sIntroDrops_Pal[] = INCBIN_U16("graphics/intro/scene_1/drops.gbapal");
|
static const u16 sIntroDrops_Pal[] = INCBIN_U16("graphics/intro/scene_1/drops.gbapal");
|
||||||
static const u16 sIntroLogo_Pal[] = INCBIN_U16("graphics/intro/scene_1/logo.gbapal");
|
static const u16 sIntroLogo_Pal[] = INCBIN_U16("graphics/intro/scene_1/logo.gbapal");
|
||||||
|
@ -1067,7 +1073,7 @@ static u8 SetUpCopyrightScreen(void)
|
||||||
{
|
{
|
||||||
switch (gMain.state)
|
switch (gMain.state)
|
||||||
{
|
{
|
||||||
case 0:
|
case COPYRIGHT_INITIALIZE:
|
||||||
SetVBlankCallback(NULL);
|
SetVBlankCallback(NULL);
|
||||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||||
|
@ -1105,7 +1111,7 @@ static u8 SetUpCopyrightScreen(void)
|
||||||
gMain.state++;
|
gMain.state++;
|
||||||
GameCubeMultiBoot_Main(&gMultibootProgramStruct);
|
GameCubeMultiBoot_Main(&gMultibootProgramStruct);
|
||||||
break;
|
break;
|
||||||
case 140:
|
case COPYRIGHT_START_FADE:
|
||||||
GameCubeMultiBoot_Main(&gMultibootProgramStruct);
|
GameCubeMultiBoot_Main(&gMultibootProgramStruct);
|
||||||
if (gMultibootProgramStruct.gcmb_field_2 != 1)
|
if (gMultibootProgramStruct.gcmb_field_2 != 1)
|
||||||
{
|
{
|
||||||
|
@ -1113,7 +1119,7 @@ static u8 SetUpCopyrightScreen(void)
|
||||||
gMain.state++;
|
gMain.state++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 141:
|
case COPYRIGHT_START_INTRO:
|
||||||
if (UpdatePaletteFade())
|
if (UpdatePaletteFade())
|
||||||
break;
|
break;
|
||||||
#if EXPANSION_INTRO == TRUE
|
#if EXPANSION_INTRO == TRUE
|
||||||
|
|
|
@ -76,11 +76,11 @@ static void rfu_STC_NI_receive_Sender(u8, u8, const struct RfuLocalStruct *, UNU
|
||||||
static void rfu_STC_NI_initSlot_asRecvDataEntity(u8, struct NIComm *);
|
static void rfu_STC_NI_initSlot_asRecvDataEntity(u8, struct NIComm *);
|
||||||
static void rfu_STC_NI_initSlot_asRecvControllData(u8, struct NIComm *);
|
static void rfu_STC_NI_initSlot_asRecvControllData(u8, struct NIComm *);
|
||||||
|
|
||||||
struct RfuSlotStatusUNI *gRfuSlotStatusUNI[RFU_CHILD_MAX];
|
COMMON_DATA struct RfuSlotStatusUNI *gRfuSlotStatusUNI[RFU_CHILD_MAX] = {0};
|
||||||
struct RfuSlotStatusNI *gRfuSlotStatusNI[RFU_CHILD_MAX];
|
COMMON_DATA struct RfuSlotStatusNI *gRfuSlotStatusNI[RFU_CHILD_MAX] = {0};
|
||||||
struct RfuLinkStatus *gRfuLinkStatus;
|
COMMON_DATA struct RfuLinkStatus *gRfuLinkStatus = NULL;
|
||||||
struct RfuStatic *gRfuStatic;
|
COMMON_DATA struct RfuStatic *gRfuStatic = NULL;
|
||||||
struct RfuFixed *gRfuFixed;
|
COMMON_DATA struct RfuFixed *gRfuFixed = NULL;
|
||||||
|
|
||||||
static const struct LLSFStruct llsf_struct[2] = {
|
static const struct LLSFStruct llsf_struct[2] = {
|
||||||
[MODE_CHILD] = {
|
[MODE_CHILD] = {
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue