summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-05-12 08:11:47 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2020-05-12 08:11:47 -0400
commit7e7d8a7a0f0fc5995fa15318dac017f4b99a665d (patch)
tree9bd2eb70d648b12edb52271191e4f6a1ec416ddd
parent70463283f4a5e9269074bd78831db18845284f72 (diff)
Disassemble module 46
-rw-r--r--arm9/arm9.lcf28
-rw-r--r--arm9/modules/46/asm/module_46.s399
2 files changed, 423 insertions, 4 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf
index c8182a9d..c20e6105 100644
--- a/arm9/arm9.lcf
+++ b/arm9/arm9.lcf
@@ -1859,10 +1859,21 @@ SECTIONS {
SDK_OVERLAY.MODULE_45.BSS_SIZE = SDK_OVERLAY.MODULE_45.BSS_END - SDK_OVERLAY.MODULE_45.BSS_START;
} >> MODULE_45
- .MODULE.46: {
+ .MODULE.46 :
+ {
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_46.START = .;
- FILE_296400.o (.text) /* 0x292400 */
+ module_46.o (.text)
+ module_46.o (.rodata)
+ module_46.o (.init)
+ SDK_OVERLAY.MODULE_46.SINIT_START = .;
+ module_46.o (.ctor)
+ module_46.o (.sinit)
+ WRITEW 0;
+ SDK_OVERLAY.MODULE_46.SINIT_END = .;
+ . = ALIGN(32);
+ module_46.o (.sdata)
+ module_46.o (.data)
. = ALIGN(32);
SDK_OVERLAY.MODULE_46.END = .;
SDK_OVERLAY.MODULE_46.SIZE = SDK_OVERLAY.MODULE_46.END - SDK_OVERLAY.MODULE_46.START;
@@ -1872,7 +1883,8 @@ SECTIONS {
{
ALIGNALL(4); . = ALIGN(32);
SDK_OVERLAY.MODULE_46.BSS_START = .;
- FILE_296400.o (.bss)
+ module_46.o (.sbss)
+ module_46.o (.bss)
. = ALIGN(32);
SDK_OVERLAY.MODULE_46.BSS_END = .;
SDK_OVERLAY.MODULE_46.BSS_SIZE = SDK_OVERLAY.MODULE_46.BSS_END - SDK_OVERLAY.MODULE_46.BSS_START;
@@ -3175,7 +3187,15 @@ SECTIONS {
WRITEW SDK_OVERLAY_MODULE_45_ID;
WRITEW 0;
- OVERLAY_TABLE(MODULE_46, 46)
+ WRITEW SDK_OVERLAY_MODULE_46_ID;
+ WRITEW SDK_OVERLAY.MODULE_46.START;
+ WRITEW SDK_OVERLAY.MODULE_46.SIZE;
+ WRITEW SDK_OVERLAY.MODULE_46.BSS_SIZE;
+ WRITEW SDK_OVERLAY.MODULE_46.SINIT_START;
+ WRITEW SDK_OVERLAY.MODULE_46.SINIT_END;
+ WRITEW SDK_OVERLAY_MODULE_46_ID;
+ WRITEW 0;
+
OVERLAY_TABLE(MODULE_47, 47)
OVERLAY_TABLE(MODULE_48, 48)
OVERLAY_TABLE(MODULE_49, 49)
diff --git a/arm9/modules/46/asm/module_46.s b/arm9/modules/46/asm/module_46.s
new file mode 100644
index 00000000..600e0c5b
--- /dev/null
+++ b/arm9/modules/46/asm/module_46.s
@@ -0,0 +1,399 @@
+ .include "asm/macros.inc"
+ .include "global.inc"
+ .section .text
+ .balign 4, 0
+
+ thumb_func_start MOD46_02254840
+MOD46_02254840: ; 0x02254840
+ ldr r3, _02254848 ; =MOD20_02252978
+ ldr r0, _0225484C ; =MOD46_02254854
+ ldr r1, _02254850 ; =MOD46_02254908
+ bx r3
+ .align 2, 0
+_02254848: .word MOD20_02252978
+_0225484C: .word MOD46_02254854
+_02254850: .word MOD46_02254908
+ thumb_func_end MOD46_02254840
+
+ thumb_func_start MOD46_02254854
+MOD46_02254854: ; 0x02254854
+ push {r3, r4, r5, r6, r7, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x10
+ 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 MOD46_0225489C
+ cmp r0, #0
+ beq _0225488C
+ ldr r0, _02254898 ; =MOD46_022548D4
+ 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 MOD46_022548D4
+ thumb_func_end MOD46_02254854
+
+ thumb_func_start MOD46_0225489C
+MOD46_0225489C: ; 0x0225489C
+ push {r3, r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ add r0, #8
+ add r1, r5, #4
+ bl MOD46_022549AC
+ cmp r0, #0
+ beq _022548BC
+ mov r0, #0
+ strb r0, [r5]
+ strb r0, [r5, #1]
+ strb r0, [r5, #2]
+ str r4, [r5, #0xc]
+ mov r0, #1
+ pop {r3, r4, r5, pc}
+_022548BC:
+ mov r0, #0
+ pop {r3, r4, r5, pc}
+ thumb_func_end MOD46_0225489C
+
+ thumb_func_start MOD46_022548C0
+MOD46_022548C0: ; 0x022548C0
+ push {r4, lr}
+ add r4, r0, #0
+ ldr r0, [r4, #8]
+ bl MOD46_022549DC
+ add r0, r4, #0
+ bl FUN_02016A18
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD46_022548C0
+
+ thumb_func_start MOD46_022548D4
+MOD46_022548D4: ; 0x022548D4
+ push {r3, r4, r5, lr}
+ add r4, r1, #0
+ ldrb r1, [r4]
+ add r5, r0, #0
+ cmp r1, #3
+ bhs _02254900
+ lsl r2, r1, #2
+ ldr r1, _02254904 ; =0x02254AF4
+ add r0, r4, #0
+ ldr r1, [r1, r2]
+ blx r1
+ cmp r0, #0
+ beq _02254900
+ add r0, r4, #0
+ bl MOD46_022548C0
+ add r0, r5, #0
+ bl FUN_0200CAB4
+ ldr r0, [r4, #0xc]
+ bl MOD20_022529A0
+_02254900:
+ pop {r3, r4, r5, pc}
+ nop
+_02254904: .word 0x02254AF4
+ thumb_func_end MOD46_022548D4
+
+ thumb_func_start MOD46_02254908
+MOD46_02254908: ; 0x02254908
+ mov r1, #1
+ strb r1, [r0, #2]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD46_02254908
+
+ thumb_func_start MOD46_02254910
+MOD46_02254910: ; 0x02254910
+ ldrb r2, [r0, #2]
+ cmp r2, #0
+ bne _02254918
+ b _0225491A
+_02254918:
+ mov r1, #2
+_0225491A:
+ strb r1, [r0]
+ mov r1, #0
+ strb r1, [r0, #1]
+ bx lr
+ .align 2, 0
+ thumb_func_end MOD46_02254910
+
+ thumb_func_start MOD46_02254924
+MOD46_02254924: ; 0x02254924
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254934
+ cmp r0, #1
+ beq _02254944
+ b _0225495E
+_02254934:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD46_022549E8
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _0225495E
+_02254944:
+ ldr r0, [r4, #8]
+ mov r1, #0
+ bl MOD46_02254A0C
+ cmp r0, #0
+ beq _0225495E
+ ldr r0, [r4, #0xc]
+ bl MOD20_0225298C
+ add r0, r4, #0
+ mov r1, #1
+ bl MOD46_02254910
+_0225495E:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD46_02254924
+
+ thumb_func_start MOD46_02254964
+MOD46_02254964: ; 0x02254964
+ push {r3, lr}
+ ldrb r1, [r0, #2]
+ cmp r1, #0
+ beq _02254972
+ mov r1, #2
+ bl MOD46_02254910
+_02254972:
+ mov r0, #0
+ pop {r3, pc}
+ .align 2, 0
+ thumb_func_end MOD46_02254964
+
+ thumb_func_start MOD46_02254978
+MOD46_02254978: ; 0x02254978
+ push {r4, lr}
+ add r4, r0, #0
+ ldrb r0, [r4, #1]
+ cmp r0, #0
+ beq _02254988
+ cmp r0, #1
+ beq _02254998
+ b _022549A6
+_02254988:
+ ldr r0, [r4, #8]
+ mov r1, #1
+ bl MOD46_022549E8
+ ldrb r0, [r4, #1]
+ add r0, r0, #1
+ strb r0, [r4, #1]
+ b _022549A6
+_02254998:
+ ldr r0, [r4, #8]
+ bl MOD46_02254A18
+ cmp r0, #0
+ beq _022549A6
+ mov r0, #1
+ pop {r4, pc}
+_022549A6:
+ mov r0, #0
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD46_02254978
+
+ thumb_func_start MOD46_022549AC
+MOD46_022549AC: ; 0x022549AC
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ add r6, r1, #0
+ mov r0, #8
+ mov r1, #0x30
+ bl FUN_02016998
+ add r4, r0, #0
+ beq _022549D8
+ add r0, #8
+ mov r1, #8
+ bl MOD20_022536F4
+ str r6, [r4]
+ bl MOD20_02252D34
+ str r0, [r4, #4]
+ cmp r0, #0
+ beq _022549D8
+ str r4, [r5]
+ mov r0, #1
+ pop {r4, r5, r6, pc}
+_022549D8:
+ mov r0, #0
+ pop {r4, r5, r6, pc}
+ thumb_func_end MOD46_022549AC
+
+ thumb_func_start MOD46_022549DC
+MOD46_022549DC: ; 0x022549DC
+ push {r3, lr}
+ cmp r0, #0
+ beq _022549E6
+ bl FUN_02016A18
+_022549E6:
+ pop {r3, pc}
+ thumb_func_end MOD46_022549DC
+
+ thumb_func_start MOD46_022549E8
+MOD46_022549E8: ; 0x022549E8
+ 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, _02254A08 ; =0x02254B1C
+ ldr r3, [r2]
+ bl MOD20_022537E0
+ add sp, #0xc
+ pop {pc}
+ nop
+_02254A08: .word 0x02254B1C
+ thumb_func_end MOD46_022549E8
+
+ thumb_func_start MOD46_02254A0C
+MOD46_02254A0C: ; 0x02254A0C
+ ldr r3, _02254A14 ; =MOD20_02253794
+ add r0, #8
+ bx r3
+ nop
+_02254A14: .word MOD20_02253794
+ thumb_func_end MOD46_02254A0C
+
+ thumb_func_start MOD46_02254A18
+MOD46_02254A18: ; 0x02254A18
+ ldr r3, _02254A20 ; =MOD20_022537B8
+ add r0, #8
+ bx r3
+ nop
+_02254A20: .word MOD20_022537B8
+ thumb_func_end MOD46_02254A18
+
+ thumb_func_start MOD46_02254A24
+MOD46_02254A24: ; 0x02254A24
+ 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 MOD46_02254A24
+
+ thumb_func_start MOD46_02254A38
+MOD46_02254A38: ; 0x02254A38
+ 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, _02254ACC ; =0x02254B00
+ mov r1, #6
+ mov r3, #0
+ bl FUN_02016C18
+ mov r0, #0
+ str r0, [sp]
+ str r0, [sp, #4]
+ str r0, [sp, #8]
+ mov r1, #8
+ str r1, [sp, #0xc]
+ ldr r2, [r5, #4]
+ mov r0, #0xc
+ mov r3, #6
+ bl FUN_0200687C
+ mov r2, #0
+ str r2, [sp]
+ mov r0, #0x20
+ str r0, [sp, #4]
+ mov r0, #0x18
+ str r0, [sp, #8]
+ str r2, [sp, #0xc]
+ ldr r0, [r5, #4]
+ mov r1, #6
+ add r3, r2, #0
+ bl FUN_02018540
+ mov r0, #0x20
+ str r0, [sp]
+ mov r0, #8
+ str r0, [sp, #4]
+ mov r0, #0xc
+ mov r1, #9
+ mov r2, #4
+ mov r3, #0
+ bl FUN_02006930
+ ldr r0, [r5, #4]
+ mov r1, #0x1a
+ mov r2, #6
+ bl MOD20_02253AA4
+ ldr r0, [r5, #4]
+ mov r1, #6
+ bl FUN_02017CD0
+ ldr r1, _02254AD0 ; =0x04001000
+ ldr r0, _02254AD4 ; =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 MOD46_02254A24
+ add sp, #0x14
+ pop {r4, r5, pc}
+ nop
+_02254ACC: .word 0x02254B00
+_02254AD0: .word 0x04001000
+_02254AD4: .word 0xFFFFE0FF
+ thumb_func_end MOD46_02254A38
+
+ thumb_func_start MOD46_02254AD8
+MOD46_02254AD8: ; 0x02254AD8
+ 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 MOD46_02254A24
+ pop {r4, pc}
+ .align 2, 0
+ thumb_func_end MOD46_02254AD8
+
+ .section .rodata
+ ; 0x02254AF4
+ .incbin "baserom.nds", 0x2966b4, 0x4c
+
+ .section .sinit
+ .word MOD46_02254840