From 5fccd8ebab211f64b7a51f18f192a530b87d3fd3 Mon Sep 17 00:00:00 2001 From: Aetias Date: Mon, 26 Feb 2024 20:56:29 +0100 Subject: [PATCH] Disassemble all code in main ARM9 program --- asm/main.s | 99 ++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 70 insertions(+), 29 deletions(-) diff --git a/asm/main.s b/asm/main.s index fb41dfd7..a32d0dbf 100644 --- a/asm/main.s +++ b/asm/main.s @@ -1207,8 +1207,10 @@ _02000f34: ldmia sp!, {r4, lr} bx lr _02000f44: - .byte 0x00, 0x00, 0xe0, 0xe3, 0x02, 0x11, 0xc0, 0xe3, 0x10, 0x40, 0xbd, 0xe8 - .byte 0x1e, 0xff, 0x2f, 0xe1 + mvn r0, #0 + bic r1, r0, #0x80000000 + ldmia sp!, {r4, lr} + bx lr _02000f54: cmp ip, #0x800 movge lr, #0x80000000 @@ -3176,8 +3178,12 @@ _020029a8: mov r0, #0 bx lr _020029b0: - .byte 0x00, 0x00, 0x50, 0xe3, 0x01, 0x30, 0x53, 0xa2, 0x00, 0x00, 0x80, 0xe0, 0xa0, 0x04, 0xa0, 0xe1 - .byte 0x83, 0x0b, 0x80, 0xe1, 0x1e, 0xff, 0x2f, 0xe1 + cmp r0, #0 + subges r3, r3, #1 + add r0, r0, r0 + mov r0, r0, lsr #9 + orr r0, r0, r3, lsl #23 + bx lr _020029c8: mvn r0, #0x80000000 bx lr @@ -3192,9 +3198,15 @@ _020029e4: mvn r0, #0x80000000 bx lr arm_func_end func_02002774 -_020029ec: - .byte 0xf0, 0x58, 0x2d, 0xe9 - .byte 0x01, 0x40, 0xa0, 0xe1, 0x01, 0x40, 0x84, 0xe3, 0x03, 0x00, 0x00, 0xea + + .global func_020029ec + arm_func_start func_020029ec +func_020029ec: ; 0x020029ec + stmdb sp!, {r4, r5, r6, r7, fp, ip, lr} + mov r4, r1 + orr r4, r4, #1 + b _02002a0c + arm_func_end func_020029ec .global func_020029fc arm_func_start func_020029fc @@ -3203,6 +3215,7 @@ func_020029fc: ; 0x020029fc eor r4, r1, r3 mov r4, r4, asr #0x1 mov r4, r4, lsl #0x1 +_02002a0c: orrs r5, r3, r2 bne _02002a1c ldmia sp!, {r4, r5, r6, r7, fp, ip, lr} @@ -3305,8 +3318,8 @@ _02002b3c: mov r1, r1, lsr r5 b _02002b74 _02002b6c: - .byte 0x31, 0x07, 0xa0, 0xe1 - .byte 0x00, 0x10, 0xa0, 0xe3 + mov r0, r1, lsr r7 + mov r1, #0 _02002b74: cmp r4, #0 blt _02002b84 @@ -11998,9 +12011,10 @@ _02008cf4: str r1, [sb, #4] bl func_0200ee60 b _02008c20 - arm_func_end func_02008bfc _02008d04: - .byte 0x04, 0xd0, 0x8d, 0xe2, 0xf8, 0x87, 0xbd, 0xe8 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end func_02008bfc _02008d0c: .word 0x04000184 _02008d10: .word data_02058e90 @@ -20155,10 +20169,11 @@ _0200e700: _0200e704: mov r0, r0 b _0200e704 - arm_func_end func_0200e6ac _0200e70c: - .byte 0x0f, 0x50, 0xbd, 0xe8 - .byte 0x0c, 0xd0, 0xa0, 0xe1, 0x1e, 0xff, 0x2f, 0xe1 + ldmia sp!, {r0, r1, r2, r3, ip, lr} + mov sp, ip + bx lr + arm_func_end func_0200e6ac _0200e718: .word data_0205acec _0200e71c: .word data_02000000 @@ -40922,9 +40937,10 @@ _0201eef0: ldr ip, [ip, #0x34] blx ip b _0201eef0 - arm_func_end func_0201eedc _0201ef50: - .byte 0x08, 0xd0, 0x8d, 0xe2, 0xf8, 0x80, 0xbd, 0xe8 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end func_0201eedc _0201ef58: .word data_0205dbd0 .global func_0201ef5c @@ -54312,9 +54328,9 @@ _02028ad0: str r7, [sp, #0x20] str r6, [sp, #0x24] b _02028a44 - arm_func_end func_02028a24 _02028b14: - .byte 0xf0, 0x87, 0xbd, 0xe8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end func_02028a24 _02028b18: .word data_02056120 .global func_02028b1c @@ -97266,9 +97282,10 @@ _02045b34: cmp sb, r4, lsl #1 bhs _02045ac8 b _02045a3c - arm_func_end func_020459e4 _02045b40: - .byte 0x10, 0xd0, 0x8d, 0xe2, 0xf8, 0x8f, 0xbd, 0xe8 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end func_020459e4 .global func_02045b48 arm_func_start func_02045b48 @@ -108160,9 +108177,10 @@ _0204ee24: movne r0, #0 strne r0, [r8, #8] b _0204e5a0 - arm_func_end func_0204e58c _0204ee34: - .byte 0xa4, 0xd0, 0x8d, 0xe2, 0xf0, 0x8f, 0xbd, 0xe8 + add sp, sp, #0xa4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end func_0204e58c .global func_0204ee3c arm_func_start func_0204ee3c @@ -108311,13 +108329,36 @@ func_0204f014: ; 0x0204f014 bl func_0204f8bc b _0204f0a0 _0204f030: - .byte 0x1c, 0x10, 0x8b, 0xe2, 0x01, 0x00, 0x84, 0xe2, 0xec, 0xfb, 0xff, 0xeb, 0x20, 0x10, 0x8b, 0xe2 - .byte 0xea, 0xfb, 0xff, 0xeb, 0x24, 0x10, 0x8b, 0xe2, 0xc5, 0xfb, 0xff, 0xeb, 0x28, 0x00, 0x8b, 0xe5 - .byte 0x08, 0x00, 0x9b, 0xe5, 0x1c, 0x10, 0x8b, 0xe2, 0xcc, 0xff, 0xff, 0xeb, 0x00, 0x00, 0x50, 0xe3 - .byte 0x00, 0x00, 0x00, 0x0a, 0xff, 0x02, 0x00, 0xeb, 0x3c, 0x00, 0x9f, 0xe5, 0x1c, 0x10, 0x8b, 0xe2 - .byte 0xc6, 0xff, 0xff, 0xeb, 0x00, 0x00, 0x50, 0xe3, 0x05, 0x00, 0x00, 0x0a, 0x2c, 0x30, 0x9f, 0xe5 - .byte 0x2c, 0x00, 0x9f, 0xe5, 0x2c, 0x20, 0x9f, 0xe5, 0x00, 0x10, 0x8b, 0xe2, 0x00, 0x30, 0x8b, 0xe5 - .byte 0xe2, 0x02, 0x00, 0xeb, 0x04, 0x00, 0x8b, 0xe2, 0xe9, 0x00, 0x00, 0xeb, 0x18, 0xd0, 0x9b, 0xe5 + add r1, fp, #0x1c + add r0, r4, #1 + bl func_0204dff0 + add r1, fp, #0x20 + bl func_0204dff0 + add r1, fp, #0x24 + bl func_0204df64 + str r0, [fp, #0x28] + ldr r0, [fp, #8] + add r1, fp, #0x1c + bl func_0204ef90 + cmp r0, #0 + beq _0204f068 + bl func_0204fc68 +_0204f068: + ldr r0, data_0204f0ac ; =data_020588a8 + add r1, fp, #0x1c + bl func_0204ef90 + cmp r0, #0 + beq _0204f094 + ldr r3, data_0204f0b0 ; =data_0205889c + ldr r0, data_0204f0b4 ; =data_020588c0 + ldr r2, data_0204f0b8 ; =data_0204f0bc + add r1, fp, #0 + str r3, [fp] + bl func_0204fc20 +_0204f094: + add r0, fp, #4 + bl func_0204f444 + ldr sp, [fp, #0x18] _0204f0a0: bl func_0204f8a4 add sp, fp, #0x2c