diff options
Diffstat (limited to 'arm9/modules')
-rw-r--r-- | arm9/modules/05/asm/module_05.s | 4 | ||||
-rw-r--r-- | arm9/modules/60/asm/module_60.s | 1491 |
2 files changed, 1493 insertions, 2 deletions
diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index 9b34c034..cbfe382b 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -9489,7 +9489,7 @@ MOD05_021DBEA0: ; 0x021DBEA0 mov r1, #2 bl HandleLoadOverlay add r0, r4, #0 - bl FUN_02254A68 + bl MOD51_02254A68 add r4, #0x80 str r0, [r4] pop {r4, pc} @@ -9515,7 +9515,7 @@ MOD05_021DBECC: ; 0x021DBECC push {r3, lr} add r0, #0x80 ldr r0, [r0] - bl FUN_02254AB8 + bl MOD51_02254AB8 ldr r0, _021DBEE0 ; =SDK_OVERLAY_MODULE_51_ID bl UnloadOverlayByID pop {r3, pc} diff --git a/arm9/modules/60/asm/module_60.s b/arm9/modules/60/asm/module_60.s new file mode 100644 index 00000000..6318e002 --- /dev/null +++ b/arm9/modules/60/asm/module_60.s @@ -0,0 +1,1491 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD60_021D74E0 +MOD60_021D74E0: ; 0x021D74E0 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_0200628C + mov r2, #1 + add r5, r0, #0 + mov r0, #3 + mov r1, #0x26 + lsl r2, r2, #0x10 + bl FUN_0201681C + mov r1, #0xad + add r0, r4, #0 + lsl r1, r1, #2 + mov r2, #0x26 + bl FUN_02006268 + mov r2, #0xad + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl Call_FillMemWithValue + add r0, r5, #0 + bl FUN_02024FD8 + ldrh r1, [r4, #0x18] + mov r2, #0xf + lsl r0, r0, #0x10 + bic r1, r2 + lsr r2, r0, #0x10 + mov r0, #0xf + and r0, r2 + orr r0, r1 + strh r0, [r4, #0x18] + add r0, r5, #0 + bl FUN_0202502C + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsl r0, r0, #0x1f + ldrh r1, [r4, #0x18] + mov r2, #0x40 + lsr r0, r0, #0x19 + bic r1, r2 + orr r0, r1 + strh r0, [r4, #0x18] + add r0, r5, #0 + bl FUN_02025048 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsl r0, r0, #0x1f + ldrh r1, [r4, #0x18] + mov r2, #0x80 + lsr r0, r0, #0x18 + bic r1, r2 + orr r0, r1 + strh r0, [r4, #0x18] + add r0, r5, #0 + bl FUN_02025010 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsl r0, r0, #0x1e + ldrh r1, [r4, #0x18] + mov r2, #0x30 + lsr r0, r0, #0x1a + bic r1, r2 + orr r0, r1 + strh r0, [r4, #0x18] + add r0, r5, #0 + bl FUN_02025064 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsl r0, r0, #0x1e + ldrh r2, [r4, #0x18] + ldr r1, _021D75A8 ; =0xFFFFFCFF + lsr r0, r0, #0x16 + and r1, r2 + orr r0, r1 + strh r0, [r4, #0x18] + add r0, r5, #0 + bl FUN_02025084 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsl r0, r0, #0x1b + ldrh r2, [r4, #0x18] + ldr r1, _021D75AC ; =0xFFFF83FF + lsr r0, r0, #0x11 + and r1, r2 + orr r0, r1 + strh r0, [r4, #0x18] + mov r0, #0x26 + str r0, [r4] + str r5, [r4, #0x1c] + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D75A8: .word 0xFFFFFCFF +_021D75AC: .word 0xFFFF83FF + thumb_func_end MOD60_021D74E0 + + thumb_func_start MOD60_021D75B0 +MOD60_021D75B0: ; 0x021D75B0 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r4, #0x10] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1e + cmp r0, #1 + bne _021D7680 + ldrh r1, [r4, #0x18] + mov r0, #0xf + bic r1, r0 + add r0, r4, #0 + add r0, #0x5e + ldrh r2, [r0] + mov r0, #0xf + and r2, r0 + orr r1, r2 + strh r1, [r4, #0x18] + ldrh r1, [r4, #0x18] + mov r2, #0x40 + add r0, #0xf7 + bic r1, r2 + add r2, r4, #0 + add r2, #0xb2 + ldrh r2, [r2] + lsl r2, r2, #0x1f + lsr r2, r2, #0x19 + orr r1, r2 + strh r1, [r4, #0x18] + ldrh r0, [r4, r0] + ldrh r1, [r4, #0x18] + mov r2, #0x80 + lsl r0, r0, #0x1f + bic r1, r2 + lsr r0, r0, #0x18 + orr r0, r1 + strh r0, [r4, #0x18] + ldrh r1, [r4, #0x18] + mov r0, #0x30 + bic r1, r0 + ldr r0, _021D76AC ; =0x0000015A + ldrh r2, [r4, r0] + lsl r2, r2, #0x1e + lsr r2, r2, #0x1a + orr r1, r2 + strh r1, [r4, #0x18] + ldrh r2, [r4, #0x18] + ldr r1, _021D76B0 ; =0xFFFFFCFF + and r1, r2 + add r2, r0, #0 + add r2, #0x54 + ldrh r2, [r4, r2] + add r0, #0xa8 + lsl r2, r2, #0x1e + lsr r2, r2, #0x16 + orr r1, r2 + strh r1, [r4, #0x18] + ldrh r0, [r4, r0] + ldrh r2, [r4, #0x18] + ldr r1, _021D76B4 ; =0xFFFF83FF + lsl r0, r0, #0x1b + and r1, r2 + lsr r0, r0, #0x11 + orr r0, r1 + strh r0, [r4, #0x18] + ldrh r1, [r4, #0x18] + ldr r0, [r4, #0x1c] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + bl FUN_02024FE0 + ldrh r1, [r4, #0x18] + ldr r0, [r4, #0x1c] + lsl r1, r1, #0x19 + lsr r1, r1, #0x1f + bl FUN_02025034 + ldrh r1, [r4, #0x18] + ldr r0, [r4, #0x1c] + lsl r1, r1, #0x18 + lsr r1, r1, #0x1f + bl FUN_02025050 + ldrh r1, [r4, #0x18] + ldr r0, [r4, #0x1c] + lsl r1, r1, #0x1a + lsr r1, r1, #0x1e + bl FUN_02025018 + ldrh r1, [r4, #0x18] + ldr r0, [r4, #0x1c] + lsl r1, r1, #0x16 + lsr r1, r1, #0x1e + bl FUN_0202506C + ldrh r1, [r4, #0x18] + ldr r0, [r4, #0x1c] + lsl r1, r1, #0x11 + lsr r1, r1, #0x1b + bl FUN_0202508C + b _021D769A +_021D7680: + cmp r0, #2 + bne _021D769A + ldrh r0, [r4, #0x18] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1e + bl FUN_02004D60 + ldrh r1, [r4, #0x18] + mov r0, #0 + lsl r1, r1, #0x16 + lsr r1, r1, #0x1e + bl FUN_02024F9C +_021D769A: + add r0, r5, #0 + bl FUN_0200627C + ldr r0, [r4] + bl FUN_020168D0 + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_021D76AC: .word 0x0000015A +_021D76B0: .word 0xFFFFFCFF +_021D76B4: .word 0xFFFF83FF + thumb_func_end MOD60_021D75B0 + + thumb_func_start MOD60_021D76B8 +MOD60_021D76B8: ; 0x021D76B8 + push {r3, r4, lr} + sub sp, #0xc + bl FUN_02006278 + add r4, r0, #0 + ldr r1, [r4, #4] + cmp r1, #4 + bhi _021D77A0 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D76D4: ; jump table + .short _021D76DE - _021D76D4 - 2 ; case 0 + .short _021D7706 - _021D76D4 - 2 ; case 1 + .short _021D7714 - _021D76D4 - 2 ; case 2 + .short _021D777E - _021D76D4 - 2 ; case 3 + .short _021D778C - _021D76D4 - 2 ; case 4 +_021D76DE: + bl MOD60_021D7834 + cmp r0, #0 + bne _021D76EC + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021D76EC: + mov r3, #0 + str r3, [r4, #0xc] + mov r0, #6 + mov r1, #1 + str r0, [sp] + str r1, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + mov r0, #3 + bl FUN_0200E1D0 + b _021D77A0 +_021D7706: + bl FUN_0200E308 + cmp r0, #0 + bne _021D77A0 + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021D7714: + ldr r0, _021D77AC ; =0x021C48B8 + mov r1, #1 + ldr r0, [r0, #0x48] + tst r1, r0 + beq _021D773C + ldr r1, [r4, #0x10] + lsl r1, r1, #0x1b + lsr r1, r1, #0x1d + cmp r1, #6 + bne _021D773C + ldr r0, _021D77B0 ; =0x0000061B + bl FUN_020054C8 + ldr r1, [r4, #0x10] + mov r0, #3 + bic r1, r0 + mov r0, #1 + orr r0, r1 + str r0, [r4, #0x10] + b _021D774E +_021D773C: + mov r1, #2 + tst r0, r1 + beq _021D774E + ldr r2, [r4, #0x10] + mov r0, #3 + bic r2, r0 + add r0, r2, #0 + orr r0, r1 + str r0, [r4, #0x10] +_021D774E: + ldr r0, [r4, #0x10] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1e + beq _021D7772 + mov r1, #0 + str r1, [r4, #0xc] + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4] + add r2, r1, #0 + str r0, [sp, #8] + mov r0, #3 + add r3, r1, #0 + bl FUN_0200E1D0 + b _021D77A0 +_021D7772: + add r0, r4, #0 + bl MOD60_021D801C + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021D777E: + bl FUN_0200E308 + cmp r0, #0 + bne _021D77A0 + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021D778C: + bl MOD60_021D78E8 + cmp r0, #0 + beq _021D779A + add sp, #0xc + mov r0, #1 + pop {r3, r4, pc} +_021D779A: + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_021D77A0: + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + mov r0, #0 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_021D77AC: .word 0x021C48B8 +_021D77B0: .word 0x0000061B + thumb_func_end MOD60_021D76B8 + + thumb_func_start MOD60_021D77B4 +MOD60_021D77B4: ; 0x021D77B4 + push {r4, lr} + sub sp, #0x28 + ldr r4, _021D77D0 ; =0x021D8140 + add r3, sp, #0 + mov r2, #5 +_021D77BE: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D77BE + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_021D77D0: .word 0x021D8140 + thumb_func_end MOD60_021D77B4 + + thumb_func_start MOD60_021D77D4 +MOD60_021D77D4: ; 0x021D77D4 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4, #0x10] + lsl r0, r0, #0xa + lsr r0, r0, #0x1f + beq _021D7804 + ldr r2, _021D7824 ; =0x00000202 + mov r1, #1 + ldrh r0, [r4, r2] + add r2, #0x39 + mov r3, #0xf + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, [r4] + str r0, [sp, #4] + ldr r0, [r4, #0x14] + bl FUN_0200CD68 + ldr r1, [r4, #0x10] + ldr r0, _021D7828 ; =0xFFDFFFFF + and r0, r1 + str r0, [r4, #0x10] +_021D7804: + bl FUN_0200BC30 + bl FUN_020AEEB8 + ldr r0, [r4, #0x14] + bl FUN_0201AB60 + ldr r3, _021D782C ; =0x027E0000 + ldr r1, _021D7830 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + add sp, #8 + pop {r4, pc} + nop +_021D7824: .word 0x00000202 +_021D7828: .word 0xFFDFFFFF +_021D782C: .word 0x027E0000 +_021D7830: .word 0x00003FF8 + thumb_func_end MOD60_021D77D4 + + thumb_func_start MOD60_021D7834 +MOD60_021D7834: ; 0x021D7834 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #8] + cmp r1, #0 + beq _021D7848 + cmp r1, #1 + beq _021D7888 + cmp r1, #2 + beq _021D78A2 + b _021D78D0 +_021D7848: + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D78DC ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D78E0 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + bl MOD60_021D77B4 + mov r0, #0 + bl FUN_0200E388 + mov r0, #1 + bl FUN_0200E388 + add r0, r4, #0 + bl MOD60_021D7990 + b _021D78D0 +_021D7888: + bl MOD60_021D7A40 + ldr r3, [r4] + mov r0, #1 + mov r1, #0x1a + mov r2, #0xce + bl FUN_0200A86C + str r0, [r4, #0x20] + add r0, r4, #0 + bl MOD60_021D7DF8 + b _021D78D0 +_021D78A2: + bl MOD60_021D7BA4 + add r0, r4, #0 + bl MOD60_021D7D18 + ldr r1, [r4] + mov r0, #0x20 + bl FUN_0201C24C + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + bl FUN_02033F20 + ldr r0, _021D78E4 ; =MOD60_021D77D4 + add r1, r4, #0 + bl FUN_02015F10 + mov r0, #0 + str r0, [r4, #8] + mov r0, #1 + pop {r4, pc} +_021D78D0: + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + mov r0, #0 + pop {r4, pc} + nop +_021D78DC: .word 0xFFFFE0FF +_021D78E0: .word 0x04001000 +_021D78E4: .word MOD60_021D77D4 + thumb_func_end MOD60_021D7834 + + thumb_func_start MOD60_021D78E8 +MOD60_021D78E8: ; 0x021D78E8 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + ldr r0, [r0, #8] + cmp r0, #0 + beq _021D78F8 + cmp r0, #1 + beq _021D7946 + b _021D7978 +_021D78F8: + bl FUN_0201C29C + ldr r0, [sp] + bl MOD60_021D7CD4 + ldr r6, [sp] + mov r7, #0 +_021D7906: + add r0, r6, #0 + add r0, #0x5c + ldrh r0, [r0] + mov r4, #0 + cmp r0, #0 + ble _021D7928 + add r5, r6, #0 +_021D7914: + ldr r0, [r5, #0x60] + bl FUN_02021A20 + add r0, r6, #0 + add r0, #0x5c + ldrh r0, [r0] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r0 + blt _021D7914 +_021D7928: + add r7, r7, #1 + add r6, #0x54 + cmp r7, #7 + blt _021D7906 + ldr r0, [sp] + ldr r0, [r0, #0x20] + bl FUN_0200A8B8 + ldr r0, [sp] + bl MOD60_021D7B98 + ldr r0, [sp] + bl MOD60_021D7A14 + b _021D7978 +_021D7946: + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D7988 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D798C ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + ldr r0, [sp] + mov r1, #0 + str r1, [r0, #8] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_021D7978: + ldr r0, [sp] + ldr r0, [r0, #8] + add r1, r0, #1 + ldr r0, [sp] + str r1, [r0, #8] + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D7988: .word 0xFFFFE0FF +_021D798C: .word 0x04001000 + thumb_func_end MOD60_021D78E8 + + thumb_func_start MOD60_021D7990 +MOD60_021D7990: ; 0x021D7990 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x80 + add r6, r0, #0 + ldr r0, [r6] + bl FUN_02016B94 + add r3, sp, #0 + ldr r4, _021D7A08 ; =0x021D8114 + str r0, [r6, #0x14] + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r4, _021D7A0C ; =0x021D8168 + add r3, sp, #0x10 + mov r2, #0xe +_021D79B8: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D79B8 + ldr r5, _021D7A10 ; =0x021D8104 + mov r7, #0 + add r4, sp, #0x10 +_021D79C6: + ldr r1, [r5] + ldr r0, [r6, #0x14] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + add r2, r4, #0 + mov r3, #0 + bl FUN_02016C18 + ldr r1, [r5] + ldr r0, [r6, #0x14] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_02018744 + add r7, r7, #1 + add r4, #0x1c + add r5, r5, #4 + cmp r7, #4 + blt _021D79C6 + mov r0, #0 + ldr r3, [r6] + mov r1, #0x20 + add r2, r0, #0 + bl FUN_02017F18 + ldr r3, [r6] + mov r0, #4 + mov r1, #0x20 + mov r2, #0 + bl FUN_02017F18 + add sp, #0x80 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D7A08: .word 0x021D8114 +_021D7A0C: .word 0x021D8168 +_021D7A10: .word 0x021D8104 + thumb_func_end MOD60_021D7990 + + thumb_func_start MOD60_021D7A14 +MOD60_021D7A14: ; 0x021D7A14 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + mov r1, #4 + bl FUN_020178A0 + ldr r0, [r4, #0x14] + mov r1, #2 + bl FUN_020178A0 + ldr r0, [r4, #0x14] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0x14] + mov r1, #0 + bl FUN_020178A0 + ldr r0, [r4, #0x14] + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD60_021D7A14 + + thumb_func_start MOD60_021D7A40 +MOD60_021D7A40: ; 0x021D7A40 + push {r3, r4, r5, r6, lr} + sub sp, #0x24 + add r5, r0, #0 + ldr r1, [r5] + mov r0, #0x49 + bl FUN_02006670 + add r4, r0, #0 + mov r0, #0x49 + mov r1, #1 + bl LoadFromNARC_7 + add r1, r0, #0 + ldr r0, [r5] + bl FUN_020169D8 + add r6, r0, #0 + add r0, r4, #0 + mov r1, #1 + add r2, r6, #0 + bl FUN_02006774 + add r0, r6, #0 + add r1, sp, #0x20 + bl FUN_020B0088 + ldr r3, [sp, #0x20] + mov r1, #0 + str r1, [sp] + ldr r2, [r3, #0x14] + ldr r0, [r5, #0x14] + ldr r3, [r3, #0x10] + bl FUN_02017E14 + ldr r3, [sp, #0x20] + mov r0, #0 + str r0, [sp] + ldr r2, [r3, #0x14] + ldr r0, [r5, #0x14] + ldr r3, [r3, #0x10] + mov r1, #4 + bl FUN_02017E14 + add r0, r6, #0 + bl FUN_02016A18 + mov r0, #0x49 + mov r1, #0 + bl LoadFromNARC_7 + add r1, r0, #0 + ldr r0, [r5] + bl FUN_020169D8 + add r6, r0, #0 + add r0, r4, #0 + mov r1, #0 + add r2, r6, #0 + bl FUN_02006774 + add r0, r6, #0 + add r1, sp, #0x1c + bl FUN_020B0138 + ldr r1, [sp, #0x1c] + mov r0, #0 + ldr r1, [r1, #0xc] + mov r2, #0x20 + add r3, r0, #0 + bl FUN_02017FB4 + ldr r1, [sp, #0x1c] + mov r0, #4 + ldr r1, [r1, #0xc] + mov r2, #0x20 + mov r3, #0 + bl FUN_02017FB4 + add r0, r6, #0 + bl FUN_02016A18 + mov r0, #0x49 + mov r1, #2 + bl LoadFromNARC_7 + add r1, r0, #0 + ldr r0, [r5] + bl FUN_02016998 + str r0, [r5, #0x24] + ldr r2, [r5, #0x24] + add r0, r4, #0 + mov r1, #2 + bl FUN_02006774 + add r1, r5, #0 + ldr r0, [r5, #0x24] + add r1, #0x28 + bl FUN_020B0180 + add r0, r4, #0 + bl FUN_020066F4 + mov r3, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r0, [r5, #0x14] + mov r1, #2 + mov r2, #1 + bl FUN_02018540 + mov r3, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r0, [r5, #0x14] + mov r1, #4 + mov r2, #1 + bl FUN_02018540 + ldr r0, [r5, #0x28] + mov r1, #0x20 + str r1, [sp] + mov r1, #2 + str r1, [sp, #4] + add r1, r0, #0 + add r1, #0xc + str r1, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + str r1, [sp, #0x10] + ldrh r2, [r0] + add r3, r1, #0 + lsl r2, r2, #0x15 + lsr r2, r2, #0x18 + str r2, [sp, #0x14] + ldrh r0, [r0, #2] + add r2, r1, #0 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #0x18] + ldr r0, [r5, #0x14] + bl FUN_020181EC + mov r2, #3 + add r3, r2, #0 + ldr r0, [r5, #0x14] + mov r1, #0 + sub r3, #0x1b + bl FUN_020179E0 + ldr r0, [r5, #0x14] + mov r1, #2 + bl FUN_0201AC68 + ldr r0, [r5, #0x14] + mov r1, #0 + bl FUN_0201AC68 + ldr r0, [r5, #0x14] + mov r1, #4 + bl FUN_0201AC68 + add sp, #0x24 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD60_021D7A40 + + thumb_func_start MOD60_021D7B98 +MOD60_021D7B98: ; 0x021D7B98 + ldr r3, _021D7BA0 ; =0x02016A19 + ldr r0, [r0, #0x24] + bx r3 + nop +_021D7BA0: .word 0x02016A19 + thumb_func_end MOD60_021D7B98 + + thumb_func_start MOD60_021D7BA4 +MOD60_021D7BA4: ; 0x021D7BA4 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0xc + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0xa + str r0, [sp, #0x10] + add r1, r4, #0 + mov r2, #1 + ldr r0, [r4, #0x14] + add r1, #0x2c + add r3, r2, #0 + bl FUN_02019064 + mov r0, #3 + str r0, [sp] + mov r0, #0x1e + str r0, [sp, #4] + mov r0, #0xe + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x22 + str r0, [sp, #0x10] + add r1, r4, #0 + mov r2, #1 + ldr r0, [r4, #0x14] + add r1, #0x3c + add r3, r2, #0 + bl FUN_02019064 + mov r0, #0x13 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xc + str r0, [sp, #0xc] + ldr r0, _021D7CC8 ; =0x000001C6 + add r1, r4, #0 + str r0, [sp, #0x10] + ldr r0, [r4, #0x14] + add r1, #0x4c + mov r2, #1 + mov r3, #2 + bl FUN_02019064 + mov r0, #0 + str r0, [sp] + ldr r0, [r4] + ldr r2, _021D7CCC ; =0x00000232 + str r0, [sp, #4] + ldr r0, [r4, #0x14] + mov r1, #1 + mov r3, #0xe + bl FUN_0200CB00 + ldrh r0, [r4, #0x18] + ldr r2, _021D7CD0 ; =0x0000023B + mov r1, #1 + lsl r0, r0, #0x11 + lsr r0, r0, #0x1b + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, [r4] + mov r3, #0xf + str r0, [sp, #4] + ldr r0, [r4, #0x14] + bl FUN_0200CD68 + mov r1, #0x1a + ldr r2, [r4] + mov r0, #0 + lsl r1, r1, #4 + bl FUN_02002ED0 + mov r1, #0x1a + ldr r2, [r4] + mov r0, #4 + lsl r1, r1, #4 + bl FUN_02002ED0 + mov r1, #6 + ldr r2, [r4] + mov r0, #0 + lsl r1, r1, #6 + bl FUN_02002EEC + mov r1, #6 + ldr r2, [r4] + mov r0, #4 + lsl r1, r1, #6 + bl FUN_02002EEC + add r0, r4, #0 + add r0, #0x2c + mov r1, #0 + bl FUN_02019620 + add r0, r4, #0 + add r0, #0x3c + mov r1, #0xff + bl FUN_02019620 + add r0, r4, #0 + add r0, #0x4c + mov r1, #0xff + bl FUN_02019620 + add r0, r4, #0 + add r0, #0x4c + bl FUN_020192B8 + add r0, r4, #0 + add r0, #0x3c + bl FUN_020192B8 + add r0, r4, #0 + add r0, #0x2c + bl FUN_020192B8 + add r0, r4, #0 + ldr r2, _021D7CCC ; =0x00000232 + add r0, #0x3c + mov r1, #1 + mov r3, #0xe + bl FUN_0200CCA4 + add r4, #0x4c + ldr r2, _021D7CD0 ; =0x0000023B + add r0, r4, #0 + mov r1, #1 + mov r3, #0xf + bl FUN_0200D0BC + add sp, #0x14 + pop {r3, r4, pc} + nop +_021D7CC8: .word 0x000001C6 +_021D7CCC: .word 0x00000232 +_021D7CD0: .word 0x0000023B + thumb_func_end MOD60_021D7BA4 + + thumb_func_start MOD60_021D7CD4 +MOD60_021D7CD4: ; 0x021D7CD4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r0, #0x3c + mov r1, #0 + bl FUN_0200CCF8 + add r0, r5, #0 + add r0, #0x4c + mov r1, #0 + bl FUN_0200D0E0 + mov r6, #0 + add r5, #0x2c + add r7, r6, #0 +_021D7CF0: + lsl r4, r6, #4 + add r0, r5, r4 + bl FUN_02019570 + add r0, r5, r4 + add r1, r7, #0 + bl FUN_02019620 + add r0, r5, r4 + bl FUN_020192B8 + add r0, r5, r4 + bl FUN_02019178 + add r0, r6, #1 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + cmp r6, #3 + blo _021D7CF0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD60_021D7CD4 + + thumb_func_start MOD60_021D7D18 +MOD60_021D7D18: ; 0x021D7D18 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r0, #0 + ldr r1, [r6] + mov r0, #0x28 + bl FUN_020219F4 + add r5, r0, #0 + ldr r0, [r6, #0x20] + mov r1, #0 + add r2, r5, #0 + bl FUN_0200A8E0 + mov r3, #2 + str r3, [sp] + mov r1, #0 + ldr r0, _021D7DEC ; =0x00010200 + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r6, #0 + add r0, #0x2c + add r2, r5, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r5, #0 + bl FUN_02021A4C + ldr r1, _021D7DF0 ; =0x020ECAC0 + ldr r0, [r6, #0x20] + ldrb r1, [r1] + add r2, r5, #0 + sub r1, #9 + bl FUN_0200A8E0 + mov r1, #0 + str r1, [sp] + ldr r0, _021D7DF4 ; =0x0001020F + str r1, [sp, #4] + str r0, [sp, #8] + add r0, r6, #0 + str r1, [sp, #0xc] + add r0, #0x4c + mov r1, #1 + add r2, r5, #0 + mov r3, #4 + bl FUN_0201BDE0 + add r7, r6, #0 + mov r4, #0 + add r7, #0x3c +_021D7D7E: + add r0, r5, #0 + bl FUN_02021A4C + ldr r0, [r6, #0x20] + add r1, r4, #3 + add r2, r5, #0 + bl FUN_0200A8E0 + lsl r0, r4, #4 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D7DF4 ; =0x0001020F + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + add r0, r7, #0 + add r2, r5, #0 + mov r3, #4 + bl FUN_0201BDE0 + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #7 + blo _021D7D7E + mov r4, #0 +_021D7DB6: + add r0, r6, #0 + add r1, r4, #0 + bl MOD60_021D7EA4 + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #7 + blo _021D7DB6 + add r0, r6, #0 + add r0, #0x2c + bl FUN_020191D0 + add r0, r6, #0 + add r0, #0x3c + bl FUN_020191D0 + add r6, #0x4c + add r0, r6, #0 + bl FUN_020191D0 + add r0, r5, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D7DEC: .word 0x00010200 +_021D7DF0: .word 0x020ECAC0 +_021D7DF4: .word 0x0001020F + thumb_func_end MOD60_021D7D18 + + thumb_func_start MOD60_021D7DF8 +MOD60_021D7DF8: ; 0x021D7DF8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r5, #0 + add r6, r0, #0 + str r5, [sp, #4] +_021D7E02: + ldr r0, [sp, #4] + ldr r2, [sp, #4] + lsl r7, r0, #2 + ldr r0, _021D7E9C ; =0x021D8124 + mov r1, #0x54 + mul r1, r2 + add r1, r6, r1 + str r1, [sp] + ldr r0, [r0, r7] + add r1, #0x5c + mov r4, #0 + strh r0, [r1] + cmp r0, #0 + ble _021D7E44 +_021D7E1E: + add r0, r5, #1 + lsl r0, r0, #0x10 + add r1, r5, #0 + lsr r5, r0, #0x10 + ldr r0, [r6, #0x20] + add r1, #0xa + bl FUN_0200A914 + ldr r1, [sp] + lsl r2, r4, #2 + add r1, r1, r2 + str r0, [r1, #0x60] + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r0, _021D7E9C ; =0x021D8124 + ldr r0, [r0, r7] + cmp r4, r0 + blt _021D7E1E +_021D7E44: + ldr r0, [sp, #4] + add r0, r0, #1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #4] + cmp r0, #7 + blo _021D7E02 + ldrh r0, [r6, #0x18] + lsl r0, r0, #0x1c + lsr r1, r0, #0x1c + add r0, r6, #0 + add r0, #0x5e + strh r1, [r0] + ldrh r0, [r6, #0x18] + lsl r0, r0, #0x19 + lsr r1, r0, #0x1f + add r0, r6, #0 + add r0, #0xb2 + strh r1, [r0] + ldrh r0, [r6, #0x18] + ldr r1, _021D7EA0 ; =0x00000106 + lsl r0, r0, #0x18 + lsr r0, r0, #0x1f + strh r0, [r6, r1] + ldrh r0, [r6, #0x18] + lsl r0, r0, #0x1a + lsr r2, r0, #0x1e + add r0, r1, #0 + add r0, #0x54 + strh r2, [r6, r0] + ldrh r0, [r6, #0x18] + lsl r0, r0, #0x16 + lsr r2, r0, #0x1e + add r0, r1, #0 + add r0, #0xa8 + strh r2, [r6, r0] + ldrh r0, [r6, #0x18] + add r1, #0xfc + lsl r0, r0, #0x11 + lsr r0, r0, #0x1b + strh r0, [r6, r1] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D7E9C: .word 0x021D8124 +_021D7EA0: .word 0x00000106 + thumb_func_end MOD60_021D7DF8 + + thumb_func_start MOD60_021D7EA4 +MOD60_021D7EA4: ; 0x021D7EA4 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r0, [sp, #0x10] + lsl r0, r1, #4 + str r0, [sp, #0x18] + mov r0, #6 + str r1, [sp, #0x14] + lsl r0, r0, #6 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + ldr r3, _021D8010 ; =0x021D80FC + ldr r2, [sp, #0x14] + ldr r0, [sp, #0x10] + ldrsb r2, [r3, r2] + ldr r3, [sp, #0x18] + add r0, #0x3c + add r2, #0x64 + lsl r2, r2, #0x10 + lsl r3, r3, #0x10 + mov r1, #0xff + lsr r2, r2, #0x10 + lsr r3, r3, #0x10 + bl FUN_020196F4 + ldr r0, [sp, #0x14] + cmp r0, #5 + bne _021D7F26 + add r2, r0, #0 + ldr r0, [sp, #0x18] + mov r1, #0x54 + str r0, [sp] + mov r0, #0xff + mul r2, r1 + ldr r3, [sp, #0x10] + str r0, [sp, #4] + ldr r0, _021D8014 ; =0x0003040F + add r3, r3, r2 + str r0, [sp, #8] + mov r1, #0 + add r2, r3, #0 + ldr r0, [sp, #0x10] + str r1, [sp, #0xc] + add r2, #0x5e + ldrh r2, [r2] + add r0, #0x3c + lsl r2, r2, #2 + add r2, r3, r2 + ldr r2, [r2, #0x60] + mov r3, #0x94 + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + add r0, #0x3c + bl FUN_020191D0 + ldr r0, [sp, #0x10] + ldr r1, [r0, #0x10] + mov r0, #2 + lsl r0, r0, #0x14 + orr r1, r0 + ldr r0, [sp, #0x10] + add sp, #0x24 + str r1, [r0, #0x10] + pop {r4, r5, r6, r7, pc} +_021D7F26: + cmp r0, #3 + bne _021D7F3C + mov r1, #0x54 + mul r1, r0 + ldr r0, [sp, #0x10] + add r0, r0, r1 + add r0, #0x5e + ldrh r0, [r0] + bl FUN_02004D60 + b _021D7F54 +_021D7F3C: + cmp r0, #4 + bne _021D7F54 + ldr r1, [sp, #0x14] + mov r2, #0x54 + mul r2, r1 + ldr r1, [sp, #0x10] + mov r0, #0 + add r1, r1, r2 + add r1, #0x5e + ldrh r1, [r1] + bl FUN_02024F9C +_021D7F54: + ldr r0, [sp, #0x14] + mov r1, #0x54 + mul r1, r0 + ldr r0, [sp, #0x10] + mov r7, #0 + add r5, r0, r1 + add r0, r5, #0 + add r0, #0x5c + ldrh r0, [r0] + add r4, r7, #0 + cmp r0, #0 + bls _021D8002 + bls _021D8002 + ldr r1, _021D8010 ; =0x021D80FC + ldr r0, [sp, #0x14] + add r0, r1, r0 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x10] + str r0, [sp, #0x20] + add r0, #0x3c + str r0, [sp, #0x20] +_021D7F7E: + add r0, r5, #0 + add r0, #0x5e + ldrh r0, [r0] + cmp r4, r0 + bne _021D7F8C + ldr r0, _021D8014 ; =0x0003040F + b _021D7F8E +_021D7F8C: + ldr r0, _021D8018 ; =0x0001020F +_021D7F8E: + ldr r1, [sp, #0x14] + cmp r1, #4 + bne _021D7FC8 + lsl r1, r4, #2 + add r6, r5, r1 + ldr r1, [sp, #0x18] + add r3, r7, #0 + str r1, [sp] + mov r1, #0xff + str r1, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x20] + ldr r2, [r6, #0x60] + mov r1, #0 + add r3, #0x64 + bl FUN_0201BDE0 + mov r0, #0 + ldr r1, [r6, #0x60] + add r2, r0, #0 + bl FUN_02002E14 + add r0, #0xc + add r0, r7, r0 + lsl r0, r0, #0x18 + asr r7, r0, #0x18 + b _021D7FF2 +_021D7FC8: + ldr r1, [sp, #0x18] + lsl r2, r4, #2 + str r1, [sp] + mov r1, #0xff + str r1, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + mov r1, #0 + str r0, [sp, #0xc] + add r2, r5, r2 + ldr r6, [sp, #0x1c] + add r3, r1, #0 + ldrsb r6, [r6, r3] + mov r3, #0x30 + mul r3, r4 + add r3, #0x64 + ldr r0, [sp, #0x20] + ldr r2, [r2, #0x60] + add r3, r6, r3 + bl FUN_0201BDE0 +_021D7FF2: + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r5, #0 + add r0, #0x5c + ldrh r0, [r0] + cmp r4, r0 + blo _021D7F7E +_021D8002: + ldr r0, [sp, #0x10] + add r0, #0x3c + str r0, [sp, #0x10] + bl FUN_020191D0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D8010: .word 0x021D80FC +_021D8014: .word 0x0003040F +_021D8018: .word 0x0001020F + thumb_func_end MOD60_021D7EA4 + + thumb_func_start MOD60_021D801C +MOD60_021D801C: ; 0x021D801C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x10] + add r1, r5, #0 + lsl r0, r0, #0x1b + lsr r2, r0, #0x1d + mov r0, #0x54 + add r1, #0x5c + mul r0, r2 + add r4, r1, r0 + cmp r2, #6 + beq _021D8080 + ldr r0, _021D80F8 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x10 + tst r0, r1 + beq _021D805C + ldrh r0, [r4, #2] + ldrh r1, [r4] + add r0, r0, #1 + bl _s32_div_f + strh r1, [r4, #2] + ldr r1, [r5, #0x10] + add r0, r5, #0 + lsl r1, r1, #0x1b + lsr r1, r1, #0x1d + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl MOD60_021D7EA4 + b _021D8080 +_021D805C: + mov r0, #0x20 + tst r0, r1 + beq _021D8080 + ldrh r1, [r4] + ldrh r0, [r4, #2] + add r0, r0, r1 + sub r0, r0, #1 + bl _s32_div_f + strh r1, [r4, #2] + ldr r1, [r5, #0x10] + add r0, r5, #0 + lsl r1, r1, #0x1b + lsr r1, r1, #0x1d + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl MOD60_021D7EA4 +_021D8080: + ldr r0, _021D80F8 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x40 + tst r0, r1 + beq _021D80BE + ldr r0, [r5, #0x10] + mov r1, #7 + lsl r0, r0, #0x1b + lsr r0, r0, #0x1d + add r0, r0, #6 + bl _u32_div_f + ldr r2, [r5, #0x10] + mov r0, #0x1c + bic r2, r0 + lsl r0, r1, #0x1d + add r3, r2, #0 + lsr r0, r0, #0x1b + orr r3, r0 + str r3, [r5, #0x10] + lsl r3, r3, #0x1b + lsr r3, r3, #0x1d + lsl r3, r3, #4 + add r3, #0x18 + ldr r0, [r5, #0x14] + mov r1, #0 + mov r2, #3 + neg r3, r3 + bl FUN_0201AEE4 + pop {r3, r4, r5, pc} +_021D80BE: + mov r0, #0x80 + tst r0, r1 + beq _021D80F6 + ldr r0, [r5, #0x10] + mov r1, #7 + lsl r0, r0, #0x1b + lsr r0, r0, #0x1d + add r0, r0, #1 + bl _u32_div_f + ldr r2, [r5, #0x10] + mov r0, #0x1c + bic r2, r0 + lsl r0, r1, #0x1d + add r3, r2, #0 + lsr r0, r0, #0x1b + orr r3, r0 + str r3, [r5, #0x10] + lsl r3, r3, #0x1b + lsr r3, r3, #0x1d + lsl r3, r3, #4 + add r3, #0x18 + ldr r0, [r5, #0x14] + mov r1, #0 + mov r2, #3 + neg r3, r3 + bl FUN_0201AEE4 +_021D80F6: + pop {r3, r4, r5, pc} + .align 2, 0 +_021D80F8: .word 0x021C48B8 + thumb_func_end MOD60_021D801C + + .section .rodata + ; 0x021D80FC + .incbin "baserom.nds", 0x2AD81C, 0xDC |