mirror of
https://github.com/pret/pokediamond.git
synced 2026-08-20 07:44:54 -05:00
4170 lines
74 KiB
ArmAsm
4170 lines
74 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "global.inc"
|
|
.section .text
|
|
.balign 4, 0
|
|
|
|
thumb_func_start MOD69_0222D5C0
|
|
MOD69_0222D5C0: ; 0x0222D5C0
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r5, r0, #0
|
|
mov r0, #0
|
|
add r1, r0, #0
|
|
bl FUN_02015F10
|
|
mov r0, #3
|
|
mov r1, #0x3f
|
|
lsl r2, r0, #0x10
|
|
bl FUN_0201681C
|
|
ldr r1, _0222D70C ; =0x00001B60
|
|
add r0, r5, #0
|
|
mov r2, #0x3f
|
|
bl FUN_02006268
|
|
add r4, r0, #0
|
|
add r0, r5, #0
|
|
bl FUN_0200628C
|
|
mov r2, #0x4e
|
|
str r0, [r4, #0xc]
|
|
mov r0, #0
|
|
mov r1, #0x1a
|
|
lsl r2, r2, #2
|
|
mov r3, #0x3f
|
|
bl FUN_0200A86C
|
|
ldr r1, _0222D710 ; =0x00001B5C
|
|
str r0, [r4, r1]
|
|
mov r0, #0x7d
|
|
lsl r0, r0, #2
|
|
mov r1, #0x3f
|
|
bl FUN_020219F4
|
|
ldr r1, _0222D714 ; =0x00001B54
|
|
str r0, [r4, r1]
|
|
mov r0, #0x7d
|
|
lsl r0, r0, #2
|
|
mov r1, #0x3f
|
|
bl FUN_020219F4
|
|
ldr r1, _0222D718 ; =0x00001B58
|
|
str r0, [r4, r1]
|
|
mov r0, #0x3f
|
|
bl FUN_0200AA80
|
|
ldr r1, _0222D71C ; =0x00001B50
|
|
str r0, [r4, r1]
|
|
mov r0, #0
|
|
str r0, [r4, #4]
|
|
ldr r0, [r4, #0xc]
|
|
ldr r0, [r0, #4]
|
|
bl FUN_0206B9AC
|
|
add r6, r0, #0
|
|
mov r5, #0
|
|
cmp r6, #0
|
|
ble _0222D664
|
|
mov r7, #0x7b
|
|
lsl r7, r7, #2
|
|
_0222D63A:
|
|
ldr r0, [r4, #0xc]
|
|
add r1, r5, #0
|
|
ldr r0, [r0, #4]
|
|
bl FUN_0206B9B0
|
|
mov r1, #0x4c
|
|
mov r2, #0
|
|
bl FUN_020671BC
|
|
cmp r0, #0
|
|
bne _0222D65E
|
|
ldr r0, [r4, #4]
|
|
lsl r0, r0, #2
|
|
add r0, r4, r0
|
|
str r5, [r0, r7]
|
|
ldr r0, [r4, #4]
|
|
add r0, r0, #1
|
|
str r0, [r4, #4]
|
|
_0222D65E:
|
|
add r5, r5, #1
|
|
cmp r5, r6
|
|
blt _0222D63A
|
|
_0222D664:
|
|
add r0, r4, #0
|
|
bl MOD69_0222DBAC
|
|
add r0, r4, #0
|
|
bl MOD69_0222DD54
|
|
add r0, r4, #0
|
|
bl MOD69_0222DE98
|
|
ldr r0, _0222D720 ; =0x00001B3C
|
|
mov r1, #0
|
|
str r1, [r4, r0]
|
|
add r0, r4, #0
|
|
bl MOD69_0222EDCC
|
|
ldr r1, _0222D724 ; =0x00001B38
|
|
mov r2, #5
|
|
str r0, [r4, r1]
|
|
ldr r0, [r4, r1]
|
|
ldr r1, _0222D728 ; =0xFFFFF493
|
|
lsl r2, r2, #0xe
|
|
bl MOD69_0222EEBC
|
|
ldr r0, _0222D724 ; =0x00001B38
|
|
mov r2, #0xf
|
|
ldr r0, [r4, r0]
|
|
ldr r1, _0222D72C ; =0xFFFFF923
|
|
lsl r2, r2, #0xe
|
|
bl MOD69_0222EEBC
|
|
ldr r0, _0222D724 ; =0x00001B38
|
|
mov r2, #0xa
|
|
ldr r0, [r4, r0]
|
|
ldr r1, _0222D730 ; =0xFFFFFDB6
|
|
lsl r2, r2, #0xe
|
|
bl MOD69_0222EEBC
|
|
ldr r0, _0222D724 ; =0x00001B38
|
|
mov r2, #0x23
|
|
ldr r0, [r4, r0]
|
|
ldr r1, _0222D734 ; =0x0000024A
|
|
lsl r2, r2, #0xe
|
|
bl MOD69_0222EEBC
|
|
ldr r0, _0222D724 ; =0x00001B38
|
|
mov r2, #0x1e
|
|
ldr r0, [r4, r0]
|
|
ldr r1, _0222D738 ; =0x000006DD
|
|
lsl r2, r2, #0xe
|
|
bl MOD69_0222EEBC
|
|
ldr r0, _0222D724 ; =0x00001B38
|
|
mov r2, #0xa
|
|
ldr r0, [r4, r0]
|
|
ldr r1, _0222D73C ; =0x00000B6D
|
|
lsl r2, r2, #0x10
|
|
bl MOD69_0222EEBC
|
|
add r0, r4, #0
|
|
bl MOD69_0222F1B0
|
|
ldr r1, _0222D720 ; =0x00001B3C
|
|
ldr r2, _0222D740 ; =0x04000304
|
|
str r0, [r4, r1]
|
|
ldrh r1, [r2]
|
|
lsr r0, r2, #0xb
|
|
orr r0, r1
|
|
strh r0, [r2]
|
|
mov r0, #0
|
|
str r0, [r4]
|
|
ldr r0, _0222D744 ; =MOD69_0222DB2C
|
|
add r1, r4, #0
|
|
mov r2, #6
|
|
bl MOD69_0222DBA4
|
|
ldr r1, _0222D748 ; =0x00001B34
|
|
mov r2, #1
|
|
str r0, [r4, r1]
|
|
ldr r1, _0222D74C ; =0x00000493
|
|
mov r0, #8
|
|
bl FUN_0200433C
|
|
mov r0, #1
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_0222D70C: .word 0x00001B60
|
|
_0222D710: .word 0x00001B5C
|
|
_0222D714: .word 0x00001B54
|
|
_0222D718: .word 0x00001B58
|
|
_0222D71C: .word 0x00001B50
|
|
_0222D720: .word 0x00001B3C
|
|
_0222D724: .word 0x00001B38
|
|
_0222D728: .word 0xFFFFF493
|
|
_0222D72C: .word 0xFFFFF923
|
|
_0222D730: .word 0xFFFFFDB6
|
|
_0222D734: .word 0x0000024A
|
|
_0222D738: .word 0x000006DD
|
|
_0222D73C: .word 0x00000B6D
|
|
_0222D740: .word 0x04000304
|
|
_0222D744: .word MOD69_0222DB2C
|
|
_0222D748: .word 0x00001B34
|
|
_0222D74C: .word 0x00000493
|
|
|
|
thumb_func_start MOD69_0222D750
|
|
MOD69_0222D750: ; 0x0222D750
|
|
push {r4, r5, r6, lr}
|
|
add r5, r1, #0
|
|
ldr r1, [r5]
|
|
add r6, r0, #0
|
|
cmp r1, #0
|
|
beq _0222D762
|
|
cmp r1, #1
|
|
beq _0222D7C6
|
|
b _0222D7D2
|
|
_0222D762:
|
|
bl FUN_02006278
|
|
add r4, r0, #0
|
|
ldr r0, _0222D7D8 ; =0x00001B34
|
|
ldr r0, [r4, r0]
|
|
bl FUN_0200CAB4
|
|
ldr r0, _0222D7DC ; =0x00001B3C
|
|
ldr r0, [r4, r0]
|
|
bl MOD69_0222F360
|
|
ldr r0, _0222D7E0 ; =0x00001B38
|
|
ldr r0, [r4, r0]
|
|
bl MOD69_0222F150
|
|
add r0, r4, #0
|
|
bl MOD69_0222E1A0
|
|
add r0, r4, #0
|
|
bl MOD69_0222DE88
|
|
add r0, r4, #0
|
|
bl MOD69_0222DD18
|
|
ldr r0, _0222D7E4 ; =0x00001B50
|
|
ldr r0, [r4, r0]
|
|
bl FUN_0200AB18
|
|
ldr r0, _0222D7E8 ; =0x00001B54
|
|
ldr r0, [r4, r0]
|
|
bl FUN_02021A20
|
|
ldr r0, _0222D7EC ; =0x00001B58
|
|
ldr r0, [r4, r0]
|
|
bl FUN_02021A20
|
|
ldr r0, _0222D7F0 ; =0x00001B5C
|
|
ldr r0, [r4, r0]
|
|
bl FUN_0200A8B8
|
|
add r0, r6, #0
|
|
bl FUN_0200627C
|
|
mov r0, #0x3f
|
|
bl FUN_020168D0
|
|
ldr r0, [r5]
|
|
add r0, r0, #1
|
|
str r0, [r5]
|
|
b _0222D7D2
|
|
_0222D7C6:
|
|
bl MOD69_0222F19C
|
|
cmp r0, #0
|
|
beq _0222D7D2
|
|
mov r0, #1
|
|
pop {r4, r5, r6, pc}
|
|
_0222D7D2:
|
|
mov r0, #0
|
|
pop {r4, r5, r6, pc}
|
|
nop
|
|
_0222D7D8: .word 0x00001B34
|
|
_0222D7DC: .word 0x00001B3C
|
|
_0222D7E0: .word 0x00001B38
|
|
_0222D7E4: .word 0x00001B50
|
|
_0222D7E8: .word 0x00001B54
|
|
_0222D7EC: .word 0x00001B58
|
|
_0222D7F0: .word 0x00001B5C
|
|
|
|
thumb_func_start MOD69_0222D7F4
|
|
MOD69_0222D7F4: ; 0x0222D7F4
|
|
push {r3, r4, r5, lr}
|
|
add r5, r1, #0
|
|
bl FUN_02006278
|
|
ldr r1, [r5]
|
|
add r4, r0, #0
|
|
cmp r1, #5
|
|
bhs _0222D820
|
|
lsl r2, r1, #2
|
|
ldr r1, _0222D824 ; =0x0222F7D4
|
|
ldr r1, [r1, r2]
|
|
blx r1
|
|
cmp r0, #0
|
|
beq _0222D81C
|
|
mov r0, #0
|
|
str r0, [r4]
|
|
str r0, [r4, #8]
|
|
ldr r0, [r5]
|
|
add r0, r0, #1
|
|
str r0, [r5]
|
|
_0222D81C:
|
|
mov r0, #0
|
|
pop {r3, r4, r5, pc}
|
|
_0222D820:
|
|
mov r0, #1
|
|
pop {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_0222D824: .word 0x0222F7D4
|
|
|
|
thumb_func_start MOD69_0222D828
|
|
MOD69_0222D828: ; 0x0222D828
|
|
push {r3, r4, lr}
|
|
sub sp, #0xc
|
|
add r4, r0, #0
|
|
ldr r0, [r4]
|
|
cmp r0, #0
|
|
beq _0222D83A
|
|
cmp r0, #1
|
|
beq _0222D858
|
|
b _0222D866
|
|
_0222D83A:
|
|
mov r0, #0x10
|
|
str r0, [sp]
|
|
mov r1, #1
|
|
str r1, [sp, #4]
|
|
mov r0, #0x3f
|
|
str r0, [sp, #8]
|
|
mov r0, #3
|
|
add r2, r1, #0
|
|
mov r3, #0
|
|
bl FUN_0200E1D0
|
|
ldr r0, [r4]
|
|
add r0, r0, #1
|
|
str r0, [r4]
|
|
b _0222D866
|
|
_0222D858:
|
|
bl FUN_0200E308
|
|
cmp r0, #0
|
|
beq _0222D866
|
|
add sp, #0xc
|
|
mov r0, #1
|
|
pop {r3, r4, pc}
|
|
_0222D866:
|
|
mov r0, #0
|
|
add sp, #0xc
|
|
pop {r3, r4, pc}
|
|
|
|
thumb_func_start MOD69_0222D86C
|
|
MOD69_0222D86C: ; 0x0222D86C
|
|
push {r3, r4, lr}
|
|
sub sp, #0xc
|
|
add r4, r0, #0
|
|
ldr r0, [r4]
|
|
cmp r0, #0
|
|
beq _0222D87E
|
|
cmp r0, #1
|
|
beq _0222D8A6
|
|
b _0222D8BC
|
|
_0222D87E:
|
|
mov r0, #2
|
|
str r0, [sp]
|
|
mov r1, #0
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
mov r0, #0x3f
|
|
str r0, [sp, #8]
|
|
mov r0, #3
|
|
add r2, r1, #0
|
|
add r3, r1, #0
|
|
bl FUN_0200E1D0
|
|
mov r0, #0
|
|
mov r1, #0x1e
|
|
bl FUN_020053CC
|
|
ldr r0, [r4]
|
|
add r0, r0, #1
|
|
str r0, [r4]
|
|
b _0222D8BC
|
|
_0222D8A6:
|
|
bl FUN_0200E308
|
|
cmp r0, #0
|
|
beq _0222D8BC
|
|
bl FUN_02005404
|
|
cmp r0, #0
|
|
bne _0222D8BC
|
|
add sp, #0xc
|
|
mov r0, #1
|
|
pop {r3, r4, pc}
|
|
_0222D8BC:
|
|
mov r0, #0
|
|
add sp, #0xc
|
|
pop {r3, r4, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start MOD69_0222D8C4
|
|
MOD69_0222D8C4: ; 0x0222D8C4
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r1, [r4, #8]
|
|
cmp r1, #0
|
|
beq _0222D8D6
|
|
sub r0, r1, #1
|
|
str r0, [r4, #8]
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
_0222D8D6:
|
|
ldr r1, [r4]
|
|
cmp r1, #6
|
|
bhi _0222D9CC
|
|
add r2, r1, r1
|
|
add r2, pc
|
|
ldrh r2, [r2, #6]
|
|
lsl r2, r2, #0x10
|
|
asr r2, r2, #0x10
|
|
add pc, r2
|
|
_0222D8E8: ; jump table
|
|
.short _0222D8F6 - _0222D8E8 - 2 ; case 0
|
|
.short _0222D900 - _0222D8E8 - 2 ; case 1
|
|
.short _0222D920 - _0222D8E8 - 2 ; case 2
|
|
.short _0222D936 - _0222D8E8 - 2 ; case 3
|
|
.short _0222D956 - _0222D8E8 - 2 ; case 4
|
|
.short _0222D978 - _0222D8E8 - 2 ; case 5
|
|
.short _0222D992 - _0222D8E8 - 2 ; case 6
|
|
_0222D8F6:
|
|
ldr r0, _0222D9D0 ; =0x0222F960
|
|
mov r2, #0
|
|
str r2, [r0]
|
|
add r0, r1, #1
|
|
str r0, [r4]
|
|
_0222D900:
|
|
ldr r1, _0222D9D0 ; =0x0222F960
|
|
add r0, r4, #0
|
|
ldr r1, [r1]
|
|
mov r2, #0
|
|
bl MOD69_0222E218
|
|
ldr r1, _0222D9D0 ; =0x0222F960
|
|
add r0, r4, #0
|
|
ldr r1, [r1]
|
|
mov r2, #1
|
|
bl MOD69_0222E53C
|
|
ldr r0, [r4]
|
|
add r0, r0, #1
|
|
str r0, [r4]
|
|
b _0222D9CC
|
|
_0222D920:
|
|
mov r1, #0
|
|
bl MOD69_0222DB14
|
|
cmp r0, #0
|
|
beq _0222D9CC
|
|
mov r0, #0x14
|
|
str r0, [r4, #8]
|
|
ldr r0, [r4]
|
|
add r0, r0, #1
|
|
str r0, [r4]
|
|
b _0222D9CC
|
|
_0222D936:
|
|
ldr r1, _0222D9D0 ; =0x0222F960
|
|
mov r2, #1
|
|
ldr r1, [r1]
|
|
mov r3, #0
|
|
bl MOD69_0222E6FC
|
|
ldr r1, _0222D9D0 ; =0x0222F960
|
|
add r0, r4, #0
|
|
ldr r1, [r1]
|
|
mov r2, #1
|
|
bl MOD69_0222E804
|
|
ldr r0, [r4]
|
|
add r0, r0, #1
|
|
str r0, [r4]
|
|
b _0222D9CC
|
|
_0222D956:
|
|
mov r1, #0
|
|
bl MOD69_0222DB14
|
|
cmp r0, #0
|
|
beq _0222D9CC
|
|
add r0, r4, #0
|
|
mov r1, #1
|
|
bl MOD69_0222DB14
|
|
cmp r0, #0
|
|
beq _0222D9CC
|
|
mov r0, #0x1e
|
|
str r0, [r4, #8]
|
|
ldr r0, [r4]
|
|
add r0, r0, #1
|
|
str r0, [r4]
|
|
b _0222D9CC
|
|
_0222D978:
|
|
mov r1, #0
|
|
bl MOD69_0222EA84
|
|
ldr r1, _0222D9D0 ; =0x0222F960
|
|
add r0, r4, #0
|
|
ldr r1, [r1]
|
|
mov r2, #1
|
|
bl MOD69_0222E590
|
|
ldr r0, [r4]
|
|
add r0, r0, #1
|
|
str r0, [r4]
|
|
b _0222D9CC
|
|
_0222D992:
|
|
mov r1, #0
|
|
bl MOD69_0222DB14
|
|
cmp r0, #0
|
|
beq _0222D9CC
|
|
ldr r0, _0222D9D0 ; =0x0222F960
|
|
ldr r0, [r0]
|
|
lsl r0, r0, #2
|
|
add r1, r4, r0
|
|
mov r0, #0x15
|
|
lsl r0, r0, #4
|
|
ldr r0, [r1, r0]
|
|
mov r1, #0
|
|
bl FUN_020200A0
|
|
ldr r0, _0222D9D0 ; =0x0222F960
|
|
ldr r1, [r0]
|
|
add r1, r1, #1
|
|
str r1, [r0]
|
|
ldr r0, [r4, #4]
|
|
cmp r1, r0
|
|
bge _0222D9C8
|
|
mov r0, #0x1e
|
|
str r0, [r4, #8]
|
|
mov r0, #1
|
|
str r0, [r4]
|
|
b _0222D9CC
|
|
_0222D9C8:
|
|
mov r0, #1
|
|
pop {r4, pc}
|
|
_0222D9CC:
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_0222D9D0: .word 0x0222F960
|
|
|
|
thumb_func_start MOD69_0222D9D4
|
|
MOD69_0222D9D4: ; 0x0222D9D4
|
|
push {r4, lr}
|
|
sub sp, #0x10
|
|
add r4, r0, #0
|
|
ldr r1, [r4, #8]
|
|
cmp r1, #0
|
|
beq _0222D9EA
|
|
sub r0, r1, #1
|
|
str r0, [r4, #8]
|
|
add sp, #0x10
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
_0222D9EA:
|
|
ldr r1, [r4]
|
|
cmp r1, #8
|
|
bhi _0222DAD4
|
|
add r1, r1, r1
|
|
add r1, pc
|
|
ldrh r1, [r1, #6]
|
|
lsl r1, r1, #0x10
|
|
asr r1, r1, #0x10
|
|
add pc, r1
|
|
_0222D9FC: ; jump table
|
|
.short _0222DA0E - _0222D9FC - 2 ; case 0
|
|
.short _0222DA2E - _0222D9FC - 2 ; case 1
|
|
.short _0222DA44 - _0222D9FC - 2 ; case 2
|
|
.short _0222DA66 - _0222D9FC - 2 ; case 3
|
|
.short _0222DA74 - _0222D9FC - 2 ; case 4
|
|
.short _0222DA90 - _0222D9FC - 2 ; case 5
|
|
.short _0222DA9E - _0222D9FC - 2 ; case 6
|
|
.short _0222DAB4 - _0222D9FC - 2 ; case 7
|
|
.short _0222DAC4 - _0222D9FC - 2 ; case 8
|
|
_0222DA0E:
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
mov r1, #1
|
|
str r1, [sp, #8]
|
|
mov r0, #0x3f
|
|
str r0, [sp, #0xc]
|
|
ldr r2, [r4, #0x10]
|
|
mov r0, #0x69
|
|
mov r3, #3
|
|
bl FUN_020068C8
|
|
ldr r0, [r4]
|
|
add r0, r0, #1
|
|
str r0, [r4]
|
|
b _0222DAD4
|
|
_0222DA2E:
|
|
mov r1, #0
|
|
bl MOD69_0222E2D8
|
|
add r0, r4, #0
|
|
mov r1, #1
|
|
bl MOD69_0222E5F0
|
|
ldr r0, [r4]
|
|
add r0, r0, #1
|
|
str r0, [r4]
|
|
b _0222DAD4
|
|
_0222DA44:
|
|
mov r1, #0
|
|
bl MOD69_0222DB14
|
|
cmp r0, #0
|
|
beq _0222DAD4
|
|
add r0, r4, #0
|
|
mov r1, #1
|
|
bl MOD69_0222DB14
|
|
cmp r0, #0
|
|
beq _0222DAD4
|
|
mov r0, #0x14
|
|
str r0, [r4, #8]
|
|
ldr r0, [r4]
|
|
add r0, r0, #1
|
|
str r0, [r4]
|
|
b _0222DAD4
|
|
_0222DA66:
|
|
mov r1, #0
|
|
bl MOD69_0222E644
|
|
ldr r0, [r4]
|
|
add r0, r0, #1
|
|
str r0, [r4]
|
|
b _0222DAD4
|
|
_0222DA74:
|
|
mov r1, #0
|
|
bl MOD69_0222DB14
|
|
cmp r0, #0
|
|
beq _0222DAD4
|
|
add r0, r4, #0
|
|
bl MOD69_0222EB4C
|
|
mov r0, #0x14
|
|
str r0, [r4, #8]
|
|
ldr r0, [r4]
|
|
add r0, r0, #1
|
|
str r0, [r4]
|
|
b _0222DAD4
|
|
_0222DA90:
|
|
mov r1, #0
|
|
bl MOD69_0222EC60
|
|
ldr r0, [r4]
|
|
add r0, r0, #1
|
|
str r0, [r4]
|
|
b _0222DAD4
|
|
_0222DA9E:
|
|
mov r1, #0
|
|
bl MOD69_0222DB14
|
|
cmp r0, #0
|
|
beq _0222DAD4
|
|
mov r0, #0x14
|
|
str r0, [r4, #8]
|
|
ldr r0, [r4]
|
|
add r0, r0, #1
|
|
str r0, [r4]
|
|
b _0222DAD4
|
|
_0222DAB4:
|
|
ldr r0, _0222DADC ; =0x00001B3C
|
|
ldr r0, [r4, r0]
|
|
bl MOD69_0222F378
|
|
ldr r0, [r4]
|
|
add r0, r0, #1
|
|
str r0, [r4]
|
|
b _0222DAD4
|
|
_0222DAC4:
|
|
ldr r0, _0222DAE0 ; =0x021C48B8
|
|
ldr r1, [r0, #0x48]
|
|
mov r0, #3
|
|
tst r0, r1
|
|
beq _0222DAD4
|
|
add sp, #0x10
|
|
mov r0, #1
|
|
pop {r4, pc}
|
|
_0222DAD4:
|
|
mov r0, #0
|
|
add sp, #0x10
|
|
pop {r4, pc}
|
|
nop
|
|
_0222DADC: .word 0x00001B3C
|
|
_0222DAE0: .word 0x021C48B8
|
|
|
|
thumb_func_start MOD69_0222DAE4
|
|
MOD69_0222DAE4: ; 0x0222DAE4
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r1, [r4]
|
|
cmp r1, #0
|
|
beq _0222DAF4
|
|
cmp r1, #1
|
|
beq _0222DB02
|
|
b _0222DB10
|
|
_0222DAF4:
|
|
mov r1, #0
|
|
bl MOD69_0222E6A0
|
|
ldr r0, [r4]
|
|
add r0, r0, #1
|
|
str r0, [r4]
|
|
b _0222DB10
|
|
_0222DB02:
|
|
mov r1, #0
|
|
bl MOD69_0222DB14
|
|
cmp r0, #0
|
|
beq _0222DB10
|
|
mov r0, #1
|
|
pop {r4, pc}
|
|
_0222DB10:
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start MOD69_0222DB14
|
|
MOD69_0222DB14: ; 0x0222DB14
|
|
lsl r1, r1, #2
|
|
add r1, r0, r1
|
|
mov r0, #0x6d
|
|
lsl r0, r0, #6
|
|
ldr r0, [r1, r0]
|
|
cmp r0, #0
|
|
bne _0222DB26
|
|
mov r0, #1
|
|
bx lr
|
|
_0222DB26:
|
|
mov r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
|
|
thumb_func_start MOD69_0222DB2C
|
|
MOD69_0222DB2C: ; 0x0222DB2C
|
|
push {r4, lr}
|
|
sub sp, #8
|
|
ldr r0, _0222DB94 ; =0x04000600
|
|
add r4, r1, #0
|
|
ldr r1, [r0]
|
|
mov r0, #2
|
|
lsl r0, r0, #0x1a
|
|
tst r0, r1
|
|
bne _0222DB8E
|
|
bl G3X_ResetMtxStack
|
|
mov r1, #0
|
|
mov r0, #0x11
|
|
add r2, r1, #0
|
|
bl FUN_020BB1C0
|
|
ldr r0, _0222DB98 ; =0x00001B38
|
|
ldr r0, [r4, r0]
|
|
bl MOD69_0222F11C
|
|
mov r2, #1
|
|
mov r0, #0x12
|
|
add r1, sp, #4
|
|
str r2, [sp, #4]
|
|
bl FUN_020BB1C0
|
|
mov r1, #0
|
|
mov r0, #0x11
|
|
add r2, r1, #0
|
|
bl FUN_020BB1C0
|
|
ldr r0, _0222DB9C ; =0x00001B3C
|
|
ldr r0, [r4, r0]
|
|
bl MOD69_0222F63C
|
|
mov r2, #1
|
|
mov r0, #0x12
|
|
add r1, sp, #0
|
|
str r2, [sp]
|
|
bl FUN_020BB1C0
|
|
ldr r0, _0222DBA0 ; =0x04000540
|
|
mov r1, #1
|
|
str r1, [r0]
|
|
ldr r0, [r4, #0x24]
|
|
bl FUN_0201FDEC
|
|
bl FUN_02009F80
|
|
_0222DB8E:
|
|
add sp, #8
|
|
pop {r4, pc}
|
|
nop
|
|
_0222DB94: .word 0x04000600
|
|
_0222DB98: .word 0x00001B38
|
|
_0222DB9C: .word 0x00001B3C
|
|
_0222DBA0: .word 0x04000540
|
|
|
|
thumb_func_start MOD69_0222DBA4
|
|
MOD69_0222DBA4: ; 0x0222DBA4
|
|
ldr r3, _0222DBA8 ; =FUN_0200CA60
|
|
bx r3
|
|
.align 2, 0
|
|
_0222DBA8: .word FUN_0200CA60
|
|
|
|
thumb_func_start MOD69_0222DBAC
|
|
MOD69_0222DBAC: ; 0x0222DBAC
|
|
push {r3, r4, lr}
|
|
sub sp, #0x14
|
|
add r4, r0, #0
|
|
mov r0, #0x3f
|
|
bl FUN_02016B94
|
|
str r0, [r4, #0x10]
|
|
ldr r0, _0222DCF4 ; =0x0222F8CC
|
|
bl FUN_0201E66C
|
|
ldr r2, _0222DCF8 ; =0x04000304
|
|
ldr r0, _0222DCFC ; =0xFFFF7FFF
|
|
ldrh r1, [r2]
|
|
and r0, r1
|
|
strh r0, [r2]
|
|
ldr r0, _0222DD00 ; =0x0222F7C4
|
|
bl FUN_02016BBC
|
|
ldr r0, [r4, #0x10]
|
|
ldr r2, _0222DD04 ; =0x0222F850
|
|
mov r1, #1
|
|
mov r3, #0
|
|
bl FUN_02016C18
|
|
ldr r0, [r4, #0x10]
|
|
ldr r2, _0222DD08 ; =0x0222F818
|
|
mov r1, #2
|
|
mov r3, #0
|
|
bl FUN_02016C18
|
|
ldr r0, [r4, #0x10]
|
|
ldr r2, _0222DD0C ; =0x0222F834
|
|
mov r1, #3
|
|
mov r3, #0
|
|
bl FUN_02016C18
|
|
mov r2, #0
|
|
str r2, [sp]
|
|
mov r1, #1
|
|
ldr r0, [r4, #0x10]
|
|
add r3, r1, #0
|
|
bl FUN_02017F48
|
|
mov r2, #0
|
|
str r2, [sp]
|
|
mov r0, #0x20
|
|
str r0, [sp, #4]
|
|
str r0, [sp, #8]
|
|
str r2, [sp, #0xc]
|
|
ldr r0, [r4, #0x10]
|
|
mov r1, #1
|
|
add r3, r2, #0
|
|
bl FUN_02018540
|
|
mov r3, #0
|
|
add r1, r4, #0
|
|
str r3, [sp]
|
|
mov r0, #0x20
|
|
str r0, [sp, #4]
|
|
mov r0, #0x18
|
|
str r0, [sp, #8]
|
|
mov r2, #1
|
|
str r2, [sp, #0xc]
|
|
str r2, [sp, #0x10]
|
|
ldr r0, [r4, #0x10]
|
|
add r1, #0x14
|
|
bl FUN_02019064
|
|
add r0, r4, #0
|
|
add r0, #0x14
|
|
mov r1, #0
|
|
bl FUN_02019620
|
|
add r0, r4, #0
|
|
add r0, #0x14
|
|
bl FUN_02019548
|
|
add r0, r4, #0
|
|
add r0, #0x14
|
|
bl FUN_02019270
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
mov r0, #1
|
|
str r0, [sp, #8]
|
|
mov r0, #0x3f
|
|
str r0, [sp, #0xc]
|
|
mov r1, #3
|
|
ldr r2, [r4, #0x10]
|
|
mov r0, #0x69
|
|
add r3, r1, #0
|
|
bl FUN_0200687C
|
|
mov r1, #0
|
|
str r1, [sp]
|
|
str r1, [sp, #4]
|
|
mov r0, #1
|
|
str r0, [sp, #8]
|
|
mov r0, #0x3f
|
|
str r0, [sp, #0xc]
|
|
ldr r2, [r4, #0x10]
|
|
mov r0, #0x69
|
|
mov r3, #3
|
|
bl FUN_020068C8
|
|
mov r0, #0x60
|
|
str r0, [sp]
|
|
mov r0, #0x3f
|
|
mov r2, #0
|
|
str r0, [sp, #4]
|
|
mov r0, #0x69
|
|
mov r1, #4
|
|
add r3, r2, #0
|
|
bl FUN_02006930
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
str r0, [sp, #4]
|
|
mov r0, #1
|
|
str r0, [sp, #8]
|
|
mov r0, #0x3f
|
|
str r0, [sp, #0xc]
|
|
mov r1, #2
|
|
ldr r2, [r4, #0x10]
|
|
mov r0, #0x69
|
|
add r3, r1, #0
|
|
bl FUN_020068C8
|
|
ldr r0, [r4, #0x10]
|
|
mov r1, #1
|
|
bl FUN_02017CD0
|
|
ldr r0, _0222DD10 ; =0x04000040
|
|
mov r1, #0
|
|
strh r1, [r0]
|
|
add r4, r0, #0
|
|
strh r1, [r0, #4]
|
|
add r4, #8
|
|
ldrh r3, [r4]
|
|
mov r2, #0x3f
|
|
mov r1, #0x1b
|
|
bic r3, r2
|
|
orr r1, r3
|
|
mov r3, #0x20
|
|
orr r1, r3
|
|
strh r1, [r4]
|
|
add r0, #0xa
|
|
ldrh r4, [r0]
|
|
mov r1, #0x1f
|
|
bic r4, r2
|
|
orr r1, r4
|
|
orr r1, r3
|
|
strh r1, [r0]
|
|
lsl r2, r3, #0x15
|
|
ldr r1, [r2]
|
|
ldr r0, _0222DD14 ; =0xFFFF1FFF
|
|
and r1, r0
|
|
lsl r0, r3, #8
|
|
orr r0, r1
|
|
str r0, [r2]
|
|
add sp, #0x14
|
|
pop {r3, r4, pc}
|
|
nop
|
|
_0222DCF4: .word 0x0222F8CC
|
|
_0222DCF8: .word 0x04000304
|
|
_0222DCFC: .word 0xFFFF7FFF
|
|
_0222DD00: .word 0x0222F7C4
|
|
_0222DD04: .word 0x0222F850
|
|
_0222DD08: .word 0x0222F818
|
|
_0222DD0C: .word 0x0222F834
|
|
_0222DD10: .word 0x04000040
|
|
_0222DD14: .word 0xFFFF1FFF
|
|
|
|
thumb_func_start MOD69_0222DD18
|
|
MOD69_0222DD18: ; 0x0222DD18
|
|
push {r4, lr}
|
|
mov r2, #1
|
|
lsl r2, r2, #0x1a
|
|
add r4, r0, #0
|
|
ldr r1, [r2]
|
|
ldr r0, _0222DD50 ; =0xFFFF1FFF
|
|
and r0, r1
|
|
str r0, [r2]
|
|
add r0, r4, #0
|
|
add r0, #0x14
|
|
bl FUN_02019178
|
|
ldr r0, [r4, #0x10]
|
|
mov r1, #1
|
|
bl FUN_020178A0
|
|
ldr r0, [r4, #0x10]
|
|
mov r1, #2
|
|
bl FUN_020178A0
|
|
ldr r0, [r4, #0x10]
|
|
mov r1, #3
|
|
bl FUN_020178A0
|
|
ldr r0, [r4, #0x10]
|
|
bl FreeToHeap
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_0222DD50: .word 0xFFFF1FFF
|
|
|
|
thumb_func_start MOD69_0222DD54
|
|
MOD69_0222DD54: ; 0x0222DD54
|
|
push {r3, r4, lr}
|
|
sub sp, #4
|
|
add r4, r0, #0
|
|
bl FUN_020BB7F4
|
|
bl G3X_InitMtxStack
|
|
ldr r0, _0222DDE4 ; =0x04000060
|
|
ldr r2, _0222DDE8 ; =0xFFFFCFFD
|
|
ldrh r1, [r0]
|
|
and r1, r2
|
|
strh r1, [r0]
|
|
ldrh r3, [r0]
|
|
add r1, r2, #2
|
|
and r3, r1
|
|
mov r1, #0x10
|
|
orr r1, r3
|
|
strh r1, [r0]
|
|
ldrh r3, [r0]
|
|
ldr r1, _0222DDEC ; =0x0000CFFB
|
|
and r1, r3
|
|
strh r1, [r0]
|
|
add r1, r2, #2
|
|
ldrh r3, [r0]
|
|
lsr r2, r2, #0x11
|
|
and r3, r1
|
|
mov r1, #8
|
|
orr r1, r3
|
|
strh r1, [r0]
|
|
mov r0, #0
|
|
add r1, r0, #0
|
|
mov r3, #0x3f
|
|
str r0, [sp]
|
|
bl G3X_SetClearColor
|
|
ldr r1, _0222DDF0 ; =0x04000540
|
|
mov r0, #2
|
|
str r0, [r1]
|
|
ldr r0, _0222DDF4 ; =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 r0, _0222DDF8 ; =0x04000008
|
|
mov r1, #3
|
|
ldrh r2, [r0]
|
|
bic r2, r1
|
|
mov r1, #2
|
|
orr r1, r2
|
|
strh r1, [r0]
|
|
mov r1, #0
|
|
add r0, #0x48
|
|
mov r2, #0x18
|
|
add r3, r1, #0
|
|
str r1, [sp]
|
|
bl G2x_SetBlendAlpha_
|
|
add r0, r4, #0
|
|
bl MOD69_0222DDFC
|
|
add sp, #4
|
|
pop {r3, r4, pc}
|
|
.align 2, 0
|
|
_0222DDE4: .word 0x04000060
|
|
_0222DDE8: .word 0xFFFFCFFD
|
|
_0222DDEC: .word 0x0000CFFB
|
|
_0222DDF0: .word 0x04000540
|
|
_0222DDF4: .word 0xBFFF0000
|
|
_0222DDF8: .word 0x04000008
|
|
|
|
thumb_func_start MOD69_0222DDFC
|
|
MOD69_0222DDFC: ; 0x0222DDFC
|
|
push {r4, lr}
|
|
sub sp, #0x18
|
|
add r4, r0, #0
|
|
mov r0, #0x3f
|
|
bl FUN_0201EB64
|
|
ldr r2, _0222DE80 ; =0x00001B1C
|
|
ldr r3, _0222DE84 ; =0x00000FA4
|
|
str r0, [r4, r2]
|
|
mov r0, #0
|
|
add r1, r2, #4
|
|
str r0, [r4, r1]
|
|
add r1, r2, #0
|
|
add r1, #8
|
|
str r0, [r4, r1]
|
|
add r1, r2, #0
|
|
add r1, #0xc
|
|
str r0, [r4, r1]
|
|
add r1, r2, #0
|
|
add r1, #0x10
|
|
strh r0, [r4, r1]
|
|
add r1, r2, #0
|
|
add r1, #0x12
|
|
strh r0, [r4, r1]
|
|
add r1, r2, #0
|
|
add r1, #0x14
|
|
strh r0, [r4, r1]
|
|
str r0, [sp]
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
ldr r0, [r4, r2]
|
|
mov r1, #5
|
|
str r0, [sp, #8]
|
|
add r0, r2, #4
|
|
add r2, #0x10
|
|
add r0, r4, r0
|
|
lsl r1, r1, #0xc
|
|
add r2, r4, r2
|
|
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, _0222DE80 ; =0x00001B1C
|
|
add r0, sp, #0xc
|
|
ldr r1, [r4, r1]
|
|
bl FUN_0201EC58
|
|
ldr r0, _0222DE80 ; =0x00001B1C
|
|
ldr r0, [r4, r0]
|
|
bl FUN_0201EB8C
|
|
ldr r2, _0222DE80 ; =0x00001B1C
|
|
mov r0, #1
|
|
mov r1, #0x7d
|
|
ldr r2, [r4, r2]
|
|
lsl r0, r0, #0xc
|
|
lsl r1, r1, #0xe
|
|
bl FUN_0201EC94
|
|
add sp, #0x18
|
|
pop {r4, pc}
|
|
nop
|
|
_0222DE80: .word 0x00001B1C
|
|
_0222DE84: .word 0x00000FA4
|
|
|
|
thumb_func_start MOD69_0222DE88
|
|
MOD69_0222DE88: ; 0x0222DE88
|
|
ldr r1, _0222DE90 ; =0x00001B1C
|
|
ldr r3, _0222DE94 ; =FUN_0201EB70
|
|
ldr r0, [r0, r1]
|
|
bx r3
|
|
.align 2, 0
|
|
_0222DE90: .word 0x00001B1C
|
|
_0222DE94: .word FUN_0201EB70
|
|
|
|
thumb_func_start MOD69_0222DE98
|
|
MOD69_0222DE98: ; 0x0222DE98
|
|
push {r3, r4, lr}
|
|
sub sp, #0x1c
|
|
add r4, r0, #0
|
|
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, #0x3f
|
|
str r2, [sp, #0x10]
|
|
add r2, r0, #0
|
|
bl FUN_02009EAC
|
|
add r1, r4, #0
|
|
mov r0, #0x40
|
|
add r1, #0x28
|
|
mov r2, #0x3f
|
|
bl FUN_02008C9C
|
|
str r0, [r4, #0x24]
|
|
mov r0, #0x3f
|
|
str r0, [sp]
|
|
mov r0, #0x1b
|
|
mov r1, #0x29
|
|
mov r2, #0
|
|
add r3, sp, #0x18
|
|
bl FUN_02006C30
|
|
mov r1, #0x5b
|
|
lsl r1, r1, #2
|
|
str r0, [r4, r1]
|
|
mov r0, #0x3f
|
|
str r0, [sp]
|
|
mov r0, #0x1b
|
|
mov r1, #0x2a
|
|
mov r2, #0
|
|
add r3, sp, #0x14
|
|
bl FUN_02006C5C
|
|
mov r1, #0x17
|
|
lsl r1, r1, #4
|
|
str r0, [r4, r1]
|
|
ldr r1, [sp, #0x18]
|
|
ldr r2, [sp, #0x14]
|
|
add r0, r4, #0
|
|
bl MOD69_0222DF0C
|
|
mov r0, #0x10
|
|
mov r1, #1
|
|
bl FUN_0201E6E4
|
|
add sp, #0x1c
|
|
pop {r3, r4, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start MOD69_0222DF0C
|
|
MOD69_0222DF0C: ; 0x0222DF0C
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #0xd4
|
|
mov r3, #0
|
|
str r0, [sp, #0x14]
|
|
str r1, [sp, #0xac]
|
|
str r2, [sp, #0xb0]
|
|
str r3, [sp, #0xa4]
|
|
str r3, [sp, #0xb4]
|
|
str r3, [sp, #0xb8]
|
|
str r3, [sp, #0xbc]
|
|
mov r1, #3
|
|
add r0, sp, #0xc0
|
|
strb r1, [r0]
|
|
add r0, sp, #0x5c
|
|
str r0, [sp, #0xa0]
|
|
add r0, sp, #0x48
|
|
str r0, [sp, #0xa8]
|
|
ldr r0, [sp, #0x14]
|
|
mov r1, #0x28
|
|
ldr r0, [r0, #0x24]
|
|
add r2, r3, #0
|
|
str r0, [sp, #0x80]
|
|
add r0, sp, #0xa0
|
|
str r0, [sp, #0x84]
|
|
mov r0, #1
|
|
str r0, [sp, #0x98]
|
|
mov r0, #0x3f
|
|
str r3, [sp, #0x88]
|
|
str r3, [sp, #0x8c]
|
|
str r3, [sp, #0x90]
|
|
str r0, [sp, #0x9c]
|
|
str r0, [sp]
|
|
mov r0, #0x1b
|
|
add r3, sp, #0x44
|
|
bl FUN_02006BB0
|
|
str r0, [sp, #0x28]
|
|
mov r0, #0x1b
|
|
mov r1, #0x27
|
|
add r2, sp, #0x40
|
|
mov r3, #0x3f
|
|
bl FUN_02006C08
|
|
str r0, [sp, #0x24]
|
|
mov r0, #0
|
|
str r0, [sp, #0x20]
|
|
ldr r0, [sp, #0x14]
|
|
ldr r0, [r0, #4]
|
|
cmp r0, #0
|
|
bgt _0222DF72
|
|
b _0222E0D4
|
|
_0222DF72:
|
|
mov r0, #0x32
|
|
lsl r0, r0, #6
|
|
mov r1, #0x5d
|
|
ldr r5, [sp, #0x14]
|
|
str r0, [sp, #0x1c]
|
|
ldr r7, [sp, #0x20]
|
|
lsl r1, r1, #2
|
|
add r0, r5, #0
|
|
add r0, r0, r1
|
|
str r0, [sp, #0x18]
|
|
add r1, #0xa8
|
|
add r0, r5, #0
|
|
add r4, r0, r1
|
|
ldr r0, [sp, #0x1c]
|
|
add r6, r7, #0
|
|
str r0, [sp, #0x38]
|
|
str r0, [sp, #0x3c]
|
|
str r0, [sp, #0x30]
|
|
str r0, [sp, #0x34]
|
|
_0222DF98:
|
|
add r0, sp, #0x5c
|
|
bl FUN_020B1A24
|
|
add r0, sp, #0x48
|
|
bl FUN_020B19DC
|
|
ldr r0, [sp, #0x44]
|
|
add r1, r7, #0
|
|
mov r2, #1
|
|
add r3, sp, #0x5c
|
|
bl FUN_020B1768
|
|
ldr r0, [sp, #0x40]
|
|
add r1, r6, #0
|
|
mov r2, #1
|
|
add r3, sp, #0x48
|
|
bl FUN_020B1240
|
|
ldr r0, [sp, #0x20]
|
|
add r0, r0, #1
|
|
str r0, [sp, #0x94]
|
|
add r0, sp, #0x80
|
|
bl FUN_0201FF84
|
|
mov r1, #0x15
|
|
lsl r1, r1, #4
|
|
str r0, [r5, r1]
|
|
add r0, r1, #0
|
|
ldr r0, [r5, r0]
|
|
mov r1, #0
|
|
bl FUN_020200A0
|
|
ldr r0, [sp, #0x14]
|
|
mov r1, #0x7b
|
|
ldr r0, [r0, #0xc]
|
|
lsl r1, r1, #2
|
|
ldr r0, [r0, #4]
|
|
ldr r1, [r5, r1]
|
|
bl FUN_0206B9B0
|
|
str r0, [sp, #0x2c]
|
|
ldr r1, [sp, #0x2c]
|
|
add r0, sp, #0xc4
|
|
mov r2, #2
|
|
bl FUN_02068B68
|
|
ldr r0, [sp, #0x2c]
|
|
mov r1, #5
|
|
mov r2, #0
|
|
bl FUN_020671BC
|
|
mov r1, #0x81
|
|
lsl r1, r1, #2
|
|
str r0, [r5, r1]
|
|
mov r1, #0
|
|
ldr r0, [sp, #0x2c]
|
|
add r2, r1, #0
|
|
bl FUN_020671BC
|
|
str r4, [sp]
|
|
str r0, [sp, #4]
|
|
mov r0, #1
|
|
str r0, [sp, #8]
|
|
mov r0, #2
|
|
str r0, [sp, #0xc]
|
|
mov r0, #0x81
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
add r1, sp, #0xc4
|
|
str r0, [sp, #0x10]
|
|
add r0, sp, #0xc4
|
|
ldrh r0, [r0]
|
|
ldrh r1, [r1, #2]
|
|
ldr r3, _0222E198 ; =0x0222F86C
|
|
mov r2, #0x3f
|
|
bl FUN_02012530
|
|
ldr r1, [sp, #0x30]
|
|
add r0, r4, #0
|
|
bl DC_FlushRange
|
|
ldr r2, [sp, #0x34]
|
|
add r0, r4, #0
|
|
add r1, r7, #0
|
|
bl GX_LoadOBJ
|
|
mov r1, #0
|
|
ldr r0, [sp, #0x2c]
|
|
add r2, r1, #0
|
|
bl FUN_020671BC
|
|
str r4, [sp]
|
|
str r0, [sp, #4]
|
|
mov r0, #1
|
|
str r0, [sp, #8]
|
|
mov r0, #2
|
|
str r0, [sp, #0xc]
|
|
mov r0, #0x81
|
|
lsl r0, r0, #2
|
|
ldr r0, [r5, r0]
|
|
add r1, sp, #0xc4
|
|
str r0, [sp, #0x10]
|
|
add r0, sp, #0xc4
|
|
ldrh r0, [r0]
|
|
ldrh r1, [r1, #2]
|
|
ldr r3, _0222E19C ; =0x0222F87C
|
|
mov r2, #0x3f
|
|
bl FUN_02012530
|
|
ldr r1, [sp, #0x38]
|
|
add r0, r4, #0
|
|
bl DC_FlushRange
|
|
ldr r1, [sp, #0x1c]
|
|
ldr r2, [sp, #0x3c]
|
|
add r0, r4, #0
|
|
bl GX_LoadOBJ
|
|
mov r0, #0x20
|
|
str r0, [sp]
|
|
mov r0, #0x3f
|
|
str r0, [sp, #4]
|
|
add r0, sp, #0xc4
|
|
add r1, sp, #0xc4
|
|
ldrh r0, [r0]
|
|
ldrh r1, [r1, #4]
|
|
mov r2, #1
|
|
add r3, r6, #0
|
|
bl FUN_02006930
|
|
mov r1, #0x81
|
|
lsl r1, r1, #2
|
|
ldr r1, [r5, r1]
|
|
ldr r0, [sp, #0x18]
|
|
lsl r1, r1, #0x10
|
|
lsr r1, r1, #0x10
|
|
bl FUN_02069010
|
|
mov r0, #0x19
|
|
lsl r0, r0, #8
|
|
ldr r1, [sp, #0x1c]
|
|
add r7, r7, r0
|
|
add r0, r1, r0
|
|
str r0, [sp, #0x1c]
|
|
ldr r0, [sp, #0x18]
|
|
add r6, #0x20
|
|
add r0, #0x14
|
|
str r0, [sp, #0x18]
|
|
ldr r0, [sp, #0x20]
|
|
add r5, r5, #4
|
|
add r0, r0, #1
|
|
str r0, [sp, #0x20]
|
|
ldr r0, [sp, #0x14]
|
|
ldr r1, [r0, #4]
|
|
ldr r0, [sp, #0x20]
|
|
cmp r0, r1
|
|
bge _0222E0D4
|
|
b _0222DF98
|
|
_0222E0D4:
|
|
add r0, sp, #0x5c
|
|
bl FUN_020B1A24
|
|
add r0, sp, #0x48
|
|
bl FUN_020B19DC
|
|
mov r1, #0x96
|
|
ldr r0, [sp, #0x44]
|
|
lsl r1, r1, #8
|
|
mov r2, #1
|
|
add r3, sp, #0x5c
|
|
bl FUN_020B1768
|
|
ldr r0, [sp, #0x40]
|
|
mov r1, #0xc0
|
|
mov r2, #1
|
|
add r3, sp, #0x48
|
|
bl FUN_020B1240
|
|
ldr r0, [sp, #0x14]
|
|
ldr r0, [r0, #0xc]
|
|
ldr r0, [r0]
|
|
bl FUN_020239CC
|
|
cmp r0, #1
|
|
bne _0222E10C
|
|
mov r1, #1
|
|
b _0222E10E
|
|
_0222E10C:
|
|
mov r1, #0
|
|
_0222E10E:
|
|
lsl r1, r1, #0x10
|
|
add r0, sp, #0xc4
|
|
lsr r1, r1, #0x10
|
|
bl FUN_020690AC
|
|
mov r1, #0x87
|
|
ldr r0, [sp, #0x14]
|
|
lsl r1, r1, #2
|
|
add r0, r0, r1
|
|
str r0, [sp]
|
|
add r1, sp, #0xc4
|
|
ldrh r0, [r1]
|
|
ldrh r1, [r1, #2]
|
|
ldr r3, _0222E198 ; =0x0222F86C
|
|
mov r2, #0x3f
|
|
bl FUN_02012400
|
|
mov r1, #0x87
|
|
ldr r0, [sp, #0x14]
|
|
lsl r1, r1, #2
|
|
add r0, r0, r1
|
|
mov r1, #0x32
|
|
lsl r1, r1, #6
|
|
bl DC_FlushRange
|
|
mov r1, #0x87
|
|
mov r2, #0x32
|
|
ldr r0, [sp, #0x14]
|
|
lsl r1, r1, #2
|
|
add r0, r0, r1
|
|
mov r1, #0x96
|
|
lsl r1, r1, #8
|
|
lsl r2, r2, #6
|
|
bl GX_LoadOBJ
|
|
mov r0, #0x20
|
|
str r0, [sp]
|
|
mov r0, #0x3f
|
|
str r0, [sp, #4]
|
|
add r1, sp, #0xc4
|
|
ldrh r0, [r1]
|
|
ldrh r1, [r1, #4]
|
|
mov r2, #1
|
|
mov r3, #0xc0
|
|
bl FUN_02006930
|
|
mov r0, #0
|
|
str r0, [sp, #0x94]
|
|
add r0, sp, #0x80
|
|
bl FUN_0201FF84
|
|
mov r2, #0x5a
|
|
ldr r1, [sp, #0x14]
|
|
lsl r2, r2, #2
|
|
str r0, [r1, r2]
|
|
add r0, r1, #0
|
|
ldr r0, [r0, r2]
|
|
mov r1, #0
|
|
bl FUN_020200A0
|
|
ldr r0, [sp, #0x24]
|
|
bl FreeToHeap
|
|
ldr r0, [sp, #0x28]
|
|
bl FreeToHeap
|
|
add sp, #0xd4
|
|
pop {r4, r5, r6, r7, pc}
|
|
nop
|
|
_0222E198: .word 0x0222F86C
|
|
_0222E19C: .word 0x0222F87C
|
|
|
|
thumb_func_start MOD69_0222E1A0
|
|
MOD69_0222E1A0: ; 0x0222E1A0
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r6, r0, #0
|
|
ldr r0, [r6, #4]
|
|
mov r4, #0
|
|
cmp r0, #0
|
|
ble _0222E1C2
|
|
mov r7, #0x15
|
|
add r5, r6, #0
|
|
lsl r7, r7, #4
|
|
_0222E1B2:
|
|
ldr r0, [r5, r7]
|
|
bl FUN_0201FFC8
|
|
ldr r0, [r6, #4]
|
|
add r4, r4, #1
|
|
add r5, r5, #4
|
|
cmp r4, r0
|
|
blt _0222E1B2
|
|
_0222E1C2:
|
|
mov r0, #0x17
|
|
lsl r0, r0, #4
|
|
ldr r0, [r6, r0]
|
|
bl FreeToHeap
|
|
mov r0, #0x5b
|
|
lsl r0, r0, #2
|
|
ldr r0, [r6, r0]
|
|
bl FreeToHeap
|
|
ldr r0, [r6, #0x24]
|
|
bl FUN_0201FD58
|
|
bl FUN_02009FA0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start MOD69_0222E1E4
|
|
MOD69_0222E1E4: ; 0x0222E1E4
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
ldr r0, [r1, #4]
|
|
mov r2, #0
|
|
str r2, [r0]
|
|
ldr r0, [r1]
|
|
bl FreeToHeap
|
|
add r0, r4, #0
|
|
bl FUN_0200CAB4
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start MOD69_0222E1FC
|
|
MOD69_0222E1FC: ; 0x0222E1FC
|
|
str r1, [r0]
|
|
str r2, [r0, #4]
|
|
bx lr
|
|
.align 2, 0
|
|
|
|
thumb_func_start MOD69_0222E204
|
|
MOD69_0222E204: ; 0x0222E204
|
|
ldr r3, _0222E210 ; =FUN_0200CA98
|
|
add r1, r0, #0
|
|
ldr r0, _0222E214 ; =MOD69_0222E1E4
|
|
mov r2, #0
|
|
bx r3
|
|
nop
|
|
_0222E210: .word FUN_0200CA98
|
|
_0222E214: .word MOD69_0222E1E4
|
|
|
|
thumb_func_start MOD69_0222E218
|
|
MOD69_0222E218: ; 0x0222E218
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #8
|
|
add r6, r0, #0
|
|
add r7, r1, #0
|
|
mov r0, #0x3f
|
|
mov r1, #0x2c
|
|
str r2, [sp]
|
|
bl AllocFromHeap
|
|
mov r1, #0x6d
|
|
lsl r1, r1, #6
|
|
add r4, r6, r1
|
|
ldr r1, [sp]
|
|
add r5, r0, #0
|
|
lsl r1, r1, #2
|
|
str r1, [sp, #4]
|
|
ldr r2, [sp, #4]
|
|
add r1, r5, #0
|
|
add r2, r4, r2
|
|
bl MOD69_0222E1FC
|
|
lsl r0, r7, #2
|
|
add r1, r6, r0
|
|
mov r0, #0x15
|
|
lsl r0, r0, #4
|
|
ldr r0, [r1, r0]
|
|
ldr r3, _0222E298 ; =0x0222F7A8
|
|
str r0, [r5, #8]
|
|
lsl r0, r7, #0x1f
|
|
lsr r2, r0, #0x1c
|
|
ldr r0, _0222E29C ; =0x0222F7A4
|
|
ldr r6, [r0, r2]
|
|
add r0, r5, #0
|
|
ldr r2, [r3, r2]
|
|
add r0, #0x18
|
|
add r1, r6, #0
|
|
mov r3, #0x1c
|
|
bl MOD69_0222F680
|
|
mov r0, #6
|
|
add r1, r5, #0
|
|
str r6, [r5, #0xc]
|
|
lsl r0, r0, #0x10
|
|
str r0, [r5, #0x10]
|
|
mov r0, #0
|
|
str r0, [r5, #0x14]
|
|
ldr r0, [r5, #8]
|
|
add r1, #0xc
|
|
bl FUN_02020044
|
|
ldr r0, [r5, #8]
|
|
mov r1, #1
|
|
bl FUN_020200A0
|
|
ldr r0, _0222E2A0 ; =MOD69_0222E2A4
|
|
add r1, r5, #0
|
|
mov r2, #0
|
|
bl MOD69_0222DBA4
|
|
ldr r1, [sp, #4]
|
|
str r0, [r4, r1]
|
|
add sp, #8
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_0222E298: .word 0x0222F7A8
|
|
_0222E29C: .word 0x0222F7A4
|
|
_0222E2A0: .word MOD69_0222E2A4
|
|
|
|
thumb_func_start MOD69_0222E2A4
|
|
MOD69_0222E2A4: ; 0x0222E2A4
|
|
push {r3, r4, r5, lr}
|
|
add r4, r1, #0
|
|
add r5, r0, #0
|
|
add r0, r4, #0
|
|
add r0, #0x18
|
|
bl MOD69_0222F6A0
|
|
str r0, [r4, #0xc]
|
|
add r1, r4, #0
|
|
ldr r0, [r4, #8]
|
|
add r1, #0xc
|
|
bl FUN_02020044
|
|
add r0, r4, #0
|
|
add r0, #0x18
|
|
bl MOD69_0222F6C0
|
|
cmp r0, #0
|
|
beq _0222E2D6
|
|
add r0, r4, #0
|
|
bl MOD69_0222E204
|
|
add r0, r5, #0
|
|
bl FUN_0200CAB4
|
|
_0222E2D6:
|
|
pop {r3, r4, r5, pc}
|
|
|
|
thumb_func_start MOD69_0222E2D8
|
|
MOD69_0222E2D8: ; 0x0222E2D8
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r6, r0, #0
|
|
add r7, r1, #0
|
|
mov r0, #0x3f
|
|
mov r1, #0x2c
|
|
bl AllocFromHeap
|
|
mov r1, #0x6d
|
|
lsl r1, r1, #6
|
|
add r5, r0, #0
|
|
add r4, r6, r1
|
|
lsl r7, r7, #2
|
|
add r1, r5, #0
|
|
add r2, r4, r7
|
|
bl MOD69_0222E1FC
|
|
mov r0, #0x5a
|
|
lsl r0, r0, #2
|
|
ldr r0, [r6, r0]
|
|
mov r1, #0x3a
|
|
str r0, [r5, #8]
|
|
add r0, r5, #0
|
|
mov r2, #0x1a
|
|
add r0, #0x18
|
|
lsl r1, r1, #0xe
|
|
lsl r2, r2, #0xe
|
|
mov r3, #0x1c
|
|
bl MOD69_0222F680
|
|
mov r0, #2
|
|
lsl r0, r0, #0x12
|
|
str r0, [r5, #0xc]
|
|
mov r0, #0x3a
|
|
lsl r0, r0, #0xe
|
|
str r0, [r5, #0x10]
|
|
mov r0, #0
|
|
str r0, [r5, #0x14]
|
|
add r1, r5, #0
|
|
ldr r0, [r5, #8]
|
|
add r1, #0xc
|
|
bl FUN_02020044
|
|
ldr r0, [r5, #8]
|
|
mov r1, #1
|
|
bl FUN_020200A0
|
|
ldr r0, _0222E344 ; =MOD69_0222E348
|
|
add r1, r5, #0
|
|
mov r2, #0
|
|
bl MOD69_0222DBA4
|
|
str r0, [r4, r7]
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_0222E344: .word MOD69_0222E348
|
|
|
|
thumb_func_start MOD69_0222E348
|
|
MOD69_0222E348: ; 0x0222E348
|
|
push {r3, r4, r5, lr}
|
|
add r4, r1, #0
|
|
add r5, r0, #0
|
|
add r0, r4, #0
|
|
add r0, #0x18
|
|
bl MOD69_0222F6A0
|
|
str r0, [r4, #0x10]
|
|
add r1, r4, #0
|
|
ldr r0, [r4, #8]
|
|
add r1, #0xc
|
|
bl FUN_02020044
|
|
add r0, r4, #0
|
|
add r0, #0x18
|
|
bl MOD69_0222F6C0
|
|
cmp r0, #0
|
|
beq _0222E37A
|
|
add r0, r4, #0
|
|
bl MOD69_0222E204
|
|
add r0, r5, #0
|
|
bl FUN_0200CAB4
|
|
_0222E37A:
|
|
pop {r3, r4, r5, pc}
|
|
|
|
thumb_func_start MOD69_0222E37C
|
|
MOD69_0222E37C: ; 0x0222E37C
|
|
push {r3, r4, r5, lr}
|
|
add r4, r1, #0
|
|
add r5, r0, #0
|
|
add r0, r4, #0
|
|
add r0, #8
|
|
bl MOD69_0222F6A0
|
|
asr r0, r0, #0xc
|
|
add r2, r0, #0
|
|
add r2, #0x60
|
|
cmp r0, #0
|
|
bge _0222E396
|
|
mov r0, #0
|
|
_0222E396:
|
|
cmp r2, #0
|
|
bge _0222E39C
|
|
mov r2, #0
|
|
_0222E39C:
|
|
cmp r0, #0xff
|
|
ble _0222E3A4
|
|
mov r2, #0
|
|
add r0, r2, #0
|
|
_0222E3A4:
|
|
cmp r2, #0xff
|
|
ble _0222E3AA
|
|
mov r2, #0xff
|
|
_0222E3AA:
|
|
lsl r1, r0, #8
|
|
mov r0, #0xff
|
|
lsl r0, r0, #8
|
|
and r1, r0
|
|
lsl r0, r2, #0x18
|
|
lsr r0, r0, #0x18
|
|
orr r0, r1
|
|
ldr r1, _0222E3DC ; =0x04000040
|
|
strh r0, [r1]
|
|
ldr r0, _0222E3E0 ; =0x000020A0
|
|
strh r0, [r1, #4]
|
|
add r0, r4, #0
|
|
add r0, #8
|
|
bl MOD69_0222F6C0
|
|
cmp r0, #0
|
|
beq _0222E3D8
|
|
add r0, r4, #0
|
|
bl MOD69_0222E204
|
|
add r0, r5, #0
|
|
bl FUN_0200CAB4
|
|
_0222E3D8:
|
|
pop {r3, r4, r5, pc}
|
|
nop
|
|
_0222E3DC: .word 0x04000040
|
|
_0222E3E0: .word 0x000020A0
|
|
|
|
thumb_func_start MOD69_0222E3E4
|
|
MOD69_0222E3E4: ; 0x0222E3E4
|
|
push {r4, r5, r6, lr}
|
|
add r4, r1, #0
|
|
add r5, r0, #0
|
|
add r0, r4, #0
|
|
add r0, #8
|
|
bl MOD69_0222F6A0
|
|
asr r2, r0, #0xc
|
|
ldr r0, [r4, #0x24]
|
|
add r3, r2, r0
|
|
cmp r2, #0
|
|
bge _0222E3FE
|
|
mov r2, #0
|
|
_0222E3FE:
|
|
cmp r3, #0
|
|
bge _0222E404
|
|
mov r3, #0
|
|
_0222E404:
|
|
cmp r2, #0xbf
|
|
ble _0222E40C
|
|
mov r3, #0
|
|
add r2, r3, #0
|
|
_0222E40C:
|
|
cmp r3, #0xbf
|
|
ble _0222E412
|
|
mov r3, #0xbf
|
|
_0222E412:
|
|
ldr r0, [r4, #0x1c]
|
|
ldr r6, [r4, #0x20]
|
|
lsl r1, r0, #8
|
|
mov r0, #0xff
|
|
lsl r0, r0, #8
|
|
lsl r6, r6, #0x18
|
|
lsl r2, r2, #8
|
|
and r1, r0
|
|
lsr r6, r6, #0x18
|
|
orr r6, r1
|
|
ldr r1, _0222E450 ; =0x04000040
|
|
and r2, r0
|
|
lsl r0, r3, #0x18
|
|
lsr r0, r0, #0x18
|
|
strh r6, [r1]
|
|
orr r0, r2
|
|
strh r0, [r1, #4]
|
|
add r0, r4, #0
|
|
add r0, #8
|
|
bl MOD69_0222F6C0
|
|
cmp r0, #0
|
|
beq _0222E44C
|
|
add r0, r4, #0
|
|
bl MOD69_0222E204
|
|
add r0, r5, #0
|
|
bl FUN_0200CAB4
|
|
_0222E44C:
|
|
pop {r4, r5, r6, pc}
|
|
nop
|
|
_0222E450: .word 0x04000040
|
|
|
|
thumb_func_start MOD69_0222E454
|
|
MOD69_0222E454: ; 0x0222E454
|
|
push {r4, r5, r6, lr}
|
|
add r5, r1, #0
|
|
add r6, r0, #0
|
|
add r0, r5, #0
|
|
add r0, #8
|
|
bl MOD69_0222F6A0
|
|
asr r4, r0, #0xc
|
|
add r0, r5, #0
|
|
add r0, #0x1c
|
|
bl MOD69_0222F6A0
|
|
asr r2, r0, #0xc
|
|
cmp r4, #0
|
|
bge _0222E474
|
|
mov r4, #0
|
|
_0222E474:
|
|
cmp r2, #0
|
|
bge _0222E47A
|
|
mov r2, #0
|
|
_0222E47A:
|
|
cmp r4, #0xff
|
|
ble _0222E482
|
|
mov r2, #0
|
|
add r4, r2, #0
|
|
_0222E482:
|
|
cmp r2, #0xff
|
|
ble _0222E488
|
|
mov r2, #0xff
|
|
_0222E488:
|
|
ldr r0, [r5, #0x30]
|
|
mov r3, #0xff
|
|
lsl r2, r2, #0x18
|
|
ldr r1, [r5, #0x34]
|
|
lsl r4, r4, #8
|
|
lsl r3, r3, #8
|
|
and r4, r3
|
|
lsr r2, r2, #0x18
|
|
lsl r0, r0, #8
|
|
orr r4, r2
|
|
ldr r2, _0222E4C4 ; =0x04000040
|
|
and r3, r0
|
|
lsl r0, r1, #0x18
|
|
lsr r0, r0, #0x18
|
|
strh r4, [r2]
|
|
orr r0, r3
|
|
strh r0, [r2, #4]
|
|
add r0, r5, #0
|
|
add r0, #8
|
|
bl MOD69_0222F6C0
|
|
cmp r0, #0
|
|
beq _0222E4C2
|
|
add r0, r5, #0
|
|
bl MOD69_0222E204
|
|
add r0, r6, #0
|
|
bl FUN_0200CAB4
|
|
_0222E4C2:
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_0222E4C4: .word 0x04000040
|
|
|
|
thumb_func_start MOD69_0222E4C8
|
|
MOD69_0222E4C8: ; 0x0222E4C8
|
|
push {r4, r5, r6, lr}
|
|
add r5, r1, #0
|
|
add r6, r0, #0
|
|
add r0, r5, #0
|
|
add r0, #8
|
|
bl MOD69_0222F6A0
|
|
asr r4, r0, #0xc
|
|
add r0, r5, #0
|
|
add r0, #0x1c
|
|
bl MOD69_0222F6A0
|
|
asr r2, r0, #0xc
|
|
cmp r4, #0
|
|
bge _0222E4E8
|
|
mov r4, #0
|
|
_0222E4E8:
|
|
cmp r2, #0
|
|
bge _0222E4EE
|
|
mov r2, #0
|
|
_0222E4EE:
|
|
cmp r4, #0xbf
|
|
ble _0222E4F6
|
|
mov r2, #0
|
|
add r4, r2, #0
|
|
_0222E4F6:
|
|
cmp r2, #0xbf
|
|
ble _0222E4FC
|
|
mov r2, #0xbf
|
|
_0222E4FC:
|
|
ldr r0, [r5, #0x30]
|
|
ldr r3, [r5, #0x34]
|
|
lsl r1, r0, #8
|
|
mov r0, #0xff
|
|
lsl r0, r0, #8
|
|
lsl r3, r3, #0x18
|
|
and r1, r0
|
|
lsr r3, r3, #0x18
|
|
orr r3, r1
|
|
ldr r1, _0222E538 ; =0x04000040
|
|
strh r3, [r1]
|
|
lsl r3, r4, #8
|
|
and r3, r0
|
|
lsl r0, r2, #0x18
|
|
lsr r0, r0, #0x18
|
|
orr r0, r3
|
|
strh r0, [r1, #4]
|
|
add r0, r5, #0
|
|
add r0, #8
|
|
bl MOD69_0222F6C0
|
|
cmp r0, #0
|
|
beq _0222E536
|
|
add r0, r5, #0
|
|
bl MOD69_0222E204
|
|
add r0, r6, #0
|
|
bl FUN_0200CAB4
|
|
_0222E536:
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_0222E538: .word 0x04000040
|
|
|
|
thumb_func_start MOD69_0222E53C
|
|
MOD69_0222E53C: ; 0x0222E53C
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r4, r0, #0
|
|
add r7, r1, #0
|
|
mov r0, #0x3f
|
|
mov r1, #0x1c
|
|
add r6, r2, #0
|
|
bl AllocFromHeap
|
|
mov r1, #0x6d
|
|
lsl r1, r1, #6
|
|
add r5, r0, #0
|
|
add r4, r4, r1
|
|
lsl r6, r6, #2
|
|
add r1, r5, #0
|
|
add r2, r4, r6
|
|
bl MOD69_0222E1FC
|
|
lsl r0, r7, #0x1f
|
|
lsr r2, r0, #0x1c
|
|
ldr r1, _0222E584 ; =0x0222F7B4
|
|
add r0, r5, #0
|
|
ldr r3, _0222E588 ; =0x0222F7B8
|
|
ldr r1, [r1, r2]
|
|
ldr r2, [r3, r2]
|
|
add r0, #8
|
|
mov r3, #0x1c
|
|
bl MOD69_0222F680
|
|
ldr r0, _0222E58C ; =MOD69_0222E37C
|
|
add r1, r5, #0
|
|
mov r2, #1
|
|
bl MOD69_0222DBA4
|
|
str r0, [r4, r6]
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_0222E584: .word 0x0222F7B4
|
|
_0222E588: .word 0x0222F7B8
|
|
_0222E58C: .word MOD69_0222E37C
|
|
|
|
thumb_func_start MOD69_0222E590
|
|
MOD69_0222E590: ; 0x0222E590
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r4, r0, #0
|
|
add r7, r1, #0
|
|
mov r0, #0x3f
|
|
mov r1, #0x28
|
|
add r6, r2, #0
|
|
bl AllocFromHeap
|
|
mov r1, #0x6d
|
|
lsl r1, r1, #6
|
|
add r5, r0, #0
|
|
add r4, r4, r1
|
|
lsl r6, r6, #2
|
|
add r1, r5, #0
|
|
add r2, r4, r6
|
|
bl MOD69_0222E1FC
|
|
add r0, r5, #0
|
|
mov r1, #2
|
|
ldr r2, _0222E5E4 ; =0xFFF60000
|
|
add r0, #8
|
|
lsl r1, r1, #0x10
|
|
mov r3, #0x1c
|
|
bl MOD69_0222F680
|
|
lsl r0, r7, #0x1f
|
|
lsr r1, r0, #0x1d
|
|
ldr r0, _0222E5E8 ; =0x0222F790
|
|
mov r2, #1
|
|
ldr r0, [r0, r1]
|
|
add r1, r5, #0
|
|
str r0, [r5, #0x1c]
|
|
add r0, #0x60
|
|
str r0, [r5, #0x20]
|
|
mov r0, #0x80
|
|
str r0, [r5, #0x24]
|
|
ldr r0, _0222E5EC ; =MOD69_0222E3E4
|
|
bl MOD69_0222DBA4
|
|
str r0, [r4, r6]
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_0222E5E4: .word 0xFFF60000
|
|
_0222E5E8: .word 0x0222F790
|
|
_0222E5EC: .word MOD69_0222E3E4
|
|
|
|
thumb_func_start MOD69_0222E5F0
|
|
MOD69_0222E5F0: ; 0x0222E5F0
|
|
push {r4, r5, r6, lr}
|
|
add r4, r0, #0
|
|
add r6, r1, #0
|
|
mov r0, #0x3f
|
|
mov r1, #0x28
|
|
bl AllocFromHeap
|
|
mov r1, #0x6d
|
|
lsl r1, r1, #6
|
|
add r5, r0, #0
|
|
add r4, r4, r1
|
|
lsl r6, r6, #2
|
|
add r1, r5, #0
|
|
add r2, r4, r6
|
|
bl MOD69_0222E1FC
|
|
add r0, r5, #0
|
|
mov r2, #6
|
|
ldr r1, _0222E63C ; =0xFFF70000
|
|
add r0, #8
|
|
lsl r2, r2, #0xe
|
|
mov r3, #0x1c
|
|
bl MOD69_0222F680
|
|
mov r0, #0x58
|
|
str r0, [r5, #0x1c]
|
|
mov r0, #0xa8
|
|
str r0, [r5, #0x20]
|
|
mov r0, #0x90
|
|
str r0, [r5, #0x24]
|
|
ldr r0, _0222E640 ; =MOD69_0222E3E4
|
|
add r1, r5, #0
|
|
mov r2, #1
|
|
bl MOD69_0222DBA4
|
|
str r0, [r4, r6]
|
|
pop {r4, r5, r6, pc}
|
|
nop
|
|
_0222E63C: .word 0xFFF70000
|
|
_0222E640: .word MOD69_0222E3E4
|
|
|
|
thumb_func_start MOD69_0222E644
|
|
MOD69_0222E644: ; 0x0222E644
|
|
push {r4, r5, r6, lr}
|
|
add r4, r0, #0
|
|
add r6, r1, #0
|
|
mov r0, #0x3f
|
|
mov r1, #0x38
|
|
bl AllocFromHeap
|
|
mov r1, #0x6d
|
|
lsl r1, r1, #6
|
|
add r5, r0, #0
|
|
add r4, r4, r1
|
|
lsl r6, r6, #2
|
|
add r1, r5, #0
|
|
add r2, r4, r6
|
|
bl MOD69_0222E1FC
|
|
add r0, r5, #0
|
|
mov r1, #0x16
|
|
add r0, #8
|
|
lsl r1, r1, #0xe
|
|
mov r2, #0
|
|
mov r3, #0xc
|
|
bl MOD69_0222F680
|
|
add r0, r5, #0
|
|
mov r1, #0x2a
|
|
mov r2, #0xff
|
|
add r0, #0x1c
|
|
lsl r1, r1, #0xe
|
|
lsl r2, r2, #0xc
|
|
mov r3, #0xc
|
|
bl MOD69_0222F680
|
|
mov r0, #0x18
|
|
str r0, [r5, #0x30]
|
|
add r0, #0x90
|
|
str r0, [r5, #0x34]
|
|
ldr r0, _0222E69C ; =MOD69_0222E454
|
|
add r1, r5, #0
|
|
mov r2, #1
|
|
bl MOD69_0222DBA4
|
|
str r0, [r4, r6]
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_0222E69C: .word MOD69_0222E454
|
|
|
|
thumb_func_start MOD69_0222E6A0
|
|
MOD69_0222E6A0: ; 0x0222E6A0
|
|
push {r4, r5, r6, lr}
|
|
add r4, r0, #0
|
|
add r6, r1, #0
|
|
mov r0, #0x3f
|
|
mov r1, #0x38
|
|
bl AllocFromHeap
|
|
mov r1, #0x6d
|
|
lsl r1, r1, #6
|
|
add r5, r0, #0
|
|
add r4, r4, r1
|
|
lsl r6, r6, #2
|
|
add r1, r5, #0
|
|
add r2, r4, r6
|
|
bl MOD69_0222E1FC
|
|
mov r1, #6
|
|
add r0, r5, #0
|
|
lsl r1, r1, #0xe
|
|
add r0, #8
|
|
lsl r2, r1, #2
|
|
mov r3, #0x18
|
|
bl MOD69_0222F680
|
|
add r0, r5, #0
|
|
mov r1, #0x2a
|
|
mov r2, #6
|
|
add r0, #0x1c
|
|
lsl r1, r1, #0xe
|
|
lsl r2, r2, #0x10
|
|
mov r3, #0x18
|
|
bl MOD69_0222F680
|
|
mov r0, #0
|
|
str r0, [r5, #0x30]
|
|
mov r0, #0xff
|
|
str r0, [r5, #0x34]
|
|
ldr r0, _0222E6F8 ; =MOD69_0222E4C8
|
|
add r1, r5, #0
|
|
mov r2, #1
|
|
bl MOD69_0222DBA4
|
|
str r0, [r4, r6]
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_0222E6F8: .word MOD69_0222E4C8
|
|
|
|
thumb_func_start MOD69_0222E6FC
|
|
MOD69_0222E6FC: ; 0x0222E6FC
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x10
|
|
add r5, r0, #0
|
|
add r6, r1, #0
|
|
mov r0, #0x3f
|
|
mov r1, #0x74
|
|
str r2, [sp]
|
|
str r3, [sp, #4]
|
|
bl AllocFromHeap
|
|
mov r1, #0x6d
|
|
lsl r1, r1, #6
|
|
add r7, r5, r1
|
|
ldr r1, [sp, #4]
|
|
add r4, r0, #0
|
|
lsl r1, r1, #2
|
|
str r1, [sp, #0xc]
|
|
ldr r2, [sp, #0xc]
|
|
add r1, r4, #0
|
|
add r2, r7, r2
|
|
bl MOD69_0222E1FC
|
|
lsl r0, r6, #2
|
|
str r0, [sp, #8]
|
|
add r1, r5, r0
|
|
mov r0, #0x15
|
|
lsl r0, r0, #4
|
|
ldr r1, [r1, r0]
|
|
add r0, #0x24
|
|
str r1, [r4, #8]
|
|
add r1, r5, r0
|
|
mov r0, #0x14
|
|
mul r0, r6
|
|
add r1, r1, r0
|
|
add r0, r4, #0
|
|
add r0, #0x10
|
|
str r1, [r4, #0xc]
|
|
bl FUN_02008010
|
|
ldr r0, [sp]
|
|
str r0, [r4, #0x6c]
|
|
ldr r0, [sp, #8]
|
|
add r1, r5, r0
|
|
mov r0, #0x81
|
|
lsl r0, r0, #2
|
|
ldr r0, [r1, r0]
|
|
str r0, [r4, #0x70]
|
|
ldr r0, [r4, #8]
|
|
bl FUN_02020350
|
|
add r3, r4, #0
|
|
add r5, r0, #0
|
|
add r3, #0x24
|
|
mov r2, #4
|
|
_0222E768:
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
sub r2, r2, #1
|
|
bne _0222E768
|
|
ldr r0, [r5]
|
|
add r5, r4, #0
|
|
str r0, [r3]
|
|
add r3, r4, #0
|
|
add r5, #0x24
|
|
add r3, #0x48
|
|
mov r2, #4
|
|
_0222E77E:
|
|
ldmia r5!, {r0, r1}
|
|
stmia r3!, {r0, r1}
|
|
sub r2, r2, #1
|
|
bne _0222E77E
|
|
ldr r0, [r5]
|
|
str r0, [r3]
|
|
add r0, r4, #0
|
|
add r0, #0x48
|
|
bl FUN_020B1A24
|
|
mov r3, #0x19
|
|
add r0, r4, #0
|
|
lsl r3, r3, #8
|
|
add r2, r6, #0
|
|
mul r2, r3
|
|
lsr r3, r3, #1
|
|
add r0, #0x48
|
|
mov r1, #1
|
|
add r2, r2, r3
|
|
bl FUN_020B1A1C
|
|
ldr r0, _0222E7BC ; =MOD69_0222E7C0
|
|
add r1, r4, #0
|
|
mov r2, #0
|
|
bl FUN_0200CA44
|
|
ldr r1, [sp, #0xc]
|
|
str r0, [r7, r1]
|
|
add sp, #0x10
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_0222E7BC: .word MOD69_0222E7C0
|
|
|
|
thumb_func_start MOD69_0222E7C0
|
|
MOD69_0222E7C0: ; 0x0222E7C0
|
|
push {r3, r4, r5, lr}
|
|
add r4, r1, #0
|
|
add r5, r0, #0
|
|
ldr r0, [r4, #0x6c]
|
|
cmp r0, #0
|
|
beq _0222E7DA
|
|
ldr r0, [r4, #0x70]
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
bl FUN_02005578
|
|
mov r0, #0
|
|
str r0, [r4, #0x6c]
|
|
_0222E7DA:
|
|
add r0, r4, #0
|
|
add r0, #0x10
|
|
bl FUN_02008030
|
|
add r2, r0, #0
|
|
bmi _0222E7F6
|
|
mov r1, #0x24
|
|
ldr r0, [r4, #8]
|
|
add r4, #0x24
|
|
mul r1, r2
|
|
add r1, r4, r1
|
|
bl FUN_02020334
|
|
pop {r3, r4, r5, pc}
|
|
_0222E7F6:
|
|
add r0, r4, #0
|
|
bl MOD69_0222E204
|
|
add r0, r5, #0
|
|
bl FUN_0200CAB4
|
|
pop {r3, r4, r5, pc}
|
|
|
|
thumb_func_start MOD69_0222E804
|
|
MOD69_0222E804: ; 0x0222E804
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #8
|
|
add r5, r0, #0
|
|
add r7, r1, #0
|
|
mov r0, #0x3f
|
|
mov r1, #0x38
|
|
str r2, [sp]
|
|
bl AllocFromHeap
|
|
mov r1, #0x6d
|
|
lsl r1, r1, #6
|
|
add r6, r5, r1
|
|
ldr r1, [sp]
|
|
add r4, r0, #0
|
|
lsl r1, r1, #2
|
|
str r1, [sp, #4]
|
|
ldr r2, [sp, #4]
|
|
add r1, r4, #0
|
|
add r2, r6, r2
|
|
bl MOD69_0222E1FC
|
|
str r5, [r4, #8]
|
|
ldr r0, [r5, #0x10]
|
|
ldr r1, _0222E894 ; =0x00001B50
|
|
str r0, [r4, #0xc]
|
|
add r0, r5, #0
|
|
add r0, #0x14
|
|
str r0, [r4, #0x10]
|
|
ldr r0, [r5, r1]
|
|
str r0, [r4, #0x14]
|
|
add r0, r1, #4
|
|
ldr r0, [r5, r0]
|
|
str r0, [r4, #0x18]
|
|
add r0, r1, #0
|
|
add r0, #8
|
|
ldr r0, [r5, r0]
|
|
add r1, #0xc
|
|
str r0, [r4, #0x1c]
|
|
ldr r0, [r5, r1]
|
|
str r0, [r4, #0x20]
|
|
mov r0, #1
|
|
tst r0, r7
|
|
beq _0222E85E
|
|
mov r0, #0
|
|
b _0222E860
|
|
_0222E85E:
|
|
mov r0, #0x78
|
|
_0222E860:
|
|
lsl r1, r7, #2
|
|
str r0, [r4, #0x2c]
|
|
ldr r0, [r5, #0xc]
|
|
add r2, r5, r1
|
|
mov r1, #0x7b
|
|
lsl r1, r1, #2
|
|
ldr r0, [r0, #4]
|
|
ldr r1, [r2, r1]
|
|
bl FUN_0206B9B0
|
|
str r0, [r4, #0x24]
|
|
ldr r0, [r5, #0xc]
|
|
mov r2, #0
|
|
ldr r0, [r0]
|
|
add r1, r4, #0
|
|
str r0, [r4, #0x28]
|
|
str r2, [r4, #0x30]
|
|
ldr r0, _0222E898 ; =MOD69_0222E9AC
|
|
str r2, [r4, #0x34]
|
|
bl FUN_0200CA44
|
|
ldr r1, [sp, #4]
|
|
str r0, [r6, r1]
|
|
add sp, #8
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_0222E894: .word 0x00001B50
|
|
_0222E898: .word MOD69_0222E9AC
|
|
|
|
thumb_func_start MOD69_0222E89C
|
|
MOD69_0222E89C: ; 0x0222E89C
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #0x14
|
|
add r5, r0, #0
|
|
ldr r0, [r5, #0x1c]
|
|
add r4, r1, #0
|
|
bl FUN_02021D5C
|
|
mov r6, #0
|
|
str r0, [sp, #0x10]
|
|
cmp r0, #0
|
|
ble _0222E8F2
|
|
_0222E8B2:
|
|
ldr r0, [r5, #0x18]
|
|
ldr r1, [r5, #0x1c]
|
|
add r2, r6, #0
|
|
bl FUN_02021D9C
|
|
mov r0, #0
|
|
ldr r1, [r5, #0x18]
|
|
add r2, r0, #0
|
|
bl FUN_02002E14
|
|
mov r1, #0x88
|
|
sub r0, r1, r0
|
|
lsr r7, r0, #1
|
|
str r4, [sp]
|
|
mov r0, #0xff
|
|
str r0, [sp, #4]
|
|
ldr r0, _0222E8F8 ; =0x00010200
|
|
mov r1, #0
|
|
str r0, [sp, #8]
|
|
mov r0, #0
|
|
str r0, [sp, #0xc]
|
|
ldr r3, [r5, #0x2c]
|
|
ldr r0, [r5, #0x10]
|
|
ldr r2, [r5, #0x18]
|
|
add r3, r3, r7
|
|
bl FUN_0201BDE0
|
|
ldr r0, [sp, #0x10]
|
|
add r6, r6, #1
|
|
add r4, #0x10
|
|
cmp r6, r0
|
|
blt _0222E8B2
|
|
_0222E8F2:
|
|
add sp, #0x14
|
|
pop {r4, r5, r6, r7, pc}
|
|
nop
|
|
_0222E8F8: .word 0x00010200
|
|
|
|
thumb_func_start MOD69_0222E8FC
|
|
MOD69_0222E8FC: ; 0x0222E8FC
|
|
push {r4, lr}
|
|
sub sp, #8
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #0x24]
|
|
bl FUN_020690E4
|
|
add r2, r0, #0
|
|
ldr r0, [r4, #0x14]
|
|
mov r1, #0
|
|
bl FUN_0200AC60
|
|
ldr r0, [r4, #0x24]
|
|
bl FUN_020687C0
|
|
add r2, r0, #0
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
mov r1, #1
|
|
str r1, [sp, #4]
|
|
ldr r0, [r4, #0x14]
|
|
mov r3, #3
|
|
bl FUN_0200AD38
|
|
ldr r0, [r4, #0x24]
|
|
bl FUN_020689E0
|
|
cmp r0, #0
|
|
beq _0222E93C
|
|
cmp r0, #1
|
|
beq _0222E948
|
|
cmp r0, #2
|
|
b _0222E954
|
|
_0222E93C:
|
|
ldr r0, [r4, #0x20]
|
|
ldr r2, [r4, #0x18]
|
|
mov r1, #1
|
|
bl FUN_0200A8E0
|
|
b _0222E95E
|
|
_0222E948:
|
|
ldr r0, [r4, #0x20]
|
|
ldr r2, [r4, #0x18]
|
|
mov r1, #2
|
|
bl FUN_0200A8E0
|
|
b _0222E95E
|
|
_0222E954:
|
|
ldr r0, [r4, #0x20]
|
|
ldr r2, [r4, #0x18]
|
|
mov r1, #3
|
|
bl FUN_0200A8E0
|
|
_0222E95E:
|
|
ldr r0, [r4, #0x14]
|
|
ldr r1, [r4, #0x1c]
|
|
ldr r2, [r4, #0x18]
|
|
bl FUN_0200B7B8
|
|
add sp, #8
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start MOD69_0222E96C
|
|
MOD69_0222E96C: ; 0x0222E96C
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
ldr r0, [r5, #8]
|
|
ldr r1, [r5, #0x24]
|
|
ldr r2, [r5, #0x28]
|
|
bl MOD69_0222F6C4
|
|
add r4, r0, #0
|
|
beq _0222E982
|
|
cmp r4, #1
|
|
bne _0222E996
|
|
_0222E982:
|
|
ldr r0, [r5, #0x24]
|
|
mov r1, #0x98
|
|
mov r2, #0
|
|
bl FUN_020671BC
|
|
add r2, r0, #0
|
|
ldr r0, [r5, #0x14]
|
|
mov r1, #0
|
|
bl FUN_0200AFF4
|
|
_0222E996:
|
|
ldr r0, [r5, #0x20]
|
|
ldr r2, [r5, #0x18]
|
|
add r1, r4, #5
|
|
bl FUN_0200A8E0
|
|
ldr r0, [r5, #0x14]
|
|
ldr r1, [r5, #0x1c]
|
|
ldr r2, [r5, #0x18]
|
|
bl FUN_0200B7B8
|
|
pop {r3, r4, r5, pc}
|
|
|
|
thumb_func_start MOD69_0222E9AC
|
|
MOD69_0222E9AC: ; 0x0222E9AC
|
|
push {r3, r4, r5, lr}
|
|
add r4, r1, #0
|
|
add r5, r0, #0
|
|
ldr r0, [r4, #0x30]
|
|
cmp r0, #0
|
|
beq _0222E9BE
|
|
sub r0, r0, #1
|
|
str r0, [r4, #0x30]
|
|
pop {r3, r4, r5, pc}
|
|
_0222E9BE:
|
|
ldr r0, [r4, #0x34]
|
|
cmp r0, #3
|
|
bhi _0222EA82
|
|
add r0, r0, r0
|
|
add r0, pc
|
|
ldrh r0, [r0, #6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_0222E9D0: ; jump table
|
|
.short _0222E9D8 - _0222E9D0 - 2 ; case 0
|
|
.short _0222E9FC - _0222E9D0 - 2 ; case 1
|
|
.short _0222EA2E - _0222E9D0 - 2 ; case 2
|
|
.short _0222EA76 - _0222E9D0 - 2 ; case 3
|
|
_0222E9D8:
|
|
ldr r0, [r4, #0x20]
|
|
ldr r2, [r4, #0x1c]
|
|
mov r1, #0
|
|
bl FUN_0200A8E0
|
|
add r0, r4, #0
|
|
mov r1, #0x18
|
|
bl MOD69_0222E89C
|
|
ldr r0, [r4, #0x10]
|
|
bl FUN_02019548
|
|
mov r0, #0x14
|
|
str r0, [r4, #0x30]
|
|
ldr r0, [r4, #0x34]
|
|
add r0, r0, #1
|
|
str r0, [r4, #0x34]
|
|
pop {r3, r4, r5, pc}
|
|
_0222E9FC:
|
|
ldr r0, [r4, #0x24]
|
|
ldr r2, [r4, #0x1c]
|
|
mov r1, #0x76
|
|
bl FUN_020671BC
|
|
add r0, r4, #0
|
|
mov r1, #0x48
|
|
bl MOD69_0222E89C
|
|
add r0, r4, #0
|
|
bl MOD69_0222E8FC
|
|
add r0, r4, #0
|
|
mov r1, #0x58
|
|
bl MOD69_0222E89C
|
|
ldr r0, [r4, #0x10]
|
|
bl FUN_02019548
|
|
mov r0, #0x14
|
|
str r0, [r4, #0x30]
|
|
ldr r0, [r4, #0x34]
|
|
add r0, r0, #1
|
|
str r0, [r4, #0x34]
|
|
pop {r3, r4, r5, pc}
|
|
_0222EA2E:
|
|
ldr r0, [r4, #0x24]
|
|
bl FUN_020690E4
|
|
add r2, r0, #0
|
|
ldr r0, [r4, #0x14]
|
|
mov r1, #0
|
|
bl FUN_0200AD18
|
|
ldr r0, [r4, #0x20]
|
|
ldr r2, [r4, #0x18]
|
|
mov r1, #4
|
|
bl FUN_0200A8E0
|
|
ldr r0, [r4, #0x14]
|
|
ldr r1, [r4, #0x1c]
|
|
ldr r2, [r4, #0x18]
|
|
bl FUN_0200B7B8
|
|
add r0, r4, #0
|
|
mov r1, #0x78
|
|
bl MOD69_0222E89C
|
|
add r0, r4, #0
|
|
bl MOD69_0222E96C
|
|
add r0, r4, #0
|
|
mov r1, #0x88
|
|
bl MOD69_0222E89C
|
|
ldr r0, [r4, #0x10]
|
|
bl FUN_02019548
|
|
ldr r0, [r4, #0x34]
|
|
add r0, r0, #1
|
|
str r0, [r4, #0x34]
|
|
pop {r3, r4, r5, pc}
|
|
_0222EA76:
|
|
add r0, r4, #0
|
|
bl MOD69_0222E204
|
|
add r0, r5, #0
|
|
bl FUN_0200CAB4
|
|
_0222EA82:
|
|
pop {r3, r4, r5, pc}
|
|
|
|
thumb_func_start MOD69_0222EA84
|
|
MOD69_0222EA84: ; 0x0222EA84
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r5, r0, #0
|
|
add r7, r1, #0
|
|
mov r0, #0x3f
|
|
mov r1, #0x30
|
|
bl AllocFromHeap
|
|
mov r1, #0x6d
|
|
lsl r1, r1, #6
|
|
add r4, r0, #0
|
|
add r6, r5, r1
|
|
lsl r7, r7, #2
|
|
add r1, r4, #0
|
|
add r2, r6, r7
|
|
bl MOD69_0222E1FC
|
|
ldr r0, [r5, #0x10]
|
|
add r5, #0x14
|
|
str r0, [r4, #0xc]
|
|
add r0, r4, #0
|
|
str r5, [r4, #0x10]
|
|
mov r2, #1
|
|
str r2, [r4, #0x2c]
|
|
mov r1, #0
|
|
add r0, #0x14
|
|
lsl r2, r2, #0x14
|
|
mov r3, #0x1c
|
|
str r1, [r4, #0x28]
|
|
bl MOD69_0222F680
|
|
ldr r0, _0222EAD0 ; =MOD69_0222EAD4
|
|
add r1, r4, #0
|
|
mov r2, #0
|
|
bl MOD69_0222DBA4
|
|
str r0, [r6, r7]
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_0222EAD0: .word MOD69_0222EAD4
|
|
|
|
thumb_func_start MOD69_0222EAD4
|
|
MOD69_0222EAD4: ; 0x0222EAD4
|
|
push {r3, r4, r5, lr}
|
|
add r4, r1, #0
|
|
add r5, r0, #0
|
|
ldr r0, [r4, #0x28]
|
|
cmp r0, #0
|
|
beq _0222EAEA
|
|
cmp r0, #1
|
|
beq _0222EB16
|
|
cmp r0, #2
|
|
beq _0222EB2C
|
|
pop {r3, r4, r5, pc}
|
|
_0222EAEA:
|
|
add r0, r4, #0
|
|
add r0, #0x14
|
|
bl MOD69_0222F6A0
|
|
ldr r1, [r4, #0x2c]
|
|
asr r3, r0, #0xc
|
|
lsl r1, r1, #0x18
|
|
ldr r0, [r4, #0xc]
|
|
lsr r1, r1, #0x18
|
|
mov r2, #3
|
|
bl FUN_020179E0
|
|
add r0, r4, #0
|
|
add r0, #0x14
|
|
bl MOD69_0222F6C0
|
|
cmp r0, #0
|
|
beq _0222EB48
|
|
ldr r0, [r4, #0x28]
|
|
add r0, r0, #1
|
|
str r0, [r4, #0x28]
|
|
pop {r3, r4, r5, pc}
|
|
_0222EB16:
|
|
ldr r0, [r4, #0x10]
|
|
mov r1, #0
|
|
bl FUN_02019620
|
|
ldr r0, [r4, #0x10]
|
|
bl FUN_02019548
|
|
ldr r0, [r4, #0x28]
|
|
add r0, r0, #1
|
|
str r0, [r4, #0x28]
|
|
pop {r3, r4, r5, pc}
|
|
_0222EB2C:
|
|
ldr r1, [r4, #0x2c]
|
|
ldr r0, [r4, #0xc]
|
|
lsl r1, r1, #0x18
|
|
lsr r1, r1, #0x18
|
|
mov r2, #3
|
|
mov r3, #0
|
|
bl FUN_020179E0
|
|
add r0, r4, #0
|
|
bl MOD69_0222E204
|
|
add r0, r5, #0
|
|
bl FUN_0200CAB4
|
|
_0222EB48:
|
|
pop {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start MOD69_0222EB4C
|
|
MOD69_0222EB4C: ; 0x0222EB4C
|
|
push {r4, lr}
|
|
sub sp, #0x10
|
|
ldr r2, _0222EC50 ; =0x00001B5C
|
|
add r4, r0, #0
|
|
ldr r0, [r4, r2]
|
|
sub r2, #8
|
|
ldr r2, [r4, r2]
|
|
mov r1, #0xc
|
|
bl FUN_0200A8E0
|
|
ldr r1, _0222EC54 ; =0x00001B54
|
|
mov r0, #0
|
|
ldr r1, [r4, r1]
|
|
add r2, r0, #0
|
|
bl FUN_02002E14
|
|
mov r1, #1
|
|
lsl r1, r1, #8
|
|
sub r0, r1, r0
|
|
lsr r3, r0, #1
|
|
mov r0, #4
|
|
str r0, [sp]
|
|
mov r0, #0xff
|
|
str r0, [sp, #4]
|
|
ldr r0, _0222EC58 ; =0x00010200
|
|
mov r1, #0
|
|
str r0, [sp, #8]
|
|
add r0, r4, #0
|
|
ldr r2, _0222EC54 ; =0x00001B54
|
|
str r1, [sp, #0xc]
|
|
ldr r2, [r4, r2]
|
|
add r0, #0x14
|
|
bl FUN_0201BDE0
|
|
ldr r0, _0222EC5C ; =0x00001B50
|
|
ldr r2, [r4, #0xc]
|
|
ldr r0, [r4, r0]
|
|
ldr r2, [r2]
|
|
mov r1, #0
|
|
bl FUN_0200ABC0
|
|
ldr r0, [r4, #0xc]
|
|
ldr r0, [r0]
|
|
bl FUN_020239C0
|
|
add r2, r0, #0
|
|
mov r0, #2
|
|
str r0, [sp]
|
|
mov r1, #1
|
|
ldr r0, _0222EC5C ; =0x00001B50
|
|
str r1, [sp, #4]
|
|
ldr r0, [r4, r0]
|
|
mov r3, #5
|
|
bl FUN_0200AD38
|
|
ldr r0, [r4, #0xc]
|
|
ldr r0, [r0, #8]
|
|
bl FUN_02029EBC
|
|
add r2, r0, #0
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
ldr r0, _0222EC5C ; =0x00001B50
|
|
mov r1, #2
|
|
ldr r0, [r4, r0]
|
|
mov r3, #3
|
|
bl FUN_0200AD38
|
|
ldr r0, [r4, #0xc]
|
|
ldr r0, [r0, #8]
|
|
bl FUN_02029EC0
|
|
mov r3, #2
|
|
add r2, r0, #0
|
|
str r3, [sp]
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
ldr r0, _0222EC5C ; =0x00001B50
|
|
mov r1, #3
|
|
ldr r0, [r4, r0]
|
|
bl FUN_0200AD38
|
|
ldr r2, _0222EC50 ; =0x00001B5C
|
|
mov r1, #0xd
|
|
ldr r0, [r4, r2]
|
|
sub r2, r2, #4
|
|
ldr r2, [r4, r2]
|
|
bl FUN_0200A8E0
|
|
ldr r2, _0222EC5C ; =0x00001B50
|
|
add r1, r2, #4
|
|
ldr r0, [r4, r2]
|
|
add r2, #8
|
|
ldr r1, [r4, r1]
|
|
ldr r2, [r4, r2]
|
|
bl FUN_0200B7B8
|
|
ldr r1, _0222EC54 ; =0x00001B54
|
|
mov r0, #0
|
|
ldr r1, [r4, r1]
|
|
add r2, r0, #0
|
|
bl FUN_02002E14
|
|
mov r1, #1
|
|
lsl r1, r1, #8
|
|
sub r0, r1, r0
|
|
lsr r3, r0, #1
|
|
mov r0, #0xac
|
|
str r0, [sp]
|
|
mov r0, #0xff
|
|
str r0, [sp, #4]
|
|
ldr r0, _0222EC58 ; =0x00010200
|
|
mov r1, #0
|
|
str r0, [sp, #8]
|
|
add r0, r4, #0
|
|
ldr r2, _0222EC54 ; =0x00001B54
|
|
str r1, [sp, #0xc]
|
|
ldr r2, [r4, r2]
|
|
add r0, #0x14
|
|
bl FUN_0201BDE0
|
|
add r4, #0x14
|
|
add r0, r4, #0
|
|
bl FUN_02019548
|
|
add sp, #0x10
|
|
pop {r4, pc}
|
|
nop
|
|
_0222EC50: .word 0x00001B5C
|
|
_0222EC54: .word 0x00001B54
|
|
_0222EC58: .word 0x00010200
|
|
_0222EC5C: .word 0x00001B50
|
|
|
|
thumb_func_start MOD69_0222EC60
|
|
MOD69_0222EC60: ; 0x0222EC60
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #0x14
|
|
add r5, r0, #0
|
|
add r6, r1, #0
|
|
mov r0, #0x3f
|
|
mov r1, #0xdc
|
|
bl AllocFromHeap
|
|
mov r1, #0x6d
|
|
lsl r1, r1, #6
|
|
add r1, r5, r1
|
|
str r1, [sp, #0xc]
|
|
lsl r1, r6, #2
|
|
str r1, [sp, #0x10]
|
|
add r4, r0, #0
|
|
ldr r3, [sp, #0xc]
|
|
ldr r2, [sp, #0x10]
|
|
add r1, r4, #0
|
|
add r2, r3, r2
|
|
bl MOD69_0222E1FC
|
|
mov r0, #0x15
|
|
lsl r0, r0, #4
|
|
str r5, [r4, #0xc]
|
|
add r0, r5, r0
|
|
str r0, [r4, #8]
|
|
mov r0, #0
|
|
str r0, [r4, #0x10]
|
|
str r0, [sp, #8]
|
|
str r0, [r4, #0x18]
|
|
ldr r0, [r5, #4]
|
|
str r0, [r4, #0x14]
|
|
cmp r0, #0
|
|
ble _0222ECE8
|
|
ldr r0, _0222ED24 ; =0x0222F8F4
|
|
ldr r5, [sp, #8]
|
|
str r0, [sp, #4]
|
|
add r7, r4, #0
|
|
add r6, r0, #0
|
|
_0222ECAE:
|
|
ldr r3, [sp, #4]
|
|
add r2, r7, #0
|
|
ldmia r3!, {r0, r1}
|
|
add r2, #0x94
|
|
stmia r2!, {r0, r1}
|
|
ldr r0, [r3]
|
|
add r1, r6, #0
|
|
str r0, [r2]
|
|
ldr r0, [r4, #8]
|
|
ldr r0, [r0, r5]
|
|
bl FUN_02020044
|
|
ldr r0, [r4, #8]
|
|
mov r1, #1
|
|
ldr r0, [r0, r5]
|
|
bl FUN_020200A0
|
|
ldr r0, [sp, #4]
|
|
ldr r1, [r4, #0x14]
|
|
add r0, #0xc
|
|
str r0, [sp, #4]
|
|
ldr r0, [sp, #8]
|
|
add r7, #0xc
|
|
add r0, r0, #1
|
|
add r6, #0xc
|
|
add r5, r5, #4
|
|
str r0, [sp, #8]
|
|
cmp r0, r1
|
|
blt _0222ECAE
|
|
_0222ECE8:
|
|
mov r0, #0
|
|
add r7, r4, #0
|
|
ldr r6, _0222ED28 ; =0x0222F7E8
|
|
ldr r5, _0222ED24 ; =0x0222F8F4
|
|
str r0, [sp]
|
|
add r7, #0x1c
|
|
_0222ECF4:
|
|
ldr r1, [r5]
|
|
ldr r2, [r6]
|
|
add r0, r7, #0
|
|
mov r3, #8
|
|
bl MOD69_0222F680
|
|
ldr r0, [sp]
|
|
add r6, r6, #4
|
|
add r0, r0, #1
|
|
add r5, #0xc
|
|
add r7, #0x14
|
|
str r0, [sp]
|
|
cmp r0, #6
|
|
blt _0222ECF4
|
|
ldr r0, _0222ED2C ; =MOD69_0222ED30
|
|
add r1, r4, #0
|
|
mov r2, #0
|
|
bl FUN_0200CA44
|
|
ldr r2, [sp, #0xc]
|
|
ldr r1, [sp, #0x10]
|
|
str r0, [r2, r1]
|
|
add sp, #0x14
|
|
pop {r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_0222ED24: .word 0x0222F8F4
|
|
_0222ED28: .word 0x0222F7E8
|
|
_0222ED2C: .word MOD69_0222ED30
|
|
|
|
thumb_func_start MOD69_0222ED30
|
|
MOD69_0222ED30: ; 0x0222ED30
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #0xc
|
|
add r5, r1, #0
|
|
ldr r1, [r5, #0x10]
|
|
mov r4, #0
|
|
str r0, [sp]
|
|
cmp r1, #0
|
|
ble _0222ED84
|
|
add r0, r5, #0
|
|
str r0, [sp, #8]
|
|
add r0, #0x1c
|
|
add r7, r5, #0
|
|
str r0, [sp, #8]
|
|
str r5, [sp, #4]
|
|
add r7, #0x94
|
|
add r6, r4, #0
|
|
_0222ED50:
|
|
ldr r0, [sp, #8]
|
|
bl MOD69_0222F6A0
|
|
ldr r1, [sp, #4]
|
|
add r1, #0x94
|
|
str r0, [r1]
|
|
ldr r0, [r5, #0x14]
|
|
cmp r4, r0
|
|
bge _0222ED6C
|
|
ldr r0, [r5, #8]
|
|
add r1, r7, #0
|
|
ldr r0, [r0, r6]
|
|
bl FUN_02020044
|
|
_0222ED6C:
|
|
ldr r0, [sp, #8]
|
|
ldr r1, [r5, #0x10]
|
|
add r0, #0x14
|
|
str r0, [sp, #8]
|
|
ldr r0, [sp, #4]
|
|
add r4, r4, #1
|
|
add r0, #0xc
|
|
str r0, [sp, #4]
|
|
add r7, #0xc
|
|
add r6, r6, #4
|
|
cmp r4, r1
|
|
blt _0222ED50
|
|
_0222ED84:
|
|
ldr r0, [r5, #0x18]
|
|
cmp r0, #0
|
|
beq _0222ED92
|
|
sub r0, r0, #1
|
|
add sp, #0xc
|
|
str r0, [r5, #0x18]
|
|
pop {r4, r5, r6, r7, pc}
|
|
_0222ED92:
|
|
cmp r1, #6
|
|
bge _0222EDA4
|
|
mov r0, #4
|
|
str r0, [r5, #0x18]
|
|
ldr r0, [r5, #0x10]
|
|
add sp, #0xc
|
|
add r0, r0, #1
|
|
str r0, [r5, #0x10]
|
|
pop {r4, r5, r6, r7, pc}
|
|
_0222EDA4:
|
|
ldr r0, [r5, #0x14]
|
|
add r2, r5, #0
|
|
sub r1, r0, #1
|
|
mov r0, #0x14
|
|
add r2, #0x1c
|
|
mul r0, r1
|
|
add r0, r2, r0
|
|
bl MOD69_0222F6C0
|
|
cmp r0, #0
|
|
beq _0222EDC6
|
|
add r0, r5, #0
|
|
bl MOD69_0222E204
|
|
ldr r0, [sp]
|
|
bl FUN_0200CAB4
|
|
_0222EDC6:
|
|
add sp, #0xc
|
|
pop {r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start MOD69_0222EDCC
|
|
MOD69_0222EDCC: ; 0x0222EDCC
|
|
push {r3, r4, r5, lr}
|
|
ldr r1, _0222EE10 ; =0x00000844
|
|
add r5, r0, #0
|
|
mov r0, #0x3f
|
|
bl AllocFromHeap
|
|
add r4, r0, #0
|
|
beq _0222EE0C
|
|
ldr r0, _0222EE14 ; =0x0222F940
|
|
mov r1, #1
|
|
str r1, [r0]
|
|
ldr r0, _0222EE18 ; =0x0222F960
|
|
mov r1, #2
|
|
str r1, [r0, #4]
|
|
ldr r0, _0222EE1C ; =0x0000083C
|
|
mov r1, #0
|
|
str r1, [r4, r0]
|
|
ldr r0, _0222EE20 ; =MOD69_0222EE80
|
|
add r1, r4, #0
|
|
mov r2, #5
|
|
bl MOD69_0222DBA4
|
|
ldr r1, _0222EE24 ; =0x00000838
|
|
mov r2, #3
|
|
str r0, [r4, r1]
|
|
add r1, #8
|
|
str r5, [r4, r1]
|
|
ldr r0, _0222EE28 ; =MOD69_0222EE2C
|
|
add r1, r4, #0
|
|
bl MOD69_0222DBA4
|
|
pop {r3, r4, r5, pc}
|
|
_0222EE0C:
|
|
mov r0, #0
|
|
pop {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_0222EE10: .word 0x00000844
|
|
_0222EE14: .word 0x0222F940
|
|
_0222EE18: .word 0x0222F960
|
|
_0222EE1C: .word 0x0000083C
|
|
_0222EE20: .word MOD69_0222EE80
|
|
_0222EE24: .word 0x00000838
|
|
_0222EE28: .word MOD69_0222EE2C
|
|
|
|
thumb_func_start MOD69_0222EE2C
|
|
MOD69_0222EE2C: ; 0x0222EE2C
|
|
push {r4, lr}
|
|
add r4, r1, #0
|
|
ldr r1, _0222EE70 ; =0x0222F940
|
|
ldr r1, [r1]
|
|
cmp r1, #0
|
|
beq _0222EE60
|
|
add r1, r4, #0
|
|
mov r2, #2
|
|
add r0, r4, #0
|
|
add r1, #0x14
|
|
lsl r2, r2, #0xa
|
|
bl G3_BeginMakeDL
|
|
ldr r1, _0222EE74 ; =0x00007FFF
|
|
ldr r2, _0222EE78 ; =0x00004210
|
|
add r0, r4, #0
|
|
mov r3, #0
|
|
bl G3B_MaterialColorDiffAmb
|
|
mov r2, #0
|
|
ldr r1, _0222EE78 ; =0x00004210
|
|
add r0, r4, #0
|
|
add r3, r2, #0
|
|
bl G3B_MaterialColorSpecEmi
|
|
pop {r4, pc}
|
|
_0222EE60:
|
|
ldr r1, _0222EE7C ; =0x0222F960
|
|
ldr r2, [r1, #4]
|
|
sub r2, r2, #1
|
|
str r2, [r1, #4]
|
|
bl FUN_0200CAB4
|
|
pop {r4, pc}
|
|
nop
|
|
_0222EE70: .word 0x0222F940
|
|
_0222EE74: .word 0x00007FFF
|
|
_0222EE78: .word 0x00004210
|
|
_0222EE7C: .word 0x0222F960
|
|
|
|
thumb_func_start MOD69_0222EE80
|
|
MOD69_0222EE80: ; 0x0222EE80
|
|
push {r4, lr}
|
|
add r4, r1, #0
|
|
ldr r1, _0222EEB0 ; =0x0222F940
|
|
ldr r1, [r1]
|
|
cmp r1, #0
|
|
beq _0222EEA2
|
|
add r0, r4, #0
|
|
bl G3_EndMakeDL
|
|
ldr r1, _0222EEB4 ; =0x00000814
|
|
str r0, [r4, r1]
|
|
add r0, r4, #0
|
|
ldr r1, [r4, r1]
|
|
add r0, #0x14
|
|
bl DC_FlushRange
|
|
pop {r4, pc}
|
|
_0222EEA2:
|
|
ldr r1, _0222EEB8 ; =0x0222F960
|
|
ldr r2, [r1, #4]
|
|
sub r2, r2, #1
|
|
str r2, [r1, #4]
|
|
bl FUN_0200CAB4
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_0222EEB0: .word 0x0222F940
|
|
_0222EEB4: .word 0x00000814
|
|
_0222EEB8: .word 0x0222F960
|
|
|
|
thumb_func_start MOD69_0222EEBC
|
|
MOD69_0222EEBC: ; 0x0222EEBC
|
|
push {r4, r5, r6, lr}
|
|
add r5, r1, #0
|
|
add r6, r2, #0
|
|
bl FUN_0201B6C8
|
|
ldr r1, _0222EEF8 ; =0x0000083C
|
|
add r4, r0, #0
|
|
ldr r3, [r4, r1]
|
|
cmp r3, #8
|
|
bge _0222EEF4
|
|
add r1, r5, #0
|
|
add r2, r6, #0
|
|
bl MOD69_0222EF00
|
|
ldr r2, _0222EEF8 ; =0x0000083C
|
|
ldr r1, [r4, r2]
|
|
lsl r1, r1, #2
|
|
add r3, r4, r1
|
|
add r1, r2, #0
|
|
sub r1, #0x24
|
|
str r0, [r3, r1]
|
|
ldr r0, _0222EEFC ; =0x0222F960
|
|
ldr r1, [r0, #4]
|
|
add r1, r1, #1
|
|
str r1, [r0, #4]
|
|
ldr r0, [r4, r2]
|
|
add r0, r0, #1
|
|
str r0, [r4, r2]
|
|
_0222EEF4:
|
|
pop {r4, r5, r6, pc}
|
|
nop
|
|
_0222EEF8: .word 0x0000083C
|
|
_0222EEFC: .word 0x0222F960
|
|
|
|
thumb_func_start MOD69_0222EF00
|
|
MOD69_0222EF00: ; 0x0222EF00
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r5, r1, #0
|
|
add r6, r0, #0
|
|
ldr r1, _0222EF78 ; =0x00000838
|
|
mov r0, #0x3f
|
|
add r7, r2, #0
|
|
add r4, r3, #0
|
|
bl AllocFromHeap
|
|
add r1, r0, #0
|
|
beq _0222EF74
|
|
ldr r0, _0222EF7C ; =0x00000818
|
|
ldr r2, _0222EF80 ; =0x0222F88C
|
|
str r6, [r1]
|
|
lsl r3, r4, #2
|
|
ldr r3, [r2, r3]
|
|
add r2, r0, #0
|
|
strh r5, [r1, r0]
|
|
sub r2, #8
|
|
str r3, [r1, r2]
|
|
add r2, r0, #0
|
|
mov r3, #0
|
|
sub r2, #0x14
|
|
str r3, [r1, r2]
|
|
add r2, r0, #0
|
|
sub r2, #0x10
|
|
str r7, [r1, r2]
|
|
ldr r2, _0222EF84 ; =0x0222F798
|
|
lsl r6, r4, #1
|
|
ldrsh r6, [r2, r6]
|
|
add r2, r0, #0
|
|
sub r2, #0xc
|
|
str r6, [r1, r2]
|
|
sub r2, r0, #4
|
|
str r4, [r1, r2]
|
|
add r4, r5, #0
|
|
sub r4, #0x50
|
|
add r2, r0, #2
|
|
strh r4, [r1, r2]
|
|
ldr r2, _0222EF88 ; =0xFFFFF000
|
|
add r4, r0, #4
|
|
strh r2, [r1, r4]
|
|
add r4, r0, #6
|
|
strh r3, [r1, r4]
|
|
add r4, r0, #0
|
|
add r5, #0x50
|
|
add r4, #8
|
|
strh r5, [r1, r4]
|
|
add r4, r0, #0
|
|
add r4, #0xa
|
|
strh r2, [r1, r4]
|
|
add r0, #0xc
|
|
strh r3, [r1, r0]
|
|
ldr r0, _0222EF8C ; =MOD69_0222EF90
|
|
mov r2, #4
|
|
bl MOD69_0222DBA4
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
_0222EF74:
|
|
mov r0, #0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_0222EF78: .word 0x00000838
|
|
_0222EF7C: .word 0x00000818
|
|
_0222EF80: .word 0x0222F88C
|
|
_0222EF84: .word 0x0222F798
|
|
_0222EF88: .word 0xFFFFF000
|
|
_0222EF8C: .word MOD69_0222EF90
|
|
|
|
thumb_func_start MOD69_0222EF90
|
|
MOD69_0222EF90: ; 0x0222EF90
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #0xc
|
|
add r5, r1, #0
|
|
ldr r1, _0222F0FC ; =0x0222F940
|
|
ldr r1, [r1]
|
|
cmp r1, #0
|
|
bne _0222EFA0
|
|
b _0222F0EC
|
|
_0222EFA0:
|
|
ldr r0, _0222F100 ; =0x00000808
|
|
add r1, r0, #4
|
|
ldr r2, [r5, r0]
|
|
ldr r1, [r5, r1]
|
|
add r1, r2, r1
|
|
str r1, [r5, r0]
|
|
add r1, r0, #4
|
|
ldr r1, [r5, r1]
|
|
ldr r2, [r5, r0]
|
|
cmp r1, #0
|
|
ble _0222EFCE
|
|
mov r1, #0xaa
|
|
lsl r1, r1, #0xc
|
|
cmp r2, r1
|
|
blt _0222EFE4
|
|
add r1, r0, #4
|
|
ldr r2, [r5, r1]
|
|
mov r1, #0
|
|
mvn r1, r1
|
|
mul r1, r2
|
|
add r0, r0, #4
|
|
str r1, [r5, r0]
|
|
b _0222EFE4
|
|
_0222EFCE:
|
|
mov r1, #0xa
|
|
lsl r1, r1, #0xc
|
|
cmp r2, r1
|
|
bgt _0222EFE4
|
|
add r1, r0, #4
|
|
ldr r2, [r5, r1]
|
|
mov r1, #0
|
|
mvn r1, r1
|
|
mul r1, r2
|
|
add r0, r0, #4
|
|
str r1, [r5, r0]
|
|
_0222EFE4:
|
|
ldr r0, _0222F100 ; =0x00000808
|
|
mov r2, #0xa
|
|
ldr r0, [r5, r0]
|
|
lsl r2, r2, #0xa
|
|
asr r6, r0, #0xc
|
|
add r0, r6, #0
|
|
add r0, #0x5a
|
|
lsl r1, r0, #2
|
|
ldr r0, _0222F104 ; =0x020EDF50
|
|
mov r3, #0
|
|
ldr r0, [r0, r1]
|
|
asr r1, r0, #0x1f
|
|
bl _ll_mul
|
|
ldr r4, _0222F108 ; =0x00000818
|
|
mov r3, #0
|
|
ldrsh r2, [r5, r4]
|
|
sub r4, #0x18
|
|
add r4, r0, r4
|
|
adc r1, r3
|
|
lsl r0, r1, #0x14
|
|
lsr r1, r4, #0xc
|
|
orr r1, r0
|
|
add r4, r2, r1
|
|
mov r2, #0xa
|
|
ldr r0, _0222F104 ; =0x020EDF50
|
|
lsl r1, r6, #2
|
|
ldr r0, [r0, r1]
|
|
lsl r2, r2, #0xa
|
|
asr r1, r0, #0x1f
|
|
bl _ll_mul
|
|
mov r2, #2
|
|
mov r3, #0
|
|
lsl r2, r2, #0xa
|
|
add r6, r0, r2
|
|
adc r1, r3
|
|
lsl r0, r1, #0x14
|
|
lsr r1, r6, #0xc
|
|
orr r1, r0
|
|
lsl r0, r2, #1
|
|
mov r7, #9
|
|
sub r6, r1, r0
|
|
lsl r7, r7, #6
|
|
add r0, r2, #0
|
|
sub r1, r4, r7
|
|
add r0, #0x26
|
|
strh r1, [r5, r0]
|
|
lsl r0, r6, #0x10
|
|
add r1, r2, #0
|
|
asr r0, r0, #0x10
|
|
add r1, #0x28
|
|
strh r0, [r5, r1]
|
|
add r1, r2, #0
|
|
add r1, #0x2a
|
|
strh r3, [r5, r1]
|
|
add r1, r2, #0
|
|
add r4, r4, r7
|
|
add r1, #0x2c
|
|
strh r4, [r5, r1]
|
|
add r1, r2, #0
|
|
add r1, #0x2e
|
|
strh r0, [r5, r1]
|
|
add r0, r2, #0
|
|
add r0, #0x30
|
|
add r2, #0x14
|
|
strh r3, [r5, r0]
|
|
ldr r0, [r5, r2]
|
|
add r1, r3, #0
|
|
str r0, [sp]
|
|
mov r0, #0x10
|
|
str r0, [sp, #4]
|
|
str r3, [sp, #8]
|
|
add r2, r3, #0
|
|
ldr r0, [r5]
|
|
mov r3, #2
|
|
bl G3B_PolygonAttr
|
|
ldr r0, [r5]
|
|
mov r1, #1
|
|
bl G3B_Begin
|
|
mov r1, #0x81
|
|
lsl r1, r1, #4
|
|
ldr r1, [r5, r1]
|
|
ldr r0, [r5]
|
|
lsl r1, r1, #0x10
|
|
lsr r1, r1, #0x10
|
|
bl G3B_Color
|
|
ldr r3, _0222F10C ; =0x0000081A
|
|
ldr r0, [r5]
|
|
add r2, r3, #2
|
|
ldrsh r1, [r5, r3]
|
|
add r3, r3, #4
|
|
ldrsh r2, [r5, r2]
|
|
ldrsh r3, [r5, r3]
|
|
bl G3B_Vtx
|
|
mov r3, #0x82
|
|
lsl r3, r3, #4
|
|
add r2, r3, #2
|
|
ldrsh r1, [r5, r3]
|
|
add r3, r3, #4
|
|
ldrsh r2, [r5, r2]
|
|
ldrsh r3, [r5, r3]
|
|
ldr r0, [r5]
|
|
bl G3B_Vtx
|
|
ldr r3, _0222F110 ; =0x0000082C
|
|
ldr r0, [r5]
|
|
add r2, r3, #2
|
|
ldrsh r1, [r5, r3]
|
|
add r3, r3, #4
|
|
ldrsh r2, [r5, r2]
|
|
ldrsh r3, [r5, r3]
|
|
bl G3B_Vtx
|
|
ldr r3, _0222F114 ; =0x00000826
|
|
ldr r0, [r5]
|
|
add r2, r3, #2
|
|
ldrsh r1, [r5, r3]
|
|
add r3, r3, #4
|
|
ldrsh r2, [r5, r2]
|
|
ldrsh r3, [r5, r3]
|
|
bl G3B_Vtx
|
|
ldr r0, [r5]
|
|
bl G3B_End
|
|
add sp, #0xc
|
|
pop {r4, r5, r6, r7, pc}
|
|
_0222F0EC:
|
|
ldr r1, _0222F118 ; =0x0222F960
|
|
ldr r2, [r1, #4]
|
|
sub r2, r2, #1
|
|
str r2, [r1, #4]
|
|
bl FUN_0200CAB4
|
|
add sp, #0xc
|
|
pop {r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_0222F0FC: .word 0x0222F940
|
|
_0222F100: .word 0x00000808
|
|
_0222F104: .word 0x020EDF50
|
|
_0222F108: .word 0x00000818
|
|
_0222F10C: .word 0x0000081A
|
|
_0222F110: .word 0x0000082C
|
|
_0222F114: .word 0x00000826
|
|
_0222F118: .word 0x0222F960
|
|
|
|
thumb_func_start MOD69_0222F11C
|
|
MOD69_0222F11C: ; 0x0222F11C
|
|
push {r3, lr}
|
|
cmp r0, #0
|
|
beq _0222F142
|
|
bl FUN_0201B6C8
|
|
add r3, r0, #0
|
|
ldr r0, _0222F144 ; =0x04000444
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
ldr r2, _0222F148 ; =0x00000814
|
|
add r1, r3, #0
|
|
ldr r2, [r3, r2]
|
|
mov r0, #3
|
|
add r1, #0x14
|
|
bl MI_SendGXCommand
|
|
ldr r0, _0222F14C ; =0x04000448
|
|
mov r1, #1
|
|
str r1, [r0]
|
|
_0222F142:
|
|
pop {r3, pc}
|
|
.align 2, 0
|
|
_0222F144: .word 0x04000444
|
|
_0222F148: .word 0x00000814
|
|
_0222F14C: .word 0x04000448
|
|
|
|
thumb_func_start MOD69_0222F150
|
|
MOD69_0222F150: ; 0x0222F150
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
ldr r1, _0222F190 ; =0x0222F940
|
|
mov r2, #0
|
|
str r2, [r1]
|
|
cmp r0, #0
|
|
beq _0222F18C
|
|
bl FUN_0201B6C8
|
|
add r6, r0, #0
|
|
ldr r0, _0222F194 ; =0x0000083C
|
|
mov r4, #0
|
|
ldr r0, [r6, r0]
|
|
cmp r0, #0
|
|
ble _0222F186
|
|
ldr r7, _0222F194 ; =0x0000083C
|
|
add r5, r6, #0
|
|
_0222F170:
|
|
ldr r0, _0222F198 ; =0x00000818
|
|
ldr r0, [r5, r0]
|
|
bl FUN_0201B6C8
|
|
bl FreeToHeap
|
|
ldr r0, [r6, r7]
|
|
add r4, r4, #1
|
|
add r5, r5, #4
|
|
cmp r4, r0
|
|
blt _0222F170
|
|
_0222F186:
|
|
add r0, r6, #0
|
|
bl FreeToHeap
|
|
_0222F18C:
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_0222F190: .word 0x0222F940
|
|
_0222F194: .word 0x0000083C
|
|
_0222F198: .word 0x00000818
|
|
|
|
thumb_func_start MOD69_0222F19C
|
|
MOD69_0222F19C: ; 0x0222F19C
|
|
ldr r0, _0222F1AC ; =0x0222F960
|
|
ldr r0, [r0, #4]
|
|
cmp r0, #0
|
|
bne _0222F1A8
|
|
mov r0, #1
|
|
bx lr
|
|
_0222F1A8:
|
|
mov r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_0222F1AC: .word 0x0222F960
|
|
|
|
thumb_func_start MOD69_0222F1B0
|
|
MOD69_0222F1B0: ; 0x0222F1B0
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #0x2c
|
|
ldr r1, _0222F344 ; =0x00008D64
|
|
mov r0, #0x3f
|
|
bl AllocFromHeap
|
|
str r0, [sp, #0x28]
|
|
bl rand_LC
|
|
str r0, [sp, #0x20]
|
|
ldr r0, _0222F348 ; =0x00003594
|
|
bl seedr_LC
|
|
mov r0, #0
|
|
ldr r4, [sp, #0x28]
|
|
str r0, [sp, #0x24]
|
|
str r0, [sp, #0x1c]
|
|
add r0, r4, #0
|
|
str r0, [sp, #0x18]
|
|
add r0, #0x34
|
|
str r0, [sp, #0x18]
|
|
add r0, r4, #0
|
|
str r0, [sp, #0x14]
|
|
add r0, #0x28
|
|
str r0, [sp, #0x14]
|
|
add r0, r4, #0
|
|
str r0, [sp, #0x10]
|
|
add r0, #0x2e
|
|
str r0, [sp, #0x10]
|
|
ldr r0, [sp, #0x14]
|
|
str r0, [sp, #0xc]
|
|
_0222F1EE:
|
|
ldr r0, [sp, #0x1c]
|
|
lsl r1, r0, #2
|
|
ldr r0, _0222F34C ; =0x0222F8AC
|
|
ldr r0, [r0, r1]
|
|
str r0, [r4, #8]
|
|
ldr r0, [sp, #0x1c]
|
|
add r0, r0, #1
|
|
str r0, [sp, #0x1c]
|
|
cmp r0, #8
|
|
blo _0222F206
|
|
mov r0, #0
|
|
str r0, [sp, #0x1c]
|
|
_0222F206:
|
|
bl rand_LC
|
|
lsr r2, r0, #0x1f
|
|
lsl r1, r0, #0x13
|
|
sub r1, r1, r2
|
|
mov r0, #0x13
|
|
ror r1, r0
|
|
mov r0, #1
|
|
add r1, r2, r1
|
|
lsl r0, r0, #0xc
|
|
sub r0, r1, r0
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
str r0, [sp, #8]
|
|
bl rand_LC
|
|
lsr r2, r0, #0x1f
|
|
lsl r1, r0, #0x13
|
|
sub r1, r1, r2
|
|
mov r0, #0x13
|
|
ror r1, r0
|
|
mov r0, #1
|
|
add r1, r2, r1
|
|
lsl r0, r0, #0xc
|
|
add r0, r1, r0
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
str r0, [sp, #4]
|
|
bl rand_LC
|
|
mov r1, #0x29
|
|
lsl r1, r1, #4
|
|
bl _s32_div_f
|
|
mov r0, #0x52
|
|
lsl r0, r0, #2
|
|
sub r0, r1, r0
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
ldr r5, _0222F350 ; =0x0222F800
|
|
str r0, [sp]
|
|
mov r7, #0
|
|
add r6, r4, #0
|
|
_0222F25C:
|
|
mov r0, #0
|
|
ldrsh r1, [r5, r0]
|
|
ldr r0, [sp, #8]
|
|
add r0, r0, r1
|
|
strh r0, [r6, #0x10]
|
|
mov r0, #2
|
|
ldrsh r1, [r5, r0]
|
|
ldr r0, [sp, #4]
|
|
add r0, r0, r1
|
|
strh r0, [r6, #0x12]
|
|
mov r0, #4
|
|
ldrsh r1, [r5, r0]
|
|
ldr r0, [sp]
|
|
add r0, r0, r1
|
|
strh r0, [r6, #0x14]
|
|
mov r0, #0
|
|
strh r0, [r4, #0x28]
|
|
strh r0, [r4, #0x2a]
|
|
strh r0, [r4, #0x2c]
|
|
bl rand_LC
|
|
lsr r1, r0, #0x1f
|
|
lsl r2, r0, #0x17
|
|
sub r2, r2, r1
|
|
mov r0, #0x17
|
|
ror r2, r0
|
|
mov r0, #2
|
|
add r1, r1, r2
|
|
lsl r0, r0, #8
|
|
add r0, r1, r0
|
|
strh r0, [r4, #0x2e]
|
|
bl rand_LC
|
|
lsr r1, r0, #0x1f
|
|
lsl r2, r0, #0x17
|
|
sub r2, r2, r1
|
|
mov r0, #0x17
|
|
ror r2, r0
|
|
mov r0, #2
|
|
add r1, r1, r2
|
|
lsl r0, r0, #8
|
|
add r0, r1, r0
|
|
strh r0, [r4, #0x30]
|
|
bl rand_LC
|
|
lsr r1, r0, #0x1f
|
|
lsl r2, r0, #0x17
|
|
sub r2, r2, r1
|
|
mov r0, #0x17
|
|
ror r2, r0
|
|
mov r0, #2
|
|
add r1, r1, r2
|
|
lsl r0, r0, #8
|
|
add r0, r1, r0
|
|
strh r0, [r4, #0x32]
|
|
ldr r0, [sp, #0x18]
|
|
bl MTX_Identity44_
|
|
add r7, r7, #1
|
|
add r5, r5, #6
|
|
add r6, r6, #6
|
|
cmp r7, #4
|
|
blt _0222F25C
|
|
bl rand_LC
|
|
mov r1, #7
|
|
and r0, r1
|
|
sub r5, r0, #1
|
|
cmp r0, #0
|
|
beq _0222F2FA
|
|
_0222F2E8:
|
|
ldr r0, [sp, #0xc]
|
|
ldr r1, [sp, #0x10]
|
|
ldr r2, [sp, #0x14]
|
|
bl VEC_Fx16Add
|
|
add r0, r5, #0
|
|
sub r5, r5, #1
|
|
cmp r0, #0
|
|
bne _0222F2E8
|
|
_0222F2FA:
|
|
ldr r0, [sp, #0x18]
|
|
add r4, #0x70
|
|
add r0, #0x70
|
|
str r0, [sp, #0x18]
|
|
ldr r0, [sp, #0x14]
|
|
add r0, #0x70
|
|
str r0, [sp, #0x14]
|
|
ldr r0, [sp, #0x10]
|
|
add r0, #0x70
|
|
str r0, [sp, #0x10]
|
|
ldr r0, [sp, #0xc]
|
|
add r0, #0x70
|
|
str r0, [sp, #0xc]
|
|
ldr r0, [sp, #0x24]
|
|
add r0, r0, #1
|
|
str r0, [sp, #0x24]
|
|
cmp r0, #0x30
|
|
bge _0222F320
|
|
b _0222F1EE
|
|
_0222F320:
|
|
ldr r0, [sp, #0x20]
|
|
bl seedr_LC
|
|
ldr r0, [sp, #0x28]
|
|
mov r2, #0
|
|
str r2, [r0]
|
|
ldr r1, _0222F354 ; =0x00008D20
|
|
str r2, [r0, #4]
|
|
str r2, [r0, r1]
|
|
ldr r0, _0222F358 ; =0x04000440
|
|
mov r2, #2
|
|
str r2, [r0]
|
|
ldr r0, _0222F35C ; =MOD69_0222F388
|
|
ldr r1, [sp, #0x28]
|
|
bl FUN_0200CA44
|
|
add sp, #0x2c
|
|
pop {r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_0222F344: .word 0x00008D64
|
|
_0222F348: .word 0x00003594
|
|
_0222F34C: .word 0x0222F8AC
|
|
_0222F350: .word 0x0222F800
|
|
_0222F354: .word 0x00008D20
|
|
_0222F358: .word 0x04000440
|
|
_0222F35C: .word MOD69_0222F388
|
|
|
|
thumb_func_start MOD69_0222F360
|
|
MOD69_0222F360: ; 0x0222F360
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
beq _0222F374
|
|
bl FUN_0201B6C8
|
|
bl FreeToHeap
|
|
add r0, r4, #0
|
|
bl FUN_0200CAB4
|
|
_0222F374:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start MOD69_0222F378
|
|
MOD69_0222F378: ; 0x0222F378
|
|
push {r3, lr}
|
|
cmp r0, #0
|
|
beq _0222F386
|
|
bl FUN_0201B6C8
|
|
mov r1, #1
|
|
str r1, [r0]
|
|
_0222F386:
|
|
pop {r3, pc}
|
|
|
|
thumb_func_start MOD69_0222F388
|
|
MOD69_0222F388: ; 0x0222F388
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x68
|
|
add r7, r1, #0
|
|
ldr r0, [r7]
|
|
cmp r0, #0
|
|
bne _0222F396
|
|
b _0222F60C
|
|
_0222F396:
|
|
ldr r1, _0222F610 ; =0x00001508
|
|
mov r2, #0x1e
|
|
add r0, r7, r1
|
|
add r1, #0x14
|
|
add r1, r7, r1
|
|
lsl r2, r2, #0xa
|
|
bl G3_BeginMakeDL
|
|
mov r0, #0x3f
|
|
str r0, [sp]
|
|
mov r0, #0x1f
|
|
str r0, [sp, #4]
|
|
ldr r0, _0222F610 ; =0x00001508
|
|
mov r1, #3
|
|
mov r2, #0
|
|
add r0, r7, r0
|
|
add r3, r1, #0
|
|
str r2, [sp, #8]
|
|
bl G3B_PolygonAttr
|
|
ldr r0, _0222F610 ; =0x00001508
|
|
mov r2, #0
|
|
ldr r1, _0222F614 ; =0x00005294
|
|
add r0, r7, r0
|
|
add r3, r2, #0
|
|
bl G3B_MaterialColorDiffAmb
|
|
mov r0, #0
|
|
str r0, [sp, #0x1c]
|
|
add r0, r7, #0
|
|
str r0, [sp, #0x18]
|
|
add r0, #0x28
|
|
str r0, [sp, #0x18]
|
|
add r0, r7, #0
|
|
str r0, [sp, #0x14]
|
|
add r0, #0x2e
|
|
str r0, [sp, #0x14]
|
|
ldr r0, [sp, #0x18]
|
|
add r5, r7, #0
|
|
str r5, [sp, #0xc]
|
|
add r5, #0x34
|
|
add r4, r7, #0
|
|
str r0, [sp, #0x10]
|
|
str r5, [sp, #0xc]
|
|
_0222F3EE:
|
|
mov r0, #0x24
|
|
ldrsh r0, [r4, r0]
|
|
sub r0, #0x55
|
|
strh r0, [r4, #0x24]
|
|
mov r0, #0x24
|
|
ldrsh r1, [r4, r0]
|
|
ldr r0, _0222F618 ; =0xFFFFF000
|
|
cmp r1, r0
|
|
bgt _0222F408
|
|
mov r0, #2
|
|
lsl r0, r0, #0xc
|
|
add r0, r1, r0
|
|
strh r0, [r4, #0x24]
|
|
_0222F408:
|
|
mov r0, #0x24
|
|
ldrsh r1, [r4, r0]
|
|
ldr r0, _0222F61C ; =0x0000019A
|
|
ldr r2, [sp, #0x18]
|
|
sub r0, r1, r0
|
|
strh r0, [r4, #0x12]
|
|
mov r0, #0x12
|
|
ldrsh r0, [r4, r0]
|
|
ldr r1, [sp, #0x14]
|
|
strh r0, [r4, #0x18]
|
|
mov r0, #0x24
|
|
ldrsh r0, [r4, r0]
|
|
strh r0, [r4, #0x1e]
|
|
ldr r0, [sp, #0x10]
|
|
bl VEC_Fx16Add
|
|
ldr r0, [sp, #0xc]
|
|
bl MTX_Identity44_
|
|
mov r0, #0x14
|
|
ldrsh r0, [r4, r0]
|
|
mov r2, #0x10
|
|
mov r3, #0x12
|
|
str r0, [sp]
|
|
ldrsh r2, [r4, r2]
|
|
ldrsh r3, [r4, r3]
|
|
ldr r1, [sp, #0xc]
|
|
add r0, r5, #0
|
|
bl MTX_TransApply44
|
|
ldr r0, _0222F610 ; =0x00001508
|
|
ldr r2, _0222F620 ; =0x00002D6B
|
|
add r0, r7, r0
|
|
mov r1, #0
|
|
bl G3B_LightColor
|
|
ldr r2, [r4, #8]
|
|
ldr r0, _0222F610 ; =0x00001508
|
|
lsl r2, r2, #0x10
|
|
add r0, r7, r0
|
|
mov r1, #1
|
|
lsr r2, r2, #0x10
|
|
bl G3B_LightColor
|
|
mov r1, #0
|
|
add r0, sp, #0x20
|
|
strh r1, [r0]
|
|
ldr r1, _0222F624 ; =0x00000FFF
|
|
strh r1, [r0, #2]
|
|
ldr r1, _0222F628 ; =0xFFFFF001
|
|
strh r1, [r0, #4]
|
|
add r0, sp, #0x20
|
|
add r1, r0, #0
|
|
bl VEC_Fx16Normalize
|
|
add r3, sp, #0x20
|
|
add r1, sp, #0x20
|
|
mov r0, #4
|
|
ldrsh r0, [r1, r0]
|
|
mov r1, #0
|
|
add r2, r1, #0
|
|
str r0, [sp]
|
|
ldr r0, _0222F610 ; =0x00001508
|
|
ldrsh r2, [r3, r2]
|
|
add r6, r3, #0
|
|
mov r3, #2
|
|
ldrsh r3, [r6, r3]
|
|
add r0, r7, r0
|
|
bl G3B_LightVector
|
|
mov r1, #0
|
|
add r0, r6, #0
|
|
strh r1, [r0]
|
|
ldr r1, _0222F628 ; =0xFFFFF001
|
|
strh r1, [r0, #2]
|
|
lsr r1, r1, #0x14
|
|
strh r1, [r0, #4]
|
|
add r0, sp, #0x20
|
|
add r1, r0, #0
|
|
bl VEC_Fx16Normalize
|
|
add r1, r6, #0
|
|
mov r0, #4
|
|
ldrsh r0, [r1, r0]
|
|
add r3, r6, #0
|
|
mov r2, #0
|
|
str r0, [sp]
|
|
ldrsh r2, [r3, r2]
|
|
mov r3, #2
|
|
ldr r0, _0222F610 ; =0x00001508
|
|
ldrsh r3, [r6, r3]
|
|
add r0, r7, r0
|
|
mov r1, #1
|
|
bl G3B_LightVector
|
|
ldrh r0, [r4, #0x28]
|
|
ldr r3, _0222F62C ; =0x020FFA38
|
|
asr r0, r0, #4
|
|
lsl r1, r0, #2
|
|
ldr r0, _0222F62C ; =0x020FFA38
|
|
add r2, r0, r1
|
|
ldrsh r1, [r3, r1]
|
|
mov r3, #2
|
|
ldrsh r2, [r2, r3]
|
|
add r0, sp, #0x28
|
|
bl MTX_RotX44_
|
|
ldr r2, [sp, #0xc]
|
|
add r0, sp, #0x28
|
|
add r1, r5, #0
|
|
bl MTX_Concat44
|
|
ldrh r0, [r4, #0x2a]
|
|
ldr r3, _0222F62C ; =0x020FFA38
|
|
asr r0, r0, #4
|
|
lsl r1, r0, #2
|
|
ldr r0, _0222F62C ; =0x020FFA38
|
|
add r2, r0, r1
|
|
ldrsh r1, [r3, r1]
|
|
mov r3, #2
|
|
ldrsh r2, [r2, r3]
|
|
add r0, sp, #0x28
|
|
bl MTX_RotY44_
|
|
ldr r2, [sp, #0xc]
|
|
add r0, sp, #0x28
|
|
add r1, r5, #0
|
|
bl MTX_Concat44
|
|
ldrh r0, [r4, #0x2c]
|
|
ldr r3, _0222F62C ; =0x020FFA38
|
|
asr r0, r0, #4
|
|
lsl r1, r0, #2
|
|
ldr r0, _0222F62C ; =0x020FFA38
|
|
add r2, r0, r1
|
|
ldrsh r1, [r3, r1]
|
|
mov r3, #2
|
|
ldrsh r2, [r2, r3]
|
|
add r0, sp, #0x28
|
|
bl MTX_RotZ44_
|
|
ldr r2, [sp, #0xc]
|
|
add r0, sp, #0x28
|
|
add r1, r5, #0
|
|
bl MTX_Concat44
|
|
ldr r2, [r4, #8]
|
|
ldr r0, _0222F610 ; =0x00001508
|
|
lsl r2, r2, #0x10
|
|
ldr r1, _0222F630 ; =0x00007FFF
|
|
add r0, r7, r0
|
|
lsr r2, r2, #0x10
|
|
mov r3, #0
|
|
bl G3B_MaterialColorSpecEmi
|
|
ldr r0, _0222F610 ; =0x00001508
|
|
add r0, r7, r0
|
|
bl G3B_PushMtx
|
|
ldr r0, _0222F610 ; =0x00001508
|
|
add r1, r5, #0
|
|
add r0, r7, r0
|
|
bl G3B_LoadMtx44
|
|
ldr r0, _0222F610 ; =0x00001508
|
|
mov r1, #1
|
|
add r0, r7, r0
|
|
bl G3B_Begin
|
|
ldr r0, _0222F610 ; =0x00001508
|
|
mov r1, #0
|
|
ldr r3, _0222F628 ; =0xFFFFF001
|
|
add r0, r7, r0
|
|
add r2, r1, #0
|
|
bl G3B_Normal
|
|
mov r1, #0x9b
|
|
ldr r0, _0222F610 ; =0x00001508
|
|
mvn r1, r1
|
|
add r2, r1, #0
|
|
add r0, r7, r0
|
|
sub r2, #0x31
|
|
mov r3, #0
|
|
bl G3B_Vtx
|
|
ldr r0, _0222F610 ; =0x00001508
|
|
mov r2, #0xcc
|
|
add r0, r7, r0
|
|
mov r1, #0x9c
|
|
mvn r2, r2
|
|
mov r3, #0
|
|
bl G3B_Vtx
|
|
ldr r0, _0222F610 ; =0x00001508
|
|
mov r1, #0x9c
|
|
add r0, r7, r0
|
|
mov r2, #0xcd
|
|
mov r3, #0
|
|
bl G3B_Vtx
|
|
ldr r0, _0222F610 ; =0x00001508
|
|
mov r1, #0x9b
|
|
add r0, r7, r0
|
|
mvn r1, r1
|
|
mov r2, #0xcd
|
|
mov r3, #0
|
|
bl G3B_Vtx
|
|
ldr r0, _0222F610 ; =0x00001508
|
|
add r0, r7, r0
|
|
bl G3B_End
|
|
ldr r0, _0222F610 ; =0x00001508
|
|
mov r1, #1
|
|
add r0, r7, r0
|
|
bl G3B_PopMtx
|
|
ldr r0, [sp, #0x18]
|
|
add r4, #0x70
|
|
add r0, #0x70
|
|
str r0, [sp, #0x18]
|
|
ldr r0, [sp, #0x14]
|
|
add r5, #0x70
|
|
add r0, #0x70
|
|
str r0, [sp, #0x14]
|
|
ldr r0, [sp, #0x10]
|
|
add r0, #0x70
|
|
str r0, [sp, #0x10]
|
|
ldr r0, [sp, #0xc]
|
|
add r0, #0x70
|
|
str r0, [sp, #0xc]
|
|
ldr r0, [sp, #0x1c]
|
|
add r0, r0, #1
|
|
str r0, [sp, #0x1c]
|
|
cmp r0, #0x30
|
|
bge _0222F5E2
|
|
b _0222F3EE
|
|
_0222F5E2:
|
|
ldr r0, _0222F610 ; =0x00001508
|
|
add r0, r7, r0
|
|
bl G3_EndMakeDL
|
|
ldr r1, _0222F634 ; =0x00008D1C
|
|
str r0, [r7, r1]
|
|
ldr r0, _0222F638 ; =0x0000151C
|
|
ldr r1, [r7, r1]
|
|
add r0, r7, r0
|
|
bl DC_FlushRange
|
|
ldr r0, _0222F634 ; =0x00008D1C
|
|
ldr r1, [r7, r0]
|
|
mov r0, #0x1e
|
|
lsl r0, r0, #0xa
|
|
cmp r1, r0
|
|
blo _0222F608
|
|
bl ErrorHandling
|
|
_0222F608:
|
|
mov r0, #1
|
|
str r0, [r7, #4]
|
|
_0222F60C:
|
|
add sp, #0x68
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_0222F610: .word 0x00001508
|
|
_0222F614: .word 0x00005294
|
|
_0222F618: .word 0xFFFFF000
|
|
_0222F61C: .word 0x0000019A
|
|
_0222F620: .word 0x00002D6B
|
|
_0222F624: .word 0x00000FFF
|
|
_0222F628: .word 0xFFFFF001
|
|
_0222F62C: .word 0x020FFA38
|
|
_0222F630: .word 0x00007FFF
|
|
_0222F634: .word 0x00008D1C
|
|
_0222F638: .word 0x0000151C
|
|
|
|
thumb_func_start MOD69_0222F63C
|
|
MOD69_0222F63C: ; 0x0222F63C
|
|
push {r4, lr}
|
|
cmp r0, #0
|
|
beq _0222F66C
|
|
bl FUN_0201B6C8
|
|
add r4, r0, #0
|
|
ldr r0, [r4, #4]
|
|
cmp r0, #0
|
|
beq _0222F66C
|
|
ldr r0, _0222F670 ; =0x04000444
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
ldr r2, _0222F674 ; =0x00008D1C
|
|
ldr r1, _0222F678 ; =0x0000151C
|
|
ldr r2, [r4, r2]
|
|
mov r0, #3
|
|
add r1, r4, r1
|
|
bl MI_SendGXCommand
|
|
ldr r0, _0222F67C ; =0x04000448
|
|
mov r1, #1
|
|
str r1, [r0]
|
|
mov r0, #0
|
|
str r0, [r4, #4]
|
|
_0222F66C:
|
|
pop {r4, pc}
|
|
nop
|
|
_0222F670: .word 0x04000444
|
|
_0222F674: .word 0x00008D1C
|
|
_0222F678: .word 0x0000151C
|
|
_0222F67C: .word 0x04000448
|
|
|
|
thumb_func_start MOD69_0222F680
|
|
MOD69_0222F680: ; 0x0222F680
|
|
push {r3, r4, r5, lr}
|
|
add r4, r0, #0
|
|
str r1, [r4]
|
|
add r5, r3, #0
|
|
sub r0, r2, r1
|
|
add r1, r5, #0
|
|
str r2, [r4, #8]
|
|
bl _s32_div_f
|
|
str r0, [r4, #4]
|
|
sub r0, r5, #1
|
|
str r0, [r4, #0xc]
|
|
mov r0, #0
|
|
str r0, [r4, #0x10]
|
|
pop {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start MOD69_0222F6A0
|
|
MOD69_0222F6A0: ; 0x0222F6A0
|
|
ldr r1, [r0, #0xc]
|
|
cmp r1, #0
|
|
beq _0222F6B6
|
|
sub r1, r1, #1
|
|
str r1, [r0, #0xc]
|
|
ldr r2, [r0]
|
|
ldr r1, [r0, #4]
|
|
add r1, r2, r1
|
|
str r1, [r0]
|
|
add r0, r1, #0
|
|
bx lr
|
|
_0222F6B6:
|
|
mov r1, #1
|
|
str r1, [r0, #0x10]
|
|
ldr r0, [r0, #8]
|
|
bx lr
|
|
.align 2, 0
|
|
|
|
thumb_func_start MOD69_0222F6C0
|
|
MOD69_0222F6C0: ; 0x0222F6C0
|
|
ldr r0, [r0, #0x10]
|
|
bx lr
|
|
|
|
thumb_func_start MOD69_0222F6C4
|
|
MOD69_0222F6C4: ; 0x0222F6C4
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r4, r1, #0
|
|
add r5, r0, #0
|
|
add r0, r4, #0
|
|
add r6, r2, #0
|
|
bl FUN_020669D4
|
|
str r0, [sp]
|
|
add r0, r4, #0
|
|
mov r1, #0x79
|
|
mov r2, #0
|
|
bl FUN_020671BC
|
|
sub r1, r0, #1
|
|
cmp r1, #2
|
|
bhi _0222F6E8
|
|
mov r5, #4
|
|
b _0222F77A
|
|
_0222F6E8:
|
|
sub r1, r0, #4
|
|
cmp r1, #1
|
|
bhi _0222F6F2
|
|
mov r5, #3
|
|
b _0222F77A
|
|
_0222F6F2:
|
|
cmp r0, #0xf
|
|
bne _0222F6FA
|
|
mov r5, #5
|
|
b _0222F77A
|
|
_0222F6FA:
|
|
add r0, r4, #0
|
|
mov r1, #0x6e
|
|
mov r2, #0
|
|
bl FUN_020671BC
|
|
cmp r0, #0
|
|
beq _0222F70C
|
|
mov r5, #6
|
|
b _0222F77A
|
|
_0222F70C:
|
|
add r0, r6, #0
|
|
bl FUN_020239BC
|
|
add r7, r0, #0
|
|
add r0, r4, #0
|
|
mov r1, #7
|
|
mov r2, #0
|
|
bl FUN_020671BC
|
|
cmp r7, r0
|
|
beq _0222F726
|
|
mov r5, #2
|
|
b _0222F77A
|
|
_0222F726:
|
|
ldr r1, _0222F788 ; =0x00001B54
|
|
add r0, r6, #0
|
|
ldr r1, [r5, r1]
|
|
bl FUN_02023990
|
|
ldr r2, _0222F78C ; =0x00001B58
|
|
add r0, r4, #0
|
|
ldr r2, [r5, r2]
|
|
mov r1, #0x90
|
|
bl FUN_020671BC
|
|
ldr r1, _0222F788 ; =0x00001B54
|
|
ldr r0, [r5, r1]
|
|
add r1, r1, #4
|
|
ldr r1, [r5, r1]
|
|
bl FUN_02021CE0
|
|
cmp r0, #0
|
|
beq _0222F750
|
|
mov r5, #2
|
|
b _0222F77A
|
|
_0222F750:
|
|
add r0, r4, #0
|
|
mov r1, #0x98
|
|
mov r2, #0
|
|
bl FUN_020671BC
|
|
mov r1, #0x7d
|
|
lsl r1, r1, #4
|
|
cmp r0, r1
|
|
blo _0222F766
|
|
mov r5, #6
|
|
b _0222F77A
|
|
_0222F766:
|
|
add r0, r4, #0
|
|
mov r1, #0x92
|
|
mov r2, #0
|
|
bl FUN_020671BC
|
|
cmp r0, #0
|
|
bne _0222F778
|
|
mov r5, #0
|
|
b _0222F77A
|
|
_0222F778:
|
|
mov r5, #1
|
|
_0222F77A:
|
|
ldr r1, [sp]
|
|
add r0, r4, #0
|
|
bl FUN_02066A20
|
|
add r0, r5, #0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_0222F788: .word 0x00001B54
|
|
_0222F78C: .word 0x00001B58
|
|
|
|
.section .rodata
|
|
; 0x0222F790
|
|
.byte 0x18, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0B, 0x00, 0x0A, 0x00, 0x0C
|
|
.byte 0x00, 0x0B, 0x00, 0x0A, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00
|
|
.byte 0x00, 0x80, 0x0B, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x16, 0x00
|
|
.byte 0x00, 0x80, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x01, 0x00, 0x00, 0x00, 0x29, 0xD8, 0x22, 0x02, 0xC5, 0xD8, 0x22, 0x02, 0xD5, 0xD9, 0x22, 0x02
|
|
.byte 0xE5, 0xDA, 0x22, 0x02, 0x6D, 0xD8, 0x22, 0x02, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x06, 0x00
|
|
.byte 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x02, 0x00
|
|
.byte 0x64, 0xFF, 0x33, 0xFF, 0x00, 0x00, 0x9C, 0x00, 0x33, 0xFF, 0x00, 0x00, 0x9C, 0x00, 0xCD, 0x00
|
|
.byte 0x00, 0x00, 0x64, 0xFF, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1E, 0x06, 0x00, 0x01, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1F, 0x06, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x02, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xFF, 0x33, 0x00, 0x00
|
|
.byte 0xFF, 0x43, 0x00, 0x00, 0x9F, 0x23, 0x00, 0x00, 0xFF, 0x33, 0x00, 0x00, 0xFF, 0x43, 0x00, 0x00
|
|
.byte 0x9F, 0x23, 0x00, 0x00, 0xFF, 0x33, 0x00, 0x00, 0xFF, 0x33, 0x00, 0x00, 0x90, 0x57, 0x00, 0x00
|
|
.byte 0x1F, 0x76, 0x00, 0x00, 0x08, 0x7D, 0x00, 0x00, 0xE6, 0x7F, 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00
|
|
.byte 0xE9, 0x03, 0x00, 0x00, 0x5F, 0x02, 0x00, 0x00, 0x16, 0x7C, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00
|
|
.byte 0x60, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFD, 0xFF, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x80, 0x12, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFD, 0xFF
|
|
.byte 0x00, 0x80, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x12, 0x00, 0x00, 0x80, 0x05, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFD, 0xFF, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x80, 0x12, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
|
|
.section .data
|
|
; 0x0222F940
|
|
.word 0x00000001
|
|
|
|
.section .bss
|
|
.space 0x20
|