summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorred031000 <rubenru09@aol.com>2020-07-03 22:07:24 +0100
committerred031000 <rubenru09@aol.com>2020-07-03 22:07:37 +0100
commitc05a8d66cc7f668efe36357acd91a1c04732474f (patch)
tree517bf2b1bca2a732e38c1e2a4c5aa539d4b4d0c5
parentc2fcab9edd0787c50f4a44ab0cb5ba1986bc2c47 (diff)
module 84 fully shiftable
-rw-r--r--arm9/arm9.lsf18
-rw-r--r--arm9/global.inc47
-rw-r--r--arm9/modules/84/asm/module_84_arm.s58
-rw-r--r--arm9/modules/84/asm/module_84_thumb1.s1528
-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