diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-06 15:21:52 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-05-06 15:21:52 -0400 |
commit | 4d1729dc1fb186545874f85b68e14364a2c017cc (patch) | |
tree | 354d8c9eb796bca49d43e91e4a99c8e533ef1d3a | |
parent | 84d12c749b67e63dafc1068b0f1bb5083dde04cb (diff) |
Disassemble module 32; introduce 0-size BSS section in LCF
-rw-r--r-- | arm9/arm9.lcf | 290 | ||||
-rw-r--r-- | arm9/arm9.lsf | 349 | ||||
-rw-r--r-- | arm9/modules/32/asm/module_32.s | 576 | ||||
-rw-r--r-- | arm9/undefined_syms.txt | 43 |
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; |