summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@gmail.com>2020-04-16 08:44:32 -0400
committerPikalaxALT <PikalaxALT@gmail.com>2020-04-16 08:44:32 -0400
commit87730848685bae611ee50e75e89f7013e434681a (patch)
tree3155743d8b1495d679d8ef953bf884fd3e347b2d
parent09d866602ecc76fdc5e9be9e3bd1ae0b8547ff13 (diff)
Disassemble ARM7 ROM
-rw-r--r--asm/arm7_rom.s147
1 files changed, 141 insertions, 6 deletions
diff --git a/asm/arm7_rom.s b/asm/arm7_rom.s
index 9093c546..905dc7e0 100644
--- a/asm/arm7_rom.s
+++ b/asm/arm7_rom.s
@@ -1,10 +1,145 @@
/* arm7_rom.s TODO: Disassemble */
+ .include "asm/macros.inc"
+ .global ARM7AutoLoad
.section .text
- .global Entry_ARM7
-Entry_ARM7: @ 0x02380000
- .incbin "baserom.nds", 0x30D000, 0x158
+ arm_func_start Entry_ARM7
- .global ARM7AutoLoad
-ARM7AutoLoad: @ 0x02380158
- .incbin "baserom.nds", 0x30D158, 0x291C4
+Entry_ARM7:
+ mov ip, #67108864 @ 0x4000000
+ str ip, [ip, #520] @ 0x208
+ ldr r1, _23800cc
+ mov r0, #58720256 @ 0x3800000
+ cmp r0, r1
+ movpl r1, r0
+ ldr r2, _23800d0
+ mov r0, #0
+_02380020:
+ cmp r1, r2
+ stmltia r1!, {r0}
+ blt _02380020
+ mov r0, #19
+ msr CPSR_c, r0
+ ldr sp, _23800d4
+ mov r0, #18
+ msr CPSR_c, r0
+ ldr r0, _23800d8
+ mov sp, r0
+ ldr r1, _23800dc
+ sub r1, r0, r1
+ mov r0, #31
+ msr CPSR_fsxc, r0
+ sub sp, r1, #4
+ ldr r0, _23800e0
+ ldr r1, _23800e4
+ add r2, r1, #352 @ 0x160
+_02380068:
+ ldr r3, [r0], #4
+ str r3, [r1], #4
+ cmp r1, r2
+ bmi _02380068
+ ldr r0, _23800e8
+ add r2, r1, #32
+_02380080:
+ ldr r3, [r0], #4
+ str r3, [r1], #4
+ cmp r1, r2
+ bmi _02380080
+ bl FUN_2380100
+ ldr r0, _23800ec
+ ldr r1, [r0, #12]
+ ldr r2, [r0, #16]
+ mov r0, #0
+_023800a4:
+ cmp r1, r2
+ strcc r0, [r1], #4
+ bcc _023800a4
+ bl FUN_238015C
+ ldr r1, _23800f0
+ ldr r0, _23800f4
+ str r0, [r1]
+ ldr r1, _23800f8
+ ldr lr, _23800fc
+ bx r1
+_23800cc: .word UNK_23801B0
+_23800d0: .word 0x0380ff00
+_23800d4: .word 0x0380ffc0
+_23800d8: .word 0x0380ff80
+_23800dc: .word 0x00000400
+_23800e0: .word 0x023fe940
+_23800e4: .word 0x027ffa80
+_23800e8: .word 0x023fe904
+_23800ec: .word _2380198
+_23800f0: .word 0x0380fffc
+_23800f4: .word 0x037f853c
+_23800f8: .word 0x037f8468
+_23800fc: .word 0xffff0000
+ arm_func_end Entry_ARM7
+
+ arm_func_start FUN_2380100
+FUN_2380100:
+ ldr r0, _2380154
+ ldr r1, [r0]
+ ldr r2, [r0, #4]
+ ldr r3, [r0, #8]
+_02380110:
+ cmp r1, r2
+ beq _02380150
+ ldr r4, [r1], #4
+ ldr r5, [r1], #4
+ add r6, r4, r5
+_02380124:
+ cmp r4, r6
+ ldrmi r7, [r3], #4
+ strmi r7, [r4], #4
+ bmi _02380124
+ ldr r5, [r1], #4
+ add r6, r4, r5
+ mov r7, #0
+_02380140:
+ cmp r4, r6
+ strcc r7, [r4], #4
+ bcc _02380140
+ beq _02380110
+_02380150:
+ b ARM7AutoLoad
+_2380154: .word _2380198
+ARM7AutoLoad:
+ bx lr
+ arm_func_end FUN_2380100
+
+ arm_func_start FUN_238015C
+FUN_238015C:
+ mov r0, #1
+ mov r1, #0
+ ldr r2, _2380194
+ sub r3, r2, #4194304 @ 0x400000
+_0238016c:
+ strh r1, [r2]
+ ldrh ip, [r3]
+ cmp r1, ip
+ movne r0, #2
+ bne _0238018c
+ add r1, r1, #1
+ cmp r1, #2
+ bne _0238016c
+_0238018c:
+ strh r0, [r2]
+ bx lr
+_2380194: .word 0x027ffffa
+_2380198:
+ .word UNK_23A92F8
+ .word UNK_23A92FC
+ .word UNK_23801B0
+ .word UNK_23801B0
+ .word UNK_23801B0
+ .word 0x00000000
+ arm_func_end FUN_238015C
+
+UNK_23801B0:
+ .incbin "baserom.nds", 0x30D1B0, 0x29148
+
+UNK_23A92F8:
+ .incbin "baserom.nds", 0x3362F8, 0x24
+
+UNK_23A92FC: