summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/arm9.lcf19
-rw-r--r--arm9/global.inc12
-rw-r--r--arm9/modules/06/asm/module_06.s298
-rw-r--r--arm9/undefined_syms.txt3
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;