summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-05-12 07:55:58 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2020-05-12 07:55:58 -0400
commitc5033593507e86dfd869cf6b99638fd0daff5fd5 (patch)
tree308afde6f4d62d24b4d19ce04ec9fda0b4ad1171
parentea1871defd6104b96e43d66d15a63a0e4fb880b4 (diff)
Disassemble module 44
-rw-r--r--arm9/arm9.lcf28
-rw-r--r--arm9/global.inc1
-rw-r--r--arm9/modules/44/asm/module_44.s580
3 files changed, 605 insertions, 4 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf
index 2191e08a..3c4f3d9b 100644
--- a/arm9/arm9.lcf
+++ b/arm9/arm9.lcf
@@ -1797,10 +1797,21 @@ SECTIONS {
SDK_OVERLAY.MODULE_43.BSS_SIZE = SDK_OVERLAY.MODULE_43.BSS_END - SDK_OVERLAY.MODULE_43.BSS_START;
} >> MODULE_43
- .MODULE.44: {
+ .MODULE.44 :
+ {
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_44.START = .;
- FILE_295400.o (.text) /* 0x291400 */
+ module_44.o (.text)
+ module_44.o (.rodata)
+ module_44.o (.init)
+ // SDK_OVERLAY.MODULE_44.SINIT_START = .;
+ module_44.o (.ctor)
+ module_44.o (.sinit)
+ // WRITEW 0;
+ // SDK_OVERLAY.MODULE_44.SINIT_END = .;
+ . = ALIGN(32);
+ module_44.o (.sdata)
+ module_44.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_44.END = .;
SDK_OVERLAY.MODULE_44.SIZE = SDK_OVERLAY.MODULE_44.END - SDK_OVERLAY.MODULE_44.START;
@@ -1810,7 +1821,8 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_44.BSS_START = .;
- FILE_295400.o (.bss)
+ module_44.o (.sbss)
+ module_44.o (.bss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_44.BSS_END = .;
SDK_OVERLAY.MODULE_44.BSS_SIZE = SDK_OVERLAY.MODULE_44.BSS_END - SDK_OVERLAY.MODULE_44.BSS_START;
@@ -3133,7 +3145,15 @@ SECTIONS {
WRITEW SDK_OVERLAY_MODULE_43_ID;
WRITEW 0;
- OVERLAY_TABLE(MODULE_44, 44)
+ WRITEW SDK_OVERLAY_MODULE_44_ID;
+ WRITEW SDK_OVERLAY.MODULE_44.START;
+ WRITEW SDK_OVERLAY.MODULE_44.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_44.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_44.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_44.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_44_ID;
+ WRITEW 0;
+
OVERLAY_TABLE(MODULE_45, 45)
OVERLAY_TABLE(MODULE_46, 46)
OVERLAY_TABLE(MODULE_47, 47)
diff --git a/arm9/global.inc b/arm9/global.inc
index 78ae941b..38b32183 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -2665,6 +2665,7 @@
.extern FUN_0204C080
.extern FUN_0204C0A4
.extern FUN_020252B8
+.extern FUN_0204BF58
.extern MOD20_02254420
.extern MOD20_02254460
.extern MOD20_02254488
diff --git a/arm9/modules/44/asm/module_44.s b/arm9/modules/44/asm/module_44.s
new file mode 100644
index 00000000..a9743a1e
--- /dev/null
+++ b/arm9/modules/44/asm/module_44.s
@@ -0,0 +1,580 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD44_02254840
+MOD44_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD44_02254854
+ ldr r1, _02254850 ; =MOD44_02254920
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD44_02254854
+_02254850: .word MOD44_02254920
+ thumb_func_end MOD44_02254840
+
+ thumb_func_start MOD44_02254854
+MOD44_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x14
+ 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 MOD44_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD44_022548EC
+ 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 MOD44_022548EC
+ thumb_func_end MOD44_02254854
+
+ thumb_func_start MOD44_0225489C
+MOD44_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_02252C3C
+ str r0, [r5, #0x10]
+ bl FUN_0204BF44
+ str r0, [r5, #4]
+ strb r0, [r5, #3]
+ add r0, r5, #0
+ add r0, #8
+ add r1, r5, #4
+ add r2, r6, #0
+ bl MOD44_02254A54
+ cmp r0, #0
+ beq _022548D2
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ str r4, [r5, #0xc]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_022548D2:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+ thumb_func_end MOD44_0225489C
+
+ thumb_func_start MOD44_022548D8
+MOD44_022548D8: ; 0x022548D8
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ bl MOD44_02254B00
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD44_022548D8
+
+ thumb_func_start MOD44_022548EC
+MOD44_022548EC: ; 0x022548EC
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4]
+ add r5, r0, #0
+ cmp r1, #3
+ bhs _02254918
+ lsl r2, r1, #2
+ ldr r1, _0225491C ; =0x02254C54
+ add r0, r4, #0
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254918
+ add r0, r4, #0
+ bl MOD44_022548D8
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0xc]
+ bl MOD20_022529A0
+_02254918:
+ pop {r3, r4, r5, pc}
+ nop
+_0225491C: .word 0x02254C54
+ thumb_func_end MOD44_022548EC
+
+ thumb_func_start MOD44_02254920
+MOD44_02254920: ; 0x02254920
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD44_02254920
+
+ thumb_func_start MOD44_02254928
+MOD44_02254928: ; 0x02254928
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254930
+ b _02254932
+_02254930:
+ mov r1, #2
+_02254932:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD44_02254928
+
+ thumb_func_start MOD44_0225493C
+MOD44_0225493C: ; 0x0225493C
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _0225494C
+ cmp r0, #1
+ beq _0225495C
+ b _02254976
+_0225494C:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD44_02254B14
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254976
+_0225495C:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD44_02254B38
+ cmp r0, #0
+ beq _02254976
+ ldr r0, [r4, #0xc]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD44_02254928
+_02254976:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD44_0225493C
+
+ thumb_func_start MOD44_0225497C
+MOD44_0225497C: ; 0x0225497C
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r1, [r4, #2]
+ cmp r1, #0
+ beq _02254990
+ mov r1, #2
+ bl MOD44_02254928
+ mov r0, #0
+ pop {r4, pc}
+_02254990:
+ ldrb r1, [r4, #1]
+ cmp r1, #0
+ beq _0225499C
+ cmp r1, #1
+ beq _022549B4
+ b _022549C4
+_0225499C:
+ bl MOD44_022549C8
+ cmp r0, #0
+ beq _022549C4
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD44_02254B14
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549C4
+_022549B4:
+ ldr r0, [r4, #8]
+ mov r1, #2
+ bl MOD44_02254B38
+ cmp r0, #0
+ beq _022549C4
+ mov r0, #0
+ strb r0, [r4, #1]
+_022549C4:
+ mov r0, #0
+ pop {r4, pc}
+ thumb_func_end MOD44_0225497C
+
+ thumb_func_start MOD44_022549C8
+MOD44_022549C8: ; 0x022549C8
+ push {r4, lr}
+ sub sp, #8
+ add r4, r0, #0
+ ldr r0, [r4, #0xc]
+ bl MOD20_02252C08
+ cmp r0, #0
+ bne _02254A18
+ add r0, sp, #4
+ add r1, sp, #0
+ bl FUN_02020AB0
+ cmp r0, #0
+ beq _02254A18
+ ldr r0, [sp]
+ cmp r0, #0x88
+ blo _02254A18
+ cmp r0, #0xa0
+ bhs _02254A18
+ ldr r0, [sp, #4]
+ cmp r0, #0x30
+ blo _02254A18
+ cmp r0, #0xb8
+ bhs _02254A18
+ sub r0, #0x30
+ lsr r1, r0, #4
+ cmp r1, #8
+ blo _02254A02
+ mov r1, #7
+_02254A02:
+ ldrb r0, [r4, #3]
+ cmp r1, r0
+ beq _02254A18
+ str r1, [r4, #4]
+ strb r1, [r4, #3]
+ ldr r0, [r4, #0x10]
+ bl FUN_0204BF58
+ add sp, #8
+ mov r0, #1
+ pop {r4, pc}
+_02254A18:
+ mov r0, #0
+ add sp, #8
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD44_022549C8
+
+ thumb_func_start MOD44_02254A20
+MOD44_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 MOD44_02254B14
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _02254A4E
+_02254A40:
+ ldr r0, [r4, #8]
+ bl MOD44_02254B44
+ cmp r0, #0
+ beq _02254A4E
+ mov r0, #1
+ pop {r4, pc}
+_02254A4E:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD44_02254A20
+
+ thumb_func_start MOD44_02254A54
+MOD44_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 MOD44_02254A90
+ 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 MOD44_02254A54
+
+ thumb_func_start MOD44_02254A90
+MOD44_02254A90: ; 0x02254A90
+ 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, #0x45
+ bl FUN_02006A34
+ mov r0, #8
+ str r0, [sp]
+ add r0, r5, #0
+ add r0, #0x28
+ mov r1, #0xc
+ mov r2, #0x43
+ mov r3, #0x44
+ bl MOD20_02253FBC
+ add r2, r5, #0
+ ldr r0, [r5, #0x20]
+ ldr r1, _02254AE0 ; =0x02254C60
+ add r2, #0x28
+ bl MOD20_02253E74
+ str r0, [r5, #0x24]
+ ldr r1, [r4]
+ mov r2, #0x25
+ lsl r1, r1, #4
+ add r1, #0x38
+ lsl r1, r1, #0xc
+ lsl r2, r2, #0xe
+ bl MOD20_02253F64
+ add sp, #0xc
+ pop {r4, r5, pc}
+ .align 2, 0
+_02254AE0: .word 0x02254C60
+ thumb_func_end MOD44_02254A90
+
+ thumb_func_start MOD44_02254AE4
+MOD44_02254AE4: ; 0x02254AE4
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r1, [r4, #0x24]
+ cmp r1, #0
+ beq _02254AF4
+ ldr r0, [r4, #0x20]
+ bl MOD20_02253F14
+_02254AF4:
+ add r4, #0x28
+ add r0, r4, #0
+ bl MOD20_02254014
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD44_02254AE4
+
+ thumb_func_start MOD44_02254B00
+MOD44_02254B00: ; 0x02254B00
+ push {r4, lr}
+ add r4, r0, #0
+ beq _02254B10
+ bl MOD44_02254AE4
+ add r0, r4, #0
+ bl FUN_02016A18
+_02254B10:
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD44_02254B00
+
+ thumb_func_start MOD44_02254B14
+MOD44_02254B14: ; 0x02254B14
+ 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, _02254B34 ; =0x02254C8C
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254B34: .word 0x02254C8C
+ thumb_func_end MOD44_02254B14
+
+ thumb_func_start MOD44_02254B38
+MOD44_02254B38: ; 0x02254B38
+ ldr r3, _02254B40 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254B40: .word MOD20_02253794
+ thumb_func_end MOD44_02254B38
+
+ thumb_func_start MOD44_02254B44
+MOD44_02254B44: ; 0x02254B44
+ ldr r3, _02254B4C ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254B4C: .word MOD20_022537B8
+ thumb_func_end MOD44_02254B44
+
+ thumb_func_start MOD44_02254B50
+MOD44_02254B50: ; 0x02254B50
+ 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 MOD44_02254B50
+
+ thumb_func_start MOD44_02254B64
+MOD44_02254B64: ; 0x02254B64
+ push {r4, r5, lr}
+ sub sp, #0x14
+ add r4, r1, #0
+ add r0, r4, #0
+ bl MOD20_022538A0
+ add r5, r0, #0
+ add r0, r4, #0
+ bl MOD20_022538A4
+ ldr r0, [r5, #4]
+ ldr r2, _02254BEC ; =0x02254C70
+ 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, #0x42
+ 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, #0x41
+ 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, _02254BF0 ; =0x04001000
+ ldr r0, _02254BF4 ; =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 MOD44_02254B50
+ add sp, #0x14
+ pop {r4, r5, pc}
+ .align 2, 0
+_02254BEC: .word 0x02254C70
+_02254BF0: .word 0x04001000
+_02254BF4: .word 0xFFFFE0FF
+ thumb_func_end MOD44_02254B64
+
+ thumb_func_start MOD44_02254BF8
+MOD44_02254BF8: ; 0x02254BF8
+ 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 MOD44_02254B50
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD44_02254BF8
+
+ thumb_func_start MOD44_02254C14
+MOD44_02254C14: ; 0x02254C14
+ 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
+ mov r0, #0
+ add r1, r0, #0
+ bl MOD20_02252D7C
+ ldr r1, [r4]
+ mov r2, #0x25
+ lsl r1, r1, #4
+ add r1, #0x38
+ ldr r0, [r5, #0x24]
+ lsl r1, r1, #0xc
+ lsl r2, r2, #0xe
+ bl MOD20_02253F64
+ add r0, r6, #0
+ bl MOD44_02254B50
+ pop {r4, r5, r6, pc}
+ .align 2, 0
+_02254C50: .word 0x00000663
+ thumb_func_end MOD44_02254C14
+
+ .section .rodata
+ ; 0x02254C54
+ .incbin "baserom.nds", 0x295814, 0x68
+
+ ; .section .sinit
+ .global SDK_OVERLAY.MODULE_44.SINIT_START
+ .global SDK_OVERLAY.MODULE_44.SINIT_END
+SDK_OVERLAY.MODULE_44.SINIT_START:
+ .word MOD44_02254840
+ .word 0
+SDK_OVERLAY.MODULE_44.SINIT_END: