diff options
Diffstat (limited to 'arm9/modules/70')
| -rw-r--r-- | arm9/modules/70/asm/module_70.s | 1702 |
1 files changed, 1702 insertions, 0 deletions
diff --git a/arm9/modules/70/asm/module_70.s b/arm9/modules/70/asm/module_70.s new file mode 100644 index 00000000..dd072eaa --- /dev/null +++ b/arm9/modules/70/asm/module_70.s @@ -0,0 +1,1702 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD70_021D74E0 +MOD70_021D74E0: ; 0x021D74E0 + push {r3, r4, r5, lr} + mov r2, #1 + add r5, r0, #0 + mov r0, #3 + mov r1, #0x3c + lsl r2, r2, #0xe + bl FUN_0201681C + mov r2, #7 + mov r0, #3 + mov r1, #0x3d + lsl r2, r2, #0xe + bl FUN_0201681C + add r0, r5, #0 + mov r1, #0xdc + mov r2, #0x3c + bl FUN_02006268 + add r4, r0, #0 + beq _021D7558 + add r0, r5, #0 + bl FUN_0200628C + add r1, r4, #0 + add r1, #0xcc + str r0, [r1] + add r0, r4, #0 + mov r1, #0 + add r0, #0xd4 + str r1, [r0] + add r0, r4, #0 + add r0, #0xcc + ldr r0, [r0] + bl FUN_0202B1F0 + add r1, r4, #0 + add r1, #0xd0 + str r0, [r1] + add r1, r4, #0 + add r1, #0xcc + ldr r1, [r1] + add r0, r4, #0 + bl MOD70_021D7724 + add r0, r4, #0 + add r1, r4, #0 + bl MOD70_021D77CC + add r1, r4, #0 + add r1, #0xc8 + str r0, [r1] + add r0, r4, #0 + add r0, #0xc8 + ldr r0, [r0] + mov r1, #0 + bl MOD70_021D7930 + add r4, #0xd8 + str r0, [r4] +_021D7558: + mov r0, #1 + pop {r3, r4, r5, pc} + thumb_func_end MOD70_021D74E0 + + thumb_func_start MOD70_021D755C +MOD70_021D755C: ; 0x021D755C + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + add r0, #0xc8 + ldr r0, [r0] + bl MOD70_021D78A0 + add r0, r4, #0 + bl MOD70_021D7760 + add r0, r5, #0 + bl FUN_0200627C + mov r0, #0x3d + bl FUN_020168D0 + mov r0, #0x3c + bl FUN_020168D0 + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD70_021D755C + + thumb_func_start MOD70_021D758C +MOD70_021D758C: ; 0x021D758C + push {r3, r4, r5, lr} + add r5, r1, #0 + bl FUN_02006278 + add r4, r0, #0 + add r0, #0xd8 + ldr r0, [r0] + cmp r0, #0 + beq _021D75B8 + add r0, r4, #0 + add r0, #0xc8 + ldr r0, [r0] + bl MOD70_021D7958 + cmp r0, #0 + bne _021D75B0 + mov r0, #0 + pop {r3, r4, r5, pc} +_021D75B0: + add r0, r4, #0 + mov r1, #0 + add r0, #0xd8 + str r1, [r0] +_021D75B8: + ldr r0, [r5] + cmp r0, #0 + beq _021D75C4 + cmp r0, #1 + beq _021D768A + b _021D768E +_021D75C4: + ldr r0, _021D7694 ; =0x021C48B8 + mov r1, #2 + ldr r0, [r0, #0x48] + add r2, r0, #0 + tst r2, r1 + beq _021D75E0 + add r0, r4, #0 + mov r1, #1 + bl MOD70_021D7698 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D768E +_021D75E0: + mov r2, #1 + add r3, r0, #0 + tst r3, r2 + beq _021D75F8 + ldr r0, [r4, #0x1c] + mov r1, #4 + eor r0, r2 + str r0, [r4, #0x1c] + add r0, r4, #0 + bl MOD70_021D7698 + b _021D768E +_021D75F8: + mov r2, #0x20 + tst r2, r0 + beq _021D7612 + add r0, r4, #0 + bl MOD70_021D76AC + cmp r0, #0 + beq _021D768E + add r0, r4, #0 + mov r1, #3 + bl MOD70_021D7698 + b _021D768E +_021D7612: + mov r2, #0x10 + tst r2, r0 + beq _021D762C + add r0, r4, #0 + bl MOD70_021D76E8 + cmp r0, #0 + beq _021D768E + add r0, r4, #0 + mov r1, #3 + bl MOD70_021D7698 + b _021D768E +_021D762C: + mov r2, #0x40 + tst r2, r0 + beq _021D765C + ldr r0, [r4, #0x18] + sub r0, r0, #1 + str r0, [r4, #0x18] + bpl _021D7654 + add r0, r4, #0 + bl MOD70_021D76AC + cmp r0, #0 + beq _021D768E + ldr r0, [r4, #0x14] + mov r1, #3 + sub r0, r0, #1 + str r0, [r4, #0x18] + add r0, r4, #0 + bl MOD70_021D7698 + b _021D768E +_021D7654: + add r0, r4, #0 + bl MOD70_021D7698 + b _021D768E +_021D765C: + mov r2, #0x80 + tst r0, r2 + beq _021D768E + ldr r0, [r4, #0x18] + add r2, r0, #1 + str r2, [r4, #0x18] + ldr r0, [r4, #0x14] + cmp r2, r0 + blt _021D7682 + add r0, r4, #0 + bl MOD70_021D76E8 + cmp r0, #0 + beq _021D768E + add r0, r4, #0 + mov r1, #3 + bl MOD70_021D7698 + b _021D768E +_021D7682: + add r0, r4, #0 + bl MOD70_021D7698 + b _021D768E +_021D768A: + mov r0, #1 + pop {r3, r4, r5, pc} +_021D768E: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_021D7694: .word 0x021C48B8 + thumb_func_end MOD70_021D758C + + thumb_func_start MOD70_021D7698 +MOD70_021D7698: ; 0x021D7698 + push {r4, lr} + add r4, r0, #0 + add r0, #0xc8 + ldr r0, [r0] + bl MOD70_021D7930 + add r4, #0xd8 + str r0, [r4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD70_021D7698 + + thumb_func_start MOD70_021D76AC +MOD70_021D76AC: ; 0x021D76AC + push {r3, lr} + add r1, r0, #0 + add r1, #0xd4 + ldr r1, [r1] + add r2, r1, #1 + add r1, r0, #0 + add r1, #0xd4 + str r2, [r1] + add r1, r0, #0 + add r1, #0xd4 + ldr r2, [r1] + add r1, r0, #0 + add r1, #0xd0 + ldr r1, [r1] + cmp r2, r1 + blt _021D76D4 + add r1, r0, #0 + mov r2, #0 + add r1, #0xd4 + str r2, [r1] +_021D76D4: + add r1, r0, #0 + add r2, r0, #0 + add r1, #0xcc + add r2, #0xd4 + ldr r1, [r1] + ldr r2, [r2] + bl MOD70_021D777C + mov r0, #1 + pop {r3, pc} + thumb_func_end MOD70_021D76AC + + thumb_func_start MOD70_021D76E8 +MOD70_021D76E8: ; 0x021D76E8 + push {r3, lr} + add r1, r0, #0 + add r1, #0xd4 + ldr r1, [r1] + sub r2, r1, #1 + add r1, r0, #0 + add r1, #0xd4 + str r2, [r1] + add r1, r0, #0 + add r1, #0xd4 + ldr r1, [r1] + cmp r1, #0 + bge _021D7710 + add r1, r0, #0 + add r1, #0xd0 + ldr r1, [r1] + sub r2, r1, #1 + add r1, r0, #0 + add r1, #0xd4 + str r2, [r1] +_021D7710: + add r1, r0, #0 + add r2, r0, #0 + add r1, #0xcc + add r2, #0xd4 + ldr r1, [r1] + ldr r2, [r2] + bl MOD70_021D777C + mov r0, #1 + pop {r3, pc} + thumb_func_end MOD70_021D76E8 + + thumb_func_start MOD70_021D7724 +MOD70_021D7724: ; 0x021D7724 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + str r1, [sp, #4] + mov r4, #0 + add r5, r0, #0 + mov r6, #0xc + mov r7, #0x3c +_021D7734: + add r0, r6, #0 + add r1, r7, #0 + bl FUN_020219F4 + str r0, [r5, #0x20] + mov r0, #8 + mov r1, #0x3c + bl FUN_020219F4 + str r0, [r5, #0x24] + add r4, r4, #1 + add r5, #0x1c + cmp r4, #6 + blt _021D7734 + ldr r0, [sp] + mov r2, #0 + ldr r1, [sp, #4] + str r2, [r0, #0x1c] + bl MOD70_021D777C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD70_021D7724 + + thumb_func_start MOD70_021D7760 +MOD70_021D7760: ; 0x021D7760 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 +_021D7766: + ldr r0, [r5, #0x20] + bl FUN_02021A20 + ldr r0, [r5, #0x24] + bl FUN_02021A20 + add r4, r4, #1 + add r5, #0x1c + cmp r4, #6 + blt _021D7766 + pop {r3, r4, r5, pc} + thumb_func_end MOD70_021D7760 + + thumb_func_start MOD70_021D777C +MOD70_021D777C: ; 0x021D777C + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + add r6, r0, #0 + str r2, [sp] + add r0, r7, #0 + add r1, r2, #0 + bl FUN_0202B21C + str r0, [r6] + ldr r1, [sp] + add r0, r7, #0 + bl FUN_0202B250 + str r0, [r6, #0x14] + ldr r1, [sp] + add r0, r7, #0 + add r2, r6, #4 + bl FUN_0202B31C + ldr r0, [r6, #0x14] + mov r4, #0 + cmp r0, #0 + ble _021D77C4 + add r5, r6, #0 + add r5, #0x20 +_021D77AE: + ldr r1, [sp] + add r0, r7, #0 + add r2, r4, #0 + add r3, r5, #0 + bl FUN_0202B29C + ldr r0, [r6, #0x14] + add r4, r4, #1 + add r5, #0x1c + cmp r4, r0 + blt _021D77AE +_021D77C4: + mov r0, #0 + str r0, [r6, #0x18] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD70_021D777C + + thumb_func_start MOD70_021D77CC +MOD70_021D77CC: ; 0x021D77CC + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r6, r1, #0 + add r5, r0, #0 + ldr r1, _021D7894 ; =0x00000E1C + mov r0, #0x3d + bl FUN_02016998 + add r4, r0, #0 + beq _021D788C + str r5, [r4] + str r6, [r4, #4] + mov r0, #0x3d + bl FUN_02016B94 + str r0, [r4, #0x10] + bl FUN_020B0FC0 + mov r0, #0 + str r0, [sp] + mov r1, #0x80 + str r1, [sp, #4] + str r0, [sp, #8] + mov r3, #0x20 + str r3, [sp, #0xc] + mov r2, #0x3d + str r2, [sp, #0x10] + add r2, r0, #0 + bl FUN_02009EAC + add r1, r4, #0 + mov r0, #0x40 + add r1, #0x38 + mov r2, #0x3d + bl FUN_02008C9C + str r0, [r4, #0x34] + ldr r2, _021D7898 ; =0x00000139 + mov r0, #0 + mov r1, #0x1a + mov r3, #0x3d + bl FUN_0200A86C + mov r2, #6 + lsl r2, r2, #6 + str r0, [r4, r2] + mov r0, #1 + mov r1, #0x1a + sub r2, #0x16 + mov r3, #0x3d + bl FUN_0200A86C + mov r2, #0x61 + lsl r2, r2, #2 + str r0, [r4, r2] + mov r0, #1 + mov r1, #0x1a + add r2, #0xc8 + mov r3, #0x3d + bl FUN_0200A86C + mov r1, #0x62 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0x3d + bl FUN_0200AA80 + mov r1, #0x63 + lsl r1, r1, #2 + str r0, [r4, r1] + sub r1, #0x8c + add r0, r1, #0 + mov r1, #0x3d + bl FUN_020219F4 + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [r4, r1] + sub r1, #0x90 + add r0, r1, #0 + mov r1, #0x3d + bl FUN_020219F4 + mov r1, #0x65 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0x3d + bl FUN_020669C0 + mov r1, #0x66 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, _021D789C ; =MOD70_021D790C + add r1, r4, #0 + bl FUN_02015F10 +_021D788C: + add r0, r4, #0 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + nop +_021D7894: .word 0x00000E1C +_021D7898: .word 0x00000139 +_021D789C: .word MOD70_021D790C + thumb_func_end MOD70_021D77CC + + thumb_func_start MOD70_021D78A0 +MOD70_021D78A0: ; 0x021D78A0 + push {r4, lr} + add r4, r0, #0 + beq _021D790A + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + mov r0, #0x66 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02016A18 + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02021A20 + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02021A20 + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200AB18 + mov r0, #0x62 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + ldr r0, [r4, #0x34] + bl FUN_0201FD58 + bl FUN_02009FA0 + ldr r0, [r4, #0x10] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 +_021D790A: + pop {r4, pc} + thumb_func_end MOD70_021D78A0 + + thumb_func_start MOD70_021D790C +MOD70_021D790C: ; 0x021D790C + push {r3, lr} + ldr r0, [r0, #0x34] + bl FUN_0201FDEC + bl FUN_02009F80 + ldr r3, _021D7928 ; =0x027E0000 + ldr r1, _021D792C ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r3, pc} + nop +_021D7928: .word 0x027E0000 +_021D792C: .word 0x00003FF8 + thumb_func_end MOD70_021D790C + + thumb_func_start MOD70_021D7930 +MOD70_021D7930: ; 0x021D7930 + push {r3, lr} + add r2, r1, #0 + str r2, [r0, #0xc] + mov r1, #0 + lsl r3, r2, #2 + str r1, [r0, #8] + ldr r2, _021D7954 ; =0x021D82E0 + add r1, r0, #0 + ldr r2, [r2, r3] + add r1, #8 + blx r2 + cmp r0, #0 + bne _021D794E + mov r0, #1 + pop {r3, pc} +_021D794E: + mov r0, #0 + pop {r3, pc} + nop +_021D7954: .word 0x021D82E0 + thumb_func_end MOD70_021D7930 + + thumb_func_start MOD70_021D7958 +MOD70_021D7958: ; 0x021D7958 + push {r3, lr} + ldr r2, [r0, #0xc] + add r1, r0, #0 + lsl r3, r2, #2 + ldr r2, _021D796C ; =0x021D82E0 + add r1, #8 + ldr r2, [r2, r3] + blx r2 + pop {r3, pc} + nop +_021D796C: .word 0x021D82E0 + thumb_func_end MOD70_021D7958 + + thumb_func_start MOD70_021D7970 +MOD70_021D7970: ; 0x021D7970 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + ldr r1, [r4] + add r5, r0, #0 + cmp r1, #0 + beq _021D7984 + cmp r1, #1 + beq _021D79AC + b _021D79BA +_021D7984: + bl MOD70_021D7AF4 + add r0, r5, #0 + bl MOD70_021D7F70 + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x3d + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D79BA +_021D79AC: + bl FUN_0200E308 + cmp r0, #0 + beq _021D79BA + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_021D79BA: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + thumb_func_end MOD70_021D7970 + + thumb_func_start MOD70_021D79C0 +MOD70_021D79C0: ; 0x021D79C0 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _021D79D4 + cmp r0, #1 + beq _021D79FA + b _021D7A14 +_021D79D4: + ldr r0, _021D7A1C ; =0x0000060E + bl FUN_020054C8 + mov r1, #0 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x3d + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D7A14 +_021D79FA: + bl FUN_0200E308 + cmp r0, #0 + beq _021D7A14 + add r0, r5, #0 + bl MOD70_021D7FC4 + add r0, r5, #0 + bl MOD70_021D7C10 + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_021D7A14: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + nop +_021D7A1C: .word 0x0000060E + thumb_func_end MOD70_021D79C0 + + thumb_func_start MOD70_021D7A20 +MOD70_021D7A20: ; 0x021D7A20 + push {r3, r4, r5, r6, r7, lr} + ldr r7, [r0, #4] + str r0, [sp] + ldr r0, [r7, #0x14] + mov r4, #0 + cmp r0, #0 + ble _021D7A82 + ldr r5, [sp] + add r6, r7, #0 +_021D7A32: + ldr r0, [r7, #0x18] + cmp r4, r0 + bne _021D7A5E + mov r0, #0x16 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_02020398 + mov r0, #0x16 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_02020310 + mov r0, #1 + bl FUN_02005E80 + ldrh r0, [r6, #0x30] + bl FUN_02005578 + b _021D7A76 +_021D7A5E: + mov r0, #0x16 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_02020398 + mov r0, #0x16 + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r1, r4, #1 + bl FUN_02020310 +_021D7A76: + ldr r0, [r7, #0x14] + add r4, r4, #1 + add r5, r5, #4 + add r6, #0x1c + cmp r4, r0 + blt _021D7A32 +_021D7A82: + ldr r0, [sp] + bl MOD70_021D7D98 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD70_021D7A20 + + thumb_func_start MOD70_021D7A8C +MOD70_021D7A8C: ; 0x021D7A8C + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4] + cmp r1, #3 + bhi _021D7AD6 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_021D7AA2: ; jump table + .short _021D7AAA - _021D7AA2 - 2 ; case 0 + .short _021D7AB6 - _021D7AA2 - 2 ; case 1 + .short _021D7AC2 - _021D7AA2 - 2 ; case 2 + .short _021D7ACE - _021D7AA2 - 2 ; case 3 +_021D7AAA: + bl MOD70_021D7CC0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D7AD6 +_021D7AB6: + bl MOD70_021D820C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D7AD6 +_021D7AC2: + bl MOD70_021D80C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D7AD6 +_021D7ACE: + bl MOD70_021D7CB0 + mov r0, #1 + pop {r4, pc} +_021D7AD6: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD70_021D7A8C + + thumb_func_start MOD70_021D7ADC +MOD70_021D7ADC: ; 0x021D7ADC + push {r4, lr} + add r4, r0, #0 + ldr r0, _021D7AF0 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0 + bl MOD70_021D7D98 + mov r0, #1 + pop {r4, pc} + .align 2, 0 +_021D7AF0: .word 0x000005DC + thumb_func_end MOD70_021D7ADC + + thumb_func_start MOD70_021D7AF4 +MOD70_021D7AF4: ; 0x021D7AF4 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, _021D7BF8 ; =0x021D8284 + bl FUN_0201E66C + ldr r2, _021D7BFC ; =0x04000304 + ldrh r1, [r2] + lsr r0, r2, #0xb + orr r0, r1 + strh r0, [r2] + ldr r0, _021D7C00 ; =0x021D823C + bl FUN_02016BBC + ldr r0, [r5, #0x10] + ldr r2, _021D7C04 ; =0x021D8268 + mov r1, #1 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r5, #0x10] + ldr r2, _021D7C08 ; =0x021D824C + mov r1, #2 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r1, #1 + str r1, [sp, #8] + mov r0, #0x3d + str r0, [sp, #0xc] + ldr r2, [r5, #0x10] + mov r0, #0x65 + mov r3, #2 + bl FUN_0200687C + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x3d + str r0, [sp, #0xc] + ldr r2, [r5, #0x10] + mov r0, #0x65 + mov r3, #2 + bl FUN_020068C8 + mov r0, #0x40 + str r0, [sp] + mov r0, #0x3d + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x65 + mov r1, #2 + add r3, r2, #0 + bl FUN_02006930 + mov r2, #0 + str r2, [sp] + mov r1, #1 + ldr r0, [r5, #0x10] + add r3, r1, #0 + bl FUN_02017F48 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + str r2, [sp, #0xc] + ldr r0, [r5, #0x10] + mov r1, #1 + add r3, r2, #0 + bl FUN_02018540 + add r0, r5, #0 + mov r1, #1 + bl MOD70_021D7C2C + add r4, r0, #0 + add r0, r5, #0 + bl MOD70_021D7CB0 + mov r0, #0 + str r0, [sp] + mov r0, #0x3d + str r0, [sp, #4] + lsl r2, r4, #0x10 + ldr r0, [r5, #0x10] + mov r1, #1 + lsr r2, r2, #0x10 + mov r3, #2 + bl FUN_0200CB00 + add r0, r5, #0 + lsl r2, r4, #0x10 + add r0, #0x14 + mov r1, #0 + lsr r2, r2, #0x10 + mov r3, #2 + bl FUN_0200CCA4 + add r0, r5, #0 + lsl r2, r4, #0x10 + add r0, #0x24 + mov r1, #0 + lsr r2, r2, #0x10 + mov r3, #2 + bl FUN_0200CCA4 + ldr r0, [r5, #0x10] + mov r1, #1 + bl FUN_02017CD0 + mov r3, #8 + ldr r0, _021D7C0C ; =0x04000050 + mov r1, #0 + mov r2, #6 + str r3, [sp] + bl G2x_SetBlendAlpha_ + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7BF8: .word 0x021D8284 +_021D7BFC: .word 0x04000304 +_021D7C00: .word 0x021D823C +_021D7C04: .word 0x021D8268 +_021D7C08: .word 0x021D824C +_021D7C0C: .word 0x04000050 + thumb_func_end MOD70_021D7AF4 + + thumb_func_start MOD70_021D7C10 +MOD70_021D7C10: ; 0x021D7C10 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #0x10] + mov r1, #2 + bl FUN_020178A0 + add r0, r4, #0 + bl MOD70_021D7C98 + pop {r4, pc} + thumb_func_end MOD70_021D7C10 + + thumb_func_start MOD70_021D7C2C +MOD70_021D7C2C: ; 0x021D7C2C + push {r4, r5, lr} + sub sp, #0x14 + mov r2, #1 + add r5, r0, #0 + str r2, [sp] + mov r0, #0x1e + str r0, [sp, #4] + mov r0, #2 + add r4, r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + add r1, r5, #0 + ldr r0, [r5, #0x10] + add r1, #0x14 + add r3, r2, #0 + bl FUN_02019064 + mov r0, #0x13 + str r0, [sp] + mov r0, #0x1e + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + add r0, r4, #0 + add r0, #0x3c + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + add r1, r5, #0 + mov r2, #1 + ldr r0, [r5, #0x10] + add r1, #0x24 + add r3, r2, #0 + bl FUN_02019064 + add r0, r5, #0 + add r0, #0x14 + bl FUN_02019270 + add r5, #0x24 + add r0, r5, #0 + bl FUN_02019270 + add r4, #0xb4 + add r0, r4, #0 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD70_021D7C2C + + thumb_func_start MOD70_021D7C98 +MOD70_021D7C98: ; 0x021D7C98 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 + add r5, #0x14 +_021D7CA0: + add r0, r5, #0 + bl FUN_02019178 + add r4, r4, #1 + add r5, #0x10 + cmp r4, #2 + blt _021D7CA0 + pop {r3, r4, r5, pc} + thumb_func_end MOD70_021D7C98 + + thumb_func_start MOD70_021D7CB0 +MOD70_021D7CB0: ; 0x021D7CB0 + push {r4, lr} + add r4, r0, #0 + bl MOD70_021D7CE8 + add r0, r4, #0 + bl MOD70_021D7D98 + pop {r4, pc} + thumb_func_end MOD70_021D7CB0 + + thumb_func_start MOD70_021D7CC0 +MOD70_021D7CC0: ; 0x021D7CC0 + push {r4, lr} + add r4, r0, #0 + add r0, #0x14 + mov r1, #0xf + bl FUN_02019620 + add r0, r4, #0 + add r0, #0x24 + mov r1, #0xf + bl FUN_02019620 + add r0, r4, #0 + add r0, #0x14 + bl FUN_02019548 + add r4, #0x24 + add r0, r4, #0 + bl FUN_02019548 + pop {r4, pc} + thumb_func_end MOD70_021D7CC0 + + thumb_func_start MOD70_021D7CE8 +MOD70_021D7CE8: ; 0x021D7CE8 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r4, [r5, #4] + mov r1, #0 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x63 + lsl r0, r0, #2 + add r6, r5, #0 + ldr r0, [r5, r0] + ldr r2, [r4] + mov r3, #4 + add r6, #0x14 + bl FUN_0200AD38 + mov r0, #0 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x63 + lsl r0, r0, #2 + mov r2, #0x7d + ldr r3, [r4, #4] + lsl r2, r2, #4 + add r2, r3, r2 + ldr r0, [r5, r0] + mov r3, #4 + bl FUN_0200AD38 + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, [r4, #8] + mov r1, #2 + bl FUN_0200B764 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x63 + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, [r4, #0xc] + mov r1, #3 + mov r3, #2 + bl FUN_0200AD38 + mov r2, #6 + lsl r2, r2, #6 + ldr r0, [r5, r2] + add r2, #0x10 + ldr r2, [r5, r2] + mov r1, #0 + bl FUN_0200A8E0 + mov r2, #0x63 + lsl r2, r2, #2 + add r1, r2, #0 + ldr r0, [r5, r2] + add r1, #8 + add r2, r2, #4 + ldr r1, [r5, r1] + ldr r2, [r5, r2] + bl FUN_0200B7B8 + add r0, r6, #0 + mov r1, #0xf + bl FUN_02019620 + mov r1, #0 + str r1, [sp] + mov r2, #0xff + str r2, [sp, #4] + str r1, [sp, #8] + add r2, #0x95 + ldr r2, [r5, r2] + add r0, r6, #0 + add r3, r1, #0 + bl FUN_0201BD84 + add r0, r6, #0 + bl FUN_02019548 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD70_021D7CE8 + + thumb_func_start MOD70_021D7D98 +MOD70_021D7D98: ; 0x021D7D98 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r4, [r5, #4] + mov r0, #0x1c + ldr r1, [r4, #0x18] + add r2, r4, #0 + mul r0, r1 + add r2, #0x20 + add r7, r2, r0 + add r0, r5, #0 + str r0, [sp, #0xc] + add r0, #0x24 + mov r1, #0xf + str r0, [sp, #0xc] + bl FUN_02019620 + ldr r0, [r4, #0x1c] + cmp r0, #0 + beq _021D7DC8 + cmp r0, #1 + bne _021D7DC6 + b _021D7F1C +_021D7DC6: + b _021D7F66 +_021D7DC8: + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + str r1, [sp, #8] + ldr r0, [sp, #0xc] + ldr r2, [r7] + add r3, r1, #0 + bl FUN_0201BD84 + mov r2, #6 + lsl r2, r2, #6 + ldr r0, [r5, r2] + add r2, #0x10 + ldr r2, [r5, r2] + mov r1, #5 + bl FUN_0200A8E0 + mov r1, #0 + str r1, [sp] + mov r2, #0xff + str r2, [sp, #4] + str r1, [sp, #8] + add r2, #0x91 + ldr r0, [sp, #0xc] + ldr r2, [r5, r2] + mov r3, #0x48 + bl FUN_0201BD84 + mov r2, #0x61 + lsl r2, r2, #2 + ldr r0, [r5, r2] + add r2, #0xc + ldrh r1, [r7, #0x10] + ldr r2, [r5, r2] + bl FUN_0200A8E0 + mov r1, #0 + str r1, [sp] + mov r2, #0xff + str r2, [sp, #4] + str r1, [sp, #8] + add r2, #0x91 + ldr r0, [sp, #0xc] + ldr r2, [r5, r2] + mov r3, #0x5e + bl FUN_0201BD84 + ldrh r0, [r7, #0x10] + ldr r1, [r7, #8] + bl FUN_02068A20 + cmp r0, #0 + beq _021D7E3A + cmp r0, #1 + beq _021D7E4C + b _021D7E5E +_021D7E3A: + mov r2, #6 + lsl r2, r2, #6 + ldr r0, [r5, r2] + add r2, #0x10 + ldr r2, [r5, r2] + mov r1, #3 + bl FUN_0200A8E0 + b _021D7E68 +_021D7E4C: + mov r2, #6 + lsl r2, r2, #6 + ldr r0, [r5, r2] + add r2, #0x10 + ldr r2, [r5, r2] + mov r1, #4 + bl FUN_0200A8E0 + b _021D7E68 +_021D7E5E: + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_02021A4C +_021D7E68: + mov r1, #0 + str r1, [sp] + mov r2, #0xff + str r2, [sp, #4] + str r1, [sp, #8] + add r2, #0x91 + ldr r0, [sp, #0xc] + ldr r2, [r5, r2] + mov r3, #0xae + bl FUN_0201BD84 + mov r2, #6 + lsl r2, r2, #6 + ldr r0, [r5, r2] + add r2, #0x10 + ldr r2, [r5, r2] + mov r1, #1 + bl FUN_0200A8E0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x63 + lsl r0, r0, #2 + ldrb r2, [r7, #0x12] + ldr r0, [r5, r0] + mov r1, #0 + mov r3, #4 + bl FUN_0200AD38 + mov r2, #0x63 + lsl r2, r2, #2 + add r1, r2, #0 + ldr r0, [r5, r2] + add r1, #8 + add r2, r2, #4 + ldr r1, [r5, r1] + ldr r2, [r5, r2] + bl FUN_0200B7B8 + mov r1, #0 + str r1, [sp] + mov r2, #0xff + str r2, [sp, #4] + str r1, [sp, #8] + add r2, #0x95 + ldr r0, [sp, #0xc] + ldr r2, [r5, r2] + mov r3, #0xc2 + bl FUN_0201BD84 + mov r2, #6 + lsl r2, r2, #6 + ldr r0, [r5, r2] + add r2, #0x10 + ldr r2, [r5, r2] + mov r1, #2 + bl FUN_0200A8E0 + mov r0, #0x10 + str r0, [sp] + mov r2, #0xff + str r2, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + add r2, #0x91 + ldr r0, [sp, #0xc] + ldr r2, [r5, r2] + add r3, r1, #0 + bl FUN_0201BD84 + mov r1, #0x19 + lsl r1, r1, #4 + mov r0, #0 + ldr r1, [r5, r1] + add r2, r0, #0 + bl FUN_02002E14 + add r3, r0, #0 + mov r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + ldr r0, [sp, #0xc] + ldr r2, [r7, #4] + bl FUN_0201BD84 + b _021D7F66 +_021D7F1C: + mov r4, #0 +_021D7F1E: + ldrh r1, [r7, #0x14] + cmp r1, #0 + beq _021D7F66 + mov r0, #0x62 + mov r2, #0x19 + lsl r0, r0, #2 + lsl r2, r2, #4 + ldr r0, [r5, r0] + ldr r2, [r5, r2] + bl FUN_0200A8E0 + lsr r0, r4, #0x1f + add r0, r4, r0 + asr r0, r0, #1 + lsl r0, r0, #4 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + mov r2, #0x19 + str r0, [sp, #8] + lsl r2, r2, #4 + mov r3, #1 + add r6, r4, #0 + and r6, r3 + mov r3, #0x60 + ldr r0, [sp, #0xc] + ldr r2, [r5, r2] + mov r1, #0 + mul r3, r6 + bl FUN_0201BD84 + add r4, r4, #1 + add r7, r7, #2 + cmp r4, #4 + blt _021D7F1E +_021D7F66: + ldr r0, [sp, #0xc] + bl FUN_02019548 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD70_021D7D98 + + thumb_func_start MOD70_021D7F70 +MOD70_021D7F70: ; 0x021D7F70 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #0x3d + str r0, [sp] + mov r0, #0x1b + mov r1, #0x29 + mov r2, #0 + add r3, sp, #8 + bl FUN_02006C30 + mov r1, #0x5e + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0x3d + str r0, [sp] + mov r0, #0x1b + mov r1, #0x2a + mov r2, #0 + add r3, sp, #4 + bl FUN_02006C5C + mov r1, #0x5f + lsl r1, r1, #2 + str r0, [r4, r1] + add r1, #0x20 + mov r2, #0x32 + mov r0, #0 + add r1, r4, r1 + lsl r2, r2, #6 + bl MIi_CpuClearFast + ldr r1, [sp, #8] + ldr r2, [sp, #4] + add r0, r4, #0 + bl MOD70_021D7FF8 + add r0, r4, #0 + bl MOD70_021D80C8 + add sp, #0xc + pop {r3, r4, pc} + thumb_func_end MOD70_021D7F70 + + thumb_func_start MOD70_021D7FC4 +MOD70_021D7FC4: ; 0x021D7FC4 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r6, #0x16 + mov r4, #0 + add r5, r7, #0 + lsl r6, r6, #4 +_021D7FD0: + ldr r0, [r5, r6] + cmp r0, #0 + beq _021D7FDA + bl FUN_0201FFC8 +_021D7FDA: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _021D7FD0 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r7, r0] + bl FUN_02016A18 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r7, r0] + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD70_021D7FC4 + + thumb_func_start MOD70_021D7FF8 +MOD70_021D7FF8: ; 0x021D7FF8 + push {r4, r5, r6, r7, lr} + sub sp, #0x94 + mov r3, #0 + add r5, r0, #0 + str r1, [sp, #0x7c] + str r2, [sp, #0x80] + str r3, [sp, #0x74] + str r3, [sp, #0x84] + str r3, [sp, #0x88] + str r3, [sp, #0x8c] + add r0, sp, #0x90 + strb r3, [r0] + add r0, sp, #0x2c + str r0, [sp, #0x70] + add r0, sp, #0x18 + str r0, [sp, #0x78] + ldr r0, [r5, #0x34] + mov r1, #0x28 + str r0, [sp, #0x50] + add r0, sp, #0x70 + str r0, [sp, #0x54] + mov r0, #1 + str r0, [sp, #0x68] + mov r0, #0x3d + str r3, [sp, #0x60] + str r0, [sp, #0x6c] + str r0, [sp] + add r2, r3, #0 + mov r0, #0x1b + add r3, sp, #0x14 + bl FUN_02006BB0 + str r0, [sp, #0xc] + mov r0, #0x1b + mov r1, #0x27 + add r2, sp, #0x10 + mov r3, #0x3d + bl FUN_02006C08 + mov r4, #0 + ldr r6, _021D80C4 ; =0x021D82AC + str r0, [sp, #8] + str r4, [sp, #4] + add r7, r4, #0 +_021D8050: + add r0, sp, #0x2c + bl FUN_020B1A24 + add r0, sp, #0x18 + bl FUN_020B19DC + ldr r0, [sp, #0x14] + add r1, r4, #0 + mov r2, #1 + add r3, sp, #0x2c + bl FUN_020B1768 + ldr r0, [sp, #0x10] + add r1, r7, #0 + mov r2, #1 + add r3, sp, #0x18 + bl FUN_020B1240 + ldr r0, [r6] + lsl r0, r0, #0xc + str r0, [sp, #0x58] + ldr r0, [r6, #4] + lsl r0, r0, #0xc + str r0, [sp, #0x5c] + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #0x64] + add r0, sp, #0x50 + bl FUN_0201FF84 + mov r1, #0x16 + lsl r1, r1, #4 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x32 + lsl r0, r0, #6 + add r4, r4, r0 + ldr r0, [sp, #4] + add r7, #0x20 + add r0, r0, #1 + add r6, #8 + add r5, r5, #4 + str r0, [sp, #4] + cmp r0, #6 + blt _021D8050 + ldr r0, [sp, #8] + bl FUN_02016A18 + ldr r0, [sp, #0xc] + bl FUN_02016A18 + add sp, #0x94 + pop {r4, r5, r6, r7, pc} + nop +_021D80C4: .word 0x021D82AC + thumb_func_end MOD70_021D7FF8 + + thumb_func_start MOD70_021D80C8 +MOD70_021D80C8: ; 0x021D80C8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r7, r0, #0 + ldr r0, [r7, #4] + mov r4, #0 + str r0, [sp, #0x20] + ldr r0, [r0, #0x14] + cmp r0, #0 + bgt _021D80DC + b _021D81E4 +_021D80DC: + ldr r5, [sp, #0x20] + str r4, [sp, #0x18] + add r0, r5, #0 + str r0, [sp, #0x1c] + add r0, #0x33 + str r0, [sp, #0x1c] + mov r0, #0x67 + lsl r0, r0, #2 + add r0, r7, r0 + str r4, [sp, #0x14] + add r6, r7, #0 + str r0, [sp, #0x24] +_021D80F4: + mov r0, #1 + str r0, [sp] + ldr r0, [r5, #0x28] + add r2, r5, #0 + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + ldr r0, [r5, #0x2c] + add r2, #0x32 + str r0, [sp, #0xc] + mov r0, #0x66 + lsl r0, r0, #2 + ldrh r1, [r5, #0x30] + ldrb r2, [r2] + ldr r0, [r7, r0] + mov r3, #0x20 + bl FUN_02066ACC + mov r0, #0x66 + lsl r0, r0, #2 + ldr r0, [r7, r0] + ldr r2, [sp, #0x1c] + mov r1, #0x70 + bl FUN_02067830 + mov r1, #0x66 + lsl r1, r1, #2 + ldr r1, [r7, r1] + add r0, sp, #0x28 + mov r2, #2 + bl FUN_02068B68 + ldr r0, [sp, #0x24] + add r1, sp, #0x28 + str r0, [sp] + ldr r0, [r5, #0x28] + ldr r3, _021D8208 ; =0x021D822C + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r0, #2 + str r0, [sp, #0xc] + ldrh r0, [r5, #0x30] + mov r2, #0x3d + str r0, [sp, #0x10] + add r0, sp, #0x28 + ldrh r0, [r0] + ldrh r1, [r1, #2] + bl FUN_02012530 + mov r1, #0x32 + ldr r0, [sp, #0x24] + lsl r1, r1, #6 + bl DC_FlushRange + mov r2, #0x32 + ldr r0, [sp, #0x24] + ldr r1, [sp, #0x18] + lsl r2, r2, #6 + bl GX_LoadOBJ + mov r0, #0x20 + str r0, [sp] + mov r0, #0x3d + str r0, [sp, #4] + add r0, sp, #0x28 + add r1, sp, #0x28 + ldrh r0, [r0] + ldrh r1, [r1, #4] + ldr r3, [sp, #0x14] + mov r2, #1 + bl FUN_02006930 + ldr r0, [sp, #0x20] + ldr r0, [r0, #0x18] + cmp r4, r0 + bne _021D81A8 + mov r0, #1 + bl FUN_02005E80 + ldrh r0, [r5, #0x30] + bl FUN_02005578 + mov r0, #0x16 + lsl r0, r0, #4 + ldr r0, [r6, r0] + mov r1, #0 + bl FUN_02020398 + b _021D81B4 +_021D81A8: + mov r0, #0x16 + lsl r0, r0, #4 + ldr r0, [r6, r0] + mov r1, #1 + bl FUN_02020398 +_021D81B4: + mov r0, #0x16 + lsl r0, r0, #4 + ldr r0, [r6, r0] + mov r1, #1 + bl FUN_020200A0 + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x18] + add r0, #0x1c + str r0, [sp, #0x1c] + mov r0, #0x32 + lsl r0, r0, #6 + add r0, r1, r0 + str r0, [sp, #0x18] + ldr r0, [sp, #0x14] + add r4, r4, #1 + add r0, #0x20 + str r0, [sp, #0x14] + ldr r0, [sp, #0x20] + add r5, #0x1c + ldr r0, [r0, #0x14] + add r6, r6, #4 + cmp r4, r0 + blt _021D80F4 +_021D81E4: + cmp r4, #6 + bge _021D8202 + lsl r0, r4, #2 + mov r6, #0x16 + add r5, r7, r0 + mov r7, #0 + lsl r6, r6, #4 +_021D81F2: + ldr r0, [r5, r6] + add r1, r7, #0 + bl FUN_020200A0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _021D81F2 +_021D8202: + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + nop +_021D8208: .word 0x021D822C + thumb_func_end MOD70_021D80C8 + + thumb_func_start MOD70_021D820C +MOD70_021D820C: ; 0x021D820C + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + mov r6, #0x16 + add r5, r0, #0 + add r7, r4, #0 + lsl r6, r6, #4 +_021D8218: + ldr r0, [r5, r6] + add r1, r7, #0 + bl FUN_020200A0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _021D8218 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD70_021D820C + + .section .rodata + ; 0x021D822C + .incbin "baserom.nds", 0x2C594C, 0xB0 + + .section .data + ; 0x021D82E0 + .incbin "baserom.nds", 0x2C5A00, 0x20 |
