summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-05-06 15:21:52 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2020-05-06 15:21:52 -0400
commit4d1729dc1fb186545874f85b68e14364a2c017cc (patch)
tree354d8c9eb796bca49d43e91e4a99c8e533ef1d3a
parent84d12c749b67e63dafc1068b0f1bb5083dde04cb (diff)
Disassemble module 32; introduce 0-size BSS section in LCF
-rw-r--r--arm9/arm9.lcf290
-rw-r--r--arm9/arm9.lsf349
-rw-r--r--arm9/modules/32/asm/module_32.s576
-rw-r--r--arm9/undefined_syms.txt43
4 files changed, 956 insertions, 302 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf
index 1c04c470..3baed934 100644
--- a/arm9/arm9.lcf
+++ b/arm9/arm9.lcf
@@ -1,107 +1,107 @@
#include "macros.lcf.inc"
MEMORY {
- .itcm (RWX) : ORIGIN=0x01FF8000, LENGTH=0
- .text (RX) : ORIGIN=0x02000000, LENGTH=0
- .data (R) : ORIGIN=0x20EC710, LENGTH=0
- .autoload (R) : ORIGIN=0x02107700, LENGTH=0
- .footer (R) : ORIGIN=0, LENGTH=0
- .bss (RWX) : ORIGIN=0x02106FA0, LENGTH=0
- .ewram (RWX) : ORIGIN=0x023E0000, LENGTH=0
- .dtcm (RW) : ORIGIN=0x027E0000, LENGTH=0
- .overlay (RX) : ORIGIN=0, LENGTH=0
- MODULE_00 (RWX) : ORIGIN=0x021D74E0, LENGTH=0
- MODULE_01 (RWX) : ORIGIN=0x021D74E0, LENGTH=0
- MODULE_02 (RWX) : ORIGIN=0x021D7520, LENGTH=0
- MODULE_03 (RWX) : ORIGIN=0x01FF8700, LENGTH=0
- MODULE_04 (RWX) : ORIGIN=0x021D74E0, LENGTH=0
- MODULE_05 (RWX) : ORIGIN=0x021D74E0, LENGTH=0
- MODULE_06 (RWX) : ORIGIN=0x022396A0, LENGTH=0
- MODULE_07 (RWX) : ORIGIN=0x02211E60, LENGTH=0
- MODULE_08 (RWX) : ORIGIN=0x02211E60, LENGTH=0
- MODULE_09 (RWX) : ORIGIN=0x02211E60, LENGTH=0
- MODULE_10 (RWX) : ORIGIN=0x021D74E0, LENGTH=0
- MODULE_11 (RWX) : ORIGIN=0x0222D5C0, LENGTH=0
- MODULE_12 (RWX) : ORIGIN=0x0222D5C0, LENGTH=0
- MODULE_13 (RWX) : ORIGIN=0x02211E60, LENGTH=0
- MODULE_14 (RWX) : ORIGIN=0x021D74E0, LENGTH=0
- MODULE_15 (RWX) : ORIGIN=0x021D74E0, LENGTH=0
- MODULE_16 (RWX) : ORIGIN=0x021D74E0, LENGTH=0
- MODULE_17 (RWX) : ORIGIN=0x021D74E0, LENGTH=0
- MODULE_18 (RWX) : ORIGIN=0x022396A0, LENGTH=0
- MODULE_19 (RWX) : ORIGIN=0x02252440, LENGTH=0
- MODULE_20 (RWX) : ORIGIN=0x02252440, LENGTH=0
- MODULE_21 (RWX) : ORIGIN=0x02254840, LENGTH=0
- MODULE_22 (RWX) : ORIGIN=0x02254840, LENGTH=0
- MODULE_23 (RWX) : ORIGIN=0x02254840, LENGTH=0
- MODULE_24 (RWX) : ORIGIN=0x02254840, LENGTH=0
- MODULE_25 (RWX) : ORIGIN=0x02254840, LENGTH=0
- MODULE_26 (RWX) : ORIGIN=0x02254840, LENGTH=0
- MODULE_27 (RWX) : ORIGIN=0x02254840, LENGTH=0
- MODULE_28 (RWX) : ORIGIN=0x02254840, LENGTH=0
- MODULE_29 (RWX) : ORIGIN=0x02254840, LENGTH=0
- MODULE_30 (RWX) : ORIGIN=0x02254840, LENGTH=0
- MODULE_31 (RWX) : ORIGIN=0x02254840, LENGTH=0
- MODULE_32 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_33 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_34 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_35 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_36 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_37 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_38 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_39 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_40 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_41 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_42 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_43 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_44 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_45 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_46 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_47 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_48 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_49 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_50 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_51 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_52 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_53 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_54 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_55 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_56 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_57 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_58 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_59 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_60 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_61 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_62 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_63 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_64 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_65 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_66 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_67 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_68 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_69 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_70 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_71 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_72 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_73 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_74 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_75 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_76 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_77 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_78 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_79 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_80 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_81 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_82 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_83 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_84 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_85 (RWX) : ORIGIN=0, LENGTH=0
- MODULE_86 (RWX) : ORIGIN=0, LENGTH=0
+ arm9 (RWX) : ORIGIN=0x02000000, LENGTH=0
+ ITCM (RWX) : ORIGIN=0x01FF8000, LENGTH=0
+ DTCM (RWX) : ORIGIN=0x027E0000, LENGTH=0
+ EXT (RWX) : ORIGIN=0x02400000, LENGTH=0
+ binary.AUTOLOAD_INFO (RWX) : ORIGIN=0, LENGTH=0
+ binary.STATIC_FOOTER (RWX) : ORIGIN=0, LENGTH=0
+
+ arm9_defs (RW) : ORIGIN=AFTER(arm9), LENGTH=0
+ arm9_table (RW) : ORIGIN=AFTER(arm9), LENGTH=0
+ MODULE_00 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0
+ MODULE_01 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0
+ MODULE_02 (RWXO) : ORIGIN=0x021D7520, LENGTH=0
+ MODULE_03 (RWXO) : ORIGIN=0x01FF8700, LENGTH=0
+ MODULE_04 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0
+ MODULE_05 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0
+ MODULE_06 (RWXO) : ORIGIN=0x022396A0, LENGTH=0
+ MODULE_07 (RWXO) : ORIGIN=0x02211E60, LENGTH=0
+ MODULE_08 (RWXO) : ORIGIN=0x02211E60, LENGTH=0
+ MODULE_09 (RWXO) : ORIGIN=0x02211E60, LENGTH=0
+ MODULE_10 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0
+ MODULE_11 (RWXO) : ORIGIN=0x0222D5C0, LENGTH=0
+ MODULE_12 (RWXO) : ORIGIN=0x0222D5C0, LENGTH=0
+ MODULE_13 (RWXO) : ORIGIN=0x02211E60, LENGTH=0
+ MODULE_14 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0
+ MODULE_15 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0
+ MODULE_16 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0
+ MODULE_17 (RWXO) : ORIGIN=0x021D74E0, LENGTH=0
+ MODULE_18 (RWXO) : ORIGIN=0x022396A0, LENGTH=0
+ MODULE_19 (RWXO) : ORIGIN=0x02252440, LENGTH=0
+ MODULE_20 (RWXO) : ORIGIN=0x02252440, LENGTH=0
+ MODULE_21 (RWXO) : ORIGIN=0x02254840, LENGTH=0
+ MODULE_22 (RWXO) : ORIGIN=0x02254840, LENGTH=0
+ MODULE_23 (RWXO) : ORIGIN=0x02254840, LENGTH=0
+ MODULE_24 (RWXO) : ORIGIN=0x02254840, LENGTH=0
+ MODULE_25 (RWXO) : ORIGIN=0x02254840, LENGTH=0
+ MODULE_26 (RWXO) : ORIGIN=0x02254840, LENGTH=0
+ MODULE_27 (RWXO) : ORIGIN=0x02254840, LENGTH=0
+ MODULE_28 (RWXO) : ORIGIN=0x02254840, LENGTH=0
+ MODULE_29 (RWXO) : ORIGIN=0x02254840, LENGTH=0
+ MODULE_30 (RWXO) : ORIGIN=0x02254840, LENGTH=0
+ MODULE_31 (RWXO) : ORIGIN=0x02254840, LENGTH=0
+ MODULE_32 (RWXO) : ORIGIN=0x02254840, LENGTH=0
+ MODULE_33 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_34 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_35 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_36 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_37 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_38 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_39 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_40 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_41 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_42 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_43 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_44 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_45 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_46 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_47 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_48 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_49 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_50 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_51 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_52 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_53 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_54 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_55 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_56 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_57 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_58 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_59 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_60 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_61 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_62 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_63 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_64 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_65 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_66 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_67 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_68 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_69 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_70 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_71 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_72 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_73 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_74 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_75 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_76 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_77 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_78 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_79 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_80 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_81 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_82 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_83 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_84 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_85 (RWXO) : ORIGIN=0, LENGTH=0
+ MODULE_86 (RWXO) : ORIGIN=0, LENGTH=0
}
SECTIONS {
#include "undefined_syms.txt"
- .text : AT (0x0) {
+ .arm9 : AT (0x0) {
secure.o (.text)
crt0.o (.text)
crt0.o (.version)
@@ -203,37 +203,77 @@ SECTIONS {
libc.o (.text)
/* MWCC library */
libmwcc.o (.text)
- } > .text
-
- .data : AT (0xEC710) {
rom2.o (.data)
string_util.o (.data)
rom2_2.o (.data)
- } > .data
-
- SDK_STATIC_BSS_START = .;
- SDK_STATIC_BSS_END = SDK_STATIC_BSS_START + 0xd0540;
-
- SDK_AUTOLOAD_START = .;
-
- .itcm : AT (0x106FA0)
+ SDK_STATIC_END = .;
+ } > arm9
+
+ .arm9.bss :
+ {
+ SDK_STATIC_BSS_START = .;
+ gBacklightTop = SDK_STATIC_BSS_START;
+ gBacklightTop_2 = gBacklightTop + 0x0;
+ gUnknown21C48B8 = gBacklightTop_2 + 0xBD918;
+ gUnk021C4918 = gUnknown21C48B8 + 0x60;
+ gUnk021C8C70 = gUnk021C4918 + 0x4358;
+ OSi_IrqCallbackInfo = gUnk021C8C70 + 0xA7AC;
+ isInitialized = OSi_IrqCallbackInfo + 0x60;
+ OSi_StackForDestructor = isInitialized + 0x4;
+ OSi_RescheduleCount = OSi_StackForDestructor + 0x4;
+ OSi_ThreadIdCount = OSi_RescheduleCount + 0x4;
+ OSi_SystemCallbackInSwitchThread = OSi_ThreadIdCount + 0x4;
+ OSi_CurrentThreadPtr = OSi_SystemCallbackInSwitchThread + 0x4;
+ OSi_IsThreadInitialized = OSi_CurrentThreadPtr + 0x4;
+ OSi_ThreadInfo = OSi_IsThreadInitialized + 0x4;
+ OSi_IdleThread = OSi_ThreadInfo + 0x10;
+ OSi_LauncherThread = OSi_IdleThread + 0xC0;
+ OSi_IdleThreadStack = OSi_LauncherThread + 0xC0;
+ OSi_Initialized = OSi_IdleThreadStack + 0xC8;
+ OSi_MainExArenaEnabled = OSi_Initialized + 0x4;
+ OSiHeapInfo = OSi_MainExArenaEnabled + 0x4;
+ OSi_UserExceptionHandler = OSiHeapInfo + 0x24;
+ OSi_UserExceptionHandlerArg = OSi_UserExceptionHandler + 0x4;
+ OSi_DebuggerHandler = OSi_UserExceptionHandlerArg + 0x4;
+ OSi_ExContext = OSi_DebuggerHandler + 0x4;
+ OSi_TimerReserved = OSi_ExContext + 0x80;
+ OSi_UseTick = OSi_TimerReserved + 0x4;
+ OSi_NeedResetTimer = OSi_UseTick + 0x4;
+ OSi_TickCounter = OSi_NeedResetTimer + 0x4;
+ OSi_UseAlarm = OSi_TickCounter + 0x8;
+ OSi_AlarmQueue = OSi_UseAlarm + 0x4;
+ OSi_UseVAlarm = OSi_AlarmQueue + 0x8;
+ OSi_PreviousVCount = OSi_UseVAlarm + 0x4;
+ OSi_VFrameCount = OSi_PreviousVCount + 0x4;
+ OSi_VAlarmQueue = OSi_VFrameCount + 0x4;
+ OSi_IsInitReset = OSi_VAlarmQueue + 0x8;
+ OSi_IsResetOccurred = OSi_IsInitReset + 0x4;
+ OSi_vramExclusive = OSi_IsResetOccurred + 0x4;
+ OSi_vramLockId = OSi_vramExclusive + 0x4;
+ cardi_common = OSi_vramLockId + 0x1DD8;
+ SDK_STATIC_BSS_END = cardi_common + 0x1F20;
+ } >> arm9
+
+ SDK_AUTOLOAD_START = SDK_STATIC_END;
+
+ .ITCM : AT (0x106FA0)
{
SDK_AUTOLOAD_ITCM_START = .;
arm9_itcm.o (.itcm)
SDK_AUTOLOAD_ITCM_END = .;
. = 0x01FF8720;
SDK_SECTION_ARENA_ITCM_START = .;
- } > .itcm
+ } > ITCM
- .dtcm : AT (0x1076A0) {
+ .DTCM : AT (0x1076A0) {
SDK_AUTOLOAD_DTCM_START = .;
OS_irqTable.o (.dtcm)
OS_irqHandler.o (.dtcm)
SDK_AUTOLOAD_DTCM_END = .;
SDK_SECTION_ARENA_DTCM_START = 0x027E0080;
- } > .dtcm
+ } > DTCM
- .autoload : AT (0x107700) {
+ .binary.AUTOLOAD_INFO : AT (0x107700) {
WRITEW SDK_AUTOLOAD_ITCM_START;
WRITEW SDK_AUTOLOAD_ITCM_SIZE;
WRITEW SDK_AUTOLOAD_ITCM_BSS_SIZE;
@@ -243,15 +283,15 @@ SECTIONS {
WRITEW SDK_AUTOLOAD_EXT_START;
WRITEW SDK_AUTOLOAD_EXT_SIZE;
WRITEW SDK_AUTOLOAD_EXT_BSS_SIZE;
- } > .autoload
+ } > binary.AUTOLOAD_INFO
- .footer : AT (0x107724) {
+ .binary.STATIC_FOOTER : AT (0x107724) {
WRITEW 0xDEC00621;
- WRITEW _start_ModuleParams - ADDR(.text);
+ WRITEW _start_ModuleParams - ADDR(arm9);
WRITEW 0;
- } > .footer
+ } > binary.STATIC_FOOTER
- .overlay : AT (0x107800) {
+ .arm9_table : AT (0x107800) {
OVERLAY_TABLE(SDK_MODULE_00, 0)
OVERLAY_TABLE(SDK_MODULE_01, 1)
OVERLAY_TABLE(SDK_MODULE_02, 2)
@@ -339,7 +379,7 @@ SECTIONS {
OVERLAY_TABLE(SDK_MODULE_84, 84)
OVERLAY_TABLE(SDK_MODULE_85, 85)
OVERLAY_TABLE(SDK_MODULE_86, 86)
- } > .overlay
+ } > arm9_table
.MODULE.00 : AT (0x108400)
{
@@ -772,7 +812,19 @@ SECTIONS {
module_31.o (.bss)
} >> MODULE_31
- OVERLAY_FILE(32, 0x289800, FILE_28D800.o)
+ .MODULE.32 : AT (0x289800)
+ {
+ module_32.o (.text)
+ module_32.o (.sdata)
+ module_32.o (.data)
+ } > MODULE_32
+
+ .MODULE.32.bss :
+ {
+ module_32.o (.sbss)
+ module_32.o (.bss)
+ } >> MODULE_32
+
OVERLAY_FILE(33, 0x289E00, FILE_28DE00.o)
OVERLAY_FILE(34, 0x28A200, FILE_28E200.o)
OVERLAY_FILE(35, 0x28A800, FILE_28E800.o)
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index 69a380fc..16cbdc72 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -2,40 +2,104 @@
Static arm9
{
Address 0x02000000
- Object main.o
- Object FUN_02000DF4.o
- Object unk_02000E0C.o
- Object rom2.o
- Object string_util.o
- Object unk_020023C0.o
- Object filesystem.o
- Object unk_02006864.o
- Object script.o
- Object unk_02038C78.o
- Object scrcmd.o
- Object unk_02046030.o
- Object unk_0208AC14.o
- Object unk_020AF030.o
- Library libfx.a
- Library libgx.a
- Library libos.a
- Library libmi.a
- Library libsnd.a
- Library libpxi.a
- Library libfs.a
- Library libdgt.a
- Library libcp.a
- Library libspi.a
- Library libpm.a
- Library librtc.a
- Library libcard.a
- Library libwm.a
- Library libctrdg.a
- Library libmath.a
- Library libstd.a
- Library libc.a
- Library libmwcc.a
- Object rom2_2.o
+ Object main.o
+ Object FUN_02000DF4.o
+ Object unk_02000E0C.o
+ Object string_util.o
+ Object unk_020023C0.o
+ Object filesystem.o
+ Object unk_02006864.o
+ Object script.o
+ Object unk_02038C78.o
+ Object scrcmd.o
+ Object unk_02046030.o
+ Object unk_0208AC14.o
+ Object FUN_020910A4.o
+ Object unk_020910EC.o
+ Object unk_020AF030.o
+ Object FX_mtx22.o
+ Object FX_mtx33.o
+ Object FX_mtx43.o
+ Object FX_mtx44.o
+ Object FX_cp.o
+ Object FX_vec.o
+ Object FX_atan.o
+ Object FX.o
+ Object GX.o
+ Object GX_state.o
+ Object GX_vramcnt.o
+ Object GX_bgcnt.o
+ Object GX_g2.o
+ Object GX_g3b.o
+ Object GX_g3imm.o
+ Object GX_g3x.o
+ Object GX_g3_util.o
+ Object GX_load2d.o
+ Object GX_load3d.o
+ Object GX_g3.o
+ Object GX_asm.o
+ Object OS_irqHandler.o
+ Object OS_irqTable.o
+ Object OS_interrupt.o
+ Object OS_spinLock.o
+ Object OS_printf.o
+ Object OS_thread.o
+ Object OS_context.o
+ Object OS_emulator.o
+ Object OS_message.o
+ Object OS_mutex.o
+ Object OS_cache.o
+ Object OS_init.o
+ Object OS_arena.o
+ Object OS_alloc.o
+ Object OS_tcm.o
+ Object OS_protectionUnit.o
+ Object OS_protectionRegion.o
+ Object OS_exception.o
+ Object OS_timer.o
+ Object OS_tick.o
+ Object OS_alarm.o
+ Object OS_valarm.o
+ Object OS_system.o
+ Object OS_reset.o
+ Object OS_ownerInfo.o
+ Object OS_vramExclusive.o
+ Object OS_entropy.o
+ Object OS_terminate_proc.o
+ Object MI_wram.o
+ Object MI_dma.o
+ Object MI_dma_hblank.o
+ Object MI_dma_gxcommand.o
+ Object MI_memory.o
+ Object MI_swap.o
+ Object MI_uncompress.o
+ Object MI_dma_card.o
+ Object MI_init.o
+ Object SND_interface.o
+ Object SND_main.o
+ Object SND_command.o
+ Object SND_alarm.o
+ Object SND_work.o
+ Object SND_util.o
+ Object SND_bank.o
+ Object PXI_init.o
+ Object PXI_fifo.o
+ Object libfs.o
+ Object libdgt.o
+ Object libcp.o
+ Object libspi.o
+ Object libpm.o
+ Object librtc.o
+ Object libcard.o
+ Object libwm.o
+ Object libctrdg.o
+ Object libmath.o
+ Object libstd.o
+ Object libc.o
+ Object libmwcc.o
+ Object rom2.o
+ Object string_util.o
+ Object rom2_2.o
}
Autoload ITCM
@@ -55,438 +119,441 @@ Autoload EXT
Address 0x02400000
}
-Overlay overlay_00
+Overlay MODULE_00
{
Address 0x021D74E0
Object module_00_dummy.o
}
-Overlay overlay_01
+Overlay MODULE_01
{
Address 0x021D74E0
Object module_01.o
}
-Overlay overlay_02
+Overlay MODULE_02
{
Address 0x021D7520
Object module_02_dummy.o
}
-Overlay overlay_03
+Overlay MODULE_03
{
Address 0x01FF8700
Object module_03_dummy.o
}
-Overlay overlay_04
+Overlay MODULE_04
{
Address 0x021D74E0
Object thumb_04.o
Object arm_04.o
}
-Overlay overlay_05
+Overlay MODULE_05
{
Address 0x021D74E0
Object module_05.o
}
-Overlay overlay_06
+Overlay MODULE_06
{
Address 0x022396A0
Object module_06.o
}
-Overlay overlay_07
+Overlay MODULE_07
{
Address 0x02211E60
Object module_07.o
}
-Overlay overlay_08
+Overlay MODULE_08
{
Address 0x02211E60
Object module_08.o
}
-Overlay overlay_09
+Overlay MODULE_09
{
Address 0x02211E60
Object module_09.o
}
-Overlay overlay_10
+Overlay MODULE_10
{
Address 0x021D74E0
Object module_10_dummy.o
}
-Overlay overlay_11
+Overlay MODULE_11
{
Address 0x0222D5C0
Object module_11.o
}
-Overlay overlay_12
+Overlay MODULE_12
{
Address 0x0222D5C0
- Object FILE_1DFE00.o
+ Object module_12.o
}
-Overlay overlay_13
+Overlay MODULE_13
{
Address 0x02211E60
- Object FILE_1F9200.o
+ Object module_13_init.o
+ Object module_13_arm1.o
+ Object module_13_thumb.o
+ Object module_13_arm2.o
}
-Overlay overlay_14
+Overlay MODULE_14
{
Address 0x021D74E0
- Object FILE_227E00.o
+ Object module_14.o
}
-Overlay overlay_15
+Overlay MODULE_15
{
Address 0x021D74E0
- Object FILE_237400.o
+ Object module_15.o
}
-Overlay overlay_16
+Overlay MODULE_16
{
Address 0x021D74E0
- Object FILE_23BC00.o
+ Object module_16.o
}
-Overlay overlay_17
+Overlay MODULE_17
{
Address 0x021D74E0
- Object FILE_264200.o
+ Object module_17.o
}
-Overlay overlay_18
+Overlay MODULE_18
{
Address 0x022396A0
- Object FILE_26B200.o
+ Object module_18.o
}
-Overlay overlay_19
+Overlay MODULE_19
{
Address 0x02252440
- Object FILE_283000.o
+ Object module_19.o
}
-Overlay overlay_20
+Overlay MODULE_20
{
Address 0x02252440
- Object FILE_283200.o
+ Object module_20.o
}
-Overlay overlay_21
+Overlay MODULE_21
{
Address 0x02254840
- Object FILE_285600.o
+ Object module_21.o
}
-Overlay overlay_22
+Overlay MODULE_22
{
Address 0x02254840
- Object FILE_285C00.o
+ Object module_22.o
}
-Overlay overlay_23
+Overlay MODULE_23
{
Address 0x02254840
- Object FILE_286C00.o
+ Object module_23.o
}
-Overlay overlay_24
+Overlay MODULE_24
{
Address 0x02254840
- Object FILE_288600.o
+ Object module_24.o
}
-Overlay overlay_25
+Overlay MODULE_25
{
Address 0x02254840
- Object FILE_289000.o
+ Object module_25.o
}
-Overlay overlay_26
+Overlay MODULE_26
{
Address 0x02254840
- Object FILE_289600.o
+ Object module_26.o
}
-Overlay overlay_27
+Overlay MODULE_27
{
Address 0x02254840
- Object FILE_289E00.o
+ Object module_27.o
}
-Overlay overlay_28
+Overlay MODULE_28
{
Address 0x02254840
- Object FILE_28AA00.o
+ Object module_28.o
}
-Overlay overlay_29
+Overlay MODULE_29
{
Address 0x02254840
- Object FILE_28C200.o
+ Object module_29.o
}
-Overlay overlay_30
+Overlay MODULE_30
{
Address 0x02254840
- Object FILE_28CC00.o
+ Object module_30.o
}
-Overlay overlay_31
+Overlay MODULE_31
{
Address 0x02254840
- Object FILE_28D200.o
+ Object module_31.o
}
-Overlay overlay_32
+Overlay MODULE_32
{
Address 0x02254840
Object FILE_28D800.o
}
-Overlay overlay_33
+Overlay MODULE_33
{
Address 0x02254840
Object FILE_28DE00.o
}
-Overlay overlay_34
+Overlay MODULE_34
{
Address 0x02254840
Object FILE_28E200.o
}
-Overlay overlay_35
+Overlay MODULE_35
{
Address 0x02254840
Object FILE_28E800.o
}
-Overlay overlay_36
+Overlay MODULE_36
{
Address 0x02254840
Object FILE_28F200.o
}
-Overlay overlay_37
+Overlay MODULE_37
{
Address 0x02254840
Object FILE_290000.o
}
-Overlay overlay_38
+Overlay MODULE_38
{
Address 0x02254840
Object FILE_290600.o
}
-Overlay overlay_39
+Overlay MODULE_39
{
Address 0x02254840
Object FILE_291200.o
}
-Overlay overlay_40
+Overlay MODULE_40
{
Address 0x02254840
Object FILE_292000.o
}
-Overlay overlay_41
+Overlay MODULE_41
{
Address 0x02254840
Object FILE_292E00.o
}
-Overlay overlay_42
+Overlay MODULE_42
{
Address 0x02254840
Object FILE_294000.o
}
-Overlay overlay_43
+Overlay MODULE_43
{
Address 0x02254840
Object FILE_294A00.o
}
-Overlay overlay_44
+Overlay MODULE_44
{
Address 0x02254840
Object FILE_295400.o
}
-Overlay overlay_45
+Overlay MODULE_45
{
Address 0x02254840
Object FILE_295A00.o
}
-Overlay overlay_46
+Overlay MODULE_46
{
Address 0x02254840
Object FILE_296400.o
}
-Overlay overlay_47
+Overlay MODULE_47
{
Address 0x02254840
Object FILE_296800.o
}
-Overlay overlay_48
+Overlay MODULE_48
{
Address 0x02254840
Object FILE_297600.o
}
-Overlay overlay_49
+Overlay MODULE_49
{
Address 0x02254840
Object FILE_298000.o
}
-Overlay overlay_50
+Overlay MODULE_50
{
Address 0x02254840
Object FILE_298600.o
}
-Overlay overlay_51
+Overlay MODULE_51
{
Address 0x02254840
Object FILE_298A00.o
}
-Overlay overlay_52
+Overlay MODULE_52
{
Address 0x021D74E0
Object FILE_299A00.o
}
-Overlay overlay_53
+Overlay MODULE_53
{
Address 0x021D74E0
Object FILE_299E00.o
}
-Overlay overlay_54
+Overlay MODULE_54
{
Address 0x021D74E0
Object FILE_29C400.o
}
-Overlay overlay_55
+Overlay MODULE_55
{
Address 0x021D74E0
Object FILE_29E800.o
}
-Overlay overlay_56
+Overlay MODULE_56
{
Address 0x02211E60
Object FILE_2A1A00.o
}
-Overlay overlay_57
+Overlay MODULE_57
{
Address 0x021D74E0
Object FILE_2A6200.o
}
-Overlay overlay_58
+Overlay MODULE_58
{
Address 0x021D9A20
Object FILE_2A8800.o
}
-Overlay overlay_59
+Overlay MODULE_59
{
Address 0x021D74E0
Object FILE_2A9E00.o
}
-Overlay overlay_60
+Overlay MODULE_60
{
Address 0x021D74E0
Object FILE_2ACC00.o
}
-Overlay overlay_61
+Overlay MODULE_61
{
Address 0x021D74E0
Object FILE_2ADA00.o
}
-Overlay overlay_62
+Overlay MODULE_62
{
Address 0x0222D5C0
Object FILE_2AEC00.o
}
-Overlay overlay_63
+Overlay MODULE_63
{
Address 0x021D74E0
Object FILE_2B2A00.o
}
-Overlay overlay_64
+Overlay MODULE_64
{
Address 0x021D74E0
Object FILE_2B7600.o
}
-Overlay overlay_65
+Overlay MODULE_65
{
Address 0x021D74E0
Object FILE_2B9400.o
}
-Overlay overlay_66
+Overlay MODULE_66
{
Address 0x021D74E0
Object FILE_2BC400.o
}
-Overlay overlay_67
+Overlay MODULE_67
{
Address 0x021D74E0
Object FILE_2BEC00.o
}
-Overlay overlay_68
+Overlay MODULE_68
{
Address 0x021D74E0
Object FILE_2C1200.o
}
-Overlay overlay_69
+Overlay MODULE_69
{
Address 0x0222D5C0
Object FILE_2C2800.o
}
-Overlay overlay_70
+Overlay MODULE_70
{
Address 0x021D74E0
Object FILE_2C4C00.o
}
-Overlay overlay_71
+Overlay MODULE_71
{
Address 0x0222D5C0
Object FILE_2C5C00.o
}
-Overlay overlay_72
+Overlay MODULE_72
{
Address 0x021D74E0
Object FILE_2C9C00.o
}
-Overlay overlay_73
+Overlay MODULE_73
{
Address 0x021D74E0
Object FILE_2C9E00.o
}
-Overlay overlay_74
+Overlay MODULE_74
{
Address 0x021D74E0
Object FILE_2CEA00.o
}
-Overlay overlay_75
+Overlay MODULE_75
{
Address 0x021E6BA0
Object FILE_2CFE00.o
}
-Overlay overlay_76
+Overlay MODULE_76
{
Address 0x021D74E0
Object FILE_2D5C00.o
}
-Overlay overlay_77
+Overlay MODULE_77
{
Address 0x021D74E0
Object FILE_2D7C00.o
}
-Overlay overlay_78
+Overlay MODULE_78
{
Address 0x021D74E0
Object FILE_2D9800.o
}
-Overlay overlay_79
+Overlay MODULE_79
{
Address 0x02211E60
Object FILE_2D9E00.o
}
-Overlay overlay_80
+Overlay MODULE_80
{
Address 0x0222D5C0
Object FILE_2DF200.o
}
-Overlay overlay_81
+Overlay MODULE_81
{
Address 0x02237E40
Object FILE_2E9A00.o
}
-Overlay overlay_82
+Overlay MODULE_82
{
Address 0x0222D5C0
Object FILE_2EF000.o
}
-Overlay overlay_83
+Overlay MODULE_83
{
Address 0x0222D5C0
Object FILE_2F1600.o
}
-Overlay overlay_84
+Overlay MODULE_84
{
Address 0x021D74E0
Object FILE_2FFA00.o
}
-Overlay overlay_85
+Overlay MODULE_85
{
Address 0x021D74E0
Object FILE_303400.o
}
-Overlay overlay_86
+Overlay MODULE_86
{
Address 0x021D74E0
Object FILE_30C600.o
diff --git a/arm9/modules/32/asm/module_32.s b/arm9/modules/32/asm/module_32.s
new file mode 100644
index 00000000..135a9b15
--- /dev/null
+++ b/arm9/modules/32/asm/module_32.s
@@ -0,0 +1,576 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD32_02254840
+MOD32_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD32_02254854
+ ldr r1, _02254850 ; =MOD32_0225495C
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD32_02254854
+_02254850: .word MOD32_0225495C
+ thumb_func_end MOD32_02254840
+
+ thumb_func_start MOD32_02254854
+MOD32_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x1c
+ 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 MOD32_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD32_02254920
+ 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 MOD32_02254920
+ thumb_func_end MOD32_02254854
+
+ thumb_func_start MOD32_0225489C
+MOD32_0225489C: ; 0x0225489C
+ push {r4, r5, r6, lr}
+ sub sp, #8
+ add r5, r0, #0
+ add r4, r1, #0
+ mov r0, #0
+ add r1, sp, #4
+ add r6, r2, #0
+ bl PM_GetBackLight
+ ldr r0, [sp, #4]
+ cmp r0, #1
+ bne _022548B8
+ mov r0, #1
+ b _022548BA
+_022548B8:
+ mov r0, #0
+_022548BA:
+ str r0, [r5, #4]
+ add r0, r5, #0
+ add r0, #8
+ add r1, r5, #4
+ add r2, r6, #0
+ bl MOD32_02254A54
+ cmp r0, #0
+ beq _022548F2
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ mov r0, #8
+ str r0, [sp]
+ ldr r0, _022548F8 ; =0x02254C54
+ ldr r2, _022548FC ; =MOD32_02254918
+ mov r1, #2
+ add r3, r5, #0
+ bl MOD20_02254130
+ str r0, [r5, #0x10]
+ mov r0, #0
+ str r0, [r5, #0x14]
+ add sp, #8
+ str r4, [r5, #0xc]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_022548F2:
+ mov r0, #0
+ add sp, #8
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_022548F8: .word 0x02254C54
+_022548FC: .word MOD32_02254918
+ thumb_func_end MOD32_0225489C
+
+ thumb_func_start MOD32_02254900
+MOD32_02254900: ; 0x02254900
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x10]
+ bl MOD20_02254198
+ ldr r0, [r4, #8]
+ bl MOD32_02254A90
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ thumb_func_end MOD32_02254900
+
+ thumb_func_start MOD32_02254918
+MOD32_02254918: ; 0x02254918
+ str r0, [r3, #0x18]
+ str r1, [r3, #0x14]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD32_02254918
+
+ thumb_func_start MOD32_02254920
+MOD32_02254920: ; 0x02254920
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ add r5, r0, #0
+ ldrb r0, [r4]
+ cmp r0, #3
+ bhs _02254956
+ ldr r0, [r4, #0xc]
+ ldr r1, [r4, #0x10]
+ bl MOD20_02252C14
+ ldrb r1, [r4]
+ add r0, r4, #0
+ lsl r2, r1, #2
+ ldr r1, _02254958 ; =0x02254C5C
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254956
+ add r0, r4, #0
+ bl MOD32_02254900
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0xc]
+ bl MOD20_022529A0
+_02254956:
+ pop {r3, r4, r5, pc}
+ .align 2, 0
+_02254958: .word 0x02254C5C
+ thumb_func_end MOD32_02254920
+
+ thumb_func_start MOD32_0225495C
+MOD32_0225495C: ; 0x0225495C
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD32_0225495C
+
+ thumb_func_start MOD32_02254964
+MOD32_02254964: ; 0x02254964
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _0225496C
+ b _0225496E
+_0225496C:
+ mov r1, #2
+_0225496E:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD32_02254964
+
+ thumb_func_start MOD32_02254978
+MOD32_02254978: ; 0x02254978
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254988
+ cmp r0, #1
+ beq _02254998
+ b _022549B2
+_02254988:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD32_02254B08
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549B2
+_02254998:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD32_02254B2C
+ cmp r0, #0
+ beq _022549B2
+ ldr r0, [r4, #0xc]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD32_02254964
+_022549B2:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD32_02254978
+
+ thumb_func_start MOD32_022549B8
+MOD32_022549B8: ; 0x022549B8
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _022549CC
+ mov r1, #2
+ bl MOD32_02254964
+ mov r0, #0
+ pop {r4, pc}
+_022549CC:
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _022549D8
+ cmp r0, #1
+ beq _02254A0C
+ b _02254A1C
+_022549D8:
+ ldr r0, [r4, #0x14]
+ cmp r0, #1
+ bne _02254A1C
+ ldr r1, [r4, #0x18]
+ cmp r1, #0
+ bne _022549EA
+ ldr r0, [r4, #4]
+ cmp r0, #0
+ beq _022549F4
+_022549EA:
+ cmp r1, #1
+ bne _02254A04
+ ldr r0, [r4, #4]
+ cmp r0, #1
+ bne _02254A04
+_022549F4:
+ ldr r1, [r4, #4]
+ mov r0, #1
+ eor r0, r1
+ str r0, [r4, #4]
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD32_02254B08
+_02254A04:
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A1C
+_02254A0C:
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD32_02254B2C
+ cmp r0, #0
+ beq _02254A1C
+ mov r0, #0
+ strb r0, [r4, #1]
+_02254A1C:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD32_022549B8
+
+ thumb_func_start MOD32_02254A20
+MOD32_02254A20: ; 0x02254A20
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254A30
+ cmp r0, #1
+ beq _02254A40
+ b _02254A4E
+_02254A30:
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl MOD32_02254B08
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A4E
+_02254A40:
+ ldr r0, [r4, #8]
+ bl MOD32_02254B38
+ cmp r0, #0
+ beq _02254A4E
+ mov r0, #1
+ pop {r4, pc}
+_02254A4E:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD32_02254A20
+
+ thumb_func_start MOD32_02254A54
+MOD32_02254A54: ; 0x02254A54
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ add r5, r1, #0
+ mov r0, #8
+ mov r1, #0x3c
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _02254A8A
+ 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
+ add r1, r5, #0
+ bl MOD32_02254A9C
+ str r4, [r6]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_02254A8A:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD32_02254A54
+
+ thumb_func_start MOD32_02254A90
+MOD32_02254A90: ; 0x02254A90
+ push {r3, lr}
+ cmp r0, #0
+ beq _02254A9A
+ bl FUN_02016A18
+_02254A9A:
+ pop {r3, pc}
+ thumb_func_end MOD32_02254A90
+
+ thumb_func_start MOD32_02254A9C
+MOD32_02254A9C: ; 0x02254A9C
+ push {r4, r5, lr}
+ sub sp, #0xc
+ mov r3, #0
+ str r3, [sp]
+ mov r2, #1
+ add r5, r0, #0
+ add r4, r1, #0
+ str r2, [sp, #4]
+ mov r0, #8
+ str r0, [sp, #8]
+ mov r0, #0xc
+ mov r1, #0x68
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0x28
+ mov r1, #0xc
+ mov r2, #0x66
+ mov r3, #0x67
+ bl MOD20_02253FBC
+ add r2, r5, #0
+ ldr r0, [r5, #0x20]
+ ldr r1, _02254AEC ; =0x02254C68
+ add r2, #0x28
+ bl MOD20_02253E74
+ str r0, [r5, #0x24]
+ ldr r0, [r4]
+ cmp r0, #0
+ bne _02254AE6
+ ldr r0, [r5, #0x24]
+ mov r1, #1
+ bl MOD20_02253F28
+_02254AE6:
+ add sp, #0xc
+ pop {r4, r5, pc}
+ nop
+_02254AEC: .word 0x02254C68
+ thumb_func_end MOD32_02254A9C
+
+ thumb_func_start MOD32_02254AF0
+MOD32_02254AF0: ; 0x02254AF0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #0x20]
+ ldr r1, [r4, #0x24]
+ bl MOD20_02253F14
+ add r4, #0x28
+ add r0, r4, #0
+ bl MOD20_02254014
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD32_02254AF0
+
+ thumb_func_start MOD32_02254B08
+MOD32_02254B08: ; 0x02254B08
+ 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, _02254B28 ; =0x02254C94
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254B28: .word 0x02254C94
+ thumb_func_end MOD32_02254B08
+
+ thumb_func_start MOD32_02254B2C
+MOD32_02254B2C: ; 0x02254B2C
+ ldr r3, _02254B34 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254B34: .word MOD20_02253794
+ thumb_func_end MOD32_02254B2C
+
+ thumb_func_start MOD32_02254B38
+MOD32_02254B38: ; 0x02254B38
+ ldr r3, _02254B40 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254B40: .word MOD20_022537B8
+ thumb_func_end MOD32_02254B38
+
+ thumb_func_start MOD32_02254B44
+MOD32_02254B44: ; 0x02254B44
+ 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 MOD32_02254B44
+
+ thumb_func_start MOD32_02254B58
+MOD32_02254B58: ; 0x02254B58
+ 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, _02254BDC ; =0x02254C78
+ 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, #0x65
+ 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, #0x64
+ 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, _02254BE0 ; =0x04001000
+ ldr r0, _02254BE4 ; =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 MOD32_02254B44
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_02254BDC: .word 0x02254C78
+_02254BE0: .word 0x04001000
+_02254BE4: .word 0xFFFFE0FF
+ thumb_func_end MOD32_02254B58
+
+ thumb_func_start MOD32_02254BE8
+MOD32_02254BE8: ; 0x02254BE8
+ push {r3, r4, r5, lr}
+ add r5, r1, #0
+ add r0, r5, #0
+ bl MOD20_022538A0
+ add r4, r0, #0
+ bl MOD32_02254AF0
+ ldr r0, [r4, #4]
+ mov r1, #6
+ bl FUN_020178A0
+ add r0, r5, #0
+ bl MOD32_02254B44
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD32_02254BE8
+
+ thumb_func_start MOD32_02254C08
+MOD32_02254C08: ; 0x02254C08
+ push {r4, r5, r6, lr}
+ add r6, r1, #0
+ add r0, r6, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ add r0, r6, #0
+ bl MOD20_022538A4
+ add r4, r0, #0
+ ldr r0, _02254C50 ; =0x00000663
+ bl MOD20_02252B28
+ ldr r0, [r4]
+ cmp r0, #0
+ ldr r0, [r5, #0x24]
+ beq _02254C3A
+ mov r1, #0
+ bl MOD20_02253F28
+ mov r0, #1
+ add r1, r0, #0
+ bl PM_SetBackLight
+ b _02254C48
+_02254C3A:
+ mov r1, #1
+ bl MOD20_02253F28
+ mov r0, #1
+ mov r1, #0
+ bl PM_SetBackLight
+_02254C48:
+ add r0, r6, #0
+ bl MOD32_02254B44
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02254C50: .word 0x00000663
+ thumb_func_end MOD32_02254C08
+
+ .section .data
+ ; 0x02254C54
+ .incbin "baserom.nds", 0x28DC14, 0x8C
diff --git a/arm9/undefined_syms.txt b/arm9/undefined_syms.txt
index a76e7783..e4765c11 100644
--- a/arm9/undefined_syms.txt
+++ b/arm9/undefined_syms.txt
@@ -8,6 +8,7 @@ SDK_IRQ_STACKSIZE = 0x00000400;
FX_AtanTable_ = 0x02103A38;
// OS
OSi_IrqCallbackInfoIndex = 0x02106818;
+OSi_ConsoleTypeCache = 0x02106828;
// DGT
Unk_0210683C = 0x0210683C;
Unk_02106840 = 0x02106840;
@@ -15,48 +16,6 @@ Unk_02106900 = 0x02106900;
Unk_02106A00 = 0x02106A00;
Unk_02106A04 = 0x02106A04;
-// .bss
-OSi_ConsoleTypeCache = 0x02106828;
-gBacklightTop = 0x02106FA0;
-gBacklightTop_2 = 0x02106FA0;
-gUnknown21C48B8 = 0x021C48B8;
-gUnk021C4918 = 0x021C4918;
-gUnk021C8C70 = 0x021C8C70;
-OSi_IrqCallbackInfo = 0x021D341C;
-isInitialized = 0x021D347C;
-OSi_StackForDestructor = 0x021D3480;
-OSi_RescheduleCount = 0x021D3484;
-OSi_ThreadIdCount = 0x021D3488;
-OSi_SystemCallbackInSwitchThread = 0x021D348C;
-OSi_CurrentThreadPtr = 0x021D3490;
-OSi_IsThreadInitialized = 0x021D3494;
-OSi_ThreadInfo = 0x021D3498;
-OSi_IdleThread = 0x021D34A8;
-OSi_LauncherThread = 0x021D3568;
-OSi_IdleThreadStack = 0x021D3628;
-OSi_Initialized = 0x021D36F0;
-OSi_MainExArenaEnabled = 0x021D36F4;
-OSiHeapInfo = 0x021D36F8;
-OSi_UserExceptionHandler = 0x021D371C;
-OSi_UserExceptionHandlerArg = 0x21D3720;
-OSi_DebuggerHandler = 0x021D3724;
-OSi_ExContext = 0x021D3728;
-OSi_TimerReserved = 0x021D37A8;
-OSi_UseTick = 0x021D37AC;
-OSi_NeedResetTimer = 0x021D37B0;
-OSi_TickCounter = 0x021D37B4;
-OSi_UseAlarm = 0x021D37BC;
-OSi_AlarmQueue = 0x021D37C0;
-OSi_UseVAlarm = 0x021D37C8;
-OSi_PreviousVCount = 0x021D37CC;
-OSi_VFrameCount = 0x021D37D0;
-OSi_VAlarmQueue = 0x021D37D4;
-OSi_IsInitReset = 0x021D37DC;
-OSi_IsResetOccurred = 0x021D37E0;
-OSi_vramExclusive = 0x021D37E4;
-OSi_vramLockId = 0x021D37E8;
-cardi_common = 0x021D55C0;
-
// Overlay
FUN_021D74E0 = 0x021D74E0;
FUN_021D76AC = 0x021D76AC;