diff options
Diffstat (limited to 'arm9/modules/05/asm/mod05_021E3340.s')
-rw-r--r-- | arm9/modules/05/asm/mod05_021E3340.s | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/arm9/modules/05/asm/mod05_021E3340.s b/arm9/modules/05/asm/mod05_021E3340.s new file mode 100644 index 00000000..264edb7b --- /dev/null +++ b/arm9/modules/05/asm/mod05_021E3340.s @@ -0,0 +1,128 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD05_021E3340 +MOD05_021E3340: ; 0x021E3340 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #4 + bhi _021E3414 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021E3366: ; jump table + .short _021E3370 - _021E3366 - 2 ; case 0 + .short _021E3388 - _021E3366 - 2 ; case 1 + .short _021E33A0 - _021E3366 - 2 ; case 2 + .short _021E33E4 - _021E3366 - 2 ; case 3 + .short _021E33FE - _021E3366 - 2 ; case 4 +_021E3370: + mov r0, #2 + add r1, r0, #0 + str r0, [sp] + sub r1, #0x12 + mov r2, #0 + mov r3, #0x3f + bl FUN_0200A208 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E3414 +_021E3388: + mov r0, #2 + bl FUN_0200A344 + cmp r0, #0 + beq _021E3414 + ldr r0, [r5, #8] + bl MOD19_022524F4 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E3414 +_021E33A0: + ldr r0, [r5, #8] + bl MOD19_02252504 + cmp r0, #0 + beq _021E3414 + ldr r0, [r5, #0xc] + bl FUN_0204C1A8 + add r6, r0, #0 + ldr r0, _021E341C ; =SDK_OVERLAY_MODULE_19_ID + bl UnloadOverlayByID + ldr r0, _021E3420 ; =SDK_OVERLAY_MODULE_20_ID + mov r1, #2 + bl HandleLoadOverlay + add r0, r6, #0 + bl FUN_0204BEB8 + mov r0, #1 + bl FUN_0200A03C + str r0, [sp] + ldr r1, [r5, #4] + ldr r2, [r5, #0xc] + ldr r3, [r5, #8] + add r0, r5, #0 + add r1, #0x14 + bl MOD20_02252448 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E3414 +_021E33E4: + mov r1, #0 + mov r0, #2 + add r2, r1, #0 + str r0, [sp] + mov r0, #4 + sub r2, #0x10 + mov r3, #0x3f + bl FUN_0200A208 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021E3414 +_021E33FE: + mov r0, #2 + bl FUN_0200A344 + cmp r0, #0 + beq _021E3414 + add r0, r4, #0 + bl FreeToHeap + add sp, #4 + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_021E3414: + mov r0, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_021E341C: .word SDK_OVERLAY_MODULE_19_ID +_021E3420: .word SDK_OVERLAY_MODULE_20_ID + + thumb_func_start MOD05_021E3424 +MOD05_021E3424: ; 0x021E3424 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xb + mov r1, #4 + bl AllocFromHeapAtEnd + add r2, r0, #0 + mov r0, #0 + str r0, [r2] + ldr r1, _021E3440 ; =MOD05_021E3340 + add r0, r4, #0 + bl FUN_0204640C + pop {r4, pc} + .balign 4, 0 +_021E3440: .word MOD05_021E3340 |