diff options
-rw-r--r-- | arm9/arm9.lcf | 19 | ||||
-rw-r--r-- | arm9/global.inc | 12 | ||||
-rw-r--r-- | arm9/modules/06/asm/module_06.s | 298 | ||||
-rw-r--r-- | arm9/undefined_syms.txt | 3 |
4 files changed, 329 insertions, 3 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 2eaefb46..759f91c1 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -16,7 +16,7 @@ MEMORY { MODULE_03 (RWX) : ORIGIN=0, LENGTH=0 MODULE_04 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 MODULE_05 (RWX) : ORIGIN=0, LENGTH=0 - MODULE_06 (RWX) : ORIGIN=0, LENGTH=0 + MODULE_06 (RWX) : ORIGIN=0x022396A0, LENGTH=0 MODULE_07 (RWX) : ORIGIN=0, LENGTH=0 MODULE_08 (RWX) : ORIGIN=0, LENGTH=0 MODULE_09 (RWX) : ORIGIN=0, LENGTH=0 @@ -347,15 +347,30 @@ SECTIONS { { thumb_04.o (.text) arm_04.o (.text) + thumb_04.o (.data) arm_04.o (.data) } > MODULE_04 .MODULE.04.bss : { + thumb_04.o (.sbss) + arm_04.o (.sbss) + thumb_04.o (.bss) arm_04.o (.bss) } >> MODULE_04 OVERLAY_FILE(05, 0x141400, FILE_145400.o) - OVERLAY_FILE(06, 0x167600, FILE_16B600.o) + + .MODULE.06 : AT (0x167600) + { + module_06.o (.text) + module_06.o (.data) + } > MODULE_06 + .MODULE.06.bss : + { + module_06.o (.sbss) + module_06.o (.bss) + } >> MODULE_06 + OVERLAY_FILE(07, 0x180400, FILE_184400.o) OVERLAY_FILE(08, 0x183800, FILE_187800.o) OVERLAY_FILE(09, 0x19F000, FILE_1A3000.o) diff --git a/arm9/global.inc b/arm9/global.inc index 1c690d04..0bf9174c 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -3802,6 +3802,16 @@ .extern thunk_FUN_020afda0_2
.extern thunk_FUN_020b5040
.extern wcslen
-
+.extern FUN_0200CA98
+.extern FUN_020C5D8C
+.extern FUN_021D7A20
+.extern FUN_021D7A28
+.extern FUN_021E8648
+.extern GX_GetBankForBGExtPltt
+.extern GX_GetBankForBGExtPltt_2
+.extern GX_GetBankForSubOBJ
+.extern GX_GetBankForSubBGExtPltt
+.extern GX_GetBankForSubBGExtPltt_2
+.extern GX_GetBankForTexPltt
.extern FUN_0209105C
.extern FUN_020910A4
diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s new file mode 100644 index 00000000..cccb02ee --- /dev/null +++ b/arm9/modules/06/asm/module_06.s @@ -0,0 +1,298 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD06_022396A0 +MOD06_022396A0: ; 0x022396A0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, r5, #4 + add r4, r2, #0 + add r6, r3, #0 + str r1, [r5] + bl FUN_0223972C + mov r0, #0 + str r0, [r5, #0x38] + str r4, [r5, #0x30] + str r6, [r5, #0x34] + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start FUN_022396BC +FUN_022396BC: ; 0x022396BC + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x38] + cmp r1, #5 + bhi _02239712 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022396D2: ; jump table + .short _022396DE - _022396D2 - 2 ; case 0 + .short _022396EA - _022396D2 - 2 ; case 1 + .short _02239712 - _022396D2 - 2 ; case 2 + .short _022396FC - _022396D2 - 2 ; case 3 + .short _02239708 - _022396D2 - 2 ; case 4 + .short _02239712 - _022396D2 - 2 ; case 5 +_022396DE: + bl FUN_022397F4 + ldr r0, [r4, #0x38] + add r0, r0, #1 + str r0, [r4, #0x38] + pop {r4, pc} +_022396EA: + ldr r0, [r4, #0x30] + ldr r1, [r4, #0x34] + bl FUN_0223987C + str r0, [r4, #0x2c] + ldr r0, [r4, #0x38] + add r0, r0, #1 + str r0, [r4, #0x38] + pop {r4, pc} +_022396FC: + bl FUN_022398A8 + ldr r0, [r4, #0x38] + add r0, r0, #1 + str r0, [r4, #0x38] + pop {r4, pc} +_02239708: + bl FUN_02239808 + ldr r0, [r4, #0x38] + add r0, r0, #1 + str r0, [r4, #0x38] +_02239712: + pop {r4, pc} + + thumb_func_start FUN_02239714 +FUN_02239714: ; 0x02239714 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x38] + cmp r0, #2 + beq _02239722 + bl ErrorHandling +_02239722: + mov r0, #3 + str r0, [r4, #0x38] + pop {r4, pc} + + thumb_func_start FUN_02239728 +FUN_02239728: ; 0x02239728 + ldr r0, [r0, #0x38] + bx lr + + thumb_func_start FUN_0223972C +FUN_0223972C: ; 0x0223972C + push {r4, lr} + add r4, r0, #0 + bl GX_GetBankForBGExtPltt_2 + str r0, [r4] + bl GX_GetBankForBGExtPltt + str r0, [r4, #4] + bl GX_GetBankForSubBGExtPltt_2 + str r0, [r4, #8] + bl GX_GetBankForSubBGExtPltt + str r0, [r4, #0xc] + bl GX_GetBankForOBJ + str r0, [r4, #0x10] + bl GX_GetBankForOBJExtPltt + str r0, [r4, #0x14] + bl GX_GetBankForSubOBJ + str r0, [r4, #0x18] + bl GX_GetBankForSubOBJExtPltt + str r0, [r4, #0x1c] + bl FUN_020C5D8C + str r0, [r4, #0x20] + bl GX_GetBankForTexPltt + str r0, [r4, #0x24] + pop {r4, pc} + .align 2, 0 + + thumb_func_start FUN_02239770 +FUN_02239770: ; 0x02239770 + push {r4, lr} + sub sp, #0x28 + ldr r4, _0223978C ; =0x0224F1F4 + add r3, sp, #0 + mov r2, #5 +_0223977A: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223977A + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_0223978C: .word 0x0224F1F4 + + thumb_func_start FUN_02239790 +FUN_02239790: ; 0x02239790 + push {r4, r5, lr} + sub sp, #0x2c + ldr r5, _022397EC ; =0x0224F180 + add r3, sp, #0x1c + add r4, r0, #0 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + ldr r5, _022397F0 ; =0x0224F1D8 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #3 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #3 + mov r1, #0x20 + mov r2, #0 + mov r3, #4 + bl FUN_02017F18 + add r0, r4, #0 + mov r1, #3 + bl FUN_02018744 + add sp, #0x2c + pop {r4, r5, pc} + nop +_022397EC: .word 0x0224F180 +_022397F0: .word 0x0224F1D8 + + thumb_func_start FUN_022397F4 +FUN_022397F4: ; 0x022397F4 + ldr r3, _02239800 ; =FUN_0200CA98 + mov r2, #1 + add r1, r0, #0 + ldr r0, _02239804 ; =FUN_0223981C + lsl r2, r2, #0xa + bx r3 + .align 2, 0 +_02239800: .word FUN_0200CA98 +_02239804: .word FUN_0223981C + + thumb_func_start FUN_02239808 +FUN_02239808: ; 0x02239808 + ldr r3, _02239814 ; =FUN_0200CA98 + mov r2, #1 + add r1, r0, #0 + ldr r0, _02239818 ; =FUN_02239840 + lsl r2, r2, #0xa + bx r3 + .align 2, 0 +_02239814: .word FUN_0200CA98 +_02239818: .word FUN_02239840 + + thumb_func_start FUN_0223981C +FUN_0223981C: ; 0x0223981C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + bl FUN_02239770 + ldr r0, [r4] + ldr r0, [r0, #8] + bl FUN_02239864 + ldr r0, [r4] + ldr r0, [r0, #8] + bl FUN_02239790 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start FUN_02239840 +FUN_02239840: ; 0x02239840 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #4 + bl FUN_0201E66C + ldr r0, [r4] + ldr r0, [r0, #8] + bl FUN_02239864 + ldr r0, [r4] + ldr r0, [r0, #8] + bl FUN_0223986C + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + + thumb_func_start FUN_02239864 +FUN_02239864: ; 0x02239864 + ldr r3, _02239868 ; =FUN_021D7A28 + bx r3 + .align 2, 0 +_02239868: .word FUN_021D7A28 + 1 ; TODO: disassemble the module that defines this + + thumb_func_start FUN_0223986C +FUN_0223986C: ; 0x0223986C + push {r3, lr} + bl FUN_021D7A20 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + pop {r3, pc} + + thumb_func_start FUN_0223987C +FUN_0223987C: ; 0x0223987C + push {r3, r4, r5, r6, lr} + sub sp, #0x2c + ldr r6, _022398A4 ; =0x0224F21C + add r3, r0, #0 + add r2, r1, #0 + add r5, sp, #0 + mov r4, #5 +_0223988A: + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + sub r4, r4, #1 + bne _0223988A + ldr r0, [r6] + str r0, [r5] + add r0, sp, #0 + str r3, [sp, #0x20] + str r2, [sp, #0x24] + bl FUN_021E8648 + add sp, #0x2c + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_022398A4: .word 0x0224F21C + + thumb_func_start FUN_022398A8 +FUN_022398A8: ; 0x022398A8 + ldr r3, _022398B4 ; =FUN_0200CA98 + mov r2, #1 + add r1, r0, #0 + ldr r0, _022398B8 ; =0x022398BD + lsl r2, r2, #0xa + bx r3 + .align 2, 0 +_022398B4: .word FUN_0200CA98 +_022398B8: .word 0x022398BD + + .section .data + ; 0x022398BC + .incbin "baserom.nds", 0x16b81c, 0x18b64 + + .section .bss + ; 0x02252420 + .space 0x20 diff --git a/arm9/undefined_syms.txt b/arm9/undefined_syms.txt index c8a8097a..9b1c29b2 100644 --- a/arm9/undefined_syms.txt +++ b/arm9/undefined_syms.txt @@ -501,6 +501,9 @@ FUN_02213B08 = 0x02213B08; FUN_02213D80 = 0x02213D80; FUN_02213DBC = 0x02213DBC; FUN_02213E24 = 0x02213E24; +FUN_021D7A20 = 0x021D7A20; +FUN_021D7A28 = 0x021D7A28; +FUN_021E8648 = 0x021E8648; // ??? SDK_MAIN_ARENA_LO = 0x0225FFA0; |