summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDemki <mordbz@gmail.com>2020-05-11 03:03:25 +0300
committerDemki <mordbz@gmail.com>2020-05-11 03:06:27 +0300
commitbc005e7d2537150516119f7074bb767c054de722 (patch)
tree83e127100c7af68c6e92fcd4d0419a8a5c73b8bb
parent8f09b9e7138325b4ec2255a1c0a58f385e586f1b (diff)
parent49e14283e13c146018f2a2785dfc77e0e1ff5368 (diff)
Merge from upstream
-rw-r--r--CMakeLists.txt2
-rw-r--r--arm9/Makefile119
-rw-r--r--arm9/arm9.lcf859
-rw-r--r--arm9/asm/DGT_hash1.s404
-rw-r--r--arm9/asm/DGT_hash2.s443
-rw-r--r--arm9/asm/DGT_sha1s_arm4cw.s179
-rw-r--r--arm9/asm/libdgt.s1017
-rw-r--r--arm9/asm/libmath.s6
-rw-r--r--arm9/asm/unk_02000E0C.s333
-rw-r--r--arm9/global.inc16
-rw-r--r--arm9/lib/include/CARD_backup.h6
-rw-r--r--arm9/lib/include/CTRDG_common.h6
-rw-r--r--arm9/lib/include/FS_overlay.h28
-rw-r--r--arm9/lib/include/PAD_pad.h38
-rw-r--r--arm9/lib/include/SPI_pm.h38
-rw-r--r--arm9/lib/include/registers.h120
-rw-r--r--arm9/modules/00/asm/module_00_dummy.s3
-rw-r--r--arm9/modules/01/src/module_01.c12
-rw-r--r--arm9/modules/01/src/module_01.cpp11
-rw-r--r--arm9/modules/02/asm/module_02_dummy.s3
-rw-r--r--arm9/modules/03/asm/module_03_dummy.s3
-rw-r--r--arm9/modules/04/asm/arm_04.s7
-rw-r--r--arm9/modules/05/asm/module_05.s8
-rw-r--r--arm9/modules/06/asm/module_06.s8
-rw-r--r--arm9/modules/07/asm/module_07.s4
-rw-r--r--arm9/modules/08/asm/module_08.s7
-rw-r--r--arm9/modules/09/asm/module_09.s4
-rw-r--r--arm9/modules/10/asm/module_10_dummy.s6
-rw-r--r--arm9/modules/11/asm/module_11.s20
-rw-r--r--arm9/modules/12/asm/module_12.s9
-rw-r--r--arm9/modules/13/asm/module_13_arm1.s12
-rw-r--r--arm9/modules/13/asm/module_13_arm2.s10
-rw-r--r--arm9/modules/13/asm/module_13_thumb.s12
-rw-r--r--arm9/modules/14/asm/module_14.s8
-rw-r--r--arm9/modules/15/asm/module_15.s4
-rw-r--r--arm9/modules/16/asm/module_16.s4
-rw-r--r--arm9/modules/17/asm/module_17.s4
-rw-r--r--arm9/modules/18/asm/module_18.s8
-rw-r--r--arm9/modules/19/asm/module_19.s4
-rw-r--r--arm9/modules/20/asm/module_20.s4
-rw-r--r--arm9/modules/21/asm/module_21.s13
-rw-r--r--arm9/modules/22/asm/module_22.s7
-rw-r--r--arm9/modules/23/asm/module_23.s12
-rw-r--r--arm9/modules/24/asm/module_24.s7
-rw-r--r--arm9/modules/25/asm/module_25.s7
-rw-r--r--arm9/modules/26/asm/module_26.s7
-rw-r--r--arm9/modules/27/asm/module_27.s12
-rw-r--r--arm9/modules/28/asm/module_28.s16
-rw-r--r--arm9/modules/29/asm/module_29.s12
-rw-r--r--arm9/modules/30/asm/module_30.s10
-rw-r--r--arm9/modules/31/asm/module_31.s7
-rw-r--r--arm9/modules/32/asm/module_32.s12
-rw-r--r--arm9/modules/33/asm/module_33.s399
-rw-r--r--arm9/modules/34/asm/module_34.s601
-rw-r--r--arm9/modules/35/asm/module_35.s1142
-rw-r--r--arm9/modules/36/asm/module_36.s1571
-rw-r--r--arm9/src/FUN_02000DF4.c12
-rw-r--r--arm9/src/main.c272
-rw-r--r--arm9/src/poke_overlay.c6
-rw-r--r--arm9/undefined_syms.txt2
-rw-r--r--global.inc8
-rw-r--r--include/main.h34
-rw-r--r--include/poke_overlay.h13
-rw-r--r--tools/scaninc/source_file.cpp2
64 files changed, 6423 insertions, 1550 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d7525783..f2537aad 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,7 +5,7 @@ project(PokeDiamond)
enable_language(ASM)
-file(GLOB_RECURSE SOURCES RELATIVE ${CMAKE_SOURCE_DIR} "*.c")
+file(GLOB_RECURSE SOURCES RELATIVE ${CMAKE_SOURCE_DIR} "*.c" "*.cpp")
add_executable(PokeDiamond ${SOURCES})
target_include_directories(PokeDiamond PRIVATE include include-mw arm9/lib/include)
diff --git a/arm9/Makefile b/arm9/Makefile
index bc8c8491..f792c5bf 100644
--- a/arm9/Makefile
+++ b/arm9/Makefile
@@ -23,9 +23,9 @@ endif
ifeq ($(OS),Windows_NT)
EXE := .exe
-WINE :=
+WINE :=
else
-EXE :=
+EXE :=
WINE := wine
endif
@@ -49,16 +49,109 @@ LD_TEMPLATE := ARM9-TS.lcf.template
SRC_DIRS := src lib lib/src $(wildcard modules/*/src)
ASM_DIRS := asm data files $(wildcard modules/*/asm)
-C_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c))
-S_FILES := $(foreach dir,$(ASM_DIRS),$(wildcard $(dir)/*.s))
+C_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c))
+CXX_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.cpp))
+S_FILES := $(foreach dir,$(ASM_DIRS),$(wildcard $(dir)/*.s))
+
+C_OBJS = $(C_FILES:%.c=$(BUILD_DIR)/%.o)
+CXX_OBJS = $(CXX_FILES:%.cpp=$(BUILD_DIR)/%.o)
+S_OBJS = $(S_FILES:%.s=$(BUILD_DIR)/%.o)
# Object files
-O_FILES := $(foreach file,$(C_FILES),$(BUILD_DIR)/$(file:.c=.o)) \
- $(foreach file,$(S_FILES),$(BUILD_DIR)/$(file:.s=.o)) \
+O_FILES := $(C_OBJS) $(CXX_OBJS) $(S_OBJS)
# Overlay modules
# FIXME: lcf doesn't like this
# BIN_FILES := $(wildcard files/*.__AT_*)
+OVERLAYS := \
+ MODULE_00 \
+ MODULE_01 \
+ MODULE_02 \
+ MODULE_03 \
+ MODULE_04 \
+ MODULE_05 \
+ MODULE_06 \
+ MODULE_07 \
+ MODULE_08 \
+ MODULE_09 \
+ MODULE_10 \
+ MODULE_11 \
+ MODULE_12 \
+ MODULE_13 \
+ MODULE_14 \
+ MODULE_15 \
+ MODULE_16 \
+ MODULE_17 \
+ MODULE_18 \
+ MODULE_19 \
+ MODULE_20 \
+ MODULE_21 \
+ MODULE_22 \
+ MODULE_23 \
+ MODULE_24 \
+ MODULE_25 \
+ MODULE_26 \
+ MODULE_27 \
+ MODULE_28 \
+ MODULE_29 \
+ MODULE_30 \
+ MODULE_31 \
+ MODULE_32 \
+ MODULE_33 \
+ MODULE_34 \
+ MODULE_35 \
+ MODULE_36 \
+ MODULE_37 \
+ MODULE_38 \
+ MODULE_39 \
+ MODULE_40 \
+ MODULE_41 \
+ MODULE_42 \
+ MODULE_43 \
+ MODULE_44 \
+ MODULE_45 \
+ MODULE_46 \
+ MODULE_47 \
+ MODULE_48 \
+ MODULE_49 \
+ MODULE_50 \
+ MODULE_51 \
+ MODULE_52 \
+ MODULE_53 \
+ MODULE_54 \
+ MODULE_55 \
+ MODULE_56 \
+ MODULE_57 \
+ MODULE_58 \
+ MODULE_59 \
+ MODULE_60 \
+ MODULE_61 \
+ MODULE_62 \
+ MODULE_63 \
+ MODULE_64 \
+ MODULE_65 \
+ MODULE_66 \
+ MODULE_67 \
+ MODULE_68 \
+ MODULE_69 \
+ MODULE_70 \
+ MODULE_71 \
+ MODULE_72 \
+ MODULE_73 \
+ MODULE_74 \
+ MODULE_75 \
+ MODULE_76 \
+ MODULE_77 \
+ MODULE_78 \
+ MODULE_79 \
+ MODULE_80 \
+ MODULE_81 \
+ MODULE_82 \
+ MODULE_83 \
+ MODULE_84 \
+ MODULE_85 \
+ MODULE_86 \
+
.SECONDARY:
.DELETE_ON_ERROR:
.SECONDEXPANSION:
@@ -79,10 +172,10 @@ MWCCARM = $(TOOLS_DIR)/mwccarm/$(MWCCVERSION)/mwccarm.exe
MWLDARM = $(TOOLS_DIR)/mwccarm/$(MWCCVERSION)/mwldarm.exe
MWASMARM = $(TOOLS_DIR)/mwccarm/$(MWCCVERSION)/mwasmarm.exe
MAKELSF := $(WINE) $(TOOLS_DIR)/bin/makelcf.exe
-MAKELSF_FLAGS := -DCONST_34=0x34 -DCONST_3F=0x3F
AS = $(WINE) $(MWASMARM)
CC = $(WINE) $(MWCCARM)
+CXX = $(WINE) $(MWCCARM)
CPP := cpp -P
LD = $(WINE) $(MWLDARM)
AR := $(CROSS)ar
@@ -92,6 +185,7 @@ OBJCOPY := $(CROSS)objcopy
# ./tools/mwccarm/2.0/base/mwasmarm.exe -proc arm5te asm/arm9_thumb.s -o arm9.o
ASFLAGS = -proc arm5te -i ..
CFLAGS = -O4,p -proc arm946e -fp soft -lang c99 -Cpp_exceptions off -ir ../include -ir ../include-mw -ir lib/include -interworking -DFS_IMPLEMENT -enum int
+CXXFLAGS = -O4,p -proc arm946e -fp soft -lang c99 -Cpp_exceptions off -ir ../include -ir ../include-mw -ir lib/include -interworking -DFS_IMPLEMENT -enum int
LDFLAGS = -map -nodead -w off -proc v5te -interworking -map -symtab -m _start
####################### Other Tools #########################
@@ -157,15 +251,18 @@ build/src/FUN_020910A4.o: MWCCVERSION = 1.2/sp2p3
####################### Everything Else ######################
ifeq (,$(NODEP))
-$(BUILD_DIR)/%.o: dep = $(shell $(SCANINC) -I ../include -I ../include-mw -I lib/include $*.[cs])
+$(BUILD_DIR)/%.o: dep = $(shell $(SCANINC) -I ../include -I ../include-mw -I lib/include $(filter $*.c,$(C_FILES)) $(filter $*.cpp,$(CXX_FILES)) $(filter $*.s,$(S_FILES)))
else
$(BUILD_DIR)/%.o: dep :=
endif
-$(BUILD_DIR)/%.o: %.c $$(dep)
+$(C_OBJS): $(BUILD_DIR)/%.o: %.c $$(dep)
$(CC) -c $(CFLAGS) -o $@ $<
-$(BUILD_DIR)/%.o: %.s $$(dep)
+$(CXX_OBJS): $(BUILD_DIR)/%.o: %.cpp $$(dep)
+ $(CXX) -c $(CXXFLAGS) -o $@ $<
+
+$(S_OBJS): $(BUILD_DIR)/%.o: %.s $$(dep)
$(AS) $(ASFLAGS) -o $@ $<
$(BUILD_DIR)/$(LD_SCRIPT): $(LD_SCRIPT) $(LD_TEMPLATE) undefined_syms.txt macros.lcf.inc
@@ -174,7 +271,7 @@ $(BUILD_DIR)/$(LD_SCRIPT): $(LD_SCRIPT) $(LD_TEMPLATE) undefined_syms.txt macros
$(ROM): $(O_FILES) $(BUILD_DIR)/$(LD_SCRIPT) $(BIN_FILES)
$(LD) $(LDFLAGS) $(BUILD_DIR)/$(LD_SCRIPT) -o $(ELF) $(O_FILES) $(BIN_FILES)
-
+ $(OBJCOPY) --update-section arm9=$@ -j arm9 $(foreach ov,$(OVERLAYS),--update-section $(ov)=$(BUILD_DIR)/$(ov).sbin -j $(ov)) $(ELF) 2>/dev/null
# Make sure build directory exists before compiling anything
DUMMY != mkdir -p $(ALL_DIRS)
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf
index 68347ea4..9af9503f 100644
--- a/arm9/arm9.lcf
+++ b/arm9/arm9.lcf
@@ -120,7 +120,6 @@ SECTIONS {
crt0.o (.rodata)
* (.version)
main.o (.text)
- FUN_02000DF4.o (.text)
unk_02000E0C.o (.text)
string_util.o (.text)
unk_020023C0.o (.text)
@@ -211,7 +210,9 @@ SECTIONS {
FS_file.o (.text)
FS_rom.o (.text)
FS_overlay.o (.text)
- libdgt.o (.text)
+ DGT_hash1.o (.text)
+ DGT_hash2.o (.text)
+ DGT_sha1s_arm4cw.o (.text)
libcp.o (.text)
libspi.o (.text)
libpm.o (.text)
@@ -407,112 +408,184 @@ SECTIONS {
.MODULE.00 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_00.START = .;
module_00_dummy.o (.text)
+ module_00_dummy.o (.rodata)
+ module_00_dummy.o (.init)
+ SDK_OVERLAY.MODULE_00.SINIT_START = .;
+ module_00_dummy.o (.ctor)
+ module_00_dummy.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_00.SINIT_END = .;
+ . = ALIGN(32);
module_00_dummy.o (.sdata)
module_00_dummy.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_00.END = .;
SDK_OVERLAY.MODULE_00.SIZE = SDK_OVERLAY.MODULE_00.END - SDK_OVERLAY.MODULE_00.START;
} > MODULE_00
.MODULE.00.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_00.BSS_START = .;
module_00_dummy.o (.sbss)
module_00_dummy.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_00.BSS_END = .;
SDK_OVERLAY.MODULE_00.BSS_SIZE = SDK_OVERLAY.MODULE_00.BSS_END - SDK_OVERLAY.MODULE_00.BSS_START;
} >> MODULE_00
.MODULE.01 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_01.START = .;
module_01.o (.text)
+ module_01.o (.rodata)
+ module_01.o (.init)
+ SDK_OVERLAY.MODULE_01.SINIT_START = .;
+ module_01.o (.ctor)
+ module_01.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_01.SINIT_END = .;
+ . = ALIGN(32);
module_01.o (.sdata)
module_01.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_01.END = .;
SDK_OVERLAY.MODULE_01.SIZE = SDK_OVERLAY.MODULE_01.END - SDK_OVERLAY.MODULE_01.START;
} > MODULE_01
.MODULE.01.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_01.BSS_START = .;
module_01.o (.sbss)
module_01.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_01.BSS_END = .;
SDK_OVERLAY.MODULE_01.BSS_SIZE = SDK_OVERLAY.MODULE_01.BSS_END - SDK_OVERLAY.MODULE_01.BSS_START;
} >> MODULE_01
.MODULE.02 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_02.START = .;
module_02_dummy.o (.text)
+ module_02_dummy.o (.rodata)
+ SDK_OVERLAY.MODULE_02.SINIT_START = .;
+ module_02_dummy.o (.ctor)
+ module_02_dummy.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_02.SINIT_END = .;
+ . = ALIGN(32);
module_02_dummy.o (.sdata)
module_02_dummy.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_02.END = .;
SDK_OVERLAY.MODULE_02.SIZE = SDK_OVERLAY.MODULE_02.END - SDK_OVERLAY.MODULE_02.START;
} > MODULE_02
.MODULE.02.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_02.BSS_START = .;
module_02_dummy.o (.sbss)
module_02_dummy.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_02.BSS_END = .;
SDK_OVERLAY.MODULE_02.BSS_SIZE = SDK_OVERLAY.MODULE_02.BSS_END - SDK_OVERLAY.MODULE_02.BSS_START;
} >> MODULE_02
.MODULE.03 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_03.START = .;
module_03_dummy.o (.text)
+ module_03_dummy.o (.rodata)
+ module_03_dummy.o (.init)
+ SDK_OVERLAY.MODULE_03.SINIT_START = .;
+ module_03_dummy.o (.ctor)
+ module_03_dummy.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_03.SINIT_END = .;
+ . = ALIGN(32);
module_03_dummy.o (.sdata)
module_03_dummy.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_03.END = .;
SDK_OVERLAY.MODULE_03.SIZE = SDK_OVERLAY.MODULE_03.END - SDK_OVERLAY.MODULE_03.START;
} > MODULE_03
.MODULE.03.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_03.BSS_START = .;
module_03_dummy.o (.sbss)
module_03_dummy.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_03.BSS_END = .;
SDK_OVERLAY.MODULE_03.BSS_SIZE = SDK_OVERLAY.MODULE_03.BSS_END - SDK_OVERLAY.MODULE_03.BSS_START;
} >> MODULE_03
.MODULE.04 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_04.START = .;
thumb_04.o (.text)
arm_04.o (.text)
- thumb_04.o (.sdata)
- arm_04.o (.sdata)
thumb_04.o (.rodata)
arm_04.o (.rodata)
+ thumb_04.o (.init)
+ arm_04.o (.init)
+ SDK_OVERLAY.MODULE_04.SINIT_START = .;
+ thumb_04.o (.ctor)
+ arm_04.o (.ctor)
+ thumb_04.o (.sinit)
+ arm_04.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_04.SINIT_END = .;
+ . = ALIGN(32);
+ thumb_04.o (.sdata)
+ arm_04.o (.sdata)
thumb_04.o (.data)
arm_04.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_04.END = .;
SDK_OVERLAY.MODULE_04.SIZE = SDK_OVERLAY.MODULE_04.END - SDK_OVERLAY.MODULE_04.START;
} > MODULE_04
.MODULE.04.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_04.BSS_START = .;
thumb_04.o (.sbss)
arm_04.o (.sbss)
thumb_04.o (.bss)
arm_04.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_04.BSS_END = .;
SDK_OVERLAY.MODULE_04.BSS_SIZE = SDK_OVERLAY.MODULE_04.BSS_END - SDK_OVERLAY.MODULE_04.BSS_START;
} >> MODULE_04
.MODULE.05 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_05.START = .;
module_05.o (.text)
+ module_05.o (.rodata)
+ module_05.o (.init)
+ SDK_OVERLAY.MODULE_05.SINIT_START = .;
+ module_05.o (.ctor)
+ module_05.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_05.SINIT_END = .;
+ . = ALIGN(32);
module_05.o (.sdata)
module_05.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_05.END = .;
SDK_OVERLAY.MODULE_05.SIZE = SDK_OVERLAY.MODULE_05.END - SDK_OVERLAY.MODULE_05.START;
} > MODULE_05
.MODULE.05.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_05.BSS_START = .;
module_05.o (.sbss)
module_05.o (.bss)
@@ -522,143 +595,248 @@ SECTIONS {
.MODULE.06 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_06.START = .;
module_06.o (.text)
+ module_06.o (.rodata)
+ module_06.o (.init)
+ SDK_OVERLAY.MODULE_06.SINIT_START = .;
+ module_06.o (.ctor)
+ module_06.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_06.SINIT_END = .;
+ . = ALIGN(32);
module_06.o (.sdata)
module_06.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_06.END = .;
SDK_OVERLAY.MODULE_06.SIZE = SDK_OVERLAY.MODULE_06.END - SDK_OVERLAY.MODULE_06.START;
} > MODULE_06
.MODULE.06.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_06.BSS_START = .;
module_06.o (.sbss)
module_06.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_06.BSS_END = .;
SDK_OVERLAY.MODULE_06.BSS_SIZE = SDK_OVERLAY.MODULE_06.BSS_END - SDK_OVERLAY.MODULE_06.BSS_START;
} >> MODULE_06
.MODULE.07 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_07.START = .;
module_07.o (.text)
+ module_07.o (.rodata)
+ module_07.o (.init)
+ SDK_OVERLAY.MODULE_07.SINIT_START = .;
+ module_07.o (.ctor)
+ module_07.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_07.SINIT_END = .;
+ . = ALIGN(32);
module_07.o (.sdata)
module_07.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_07.END = .;
SDK_OVERLAY.MODULE_07.SIZE = SDK_OVERLAY.MODULE_07.END - SDK_OVERLAY.MODULE_07.START;
} > MODULE_07
.MODULE.07.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_07.BSS_START = .;
module_07.o (.sbss)
module_07.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_07.BSS_END = .;
SDK_OVERLAY.MODULE_07.BSS_SIZE = SDK_OVERLAY.MODULE_07.BSS_END - SDK_OVERLAY.MODULE_07.BSS_START;
} >> MODULE_07
.MODULE.08 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_08.START = .;
module_08.o (.text)
+ module_08.o (.rodata)
+ module_08.o (.init)
+ SDK_OVERLAY.MODULE_08.SINIT_START = .;
+ module_08.o (.ctor)
+ module_08.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_08.SINIT_END = .;
+ . = ALIGN(32);
module_08.o (.sdata)
module_08.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_08.END = .;
SDK_OVERLAY.MODULE_08.SIZE = SDK_OVERLAY.MODULE_08.END - SDK_OVERLAY.MODULE_08.START;
} > MODULE_08
.MODULE.08.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_08.BSS_START = .;
module_08.o (.sbss)
module_08.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_08.BSS_END = .;
SDK_OVERLAY.MODULE_08.BSS_SIZE = SDK_OVERLAY.MODULE_08.BSS_END - SDK_OVERLAY.MODULE_08.BSS_START;
} >> MODULE_08
.MODULE.09 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_09.START = .;
module_09.o (.text)
+ module_09.o (.rodata)
+ module_09.o (.init)
+ SDK_OVERLAY.MODULE_09.SINIT_START = .;
+ module_09.o (.ctor)
+ module_09.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_09.SINIT_END = .;
+ . = ALIGN(32);
module_09.o (.sdata)
module_09.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_09.END = .;
SDK_OVERLAY.MODULE_09.SIZE = SDK_OVERLAY.MODULE_09.END - SDK_OVERLAY.MODULE_09.START;
} > MODULE_09
.MODULE.09.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_09.BSS_START = .;
module_09.o (.sbss)
module_09.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_09.BSS_END = .;
SDK_OVERLAY.MODULE_09.BSS_SIZE = SDK_OVERLAY.MODULE_09.BSS_END - SDK_OVERLAY.MODULE_09.BSS_START;
} >> MODULE_09
.MODULE.10 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_10.START = .;
module_10_dummy.o (.text)
+ module_10_dummy.o (.rodata)
+ module_10_dummy.o (.init)
+ SDK_OVERLAY.MODULE_10.SINIT_START = .;
+ module_10_dummy.o (.ctor)
+ module_10_dummy.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_10.SINIT_END = .;
+ . = ALIGN(32);
module_10_dummy.o (.sdata)
module_10_dummy.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_10.END = .;
SDK_OVERLAY.MODULE_10.SIZE = SDK_OVERLAY.MODULE_10.END - SDK_OVERLAY.MODULE_10.START;
} > MODULE_10
.MODULE.10.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_10.BSS_START = .;
module_10_dummy.o (.sbss)
module_10_dummy.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_10.BSS_END = .;
SDK_OVERLAY.MODULE_10.BSS_SIZE = SDK_OVERLAY.MODULE_10.BSS_END - SDK_OVERLAY.MODULE_10.BSS_START;
} >> MODULE_10
.MODULE.11 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_11.START = .;
module_11.o (.text)
+ module_11.o (.rodata)
+ module_11.o (.init)
+ // SDK_OVERLAY.MODULE_11.SINIT_START = .;
+ module_11.o (.ctor)
+ module_11.o (.sinit)
+ // SDK_OVERLAY.MODULE_11.SINIT_END = .;
+ // WRITEW 0;
+ . = ALIGN(32);
module_11.o (.sdata)
module_11.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_11.END = .;
SDK_OVERLAY.MODULE_11.SIZE = SDK_OVERLAY.MODULE_11.END - SDK_OVERLAY.MODULE_11.START;
} > MODULE_11
.MODULE.11.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_11.BSS_START = .;
module_11.o (.sbss)
module_11.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_11.BSS_END = .;
SDK_OVERLAY.MODULE_11.BSS_SIZE = SDK_OVERLAY.MODULE_11.BSS_END - SDK_OVERLAY.MODULE_11.BSS_START;
} >> MODULE_11
.MODULE.12 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_12.START = .;
module_12.o (.text)
+ module_12.o (.rodata)
+ module_12.o (.init)
+ SDK_OVERLAY.MODULE_12.SINIT_START = .;
+ module_12.o (.ctor)
+ module_12.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_12.SINIT_END = .;
+ . = ALIGN(32);
module_12.o (.sdata)
module_12.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_12.END = .;
SDK_OVERLAY.MODULE_12.SIZE = SDK_OVERLAY.MODULE_12.END - SDK_OVERLAY.MODULE_12.START;
} > MODULE_12
.MODULE.12.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_12.BSS_START = .;
module_12.o (.sbss)
module_12.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_12.BSS_END = .;
SDK_OVERLAY.MODULE_12.BSS_SIZE = SDK_OVERLAY.MODULE_12.BSS_END - SDK_OVERLAY.MODULE_12.BSS_START;
} >> MODULE_12
.MODULE.13 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_13.START = .;
module_13_init.o (.text)
module_13_arm1.o (.text)
module_13_thumb.o (.text)
module_13_arm2.o (.text)
+ module_13_init.o (.rodata)
+ module_13_arm1.o (.rodata)
+ module_13_thumb.o (.rodata)
+ module_13_arm2.o (.rodata)
+ module_13_init.o (.init)
+ module_13_arm1.o (.init)
+ module_13_thumb.o (.init)
+ module_13_arm2.o (.init)
+ SDK_OVERLAY.MODULE_13.SINIT_START = .;
+ module_13_init.o (.ctor)
+ module_13_arm1.o (.ctor)
+ module_13_thumb.o (.ctor)
+ module_13_arm2.o (.ctor)
+ module_13_init.o (.sinit)
+ module_13_arm1.o (.sinit)
+ module_13_thumb.o (.sinit)
+ module_13_arm2.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_13.SINIT_END = .;
+ . = ALIGN(32);
module_13_init.o (.sdata)
module_13_arm1.o (.sdata)
module_13_thumb.o (.sdata)
@@ -667,12 +845,14 @@ SECTIONS {
module_13_arm1.o (.data)
module_13_thumb.o (.data)
module_13_arm2.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_13.END = .;
SDK_OVERLAY.MODULE_13.SIZE = SDK_OVERLAY.MODULE_13.END - SDK_OVERLAY.MODULE_13.START;
} > MODULE_13
.MODULE.13.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_13.BSS_START = .;
module_13_init.o (.sbss)
module_13_arm1.o (.sbss)
@@ -682,375 +862,615 @@ SECTIONS {
module_13_arm1.o (.bss)
module_13_thumb.o (.bss)
module_13_arm2.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_13.BSS_END = .;
SDK_OVERLAY.MODULE_13.BSS_SIZE = SDK_OVERLAY.MODULE_13.BSS_END - SDK_OVERLAY.MODULE_13.BSS_START;
} >> MODULE_13
.MODULE.14 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_14.START = .;
module_14.o (.text)
+ module_14.o (.rodata)
+ module_14.o (.init)
+ SDK_OVERLAY.MODULE_14.SINIT_START = .;
+ module_14.o (.ctor)
+ module_14.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_14.SINIT_END = .;
+ . = ALIGN(32);
module_14.o (.sdata)
module_14.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_14.END = .;
SDK_OVERLAY.MODULE_14.SIZE = SDK_OVERLAY.MODULE_14.END - SDK_OVERLAY.MODULE_14.START;
} > MODULE_14
.MODULE.14.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_14.BSS_START = .;
module_14.o (.sbss)
module_14.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_14.BSS_END = .;
SDK_OVERLAY.MODULE_14.BSS_SIZE = SDK_OVERLAY.MODULE_14.BSS_END - SDK_OVERLAY.MODULE_14.BSS_START;
} >> MODULE_14
.MODULE.15 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_15.START = .;
module_15.o (.text)
+ module_15.o (.rodata)
+ module_15.o (.init)
+ SDK_OVERLAY.MODULE_15.SINIT_START = .;
+ module_15.o (.ctor)
+ module_15.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_15.SINIT_END = .;
+ . = ALIGN(32);
module_15.o (.sdata)
module_15.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_15.END = .;
SDK_OVERLAY.MODULE_15.SIZE = SDK_OVERLAY.MODULE_15.END - SDK_OVERLAY.MODULE_15.START;
} > MODULE_15
.MODULE.15.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_15.BSS_START = .;
module_15.o (.sbss)
module_15.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_15.BSS_END = .;
SDK_OVERLAY.MODULE_15.BSS_SIZE = SDK_OVERLAY.MODULE_15.BSS_END - SDK_OVERLAY.MODULE_15.BSS_START;
} >> MODULE_15
.MODULE.16 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_16.START = .;
module_16.o (.text)
+ module_16.o (.rodata)
+ module_16.o (.init)
+ SDK_OVERLAY.MODULE_16.SINIT_START = .;
+ module_16.o (.ctor)
+ module_16.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_16.SINIT_END = .;
+ . = ALIGN(32);
module_16.o (.sdata)
module_16.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_16.END = .;
SDK_OVERLAY.MODULE_16.SIZE = SDK_OVERLAY.MODULE_16.END - SDK_OVERLAY.MODULE_16.START;
} > MODULE_16
.MODULE.16.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_16.BSS_START = .;
module_16.o (.sbss)
module_16.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_16.BSS_END = .;
SDK_OVERLAY.MODULE_16.BSS_SIZE = SDK_OVERLAY.MODULE_16.BSS_END - SDK_OVERLAY.MODULE_16.BSS_START;
} >> MODULE_16
.MODULE.17 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_17.START = .;
module_17.o (.text)
+ module_17.o (.rodata)
+ module_17.o (.init)
+ SDK_OVERLAY.MODULE_17.SINIT_START = .;
+ module_17.o (.ctor)
+ module_17.o (.init)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_17.SINIT_END = .;
+ . = ALIGN(32);
module_17.o (.sdata)
module_17.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_17.END = .;
SDK_OVERLAY.MODULE_17.SIZE = SDK_OVERLAY.MODULE_17.END - SDK_OVERLAY.MODULE_17.START;
} > MODULE_17
.MODULE.17.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_17.BSS_START = .;
module_17.o (.sbss)
module_17.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_17.BSS_END = .;
SDK_OVERLAY.MODULE_17.BSS_SIZE = SDK_OVERLAY.MODULE_17.BSS_END - SDK_OVERLAY.MODULE_17.BSS_START;
} >> MODULE_17
.MODULE.18 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_18.START = .;
module_18.o (.text)
+ module_18.o (.rodata)
+ module_18.o (.init)
+ SDK_OVERLAY.MODULE_18.SINIT_START = .;
+ module_18.o (.ctor)
+ module_18.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_18.SINIT_END = .;
+ . = ALIGN(32);
module_18.o (.sdata)
module_18.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_18.END = .;
SDK_OVERLAY.MODULE_18.SIZE = SDK_OVERLAY.MODULE_18.END - SDK_OVERLAY.MODULE_18.START;
} > MODULE_18
.MODULE.18.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_18.BSS_START = .;
module_18.o (.sbss)
module_18.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_18.BSS_END = .;
SDK_OVERLAY.MODULE_18.BSS_SIZE = SDK_OVERLAY.MODULE_18.BSS_END - SDK_OVERLAY.MODULE_18.BSS_START;
} >> MODULE_18
.MODULE.19 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_19.START = .;
module_19.o (.text)
+ module_19.o (.rodata)
+ module_19.o (.init)
+ SDK_OVERLAY.MODULE_19.SINIT_START = .;
+ module_19.o (.ctor)
+ module_19.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_19.SINIT_END = .;
+ . = ALIGN(32);
module_19.o (.sdata)
module_19.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_19.END = .;
SDK_OVERLAY.MODULE_19.SIZE = SDK_OVERLAY.MODULE_19.END - SDK_OVERLAY.MODULE_19.START;
} > MODULE_19
.MODULE.19.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_19.BSS_START = .;
module_19.o (.sbss)
module_19.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_19.BSS_END = .;
SDK_OVERLAY.MODULE_19.BSS_SIZE = SDK_OVERLAY.MODULE_19.BSS_END - SDK_OVERLAY.MODULE_19.BSS_START;
} >> MODULE_19
.MODULE.20 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_20.START = .;
module_20.o (.text)
+ module_20.o (.rodata)
+ module_20.o (.init)
+ SDK_OVERLAY.MODULE_20.SINIT_START = .;
+ module_20.o (.ctor)
+ module_20.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_20.SINIT_END = .;
+ . = ALIGN(32);
module_20.o (.sdata)
module_20.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_20.END = .;
SDK_OVERLAY.MODULE_20.SIZE = SDK_OVERLAY.MODULE_20.END - SDK_OVERLAY.MODULE_20.START;
} > MODULE_20
.MODULE.20.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_20.BSS_START = .;
module_20.o (.sbss)
module_20.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_20.BSS_END = .;
SDK_OVERLAY.MODULE_20.BSS_SIZE = SDK_OVERLAY.MODULE_20.BSS_END - SDK_OVERLAY.MODULE_20.BSS_START;
} >> MODULE_20
.MODULE.21 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_21.START = .;
module_21.o (.text)
+ module_21.o (.rodata)
+ module_21.o (.init)
+ // SDK_OVERLAY.MODULE_21.SINIT_START = .;
+ module_21.o (.ctor)
+ module_21.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_21.SINIT_END = ;
+ . = ALIGN(32);
module_21.o (.sdata)
module_21.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_21.END = .;
SDK_OVERLAY.MODULE_21.SIZE = SDK_OVERLAY.MODULE_21.END - SDK_OVERLAY.MODULE_21.START;
} > MODULE_21
.MODULE.21.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_21.BSS_START = .;
module_21.o (.sbss)
module_21.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_21.BSS_END = .;
SDK_OVERLAY.MODULE_21.BSS_SIZE = SDK_OVERLAY.MODULE_21.BSS_END - SDK_OVERLAY.MODULE_21.BSS_START;
} >> MODULE_21
.MODULE.22 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_22.START = .;
module_22.o (.text)
+ module_22.o (.rodata)
+ module_22.o (.init)
+ SDK_OVERLAY.MODULE_22.SINIT_START = .;
+ module_22.o (.ctor)
+ module_22.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_22.SINIT_END = .;
+ . = ALIGN(32);
module_22.o (.sdata)
module_22.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_22.END = .;
SDK_OVERLAY.MODULE_22.SIZE = SDK_OVERLAY.MODULE_22.END - SDK_OVERLAY.MODULE_22.START;
} > MODULE_22
.MODULE.22.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_22.BSS_START = .;
module_22.o (.sbss)
module_22.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_22.BSS_END = .;
SDK_OVERLAY.MODULE_22.BSS_SIZE = SDK_OVERLAY.MODULE_22.BSS_END - SDK_OVERLAY.MODULE_22.BSS_START;
} >> MODULE_22
.MODULE.23 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_23.START = .;
module_23.o (.text)
+ module_23.o (.rodata)
+ module_23.o (.init)
+ // SDK_OVERLAY.MODULE_23.SINIT_START = .;
+ module_23.o (.ctor)
+ module_23.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_23.SINIT_END = .;
+ . = ALIGN(32);
module_23.o (.sdata)
module_23.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_23.END = .;
SDK_OVERLAY.MODULE_23.SIZE = SDK_OVERLAY.MODULE_23.END - SDK_OVERLAY.MODULE_23.START;
} > MODULE_23
.MODULE.23.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_23.BSS_START = .;
module_23.o (.sbss)
module_23.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_23.BSS_END = .;
SDK_OVERLAY.MODULE_23.BSS_SIZE = SDK_OVERLAY.MODULE_23.BSS_END - SDK_OVERLAY.MODULE_23.BSS_START;
} >> MODULE_23
.MODULE.24 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_24.START = .;
module_24.o (.text)
+ module_24.o (.rodata)
+ module_24.o (.init)
+ SDK_OVERLAY.MODULE_24.SINIT_START = .;
+ module_24.o (.ctor)
+ module_24.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_24.SINIT_END = .;
+ . = ALIGN(32);
module_24.o (.sdata)
module_24.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_24.END = .;
SDK_OVERLAY.MODULE_24.SIZE = SDK_OVERLAY.MODULE_24.END - SDK_OVERLAY.MODULE_24.START;
} > MODULE_24
.MODULE.24.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_24.BSS_START = .;
module_24.o (.sbss)
module_24.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_24.BSS_END = .;
SDK_OVERLAY.MODULE_24.BSS_SIZE = SDK_OVERLAY.MODULE_24.BSS_END - SDK_OVERLAY.MODULE_24.BSS_START;
} >> MODULE_24
.MODULE.25 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_25.START = .;
module_25.o (.text)
+ module_25.o (.rodata)
+ module_25.o (.init)
+ SDK_OVERLAY.MODULE_25.SINIT_START = .;
+ module_25.o (.ctor)
+ module_25.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_25.SINIT_END = .;
+ . = ALIGN(32);
module_25.o (.sdata)
module_25.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_25.END = .;
SDK_OVERLAY.MODULE_25.SIZE = SDK_OVERLAY.MODULE_25.END - SDK_OVERLAY.MODULE_25.START;
} > MODULE_25
.MODULE.25.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_25.BSS_START = .;
module_25.o (.sbss)
module_25.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_25.BSS_END = .;
SDK_OVERLAY.MODULE_25.BSS_SIZE = SDK_OVERLAY.MODULE_25.BSS_END - SDK_OVERLAY.MODULE_25.BSS_START;
} >> MODULE_25
.MODULE.26 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_26.START = .;
module_26.o (.text)
+ module_26.o (.rodata)
+ module_26.o (.init)
+ SDK_OVERLAY.MODULE_26.SINIT_START = .;
+ module_26.o (.ctor)
+ module_26.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_26.SINIT_END = .;
+ . = ALIGN(32);
module_26.o (.sdata)
module_26.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_26.END = .;
SDK_OVERLAY.MODULE_26.SIZE = SDK_OVERLAY.MODULE_26.END - SDK_OVERLAY.MODULE_26.START;
} > MODULE_26
.MODULE.26.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_26.BSS_START = .;
module_26.o (.sbss)
module_26.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_26.BSS_END = .;
SDK_OVERLAY.MODULE_26.BSS_SIZE = SDK_OVERLAY.MODULE_26.BSS_END - SDK_OVERLAY.MODULE_26.BSS_START;
} >> MODULE_26
.MODULE.27 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_27.START = .;
module_27.o (.text)
+ module_27.o (.rodata)
+ module_27.o (.init)
+ // SDK_OVERLAY.MODULE_27.SINIT_START = .;
+ module_27.o (.ctor)
+ module_27.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_27.SINIT_END = .;
+ . = ALIGN(32);
module_27.o (.sdata)
module_27.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_27.END = .;
SDK_OVERLAY.MODULE_27.SIZE = SDK_OVERLAY.MODULE_27.END - SDK_OVERLAY.MODULE_27.START;
} > MODULE_27
.MODULE.27.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_27.BSS_START = .;
module_27.o (.sbss)
module_27.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_27.BSS_END = .;
SDK_OVERLAY.MODULE_27.BSS_SIZE = SDK_OVERLAY.MODULE_27.BSS_END - SDK_OVERLAY.MODULE_27.BSS_START;
} >> MODULE_27
.MODULE.28 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_28.START = .;
module_28.o (.text)
+ module_28.o (.rodata)
+ module_28.o (.init)
+ // SDK_OVERLAY.MODULE_28.SINIT_START = .;
+ module_28.o (.ctor)
+ module_28.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_28.SINIT_END = .;
+ . = ALIGN(32);
module_28.o (.sdata)
module_28.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_28.END = .;
SDK_OVERLAY.MODULE_28.SIZE = SDK_OVERLAY.MODULE_28.END - SDK_OVERLAY.MODULE_28.START;
} > MODULE_28
.MODULE.28.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_28.BSS_START = .;
module_28.o (.sbss)
module_28.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_28.BSS_END = .;
SDK_OVERLAY.MODULE_28.BSS_SIZE = SDK_OVERLAY.MODULE_28.BSS_END - SDK_OVERLAY.MODULE_28.BSS_START;
} >> MODULE_28
.MODULE.29 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_29.START = .;
module_29.o (.text)
+ module_29.o (.rodata)
+ module_29.o (.init)
+ // SDK_OVERLAY.MODULE_29.SINIT_START = .;
+ module_29.o (.ctor)
+ module_29.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_29.SINIT_END = .;
+ . = ALIGN(32);
module_29.o (.sdata)
module_29.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_29.END = .;
SDK_OVERLAY.MODULE_29.SIZE = SDK_OVERLAY.MODULE_29.END - SDK_OVERLAY.MODULE_29.START;
} > MODULE_29
.MODULE.29.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_29.BSS_START = .;
module_29.o (.sbss)
module_29.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_29.BSS_END = .;
SDK_OVERLAY.MODULE_29.BSS_SIZE = SDK_OVERLAY.MODULE_29.BSS_END - SDK_OVERLAY.MODULE_29.BSS_START;
} >> MODULE_29
.MODULE.30 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_30.START = .;
module_30.o (.text)
+ module_30.o (.rodata)
+ module_30.o (.init)
+ // SDK_OVERLAY.MODULE_30.SINIT_START = .;
+ module_30.o (.ctor)
+ module_30.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_30.SINIT_END = .;
+ . = ALIGN(32);
module_30.o (.sdata)
module_30.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_30.END = .;
SDK_OVERLAY.MODULE_30.SIZE = SDK_OVERLAY.MODULE_30.END - SDK_OVERLAY.MODULE_30.START;
} > MODULE_30
.MODULE.30.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_30.BSS_START = .;
module_30.o (.sbss)
module_30.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_30.BSS_END = .;
SDK_OVERLAY.MODULE_30.BSS_SIZE = SDK_OVERLAY.MODULE_30.BSS_END - SDK_OVERLAY.MODULE_30.BSS_START;
} >> MODULE_30
.MODULE.31 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_31.START = .;
module_31.o (.text)
+ module_31.o (.rodata)
+ module_31.o (.init)
+ SDK_OVERLAY.MODULE_31.SINIT_START = .;
+ module_31.o (.ctor)
+ module_31.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_31.SINIT_END = .;
+ . = ALIGN(32);
module_31.o (.sdata)
module_31.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_31.END = .;
SDK_OVERLAY.MODULE_31.SIZE = SDK_OVERLAY.MODULE_31.END - SDK_OVERLAY.MODULE_31.START;
} > MODULE_31
.MODULE.31.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_31.BSS_START = .;
module_31.o (.sbss)
module_31.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_31.BSS_END = .;
SDK_OVERLAY.MODULE_31.BSS_SIZE = SDK_OVERLAY.MODULE_31.BSS_END - SDK_OVERLAY.MODULE_31.BSS_START;
} >> MODULE_31
.MODULE.32 :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_32.START = .;
module_32.o (.text)
+ module_32.o (.rodata)
+ module_32.o (.init)
+ // SDK_OVERLAY.MODULE_32.SINIT_START = .;
+ module_32.o (.ctor)
+ module_32.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_32.SINIT_END = .;
+ . = ALIGN(32);
module_32.o (.sdata)
module_32.o (.data)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_32.END = .;
SDK_OVERLAY.MODULE_32.SIZE = SDK_OVERLAY.MODULE_32.END - SDK_OVERLAY.MODULE_32.START;
} > MODULE_32
.MODULE.32.bss :
{
+ ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_32.BSS_START = .;
module_32.o (.sbss)
module_32.o (.bss)
+ . = ALIGN(32);
SDK_OVERLAY.MODULE_32.BSS_END = .;
SDK_OVERLAY.MODULE_32.BSS_SIZE = SDK_OVERLAY.MODULE_32.BSS_END - SDK_OVERLAY.MODULE_32.BSS_START;
} >> MODULE_32
- .MODULE.33: {
+ .MODULE.33 :
+ {
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_33.START = .;
- FILE_28DE00.o (.text) /* 0x289E00 */
+ module_33.o (.text)
+ module_33.o (.rodata)
+ module_33.o (.init)
+ SDK_OVERLAY.MODULE_33.SINIT_START = .;
+ module_33.o (.ctor)
+ module_33.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_33.SINIT_END = .;
+ . = ALIGN(32);
+ module_33.o (.sdata)
+ module_33.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_33.END = .;
SDK_OVERLAY.MODULE_33.SIZE = SDK_OVERLAY.MODULE_33.END - SDK_OVERLAY.MODULE_33.START;
@@ -1060,16 +1480,28 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_33.BSS_START = .;
- FILE_28DE00.o (.bss)
+ module_33.o (.sbss)
+ module_33.o (.bss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_33.BSS_END = .;
SDK_OVERLAY.MODULE_33.BSS_SIZE = SDK_OVERLAY.MODULE_33.BSS_END - SDK_OVERLAY.MODULE_33.BSS_START;
} >> MODULE_33
- .MODULE.34: {
+ .MODULE.34 :
+ {
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_34.START = .;
- FILE_28E200.o (.text) /* 0x28A200 */
+ module_34.o (.text)
+ module_34.o (.rodata)
+ module_34.o (.init)
+ // SDK_OVERLAY.MODULE_34.SINIT_START = .;
+ module_34.o (.ctor)
+ module_34.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_34.SINIT_END = .;
+ . = ALIGN(32);
+ module_34.o (.sdata)
+ module_34.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_34.END = .;
SDK_OVERLAY.MODULE_34.SIZE = SDK_OVERLAY.MODULE_34.END - SDK_OVERLAY.MODULE_34.START;
@@ -1079,16 +1511,28 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_34.BSS_START = .;
- FILE_28E200.o (.bss)
+ module_34.o (.sbss)
+ module_34.o (.bss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_34.BSS_END = .;
SDK_OVERLAY.MODULE_34.BSS_SIZE = SDK_OVERLAY.MODULE_34.BSS_END - SDK_OVERLAY.MODULE_34.BSS_START;
} >> MODULE_34
- .MODULE.35: {
+ .MODULE.35 :
+ {
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_35.START = .;
- FILE_28E800.o (.text) /* 0x28A800 */
+ module_35.o (.text)
+ module_35.o (.rodata)
+ module_35.o (.init)
+ SDK_OVERLAY.MODULE_35.SINIT_START = .;
+ module_35.o (.ctor)
+ module_35.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_35.SINIT_END = .;
+ . = ALIGN(32);
+ module_35.o (.sdata)
+ module_35.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_35.END = .;
SDK_OVERLAY.MODULE_35.SIZE = SDK_OVERLAY.MODULE_35.END - SDK_OVERLAY.MODULE_35.START;
@@ -1098,16 +1542,28 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_35.BSS_START = .;
- FILE_28E800.o (.bss)
+ module_35.o (.sbss)
+ module_35.o (.bss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_35.BSS_END = .;
SDK_OVERLAY.MODULE_35.BSS_SIZE = SDK_OVERLAY.MODULE_35.BSS_END - SDK_OVERLAY.MODULE_35.BSS_START;
} >> MODULE_35
- .MODULE.36: {
+ .MODULE.36 :
+ {
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_36.START = .;
- FILE_28F200.o (.text) /* 0x28B200 */
+ module_36.o (.text)
+ module_36.o (.rodata)
+ module_36.o (.init)
+ // SDK_OVERLAY.MODULE_36.SINIT_START = .;
+ module_36.o (.ctor)
+ module_36.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_36.SINIT_END = .;
+ . = ALIGN(32);
+ module_36.o (.sdata)
+ module_36.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_36.END = .;
SDK_OVERLAY.MODULE_36.SIZE = SDK_OVERLAY.MODULE_36.END - SDK_OVERLAY.MODULE_36.START;
@@ -1117,7 +1573,8 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_36.BSS_START = .;
- FILE_28F200.o (.bss)
+ module_36.o (.sbss)
+ module_36.o (.bss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_36.BSS_END = .;
SDK_OVERLAY.MODULE_36.BSS_SIZE = SDK_OVERLAY.MODULE_36.BSS_END - SDK_OVERLAY.MODULE_36.BSS_START;
@@ -2196,43 +2653,339 @@ SECTIONS {
} > arm9_defs
.arm9_table : {
- OVERLAY_TABLE(MODULE_00, 0)
- OVERLAY_TABLE(MODULE_01, 1)
- OVERLAY_TABLE(MODULE_02, 2)
- OVERLAY_TABLE(MODULE_03, 3)
- OVERLAY_TABLE(MODULE_04, 4)
- OVERLAY_TABLE(MODULE_05, 5)
- OVERLAY_TABLE(MODULE_06, 6)
- OVERLAY_TABLE(MODULE_07, 7)
- OVERLAY_TABLE(MODULE_08, 8)
- OVERLAY_TABLE(MODULE_09, 9)
- OVERLAY_TABLE(MODULE_10, 10)
- OVERLAY_TABLE(MODULE_11, 11)
- OVERLAY_TABLE(MODULE_12, 12)
- OVERLAY_TABLE(MODULE_13, 13)
- OVERLAY_TABLE(MODULE_14, 14)
- OVERLAY_TABLE(MODULE_15, 15)
- OVERLAY_TABLE(MODULE_16, 16)
- OVERLAY_TABLE(MODULE_17, 17)
- OVERLAY_TABLE(MODULE_18, 18)
- OVERLAY_TABLE(MODULE_19, 19)
- OVERLAY_TABLE(MODULE_20, 20)
- OVERLAY_TABLE(MODULE_21, 21)
- OVERLAY_TABLE(MODULE_22, 22)
- OVERLAY_TABLE(MODULE_23, 23)
- OVERLAY_TABLE(MODULE_24, 24)
- OVERLAY_TABLE(MODULE_25, 25)
- OVERLAY_TABLE(MODULE_26, 26)
- OVERLAY_TABLE(MODULE_27, 27)
- OVERLAY_TABLE(MODULE_28, 28)
- OVERLAY_TABLE(MODULE_29, 29)
- OVERLAY_TABLE(MODULE_30, 30)
- OVERLAY_TABLE(MODULE_31, 31)
- OVERLAY_TABLE(MODULE_32, 32)
- OVERLAY_TABLE(MODULE_33, 33)
- OVERLAY_TABLE(MODULE_34, 34)
- OVERLAY_TABLE(MODULE_35, 35)
- OVERLAY_TABLE(MODULE_36, 36)
+ WRITEW SDK_OVERLAY_MODULE_00_ID;
+ WRITEW SDK_OVERLAY.MODULE_00.START;
+ WRITEW SDK_OVERLAY.MODULE_00.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_00.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_00.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_00.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_00_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_01_ID;
+ WRITEW SDK_OVERLAY.MODULE_01.START;
+ WRITEW SDK_OVERLAY.MODULE_01.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_01.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_01.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_01.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_01_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_02_ID;
+ WRITEW SDK_OVERLAY.MODULE_02.START;
+ WRITEW SDK_OVERLAY.MODULE_02.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_02.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_02.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_02.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_02_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_03_ID;
+ WRITEW SDK_OVERLAY.MODULE_03.START;
+ WRITEW SDK_OVERLAY.MODULE_03.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_03.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_03.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_03.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_03_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_04_ID;
+ WRITEW SDK_OVERLAY.MODULE_04.START;
+ WRITEW SDK_OVERLAY.MODULE_04.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_04.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_04.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_04.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_04_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_05_ID;
+ WRITEW SDK_OVERLAY.MODULE_05.START;
+ WRITEW SDK_OVERLAY.MODULE_05.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_05.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_05.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_05.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_05_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_06_ID;
+ WRITEW SDK_OVERLAY.MODULE_06.START;
+ WRITEW SDK_OVERLAY.MODULE_06.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_06.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_06.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_06.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_06_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_07_ID;
+ WRITEW SDK_OVERLAY.MODULE_07.START;
+ WRITEW SDK_OVERLAY.MODULE_07.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_07.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_07.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_07.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_07_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_08_ID;
+ WRITEW SDK_OVERLAY.MODULE_08.START;
+ WRITEW SDK_OVERLAY.MODULE_08.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_08.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_08.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_08.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_08_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_09_ID;
+ WRITEW SDK_OVERLAY.MODULE_09.START;
+ WRITEW SDK_OVERLAY.MODULE_09.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_09.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_09.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_09.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_09_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_10_ID;
+ WRITEW SDK_OVERLAY.MODULE_10.START;
+ WRITEW SDK_OVERLAY.MODULE_10.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_10.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_10.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_10.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_10_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_11_ID;
+ WRITEW SDK_OVERLAY.MODULE_11.START;
+ WRITEW SDK_OVERLAY.MODULE_11.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_11.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_11.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_11.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_11_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_12_ID;
+ WRITEW SDK_OVERLAY.MODULE_12.START;
+ WRITEW SDK_OVERLAY.MODULE_12.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_12.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_12.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_12.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_12_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_13_ID;
+ WRITEW SDK_OVERLAY.MODULE_13.START;
+ WRITEW SDK_OVERLAY.MODULE_13.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_13.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_13.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_13.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_13_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_14_ID;
+ WRITEW SDK_OVERLAY.MODULE_14.START;
+ WRITEW SDK_OVERLAY.MODULE_14.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_14.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_14.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_14.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_14_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_15_ID;
+ WRITEW SDK_OVERLAY.MODULE_15.START;
+ WRITEW SDK_OVERLAY.MODULE_15.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_15.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_15.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_15.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_15_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_16_ID;
+ WRITEW SDK_OVERLAY.MODULE_16.START;
+ WRITEW SDK_OVERLAY.MODULE_16.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_16.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_16.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_16.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_16_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_17_ID;
+ WRITEW SDK_OVERLAY.MODULE_17.START;
+ WRITEW SDK_OVERLAY.MODULE_17.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_17.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_17.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_17.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_17_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_18_ID;
+ WRITEW SDK_OVERLAY.MODULE_18.START;
+ WRITEW SDK_OVERLAY.MODULE_18.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_18.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_18.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_18.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_18_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_19_ID;
+ WRITEW SDK_OVERLAY.MODULE_19.START;
+ WRITEW SDK_OVERLAY.MODULE_19.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_19.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_19.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_19.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_19_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_20_ID;
+ WRITEW SDK_OVERLAY.MODULE_20.START;
+ WRITEW SDK_OVERLAY.MODULE_20.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_20.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_20.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_20.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_20_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_21_ID;
+ WRITEW SDK_OVERLAY.MODULE_21.START;
+ WRITEW SDK_OVERLAY.MODULE_21.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_21.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_21.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_21.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_21_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_22_ID;
+ WRITEW SDK_OVERLAY.MODULE_22.START;
+ WRITEW SDK_OVERLAY.MODULE_22.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_22.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_22.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_22.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_22_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_23_ID;
+ WRITEW SDK_OVERLAY.MODULE_23.START;
+ WRITEW SDK_OVERLAY.MODULE_23.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_23.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_23.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_23.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_23_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_24_ID;
+ WRITEW SDK_OVERLAY.MODULE_24.START;
+ WRITEW SDK_OVERLAY.MODULE_24.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_24.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_24.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_24.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_24_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_25_ID;
+ WRITEW SDK_OVERLAY.MODULE_25.START;
+ WRITEW SDK_OVERLAY.MODULE_25.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_25.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_25.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_25.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_25_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_26_ID;
+ WRITEW SDK_OVERLAY.MODULE_26.START;
+ WRITEW SDK_OVERLAY.MODULE_26.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_26.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_26.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_26.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_26_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_27_ID;
+ WRITEW SDK_OVERLAY.MODULE_27.START;
+ WRITEW SDK_OVERLAY.MODULE_27.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_27.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_27.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_27.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_27_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_28_ID;
+ WRITEW SDK_OVERLAY.MODULE_28.START;
+ WRITEW SDK_OVERLAY.MODULE_28.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_28.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_28.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_28.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_28_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_29_ID;
+ WRITEW SDK_OVERLAY.MODULE_29.START;
+ WRITEW SDK_OVERLAY.MODULE_29.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_29.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_29.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_29.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_29_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_30_ID;
+ WRITEW SDK_OVERLAY.MODULE_30.START;
+ WRITEW SDK_OVERLAY.MODULE_30.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_30.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_30.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_30.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_30_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_31_ID;
+ WRITEW SDK_OVERLAY.MODULE_31.START;
+ WRITEW SDK_OVERLAY.MODULE_31.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_31.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_31.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_31.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_31_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_32_ID;
+ WRITEW SDK_OVERLAY.MODULE_32.START;
+ WRITEW SDK_OVERLAY.MODULE_32.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_32.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_32.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_32.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_32_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_33_ID;
+ WRITEW SDK_OVERLAY.MODULE_33.START;
+ WRITEW SDK_OVERLAY.MODULE_33.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_33.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_33.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_33.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_33_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_34_ID;
+ WRITEW SDK_OVERLAY.MODULE_34.START;
+ WRITEW SDK_OVERLAY.MODULE_34.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_34.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_34.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_34.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_34_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_35_ID;
+ WRITEW SDK_OVERLAY.MODULE_35.START;
+ WRITEW SDK_OVERLAY.MODULE_35.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_35.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_35.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_35.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_35_ID;
+ WRITEW 0;
+
+ WRITEW SDK_OVERLAY_MODULE_36_ID;
+ WRITEW SDK_OVERLAY.MODULE_36.START;
+ WRITEW SDK_OVERLAY.MODULE_36.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_36.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_36.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_36.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_36_ID;
+ WRITEW 0;
+
OVERLAY_TABLE(MODULE_37, 37)
OVERLAY_TABLE(MODULE_38, 38)
OVERLAY_TABLE(MODULE_39, 39)
diff --git a/arm9/asm/DGT_hash1.s b/arm9/asm/DGT_hash1.s
new file mode 100644
index 00000000..a9d6778d
--- /dev/null
+++ b/arm9/asm/DGT_hash1.s
@@ -0,0 +1,404 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start ProcessBlock
+ProcessBlock: ; 0x020D2798
+ stmdb sp!, {r4-r11,lr}
+ sub sp, sp, #0x4
+ add r3, r0, #0x18
+ ldr r5, [r0, #0x0]
+ ldr r4, [r0, #0x4]
+ ldr lr, [r0, #0x8]
+ ldr r12, [r0, #0xc]
+ ldr r2, _020D2B78 ; =0x02106900
+ mov r8, r3
+ mov r7, #0x0
+_020D27C0:
+ mvn r1, r4
+ and r6, r4, lr
+ and r1, r1, r12
+ orr r1, r6, r1
+ ldr r6, [r8, #0x0]
+ add r1, r5, r1
+ ldr r5, [r2, #0x0]
+ add r1, r6, r1
+ add r5, r5, r1
+ mov r1, r5, lsl #0x7
+ orr r1, r1, r5, lsr #0x19
+ add r5, r4, r1
+ mvn r1, r5
+ and r6, r5, r4
+ and r1, r1, lr
+ orr r1, r6, r1
+ ldr r6, [r8, #0x4]
+ add r1, r12, r1
+ ldr r9, [r2, #0x4]
+ add r1, r6, r1
+ add r6, r9, r1
+ mov r1, r6, lsl #0xc
+ orr r1, r1, r6, lsr #0x14
+ add r12, r5, r1
+ mvn r1, r12
+ and r6, r12, r5
+ and r1, r1, r4
+ orr r6, r6, r1
+ add r1, r8, #0xc
+ ldr r9, [r8, #0x8]
+ add r6, lr, r6
+ add r6, r9, r6
+ ldr r9, [r2, #0x8]
+ ldr r1, [r1, #0x0]
+ add r10, r9, r6
+ add r6, r2, #0xc
+ ldr r6, [r6, #0x0]
+ mov r9, r10, lsl #0x11
+ orr r9, r9, r10, lsr #0xf
+ add lr, r12, r9
+ add r2, r2, #0x10
+ add r8, r8, #0x10
+ and r10, lr, r12
+ mvn r9, lr
+ and r9, r9, r5
+ orr r9, r10, r9
+ add r4, r4, r9
+ add r1, r1, r4
+ add r4, r6, r1
+ mov r1, r4, lsl #0x16
+ orr r1, r1, r4, lsr #0xa
+ add r4, lr, r1
+ add r7, r7, #0x1
+ cmp r7, #0x4
+ blt _020D27C0
+ ldr r6, _020D2B7C ; =0x02106840
+ mov r1, #0x0
+_020D28A4:
+ mvn r7, r12
+ ldr r9, [r6, #0x0]
+ and r8, r4, r12
+ and r7, lr, r7
+ orr r7, r8, r7
+ ldr r8, [r3, r9, lsl #0x2]
+ add r5, r5, r7
+ ldr r7, [r2, #0x0]
+ add r5, r8, r5
+ add r7, r7, r5
+ mov r5, r7, lsl #0x5
+ orr r5, r5, r7, lsr #0x1b
+ add r5, r4, r5
+ mvn r8, lr
+ ldr r7, [r6, #0x4]
+ and r9, r5, lr
+ and r8, r4, r8
+ orr r10, r9, r8
+ mvn r8, r4
+ ldr r9, [r6, #0x8]
+ ldr r11, [r3, r7, lsl #0x2]
+ add r7, r12, r10
+ add r10, r11, r7
+ add r7, r6, #0xc
+ ldr r9, [r3, r9, lsl #0x2]
+ and r8, r5, r8
+ ldr r7, [r7, #0x0]
+ ldr r11, [r2, #0x4]
+ ldr r7, [r3, r7, lsl #0x2]
+ add r11, r11, r10
+ mov r10, r11, lsl #0x9
+ orr r10, r10, r11, lsr #0x17
+ add r12, r5, r10
+ ldr r10, [r2, #0x8]
+ and r11, r12, r4
+ orr r8, r11, r8
+ add r8, lr, r8
+ add r8, r9, r8
+ add r10, r10, r8
+ add r8, r2, #0xc
+ ldr r8, [r8, #0x0]
+ mov r9, r10, lsl #0xe
+ orr r9, r9, r10, lsr #0x12
+ add lr, r12, r9
+ add r2, r2, #0x10
+ add r6, r6, #0x10
+ and r10, lr, r5
+ mvn r9, r5
+ and r9, r12, r9
+ orr r9, r10, r9
+ add r4, r4, r9
+ add r4, r7, r4
+ add r7, r8, r4
+ mov r4, r7, lsl #0x14
+ orr r4, r4, r7, lsr #0xc
+ add r4, lr, r4
+ add r1, r1, #0x1
+ cmp r1, #0x4
+ blt _020D28A4
+ mov r7, #0x0
+_020D2994:
+ ldr r8, [r6, #0x0]
+ eor r1, r4, lr
+ eor r1, r12, r1
+ add r1, r5, r1
+ ldr r8, [r3, r8, lsl #0x2]
+ ldr r5, [r2, #0x0]
+ add r1, r8, r1
+ add r5, r5, r1
+ mov r1, r5, lsl #0x4
+ orr r1, r1, r5, lsr #0x1c
+ add r5, r4, r1
+ ldr r8, [r6, #0x4]
+ eor r1, r5, r4
+ eor r1, lr, r1
+ ldr r8, [r3, r8, lsl #0x2]
+ add r1, r12, r1
+ ldr r9, [r6, #0x8]
+ ldr r10, [r2, #0x4]
+ add r1, r8, r1
+ add r8, r10, r1
+ mov r1, r8, lsl #0xb
+ orr r1, r1, r8, lsr #0x15
+ add r12, r5, r1
+ eor r8, r12, r5
+ eor r8, r4, r8
+ ldr r9, [r3, r9, lsl #0x2]
+ add r8, lr, r8
+ add r9, r9, r8
+ ldr r10, [r2, #0x8]
+ add r1, r2, #0xc
+ ldr r8, [r6, #0xc]
+ add r10, r10, r9
+ ldr r9, [r3, r8, lsl #0x2]
+ mov r8, r10, lsl #0x10
+ orr r8, r8, r10, lsr #0x10
+ add lr, r12, r8
+ eor r8, lr, r12
+ eor r8, r5, r8
+ add r4, r4, r8
+ add r7, r7, #0x1
+ ldr r1, [r1, #0x0]
+ add r4, r9, r4
+ add r4, r1, r4
+ mov r1, r4, lsl #0x17
+ orr r1, r1, r4, lsr #0x9
+ add r2, r2, #0x10
+ add r6, r6, #0x10
+ add r4, lr, r1
+ cmp r7, #0x4
+ blt _020D2994
+ mov r10, #0x0
+_020D2A60:
+ mvn r1, r12
+ ldr r7, [r6, #0x0]
+ orr r1, r4, r1
+ eor r1, lr, r1
+ ldr r7, [r3, r7, lsl #0x2]
+ add r1, r5, r1
+ ldr r5, [r2, #0x0]
+ add r1, r7, r1
+ add r5, r5, r1
+ mov r1, r5, lsl #0x6
+ orr r1, r1, r5, lsr #0x1a
+ add r5, r4, r1
+ mvn r1, lr
+ ldr r7, [r6, #0x4]
+ orr r1, r5, r1
+ eor r1, r4, r1
+ ldr r8, [r6, #0x8]
+ ldr r7, [r3, r7, lsl #0x2]
+ add r1, r12, r1
+ ldr r9, [r2, #0x4]
+ add r1, r7, r1
+ add r9, r9, r1
+ mov r7, r9, lsl #0xa
+ add r1, r6, #0xc
+ orr r9, r7, r9, lsr #0x16
+ ldr r1, [r1, #0x0]
+ add r7, r2, #0xc
+ add r12, r5, r9
+ ldr r8, [r3, r8, lsl #0x2]
+ ldr r7, [r7, #0x0]
+ ldr r1, [r3, r1, lsl #0x2]
+ ldr r9, [r2, #0x8]
+ mvn r11, r4
+ orr r11, r12, r11
+ eor r11, r5, r11
+ add r11, lr, r11
+ add r8, r8, r11
+ add r9, r9, r8
+ mov r8, r9, lsl #0xf
+ orr r8, r8, r9, lsr #0x11
+ add lr, r12, r8
+ add r2, r2, #0x10
+ add r6, r6, #0x10
+ mvn r8, r5
+ orr r8, lr, r8
+ eor r8, r12, r8
+ add r4, r4, r8
+ add r1, r1, r4
+ add r4, r7, r1
+ mov r1, r4, lsl #0x15
+ orr r1, r1, r4, lsr #0xb
+ add r4, lr, r1
+ add r10, r10, #0x1
+ cmp r10, #0x4
+ blt _020D2A60
+ ldr r1, [r0, #0x0]
+ add r1, r1, r5
+ str r1, [r0, #0x0]
+ ldr r1, [r0, #0x4]
+ add r1, r1, r4
+ str r1, [r0, #0x4]
+ ldr r1, [r0, #0x8]
+ add r1, r1, lr
+ str r1, [r0, #0x8]
+ ldr r1, [r0, #0xc]
+ add r1, r1, r12
+ str r1, [r0, #0xc]
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r11,lr}
+ bx lr
+ .balign 4
+_020D2B78: .word Unk_02106900 ; = 0x02106900
+_020D2B7C: .word Unk_02106840 ; = 0x02106840
+
+ arm_func_start DGT_Hash1GetDigest_R
+DGT_Hash1GetDigest_R: ; 0x020D2B80
+ stmdb sp!, {r4-r7,lr}
+ sub sp, sp, #0x4
+ mov r6, r1
+ ldr r1, [r6, #0x14]
+ ldr r3, [r6, #0x10]
+ mov r7, r0
+ mov r4, r1, lsl #0x3
+ ldr r1, _020D2C40 ; =0x0210683C
+ mov r0, r6
+ mov r2, #0x1
+ orr r4, r4, r3, lsr #0x1d
+ mov r5, r3, lsl #0x3
+ bl DGT_Hash1SetSource
+ ldr r0, [r6, #0x10]
+ mov r1, #0x0
+ and r3, r0, #0x3f
+ rsb r2, r3, #0x40
+ cmp r2, #0x8
+ bhs _020D2BE8
+ add r0, r6, #0x18
+ add r0, r0, r3
+ bl MI_CpuFill8
+ mov r0, r6
+ bl ProcessBlock
+ mov r3, #0x0
+ mov r2, #0x40
+_020D2BE8:
+ cmp r2, #0x8
+ bls _020D2C04
+ add r0, r6, #0x18
+ add r0, r0, r3
+ sub r2, r2, #0x8
+ mov r1, #0x0
+ bl MI_CpuFill8
+_020D2C04:
+ str r5, [r6, #0x50]
+ mov r0, r6
+ str r4, [r6, #0x54]
+ bl ProcessBlock
+ mov r0, r6
+ mov r1, r7
+ mov r2, #0x10
+ bl MI_CpuCopy8
+ mov r0, r6
+ mov r1, #0x0
+ mov r2, #0x58
+ bl MI_CpuFill8
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r7,lr}
+ bx lr
+ .balign 4
+_020D2C40: .word Unk_0210683C ; = 0x0210683C
+
+ arm_func_start DGT_Hash1SetSource
+DGT_Hash1SetSource: ; 0x020D2C44
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0x4
+ mov r8, r0
+ add r12, r8, #0x10
+ ldr r4, [r8, #0x10]
+ mov r6, r2
+ and r3, r4, #0x3f
+ ldr r0, [r12, #0x4]
+ adds r4, r4, r6
+ str r4, [r8, #0x10]
+ adc r0, r0, #0x0
+ rsb r5, r3, #0x40
+ mov r7, r1
+ str r0, [r12, #0x4]
+ cmp r5, r6
+ bls _020D2CB0
+ cmp r6, #0x0
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ add r1, r8, #0x18
+ mov r0, r7
+ add r1, r1, r3
+ bl MI_CpuCopy8
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9,lr}
+ bx lr
+_020D2CB0:
+ add r1, r8, #0x18
+ mov r0, r7
+ mov r2, r5
+ add r1, r1, r3
+ bl MI_CpuCopy8
+ mov r0, r8
+ bl ProcessBlock
+ sub r6, r6, r5
+ mov r4, r6, lsr #0x6
+ cmp r4, #0x0
+ add r9, r7, r5
+ ble _020D2D10
+ add r7, r8, #0x18
+ mov r5, #0x40
+_020D2CE8:
+ mov r0, r9
+ mov r1, r7
+ mov r2, r5
+ bl MI_CpuCopy8
+ mov r0, r8
+ add r9, r9, #0x40
+ bl ProcessBlock
+ sub r4, r4, #0x1
+ cmp r4, #0x0
+ bgt _020D2CE8
+_020D2D10:
+ ands r2, r6, #0x3f
+ addeq sp, sp, #0x4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ mov r0, r9
+ add r1, r8, #0x18
+ bl MI_CpuCopy8
+ add sp, sp, #0x4
+ ldmia sp!, {r4-r9,lr}
+ bx lr
+
+ arm_func_start DGT_Hash1Reset
+DGT_Hash1Reset: ; 0x020D2D38
+ ldr r2, _020D2D68 ; =0x67452301
+ ldr r1, _020D2D6C ; =0xEFCDAB89
+ str r2, [r0, #0x0]
+ ldr r2, _020D2D70 ; =0x98BADCFE
+ str r1, [r0, #0x4]
+ ldr r1, _020D2D74 ; =0x10325476
+ str r2, [r0, #0x8]
+ str r1, [r0, #0xc]
+ mov r1, #0x0
+ str r1, [r0, #0x10]
+ str r1, [r0, #0x14]
+ bx lr
+ .balign 4
+_020D2D68: .word 0x67452301
+_020D2D6C: .word 0xEFCDAB89
+_020D2D70: .word 0x98BADCFE
+_020D2D74: .word 0x10325476
diff --git a/arm9/asm/DGT_hash2.s b/arm9/asm/DGT_hash2.s
new file mode 100644
index 00000000..614d700d
--- /dev/null
+++ b/arm9/asm/DGT_hash2.s
@@ -0,0 +1,443 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+ arm_func_start DGT_Hash2CalcHmac
+DGT_Hash2CalcHmac: ; 0x020D2D78
+ stmdb sp!, {r4-r8,lr}
+ sub sp, sp, #0xa0
+ ldr lr, _020D2E00 ; =0x02106A04
+ add r12, sp, #0x1c
+ mov r8, r0
+ mov r7, r1
+ mov r6, r2
+ mov r5, r3
+ mov r4, r12
+ ldmia lr!, {r0-r3}
+ stmia r12!, {r0-r3}
+ ldmia lr, {r0-r2}
+ stmia r12, {r0-r2}
+ add lr, sp, #0x38
+ add r12, sp, #0x8
+ str lr, [sp, #0x24]
+ ldr lr, _020D2E04 ; =DGT_Hash2Reset
+ str r12, [sp, #0x28]
+ ldr ip, _020D2E08 ; =DGT_Hash2SetSource
+ str lr, [sp, #0x2c]
+ ldr lr, _020D2E0C ; =DGT_Hash2GetDigest
+ str r12, [sp, #0x30]
+ ldr r12, [sp, #0xb8]
+ str lr, [sp, #0x34]
+ str r12, [sp, #0x0]
+ mov r3, r5
+ mov r0, r8
+ mov r1, r7
+ mov r2, r6
+ str r4, [sp, #0x4]
+ bl DGTi_Hash2CalcHmac
+ add sp, sp, #0xa0
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+ .balign 4
+_020D2E00: .word Unk_02106A04 ; = 0x02106A04
+_020D2E04: .word DGT_Hash2Reset
+_020D2E08: .word DGT_Hash2SetSource
+_020D2E0C: .word DGT_Hash2GetDigest
+
+ arm_func_start DGT_Hash2GetDigest
+DGT_Hash2GetDigest: ; 0x020D2E10
+ stmdb sp!, {r0-r3}
+ stmdb sp!, {r4-r6,lr}
+ ldr r0, [sp, #0x10]
+ mov r6, r1
+ ldr r3, [r0, #0x1c]
+ add r5, r0, #0x20
+ ands r1, r3, #0x3
+ mov r0, r3, asr #0x2
+ moveq r1, #0x0
+ streq r1, [r5, r0, lsl #0x2]
+ ldr r2, [sp, #0x10]
+ mov r1, #0x80
+ add r4, r2, #0x20
+ strb r1, [r4, r3]
+ add r3, r3, #0x1
+ ands r1, r3, #0x3
+ beq _020D2E68
+ mov r2, #0x0
+_020D2E58:
+ strb r2, [r4, r3]
+ add r3, r3, #0x1
+ ands r1, r3, #0x3
+ bne _020D2E58
+_020D2E68:
+ ldr r1, [sp, #0x10]
+ add r0, r0, #0x1
+ ldr r1, [r1, #0x1c]
+ cmp r1, #0x38
+ blt _020D2EB4
+ cmp r0, #0x10
+ bge _020D2E98
+ mov r1, #0x0
+_020D2E88:
+ str r1, [r5, r0, lsl #0x2]
+ add r0, r0, #0x1
+ cmp r0, #0x10
+ blt _020D2E88
+_020D2E98:
+ ldr r1, _020D3008 ; =0x02106A00
+ ldr r0, [sp, #0x10]
+ ldr r3, [r1, #0x0]
+ mov r1, r5
+ mov r2, #0x40
+ blx r3
+ mov r0, #0x0
+_020D2EB4:
+ cmp r0, #0xe
+ bge _020D2ED0
+ mov r1, #0x0
+_020D2EC0:
+ str r1, [r5, r0, lsl #0x2]
+ add r0, r0, #0x1
+ cmp r0, #0xe
+ blt _020D2EC0
+_020D2ED0:
+ ldr r0, [sp, #0x10]
+ mov r1, r5
+ ldr r2, [r0, #0x14]
+ ldr r3, _020D3008 ; =0x02106A00
+ strb r2, [r4, #0x3f]
+ mov r0, r2, lsr #0x8
+ strb r0, [r4, #0x3e]
+ mov r0, r2, lsr #0x10
+ strb r0, [r4, #0x3d]
+ mov r0, r2, lsr #0x18
+ strb r0, [r4, #0x3c]
+ ldr r0, [sp, #0x10]
+ mov r2, #0x40
+ ldr r5, [r0, #0x18]
+ strb r5, [r4, #0x3b]
+ mov r0, r5, lsr #0x8
+ strb r0, [r4, #0x3a]
+ mov r0, r5, lsr #0x10
+ strb r0, [r4, #0x39]
+ mov r0, r5, lsr #0x18
+ strb r0, [r4, #0x38]
+ ldr r0, [sp, #0x10]
+ ldr r3, [r3, #0x0]
+ blx r3
+ ldr r0, [sp, #0x10]
+ add r1, sp, #0x10
+ ldr r3, [r0, #0x0]
+ mov r0, #0x0
+ mov r2, r3, lsr #0x18
+ strb r2, [r6, #0x0]
+ mov r2, r3, lsr #0x10
+ strb r2, [r6, #0x1]
+ mov r2, r3, lsr #0x8
+ strb r2, [r6, #0x2]
+ strb r3, [r6, #0x3]
+ ldr r3, [sp, #0x10]
+ mov r2, #0x4
+ ldr r4, [r3, #0x4]
+ mov r3, r4, lsr #0x18
+ strb r3, [r6, #0x4]
+ mov r3, r4, lsr #0x10
+ strb r3, [r6, #0x5]
+ mov r3, r4, lsr #0x8
+ strb r3, [r6, #0x6]
+ strb r4, [r6, #0x7]
+ ldr r3, [sp, #0x10]
+ ldr r4, [r3, #0x8]
+ mov r3, r4, lsr #0x18
+ strb r3, [r6, #0x8]
+ mov r3, r4, lsr #0x10
+ strb r3, [r6, #0x9]
+ mov r3, r4, lsr #0x8
+ strb r3, [r6, #0xa]
+ strb r4, [r6, #0xb]
+ ldr r3, [sp, #0x10]
+ ldr r4, [r3, #0xc]
+ mov r3, r4, lsr #0x18
+ strb r3, [r6, #0xc]
+ mov r3, r4, lsr #0x10
+ strb r3, [r6, #0xd]
+ mov r3, r4, lsr #0x8
+ strb r3, [r6, #0xe]
+ strb r4, [r6, #0xf]
+ ldr r3, [sp, #0x10]
+ ldr r4, [r3, #0x10]
+ mov r3, r4, lsr #0x18
+ strb r3, [r6, #0x10]
+ mov r3, r4, lsr #0x10
+ strb r3, [r6, #0x11]
+ mov r3, r4, lsr #0x8
+ strb r3, [r6, #0x12]
+ strb r4, [r6, #0x13]
+ ldr r3, [sp, #0x10]
+ str r0, [r3, #0x1c]
+ bl MIi_CpuClear32
+ ldmia sp!, {r4-r6,lr}
+ add sp, sp, #0x10
+ bx lr
+ .balign 4
+_020D3008: .word Unk_02106A00 ; = 0x02106A00
+
+ arm_func_start DGT_Hash2SetSource
+DGT_Hash2SetSource: ; 0x020D300C
+ stmdb sp!, {r4-r8,lr}
+ mov r8, r0
+ movs r6, r2
+ mov r7, r1
+ add r5, r8, #0x20
+ ldmeqia sp!, {r4-r8,lr}
+ bxeq lr
+ ldr r0, [r8, #0x14]
+ add r1, r0, r6, lsl #0x3
+ cmp r1, r0
+ ldrcc r0, [r8, #0x18]
+ addcc r0, r0, #0x1
+ strcc r0, [r8, #0x18]
+ ldr r0, [r8, #0x18]
+ add r0, r0, r6, lsr #0x1d
+ str r0, [r8, #0x18]
+ str r1, [r8, #0x14]
+ ldr r1, [r8, #0x1c]
+ cmp r1, #0x0
+ beq _020D30CC
+ add r0, r1, r6
+ cmp r0, #0x40
+ blo _020D30A8
+ rsb r4, r1, #0x40
+ mov r0, r7
+ mov r2, r4
+ add r1, r5, r1
+ bl MI_CpuCopy8
+ ldr r1, _020D3164 ; =0x02106A00
+ mov r0, r8
+ ldr r3, [r1, #0x0]
+ mov r1, r5
+ mov r2, #0x40
+ sub r6, r6, r4
+ add r7, r7, r4
+ blx r3
+ mov r0, #0x0
+ str r0, [r8, #0x1c]
+ b _020D30CC
+_020D30A8:
+ mov r0, r7
+ mov r2, r6
+ add r1, r5, r1
+ bl MI_CpuCopy8
+ ldr r0, [r8, #0x1c]
+ add r0, r0, r6
+ str r0, [r8, #0x1c]
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+_020D30CC:
+ cmp r6, #0x40
+ blo _020D313C
+ bic r4, r6, #0x3f
+ sub r6, r6, r4
+ ands r0, r7, #0x3
+ bne _020D3104
+ ldr r1, _020D3164 ; =0x02106A00
+ mov r0, r8
+ ldr r3, [r1, #0x0]
+ mov r1, r7
+ mov r2, r4
+ blx r3
+ add r7, r7, r4
+ b _020D313C
+_020D3104:
+ mov r0, r7
+ mov r1, r5
+ mov r2, #0x40
+ bl MI_CpuCopy8
+ ldr r1, _020D3164 ; =0x02106A00
+ mov r0, r8
+ ldr r3, [r1, #0x0]
+ mov r1, r5
+ mov r2, #0x40
+ add r7, r7, #0x40
+ blx r3
+ sub r4, r4, #0x40
+ cmp r4, #0x0
+ bgt _020D3104
+_020D313C:
+ str r6, [r8, #0x1c]
+ cmp r6, #0x0
+ ldmeqia sp!, {r4-r8,lr}
+ bxeq lr
+ mov r0, r7
+ mov r1, r5
+ mov r2, r6
+ bl MI_CpuCopy8
+ ldmia sp!, {r4-r8,lr}
+ bx lr
+ .balign 4
+_020D3164: .word Unk_02106A00 ; = 0x02106A00
+
+ arm_func_start DGT_Hash2Reset
+DGT_Hash2Reset: ; 0x020D3168
+ ldr r1, _020D31A4 ; =0x67452301
+ ldr r2, _020D31A8 ; =0xEFCDAB89
+ str r1, [r0, #0x0]
+ ldr r1, _020D31AC ; =0x98BADCFE
+ str r2, [r0, #0x4]
+ ldr r2, _020D31B0 ; =0x10325476
+ str r1, [r0, #0x8]
+ ldr r1, _020D31B4 ; =0xC3D2E1F0
+ str r2, [r0, #0xc]
+ str r1, [r0, #0x10]
+ mov r1, #0x0
+ str r1, [r0, #0x14]
+ str r1, [r0, #0x18]
+ str r1, [r0, #0x1c]
+ bx lr
+ .balign 4
+_020D31A4: .word 0x67452301
+_020D31A8: .word 0xEFCDAB89
+_020D31AC: .word 0x98BADCFE
+_020D31B0: .word 0x10325476
+_020D31B4: .word 0xC3D2E1F0
+
+ arm_func_start DGTi_Hash2CalcHmac
+DGTi_Hash2CalcHmac: ; 0x020D31B8
+ stmdb sp!, {r4-r9,lr}
+ sub sp, sp, #0xc4
+ ldr r5, [sp, #0xe0]
+ ldr r4, [sp, #0xe4]
+ movs r9, r0
+ mov r8, r1
+ mov r7, r2
+ mov r6, r3
+ addeq sp, sp, #0xc4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ cmp r8, #0x0
+ addeq sp, sp, #0xc4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ cmp r7, #0x0
+ addeq sp, sp, #0xc4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ cmp r6, #0x0
+ addeq sp, sp, #0xc4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ cmp r5, #0x0
+ addeq sp, sp, #0xc4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ cmp r4, #0x0
+ addeq sp, sp, #0xc4
+ ldmeqia sp!, {r4-r9,lr}
+ bxeq lr
+ ldr r0, [r4, #0x4]
+ cmp r5, r0
+ ble _020D3278
+ ldr r0, [r4, #0x8]
+ ldr r1, [r4, #0x10]
+ blx r1
+ ldr r0, [r4, #0x8]
+ ldr r3, [r4, #0x14]
+ mov r1, r6
+ mov r2, r5
+ blx r3
+ ldr r0, [r4, #0x8]
+ ldr r2, [r4, #0x18]
+ add r1, sp, #0x0
+ blx r2
+ ldr r5, [r4, #0x0]
+ add r6, sp, #0x0
+_020D3278:
+ cmp r5, #0x0
+ mov r0, #0x0
+ ble _020D32A0
+ add r2, sp, #0x40
+_020D3288:
+ ldrb r1, [r6, r0]
+ add r0, r0, #0x1
+ cmp r0, r5
+ eor r1, r1, #0x36
+ strb r1, [r2], #0x1
+ blt _020D3288
+_020D32A0:
+ ldr r1, [r4, #0x4]
+ cmp r0, r1
+ bge _020D32CC
+ add r1, sp, #0x40
+ add r3, r1, r0
+ mov r2, #0x36
+_020D32B8:
+ strb r2, [r3], #0x1
+ ldr r1, [r4, #0x4]
+ add r0, r0, #0x1
+ cmp r0, r1
+ blt _020D32B8
+_020D32CC:
+ ldr r0, [r4, #0x8]
+ ldr r1, [r4, #0x10]
+ blx r1
+ ldr r0, [r4, #0x8]
+ ldr r2, [r4, #0x4]
+ ldr r3, [r4, #0x14]
+ add r1, sp, #0x40
+ blx r3
+ ldr r0, [r4, #0x8]
+ ldr r3, [r4, #0x14]
+ mov r1, r8
+ mov r2, r7
+ blx r3
+ ldr r0, [r4, #0x8]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r4, #0x18]
+ blx r2
+ cmp r5, #0x0
+ mov r2, #0x0
+ ble _020D3338
+ add r1, sp, #0x80
+_020D3320:
+ ldrb r0, [r6, r2]
+ add r2, r2, #0x1
+ cmp r2, r5
+ eor r0, r0, #0x5c
+ strb r0, [r1], #0x1
+ blt _020D3320
+_020D3338:
+ ldr r0, [r4, #0x4]
+ cmp r2, r0
+ bge _020D3364
+ add r0, sp, #0x80
+ add r3, r0, r2
+ mov r1, #0x5c
+_020D3350:
+ strb r1, [r3], #0x1
+ ldr r0, [r4, #0x4]
+ add r2, r2, #0x1
+ cmp r2, r0
+ blt _020D3350
+_020D3364:
+ ldr r0, [r4, #0x8]
+ ldr r1, [r4, #0x10]
+ blx r1
+ ldr r0, [r4, #0x8]
+ ldr r2, [r4, #0x4]
+ ldr r3, [r4, #0x14]
+ add r1, sp, #0x80
+ blx r3
+ ldr r0, [r4, #0x8]
+ ldr r1, [r4, #0xc]
+ ldr r2, [r4, #0x0]
+ ldr r3, [r4, #0x14]
+ blx r3
+ ldr r0, [r4, #0x8]
+ ldr r2, [r4, #0x18]
+ mov r1, r9
+ blx r2
+ add sp, sp, #0xc4
+ ldmia sp!, {r4-r9,lr}
+ bx lr
+ .balign 4
diff --git a/arm9/asm/DGT_sha1s_arm4cw.s b/arm9/asm/DGT_sha1s_arm4cw.s
new file mode 100644
index 00000000..1f110a72
--- /dev/null
+++ b/arm9/asm/DGT_sha1s_arm4cw.s
@@ -0,0 +1,179 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+
+ .text
+
+_020D33B4: .word 0x00FF00FF
+_020D33B8: .word 0x5A827999
+_020D33BC: .word 0x6ED9EBA1
+_020D33C0: .word 0x8F1BBCDC
+_020D33C4: .word 0xCA62C1D6
+
+ arm_func_start DGTi_hash2_arm4_small
+DGTi_hash2_arm4_small: ; 0x020D33C8
+ stmdb sp!, {r4-r12,lr}
+ ldmia r0, {r3,r9-r12}
+ sub sp, sp, #0x84
+ str r2, [sp, #0x80]
+_020D33D8:
+ ldr r8, _020D33B8 ; =0x5A827999
+ ldr r7, _020D33B4 ; =0x00FF00FF
+ mov r6, sp
+ mov r5, #0x0
+_020D33E8:
+ ldr r4, [r1], #0x4
+ add r2, r8, r12
+ add r2, r2, r3, ror #0x1B
+ and lr, r4, r7
+ and r4, r7, r4, ror #0x18
+ orr r4, r4, lr, ror #0x8
+ str r4, [r6, #0x40]
+ str r4, [r6], #0x4
+ add r2, r2, r4
+ eor r4, r10, r11
+ and r4, r4, r9
+ eor r4, r4, r11
+ add r2, r2, r4
+ mov r9, r9, ror #0x2
+ mov r12, r11
+ mov r11, r10
+ mov r10, r9
+ mov r9, r3
+ mov r3, r2
+ add r5, r5, #0x4
+ cmp r5, #0x40
+ blt _020D33E8
+ mov r7, #0x0
+ mov r6, sp
+_020D3448:
+ ldr r2, [r6, #0x0]
+ ldr r5, [r6, #0x8]
+ ldr r4, [r6, #0x20]
+ ldr lr, [r6, #0x34]
+ eor r2, r2, r5
+ eor r4, r4, lr
+ eor r2, r2, r4
+ mov r2, r2, ror #0x1F
+ str r2, [r6, #0x40]
+ str r2, [r6], #0x4
+ add r2, r2, r12
+ add r2, r2, r8
+ add r2, r2, r3, ror #0x1B
+ eor r4, r10, r11
+ and r4, r4, r9
+ eor r4, r4, r11
+ add r2, r2, r4
+ mov r9, r9, ror #0x2
+ mov r12, r11
+ mov r11, r10
+ mov r10, r9
+ mov r9, r3
+ mov r3, r2
+ add r7, r7, #0x4
+ cmp r7, #0x10
+ blt _020D3448
+ ldr r8, _020D33BC ; =0x6ED9EBA1
+ mov r7, #0x0
+_020D34B8:
+ ldr r2, [r6, #0x0]
+ ldr r4, [r6, #0x8]
+ ldr lr, [r6, #0x20]
+ ldr r5, [r6, #0x34]
+ eor r2, r2, r4
+ eor lr, lr, r5
+ eor r2, r2, lr
+ mov r2, r2, ror #0x1F
+ str r2, [r6, #0x40]
+ str r2, [r6], #0x4
+ add r2, r2, r12
+ add r2, r2, r8
+ add r2, r2, r3, ror #0x1B
+ eor lr, r9, r10
+ eor lr, lr, r11
+ add r2, r2, lr
+ mov r9, r9, ror #0x2
+ mov r12, r11
+ mov r11, r10
+ mov r10, r9
+ mov r9, r3
+ mov r3, r2
+ add r7, r7, #0x1
+ cmp r7, #0xc
+ moveq r6, sp
+ cmp r7, #0x14
+ blt _020D34B8
+ ldr r8, _020D33C0 ; =0x8F1BBCDC
+ mov r7, #0x0
+_020D352C:
+ ldr r2, [r6, #0x0]
+ ldr lr, [r6, #0x8]
+ ldr r5, [r6, #0x20]
+ ldr r4, [r6, #0x34]
+ eor r2, r2, lr
+ eor r5, r5, r4
+ eor r2, r2, r5
+ mov r2, r2, ror #0x1F
+ str r2, [r6, #0x40]
+ str r2, [r6], #0x4
+ add r2, r2, r12
+ add r2, r2, r8
+ add r2, r2, r3, ror #0x1B
+ orr r5, r9, r10
+ and r5, r5, r11
+ and r4, r9, r10
+ orr r5, r5, r4
+ add r2, r2, r5
+ mov r9, r9, ror #0x2
+ mov r12, r11
+ mov r11, r10
+ mov r10, r9
+ mov r9, r3
+ mov r3, r2
+ add r7, r7, #0x1
+ cmp r7, #0x8
+ moveq r6, sp
+ cmp r7, #0x14
+ blt _020D352C
+ ldr r8, _020D33C4 ; =0xCA62C1D6
+ mov r7, #0x0
+_020D35A8:
+ ldr r2, [r6, #0x0]
+ ldr r5, [r6, #0x8]
+ ldr r4, [r6, #0x20]
+ ldr lr, [r6, #0x34]
+ eor r2, r2, r5
+ eor r4, r4, lr
+ eor r2, r2, r4
+ mov r2, r2, ror #0x1F
+ str r2, [r6, #0x40]
+ str r2, [r6], #0x4
+ add r2, r2, r12
+ add r2, r2, r8
+ add r2, r2, r3, ror #0x1B
+ eor r4, r9, r10
+ eor r4, r4, r11
+ add r2, r2, r4
+ mov r9, r9, ror #0x2
+ mov r12, r11
+ mov r11, r10
+ mov r10, r9
+ mov r9, r3
+ mov r3, r2
+ add r7, r7, #0x1
+ cmp r7, #0x4
+ moveq r6, sp
+ cmp r7, #0x14
+ blt _020D35A8
+ ldmia r0, {r2,r4,r6-r7,lr}
+ add r3, r3, r2
+ add r9, r9, r4
+ add r10, r10, r6
+ add r11, r11, r7
+ add r12, r12, lr
+ stmia r0, {r3,r9-r12}
+ ldr lr, [sp, #0x80]
+ subs lr, lr, #0x40
+ str lr, [sp, #0x80]
+ bgt _020D33D8
+ add sp, sp, #0x84
+ ldmia sp!, {r4-r12,pc}
diff --git a/arm9/asm/libdgt.s b/arm9/asm/libdgt.s
deleted file mode 100644
index 02a3293f..00000000
--- a/arm9/asm/libdgt.s
+++ /dev/null
@@ -1,1017 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- arm_func_start ProcessBlock
-ProcessBlock: ; 0x020D2798
- stmdb sp!, {r4-r11,lr}
- sub sp, sp, #0x4
- add r3, r0, #0x18
- ldr r5, [r0, #0x0]
- ldr r4, [r0, #0x4]
- ldr lr, [r0, #0x8]
- ldr r12, [r0, #0xc]
- ldr r2, _020D2B78 ; =0x02106900
- mov r8, r3
- mov r7, #0x0
-_020D27C0:
- mvn r1, r4
- and r6, r4, lr
- and r1, r1, r12
- orr r1, r6, r1
- ldr r6, [r8, #0x0]
- add r1, r5, r1
- ldr r5, [r2, #0x0]
- add r1, r6, r1
- add r5, r5, r1
- mov r1, r5, lsl #0x7
- orr r1, r1, r5, lsr #0x19
- add r5, r4, r1
- mvn r1, r5
- and r6, r5, r4
- and r1, r1, lr
- orr r1, r6, r1
- ldr r6, [r8, #0x4]
- add r1, r12, r1
- ldr r9, [r2, #0x4]
- add r1, r6, r1
- add r6, r9, r1
- mov r1, r6, lsl #0xc
- orr r1, r1, r6, lsr #0x14
- add r12, r5, r1
- mvn r1, r12
- and r6, r12, r5
- and r1, r1, r4
- orr r6, r6, r1
- add r1, r8, #0xc
- ldr r9, [r8, #0x8]
- add r6, lr, r6
- add r6, r9, r6
- ldr r9, [r2, #0x8]
- ldr r1, [r1, #0x0]
- add r10, r9, r6
- add r6, r2, #0xc
- ldr r6, [r6, #0x0]
- mov r9, r10, lsl #0x11
- orr r9, r9, r10, lsr #0xf
- add lr, r12, r9
- add r2, r2, #0x10
- add r8, r8, #0x10
- and r10, lr, r12
- mvn r9, lr
- and r9, r9, r5
- orr r9, r10, r9
- add r4, r4, r9
- add r1, r1, r4
- add r4, r6, r1
- mov r1, r4, lsl #0x16
- orr r1, r1, r4, lsr #0xa
- add r4, lr, r1
- add r7, r7, #0x1
- cmp r7, #0x4
- blt _020D27C0
- ldr r6, _020D2B7C ; =0x02106840
- mov r1, #0x0
-_020D28A4:
- mvn r7, r12
- ldr r9, [r6, #0x0]
- and r8, r4, r12
- and r7, lr, r7
- orr r7, r8, r7
- ldr r8, [r3, r9, lsl #0x2]
- add r5, r5, r7
- ldr r7, [r2, #0x0]
- add r5, r8, r5
- add r7, r7, r5
- mov r5, r7, lsl #0x5
- orr r5, r5, r7, lsr #0x1b
- add r5, r4, r5
- mvn r8, lr
- ldr r7, [r6, #0x4]
- and r9, r5, lr
- and r8, r4, r8
- orr r10, r9, r8
- mvn r8, r4
- ldr r9, [r6, #0x8]
- ldr r11, [r3, r7, lsl #0x2]
- add r7, r12, r10
- add r10, r11, r7
- add r7, r6, #0xc
- ldr r9, [r3, r9, lsl #0x2]
- and r8, r5, r8
- ldr r7, [r7, #0x0]
- ldr r11, [r2, #0x4]
- ldr r7, [r3, r7, lsl #0x2]
- add r11, r11, r10
- mov r10, r11, lsl #0x9
- orr r10, r10, r11, lsr #0x17
- add r12, r5, r10
- ldr r10, [r2, #0x8]
- and r11, r12, r4
- orr r8, r11, r8
- add r8, lr, r8
- add r8, r9, r8
- add r10, r10, r8
- add r8, r2, #0xc
- ldr r8, [r8, #0x0]
- mov r9, r10, lsl #0xe
- orr r9, r9, r10, lsr #0x12
- add lr, r12, r9
- add r2, r2, #0x10
- add r6, r6, #0x10
- and r10, lr, r5
- mvn r9, r5
- and r9, r12, r9
- orr r9, r10, r9
- add r4, r4, r9
- add r4, r7, r4
- add r7, r8, r4
- mov r4, r7, lsl #0x14
- orr r4, r4, r7, lsr #0xc
- add r4, lr, r4
- add r1, r1, #0x1
- cmp r1, #0x4
- blt _020D28A4
- mov r7, #0x0
-_020D2994:
- ldr r8, [r6, #0x0]
- eor r1, r4, lr
- eor r1, r12, r1
- add r1, r5, r1
- ldr r8, [r3, r8, lsl #0x2]
- ldr r5, [r2, #0x0]
- add r1, r8, r1
- add r5, r5, r1
- mov r1, r5, lsl #0x4
- orr r1, r1, r5, lsr #0x1c
- add r5, r4, r1
- ldr r8, [r6, #0x4]
- eor r1, r5, r4
- eor r1, lr, r1
- ldr r8, [r3, r8, lsl #0x2]
- add r1, r12, r1
- ldr r9, [r6, #0x8]
- ldr r10, [r2, #0x4]
- add r1, r8, r1
- add r8, r10, r1
- mov r1, r8, lsl #0xb
- orr r1, r1, r8, lsr #0x15
- add r12, r5, r1
- eor r8, r12, r5
- eor r8, r4, r8
- ldr r9, [r3, r9, lsl #0x2]
- add r8, lr, r8
- add r9, r9, r8
- ldr r10, [r2, #0x8]
- add r1, r2, #0xc
- ldr r8, [r6, #0xc]
- add r10, r10, r9
- ldr r9, [r3, r8, lsl #0x2]
- mov r8, r10, lsl #0x10
- orr r8, r8, r10, lsr #0x10
- add lr, r12, r8
- eor r8, lr, r12
- eor r8, r5, r8
- add r4, r4, r8
- add r7, r7, #0x1
- ldr r1, [r1, #0x0]
- add r4, r9, r4
- add r4, r1, r4
- mov r1, r4, lsl #0x17
- orr r1, r1, r4, lsr #0x9
- add r2, r2, #0x10
- add r6, r6, #0x10
- add r4, lr, r1
- cmp r7, #0x4
- blt _020D2994
- mov r10, #0x0
-_020D2A60:
- mvn r1, r12
- ldr r7, [r6, #0x0]
- orr r1, r4, r1
- eor r1, lr, r1
- ldr r7, [r3, r7, lsl #0x2]
- add r1, r5, r1
- ldr r5, [r2, #0x0]
- add r1, r7, r1
- add r5, r5, r1
- mov r1, r5, lsl #0x6
- orr r1, r1, r5, lsr #0x1a
- add r5, r4, r1
- mvn r1, lr
- ldr r7, [r6, #0x4]
- orr r1, r5, r1
- eor r1, r4, r1
- ldr r8, [r6, #0x8]
- ldr r7, [r3, r7, lsl #0x2]
- add r1, r12, r1
- ldr r9, [r2, #0x4]
- add r1, r7, r1
- add r9, r9, r1
- mov r7, r9, lsl #0xa
- add r1, r6, #0xc
- orr r9, r7, r9, lsr #0x16
- ldr r1, [r1, #0x0]
- add r7, r2, #0xc
- add r12, r5, r9
- ldr r8, [r3, r8, lsl #0x2]
- ldr r7, [r7, #0x0]
- ldr r1, [r3, r1, lsl #0x2]
- ldr r9, [r2, #0x8]
- mvn r11, r4
- orr r11, r12, r11
- eor r11, r5, r11
- add r11, lr, r11
- add r8, r8, r11
- add r9, r9, r8
- mov r8, r9, lsl #0xf
- orr r8, r8, r9, lsr #0x11
- add lr, r12, r8
- add r2, r2, #0x10
- add r6, r6, #0x10
- mvn r8, r5
- orr r8, lr, r8
- eor r8, r12, r8
- add r4, r4, r8
- add r1, r1, r4
- add r4, r7, r1
- mov r1, r4, lsl #0x15
- orr r1, r1, r4, lsr #0xb
- add r4, lr, r1
- add r10, r10, #0x1
- cmp r10, #0x4
- blt _020D2A60
- ldr r1, [r0, #0x0]
- add r1, r1, r5
- str r1, [r0, #0x0]
- ldr r1, [r0, #0x4]
- add r1, r1, r4
- str r1, [r0, #0x4]
- ldr r1, [r0, #0x8]
- add r1, r1, lr
- str r1, [r0, #0x8]
- ldr r1, [r0, #0xc]
- add r1, r1, r12
- str r1, [r0, #0xc]
- add sp, sp, #0x4
- ldmia sp!, {r4-r11,lr}
- bx lr
- .balign 4
-_020D2B78: .word Unk_02106900 ; = 0x02106900
-_020D2B7C: .word Unk_02106840 ; = 0x02106840
-
- arm_func_start DGT_Hash1GetDigest_R
-DGT_Hash1GetDigest_R: ; 0x020D2B80
- stmdb sp!, {r4-r7,lr}
- sub sp, sp, #0x4
- mov r6, r1
- ldr r1, [r6, #0x14]
- ldr r3, [r6, #0x10]
- mov r7, r0
- mov r4, r1, lsl #0x3
- ldr r1, _020D2C40 ; =0x0210683C
- mov r0, r6
- mov r2, #0x1
- orr r4, r4, r3, lsr #0x1d
- mov r5, r3, lsl #0x3
- bl DGT_Hash1SetSource
- ldr r0, [r6, #0x10]
- mov r1, #0x0
- and r3, r0, #0x3f
- rsb r2, r3, #0x40
- cmp r2, #0x8
- bhs _020D2BE8
- add r0, r6, #0x18
- add r0, r0, r3
- bl MI_CpuFill8
- mov r0, r6
- bl ProcessBlock
- mov r3, #0x0
- mov r2, #0x40
-_020D2BE8:
- cmp r2, #0x8
- bls _020D2C04
- add r0, r6, #0x18
- add r0, r0, r3
- sub r2, r2, #0x8
- mov r1, #0x0
- bl MI_CpuFill8
-_020D2C04:
- str r5, [r6, #0x50]
- mov r0, r6
- str r4, [r6, #0x54]
- bl ProcessBlock
- mov r0, r6
- mov r1, r7
- mov r2, #0x10
- bl MI_CpuCopy8
- mov r0, r6
- mov r1, #0x0
- mov r2, #0x58
- bl MI_CpuFill8
- add sp, sp, #0x4
- ldmia sp!, {r4-r7,lr}
- bx lr
- .balign 4
-_020D2C40: .word Unk_0210683C ; = 0x0210683C
-
- arm_func_start DGT_Hash1SetSource
-DGT_Hash1SetSource: ; 0x020D2C44
- stmdb sp!, {r4-r9,lr}
- sub sp, sp, #0x4
- mov r8, r0
- add r12, r8, #0x10
- ldr r4, [r8, #0x10]
- mov r6, r2
- and r3, r4, #0x3f
- ldr r0, [r12, #0x4]
- adds r4, r4, r6
- str r4, [r8, #0x10]
- adc r0, r0, #0x0
- rsb r5, r3, #0x40
- mov r7, r1
- str r0, [r12, #0x4]
- cmp r5, r6
- bls _020D2CB0
- cmp r6, #0x0
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r9,lr}
- bxeq lr
- add r1, r8, #0x18
- mov r0, r7
- add r1, r1, r3
- bl MI_CpuCopy8
- add sp, sp, #0x4
- ldmia sp!, {r4-r9,lr}
- bx lr
-_020D2CB0:
- add r1, r8, #0x18
- mov r0, r7
- mov r2, r5
- add r1, r1, r3
- bl MI_CpuCopy8
- mov r0, r8
- bl ProcessBlock
- sub r6, r6, r5
- mov r4, r6, lsr #0x6
- cmp r4, #0x0
- add r9, r7, r5
- ble _020D2D10
- add r7, r8, #0x18
- mov r5, #0x40
-_020D2CE8:
- mov r0, r9
- mov r1, r7
- mov r2, r5
- bl MI_CpuCopy8
- mov r0, r8
- add r9, r9, #0x40
- bl ProcessBlock
- sub r4, r4, #0x1
- cmp r4, #0x0
- bgt _020D2CE8
-_020D2D10:
- ands r2, r6, #0x3f
- addeq sp, sp, #0x4
- ldmeqia sp!, {r4-r9,lr}
- bxeq lr
- mov r0, r9
- add r1, r8, #0x18
- bl MI_CpuCopy8
- add sp, sp, #0x4
- ldmia sp!, {r4-r9,lr}
- bx lr
-
- arm_func_start DGT_Hash1Reset
-DGT_Hash1Reset: ; 0x020D2D38
- ldr r2, _020D2D68 ; =0x67452301
- ldr r1, _020D2D6C ; =0xEFCDAB89
- str r2, [r0, #0x0]
- ldr r2, _020D2D70 ; =0x98BADCFE
- str r1, [r0, #0x4]
- ldr r1, _020D2D74 ; =0x10325476
- str r2, [r0, #0x8]
- str r1, [r0, #0xc]
- mov r1, #0x0
- str r1, [r0, #0x10]
- str r1, [r0, #0x14]
- bx lr
- .balign 4
-_020D2D68: .word 0x67452301
-_020D2D6C: .word 0xEFCDAB89
-_020D2D70: .word 0x98BADCFE
-_020D2D74: .word 0x10325476
-
- arm_func_start DGT_Hash2CalcHmac
-DGT_Hash2CalcHmac: ; 0x020D2D78
- stmdb sp!, {r4-r8,lr}
- sub sp, sp, #0xa0
- ldr lr, _020D2E00 ; =0x02106A04
- add r12, sp, #0x1c
- mov r8, r0
- mov r7, r1
- mov r6, r2
- mov r5, r3
- mov r4, r12
- ldmia lr!, {r0-r3}
- stmia r12!, {r0-r3}
- ldmia lr, {r0-r2}
- stmia r12, {r0-r2}
- add lr, sp, #0x38
- add r12, sp, #0x8
- str lr, [sp, #0x24]
- ldr lr, _020D2E04 ; =MATH_SHA1Init
- str r12, [sp, #0x28]
- ldr ip, _020D2E08 ; =MATH_SHA1Update
- str lr, [sp, #0x2c]
- ldr lr, _020D2E0C ; =MATH_SHA1GetHash
- str r12, [sp, #0x30]
- ldr r12, [sp, #0xb8]
- str lr, [sp, #0x34]
- str r12, [sp, #0x0]
- mov r3, r5
- mov r0, r8
- mov r1, r7
- mov r2, r6
- str r4, [sp, #0x4]
- bl MATHi_CalcHMAC
- add sp, sp, #0xa0
- ldmia sp!, {r4-r8,lr}
- bx lr
- .balign 4
-_020D2E00: .word Unk_02106A04 ; = 0x02106A04
-_020D2E04: .word MATH_SHA1Init
-_020D2E08: .word MATH_SHA1Update
-_020D2E0C: .word MATH_SHA1GetHash
-
- arm_func_start MATH_SHA1GetHash
-MATH_SHA1GetHash: ; 0x020D2E10
- stmdb sp!, {r0-r3}
- stmdb sp!, {r4-r6,lr}
- ldr r0, [sp, #0x10]
- mov r6, r1
- ldr r3, [r0, #0x1c]
- add r5, r0, #0x20
- ands r1, r3, #0x3
- mov r0, r3, asr #0x2
- moveq r1, #0x0
- streq r1, [r5, r0, lsl #0x2]
- ldr r2, [sp, #0x10]
- mov r1, #0x80
- add r4, r2, #0x20
- strb r1, [r4, r3]
- add r3, r3, #0x1
- ands r1, r3, #0x3
- beq _020D2E68
- mov r2, #0x0
-_020D2E58:
- strb r2, [r4, r3]
- add r3, r3, #0x1
- ands r1, r3, #0x3
- bne _020D2E58
-_020D2E68:
- ldr r1, [sp, #0x10]
- add r0, r0, #0x1
- ldr r1, [r1, #0x1c]
- cmp r1, #0x38
- blt _020D2EB4
- cmp r0, #0x10
- bge _020D2E98
- mov r1, #0x0
-_020D2E88:
- str r1, [r5, r0, lsl #0x2]
- add r0, r0, #0x1
- cmp r0, #0x10
- blt _020D2E88
-_020D2E98:
- ldr r1, _020D3008 ; =0x02106A00
- ldr r0, [sp, #0x10]
- ldr r3, [r1, #0x0]
- mov r1, r5
- mov r2, #0x40
- blx r3
- mov r0, #0x0
-_020D2EB4:
- cmp r0, #0xe
- bge _020D2ED0
- mov r1, #0x0
-_020D2EC0:
- str r1, [r5, r0, lsl #0x2]
- add r0, r0, #0x1
- cmp r0, #0xe
- blt _020D2EC0
-_020D2ED0:
- ldr r0, [sp, #0x10]
- mov r1, r5
- ldr r2, [r0, #0x14]
- ldr r3, _020D3008 ; =0x02106A00
- strb r2, [r4, #0x3f]
- mov r0, r2, lsr #0x8
- strb r0, [r4, #0x3e]
- mov r0, r2, lsr #0x10
- strb r0, [r4, #0x3d]
- mov r0, r2, lsr #0x18
- strb r0, [r4, #0x3c]
- ldr r0, [sp, #0x10]
- mov r2, #0x40
- ldr r5, [r0, #0x18]
- strb r5, [r4, #0x3b]
- mov r0, r5, lsr #0x8
- strb r0, [r4, #0x3a]
- mov r0, r5, lsr #0x10
- strb r0, [r4, #0x39]
- mov r0, r5, lsr #0x18
- strb r0, [r4, #0x38]
- ldr r0, [sp, #0x10]
- ldr r3, [r3, #0x0]
- blx r3
- ldr r0, [sp, #0x10]
- add r1, sp, #0x10
- ldr r3, [r0, #0x0]
- mov r0, #0x0
- mov r2, r3, lsr #0x18
- strb r2, [r6, #0x0]
- mov r2, r3, lsr #0x10
- strb r2, [r6, #0x1]
- mov r2, r3, lsr #0x8
- strb r2, [r6, #0x2]
- strb r3, [r6, #0x3]
- ldr r3, [sp, #0x10]
- mov r2, #0x4
- ldr r4, [r3, #0x4]
- mov r3, r4, lsr #0x18
- strb r3, [r6, #0x4]
- mov r3, r4, lsr #0x10
- strb r3, [r6, #0x5]
- mov r3, r4, lsr #0x8
- strb r3, [r6, #0x6]
- strb r4, [r6, #0x7]
- ldr r3, [sp, #0x10]
- ldr r4, [r3, #0x8]
- mov r3, r4, lsr #0x18
- strb r3, [r6, #0x8]
- mov r3, r4, lsr #0x10
- strb r3, [r6, #0x9]
- mov r3, r4, lsr #0x8
- strb r3, [r6, #0xa]
- strb r4, [r6, #0xb]
- ldr r3, [sp, #0x10]
- ldr r4, [r3, #0xc]
- mov r3, r4, lsr #0x18
- strb r3, [r6, #0xc]
- mov r3, r4, lsr #0x10
- strb r3, [r6, #0xd]
- mov r3, r4, lsr #0x8
- strb r3, [r6, #0xe]
- strb r4, [r6, #0xf]
- ldr r3, [sp, #0x10]
- ldr r4, [r3, #0x10]
- mov r3, r4, lsr #0x18
- strb r3, [r6, #0x10]
- mov r3, r4, lsr #0x10
- strb r3, [r6, #0x11]
- mov r3, r4, lsr #0x8
- strb r3, [r6, #0x12]
- strb r4, [r6, #0x13]
- ldr r3, [sp, #0x10]
- str r0, [r3, #0x1c]
- bl MIi_CpuClear32
- ldmia sp!, {r4-r6,lr}
- add sp, sp, #0x10
- bx lr
- .balign 4
-_020D3008: .word Unk_02106A00 ; = 0x02106A00
-
- arm_func_start MATH_SHA1Update
-MATH_SHA1Update: ; 0x020D300C
- stmdb sp!, {r4-r8,lr}
- mov r8, r0
- movs r6, r2
- mov r7, r1
- add r5, r8, #0x20
- ldmeqia sp!, {r4-r8,lr}
- bxeq lr
- ldr r0, [r8, #0x14]
- add r1, r0, r6, lsl #0x3
- cmp r1, r0
- ldrcc r0, [r8, #0x18]
- addcc r0, r0, #0x1
- strcc r0, [r8, #0x18]
- ldr r0, [r8, #0x18]
- add r0, r0, r6, lsr #0x1d
- str r0, [r8, #0x18]
- str r1, [r8, #0x14]
- ldr r1, [r8, #0x1c]
- cmp r1, #0x0
- beq _020D30CC
- add r0, r1, r6
- cmp r0, #0x40
- blo _020D30A8
- rsb r4, r1, #0x40
- mov r0, r7
- mov r2, r4
- add r1, r5, r1
- bl MI_CpuCopy8
- ldr r1, _020D3164 ; =0x02106A00
- mov r0, r8
- ldr r3, [r1, #0x0]
- mov r1, r5
- mov r2, #0x40
- sub r6, r6, r4
- add r7, r7, r4
- blx r3
- mov r0, #0x0
- str r0, [r8, #0x1c]
- b _020D30CC
-_020D30A8:
- mov r0, r7
- mov r2, r6
- add r1, r5, r1
- bl MI_CpuCopy8
- ldr r0, [r8, #0x1c]
- add r0, r0, r6
- str r0, [r8, #0x1c]
- ldmia sp!, {r4-r8,lr}
- bx lr
-_020D30CC:
- cmp r6, #0x40
- blo _020D313C
- bic r4, r6, #0x3f
- sub r6, r6, r4
- ands r0, r7, #0x3
- bne _020D3104
- ldr r1, _020D3164 ; =0x02106A00
- mov r0, r8
- ldr r3, [r1, #0x0]
- mov r1, r7
- mov r2, r4
- blx r3
- add r7, r7, r4
- b _020D313C
-_020D3104:
- mov r0, r7
- mov r1, r5
- mov r2, #0x40
- bl MI_CpuCopy8
- ldr r1, _020D3164 ; =0x02106A00
- mov r0, r8
- ldr r3, [r1, #0x0]
- mov r1, r5
- mov r2, #0x40
- add r7, r7, #0x40
- blx r3
- sub r4, r4, #0x40
- cmp r4, #0x0
- bgt _020D3104
-_020D313C:
- str r6, [r8, #0x1c]
- cmp r6, #0x0
- ldmeqia sp!, {r4-r8,lr}
- bxeq lr
- mov r0, r7
- mov r1, r5
- mov r2, r6
- bl MI_CpuCopy8
- ldmia sp!, {r4-r8,lr}
- bx lr
- .balign 4
-_020D3164: .word Unk_02106A00 ; = 0x02106A00
-
- arm_func_start MATH_SHA1Init
-MATH_SHA1Init: ; 0x020D3168
- ldr r1, _020D31A4 ; =0x67452301
- ldr r2, _020D31A8 ; =0xEFCDAB89
- str r1, [r0, #0x0]
- ldr r1, _020D31AC ; =0x98BADCFE
- str r2, [r0, #0x4]
- ldr r2, _020D31B0 ; =0x10325476
- str r1, [r0, #0x8]
- ldr r1, _020D31B4 ; =0xC3D2E1F0
- str r2, [r0, #0xc]
- str r1, [r0, #0x10]
- mov r1, #0x0
- str r1, [r0, #0x14]
- str r1, [r0, #0x18]
- str r1, [r0, #0x1c]
- bx lr
- .balign 4
-_020D31A4: .word 0x67452301
-_020D31A8: .word 0xEFCDAB89
-_020D31AC: .word 0x98BADCFE
-_020D31B0: .word 0x10325476
-_020D31B4: .word 0xC3D2E1F0
-
- arm_func_start MATHi_CalcHMAC
-MATHi_CalcHMAC: ; 0x020D31B8
- stmdb sp!, {r4-r9,lr}
- sub sp, sp, #0xc4
- ldr r5, [sp, #0xe0]
- ldr r4, [sp, #0xe4]
- movs r9, r0
- mov r8, r1
- mov r7, r2
- mov r6, r3
- addeq sp, sp, #0xc4
- ldmeqia sp!, {r4-r9,lr}
- bxeq lr
- cmp r8, #0x0
- addeq sp, sp, #0xc4
- ldmeqia sp!, {r4-r9,lr}
- bxeq lr
- cmp r7, #0x0
- addeq sp, sp, #0xc4
- ldmeqia sp!, {r4-r9,lr}
- bxeq lr
- cmp r6, #0x0
- addeq sp, sp, #0xc4
- ldmeqia sp!, {r4-r9,lr}
- bxeq lr
- cmp r5, #0x0
- addeq sp, sp, #0xc4
- ldmeqia sp!, {r4-r9,lr}
- bxeq lr
- cmp r4, #0x0
- addeq sp, sp, #0xc4
- ldmeqia sp!, {r4-r9,lr}
- bxeq lr
- ldr r0, [r4, #0x4]
- cmp r5, r0
- ble _020D3278
- ldr r0, [r4, #0x8]
- ldr r1, [r4, #0x10]
- blx r1
- ldr r0, [r4, #0x8]
- ldr r3, [r4, #0x14]
- mov r1, r6
- mov r2, r5
- blx r3
- ldr r0, [r4, #0x8]
- ldr r2, [r4, #0x18]
- add r1, sp, #0x0
- blx r2
- ldr r5, [r4, #0x0]
- add r6, sp, #0x0
-_020D3278:
- cmp r5, #0x0
- mov r0, #0x0
- ble _020D32A0
- add r2, sp, #0x40
-_020D3288:
- ldrb r1, [r6, r0]
- add r0, r0, #0x1
- cmp r0, r5
- eor r1, r1, #0x36
- strb r1, [r2], #0x1
- blt _020D3288
-_020D32A0:
- ldr r1, [r4, #0x4]
- cmp r0, r1
- bge _020D32CC
- add r1, sp, #0x40
- add r3, r1, r0
- mov r2, #0x36
-_020D32B8:
- strb r2, [r3], #0x1
- ldr r1, [r4, #0x4]
- add r0, r0, #0x1
- cmp r0, r1
- blt _020D32B8
-_020D32CC:
- ldr r0, [r4, #0x8]
- ldr r1, [r4, #0x10]
- blx r1
- ldr r0, [r4, #0x8]
- ldr r2, [r4, #0x4]
- ldr r3, [r4, #0x14]
- add r1, sp, #0x40
- blx r3
- ldr r0, [r4, #0x8]
- ldr r3, [r4, #0x14]
- mov r1, r8
- mov r2, r7
- blx r3
- ldr r0, [r4, #0x8]
- ldr r1, [r4, #0xc]
- ldr r2, [r4, #0x18]
- blx r2
- cmp r5, #0x0
- mov r2, #0x0
- ble _020D3338
- add r1, sp, #0x80
-_020D3320:
- ldrb r0, [r6, r2]
- add r2, r2, #0x1
- cmp r2, r5
- eor r0, r0, #0x5c
- strb r0, [r1], #0x1
- blt _020D3320
-_020D3338:
- ldr r0, [r4, #0x4]
- cmp r2, r0
- bge _020D3364
- add r0, sp, #0x80
- add r3, r0, r2
- mov r1, #0x5c
-_020D3350:
- strb r1, [r3], #0x1
- ldr r0, [r4, #0x4]
- add r2, r2, #0x1
- cmp r2, r0
- blt _020D3350
-_020D3364:
- ldr r0, [r4, #0x8]
- ldr r1, [r4, #0x10]
- blx r1
- ldr r0, [r4, #0x8]
- ldr r2, [r4, #0x4]
- ldr r3, [r4, #0x14]
- add r1, sp, #0x80
- blx r3
- ldr r0, [r4, #0x8]
- ldr r1, [r4, #0xc]
- ldr r2, [r4, #0x0]
- ldr r3, [r4, #0x14]
- blx r3
- ldr r0, [r4, #0x8]
- ldr r2, [r4, #0x18]
- mov r1, r9
- blx r2
- add sp, sp, #0xc4
- ldmia sp!, {r4-r9,lr}
- bx lr
- .balign 4
-_020D33B4: .word 0x00FF00FF
-_020D33B8: .word 0x5A827999
-_020D33BC: .word 0x6ED9EBA1
-_020D33C0: .word 0x8F1BBCDC
-_020D33C4: .word 0xCA62C1D6
-
- arm_func_start DGTi_hash2_arm4_small
-DGTi_hash2_arm4_small: ; 0x020D33C8
- stmdb sp!, {r4-r12,lr}
- ldmia r0, {r3,r9-r12}
- sub sp, sp, #0x84
- str r2, [sp, #0x80]
-_020D33D8:
- ldr r8, _020D33B8 ; =0x5A827999
- ldr r7, _020D33B4 ; =0x00FF00FF
- mov r6, sp
- mov r5, #0x0
-_020D33E8:
- ldr r4, [r1], #0x4
- add r2, r8, r12
- add r2, r2, r3, ror #0x1B
- and lr, r4, r7
- and r4, r7, r4, ror #0x18
- orr r4, r4, lr, ror #0x8
- str r4, [r6, #0x40]
- str r4, [r6], #0x4
- add r2, r2, r4
- eor r4, r10, r11
- and r4, r4, r9
- eor r4, r4, r11
- add r2, r2, r4
- mov r9, r9, ror #0x2
- mov r12, r11
- mov r11, r10
- mov r10, r9
- mov r9, r3
- mov r3, r2
- add r5, r5, #0x4
- cmp r5, #0x40
- blt _020D33E8
- mov r7, #0x0
- mov r6, sp
-_020D3448:
- ldr r2, [r6, #0x0]
- ldr r5, [r6, #0x8]
- ldr r4, [r6, #0x20]
- ldr lr, [r6, #0x34]
- eor r2, r2, r5
- eor r4, r4, lr
- eor r2, r2, r4
- mov r2, r2, ror #0x1F
- str r2, [r6, #0x40]
- str r2, [r6], #0x4
- add r2, r2, r12
- add r2, r2, r8
- add r2, r2, r3, ror #0x1B
- eor r4, r10, r11
- and r4, r4, r9
- eor r4, r4, r11
- add r2, r2, r4
- mov r9, r9, ror #0x2
- mov r12, r11
- mov r11, r10
- mov r10, r9
- mov r9, r3
- mov r3, r2
- add r7, r7, #0x4
- cmp r7, #0x10
- blt _020D3448
- ldr r8, _020D33BC ; =0x6ED9EBA1
- mov r7, #0x0
-_020D34B8:
- ldr r2, [r6, #0x0]
- ldr r4, [r6, #0x8]
- ldr lr, [r6, #0x20]
- ldr r5, [r6, #0x34]
- eor r2, r2, r4
- eor lr, lr, r5
- eor r2, r2, lr
- mov r2, r2, ror #0x1F
- str r2, [r6, #0x40]
- str r2, [r6], #0x4
- add r2, r2, r12
- add r2, r2, r8
- add r2, r2, r3, ror #0x1B
- eor lr, r9, r10
- eor lr, lr, r11
- add r2, r2, lr
- mov r9, r9, ror #0x2
- mov r12, r11
- mov r11, r10
- mov r10, r9
- mov r9, r3
- mov r3, r2
- add r7, r7, #0x1
- cmp r7, #0xc
- moveq r6, sp
- cmp r7, #0x14
- blt _020D34B8
- ldr r8, _020D33C0 ; =0x8F1BBCDC
- mov r7, #0x0
-_020D352C:
- ldr r2, [r6, #0x0]
- ldr lr, [r6, #0x8]
- ldr r5, [r6, #0x20]
- ldr r4, [r6, #0x34]
- eor r2, r2, lr
- eor r5, r5, r4
- eor r2, r2, r5
- mov r2, r2, ror #0x1F
- str r2, [r6, #0x40]
- str r2, [r6], #0x4
- add r2, r2, r12
- add r2, r2, r8
- add r2, r2, r3, ror #0x1B
- orr r5, r9, r10
- and r5, r5, r11
- and r4, r9, r10
- orr r5, r5, r4
- add r2, r2, r5
- mov r9, r9, ror #0x2
- mov r12, r11
- mov r11, r10
- mov r10, r9
- mov r9, r3
- mov r3, r2
- add r7, r7, #0x1
- cmp r7, #0x8
- moveq r6, sp
- cmp r7, #0x14
- blt _020D352C
- ldr r8, _020D33C4 ; =0xCA62C1D6
- mov r7, #0x0
-_020D35A8:
- ldr r2, [r6, #0x0]
- ldr r5, [r6, #0x8]
- ldr r4, [r6, #0x20]
- ldr lr, [r6, #0x34]
- eor r2, r2, r5
- eor r4, r4, lr
- eor r2, r2, r4
- mov r2, r2, ror #0x1F
- str r2, [r6, #0x40]
- str r2, [r6], #0x4
- add r2, r2, r12
- add r2, r2, r8
- add r2, r2, r3, ror #0x1B
- eor r4, r9, r10
- eor r4, r4, r11
- add r2, r2, r4
- mov r9, r9, ror #0x2
- mov r12, r11
- mov r11, r10
- mov r10, r9
- mov r9, r3
- mov r3, r2
- add r7, r7, #0x1
- cmp r7, #0x4
- moveq r6, sp
- cmp r7, #0x14
- blt _020D35A8
- ldmia r0, {r2,r4,r6-r7,lr}
- add r3, r3, r2
- add r9, r9, r4
- add r10, r10, r6
- add r11, r11, r7
- add r12, r12, lr
- stmia r0, {r3,r9-r12}
- ldr lr, [sp, #0x80]
- subs lr, lr, #0x40
- str lr, [sp, #0x80]
- bgt _020D33D8
- add sp, sp, #0x84
- ldmia sp!, {r4-r12,pc}
diff --git a/arm9/asm/libmath.s b/arm9/asm/libmath.s
index 02dcfbcf..e841f5da 100644
--- a/arm9/asm/libmath.s
+++ b/arm9/asm/libmath.s
@@ -32,16 +32,16 @@ MATH_CalcSHA1: ; 0x020DDCA0
add r0, sp, #0x0
mov r5, r1
mov r4, r2
- bl MATH_SHA1Init
+ bl DGT_Hash2Reset
_020DDCBC: ; 0x020DDCBC
add r0, sp, #0x0
mov r1, r5
mov r2, r4
- bl MATH_SHA1Update
+ bl DGT_Hash2SetSource
_020DDCCC: ; 0x020DDCCC
add r0, sp, #0x0
mov r1, r6
- bl MATH_SHA1GetHash
+ bl DGT_Hash2GetDigest
add sp, sp, #0x68
ldmia sp!, {r4-r6,lr}
bx lr
diff --git a/arm9/asm/unk_02000E0C.s b/arm9/asm/unk_02000E0C.s
index 9c67c9fd..b13ce736 100644
--- a/arm9/asm/unk_02000E0C.s
+++ b/arm9/asm/unk_02000E0C.s
@@ -2,337 +2,8 @@
.include "global.inc"
.text
-
- thumb_func_start FUN_02000E0C
-FUN_02000E0C: ; 0x02000E0C
- push {r3, lr}
- ldr r0, _02000E74 ; =0x02106FA0
- ldr r1, [r0, #0xc]
- cmp r1, #0x0
- bne _02000E4A
- ldr r1, [r0, #0x14]
- cmp r1, #0x0
- beq _02000E70
- mov r1, #0x0
- ldr r0, [r0, #0x10]
- mvn r1, r1
- cmp r0, r1
- beq _02000E2C
- mov r1, #0x0
- bl HandleLoadOverlay
-_02000E2C:
- ldr r0, _02000E74 ; =0x02106FA0
- mov r2, #0x0
- ldr r1, [r0, #0x10]
- str r1, [r0, #0x8]
- ldr r0, [r0, #0x14]
- ldr r1, _02000E78 ; =0x02106FB8
- bl FUN_02006234
- ldr r1, _02000E74 ; =0x02106FA0
- str r0, [r1, #0xc]
- mov r0, #0x0
- mvn r0, r0
- str r0, [r1, #0x10]
- mov r0, #0x0
- str r0, [r1, #0x14]
-_02000E4A:
- ldr r0, _02000E74 ; =0x02106FA0
- ldr r0, [r0, #0xc]
- bl FUN_02006290
- cmp r0, #0x0
- beq _02000E70
- ldr r0, _02000E74 ; =0x02106FA0
- ldr r0, [r0, #0xc]
- bl FUN_02006260
- ldr r0, _02000E74 ; =0x02106FA0
- mov r1, #0x0
- str r1, [r0, #0xc]
- ldr r0, [r0, #0x8]
- sub r1, r1, #0x1
- cmp r0, r1
- beq _02000E70
- bl UnloadOverlayByID
-_02000E70:
- pop {r3, pc}
- nop
-_02000E74: .word 0x02106FA0
-_02000E78: .word 0x02106FB8
-
- thumb_func_start FUN_02000E7C
-FUN_02000E7C: ; 0x02000E7C
- push {r3-r5, lr}
- add r5, r0, #0x0
- ldr r0, _02000E98 ; =0x02106FA0
- add r4, r1, #0x0
- ldr r0, [r0, #0x14]
- cmp r0, #0x0
- beq _02000E8E
- bl ErrorHandling
-_02000E8E:
- ldr r0, _02000E98 ; =0x02106FA0
- str r5, [r0, #0x10]
- str r4, [r0, #0x14]
- pop {r3-r5, pc}
- nop
-_02000E98: .word 0x02106FA0
-
- thumb_func_start FUN_02000E9C
-FUN_02000E9C: ; 0x02000E9C
- push {r3, lr}
- bl FUN_0202FB80
- mov r0, #0x1
- add r1, r0, #0x0
- blx OS_WaitIrq
- ldr r0, _02000EC4 ; =0x021C48B8
- ldr r1, [r0, #0x2c]
- add r1, r1, #0x1
- str r1, [r0, #0x2c]
- mov r1, #0x0
- str r1, [r0, #0x30]
- ldr r1, [r0, #0x0]
- cmp r1, #0x0
- beq _02000EC0
- ldr r0, [r0, #0x4]
- blx r1
-_02000EC0:
- pop {r3, pc}
- nop
-_02000EC4: .word 0x021C48B8
-
- thumb_func_start FUN_02000EC8
-FUN_02000EC8: ; 0x02000EC8
- push {r4, lr}
- add r4, r0, #0x0
- bl FUN_02033678
- cmp r0, #0x0
- beq _02000EE2
- blx CARD_TryWaitBackupAsync
- cmp r0, #0x1
- bne _02000EE2
- add r0, r4, #0x0
- blx OS_ResetSystem
-_02000EE2:
- bl FUN_02000E9C
- pop {r4, pc}
-
- thumb_func_start FUN_02000EE8
-FUN_02000EE8: ; 0x02000EE8
- push {r3, lr}
- bl FUN_020335B8
- add r1, r0, #0x0
- cmp r1, #0x1
- beq _02000EFE
- cmp r1, #0x2
- beq _02000F06
- cmp r1, #0x3
- beq _02000F0E
- pop {r3, pc}
-_02000EFE:
- mov r0, #0x1
- bl FUN_02000F4C
- pop {r3, pc}
-_02000F06:
- mov r0, #0x0
- bl FUN_02000F4C
- pop {r3, pc}
-_02000F0E:
- mov r0, #0x1
- bl FUN_02000F4C
- pop {r3, pc}
- .balign 4
-
- thumb_func_start FUN_02000F18
-FUN_02000F18: ; 0x02000F18
- push {r4, lr}
- ldr r1, _02000F48 ; =0x00007FFF
- add r4, r0, #0x0
- mov r0, #0x0
- bl FUN_0200E3A0
- ldr r1, _02000F48 ; =0x00007FFF
- mov r0, #0x1
- bl FUN_0200E3A0
- bl FUN_02032DAC
- cmp r0, #0x0
- beq _02000F3C
- bl FUN_020225F8
- bl FUN_0202287C
-_02000F3C:
- bl FUN_02000FE8
- add r0, r4, #0x0
- bl FUN_02000EC8
- b _02000F3C
- .balign 4
-_02000F48: .word 0x00007FFF
-
- thumb_func_start FUN_02000F4C
-FUN_02000F4C: ; 0x02000F4C
- push {r4-r6, lr}
- add r6, r0, #0x0
- cmp r1, #0x3
- bne _02000F60
- mov r0, #0x0
- mov r1, #0x3
- add r2, r0, #0x0
- bl FUN_02033F70
- b _02000F7A
-_02000F60:
- cmp r6, #0x0
- bne _02000F70
- mov r0, #0x0
- mov r1, #0x2
- add r2, r0, #0x0
- bl FUN_02033F70
- b _02000F7A
-_02000F70:
- mov r0, #0x0
- add r1, r0, #0x0
- add r2, r0, #0x0
- bl FUN_02033F70
-_02000F7A:
- bl FUN_02032DAC
- ldr r5, _02000FA0 ; =0x021C48B8
- mov r4, #0x1
-_02000F82:
- bl FUN_02000FE8
- bl FUN_02016464
- ldr r0, [r5, #0x48]
- tst r0, r4
- bne _02000F96
- bl FUN_02000E9C
- b _02000F82
-_02000F96:
- add r0, r6, #0x0
- bl FUN_02000F18
- pop {r4-r6, pc}
- nop
-_02000FA0: .word 0x021C48B8
-
- thumb_func_start FUN_02000FA4
-FUN_02000FA4: ; 0x02000FA4
- push {r4-r5, lr}
- sub sp, #0x1c
- add r0, sp, #0xc
- add r1, sp, #0x0
- bl FUN_0201265C
- ldr r0, _02000FE4 ; =0x021C48B8
- ldr r3, [sp, #0x10]
- ldr r4, [r0, #0x2c]
- ldr r1, [sp, #0x4]
- ldr r0, [sp, #0x8]
- ldr r5, [sp, #0x14]
- add r0, r1, r0
- lsl r2, r0, #0x18
- ldr r0, [sp, #0x0]
- lsl r3, r3, #0x8
- lsl r1, r0, #0x10
- mul r3, r5
- ldr r0, [sp, #0xc]
- lsl r3, r3, #0x10
- add r0, r0, r3
- add r0, r1, r0
- add r5, r2, r0
- add r0, r4, r5
- bl FUN_0201BA1C
- add r0, r4, r5
- bl FUN_0201B9E0
- add sp, #0x1c
- pop {r4-r5, pc}
- nop
-_02000FE4: .word 0x021C48B8
-
- thumb_func_start FUN_02000FE8
-FUN_02000FE8: ; 0x02000FE8
- push {r3-r7, lr}
- sub sp, #0x8
- ldr r0, _0200109C ; =0x027FFFA8
- ldrh r1, [r0, #0x0]
- mov r0, #0x2
- lsl r0, r0, #0xe
- and r0, r1
- asr r0, r0, #0xf
- beq _0200107E
- ldr r0, _020010A0 ; =0x021C4918
- ldrb r0, [r0, #0x7]
- cmp r0, #0x0
- bne _02001064
- bl FUN_0201CE04
- blx CTRDG_IsPulledOut
- cmp r0, #0x1
- bne _02001014
- ldr r0, _020010A4 ; =0x02106FA0
- mov r1, #0x1
- str r1, [r0, #0x4]
-_02001014:
- ldr r6, _020010A4 ; =0x02106FA0
- mov r0, #0xc
- ldr r1, [r6, #0x4]
- ldr r4, _0200109C ; =0x027FFFA8
- mov r2, #0x10
- add r5, r0, #0x0
- ldr r7, _020010A0 ; =0x021C4918
- orr r5, r2
-_02001024:
- ldrb r2, [r7, #0x6]
- mov r0, #0xc
- cmp r2, #0x0
- beq _02001032
- cmp r1, #0x0
- bne _02001032
- add r0, r5, #0x0
-_02001032:
- mov r1, #0x0
- add r2, r1, #0x0
- blx PM_GoSleepMode
- blx CARD_IsPulledOut
- cmp r0, #0x0
- beq _02001048
- blx PM_ForceToPowerOff
- b _0200105C
-_02001048:
- ldrh r1, [r4, #0x0]
- mov r0, #0x2
- lsl r0, r0, #0xe
- and r0, r1
- asr r0, r0, #0xf
- beq _0200105C
- mov r0, #0x1
- str r0, [r6, #0x4]
- add r1, r0, #0x0
- b _02001024
-_0200105C:
- bl FUN_0201CDD0
- add sp, #0x8
- pop {r3-r7, pc}
-_02001064:
- add r0, sp, #0x4
- add r1, sp, #0x0
- blx PM_GetBackLight
- ldr r0, [sp, #0x4]
- cmp r0, #0x1
- bne _02001096
- mov r0, #0x2
- mov r1, #0x0
- blx PM_SetBackLight
- add sp, #0x8
- pop {r3-r7, pc}
-_0200107E:
- add r0, sp, #0x4
- add r1, sp, #0x0
- blx PM_GetBackLight
- ldr r0, [sp, #0x4]
- cmp r0, #0x0
- bne _02001096
- ldr r1, _020010A4 ; =0x02106FA0
- mov r0, #0x2
- ldr r1, [r1, #0x0]
- blx PM_SetBackLight
-_02001096:
- add sp, #0x8
- pop {r3-r7, pc}
- nop
-_0200109C: .word 0x027FFFA8
-_020010A0: .word 0x021C4918
-_020010A4: .word 0x02106FA0
+ .extern FUN_02000E9C
+ .extern FUN_02000EC8
thumb_func_start FUN_020010A8
FUN_020010A8: ; 0x020010A8
diff --git a/arm9/global.inc b/arm9/global.inc
index 508f71de..aa4d2a1b 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -28,6 +28,9 @@
.extern DGT_Hash1GetDigest_R
.extern DGT_Hash1Reset
.extern DGT_Hash1SetSource
+.extern DGT_Hash2GetDigest
+.extern DGT_Hash2Reset
+.extern DGT_Hash2SetSource
.extern DGTi_hash2_arm4_small
.extern ErrorHandling
.extern FS_CloseFile
@@ -2654,6 +2657,11 @@
.extern FUN_020C39CC
.extern FUN_020C6034
.extern FUN_020C605C
+.extern MOD05_021EC464
+.extern MOD05_021EC7B4
+.extern MOD20_02253A04
+.extern MOD20_02253FAC
+.extern MOD20_02253FB4
.extern MOD05_021D74E0
.extern FUN_021D7660
.extern FUN_021D76AC
@@ -3322,14 +3330,11 @@
.extern MATH_MD5GetHash
.extern MATH_MD5Init
.extern MATH_MD5Update
-.extern MATH_SHA1GetHash
-.extern MATH_SHA1Init
-.extern MATH_SHA1Update
.extern MATHi_CRC16InitTable
.extern MATHi_CRC16InitTableRev
.extern MATHi_CRC32InitTableRev
.extern MATHi_CRC8InitTable
-.extern MATHi_CalcHMAC
+.extern DGTi_Hash2CalcHmac
.extern MIC_DoSamplingAsync
.extern MIC_GetLastSamplingAddress
.extern MIC_Init
@@ -5409,7 +5414,6 @@
.extern FUN_02006C88
.extern FUN_02020A6C
.extern FUN_02012690
-.extern MOD20_02252978
.extern FUN_02020BF4
.extern FUN_02020BFC
.extern FUN_020893F0
@@ -5417,6 +5421,8 @@
.extern FUN_02069B60
.extern FUN_02089444
.extern FUN_0208946C
+.extern MOD20_02252978
+.extern MOD20_02253AA4
.extern MOD20_02252B68
.extern MOD20_02252C08
.extern MOD20_02253794
diff --git a/arm9/lib/include/CARD_backup.h b/arm9/lib/include/CARD_backup.h
new file mode 100644
index 00000000..de594beb
--- /dev/null
+++ b/arm9/lib/include/CARD_backup.h
@@ -0,0 +1,6 @@
+#ifndef NITRO_CARD_BACKUP_H_
+#define NITRO_CARD_BACKUP_H_
+
+BOOL CARD_TryWaitBackupAsync(void);
+
+#endif //NITRO_CARD_BACKUP_H_
diff --git a/arm9/lib/include/CTRDG_common.h b/arm9/lib/include/CTRDG_common.h
new file mode 100644
index 00000000..c83602b8
--- /dev/null
+++ b/arm9/lib/include/CTRDG_common.h
@@ -0,0 +1,6 @@
+#ifndef NITRO_CTRDG_COMMON_H_
+#define NITRO_CTRDG_COMMON_H_
+
+BOOL CTRDG_IsPulledOut(void);
+
+#endif //NITRO_CTRDG_COMMON_H_
diff --git a/arm9/lib/include/FS_overlay.h b/arm9/lib/include/FS_overlay.h
index 6025d04a..14c7ce66 100644
--- a/arm9/lib/include/FS_overlay.h
+++ b/arm9/lib/include/FS_overlay.h
@@ -1,6 +1,10 @@
#ifndef NITRO_FS_OVERLAY_H_
#define NITRO_FS_OVERLAY_H_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
#include "nitro.h"
#include "MI_exMemory.h"
#include "FS_file.h"
@@ -8,7 +12,10 @@
typedef u32 FSOverlayID;
-typedef void (*FSOverlayInitFunc) (void);
+#define FS_EXTERN_OVERLAY(name) extern u32 SDK_OVERLAY_ ## name ## _ID[1]
+#define FS_OVERLAY_ID(name) ((u32)&(SDK_OVERLAY_ ## name ## _ID))
+
+typedef void (*FSOverlayInitFunc)(void);
typedef struct FSOverlayInfoHeader
{
@@ -19,8 +26,8 @@ typedef struct FSOverlayInfoHeader
FSOverlayInitFunc *sinit_init;
FSOverlayInitFunc *sinit_init_end;
u32 file_id;
- u32 compressed:24;
- u32 flag:8;
+ u32 compressed: 24;
+ u32 flag: 8;
} FSOverlayInfoHeader;
typedef struct FSOverlayInfo
@@ -30,26 +37,35 @@ typedef struct FSOverlayInfo
CARDRomRegion file_pos;
} FSOverlayInfo;
-static inline u8 *const FS_GetOverlayAddress(FSOverlayInfo * p_ovi)
+static inline u8 *const FS_GetOverlayAddress(FSOverlayInfo *p_ovi)
{
return p_ovi->header.ram_address;
}
-static inline u32 const FS_GetOverlayImageSize(FSOverlayInfo * p_ovi)
+static inline u32 const FS_GetOverlayImageSize(FSOverlayInfo *p_ovi)
{
return p_ovi->header.ram_size;
}
-static inline u32 const FS_GetOverlayTotalSize(FSOverlayInfo * p_ovi)
+static inline u32 const FS_GetOverlayTotalSize(FSOverlayInfo *p_ovi)
{
return p_ovi->header.ram_size + p_ovi->header.bss_size;
}
BOOL FS_LoadOverlayInfo(FSOverlayInfo *p_ovi, MIProcessor target, FSOverlayID id);
+
BOOL FS_LoadOverlay(MIProcessor target, FSOverlayID id);
+
BOOL FS_UnloadOverlay(MIProcessor target, FSOverlayID id);
+
BOOL FS_LoadOverlayImage(FSOverlayInfo *p_ovi);
+
void FS_StartOverlay(FSOverlayInfo *p_ovi);
+
BOOL FS_LoadOverlayImageAsync(FSOverlayInfo *p_ovi, FSFile *p_file);
+#if defined(__cplusplus)
+};
+#endif
+
#endif //NITRO_FS_OVERLAY_H_
diff --git a/arm9/lib/include/PAD_pad.h b/arm9/lib/include/PAD_pad.h
new file mode 100644
index 00000000..0cb8a6f0
--- /dev/null
+++ b/arm9/lib/include/PAD_pad.h
@@ -0,0 +1,38 @@
+#ifndef NITRO_PAD_PAD_H_
+#define NITRO_PAD_PAD_H_
+
+
+//================================================================================
+// BUTTONS
+
+//---- masked value
+#define PAD_PLUS_KEY_MASK 0x00f0 // mask : cross keys
+#define PAD_BUTTON_MASK 0x2f0f // mask : buttons
+#define PAD_DEBUG_BUTTON_MASK 0x2000 // mask : debug button
+#define PAD_ALL_MASK 0x2fff // mask : all buttons
+#define PAD_RCNTPORT_MASK 0x2c00 // mask : factors ARM7 can read from RCNT register
+#define PAD_KEYPORT_MASK 0x03ff // mask : factors ARM7/9 can read from KEY register
+
+#define PAD_DETECT_FOLD_MASK 0x8000 // mask : folding
+
+//---- button and key
+#define PAD_BUTTON_A 0x0001 // A
+#define PAD_BUTTON_B 0x0002 // B
+#define PAD_BUTTON_SELECT 0x0004 // SELECT
+#define PAD_BUTTON_START 0x0008 // START
+#define PAD_KEY_RIGHT 0x0010 // RIGHT of cross key
+#define PAD_KEY_LEFT 0x0020 // LEFT of cross key
+#define PAD_KEY_UP 0x0040 // UP of cross key
+#define PAD_KEY_DOWN 0x0080 // DOWN of cross key
+#define PAD_BUTTON_R 0x0100 // R
+#define PAD_BUTTON_L 0x0200 // L
+#define PAD_BUTTON_X 0x0400 // X
+#define PAD_BUTTON_Y 0x0800 // Y
+#define PAD_BUTTON_DEBUG 0x2000 // Debug button
+
+static inline BOOL PAD_DetectFold(void)
+{
+ return (BOOL)((*(vu16 *)HW_BUTTON_XY_BUF & PAD_DETECT_FOLD_MASK) >> 15);
+}
+
+#endif //NITRO_PAD_PAD_H_
diff --git a/arm9/lib/include/SPI_pm.h b/arm9/lib/include/SPI_pm.h
new file mode 100644
index 00000000..b5063ed8
--- /dev/null
+++ b/arm9/lib/include/SPI_pm.h
@@ -0,0 +1,38 @@
+#ifndef NITRO_SPI_PM_H_
+#define NITRO_SPI_PM_H_
+
+ENUMS_ALWAYS_INT_ON
+
+#define PM_TRIGGER_KEY (1 << 0)
+#define PM_TRIGGER_RTC_ALARM (1 << 1)
+#define PM_TRIGGER_COVER_OPEN (1 << 2)
+#define PM_TRIGGER_CARD (1 << 3)
+#define PM_TRIGGER_CARTRIDGE (1 << 4)
+typedef u32 PMWakeUpTrigger;
+
+#define PM_PAD_LOGIC_OR (0 << REG_PAD_KEYCNT_LOGIC_SHIFT)
+#define PM_PAD_LOGIC_AND (1 << REG_PAD_KEYCNT_LOGIC_SHIFT)
+typedef u32 PMLogic;
+
+typedef enum
+{
+ PM_BACKLIGHT_OFF = 0,
+ PM_BACKLIGHT_ON = 1
+} PMBackLightSwitch;
+
+typedef enum
+{
+ PM_LCD_TOP = 0,
+ PM_LCD_BOTTOM = 1,
+ PM_LCD_ALL = 2
+}
+PMLCDTarget;
+
+void PM_GetBackLight(PMBackLightSwitch * top, PMBackLightSwitch * bottom);
+void PM_GoSleepMode(PMWakeUpTrigger trigger, PMLogic logic, u16 keyPattern);
+u32 PM_SetBackLight(PMLCDTarget target, PMBackLightSwitch status);
+void PM_ForceToPowerOff(void);
+
+ENUMS_ALWAYS_INT_RESET
+
+#endif //NITRO_SPI_PM_H_
diff --git a/arm9/lib/include/registers.h b/arm9/lib/include/registers.h
index 45b36334..d59411e6 100644
--- a/arm9/lib/include/registers.h
+++ b/arm9/lib/include/registers.h
@@ -52,4 +52,124 @@
#define REG_GXSTAT_ADDR (HW_REG_BASE + REG_GXSTAT_OFFSET)
#define reg_G3X_GXSTAT (*(REGType32v *)REG_GXSTAT_ADDR)
+#define REG_PAD_KEYINPUT_L_SHIFT 9
+#define REG_PAD_KEYINPUT_L_SIZE 1
+#define REG_PAD_KEYINPUT_L_MASK 0x0200
+
+#define REG_PAD_KEYINPUT_R_SHIFT 8
+#define REG_PAD_KEYINPUT_R_SIZE 1
+#define REG_PAD_KEYINPUT_R_MASK 0x0100
+
+#define REG_PAD_KEYINPUT_DOWN_SHIFT 7
+#define REG_PAD_KEYINPUT_DOWN_SIZE 1
+#define REG_PAD_KEYINPUT_DOWN_MASK 0x0080
+
+#define REG_PAD_KEYINPUT_UP_SHIFT 6
+#define REG_PAD_KEYINPUT_UP_SIZE 1
+#define REG_PAD_KEYINPUT_UP_MASK 0x0040
+
+#define REG_PAD_KEYINPUT_LEFT_SHIFT 5
+#define REG_PAD_KEYINPUT_LEFT_SIZE 1
+#define REG_PAD_KEYINPUT_LEFT_MASK 0x0020
+
+#define REG_PAD_KEYINPUT_RIGHT_SHIFT 4
+#define REG_PAD_KEYINPUT_RIGHT_SIZE 1
+#define REG_PAD_KEYINPUT_RIGHT_MASK 0x0010
+
+#define REG_PAD_KEYINPUT_START_SHIFT 3
+#define REG_PAD_KEYINPUT_START_SIZE 1
+#define REG_PAD_KEYINPUT_START_MASK 0x0008
+
+#define REG_PAD_KEYINPUT_SEL_SHIFT 2
+#define REG_PAD_KEYINPUT_SEL_SIZE 1
+#define REG_PAD_KEYINPUT_SEL_MASK 0x0004
+
+#define REG_PAD_KEYINPUT_B_SHIFT 1
+#define REG_PAD_KEYINPUT_B_SIZE 1
+#define REG_PAD_KEYINPUT_B_MASK 0x0002
+
+#define REG_PAD_KEYINPUT_A_SHIFT 0
+#define REG_PAD_KEYINPUT_A_SIZE 1
+#define REG_PAD_KEYINPUT_A_MASK 0x0001
+
+#ifndef SDK_ASM
+#define REG_PAD_KEYINPUT_FIELD( l, r, down, up, left, right, start, sel, b, a ) \
+ (u16)( \
+ ((u32)(l) << REG_PAD_KEYINPUT_L_SHIFT) | \
+ ((u32)(r) << REG_PAD_KEYINPUT_R_SHIFT) | \
+ ((u32)(down) << REG_PAD_KEYINPUT_DOWN_SHIFT) | \
+ ((u32)(up) << REG_PAD_KEYINPUT_UP_SHIFT) | \
+ ((u32)(left) << REG_PAD_KEYINPUT_LEFT_SHIFT) | \
+ ((u32)(right) << REG_PAD_KEYINPUT_RIGHT_SHIFT) | \
+ ((u32)(start) << REG_PAD_KEYINPUT_START_SHIFT) | \
+ ((u32)(sel) << REG_PAD_KEYINPUT_SEL_SHIFT) | \
+ ((u32)(b) << REG_PAD_KEYINPUT_B_SHIFT) | \
+ ((u32)(a) << REG_PAD_KEYINPUT_A_SHIFT))
+#endif
+
+#define REG_PAD_KEYCNT_LOGIC_SHIFT 15
+#define REG_PAD_KEYCNT_LOGIC_SIZE 1
+#define REG_PAD_KEYCNT_LOGIC_MASK 0x8000
+
+#define REG_PAD_KEYCNT_INTR_SHIFT 14
+#define REG_PAD_KEYCNT_INTR_SIZE 1
+#define REG_PAD_KEYCNT_INTR_MASK 0x4000
+
+#define REG_PAD_KEYCNT_L_SHIFT 9
+#define REG_PAD_KEYCNT_L_SIZE 1
+#define REG_PAD_KEYCNT_L_MASK 0x0200
+
+#define REG_PAD_KEYCNT_R_SHIFT 8
+#define REG_PAD_KEYCNT_R_SIZE 1
+#define REG_PAD_KEYCNT_R_MASK 0x0100
+
+#define REG_PAD_KEYCNT_DOWN_SHIFT 7
+#define REG_PAD_KEYCNT_DOWN_SIZE 1
+#define REG_PAD_KEYCNT_DOWN_MASK 0x0080
+
+#define REG_PAD_KEYCNT_UP_SHIFT 6
+#define REG_PAD_KEYCNT_UP_SIZE 1
+#define REG_PAD_KEYCNT_UP_MASK 0x0040
+
+#define REG_PAD_KEYCNT_LEFT_SHIFT 5
+#define REG_PAD_KEYCNT_LEFT_SIZE 1
+#define REG_PAD_KEYCNT_LEFT_MASK 0x0020
+
+#define REG_PAD_KEYCNT_RIGHT_SHIFT 4
+#define REG_PAD_KEYCNT_RIGHT_SIZE 1
+#define REG_PAD_KEYCNT_RIGHT_MASK 0x0010
+
+#define REG_PAD_KEYCNT_START_SHIFT 3
+#define REG_PAD_KEYCNT_START_SIZE 1
+#define REG_PAD_KEYCNT_START_MASK 0x0008
+
+#define REG_PAD_KEYCNT_SEL_SHIFT 2
+#define REG_PAD_KEYCNT_SEL_SIZE 1
+#define REG_PAD_KEYCNT_SEL_MASK 0x0004
+
+#define REG_PAD_KEYCNT_B_SHIFT 1
+#define REG_PAD_KEYCNT_B_SIZE 1
+#define REG_PAD_KEYCNT_B_MASK 0x0002
+
+#define REG_PAD_KEYCNT_A_SHIFT 0
+#define REG_PAD_KEYCNT_A_SIZE 1
+#define REG_PAD_KEYCNT_A_MASK 0x0001
+
+#ifndef SDK_ASM
+#define REG_PAD_KEYCNT_FIELD( logic, intr, l, r, down, up, left, right, start, sel, b, a ) \
+ (u16)( \
+ ((u32)(logic) << REG_PAD_KEYCNT_LOGIC_SHIFT) | \
+ ((u32)(intr) << REG_PAD_KEYCNT_INTR_SHIFT) | \
+ ((u32)(l) << REG_PAD_KEYCNT_L_SHIFT) | \
+ ((u32)(r) << REG_PAD_KEYCNT_R_SHIFT) | \
+ ((u32)(down) << REG_PAD_KEYCNT_DOWN_SHIFT) | \
+ ((u32)(up) << REG_PAD_KEYCNT_UP_SHIFT) | \
+ ((u32)(left) << REG_PAD_KEYCNT_LEFT_SHIFT) | \
+ ((u32)(right) << REG_PAD_KEYCNT_RIGHT_SHIFT) | \
+ ((u32)(start) << REG_PAD_KEYCNT_START_SHIFT) | \
+ ((u32)(sel) << REG_PAD_KEYCNT_SEL_SHIFT) | \
+ ((u32)(b) << REG_PAD_KEYCNT_B_SHIFT) | \
+ ((u32)(a) << REG_PAD_KEYCNT_A_SHIFT))
+#endif
+
#endif //POKEDIAMOND_REGISTERS_H
diff --git a/arm9/modules/00/asm/module_00_dummy.s b/arm9/modules/00/asm/module_00_dummy.s
index e8a42167..8b137891 100644
--- a/arm9/modules/00/asm/module_00_dummy.s
+++ b/arm9/modules/00/asm/module_00_dummy.s
@@ -1,2 +1 @@
- .section .data
- .space 32
+
diff --git a/arm9/modules/01/src/module_01.c b/arm9/modules/01/src/module_01.c
deleted file mode 100644
index ae2e9d1f..00000000
--- a/arm9/modules/01/src/module_01.c
+++ /dev/null
@@ -1,12 +0,0 @@
-#include "global.h"
-
-u32 UNK_021D7500[8];
-
-THUMB_FUNC void MOD01_021D74E0(void)
-{
- UNK_021D7500[1]++;
-}
-
-THUMB_FUNC void (*UNK_021D74F0[4])(void) = {
- MOD01_021D74E0
-};
diff --git a/arm9/modules/01/src/module_01.cpp b/arm9/modules/01/src/module_01.cpp
new file mode 100644
index 00000000..21b371e0
--- /dev/null
+++ b/arm9/modules/01/src/module_01.cpp
@@ -0,0 +1,11 @@
+#include "global.h"
+#include "FS_overlay.h"
+
+class Unk021D7500 {
+ u32 unk0;
+ u32 unk4;
+public:
+ THUMB_FUNC Unk021D7500() { unk4++; }
+};
+
+static class Unk021D7500 UNK_021D7500;
diff --git a/arm9/modules/02/asm/module_02_dummy.s b/arm9/modules/02/asm/module_02_dummy.s
index e8a42167..8b137891 100644
--- a/arm9/modules/02/asm/module_02_dummy.s
+++ b/arm9/modules/02/asm/module_02_dummy.s
@@ -1,2 +1 @@
- .section .data
- .space 32
+
diff --git a/arm9/modules/03/asm/module_03_dummy.s b/arm9/modules/03/asm/module_03_dummy.s
index e8a42167..8b137891 100644
--- a/arm9/modules/03/asm/module_03_dummy.s
+++ b/arm9/modules/03/asm/module_03_dummy.s
@@ -1,2 +1 @@
- .section .data
- .space 32
+
diff --git a/arm9/modules/04/asm/arm_04.s b/arm9/modules/04/asm/arm_04.s
index 8d1d699b..9928ef16 100644
--- a/arm9/modules/04/asm/arm_04.s
+++ b/arm9/modules/04/asm/arm_04.s
@@ -58938,9 +58938,12 @@ _0220BAB8:
mov r0, r2
bx lr
- .section .data
+ .section .rodata
; 0x0220BAC0
- .incbin "baserom.nds", 0x1411e0, 0x4100
+ .incbin "baserom.nds", 0x1411e0, 0x3D4
+
+ .section .data
+ .incbin "baserom.nds", 0x1415C0, 0x3D20
.section .bss
; 0x0220FBC0
diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s
index 085ce35d..2588e8a9 100644
--- a/arm9/modules/05/asm/module_05.s
+++ b/arm9/modules/05/asm/module_05.s
@@ -63948,9 +63948,13 @@ _021F6424:
.align 2, 0
_021F6428: .word MOD05_021F57F0
- .section .data
+ .section .rodata
; 0x021F642C
- .incbin "baserom.nds", 0x16434c, 0x7254
+ .incbin "baserom.nds", 0x16434c, 0x6d9c
+
+ .section .data
+ ; 0x021FD1E0
+ .incbin "baserom.nds", 0x16b100, 0x4A0
.section .bss
; 0x021FD680
diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s
index ac7d6b48..a12da563 100644
--- a/arm9/modules/06/asm/module_06.s
+++ b/arm9/modules/06/asm/module_06.s
@@ -44468,9 +44468,13 @@ _0224F144:
_0224F16C: .word 0x02252210
_0224F170: .word MOD06_0224F0D8
- .section .data
+ .section .rodata
; 0x0224F174
- .incbin "baserom.nds", 0x1810D4, 0x32AC
+ .incbin "baserom.nds", 0x1810D4, 0x30B4
+
+ .section .data
+ ; 0x022252240
+ .incbin "baserom.nds", 0x1841a0, 0x1e0
.section .bss
; 0x02252420
diff --git a/arm9/modules/07/asm/module_07.s b/arm9/modules/07/asm/module_07.s
index 39869410..0afcff05 100644
--- a/arm9/modules/07/asm/module_07.s
+++ b/arm9/modules/07/asm/module_07.s
@@ -5270,6 +5270,6 @@ _0221494A:
pop {r3, r4, r5, r6, r7, pc}
.balign 4, 0
- .section .data
+ .section .rodata
; 0x02214950
- .incbin "baserom.nds", 0x186EF0, 0x7F0
+ .incbin "baserom.nds", 0x186EF0, 0x7E4
diff --git a/arm9/modules/08/asm/module_08.s b/arm9/modules/08/asm/module_08.s
index 50ed884f..f1281f99 100644
--- a/arm9/modules/08/asm/module_08.s
+++ b/arm9/modules/08/asm/module_08.s
@@ -49976,6 +49976,9 @@ _0222A758:
.align 2, 0
_0222A75C: .word 0x0000013B
- .section .data
+ .section .rodata
; 0x0222A760
- .incbin "baserom.nds", 0x1A0100, 0x2E60
+ .incbin "baserom.nds", 0x1A0100, 0x2E38
+
+ .section .data
+ .incbin "baserom.nds", 0x1A2F40, 0x20
diff --git a/arm9/modules/09/asm/module_09.s b/arm9/modules/09/asm/module_09.s
index 7e5ad9c1..efa63611 100644
--- a/arm9/modules/09/asm/module_09.s
+++ b/arm9/modules/09/asm/module_09.s
@@ -17658,6 +17658,6 @@ _0221AEBC: .word 0x021C48B8
_0221AEC0: .word 0x000005DC
_0221AEC4: .word 0x000005DD
- .section .data
+ .section .rodata
; 0x0221AEC8
- .incbin "baserom.nds", 0x1AC068, 0x1138
+ .incbin "baserom.nds", 0x1AC068, 0x1120
diff --git a/arm9/modules/10/asm/module_10_dummy.s b/arm9/modules/10/asm/module_10_dummy.s
index bae0dc2d..8b137891 100644
--- a/arm9/modules/10/asm/module_10_dummy.s
+++ b/arm9/modules/10/asm/module_10_dummy.s
@@ -1,5 +1 @@
- .include "asm/macros.inc"
- .include "global.inc"
- .section .data
- .balign 4, 0
- .space 32
+
diff --git a/arm9/modules/11/asm/module_11.s b/arm9/modules/11/asm/module_11.s
index 8288a770..21746e52 100644
--- a/arm9/modules/11/asm/module_11.s
+++ b/arm9/modules/11/asm/module_11.s
@@ -3379,7 +3379,7 @@ _0222F27C:
_0222F280: .word 0x00002434
thumb_func_start MOD11_0222F284
-MOD11_0222F284: ; 0x0222F284
+MOD11_0222F284: ; 0x0222F284 __sinit
push {r3, lr}
bl FUN_02033590
cmp r0, #0
@@ -98632,6 +98632,20 @@ MOD11_0225D98C: ; 0x0225D98C
strb r1, [r0, #0x1e]
bx lr
- .section .data
+ .section .rodata
; 0x0225D998
- .incbin "baserom.nds", 0x1dd7d8, 0x2608
+ .incbin "baserom.nds", 0x1dd7d8, 0x2580
+
+ ; Stupid hack to override alignment
+ ; .section .sinit
+ ; 0x0225FF18
+ .global SDK_OVERLAY.MODULE_11.SINIT_START
+ .global SDK_OVERLAY.MODULE_11.SINIT_END
+SDK_OVERLAY.MODULE_11.SINIT_START:
+ .word MOD11_0222F284
+ .word 0
+SDK_OVERLAY.MODULE_11.SINIT_END:
+
+ .section .data
+ ; 0x0225FF20
+ .incbin "baserom.nds", 0x1dfd60, 0x80
diff --git a/arm9/modules/12/asm/module_12.s b/arm9/modules/12/asm/module_12.s
index 36381bcf..b2e41348 100644
--- a/arm9/modules/12/asm/module_12.s
+++ b/arm9/modules/12/asm/module_12.s
@@ -7445,7 +7445,7 @@ _022312B4: .word 0x00001158
_022312B8: .word 0x00000127
thumb_func_start MOD12_022312BC
-MOD12_022312BC: ; 0x022312BC
+MOD12_022312BC: ; 0x022312BC __sinit
push {r3, lr}
ldr r0, _022312D0 ; =SDK_OVERLAY_MODULE_08_ID
mov r1, #2
@@ -48103,6 +48103,9 @@ _0224496A:
_02244988:
pop {r4, r5, r6, pc}
- .section .data
+ .section .rodata
; 0x0224498C
- .incbin "baserom.nds", 0x1F71CC, 0x1E94
+ .incbin "baserom.nds", 0x1F71CC, 0x1E84
+
+ .section .sinit
+ .word MOD12_022312BC
diff --git a/arm9/modules/13/asm/module_13_arm1.s b/arm9/modules/13/asm/module_13_arm1.s
index edb71ead..ffde9a27 100644
--- a/arm9/modules/13/asm/module_13_arm1.s
+++ b/arm9/modules/13/asm/module_13_arm1.s
@@ -6049,3 +6049,15 @@ MOD13_022172A0: ; 0x022172A0
bx lr
.align 2, 0
_022172D8: .word 0x02240B28
+
+ .section .rodata
+ ; 0x0223C420
+ .incbin "baserom.nds", 0x2237C0, 0x24
+
+ .section .data
+ ; 0x0223F780
+ .incbin "baserom.nds", 0x226B20, 0x38
+
+ .section .bss
+ ; 0x02240A40
+ .space 0xF4
diff --git a/arm9/modules/13/asm/module_13_arm2.s b/arm9/modules/13/asm/module_13_arm2.s
index 7910e1a0..2e9dd8b5 100644
--- a/arm9/modules/13/asm/module_13_arm2.s
+++ b/arm9/modules/13/asm/module_13_arm2.s
@@ -35364,10 +35364,14 @@ _0223C330:
_0223C418: .word 0x0224320C
_0223C41C: .word 0x0223F764
+ .section .rodata
+ ; 0x0223EC6C
+ .incbin "baserom.nds", 0x22600C, 0xafc
+
.section .data
; 0x0223C420
- .incbin "baserom.nds", 0x2237C0, 0x4620
+ .incbin "baserom.nds", 0x226CD4, 0x110C
.section .bss
- ; 0x02240A40
- .space 0x27E0
+ ; 0x02242FE4
+ .space 0x23C
diff --git a/arm9/modules/13/asm/module_13_thumb.s b/arm9/modules/13/asm/module_13_thumb.s
index b180ff6b..c231800c 100644
--- a/arm9/modules/13/asm/module_13_thumb.s
+++ b/arm9/modules/13/asm/module_13_thumb.s
@@ -14777,3 +14777,15 @@ _0221E556:
bx r3
.align 2, 0
_0221E55C: .word 0x02241B30
+
+ .section .rodata
+ ; 0x0223C444
+ .incbin "baserom.nds", 0x2237e4, 0x2828
+
+ .section .data
+ ; 0x0223F7B8
+ .incbin "baserom.nds", 0x226B58, 0x17C
+
+ .section .bss
+ ; 0x02240B34
+ .space 0x24B0
diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s
index 42e1c73b..1ace4733 100644
--- a/arm9/modules/14/asm/module_14.s
+++ b/arm9/modules/14/asm/module_14.s
@@ -30394,9 +30394,13 @@ MOD14_021E6220: ; 0x021E6220
ldr r0, [r0, #0x74]
bx lr
- .section .data
+ .section .rodata
; 0x021E6224
- .incbin "baserom.nds", 0x236b44, 0x7dc
+ .incbin "baserom.nds", 0x236b44, 0x7a4
+
+ .section .data
+ ; 0x021E69E0
+ .incbin "baserom.nds", 0x237300, 0x1C
.section .bss
; 0x021E69FC
diff --git a/arm9/modules/15/asm/module_15.s b/arm9/modules/15/asm/module_15.s
index bd9eb99a..8659bfeb 100644
--- a/arm9/modules/15/asm/module_15.s
+++ b/arm9/modules/15/asm/module_15.s
@@ -8748,6 +8748,6 @@ _021DB85C:
.align 2, 0
_021DB868: .word 0x021DBA55
- .section .data
+ .section .rodata
; 0x021DB86C
- .incbin "baserom.nds", 0x23B78C, 0x2F4
+ .incbin "baserom.nds", 0x23B78C, 0x2F0
diff --git a/arm9/modules/16/asm/module_16.s b/arm9/modules/16/asm/module_16.s
index 7d62c0f0..551ab8e1 100644
--- a/arm9/modules/16/asm/module_16.s
+++ b/arm9/modules/16/asm/module_16.s
@@ -63320,6 +63320,6 @@ _021F4E2C: .word 0x000003D1
_021F4E30: .word 0x000003D6
thumb_func_end MOD16_021F4A40
- .section .data
+ .section .rodata
; 0x021F4E34
- .incbin "baserom.nds", 0x259554, 0xABAC
+ .incbin "baserom.nds", 0x259554, 0xAB90
diff --git a/arm9/modules/17/asm/module_17.s b/arm9/modules/17/asm/module_17.s
index 884302f2..b839403b 100644
--- a/arm9/modules/17/asm/module_17.s
+++ b/arm9/modules/17/asm/module_17.s
@@ -14601,6 +14601,6 @@ _021DE24C: .word 0x00000151
_021DE250: .word 0x00010200
thumb_func_end MOD17_021DE0F4
- .section .data
+ .section .rodata
; 0x021DE254
- .incbin "baserom.nds", 0x26AF74, 0x10C
+ .incbin "baserom.nds", 0x26AF74, 0x100
diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s
index 767c2f6c..e73fc56e 100644
--- a/arm9/modules/18/asm/module_18.s
+++ b/arm9/modules/18/asm/module_18.s
@@ -46251,9 +46251,13 @@ _0224FFDC: .word 0x02250834
_0224FFE0: .word 0x022507F0
thumb_func_end MOD18_0224FFA0
- .section .data
+ .section .rodata
; 0x0224FFE4
- .incbin "baserom.nds", 0x281B44, 0x139C
+ .incbin "baserom.nds", 0x281B44, 0x874
+
+ .section .data
+ ; 0x02250860
+ .incbin "baserom.nds", 0x2823C0, 0xB20
.section .bss
; 0x02251380
diff --git a/arm9/modules/19/asm/module_19.s b/arm9/modules/19/asm/module_19.s
index 76dad3e4..52c045cc 100644
--- a/arm9/modules/19/asm/module_19.s
+++ b/arm9/modules/19/asm/module_19.s
@@ -101,6 +101,6 @@ MOD19_02252504: ; 0x02252504
bx lr
thumb_func_end MOD19_02252504
- .section .data
+ .section .rodata
; 0x02252508
- .incbin "baserom.nds", 0x2830C8, 0x38
+ .incbin "baserom.nds", 0x2830C8, 0x1c
diff --git a/arm9/modules/20/asm/module_20.s b/arm9/modules/20/asm/module_20.s
index afe8646c..1c3ba821 100644
--- a/arm9/modules/20/asm/module_20.s
+++ b/arm9/modules/20/asm/module_20.s
@@ -4565,6 +4565,6 @@ _022544BC: .word 0x022547C4
_022544C0: .word 0x022547C5
thumb_func_end MOD20_02254488
- .section .data
+ .section .rodata
; 0x022544C4
- .incbin "baserom.nds", 0x285284, 0x37C
+ .incbin "baserom.nds", 0x285284, 0x374
diff --git a/arm9/modules/21/asm/module_21.s b/arm9/modules/21/asm/module_21.s
index cea8f6e8..0c30eb9a 100644
--- a/arm9/modules/21/asm/module_21.s
+++ b/arm9/modules/21/asm/module_21.s
@@ -721,6 +721,15 @@ _02254D78: .word 0x040002A0
_02254D7C: .word 0x040002A8
thumb_func_end MOD21_02254C5C
- .section .data
+ .section .rodata
; 0x02254D80
- .incbin "baserom.nds", 0x285B40, 0x80
+ .incbin "baserom.nds", 0x285B40, 0x68
+
+ ; Dumb hack because the compiler aligns to 16 instead of 8
+ ;.section .sinit
+ .global SDK_OVERLAY.MODULE_21.SINIT_START
+ .global SDK_OVERLAY.MODULE_21.SINIT_END
+SDK_OVERLAY.MODULE_21.SINIT_START:
+ .word MOD21_02254840
+ .word 0
+SDK_OVERLAY.MODULE_21.SINIT_END:
diff --git a/arm9/modules/22/asm/module_22.s b/arm9/modules/22/asm/module_22.s
index 77e6bff4..610d0a55 100644
--- a/arm9/modules/22/asm/module_22.s
+++ b/arm9/modules/22/asm/module_22.s
@@ -1840,6 +1840,9 @@ _02255604:
.align 2, 0
thumb_func_end MOD22_022555FC
- .section .data
+ .section .rodata
; 0x02255618
- .incbin "baserom.nds", 0x2869D8, 0x128
+ .incbin "baserom.nds", 0x2869D8, 0x118
+
+ .section .sinit
+ .word MOD22_02254840
diff --git a/arm9/modules/23/asm/module_23.s b/arm9/modules/23/asm/module_23.s
index 6688578e..a5adabbb 100644
--- a/arm9/modules/23/asm/module_23.s
+++ b/arm9/modules/23/asm/module_23.s
@@ -2789,6 +2789,14 @@ _02255C96:
_02255CB8: .word 0x022560D0
thumb_func_end MOD23_02255C6C
- .section .data
+ .section .rodata
; 0x02255CBC
- .incbin "baserom.nds", 0x28807C, 0x484
+ .incbin "baserom.nds", 0x28807C, 0x46C
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_23.SINIT_START
+ .global SDK_OVERLAY.MODULE_23.SINIT_END
+SDK_OVERLAY.MODULE_23.SINIT_START:
+ .word MOD23_02254840
+ .word 0
+SDK_OVERLAY.MODULE_23.SINIT_END:
diff --git a/arm9/modules/24/asm/module_24.s b/arm9/modules/24/asm/module_24.s
index e3b9a327..ba2c3f32 100644
--- a/arm9/modules/24/asm/module_24.s
+++ b/arm9/modules/24/asm/module_24.s
@@ -1179,6 +1179,9 @@ _022550DC:
.align 2, 0
thumb_func_end MOD24_022550D4
- .section .data
+ .section .rodata
; 0x022550F8
- .incbin "baserom.nds", 0x288EB8, 0xE8
+ .incbin "baserom.nds", 0x288EB8, 0xC8
+
+ .section .sinit
+ .word MOD24_02254840
diff --git a/arm9/modules/25/asm/module_25.s b/arm9/modules/25/asm/module_25.s
index 6df522da..e1d7b555 100644
--- a/arm9/modules/25/asm/module_25.s
+++ b/arm9/modules/25/asm/module_25.s
@@ -658,6 +658,9 @@ _02254CE6:
pop {r4, r5, r6, pc}
thumb_func_end MOD25_02254CD8
- .section .data
+ .section .rodata
; 0x02254CF8
- .incbin "baserom.nds", 0x2894B8, 0xA8
+ .incbin "baserom.nds", 0x2894B8, 0x88
+
+ .section .sinit
+ .word MOD25_02254840
diff --git a/arm9/modules/26/asm/module_26.s b/arm9/modules/26/asm/module_26.s
index 2511101e..0b8d99df 100644
--- a/arm9/modules/26/asm/module_26.s
+++ b/arm9/modules/26/asm/module_26.s
@@ -788,6 +788,9 @@ _02254DC2:
_02254DE0: .word 0x02254FD0
thumb_func_end MOD26_02254DAC
- .section .data
+ .section .rodata
; 0x02254DE4
- .incbin "baserom.nds", 0x289BA4, 0x25C
+ .incbin "baserom.nds", 0x289BA4, 0x23C
+
+ .section .sinit
+ .word MOD26_02254840
diff --git a/arm9/modules/27/asm/module_27.s b/arm9/modules/27/asm/module_27.s
index b9a2d1ca..13a97851 100644
--- a/arm9/modules/27/asm/module_27.s
+++ b/arm9/modules/27/asm/module_27.s
@@ -1448,6 +1448,14 @@ MOD27_022552D0: ; 0x022552D0
_02255338: .word 0x00000669
thumb_func_end MOD27_022552D0
- .section .data
+ .section .rodata
; 0x0225533C
- .incbin "baserom.nds", 0x28A8FC, 0xA4
+ .incbin "baserom.nds", 0x28A8FC, 0x88
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_27.SINIT_START
+ .global SDK_OVERLAY.MODULE_27.SINIT_END
+SDK_OVERLAY.MODULE_27.SINIT_START:
+ .word MOD27_02254840
+ .word 0
+SDK_OVERLAY.MODULE_27.SINIT_END:
diff --git a/arm9/modules/28/asm/module_28.s b/arm9/modules/28/asm/module_28.s
index 0ad10077..e1a1d741 100644
--- a/arm9/modules/28/asm/module_28.s
+++ b/arm9/modules/28/asm/module_28.s
@@ -2963,5 +2963,19 @@ _02255E6E:
nop
_02255E74: .word 0x00000163
thumb_func_end MOD28_02255920
+
+ .section .rodata
; 0x02255E78
- .incbin "baserom.nds", 0x28C038, 0x148
+ .incbin "baserom.nds", 0x28C038, 0xa0
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_28.SINIT_START
+ .global SDK_OVERLAY.MODULE_28.SINIT_END
+SDK_OVERLAY.MODULE_28.SINIT_START:
+ .word MOD28_02254840
+ .word 0
+SDK_OVERLAY.MODULE_28.SINIT_END:
+
+ .section .data
+ ; 0x02255F20
+ .incbin "baserom.nds", 0x28C0E0, 0xa0
diff --git a/arm9/modules/29/asm/module_29.s b/arm9/modules/29/asm/module_29.s
index 818f41aa..db3f5ab8 100644
--- a/arm9/modules/29/asm/module_29.s
+++ b/arm9/modules/29/asm/module_29.s
@@ -1121,6 +1121,14 @@ MOD29_0225508C: ; 0x0225508C
.align 2, 0
thumb_func_end MOD29_0225508C
- .section .data
+ .section .rodata
; 0x0225509C
- .incbin "baserom.nds", 0x28CA5C, 0xA4
+ .incbin "baserom.nds", 0x28CA5C, 0x90
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_29.SINIT_START
+ .global SDK_OVERLAY.MODULE_29.SINIT_END
+SDK_OVERLAY.MODULE_29.SINIT_START:
+ .word MOD29_02254840
+ .word 0
+SDK_OVERLAY.MODULE_29.SINIT_END:
diff --git a/arm9/modules/30/asm/module_30.s b/arm9/modules/30/asm/module_30.s
index 36581e76..924f7ad0 100644
--- a/arm9/modules/30/asm/module_30.s
+++ b/arm9/modules/30/asm/module_30.s
@@ -731,4 +731,12 @@ _02254D9C: .word 0x040002A8
.section .data
; 0x02254DA0
- .incbin "baserom.nds", 0x28D160, 0xA0
+ .incbin "baserom.nds", 0x28D160, 0x88
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_30.SINIT_START
+ .global SDK_OVERLAY.MODULE_30.SINIT_END
+SDK_OVERLAY.MODULE_30.SINIT_START:
+ .word MOD30_02254840
+ .word 0
+SDK_OVERLAY.MODULE_30.SINIT_END:
diff --git a/arm9/modules/31/asm/module_31.s b/arm9/modules/31/asm/module_31.s
index cdf3282a..e9c70424 100644
--- a/arm9/modules/31/asm/module_31.s
+++ b/arm9/modules/31/asm/module_31.s
@@ -719,6 +719,9 @@ _02254D90: .word 0x040002A0
_02254D94: .word 0x040002A8
thumb_func_end MOD31_02254D1C
- .section .data
+ .section .rodata
; 0x02254D98
- .incbin "baserom.nds", 0x28D758, 0xA8
+ .incbin "baserom.nds", 0x28D758, 0x88
+
+ .section .sinit
+ .word MOD31_02254840
diff --git a/arm9/modules/32/asm/module_32.s b/arm9/modules/32/asm/module_32.s
index 135a9b15..299432f1 100644
--- a/arm9/modules/32/asm/module_32.s
+++ b/arm9/modules/32/asm/module_32.s
@@ -571,6 +571,14 @@ _02254C48:
_02254C50: .word 0x00000663
thumb_func_end MOD32_02254C08
- .section .data
+ .section .rodata
; 0x02254C54
- .incbin "baserom.nds", 0x28DC14, 0x8C
+ .incbin "baserom.nds", 0x28DC14, 0x70
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_32.SINIT_START
+ .global SDK_OVERLAY.MODULE_32.SINIT_END
+SDK_OVERLAY.MODULE_32.SINIT_START:
+ .word MOD32_02254840
+ .word 0
+SDK_OVERLAY.MODULE_32.SINIT_END:
diff --git a/arm9/modules/33/asm/module_33.s b/arm9/modules/33/asm/module_33.s
new file mode 100644
index 00000000..67ec554d
--- /dev/null
+++ b/arm9/modules/33/asm/module_33.s
@@ -0,0 +1,399 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD33_02254840
+MOD33_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD33_02254854
+ ldr r1, _02254850 ; =MOD33_02254908
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD33_02254854
+_02254850: .word MOD33_02254908
+ thumb_func_end MOD33_02254840
+
+ thumb_func_start MOD33_02254854
+MOD33_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x10
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD33_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD33_022548D4
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD33_022548D4
+ thumb_func_end MOD33_02254854
+
+ thumb_func_start MOD33_0225489C
+MOD33_0225489C: ; 0x0225489C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, #8
+ add r1, r5, #4
+ bl MOD33_022549AC
+ cmp r0, #0
+ beq _022548BC
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ str r4, [r5, #0xc]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_022548BC:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD33_0225489C
+
+ thumb_func_start MOD33_022548C0
+MOD33_022548C0: ; 0x022548C0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ bl MOD33_022549DC
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD33_022548C0
+
+ thumb_func_start MOD33_022548D4
+MOD33_022548D4: ; 0x022548D4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4]
+ add r5, r0, #0
+ cmp r1, #3
+ bhs _02254900
+ lsl r2, r1, #2
+ ldr r1, _02254904 ; =0x02254AF4
+ add r0, r4, #0
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254900
+ add r0, r4, #0
+ bl MOD33_022548C0
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0xc]
+ bl MOD20_022529A0
+_02254900:
+ pop {r3, r4, r5, pc}
+ nop
+_02254904: .word 0x02254AF4
+ thumb_func_end MOD33_022548D4
+
+ thumb_func_start MOD33_02254908
+MOD33_02254908: ; 0x02254908
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD33_02254908
+
+ thumb_func_start MOD33_02254910
+MOD33_02254910: ; 0x02254910
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254918
+ b _0225491A
+_02254918:
+ mov r1, #2
+_0225491A:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD33_02254910
+
+ thumb_func_start MOD33_02254924
+MOD33_02254924: ; 0x02254924
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254934
+ cmp r0, #1
+ beq _02254944
+ b _0225495E
+_02254934:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD33_022549E8
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _0225495E
+_02254944:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD33_02254A0C
+ cmp r0, #0
+ beq _0225495E
+ ldr r0, [r4, #0xc]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD33_02254910
+_0225495E:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD33_02254924
+
+ thumb_func_start MOD33_02254964
+MOD33_02254964: ; 0x02254964
+ push {r3, lr}
+ ldrb r1, [r0, #2]
+ cmp r1, #0
+ beq _02254972
+ mov r1, #2
+ bl MOD33_02254910
+_02254972:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD33_02254964
+
+ thumb_func_start MOD33_02254978
+MOD33_02254978: ; 0x02254978
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254988
+ cmp r0, #1
+ beq _02254998
+ b _022549A6
+_02254988:
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl MOD33_022549E8
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549A6
+_02254998:
+ ldr r0, [r4, #8]
+ bl MOD33_02254A18
+ cmp r0, #0
+ beq _022549A6
+ mov r0, #1
+ pop {r4, pc}
+_022549A6:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD33_02254978
+
+ thumb_func_start MOD33_022549AC
+MOD33_022549AC: ; 0x022549AC
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x30
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _022549D8
+ add r0, #8
+ mov r1, #8
+ bl MOD20_022536F4
+ str r6, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ cmp r0, #0
+ beq _022549D8
+ str r4, [r5]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_022549D8:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD33_022549AC
+
+ thumb_func_start MOD33_022549DC
+MOD33_022549DC: ; 0x022549DC
+ push {r3, lr}
+ cmp r0, #0
+ beq _022549E6
+ bl FUN_02016A18
+_022549E6:
+ pop {r3, pc}
+ thumb_func_end MOD33_022549DC
+
+ thumb_func_start MOD33_022549E8
+MOD33_022549E8: ; 0x022549E8
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254A08 ; =0x02254B1C
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254A08: .word 0x02254B1C
+ thumb_func_end MOD33_022549E8
+
+ thumb_func_start MOD33_02254A0C
+MOD33_02254A0C: ; 0x02254A0C
+ ldr r3, _02254A14 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254A14: .word MOD20_02253794
+ thumb_func_end MOD33_02254A0C
+
+ thumb_func_start MOD33_02254A18
+MOD33_02254A18: ; 0x02254A18
+ ldr r3, _02254A20 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254A20: .word MOD20_022537B8
+ thumb_func_end MOD33_02254A18
+
+ thumb_func_start MOD33_02254A24
+MOD33_02254A24: ; 0x02254A24
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD33_02254A24
+
+ thumb_func_start MOD33_02254A38
+MOD33_02254A38: ; 0x02254A38
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _02254ACC ; =0x02254B00
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #8
+ str r1, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r3, #6
+ bl FUN_0200687C
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x18
+ str r0, [sp, #8]
+ str r2, [sp, #0xc]
+ ldr r0, [r5, #4]
+ mov r1, #6
+ add r3, r2, #0
+ bl FUN_02018540
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #0xc
+ mov r1, #9
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ ldr r0, [r5, #4]
+ mov r1, #0xc
+ mov r2, #6
+ bl MOD20_02253AA4
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02254AD0 ; =0x04001000
+ ldr r0, _02254AD4 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD33_02254A24
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_02254ACC: .word 0x02254B00
+_02254AD0: .word 0x04001000
+_02254AD4: .word 0xFFFFE0FF
+ thumb_func_end MOD33_02254A38
+
+ thumb_func_start MOD33_02254AD8
+MOD33_02254AD8: ; 0x02254AD8
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ ldr r0, [r0, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r4, #0
+ bl MOD33_02254A24
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD33_02254AD8
+
+ .section .rodata
+ ; 0x02254AF4
+ .incbin "baserom.nds", 0x28E0B4, 0x4C
+
+ .section .sinit
+ .word MOD33_02254840
diff --git a/arm9/modules/34/asm/module_34.s b/arm9/modules/34/asm/module_34.s
new file mode 100644
index 00000000..a12d1a4a
--- /dev/null
+++ b/arm9/modules/34/asm/module_34.s
@@ -0,0 +1,601 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD34_02254840
+MOD34_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD34_02254854
+ ldr r1, _02254850 ; =MOD34_02254948
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD34_02254854
+_02254850: .word MOD34_02254948
+ thumb_func_end MOD34_02254840
+
+ thumb_func_start MOD34_02254854
+MOD34_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x38
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD34_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD34_0225490C
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD34_0225490C
+ thumb_func_end MOD34_02254854
+
+ thumb_func_start MOD34_0225489C
+MOD34_0225489C: ; 0x0225489C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, #0x24
+ add r1, r5, #4
+ bl MOD34_02254A5C
+ cmp r0, #0
+ beq _022548DC
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ str r4, [r5, #0x28]
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _022548E0 ; =0x02254C7C
+ ldr r2, _022548E4 ; =MOD34_02254904
+ mov r1, #6
+ add r3, r5, #0
+ bl MOD20_02254130
+ str r0, [r5, #0x2c]
+ mov r1, #0
+ str r1, [r5, #0x30]
+ mov r0, #1
+_022548D0:
+ add r1, r1, #1
+ str r0, [r5, #8]
+ add r5, r5, #4
+ cmp r1, #6
+ blt _022548D0
+ pop {r3, r4, r5, pc}
+_022548DC:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022548E0: .word 0x02254C7C
+_022548E4: .word MOD34_02254904
+ thumb_func_end MOD34_0225489C
+
+ thumb_func_start MOD34_022548E8
+MOD34_022548E8: ; 0x022548E8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x2c]
+ cmp r0, #0
+ beq _022548F6
+ bl MOD20_02254198
+_022548F6:
+ ldr r0, [r4, #0x24]
+ bl MOD34_02254A8C
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD34_022548E8
+
+ thumb_func_start MOD34_02254904
+MOD34_02254904: ; 0x02254904
+ str r1, [r3, #0x30]
+ str r0, [r3, #0x34]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD34_02254904
+
+ thumb_func_start MOD34_0225490C
+MOD34_0225490C: ; 0x0225490C
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhs _02254942
+ ldr r0, [r4, #0x28]
+ ldr r1, [r4, #0x2c]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _02254944 ; =0x02254C70
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254942
+ add r0, r4, #0
+ bl MOD34_022548E8
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x28]
+ bl MOD20_022529A0
+_02254942:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254944: .word 0x02254C70
+ thumb_func_end MOD34_0225490C
+
+ thumb_func_start MOD34_02254948
+MOD34_02254948: ; 0x02254948
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD34_02254948
+
+ thumb_func_start MOD34_02254950
+MOD34_02254950: ; 0x02254950
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254958
+ b _0225495A
+_02254958:
+ mov r1, #2
+_0225495A:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD34_02254950
+
+ thumb_func_start MOD34_02254964
+MOD34_02254964: ; 0x02254964
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254974
+ cmp r0, #1
+ beq _02254984
+ b _0225499E
+_02254974:
+ ldr r0, [r4, #0x24]
+ mov r1, #0
+ bl MOD34_02254A98
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _0225499E
+_02254984:
+ ldr r0, [r4, #0x24]
+ mov r1, #0
+ bl MOD34_02254ABC
+ cmp r0, #0
+ beq _0225499E
+ ldr r0, [r4, #0x28]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD34_02254950
+_0225499E:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD34_02254964
+
+ thumb_func_start MOD34_022549A4
+MOD34_022549A4: ; 0x022549A4
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _022549B8
+ mov r1, #2
+ bl MOD34_02254950
+ mov r0, #0
+ pop {r4, pc}
+_022549B8:
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549C4
+ cmp r0, #1
+ beq _022549F6
+ b _02254A1A
+_022549C4:
+ ldr r0, [r4, #0x30]
+ cmp r0, #1
+ bne _02254A1A
+ ldr r1, [r4, #0x34]
+ lsl r0, r1, #2
+ add r0, r4, r0
+ ldr r0, [r0, #8]
+ cmp r0, #0
+ beq _022549EE
+ strh r1, [r4, #0x20]
+ ldr r0, [r4, #0x24]
+ mov r1, #2
+ bl MOD34_02254A98
+ ldr r0, _02254A20 ; =0x00000663
+ bl MOD20_02252B28
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A1A
+_022549EE:
+ ldr r0, _02254A24 ; =0x0000066E
+ bl MOD20_02252B28
+ b _02254A1A
+_022549F6:
+ ldr r0, [r4, #0x30]
+ cmp r0, #2
+ bne _02254A0A
+ ldr r0, [r4, #0x24]
+ mov r1, #3
+ bl MOD34_02254A98
+ mov r0, #0
+ strb r0, [r4, #1]
+ b _02254A1A
+_02254A0A:
+ cmp r0, #3
+ bne _02254A1A
+ ldr r0, [r4, #0x24]
+ mov r1, #3
+ bl MOD34_02254A98
+ mov r0, #0
+ strb r0, [r4, #1]
+_02254A1A:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_02254A20: .word 0x00000663
+_02254A24: .word 0x0000066E
+ thumb_func_end MOD34_022549A4
+
+ thumb_func_start MOD34_02254A28
+MOD34_02254A28: ; 0x02254A28
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A38
+ cmp r0, #1
+ beq _02254A48
+ b _02254A56
+_02254A38:
+ ldr r0, [r4, #0x24]
+ mov r1, #1
+ bl MOD34_02254A98
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A56
+_02254A48:
+ ldr r0, [r4, #0x24]
+ bl MOD34_02254AC8
+ cmp r0, #0
+ beq _02254A56
+ mov r0, #1
+ pop {r4, pc}
+_02254A56:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD34_02254A28
+
+ thumb_func_start MOD34_02254A5C
+MOD34_02254A5C: ; 0x02254A5C
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x20
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254A88
+ add r0, #8
+ mov r1, #4
+ bl MOD20_022536F4
+ str r6, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ cmp r0, #0
+ beq _02254A88
+ str r4, [r5]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254A88:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD34_02254A5C
+
+ thumb_func_start MOD34_02254A8C
+MOD34_02254A8C: ; 0x02254A8C
+ push {r3, lr}
+ cmp r0, #0
+ beq _02254A96
+ bl FUN_02016A18
+_02254A96:
+ pop {r3, pc}
+ thumb_func_end MOD34_02254A8C
+
+ thumb_func_start MOD34_02254A98
+MOD34_02254A98: ; 0x02254A98
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254AB8 ; =0x02254CBC
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254AB8: .word 0x02254CBC
+ thumb_func_end MOD34_02254A98
+
+ thumb_func_start MOD34_02254ABC
+MOD34_02254ABC: ; 0x02254ABC
+ ldr r3, _02254AC4 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254AC4: .word MOD20_02253794
+ thumb_func_end MOD34_02254ABC
+
+ thumb_func_start MOD34_02254AC8
+MOD34_02254AC8: ; 0x02254AC8
+ ldr r3, _02254AD0 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254AD0: .word MOD20_022537B8
+ thumb_func_end MOD34_02254AC8
+
+ thumb_func_start MOD34_02254AD4
+MOD34_02254AD4: ; 0x02254AD4
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD34_02254AD4
+
+ thumb_func_start MOD34_02254AE8
+MOD34_02254AE8: ; 0x02254AE8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x18
+ str r1, [sp, #0x10]
+ add r0, r1, #0
+ bl MOD20_022538A0
+ add r6, r0, #0
+ ldr r0, [sp, #0x10]
+ bl MOD20_022538A4
+ add r5, r0, #0
+ ldr r0, [r6, #4]
+ ldr r2, _02254B8C ; =0x02254CA0
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r6, #4]
+ mov r0, #0xc
+ mov r1, #0x3b
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r6, #4]
+ mov r0, #0xc
+ mov r1, #0x3a
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ mov r4, #0
+ add r7, r4, #0
+_02254B4A:
+ ldr r2, [r5, #4]
+ add r0, r6, #0
+ add r1, r4, #0
+ add r3, r7, #0
+ bl MOD34_02254C1C
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #6
+ blt _02254B4A
+ ldr r0, [r6, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r0, _02254B90 ; =0x04001000
+ ldr r1, _02254B94 ; =0xFFFFE0FF
+ ldr r2, [r0]
+ ldr r4, [r0]
+ add r3, r2, #0
+ and r3, r1
+ lsl r1, r4, #0x13
+ lsr r2, r1, #0x1b
+ mov r1, #4
+ orr r1, r2
+ lsl r1, r1, #8
+ orr r1, r3
+ str r1, [r0]
+ ldr r0, [sp, #0x10]
+ str r4, [sp, #0x14]
+ bl MOD34_02254AD4
+ add sp, #0x18
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254B8C: .word 0x02254CA0
+_02254B90: .word 0x04001000
+_02254B94: .word 0xFFFFE0FF
+ thumb_func_end MOD34_02254AE8
+
+ thumb_func_start MOD34_02254B98
+MOD34_02254B98: ; 0x02254B98
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ ldr r0, [r0, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r4, #0
+ bl MOD34_02254AD4
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD34_02254B98
+
+ thumb_func_start MOD34_02254BB4
+MOD34_02254BB4: ; 0x02254BB4
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r3, r0, #0
+ ldrh r1, [r3, #0x1c]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ add r2, r3, r2
+ ldr r2, [r2, #4]
+ mov r3, #1
+ bl MOD34_02254C1C
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ add r0, r5, #0
+ bl MOD34_02254AD4
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD34_02254BB4
+
+ thumb_func_start MOD34_02254BE8
+MOD34_02254BE8: ; 0x02254BE8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r3, r0, #0
+ ldrh r1, [r3, #0x1c]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ add r2, r3, r2
+ ldr r2, [r2, #4]
+ mov r3, #0
+ bl MOD34_02254C1C
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ add r0, r5, #0
+ bl MOD34_02254AD4
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD34_02254BE8
+
+ thumb_func_start MOD34_02254C1C
+MOD34_02254C1C: ; 0x02254C1C
+ push {r4, r5, r6, lr}
+ ldr r0, [r0, #4]
+ add r5, r1, #0
+ mov r1, #6
+ add r4, r2, #0
+ add r6, r3, #0
+ bl FUN_0201886C
+ ldr r1, _02254C6C ; =0x02254C94
+ lsl r2, r5, #1
+ ldrh r1, [r1, r2]
+ lsl r1, r1, #1
+ add r2, r0, r1
+ cmp r4, #0
+ beq _02254C44
+ add r1, r5, #1
+ mov r0, #0x48
+ add r5, r1, #0
+ mul r5, r0
+ b _02254C46
+_02254C44:
+ mov r5, #0
+_02254C46:
+ cmp r6, #0
+ beq _02254C4C
+ add r5, #0x24
+_02254C4C:
+ mov r3, #0
+ add r0, r3, #0
+_02254C50:
+ add r1, r0, #0
+ add r4, r2, #0
+_02254C54:
+ add r1, r1, #1
+ strh r5, [r4]
+ add r5, r5, #1
+ add r4, r4, #2
+ cmp r1, #6
+ blt _02254C54
+ add r3, r3, #1
+ add r2, #0x40
+ cmp r3, #6
+ blt _02254C50
+ pop {r4, r5, r6, pc}
+ nop
+_02254C6C: .word 0x02254C94
+ thumb_func_end MOD34_02254C1C
+
+ .section .rodata
+ ; 0x02254C70
+ .incbin "baserom.nds", 0x28e630, 0x88
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_34.SINIT_START
+ .global SDK_OVERLAY.MODULE_34.SINIT_END
+SDK_OVERLAY.MODULE_34.SINIT_START:
+ .word MOD34_02254840
+ .word 0
+SDK_OVERLAY.MODULE_34.SINIT_END:
diff --git a/arm9/modules/35/asm/module_35.s b/arm9/modules/35/asm/module_35.s
new file mode 100644
index 00000000..fe5b7b14
--- /dev/null
+++ b/arm9/modules/35/asm/module_35.s
@@ -0,0 +1,1142 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD35_02254840
+MOD35_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD35_02254854
+ ldr r1, _02254850 ; =MOD35_02254924
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD35_02254854
+_02254850: .word MOD35_02254924
+ thumb_func_end MOD35_02254840
+
+ thumb_func_start MOD35_02254854
+MOD35_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x34
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD35_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD35_022548F0
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word MOD35_022548F0
+ thumb_func_end MOD35_02254854
+
+ thumb_func_start MOD35_0225489C
+MOD35_0225489C: ; 0x0225489C
+ push {r4, r5, r6, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ add r0, r4, #0
+ add r6, r2, #0
+ bl MOD20_02252C40
+ bl FUN_02023D58
+ str r0, [r5, #0x30]
+ ldr r1, [r5, #0x30]
+ add r0, r5, #4
+ bl MOD35_02254A50
+ add r0, r5, #0
+ add r0, #0x28
+ add r1, r5, #4
+ add r2, r6, #0
+ bl MOD35_02254ADC
+ cmp r0, #0
+ beq _022548D6
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ str r4, [r5, #0x2c]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_022548D6:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD35_0225489C
+
+ thumb_func_start MOD35_022548DC
+MOD35_022548DC: ; 0x022548DC
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x28]
+ bl MOD35_02254B38
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD35_022548DC
+
+ thumb_func_start MOD35_022548F0
+MOD35_022548F0: ; 0x022548F0
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4]
+ add r5, r0, #0
+ cmp r1, #3
+ bhs _0225491C
+ lsl r2, r1, #2
+ ldr r1, _02254920 ; =0x022550B8
+ add r0, r4, #0
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _0225491C
+ add r0, r4, #0
+ bl MOD35_022548DC
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0x2c]
+ bl MOD20_022529A0
+_0225491C:
+ pop {r3, r4, r5, pc}
+ nop
+_02254920: .word 0x022550B8
+ thumb_func_end MOD35_022548F0
+
+ thumb_func_start MOD35_02254924
+MOD35_02254924: ; 0x02254924
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD35_02254924
+
+ thumb_func_start MOD35_0225492C
+MOD35_0225492C: ; 0x0225492C
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254934
+ b _02254936
+_02254934:
+ mov r1, #2
+_02254936:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD35_0225492C
+
+ thumb_func_start MOD35_02254940
+MOD35_02254940: ; 0x02254940
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254950
+ cmp r0, #1
+ beq _02254960
+ b _0225497A
+_02254950:
+ ldr r0, [r4, #0x28]
+ mov r1, #0
+ bl MOD35_02254C48
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _0225497A
+_02254960:
+ ldr r0, [r4, #0x28]
+ mov r1, #0
+ bl MOD35_02254C6C
+ cmp r0, #0
+ beq _0225497A
+ ldr r0, [r4, #0x2c]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD35_0225492C
+_0225497A:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD35_02254940
+
+ thumb_func_start MOD35_02254980
+MOD35_02254980: ; 0x02254980
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254994
+ mov r1, #2
+ bl MOD35_0225492C
+ mov r0, #0
+ pop {r4, pc}
+_02254994:
+ ldrb r1, [r4, #1]
+ cmp r1, #0
+ beq _022549A0
+ cmp r1, #1
+ beq _022549C0
+ b _022549D0
+_022549A0:
+ bl MOD35_02254A08
+ cmp r0, #0
+ beq _022549D0
+ ldr r1, [r4, #0x30]
+ add r0, r4, #4
+ bl MOD35_02254A50
+ ldr r0, [r4, #0x28]
+ mov r1, #2
+ bl MOD35_02254C48
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549D0
+_022549C0:
+ ldr r0, [r4, #0x28]
+ mov r1, #2
+ bl MOD35_02254C6C
+ cmp r0, #0
+ beq _022549D0
+ mov r0, #0
+ strb r0, [r4, #1]
+_022549D0:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD35_02254980
+
+ thumb_func_start MOD35_022549D4
+MOD35_022549D4: ; 0x022549D4
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549E4
+ cmp r0, #1
+ beq _022549F4
+ b _02254A02
+_022549E4:
+ ldr r0, [r4, #0x28]
+ mov r1, #1
+ bl MOD35_02254C48
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A02
+_022549F4:
+ ldr r0, [r4, #0x28]
+ bl MOD35_02254C78
+ cmp r0, #0
+ beq _02254A02
+ mov r0, #1
+ pop {r4, pc}
+_02254A02:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD35_022549D4
+
+ thumb_func_start MOD35_02254A08
+MOD35_02254A08: ; 0x02254A08
+ push {r3, lr}
+ sub sp, #8
+ ldr r0, [r0, #0x2c]
+ bl MOD20_02252C08
+ cmp r0, #0
+ bne _02254A48
+ add r0, sp, #4
+ add r1, sp, #0
+ bl FUN_02020ACC
+ cmp r0, #0
+ beq _02254A48
+ ldr r0, [sp, #4]
+ sub r0, #0x10
+ cmp r0, #0xbf
+ bhs _02254A2E
+ mov r1, #1
+ b _02254A30
+_02254A2E:
+ mov r1, #0
+_02254A30:
+ ldr r0, [sp]
+ sub r0, #0x10
+ cmp r0, #0x9f
+ bhs _02254A3C
+ mov r0, #1
+ b _02254A3E
+_02254A3C:
+ mov r0, #0
+_02254A3E:
+ tst r0, r1
+ beq _02254A48
+ add sp, #8
+ mov r0, #1
+ pop {r3, pc}
+_02254A48:
+ mov r0, #0
+ add sp, #8
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD35_02254A08
+
+ thumb_func_start MOD35_02254A50
+MOD35_02254A50: ; 0x02254A50
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ str r0, [sp]
+ add r0, r1, #0
+ str r1, [sp, #4]
+ bl MOD05_021EC464
+ ldr r1, [sp]
+ strb r0, [r1]
+ ldr r0, [sp, #4]
+ bl FUN_02023C90
+ ldr r1, [sp]
+ mov r7, #0
+ strb r0, [r1, #1]
+ add r0, r1, #0
+ ldrb r0, [r0]
+ cmp r0, #0
+ ble _02254AD6
+ add r5, r1, #0
+ add r6, r1, #0
+_02254A7A:
+ ldr r0, [sp, #4]
+ add r1, r7, #0
+ bl FUN_02023C74
+ str r0, [sp, #8]
+ bl FUN_02023C7C
+ add r4, r0, #0
+ bl FUN_02066A6C
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ bl FUN_0206B688
+ str r0, [r5, #4]
+ add r0, r4, #0
+ mov r1, #5
+ mov r2, #0
+ bl FUN_020672BC
+ strh r0, [r6, #0x1c]
+ add r0, r4, #0
+ mov r1, #0x70
+ mov r2, #0
+ bl FUN_020672BC
+ strh r0, [r6, #0x20]
+ ldr r0, [sp, #8]
+ bl MOD05_021EC7B4
+ str r0, [r5, #0xc]
+ add r0, r4, #0
+ bl FUN_020689E8
+ str r0, [r5, #0x14]
+ ldr r1, [sp, #0xc]
+ add r0, r4, #0
+ bl FUN_02066A94
+ ldr r0, [sp]
+ add r7, r7, #1
+ ldrb r0, [r0]
+ add r5, r5, #4
+ add r6, r6, #2
+ cmp r7, r0
+ blt _02254A7A
+_02254AD6:
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD35_02254A50
+
+ thumb_func_start MOD35_02254ADC
+MOD35_02254ADC: ; 0x02254ADC
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #8
+ mov r1, #0x90
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254B2E
+ add r0, #8
+ mov r1, #4
+ bl MOD20_022536F4
+ str r5, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x20]
+ add r0, r4, #0
+ mov r2, #0
+ add r0, #0x88
+ str r2, [r0]
+ ldr r0, _02254B34 ; =MOD35_02254E60
+ add r1, r4, #0
+ bl FUN_0200CA98
+ add r1, r4, #0
+ add r1, #0x8c
+ str r0, [r1]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD35_02254B54
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _02254B2E
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254B2E:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ nop
+_02254B34: .word MOD35_02254E60
+ thumb_func_end MOD35_02254ADC
+
+ thumb_func_start MOD35_02254B38
+MOD35_02254B38: ; 0x02254B38
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254B52
+ bl MOD35_02254C18
+ add r0, r4, #0
+ add r0, #0x8c
+ ldr r0, [r0]
+ bl FUN_0200CAB4
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254B52:
+ pop {r4, pc}
+ thumb_func_end MOD35_02254B38
+
+ thumb_func_start MOD35_02254B54
+MOD35_02254B54: ; 0x02254B54
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x20
+ add r7, r0, #0
+ mov r0, #1
+ str r1, [sp, #0xc]
+ bl MOD20_022539C4
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x54
+ bl FUN_02006A34
+ mov r1, #0x14
+ bl _u32_div_f
+ ldr r1, [sp, #0xc]
+ str r0, [sp, #0x14]
+ str r0, [r7, #0x78]
+ bl MOD35_02254E88
+ mov r0, #8
+ str r0, [sp]
+ add r0, r7, #0
+ add r0, #0x50
+ mov r1, #0xc
+ mov r2, #0x52
+ mov r3, #0x53
+ bl MOD20_02253FBC
+ mov r0, #8
+ str r0, [sp]
+ add r0, r7, #0
+ add r0, #0x64
+ mov r1, #0xc
+ mov r2, #5
+ mov r3, #6
+ bl MOD20_02253FBC
+ add r0, r7, #0
+ str r0, [sp, #0x1c]
+ add r0, #0x50
+ str r0, [sp, #0x1c]
+ add r0, r7, #0
+ mov r4, #0
+ str r0, [sp, #0x18]
+ add r0, #0x64
+ ldr r6, _02254C14 ; =0x02255110
+ add r5, r7, #0
+ str r4, [sp, #0x10]
+ str r0, [sp, #0x18]
+_02254BC2:
+ cmp r4, #0
+ blt _02254BE2
+ cmp r4, #2
+ bgt _02254BE2
+ ldr r0, [r7, #0x20]
+ ldr r2, [sp, #0x18]
+ add r1, r6, #0
+ bl MOD20_02253E74
+ ldr r2, [sp, #0x14]
+ ldr r1, [sp, #0x10]
+ str r0, [r5, #0x24]
+ add r1, r2, r1
+ bl MOD20_02253FA4
+ b _02254BEE
+_02254BE2:
+ ldr r0, [r7, #0x20]
+ ldr r2, [sp, #0x1c]
+ add r1, r6, #0
+ bl MOD20_02253E74
+ str r0, [r5, #0x24]
+_02254BEE:
+ ldr r0, [r5, #0x24]
+ mov r1, #1
+ bl MOD20_02253FAC
+ ldr r0, [sp, #0x10]
+ add r4, r4, #1
+ add r0, #0x20
+ add r6, #0x10
+ add r5, r5, #4
+ str r0, [sp, #0x10]
+ cmp r4, #0xb
+ blt _02254BC2
+ ldr r1, [sp, #0xc]
+ add r0, r7, #0
+ bl MOD35_02254EC8
+ add sp, #0x20
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254C14: .word 0x02255110
+ thumb_func_end MOD35_02254B54
+
+ thumb_func_start MOD35_02254C18
+MOD35_02254C18: ; 0x02254C18
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_02254C20:
+ ldr r1, [r5, #0x24]
+ cmp r1, #0
+ beq _02254C2C
+ ldr r0, [r6, #0x20]
+ bl MOD20_02253F14
+_02254C2C:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #0xb
+ blt _02254C20
+ add r0, r6, #0
+ add r0, #0x64
+ bl MOD20_02254014
+ add r6, #0x50
+ add r0, r6, #0
+ bl MOD20_02254014
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD35_02254C18
+
+ thumb_func_start MOD35_02254C48
+MOD35_02254C48: ; 0x02254C48
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254C68 ; =0x022550E0
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254C68: .word 0x022550E0
+ thumb_func_end MOD35_02254C48
+
+ thumb_func_start MOD35_02254C6C
+MOD35_02254C6C: ; 0x02254C6C
+ ldr r3, _02254C74 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254C74: .word MOD20_02253794
+ thumb_func_end MOD35_02254C6C
+
+ thumb_func_start MOD35_02254C78
+MOD35_02254C78: ; 0x02254C78
+ ldr r3, _02254C80 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254C80: .word MOD20_022537B8
+ thumb_func_end MOD35_02254C78
+
+ thumb_func_start MOD35_02254C84
+MOD35_02254C84: ; 0x02254C84
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD35_02254C84
+
+ thumb_func_start MOD35_02254C98
+MOD35_02254C98: ; 0x02254C98
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ ldr r0, [r5, #4]
+ ldr r2, _02254D24 ; =0x022550C4
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x51
+ mov r3, #6
+ bl FUN_0200687C
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r1, #0x50
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02254D28 ; =0x0400104C
+ mov r0, #0
+ strb r0, [r1]
+ strb r0, [r1, #1]
+ sub r1, #0x4c
+ ldr r3, [r1]
+ ldr r2, [r1]
+ ldr r0, _02254D2C ; =0xFFFFE0FF
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #4
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r4, #0
+ bl MOD35_02254C84
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_02254D24: .word 0x022550C4
+_02254D28: .word 0x0400104C
+_02254D2C: .word 0xFFFFE0FF
+ thumb_func_end MOD35_02254C98
+
+ thumb_func_start MOD35_02254D30
+MOD35_02254D30: ; 0x02254D30
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _02254D4C
+ cmp r0, #1
+ beq _02254D5A
+ pop {r3, r4, r5, pc}
+_02254D4C:
+ mov r0, #1
+ add r4, #0x84
+ str r0, [r4]
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_02254D5A:
+ add r0, r4, #0
+ mov r1, #2
+ bl MOD35_02254C6C
+ cmp r0, #0
+ beq _02254D7C
+ ldr r0, _02254D80 ; =0x0400104C
+ mov r1, #0
+ strb r1, [r0]
+ strb r1, [r0, #1]
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD35_02254C84
+_02254D7C:
+ pop {r3, r4, r5, pc}
+ nop
+_02254D80: .word 0x0400104C
+ thumb_func_end MOD35_02254D30
+
+ thumb_func_start MOD35_02254D84
+MOD35_02254D84: ; 0x02254D84
+ push {r4, r5, r6, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r6, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #3
+ bhi _02254E50
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02254DAE: ; jump table
+ .short _02254DB6 - _02254DAE - 2 ; case 0
+ .short _02254DDC - _02254DAE - 2 ; case 1
+ .short _02254DF4 - _02254DAE - 2 ; case 2
+ .short _02254E4A - _02254DAE - 2 ; case 3
+_02254DB6:
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x84
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x80
+ str r1, [r0]
+ mov r0, #0xa
+ str r0, [r4, #0x7c]
+ add r0, r4, #0
+ bl MOD35_02254E58
+ ldr r0, _02254E54 ; =0x00000678
+ bl MOD20_02252B28
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r4, r5, r6, pc}
+_02254DDC:
+ ldr r0, [r4, #0x78]
+ add r1, r6, #0
+ bl MOD35_02254E88
+ add r0, r4, #0
+ add r1, r6, #0
+ bl MOD35_02254EC8
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r4, r5, r6, pc}
+_02254DF4:
+ add r0, r4, #0
+ add r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02254E10
+ mov r0, #0
+ str r0, [r4, #0x7c]
+ add r0, r4, #0
+ bl MOD35_02254E58
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r4, r5, r6, pc}
+_02254E10:
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ add r1, r0, #1
+ add r0, r4, #0
+ add r0, #0x80
+ str r1, [r0]
+ add r0, r4, #0
+ add r0, #0x80
+ ldr r0, [r0]
+ cmp r0, #4
+ blo _02254E50
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x80
+ str r1, [r0]
+ ldr r0, [r4, #0x7c]
+ sub r0, r0, #1
+ str r0, [r4, #0x7c]
+ add r0, r4, #0
+ bl MOD35_02254E58
+ ldr r0, [r4, #0x7c]
+ cmp r0, #0
+ bne _02254E50
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r4, r5, r6, pc}
+_02254E4A:
+ add r0, r5, #0
+ bl MOD35_02254C84
+_02254E50:
+ pop {r4, r5, r6, pc}
+ nop
+_02254E54: .word 0x00000678
+ thumb_func_end MOD35_02254D84
+
+ thumb_func_start MOD35_02254E58
+MOD35_02254E58: ; 0x02254E58
+ mov r1, #1
+ add r0, #0x88
+ str r1, [r0]
+ bx lr
+ thumb_func_end MOD35_02254E58
+
+ thumb_func_start MOD35_02254E60
+MOD35_02254E60: ; 0x02254E60
+ add r0, r1, #0
+ add r0, #0x88
+ ldr r0, [r0]
+ cmp r0, #0
+ beq _02254E82
+ ldr r2, [r1, #0x7c]
+ ldr r3, _02254E84 ; =0x0400104C
+ lsl r0, r2, #4
+ orr r0, r2
+ strb r0, [r3]
+ ldr r2, [r1, #0x7c]
+ add r1, #0x88
+ lsl r0, r2, #4
+ orr r0, r2
+ strb r0, [r3, #1]
+ mov r0, #0
+ str r0, [r1]
+_02254E82:
+ bx lr
+ .align 2, 0
+_02254E84: .word 0x0400104C
+ thumb_func_end MOD35_02254E60
+
+ thumb_func_start MOD35_02254E88
+MOD35_02254E88: ; 0x02254E88
+ push {r4, r5, lr}
+ sub sp, #0xc
+ add r5, r0, #0
+ mov r0, #1
+ add r4, r1, #0
+ add r1, r0, #0
+ mov r2, #0
+ bl FUN_0206B6D4
+ ldrb r1, [r4]
+ cmp r1, #0
+ beq _02254EA4
+ ldr r1, [r4, #4]
+ b _02254EA6
+_02254EA4:
+ add r1, r0, #0
+_02254EA6:
+ str r1, [sp]
+ ldrb r1, [r4]
+ cmp r1, #1
+ bls _02254EB2
+ ldr r1, [r4, #8]
+ b _02254EB4
+_02254EB2:
+ add r1, r0, #0
+_02254EB4:
+ str r1, [sp, #4]
+ str r0, [sp, #8]
+ add r0, r5, #0
+ add r1, sp, #0
+ mov r2, #3
+ mov r3, #1
+ bl MOD20_02253A04
+ add sp, #0xc
+ pop {r4, r5, pc}
+ thumb_func_end MOD35_02254E88
+
+ thumb_func_start MOD35_02254EC8
+MOD35_02254EC8: ; 0x02254EC8
+ push {r3, r4, r5, r6, r7, lr}
+ add r7, r0, #0
+ mov r0, #0
+ add r6, r1, #0
+ str r0, [sp]
+ ldrb r0, [r6]
+ cmp r0, #0
+ ble _02254F00
+ add r4, r6, #0
+ add r5, r7, #0
+_02254EDC:
+ ldrh r0, [r4, #0x1c]
+ ldrh r1, [r4, #0x20]
+ mov r2, #0
+ bl FUN_0206B7BC
+ add r1, r0, #0
+ ldr r0, [r5, #0x24]
+ add r1, r1, #1
+ bl MOD20_02253F9C
+ ldr r0, [sp]
+ ldrb r1, [r6]
+ add r0, r0, #1
+ add r4, r4, #2
+ add r5, r5, #4
+ str r0, [sp]
+ cmp r0, r1
+ blt _02254EDC
+_02254F00:
+ mov r0, #1
+ mov r1, #0
+ add r2, r0, #0
+ bl FUN_0206B7BC
+ add r1, r0, #0
+ ldr r0, [r7, #0x2c]
+ add r1, r1, #1
+ bl MOD20_02253F9C
+ ldrb r0, [r6]
+ cmp r0, #0
+ beq _02254F36
+ ldrh r0, [r6, #0x1c]
+ mov r1, #0x1c
+ bl FUN_02068678
+ cmp r0, #0
+ ldr r0, [r7, #0x24]
+ beq _02254F30
+ mov r1, #6
+ bl MOD20_02253F28
+ b _02254F36
+_02254F30:
+ mov r1, #7
+ bl MOD20_02253F28
+_02254F36:
+ add r0, r7, #0
+ ldr r1, [r6, #0xc]
+ add r0, #0x30
+ bl MOD35_02254FD8
+ add r0, r7, #0
+ ldr r1, [r6, #0x10]
+ add r0, #0x3c
+ bl MOD35_02254FD8
+ ldr r0, [r7, #0x48]
+ ldr r1, [r6, #0x14]
+ bl MOD35_02255094
+ ldr r0, [r7, #0x4c]
+ ldr r1, [r6, #0x18]
+ bl MOD35_02255094
+ ldrb r0, [r6]
+ cmp r0, #0
+ bne _02254F64
+ mov r4, #1
+ b _02254F66
+_02254F64:
+ mov r4, #0
+_02254F66:
+ ldr r0, [r7, #0x24]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x30]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x34]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x38]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x48]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldrb r0, [r6]
+ cmp r0, #1
+ bhi _02254F98
+ mov r4, #1
+ b _02254F9A
+_02254F98:
+ mov r4, #0
+_02254F9A:
+ ldr r0, [r7, #0x28]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x3c]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x40]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x44]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldr r0, [r7, #0x4c]
+ add r1, r4, #0
+ bl MOD20_02253F78
+ ldrb r0, [r6, #1]
+ cmp r0, #0
+ bne _02254FCC
+ mov r1, #1
+ b _02254FCE
+_02254FCC:
+ mov r1, #0
+_02254FCE:
+ ldr r0, [r7, #0x2c]
+ bl MOD20_02253F78
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+ thumb_func_end MOD35_02254EC8
+
+ thumb_func_start MOD35_02254FD8
+MOD35_02254FD8: ; 0x02254FD8
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ add r7, r1, #0
+ str r0, [sp]
+ cmp r7, #0x64
+ bls _02254FE6
+ mov r7, #0x64
+_02254FE6:
+ ldr r2, _02255088 ; =0x04000280
+ mov r3, #0
+ strh r3, [r2]
+ add r0, r2, #0
+ str r7, [r2, #0x10]
+ mov r1, #0x64
+ add r0, #0x18
+ str r1, [r0]
+ str r3, [r0, #4]
+ lsr r0, r2, #0xb
+_02254FFA:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _02254FFA
+ ldr r0, _0225508C ; =0x040002A0
+ ldr r4, _02255088 ; =0x04000280
+ ldr r0, [r0]
+ str r0, [sp, #4]
+ lsr r0, r4, #0xb
+_0225500A:
+ ldrh r1, [r4]
+ tst r1, r0
+ bne _0225500A
+ ldr r3, _02255090 ; =0x040002A8
+ mov r1, #0
+ ldr r2, [r3]
+ add r0, r3, #0
+ strh r1, [r4]
+ sub r0, #0x18
+ str r2, [r0]
+ mov r0, #0xa
+ sub r3, #0x10
+ str r0, [r3]
+ ldr r2, _02255088 ; =0x04000280
+ str r1, [r3, #4]
+ lsr r0, r2, #0xb
+_0225502A:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _0225502A
+ ldr r0, _0225508C ; =0x040002A0
+ ldr r2, _02255088 ; =0x04000280
+ ldr r0, [r0]
+ str r0, [sp, #8]
+ lsr r0, r2, #0xb
+_0225503A:
+ ldrh r1, [r2]
+ tst r1, r0
+ bne _0225503A
+ ldr r0, _02255090 ; =0x040002A8
+ ldr r5, [sp]
+ ldr r0, [r0]
+ mov r6, #0
+ str r0, [sp, #0xc]
+ add r4, sp, #4
+_0225504C:
+ ldr r0, [r5]
+ ldr r1, [r4]
+ bl MOD20_02253F28
+ add r6, r6, #1
+ add r4, r4, #4
+ add r5, r5, #4
+ cmp r6, #3
+ blt _0225504C
+ cmp r7, #0x64
+ bhs _02255066
+ mov r1, #1
+ b _02255068
+_02255066:
+ mov r1, #0
+_02255068:
+ ldr r0, [sp]
+ ldr r0, [r0]
+ bl MOD20_02253F78
+ cmp r7, #0xa
+ bhs _02255078
+ mov r1, #1
+ b _0225507A
+_02255078:
+ mov r1, #0
+_0225507A:
+ ldr r0, [sp]
+ ldr r0, [r0, #4]
+ bl MOD20_02253F78
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02255088: .word 0x04000280
+_0225508C: .word 0x040002A0
+_02255090: .word 0x040002A8
+ thumb_func_end MOD35_02254FD8
+
+ thumb_func_start MOD35_02255094
+MOD35_02255094: ; 0x02255094
+ push {r3, lr}
+ cmp r1, #0
+ beq _022550A0
+ cmp r1, #1
+ beq _022550A8
+ b _022550B0
+_022550A0:
+ mov r1, #0xa
+ bl MOD20_02253F28
+ pop {r3, pc}
+_022550A8:
+ mov r1, #0xb
+ bl MOD20_02253F28
+ pop {r3, pc}
+_022550B0:
+ mov r1, #0xc
+ bl MOD20_02253F28
+ pop {r3, pc}
+ thumb_func_end MOD35_02255094
+
+ .section .rodata
+ ; 0x022550B8
+ .incbin "baserom.nds", 0x28f078, 0x108
+
+ .section .sinit
+ .word MOD35_02254840
diff --git a/arm9/modules/36/asm/module_36.s b/arm9/modules/36/asm/module_36.s
new file mode 100644
index 00000000..d15b1d72
--- /dev/null
+++ b/arm9/modules/36/asm/module_36.s
@@ -0,0 +1,1571 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD36_02254840
+MOD36_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD36_02254854
+ ldr r1, _02254850 ; =MOD36_02254990
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD36_02254854
+_02254850: .word MOD36_02254990
+ thumb_func_end MOD36_02254840
+
+ thumb_func_start MOD36_02254854
+MOD36_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r6, r1, #0
+ add r5, r0, #0
+ ldr r1, _02254898 ; =0x00005B90
+ mov r0, #8
+ add r7, r2, #0
+ str r3, [sp]
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254892
+ ldr r3, [sp]
+ add r1, r6, #0
+ add r2, r7, #0
+ bl MOD36_022548A0
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _0225489C ; =MOD36_02254938
+ add r1, r4, #0
+ mov r2, #1
+ bl FUN_0200CA44
+ cmp r0, #0
+ beq _0225488C
+ str r4, [r5]
+ mov r0, #1
+ pop {r3, r4, r5, r6, r7, pc}
+_0225488C:
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254892:
+ mov r0, #0
+ pop {r3, r4, r5, r6, r7, pc}
+ nop
+_02254898: .word 0x00005B90
+_0225489C: .word MOD36_02254938
+ thumb_func_end MOD36_02254854
+
+ thumb_func_start MOD36_022548A0
+MOD36_022548A0: ; 0x022548A0
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r5, r0, #0
+ add r4, r1, #0
+ ldr r1, _02254904 ; =0x00005B78
+ str r3, [r5, #0xc]
+ mov r0, #0
+ strb r0, [r5, r1]
+ mov r6, #1
+ add r3, r1, #1
+ strb r6, [r5, r3]
+ add r3, r1, #2
+ strb r0, [r5, r3]
+ add r0, r1, #4
+ add r0, r5, r0
+ add r1, r5, #4
+ bl MOD36_02254E30
+ cmp r0, #0
+ beq _022548FC
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ strb r0, [r5, #3]
+ add r0, r5, #4
+ bl MOD36_02254E10
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _02254908 ; =0x022553E8
+ ldr r2, _0225490C ; =MOD36_02254980
+ mov r1, #3
+ add r3, r5, #0
+ bl MOD20_02254130
+ ldr r1, _02254910 ; =0x00005B84
+ mov r2, #0
+ str r0, [r5, r1]
+ add r0, r1, #4
+ str r2, [r5, r0]
+ sub r0, r1, #4
+ str r4, [r5, r0]
+ add sp, #4
+ add r0, r6, #0
+ pop {r3, r4, r5, r6, pc}
+_022548FC:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02254904: .word 0x00005B78
+_02254908: .word 0x022553E8
+_0225490C: .word MOD36_02254980
+_02254910: .word 0x00005B84
+ thumb_func_end MOD36_022548A0
+
+ thumb_func_start MOD36_02254914
+MOD36_02254914: ; 0x02254914
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, _02254930 ; =0x00005B84
+ ldr r0, [r4, r0]
+ bl MOD20_02254198
+ ldr r0, _02254934 ; =0x00005B7C
+ ldr r0, [r4, r0]
+ bl MOD36_02254E78
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+_02254930: .word 0x00005B84
+_02254934: .word 0x00005B7C
+ thumb_func_end MOD36_02254914
+
+ thumb_func_start MOD36_02254938
+MOD36_02254938: ; 0x02254938
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhs _02254974
+ ldr r1, _02254978 ; =0x00005B80
+ ldr r0, [r4, r1]
+ add r1, r1, #4
+ ldr r1, [r4, r1]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _0225497C ; =0x022553F4
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254974
+ add r0, r4, #0
+ bl MOD36_02254914
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, _02254978 ; =0x00005B80
+ ldr r0, [r4, r0]
+ bl MOD20_022529A0
+_02254974:
+ pop {r3, r4, r5, pc}
+ nop
+_02254978: .word 0x00005B80
+_0225497C: .word 0x022553F4
+ thumb_func_end MOD36_02254938
+
+ thumb_func_start MOD36_02254980
+MOD36_02254980: ; 0x02254980
+ ldr r2, _0225498C ; =0x00005B88
+ str r1, [r3, r2]
+ add r1, r2, #4
+ str r0, [r3, r1]
+ bx lr
+ nop
+_0225498C: .word 0x00005B88
+ thumb_func_end MOD36_02254980
+
+ thumb_func_start MOD36_02254990
+MOD36_02254990: ; 0x02254990
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD36_02254990
+
+ thumb_func_start MOD36_02254998
+MOD36_02254998: ; 0x02254998
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _022549A0
+ b _022549A2
+_022549A0:
+ mov r1, #2
+_022549A2:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD36_02254998
+
+ thumb_func_start MOD36_022549AC
+MOD36_022549AC: ; 0x022549AC
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549BC
+ cmp r0, #1
+ beq _022549CE
+ b _022549EC
+_022549BC:
+ ldr r0, _022549F0 ; =0x00005B7C
+ mov r1, #0
+ ldr r0, [r4, r0]
+ bl MOD36_02254F0C
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549EC
+_022549CE:
+ ldr r0, _022549F0 ; =0x00005B7C
+ mov r1, #0
+ ldr r0, [r4, r0]
+ bl MOD36_02254F30
+ cmp r0, #0
+ beq _022549EC
+ ldr r0, _022549F4 ; =0x00005B80
+ ldr r0, [r4, r0]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD36_02254998
+_022549EC:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+_022549F0: .word 0x00005B7C
+_022549F4: .word 0x00005B80
+ thumb_func_end MOD36_022549AC
+
+ thumb_func_start MOD36_022549F8
+MOD36_022549F8: ; 0x022549F8
+ push {r3, r4, r5, r6, lr}
+ sub sp, #4
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254A0A
+ mov r1, #2
+ bl MOD36_02254998
+_02254A0A:
+ ldrb r0, [r4, #1]
+ cmp r0, #3
+ bhi _02254A30
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02254A1C: ; jump table
+ .short _02254A24 - _02254A1C - 2 ; case 0
+ .short _02254AF4 - _02254A1C - 2 ; case 1
+ .short _02254B4E - _02254A1C - 2 ; case 2
+ .short _02254B7C - _02254A1C - 2 ; case 3
+_02254A24:
+ ldr r0, _02254BCC ; =0x00005B80
+ ldr r0, [r4, r0]
+ bl MOD20_02252C08
+ cmp r0, #0
+ beq _02254A32
+_02254A30:
+ b _02254BC4
+_02254A32:
+ ldr r1, _02254BD0 ; =0x00005B88
+ ldr r0, [r4, r1]
+ cmp r0, #1
+ bne _02254AAE
+ add r0, r1, #4
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _02254A4C
+ cmp r0, #1
+ beq _02254A82
+ cmp r0, #2
+ beq _02254A8A
+ b _02254AA6
+_02254A4C:
+ add r0, r1, #0
+ mov r3, #1
+ sub r0, #0x10
+ strb r3, [r4, r0]
+ add r0, r1, #0
+ mov r2, #0
+ sub r0, #0xf
+ strb r2, [r4, r0]
+ add r0, r1, #0
+ sub r0, #0xe
+ sub r1, #0xc
+ strb r3, [r4, r0]
+ ldr r0, [r4, r1]
+ mov r1, #5
+ bl MOD36_02254F0C
+ ldr r0, _02254BD4 ; =0x00005B7C
+ mov r1, #7
+ ldr r0, [r4, r0]
+ bl MOD36_02254F0C
+ ldr r0, _02254BD8 ; =0x00000663
+ bl MOD20_02252B28
+ mov r0, #1
+ strb r0, [r4, #1]
+ b _02254AA6
+_02254A82:
+ ldr r0, _02254BDC ; =0x0000066E
+ bl MOD20_02252B28
+ b _02254AA6
+_02254A8A:
+ add r0, r1, #0
+ mov r2, #1
+ sub r0, #0xe
+ sub r1, #0xc
+ strb r2, [r4, r0]
+ ldr r0, [r4, r1]
+ mov r1, #5
+ bl MOD36_02254F0C
+ ldr r0, _02254BD8 ; =0x00000663
+ bl MOD20_02252B28
+ mov r0, #3
+ strb r0, [r4, #1]
+_02254AA6:
+ ldr r0, _02254BD0 ; =0x00005B88
+ mov r1, #0
+ str r1, [r4, r0]
+ b _02254BC4
+_02254AAE:
+ ldrb r0, [r4, #3]
+ cmp r0, #0
+ beq _02254ADA
+ add r0, r4, #0
+ ldr r6, [r4, #4]
+ ldr r5, [r4, #8]
+ bl MOD36_02254C44
+ cmp r0, #0
+ beq _02254AD4
+ ldr r0, [r4, #8]
+ add r1, r6, #0
+ str r0, [sp]
+ ldr r3, [r4, #4]
+ add r0, r4, #0
+ add r2, r5, #0
+ bl MOD36_02254C90
+ b _02254BC4
+_02254AD4:
+ mov r0, #0
+ strb r0, [r4, #3]
+ b _02254BC4
+_02254ADA:
+ add r0, r4, #0
+ bl MOD36_02254BE4
+ cmp r0, #0
+ beq _02254BC4
+ ldr r0, _02254BD4 ; =0x00005B7C
+ mov r1, #3
+ ldr r0, [r4, r0]
+ bl MOD36_02254F0C
+ mov r0, #1
+ strb r0, [r4, #3]
+ b _02254BC4
+_02254AF4:
+ ldr r1, _02254BD0 ; =0x00005B88
+ ldr r0, [r4, r1]
+ cmp r0, #1
+ bne _02254BC4
+ add r0, r1, #4
+ ldr r0, [r4, r0]
+ cmp r0, #0
+ beq _02254B0C
+ cmp r0, #1
+ beq _02254B14
+ cmp r0, #2
+ bne _02254B46
+_02254B0C:
+ ldr r0, _02254BDC ; =0x0000066E
+ bl MOD20_02252B28
+ b _02254B46
+_02254B14:
+ add r0, r1, #0
+ mov r2, #1
+ sub r0, #0x10
+ strb r2, [r4, r0]
+ add r0, r1, #0
+ sub r0, #0xf
+ strb r2, [r4, r0]
+ add r0, r1, #0
+ sub r0, #0xe
+ sub r1, #0xc
+ strb r2, [r4, r0]
+ ldr r0, [r4, r1]
+ mov r1, #5
+ bl MOD36_02254F0C
+ ldr r0, _02254BD4 ; =0x00005B7C
+ mov r1, #8
+ ldr r0, [r4, r0]
+ bl MOD36_02254F0C
+ ldr r0, _02254BD8 ; =0x00000663
+ bl MOD20_02252B28
+ mov r0, #2
+ strb r0, [r4, #1]
+_02254B46:
+ ldr r0, _02254BD0 ; =0x00005B88
+ mov r1, #0
+ str r1, [r4, r0]
+ b _02254BC4
+_02254B4E:
+ ldr r0, _02254BD4 ; =0x00005B7C
+ mov r1, #8
+ ldr r0, [r4, r0]
+ bl MOD36_02254F30
+ cmp r0, #0
+ beq _02254BC4
+ ldr r0, _02254BE0 ; =0x00005B78
+ mov r3, #0
+ strb r3, [r4, r0]
+ mov r2, #1
+ add r1, r0, #1
+ strb r2, [r4, r1]
+ add r1, r0, #2
+ strb r3, [r4, r1]
+ add r0, r0, #4
+ ldr r0, [r4, r0]
+ mov r1, #5
+ bl MOD36_02254F0C
+ mov r0, #0
+ strb r0, [r4, #1]
+ b _02254BC4
+_02254B7C:
+ ldr r1, _02254BD0 ; =0x00005B88
+ ldr r0, [r4, r1]
+ cmp r0, #2
+ bne _02254B9C
+ add r0, r1, #0
+ mov r2, #0
+ sub r0, #0xe
+ sub r1, #0xc
+ strb r2, [r4, r0]
+ ldr r0, [r4, r1]
+ mov r1, #5
+ bl MOD36_02254F0C
+ mov r0, #0
+ strb r0, [r4, #1]
+ b _02254BC4
+_02254B9C:
+ cmp r0, #3
+ bne _02254BC4
+ mov r0, #0
+ sub r1, #0xe
+ strb r0, [r4, r1]
+ add r0, r4, #4
+ bl MOD36_02254E10
+ ldr r0, _02254BD4 ; =0x00005B7C
+ mov r1, #5
+ ldr r0, [r4, r0]
+ bl MOD36_02254F0C
+ ldr r0, _02254BD4 ; =0x00005B7C
+ mov r1, #6
+ ldr r0, [r4, r0]
+ bl MOD36_02254F0C
+ mov r0, #0
+ strb r0, [r4, #1]
+_02254BC4:
+ mov r0, #0
+ add sp, #4
+ pop {r3, r4, r5, r6, pc}
+ nop
+_02254BCC: .word 0x00005B80
+_02254BD0: .word 0x00005B88
+_02254BD4: .word 0x00005B7C
+_02254BD8: .word 0x00000663
+_02254BDC: .word 0x0000066E
+_02254BE0: .word 0x00005B78
+ thumb_func_end MOD36_022549F8
+
+ thumb_func_start MOD36_02254BE4
+MOD36_02254BE4: ; 0x02254BE4
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ add r0, sp, #4
+ add r1, sp, #0
+ bl MOD20_02252B68
+ cmp r0, #0
+ beq _02254C3E
+ ldr r1, [sp, #4]
+ ldr r2, [sp]
+ sub r1, #0x10
+ sub r2, #0x10
+ cmp r1, #0x9b
+ bhs _02254C06
+ mov r0, #1
+ b _02254C08
+_02254C06:
+ mov r0, #0
+_02254C08:
+ cmp r2, #0x95
+ bhs _02254C10
+ mov r3, #1
+ b _02254C12
+_02254C10:
+ mov r3, #0
+_02254C12:
+ tst r0, r3
+ beq _02254C3E
+ lsr r3, r1, #1
+ lsr r1, r2, #1
+ add r2, r4, #0
+ mov r0, #0x96
+ add r2, #0x10
+ mul r0, r3
+ str r3, [sp, #4]
+ str r1, [sp]
+ add r2, r2, r0
+ ldrb r0, [r2, r1]
+ cmp r0, #0
+ bne _02254C3E
+ mov r0, #1
+ strb r0, [r2, r1]
+ ldr r1, [sp, #4]
+ str r1, [r4, #4]
+ ldr r1, [sp]
+ add sp, #8
+ str r1, [r4, #8]
+ pop {r4, pc}
+_02254C3E:
+ mov r0, #0
+ add sp, #8
+ pop {r4, pc}
+ thumb_func_end MOD36_02254BE4
+
+ thumb_func_start MOD36_02254C44
+MOD36_02254C44: ; 0x02254C44
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ add r0, sp, #4
+ add r1, sp, #0
+ bl MOD20_02252B68
+ cmp r0, #0
+ beq _02254C8A
+ ldr r1, [sp, #4]
+ ldr r2, [sp]
+ sub r1, #0x10
+ sub r2, #0x10
+ cmp r1, #0x9b
+ bhs _02254C66
+ mov r0, #1
+ b _02254C68
+_02254C66:
+ mov r0, #0
+_02254C68:
+ cmp r2, #0x95
+ bhs _02254C70
+ mov r3, #1
+ b _02254C72
+_02254C70:
+ mov r3, #0
+_02254C72:
+ tst r0, r3
+ beq _02254C8A
+ lsr r1, r1, #1
+ lsr r0, r2, #1
+ str r1, [sp, #4]
+ str r0, [sp]
+ str r1, [r4, #4]
+ ldr r0, [sp]
+ add sp, #8
+ str r0, [r4, #8]
+ mov r0, #1
+ pop {r4, pc}
+_02254C8A:
+ mov r0, #0
+ add sp, #8
+ pop {r4, pc}
+ thumb_func_end MOD36_02254C44
+
+ thumb_func_start MOD36_02254C90
+MOD36_02254C90: ; 0x02254C90
+ push {r4, r5, r6, r7, lr}
+ sub sp, #0x14
+ add r6, r0, #0
+ ldr r0, [sp, #0x28]
+ add r4, r2, #0
+ add r5, r1, #0
+ str r3, [sp]
+ str r0, [sp, #0x28]
+ cmp r4, r0
+ bne _02254CAC
+ add r0, r3, #0
+ cmp r5, r0
+ bne _02254CAC
+ b _02254DCC
+_02254CAC:
+ ldr r0, [sp]
+ cmp r0, r5
+ bls _02254CB6
+ sub r1, r0, r5
+ b _02254CB8
+_02254CB6:
+ sub r1, r5, r0
+_02254CB8:
+ ldr r0, [sp, #0x28]
+ cmp r0, r4
+ bls _02254CC2
+ sub r2, r0, r4
+ b _02254CC4
+_02254CC2:
+ sub r2, r4, r0
+_02254CC4:
+ cmp r1, r2
+ bls _02254D46
+ ldr r0, [sp]
+ cmp r0, r5
+ bls _02254CD4
+ mov r0, #1
+ str r0, [sp, #4]
+ b _02254CDA
+_02254CD4:
+ mov r0, #0
+ mvn r0, r0
+ str r0, [sp, #4]
+_02254CDA:
+ cmp r1, #0
+ beq _02254CEC
+ ldr r0, [sp, #0x28]
+ sub r0, r0, r4
+ lsl r0, r0, #0xc
+ blx _s32_div_f
+ str r0, [sp, #0x10]
+ b _02254CF0
+_02254CEC:
+ mov r0, #0
+ str r0, [sp, #0x10]
+_02254CF0:
+ ldr r0, [sp, #0x10]
+ lsl r1, r4, #0xc
+ add r7, r1, r0
+ ldr r0, [sp, #4]
+ add r5, r5, r0
+ ldr r0, [sp]
+ cmp r5, r0
+ beq _02254DB0
+ mov r1, #0x96
+ add r0, r5, #0
+ mul r0, r1
+ add r4, r6, r0
+ ldr r0, [sp, #4]
+ mul r1, r0
+ str r1, [sp, #0xc]
+_02254D0E:
+ asr r1, r7, #0xc
+ cmp r5, #0x9c
+ bhs _02254D32
+ cmp r1, #0x96
+ bhs _02254D32
+ add r0, r4, r1
+ ldrb r2, [r0, #0x10]
+ cmp r2, #0
+ bne _02254D32
+ mov r2, #0
+ strb r2, [r0, #0x10]
+ str r5, [r6, #4]
+ str r1, [r6, #8]
+ ldr r0, _02254DD0 ; =0x00005B7C
+ mov r1, #3
+ ldr r0, [r6, r0]
+ bl MOD36_02254F0C
+_02254D32:
+ ldr r0, [sp, #0xc]
+ add r4, r4, r0
+ ldr r0, [sp, #4]
+ add r5, r5, r0
+ ldr r0, [sp, #0x10]
+ add r7, r7, r0
+ ldr r0, [sp]
+ cmp r5, r0
+ bne _02254D0E
+ b _02254DB0
+_02254D46:
+ ldr r0, [sp, #0x28]
+ cmp r0, r4
+ bls _02254D50
+ mov r7, #1
+ b _02254D54
+_02254D50:
+ mov r7, #0
+ mvn r7, r7
+_02254D54:
+ cmp r2, #0
+ beq _02254D68
+ ldr r0, [sp]
+ add r1, r2, #0
+ sub r0, r0, r5
+ lsl r0, r0, #0xc
+ blx _s32_div_f
+ str r0, [sp, #8]
+ b _02254D6C
+_02254D68:
+ mov r0, #0
+ str r0, [sp, #8]
+_02254D6C:
+ ldr r0, [sp, #8]
+ lsl r1, r5, #0xc
+ add r5, r1, r0
+ ldr r0, [sp, #0x28]
+ add r4, r4, r7
+ cmp r4, r0
+ beq _02254DB0
+_02254D7A:
+ asr r1, r5, #0xc
+ cmp r4, #0x96
+ bhs _02254DA4
+ cmp r1, #0x9c
+ bhs _02254DA4
+ mov r0, #0x96
+ mul r0, r1
+ add r0, r6, r0
+ add r0, r0, r4
+ ldrb r2, [r0, #0x10]
+ cmp r2, #0
+ bne _02254DA4
+ mov r2, #1
+ strb r2, [r0, #0x10]
+ str r1, [r6, #4]
+ ldr r0, _02254DD0 ; =0x00005B7C
+ str r4, [r6, #8]
+ ldr r0, [r6, r0]
+ mov r1, #3
+ bl MOD36_02254F0C
+_02254DA4:
+ ldr r0, [sp, #8]
+ add r4, r4, r7
+ add r5, r5, r0
+ ldr r0, [sp, #0x28]
+ cmp r4, r0
+ bne _02254D7A
+_02254DB0:
+ ldr r0, [sp, #0x28]
+ cmp r0, #0x96
+ bhs _02254DCC
+ ldr r0, [sp]
+ cmp r0, #0x9c
+ bhs _02254DCC
+ str r0, [r6, #4]
+ ldr r0, [sp, #0x28]
+ mov r1, #3
+ str r0, [r6, #8]
+ ldr r0, _02254DD0 ; =0x00005B7C
+ ldr r0, [r6, r0]
+ bl MOD36_02254F0C
+_02254DCC:
+ add sp, #0x14
+ pop {r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254DD0: .word 0x00005B7C
+ thumb_func_end MOD36_02254C90
+
+ thumb_func_start MOD36_02254DD4
+MOD36_02254DD4: ; 0x02254DD4
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254DE4
+ cmp r0, #1
+ beq _02254DF6
+ b _02254E06
+_02254DE4:
+ ldr r0, _02254E0C ; =0x00005B7C
+ mov r1, #1
+ ldr r0, [r4, r0]
+ bl MOD36_02254F0C
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254E06
+_02254DF6:
+ ldr r0, _02254E0C ; =0x00005B7C
+ ldr r0, [r4, r0]
+ bl MOD36_02254F3C
+ cmp r0, #0
+ beq _02254E06
+ mov r0, #1
+ pop {r4, pc}
+_02254E06:
+ mov r0, #0
+ pop {r4, pc}
+ nop
+_02254E0C: .word 0x00005B7C
+ thumb_func_end MOD36_02254DD4
+
+ thumb_func_start MOD36_02254E10
+MOD36_02254E10: ; 0x02254E10
+ push {r4, r5}
+ mov r4, #0
+ add r2, r4, #0
+ add r3, r4, #0
+_02254E18:
+ add r5, r3, #0
+_02254E1A:
+ add r1, r0, r5
+ add r5, r5, #1
+ strb r2, [r1, #0xc]
+ cmp r5, #0x96
+ blt _02254E1A
+ add r4, r4, #1
+ add r0, #0x96
+ cmp r4, #0x9c
+ blt _02254E18
+ pop {r4, r5}
+ bx lr
+ thumb_func_end MOD36_02254E10
+
+ thumb_func_start MOD36_02254E30
+MOD36_02254E30: ; 0x02254E30
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #8
+ mov r1, #0x70
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254E74
+ add r0, #8
+ mov r1, #4
+ bl MOD20_022536F4
+ str r5, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ bl MOD20_02252D24
+ str r0, [r4, #0x20]
+ add r0, r4, #0
+ mov r1, #0
+ add r0, #0x68
+ strh r1, [r0]
+ add r0, r4, #0
+ add r1, r5, #0
+ bl MOD36_02254E8C
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _02254E74
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254E74:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD36_02254E30
+
+ thumb_func_start MOD36_02254E78
+MOD36_02254E78: ; 0x02254E78
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254E88
+ bl MOD36_02254EE4
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254E88:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD36_02254E78
+
+ thumb_func_start MOD36_02254E8C
+MOD36_02254E8C: ; 0x02254E8C
+ push {r3, r4, r5, r6, r7, lr}
+ sub sp, #0x10
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ add r7, r0, #0
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x59
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ add r0, r7, #0
+ add r0, #0x34
+ mov r1, #0xc
+ mov r2, #0x57
+ mov r3, #0x58
+ bl MOD20_02253FBC
+ add r0, r7, #0
+ str r0, [sp, #0xc]
+ add r0, #0x34
+ ldr r4, _02254EE0 ; =0x02255440
+ mov r6, #0
+ add r5, r7, #0
+ str r0, [sp, #0xc]
+_02254EC6:
+ ldr r0, [r7, #0x20]
+ ldr r2, [sp, #0xc]
+ add r1, r4, #0
+ bl MOD20_02253E74
+ str r0, [r5, #0x24]
+ add r6, r6, #1
+ add r4, #0x10
+ add r5, r5, #4
+ cmp r6, #4
+ blt _02254EC6
+ add sp, #0x10
+ pop {r3, r4, r5, r6, r7, pc}
+ .align 2, 0
+_02254EE0: .word 0x02255440
+ thumb_func_end MOD36_02254E8C
+
+ thumb_func_start MOD36_02254EE4
+MOD36_02254EE4: ; 0x02254EE4
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r4, #0
+ add r5, r6, #0
+_02254EEC:
+ ldr r1, [r5, #0x24]
+ cmp r1, #0
+ beq _02254EF8
+ ldr r0, [r6, #0x20]
+ bl MOD20_02253F14
+_02254EF8:
+ add r4, r4, #1
+ add r5, r5, #4
+ cmp r4, #4
+ blt _02254EEC
+ add r6, #0x34
+ add r0, r6, #0
+ bl MOD20_02254014
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD36_02254EE4
+
+ thumb_func_start MOD36_02254F0C
+MOD36_02254F0C: ; 0x02254F0C
+ push {lr}
+ sub sp, #0xc
+ add r2, r0, #0
+ add r0, #8
+ str r0, [sp]
+ mov r0, #2
+ str r0, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ ldr r0, _02254F2C ; =0x02255480
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254F2C: .word 0x02255480
+ thumb_func_end MOD36_02254F0C
+
+ thumb_func_start MOD36_02254F30
+MOD36_02254F30: ; 0x02254F30
+ ldr r3, _02254F38 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254F38: .word MOD20_02253794
+ thumb_func_end MOD36_02254F30
+
+ thumb_func_start MOD36_02254F3C
+MOD36_02254F3C: ; 0x02254F3C
+ ldr r3, _02254F44 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254F44: .word MOD20_022537B8
+ thumb_func_end MOD36_02254F3C
+
+ thumb_func_start MOD36_02254F48
+MOD36_02254F48: ; 0x02254F48
+ push {r4, lr}
+ add r4, r0, #0
+ bl MOD20_022538A0
+ add r0, #8
+ add r1, r4, #0
+ bl MOD20_02253888
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD36_02254F48
+
+ thumb_func_start MOD36_02254F5C
+MOD36_02254F5C: ; 0x02254F5C
+ push {r3, r4, r5, r6, lr}
+ sub sp, #0x14
+ mov r0, #8
+ add r5, r1, #0
+ bl FUN_02016B90
+ cmp r0, #0
+ bne _02254F70
+ bl ErrorHandling
+_02254F70:
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ ldr r0, [r4, #4]
+ ldr r2, _0225502C ; =0x02255408
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ ldr r0, [r4, #4]
+ ldr r2, _02255030 ; =0x02255424
+ mov r1, #7
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #8
+ bl FUN_02016B90
+ cmp r0, #0
+ bne _02254F9E
+ bl ErrorHandling
+_02254F9E:
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0xc
+ mov r1, #0x56
+ mov r3, #6
+ bl FUN_0200687C
+ add r6, r0, #0
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ mov r0, #1
+ str r0, [sp, #8]
+ mov r0, #8
+ str r0, [sp, #0xc]
+ ldr r2, [r4, #4]
+ mov r0, #0xc
+ mov r1, #0x55
+ mov r3, #6
+ bl FUN_020068C8
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ mov r0, #8
+ bl FUN_02016B90
+ cmp r0, #0
+ bne _02254FEA
+ bl ErrorHandling
+_02254FEA:
+ add r0, r4, #0
+ lsr r1, r6, #5
+ bl MOD36_0225503C
+ ldr r0, [r4, #4]
+ mov r1, #7
+ bl FUN_02017CD0
+ ldr r1, _02255034 ; =0x04001000
+ ldr r0, _02255038 ; =0xFFFFE0FF
+ ldr r3, [r1]
+ ldr r2, [r1]
+ str r3, [sp, #0x10]
+ and r0, r2
+ lsl r2, r3, #0x13
+ lsr r3, r2, #0x1b
+ mov r2, #0x14
+ orr r2, r3
+ lsl r2, r2, #8
+ orr r0, r2
+ str r0, [r1]
+ add r0, r5, #0
+ bl MOD36_02254F48
+ mov r0, #8
+ bl FUN_02016B90
+ cmp r0, #0
+ bne _02255028
+ bl ErrorHandling
+_02255028:
+ add sp, #0x14
+ pop {r3, r4, r5, r6, pc}
+ .align 2, 0
+_0225502C: .word 0x02255408
+_02255030: .word 0x02255424
+_02255034: .word 0x04001000
+_02255038: .word 0xFFFFE0FF
+ thumb_func_end MOD36_02254F5C
+
+ thumb_func_start MOD36_0225503C
+MOD36_0225503C: ; 0x0225503C
+ push {r3, r4, r5, lr}
+ sub sp, #8
+ ldr r3, _02255098 ; =0x02255400
+ add r4, r0, #0
+ ldrh r5, [r3]
+ add r0, sp, #0
+ add r2, sp, #0
+ strh r5, [r0]
+ ldrh r5, [r3, #2]
+ strh r5, [r0, #2]
+ ldrh r5, [r3, #4]
+ ldrh r3, [r3, #6]
+ strh r5, [r0, #4]
+ strh r3, [r0, #6]
+ str r1, [r4, #0x58]
+ strh r1, [r0, #6]
+ add r1, r4, #0
+ ldr r0, [r4, #4]
+ add r1, #0x48
+ bl FUN_02019150
+ ldr r0, [r4]
+ mov r2, #0xbe
+ ldr r0, [r0, #8]
+ ldr r1, [r4, #0x54]
+ lsl r2, r2, #6
+ bl FUN_0208946C
+ cmp r0, #0
+ bne _02255082
+ add r0, r4, #0
+ add r0, #0x48
+ mov r1, #4
+ bl FUN_02019620
+_02255082:
+ add r0, r4, #0
+ add r0, #0x48
+ bl FUN_02019270
+ add r4, #0x48
+ add r0, r4, #0
+ bl FUN_02019548
+ add sp, #8
+ pop {r3, r4, r5, pc}
+ nop
+_02255098: .word 0x02255400
+ thumb_func_end MOD36_0225503C
+
+ thumb_func_start MOD36_0225509C
+MOD36_0225509C: ; 0x0225509C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _022550B8
+ cmp r0, #1
+ beq _022550C4
+ pop {r3, r4, r5, pc}
+_022550B8:
+ mov r0, #1
+ str r0, [r4, #0x5c]
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_022550C4:
+ ldr r0, [r4]
+ mov r2, #0xbe
+ ldr r0, [r0, #8]
+ ldr r1, [r4, #0x54]
+ lsl r2, r2, #6
+ bl FUN_02089444
+ add r0, r4, #0
+ add r0, #0x48
+ bl FUN_02019178
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ ldr r0, [r4, #4]
+ mov r1, #7
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD36_02254F48
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+ thumb_func_end MOD36_0225509C
+
+ thumb_func_start MOD36_022550F4
+MOD36_022550F4: ; 0x022550F4
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r0, #0x48
+ bl FUN_02019548
+ add r0, r4, #0
+ bl MOD36_02254F48
+ pop {r4, pc}
+ thumb_func_end MOD36_022550F4
+
+ thumb_func_start MOD36_0225510C
+MOD36_0225510C: ; 0x0225510C
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ ldr r1, [r4]
+ ldr r0, [r1]
+ lsl r2, r0, #1
+ ldr r0, [r1, #4]
+ mov r1, #0x14
+ lsl r3, r0, #1
+ asr r5, r3, #3
+ asr r0, r2, #3
+ mul r1, r5
+ add r5, r0, r1
+ mov r0, #2
+ str r0, [sp]
+ str r0, [sp, #4]
+ add r0, r4, #0
+ lsl r2, r2, #0x10
+ lsl r3, r3, #0x10
+ add r0, #0x48
+ mov r1, #1
+ lsr r2, r2, #0x10
+ lsr r3, r3, #0x10
+ bl FUN_020196F4
+ ldr r1, [r4, #0x54]
+ lsl r0, r5, #5
+ add r0, r1, r0
+ ldr r1, [r4, #0x58]
+ mov r2, #0x20
+ add r1, r1, r5
+ lsl r1, r1, #5
+ blx GXS_LoadBG3Char
+ add r0, r6, #0
+ bl MOD36_02254F48
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD36_0225510C
+
+ thumb_func_start MOD36_02255164
+MOD36_02255164: ; 0x02255164
+ push {r4, lr}
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r0, #0x48
+ bl FUN_02019548
+ add r0, r4, #0
+ bl MOD36_02254F48
+ pop {r4, pc}
+ thumb_func_end MOD36_02255164
+
+ thumb_func_start MOD36_0225517C
+MOD36_0225517C: ; 0x0225517C
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r5, r0, #0
+ ldr r0, _022551D4 ; =0x00005B74
+ ldrb r0, [r5, r0]
+ cmp r0, #0
+ beq _0225519C
+ mov r1, #2
+ b _0225519E
+_0225519C:
+ mov r1, #1
+_0225519E:
+ ldr r0, [r4, #0x28]
+ bl MOD20_02253F28
+ ldr r0, _022551D8 ; =0x00005B75
+ ldrb r0, [r5, r0]
+ cmp r0, #0
+ beq _022551B0
+ mov r1, #4
+ b _022551B2
+_022551B0:
+ mov r1, #3
+_022551B2:
+ ldr r0, [r4, #0x2c]
+ bl MOD20_02253F28
+ ldr r0, _022551DC ; =0x00005B76
+ ldrb r0, [r5, r0]
+ cmp r0, #0
+ beq _022551C4
+ mov r1, #6
+ b _022551C6
+_022551C4:
+ mov r1, #5
+_022551C6:
+ ldr r0, [r4, #0x30]
+ bl MOD20_02253F28
+ add r0, r6, #0
+ bl MOD36_02254F48
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_022551D4: .word 0x00005B74
+_022551D8: .word 0x00005B75
+_022551DC: .word 0x00005B76
+ thumb_func_end MOD36_0225517C
+
+ thumb_func_start MOD36_022551E0
+MOD36_022551E0: ; 0x022551E0
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r0, r4, #0
+ add r0, #0x48
+ mov r1, #4
+ bl FUN_02019620
+ add r4, #0x48
+ add r0, r4, #0
+ bl FUN_02019548
+ add r0, r5, #0
+ bl MOD36_02254F48
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD36_022551E0
+
+ thumb_func_start MOD36_0225520C
+MOD36_0225520C: ; 0x0225520C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _02255236
+ ldr r1, [r4, #0x5c]
+ cmp r1, #0
+ beq _02255236
+ add r0, r5, #0
+ bl MOD36_02254F48
+ pop {r3, r4, r5, pc}
+_02255236:
+ cmp r0, #4
+ bls _0225523C
+ b _0225539A
+_0225523C:
+ add r0, r0, r0
+ add r0, pc
+ ldrh r0, [r0, #6]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ add pc, r0
+_02255248: ; jump table
+ .short _02255252 - _02255248 - 2 ; case 0
+ .short _02255286 - _02255248 - 2 ; case 1
+ .short _022552D8 - _02255248 - 2 ; case 2
+ .short _02255322 - _02255248 - 2 ; case 3
+ .short _02255356 - _02255248 - 2 ; case 4
+_02255252:
+ add r0, r4, #0
+ add r0, #0x68
+ ldrh r0, [r0]
+ mov r1, #0x15
+ lsl r1, r1, #4
+ add r2, r0, r1
+ add r0, r4, #0
+ add r0, #0x68
+ strh r2, [r0]
+ add r0, r4, #0
+ add r0, #0x6a
+ strh r1, [r0]
+ add r1, r4, #0
+ add r1, #0x68
+ ldrh r1, [r1]
+ ldr r0, [r4, #0x24]
+ bl MOD20_02253FB4
+ mov r0, #0
+ str r0, [r4, #0x64]
+ str r0, [r4, #0x60]
+ str r0, [r4, #0x5c]
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_02255286:
+ add r0, r4, #0
+ add r0, #0x68
+ ldrh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r0, [r0]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x68
+ strh r1, [r0]
+ add r1, r4, #0
+ add r1, #0x68
+ ldrh r1, [r1]
+ ldr r0, [r4, #0x24]
+ bl MOD20_02253FB4
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r1, [r0]
+ mov r0, #0x15
+ lsl r0, r0, #4
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x6a
+ strh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x6a
+ mov r1, #3
+ ldrh r0, [r0]
+ lsl r1, r1, #0xc
+ cmp r0, r1
+ blo _0225539A
+ add r0, r4, #0
+ add r0, #0x6a
+ strh r1, [r0]
+ mov r0, #1
+ str r0, [r4, #0x64]
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_022552D8:
+ add r0, r4, #0
+ add r0, #0x68
+ ldrh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r0, [r0]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x68
+ strh r1, [r0]
+ add r1, r4, #0
+ add r1, #0x68
+ ldrh r1, [r1]
+ ldr r0, [r4, #0x24]
+ bl MOD20_02253FB4
+ ldr r0, [r4, #0x60]
+ cmp r0, #0
+ beq _0225539A
+ bl FUN_0201BA60
+ mov r1, #7
+ and r0, r1
+ str r0, [r4, #0x6c]
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r1, [r0]
+ mov r0, #0x1a
+ lsl r0, r0, #8
+ cmp r1, r0
+ bls _0225531A
+ add r4, #0x6a
+ strh r0, [r4]
+_0225531A:
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_02255322:
+ add r0, r4, #0
+ add r0, #0x68
+ ldrh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r0, [r0]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x68
+ strh r1, [r0]
+ add r1, r4, #0
+ add r1, #0x68
+ ldrh r1, [r1]
+ ldr r0, [r4, #0x24]
+ bl MOD20_02253FB4
+ ldr r0, [r4, #0x6c]
+ cmp r0, #0
+ bne _0225534E
+ sub r0, r0, #1
+ str r0, [r4, #0x6c]
+ pop {r3, r4, r5, pc}
+_0225534E:
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_02255356:
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r0, [r0]
+ cmp r0, #0x50
+ bls _0225538E
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x6a
+ sub r1, #0x50
+ strh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x68
+ ldrh r1, [r0]
+ add r0, r4, #0
+ add r0, #0x6a
+ ldrh r0, [r0]
+ add r1, r1, r0
+ add r0, r4, #0
+ add r0, #0x68
+ strh r1, [r0]
+ ldr r0, [r4, #0x24]
+ add r4, #0x68
+ ldrh r1, [r4]
+ bl MOD20_02253FB4
+ pop {r3, r4, r5, pc}
+_0225538E:
+ mov r0, #0
+ add r4, #0x6a
+ strh r0, [r4]
+ add r0, r5, #0
+ bl MOD36_02254F48
+_0225539A:
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD36_0225520C
+
+ thumb_func_start MOD36_0225539C
+MOD36_0225539C: ; 0x0225539C
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ add r0, r5, #0
+ bl MOD20_022538A4
+ add r0, r5, #0
+ bl MOD20_022538AC
+ cmp r0, #0
+ beq _022553BE
+ cmp r0, #1
+ beq _022553CA
+ pop {r3, r4, r5, pc}
+_022553BE:
+ mov r0, #1
+ str r0, [r4, #0x60]
+ add r0, r5, #0
+ bl MOD20_022538B0
+ pop {r3, r4, r5, pc}
+_022553CA:
+ add r0, r4, #0
+ mov r1, #7
+ bl MOD36_02254F30
+ cmp r0, #0
+ beq _022553E2
+ ldr r0, _022553E4 ; =0x0000066A
+ bl MOD20_02252B28
+ add r0, r5, #0
+ bl MOD36_02254F48
+_022553E2:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_022553E4: .word 0x0000066A
+ thumb_func_end MOD36_0225539C
+
+ .section .rodata
+ ; 0x022553E8
+ .incbin "baserom.nds", 0x28fda8, 0x110
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_36.SINIT_START
+ .global SDK_OVERLAY.MODULE_36.SINIT_END
+SDK_OVERLAY.MODULE_36.SINIT_START:
+ .word MOD36_02254840
+ .word 0
+SDK_OVERLAY.MODULE_36.SINIT_END:
diff --git a/arm9/src/FUN_02000DF4.c b/arm9/src/FUN_02000DF4.c
deleted file mode 100644
index 80e80b30..00000000
--- a/arm9/src/FUN_02000DF4.c
+++ /dev/null
@@ -1,12 +0,0 @@
-#include "global.h"
-#include "main.h"
-
-extern struct Unk2106FA0 gBacklightTop;
-
-THUMB_FUNC void FUN_02000DF4(void)
-{
- gBacklightTop.unk8 = -1;
- gBacklightTop.unkC = 0;
- gBacklightTop.unk10 = -1;
- gBacklightTop.unk14 = 0;
-}
diff --git a/arm9/src/main.c b/arm9/src/main.c
index 73b63332..f16b16ff 100644
--- a/arm9/src/main.c
+++ b/arm9/src/main.c
@@ -1,23 +1,70 @@
#include "global.h"
#include "main.h"
+#include "PAD_pad.h"
+#include "CARD_pullOut.h"
+#include "CARD_backup.h"
+#include "CTRDG_common.h"
+#include "poke_overlay.h"
+
+FS_EXTERN_OVERLAY(MODULE_52);
+FS_EXTERN_OVERLAY(MODULE_63);
+
+#define SOFT_RESET_KEY (PAD_BUTTON_L | PAD_BUTTON_R | PAD_BUTTON_START | PAD_BUTTON_SELECT)
-extern struct Unk2106FA0 gBacklightTop;
-extern struct Unk2106FA0 gBacklightTop_2; // same as the first one, it's referenced twice in the constant pool...
extern struct Unk21C48B8 gUnknown21C48B8;
-extern s32 gUnk027FFC20;
extern struct {
s32 unk0;
- s32 unk4;
+ u8 unk4;
+ u8 unk5;
+ u8 unk6;
+ u8 unk7;
u8 unk8;
} gUnk021C4918;
-extern void PM_GetBackLight();
extern void OS_WaitIrq();
extern void FUN_02016438(s32);
-
-extern const s32 CONST_3F; // 0x0000003F
-extern const s32 CONST_34; // 0x00000034
+extern void InitSystemForTheGame(void);
+extern void InitGraphicMemory(void);
+extern void FUN_020163BC(void);
+extern void FUN_02022294(void);
+extern void FUN_0201259C(void);
+extern void FUN_02000DF4(void);
+extern void FUN_02002C14(void);
+extern void FUN_02002C50(int, int);
+extern int FUN_0202254C(void);
+extern void FUN_02003B98(int, int);
+extern int FUN_02029EF8(int);
+extern int LoadPlayerDataAddress(int);
+extern void FUN_02020AFC(void);
+extern int FUN_020337E8(int);
+extern void FUN_02034188(int, int);
+extern int FUN_020227FC(int);
+extern void FUN_02089D90(int);
+extern void FUN_02000E7C(FSOverlayID, struct Unk21DBE18 *);
+extern void ErrorHandling(void);
+extern void FUN_02000FA4(void);
+extern void FUN_0200A2AC(void);
+extern void FUN_02015E30(void);
+extern void FUN_02000EE8(void);
+extern void FUN_02000FE8(void);
+extern void FUN_02016464(void);
+void DoSoftReset(u32 parameter);
+extern BOOL FUN_0202FB80(void);
+extern void FUN_02000E0C(void);
+extern void FUN_0201B5CC(int);
+extern void FUN_020125D4(void);
+extern void FUN_02015E60(void);
+extern void FUN_020222C4(void);
+extern void FUN_0200A318(void);
+extern void FUN_0200E2D8(void);
+extern void FUN_02003C10(void);
+void FUN_02000F4C(int arg0, int arg1);
+extern BOOL FUN_02006234(struct Unk21DBE18 *, s32 *, int);
+extern BOOL FUN_02006290(int);
+extern void FUN_02006260(int);
+int FUN_02033678(void);
+BOOL FUN_020335B8(void);
extern struct Unk21DBE18 gUnk021DBE18;
extern struct Unk21DBE18 gUnk021D76C8;
@@ -30,7 +77,7 @@ THUMB_FUNC void NitroMain(void)
FUN_020163BC();
FUN_02016438(0);
- PM_GetBackLight(&gBacklightTop_2, 0);
+ PM_GetBackLight(&gBacklightTop_2.unk0, NULL);
FUN_02022294();
FUN_0201259C();
@@ -51,15 +98,15 @@ THUMB_FUNC void NitroMain(void)
}
else
{
- switch (gUnk027FFC20)
+ switch (*((s32 *)HW_RESET_PARAMETER_BUF))
{
case 0:
gBacklightTop.unk1C = 0;
- FUN_02000E7C(&CONST_3F, &gUnk021DBE18);
+ FUN_02000E7C(FS_OVERLAY_ID(MODULE_63), &gUnk021DBE18);
break;
case 1:
gBacklightTop.unk1C = 1;
- FUN_02000E7C(&CONST_34, &gUnk021D76C8);
+ FUN_02000E7C(FS_OVERLAY_ID(MODULE_52), &gUnk021D76C8);
break;
default:
ErrorHandling();
@@ -77,9 +124,9 @@ THUMB_FUNC void NitroMain(void)
FUN_02000EE8();
FUN_02000FE8();
FUN_02016464();
- if ((gUnknown21C48B8.unk38 & 0x30C) == 0x30C && !gUnk021C4918.unk8) // soft reset?
+ if ((gUnknown21C48B8.unk38 & SOFT_RESET_KEY) == SOFT_RESET_KEY && !gUnk021C4918.unk8) // soft reset?
{
- FUN_02000F18(0); // soft reset?
+ DoSoftReset(0); // soft reset?
}
if (FUN_0202FB80())
{
@@ -106,4 +153,199 @@ THUMB_FUNC void NitroMain(void)
FUN_02003C10();
FUN_0201B5CC(gUnknown21C48B8.unk20);
}
-} \ No newline at end of file
+}
+
+THUMB_FUNC void FUN_02000DF4(void)
+{
+ gBacklightTop.unk8 = -1;
+ gBacklightTop.unkC = 0;
+ gBacklightTop.unk10 = -1; // overlay invalid
+ gBacklightTop.unk14 = NULL;
+}
+
+THUMB_FUNC void FUN_02000E0C(void)
+{
+ if (!gBacklightTop.unkC)
+ {
+ if (gBacklightTop.unk14 == NULL)
+ return;
+ if (gBacklightTop.unk10 != -1u)
+ HandleLoadOverlay(gBacklightTop.unk10, 0);
+ gBacklightTop.unk8 = gBacklightTop.unk10;
+ gBacklightTop.unkC = FUN_02006234(gBacklightTop.unk14, &gBacklightTop.unk18, 0);
+ gBacklightTop.unk10 = -1u;
+ gBacklightTop.unk14 = NULL;
+ }
+ if (FUN_02006290(gBacklightTop.unkC))
+ {
+ FUN_02006260(gBacklightTop.unkC);
+ gBacklightTop.unkC = 0;
+ if (gBacklightTop.unk8 != -1u)
+ UnloadOverlayByID(gBacklightTop.unk8);
+ }
+}
+
+THUMB_FUNC void FUN_02000E7C(FSOverlayID id, struct Unk21DBE18 * arg1)
+{
+ if (gBacklightTop.unk14 != NULL)
+ ErrorHandling();
+ gBacklightTop.unk10 = id;
+ gBacklightTop.unk14 = arg1;
+}
+
+THUMB_FUNC void FUN_02000E9C(void)
+{
+ FUN_0202FB80();
+ OS_WaitIrq(1, 1);
+ gUnknown21C48B8.unk2C++;
+ gUnknown21C48B8.unk30 = 0;
+ if (gUnknown21C48B8.unk0 != NULL)
+ gUnknown21C48B8.unk0(gUnknown21C48B8.unk4);
+}
+
+THUMB_FUNC void FUN_02000EC8(u32 parameter)
+{
+ if (FUN_02033678() && CARD_TryWaitBackupAsync() == TRUE)
+ {
+ OS_ResetSystem(parameter);
+ }
+ FUN_02000E9C();
+}
+
+THUMB_FUNC void FUN_02000EE8(void)
+{
+ int r1 = FUN_020335B8();
+ switch (r1)
+ {
+ case 1:
+ FUN_02000F4C(1, r1);
+ break;
+ case 2:
+ FUN_02000F4C(0, r1);
+ break;
+ case 3:
+ FUN_02000F4C(1, r1);
+ break;
+ }
+}
+
+extern void FUN_0200E3A0(int, int);
+extern BOOL FUN_02032DAC(void);
+extern void FUN_020225F8(void);
+extern void FUN_0202287C(void);
+
+// No Return
+THUMB_FUNC void DoSoftReset(u32 parameter)
+{
+ FUN_0200E3A0(0, 0x7FFF);
+ FUN_0200E3A0(1, 0x7FFF);
+ if (FUN_02032DAC())
+ {
+ FUN_020225F8();
+ FUN_0202287C();
+ }
+ do
+ {
+ FUN_02000FE8();
+ FUN_02000EC8(parameter);
+ } while (1);
+}
+
+extern void FUN_02033F70(int, int, int);
+
+THUMB_FUNC void FUN_02000F4C(int arg0, int arg1)
+{
+ if (arg1 == 3)
+ {
+ FUN_02033F70(0, 3, 0);
+ }
+ else if (arg0 == 0)
+ {
+ FUN_02033F70(0, 2, 0);
+ }
+ else
+ {
+ FUN_02033F70(0, 0, 0);
+ }
+ FUN_02032DAC();
+ while (1)
+ {
+ FUN_02000FE8();
+ FUN_02016464();
+ if (gUnknown21C48B8.unk48 & 1)
+ break;
+ FUN_02000E9C();
+ }
+ DoSoftReset(arg0);
+}
+
+extern void FUN_0201265C(struct Unk21C4818 *, struct Unk21C4828 *);
+extern void FUN_0201BA1C(int);
+extern void FUN_0201B9E0(int);
+
+void FUN_02000FA4(void)
+{
+ struct Unk21C4818 spC;
+ struct Unk21C4828 sp0;
+ FUN_0201265C(&spC, &sp0);
+ {
+ int r4 = gUnknown21C48B8.unk2C;
+ int r5 = ((sp0.unk4 + sp0.unk8) << 24) + (spC.unk0 + ((256 * spC.unk4 * spC.unk8) << 16) + (sp0.unk0 << 16));
+ FUN_0201BA1C(r4 + r5);
+ FUN_0201B9E0(r4 + r5);
+ }
+}
+
+extern void FUN_0201CE04(void);
+extern void FUN_0201CDD0(void);
+
+void FUN_02000FE8(void)
+{
+ PMBackLightSwitch top, bottom;
+ if (PAD_DetectFold())
+ {
+ if (!gUnk021C4918.unk7)
+ {
+ FUN_0201CE04();
+ if (CTRDG_IsPulledOut() == TRUE)
+ {
+ gBacklightTop.unk4 = 1;
+ }
+ {
+ int r1 = gBacklightTop.unk4;
+ while (1)
+ {
+ PMWakeUpTrigger trigger = PM_TRIGGER_COVER_OPEN | PM_TRIGGER_CARD;
+ if (gUnk021C4918.unk6 && !r1)
+ trigger |= PM_TRIGGER_CARTRIDGE;
+ PM_GoSleepMode(trigger, PM_PAD_LOGIC_OR, 0);
+ if (CARD_IsPulledOut())
+ {
+ PM_ForceToPowerOff();
+ break;
+ }
+ else if (PAD_DetectFold())
+ {
+ r1 = gBacklightTop.unk4 = 1;
+ }
+ else
+ break;
+ }
+ FUN_0201CDD0();
+ return;
+ }
+ }
+ else
+ {
+ PM_GetBackLight(&top, &bottom);
+ if (top == PM_BACKLIGHT_ON)
+ PM_SetBackLight(PM_LCD_ALL, PM_BACKLIGHT_OFF);
+ }
+ }
+ else
+ {
+ PM_GetBackLight(&top, &bottom);
+ if (top == PM_BACKLIGHT_OFF)
+ PM_SetBackLight(PM_LCD_ALL, gBacklightTop.unk0);
+ }
+}
diff --git a/arm9/src/poke_overlay.c b/arm9/src/poke_overlay.c
index 105881d8..4cf1ea67 100644
--- a/arm9/src/poke_overlay.c
+++ b/arm9/src/poke_overlay.c
@@ -1,11 +1,7 @@
#include "global.h"
#include "nitro.h"
#include "FS_file.h"
-#include "FS_overlay.h"
-
-#define OVERLAY_LOAD_WRAM 0
-#define OVERLAY_LOAD_ITCM 1
-#define OVERLAY_LOAD_DTCM 2
+#include "poke_overlay.h"
extern void ErrorHandling(void);
diff --git a/arm9/undefined_syms.txt b/arm9/undefined_syms.txt
index 930bffec..697a790a 100644
--- a/arm9/undefined_syms.txt
+++ b/arm9/undefined_syms.txt
@@ -1,6 +1,4 @@
SDK_SYS_STACKSIZE = 0x00000000;
-CONST_34 = 0x00000034;
-CONST_3F = 0x0000003F;
SDK_IRQ_STACKSIZE = 0x00000400;
// .data
diff --git a/global.inc b/global.inc
index 8166d7bc..7fe1f458 100644
--- a/global.inc
+++ b/global.inc
@@ -28,6 +28,9 @@
.extern DGT_Hash1GetDigest_R
.extern DGT_Hash1Reset
.extern DGT_Hash1SetSource
+.extern DGT_Hash2GetDigest
+.extern DGT_Hash2Reset
+.extern DGT_Hash2SetSource
.extern DGTi_hash2_arm4_small
.extern ErrorHandling
.extern FS_CloseFile
@@ -3129,14 +3132,11 @@
.extern MATH_MD5GetHash
.extern MATH_MD5Init
.extern MATH_MD5Update
-.extern MATH_SHA1GetHash
-.extern MATH_SHA1Init
-.extern MATH_SHA1Update
.extern MATHi_CRC16InitTable
.extern MATHi_CRC16InitTableRev
.extern MATHi_CRC32InitTableRev
.extern MATHi_CRC8InitTable
-.extern MATHi_CalcHMAC
+.extern DGTi_Hash2CalcHmac
.extern MIC_DoSamplingAsync
.extern MIC_Init
.extern MIC_StartAutoSampling
diff --git a/include/main.h b/include/main.h
index 0df94795..23059702 100644
--- a/include/main.h
+++ b/include/main.h
@@ -1,19 +1,42 @@
#ifndef GUARD_MAIN_H
#define GUARD_MAIN_H
+#include "FS_overlay.h"
+#include "SPI_pm.h"
+
+struct Unk21DBE18
+{
+ u8 filler_00[16];
+};
+
struct Unk2106FA0
{
- s32 unk0;
+ PMBackLightSwitch unk0;
s32 unk4;
- s32 unk8;
+ FSOverlayID unk8;
s32 unkC;
- s32 unk10;
- s32 unk14;
+ FSOverlayID unk10;
+ struct Unk21DBE18 * unk14;
s32 unk18;
s32 unk1C;
s32 unk20;
};
+struct Unk21C4818
+{
+ u32 unk0;
+ u32 unk4;
+ u32 unk8;
+ u32 unkC;
+};
+
+struct Unk21C4828
+{
+ u32 unk0;
+ u32 unk4;
+ u32 unk8;
+};
+
struct Unk21C48B8
{
void (*unk0)(s32);
@@ -37,4 +60,7 @@ struct Unk21C48B8
s32 unk6C;
};
+extern struct Unk2106FA0 gBacklightTop;
+extern struct Unk2106FA0 gBacklightTop_2; // same as the first one, it's referenced twice in the constant pool...
+
#endif //GUARD_MAIN_H
diff --git a/include/poke_overlay.h b/include/poke_overlay.h
new file mode 100644
index 00000000..5ee9073a
--- /dev/null
+++ b/include/poke_overlay.h
@@ -0,0 +1,13 @@
+#ifndef GUARD_POKE_OVERLAY_H
+#define GUARD_POKE_OVERLAY_H
+
+#include "FS_overlay.h"
+
+#define OVERLAY_LOAD_WRAM 0
+#define OVERLAY_LOAD_ITCM 1
+#define OVERLAY_LOAD_DTCM 2
+
+void UnloadOverlayByID(FSOverlayID id);
+BOOL HandleLoadOverlay(FSOverlayID id, int a1);
+
+#endif //GUARD_POKE_OVERLAY_H
diff --git a/tools/scaninc/source_file.cpp b/tools/scaninc/source_file.cpp
index f23ff6db..5d0281a4 100644
--- a/tools/scaninc/source_file.cpp
+++ b/tools/scaninc/source_file.cpp
@@ -31,7 +31,7 @@ SourceFileType GetFileType(std::string& path)
std::string extension = path.substr(pos + 1);
- if (extension == "c")
+ if (extension == "c" || extension == "cpp")
return SourceFileType::Cpp;
else if (extension == "s")
return SourceFileType::Asm;