diff options
-rw-r--r-- | arm9/arm9.lcf | 16 | ||||
-rw-r--r-- | arm9/global.inc | 5 | ||||
-rw-r--r-- | arm9/modules/27/asm/module_27.s | 1453 |
3 files changed, 1472 insertions, 2 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 85dca32f..46e0fcaa 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -37,7 +37,7 @@ MEMORY { MODULE_24 (RWX) : ORIGIN=0x02254840, LENGTH=0 MODULE_25 (RWX) : ORIGIN=0x02254840, LENGTH=0 MODULE_26 (RWX) : ORIGIN=0x02254840, LENGTH=0 - MODULE_27 (RWX) : ORIGIN=0, LENGTH=0 + MODULE_27 (RWX) : ORIGIN=0x02254840, LENGTH=0 MODULE_28 (RWX) : ORIGIN=0, LENGTH=0 MODULE_29 (RWX) : ORIGIN=0, LENGTH=0 MODULE_30 (RWX) : ORIGIN=0, LENGTH=0 @@ -707,7 +707,19 @@ SECTIONS { module_26.o (.bss) } >> MODULE_26 - OVERLAY_FILE(27, 0x285E00, FILE_289E00.o) + .MODULE.27 : AT (0x285E00) + { + module_27.o (.text) + module_27.o (.sdata) + module_27.o (.data) + } > MODULE_27 + + .MODULE.27.bss : + { + module_27.o (.sbss) + module_27.o (.bss) + } >> MODULE_27 + OVERLAY_FILE(28, 0x286A00, FILE_28AA00.o) OVERLAY_FILE(29, 0x288200, FILE_28C200.o) OVERLAY_FILE(30, 0x288C00, FILE_28CC00.o) diff --git a/arm9/global.inc b/arm9/global.inc index 2d63c86e..ebd6644b 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -5445,6 +5445,11 @@ .extern FUN_0204C0E8
.extern MOD20_022529B4
.extern MOD20_02252C3C
+.extern MOD20_0225396C
+.extern MOD20_022539C4
+.extern MOD20_02253F64
+.extern MOD20_02253F9C
+.extern MOD20_02253FA4
.extern FUN_02020A98
.extern FUN_02020ACC
.extern FUN_0204BF14
diff --git a/arm9/modules/27/asm/module_27.s b/arm9/modules/27/asm/module_27.s new file mode 100644 index 00000000..b9a2d1ca --- /dev/null +++ b/arm9/modules/27/asm/module_27.s @@ -0,0 +1,1453 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD27_02254840 +MOD27_02254840: ; 0x02254840 + ldr r3, _02254848 ; =MOD20_02252978 + ldr r0, _0225484C ; =MOD27_02254854 + ldr r1, _02254850 ; =MOD27_0225492C + bx r3 + .align 2, 0 +_02254848: .word MOD20_02252978 +_0225484C: .word MOD27_02254854 +_02254850: .word MOD27_0225492C + thumb_func_end MOD27_02254840 + + thumb_func_start MOD27_02254854 +MOD27_02254854: ; 0x02254854 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #8 + mov r1, #0x7c + 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 MOD27_0225489C + cmp r0, #0 + beq _0225488C + ldr r0, _02254898 ; =MOD27_022548F8 + 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 MOD27_022548F8 + thumb_func_end MOD27_02254854 + + thumb_func_start MOD27_0225489C +MOD27_0225489C: ; 0x0225489C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + add r0, #0x74 + add r1, r5, #4 + bl MOD27_02254AF0 + cmp r0, #0 + beq _022548E0 + mov r0, #0 + strb r0, [r5] + strb r0, [r5, #1] + strb r0, [r5, #2] + add r0, r4, #0 + bl MOD20_02252C40 + bl FUN_0206BB1C + add r1, r0, #0 + add r0, r5, #4 + bl MOD27_02254A48 + add r0, r5, #0 + mov r1, #0 + add r0, #0x68 + strh r1, [r0] + add r0, r5, #0 + add r0, #0x6a + strh r1, [r0] + str r1, [r5, #0x6c] + str r1, [r5, #0x70] + str r4, [r5, #0x78] + mov r0, #1 + pop {r3, r4, r5, pc} +_022548E0: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD27_0225489C + + thumb_func_start MOD27_022548E4 +MOD27_022548E4: ; 0x022548E4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x74] + bl MOD27_02254B88 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD27_022548E4 + + thumb_func_start MOD27_022548F8 +MOD27_022548F8: ; 0x022548F8 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldrb r1, [r4] + add r5, r0, #0 + cmp r1, #3 + bhs _02254924 + lsl r2, r1, #2 + ldr r1, _02254928 ; =0x0225533C + add r0, r4, #0 + ldr r1, [r1, r2] + blx r1 + cmp r0, #0 + beq _02254924 + add r0, r4, #0 + bl MOD27_022548E4 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, [r4, #0x78] + bl MOD20_022529A0 +_02254924: + pop {r3, r4, r5, pc} + nop +_02254928: .word 0x0225533C + thumb_func_end MOD27_022548F8 + + thumb_func_start MOD27_0225492C +MOD27_0225492C: ; 0x0225492C + mov r1, #1 + strb r1, [r0, #2] + bx lr + .align 2, 0 + thumb_func_end MOD27_0225492C + + thumb_func_start MOD27_02254934 +MOD27_02254934: ; 0x02254934 + ldrb r2, [r0, #2] + cmp r2, #0 + bne _0225493C + b _0225493E +_0225493C: + mov r1, #2 +_0225493E: + strb r1, [r0] + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 + thumb_func_end MOD27_02254934 + + thumb_func_start MOD27_02254948 +MOD27_02254948: ; 0x02254948 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254958 + cmp r0, #1 + beq _02254968 + b _02254982 +_02254958: + ldr r0, [r4, #0x74] + mov r1, #0 + bl MOD27_02254BB8 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254982 +_02254968: + ldr r0, [r4, #0x74] + mov r1, #0 + bl MOD27_02254BDC + cmp r0, #0 + beq _02254982 + ldr r0, [r4, #0x78] + bl MOD20_0225298C + add r0, r4, #0 + mov r1, #1 + bl MOD27_02254934 +_02254982: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD27_02254948 + + thumb_func_start MOD27_02254988 +MOD27_02254988: ; 0x02254988 + push {r4, lr} + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #0 + beq _0225499C + mov r1, #2 + bl MOD27_02254934 + mov r0, #0 + pop {r4, pc} +_0225499C: + ldr r0, [r4, #0x74] + mov r1, #2 + bl MOD27_02254BDC + cmp r0, #0 + beq _02254A06 + add r0, r4, #0 + add r1, r4, #0 + add r0, #0x6c + add r1, #0x70 + bl MOD20_02252B68 + add r1, r4, #0 + add r1, #0x68 + strh r0, [r1] + add r0, r4, #0 + add r0, #0x68 + ldrh r0, [r0] + cmp r0, #0 + beq _02254A06 + bl FUN_02020AA4 + add r1, r4, #0 + add r1, #0x6a + strh r0, [r1] + add r0, r4, #0 + add r0, #0x6a + ldrh r0, [r0] + cmp r0, #0 + beq _02254A02 + ldr r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + ldr r2, [r4, #4] + bl MOD27_022551F4 + ldr r1, [r4, #4] + cmp r0, r1 + blo _02254A02 + ldr r0, [r4, #0x78] + bl MOD20_02252C40 + bl FUN_0206BB1C + add r1, r0, #0 + add r0, r4, #4 + bl MOD27_02254A48 + ldr r0, [r4, #0x74] + mov r1, #2 + bl MOD27_02254BB8 +_02254A02: + mov r0, #0 + pop {r4, pc} +_02254A06: + mov r0, #0 + str r0, [r4, #0x6c] + str r0, [r4, #0x70] + add r4, #0x6a + strh r0, [r4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD27_02254988 + + thumb_func_start MOD27_02254A14 +MOD27_02254A14: ; 0x02254A14 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02254A24 + cmp r0, #1 + beq _02254A34 + b _02254A42 +_02254A24: + ldr r0, [r4, #0x74] + mov r1, #1 + bl MOD27_02254BB8 + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + b _02254A42 +_02254A34: + ldr r0, [r4, #0x74] + bl MOD27_02254BE8 + cmp r0, #0 + beq _02254A42 + mov r0, #1 + pop {r4, pc} +_02254A42: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD27_02254A14 + + thumb_func_start MOD27_02254A48 +MOD27_02254A48: ; 0x02254A48 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + add r0, r1, #0 + str r1, [sp, #4] + bl FUN_0206B9AC + ldr r1, [sp] + mov r6, #0 + str r0, [r1] + cmp r0, #0 + ble _02254AEC + add r5, r1, #0 +_02254A62: + ldr r0, [sp, #4] + add r1, r6, #0 + bl FUN_0206B9B0 + add r4, r0, #0 + bl FUN_020669D4 + add r7, r0, #0 + add r0, r4, #0 + bl FUN_0206B688 + str r0, [r5, #4] + add r0, r4, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + strh r0, [r5, #8] + add r0, r4, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + strh r0, [r5, #0xa] + add r0, r4, #0 + mov r1, #0xa3 + mov r2, #0 + bl FUN_020671BC + strh r0, [r5, #0xc] + add r0, r4, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + strh r0, [r5, #0xe] + add r0, r4, #0 + mov r1, #0x9f + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + beq _02254ABC + mov r0, #1 + b _02254ABE +_02254ABC: + mov r0, #0 +_02254ABE: + strh r0, [r5, #0x10] + add r0, r4, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020671BC + strb r0, [r5, #0x12] + add r0, r4, #0 + mov r1, #0x70 + mov r2, #0 + bl FUN_020671BC + strb r0, [r5, #0x13] + add r0, r4, #0 + add r1, r7, #0 + bl FUN_02066A20 + ldr r0, [sp] + add r6, r6, #1 + ldr r0, [r0] + add r5, #0x10 + cmp r6, r0 + blt _02254A62 +_02254AEC: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD27_02254A48 + + thumb_func_start MOD27_02254AF0 +MOD27_02254AF0: ; 0x02254AF0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r1, #0 + mov r1, #0xe3 + str r0, [sp, #4] + mov r0, #8 + lsl r1, r1, #2 + bl FUN_02016998 + str r0, [sp, #8] + cmp r0, #0 + beq _02254B82 + add r0, #0xc + mov r1, #8 + bl MOD20_022536F4 + ldr r0, [sp, #8] + str r4, [r0] + bl MOD20_02252D34 + ldr r1, [sp, #8] + str r0, [r1, #4] + bl MOD20_02252D24 + ldr r1, [sp, #8] + mov r6, #0 + str r0, [r1, #8] + add r0, r1, #0 + str r6, [r0, #0x38] + add r0, #0xf4 + add r4, r1, #0 + str r6, [r0] + add r4, #0x3c + add r5, r1, #0 + add r7, r6, #0 +_02254B36: + add r0, r4, #0 + bl FUN_0201901C + add r0, r5, #0 + add r0, #0x9c + str r7, [r0] + add r0, r5, #0 + add r0, #0xb4 + add r6, r6, #1 + str r7, [r0] + add r4, #0x10 + add r5, r5, #4 + cmp r6, #6 + blt _02254B36 + mov r0, #8 + str r0, [sp] + ldr r0, [sp, #8] + mov r1, #0xc + add r0, #0xcc + mov r2, #5 + mov r3, #6 + bl MOD20_02253FBC + mov r0, #8 + str r0, [sp] + ldr r0, [sp, #8] + mov r1, #0xc + add r0, #0xe0 + mov r2, #0x6b + mov r3, #0x6c + bl MOD20_02253FBC + ldr r1, [sp, #8] + ldr r0, [sp, #4] + add sp, #0xc + str r1, [r0] + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02254B82: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD27_02254AF0 + + thumb_func_start MOD27_02254B88 +MOD27_02254B88: ; 0x02254B88 + push {r4, lr} + add r4, r0, #0 + beq _02254BB6 + bl MOD27_02255250 + add r0, r4, #0 + add r0, #0xcc + bl MOD20_02254014 + add r0, r4, #0 + add r0, #0xe0 + bl MOD20_02254014 + add r0, r4, #0 + add r0, #0xf4 + ldr r0, [r0] + cmp r0, #0 + beq _02254BB0 + bl FUN_0200CAB4 +_02254BB0: + add r0, r4, #0 + bl FUN_02016A18 +_02254BB6: + pop {r4, pc} + thumb_func_end MOD27_02254B88 + + thumb_func_start MOD27_02254BB8 +MOD27_02254BB8: ; 0x02254BB8 + push {lr} + sub sp, #0xc + add r2, r0, #0 + add r0, #0xc + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + ldr r0, _02254BD8 ; =0x02255394 + ldr r3, [r2] + bl MOD20_022537E0 + add sp, #0xc + pop {pc} + nop +_02254BD8: .word 0x02255394 + thumb_func_end MOD27_02254BB8 + + thumb_func_start MOD27_02254BDC +MOD27_02254BDC: ; 0x02254BDC + ldr r3, _02254BE4 ; =MOD20_02253794 + add r0, #0xc + bx r3 + nop +_02254BE4: .word MOD20_02253794 + thumb_func_end MOD27_02254BDC + + thumb_func_start MOD27_02254BE8 +MOD27_02254BE8: ; 0x02254BE8 + ldr r3, _02254BF0 ; =MOD20_022537B8 + add r0, #0xc + bx r3 + nop +_02254BF0: .word MOD20_022537B8 + thumb_func_end MOD27_02254BE8 + + thumb_func_start MOD27_02254BF4 +MOD27_02254BF4: ; 0x02254BF4 + push {r4, lr} + add r4, r0, #0 + bl MOD20_022538A0 + add r0, #0xc + add r1, r4, #0 + bl MOD20_02253888 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD27_02254BF4 + + thumb_func_start MOD27_02254C08 +MOD27_02254C08: ; 0x02254C08 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r6, r1, #0 + add r0, r6, #0 + bl MOD20_022538A0 + add r4, r0, #0 + ldr r0, [r4, #4] + ldr r2, _02254CBC ; =0x02255378 + 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, [r4, #4] + mov r0, #0xc + mov r1, #0x6a + mov r3, #6 + bl FUN_0200687C + mov r3, #0 + lsr r5, r0, #5 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + str r3, [sp, #0xc] + ldr r0, [r4, #4] + mov r1, #6 + mov r2, #5 + bl FUN_02018540 + mov r0, #0 + add r1, r0, #0 + bl MOD20_02252D7C + str r5, [r4, #0x34] + ldr r1, [r4] + add r0, r4, #0 + add r2, r5, #0 + bl MOD27_02254CC8 + ldr r0, [r4, #4] + mov r1, #6 + bl FUN_02017CD0 + mov r0, #0xf + mov r1, #1 + bl MOD20_0225396C + mov r0, #2 + bl MOD20_022539C4 + ldr r1, [r4] + add r0, r4, #0 + bl MOD27_02254F18 + ldr r1, [r4] + add r0, r4, #0 + bl MOD27_02254FAC + add r0, r4, #0 + bl MOD27_022550C8 + ldr r1, _02254CC0 ; =0x04001000 + ldr r0, _02254CC4 ; =0xFFFFE0FF + ldr r3, [r1] + ldr r2, [r1] + str r3, [sp, #0x10] + and r0, r2 + lsl r2, r3, #0x13 + lsr r3, r2, #0x1b + mov r2, #0x14 + orr r2, r3 + lsl r2, r2, #8 + orr r0, r2 + str r0, [r1] + add r0, r6, #0 + bl MOD27_02254BF4 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + nop +_02254CBC: .word 0x02255378 +_02254CC0: .word 0x04001000 +_02254CC4: .word 0xFFFFE0FF + thumb_func_end MOD27_02254C08 + + thumb_func_start MOD27_02254CC8 +MOD27_02254CC8: ; 0x02254CC8 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r0, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x20] + add r0, r1, #0 + str r1, [sp, #0x18] + ldr r1, [r0] + str r2, [sp, #0x1c] + cmp r1, #0 + ble _02254D54 + ldr r4, [sp, #0x14] + ldr r7, [sp, #0x20] + ldr r5, _02254D5C ; =0x02255360 + ldr r6, [sp, #0x18] + add r4, #0x3c +_02254CE8: + add r0, r4, #0 + bl FUN_0201901C + ldrh r0, [r5, #2] + add r1, r4, #0 + mov r2, #6 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x1c] + add r0, r0, r7 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + ldrh r3, [r5] + ldr r0, [sp, #0x14] + lsl r3, r3, #0x18 + ldr r0, [r0, #4] + lsr r3, r3, #0x18 + bl FUN_02019064 + add r0, r4, #0 + bl FUN_02019270 + ldr r1, [sp, #0x14] + add r0, r4, #0 + bl MOD27_02254D60 + ldrh r0, [r6, #0xa] + ldrh r1, [r6, #0xc] + bl MOD27_02254EEC + add r1, r0, #0 + add r0, r4, #0 + bl MOD27_02254EAC + ldr r0, [sp, #0x20] + add r4, #0x10 + add r0, r0, #1 + str r0, [sp, #0x20] + ldr r0, [sp, #0x18] + add r7, #8 + ldr r1, [r0] + ldr r0, [sp, #0x20] + add r5, r5, #4 + add r6, #0x10 + cmp r0, r1 + blt _02254CE8 +_02254D54: + ldr r0, [sp, #0x14] + str r1, [r0, #0x38] + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02254D5C: .word 0x02255360 + thumb_func_end MOD27_02254CC8 + + thumb_func_start MOD27_02254D60 +MOD27_02254D60: ; 0x02254D60 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + ldrb r0, [r5, #6] + add r4, r1, #0 + mov r2, #1 + sub r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + str r2, [sp, #4] + str r2, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldrb r3, [r5, #5] + ldr r0, [r4, #4] + mov r1, #6 + sub r3, r3, #1 + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldrb r0, [r5, #6] + mov r1, #6 + mov r2, #2 + sub r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldrb r0, [r5, #7] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldrb r3, [r5, #5] + ldr r0, [r4, #4] + bl FUN_02018540 + ldrb r0, [r5, #6] + ldr r2, _02254E98 ; =0x00000401 + mov r1, #6 + sub r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldrb r6, [r5, #5] + ldrb r3, [r5, #7] + ldr r0, [r4, #4] + add r3, r6, r3 + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldrb r0, [r5, #6] + mov r1, #6 + add r2, r1, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldrb r0, [r5, #8] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldrb r3, [r5, #5] + ldr r0, [r4, #4] + sub r3, r3, #1 + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldrb r0, [r5, #6] + ldr r2, _02254E9C ; =0x00000406 + mov r1, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldrb r0, [r5, #8] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldrb r6, [r5, #5] + ldrb r3, [r5, #7] + ldr r0, [r4, #4] + add r3, r6, r3 + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldrb r1, [r5, #6] + ldrb r0, [r5, #8] + ldr r2, _02254EA0 ; =0x00000801 + add r0, r1, r0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldrb r3, [r5, #5] + ldr r0, [r4, #4] + mov r1, #6 + sub r3, r3, #1 + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldrb r1, [r5, #6] + ldrb r0, [r5, #8] + ldr r2, _02254EA4 ; =0x00000802 + add r0, r1, r0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldrb r0, [r5, #7] + mov r1, #6 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldrb r3, [r5, #5] + ldr r0, [r4, #4] + bl FUN_02018540 + ldrb r1, [r5, #6] + ldrb r0, [r5, #8] + ldr r2, _02254EA8 ; =0x00000C01 + add r0, r1, r0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [r4, #4] + ldrb r4, [r5, #5] + ldrb r3, [r5, #7] + mov r1, #6 + add r3, r4, r3 + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02018540 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_02254E98: .word 0x00000401 +_02254E9C: .word 0x00000406 +_02254EA0: .word 0x00000801 +_02254EA4: .word 0x00000802 +_02254EA8: .word 0x00000C01 + thumb_func_end MOD27_02254D60 + + thumb_func_start MOD27_02254EAC +MOD27_02254EAC: ; 0x02254EAC + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + mov r1, #0x40 + str r1, [sp] + mov r1, #8 + mov r2, #0 + str r1, [sp, #4] + mov r1, #4 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_020196F4 + cmp r4, #0 + beq _02254EE0 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + str r0, [sp] + mov r0, #8 + mov r2, #0 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #0xf + add r3, r2, #0 + bl FUN_020196F4 +_02254EE0: + add r0, r5, #0 + bl FUN_02019548 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD27_02254EAC + + thumb_func_start MOD27_02254EEC +MOD27_02254EEC: ; 0x02254EEC + push {r3, lr} + cmp r0, #0 + bne _02254EF6 + mov r0, #0 + pop {r3, pc} +_02254EF6: + cmp r0, r1 + bne _02254EFE + mov r0, #0x40 + pop {r3, pc} +_02254EFE: + lsl r0, r0, #0xc + bl _u32_div_f + lsl r0, r0, #5 + lsr r0, r0, #0xc + bne _02254F0E + mov r0, #1 + b _02254F14 +_02254F0E: + cmp r0, #0x20 + bne _02254F14 + mov r0, #0x1f +_02254F14: + lsl r0, r0, #1 + pop {r3, pc} + thumb_func_end MOD27_02254EEC + + thumb_func_start MOD27_02254F18 +MOD27_02254F18: ; 0x02254F18 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + mov r3, #0 + str r3, [sp] + mov r2, #1 + str r0, [sp, #0xc] + str r1, [sp, #0x10] + str r2, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xc + mov r1, #0x6d + bl FUN_02006A34 + mov r4, #0 + add r0, sp, #0x18 + strb r4, [r0, #0xa] + mov r1, #2 + strb r1, [r0, #0xb] + strb r4, [r0, #0xc] + strb r4, [r0, #0xd] + ldr r0, [sp, #0x10] + ldr r0, [r0] + cmp r0, #0 + ble _02254FA2 + ldr r7, [sp, #0xc] + ldr r6, [sp, #0x10] + add r0, r7, #0 + str r0, [sp, #0x14] + add r0, #0xe0 + ldr r5, _02254FA8 ; =0x02255348 + str r0, [sp, #0x14] +_02254F58: + ldrh r0, [r6, #0xe] + cmp r0, #0 + beq _02254F92 + bl FUN_0206EA98 + cmp r0, #0 + beq _02254F6A + mov r1, #1 + b _02254F6C +_02254F6A: + mov r1, #0 +_02254F6C: + add r0, sp, #0x18 + strh r1, [r0, #8] + ldrh r0, [r5] + ldr r2, [sp, #0x14] + add r1, sp, #0x18 + add r0, #0x1c + lsl r0, r0, #0xc + str r0, [sp, #0x18] + ldrh r0, [r5, #2] + add r0, #0x15 + lsl r0, r0, #0xc + str r0, [sp, #0x1c] + ldr r0, [sp, #0xc] + ldr r0, [r0, #8] + bl MOD20_02253E74 + add r1, r7, #0 + add r1, #0xb4 + str r0, [r1] +_02254F92: + ldr r0, [sp, #0x10] + add r4, r4, #1 + ldr r0, [r0] + add r6, #0x10 + add r5, r5, #4 + add r7, r7, #4 + cmp r4, r0 + blt _02254F58 +_02254FA2: + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_02254FA8: .word 0x02255348 + thumb_func_end MOD27_02254F18 + + thumb_func_start MOD27_02254FAC +MOD27_02254FAC: ; 0x02254FAC + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + str r0, [sp, #4] + str r1, [sp, #8] + mov r0, #0x13 + mov r1, #8 + bl FUN_02006670 + str r0, [sp, #0x14] + cmp r0, #0 + beq _022550C0 + mov r0, #0 + add r1, sp, #0x20 + strh r0, [r1, #0xc] + str r0, [sp, #0x10] + strb r0, [r1, #0xe] + mov r0, #2 + strb r0, [r1, #0xf] + mov r7, #1 + strb r7, [r1, #0x10] + ldr r0, [sp, #8] + strb r7, [r1, #0x11] + ldr r0, [r0] + cmp r0, #0 + ble _022550BA + ldr r5, [sp, #4] + mov r0, #8 + mov r1, #0x43 + str r0, [sp, #0xc] + lsl r1, r1, #2 + add r0, r5, #0 + add r0, r0, r1 + str r0, [sp, #0x18] + add r0, r5, #0 + str r0, [sp, #0x1c] + add r0, #0xcc + ldr r4, [sp, #8] + ldr r6, _022550C4 ; =0x02255348 + add r7, #0xff + str r0, [sp, #0x1c] +_02254FFC: + ldr r0, [sp, #0x18] + mov r3, #0xa + str r0, [sp] + ldr r0, [sp, #0x14] + ldr r1, [r4, #4] + mov r2, #0 + lsl r3, r3, #6 + bl FUN_02006814 + ldr r0, [sp, #0x18] + add r1, sp, #0x20 + bl FUN_020B0088 + ldr r0, [sp, #0x20] + mov r1, #2 + ldr r0, [r0, #0x14] + lsl r1, r1, #8 + bl DC_FlushRange + ldr r0, [sp, #0x20] + mov r2, #2 + ldr r0, [r0, #0x14] + add r1, r7, #0 + lsl r2, r2, #8 + bl GXS_LoadOBJ + ldrh r0, [r6] + ldr r2, [sp, #0x1c] + add r1, sp, #0x24 + lsl r0, r0, #0xc + str r0, [sp, #0x24] + ldrh r0, [r6, #2] + lsl r0, r0, #0xc + str r0, [sp, #0x28] + ldr r0, [sp, #4] + ldr r0, [r0, #8] + bl MOD20_02253E74 + add r1, r5, #0 + add r1, #0x9c + str r0, [r1] + add r0, r5, #0 + add r0, #0x9c + ldr r0, [r0] + ldr r1, [sp, #0xc] + bl MOD20_02253FA4 + add r0, r5, #0 + add r0, #0x9c + ldr r0, [r0] + mov r1, #4 + bl MOD20_02253F28 + ldrh r0, [r4, #0xa] + cmp r0, #0 + beq _02255072 + ldrh r0, [r4, #0x10] + cmp r0, #0 + beq _02255080 +_02255072: + add r0, r5, #0 + add r0, #0x9c + ldr r0, [r0] + mov r1, #1 + bl MOD20_02253F9C + b _02255098 +_02255080: + ldrh r0, [r4, #8] + ldrb r1, [r4, #0x13] + ldrb r2, [r4, #0x12] + bl FUN_0206B7BC + add r1, r0, #0 + add r0, r5, #0 + add r0, #0x9c + ldr r0, [r0] + add r1, r1, #2 + bl MOD20_02253F9C +_02255098: + mov r0, #2 + lsl r0, r0, #8 + add r7, r7, r0 + ldr r0, [sp, #0xc] + add r4, #0x10 + add r0, #0x10 + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + add r6, r6, #4 + add r0, r0, #1 + str r0, [sp, #0x10] + ldr r0, [sp, #8] + add r5, r5, #4 + ldr r1, [r0] + ldr r0, [sp, #0x10] + cmp r0, r1 + blt _02254FFC +_022550BA: + ldr r0, [sp, #0x14] + bl FUN_020066F4 +_022550C0: + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022550C4: .word 0x02255348 + thumb_func_end MOD27_02254FAC + + thumb_func_start MOD27_022550C8 +MOD27_022550C8: ; 0x022550C8 + push {r4, lr} + add r4, r0, #0 + mov r0, #1 + mov r1, #0 + lsl r0, r0, #8 + strb r1, [r4, r0] + add r0, r4, #0 + add r0, #0xf8 + str r4, [r0] + add r0, r4, #0 + ldr r1, [r4] + add r0, #0xfc + str r1, [r0] + add r1, r4, #0 + ldr r0, _022550F4 ; =MOD27_022550F8 + add r1, #0xf8 + mov r2, #1 + bl FUN_0200CA44 + add r4, #0xf4 + str r0, [r4] + pop {r4, pc} + .align 2, 0 +_022550F4: .word MOD27_022550F8 + thumb_func_end MOD27_022550C8 + + thumb_func_start MOD27_022550F8 +MOD27_022550F8: ; 0x022550F8 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldrb r0, [r5, #8] + ldr r4, [r5, #4] + ldr r6, [r5] + cmp r0, #0 + beq _0225510C + cmp r0, #1 + beq _02255164 + pop {r4, r5, r6, pc} +_0225510C: + add r0, r4, #0 + add r0, #0x66 + ldrh r0, [r0] + cmp r0, #0 + beq _022551EA + ldr r0, [r4, #0x68] + ldr r1, [r4, #0x6c] + ldr r2, [r4] + bl MOD27_022551F4 + ldr r1, [r4] + cmp r0, r1 + bhs _022551EA + lsl r2, r0, #4 + add r1, r4, r2 + ldrh r3, [r1, #0xa] + cmp r3, #0 + beq _022551EA + ldrb r3, [r1, #0x12] + cmp r3, #0 + bne _022551EA + mov r3, #0 + strb r3, [r5, #9] + strb r3, [r5, #0xb] + strb r0, [r5, #0xa] + mov r3, #2 + str r3, [r5, #0x10] + ldrh r0, [r1, #0x10] + cmp r0, #0 + bne _02255150 + mov r0, #1 + strb r0, [r5, #0xc] + mov r0, #8 + b _02255154 +_02255150: + strb r3, [r5, #0xc] + mov r0, #4 +_02255154: + strb r0, [r5, #0xd] + mov r0, #1 + strb r0, [r5, #8] + add r0, r4, r2 + ldrh r0, [r0, #8] + bl MOD20_02252B48 + pop {r4, r5, r6, pc} +_02255164: + ldrb r1, [r5, #0xb] + ldrb r0, [r5, #0xd] + cmp r1, r0 + bne _022551A6 + add r0, r4, #0 + add r0, #0x64 + ldrh r0, [r0] + cmp r0, #0 + beq _02255186 + ldr r0, [r4, #0x68] + ldr r1, [r4, #0x6c] + ldr r2, [r4] + bl MOD27_022551F4 + ldrb r1, [r5, #0xa] + cmp r1, r0 + beq _022551A6 +_02255186: + ldrb r0, [r5, #0xa] + ldr r1, _022551EC ; =0x02255348 + ldr r3, _022551F0 ; =0x0225534A + lsl r2, r0, #2 + add r0, r6, r2 + ldrh r1, [r1, r2] + ldrh r2, [r3, r2] + add r0, #0x9c + ldr r0, [r0] + lsl r1, r1, #0xc + lsl r2, r2, #0xc + bl MOD20_02253F64 + mov r0, #0 + strb r0, [r5, #8] + pop {r4, r5, r6, pc} +_022551A6: + ldrb r0, [r5, #9] + cmp r0, #0 + bne _022551E6 + ldrb r0, [r5, #0xa] + ldr r1, _022551EC ; =0x02255348 + ldr r3, _022551F0 ; =0x0225534A + lsl r2, r0, #2 + add r0, r6, r2 + ldrh r1, [r1, r2] + add r0, #0x9c + ldrh r2, [r3, r2] + ldr r4, [r5, #0x10] + ldr r0, [r0] + add r2, r4, r2 + lsl r1, r1, #0xc + lsl r2, r2, #0xc + bl MOD20_02253F64 + ldrb r1, [r5, #0xb] + ldrb r0, [r5, #0xd] + cmp r1, r0 + bhs _022551D6 + add r0, r1, #1 + strb r0, [r5, #0xb] +_022551D6: + mov r0, #0 + ldr r1, [r5, #0x10] + mvn r0, r0 + mul r0, r1 + str r0, [r5, #0x10] + ldrb r0, [r5, #0xc] + strb r0, [r5, #9] + pop {r4, r5, r6, pc} +_022551E6: + sub r0, r0, #1 + strb r0, [r5, #9] +_022551EA: + pop {r4, r5, r6, pc} + .align 2, 0 +_022551EC: .word 0x02255348 +_022551F0: .word 0x0225534A + thumb_func_end MOD27_022550F8 + + thumb_func_start MOD27_022551F4 +MOD27_022551F4: ; 0x022551F4 + push {r3, r4, r5, r6, r7, lr} + mov lr, r0 + mov ip, r1 + add r7, r2, #0 + ldr r6, _02255248 ; =0x00000000 + beq _02255242 + ldr r3, _0225524C ; =0x02255348 +_02255202: + ldrh r1, [r3] + ldrh r4, [r3, #2] + mov r5, lr + add r0, r1, #0 + sub r0, #0x10 + add r2, r4, #0 + add r1, #0x10 + sub r5, r5, r0 + sub r0, r1, r0 + sub r2, #8 + cmp r5, r0 + bhs _0225521E + mov r0, #1 + b _02255220 +_0225521E: + mov r0, #0 +_02255220: + mov r1, ip + add r4, #0x18 + sub r1, r1, r2 + sub r2, r4, r2 + cmp r1, r2 + bhs _02255230 + mov r1, #1 + b _02255232 +_02255230: + mov r1, #0 +_02255232: + tst r0, r1 + beq _0225523A + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} +_0225523A: + add r6, r6, #1 + add r3, r3, #4 + cmp r6, r7 + blo _02255202 +_02255242: + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02255248: .word 0x00000000 +_0225524C: .word 0x02255348 + thumb_func_end MOD27_022551F4 + + thumb_func_start MOD27_02255250 +MOD27_02255250: ; 0x02255250 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r6, #0 + add r4, r5, #0 + add r7, r6, #0 +_0225525A: + add r0, r4, #0 + add r0, #0x9c + ldr r1, [r0] + cmp r1, #0 + beq _02255270 + ldr r0, [r5, #8] + bl MOD20_02253F14 + add r0, r4, #0 + add r0, #0x9c + str r7, [r0] +_02255270: + add r0, r4, #0 + add r0, #0xb4 + ldr r1, [r0] + cmp r1, #0 + beq _02255288 + ldr r0, [r5, #8] + bl MOD20_02253F14 + add r1, r4, #0 + add r1, #0xb4 + mov r0, #0 + str r0, [r1] +_02255288: + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #6 + blt _0225525A + ldr r0, [r5, #0x38] + mov r6, #0 + cmp r0, #0 + bls _022552AC + add r4, r5, #0 + add r4, #0x3c +_0225529C: + add r0, r4, #0 + bl FUN_02019178 + ldr r0, [r5, #0x38] + add r6, r6, #1 + add r4, #0x10 + cmp r6, r0 + blo _0225529C +_022552AC: + mov r0, #0 + str r0, [r5, #0x38] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD27_02255250 + + thumb_func_start MOD27_022552B4 +MOD27_022552B4: ; 0x022552B4 + 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 MOD27_02254BF4 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD27_022552B4 + + thumb_func_start MOD27_022552D0 +MOD27_022552D0: ; 0x022552D0 + push {r4, r5, r6, lr} + sub sp, #0x10 + 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 + add r0, r5, #0 + bl MOD27_02255250 + mov r3, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x18 + str r0, [sp, #8] + str r3, [sp, #0xc] + ldr r0, [r5, #4] + mov r1, #6 + mov r2, #5 + bl FUN_02018540 + add r0, r5, #0 + add r1, r4, #0 + bl MOD27_02254F18 + add r0, r5, #0 + add r1, r4, #0 + bl MOD27_02254FAC + ldr r2, [r5, #0x34] + add r0, r5, #0 + add r1, r4, #0 + bl MOD27_02254CC8 + ldr r0, [r5, #4] + mov r1, #6 + bl FUN_02017CD0 + ldr r0, _02255338 ; =0x00000669 + bl MOD20_02252B28 + add r0, r6, #0 + bl MOD27_02254BF4 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_02255338: .word 0x00000669 + thumb_func_end MOD27_022552D0 + + .section .data + ; 0x0225533C + .incbin "baserom.nds", 0x28A8FC, 0xA4 |