diff options
-rw-r--r-- | arm9/arm9.lsf | 18 | ||||
-rw-r--r-- | arm9/global.inc | 47 | ||||
-rw-r--r-- | arm9/modules/84/asm/module_84_arm.s | 58 | ||||
-rw-r--r-- | arm9/modules/84/asm/module_84_thumb1.s | 1528 | ||||
-rw-r--r-- | arm9/modules/84/asm/module_84_thumb2.s (renamed from arm9/modules/84/asm/module_84.s) | 1610 |
5 files changed, 1710 insertions, 1551 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 1dbc8e97..9a066ab5 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -642,12 +642,14 @@ Overlay MODULE_23 Overlay MODULE_24 { + ##Memo Pad## After MODULE_20 Object module_24.o } Overlay MODULE_25 { + ##Analogue Watch## After MODULE_20 Object module_25.o } @@ -668,6 +670,7 @@ Overlay MODULE_27 Overlay MODULE_28 { + ##Friendship Checker## After MODULE_20 Object module_28.o Object module_28_sinit.o @@ -675,6 +678,7 @@ Overlay MODULE_28 Overlay MODULE_29 { + ##Dowsing Machine## After MODULE_20 Object module_29.o Object module_29_sinit.o @@ -716,6 +720,7 @@ Overlay MODULE_34 Overlay MODULE_35 { + ##Daycare Checker## After MODULE_20 Object module_35.o } @@ -729,12 +734,14 @@ Overlay MODULE_36 Overlay MODULE_37 { + ##Coin Toss## After MODULE_20 Object module_37.o } Overlay MODULE_38 { + ##Move Checker## After MODULE_20 Object module_38.o } @@ -761,6 +768,7 @@ Overlay MODULE_41 Overlay MODULE_42 { + ##Marking Map## After MODULE_20 Object module_42.o Object module_42_sinit.o @@ -768,6 +776,7 @@ Overlay MODULE_42 Overlay MODULE_43 { + ##Berry Searcher## After MODULE_20 Object module_43.o Object module_43_sinit.o @@ -794,6 +803,7 @@ Overlay MODULE_46 Overlay MODULE_47 { + ##Link Searcher## After MODULE_20 Object module_47.o Object module_47_sinit.o @@ -807,6 +817,7 @@ Overlay MODULE_48 Overlay MODULE_49 { + ##Pokemon History## After MODULE_20 Object module_49.o } @@ -915,7 +926,7 @@ Overlay MODULE_65 Overlay MODULE_66 { - ##Weather effects?## + ##Fly Map## After arm9 Object module_66.o } @@ -1027,8 +1038,11 @@ Overlay MODULE_83 Overlay MODULE_84 { + ##Credits## After arm9 - Object module_84.o + Object module_84_thumb1.o + Object module_84_arm.o + Object module_84_thumb2.o } Overlay MODULE_85 diff --git a/arm9/global.inc b/arm9/global.inc index f8466905..08a251d3 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -7128,6 +7128,7 @@ .extern MOD54_021D74E0 .extern MOD54_021D764C .extern MOD54_021D7740 +.extern MOD54_021D8150 .extern MOD54_021D844C .extern MOD54_021D88E4 .extern MOD54_021D89CC @@ -7255,8 +7256,52 @@ .extern MOD82_0222DC50 .extern MOD83_0223A360 .extern MOD84_021D74E0 -.extern MOD84_021D7748 .extern MOD84_021D76A4 +.extern MOD84_021D7748 +.extern MOD84_021D7DF4 +.extern MOD84_021D801C +.extern MOD84_021D80B8 +.extern MOD84_021D80F0 +.extern MOD84_021D8104 +.extern MOD84_021D813C +.extern MOD84_021D81DC +.extern MOD84_021D821C +.extern MOD84_021D8240 +.extern MOD84_021D8260 +.extern MOD84_021D82B8 +.extern MOD84_021D84F8 +.extern MOD84_021D85B8 +.extern MOD84_021D85EC +.extern MOD84_021D87B0 +.extern MOD84_021D881C +.extern MOD84_021D8874 +.extern MOD84_021D88A4 +.extern MOD84_021D88C8 +.extern MOD84_021D88DC +.extern MOD84_021D8A8C +.extern MOD84_021D8AAC +.extern MOD84_021D8AC0 +.extern MOD84_021D8AD4 +.extern MOD84_021D8C54 +.extern MOD84_021D8CD8 +.extern MOD84_021D8CEC +.extern MOD84_021D8D0C +.extern MOD84_021D9394 +.extern MOD84_021D93B4 +.extern MOD84_021D93C8 +.extern MOD84_021D93DC +.extern MOD84_021D955C +.extern MOD84_021D9594 +.extern MOD84_021D95B8 +.extern MOD84_021D95CC +.extern MOD84_021D9A54 +.extern MOD84_021D9A74 +.extern MOD84_021D9A88 +.extern MOD84_021D9A9C +.extern MOD84_021D9C1C +.extern MOD84_021D9C80 +.extern MOD84_021D9CA4 +.extern MOD84_021D9CD4 .extern MOD85_021D74E0 .extern MOD85_021D75A0 .extern MOD85_021D7644 diff --git a/arm9/modules/84/asm/module_84_arm.s b/arm9/modules/84/asm/module_84_arm.s new file mode 100644 index 00000000..636be7ed --- /dev/null +++ b/arm9/modules/84/asm/module_84_arm.s @@ -0,0 +1,58 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + arm_func_start MOD84_021D80B8 +MOD84_021D80B8: ; 0x021D80B8 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + mov r4, r0 + mov lr, r1 + mov ip, r2 + str r3, [sp] + ldr r0, _021D80EC ; =0x04000050 + mov r1, r4 + mov r2, lr + mov r3, ip + bl G2x_SetBlendAlpha_ + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} +_021D80EC: .word 0x04000050 + arm_func_end MOD84_021D80B8 + + arm_func_start MOD84_021D80F0 +MOD84_021D80F0: ; 0x021D80F0 + ldr r2, _021D8100 ; =0x04000052 + orr r0, r0, r1, lsl #8 + strh r0, [r2] + bx lr +_021D8100: .word 0x04000052 + arm_func_end MOD84_021D80F0 + + arm_func_start MOD84_021D8104 +MOD84_021D8104: ; 0x021D8104 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + mov r4, r0 + mov lr, r1 + mov ip, r2 + str r3, [sp] + ldr r0, _021D8138 ; =0x04001050 + mov r1, r4 + mov r2, lr + mov r3, ip + bl G2x_SetBlendAlpha_ + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} +_021D8138: .word 0x04001050 + arm_func_end MOD84_021D8104 + + arm_func_start MOD84_021D813C +MOD84_021D813C: ; 0x021D813C + ldr r2, _021D814C ; =0x04001052 + orr r0, r0, r1, lsl #8 + strh r0, [r2] + bx lr +_021D814C: .word 0x04001052 + arm_func_end MOD84_021D813C diff --git a/arm9/modules/84/asm/module_84_thumb1.s b/arm9/modules/84/asm/module_84_thumb1.s new file mode 100644 index 00000000..57d2036e --- /dev/null +++ b/arm9/modules/84/asm/module_84_thumb1.s @@ -0,0 +1,1528 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD84_021D74E0 +MOD84_021D74E0: ; 0x021D74E0 + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r5, r1, #0 + ldr r1, [r5] + add r6, r0, #0 + cmp r1, #0 + beq _021D74FC + cmp r1, #1 + bne _021D74F4 + b _021D7620 +_021D74F4: + cmp r1, #2 + bne _021D74FA + b _021D765A +_021D74FA: + b _021D7668 +_021D74FC: + mov r0, #3 + mov r1, #0x4b + lsl r2, r0, #0x10 + bl FUN_0201681C + ldr r1, _021D7670 ; =0x00001244 + add r0, r6, #0 + mov r2, #0x4b + bl FUN_02006268 + add r4, r0, #0 + bne _021D7516 + b _021D7618 +_021D7516: + 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, _021D7674 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D7678 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + add r0, r6, #0 + bl FUN_0200628C + str r0, [r4, #0x18] + mov r0, #0 + str r0, [r4, #0x1c] + 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, #0x4b + str r2, [sp, #0x10] + add r2, r0, #0 + bl FUN_02009EAC + add r1, r4, #0 + mov r0, #0x80 + add r1, #0xe0 + mov r2, #0x4b + bl FUN_02008C9C + add r1, r4, #0 + add r1, #0xdc + str r0, [r1] + add r0, r4, #0 + mov r2, #0xd + add r0, #0xe0 + mov r1, #0 + lsl r2, r2, #0x10 + bl FUN_02008D04 + add r0, r4, #0 + mov r1, #0 + add r0, #0xe0 + add r2, r1, #0 + bl FUN_02008D24 + add r0, r4, #0 + str r6, [r4] + bl MOD84_021D7968 + add r0, r4, #0 + bl MOD84_021D7AA0 + add r0, r4, #0 + bl MOD84_021D7F94 + add r0, r4, #0 + bl MOD84_021D82B8 + ldr r2, _021D767C ; =0x000001ED + mov r0, #0 + mov r1, #0x1a + mov r3, #0x4b + bl NewMsgDataFromNarc + str r0, [r4, #0x14] + str r0, [sp] + mov r1, #0xef + ldr r0, [r4, #4] + mvn r1, r1 + mov r2, #1 + mov r3, #0 + bl MOD84_021D84F8 + str r0, [r4, #8] + ldr r0, [r4, #0x14] + ldr r1, _021D7680 ; =0xFFFFFE40 + str r0, [sp] + ldr r0, [r4, #4] + mov r2, #5 + mov r3, #0 + bl MOD84_021D84F8 + str r0, [r4, #0xc] + mov r1, #0 + ldr r2, _021D7684 ; =0x021DA6C8 + ldr r0, _021D7688 ; =0x00001224 + str r1, [r4, #0x10] + str r1, [r4, r0] + add r0, r0, #4 + str r1, [r4, r0] + ldr r1, [r4, #4] + ldr r2, [r2, #0x2c] + add r0, r4, #0 + blx r2 + ldr r1, _021D768C ; =0x0000122C + mov r2, #1 + str r0, [r4, r1] + ldr r1, _021D7690 ; =0x000004A2 + mov r0, #0xe + bl FUN_0200433C + ldr r0, _021D7694 ; =MOD84_021D7958 + add r1, r4, #0 + mov r2, #1 + bl FUN_0200CA60 + ldr r1, _021D7698 ; =0x00001230 + str r0, [r4, r1] + ldr r0, _021D769C ; =MOD84_021D7950 + add r1, r4, #0 + bl FUN_02015F10 +_021D7618: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D7668 +_021D7620: + bl FUN_02006278 + ldr r2, _021D7684 ; =0x021DA6C8 + ldr r1, _021D768C ; =0x0000122C + add r4, r0, #0 + ldr r0, [r4, r1] + sub r1, r1, #4 + ldr r2, [r2, #0x30] + add r1, r4, r1 + blx r2 + cmp r0, #0 + beq _021D7668 + ldr r1, _021D76A0 ; =0x00001228 + mov r0, #0 + str r0, [r4, r1] + mov r1, #0x20 + str r1, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r2, #0x4b + str r2, [sp, #8] + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D7668 +_021D765A: + bl FUN_0200E308 + cmp r0, #0 + beq _021D7668 + add sp, #0x14 + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_021D7668: + mov r0, #0 + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + nop +_021D7670: .word 0x00001244 +_021D7674: .word 0xFFFFE0FF +_021D7678: .word 0x04001000 +_021D767C: .word 0x000001ED +_021D7680: .word 0xFFFFFE40 +_021D7684: .word MOD84_021DA6C8 +_021D7688: .word 0x00001224 +_021D768C: .word 0x0000122C +_021D7690: .word 0x000004A2 +_021D7694: .word MOD84_021D7958 +_021D7698: .word 0x00001230 +_021D769C: .word MOD84_021D7950 +_021D76A0: .word 0x00001228 + thumb_func_end MOD84_021D74E0 + + thumb_func_start MOD84_021D76A4 +MOD84_021D76A4: ; 0x021D76A4 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r0, #0 + bl FUN_02006278 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #3 + bhi _021D773E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D76C2: ; jump table + .short _021D76CA - _021D76C2 - 2 ; case 0 + .short _021D76EE - _021D76C2 - 2 ; case 1 + .short _021D771A - _021D76C2 - 2 ; case 2 + .short _021D772E - _021D76C2 - 2 ; case 3 +_021D76CA: + bl OS_DisableInterrupts + add r6, r0, #0 + ldr r0, _021D7744 ; =0x00001230 + ldr r0, [r5, r0] + bl FUN_0200CAB4 + add r0, r6, #0 + bl OS_RestoreInterrupts + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D773E +_021D76EE: + ldr r0, [r5, #0xc] + bl MOD84_021D85B8 + ldr r0, [r5, #8] + bl MOD84_021D85B8 + ldr r0, [r5, #0x14] + bl DestroyMsgData + add r0, r5, #0 + bl MOD84_021D8000 + add r0, r5, #0 + bl MOD84_021D7AB8 + add r0, r5, #0 + bl MOD84_021D7A84 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D773E +_021D771A: + add r5, #0xdc + ldr r0, [r5] + bl FUN_0201FD58 + bl FUN_02009FA0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _021D773E +_021D772E: + add r0, r6, #0 + bl FUN_0200627C + mov r0, #0x4b + bl FUN_020168D0 + mov r0, #1 + pop {r4, r5, r6, pc} +_021D773E: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_021D7744: .word 0x00001230 + thumb_func_end MOD84_021D76A4 + + thumb_func_start MOD84_021D7748 +MOD84_021D7748: ; 0x021D7748 + push {r4, r5, lr} + sub sp, #0xc + add r5, r1, #0 + bl FUN_02006278 + add r4, r0, #0 + ldr r0, [r4, #8] + mov r1, #1 + bl MOD84_021D85EC + ldr r0, [r4, #0xc] + mov r1, #1 + bl MOD84_021D85EC + str r0, [r4, #0x10] + ldr r0, [r5] + cmp r0, #0xa + bhi _021D7804 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D7778: ; jump table + .short _021D778E - _021D7778 - 2 ; case 0 + .short _021D77EC - _021D7778 - 2 ; case 1 + .short _021D7826 - _021D7778 - 2 ; case 2 + .short _021D7846 - _021D7778 - 2 ; case 3 + .short _021D7868 - _021D7778 - 2 ; case 4 + .short _021D7874 - _021D7778 - 2 ; case 5 + .short _021D789C - _021D7778 - 2 ; case 6 + .short _021D78AA - _021D7778 - 2 ; case 7 + .short _021D78BE - _021D7778 - 2 ; case 8 + .short _021D7920 - _021D7778 - 2 ; case 9 + .short _021D7914 - _021D7778 - 2 ; case 10 +_021D778E: + ldr r0, [r4, #0x1c] + cmp r0, #0 + bne _021D77C8 + ldr r0, _021D7928 ; =gUnknown21C48B8 + ldr r1, [r0, #0x48] + mov r0, #8 + tst r0, r1 + beq _021D77C8 + ldr r0, [r4, #0x18] + ldr r0, [r0, #4] + cmp r0, #0 + beq _021D77C8 + mov r0, #0x10 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4b + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #1 + str r0, [r4, #0x1c] + mov r0, #7 + str r0, [r5] + b _021D7920 +_021D77C8: + ldr r2, _021D792C ; =0x0000122C + sub r1, r2, #4 + ldr r0, [r4, r2] + sub r2, #8 + ldr r2, [r4, r2] + add r1, r4, r1 + lsl r3, r2, #4 + ldr r2, _021D7930 ; =0x021DA6FC + ldr r2, [r2, r3] + blx r2 + cmp r0, #0 + beq _021D7804 + ldr r0, _021D7934 ; =0x00001228 + mov r1, #0 + str r1, [r4, r0] + mov r0, #1 + str r0, [r5] + b _021D7920 +_021D77EC: + ldr r2, _021D792C ; =0x0000122C + sub r1, r2, #4 + ldr r0, [r4, r2] + sub r2, #8 + ldr r2, [r4, r2] + add r1, r4, r1 + lsl r3, r2, #4 + ldr r2, _021D7938 ; =0x021DA700 + ldr r2, [r2, r3] + blx r2 + cmp r0, #0 + bne _021D7806 +_021D7804: + b _021D7920 +_021D7806: + ldr r0, _021D793C ; =0x00001224 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + ldr r1, [r4, r0] + cmp r1, #7 + bhs _021D7820 + mov r1, #0 + add r0, r0, #4 + str r1, [r4, r0] + mov r0, #2 + str r0, [r5] + b _021D7920 +_021D7820: + mov r0, #4 + str r0, [r5] + b _021D7920 +_021D7826: + ldr r2, _021D793C ; =0x00001224 + ldr r1, [r4, #4] + ldr r2, [r4, r2] + add r0, r4, #0 + lsl r3, r2, #4 + ldr r2, _021D7940 ; =0x021DA6F4 + ldr r2, [r2, r3] + blx r2 + ldr r1, _021D792C ; =0x0000122C + mov r2, #0 + str r0, [r4, r1] + sub r0, r1, #4 + str r2, [r4, r0] + mov r0, #3 + str r0, [r5] + b _021D7920 +_021D7846: + ldr r2, _021D792C ; =0x0000122C + sub r1, r2, #4 + ldr r0, [r4, r2] + sub r2, #8 + ldr r2, [r4, r2] + add r1, r4, r1 + lsl r3, r2, #4 + ldr r2, _021D7944 ; =0x021DA6F8 + ldr r2, [r2, r3] + blx r2 + cmp r0, #0 + beq _021D7920 + ldr r0, _021D7934 ; =0x00001228 + mov r1, #0 + str r1, [r4, r0] + str r1, [r5] + b _021D7920 +_021D7868: + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _021D7920 + mov r0, #5 + str r0, [r5] + b _021D7920 +_021D7874: + ldr r0, _021D7928 ; =gUnknown21C48B8 + ldr r1, [r0, #0x48] + mov r0, #9 + tst r0, r1 + beq _021D7920 + mov r0, #8 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x4b + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #6 + str r0, [r5] + b _021D7920 +_021D789C: + bl FUN_0200E308 + cmp r0, #0 + beq _021D7920 + add sp, #0xc + mov r0, #1 + pop {r4, r5, pc} +_021D78AA: + bl FUN_0200E308 + cmp r0, #0 + beq _021D7920 + ldr r0, _021D7934 ; =0x00001228 + mov r1, #0 + str r1, [r4, r0] + mov r0, #8 + str r0, [r5] + b _021D7920 +_021D78BE: + ldr r2, _021D792C ; =0x0000122C + sub r1, r2, #4 + ldr r0, [r4, r2] + sub r2, #8 + ldr r2, [r4, r2] + add r1, r4, r1 + lsl r3, r2, #4 + ldr r2, _021D7938 ; =0x021DA700 + ldr r2, [r2, r3] + blx r2 + cmp r0, #0 + beq _021D7920 + ldr r0, [r4, #0xc] + mov r1, #1 + bl MOD84_021D87B0 + ldr r0, [r4, #8] + bl MOD84_021D881C + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D7948 ; =0xFFFF1FFF + and r1, r0 + str r1, [r2] + ldr r2, _021D794C ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + mov r0, #0x20 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x4b + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r0, #0xa + str r0, [r5] + b _021D7920 +_021D7914: + bl FUN_0200E308 + cmp r0, #0 + beq _021D7920 + mov r0, #5 + str r0, [r5] +_021D7920: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + nop +_021D7928: .word gUnknown21C48B8 +_021D792C: .word 0x0000122C +_021D7930: .word MOD84_021DA6FC +_021D7934: .word 0x00001228 +_021D7938: .word MOD84_021DA700 +_021D793C: .word 0x00001224 +_021D7940: .word MOD84_021DA6F4 +_021D7944: .word MOD84_021DA6F8 +_021D7948: .word 0xFFFF1FFF +_021D794C: .word 0x04001000 + thumb_func_end MOD84_021D7748 + + thumb_func_start MOD84_021D7950 +MOD84_021D7950: ; 0x021D7950 + ldr r3, _021D7954 ; =MOD84_021D7CFC + bx r3 + .align 2, 0 +_021D7954: .word MOD84_021D7CFC + thumb_func_end MOD84_021D7950 + + thumb_func_start MOD84_021D7958 +MOD84_021D7958: ; 0x021D7958 + push {r3, lr} + add r1, #0xdc + ldr r0, [r1] + bl FUN_0201FDEC + bl FUN_02009F80 + pop {r3, pc} + thumb_func_end MOD84_021D7958 + + thumb_func_start MOD84_021D7968 +MOD84_021D7968: ; 0x021D7968 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #0x4b + bl FUN_02016B94 + str r0, [r4, #4] + ldr r0, _021D7A60 ; =0x021DA68C + bl FUN_0201E66C + ldr r2, _021D7A64 ; =0x04000304 + ldr r0, _021D7A68 ; =0xFFFF7FFF + ldrh r1, [r2] + and r0, r1 + strh r0, [r2] + mov r0, #1 + mov r1, #0 + add r2, r0, #0 + bl GX_SetGraphicsMode + ldr r0, _021D7A6C ; =0x021DA650 + bl FUN_02016BBC + ldr r0, [r4, #4] + ldr r2, _021D7A70 ; =0x021DA670 + mov r1, #1 + mov r3, #0 + bl FUN_02016C18 + ldr r0, [r4, #4] + ldr r2, _021D7A70 ; =0x021DA670 + mov r1, #5 + mov r3, #0 + bl FUN_02016C18 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x4b + str r0, [sp, #8] + mov r0, #0x7f + mov r1, #0x42 + add r3, r2, #0 + bl FUN_02006948 + mov r3, #0 + str r3, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x4b + str r0, [sp, #8] + mov r0, #0x7f + mov r1, #0x42 + mov r2, #4 + bl FUN_02006948 + ldr r2, _021D7A74 ; =0x04000050 + mov r0, #0 + add r3, r2, #0 + add r7, r2, #0 + ldr r1, _021D7A78 ; =0x04001050 + strh r0, [r2] + strh r0, [r1] + mov r0, #0xff + sub r3, #0x10 + strh r0, [r3] + add r3, r2, #0 + ldr r4, _021D7A7C ; =0x00005EC0 + sub r3, #0xc + strh r4, [r3] + sub r7, #8 + ldrh r4, [r7] + mov r5, #0x3f + mov r3, #0x1d + bic r4, r5 + add r6, r4, #0 + orr r6, r3 + mov r4, #0x20 + orr r6, r4 + strh r6, [r7] + sub r7, r2, #6 + ldrh r6, [r7] + mov r2, #0x1f + bic r6, r5 + orr r6, r2 + orr r6, r4 + strh r6, [r7] + add r6, r1, #0 + sub r6, #0x10 + strh r0, [r6] + add r0, r1, #0 + mov r6, #0x18 + sub r0, #0xc + strh r6, [r0] + add r6, r1, #0 + sub r6, #8 + ldrh r0, [r6] + bic r0, r5 + orr r0, r3 + orr r0, r4 + sub r3, r1, #6 + strh r0, [r6] + ldrh r0, [r3] + sub r1, #0x50 + bic r0, r5 + orr r0, r2 + orr r0, r4 + strh r0, [r3] + lsl r3, r4, #0x15 + ldr r0, [r3] + ldr r2, _021D7A80 ; =0xFFFF1FFF + add r5, r0, #0 + and r5, r2 + lsl r0, r4, #8 + orr r0, r5 + str r0, [r3] + ldr r0, [r1] + and r2, r0 + lsl r0, r4, #8 + orr r0, r2 + str r0, [r1] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D7A60: .word MOD84_021DA68C +_021D7A64: .word 0x04000304 +_021D7A68: .word 0xFFFF7FFF +_021D7A6C: .word MOD84_021DA650 +_021D7A70: .word MOD84_021DA670 +_021D7A74: .word 0x04000050 +_021D7A78: .word 0x04001050 +_021D7A7C: .word 0x00005EC0 +_021D7A80: .word 0xFFFF1FFF + thumb_func_end MOD84_021D7968 + + thumb_func_start MOD84_021D7A84 +MOD84_021D7A84: ; 0x021D7A84 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_020178A0 + ldr r0, [r4, #4] + mov r1, #5 + bl FUN_020178A0 + ldr r0, [r4, #4] + bl FreeToHeap + pop {r4, pc} + thumb_func_end MOD84_021D7A84 + + thumb_func_start MOD84_021D7AA0 +MOD84_021D7AA0: ; 0x021D7AA0 + push {r4, lr} + add r4, r0, #0 + bl MOD84_021D7AC8 + add r0, r4, #0 + bl MOD84_021D7B54 + add r0, r4, #0 + bl MOD84_021D7BC8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D7AA0 + + thumb_func_start MOD84_021D7AB8 +MOD84_021D7AB8: ; 0x021D7AB8 + push {r4, lr} + add r4, r0, #0 + bl MOD84_021D7CD4 + add r0, r4, #0 + bl MOD84_021D7BBC + pop {r4, pc} + thumb_func_end MOD84_021D7AB8 + + thumb_func_start MOD84_021D7AC8 +MOD84_021D7AC8: ; 0x021D7AC8 + push {r3, lr} + bl FUN_020BB7F4 + bl G3X_InitMtxStack + ldr r0, _021D7B3C ; =0x04000060 + ldr r2, _021D7B40 ; =0xFFFFCFFD + ldrh r1, [r0] + and r1, r2 + strh r1, [r0] + add r1, r2, #2 + ldrh r3, [r0] + lsr r2, r2, #0x11 + and r3, r1 + mov r1, #0x10 + orr r1, r3 + strh r1, [r0] + ldrh r3, [r0] + ldr r1, _021D7B44 ; =0x0000CFFB + and r3, r1 + strh r3, [r0] + ldrh r3, [r0] + sub r1, r1, #4 + and r1, r3 + strh r1, [r0] + mov r0, #0 + add r1, r0, #0 + mov r3, #0x3f + str r0, [sp] + bl G3X_SetClearColor + ldr r1, _021D7B48 ; =0x04000540 + mov r0, #2 + str r0, [r1] + ldr r0, _021D7B4C ; =0xBFFF0000 + str r0, [r1, #0x40] + mov r0, #1 + add r1, r0, #0 + bl FUN_020AEB70 + mov r0, #1 + lsl r0, r0, #0xe + mov r1, #1 + bl FUN_020AEDF4 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + ldr r1, _021D7B50 ; =0x04000008 + mov r0, #3 + ldrh r2, [r1] + bic r2, r0 + mov r0, #1 + orr r0, r2 + strh r0, [r1] + pop {r3, pc} + nop +_021D7B3C: .word 0x04000060 +_021D7B40: .word 0xFFFFCFFD +_021D7B44: .word 0x0000CFFB +_021D7B48: .word 0x04000540 +_021D7B4C: .word 0xBFFF0000 +_021D7B50: .word 0x04000008 + thumb_func_end MOD84_021D7AC8 + + thumb_func_start MOD84_021D7B54 +MOD84_021D7B54: ; 0x021D7B54 + push {r4, lr} + sub sp, #0x18 + add r4, r0, #0 + mov r0, #0x4b + bl FUN_0201EB64 + str r0, [r4, #0x20] + mov r0, #0 + str r0, [r4, #0x24] + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + strh r0, [r4, #0x30] + strh r0, [r4, #0x32] + strh r0, [r4, #0x34] + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4, #0x20] + mov r1, #0x4b + str r0, [sp, #8] + add r0, r4, #0 + add r2, r4, #0 + ldr r3, _021D7BB8 ; =0x00000FA4 + add r0, #0x24 + lsl r1, r1, #0xe + add r2, #0x30 + bl FUN_0201ECA8 + mov r1, #0 + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #0x10] + str r1, [sp, #0xc] + str r1, [sp, #0x14] + ldr r1, [r4, #0x20] + add r0, sp, #0xc + bl FUN_0201EC58 + ldr r0, [r4, #0x20] + bl FUN_0201EB8C + mov r1, #0xfa + ldr r2, [r4, #0x20] + mov r0, #0 + lsl r1, r1, #0xe + bl FUN_0201EC94 + add sp, #0x18 + pop {r4, pc} + nop +_021D7BB8: .word 0x00000FA4 + thumb_func_end MOD84_021D7B54 + + thumb_func_start MOD84_021D7BBC +MOD84_021D7BBC: ; 0x021D7BBC + ldr r3, _021D7BC4 ; =FUN_0201EB70 + ldr r0, [r0, #0x20] + bx r3 + nop +_021D7BC4: .word FUN_0201EB70 + thumb_func_end MOD84_021D7BBC + + thumb_func_start MOD84_021D7BC8 +MOD84_021D7BC8: ; 0x021D7BC8 + push {r4, r5, lr} + sub sp, #0xc + mov r2, #0 + add r5, r0, #0 + add r4, r5, #0 + str r2, [sp] + add r0, sp, #8 + str r0, [sp, #4] + mov r0, #0x7f + mov r1, #1 + mov r3, #0x4b + add r4, #0x38 + bl FUN_02006D18 + str r0, [r5, #0x38] + ldr r1, [sp, #8] + bl DC_FlushRange + ldr r0, [r5, #0x38] + cmp r0, #0 + beq _021D7CCC + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + add r0, #0x88 + str r1, [r0] + add r0, r4, #0 + add r0, #0x8c + str r1, [r0] + add r0, r4, #0 + add r0, #0x90 + str r1, [r0] + mov r2, #0 + add r0, r4, #0 + ldr r1, _021D7CD0 ; =0xFFF8E000 + str r2, [r4, #0x7c] + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + str r2, [r0] + add r0, r4, #0 + add r0, #0x94 + strh r2, [r0] + mov r1, #0xa5 + add r0, r4, #0 + lsl r1, r1, #4 + add r0, #0x96 + strh r1, [r0] + add r0, r4, #0 + mov r1, #0x50 + add r0, #0x98 + strh r1, [r0] + ldr r0, [r4] + bl FUN_020BC13C + str r0, [r4, #0x5c] + ldrh r1, [r0, #0xe] + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r0, r0, r1 + str r0, [r4, #0x60] + ldr r0, [r4] + bl FUN_020BC0FC + str r0, [r4, #0x64] + bl FUN_0201B3C4 + ldr r0, [r4] + ldr r1, [r4, #0x64] + bl FUN_0201B3A8 + add r0, r4, #0 + ldr r1, [r4, #0x60] + add r0, #8 + bl FUN_020B80B4 + mov r2, #0 + str r2, [sp] + add r0, sp, #8 + str r0, [sp, #4] + mov r0, #0x7f + mov r1, #3 + mov r3, #0x4b + bl FUN_02006D18 + str r0, [r4, #4] + cmp r0, #0 + beq _021D7CCC + ldr r1, [sp, #8] + bl DC_FlushRange + add r0, r4, #0 + add r0, #0x6c + mov r1, #0x4b + mov r2, #0x20 + bl FUN_02016B20 + ldr r0, [r4, #4] + mov r1, #0 + bl FUN_020BC4C8 + add r5, r0, #0 + add r0, r4, #0 + ldr r2, [r4, #0x60] + add r0, #0x6c + add r1, r5, #0 + bl FUN_020BB8D0 + str r0, [r4, #0x68] + ldr r2, [r4, #0x60] + ldr r3, [r4, #0x64] + add r1, r5, #0 + bl FUN_020B8110 + add r0, r4, #0 + ldr r1, [r4, #0x68] + add r0, #8 + bl FUN_020B7EFC + add r0, r4, #0 + mov r1, #0 + add r0, #0x9c + str r1, [r0] + ldr r0, [r4, #0x68] + add r4, #0xa0 + ldr r0, [r0, #8] + ldrh r0, [r0, #4] + lsl r0, r0, #0xc + str r0, [r4] +_021D7CCC: + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_021D7CD0: .word 0xFFF8E000 + thumb_func_end MOD84_021D7BC8 + + thumb_func_start MOD84_021D7CD4 +MOD84_021D7CD4: ; 0x021D7CD4 + push {r4, lr} + add r4, r0, #0 + add r4, #0x38 + ldr r0, [r4, #4] + cmp r0, #0 + beq _021D7CF0 + add r0, r4, #0 + ldr r1, [r4, #0x68] + add r0, #0x6c + bl thunk_FUN_020ae84c + ldr r0, [r4, #4] + bl FreeToHeap +_021D7CF0: + ldr r0, [r4] + cmp r0, #0 + beq _021D7CFA + bl FreeToHeap +_021D7CFA: + pop {r4, pc} + thumb_func_end MOD84_021D7CD4 + + thumb_func_start MOD84_021D7CFC +MOD84_021D7CFC: ; 0x021D7CFC + push {r3, r4, lr} + sub sp, #0x4c + add r4, r0, #0 + bl G3X_ResetMtxStack + mov r1, #0 + mov r0, #0x11 + add r2, r1, #0 + bl FUN_020BB1C0 + bl FUN_0201EBA4 + add r4, #0x38 + add r0, sp, #0x28 + bl MTX_Identity33_ + add r0, r4, #0 + add r0, #0x94 + ldrh r0, [r0] + ldr r3, _021D7DF0 ; =UNK_020FFA38 + asr r0, r0, #4 + lsl r2, r0, #1 + lsl r1, r2, #1 + add r2, r2, #1 + lsl r2, r2, #1 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, sp, #4 + bl MTX_RotX33_ + add r1, sp, #0x28 + add r0, sp, #4 + add r2, r1, #0 + bl MTX_Concat33 + add r0, r4, #0 + add r0, #0x96 + ldrh r0, [r0] + ldr r3, _021D7DF0 ; =UNK_020FFA38 + asr r0, r0, #4 + lsl r2, r0, #1 + lsl r1, r2, #1 + add r2, r2, #1 + lsl r2, r2, #1 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, sp, #4 + bl MTX_RotY33_ + add r1, sp, #0x28 + add r0, sp, #4 + add r2, r1, #0 + bl MTX_Concat33 + add r0, r4, #0 + add r0, #0x98 + ldrh r0, [r0] + ldr r3, _021D7DF0 ; =UNK_020FFA38 + asr r0, r0, #4 + lsl r2, r0, #1 + lsl r1, r2, #1 + add r2, r2, #1 + lsl r2, r2, #1 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, sp, #4 + bl MTX_RotZ33_ + add r1, sp, #0x28 + add r0, sp, #4 + add r2, r1, #0 + bl MTX_Concat33 + add r1, r4, #0 + add r1, #0x9c + ldr r2, [r1] + mov r1, #2 + lsl r1, r1, #0xa + add r2, r2, r1 + add r1, r4, #0 + add r1, #0x9c + str r2, [r1] + add r1, r4, #0 + add r1, #0xa0 + ldr r2, [r1] + add r1, r4, #0 + add r1, #0x9c + add r0, r4, #0 + ldr r1, [r1] + add r0, #0x9c + cmp r1, r2 + blt _021D7DBA + ldr r1, [r0] + sub r1, r1, r2 + str r1, [r0] +_021D7DBA: + add r0, r4, #0 + add r0, #0x9c + ldr r1, [r0] + ldr r0, [r4, #0x68] + add r2, sp, #0x28 + str r1, [r0] + add r0, r4, #0 + add r1, r4, #0 + add r4, #0x88 + add r0, #8 + add r1, #0x7c + add r3, r4, #0 + bl FUN_0201B26C + mov r2, #1 + mov r0, #0x12 + add r1, sp, #0 + str r2, [sp] + bl FUN_020BB1C0 + mov r0, #0 + mov r1, #1 + bl FUN_020222B4 + add sp, #0x4c + pop {r3, r4, pc} + nop +_021D7DF0: .word UNK_020FFA38 + thumb_func_end MOD84_021D7CFC + + thumb_func_start MOD84_021D7DF4 +MOD84_021D7DF4: ; 0x021D7DF4 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r0, #0x38] + add r5, r1, #0 + add r4, #0x38 + cmp r0, #0 + beq _021D7E08 + bl FreeToHeap +_021D7E08: + ldr r1, _021D7ED4 ; =0x021DA648 + lsl r3, r5, #1 + mov r2, #0 + ldrh r1, [r1, r3] + str r2, [sp] + add r0, sp, #8 + str r0, [sp, #4] + mov r0, #0x7f + mov r3, #0x4b + bl FUN_02006D18 + str r0, [r4] + cmp r0, #0 + beq _021D7E9A + ldr r1, [sp, #8] + bl DC_FlushRange + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + add r0, #0x88 + str r1, [r0] + add r0, r4, #0 + add r0, #0x8c + str r1, [r0] + add r0, r4, #0 + add r0, #0x90 + str r1, [r0] + mov r2, #0 + add r0, r4, #0 + ldr r1, _021D7ED8 ; =0xFFF8E000 + str r2, [r4, #0x7c] + add r0, #0x80 + str r1, [r0] + add r0, r4, #0 + add r0, #0x84 + str r2, [r0] + add r0, r4, #0 + add r0, #0x94 + strh r2, [r0] + mov r1, #0xa5 + add r0, r4, #0 + lsl r1, r1, #4 + add r0, #0x96 + strh r1, [r0] + add r0, r4, #0 + mov r1, #0x50 + add r0, #0x98 + strh r1, [r0] + ldr r0, [r4] + bl FUN_020BC13C + str r0, [r4, #0x5c] + ldrh r1, [r0, #0xe] + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r0, r0, r1 + str r0, [r4, #0x60] + ldr r0, [r4] + bl FUN_020BC0FC + str r0, [r4, #0x64] + bl FUN_0201B3C4 + ldr r0, [r4] + ldr r1, [r4, #0x64] + bl FUN_0201B3A8 + add r0, r4, #0 + ldr r1, [r4, #0x60] + add r0, #8 + bl FUN_020B80B4 +_021D7E9A: + ldr r0, [r4, #4] + cmp r0, #0 + beq _021D7ED0 + mov r1, #0 + bl FUN_020BC4C8 + add r1, r0, #0 + ldr r0, [r4, #0x68] + ldr r2, [r4, #0x60] + ldr r3, [r4, #0x64] + bl FUN_020B8110 + add r0, r4, #0 + ldr r1, [r4, #0x68] + add r0, #8 + bl FUN_020B7EFC + add r0, r4, #0 + mov r1, #0 + add r0, #0x9c + str r1, [r0] + ldr r0, [r4, #0x68] + add r4, #0xa0 + ldr r0, [r0, #8] + ldrh r0, [r0, #4] + lsl r0, r0, #0xc + str r0, [r4] +_021D7ED0: + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_021D7ED4: .word MOD84_021DA648 +_021D7ED8: .word 0xFFF8E000 + thumb_func_end MOD84_021D7DF4 + + thumb_func_start MOD84_021D7EDC +MOD84_021D7EDC: ; 0x021D7EDC + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + mov r0, #0x82 + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_020B1A24 + mov r0, #0x8b + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_020B1A24 + mov r0, #0x25 + lsl r0, r0, #4 + add r0, r5, r0 + bl FUN_020B1A24 + mov r0, #0x9d + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_020B19DC + mov r0, #0xa2 + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_020B19DC + mov r0, #0xa7 + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_020B19DC + ldr r0, [r5, #0x18] + ldr r0, [r0] + cmp r0, #1 + bne _021D7F2A + mov r0, #1 + b _021D7F2C +_021D7F2A: + mov r0, #0 +_021D7F2C: + mov r2, #0 + lsl r4, r0, #3 + str r2, [sp] + mov r0, #1 + str r0, [sp, #4] + lsl r0, r0, #0xf + str r0, [sp, #8] + mov r0, #0x4b + ldr r1, _021D7F84 ; =0x021DA660 + str r0, [sp, #0xc] + mov r0, #0x82 + lsl r0, r0, #2 + add r0, r5, r0 + str r0, [sp, #0x10] + ldrh r1, [r1, r4] + mov r0, #0x7f + add r3, r2, #0 + bl FUN_02006AE4 + mov r0, #0x4b + ldr r1, _021D7F88 ; =0x021DA662 + str r0, [sp] + mov r0, #0x9d + lsl r0, r0, #2 + add r0, r5, r0 + str r0, [sp, #4] + ldrh r1, [r1, r4] + mov r0, #0x7f + mov r2, #1 + mov r3, #0 + bl FUN_02006A8C + ldr r1, _021D7F8C ; =0x021DA664 + ldr r2, _021D7F90 ; =0x021DA666 + ldrh r1, [r1, r4] + ldrh r2, [r2, r4] + mov r0, #0x7f + bl MOD84_021D81DC + mov r1, #0xad + lsl r1, r1, #2 + str r0, [r5, r1] + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 +_021D7F84: .word MOD84_021DA660 +_021D7F88: .word MOD84_021DA662 +_021D7F8C: .word MOD84_021DA664 +_021D7F90: .word MOD84_021DA666 + thumb_func_end MOD84_021D7EDC + + thumb_func_start MOD84_021D7F94 +MOD84_021D7F94: ; 0x021D7F94 + push {r4, lr} + sub sp, #0x30 + add r4, r0, #0 + bl MOD84_021D7EDC + mov r3, #0xad + mov r0, #1 + lsl r3, r3, #2 + str r0, [sp] + add r2, r3, #0 + ldr r1, [r4, r3] + sub r2, #0xac + sub r3, #0x40 + add r0, sp, #0xc + add r2, r4, r2 + add r3, r4, r3 + bl MOD84_021D8240 + mov r1, #0 + mov r2, #0xc8 + add r3, r2, #0 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r4, #0 + add r1, sp, #0xc + add r3, #0x98 + bl MOD84_021D8260 + mov r1, #0x2b + lsl r1, r1, #4 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #1 + bl FUN_020200BC + mov r0, #0x2b + lsl r0, r0, #4 + mov r1, #1 + ldr r0, [r4, r0] + lsl r1, r1, #0xc + bl FUN_020200D8 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + add sp, #0x30 + pop {r4, pc} + thumb_func_end MOD84_021D7F94 + + thumb_func_start MOD84_021D8000 +MOD84_021D8000: ; 0x021D8000 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x2b + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_0201FFC8 + mov r0, #0xad + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD84_021D821C + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD84_021D8000 + + thumb_func_start MOD84_021D801C +MOD84_021D801C: ; 0x021D801C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r1, #0 + mov r0, #0x4b + mov r1, #0x30 + str r2, [sp] + add r6, r3, #0 + bl AllocFromHeap + add r4, r0, #0 + beq _021D8090 + ldr r0, [sp] + ldr r2, _021D8094 ; =0x021DA6B4 + lsl r1, r0, #4 + lsl r0, r5, #5 + add r2, r2, r0 + str r7, [r4] + ldr r2, [r1, r2] + str r6, [r4, #0x24] + str r2, [r4, #0x14] + ldr r2, _021D8098 ; =0x021DA6B8 + add r2, r2, r0 + ldr r2, [r1, r2] + str r2, [r4, #0x18] + ldr r2, _021D809C ; =0x021DA6BC + add r2, r2, r0 + ldr r2, [r1, r2] + str r2, [r4, #0x1c] + ldr r2, _021D80A0 ; =0x021DA6C0 + add r0, r2, r0 + ldr r0, [r1, r0] + cmp r5, #0 + str r0, [r4, #0x20] + bne _021D8068 + ldr r0, _021D80A4 ; =MOD84_021D80B8 + str r0, [r4, #8] + ldr r0, _021D80A8 ; =MOD84_021D80F0 + b _021D806E +_021D8068: + ldr r0, _021D80AC ; =MOD84_021D8104 + str r0, [r4, #8] + ldr r0, _021D80B0 ; =MOD84_021D813C +_021D806E: + str r0, [r4, #0xc] + mov r0, #0 + str r0, [r4, #0x28] + mov r0, #1 + lsl r0, r0, #0x10 + add r1, r6, #0 + bl _s32_div_f + str r0, [r4, #0x2c] + mov r0, #0 + str r0, [r4, #0x10] + ldr r0, _021D80B4 ; =MOD54_021D8150 + add r1, r4, #0 + mov r2, #1 + bl FUN_0200CA98 + str r0, [r4, #4] +_021D8090: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D8094: .word MOD84_021DA6B4 +_021D8098: .word MOD84_021DA6B8 +_021D809C: .word MOD84_021DA6BC +_021D80A0: .word MOD84_021DA6C0 +_021D80A4: .word MOD84_021D80B8 +_021D80A8: .word MOD84_021D80F0 +_021D80AC: .word MOD84_021D8104 +_021D80B0: .word MOD84_021D813C +_021D80B4: .word MOD54_021D8150 + thumb_func_end MOD84_021D801C + + .rodata + + .global MOD84_021DA648 +MOD84_021DA648: ; 0x021DA648 + .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00 + + .global MOD84_021DA650 +MOD84_021DA650: ; 0x021DA650 + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + + .global MOD84_021DA660 +MOD84_021DA660: ; 0x021DA660 + .byte 0x2F, 0x00 + + .global MOD84_021DA662 +MOD84_021DA662: ; 0x021DA662 + .byte 0x30, 0x00 + + .global MOD84_021DA664 +MOD84_021DA664: ; 0x021DA664 + .byte 0x2D, 0x00 + + .global MOD84_021DA666 +MOD84_021DA666: ; 0x021DA666 + .byte 0x2E, 0x00, 0x33, 0x00, 0x34, 0x00, 0x31, 0x00, 0x32, 0x00 + + .global MOD84_021DA670 +MOD84_021DA670: ; 0x021DA670 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x1F, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .global MOD84_021DA68C +MOD84_021DA68C: ; 0x021DA68C + .byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00 + + .global MOD84_021DA6B4 +MOD84_021DA6B4: ; 0x021DA6B4 + .byte 0x02, 0x00, 0x00, 0x00 + + .global MOD84_021DA6B8 +MOD84_021DA6B8: ; 0x021DA6B8 + .byte 0x03, 0x00, 0x00, 0x00 + + .global MOD84_021DA6BC +MOD84_021DA6BC: ; 0x021DA6BC + .byte 0x0C, 0x00, 0x00, 0x00 + + .global MOD84_021DA6C0 +MOD84_021DA6C0: ; 0x021DA6C0 + .byte 0x08, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + + .global MOD84_021DA6C8 +MOD84_021DA6C8: ; 0x021DA6C8 + .byte 0x02, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 + .byte 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00 + .byte 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + + .global MOD84_021DA6F4 +MOD84_021DA6F4: ; 0x021DA6F4 + .word MOD84_021D8874 + + .global MOD84_021DA6F8 +MOD84_021DA6F8: ; 0x021DA6F8 + .word MOD84_021D88A4 + + .global MOD84_021DA6FC +MOD84_021DA6FC: ; 0x021DA6FC + .word MOD84_021D88DC + + .global MOD84_021DA700 +MOD84_021DA700: ; 0x021DA700 + .word MOD84_021D88C8, MOD84_021D8A8C, MOD84_021D8AAC, MOD84_021D8AD4 + .word MOD84_021D8AC0, MOD84_021D8C54, MOD84_021D8CD8, MOD84_021D8D0C + .word MOD84_021D8CEC, MOD84_021D9394, MOD84_021D93B4, MOD84_021D93DC + .word MOD84_021D93C8, MOD84_021D955C, MOD84_021D9594, MOD84_021D95CC + .word MOD84_021D95B8, MOD84_021D9A54, MOD84_021D9A74, MOD84_021D9A9C + .word MOD84_021D9A88, MOD84_021D9C1C, MOD84_021D9C80, MOD84_021D9CD4 + .word MOD84_021D9CA4 diff --git a/arm9/modules/84/asm/module_84.s b/arm9/modules/84/asm/module_84_thumb2.s index b2dc368a..41b27a0f 100644 --- a/arm9/modules/84/asm/module_84.s +++ b/arm9/modules/84/asm/module_84_thumb2.s @@ -3,1476 +3,68 @@ .section .text .balign 4, 0 - thumb_func_start MOD84_021D74E0 -MOD84_021D74E0: ; 0x021D74E0 - push {r3, r4, r5, r6, lr} - sub sp, #0x14 - add r5, r1, #0 - ldr r1, [r5] - add r6, r0, #0 - cmp r1, #0 - beq _021D74FC - cmp r1, #1 - bne _021D74F4 - b _021D7620 -_021D74F4: - cmp r1, #2 - bne _021D74FA - b _021D765A -_021D74FA: - b _021D7668 -_021D74FC: - mov r0, #3 - mov r1, #0x4b - lsl r2, r0, #0x10 - bl FUN_0201681C - ldr r1, _021D7670 ; =0x00001244 - add r0, r6, #0 - mov r2, #0x4b - bl FUN_02006268 - add r4, r0, #0 - bne _021D7516 - b _021D7618 -_021D7516: - 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, _021D7674 ; =0xFFFFE0FF - and r1, r0 - str r1, [r2] - ldr r2, _021D7678 ; =0x04001000 - ldr r1, [r2] - and r0, r1 - str r0, [r2] - add r0, r6, #0 - bl FUN_0200628C - str r0, [r4, #0x18] - mov r0, #0 - str r0, [r4, #0x1c] - 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, #0x4b - str r2, [sp, #0x10] - add r2, r0, #0 - bl FUN_02009EAC - add r1, r4, #0 - mov r0, #0x80 - add r1, #0xe0 - mov r2, #0x4b - bl FUN_02008C9C - add r1, r4, #0 - add r1, #0xdc - str r0, [r1] - add r0, r4, #0 - mov r2, #0xd - add r0, #0xe0 - mov r1, #0 - lsl r2, r2, #0x10 - bl FUN_02008D04 - add r0, r4, #0 - mov r1, #0 - add r0, #0xe0 - add r2, r1, #0 - bl FUN_02008D24 - add r0, r4, #0 - str r6, [r4] - bl MOD84_021D7968 - add r0, r4, #0 - bl MOD84_021D7AA0 - add r0, r4, #0 - bl MOD84_021D7F94 - add r0, r4, #0 - bl MOD84_021D82B8 - ldr r2, _021D767C ; =0x000001ED - mov r0, #0 - mov r1, #0x1a - mov r3, #0x4b - bl NewMsgDataFromNarc - str r0, [r4, #0x14] - str r0, [sp] - mov r1, #0xef - ldr r0, [r4, #4] - mvn r1, r1 - mov r2, #1 - mov r3, #0 - bl MOD84_021D84F8 - str r0, [r4, #8] - ldr r0, [r4, #0x14] - ldr r1, _021D7680 ; =0xFFFFFE40 - str r0, [sp] - ldr r0, [r4, #4] - mov r2, #5 - mov r3, #0 - bl MOD84_021D84F8 - str r0, [r4, #0xc] - mov r1, #0 - ldr r2, _021D7684 ; =0x021DA6C8 - ldr r0, _021D7688 ; =0x00001224 - str r1, [r4, #0x10] - str r1, [r4, r0] - add r0, r0, #4 - str r1, [r4, r0] - ldr r1, [r4, #4] - ldr r2, [r2, #0x2c] - add r0, r4, #0 - blx r2 - ldr r1, _021D768C ; =0x0000122C - mov r2, #1 - str r0, [r4, r1] - ldr r1, _021D7690 ; =0x000004A2 - mov r0, #0xe - bl FUN_0200433C - ldr r0, _021D7694 ; =MOD84_021D7958 - add r1, r4, #0 - mov r2, #1 - bl FUN_0200CA60 - ldr r1, _021D7698 ; =0x00001230 - str r0, [r4, r1] - ldr r0, _021D769C ; =MOD84_021D7950 - add r1, r4, #0 - bl FUN_02015F10 -_021D7618: - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021D7668 -_021D7620: - bl FUN_02006278 - ldr r2, _021D7684 ; =0x021DA6C8 - ldr r1, _021D768C ; =0x0000122C - add r4, r0, #0 - ldr r0, [r4, r1] - sub r1, r1, #4 - ldr r2, [r2, #0x30] - add r1, r4, r1 - blx r2 - cmp r0, #0 - beq _021D7668 - ldr r1, _021D76A0 ; =0x00001228 - mov r0, #0 - str r0, [r4, r1] - mov r1, #0x20 - str r1, [sp] - mov r1, #1 - str r1, [sp, #4] - mov r2, #0x4b - str r2, [sp, #8] - add r2, r1, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - ldr r0, [r5] - add r0, r0, #1 - str r0, [r5] - b _021D7668 -_021D765A: - bl FUN_0200E308 - cmp r0, #0 - beq _021D7668 - add sp, #0x14 - mov r0, #1 - pop {r3, r4, r5, r6, pc} -_021D7668: - mov r0, #0 - add sp, #0x14 - pop {r3, r4, r5, r6, pc} - nop -_021D7670: .word 0x00001244 -_021D7674: .word 0xFFFFE0FF -_021D7678: .word 0x04001000 -_021D767C: .word 0x000001ED -_021D7680: .word 0xFFFFFE40 -_021D7684: .word MOD84_021DA6C8 -_021D7688: .word 0x00001224 -_021D768C: .word 0x0000122C -_021D7690: .word 0x000004A2 -_021D7694: .word MOD84_021D7958 -_021D7698: .word 0x00001230 -_021D769C: .word MOD84_021D7950 -_021D76A0: .word 0x00001228 - thumb_func_end MOD84_021D74E0 - - thumb_func_start MOD84_021D76A4 -MOD84_021D76A4: ; 0x021D76A4 - push {r4, r5, r6, lr} - add r4, r1, #0 - add r6, r0, #0 - bl FUN_02006278 - add r5, r0, #0 - ldr r0, [r4] - cmp r0, #3 - bhi _021D773E - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021D76C2: ; jump table - .short _021D76CA - _021D76C2 - 2 ; case 0 - .short _021D76EE - _021D76C2 - 2 ; case 1 - .short _021D771A - _021D76C2 - 2 ; case 2 - .short _021D772E - _021D76C2 - 2 ; case 3 -_021D76CA: - bl OS_DisableInterrupts - add r6, r0, #0 - ldr r0, _021D7744 ; =0x00001230 - ldr r0, [r5, r0] - bl FUN_0200CAB4 - add r0, r6, #0 - bl OS_RestoreInterrupts - mov r0, #0 - add r1, r0, #0 - bl FUN_02015F10 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021D773E -_021D76EE: - ldr r0, [r5, #0xc] - bl MOD84_021D85B8 - ldr r0, [r5, #8] - bl MOD84_021D85B8 - ldr r0, [r5, #0x14] - bl DestroyMsgData - add r0, r5, #0 - bl MOD84_021D8000 - add r0, r5, #0 - bl MOD84_021D7AB8 - add r0, r5, #0 - bl MOD84_021D7A84 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021D773E -_021D771A: - add r5, #0xdc - ldr r0, [r5] - bl FUN_0201FD58 - bl FUN_02009FA0 - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] - b _021D773E -_021D772E: - add r0, r6, #0 - bl FUN_0200627C - mov r0, #0x4b - bl FUN_020168D0 - mov r0, #1 - pop {r4, r5, r6, pc} -_021D773E: - mov r0, #0 - pop {r4, r5, r6, pc} - nop -_021D7744: .word 0x00001230 - thumb_func_end MOD84_021D76A4 - - thumb_func_start MOD84_021D7748 -MOD84_021D7748: ; 0x021D7748 - push {r4, r5, lr} - sub sp, #0xc - add r5, r1, #0 - bl FUN_02006278 - add r4, r0, #0 - ldr r0, [r4, #8] - mov r1, #1 - bl MOD84_021D85EC - ldr r0, [r4, #0xc] - mov r1, #1 - bl MOD84_021D85EC - str r0, [r4, #0x10] - ldr r0, [r5] - cmp r0, #0xa - bhi _021D7804 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_021D7778: ; jump table - .short _021D778E - _021D7778 - 2 ; case 0 - .short _021D77EC - _021D7778 - 2 ; case 1 - .short _021D7826 - _021D7778 - 2 ; case 2 - .short _021D7846 - _021D7778 - 2 ; case 3 - .short _021D7868 - _021D7778 - 2 ; case 4 - .short _021D7874 - _021D7778 - 2 ; case 5 - .short _021D789C - _021D7778 - 2 ; case 6 - .short _021D78AA - _021D7778 - 2 ; case 7 - .short _021D78BE - _021D7778 - 2 ; case 8 - .short _021D7920 - _021D7778 - 2 ; case 9 - .short _021D7914 - _021D7778 - 2 ; case 10 -_021D778E: - ldr r0, [r4, #0x1c] - cmp r0, #0 - bne _021D77C8 - ldr r0, _021D7928 ; =gUnknown21C48B8 - ldr r1, [r0, #0x48] - mov r0, #8 - tst r0, r1 - beq _021D77C8 - ldr r0, [r4, #0x18] - ldr r0, [r0, #4] - cmp r0, #0 - beq _021D77C8 - mov r0, #0x10 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, #0x4b - str r0, [sp, #8] - mov r0, #0 - add r1, r0, #0 - add r2, r0, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #1 - str r0, [r4, #0x1c] - mov r0, #7 - str r0, [r5] - b _021D7920 -_021D77C8: - ldr r2, _021D792C ; =0x0000122C - sub r1, r2, #4 - ldr r0, [r4, r2] - sub r2, #8 - ldr r2, [r4, r2] - add r1, r4, r1 - lsl r3, r2, #4 - ldr r2, _021D7930 ; =0x021DA6FC - ldr r2, [r2, r3] - blx r2 - cmp r0, #0 - beq _021D7804 - ldr r0, _021D7934 ; =0x00001228 - mov r1, #0 - str r1, [r4, r0] - mov r0, #1 - str r0, [r5] - b _021D7920 -_021D77EC: - ldr r2, _021D792C ; =0x0000122C - sub r1, r2, #4 - ldr r0, [r4, r2] - sub r2, #8 - ldr r2, [r4, r2] - add r1, r4, r1 - lsl r3, r2, #4 - ldr r2, _021D7938 ; =0x021DA700 - ldr r2, [r2, r3] - blx r2 - cmp r0, #0 - bne _021D7806 -_021D7804: - b _021D7920 -_021D7806: - ldr r0, _021D793C ; =0x00001224 - ldr r1, [r4, r0] - add r1, r1, #1 - str r1, [r4, r0] - ldr r1, [r4, r0] - cmp r1, #7 - bhs _021D7820 - mov r1, #0 - add r0, r0, #4 - str r1, [r4, r0] - mov r0, #2 - str r0, [r5] - b _021D7920 -_021D7820: - mov r0, #4 - str r0, [r5] - b _021D7920 -_021D7826: - ldr r2, _021D793C ; =0x00001224 - ldr r1, [r4, #4] - ldr r2, [r4, r2] - add r0, r4, #0 - lsl r3, r2, #4 - ldr r2, _021D7940 ; =0x021DA6F4 - ldr r2, [r2, r3] - blx r2 - ldr r1, _021D792C ; =0x0000122C - mov r2, #0 - str r0, [r4, r1] - sub r0, r1, #4 - str r2, [r4, r0] - mov r0, #3 - str r0, [r5] - b _021D7920 -_021D7846: - ldr r2, _021D792C ; =0x0000122C - sub r1, r2, #4 - ldr r0, [r4, r2] - sub r2, #8 - ldr r2, [r4, r2] - add r1, r4, r1 - lsl r3, r2, #4 - ldr r2, _021D7944 ; =0x021DA6F8 - ldr r2, [r2, r3] - blx r2 - cmp r0, #0 - beq _021D7920 - ldr r0, _021D7934 ; =0x00001228 - mov r1, #0 - str r1, [r4, r0] - str r1, [r5] - b _021D7920 -_021D7868: - ldr r0, [r4, #0x10] - cmp r0, #0 - beq _021D7920 - mov r0, #5 - str r0, [r5] - b _021D7920 -_021D7874: - ldr r0, _021D7928 ; =gUnknown21C48B8 - ldr r1, [r0, #0x48] - mov r0, #9 - tst r0, r1 - beq _021D7920 - mov r0, #8 - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, #0x4b - str r0, [sp, #8] - mov r0, #0 - add r1, r0, #0 - add r2, r0, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #6 - str r0, [r5] - b _021D7920 -_021D789C: - bl FUN_0200E308 - cmp r0, #0 - beq _021D7920 - add sp, #0xc - mov r0, #1 - pop {r4, r5, pc} -_021D78AA: - bl FUN_0200E308 - cmp r0, #0 - beq _021D7920 - ldr r0, _021D7934 ; =0x00001228 - mov r1, #0 - str r1, [r4, r0] - mov r0, #8 - str r0, [r5] - b _021D7920 -_021D78BE: - ldr r2, _021D792C ; =0x0000122C - sub r1, r2, #4 - ldr r0, [r4, r2] - sub r2, #8 - ldr r2, [r4, r2] - add r1, r4, r1 - lsl r3, r2, #4 - ldr r2, _021D7938 ; =0x021DA700 - ldr r2, [r2, r3] - blx r2 - cmp r0, #0 - beq _021D7920 - ldr r0, [r4, #0xc] - mov r1, #1 - bl MOD84_021D87B0 - ldr r0, [r4, #8] - bl MOD84_021D881C - mov r2, #1 - lsl r2, r2, #0x1a - ldr r1, [r2] - ldr r0, _021D7948 ; =0xFFFF1FFF - and r1, r0 - str r1, [r2] - ldr r2, _021D794C ; =0x04001000 - ldr r1, [r2] - and r0, r1 - str r0, [r2] - mov r0, #0x20 - str r0, [sp] - mov r1, #1 - str r1, [sp, #4] - mov r0, #0x4b - str r0, [sp, #8] - mov r0, #0 - add r2, r1, #0 - add r3, r0, #0 - bl FUN_0200E1D0 - mov r0, #0xa - str r0, [r5] - b _021D7920 -_021D7914: - bl FUN_0200E308 - cmp r0, #0 - beq _021D7920 - mov r0, #5 - str r0, [r5] -_021D7920: - mov r0, #0 - add sp, #0xc - pop {r4, r5, pc} - nop -_021D7928: .word gUnknown21C48B8 -_021D792C: .word 0x0000122C -_021D7930: .word MOD84_021DA6FC -_021D7934: .word 0x00001228 -_021D7938: .word MOD84_021DA700 -_021D793C: .word 0x00001224 -_021D7940: .word MOD84_021DA6F4 -_021D7944: .word MOD84_021DA6F8 -_021D7948: .word 0xFFFF1FFF -_021D794C: .word 0x04001000 - thumb_func_end MOD84_021D7748 - - thumb_func_start MOD84_021D7950 -MOD84_021D7950: ; 0x021D7950 - ldr r3, _021D7954 ; =MOD84_021D7CFC - bx r3 - .align 2, 0 -_021D7954: .word MOD84_021D7CFC - thumb_func_end MOD84_021D7950 - - thumb_func_start MOD84_021D7958 -MOD84_021D7958: ; 0x021D7958 - push {r3, lr} - add r1, #0xdc - ldr r0, [r1] - bl FUN_0201FDEC - bl FUN_02009F80 - pop {r3, pc} - thumb_func_end MOD84_021D7958 - - thumb_func_start MOD84_021D7968 -MOD84_021D7968: ; 0x021D7968 - push {r4, r5, r6, r7, lr} - sub sp, #0xc - add r4, r0, #0 - mov r0, #0x4b - bl FUN_02016B94 - str r0, [r4, #4] - ldr r0, _021D7A60 ; =0x021DA68C - bl FUN_0201E66C - ldr r2, _021D7A64 ; =0x04000304 - ldr r0, _021D7A68 ; =0xFFFF7FFF - ldrh r1, [r2] - and r0, r1 - strh r0, [r2] - mov r0, #1 - mov r1, #0 - add r2, r0, #0 - bl GX_SetGraphicsMode - ldr r0, _021D7A6C ; =0x021DA650 - bl FUN_02016BBC - ldr r0, [r4, #4] - ldr r2, _021D7A70 ; =0x021DA670 - mov r1, #1 - mov r3, #0 - bl FUN_02016C18 - ldr r0, [r4, #4] - ldr r2, _021D7A70 ; =0x021DA670 - mov r1, #5 - mov r3, #0 - bl FUN_02016C18 - mov r2, #0 - str r2, [sp] - mov r0, #0x20 - str r0, [sp, #4] - mov r0, #0x4b - str r0, [sp, #8] - mov r0, #0x7f - mov r1, #0x42 - add r3, r2, #0 - bl FUN_02006948 - mov r3, #0 - str r3, [sp] - mov r0, #0x20 - str r0, [sp, #4] - mov r0, #0x4b - str r0, [sp, #8] - mov r0, #0x7f - mov r1, #0x42 - mov r2, #4 - bl FUN_02006948 - ldr r2, _021D7A74 ; =0x04000050 - mov r0, #0 - add r3, r2, #0 - add r7, r2, #0 - ldr r1, _021D7A78 ; =0x04001050 - strh r0, [r2] - strh r0, [r1] - mov r0, #0xff - sub r3, #0x10 - strh r0, [r3] - add r3, r2, #0 - ldr r4, _021D7A7C ; =0x00005EC0 - sub r3, #0xc - strh r4, [r3] - sub r7, #8 - ldrh r4, [r7] - mov r5, #0x3f - mov r3, #0x1d - bic r4, r5 - add r6, r4, #0 - orr r6, r3 - mov r4, #0x20 - orr r6, r4 - strh r6, [r7] - sub r7, r2, #6 - ldrh r6, [r7] - mov r2, #0x1f - bic r6, r5 - orr r6, r2 - orr r6, r4 - strh r6, [r7] - add r6, r1, #0 - sub r6, #0x10 - strh r0, [r6] - add r0, r1, #0 - mov r6, #0x18 - sub r0, #0xc - strh r6, [r0] - add r6, r1, #0 - sub r6, #8 - ldrh r0, [r6] - bic r0, r5 - orr r0, r3 - orr r0, r4 - sub r3, r1, #6 - strh r0, [r6] - ldrh r0, [r3] - sub r1, #0x50 - bic r0, r5 - orr r0, r2 - orr r0, r4 - strh r0, [r3] - lsl r3, r4, #0x15 - ldr r0, [r3] - ldr r2, _021D7A80 ; =0xFFFF1FFF - add r5, r0, #0 - and r5, r2 - lsl r0, r4, #8 - orr r0, r5 - str r0, [r3] - ldr r0, [r1] - and r2, r0 - lsl r0, r4, #8 - orr r0, r2 - str r0, [r1] - add sp, #0xc - pop {r4, r5, r6, r7, pc} - .align 2, 0 -_021D7A60: .word MOD84_021DA68C -_021D7A64: .word 0x04000304 -_021D7A68: .word 0xFFFF7FFF -_021D7A6C: .word MOD84_021DA650 -_021D7A70: .word MOD84_021DA670 -_021D7A74: .word 0x04000050 -_021D7A78: .word 0x04001050 -_021D7A7C: .word 0x00005EC0 -_021D7A80: .word 0xFFFF1FFF - thumb_func_end MOD84_021D7968 - - thumb_func_start MOD84_021D7A84 -MOD84_021D7A84: ; 0x021D7A84 - push {r4, lr} - add r4, r0, #0 - ldr r0, [r4, #4] - mov r1, #1 - bl FUN_020178A0 - ldr r0, [r4, #4] - mov r1, #5 - bl FUN_020178A0 - ldr r0, [r4, #4] - bl FreeToHeap - pop {r4, pc} - thumb_func_end MOD84_021D7A84 - - thumb_func_start MOD84_021D7AA0 -MOD84_021D7AA0: ; 0x021D7AA0 - push {r4, lr} - add r4, r0, #0 - bl MOD84_021D7AC8 - add r0, r4, #0 - bl MOD84_021D7B54 - add r0, r4, #0 - bl MOD84_021D7BC8 - pop {r4, pc} - .align 2, 0 - thumb_func_end MOD84_021D7AA0 - - thumb_func_start MOD84_021D7AB8 -MOD84_021D7AB8: ; 0x021D7AB8 - push {r4, lr} - add r4, r0, #0 - bl MOD84_021D7CD4 - add r0, r4, #0 - bl MOD84_021D7BBC - pop {r4, pc} - thumb_func_end MOD84_021D7AB8 - - thumb_func_start MOD84_021D7AC8 -MOD84_021D7AC8: ; 0x021D7AC8 - push {r3, lr} - bl FUN_020BB7F4 - bl G3X_InitMtxStack - ldr r0, _021D7B3C ; =0x04000060 - ldr r2, _021D7B40 ; =0xFFFFCFFD - ldrh r1, [r0] - and r1, r2 - strh r1, [r0] - add r1, r2, #2 - ldrh r3, [r0] - lsr r2, r2, #0x11 - and r3, r1 - mov r1, #0x10 - orr r1, r3 - strh r1, [r0] - ldrh r3, [r0] - ldr r1, _021D7B44 ; =0x0000CFFB - and r3, r1 - strh r3, [r0] - ldrh r3, [r0] - sub r1, r1, #4 - and r1, r3 - strh r1, [r0] - mov r0, #0 - add r1, r0, #0 - mov r3, #0x3f - str r0, [sp] - bl G3X_SetClearColor - ldr r1, _021D7B48 ; =0x04000540 - mov r0, #2 - str r0, [r1] - ldr r0, _021D7B4C ; =0xBFFF0000 - str r0, [r1, #0x40] - mov r0, #1 - add r1, r0, #0 - bl FUN_020AEB70 - mov r0, #1 - lsl r0, r0, #0xe - mov r1, #1 - bl FUN_020AEDF4 - mov r0, #1 - add r1, r0, #0 - bl FUN_0201E6E4 - ldr r1, _021D7B50 ; =0x04000008 - mov r0, #3 - ldrh r2, [r1] - bic r2, r0 - mov r0, #1 - orr r0, r2 - strh r0, [r1] - pop {r3, pc} - nop -_021D7B3C: .word 0x04000060 -_021D7B40: .word 0xFFFFCFFD -_021D7B44: .word 0x0000CFFB -_021D7B48: .word 0x04000540 -_021D7B4C: .word 0xBFFF0000 -_021D7B50: .word 0x04000008 - thumb_func_end MOD84_021D7AC8 - - thumb_func_start MOD84_021D7B54 -MOD84_021D7B54: ; 0x021D7B54 - push {r4, lr} - sub sp, #0x18 - add r4, r0, #0 - mov r0, #0x4b - bl FUN_0201EB64 - str r0, [r4, #0x20] - mov r0, #0 - str r0, [r4, #0x24] - str r0, [r4, #0x28] - str r0, [r4, #0x2c] - strh r0, [r4, #0x30] - strh r0, [r4, #0x32] - strh r0, [r4, #0x34] - str r0, [sp] - mov r0, #1 - str r0, [sp, #4] - ldr r0, [r4, #0x20] - mov r1, #0x4b - str r0, [sp, #8] - add r0, r4, #0 - add r2, r4, #0 - ldr r3, _021D7BB8 ; =0x00000FA4 - add r0, #0x24 - lsl r1, r1, #0xe - add r2, #0x30 - bl FUN_0201ECA8 - mov r1, #0 - mov r0, #1 - lsl r0, r0, #0xc - str r0, [sp, #0x10] - str r1, [sp, #0xc] - str r1, [sp, #0x14] - ldr r1, [r4, #0x20] - add r0, sp, #0xc - bl FUN_0201EC58 - ldr r0, [r4, #0x20] - bl FUN_0201EB8C - mov r1, #0xfa - ldr r2, [r4, #0x20] - mov r0, #0 - lsl r1, r1, #0xe - bl FUN_0201EC94 - add sp, #0x18 - pop {r4, pc} - nop -_021D7BB8: .word 0x00000FA4 - thumb_func_end MOD84_021D7B54 - - thumb_func_start MOD84_021D7BBC -MOD84_021D7BBC: ; 0x021D7BBC - ldr r3, _021D7BC4 ; =FUN_0201EB70 - ldr r0, [r0, #0x20] - bx r3 - nop -_021D7BC4: .word FUN_0201EB70 - thumb_func_end MOD84_021D7BBC - - thumb_func_start MOD84_021D7BC8 -MOD84_021D7BC8: ; 0x021D7BC8 - push {r4, r5, lr} - sub sp, #0xc - mov r2, #0 - add r5, r0, #0 - add r4, r5, #0 - str r2, [sp] - add r0, sp, #8 - str r0, [sp, #4] - mov r0, #0x7f - mov r1, #1 - mov r3, #0x4b - add r4, #0x38 - bl FUN_02006D18 - str r0, [r5, #0x38] - ldr r1, [sp, #8] - bl DC_FlushRange - ldr r0, [r5, #0x38] - cmp r0, #0 - beq _021D7CCC - mov r1, #1 - add r0, r4, #0 - lsl r1, r1, #0xc - add r0, #0x88 - str r1, [r0] - add r0, r4, #0 - add r0, #0x8c - str r1, [r0] - add r0, r4, #0 - add r0, #0x90 - str r1, [r0] - mov r2, #0 - add r0, r4, #0 - ldr r1, _021D7CD0 ; =0xFFF8E000 - str r2, [r4, #0x7c] - add r0, #0x80 - str r1, [r0] - add r0, r4, #0 - add r0, #0x84 - str r2, [r0] - add r0, r4, #0 - add r0, #0x94 - strh r2, [r0] - mov r1, #0xa5 - add r0, r4, #0 - lsl r1, r1, #4 - add r0, #0x96 - strh r1, [r0] - add r0, r4, #0 - mov r1, #0x50 - add r0, #0x98 - strh r1, [r0] - ldr r0, [r4] - bl FUN_020BC13C - str r0, [r4, #0x5c] - ldrh r1, [r0, #0xe] - add r1, r0, r1 - ldr r1, [r1, #0xc] - add r0, r0, r1 - str r0, [r4, #0x60] - ldr r0, [r4] - bl FUN_020BC0FC - str r0, [r4, #0x64] - bl FUN_0201B3C4 - ldr r0, [r4] - ldr r1, [r4, #0x64] - bl FUN_0201B3A8 - add r0, r4, #0 - ldr r1, [r4, #0x60] - add r0, #8 - bl FUN_020B80B4 - mov r2, #0 - str r2, [sp] - add r0, sp, #8 - str r0, [sp, #4] - mov r0, #0x7f - mov r1, #3 - mov r3, #0x4b - bl FUN_02006D18 - str r0, [r4, #4] - cmp r0, #0 - beq _021D7CCC - ldr r1, [sp, #8] - bl DC_FlushRange - add r0, r4, #0 - add r0, #0x6c - mov r1, #0x4b - mov r2, #0x20 - bl FUN_02016B20 - ldr r0, [r4, #4] - mov r1, #0 - bl FUN_020BC4C8 - add r5, r0, #0 - add r0, r4, #0 - ldr r2, [r4, #0x60] - add r0, #0x6c - add r1, r5, #0 - bl FUN_020BB8D0 - str r0, [r4, #0x68] - ldr r2, [r4, #0x60] - ldr r3, [r4, #0x64] - add r1, r5, #0 - bl FUN_020B8110 - add r0, r4, #0 - ldr r1, [r4, #0x68] - add r0, #8 - bl FUN_020B7EFC - add r0, r4, #0 - mov r1, #0 - add r0, #0x9c - str r1, [r0] - ldr r0, [r4, #0x68] - add r4, #0xa0 - ldr r0, [r0, #8] - ldrh r0, [r0, #4] - lsl r0, r0, #0xc - str r0, [r4] -_021D7CCC: - add sp, #0xc - pop {r4, r5, pc} - .align 2, 0 -_021D7CD0: .word 0xFFF8E000 - thumb_func_end MOD84_021D7BC8 - - thumb_func_start MOD84_021D7CD4 -MOD84_021D7CD4: ; 0x021D7CD4 - push {r4, lr} - add r4, r0, #0 - add r4, #0x38 - ldr r0, [r4, #4] - cmp r0, #0 - beq _021D7CF0 - add r0, r4, #0 - ldr r1, [r4, #0x68] - add r0, #0x6c - bl thunk_FUN_020ae84c - ldr r0, [r4, #4] - bl FreeToHeap -_021D7CF0: - ldr r0, [r4] - cmp r0, #0 - beq _021D7CFA - bl FreeToHeap -_021D7CFA: - pop {r4, pc} - thumb_func_end MOD84_021D7CD4 - - thumb_func_start MOD84_021D7CFC -MOD84_021D7CFC: ; 0x021D7CFC - push {r3, r4, lr} - sub sp, #0x4c - add r4, r0, #0 - bl G3X_ResetMtxStack - mov r1, #0 - mov r0, #0x11 - add r2, r1, #0 - bl FUN_020BB1C0 - bl FUN_0201EBA4 - add r4, #0x38 - add r0, sp, #0x28 - bl MTX_Identity33_ - add r0, r4, #0 - add r0, #0x94 - ldrh r0, [r0] - ldr r3, _021D7DF0 ; =UNK_020FFA38 - asr r0, r0, #4 - lsl r2, r0, #1 - lsl r1, r2, #1 - add r2, r2, #1 - lsl r2, r2, #1 - ldrsh r1, [r3, r1] - ldrsh r2, [r3, r2] - add r0, sp, #4 - bl MTX_RotX33_ - add r1, sp, #0x28 - add r0, sp, #4 - add r2, r1, #0 - bl MTX_Concat33 - add r0, r4, #0 - add r0, #0x96 - ldrh r0, [r0] - ldr r3, _021D7DF0 ; =UNK_020FFA38 - asr r0, r0, #4 - lsl r2, r0, #1 - lsl r1, r2, #1 - add r2, r2, #1 - lsl r2, r2, #1 - ldrsh r1, [r3, r1] - ldrsh r2, [r3, r2] - add r0, sp, #4 - bl MTX_RotY33_ - add r1, sp, #0x28 - add r0, sp, #4 - add r2, r1, #0 - bl MTX_Concat33 - add r0, r4, #0 - add r0, #0x98 - ldrh r0, [r0] - ldr r3, _021D7DF0 ; =UNK_020FFA38 - asr r0, r0, #4 - lsl r2, r0, #1 - lsl r1, r2, #1 - add r2, r2, #1 - lsl r2, r2, #1 - ldrsh r1, [r3, r1] - ldrsh r2, [r3, r2] - add r0, sp, #4 - bl MTX_RotZ33_ - add r1, sp, #0x28 - add r0, sp, #4 - add r2, r1, #0 - bl MTX_Concat33 - add r1, r4, #0 - add r1, #0x9c - ldr r2, [r1] - mov r1, #2 - lsl r1, r1, #0xa - add r2, r2, r1 - add r1, r4, #0 - add r1, #0x9c - str r2, [r1] - add r1, r4, #0 - add r1, #0xa0 - ldr r2, [r1] - add r1, r4, #0 - add r1, #0x9c - add r0, r4, #0 - ldr r1, [r1] - add r0, #0x9c - cmp r1, r2 - blt _021D7DBA - ldr r1, [r0] - sub r1, r1, r2 - str r1, [r0] -_021D7DBA: - add r0, r4, #0 - add r0, #0x9c - ldr r1, [r0] - ldr r0, [r4, #0x68] - add r2, sp, #0x28 - str r1, [r0] - add r0, r4, #0 - add r1, r4, #0 - add r4, #0x88 - add r0, #8 - add r1, #0x7c - add r3, r4, #0 - bl FUN_0201B26C - mov r2, #1 - mov r0, #0x12 - add r1, sp, #0 - str r2, [sp] - bl FUN_020BB1C0 - mov r0, #0 - mov r1, #1 - bl FUN_020222B4 - add sp, #0x4c - pop {r3, r4, pc} - nop -_021D7DF0: .word UNK_020FFA38 - thumb_func_end MOD84_021D7CFC - - thumb_func_start MOD84_021D7DF4 -MOD84_021D7DF4: ; 0x021D7DF4 - push {r4, r5, lr} - sub sp, #0xc - add r4, r0, #0 - ldr r0, [r0, #0x38] - add r5, r1, #0 - add r4, #0x38 - cmp r0, #0 - beq _021D7E08 - bl FreeToHeap -_021D7E08: - ldr r1, _021D7ED4 ; =0x021DA648 - lsl r3, r5, #1 - mov r2, #0 - ldrh r1, [r1, r3] - str r2, [sp] - add r0, sp, #8 - str r0, [sp, #4] - mov r0, #0x7f - mov r3, #0x4b - bl FUN_02006D18 - str r0, [r4] - cmp r0, #0 - beq _021D7E9A - ldr r1, [sp, #8] - bl DC_FlushRange - mov r1, #1 - add r0, r4, #0 - lsl r1, r1, #0xc - add r0, #0x88 - str r1, [r0] - add r0, r4, #0 - add r0, #0x8c - str r1, [r0] - add r0, r4, #0 - add r0, #0x90 - str r1, [r0] - mov r2, #0 - add r0, r4, #0 - ldr r1, _021D7ED8 ; =0xFFF8E000 - str r2, [r4, #0x7c] - add r0, #0x80 - str r1, [r0] - add r0, r4, #0 - add r0, #0x84 - str r2, [r0] - add r0, r4, #0 - add r0, #0x94 - strh r2, [r0] - mov r1, #0xa5 - add r0, r4, #0 - lsl r1, r1, #4 - add r0, #0x96 - strh r1, [r0] - add r0, r4, #0 - mov r1, #0x50 - add r0, #0x98 - strh r1, [r0] - ldr r0, [r4] - bl FUN_020BC13C - str r0, [r4, #0x5c] - ldrh r1, [r0, #0xe] - add r1, r0, r1 - ldr r1, [r1, #0xc] - add r0, r0, r1 - str r0, [r4, #0x60] - ldr r0, [r4] - bl FUN_020BC0FC - str r0, [r4, #0x64] - bl FUN_0201B3C4 - ldr r0, [r4] - ldr r1, [r4, #0x64] - bl FUN_0201B3A8 - add r0, r4, #0 - ldr r1, [r4, #0x60] - add r0, #8 - bl FUN_020B80B4 -_021D7E9A: - ldr r0, [r4, #4] - cmp r0, #0 - beq _021D7ED0 - mov r1, #0 - bl FUN_020BC4C8 - add r1, r0, #0 - ldr r0, [r4, #0x68] - ldr r2, [r4, #0x60] - ldr r3, [r4, #0x64] - bl FUN_020B8110 - add r0, r4, #0 - ldr r1, [r4, #0x68] - add r0, #8 - bl FUN_020B7EFC - add r0, r4, #0 - mov r1, #0 - add r0, #0x9c - str r1, [r0] - ldr r0, [r4, #0x68] - add r4, #0xa0 - ldr r0, [r0, #8] - ldrh r0, [r0, #4] - lsl r0, r0, #0xc - str r0, [r4] -_021D7ED0: - add sp, #0xc - pop {r4, r5, pc} - .align 2, 0 -_021D7ED4: .word MOD84_021DA648 -_021D7ED8: .word 0xFFF8E000 - thumb_func_end MOD84_021D7DF4 - - thumb_func_start MOD84_021D7EDC -MOD84_021D7EDC: ; 0x021D7EDC - push {r4, r5, lr} - sub sp, #0x14 - add r5, r0, #0 - mov r0, #0x82 - lsl r0, r0, #2 - add r0, r5, r0 - bl FUN_020B1A24 - mov r0, #0x8b - lsl r0, r0, #2 - add r0, r5, r0 - bl FUN_020B1A24 - mov r0, #0x25 - lsl r0, r0, #4 - add r0, r5, r0 - bl FUN_020B1A24 - mov r0, #0x9d - lsl r0, r0, #2 - add r0, r5, r0 - bl FUN_020B19DC - mov r0, #0xa2 - lsl r0, r0, #2 - add r0, r5, r0 - bl FUN_020B19DC - mov r0, #0xa7 - lsl r0, r0, #2 - add r0, r5, r0 - bl FUN_020B19DC - ldr r0, [r5, #0x18] - ldr r0, [r0] - cmp r0, #1 - bne _021D7F2A - mov r0, #1 - b _021D7F2C -_021D7F2A: - mov r0, #0 -_021D7F2C: - mov r2, #0 - lsl r4, r0, #3 - str r2, [sp] - mov r0, #1 - str r0, [sp, #4] - lsl r0, r0, #0xf - str r0, [sp, #8] - mov r0, #0x4b - ldr r1, _021D7F84 ; =0x021DA660 - str r0, [sp, #0xc] - mov r0, #0x82 - lsl r0, r0, #2 - add r0, r5, r0 - str r0, [sp, #0x10] - ldrh r1, [r1, r4] - mov r0, #0x7f - add r3, r2, #0 - bl FUN_02006AE4 - mov r0, #0x4b - ldr r1, _021D7F88 ; =0x021DA662 - str r0, [sp] - mov r0, #0x9d - lsl r0, r0, #2 - add r0, r5, r0 - str r0, [sp, #4] - ldrh r1, [r1, r4] - mov r0, #0x7f - mov r2, #1 - mov r3, #0 - bl FUN_02006A8C - ldr r1, _021D7F8C ; =0x021DA664 - ldr r2, _021D7F90 ; =0x021DA666 - ldrh r1, [r1, r4] - ldrh r2, [r2, r4] - mov r0, #0x7f - bl MOD84_021D81DC - mov r1, #0xad - lsl r1, r1, #2 - str r0, [r5, r1] - add sp, #0x14 - pop {r4, r5, pc} - .align 2, 0 -_021D7F84: .word MOD84_021DA660 -_021D7F88: .word MOD84_021DA662 -_021D7F8C: .word MOD84_021DA664 -_021D7F90: .word MOD84_021DA666 - thumb_func_end MOD84_021D7EDC - - thumb_func_start MOD84_021D7F94 -MOD84_021D7F94: ; 0x021D7F94 - push {r4, lr} - sub sp, #0x30 - add r4, r0, #0 - bl MOD84_021D7EDC - mov r3, #0xad - mov r0, #1 - lsl r3, r3, #2 - str r0, [sp] - add r2, r3, #0 - ldr r1, [r4, r3] - sub r2, #0xac - sub r3, #0x40 - add r0, sp, #0xc - add r2, r4, r2 - add r3, r4, r3 - bl MOD84_021D8240 - mov r1, #0 - mov r2, #0xc8 - add r3, r2, #0 - str r1, [sp] - mov r0, #1 - str r0, [sp, #4] - str r1, [sp, #8] - add r0, r4, #0 - add r1, sp, #0xc - add r3, #0x98 - bl MOD84_021D8260 - mov r1, #0x2b - lsl r1, r1, #4 - str r0, [r4, r1] - ldr r0, [r4, r1] - mov r1, #1 - bl FUN_020200BC - mov r0, #0x2b - lsl r0, r0, #4 - mov r1, #1 - ldr r0, [r4, r0] - lsl r1, r1, #0xc - bl FUN_020200D8 - mov r0, #0x10 - mov r1, #1 - bl FUN_0201E6E4 - mov r0, #0x10 - mov r1, #1 - bl FUN_0201E74C - add sp, #0x30 - pop {r4, pc} - thumb_func_end MOD84_021D7F94 - - thumb_func_start MOD84_021D8000 -MOD84_021D8000: ; 0x021D8000 - push {r4, lr} - add r4, r0, #0 - mov r0, #0x2b - lsl r0, r0, #4 - ldr r0, [r4, r0] - bl FUN_0201FFC8 - mov r0, #0xad - lsl r0, r0, #2 - ldr r0, [r4, r0] - bl MOD84_021D821C - pop {r4, pc} - .align 2, 0 - thumb_func_end MOD84_021D8000 - - thumb_func_start MOD84_021D801C -MOD84_021D801C: ; 0x021D801C - push {r3, r4, r5, r6, r7, lr} - add r7, r0, #0 - add r5, r1, #0 - mov r0, #0x4b - mov r1, #0x30 - str r2, [sp] - add r6, r3, #0 - bl AllocFromHeap - add r4, r0, #0 - beq _021D8090 - ldr r0, [sp] - ldr r2, _021D8094 ; =0x021DA6B4 - lsl r1, r0, #4 - lsl r0, r5, #5 - add r2, r2, r0 - str r7, [r4] - ldr r2, [r1, r2] - str r6, [r4, #0x24] - str r2, [r4, #0x14] - ldr r2, _021D8098 ; =0x021DA6B8 - add r2, r2, r0 - ldr r2, [r1, r2] - str r2, [r4, #0x18] - ldr r2, _021D809C ; =0x021DA6BC - add r2, r2, r0 - ldr r2, [r1, r2] - str r2, [r4, #0x1c] - ldr r2, _021D80A0 ; =0x021DA6C0 - add r0, r2, r0 - ldr r0, [r1, r0] - cmp r5, #0 - str r0, [r4, #0x20] - bne _021D8068 - ldr r0, _021D80A4 ; =0x021D80B8 - str r0, [r4, #8] - ldr r0, _021D80A8 ; =0x021D80F0 - b _021D806E -_021D8068: - ldr r0, _021D80AC ; =0x021D8104 - str r0, [r4, #8] - ldr r0, _021D80B0 ; =0x021D813C -_021D806E: - str r0, [r4, #0xc] - mov r0, #0 - str r0, [r4, #0x28] - mov r0, #1 - lsl r0, r0, #0x10 - add r1, r6, #0 - bl _s32_div_f - str r0, [r4, #0x2c] - mov r0, #0 - str r0, [r4, #0x10] - ldr r0, _021D80B4 ; =0x021D8151 - add r1, r4, #0 - mov r2, #1 - bl FUN_0200CA98 - str r0, [r4, #4] -_021D8090: - add r0, r4, #0 - pop {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_021D8094: .word MOD84_021DA6B4 -_021D8098: .word MOD84_021DA6B8 -_021D809C: .word MOD84_021DA6BC -_021D80A0: .word MOD84_021DA6C0 -_021D80A4: .word 0x021D80B8 -_021D80A8: .word 0x021D80F0 -_021D80AC: .word 0x021D8104 -_021D80B0: .word 0x021D813C -_021D80B4: .word 0x021D8151 - thumb_func_end MOD84_021D801C - - thumb_func_start MOD84_021D80B8 -MOD84_021D80B8: ; 0x021D80B8 - and r0, r3 - thumb_func_end MOD84_021D80B8 - - non_word_aligned_thumb_func_start MOD84_021D80BA -MOD84_021D80BA: ; 0x021D80BA - thumb_func_end MOD84_021D80BA -_021D80BA: - .byte 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2 - .byte 0x00, 0x40, 0xA0, 0xE1, 0x01, 0xE0, 0xA0, 0xE1, 0x02, 0xC0, 0xA0, 0xE1, 0x00, 0x30, 0x8D, 0xE5 - .byte 0x14, 0x00, 0x9F, 0xE5, 0x04, 0x10, 0xA0, 0xE1, 0x0E, 0x20, 0xA0, 0xE1, 0x0C, 0x30, 0xA0, 0xE1 - .byte 0xFD, 0xBC, 0xFB, 0xEB, 0x04, 0xD0, 0x8D, 0xE2, 0x18, 0x80, 0xBD, 0xE8, 0x50, 0x00, 0x00, 0x04 - .byte 0x08, 0x20, 0x9F, 0xE5, 0x01, 0x04, 0x80, 0xE1, 0xB0, 0x00, 0xC2, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1 - .byte 0x52, 0x00, 0x00, 0x04, 0x18, 0x40, 0x2D, 0xE9, 0x04, 0xD0, 0x4D, 0xE2, 0x00, 0x40, 0xA0, 0xE1 - .byte 0x01, 0xE0, 0xA0, 0xE1, 0x02, 0xC0, 0xA0, 0xE1, 0x00, 0x30, 0x8D, 0xE5, 0x14, 0x00, 0x9F, 0xE5 - .byte 0x04, 0x10, 0xA0, 0xE1, 0x0E, 0x20, 0xA0, 0xE1, 0x0C, 0x30, 0xA0, 0xE1, 0xEA, 0xBC, 0xFB, 0xEB - .byte 0x04, 0xD0, 0x8D, 0xE2, 0x18, 0x80, 0xBD, 0xE8, 0x50, 0x10, 0x00, 0x04, 0x08, 0x20, 0x9F, 0xE5 - .byte 0x01, 0x04, 0x80, 0xE1, 0xB0, 0x00, 0xC2, 0xE1, 0x1E, 0xFF, 0x2F, 0xE1, 0x52, 0x10, 0x00, 0x04 - .byte 0x70, 0xB5, 0x0D, 0x1C, 0x06, 0x1C, 0x28, 0x69, 0x00, 0x28, 0x04, 0xD0, 0x01, 0x28, 0x0C, 0xD0 - .byte 0x02, 0x28, 0x1A, 0xD0, 0x70, 0xBD, 0x28, 0x6A, 0xE9, 0x69, 0xAC, 0x68, 0x00, 0x22, 0x10, 0x23 - .byte 0xA0, 0x47, 0x28, 0x69, 0x40, 0x1C, 0x28, 0x61, 0x70, 0xBD, 0xA8, 0x69, 0x02, 0x21, 0x00, 0x06 - .byte 0x00, 0x0E, 0x3F, 0xF6, 0x9B, 0xFB, 0x68, 0x69, 0x03, 0x21, 0x00, 0x06, 0x00, 0x0E, 0x3F, 0xF6 - .byte 0x95, 0xFB, 0x28, 0x69, 0x40, 0x1C, 0x28, 0x61, 0x70, 0xBD, 0xA9, 0x6A, 0xE8, 0x6A, 0x08, 0x18 - .byte 0x04, 0x13, 0xA8, 0x62, 0x10, 0x2C, 0x00, 0xDB, 0x10, 0x24, 0x10, 0x21, 0xEA, 0x68, 0x20, 0x1C - .byte 0x09, 0x1B, 0x90, 0x47, 0x10, 0x2C, 0x04, 0xDB, 0x00, 0x20, 0x68, 0x60, 0x30, 0x1C, 0x34, 0xF6 - .byte 0x79, 0xFC, 0x70, 0xBD + thumb_func_start FUN_021D8150 +FUN_021D8150: ; 0x021D8150 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5, #16] + cmp r0, #0 + beq _021D8166 + cmp r0, #1 + beq _021D817A + cmp r0, #2 + beq _021D819A + pop {r4, r5, r6, pc} +_021D8166: + ldr r0, [r5, #32] + ldr r1, [r5, #28] + ldr r4, [r5, #8] + mov r2, #0 + mov r3, #16 + blx r4 + ldr r0, [r5, #16] + add r0, r0, #1 + str r0, [r5, #16] + pop {r4, r5, r6, pc} +_021D817A: + ldr r0, [r5, #24] + mov r1, #2 + lsl r0, r0, #24 + lsr r0, r0, #24 + bl FUN_020178BC + ldr r0, [r5, #20] + mov r1, #3 + lsl r0, r0, #24 + lsr r0, r0, #24 + bl FUN_020178BC + ldr r0, [r5, #16] + add r0, r0, #1 + str r0, [r5, #16] + pop {r4, r5, r6, pc} +_021D819A: + ldr r1, [r5, #40] ; 0x28 + ldr r0, [r5, #44] ; 0x2c + add r0, r1, r0 + asr r4, r0, #12 + str r0, [r5, #40] ; 0x28 + cmp r4, #16 + blt _021D81AA + mov r4, #16 +_021D81AA: + mov r1, #16 + ldr r2, [r5, #12] + add r0, r4, #0 + sub r1, r1, r4 + blx r2 + cmp r4, #16 + blt _021D81C2 + mov r0, #0 + str r0, [r5, #4] + add r0, r6, #0 + bl FUN_0200CAB4 +_021D81C2: + pop {r4, r5, r6, pc} thumb_func_start MOD84_021D81C4 MOD84_021D81C4: ; 0x021D81C4 @@ -6227,84 +4819,6 @@ _021DA644: thumb_func_end MOD84_021DA5F0 .rodata - .global MOD84_021DA648 -MOD84_021DA648: ; 0x021DA648 - .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00 - - .global MOD84_021DA650 -MOD84_021DA650: ; 0x021DA650 - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - - .global MOD84_021DA660 -MOD84_021DA660: ; 0x021DA660 - .byte 0x2F, 0x00 - - .global MOD84_021DA662 -MOD84_021DA662: ; 0x021DA662 - .byte 0x30, 0x00 - - .global MOD84_021DA664 -MOD84_021DA664: ; 0x021DA664 - .byte 0x2D, 0x00 - - .global MOD84_021DA666 -MOD84_021DA666: ; 0x021DA666 - .byte 0x2E, 0x00, 0x33, 0x00, 0x34, 0x00, 0x31, 0x00, 0x32, 0x00 - - .global MOD84_021DA670 -MOD84_021DA670: ; 0x021DA670 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x1F, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .global MOD84_021DA68C -MOD84_021DA68C: ; 0x021DA68C - .byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00 - - .global MOD84_021DA6B4 -MOD84_021DA6B4: ; 0x021DA6B4 - .byte 0x02, 0x00, 0x00, 0x00 - - .global MOD84_021DA6B8 -MOD84_021DA6B8: ; 0x021DA6B8 - .byte 0x03, 0x00, 0x00, 0x00 - - .global MOD84_021DA6BC -MOD84_021DA6BC: ; 0x021DA6BC - .byte 0x0C, 0x00, 0x00, 0x00 - - .global MOD84_021DA6C0 -MOD84_021DA6C0: ; 0x021DA6C0 - .byte 0x08, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - - .global MOD84_021DA6C8 -MOD84_021DA6C8: ; 0x021DA6C8 - .byte 0x02, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 - .byte 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00 - .byte 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - - .global MOD84_021DA6F4 -MOD84_021DA6F4: ; 0x021DA6F4 - .byte 0x75, 0x88, 0x1D, 0x02 - - .global MOD84_021DA6F8 -MOD84_021DA6F8: ; 0x021DA6F8 - .byte 0xA5, 0x88, 0x1D, 0x02 - - .global MOD84_021DA6FC -MOD84_021DA6FC: ; 0x021DA6FC - .byte 0xDD, 0x88, 0x1D, 0x02 - - .global MOD84_021DA700 -MOD84_021DA700: ; 0x021DA700 - .byte 0xC9, 0x88, 0x1D, 0x02, 0x8D, 0x8A, 0x1D, 0x02, 0xAD, 0x8A, 0x1D, 0x02, 0xD5, 0x8A, 0x1D, 0x02 - .byte 0xC1, 0x8A, 0x1D, 0x02, 0x55, 0x8C, 0x1D, 0x02, 0xD9, 0x8C, 0x1D, 0x02, 0x0D, 0x8D, 0x1D, 0x02 - .byte 0xED, 0x8C, 0x1D, 0x02, 0x95, 0x93, 0x1D, 0x02, 0xB5, 0x93, 0x1D, 0x02, 0xDD, 0x93, 0x1D, 0x02 - .byte 0xC9, 0x93, 0x1D, 0x02, 0x5D, 0x95, 0x1D, 0x02, 0x95, 0x95, 0x1D, 0x02, 0xCD, 0x95, 0x1D, 0x02 - .byte 0xB9, 0x95, 0x1D, 0x02, 0x55, 0x9A, 0x1D, 0x02, 0x75, 0x9A, 0x1D, 0x02, 0x9D, 0x9A, 0x1D, 0x02 - .byte 0x89, 0x9A, 0x1D, 0x02, 0x1D, 0x9C, 0x1D, 0x02, 0x81, 0x9C, 0x1D, 0x02, 0xD5, 0x9C, 0x1D, 0x02 - .byte 0xA5, 0x9C, 0x1D, 0x02 .global MOD84_021DA764 MOD84_021DA764: ; 0x021DA764 |