mirror of
https://github.com/pret/pmd-sky.git
synced 2026-03-21 17:25:15 -05:00
6996 lines
128 KiB
ArmAsm
6996 lines
128 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "overlay_10_022BCC7C.inc"
|
|
|
|
.text
|
|
|
|
arm_func_start ov10_022BCC7C
|
|
ov10_022BCC7C: ; 0x022BCC7C
|
|
stmdb sp!, {r3, lr}
|
|
bl GetWindowContents
|
|
mov r1, #1
|
|
str r1, [r0, #0x19c]
|
|
mov r1, #0
|
|
strb r1, [r0, #0x1a0]
|
|
strb r1, [r0, #0x1a1]
|
|
ldr r1, [r0, #0xf8]
|
|
bic r1, r1, #0x800000
|
|
str r1, [r0, #0xf8]
|
|
add r0, r0, #4
|
|
bl sub_020333FC
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end ov10_022BCC7C
|
|
|
|
arm_func_start ov10_022BCCB0
|
|
ov10_022BCCB0: ; 0x022BCCB0
|
|
stmdb sp!, {r3, lr}
|
|
bl GetWindowContents
|
|
ldr r1, [r0, #0x19c]
|
|
cmp r1, #3
|
|
moveq r1, #2
|
|
streq r1, [r0, #0x19c]
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end ov10_022BCCB0
|
|
|
|
arm_func_start SetInventoryMenuState0
|
|
SetInventoryMenuState0: ; 0x022BCCCC
|
|
stmdb sp!, {r3, lr}
|
|
bl GetWindowContents
|
|
mov r1, #0
|
|
str r1, [r0, #0x19c]
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end SetInventoryMenuState0
|
|
|
|
arm_func_start SetInventoryMenuState6
|
|
SetInventoryMenuState6: ; 0x022BCCE0
|
|
stmdb sp!, {r3, lr}
|
|
bl GetWindowContents
|
|
mov r1, #6
|
|
str r1, [r0, #0x19c]
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end SetInventoryMenuState6
|
|
|
|
arm_func_start CloseInventoryMenu
|
|
CloseInventoryMenu: ; 0x022BCCF4
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl GetWindowContents
|
|
bl MemFree
|
|
mov r0, r4
|
|
bl DeleteWindow
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end CloseInventoryMenu
|
|
|
|
arm_func_start ov10_022BCD10
|
|
ov10_022BCD10: ; 0x022BCD10
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
bl GetWindowContents
|
|
mov r4, r0
|
|
ldr r0, [r4, #0x19c]
|
|
cmp r0, #6
|
|
moveq r0, #1
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
cmp r0, #3
|
|
cmpne r0, #8
|
|
movne r0, #0
|
|
ldmneia sp!, {r3, r4, r5, pc}
|
|
mov r2, #1
|
|
strb r2, [r4, #0x1a0]
|
|
mov r0, r5
|
|
sub r1, r2, #6
|
|
strb r2, [r4, #0x1a1]
|
|
bl sub_0202830C
|
|
mov r0, #6
|
|
str r0, [r4, #0x19c]
|
|
mov r0, #1
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end ov10_022BCD10
|
|
|
|
arm_func_start IsInventoryMenuActive
|
|
IsInventoryMenuActive: ; 0x022BCD68
|
|
stmdb sp!, {r3, lr}
|
|
bl GetWindowContents
|
|
ldr r0, [r0, #0x19c]
|
|
cmp r0, #7
|
|
cmpne r0, #8
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end IsInventoryMenuActive
|
|
|
|
arm_func_start CheckInventoryMenuField0x1A0
|
|
CheckInventoryMenuField0x1A0: ; 0x022BCD88
|
|
stmdb sp!, {r3, lr}
|
|
bl GetWindowContents
|
|
ldrb r0, [r0, #0x1a0]
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
and r0, r0, #0xff
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end CheckInventoryMenuField0x1A0
|
|
|
|
arm_func_start ov10_022BCDA8
|
|
ov10_022BCDA8: ; 0x022BCDA8
|
|
stmdb sp!, {r3, lr}
|
|
bl GetWindowContents
|
|
add r0, r0, #4
|
|
bl sub_02033064
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end ov10_022BCDA8
|
|
|
|
arm_func_start ov10_022BCDBC
|
|
ov10_022BCDBC: ; 0x022BCDBC
|
|
stmdb sp!, {r3, lr}
|
|
bl GetWindowContents
|
|
ldrb r1, [r0, #0x1a0]
|
|
cmp r1, #0
|
|
beq _022BCDEC
|
|
ldrb r1, [r0, #0x1a1]
|
|
cmp r1, #0
|
|
mvnne r0, #0
|
|
ldmneia sp!, {r3, pc}
|
|
add r0, r0, #4
|
|
bl sub_02033064
|
|
ldmia sp!, {r3, pc}
|
|
_022BCDEC:
|
|
mvn r0, #0
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end ov10_022BCDBC
|
|
|
|
arm_func_start ov10_022BCDF4
|
|
ov10_022BCDF4: ; 0x022BCDF4
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
bl GetWindowContents
|
|
mov r4, r0
|
|
mov r0, #1
|
|
mov r1, #0
|
|
strb r0, [r4, #0x1a0]
|
|
mov r0, r5
|
|
strb r1, [r4, #0x1a1]
|
|
sub r1, r1, #4
|
|
bl sub_0202830C
|
|
ldr r0, [r4, #0xf8]
|
|
tst r0, #0x400000
|
|
beq _022BCE38
|
|
mov r0, r5
|
|
add r1, r4, #4
|
|
bl sub_02028980
|
|
_022BCE38:
|
|
mov r0, #5
|
|
str r0, [r4, #0x19c]
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end ov10_022BCDF4
|
|
|
|
arm_func_start ov10_022BCE44
|
|
ov10_022BCE44: ; 0x022BCE44
|
|
stmdb sp!, {r3, lr}
|
|
bl GetWindowContents
|
|
add r0, r0, #4
|
|
bl sub_02033414
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end ov10_022BCE44
|
|
|
|
arm_func_start PopInventoryMenuField0x1A3
|
|
PopInventoryMenuField0x1A3: ; 0x022BCE58
|
|
stmdb sp!, {r3, lr}
|
|
bl GetWindowContents
|
|
ldrb r2, [r0, #0x1a3]
|
|
mov r1, #0
|
|
strb r1, [r0, #0x1a3]
|
|
mov r0, r2
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end PopInventoryMenuField0x1A3
|
|
|
|
arm_func_start UpdateInventoryMenu
|
|
UpdateInventoryMenu: ; 0x022BCE74
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
sub sp, sp, #0x30
|
|
mov r8, r0
|
|
ldr r4, [r8, #0xc]
|
|
ldr r0, [r4, #0xf8]
|
|
tst r0, #0x2000
|
|
movne r1, #1
|
|
moveq r1, #0
|
|
ldrsb r0, [r8, #0x10]
|
|
and r5, r1, #0xff
|
|
bl GetWindowContents
|
|
add r0, r0, #4
|
|
bl sub_02033414
|
|
cmp r0, #0
|
|
beq _022BCEC8
|
|
ldr r0, [r4, #0xf8]
|
|
bic r0, r0, #0x2000
|
|
str r0, [r4, #0xf8]
|
|
ldr r0, [r4, #0x14]
|
|
bic r0, r0, #0x2000
|
|
str r0, [r4, #0x14]
|
|
_022BCEC8:
|
|
ldr r0, [r4, #0x19c]
|
|
cmp r0, #6
|
|
addls pc, pc, r0, lsl #2
|
|
b _022BD200
|
|
_022BCED8: ; jump table
|
|
b _022BCEF4 ; case 0
|
|
b _022BCF0C ; case 1
|
|
b _022BCF34 ; case 2
|
|
b _022BCF8C ; case 3
|
|
b _022BD170 ; case 4
|
|
b _022BD190 ; case 5
|
|
b _022BD1D4 ; case 6
|
|
_022BCEF4:
|
|
ldrsb r0, [r8, #0x10]
|
|
bl sub_0202810C
|
|
cmp r0, #0
|
|
beq _022BD200
|
|
mov r0, #2
|
|
str r0, [r4, #0x19c]
|
|
_022BCF0C:
|
|
ldr r0, [r4, #0x19c]
|
|
cmp r0, #1
|
|
bne _022BCF34
|
|
ldrb r0, [r8, #8]
|
|
bl sub_020287C4
|
|
ldrsb r0, [r8, #0x10]
|
|
bl UpdateWindow
|
|
mov r0, #2
|
|
str r0, [r4, #0x19c]
|
|
b _022BD200
|
|
_022BCF34:
|
|
mov r0, r8
|
|
bl ov10_022BD22C
|
|
ldr r0, [r4, #0xf8]
|
|
tst r0, #0x800000
|
|
beq _022BCF6C
|
|
mov r0, #8
|
|
str r0, [r4, #0x19c]
|
|
mov r1, #1
|
|
mov r0, #0
|
|
strb r1, [r4, #0x1a0]
|
|
strb r0, [r4, #0x1a1]
|
|
sub r0, r0, #4
|
|
str r0, [r8, #0xb8]
|
|
b _022BD200
|
|
_022BCF6C:
|
|
mov r1, #3
|
|
mov r0, #0
|
|
str r1, [r4, #0x19c]
|
|
strb r0, [r4, #0x1a0]
|
|
strb r0, [r4, #0x1a1]
|
|
sub r0, r0, #1
|
|
str r0, [r8, #0xb8]
|
|
b _022BD200
|
|
_022BCF8C:
|
|
ldrsb r0, [r8, #0x10]
|
|
bl GetWindowContents
|
|
add r0, r0, #4
|
|
bl sub_02033414
|
|
mov r7, r0
|
|
add r1, sp, #8
|
|
add r2, sp, #0xc
|
|
add r0, r4, #4
|
|
mov r3, #1
|
|
bl sub_02032BB8
|
|
ldr r1, [sp, #8]
|
|
mov r6, r0
|
|
cmp r1, #0
|
|
bne _022BD010
|
|
ldr r0, [r4, #0xf8]
|
|
tst r0, #1
|
|
beq _022BD010
|
|
mov r3, #0
|
|
ldr r2, _022BD228 ; =0x00000408
|
|
add r1, sp, #0xc
|
|
str r3, [sp]
|
|
mov ip, #1
|
|
add r0, r4, #4
|
|
str ip, [sp, #4]
|
|
bl sub_02032E0C
|
|
movs r1, r0
|
|
bmi _022BD010
|
|
add r0, r4, #4
|
|
bl sub_020330EC
|
|
ldr r0, [sp, #8]
|
|
mov r6, #1
|
|
orr r0, r0, #1
|
|
str r0, [sp, #8]
|
|
_022BD010:
|
|
ldr r0, [sp, #8]
|
|
cmp r0, #0
|
|
bne _022BD030
|
|
add r1, sp, #8
|
|
add r2, sp, #0xc
|
|
add r0, r4, #4
|
|
bl sub_02033F30
|
|
orr r6, r6, r0
|
|
_022BD030:
|
|
add r0, r4, #4
|
|
bl sub_02033064
|
|
mov r2, r0
|
|
ldr r1, [sp, #8]
|
|
add r0, r4, #4
|
|
mov r3, #0
|
|
bl sub_02032F5C
|
|
orrs r0, r6, r0
|
|
beq _022BD05C
|
|
mov r0, r8
|
|
bl ov10_022BD22C
|
|
_022BD05C:
|
|
ldr r0, [sp, #8]
|
|
tst r0, #1
|
|
beq _022BD0C4
|
|
add r0, r4, #4
|
|
bl sub_02032FD8
|
|
cmp r0, #0
|
|
beq _022BD0B4
|
|
ldr r0, [r4, #0xf8]
|
|
tst r0, #0x80000000
|
|
bne _022BD090
|
|
add r0, r4, #4
|
|
mov r1, #0
|
|
bl sub_020333D8
|
|
_022BD090:
|
|
mov r1, #1
|
|
mov r0, #0
|
|
strb r1, [r4, #0x1a0]
|
|
strb r0, [r4, #0x1a1]
|
|
sub r0, r0, #4
|
|
str r0, [r8, #0xb8]
|
|
mov r0, #5
|
|
str r0, [r4, #0x19c]
|
|
b _022BD138
|
|
_022BD0B4:
|
|
add r0, r4, #4
|
|
mov r1, #2
|
|
bl sub_020333D8
|
|
b _022BD138
|
|
_022BD0C4:
|
|
tst r0, #2
|
|
beq _022BD0F8
|
|
add r0, r4, #4
|
|
mov r1, #1
|
|
bl sub_020333D8
|
|
mov r0, #1
|
|
strb r0, [r4, #0x1a0]
|
|
strb r0, [r4, #0x1a1]
|
|
sub r0, r0, #6
|
|
str r0, [r8, #0xb8]
|
|
mov r0, #5
|
|
str r0, [r4, #0x19c]
|
|
b _022BD138
|
|
_022BD0F8:
|
|
tst r0, #0x1000
|
|
beq _022BD138
|
|
ldr r0, [r4, #0xf8]
|
|
tst r0, #0x2000
|
|
beq _022BD138
|
|
add r0, r4, #4
|
|
mov r1, #5
|
|
bl sub_020333D8
|
|
mov r1, #1
|
|
mov r0, #0
|
|
strb r1, [r4, #0x1a0]
|
|
strb r0, [r4, #0x1a1]
|
|
sub r0, r0, #4
|
|
str r0, [r8, #0xb8]
|
|
mov r0, #4
|
|
str r0, [r4, #0x19c]
|
|
_022BD138:
|
|
ldrsb r0, [r8, #0x10]
|
|
add r1, r4, #4
|
|
bl sub_02028980
|
|
cmp r5, #0
|
|
beq _022BD200
|
|
ldrsb r0, [r8, #0x10]
|
|
bl GetWindowContents
|
|
add r0, r0, #4
|
|
bl sub_02033414
|
|
cmp r7, r0
|
|
beq _022BD200
|
|
ldrsb r0, [r8, #0x10]
|
|
bl ov10_022BCCB0
|
|
b _022BD200
|
|
_022BD170:
|
|
add r0, r4, #4
|
|
bl sub_02032DB0
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
streqb r0, [r4, #0x1a3]
|
|
moveq r0, #3
|
|
streq r0, [r4, #0x19c]
|
|
b _022BD200
|
|
_022BD190:
|
|
add r0, r4, #4
|
|
bl sub_02032DB0
|
|
cmp r0, #0
|
|
bne _022BD200
|
|
ldrb r0, [r4, #0x1a1]
|
|
cmp r0, #0
|
|
bne _022BD1CC
|
|
ldr r0, [r4, #0xf8]
|
|
tst r0, #0x400000
|
|
beq _022BD1CC
|
|
mov r0, r8
|
|
bl ov10_022BD22C
|
|
mov r0, #8
|
|
str r0, [r4, #0x19c]
|
|
b _022BD200
|
|
_022BD1CC:
|
|
mov r0, #6
|
|
str r0, [r4, #0x19c]
|
|
_022BD1D4:
|
|
ldrsb r0, [r8, #0x10]
|
|
bl sub_0202812C
|
|
cmp r0, #0
|
|
beq _022BD200
|
|
ldrb r0, [r4, #0x1a1]
|
|
cmp r0, #0
|
|
mvnne r0, #4
|
|
mvneq r0, #3
|
|
str r0, [r8, #0xb8]
|
|
mov r0, #7
|
|
str r0, [r4, #0x19c]
|
|
_022BD200:
|
|
cmp r5, #0
|
|
beq _022BD220
|
|
ldr r0, [r4, #0xf8]
|
|
orr r0, r0, #0x2000
|
|
str r0, [r4, #0xf8]
|
|
ldr r0, [r4, #0x14]
|
|
orr r0, r0, #0x2000
|
|
str r0, [r4, #0x14]
|
|
_022BD220:
|
|
add sp, sp, #0x30
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
_022BD228: .word 0x00000408
|
|
arm_func_end UpdateInventoryMenu
|
|
|
|
arm_func_start ov10_022BD22C
|
|
ov10_022BD22C: ; 0x022BD22C
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #4
|
|
sub sp, sp, #0x400
|
|
mov sl, r0
|
|
ldr r4, [sl, #0xc]
|
|
add r0, r4, #4
|
|
bl sub_02033054
|
|
ldr r1, [r4, #0xf8]
|
|
mov r5, r0
|
|
tst r1, #0x200
|
|
ldrne r0, [r4, #0x15c]
|
|
ldr r6, [r4, #0xc4]
|
|
addne r8, r0, r5
|
|
ldrsb r0, [sl, #0x10]
|
|
moveq r8, #0
|
|
bl sub_02027B1C
|
|
add r0, r4, #4
|
|
bl sub_02033414
|
|
cmp r0, #0
|
|
beq _022BD2C4
|
|
ldr r2, [r4, #0x198]
|
|
ldr r3, [r4, #0x194]
|
|
add r0, sp, #4
|
|
mvn r1, #0
|
|
blx r3
|
|
movs r5, r0
|
|
beq _022BD354
|
|
add r0, r4, #4
|
|
mov r1, #0
|
|
bl sub_02033350
|
|
mov r1, #0x44
|
|
str r1, [sp]
|
|
mov r2, r0
|
|
ldrsb r0, [sl, #0x10]
|
|
mov r3, r5
|
|
mov r1, #0xe
|
|
bl sub_020263C8
|
|
b _022BD354
|
|
_022BD2C4:
|
|
cmp r6, #0
|
|
mov r7, #0
|
|
ble _022BD354
|
|
b _022BD34C
|
|
_022BD2D4:
|
|
ldr r2, [r4, #0x198]
|
|
ldr r3, [r4, #0x194]
|
|
add r0, sp, #4
|
|
mov r1, r5
|
|
blx r3
|
|
mov fp, r0
|
|
mov r1, #0
|
|
cmp r8, #0
|
|
beq _022BD308
|
|
ldrb r0, [r8]
|
|
add r8, r8, #1
|
|
tst r0, #2
|
|
movne r1, #1
|
|
_022BD308:
|
|
cmp fp, #0
|
|
beq _022BD344
|
|
cmp r1, #0
|
|
movne sb, #0x42
|
|
moveq sb, #0x44
|
|
add r0, r4, #4
|
|
mov r1, r7
|
|
bl sub_02033350
|
|
and r1, sb, #0xff
|
|
str r1, [sp]
|
|
mov r2, r0
|
|
ldrsb r0, [sl, #0x10]
|
|
mov r3, fp
|
|
mov r1, #7
|
|
bl sub_020263C8
|
|
_022BD344:
|
|
add r7, r7, #1
|
|
add r5, r5, #1
|
|
_022BD34C:
|
|
cmp r7, r6
|
|
blt _022BD2D4
|
|
_022BD354:
|
|
ldrsb r1, [sl, #0x10]
|
|
add r0, r4, #4
|
|
bl sub_0202A0B0
|
|
ldrsb r0, [sl, #0x10]
|
|
bl UpdateWindow
|
|
add sp, sp, #4
|
|
add sp, sp, #0x400
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
arm_func_end ov10_022BD22C
|
|
|
|
arm_func_start IsInventoryMenuState3
|
|
IsInventoryMenuState3: ; 0x022BD374
|
|
stmdb sp!, {r3, lr}
|
|
bl GetWindowContents
|
|
ldr r0, [r0, #0x19c]
|
|
cmp r0, #3
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
and r0, r0, #0xff
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end IsInventoryMenuState3
|
|
|
|
arm_func_start ov10_022BD394
|
|
ov10_022BD394: ; 0x022BD394
|
|
stmdb sp!, {r4, r5, r6, r7, lr}
|
|
sub sp, sp, #0x54
|
|
mov r1, r1, lsl #0x10
|
|
mov r4, r0
|
|
mov r0, r1, asr #0x10
|
|
mov r7, r2
|
|
mov r6, r3
|
|
bl GetItemAtIdx
|
|
mov r5, r0
|
|
ldrb r0, [r5]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _022BD428
|
|
mov ip, #1
|
|
ldr r2, _022BD43C ; =ov10_022C43A4
|
|
add r0, sp, #4
|
|
mov r1, r5
|
|
mov r3, r7
|
|
str ip, [sp]
|
|
bl sub_0200D310
|
|
ldrb r0, [r5, #1]
|
|
cmp r0, #0
|
|
ldrneb r2, [r6, r0]
|
|
cmpne r2, #0
|
|
beq _022BD414
|
|
ldr r1, _022BD440 ; =ov10_022C43F0
|
|
add r3, sp, #4
|
|
mov r0, r4
|
|
bl SprintfStatic__022BD44C
|
|
b _022BD434
|
|
_022BD414:
|
|
ldr r1, _022BD444 ; =ov10_022C43F8
|
|
add r2, sp, #4
|
|
mov r0, r4
|
|
bl SprintfStatic__022BD44C
|
|
b _022BD434
|
|
_022BD428:
|
|
ldr r1, _022BD448 ; =ov10_022C4404
|
|
mov r0, r4
|
|
bl strcpy
|
|
_022BD434:
|
|
add sp, sp, #0x54
|
|
ldmia sp!, {r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_022BD43C: .word ov10_022C43A4
|
|
_022BD440: .word ov10_022C43F0
|
|
_022BD444: .word ov10_022C43F8
|
|
_022BD448: .word ov10_022C4404
|
|
arm_func_end ov10_022BD394
|
|
|
|
arm_func_start SprintfStatic__022BD44C
|
|
SprintfStatic__022BD44C: ; 0x022BD44C
|
|
stmdb sp!, {r0, r1, r2, r3}
|
|
stmdb sp!, {r3, lr}
|
|
add r2, sp, #0xc
|
|
bic r2, r2, #3
|
|
ldr r1, [sp, #0xc]
|
|
add r2, r2, #4
|
|
bl vsprintf
|
|
ldmia sp!, {r3, lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
arm_func_end SprintfStatic__022BD44C
|
|
|
|
arm_func_start ov10_022BD474
|
|
ov10_022BD474: ; 0x022BD474
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
sub sp, sp, #0xa8
|
|
#ifdef JAPAN
|
|
ldr lr, _022BECF4 ; =0x00001D38
|
|
#endif
|
|
mov ip, #0
|
|
mov r7, #0x10
|
|
mov r6, #0xd
|
|
#ifndef JAPAN
|
|
mov lr, #0x8e0
|
|
#endif
|
|
mov r5, r0
|
|
mov r4, r1
|
|
str r7, [sp, #0x1c]
|
|
str r2, [sp, #0x10]
|
|
str r3, [sp, #0x70]
|
|
str r6, [sp, #0x14]
|
|
strh lr, [sp, #0x18]
|
|
str ip, [sp, #0x84]
|
|
str ip, [sp, #0x8c]
|
|
bl GetCurrentBagCapacity
|
|
cmp r0, #2
|
|
bge _022BD508
|
|
cmp r4, #0
|
|
movne r5, #0
|
|
ldr r2, [sp, #0xc4]
|
|
moveq r5, #0x2000
|
|
cmp r4, #0
|
|
ldrne r0, _022BD554 ; =ov10_022C43C0
|
|
ldr r1, _022BD558 ; =0x00481C33
|
|
str r2, [sp]
|
|
mov r2, #1
|
|
str r2, [sp, #4]
|
|
str r2, [sp, #8]
|
|
ldrb r4, [sp, #0xc8]
|
|
ldreq r0, _022BD55C ; =ov10_022C43D0
|
|
ldr r3, [sp, #0xc0]
|
|
add r2, sp, #0x10
|
|
orr r1, r5, r1
|
|
str r4, [sp, #0xc]
|
|
bl CreateInventoryMenu
|
|
b _022BD54C
|
|
_022BD508:
|
|
cmp r4, #0
|
|
movne r6, #0
|
|
ldr r2, [sp, #0xc4]
|
|
moveq r6, #0x2000
|
|
cmp r4, #0
|
|
ldrne r0, _022BD560 ; =ov10_022C43E0
|
|
ldr r1, _022BD564 ; =0x00489E33
|
|
stmia sp, {r2, r5}
|
|
mov r2, #8
|
|
str r2, [sp, #8]
|
|
ldrb r4, [sp, #0xc8]
|
|
ldreq r0, _022BD568 ; =ov10_022C43B0
|
|
ldr r3, [sp, #0xc0]
|
|
add r2, sp, #0x10
|
|
orr r1, r6, r1
|
|
str r4, [sp, #0xc]
|
|
bl CreateInventoryMenu
|
|
_022BD54C:
|
|
add sp, sp, #0xa8
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
#ifdef JAPAN
|
|
_022BECF4: .word 0x00001D38
|
|
#endif
|
|
_022BD554: .word ov10_022C43C0
|
|
_022BD558: .word 0x00481C33
|
|
_022BD55C: .word ov10_022C43D0
|
|
_022BD560: .word ov10_022C43E0
|
|
_022BD564: .word 0x00489E33
|
|
_022BD568: .word ov10_022C43B0
|
|
arm_func_end ov10_022BD474
|
|
|
|
arm_func_start ov10_022BD56C
|
|
ov10_022BD56C: ; 0x022BD56C
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _022BD5A8 ; =ov10_022DC220
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
ldmneia sp!, {r3, pc}
|
|
mov r0, #0xa4
|
|
mov r1, #8
|
|
bl MemAlloc
|
|
ldr r1, _022BD5A8 ; =ov10_022DC220
|
|
mov r2, #0
|
|
str r0, [r1]
|
|
str r2, [r0]
|
|
ldr r0, [r1]
|
|
str r2, [r0, #4]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_022BD5A8: .word ov10_022DC220
|
|
arm_func_end ov10_022BD56C
|
|
|
|
arm_func_start ov10_022BD5AC
|
|
ov10_022BD5AC: ; 0x022BD5AC
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _022BD710 ; =ov10_022DC220
|
|
ldr r1, [r0]
|
|
ldr r0, [r1]
|
|
cmp r0, #4
|
|
addls pc, pc, r0, lsl #2
|
|
b _022BD708
|
|
_022BD5C8: ; jump table
|
|
b _022BD67C ; case 0
|
|
b _022BD6AC ; case 1
|
|
b _022BD6C8 ; case 2
|
|
b _022BD700 ; case 3
|
|
b _022BD700 ; case 4
|
|
_022BD5DC:
|
|
ldr r0, _022BD714 ; =TEAM_MEMBER_TABLE_PTR
|
|
mov r1, #0x68
|
|
ldr r0, [r0]
|
|
ldr r2, _022BD710 ; =ov10_022DC220
|
|
add r0, r0, #0x9000
|
|
ldr r0, [r0, #0x84c]
|
|
mla r0, r3, r1, r0
|
|
str r0, [ip, #0x4c]
|
|
ldr r0, [r2]
|
|
ldr r0, [r0, #0x4c]
|
|
ldrsh r0, [r0, #8]
|
|
bl sub_020562B8
|
|
cmp r0, #0
|
|
beq _022BD668
|
|
ldr r0, _022BD710 ; =ov10_022DC220
|
|
ldr r0, [r0]
|
|
ldr r1, [r0, #0x4c]
|
|
add r0, r0, #8
|
|
bl sub_020534BC
|
|
ldr r0, _022BD710 ; =ov10_022DC220
|
|
mov r2, #0
|
|
ldr r1, [r0]
|
|
strb r2, [r1, #0xe]
|
|
ldr r1, [r0]
|
|
strb r2, [r1, #0xf]
|
|
ldr r0, [r0]
|
|
add r0, r0, #8
|
|
bl sub_02055CCC
|
|
mvn r1, #0
|
|
cmp r0, r1
|
|
ldreq r0, _022BD710 ; =ov10_022DC220
|
|
moveq r1, #1
|
|
ldreq r0, [r0]
|
|
streq r1, [r0]
|
|
beq _022BD690
|
|
_022BD668:
|
|
ldr r0, _022BD710 ; =ov10_022DC220
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #4]
|
|
add r0, r0, #1
|
|
str r0, [r1, #4]
|
|
_022BD67C:
|
|
ldr r0, _022BD710 ; =ov10_022DC220
|
|
ldr ip, [r0]
|
|
ldr r3, [ip, #4]
|
|
cmp r3, #4
|
|
blt _022BD5DC
|
|
_022BD690:
|
|
ldr r0, _022BD710 ; =ov10_022DC220
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #4]
|
|
cmp r0, #4
|
|
movge r0, #3
|
|
strge r0, [r1]
|
|
b _022BD708
|
|
_022BD6AC:
|
|
add r0, r1, #8
|
|
bl ov11_023061CC
|
|
ldr r0, _022BD710 ; =ov10_022DC220
|
|
mov r1, #2
|
|
ldr r0, [r0]
|
|
str r1, [r0]
|
|
b _022BD708
|
|
_022BD6C8:
|
|
bl ov11_02306C9C
|
|
cmp r0, #3
|
|
cmpne r0, #4
|
|
bne _022BD708
|
|
bl ov11_02306C64
|
|
ldr r0, _022BD710 ; =ov10_022DC220
|
|
mov r1, #0
|
|
ldr r3, [r0]
|
|
ldr r2, [r3, #4]
|
|
add r2, r2, #1
|
|
str r2, [r3, #4]
|
|
ldr r0, [r0]
|
|
str r1, [r0]
|
|
b _022BD708
|
|
_022BD700:
|
|
mov r0, #2
|
|
ldmia sp!, {r3, pc}
|
|
_022BD708:
|
|
mov r0, #1
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_022BD710: .word ov10_022DC220
|
|
_022BD714: .word TEAM_MEMBER_TABLE_PTR
|
|
arm_func_end ov10_022BD5AC
|
|
|
|
arm_func_start ov10_022BD718
|
|
ov10_022BD718: ; 0x022BD718
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _022BD740 ; =ov10_022DC220
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
bl MemFree
|
|
ldr r0, _022BD740 ; =ov10_022DC220
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_022BD740: .word ov10_022DC220
|
|
arm_func_end ov10_022BD718
|
|
|
|
; https://decomp.me/scratch/bBFFj
|
|
arm_func_start ov10_022BD744
|
|
ov10_022BD744: ; 0x022BD744
|
|
ldr r0, _022BD758 ; =ov10_022DC1C0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x2000
|
|
ldr r0, [r0, #0x784]
|
|
bx lr
|
|
.align 2, 0
|
|
_022BD758: .word ov10_022DC1C0
|
|
arm_func_end ov10_022BD744
|
|
|
|
arm_func_start ov10_022BD75C
|
|
ov10_022BD75C: ; 0x022BD75C
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
sub sp, sp, #0x18
|
|
cmp r1, #1
|
|
bne _022BD7A0
|
|
ldr r1, _022BD824 ; =WAN_TABLE
|
|
ldr r3, _022BD828 ; =_020AFC4C
|
|
ldr r4, [r1]
|
|
mov r1, #0x38
|
|
smlabb r0, r0, r1, r4
|
|
ldr r0, [r0, #0x30]
|
|
mov r2, r2, lsl #0x10
|
|
ldr r1, [r0, #4]
|
|
ldr r0, [r3]
|
|
ldr r1, [r1, #4]
|
|
mov r2, r2, lsr #0x10
|
|
bl sub_0201B43C
|
|
b _022BD81C
|
|
_022BD7A0:
|
|
cmp r1, #0
|
|
bne _022BD81C
|
|
ldr r2, _022BD824 ; =WAN_TABLE
|
|
mov r1, #0x38
|
|
ldr r2, [r2]
|
|
ldr r4, _022BD828 ; =_020AFC4C
|
|
smlabb r0, r0, r1, r2
|
|
ldr r0, [r0, #0x30]
|
|
mov sl, #0
|
|
ldr r0, [r0, #4]
|
|
mov r8, #0x10
|
|
ldr sb, [r0, #4]
|
|
mov r7, #0xff
|
|
add r6, sp, #8
|
|
mov r5, #1
|
|
_022BD7DC:
|
|
str r8, [sp]
|
|
str r7, [sp, #4]
|
|
ldr r1, [sb]
|
|
mov r0, r6
|
|
mov r2, r5
|
|
mov r3, r8
|
|
add r1, r1, sl, lsl #6
|
|
bl sub_0201F598
|
|
mov r2, sl, lsl #0x10
|
|
ldr r0, [r4]
|
|
mov r1, r6
|
|
mov r2, r2, lsr #0x10
|
|
bl sub_0201B43C
|
|
add sl, sl, #1
|
|
cmp sl, #0xd
|
|
blt _022BD7DC
|
|
_022BD81C:
|
|
add sp, sp, #0x18
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
.align 2, 0
|
|
_022BD824: .word WAN_TABLE
|
|
_022BD828: .word _020AFC4C
|
|
arm_func_end ov10_022BD75C
|
|
|
|
arm_func_start ov10_022BD82C
|
|
ov10_022BD82C: ; 0x022BD82C
|
|
stmdb sp!, {r4, lr}
|
|
sub sp, sp, #8
|
|
ldr r1, _022BDA78 ; =ov10_022DC1C0
|
|
mov r4, r0
|
|
ldr r0, [r1]
|
|
cmp r0, #0
|
|
beq _022BD84C
|
|
bl ov10_022BDC0C
|
|
_022BD84C:
|
|
ldr r0, _022BDA7C ; =0x000027A4
|
|
mov r1, #0xb
|
|
bl MemAlloc
|
|
ldr r2, _022BDA78 ; =ov10_022DC1C0
|
|
ldr r1, _022BDA7C ; =0x000027A4
|
|
str r0, [r2]
|
|
bl MemZero
|
|
bl sub_0206395C
|
|
ldr r1, _022BDA78 ; =ov10_022DC1C0
|
|
mov r2, #0
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x2000
|
|
str r4, [r0, #0x784]
|
|
ldr r1, [r1]
|
|
mvn r0, #0
|
|
_022BD888:
|
|
add r2, r2, #1
|
|
str r0, [r1, #0xc]
|
|
cmp r2, #0x20
|
|
add r1, r1, #0x13c
|
|
blt _022BD888
|
|
ldr r2, _022BDA78 ; =ov10_022DC1C0
|
|
ldr r3, [sp, #0x10]
|
|
ldr r0, [r2]
|
|
ldr r1, [sp, #0x14]
|
|
add r0, r0, #0x2000
|
|
str r3, [r0, #0x78c]
|
|
ldr r0, [r2]
|
|
mov r3, #0
|
|
add r0, r0, #0x2000
|
|
str r1, [r0, #0x794]
|
|
ldr r1, [r2]
|
|
mov r0, r4
|
|
add r1, r1, #0x2000
|
|
strb r3, [r1, #0x79e]
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x2000
|
|
strb r3, [r1, #0x79f]
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x2000
|
|
strb r3, [r1, #0x7a0]
|
|
bl ov10_022BFF30
|
|
bl ov10_022C04D8
|
|
ldr r0, _022BDA78 ; =ov10_022DC1C0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x2000
|
|
ldr r0, [r0, #0x784]
|
|
cmp r0, #0
|
|
beq _022BD9D0
|
|
cmp r0, #1
|
|
bne _022BDA70
|
|
mov r3, #0
|
|
ldr r0, _022BDA80 ; =WAN_TABLE
|
|
str r3, [sp]
|
|
ldr r0, [r0]
|
|
mov r1, #3
|
|
mov r2, #0x124
|
|
bl LoadWanTableEntryFromPack
|
|
mov r1, #0
|
|
mov r2, r1
|
|
mov r4, r0
|
|
bl ov10_022BD75C
|
|
ldr r0, _022BDA80 ; =WAN_TABLE
|
|
mov r1, r4
|
|
ldr r0, [r0]
|
|
bl DeleteWanTableEntryVeneer
|
|
mov r3, #0
|
|
ldr r0, _022BDA80 ; =WAN_TABLE
|
|
str r3, [sp]
|
|
ldr r0, [r0]
|
|
mov r1, #3
|
|
mov r2, #1
|
|
bl LoadWanTableEntryFromPack
|
|
mov r4, r0
|
|
mov r2, #0
|
|
str r2, [sp]
|
|
str r2, [sp, #4]
|
|
ldr r1, _022BDA78 ; =ov10_022DC1C0
|
|
mov r3, #1
|
|
ldr r1, [r1]
|
|
add r1, r1, #0x2000
|
|
ldr r1, [r1, #0x78c]
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, lsr #0x10
|
|
bl sub_0201D9C8
|
|
mov r0, r4
|
|
mov r1, #1
|
|
ldrsh r2, [sp, #0x18]
|
|
bl ov10_022BD75C
|
|
ldr r1, _022BDA78 ; =ov10_022DC1C0
|
|
ldrsh r2, [sp, #0x18]
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x2700
|
|
strh r4, [r0, #0x88]
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x2700
|
|
strh r2, [r0, #0x90]
|
|
b _022BDA70
|
|
_022BD9D0:
|
|
mov r3, #0
|
|
ldr r0, _022BDA80 ; =WAN_TABLE
|
|
str r3, [sp]
|
|
ldr r0, [r0]
|
|
mov r1, #3
|
|
mov r2, #0x124
|
|
bl LoadWanTableEntryFromPack
|
|
ldr r1, _022BDA78 ; =ov10_022DC1C0
|
|
mov r2, #0
|
|
ldr r1, [r1]
|
|
mov r3, r2
|
|
add r1, r1, #0x2000
|
|
ldr r1, [r1, #0x78c]
|
|
mov r4, r0
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, lsr #0x10
|
|
bl sub_0201DBB8
|
|
mov r1, #0
|
|
mov r0, r4
|
|
mov r2, r1
|
|
bl ov10_022BD75C
|
|
ldr r0, _022BDA80 ; =WAN_TABLE
|
|
mov r1, r4
|
|
ldr r0, [r0]
|
|
bl DeleteWanTableEntryVeneer
|
|
mov r2, #0
|
|
str r2, [sp]
|
|
ldr r0, _022BDA80 ; =WAN_TABLE
|
|
mov r1, #3
|
|
ldr r0, [r0]
|
|
mov r3, r2
|
|
bl LoadWanTableEntryFromPack
|
|
ldr r2, _022BDA78 ; =ov10_022DC1C0
|
|
mov r3, #0
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x2700
|
|
strh r0, [r1, #0x88]
|
|
ldr r0, [r2]
|
|
add r0, r0, #0x2700
|
|
strh r3, [r0, #0x90]
|
|
_022BDA70:
|
|
add sp, sp, #8
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_022BDA78: .word ov10_022DC1C0
|
|
_022BDA7C: .word 0x000027A4
|
|
_022BDA80: .word WAN_TABLE
|
|
arm_func_end ov10_022BD82C
|
|
|
|
arm_func_start ov10_022BDA84
|
|
ov10_022BDA84: ; 0x022BDA84
|
|
stmdb sp!, {lr}
|
|
sub sp, sp, #0xc
|
|
stmia sp, {r0, r1}
|
|
mov r1, #0
|
|
str r2, [sp, #8]
|
|
mov r2, r1
|
|
mov r3, r1
|
|
mov r0, #1
|
|
bl ov10_022BD82C
|
|
add sp, sp, #0xc
|
|
ldmia sp!, {pc}
|
|
arm_func_end ov10_022BDA84
|
|
|
|
arm_func_start ov10_022BDAB0
|
|
ov10_022BDAB0: ; 0x022BDAB0
|
|
stmdb sp!, {lr}
|
|
sub sp, sp, #0xc
|
|
str r0, [sp]
|
|
mov r0, #0
|
|
stmib sp, {r1, r2}
|
|
mov r1, r0
|
|
mov r2, r0
|
|
mov r3, r0
|
|
bl ov10_022BD82C
|
|
add sp, sp, #0xc
|
|
ldmia sp!, {pc}
|
|
arm_func_end ov10_022BDAB0
|
|
|
|
arm_func_start ov10_022BDADC
|
|
ov10_022BDADC: ; 0x022BDADC
|
|
stmdb sp!, {r3, lr}
|
|
sub sp, sp, #8
|
|
ldr r0, _022BDB50 ; =ov10_022DC1C0
|
|
ldr r3, [r0]
|
|
add r1, r3, #0x2000
|
|
ldr r0, [r1, #0x784]
|
|
cmp r0, #0
|
|
beq _022BDB48
|
|
cmp r0, #1
|
|
bne _022BDB48
|
|
mov r2, #0
|
|
str r2, [sp]
|
|
str r2, [sp, #4]
|
|
add r0, r3, #0x2700
|
|
ldr r1, [r1, #0x78c]
|
|
ldrsh r0, [r0, #0x88]
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, lsr #0x10
|
|
mov r3, #1
|
|
bl sub_0201D9C8
|
|
ldr r0, _022BDB50 ; =ov10_022DC1C0
|
|
mov r1, #1
|
|
ldr r0, [r0]
|
|
add r2, r0, #0x2700
|
|
ldrsh r0, [r2, #0x88]
|
|
ldrsh r2, [r2, #0x90]
|
|
bl ov10_022BD75C
|
|
_022BDB48:
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_022BDB50: .word ov10_022DC1C0
|
|
arm_func_end ov10_022BDADC
|
|
|
|
arm_func_start ov10_022BDB54
|
|
ov10_022BDB54: ; 0x022BDB54
|
|
ldr ip, _022BDB5C ; =sub_02063A0C
|
|
bx ip
|
|
.align 2, 0
|
|
_022BDB5C: .word sub_02063A0C
|
|
arm_func_end ov10_022BDB54
|
|
|
|
arm_func_start ov10_022BDB60
|
|
ov10_022BDB60: ; 0x022BDB60
|
|
cmp r3, #0
|
|
moveq r3, #0
|
|
beq _022BDB74
|
|
cmp r3, #1
|
|
moveq r3, #1
|
|
_022BDB74:
|
|
ldr ip, _022BDB7C ; =sub_020639B4
|
|
bx ip
|
|
.align 2, 0
|
|
_022BDB7C: .word sub_020639B4
|
|
arm_func_end ov10_022BDB60
|
|
|
|
arm_func_start ov10_022BDB80
|
|
ov10_022BDB80: ; 0x022BDB80
|
|
ldr r3, _022BDBA0 ; =ov10_022DC1C0
|
|
ldr r2, [r3]
|
|
add r2, r2, #0x2000
|
|
str r0, [r2, #0x798]
|
|
ldr r0, [r3]
|
|
add r0, r0, #0x2700
|
|
strh r1, [r0, #0x9c]
|
|
bx lr
|
|
.align 2, 0
|
|
_022BDBA0: .word ov10_022DC1C0
|
|
arm_func_end ov10_022BDB80
|
|
|
|
arm_func_start ov10_022BDBA4
|
|
ov10_022BDBA4: ; 0x022BDBA4
|
|
ldr ip, _022BDBAC ; =sub_020639E8
|
|
bx ip
|
|
.align 2, 0
|
|
_022BDBAC: .word sub_020639E8
|
|
arm_func_end ov10_022BDBA4
|
|
|
|
arm_func_start ov10_022BDBB0
|
|
ov10_022BDBB0: ; 0x022BDBB0
|
|
ldr r1, _022BDBC4 ; =ov10_022DC1C0
|
|
ldr r1, [r1]
|
|
add r1, r1, #0x2000
|
|
strb r0, [r1, #0x7a0]
|
|
bx lr
|
|
.align 2, 0
|
|
_022BDBC4: .word ov10_022DC1C0
|
|
arm_func_end ov10_022BDBB0
|
|
|
|
arm_func_start ov10_022BDBC8
|
|
ov10_022BDBC8: ; 0x022BDBC8
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r0, _022BDC08 ; =ov10_022DC1C0
|
|
mov r6, #0
|
|
ldr r5, [r0]
|
|
mvn r4, #0
|
|
_022BDBDC:
|
|
ldr r0, [r5, #0xc]
|
|
cmp r0, r4
|
|
beq _022BDBF4
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
bl ov10_022BDE50
|
|
_022BDBF4:
|
|
add r6, r6, #1
|
|
cmp r6, #0x20
|
|
add r5, r5, #0x13c
|
|
blt _022BDBDC
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_022BDC08: .word ov10_022DC1C0
|
|
arm_func_end ov10_022BDBC8
|
|
|
|
arm_func_start ov10_022BDC0C
|
|
ov10_022BDC0C: ; 0x022BDC0C
|
|
stmdb sp!, {r3, lr}
|
|
bl ov10_022BDBC8
|
|
ldr r0, _022BDC60 ; =ov10_022DC1C0
|
|
ldr r1, _022BDC64 ; =WAN_TABLE
|
|
ldr r2, [r0]
|
|
ldr r0, [r1]
|
|
add r1, r2, #0x2700
|
|
ldrsh r1, [r1, #0x88]
|
|
bl DeleteWanTableEntryVeneer
|
|
bl ov10_022C055C
|
|
bl ov10_022BFF78
|
|
ldr r0, _022BDC60 ; =ov10_022DC1C0
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
beq _022BDC58
|
|
bl MemFree
|
|
ldr r0, _022BDC60 ; =ov10_022DC1C0
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
_022BDC58:
|
|
bl sub_02063DE4
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_022BDC60: .word ov10_022DC1C0
|
|
_022BDC64: .word WAN_TABLE
|
|
arm_func_end ov10_022BDC0C
|
|
|
|
arm_func_start ov10_022BDC68
|
|
ov10_022BDC68: ; 0x022BDC68
|
|
stmdb sp!, {r3, lr}
|
|
bl ov10_022BDBC8
|
|
ldr r0, _022BDCA0 ; =ov10_022DC1C0
|
|
mov r2, #0
|
|
ldr r1, [r0]
|
|
mvn r0, #0
|
|
_022BDC80:
|
|
add r2, r2, #1
|
|
str r0, [r1, #0xc]
|
|
cmp r2, #0x20
|
|
add r1, r1, #0x13c
|
|
blt _022BDC80
|
|
bl ov10_022BFFA4
|
|
bl ov10_022C0588
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_022BDCA0: .word ov10_022DC1C0
|
|
arm_func_end ov10_022BDC68
|
|
|
|
arm_func_start ov10_022BDCA4
|
|
ov10_022BDCA4: ; 0x022BDCA4
|
|
cmp r0, #0
|
|
moveq r0, #0
|
|
bxeq lr
|
|
cmp r0, #1
|
|
moveq r0, #1
|
|
bx lr
|
|
arm_func_end ov10_022BDCA4
|
|
|
|
arm_func_start ov10_022BDCBC
|
|
ov10_022BDCBC: ; 0x022BDCBC
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r5, r1
|
|
bl ov10_022BE9A0
|
|
mvn r1, #0
|
|
cmp r0, r1
|
|
ldmeqia sp!, {r4, r5, r6, pc}
|
|
ldr r2, _022BDE44 ; =ov10_022DC1C0
|
|
mov r1, #0x13c
|
|
ldr r2, [r2]
|
|
mla r4, r0, r1, r2
|
|
ldr r0, [r4, #0x40]
|
|
sub r0, r0, #5
|
|
cmp r0, #1
|
|
bhi _022BDD38
|
|
mov r0, #0
|
|
bl ov10_022BDCA4
|
|
bl sub_02063E44
|
|
ldr r2, _022BDE44 ; =ov10_022DC1C0
|
|
mov r0, #0
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x2000
|
|
strb r0, [r1, #0x79e]
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x2000
|
|
ldr r1, [r1, #0x784]
|
|
cmp r1, #0
|
|
bne _022BDD30
|
|
mov r1, r0
|
|
bl ov29_022EA428
|
|
_022BDD30:
|
|
add r0, r4, #0xe8
|
|
bl sub_0206423C
|
|
_022BDD38:
|
|
ldr r0, [r4, #0x40]
|
|
cmp r0, #3
|
|
bne _022BDD90
|
|
ldr r1, [r4]
|
|
mov r0, #0
|
|
bl ov10_022C07D0
|
|
mov r6, r0
|
|
ldr r1, [r6, #4]
|
|
cmp r1, #0
|
|
bne _022BDD6C
|
|
ldr r0, _022BDE48 ; =ov10_022C79D8
|
|
bl Debug_Print0
|
|
b _022BDE34
|
|
_022BDD6C:
|
|
sub r1, r1, #1
|
|
ldr r0, _022BDE4C ; =ov10_022C7A18
|
|
str r1, [r6, #4]
|
|
bl Debug_Print0
|
|
ldr r0, [r6, #4]
|
|
cmp r0, #0
|
|
mvneq r0, #0
|
|
streq r0, [r6]
|
|
b _022BDE34
|
|
_022BDD90:
|
|
cmp r0, #4
|
|
bne _022BDDF4
|
|
ldr r1, [r4]
|
|
mov r0, #1
|
|
bl ov10_022C07D0
|
|
mov r6, r0
|
|
ldr r1, [r6]
|
|
ldr r0, [r4, #0x44]
|
|
cmp r1, r0
|
|
bne _022BDE34
|
|
ldr r1, [r6, #4]
|
|
cmp r1, #0
|
|
bne _022BDDD0
|
|
ldr r0, _022BDE48 ; =ov10_022C79D8
|
|
bl Debug_Print0
|
|
b _022BDE34
|
|
_022BDDD0:
|
|
sub r1, r1, #1
|
|
ldr r0, _022BDE4C ; =ov10_022C7A18
|
|
str r1, [r6, #4]
|
|
bl Debug_Print0
|
|
ldr r0, [r6, #4]
|
|
cmp r0, #0
|
|
mvneq r0, #0
|
|
streq r0, [r6]
|
|
b _022BDE34
|
|
_022BDDF4:
|
|
cmp r0, #6
|
|
ldr r1, [r4]
|
|
bne _022BDE1C
|
|
mov r0, #3
|
|
bl ov10_022C07D0
|
|
mov r1, #0
|
|
str r1, [r0, #4]
|
|
sub r1, r1, #1
|
|
str r1, [r0]
|
|
b _022BDE34
|
|
_022BDE1C:
|
|
mov r0, #2
|
|
bl ov10_022C07D0
|
|
mov r1, #0
|
|
str r1, [r0, #4]
|
|
sub r1, r1, #1
|
|
str r1, [r0]
|
|
_022BDE34:
|
|
mov r0, r4
|
|
mov r1, r5
|
|
bl ov10_022BDEC4
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_022BDE44: .word ov10_022DC1C0
|
|
_022BDE48: .word ov10_022C79D8
|
|
_022BDE4C: .word ov10_022C7A18
|
|
arm_func_end ov10_022BDCBC
|
|
|
|
arm_func_start ov10_022BDE50
|
|
ov10_022BDE50: ; 0x022BDE50
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl ov10_022BE9A0
|
|
mvn r2, #0
|
|
cmp r0, r2
|
|
ldmeqia sp!, {r4, pc}
|
|
ldr r3, _022BDEB0 ; =ov10_022DC1C0
|
|
mov r1, #0x13c
|
|
ldr r3, [r3]
|
|
mla r1, r0, r1, r3
|
|
ldr r0, [r1, #0xc]
|
|
cmp r0, r2
|
|
ldmeqia sp!, {r4, pc}
|
|
ldr r0, [r1, #8]
|
|
sub r0, r0, #1
|
|
cmp r0, #1
|
|
mov r0, r4
|
|
bhi _022BDEA4
|
|
mov r1, #0
|
|
bl ov10_022BDCBC
|
|
ldmia sp!, {r4, pc}
|
|
_022BDEA4:
|
|
mov r1, #1
|
|
bl ov10_022BDCBC
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_022BDEB0: .word ov10_022DC1C0
|
|
arm_func_end ov10_022BDE50
|
|
|
|
arm_func_start GetEffectAnimationField0x19
|
|
GetEffectAnimationField0x19: ; 0x022BDEB4
|
|
stmdb sp!, {r3, lr}
|
|
bl GetEffectAnimation
|
|
ldrsb r0, [r0, #0x19]
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end GetEffectAnimationField0x19
|
|
|
|
arm_func_start ov10_022BDEC4
|
|
ov10_022BDEC4: ; 0x022BDEC4
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
mvn r0, #0
|
|
str r0, [r4, #0xc]
|
|
mov r0, #0
|
|
strb r0, [r4, #0x60]
|
|
ldr r0, [r4, #8]
|
|
sub r0, r0, #5
|
|
cmp r0, #1
|
|
bhi _022BDF00
|
|
cmp r1, #0
|
|
ldmeqia sp!, {r4, pc}
|
|
ldrsh r0, [r4, #0xe4]
|
|
bl ov10_022C04CC
|
|
ldmia sp!, {r4, pc}
|
|
_022BDF00:
|
|
ldrsh r2, [r4, #0x64]
|
|
cmp r2, #0
|
|
ldmeqia sp!, {r4, pc}
|
|
cmp r1, #0
|
|
beq _022BDF24
|
|
ldr r0, _022BDF30 ; =WAN_TABLE
|
|
mov r1, r2
|
|
ldr r0, [r0]
|
|
bl DeleteWanTableEntryVeneer
|
|
_022BDF24:
|
|
mov r0, #0
|
|
strh r0, [r4, #0x64]
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_022BDF30: .word WAN_TABLE
|
|
arm_func_end ov10_022BDEC4
|
|
|
|
arm_func_start ov10_022BDF34
|
|
ov10_022BDF34: ; 0x022BDF34
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
add r0, r4, #0xe8
|
|
bl sub_020642A8
|
|
cmp r0, #0
|
|
bne _022BDFB4
|
|
mov r0, r4
|
|
mov r1, #1
|
|
bl ov10_022BDEC4
|
|
ldr r2, _022BDFBC ; =ov10_022DC1C0
|
|
ldr r0, [r4]
|
|
ldr r3, [r2]
|
|
mov r1, #0
|
|
add r0, r3, r0
|
|
add r0, r0, #0x2000
|
|
strb r1, [r0, #0x79e]
|
|
ldr r0, [r2]
|
|
add r0, r0, #0x2000
|
|
ldr r0, [r0, #0x784]
|
|
cmp r0, #0
|
|
bne _022BDF90
|
|
mov r0, #0xd
|
|
bl ov29_022EA428
|
|
_022BDF90:
|
|
ldr r1, [r4]
|
|
mov r0, #2
|
|
bl ov10_022C07D0
|
|
mov r2, #0
|
|
str r2, [r0, #4]
|
|
sub r1, r2, #1
|
|
str r1, [r0]
|
|
mov r0, r2
|
|
ldmia sp!, {r4, pc}
|
|
_022BDFB4:
|
|
mov r0, #1
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_022BDFBC: .word ov10_022DC1C0
|
|
arm_func_end ov10_022BDF34
|
|
|
|
arm_func_start ov10_022BDFC0
|
|
ov10_022BDFC0: ; 0x022BDFC0
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
sub sp, sp, #0x10
|
|
mov r7, r0
|
|
ldr r0, [r7, #0x14]
|
|
mov r6, r1
|
|
bl GetEffectAnimation
|
|
mov r1, #0
|
|
mov r4, r0
|
|
strb r1, [r7, #0x13a]
|
|
ldr r0, [r4]
|
|
mov r5, #1
|
|
str r0, [r7, #0x40]
|
|
ldr r0, [r4, #4]
|
|
str r0, [r7, #0x44]
|
|
ldr r0, [r4, #0x10]
|
|
str r0, [r7, #0x58]
|
|
ldr r1, [r7, #0x18]
|
|
ldr r0, [r4, #0x14]
|
|
add r0, r1, r0
|
|
str r0, [r7, #0x5c]
|
|
ldrb r0, [r4, #0x1b]
|
|
strb r0, [r7, #0x61]
|
|
ldrb r0, [r4, #0x1a]
|
|
strb r0, [r7, #0x60]
|
|
ldr r0, [r7, #0x40]
|
|
cmp r0, #5
|
|
cmpne r0, #6
|
|
beq _022BE03C
|
|
ldrsh r0, [r7, #0x64]
|
|
bl sub_0201DA20
|
|
str r0, [r7, #0x10]
|
|
_022BE03C:
|
|
ldr r1, [r4, #0xc]
|
|
mvn r0, #0
|
|
str r1, [r7, #0x50]
|
|
ldr r2, [r7, #0x1c]
|
|
cmp r2, r0
|
|
beq _022BE070
|
|
ldr r0, [r7, #0x10]
|
|
mov r1, r0, lsr #0x1f
|
|
rsb r0, r1, r0, lsl #29
|
|
adds r0, r1, r0, ror #29
|
|
ldreq r0, [r7, #0x50]
|
|
addeq r0, r0, r2
|
|
streq r0, [r7, #0x50]
|
|
_022BE070:
|
|
mov r0, #0
|
|
str r0, [r7, #0x4c]
|
|
ldr r0, [r7, #0x40]
|
|
cmp r0, #1
|
|
cmpne r0, #2
|
|
beq _022BE0A0
|
|
ldr r1, [r7, #0x44]
|
|
mov r2, r6
|
|
bl ov10_022C05E0
|
|
mvn r1, #2
|
|
cmp r0, r1
|
|
moveq r5, #1
|
|
_022BE0A0:
|
|
ldr r0, [r7, #0x40]
|
|
cmp r0, #6
|
|
addls pc, pc, r0, lsl #2
|
|
b _022BE1F0
|
|
_022BE0B0: ; jump table
|
|
b _022BE1F0 ; case 0
|
|
b _022BE1A4 ; case 1
|
|
b _022BE1D4 ; case 2
|
|
b _022BE0CC ; case 3
|
|
b _022BE0EC ; case 4
|
|
b _022BE124 ; case 5
|
|
b _022BE18C ; case 6
|
|
_022BE0CC:
|
|
ldr r0, _022BE448 ; =ov10_022DC1C0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x2000
|
|
ldr r0, [r0, #0x794]
|
|
str r0, [r7, #0x54]
|
|
ldr r0, [r4, #8]
|
|
str r0, [r7, #0x48]
|
|
b _022BE1F0
|
|
_022BE0EC:
|
|
ldr r0, _022BE448 ; =ov10_022DC1C0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x2000
|
|
ldr r0, [r0, #0x798]
|
|
bl sub_0201E184
|
|
ldr r1, _022BE448 ; =ov10_022DC1C0
|
|
str r0, [r7, #0x54]
|
|
ldr r0, [r1]
|
|
mov r1, #0
|
|
add r0, r0, #0x2700
|
|
ldrsh r0, [r0, #0x9c]
|
|
str r0, [r7, #0x4c]
|
|
str r1, [r7, #0x48]
|
|
b _022BE1F0
|
|
_022BE124:
|
|
cmp r6, #0
|
|
bne _022BE158
|
|
mvn r0, #0
|
|
str r0, [r7, #0x54]
|
|
ldr r1, [r4, #8]
|
|
ldr r0, _022BE448 ; =ov10_022DC1C0
|
|
str r1, [r7, #0x48]
|
|
ldr r0, [r0]
|
|
ldrb r1, [r4, #0x18]
|
|
add r0, r0, r6
|
|
add r0, r0, #0x2000
|
|
strb r1, [r0, #0x79e]
|
|
b _022BE1F0
|
|
_022BE158:
|
|
cmp r6, #1
|
|
bne _022BE1F0
|
|
mvn r0, #0
|
|
str r0, [r7, #0x54]
|
|
ldr r1, [r4, #8]
|
|
ldr r0, _022BE448 ; =ov10_022DC1C0
|
|
str r1, [r7, #0x48]
|
|
ldr r0, [r0]
|
|
ldrb r1, [r4, #0x18]
|
|
add r0, r0, r6
|
|
add r0, r0, #0x2000
|
|
strb r1, [r0, #0x79e]
|
|
b _022BE1F0
|
|
_022BE18C:
|
|
cmp r6, #0
|
|
mvneq r0, #0
|
|
streq r0, [r7, #0x54]
|
|
ldreq r0, [r4, #8]
|
|
streq r0, [r7, #0x48]
|
|
b _022BE1F0
|
|
_022BE1A4:
|
|
ldr r1, _022BE448 ; =ov10_022DC1C0
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x2000
|
|
ldr r0, [r0, #0x78c]
|
|
str r0, [r7, #0x54]
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x2700
|
|
ldrsh r0, [r0, #0x9c]
|
|
str r0, [r7, #0x48]
|
|
ldr r0, [r4, #8]
|
|
str r0, [r7, #0x48]
|
|
b _022BE1F0
|
|
_022BE1D4:
|
|
ldr r0, _022BE448 ; =ov10_022DC1C0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x2000
|
|
ldr r0, [r0, #0x78c]
|
|
str r0, [r7, #0x54]
|
|
ldr r0, [r4, #8]
|
|
str r0, [r7, #0x48]
|
|
_022BE1F0:
|
|
ldr r0, [r7, #0x40]
|
|
cmp r0, #6
|
|
addls pc, pc, r0, lsl #2
|
|
b _022BE440
|
|
_022BE200: ; jump table
|
|
b _022BE440 ; case 0
|
|
b _022BE21C ; case 1
|
|
b _022BE280 ; case 2
|
|
b _022BE300 ; case 3
|
|
b _022BE36C ; case 4
|
|
b _022BE3E4 ; case 5
|
|
b _022BE418 ; case 6
|
|
_022BE21C:
|
|
add r0, r7, #0x68
|
|
bl InitAnimationControlWithSet__0201C0B0
|
|
ldrsh r1, [r7, #0x64]
|
|
add r0, r7, #0x68
|
|
bl SetSpriteIdForAnimationControl
|
|
add r0, r7, #0x68
|
|
bl sub_0201C108
|
|
ldr r0, [r7, #0x48]
|
|
mov r2, #0
|
|
and r0, r0, #0xff
|
|
stmia sp, {r0, r2}
|
|
ldrb r1, [r7, #0x61]
|
|
add r0, r7, #0x68
|
|
str r1, [sp, #8]
|
|
str r2, [sp, #0xc]
|
|
ldr r3, [r7, #0x54]
|
|
ldr r1, [r7, #0x50]
|
|
mov r3, r3, lsl #0x10
|
|
mov r3, r3, asr #0x10
|
|
bl SetAnimationForAnimationControl
|
|
ldrh r0, [r7, #0x6a]
|
|
orr r0, r0, #0x30
|
|
orr r0, r0, #0x1000
|
|
strh r0, [r7, #0x6a]
|
|
b _022BE440
|
|
_022BE280:
|
|
add r0, r7, #0x68
|
|
bl InitAnimationControlWithSet__0201C0B0
|
|
ldrsh r1, [r7, #0x64]
|
|
add r0, r7, #0x68
|
|
bl SetSpriteIdForAnimationControl
|
|
add r0, r7, #0x68
|
|
bl sub_0201C108
|
|
ldr r0, [r7, #0x48]
|
|
mov r2, #0
|
|
and r0, r0, #0xff
|
|
stmia sp, {r0, r2}
|
|
ldrb r1, [r7, #0x61]
|
|
add r0, r7, #0x68
|
|
str r1, [sp, #8]
|
|
str r2, [sp, #0xc]
|
|
ldr r3, [r7, #0x54]
|
|
ldr r1, [r7, #0x50]
|
|
mov r3, r3, lsl #0x10
|
|
mov r3, r3, asr #0x10
|
|
bl SetAnimationForAnimationControl
|
|
ldr r0, _022BE448 ; =ov10_022DC1C0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x2700
|
|
ldrsh r0, [r0, #0x90]
|
|
and r0, r0, #0xff
|
|
and r0, r0, #0xf
|
|
strb r0, [r7, #0xaa]
|
|
ldrh r0, [r7, #0x6a]
|
|
orr r0, r0, #0x30
|
|
orr r0, r0, #0x1000
|
|
strh r0, [r7, #0x6a]
|
|
b _022BE440
|
|
_022BE300:
|
|
add r0, r7, #0x68
|
|
bl InitAnimationControlWithSet__0201C0B0
|
|
ldrsh r1, [r7, #0x64]
|
|
add r0, r7, #0x68
|
|
bl SetSpriteIdForAnimationControl
|
|
ldr r0, [r7, #0x48]
|
|
mov r2, #0
|
|
and r0, r0, #0xff
|
|
stmia sp, {r0, r2}
|
|
ldrb r1, [r7, #0x61]
|
|
add r0, r7, #0x68
|
|
str r1, [sp, #8]
|
|
str r2, [sp, #0xc]
|
|
ldr r3, [r7, #0x54]
|
|
ldr r1, [r7, #0x50]
|
|
mov r3, r3, lsl #0x10
|
|
mov r3, r3, asr #0x10
|
|
bl SetAnimationForAnimationControl
|
|
ldrh r0, [r7, #0x6a]
|
|
cmp r5, #0
|
|
orr r0, r0, #0x30
|
|
orr r0, r0, #0x1000
|
|
strh r0, [r7, #0x6a]
|
|
bne _022BE440
|
|
add r0, r7, #0x68
|
|
bl sub_0201C108
|
|
b _022BE440
|
|
_022BE36C:
|
|
add r0, r7, #0x68
|
|
bl InitAnimationControlWithSet__0201C0B0
|
|
ldrsh r1, [r7, #0x64]
|
|
add r0, r7, #0x68
|
|
bl SetSpriteIdForAnimationControl
|
|
ldr r0, [r7, #0x48]
|
|
mov r2, #0
|
|
and r0, r0, #0xff
|
|
stmia sp, {r0, r2}
|
|
ldrb r1, [r7, #0x61]
|
|
add r0, r7, #0x68
|
|
str r1, [sp, #8]
|
|
str r2, [sp, #0xc]
|
|
ldr r3, [r7, #0x54]
|
|
ldr r1, [r7, #0x50]
|
|
mov r3, r3, lsl #0x10
|
|
mov r3, r3, asr #0x10
|
|
bl SetAnimationForAnimationControl
|
|
ldrh r1, [r7, #0x6a]
|
|
add r0, r7, #0x68
|
|
orr r1, r1, #0x10
|
|
strh r1, [r7, #0x6a]
|
|
ldr r1, [r7, #0x4c]
|
|
and r1, r1, #0xff
|
|
bl sub_0201D0F8
|
|
cmp r5, #0
|
|
bne _022BE440
|
|
add r0, r7, #0x68
|
|
bl sub_0201C108
|
|
b _022BE440
|
|
_022BE3E4:
|
|
add r0, r7, #0xe8
|
|
bl sub_020640BC
|
|
ldrsh r1, [r7, #0xe4]
|
|
add r0, r7, #0xe8
|
|
bl sub_020640CC
|
|
cmp r6, #1
|
|
moveq r1, #1
|
|
movne r1, #0
|
|
add r0, r7, #0xe8
|
|
bl sub_020640DC
|
|
mov r0, #0
|
|
strb r0, [r7, #0x104]
|
|
b _022BE440
|
|
_022BE418:
|
|
add r0, r7, #0xe8
|
|
bl sub_020640BC
|
|
ldrsh r1, [r7, #0xe4]
|
|
add r0, r7, #0xe8
|
|
bl sub_020640CC
|
|
add r0, r7, #0xe8
|
|
mov r1, #2
|
|
bl sub_020640DC
|
|
mov r0, #0
|
|
strb r0, [r7, #0x104]
|
|
_022BE440:
|
|
add sp, sp, #0x10
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_022BE448: .word ov10_022DC1C0
|
|
arm_func_end ov10_022BDFC0
|
|
|
|
arm_func_start ov10_022BE44C
|
|
ov10_022BE44C: ; 0x022BE44C
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
mov sb, r1
|
|
mov sl, r0
|
|
ldr r0, [sb]
|
|
mov r8, r2
|
|
bl GetEffectAnimation
|
|
ldr r1, [sb]
|
|
mov r7, r0
|
|
cmp r1, #0
|
|
mvneq r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
ldr r1, [r7]
|
|
cmp r1, #2
|
|
bne _022BE4A0
|
|
ldr r0, _022BE72C ; =ov10_022DC1C0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x2000
|
|
ldr r0, [r0, #0x784]
|
|
cmp r0, #1
|
|
mvnne r0, #0
|
|
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_022BE4A0:
|
|
cmp r1, #1
|
|
bne _022BE4C4
|
|
ldr r0, _022BE72C ; =ov10_022DC1C0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x2000
|
|
ldr r0, [r0, #0x784]
|
|
cmp r0, #0
|
|
mvnne r0, #0
|
|
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_022BE4C4:
|
|
cmp r1, #3
|
|
bne _022BE53C
|
|
ldr r0, _022BE72C ; =ov10_022DC1C0
|
|
mov r5, #0
|
|
ldr r6, [r0]
|
|
mov fp, #1
|
|
mvn r4, #0
|
|
_022BE4E0:
|
|
ldr r0, [r6, #0xc]
|
|
cmp r0, r4
|
|
beq _022BE528
|
|
ldr r0, [r6, #8]
|
|
cmp r0, #3
|
|
bne _022BE528
|
|
ldr r0, [r6, #0x14]
|
|
ldr r1, [sb]
|
|
cmp r0, r1
|
|
beq _022BE528
|
|
bl GetEffectAnimation
|
|
ldr r1, [r0, #4]
|
|
ldr r0, [r7, #4]
|
|
cmp r1, r0
|
|
beq _022BE528
|
|
mov r0, r6
|
|
mov r1, fp
|
|
bl ov10_022BDEC4
|
|
_022BE528:
|
|
add r5, r5, #1
|
|
cmp r5, #0x20
|
|
add r6, r6, #0x13c
|
|
blt _022BE4E0
|
|
b _022BE59C
|
|
_022BE53C:
|
|
cmp r1, #4
|
|
bne _022BE59C
|
|
ldr r0, _022BE72C ; =ov10_022DC1C0
|
|
mov r5, #0
|
|
ldr r4, [r0]
|
|
mov r7, #1
|
|
mvn r6, #0
|
|
_022BE558:
|
|
ldr r0, [r4, #0xc]
|
|
cmp r0, r6
|
|
beq _022BE58C
|
|
ldr r0, [r4, #8]
|
|
cmp r0, #4
|
|
bne _022BE58C
|
|
ldr r1, [r4, #0x14]
|
|
ldr r0, [sb]
|
|
cmp r1, r0
|
|
beq _022BE58C
|
|
mov r0, r4
|
|
mov r1, r7
|
|
bl ov10_022BDEC4
|
|
_022BE58C:
|
|
add r5, r5, #1
|
|
cmp r5, #0x20
|
|
add r4, r4, #0x13c
|
|
blt _022BE558
|
|
_022BE59C:
|
|
ldr r0, _022BE72C ; =ov10_022DC1C0
|
|
mov r2, #0
|
|
ldr r5, [r0]
|
|
mvn r0, #0
|
|
b _022BE71C
|
|
_022BE5B0:
|
|
ldr r1, [r5, #0xc]
|
|
cmp r1, r0
|
|
bne _022BE714
|
|
mov r0, r5
|
|
mov r1, #0x13c
|
|
bl MemZero
|
|
mov r0, #0
|
|
strh r0, [r5, #0x64]
|
|
str r8, [r5]
|
|
ldr r0, [sb]
|
|
bl GetEffectAnimation
|
|
mov r4, r0
|
|
ldr r0, [r4]
|
|
cmp r0, #5
|
|
bne _022BE618
|
|
ldr r1, [r4, #4]
|
|
bl ov10_022C0450
|
|
strh r0, [r5, #0xe4]
|
|
ldrsh r0, [r5, #0xe4]
|
|
cmp r0, #0
|
|
mvneq r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
mov r3, r8
|
|
ldmia r4, {r1, r2}
|
|
bl ov10_022C01FC
|
|
b _022BE6B8
|
|
_022BE618:
|
|
cmp r0, #6
|
|
bne _022BE64C
|
|
ldr r1, [r4, #4]
|
|
bl ov10_022C0450
|
|
strh r0, [r5, #0xe4]
|
|
ldrsh r0, [r5, #0xe4]
|
|
cmp r0, #0
|
|
mvneq r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
mov r3, r8
|
|
ldmia r4, {r1, r2}
|
|
bl ov10_022C0280
|
|
b _022BE6B8
|
|
_022BE64C:
|
|
sub r1, r0, #1
|
|
cmp r1, #1
|
|
ldrls r0, _022BE72C ; =ov10_022DC1C0
|
|
ldrls r0, [r0]
|
|
addls r0, r0, #0x2700
|
|
ldrlssh r0, [r0, #0x88]
|
|
bls _022BE670
|
|
ldr r1, [r4, #4]
|
|
bl ov10_022C03F4
|
|
_022BE670:
|
|
strh r0, [r5, #0x64]
|
|
ldrsh r0, [r5, #0x64]
|
|
cmp r0, #0
|
|
mvneq r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
ldr r1, [r4]
|
|
sub r1, r1, #3
|
|
cmp r1, #1
|
|
bhi _022BE6B8
|
|
mov r1, #0
|
|
str r1, [sp]
|
|
ldr r2, _022BE72C ; =ov10_022DC1C0
|
|
ldr r1, [r4]
|
|
ldr r3, [r2]
|
|
ldr r2, [r4, #4]
|
|
add r3, r3, #0x2000
|
|
ldr r3, [r3, #0x794]
|
|
bl ov10_022C0114
|
|
_022BE6B8:
|
|
ldr r1, [r4]
|
|
ldr r0, _022BE72C ; =ov10_022DC1C0
|
|
str r1, [r5, #8]
|
|
str sl, [r5, #4]
|
|
ldr r0, [r0]
|
|
add r6, r5, #0x14
|
|
add r0, r0, #0x2000
|
|
ldr r1, [r0, #0x780]
|
|
mov r4, #2
|
|
mov r2, r1
|
|
add r1, r1, #1
|
|
str r1, [r0, #0x780]
|
|
str r2, [r5, #0xc]
|
|
_022BE6EC:
|
|
ldmia sb!, {r0, r1, r2, r3}
|
|
stmia r6!, {r0, r1, r2, r3}
|
|
subs r4, r4, #1
|
|
bne _022BE6EC
|
|
ldmia sb, {r0, r1, r2}
|
|
stmia r6, {r0, r1, r2}
|
|
ldr r0, [r5, #0xc]
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_022BE714:
|
|
add r2, r2, #1
|
|
add r5, r5, #0x13c
|
|
_022BE71C:
|
|
cmp r2, #0x20
|
|
blt _022BE5B0
|
|
mvn r0, #0
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_022BE72C: .word ov10_022DC1C0
|
|
arm_func_end ov10_022BE44C
|
|
|
|
arm_func_start ov10_022BE730
|
|
ov10_022BE730: ; 0x022BE730
|
|
stmdb sp!, {r4, lr}
|
|
bl ov10_022BE44C
|
|
mov r4, r0
|
|
mvn r0, #0
|
|
cmp r4, r0
|
|
ldmeqia sp!, {r4, pc}
|
|
mov r0, r4, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
bl ov10_022BE9A0
|
|
mov r1, #0x13c
|
|
ldr r2, _022BE77C ; =ov10_022DC1C0
|
|
mul r3, r0, r1
|
|
ldr r0, [r2]
|
|
ldr r1, [r0, r3]
|
|
add r0, r0, r3
|
|
bl ov10_022BDFC0
|
|
mov r0, r4, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_022BE77C: .word ov10_022DC1C0
|
|
arm_func_end ov10_022BE730
|
|
|
|
arm_func_start ov10_022BE780
|
|
ov10_022BE780: ; 0x022BE780
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x5c
|
|
ldr r3, _022BE998 ; =ov10_022DC1C0
|
|
mov sl, r0
|
|
ldr r0, [r3]
|
|
mov sb, r1
|
|
add r0, r0, #0x2000
|
|
ldr r0, [r0, #0x784]
|
|
mov r8, r2
|
|
cmp r0, #0
|
|
bne _022BE980
|
|
bl sub_02001808
|
|
mov r4, r0
|
|
ldr r0, [sb]
|
|
bl GetEffectAnimation
|
|
ldr r1, _022BE998 ; =ov10_022DC1C0
|
|
mov r5, r0
|
|
ldr r0, [r1]
|
|
ldr r1, [sb]
|
|
add r0, r0, #0x2000
|
|
ldrb r0, [r0, #0x7a0]
|
|
cmp r0, #0
|
|
beq _022BE800
|
|
cmp r1, #0xef
|
|
cmpne r1, #0x14c
|
|
ldrne r0, _022BE99C ; =0x00000287
|
|
cmpne r1, r0
|
|
subne r0, r0, #0x13c
|
|
cmpne r1, r0
|
|
bne _022BE830
|
|
mvn r0, #0
|
|
b _022BE990
|
|
_022BE800:
|
|
cmp r1, #0xef
|
|
cmpne r1, #0x14c
|
|
ldrne r0, _022BE99C ; =0x00000287
|
|
cmpne r1, r0
|
|
subne r0, r0, #0x13c
|
|
cmpne r1, r0
|
|
bne _022BE830
|
|
mov r0, #0x10c00
|
|
bl ov10_022BFE6C
|
|
cmp r0, #0
|
|
mvnne r0, #0
|
|
bne _022BE990
|
|
_022BE830:
|
|
ldr r0, [r5]
|
|
cmp r0, #5
|
|
bne _022BE8A0
|
|
ldr r1, [r5, #4]
|
|
mov r0, #3
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, asr #0x10
|
|
add r1, r1, #0x10c
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, lsr #0x10
|
|
bl DirectoryFileMngr_GetDirectoryFileSize
|
|
cmp r4, r0
|
|
bge _022BE980
|
|
add r5, sp, #0x30
|
|
mov r4, #2
|
|
_022BE86C:
|
|
ldmia sb!, {r0, r1, r2, r3}
|
|
stmia r5!, {r0, r1, r2, r3}
|
|
subs r4, r4, #1
|
|
bne _022BE86C
|
|
ldmia sb, {r0, r1, r2}
|
|
stmia r5, {r0, r1, r2}
|
|
mov r3, #8
|
|
add r1, sp, #0x30
|
|
mov r0, sl
|
|
mov r2, r8
|
|
str r3, [sp, #0x30]
|
|
bl ov10_022BE730
|
|
b _022BE990
|
|
_022BE8A0:
|
|
cmp r0, #3
|
|
bne _022BE980
|
|
ldr r0, _022BE998 ; =ov10_022DC1C0
|
|
mov fp, #0
|
|
ldr r6, [r0]
|
|
mvn r0, #0
|
|
mov r7, fp
|
|
str r0, [sp]
|
|
b _022BE910
|
|
_022BE8C4:
|
|
ldr r1, [r6, #0xc]
|
|
ldr r0, [sp]
|
|
cmp r1, r0
|
|
beq _022BE908
|
|
ldr r0, [r6, #8]
|
|
cmp r0, #3
|
|
bne _022BE908
|
|
ldr r0, [r6, #0x14]
|
|
ldr r1, [sb]
|
|
cmp r0, r1
|
|
beq _022BE908
|
|
bl GetEffectAnimation
|
|
ldr r1, [r5, #4]
|
|
ldr r0, [r0, #4]
|
|
cmp r1, r0
|
|
moveq fp, #1
|
|
beq _022BE918
|
|
_022BE908:
|
|
add r7, r7, #1
|
|
add r6, r6, #0x13c
|
|
_022BE910:
|
|
cmp r7, #0x20
|
|
blt _022BE8C4
|
|
_022BE918:
|
|
cmp fp, #0
|
|
bne _022BE980
|
|
ldr r1, [r5, #4]
|
|
mov r0, #3
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, asr #0x10
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, lsr #0x10
|
|
bl DirectoryFileMngr_GetDirectoryFileSize
|
|
cmp r4, r0
|
|
bge _022BE980
|
|
add r5, sp, #4
|
|
mov r4, #2
|
|
_022BE94C:
|
|
ldmia sb!, {r0, r1, r2, r3}
|
|
stmia r5!, {r0, r1, r2, r3}
|
|
subs r4, r4, #1
|
|
bne _022BE94C
|
|
ldmia sb, {r0, r1, r2}
|
|
stmia r5, {r0, r1, r2}
|
|
mov r3, #8
|
|
add r1, sp, #4
|
|
mov r0, sl
|
|
mov r2, r8
|
|
str r3, [sp, #4]
|
|
bl ov10_022BE730
|
|
b _022BE990
|
|
_022BE980:
|
|
mov r0, sl
|
|
mov r1, sb
|
|
mov r2, r8
|
|
bl ov10_022BE730
|
|
_022BE990:
|
|
add sp, sp, #0x5c
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_022BE998: .word ov10_022DC1C0
|
|
_022BE99C: .word 0x00000287
|
|
arm_func_end ov10_022BE780
|
|
|
|
arm_func_start ov10_022BE9A0
|
|
ov10_022BE9A0: ; 0x022BE9A0
|
|
mvn r1, #0
|
|
cmp r0, r1
|
|
beq _022BE9DC
|
|
ldr r1, _022BE9E4 ; =ov10_022DC1C0
|
|
mov r2, #0
|
|
ldr r3, [r1]
|
|
b _022BE9D4
|
|
_022BE9BC:
|
|
ldr r1, [r3, #0xc]
|
|
cmp r1, r0
|
|
moveq r0, r2
|
|
bxeq lr
|
|
add r2, r2, #1
|
|
add r3, r3, #0x13c
|
|
_022BE9D4:
|
|
cmp r2, #0x20
|
|
blt _022BE9BC
|
|
_022BE9DC:
|
|
mvn r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_022BE9E4: .word ov10_022DC1C0
|
|
arm_func_end ov10_022BE9A0
|
|
|
|
arm_func_start ov10_022BE9E8
|
|
ov10_022BE9E8: ; 0x022BE9E8
|
|
stmdb sp!, {r3, r4, r5, r6, lr}
|
|
sub sp, sp, #0x2c
|
|
ldr lr, _022BEB20 ; =ov10_022C78D0
|
|
add ip, sp, #0
|
|
mov r6, r0
|
|
mov r5, r1
|
|
mov r4, #2
|
|
_022BEA04:
|
|
ldmia lr!, {r0, r1, r2, r3}
|
|
stmia ip!, {r0, r1, r2, r3}
|
|
subs r4, r4, #1
|
|
bne _022BEA04
|
|
ldmia lr, {r0, r1, r2}
|
|
stmia ip, {r0, r1, r2}
|
|
ldrh r0, [r6]
|
|
bl GetMoveAnimation
|
|
ldrsh r0, [r0, #6]
|
|
str r0, [sp]
|
|
ldr r0, [r6, #0x10]
|
|
str r0, [sp, #4]
|
|
ldr r0, [r6, #0xc]
|
|
str r0, [sp, #8]
|
|
ldrh r0, [r6, #4]
|
|
strh r0, [sp, #0xc]
|
|
ldrh r0, [r6, #6]
|
|
strh r0, [sp, #0xe]
|
|
ldrh r0, [r6, #8]
|
|
strh r0, [sp, #0x10]
|
|
ldrh r0, [r6, #0xa]
|
|
strh r0, [sp, #0x12]
|
|
ldrsh r0, [r6, #2]
|
|
ldrh r1, [r6]
|
|
bl ov10_022BF088
|
|
ldr r3, _022BEB24 ; =ov10_022C7884
|
|
add r2, sp, #0x1c
|
|
strb r0, [sp, #0x14]
|
|
mov r1, #6
|
|
_022BEA78:
|
|
ldrh r0, [r3], #2
|
|
subs r1, r1, #1
|
|
strh r0, [r2], #2
|
|
bne _022BEA78
|
|
add r1, sp, #0
|
|
mov r0, #2
|
|
mov r2, #0
|
|
bl ov10_022BE780
|
|
mov r4, r0
|
|
mvn r0, #0
|
|
cmp r4, r0
|
|
beq _022BEB18
|
|
mov r0, r4, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
bl ov10_022BE9A0
|
|
mvn r1, #0
|
|
cmp r0, r1
|
|
moveq r0, r1
|
|
beq _022BEB18
|
|
ldr r2, _022BEB28 ; =ov10_022DC1C0
|
|
mov r1, #0x13c
|
|
ldr r3, [r2]
|
|
ldrh r2, [r6, #4]
|
|
mla r3, r0, r1, r3
|
|
add r1, r3, #0x100
|
|
strh r2, [r1, #0x28]
|
|
ldrh r2, [r6, #6]
|
|
mov r0, r4, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
strh r2, [r1, #0x2a]
|
|
ldrh r2, [r5]
|
|
strh r2, [r1, #0x2c]
|
|
ldrh r2, [r5, #2]
|
|
strh r2, [r1, #0x2e]
|
|
ldrsh r2, [r6, #2]
|
|
strh r2, [r1, #0x30]
|
|
ldrh r2, [r3, #0x24]
|
|
strh r2, [r1, #0x32]
|
|
ldrh r2, [r3, #0x26]
|
|
strh r2, [r1, #0x34]
|
|
_022BEB18:
|
|
add sp, sp, #0x2c
|
|
ldmia sp!, {r3, r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_022BEB20: .word ov10_022C78D0
|
|
_022BEB24: .word ov10_022C7884
|
|
_022BEB28: .word ov10_022DC1C0
|
|
arm_func_end ov10_022BE9E8
|
|
|
|
arm_func_start ov10_022BEB2C
|
|
ov10_022BEB2C: ; 0x022BEB2C
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r1
|
|
mov r5, r2
|
|
bl ov10_022BE9A0
|
|
mvn r1, #0
|
|
cmp r0, r1
|
|
ldmeqia sp!, {r4, r5, r6, pc}
|
|
ldr r2, _022BEC04 ; =ov10_022DC1C0
|
|
mov r1, #0x13c
|
|
ldr r3, [r2]
|
|
ldrh r2, [r6]
|
|
mla r4, r0, r1, r3
|
|
strh r2, [r4, #0x20]
|
|
ldrh r1, [r6, #2]
|
|
add r0, r4, #0x100
|
|
strh r1, [r4, #0x22]
|
|
ldrsh r1, [r0, #0x2e]
|
|
ldrsh r0, [r0, #0x2a]
|
|
sub r0, r1, r0
|
|
bl abs
|
|
add r1, r4, #0x100
|
|
ldrsh r2, [r1, #0x2c]
|
|
ldrsh r1, [r1, #0x28]
|
|
mov r6, r0
|
|
sub r0, r2, r1
|
|
bl abs
|
|
cmp r0, r6
|
|
movle r0, r6
|
|
mov r1, r0, asr #1
|
|
add r0, r0, r1, lsr #30
|
|
ldrsh r2, [r4, #0x26]
|
|
mov r0, r0, asr #2
|
|
sub r6, r0, #1
|
|
add r1, r2, #9
|
|
strh r1, [r4, #0x26]
|
|
ldrsh r1, [r4, #0x24]
|
|
mul r0, r1, r6
|
|
strh r0, [r4, #0x24]
|
|
ldrsh r0, [r4, #0x26]
|
|
add r1, r6, #1
|
|
mul r2, r0, r6
|
|
strh r2, [r4, #0x26]
|
|
ldrsh r0, [r4, #0x24]
|
|
bl _s32_div_f
|
|
strh r0, [r4, #0x24]
|
|
ldrsh r0, [r4, #0x26]
|
|
add r1, r6, #1
|
|
bl _s32_div_f
|
|
strh r0, [r4, #0x26]
|
|
ldrsh r0, [r4, #0x26]
|
|
sub r0, r0, #9
|
|
strh r0, [r4, #0x26]
|
|
str r5, [r4, #0x2c]
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_022BEC04: .word ov10_022DC1C0
|
|
arm_func_end ov10_022BEB2C
|
|
|
|
arm_func_start ov10_022BEC08
|
|
ov10_022BEC08: ; 0x022BEC08
|
|
stmdb sp!, {r3, r4, r5, r6, lr}
|
|
sub sp, sp, #0x2c
|
|
ldr r4, _022BEC8C ; =ov10_022C78FC
|
|
add lr, sp, #0
|
|
mov r6, r0
|
|
mov r5, r1
|
|
mov ip, #2
|
|
_022BEC24:
|
|
ldmia r4!, {r0, r1, r2, r3}
|
|
stmia lr!, {r0, r1, r2, r3}
|
|
subs ip, ip, #1
|
|
bne _022BEC24
|
|
ldmia r4, {r0, r1, r2}
|
|
stmia lr, {r0, r1, r2}
|
|
mov r0, r6
|
|
bl GetTrapAnimation
|
|
str r0, [sp]
|
|
ldrh r0, [r5]
|
|
ldr r3, _022BEC90 ; =ov10_022C7884
|
|
add r2, sp, #0x1c
|
|
strh r0, [sp, #0xc]
|
|
ldrh r0, [r5, #2]
|
|
mov r1, #6
|
|
strh r0, [sp, #0xe]
|
|
_022BEC64:
|
|
ldrh r0, [r3], #2
|
|
subs r1, r1, #1
|
|
strh r0, [r2], #2
|
|
bne _022BEC64
|
|
add r1, sp, #0
|
|
mov r0, #3
|
|
mov r2, #0
|
|
bl ov10_022BE780
|
|
add sp, sp, #0x2c
|
|
ldmia sp!, {r3, r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_022BEC8C: .word ov10_022C78FC
|
|
_022BEC90: .word ov10_022C7884
|
|
arm_func_end ov10_022BEC08
|
|
|
|
arm_func_start ov10_022BEC94
|
|
ov10_022BEC94: ; 0x022BEC94
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
|
|
sub sp, sp, #0x2c
|
|
movs r5, r3
|
|
mov r7, r1
|
|
mov r6, r2
|
|
beq _022BECB4
|
|
bl GetItemAnimation1
|
|
b _022BECB8
|
|
_022BECB4:
|
|
bl GetItemAnimation2
|
|
_022BECB8:
|
|
mov r4, r0
|
|
mov r0, r4
|
|
bl GetEffectAnimation
|
|
ldrsb ip, [r0, #0x19]
|
|
ldr sb, _022BED88 ; =ov10_022C7928
|
|
add r8, sp, #0
|
|
mov lr, #2
|
|
_022BECD4:
|
|
ldmia sb!, {r0, r1, r2, r3}
|
|
stmia r8!, {r0, r1, r2, r3}
|
|
subs lr, lr, #1
|
|
bne _022BECD4
|
|
ldmia sb, {r0, r1, r2}
|
|
stmia r8, {r0, r1, r2}
|
|
str r4, [sp]
|
|
ldrh r0, [r7]
|
|
ldr r3, _022BED8C ; =ov10_022C7884
|
|
add r2, sp, #0x1c
|
|
strh r0, [sp, #0xc]
|
|
ldrh r0, [r7, #2]
|
|
mov r1, #6
|
|
strh r0, [sp, #0xe]
|
|
_022BED0C:
|
|
ldrh r0, [r3], #2
|
|
subs r1, r1, #1
|
|
strh r0, [r2], #2
|
|
bne _022BED0C
|
|
ldr r0, [sp, #0x48]
|
|
cmp r5, #0
|
|
str r0, [sp, #0x18]
|
|
beq _022BED58
|
|
mvn r0, #0
|
|
cmp ip, r0
|
|
beq _022BED70
|
|
strb ip, [sp, #0x14]
|
|
mov r0, ip, lsl #2
|
|
ldrh r0, [r6, r0]
|
|
add r1, r6, ip, lsl #2
|
|
strh r0, [sp, #0x10]
|
|
ldrh r0, [r1, #2]
|
|
strh r0, [sp, #0x12]
|
|
b _022BED70
|
|
_022BED58:
|
|
mov r0, #3
|
|
strb r0, [sp, #0x14]
|
|
ldrh r0, [r6, #0xc]
|
|
strh r0, [sp, #0x10]
|
|
ldrh r0, [r6, #0xe]
|
|
strh r0, [sp, #0x12]
|
|
_022BED70:
|
|
add r1, sp, #0
|
|
mov r0, #4
|
|
mov r2, #0
|
|
bl ov10_022BE780
|
|
add sp, sp, #0x2c
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
_022BED88: .word ov10_022C7928
|
|
_022BED8C: .word ov10_022C7884
|
|
arm_func_end ov10_022BEC94
|
|
|
|
arm_func_start ov10_022BED90
|
|
ov10_022BED90: ; 0x022BED90
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
sub sp, sp, #0x1b8
|
|
mov sb, r0
|
|
ldrh r0, [sb]
|
|
cmp r0, #0x52
|
|
bne _022BEF1C
|
|
ldr r3, _022BEFC4 ; =ov10_022C78B0
|
|
add r2, sp, #0x38
|
|
mov r1, #0x10
|
|
_022BEDB4:
|
|
ldrh r0, [r3], #2
|
|
subs r1, r1, #1
|
|
strh r0, [r2], #2
|
|
bne _022BEDB4
|
|
mov r7, #0
|
|
ldr r3, _022BEFC8 ; =ov10_022C7884
|
|
add r2, sp, #0
|
|
mov r6, r7
|
|
mov r1, #6
|
|
_022BEDD8:
|
|
ldrh r0, [r3], #2
|
|
subs r1, r1, #1
|
|
strh r0, [r2], #2
|
|
bne _022BEDD8
|
|
_022BEDE8:
|
|
mov r0, #0x2c
|
|
mul r4, r6, r0
|
|
add r5, sp, #0x58
|
|
add r8, r5, r4
|
|
mov r0, r8
|
|
bl ov10_022BF274
|
|
ldrh r0, [sb]
|
|
bl GetMoveAnimation
|
|
ldrsh r0, [r0, #2]
|
|
add r1, sp, #0x38
|
|
mov r2, r6, lsl #2
|
|
str r0, [r5, r4]
|
|
ldr r3, [sb, #0x10]
|
|
add r0, r1, r6, lsl #2
|
|
str r3, [r8, #4]
|
|
ldr r3, [sb, #0xc]
|
|
ldrsh r1, [r1, r2]
|
|
str r3, [r8, #8]
|
|
ldrh r3, [sb, #4]
|
|
ldrsh r0, [r0, #2]
|
|
strh r3, [r8, #0xc]
|
|
ldrh r2, [sb, #6]
|
|
sub r0, r0, #0x40
|
|
strh r2, [r8, #0xe]
|
|
ldrsh r2, [r8, #0xe]
|
|
add r2, r2, #0x40
|
|
strh r2, [r8, #0xe]
|
|
ldrh r2, [sb, #8]
|
|
strh r2, [r8, #0x10]
|
|
ldrh r2, [sb, #0xa]
|
|
strh r2, [r8, #0x12]
|
|
ldrsh r2, [r8, #0x10]
|
|
add r1, r2, r1
|
|
strh r1, [r8, #0x10]
|
|
ldrsh r1, [r8, #0x12]
|
|
add r0, r1, r0
|
|
strh r0, [r8, #0x12]
|
|
ldrsh r0, [sb, #2]
|
|
ldrh r1, [sb]
|
|
bl ov10_022BF088
|
|
ldr r1, _022BEFCC ; =0x0000FFFF
|
|
strb r0, [r8, #0x14]
|
|
str r1, [r8, #0x18]
|
|
add r3, sp, #0
|
|
add r2, r8, #0x1c
|
|
mov r1, #6
|
|
_022BEEA0:
|
|
ldrh r0, [r3], #2
|
|
subs r1, r1, #1
|
|
strh r0, [r2], #2
|
|
bne _022BEEA0
|
|
mov r2, #0
|
|
mov r1, r8
|
|
mov r0, #1
|
|
str r2, [r8, #0x28]
|
|
bl ov10_022BE780
|
|
mov r4, r0
|
|
mov r0, r4, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
bl ov10_022BE9A0
|
|
mvn r1, #0
|
|
cmp r0, r1
|
|
beq _022BEEFC
|
|
ldr r2, _022BEFD0 ; =ov10_022DC1C0
|
|
mov r1, #0x13c
|
|
ldr r2, [r2]
|
|
mov r3, #6
|
|
mla r1, r0, r1, r2
|
|
add r0, r1, #0x100
|
|
strh r3, [r0, #0x36]
|
|
_022BEEFC:
|
|
cmp r6, #0
|
|
add r6, r6, #1
|
|
moveq r7, r4
|
|
cmp r6, #8
|
|
blt _022BEDE8
|
|
mov r0, r7, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
b _022BEFBC
|
|
_022BEF1C:
|
|
ldr r6, _022BEFD4 ; =ov10_022C7954
|
|
add r5, sp, #0xc
|
|
mov r4, #2
|
|
_022BEF28:
|
|
ldmia r6!, {r0, r1, r2, r3}
|
|
stmia r5!, {r0, r1, r2, r3}
|
|
subs r4, r4, #1
|
|
bne _022BEF28
|
|
ldmia r6, {r0, r1, r2}
|
|
stmia r5, {r0, r1, r2}
|
|
ldrh r0, [sb]
|
|
bl GetMoveAnimation
|
|
ldrsh r0, [r0, #2]
|
|
str r0, [sp, #0xc]
|
|
ldr r0, [sb, #0x10]
|
|
str r0, [sp, #0x10]
|
|
ldr r0, [sb, #0xc]
|
|
str r0, [sp, #0x14]
|
|
ldrh r0, [sb, #4]
|
|
strh r0, [sp, #0x18]
|
|
ldrh r0, [sb, #6]
|
|
strh r0, [sp, #0x1a]
|
|
ldrh r0, [sb, #8]
|
|
strh r0, [sp, #0x1c]
|
|
ldrh r0, [sb, #0xa]
|
|
strh r0, [sp, #0x1e]
|
|
ldrsh r0, [sb, #2]
|
|
ldrh r1, [sb]
|
|
bl ov10_022BF088
|
|
ldr r3, _022BEFC8 ; =ov10_022C7884
|
|
add r2, sp, #0x28
|
|
strb r0, [sp, #0x20]
|
|
mov r1, #6
|
|
_022BEF9C:
|
|
ldrh r0, [r3], #2
|
|
subs r1, r1, #1
|
|
strh r0, [r2], #2
|
|
bne _022BEF9C
|
|
add r1, sp, #0xc
|
|
mov r0, #1
|
|
mov r2, #0
|
|
bl ov10_022BE780
|
|
_022BEFBC:
|
|
add sp, sp, #0x1b8
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
_022BEFC4: .word ov10_022C78B0
|
|
_022BEFC8: .word ov10_022C7884
|
|
_022BEFCC: .word 0x0000FFFF
|
|
_022BEFD0: .word ov10_022DC1C0
|
|
_022BEFD4: .word ov10_022C7954
|
|
arm_func_end ov10_022BED90
|
|
|
|
arm_func_start ov10_022BEFD8
|
|
ov10_022BEFD8: ; 0x022BEFD8
|
|
stmdb sp!, {r3, lr}
|
|
bl ov10_022BE9A0
|
|
mvn r1, #0
|
|
cmp r0, r1
|
|
beq _022BF000
|
|
ldr r2, _022BF008 ; =ov10_022DC1C0
|
|
mov r1, #0x13c
|
|
ldr r2, [r2]
|
|
mla r1, r0, r1, r2
|
|
ldrsb r1, [r1, #0x28]
|
|
_022BF000:
|
|
mov r0, r1
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_022BF008: .word ov10_022DC1C0
|
|
arm_func_end ov10_022BEFD8
|
|
|
|
arm_func_start ov10_022BF00C
|
|
ov10_022BF00C: ; 0x022BF00C
|
|
stmdb sp!, {r3, lr}
|
|
bl GetEffectAnimation
|
|
ldrsb r0, [r0, #0x19]
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end ov10_022BF00C
|
|
|
|
arm_func_start ov10_022BF01C
|
|
ov10_022BF01C: ; 0x022BF01C
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
mov r0, r1
|
|
bl GetMoveAnimation
|
|
mov r4, r0
|
|
ldrh r0, [r4, #0x16]
|
|
bl GetSpecialMonsterMoveAnimation
|
|
mov r5, r0
|
|
mov r0, r6
|
|
mov r1, #0x258
|
|
bl _s32_div_f
|
|
mov r1, r1, lsl #0x10
|
|
ldrsh r3, [r4, #0x14]
|
|
mov r2, #0
|
|
b _022BF078
|
|
_022BF058:
|
|
ldrsh r0, [r5]
|
|
cmp r0, r1, asr #16
|
|
ldreqsb r0, [r5, #3]
|
|
ldmeqia sp!, {r4, r5, r6, pc}
|
|
add r0, r2, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r2, r0, asr #0x10
|
|
add r5, r5, #6
|
|
_022BF078:
|
|
cmp r2, r3
|
|
blt _022BF058
|
|
ldrsb r0, [r4, #0x11]
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end ov10_022BF01C
|
|
|
|
arm_func_start ov10_022BF088
|
|
ov10_022BF088: ; 0x022BF088
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
mov r0, r1
|
|
bl GetMoveAnimation
|
|
mov r4, r0
|
|
ldrh r0, [r4, #0x16]
|
|
bl GetSpecialMonsterMoveAnimation
|
|
mov r5, r0
|
|
mov r0, r6
|
|
mov r1, #0x258
|
|
bl _s32_div_f
|
|
mov r1, r1, lsl #0x10
|
|
ldrsh r3, [r4, #0x14]
|
|
mov r2, #0
|
|
b _022BF0E4
|
|
_022BF0C4:
|
|
ldrsh r0, [r5]
|
|
cmp r0, r1, asr #16
|
|
ldreqsb r0, [r5, #3]
|
|
ldmeqia sp!, {r4, r5, r6, pc}
|
|
add r0, r2, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r2, r0, asr #0x10
|
|
add r5, r5, #6
|
|
_022BF0E4:
|
|
cmp r2, r3
|
|
blt _022BF0C4
|
|
ldrsb r0, [r4, #0x11]
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end ov10_022BF088
|
|
|
|
arm_func_start ov10_022BF0F4
|
|
ov10_022BF0F4: ; 0x022BF0F4
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
mov r0, r1
|
|
bl GetMoveAnimation
|
|
mov r4, r0
|
|
ldrh r0, [r4, #0x16]
|
|
bl GetSpecialMonsterMoveAnimation
|
|
mov r5, r0
|
|
mov r0, r6
|
|
mov r1, #0x258
|
|
bl _s32_div_f
|
|
mov r1, r1, lsl #0x10
|
|
ldrsh r3, [r4, #0x14]
|
|
mov r2, #0
|
|
b _022BF150
|
|
_022BF130:
|
|
ldrsh r0, [r5]
|
|
cmp r0, r1, asr #16
|
|
ldreqsh r0, [r5, #4]
|
|
ldmeqia sp!, {r4, r5, r6, pc}
|
|
add r0, r2, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r2, r0, asr #0x10
|
|
add r5, r5, #6
|
|
_022BF150:
|
|
cmp r2, r3
|
|
blt _022BF130
|
|
ldrh r0, [r4, #0x12]
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end ov10_022BF0F4
|
|
|
|
arm_func_start ov10_022BF160
|
|
ov10_022BF160: ; 0x022BF160
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
sub sp, sp, #0x10
|
|
mov r5, r0
|
|
ldrh r0, [r5]
|
|
mov r4, #0
|
|
bl GetMoveAnimation
|
|
ldrsh r1, [r0]
|
|
ldrh r0, [r5]
|
|
str r1, [sp]
|
|
bl GetMoveAnimation
|
|
ldrsh r1, [r0, #2]
|
|
ldrh r0, [r5]
|
|
str r1, [sp, #4]
|
|
bl GetMoveAnimation
|
|
ldrsh r1, [r0, #4]
|
|
ldrh r0, [r5]
|
|
str r1, [sp, #8]
|
|
bl GetMoveAnimation
|
|
ldrsh r0, [r0, #6]
|
|
mov r8, r4
|
|
add r7, sp, #0
|
|
str r0, [sp, #0xc]
|
|
mov r5, r4
|
|
mov r6, #1
|
|
b _022BF1E8
|
|
_022BF1C4:
|
|
ldr r0, [r7, r8, lsl #2]
|
|
bl GetEffectAnimation
|
|
ldr r0, [r0]
|
|
cmp r0, #5
|
|
moveq r0, r6
|
|
movne r0, r5
|
|
ands r4, r0, #0xff
|
|
bne _022BF1F0
|
|
add r8, r8, #1
|
|
_022BF1E8:
|
|
cmp r8, #4
|
|
blt _022BF1C4
|
|
_022BF1F0:
|
|
mov r0, r4
|
|
add sp, sp, #0x10
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
arm_func_end ov10_022BF160
|
|
|
|
arm_func_start ov10_022BF1FC
|
|
ov10_022BF1FC: ; 0x022BF1FC
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
sub sp, sp, #0x10
|
|
mov r5, r0
|
|
ldrh r0, [r5]
|
|
mov r4, r1
|
|
bl GetMoveAnimation
|
|
ldrsh r1, [r0]
|
|
ldrh r0, [r5]
|
|
str r1, [sp]
|
|
bl GetMoveAnimation
|
|
ldrsh r1, [r0, #2]
|
|
ldrh r0, [r5]
|
|
str r1, [sp, #4]
|
|
bl GetMoveAnimation
|
|
ldrsh r1, [r0, #4]
|
|
ldrh r0, [r5]
|
|
str r1, [sp, #8]
|
|
bl GetMoveAnimation
|
|
ldrsh r1, [r0, #6]
|
|
add r0, sp, #0
|
|
str r1, [sp, #0xc]
|
|
ldr r0, [r0, r4, lsl #2]
|
|
bl GetEffectAnimation
|
|
ldr r0, [r0]
|
|
cmp r0, #5
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
and r0, r0, #0xff
|
|
add sp, sp, #0x10
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end ov10_022BF1FC
|
|
|
|
arm_func_start ov10_022BF274
|
|
ov10_022BF274: ; 0x022BF274
|
|
stmdb sp!, {r4, lr}
|
|
mov r1, #0x2c
|
|
mov r4, r0
|
|
bl MemZero
|
|
mvn r0, #0
|
|
strb r0, [r4, #0x14]
|
|
add r0, r0, #0x10000
|
|
str r0, [r4, #0x18]
|
|
strh r0, [r4, #0x1c]
|
|
strh r0, [r4, #0x1e]
|
|
strh r0, [r4, #0x20]
|
|
mov r0, #0
|
|
strh r0, [r4, #0x22]
|
|
strh r0, [r4, #0x24]
|
|
strh r0, [r4, #0x26]
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end ov10_022BF274
|
|
|
|
arm_func_start ov10_022BF2B4
|
|
ov10_022BF2B4: ; 0x022BF2B4
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
ldr r0, [r5]
|
|
mov r4, r1
|
|
bl GetEffectAnimation
|
|
ldrsb r3, [r0, #0x19]
|
|
mov r1, r5
|
|
mov r2, r4
|
|
mov r0, #7
|
|
strb r3, [r5, #0x14]
|
|
bl ov10_022BE780
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end ov10_022BF2B4
|
|
|
|
arm_func_start ov10_022BF2E4
|
|
ov10_022BF2E4: ; 0x022BF2E4
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
ldr r0, [r5]
|
|
mov r4, r1
|
|
bl GetEffectAnimation
|
|
ldrsb r3, [r0, #0x19]
|
|
mov r1, r5
|
|
mov r2, r4
|
|
mov r0, #7
|
|
strb r3, [r5, #0x14]
|
|
bl ov10_022BE44C
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end ov10_022BF2E4
|
|
|
|
arm_func_start ov10_022BF314
|
|
ov10_022BF314: ; 0x022BF314
|
|
stmdb sp!, {r3, lr}
|
|
mvn r1, #0
|
|
cmp r0, r1
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
bl ov10_022BE9A0
|
|
ldr r2, _022BF358 ; =ov10_022DC1C0
|
|
mov r1, #0x13c
|
|
ldr r2, [r2]
|
|
mla r0, r1, r0, r2
|
|
ldr r1, [r0, #4]
|
|
cmp r1, #0
|
|
ldrne r2, [r0, #0xc]
|
|
mvnne r1, #0
|
|
cmpne r2, r1
|
|
moveq r0, #0
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_022BF358: .word ov10_022DC1C0
|
|
arm_func_end ov10_022BF314
|
|
|
|
arm_func_start ov10_022BF35C
|
|
ov10_022BF35C: ; 0x022BF35C
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl ov10_022BF314
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r4, pc}
|
|
ldrb r1, [r0, #0x13a]
|
|
cmp r1, #0
|
|
beq _022BF388
|
|
mov r0, r4
|
|
bl ov10_022BF3EC
|
|
ldmia sp!, {r4, pc}
|
|
_022BF388:
|
|
ldr r1, [r0]
|
|
bl ov10_022BDFC0
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end ov10_022BF35C
|
|
|
|
arm_func_start ov10_022BF394
|
|
ov10_022BF394: ; 0x022BF394
|
|
stmdb sp!, {r4, lr}
|
|
bl ov10_022BF314
|
|
movs r4, r0
|
|
ldmeqia sp!, {r4, pc}
|
|
mov r0, #1
|
|
strb r0, [r4, #0x13a]
|
|
ldr r0, [r4, #0x40]
|
|
bl ov10_022BFE54
|
|
cmp r0, #0
|
|
beq _022BF3CC
|
|
add r0, r4, #0xe8
|
|
mov r1, #1
|
|
bl sub_020640D4
|
|
ldmia sp!, {r4, pc}
|
|
_022BF3CC:
|
|
ldr r0, [r4, #0x40]
|
|
bl ov10_022BFE3C
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r4, pc}
|
|
add r0, r4, #0x68
|
|
mov r1, #1
|
|
bl sub_0201D198
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end ov10_022BF394
|
|
|
|
arm_func_start ov10_022BF3EC
|
|
ov10_022BF3EC: ; 0x022BF3EC
|
|
stmdb sp!, {r4, lr}
|
|
bl ov10_022BF314
|
|
movs r4, r0
|
|
ldmeqia sp!, {r4, pc}
|
|
mov r0, #0
|
|
strb r0, [r4, #0x13a]
|
|
ldr r0, [r4, #0x40]
|
|
bl ov10_022BFE54
|
|
cmp r0, #0
|
|
beq _022BF424
|
|
add r0, r4, #0xe8
|
|
mov r1, #0
|
|
bl sub_020640D4
|
|
ldmia sp!, {r4, pc}
|
|
_022BF424:
|
|
ldr r0, [r4, #0x40]
|
|
bl ov10_022BFE3C
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r4, pc}
|
|
add r0, r4, #0x68
|
|
mov r1, #0
|
|
bl sub_0201D198
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end ov10_022BF3EC
|
|
|
|
arm_func_start ov10_022BF444
|
|
ov10_022BF444: ; 0x022BF444
|
|
stmdb sp!, {r3, lr}
|
|
bl ov10_022BF314
|
|
cmp r0, #0
|
|
ldrneb r0, [r0, #0x13a]
|
|
moveq r0, #0
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end ov10_022BF444
|
|
|
|
arm_func_start ov10_022BF45C
|
|
ov10_022BF45C: ; 0x022BF45C
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r1
|
|
mov r5, r2
|
|
mov r4, r3
|
|
bl ov10_022BE9A0
|
|
mvn r1, #0
|
|
cmp r0, r1
|
|
ldmeqia sp!, {r4, r5, r6, pc}
|
|
ldr r2, _022BF4E8 ; =ov10_022DC1C0
|
|
mov r1, #0x13c
|
|
ldr r2, [r2]
|
|
cmp r6, #0
|
|
mla r1, r0, r1, r2
|
|
ldrneh r0, [r6]
|
|
ldr r3, [sp, #0x10]
|
|
strneh r0, [r1, #0x20]
|
|
ldrneh r0, [r6, #2]
|
|
strneh r0, [r1, #0x22]
|
|
cmp r5, #0
|
|
ldrneh r0, [r5]
|
|
strneh r0, [r1, #0x24]
|
|
ldrneh r0, [r5, #2]
|
|
strneh r0, [r1, #0x26]
|
|
ldr r0, _022BF4EC ; =0x0000FFFF
|
|
cmp r4, r0
|
|
strne r4, [r1, #0x2c]
|
|
cmp r3, #0
|
|
ldmeqia sp!, {r4, r5, r6, pc}
|
|
add r2, r1, #0x30
|
|
mov r1, #6
|
|
_022BF4D4:
|
|
ldrh r0, [r3], #2
|
|
subs r1, r1, #1
|
|
strh r0, [r2], #2
|
|
bne _022BF4D4
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_022BF4E8: .word ov10_022DC1C0
|
|
_022BF4EC: .word 0x0000FFFF
|
|
arm_func_end ov10_022BF45C
|
|
|
|
arm_func_start ov10_022BF4F0
|
|
ov10_022BF4F0: ; 0x022BF4F0
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r6, r0
|
|
ldr r3, [r6, #0xc]
|
|
mvn r2, #0
|
|
mov r4, r1
|
|
cmp r3, r2
|
|
beq _022BF750
|
|
ldr r2, [r6, #0x18]
|
|
cmp r2, #0
|
|
bgt _022BF6D4
|
|
ldr r2, [r6, #0x40]
|
|
cmp r2, #5
|
|
bne _022BF52C
|
|
bl ov10_022BDF34
|
|
b _022BF6D4
|
|
_022BF52C:
|
|
cmp r2, #6
|
|
bne _022BF53C
|
|
bl ov10_022BDF34
|
|
b _022BF6D4
|
|
_022BF53C:
|
|
add r0, r6, #0x68
|
|
bl sub_0201D1B0
|
|
cmp r0, #0
|
|
bne _022BF598
|
|
ldr r0, [r6, #8]
|
|
sub r0, r0, #3
|
|
cmp r0, #2
|
|
bhi _022BF580
|
|
ldr r0, [r6, #0x3c]
|
|
tst r0, #1
|
|
bne _022BF6D4
|
|
ldr r0, [r6, #0xc]
|
|
mov r1, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
bl ov10_022BDCBC
|
|
b _022BF6D4
|
|
_022BF580:
|
|
ldr r0, [r6, #0xc]
|
|
mov r1, #0
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
bl ov10_022BDCBC
|
|
b _022BF6D4
|
|
_022BF598:
|
|
add r0, r6, #0x68
|
|
bl SwitchAnimationControlToNextFrame
|
|
ldr r1, [r6, #0x10]
|
|
mov r0, #0
|
|
mov r2, r1, lsr #0x1f
|
|
rsb r1, r2, r1, lsl #29
|
|
adds r1, r2, r1, ror #29
|
|
bne _022BF5DC
|
|
ldr r1, [r6, #0x1c]
|
|
cmp r1, #3
|
|
cmpne r1, #4
|
|
cmpne r1, #5
|
|
bne _022BF5D4
|
|
sub r0, r0, #3
|
|
b _022BF5E0
|
|
_022BF5D4:
|
|
add r0, r0, #3
|
|
b _022BF5E0
|
|
_022BF5DC:
|
|
add r0, r0, #3
|
|
_022BF5E0:
|
|
ldr r1, _022BF758 ; =ov10_022C7870
|
|
ldrsb r2, [r6, #0x28]
|
|
ldrh r5, [r1, #0xc]
|
|
ldrh r3, [r1, #0xe]
|
|
mvn r1, #0
|
|
cmp r2, r1
|
|
ldrnesh r2, [r6, #0x24]
|
|
strh r5, [sp]
|
|
ldrnesh r1, [r6, #0x26]
|
|
strh r3, [sp, #2]
|
|
strneh r2, [sp]
|
|
strneh r1, [sp, #2]
|
|
ldrsh r1, [sp]
|
|
cmp r1, #0x63
|
|
ldrnesh r1, [sp, #2]
|
|
cmpne r1, #0x63
|
|
beq _022BF6D4
|
|
ldr r5, [r6, #0x2c]
|
|
ldr r2, _022BF75C ; =0x0000FFFF
|
|
cmp r5, r2
|
|
bne _022BF648
|
|
ldrsh r3, [r6, #0x22]
|
|
ldrsh r2, [r4, #2]
|
|
sub r2, r3, r2
|
|
add r2, r2, r2, lsr #31
|
|
add r5, r0, r2, asr #1
|
|
_022BF648:
|
|
add r2, r6, #0x100
|
|
ldrsh r7, [r6, #0x20]
|
|
ldrsh r0, [r2, #0x36]
|
|
ldrsh lr, [r4]
|
|
ldrsh ip, [r6, #0x22]
|
|
ldrsh r4, [r4, #2]
|
|
add r3, r7, r0
|
|
ldrsh r0, [sp]
|
|
strh r3, [r6, #0x20]
|
|
sub r7, r7, lr
|
|
sub lr, ip, r4
|
|
ldrsh ip, [r6, #0x22]
|
|
ldrsh r3, [r2, #0x38]
|
|
add r4, r0, r7
|
|
mvn r2, #0x3f
|
|
add r0, ip, r3
|
|
strh r0, [r6, #0x22]
|
|
cmp r4, r2
|
|
add r7, r1, lr
|
|
ble _022BF6D4
|
|
rsb r0, r2, #0xff
|
|
cmp r4, r0
|
|
bge _022BF6D4
|
|
cmp r7, r2
|
|
ble _022BF6D4
|
|
cmp r7, #0x100
|
|
bge _022BF6D4
|
|
add r0, r6, #0x68
|
|
add r1, r6, #0x30
|
|
bl sub_0201D110
|
|
strh r4, [r6, #0x84]
|
|
strh r7, [r6, #0x86]
|
|
add r0, r6, #0x68
|
|
strh r5, [r6, #0xa0]
|
|
bl sub_0201CF5C
|
|
_022BF6D4:
|
|
ldr r0, [r6, #0x18]
|
|
cmp r0, #0
|
|
subgt r0, r0, #1
|
|
strgt r0, [r6, #0x18]
|
|
ldr r1, [r6, #0x58]
|
|
mvn r0, #0
|
|
cmp r1, r0
|
|
beq _022BF730
|
|
ldr r0, [r6, #0x5c]
|
|
cmp r0, #0
|
|
bne _022BF730
|
|
ldr r0, _022BF760 ; =ov10_022DC1C0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x2000
|
|
ldr r0, [r0, #0x784]
|
|
cmp r0, #0
|
|
bne _022BF724
|
|
mov r0, r1, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
bl PlaySeByIdVolumeWrapper
|
|
_022BF724:
|
|
mvn r0, #0
|
|
str r0, [r6, #0x58]
|
|
str r0, [r6, #0x5c]
|
|
_022BF730:
|
|
ldr r0, [r6, #0x5c]
|
|
cmp r0, #0
|
|
subgt r0, r0, #1
|
|
strgt r0, [r6, #0x5c]
|
|
ldrb r0, [r6, #0x60]
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
|
|
_022BF750:
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_022BF758: .word ov10_022C7870
|
|
_022BF75C: .word 0x0000FFFF
|
|
_022BF760: .word ov10_022DC1C0
|
|
arm_func_end ov10_022BF4F0
|
|
|
|
arm_func_start ov10_022BF764
|
|
ov10_022BF764: ; 0x022BF764
|
|
stmdb sp!, {r3, r4, r5, r6, lr}
|
|
sub sp, sp, #4
|
|
ldr r1, _022BF7CC ; =ov10_022DC1C0
|
|
mov r4, r0
|
|
ldr r6, [r1]
|
|
cmp r6, #0
|
|
moveq r0, #0
|
|
beq _022BF7C4
|
|
ldr r0, _022BF7D0 ; =ov10_022C7870
|
|
add r2, sp, #0
|
|
ldrh r1, [r0, #0x10]
|
|
cmp r4, #0
|
|
moveq r4, r2
|
|
strh r1, [sp]
|
|
ldrh r0, [r0, #0x12]
|
|
mov r5, #0
|
|
strh r0, [sp, #2]
|
|
_022BF7A8:
|
|
mov r0, r6
|
|
mov r1, r4
|
|
bl ov10_022BF4F0
|
|
add r5, r5, #1
|
|
cmp r5, #0x20
|
|
add r6, r6, #0x13c
|
|
blt _022BF7A8
|
|
_022BF7C4:
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_022BF7CC: .word ov10_022DC1C0
|
|
_022BF7D0: .word ov10_022C7870
|
|
arm_func_end ov10_022BF764
|
|
|
|
arm_func_start ov10_022BF7D4
|
|
ov10_022BF7D4: ; 0x022BF7D4
|
|
ldr ip, _022BF7DC ; =ov10_022C039C
|
|
bx ip
|
|
.align 2, 0
|
|
_022BF7DC: .word ov10_022C039C
|
|
arm_func_end ov10_022BF7D4
|
|
|
|
arm_func_start ov10_022BF7E0
|
|
ov10_022BF7E0: ; 0x022BF7E0
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
ldr r1, _022BF85C ; =ov10_022DC1C0
|
|
mov r6, r0
|
|
ldr r5, [r1]
|
|
cmp r5, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
|
|
ldr r0, _022BF860 ; =ov10_022C7870
|
|
add r2, sp, #0
|
|
ldrh r1, [r0, #8]
|
|
cmp r6, #0
|
|
mov r4, #0
|
|
strh r1, [sp]
|
|
ldrh r0, [r0, #0xa]
|
|
moveq r6, r2
|
|
mov r7, #0
|
|
strh r0, [sp, #2]
|
|
_022BF824:
|
|
ldr r0, [r5, #0x40]
|
|
bl ov10_022BFE3C
|
|
cmp r0, #0
|
|
beq _022BF844
|
|
mov r0, r5
|
|
mov r1, r6
|
|
bl ov10_022BF4F0
|
|
mov r4, r0
|
|
_022BF844:
|
|
add r7, r7, #1
|
|
cmp r7, #0x20
|
|
add r5, r5, #0x13c
|
|
blt _022BF824
|
|
mov r0, r4
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_022BF85C: .word ov10_022DC1C0
|
|
_022BF860: .word ov10_022C7870
|
|
arm_func_end ov10_022BF7E0
|
|
|
|
arm_func_start ov10_022BF864
|
|
ov10_022BF864: ; 0x022BF864
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
ldr r1, _022BF8E0 ; =ov10_022DC1C0
|
|
mov r6, r0
|
|
ldr r5, [r1]
|
|
cmp r5, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
|
|
ldr r0, _022BF8E4 ; =ov10_022C7870
|
|
add r2, sp, #0
|
|
ldrh r1, [r0]
|
|
cmp r6, #0
|
|
mov r4, #0
|
|
strh r1, [sp]
|
|
ldrh r0, [r0, #2]
|
|
moveq r6, r2
|
|
mov r7, #0
|
|
strh r0, [sp, #2]
|
|
_022BF8A8:
|
|
ldr r0, [r5, #0x40]
|
|
bl ov10_022BFE54
|
|
cmp r0, #0
|
|
beq _022BF8C8
|
|
mov r0, r5
|
|
mov r1, r6
|
|
bl ov10_022BF4F0
|
|
mov r4, r0
|
|
_022BF8C8:
|
|
add r7, r7, #1
|
|
cmp r7, #0x20
|
|
add r5, r5, #0x13c
|
|
blt _022BF8A8
|
|
mov r0, r4
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_022BF8E0: .word ov10_022DC1C0
|
|
_022BF8E4: .word ov10_022C7870
|
|
arm_func_end ov10_022BF864
|
|
|
|
arm_func_start ov10_022BF8E8
|
|
ov10_022BF8E8: ; 0x022BF8E8
|
|
ldr r1, _022BF900 ; =ov10_022DC1C0
|
|
ldr r1, [r1]
|
|
add r0, r1, r0
|
|
add r0, r0, #0x2000
|
|
ldrb r0, [r0, #0x79e]
|
|
bx lr
|
|
.align 2, 0
|
|
_022BF900: .word ov10_022DC1C0
|
|
arm_func_end ov10_022BF8E8
|
|
|
|
arm_func_start AnimationHasMoreFrames
|
|
AnimationHasMoreFrames: ; 0x022BF904
|
|
mvn r1, #0
|
|
cmp r0, r1
|
|
moveq r0, #0
|
|
bxeq lr
|
|
ldr r1, _022BF960 ; =ov10_022DC1C0
|
|
mov r2, #0
|
|
ldr r3, [r1]
|
|
b _022BF950
|
|
_022BF924:
|
|
ldr r1, [r3, #0xc]
|
|
cmp r1, r0
|
|
bne _022BF948
|
|
ldrb r0, [r3, #0x60]
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
_022BF948:
|
|
add r2, r2, #1
|
|
add r3, r3, #0x13c
|
|
_022BF950:
|
|
cmp r2, #0x20
|
|
blt _022BF924
|
|
mov r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_022BF960: .word ov10_022DC1C0
|
|
arm_func_end AnimationHasMoreFrames
|
|
|
|
arm_func_start ov10_022BF964
|
|
ov10_022BF964: ; 0x022BF964
|
|
stmdb sp!, {r3, lr}
|
|
bl ov10_022BE9A0
|
|
mvn r1, #0
|
|
cmp r0, r1
|
|
beq _022BF9C0
|
|
ldr r2, _022BF9C8 ; =ov10_022DC1C0
|
|
mov r1, #0x13c
|
|
ldr r2, [r2]
|
|
mla r1, r0, r1, r2
|
|
ldr r0, [r1, #0x18]
|
|
cmp r0, #0
|
|
movgt r0, #1
|
|
ldmgtia sp!, {r3, pc}
|
|
ldr r0, [r1, #0x40]
|
|
sub r0, r0, #5
|
|
cmp r0, #1
|
|
movls r0, #1
|
|
ldmlsia sp!, {r3, pc}
|
|
add r0, r1, #0x68
|
|
bl sub_0201D1B0
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
ldmneia sp!, {r3, pc}
|
|
_022BF9C0:
|
|
mov r0, #0
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_022BF9C8: .word ov10_022DC1C0
|
|
arm_func_end ov10_022BF964
|
|
|
|
arm_func_start ov10_022BF9CC
|
|
ov10_022BF9CC: ; 0x022BF9CC
|
|
stmdb sp!, {r3, lr}
|
|
ldr r2, _022BFA38 ; =ov10_022DC1C0
|
|
mov ip, #0
|
|
ldr lr, [r2]
|
|
mvn r2, #0
|
|
b _022BFA14
|
|
_022BF9E4:
|
|
ldr r3, [lr, #0xc]
|
|
cmp r3, r2
|
|
beq _022BFA0C
|
|
cmp r0, #0
|
|
bne _022BFA04
|
|
ldrb r3, [lr, #0x60]
|
|
cmp r3, #0
|
|
bne _022BFA0C
|
|
_022BFA04:
|
|
mov r0, #1
|
|
ldmia sp!, {r3, pc}
|
|
_022BFA0C:
|
|
add ip, ip, #1
|
|
add lr, lr, #0x13c
|
|
_022BFA14:
|
|
cmp ip, #0x20
|
|
blt _022BF9E4
|
|
mov r0, #2
|
|
bl ov10_022C07E8
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_022BFA38: .word ov10_022DC1C0
|
|
arm_func_end ov10_022BF9CC
|
|
|
|
arm_func_start ov10_022BFA3C
|
|
ov10_022BFA3C: ; 0x022BFA3C
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
mov r0, r1
|
|
bl GetMoveAnimation
|
|
mov r4, r0
|
|
ldrh r0, [r4, #0x16]
|
|
bl GetSpecialMonsterMoveAnimation
|
|
mov r5, r0
|
|
mov r0, r6
|
|
mov r1, #0x258
|
|
bl _s32_div_f
|
|
mov r1, r1, lsl #0x10
|
|
ldrsh r3, [r4, #0x14]
|
|
mov r2, #0
|
|
b _022BFA98
|
|
_022BFA78:
|
|
ldrsh r0, [r5]
|
|
cmp r0, r1, asr #16
|
|
ldreqb r0, [r5, #2]
|
|
ldmeqia sp!, {r4, r5, r6, pc}
|
|
add r0, r2, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r2, r0, asr #0x10
|
|
add r5, r5, #6
|
|
_022BFA98:
|
|
cmp r2, r3
|
|
blt _022BFA78
|
|
ldrb r0, [r4, #0x10]
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end ov10_022BFA3C
|
|
|
|
arm_func_start ov10_022BFAA8
|
|
ov10_022BFAA8: ; 0x022BFAA8
|
|
stmdb sp!, {r4, r5, lr}
|
|
sub sp, sp, #0x2c
|
|
ldr r5, _022BFB64 ; =ov10_022C7980
|
|
add lr, sp, #0
|
|
mov r4, r0
|
|
mov ip, #2
|
|
_022BFAC0:
|
|
ldmia r5!, {r0, r1, r2, r3}
|
|
stmia lr!, {r0, r1, r2, r3}
|
|
subs ip, ip, #1
|
|
bne _022BFAC0
|
|
ldmia r5, {r0, r1, r2}
|
|
stmia lr, {r0, r1, r2}
|
|
ldrh r0, [r4]
|
|
bl GetMoveAnimation
|
|
ldrsh r0, [r0]
|
|
str r0, [sp]
|
|
ldr r0, [r4, #0x10]
|
|
str r0, [sp, #4]
|
|
ldr r0, [r4, #0xc]
|
|
str r0, [sp, #8]
|
|
ldrh r0, [r4, #4]
|
|
strh r0, [sp, #0xc]
|
|
ldrh r0, [r4, #6]
|
|
strh r0, [sp, #0xe]
|
|
ldrh r0, [r4, #8]
|
|
strh r0, [sp, #0x10]
|
|
ldrh r0, [r4, #0xa]
|
|
strh r0, [sp, #0x12]
|
|
ldrh r0, [r4]
|
|
bl GetMoveAnimation
|
|
ldrsh r0, [r0]
|
|
bl GetEffectAnimation
|
|
ldrsb r0, [r0, #0x19]
|
|
ldr r3, _022BFB68 ; =ov10_022C7884
|
|
add r2, sp, #0x1c
|
|
strb r0, [sp, #0x14]
|
|
mov r1, #6
|
|
_022BFB3C:
|
|
ldrh r0, [r3], #2
|
|
subs r1, r1, #1
|
|
strh r0, [r2], #2
|
|
bne _022BFB3C
|
|
add r1, sp, #0
|
|
mov r0, #5
|
|
mov r2, #0
|
|
bl ov10_022BE780
|
|
add sp, sp, #0x2c
|
|
ldmia sp!, {r4, r5, pc}
|
|
.align 2, 0
|
|
_022BFB64: .word ov10_022C7980
|
|
_022BFB68: .word ov10_022C7884
|
|
arm_func_end ov10_022BFAA8
|
|
|
|
arm_func_start ov10_022BFB6C
|
|
ov10_022BFB6C: ; 0x022BFB6C
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
sub sp, sp, #0x20
|
|
mov r6, r1
|
|
mov r5, r2
|
|
mov r4, r3
|
|
bl ov10_022BE9A0
|
|
mvn r1, #0
|
|
cmp r0, r1
|
|
beq _022BFC4C
|
|
ldr r2, _022BFC54 ; =ov10_022DC1C0
|
|
mov r1, #0x13c
|
|
ldr r2, [r2]
|
|
mla ip, r0, r1, r2
|
|
add r0, ip, #0x100
|
|
ldrsh r1, [r0, #0x36]
|
|
cmp r1, #0
|
|
ldreqsh r0, [r0, #0x38]
|
|
cmpeq r0, #0
|
|
ldreqh r0, [r6]
|
|
streqh r0, [ip, #0x20]
|
|
ldreqh r0, [r6, #2]
|
|
streqh r0, [ip, #0x22]
|
|
ldr r0, [ip, #4]
|
|
cmp r0, #6
|
|
addeq r0, r4, #1
|
|
streq r0, [ip, #0x2c]
|
|
beq _022BFC24
|
|
ldr r0, [ip, #0x10]
|
|
mov r1, r0, lsr #0x1f
|
|
rsb r0, r1, r0, lsl #29
|
|
adds r0, r1, r0, ror #29
|
|
addne r0, r4, #1
|
|
strne r0, [ip, #0x2c]
|
|
bne _022BFC24
|
|
ldr r6, _022BFC58 ; =ov10_022C7890
|
|
add r7, sp, #0
|
|
ldmia r6!, {r0, r1, r2, r3}
|
|
mov lr, r7
|
|
stmia r7!, {r0, r1, r2, r3}
|
|
ldmia r6, {r0, r1, r2, r3}
|
|
stmia r7, {r0, r1, r2, r3}
|
|
ldr r6, [sp, #0x38]
|
|
and r0, r6, #7
|
|
ldr r0, [lr, r0, lsl #2]
|
|
add r0, r4, r0
|
|
str r0, [ip, #0x2c]
|
|
_022BFC24:
|
|
ldrsb r1, [ip, #0x28]
|
|
mvn r0, #0
|
|
cmp r1, r0
|
|
ldrneh r0, [r5]
|
|
strneh r0, [ip, #0x24]
|
|
ldrneh r0, [r5, #2]
|
|
strneh r0, [ip, #0x26]
|
|
moveq r0, #0
|
|
streqh r0, [ip, #0x24]
|
|
streqh r0, [ip, #0x26]
|
|
_022BFC4C:
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_022BFC54: .word ov10_022DC1C0
|
|
_022BFC58: .word ov10_022C7890
|
|
arm_func_end ov10_022BFB6C
|
|
|
|
arm_func_start ov10_022BFC5C
|
|
ov10_022BFC5C: ; 0x022BFC5C
|
|
stmdb sp!, {r4, r5, lr}
|
|
sub sp, sp, #0x2c
|
|
ldr r5, _022BFD18 ; =ov10_022C79AC
|
|
add lr, sp, #0
|
|
mov r4, r0
|
|
mov ip, #2
|
|
_022BFC74:
|
|
ldmia r5!, {r0, r1, r2, r3}
|
|
stmia lr!, {r0, r1, r2, r3}
|
|
subs ip, ip, #1
|
|
bne _022BFC74
|
|
ldmia r5, {r0, r1, r2}
|
|
stmia lr, {r0, r1, r2}
|
|
ldrh r0, [r4]
|
|
bl GetMoveAnimation
|
|
ldrsh r0, [r0, #4]
|
|
str r0, [sp]
|
|
ldr r0, [r4, #0x10]
|
|
str r0, [sp, #4]
|
|
ldr r0, [r4, #0xc]
|
|
str r0, [sp, #8]
|
|
ldrh r0, [r4, #4]
|
|
strh r0, [sp, #0xc]
|
|
ldrh r0, [r4, #6]
|
|
strh r0, [sp, #0xe]
|
|
ldrh r0, [r4, #8]
|
|
strh r0, [sp, #0x10]
|
|
ldrh r0, [r4, #0xa]
|
|
strh r0, [sp, #0x12]
|
|
ldrh r0, [r4]
|
|
bl GetMoveAnimation
|
|
ldrsh r0, [r0, #4]
|
|
bl GetEffectAnimation
|
|
ldrsb r0, [r0, #0x19]
|
|
ldr r3, _022BFD1C ; =ov10_022C7884
|
|
add r2, sp, #0x1c
|
|
strb r0, [sp, #0x14]
|
|
mov r1, #6
|
|
_022BFCF0:
|
|
ldrh r0, [r3], #2
|
|
subs r1, r1, #1
|
|
strh r0, [r2], #2
|
|
bne _022BFCF0
|
|
add r1, sp, #0
|
|
mov r0, #6
|
|
mov r2, #0
|
|
bl ov10_022BE780
|
|
add sp, sp, #0x2c
|
|
ldmia sp!, {r4, r5, pc}
|
|
.align 2, 0
|
|
_022BFD18: .word ov10_022C79AC
|
|
_022BFD1C: .word ov10_022C7884
|
|
arm_func_end ov10_022BFC5C
|
|
|
|
arm_func_start ov10_022BFD20
|
|
ov10_022BFD20: ; 0x022BFD20
|
|
stmdb sp!, {r4, lr}
|
|
mov r0, #2
|
|
mov r1, #0
|
|
bl ov10_022C07E8
|
|
mov r4, r0
|
|
mov r0, #2
|
|
mov r1, #1
|
|
bl ov10_022C07E8
|
|
orr r4, r4, r0
|
|
mov r0, #3
|
|
mov r1, #0
|
|
bl ov10_022C07E8
|
|
orr r0, r4, r0
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end ov10_022BFD20
|
|
|
|
arm_func_start ov10_022BFD58
|
|
ov10_022BFD58: ; 0x022BFD58
|
|
stmdb sp!, {r3, lr}
|
|
bl GetMoveAnimation
|
|
ldrb r0, [r0, #8]
|
|
and r0, r0, #7
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end ov10_022BFD58
|
|
|
|
arm_func_start ov10_022BFD6C
|
|
ov10_022BFD6C: ; 0x022BFD6C
|
|
stmdb sp!, {r3, lr}
|
|
bl GetMoveAnimation
|
|
ldrb r0, [r0, #8]
|
|
tst r0, #8
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end ov10_022BFD6C
|
|
|
|
arm_func_start ov10_022BFD8C
|
|
ov10_022BFD8C: ; 0x022BFD8C
|
|
stmdb sp!, {r3, lr}
|
|
bl GetMoveAnimation
|
|
ldrb r0, [r0, #8]
|
|
tst r0, #0x10
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end ov10_022BFD8C
|
|
|
|
arm_func_start ov10_022BFDAC
|
|
ov10_022BFDAC: ; 0x022BFDAC
|
|
stmdb sp!, {r3, lr}
|
|
bl GetMoveAnimation
|
|
ldrb r0, [r0, #8]
|
|
tst r0, #0x20
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end ov10_022BFDAC
|
|
|
|
arm_func_start ov10_022BFDCC
|
|
ov10_022BFDCC: ; 0x022BFDCC
|
|
stmdb sp!, {r3, lr}
|
|
bl GetMoveAnimation
|
|
ldrb r0, [r0, #8]
|
|
tst r0, #0x40
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end ov10_022BFDCC
|
|
|
|
arm_func_start ov10_022BFDEC
|
|
ov10_022BFDEC: ; 0x022BFDEC
|
|
cmp r0, #0x65
|
|
ldrne r1, _022BFE08 ; =0x0000010E
|
|
cmpne r0, r1
|
|
cmpne r0, #0x1bc
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_022BFE08: .word 0x0000010E
|
|
arm_func_end ov10_022BFDEC
|
|
|
|
arm_func_start ov10_022BFE0C
|
|
ov10_022BFE0C: ; 0x022BFE0C
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
bx lr
|
|
arm_func_end ov10_022BFE0C
|
|
|
|
arm_func_start ov10_022BFE18
|
|
ov10_022BFE18: ; 0x022BFE18
|
|
add r0, r0, #0x10c
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
bx lr
|
|
arm_func_end ov10_022BFE18
|
|
|
|
arm_func_start ov10_022BFE28
|
|
ov10_022BFE28: ; 0x022BFE28
|
|
add r0, r0, #0x22
|
|
add r0, r0, #0x100
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
bx lr
|
|
arm_func_end ov10_022BFE28
|
|
|
|
arm_func_start ov10_022BFE3C
|
|
ov10_022BFE3C: ; 0x022BFE3C
|
|
sub r0, r0, #1
|
|
cmp r0, #3
|
|
movls r0, #1
|
|
movhi r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
arm_func_end ov10_022BFE3C
|
|
|
|
arm_func_start ov10_022BFE54
|
|
ov10_022BFE54: ; 0x022BFE54
|
|
sub r0, r0, #5
|
|
cmp r0, #1
|
|
movls r0, #1
|
|
movhi r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
arm_func_end ov10_022BFE54
|
|
|
|
arm_func_start ov10_022BFE6C
|
|
ov10_022BFE6C: ; 0x022BFE6C
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl sub_02001808
|
|
cmp r0, r4
|
|
movge r0, #0
|
|
ldmgeia sp!, {r4, pc}
|
|
ldr r1, _022BFE9C ; =ov10_022DC1C0
|
|
mov r0, #1
|
|
ldr r1, [r1]
|
|
add r1, r1, #0x2000
|
|
strb r0, [r1, #0x7a0]
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_022BFE9C: .word ov10_022DC1C0
|
|
arm_func_end ov10_022BFE6C
|
|
|
|
arm_func_start GetEffectAnimation
|
|
GetEffectAnimation: ; 0x022BFEA0
|
|
ldr r2, _022BFEB0 ; =EFFECT_ANIMATION_INFO
|
|
mov r1, #0x1c
|
|
mla r0, r1, r0, r2
|
|
bx lr
|
|
.align 2, 0
|
|
_022BFEB0: .word EFFECT_ANIMATION_INFO
|
|
arm_func_end GetEffectAnimation
|
|
|
|
arm_func_start GetMoveAnimation
|
|
GetMoveAnimation: ; 0x022BFEB4
|
|
ldr r2, _022BFEC4 ; =MOVE_ANIMATION_INFO
|
|
mov r1, #0x18
|
|
mla r0, r1, r0, r2
|
|
bx lr
|
|
.align 2, 0
|
|
_022BFEC4: .word MOVE_ANIMATION_INFO
|
|
arm_func_end GetMoveAnimation
|
|
|
|
arm_func_start GetSpecialMonsterMoveAnimation
|
|
GetSpecialMonsterMoveAnimation: ; 0x022BFEC8
|
|
ldr r2, _022BFED8 ; =SPECIAL_MONSTER_MOVE_ANIMATION_INFO
|
|
mov r1, #6
|
|
mla r0, r1, r0, r2
|
|
bx lr
|
|
.align 2, 0
|
|
_022BFED8: .word SPECIAL_MONSTER_MOVE_ANIMATION_INFO
|
|
arm_func_end GetSpecialMonsterMoveAnimation
|
|
|
|
arm_func_start GetTrapAnimation
|
|
GetTrapAnimation: ; 0x022BFEDC
|
|
ldr r1, _022BFEEC ; =TRAP_ANIMATION_INFO
|
|
mov r0, r0, lsl #1
|
|
ldrsh r0, [r1, r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_022BFEEC: .word TRAP_ANIMATION_INFO
|
|
arm_func_end GetTrapAnimation
|
|
|
|
arm_func_start GetItemAnimation1
|
|
GetItemAnimation1: ; 0x022BFEF0
|
|
ldr r1, _022BFF00 ; =ITEM_ANIMATION_INFO
|
|
mov r0, r0, lsl #2
|
|
ldrsh r0, [r1, r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_022BFF00: .word ITEM_ANIMATION_INFO
|
|
arm_func_end GetItemAnimation1
|
|
|
|
arm_func_start GetItemAnimation2
|
|
GetItemAnimation2: ; 0x022BFF04
|
|
ldr r1, _022BFF14 ; =ov10_022C7A86
|
|
mov r0, r0, lsl #2
|
|
ldrsh r0, [r1, r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_022BFF14: .word ov10_022C7A86
|
|
arm_func_end GetItemAnimation2
|
|
|
|
arm_func_start GetMoveAnimationSpeed
|
|
GetMoveAnimationSpeed: ; 0x022BFF18
|
|
mov r1, #0x18
|
|
mul r1, r0, r1
|
|
ldr r0, _022BFF2C ; =ov10_022C9070
|
|
ldr r0, [r0, r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_022BFF2C: .word ov10_022C9070
|
|
arm_func_end GetMoveAnimationSpeed
|
|
|
|
arm_func_start ov10_022BFF30
|
|
ov10_022BFF30: ; 0x022BFF30
|
|
stmdb sp!, {r4, lr}
|
|
ldr r1, _022BFF74 ; =ov10_022DC1C4
|
|
mov r4, r0
|
|
ldr r0, [r1]
|
|
cmp r0, #0
|
|
bne _022BFF64
|
|
mov r0, #0x84
|
|
mov r1, #0xb
|
|
bl MemAlloc
|
|
ldr r2, _022BFF74 ; =ov10_022DC1C4
|
|
mov r1, #0x84
|
|
str r0, [r2]
|
|
bl MemZero
|
|
_022BFF64:
|
|
ldr r0, _022BFF74 ; =ov10_022DC1C4
|
|
ldr r0, [r0]
|
|
str r4, [r0]
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_022BFF74: .word ov10_022DC1C4
|
|
arm_func_end ov10_022BFF30
|
|
|
|
arm_func_start ov10_022BFF78
|
|
ov10_022BFF78: ; 0x022BFF78
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _022BFFA0 ; =ov10_022DC1C4
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
bl MemFree
|
|
ldr r0, _022BFFA0 ; =ov10_022DC1C4
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_022BFFA0: .word ov10_022DC1C4
|
|
arm_func_end ov10_022BFF78
|
|
|
|
arm_func_start ov10_022BFFA4
|
|
ov10_022BFFA4: ; 0x022BFFA4
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _022BFFFC ; =ov10_022DC1C4
|
|
mov ip, #0
|
|
ldr r1, [r0]
|
|
mov r3, ip
|
|
str ip, [r1]
|
|
mov r1, ip
|
|
_022BFFC0:
|
|
mov lr, r3
|
|
_022BFFC4:
|
|
ldr r2, [r0]
|
|
add r2, r2, #4
|
|
add r2, r2, ip, lsl #6
|
|
str r1, [r2, lr, lsl #5]
|
|
add r2, r2, lr, lsl #5
|
|
strh r1, [r2, #6]
|
|
add lr, lr, #1
|
|
str r1, [r2, #0xc]
|
|
cmp lr, #2
|
|
blt _022BFFC4
|
|
add ip, ip, #1
|
|
cmp ip, #2
|
|
blt _022BFFC0
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_022BFFFC: .word ov10_022DC1C4
|
|
arm_func_end ov10_022BFFA4
|
|
|
|
arm_func_start ov10_022C0000
|
|
ov10_022C0000: ; 0x022C0000
|
|
stmdb sp!, {r3, lr}
|
|
ldr r1, _022C0064 ; =ov10_022DC1C4
|
|
mov lr, r0
|
|
ldr r3, [r1]
|
|
mov r2, #0
|
|
b _022C0054
|
|
_022C0018:
|
|
ldr r0, [lr, #8]
|
|
add r1, r3, r0, lsl #6
|
|
add r0, r1, r2, lsl #5
|
|
ldr r0, [r0, #4]
|
|
cmp r0, #0
|
|
bne _022C0050
|
|
add r0, r1, r2, lsl #5
|
|
add ip, r0, #4
|
|
ldmia lr!, {r0, r1, r2, r3}
|
|
stmia ip!, {r0, r1, r2, r3}
|
|
ldmia lr, {r0, r1, r2, r3}
|
|
stmia ip, {r0, r1, r2, r3}
|
|
mov r0, #1
|
|
ldmia sp!, {r3, pc}
|
|
_022C0050:
|
|
add r2, r2, #1
|
|
_022C0054:
|
|
cmp r2, #2
|
|
blt _022C0018
|
|
mov r0, #0
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_022C0064: .word ov10_022DC1C4
|
|
arm_func_end ov10_022C0000
|
|
|
|
arm_func_start ov10_022C0068
|
|
ov10_022C0068: ; 0x022C0068
|
|
stmdb sp!, {r4, lr}
|
|
sub sp, sp, #0x20
|
|
mov r4, r1
|
|
cmp r0, #2
|
|
beq _022C0088
|
|
cmp r0, #3
|
|
beq _022C00C8
|
|
b _022C0104
|
|
_022C0088:
|
|
mov r1, #0
|
|
sub r0, r1, #1
|
|
mov ip, #5
|
|
mov r3, #0xe
|
|
str ip, [sp]
|
|
str r2, [sp, #8]
|
|
str r3, [sp, #0x10]
|
|
str r1, [sp, #0x14]
|
|
str r0, [sp, #0x1c]
|
|
bl ov10_022BD744
|
|
cmp r0, #1
|
|
moveq r0, #0
|
|
movne r0, #2
|
|
str r0, [sp, #0x18]
|
|
strh r4, [sp, #4]
|
|
b _022C0104
|
|
_022C00C8:
|
|
mov r1, #0
|
|
sub r0, r1, #1
|
|
mov ip, #6
|
|
mov r3, #0xe
|
|
str ip, [sp]
|
|
str r2, [sp, #8]
|
|
str r3, [sp, #0x10]
|
|
str r1, [sp, #0x14]
|
|
str r0, [sp, #0x1c]
|
|
bl ov10_022BD744
|
|
cmp r0, #1
|
|
moveq r0, #0
|
|
movne r0, #2
|
|
str r0, [sp, #0x18]
|
|
strh r4, [sp, #4]
|
|
_022C0104:
|
|
add r0, sp, #0
|
|
bl ov10_022C0000
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end ov10_022C0068
|
|
|
|
arm_func_start ov10_022C0114
|
|
ov10_022C0114: ; 0x022C0114
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
sub sp, sp, #0x20
|
|
sub r4, r1, #1
|
|
mov r7, r0
|
|
mov r6, r2
|
|
mov r5, r3
|
|
cmp r4, #1
|
|
ldr r4, [sp, #0x38]
|
|
bls _022C01F4
|
|
cmp r7, #0
|
|
beq _022C01F4
|
|
mov r0, r1
|
|
mov r1, r6
|
|
mov r2, r4
|
|
bl ov10_022C067C
|
|
mov r8, r0
|
|
mvn r1, #0
|
|
cmp r8, r1
|
|
beq _022C01F4
|
|
sub r1, r1, #1
|
|
cmp r8, r1
|
|
beq _022C01E8
|
|
mov r1, r6
|
|
mov r2, r4
|
|
bl ov10_022C075C
|
|
cmp r8, #0
|
|
beq _022C018C
|
|
cmp r8, #1
|
|
beq _022C01B8
|
|
b _022C01E0
|
|
_022C018C:
|
|
mov r1, #1
|
|
sub r0, r1, #2
|
|
mov r2, #3
|
|
str r2, [sp]
|
|
str r4, [sp, #8]
|
|
str r1, [sp, #0x10]
|
|
str r0, [sp, #0x14]
|
|
str r5, [sp, #0x1c]
|
|
str r0, [sp, #0x18]
|
|
strh r7, [sp, #6]
|
|
b _022C01E0
|
|
_022C01B8:
|
|
mov r1, #0
|
|
sub r0, r1, #1
|
|
mov r2, #4
|
|
str r2, [sp]
|
|
str r4, [sp, #8]
|
|
str r1, [sp, #0x10]
|
|
str r0, [sp, #0x14]
|
|
str r5, [sp, #0x1c]
|
|
str r0, [sp, #0x18]
|
|
strh r7, [sp, #6]
|
|
_022C01E0:
|
|
add r0, sp, #0
|
|
bl ov10_022C0000
|
|
_022C01E8:
|
|
mov r0, r6
|
|
mov r1, r4
|
|
bl ov10_022C0780
|
|
_022C01F4:
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
arm_func_end ov10_022C0114
|
|
|
|
arm_func_start ov10_022C01FC
|
|
ov10_022C01FC: ; 0x022C01FC
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r5, r1
|
|
mov r4, r0
|
|
mov r7, r2
|
|
mov r6, r3
|
|
cmp r5, #5
|
|
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
|
|
bl sub_0206409C
|
|
ldr r0, [r0, #8]
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
|
|
mov r0, r5
|
|
mov r1, r7
|
|
mov r2, r6
|
|
bl ov10_022C067C
|
|
mov r5, r0
|
|
mvn r1, #0
|
|
cmp r5, r1
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
|
|
sub r1, r1, #1
|
|
cmp r5, r1
|
|
beq _022C0270
|
|
mov r1, r7
|
|
mov r2, r6
|
|
bl ov10_022C075C
|
|
mov r0, r5
|
|
mov r1, r4
|
|
mov r2, r6
|
|
bl ov10_022C0068
|
|
_022C0270:
|
|
mov r0, r7
|
|
mov r1, r6
|
|
bl ov10_022C0780
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
arm_func_end ov10_022C01FC
|
|
|
|
arm_func_start ov10_022C0280
|
|
ov10_022C0280: ; 0x022C0280
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r5, r1
|
|
mov r4, r0
|
|
mov r7, r2
|
|
mov r6, r3
|
|
cmp r5, #6
|
|
ldmneia sp!, {r3, r4, r5, r6, r7, pc}
|
|
bl sub_0206409C
|
|
ldr r0, [r0, #0xc]
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
|
|
mov r0, r5
|
|
mov r1, r7
|
|
mov r2, r6
|
|
bl ov10_022C067C
|
|
mov r5, r0
|
|
mvn r1, #0
|
|
cmp r5, r1
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
|
|
sub r1, r1, #1
|
|
cmp r5, r1
|
|
beq _022C02F4
|
|
mov r1, r7
|
|
mov r2, r6
|
|
bl ov10_022C075C
|
|
mov r0, r5
|
|
mov r1, r4
|
|
mov r2, r6
|
|
bl ov10_022C0068
|
|
_022C02F4:
|
|
mov r0, r7
|
|
mov r1, r6
|
|
bl ov10_022C0780
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
arm_func_end ov10_022C0280
|
|
|
|
arm_func_start ov10_022C0304
|
|
ov10_022C0304: ; 0x022C0304
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r1
|
|
ldr r0, [r4]
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r4, pc}
|
|
cmp r0, #6
|
|
addls pc, pc, r0, lsl #2
|
|
b _022C0390
|
|
_022C0324: ; jump table
|
|
b _022C0390 ; case 0
|
|
b _022C0390 ; case 1
|
|
b _022C0390 ; case 2
|
|
b _022C0340 ; case 3
|
|
b _022C0390 ; case 4
|
|
b _022C034C ; case 5
|
|
b _022C0390 ; case 6
|
|
_022C0340:
|
|
mov r0, #0
|
|
strh r0, [r4, #6]
|
|
b _022C0390
|
|
_022C034C:
|
|
bl ov10_022BD744
|
|
cmp r0, #0
|
|
bne _022C0364
|
|
mov r0, #5
|
|
mov r1, #0
|
|
bl ov29_022EA428
|
|
_022C0364:
|
|
ldr r0, [r4]
|
|
cmp r0, #0
|
|
beq _022C0390
|
|
ldrsh r0, [r4, #4]
|
|
bl sub_0206409C
|
|
ldr r0, [r4, #8]
|
|
bl ov10_022BDCA4
|
|
mov r2, r0
|
|
ldrsh r0, [r4, #4]
|
|
ldr r1, [r4, #0x14]
|
|
bl sub_02064014
|
|
_022C0390:
|
|
mov r0, #0
|
|
str r0, [r4]
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end ov10_022C0304
|
|
|
|
arm_func_start ov10_022C039C
|
|
ov10_022C039C: ; 0x022C039C
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
ldr r4, _022C03F0 ; =ov10_022DC1C4
|
|
ldr r0, [r4]
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
|
|
mov r6, #0
|
|
mov r5, r6
|
|
_022C03B8:
|
|
mov r7, r5
|
|
_022C03BC:
|
|
ldr r2, [r4]
|
|
add r0, r2, #4
|
|
add r1, r0, r6, lsl #6
|
|
ldr r0, [r2]
|
|
add r1, r1, r7, lsl #5
|
|
bl ov10_022C0304
|
|
add r7, r7, #1
|
|
cmp r7, #2
|
|
blt _022C03BC
|
|
add r6, r6, #1
|
|
cmp r6, #2
|
|
blt _022C03B8
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_022C03F0: .word ov10_022DC1C4
|
|
arm_func_end ov10_022C039C
|
|
|
|
arm_func_start ov10_022C03F4
|
|
ov10_022C03F4: ; 0x022C03F4
|
|
stmdb sp!, {r3, lr}
|
|
cmp r0, #5
|
|
addls pc, pc, r0, lsl #2
|
|
b _022C042C
|
|
_022C0404: ; jump table
|
|
b _022C042C ; case 0
|
|
b _022C042C ; case 1
|
|
b _022C042C ; case 2
|
|
b _022C041C ; case 3
|
|
b _022C041C ; case 4
|
|
b _022C042C ; case 5
|
|
_022C041C:
|
|
mov r0, r1, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
bl ov10_022BFE0C
|
|
mov r2, r0
|
|
_022C042C:
|
|
mov r1, #0
|
|
ldr r0, _022C044C ; =WAN_TABLE
|
|
str r1, [sp]
|
|
ldr r0, [r0]
|
|
mov r1, #3
|
|
mov r3, #0xf
|
|
bl LoadWanTableEntryFromPack
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_022C044C: .word WAN_TABLE
|
|
arm_func_end ov10_022C03F4
|
|
|
|
arm_func_start ov10_022C0450
|
|
ov10_022C0450: ; 0x022C0450
|
|
stmdb sp!, {r3, lr}
|
|
cmp r0, #6
|
|
mov r2, #0
|
|
addls pc, pc, r0, lsl #2
|
|
b _022C04C4
|
|
_022C0464: ; jump table
|
|
b _022C04C4 ; case 0
|
|
b _022C04C4 ; case 1
|
|
b _022C04C4 ; case 2
|
|
b _022C04C4 ; case 3
|
|
b _022C04C4 ; case 4
|
|
b _022C0480 ; case 5
|
|
b _022C04A4 ; case 6
|
|
_022C0480:
|
|
mov r0, r1, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
bl ov10_022BFE18
|
|
mov r1, r0
|
|
mov r0, #3
|
|
mov r2, #0xf
|
|
bl sub_02063FC8
|
|
mov r2, r0
|
|
b _022C04C4
|
|
_022C04A4:
|
|
mov r0, r1, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
bl ov10_022BFE28
|
|
mov r1, r0
|
|
mov r0, #3
|
|
mov r2, #0xf
|
|
bl sub_02063FC8
|
|
mov r2, r0
|
|
_022C04C4:
|
|
mov r0, r2
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end ov10_022C0450
|
|
|
|
arm_func_start ov10_022C04CC
|
|
ov10_022C04CC: ; 0x022C04CC
|
|
ldr ip, _022C04D4 ; =sub_02063FF4
|
|
bx ip
|
|
.align 2, 0
|
|
_022C04D4: .word sub_02063FF4
|
|
arm_func_end ov10_022C04CC
|
|
|
|
arm_func_start ov10_022C04D8
|
|
ov10_022C04D8: ; 0x022C04D8
|
|
stmdb sp!, {r4, lr}
|
|
ldr r0, _022C0558 ; =ov10_022DC1C8
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
bne _022C0508
|
|
mov r0, #0x40
|
|
mov r1, #0xb
|
|
bl MemAlloc
|
|
ldr r2, _022C0558 ; =ov10_022DC1C8
|
|
mov r1, #0x40
|
|
str r0, [r2]
|
|
bl MemZero
|
|
_022C0508:
|
|
mov lr, #0
|
|
ldr r0, _022C0558 ; =ov10_022DC1C8
|
|
mvn r3, #0
|
|
mov r2, lr
|
|
mov ip, lr
|
|
_022C051C:
|
|
mov r4, ip
|
|
_022C0520:
|
|
ldr r1, [r0]
|
|
add r1, r1, lr, lsl #5
|
|
str r3, [r1, r4, lsl #3]
|
|
ldr r1, [r0]
|
|
add r1, r1, lr, lsl #5
|
|
add r1, r1, r4, lsl #3
|
|
add r4, r4, #1
|
|
str r2, [r1, #4]
|
|
cmp r4, #4
|
|
blt _022C0520
|
|
add lr, lr, #1
|
|
cmp lr, #2
|
|
blt _022C051C
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_022C0558: .word ov10_022DC1C8
|
|
arm_func_end ov10_022C04D8
|
|
|
|
arm_func_start ov10_022C055C
|
|
ov10_022C055C: ; 0x022C055C
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _022C0584 ; =ov10_022DC1C8
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
bl MemFree
|
|
ldr r0, _022C0584 ; =ov10_022DC1C8
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_022C0584: .word ov10_022DC1C8
|
|
arm_func_end ov10_022C055C
|
|
|
|
arm_func_start ov10_022C0588
|
|
ov10_022C0588: ; 0x022C0588
|
|
stmdb sp!, {r4, lr}
|
|
mov lr, #0
|
|
ldr r0, _022C05DC ; =ov10_022DC1C8
|
|
mvn r3, #0
|
|
mov r2, lr
|
|
mov ip, lr
|
|
_022C05A0:
|
|
mov r4, ip
|
|
_022C05A4:
|
|
ldr r1, [r0]
|
|
add r1, r1, lr, lsl #5
|
|
str r3, [r1, r4, lsl #3]
|
|
ldr r1, [r0]
|
|
add r1, r1, lr, lsl #5
|
|
add r1, r1, r4, lsl #3
|
|
add r4, r4, #1
|
|
str r2, [r1, #4]
|
|
cmp r4, #4
|
|
blt _022C05A4
|
|
add lr, lr, #1
|
|
cmp lr, #2
|
|
blt _022C05A0
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_022C05DC: .word ov10_022DC1C8
|
|
arm_func_end ov10_022C0588
|
|
|
|
arm_func_start ov10_022C05E0
|
|
ov10_022C05E0: ; 0x022C05E0
|
|
cmp r0, #3
|
|
bne _022C0604
|
|
ldr r0, _022C0678 ; =ov10_022DC1C8
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, r2, lsl #5]
|
|
cmp r1, r0
|
|
bne _022C0670
|
|
mov r0, #0
|
|
bx lr
|
|
_022C0604:
|
|
cmp r0, #4
|
|
bne _022C062C
|
|
ldr r0, _022C0678 ; =ov10_022DC1C8
|
|
ldr r0, [r0]
|
|
add r0, r0, r2, lsl #5
|
|
ldr r0, [r0, #8]
|
|
cmp r1, r0
|
|
bne _022C0670
|
|
mov r0, #1
|
|
bx lr
|
|
_022C062C:
|
|
cmp r0, #6
|
|
bne _022C0654
|
|
ldr r0, _022C0678 ; =ov10_022DC1C8
|
|
ldr r0, [r0]
|
|
add r0, r0, r2, lsl #5
|
|
ldr r0, [r0, #0x18]
|
|
cmp r1, r0
|
|
bne _022C0670
|
|
mov r0, #3
|
|
bx lr
|
|
_022C0654:
|
|
ldr r0, _022C0678 ; =ov10_022DC1C8
|
|
ldr r0, [r0]
|
|
add r0, r0, r2, lsl #5
|
|
ldr r0, [r0, #0x10]
|
|
cmp r1, r0
|
|
moveq r0, #2
|
|
bxeq lr
|
|
_022C0670:
|
|
mvn r0, #2
|
|
bx lr
|
|
.align 2, 0
|
|
_022C0678: .word ov10_022DC1C8
|
|
arm_func_end ov10_022C05E0
|
|
|
|
arm_func_start ov10_022C067C
|
|
ov10_022C067C: ; 0x022C067C
|
|
cmp r0, #3
|
|
bne _022C06B4
|
|
ldr r0, _022C0758 ; =ov10_022DC1C8
|
|
ldr r3, [r0]
|
|
ldr r0, [r3, r2, lsl #5]
|
|
cmp r1, r0
|
|
mvneq r0, #1
|
|
bxeq lr
|
|
add r0, r3, r2, lsl #5
|
|
ldr r0, [r0, #4]
|
|
cmp r0, #0
|
|
bne _022C0750
|
|
mov r0, #0
|
|
bx lr
|
|
_022C06B4:
|
|
cmp r0, #4
|
|
bne _022C06EC
|
|
ldr r0, _022C0758 ; =ov10_022DC1C8
|
|
ldr r0, [r0]
|
|
add r2, r0, r2, lsl #5
|
|
ldr r0, [r2, #8]
|
|
cmp r1, r0
|
|
mvneq r0, #1
|
|
bxeq lr
|
|
ldr r0, [r2, #0xc]
|
|
cmp r0, #0
|
|
bne _022C0750
|
|
mov r0, #1
|
|
bx lr
|
|
_022C06EC:
|
|
cmp r0, #6
|
|
bne _022C0724
|
|
ldr r0, _022C0758 ; =ov10_022DC1C8
|
|
ldr r0, [r0]
|
|
add r2, r0, r2, lsl #5
|
|
ldr r0, [r2, #0x18]
|
|
cmp r1, r0
|
|
mvneq r0, #1
|
|
bxeq lr
|
|
ldr r0, [r2, #0x1c]
|
|
cmp r0, #0
|
|
bne _022C0750
|
|
mov r0, #3
|
|
bx lr
|
|
_022C0724:
|
|
ldr r0, _022C0758 ; =ov10_022DC1C8
|
|
ldr r0, [r0]
|
|
add r2, r0, r2, lsl #5
|
|
ldr r0, [r2, #0x10]
|
|
cmp r1, r0
|
|
mvneq r0, #1
|
|
bxeq lr
|
|
ldr r0, [r2, #0x14]
|
|
cmp r0, #0
|
|
moveq r0, #2
|
|
bxeq lr
|
|
_022C0750:
|
|
mvn r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_022C0758: .word ov10_022DC1C8
|
|
arm_func_end ov10_022C067C
|
|
|
|
arm_func_start ov10_022C075C
|
|
ov10_022C075C: ; 0x022C075C
|
|
ldr r3, _022C077C ; =ov10_022DC1C8
|
|
ldr r3, [r3]
|
|
add r3, r3, r2, lsl #5
|
|
add r2, r3, r0, lsl #3
|
|
ldr r2, [r2, #4]
|
|
cmp r2, #0
|
|
streq r1, [r3, r0, lsl #3]
|
|
bx lr
|
|
.align 2, 0
|
|
_022C077C: .word ov10_022DC1C8
|
|
arm_func_end ov10_022C075C
|
|
|
|
arm_func_start ov10_022C0780
|
|
ov10_022C0780: ; 0x022C0780
|
|
stmdb sp!, {r3, lr}
|
|
ldr r2, _022C07CC ; =ov10_022DC1C8
|
|
mov ip, #0
|
|
ldr lr, [r2]
|
|
add r3, lr, r1, lsl #5
|
|
b _022C07C0
|
|
_022C0798:
|
|
ldr r2, [r3, ip, lsl #3]
|
|
cmp r0, r2
|
|
bne _022C07BC
|
|
add r0, lr, #4
|
|
add r1, r0, r1, lsl #5
|
|
ldr r0, [r1, ip, lsl #3]
|
|
add r0, r0, #1
|
|
str r0, [r1, ip, lsl #3]
|
|
ldmia sp!, {r3, pc}
|
|
_022C07BC:
|
|
add ip, ip, #1
|
|
_022C07C0:
|
|
cmp ip, #3
|
|
ble _022C0798
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_022C07CC: .word ov10_022DC1C8
|
|
arm_func_end ov10_022C0780
|
|
|
|
arm_func_start ov10_022C07D0
|
|
ov10_022C07D0: ; 0x022C07D0
|
|
ldr r2, _022C07E4 ; =ov10_022DC1C8
|
|
ldr r2, [r2]
|
|
add r1, r2, r1, lsl #5
|
|
add r0, r1, r0, lsl #3
|
|
bx lr
|
|
.align 2, 0
|
|
_022C07E4: .word ov10_022DC1C8
|
|
arm_func_end ov10_022C07D0
|
|
|
|
arm_func_start ov10_022C07E8
|
|
ov10_022C07E8: ; 0x022C07E8
|
|
ldr r2, _022C0810 ; =ov10_022DC1C8
|
|
ldr r2, [r2]
|
|
add r1, r2, r1, lsl #5
|
|
add r0, r1, r0, lsl #3
|
|
ldr r0, [r0, #4]
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
bx lr
|
|
.align 2, 0
|
|
_022C0810: .word ov10_022DC1C8
|
|
arm_func_end ov10_022C07E8
|
|
|
|
arm_func_start ov10_022C0814
|
|
ov10_022C0814: ; 0x022C0814
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
ldr r2, _022C0968 ; =ov10_022DC1D0
|
|
mov r8, r0
|
|
ldr r0, [r2]
|
|
mov r7, r1
|
|
cmp r0, #0
|
|
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
mov r0, #0x610
|
|
mov r1, #0xf
|
|
bl MemAlloc
|
|
ldr r2, _022C0968 ; =ov10_022DC1D0
|
|
mov r1, #0x610
|
|
str r0, [r2]
|
|
bl MemZero
|
|
ldr r3, _022C0968 ; =ov10_022DC1D0
|
|
mov r1, #0
|
|
ldr r0, [r3]
|
|
mov r2, #1
|
|
strb r1, [r0, #0x285]
|
|
ldr r0, [r3]
|
|
mov r6, r1
|
|
strb r1, [r0, #0x286]
|
|
ldr r0, [r3]
|
|
strb r1, [r0, #0x5f2]
|
|
ldr r0, [r3]
|
|
strb r2, [r0, #0x5f3]
|
|
mvn r0, #1
|
|
_022C0880:
|
|
ldr r4, [r3]
|
|
add r2, r1, #1
|
|
add r4, r4, r1
|
|
strb r0, [r4, #0x27c]
|
|
ldr r4, [r3]
|
|
mov r2, r2, lsl #0x10
|
|
add r4, r4, r1
|
|
strb r0, [r4, #0x280]
|
|
ldr r4, [r3]
|
|
add r4, r4, r1
|
|
mov r1, r2, asr #0x10
|
|
strb r6, [r4, #0x84]
|
|
cmp r1, #4
|
|
blt _022C0880
|
|
ldr r4, _022C0968 ; =ov10_022DC1D0
|
|
mvn r5, #1
|
|
ldr r1, [r4]
|
|
mov sb, #0x7c
|
|
strb r0, [r1, #0x284]
|
|
ldr r0, [r4]
|
|
strh r6, [r0, #4]
|
|
_022C08D4:
|
|
ldr r0, [r4]
|
|
add r0, r0, #0x88
|
|
mla r0, r6, sb, r0
|
|
bl InitAnimationControlWithSet__0201C0B0
|
|
add r0, r6, #1
|
|
ldr r1, [r4]
|
|
mov r0, r0, lsl #0x10
|
|
add r1, r1, r6
|
|
mov r6, r0, asr #0x10
|
|
strb r5, [r1, #0x278]
|
|
cmp r6, #4
|
|
blt _022C08D4
|
|
ldr r0, _022C0968 ; =ov10_022DC1D0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x310
|
|
bl ov10_022C1E50
|
|
ldr r0, _022C0968 ; =ov10_022DC1D0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x480
|
|
bl ov10_022C1E50
|
|
ldr r0, _022C0968 ; =ov10_022DC1D0
|
|
mov r6, #0
|
|
ldr r1, [r0]
|
|
strb r7, [r1, #0x5f0]
|
|
ldr r1, [r0]
|
|
strb r6, [r1, #0x5f1]
|
|
ldr r1, [r0]
|
|
strb r6, [r1, #0x5f4]
|
|
ldr r5, [r0]
|
|
ldmia r8!, {r0, r1, r2, r3}
|
|
add r4, r5, #0x1f8
|
|
add r4, r4, #0x400
|
|
stmia r4!, {r0, r1, r2, r3}
|
|
ldr r0, [r8]
|
|
str r0, [r4]
|
|
strb r6, [r5, #0x5f5]
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
_022C0968: .word ov10_022DC1D0
|
|
arm_func_end ov10_022C0814
|
|
|
|
arm_func_start ov10_022C096C
|
|
ov10_022C096C: ; 0x022C096C
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _022C0994 ; =ov10_022DC1D0
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
bl MemFree
|
|
ldr r0, _022C0994 ; =ov10_022DC1D0
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_022C0994: .word ov10_022DC1D0
|
|
arm_func_end ov10_022C096C
|
|
|
|
arm_func_start ov10_022C0998
|
|
ov10_022C0998: ; 0x022C0998
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r2, _022C09E4 ; =ov10_022DC1D0
|
|
mov r6, r0
|
|
ldr r4, [r2]
|
|
mov r5, r1
|
|
cmp r4, #0
|
|
ldmeqia sp!, {r4, r5, r6, pc}
|
|
add lr, r4, #0x310
|
|
mov ip, #0x17
|
|
_022C09BC:
|
|
ldmia r6!, {r0, r1, r2, r3}
|
|
stmia lr!, {r0, r1, r2, r3}
|
|
subs ip, ip, #1
|
|
bne _022C09BC
|
|
ldrb r0, [r4, #0x5f3]
|
|
cmp r0, #0
|
|
movne r0, #0
|
|
strneb r0, [r4, #0x5f2]
|
|
streqb r5, [r4, #0x5f2]
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_022C09E4: .word ov10_022DC1D0
|
|
arm_func_end ov10_022C0998
|
|
|
|
arm_func_start DrawTeamStats
|
|
DrawTeamStats: ; 0x022C09E8
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x50
|
|
ldr r3, _022C0CC0 ; =ov10_022DC1D0
|
|
mov sl, r0
|
|
ldr r0, [r3]
|
|
mov r5, r1
|
|
cmp r0, #0
|
|
mov r4, r2
|
|
moveq r0, #0
|
|
beq _022C0CB8
|
|
mov r1, #0
|
|
ldr r0, _022C0CC4 ; =WAN_TABLE
|
|
str r1, [sp]
|
|
#ifdef JAPAN
|
|
ldr r0, [r0]
|
|
mov r1, #4
|
|
mov r2, #0x3f8
|
|
#else
|
|
mov r1, #4
|
|
ldr r0, [r0]
|
|
add r2, r1, #0x400
|
|
#endif
|
|
mov r3, #0xf
|
|
bl LoadWanTableEntryFromPack
|
|
ldr r1, _022C0CC0 ; =ov10_022DC1D0
|
|
ldr r2, [r1]
|
|
strh r0, [r2, #4]
|
|
ldr r0, [r1]
|
|
add r0, r0, #8
|
|
bl InitAnimationControlWithSet__0201C0B0
|
|
ldr r0, _022C0CC0 ; =ov10_022DC1D0
|
|
ldr r0, [r0]
|
|
ldrsh r1, [r0, #4]
|
|
add r0, r0, #8
|
|
bl SetSpriteIdForAnimationControl
|
|
ldr r0, _022C0CC0 ; =ov10_022DC1D0
|
|
mov r1, #0
|
|
ldr r3, [r0]
|
|
ldrh r2, [r3, #0xa]
|
|
orr r2, r2, #0x20
|
|
strh r2, [r3, #0xa]
|
|
ldr r0, [r0]
|
|
add r0, r0, #8
|
|
bl sub_0201D12C
|
|
mov r0, #0xd
|
|
str r0, [sp]
|
|
mov r1, #0
|
|
str r1, [sp, #4]
|
|
str r1, [sp, #8]
|
|
mov r0, #1
|
|
str r0, [sp, #0xc]
|
|
ldr r0, _022C0CC0 ; =ov10_022DC1D0
|
|
mov r2, r1
|
|
ldr r0, [r0]
|
|
mov r3, #0x71
|
|
add r0, r0, #8
|
|
bl SetAndPlayAnimationForAnimationControl
|
|
mov r3, r4
|
|
ldr r0, _022C0CC0 ; =ov10_022DC1D0
|
|
mov r2, r5
|
|
ldr r1, [r0]
|
|
add r0, r1, #0x2d8
|
|
add r1, r1, #0x1f8
|
|
add r1, r1, #0x400
|
|
bl ov10_022C1E80
|
|
cmp r5, #0
|
|
beq _022C0AF4
|
|
ldr r0, _022C0CC0 ; =ov10_022DC1D0
|
|
mov r3, #0
|
|
ldr r2, [r0]
|
|
mov r1, #1
|
|
strb r3, [r2, #0x285]
|
|
b _022C0B10
|
|
_022C0AF4:
|
|
ldr r0, _022C0CC0 ; =ov10_022DC1D0
|
|
mov r3, #1
|
|
ldr r2, [r0]
|
|
mov r1, #0
|
|
strb r3, [r2, #0x285]
|
|
ldr r2, [r0]
|
|
strb r3, [r2, #0x5f4]
|
|
_022C0B10:
|
|
ldr r0, [r0]
|
|
ldr fp, _022C0CC0 ; =ov10_022DC1D0
|
|
strb r1, [r0, #0x60c]
|
|
ldr r0, [fp]
|
|
mvn r1, #1
|
|
add r0, r0, #0x200
|
|
ldrsb r0, [r0, #0x7c]
|
|
cmp r0, r1
|
|
bne _022C0C10
|
|
ldr r0, _022C0CC8 ; =ov10_022DBFEC
|
|
ldr r4, _022C0CCC ; =ov10_022DBFDC
|
|
add r6, sp, #0x20
|
|
ldmia r0, {r0, r1, r2, r3}
|
|
stmia r6, {r0, r1, r2, r3}
|
|
ldmia r4, {r0, r1, r2, r3}
|
|
add r5, sp, #0x10
|
|
stmia r5, {r0, r1, r2, r3}
|
|
mov r7, #0
|
|
add r4, sp, #0x40
|
|
_022C0B5C:
|
|
add r0, r7, r7, lsr #31
|
|
mov r1, r0, asr #1
|
|
mov r0, #0xc
|
|
mul sb, r1, r0
|
|
mov ip, r7, lsr #0x1f
|
|
#ifdef JAPAN
|
|
rsb r8, ip, r7, lsl #31
|
|
#endif
|
|
ldmia r6, {r0, r1, r2, r3}
|
|
stmia r4, {r0, r1, r2, r3}
|
|
#ifndef JAPAN
|
|
rsb r8, ip, r7, lsl #31
|
|
#endif
|
|
add r8, ip, r8, ror #31
|
|
mov r8, r8, lsl #4
|
|
#ifdef JAPAN
|
|
add r0, r8, #7
|
|
strb r0, [sp, #0x44]
|
|
add r0, sb, #1
|
|
#else
|
|
add r0, sb, #7
|
|
add r8, r8, #1
|
|
#endif
|
|
strb r0, [sp, #0x45]
|
|
ldr r1, _022C0CD0 ; =ProcessTeamStatsNameGender
|
|
mov r0, r4
|
|
#ifndef JAPAN
|
|
strb r8, [sp, #0x44]
|
|
#endif
|
|
bl CreateTextBox
|
|
ldr r1, [fp]
|
|
#ifdef JAPAN
|
|
add ip, r8, #1
|
|
#else
|
|
add sb, sb, #9
|
|
#endif
|
|
add r1, r1, r7
|
|
strb r0, [r1, #0x27c]
|
|
ldmia r5, {r0, r1, r2, r3}
|
|
stmia r4, {r0, r1, r2, r3}
|
|
#ifdef JAPAN
|
|
add r8, sb, #7
|
|
#endif
|
|
ldr r1, _022C0CD4 ; =ProcessTeamStatsLvHp
|
|
mov r0, r4
|
|
#ifdef JAPAN
|
|
strb ip, [sp, #0x44]
|
|
strb r8, [sp, #0x45]
|
|
#else
|
|
strb r8, [sp, #0x44]
|
|
strb sb, [sp, #0x45]
|
|
#endif
|
|
bl CreateTextBox
|
|
ldr r1, [fp]
|
|
add r1, r1, r7
|
|
add r7, r7, #1
|
|
strb r0, [r1, #0x280]
|
|
cmp r7, #4
|
|
blt _022C0B5C
|
|
ldr r0, _022C0CC0 ; =ov10_022DC1D0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x288
|
|
bl InitPreprocessorArgs
|
|
ldr r0, _022C0CC0 ; =ov10_022DC1D0
|
|
mov r3, #0x10000
|
|
ldr r2, [r0]
|
|
mov r1, #0
|
|
str r3, [r2, #0x2d4]
|
|
ldr r0, [r0]
|
|
strb r1, [r0, #0x5f3]
|
|
_022C0C10:
|
|
bl ov10_022C1990
|
|
ldr r8, _022C0CD8 ; =ov10_022DC1CC
|
|
ldr r7, _022C0CDC ; =ov10_022DBFFC
|
|
ldr r5, _022C0CC0 ; =ov10_022DC1D0
|
|
mov sb, #0
|
|
add fp, sp, #0x30
|
|
add r6, sp, #0x34
|
|
mvn r4, #1
|
|
_022C0C30:
|
|
ldr r0, [r5]
|
|
add r0, r0, sb
|
|
add r0, r0, #0x200
|
|
ldrsb r0, [r0, #0x78]
|
|
cmp r0, r4
|
|
bne _022C0C9C
|
|
mov r0, fp
|
|
bl InitPortraitParams
|
|
mov r0, fp
|
|
mov r1, #1
|
|
bl InitPortraitParamsWithMonsterId
|
|
ldrb r1, [r8, sb]
|
|
mov r0, fp
|
|
bl SetPortraitLayout
|
|
mov r0, #1
|
|
ldr r1, [r7, sb, lsl #2]
|
|
mov r2, r0
|
|
bl CreatePortraitBox
|
|
ldr r1, [r5]
|
|
add r1, r1, sb
|
|
strb r0, [r1, #0x278]
|
|
ldr r0, [r5]
|
|
ldmia r6, {r1, r2}
|
|
add r0, r0, sb
|
|
add r0, r0, #0x200
|
|
ldrsb r0, [r0, #0x78]
|
|
bl sub_02028770
|
|
_022C0C9C:
|
|
add sb, sb, #1
|
|
cmp sb, #4
|
|
blt _022C0C30
|
|
mov r0, sl
|
|
mov r1, #0
|
|
bl ov10_022C0998
|
|
mov r0, #1
|
|
_022C0CB8:
|
|
add sp, sp, #0x50
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_022C0CC0: .word ov10_022DC1D0
|
|
_022C0CC4: .word WAN_TABLE
|
|
_022C0CC8: .word ov10_022DBFEC
|
|
_022C0CCC: .word ov10_022DBFDC
|
|
_022C0CD0: .word ProcessTeamStatsNameGender
|
|
_022C0CD4: .word ProcessTeamStatsLvHp
|
|
_022C0CD8: .word ov10_022DC1CC
|
|
_022C0CDC: .word ov10_022DBFFC
|
|
arm_func_end DrawTeamStats
|
|
|
|
arm_func_start UpdateTeamStats
|
|
UpdateTeamStats: ; 0x022C0CE0
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x20
|
|
ldr r0, _022C0F5C ; =ov10_022DC1D0
|
|
mov r2, #0
|
|
ldr r1, [r0]
|
|
strb r2, [r1, #0x5f3]
|
|
ldr r1, [r0]
|
|
ldrb r0, [r1, #0x285]
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
strneb r0, [r1, #0x286]
|
|
bl ov10_022C1A04
|
|
movs sb, r0
|
|
beq _022C0F54
|
|
ldr r0, _022C0F5C ; =ov10_022DC1D0
|
|
ldr r1, [r0]
|
|
ldrb r0, [r1, #0x60c]
|
|
cmp r0, #0
|
|
bne _022C0D80
|
|
ldrb r0, [r1, #0x5f2]
|
|
cmp r0, #0
|
|
beq _022C0D80
|
|
ldr r1, _022C0F60 ; =0x0000FFFF
|
|
mov r0, sb, lsl #0x10
|
|
cmp r1, r0, lsr #16
|
|
bne _022C0D80
|
|
tst sb, #0x80000
|
|
mov r0, #1
|
|
beq _022C0D6C
|
|
bl ov29_0234C5EC
|
|
mov r0, #4
|
|
mov r1, #0x1000
|
|
mov r2, #1
|
|
bl StartFadeDungeonWrapper
|
|
b _022C0D80
|
|
_022C0D6C:
|
|
bl ov29_0234C584
|
|
mov r0, #1
|
|
mov r2, r0
|
|
mov r1, #0x1000
|
|
bl StartFadeDungeonWrapper
|
|
_022C0D80:
|
|
ldr fp, _022C0F5C ; =ov10_022DC1D0
|
|
mov r8, #0
|
|
ldr r1, [fp]
|
|
ldr r0, _022C0F64 ; =ov10_022DBFB0
|
|
strb r8, [r1, #0x5f2]
|
|
ldr r6, [r0, #0x14]
|
|
ldr r5, [r0, #0x18]
|
|
str r6, [sp]
|
|
str r5, [sp, #4]
|
|
mvn r4, #1
|
|
_022C0DA8:
|
|
tst sb, #0xf
|
|
beq _022C0EA8
|
|
tst sb, #1
|
|
beq _022C0DCC
|
|
ldr r0, [fp]
|
|
add r0, r0, r8
|
|
add r0, r0, #0x200
|
|
ldrsb r0, [r0, #0x80]
|
|
bl ProcessTeamStatsLvHp
|
|
_022C0DCC:
|
|
tst sb, #2
|
|
beq _022C0DE8
|
|
ldr r0, [fp]
|
|
add r0, r0, r8
|
|
add r0, r0, #0x200
|
|
ldrsb r0, [r0, #0x7c]
|
|
bl ProcessTeamStatsNameGender
|
|
_022C0DE8:
|
|
tst sb, #4
|
|
beq _022C0EA8
|
|
ldr r2, [fp]
|
|
mov r0, r8, lsl #0x10
|
|
add r1, r2, r0, asr #16
|
|
mov sl, r0, asr #0x10
|
|
add r2, r2, #0x310
|
|
mov r0, #0x5c
|
|
mla r7, sl, r0, r2
|
|
str r6, [sp, #8]
|
|
str r5, [sp, #0xc]
|
|
add r0, r1, #0x200
|
|
ldrsb r0, [r0, #0x78]
|
|
cmp r0, r4
|
|
beq _022C0EA8
|
|
add r0, sp, #0x10
|
|
bl InitPortraitParams
|
|
ldrb r0, [r7]
|
|
cmp r0, #0
|
|
add r0, sp, #0x10
|
|
bne _022C0E48
|
|
mov r1, #1
|
|
bl InitPortraitParamsWithMonsterId
|
|
b _022C0E50
|
|
_022C0E48:
|
|
ldrsh r1, [r7, #0x42]
|
|
bl InitPortraitParamsWithMonsterId
|
|
_022C0E50:
|
|
add r0, sp, #0x10
|
|
add r1, sp, #8
|
|
bl SetPortraitOffset
|
|
ldr r1, _022C0F68 ; =ov10_022DC1CC
|
|
add r0, sp, #0x10
|
|
ldrb r1, [r1, sl]
|
|
bl SetPortraitLayout
|
|
ldrb r0, [r7]
|
|
cmp r0, #0
|
|
add r0, sp, #0x10
|
|
bne _022C0E88
|
|
mov r1, r4
|
|
bl SetPortraitEmotion
|
|
b _022C0E90
|
|
_022C0E88:
|
|
mov r1, #0
|
|
bl SetPortraitEmotion
|
|
_022C0E90:
|
|
ldr r0, [fp]
|
|
add r1, sp, #0x10
|
|
add r0, r0, sl
|
|
add r0, r0, #0x200
|
|
ldrsb r0, [r0, #0x78]
|
|
bl ShowPortraitInPortraitBox
|
|
_022C0EA8:
|
|
add r8, r8, #1
|
|
cmp r8, #4
|
|
mov sb, sb, lsr #4
|
|
blo _022C0DA8
|
|
ldr r8, _022C0F5C ; =ov10_022DC1D0
|
|
mov r6, #0
|
|
ldr r0, [r8]
|
|
mov r5, r6
|
|
add r4, r0, #0x480
|
|
mov sb, r6
|
|
mov r7, #0x5c
|
|
_022C0ED4:
|
|
mul r0, r5, r7
|
|
ldrb r0, [r4, r0]
|
|
cmp r0, #0
|
|
beq _022C0F04
|
|
ldr r0, [r8]
|
|
mov r2, r6, lsl #0x10
|
|
ldrb r3, [r0, #0x5f0]
|
|
mov r1, sb
|
|
add r0, r0, #0x2d8
|
|
mov r2, r2, asr #0x10
|
|
bl ov10_022C1F90
|
|
add r6, r6, #1
|
|
_022C0F04:
|
|
add r5, r5, #1
|
|
cmp r5, #4
|
|
blt _022C0ED4
|
|
mov r5, #1
|
|
ldr r4, _022C0F5C ; =ov10_022DC1D0
|
|
b _022C0F3C
|
|
_022C0F1C:
|
|
ldr r0, [r4]
|
|
mov r2, r6, lsl #0x10
|
|
ldrb r3, [r0, #0x5f0]
|
|
mov r1, r5
|
|
add r0, r0, #0x2d8
|
|
mov r2, r2, asr #0x10
|
|
bl ov10_022C1F90
|
|
add r6, r6, #1
|
|
_022C0F3C:
|
|
cmp r6, #4
|
|
blt _022C0F1C
|
|
ldr r0, _022C0F5C ; =ov10_022DC1D0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x2d8
|
|
bl ov10_022C225C
|
|
_022C0F54:
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_022C0F5C: .word ov10_022DC1D0
|
|
_022C0F60: .word 0x0000FFFF
|
|
_022C0F64: .word ov10_022DBFB0
|
|
_022C0F68: .word ov10_022DC1CC
|
|
arm_func_end UpdateTeamStats
|
|
|
|
arm_func_start ov10_022C0F6C
|
|
ov10_022C0F6C: ; 0x022C0F6C
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x20
|
|
ldr r4, _022C11CC ; =ov10_022DC1D0
|
|
mov r7, r0
|
|
ldr r4, [r4]
|
|
mov sl, r1
|
|
cmp r4, #0
|
|
ldrneb r0, [r4, #0x285]
|
|
mov r6, r2
|
|
mov fp, r3
|
|
cmpne r0, #0
|
|
ldrneb r0, [r4, #0x286]
|
|
ldr sb, [sp, #0x54]
|
|
cmpne r0, #0
|
|
ldrnesh r5, [sp, #0x4c]
|
|
addne r1, r4, #0x88
|
|
movne r0, #0x7c
|
|
mlane r4, r5, r0, r1
|
|
cmpne r7, #0
|
|
beq _022C11C4
|
|
ldr r1, _022C11D0 ; =WAN_TABLE
|
|
mov r0, #0x38
|
|
ldr r1, [r1]
|
|
smlabb r0, r7, r0, r1
|
|
ldr r0, [r0, #0x30]
|
|
cmp r0, #0
|
|
beq _022C11C4
|
|
mov r0, r4
|
|
bl sub_0201D1B0
|
|
cmp r0, #0
|
|
beq _022C1010
|
|
ldr r0, _022C11CC ; =ov10_022DC1D0
|
|
ldr r0, [r0]
|
|
add r0, r0, r5
|
|
ldrb r0, [r0, #0x84]
|
|
cmp r0, #0
|
|
ldreqsh r0, [r4, #0x70]
|
|
cmpeq r0, r7
|
|
ldreqsh r0, [r4, #0x76]
|
|
cmpeq r0, r6
|
|
beq _022C1094
|
|
_022C1010:
|
|
ldr r0, _022C11CC ; =ov10_022DC1D0
|
|
ldr r0, [r0]
|
|
add r0, r0, r5
|
|
ldrb r0, [r0, #0x84]
|
|
cmp r0, #0
|
|
beq _022C1030
|
|
mov r0, r4
|
|
bl sub_0201CF80
|
|
_022C1030:
|
|
mov r0, r4
|
|
mov r1, r7
|
|
bl SetSpriteIdForAnimationControl
|
|
bl Rand16Bit
|
|
mov r1, r6
|
|
ldrsh r6, [sp, #0x50]
|
|
and r7, r0, #3
|
|
mov r2, #0
|
|
and r3, r6, #0xff
|
|
stmia sp, {r3, r7}
|
|
mov r3, #0x14
|
|
smulbb r3, r6, r3
|
|
str r2, [sp, #8]
|
|
mov r0, #1
|
|
mov r3, r3, lsl #0x10
|
|
str r0, [sp, #0xc]
|
|
mov r0, r4
|
|
mov r2, #7
|
|
mov r3, r3, asr #0x10
|
|
bl SetAndPlayAnimationForAnimationControl
|
|
ldr r0, _022C11CC ; =ov10_022DC1D0
|
|
mov r1, #0
|
|
ldr r0, [r0]
|
|
add r0, r0, r5
|
|
strb r1, [r0, #0x84]
|
|
_022C1094:
|
|
#ifdef JAPAN
|
|
ldrh r0, [r4, #2]
|
|
ldrsh r7, [sp, #0x4c]
|
|
ldrb r1, [sp, #0x5c]
|
|
orr r0, r0, #0x10
|
|
strh r0, [r4, #2]
|
|
mov r3, #0
|
|
strh r3, [r4, #0x38]
|
|
ldrh r2, [r4, #2]
|
|
mov r5, r7, lsl #0x1f
|
|
ldr r0, _022C11D4 ; =0x0000F3FF
|
|
orr r2, r2, #0x20
|
|
strh r2, [r4, #2]
|
|
strh r0, [r4, #0x10]
|
|
strh r0, [r4, #0x14]
|
|
mov r2, r7, asr #1
|
|
mov r0, #0x60
|
|
smulbb r0, r2, r0
|
|
strh r3, [r4, #0x16]
|
|
cmp r1, #0
|
|
add r6, r0, #0x50
|
|
ldrneh r0, [r4, #0x16]
|
|
mov r5, r5, lsr #0x18
|
|
add r8, r5, #0x60
|
|
#else
|
|
ldrsh r8, [sp, #0x4c]
|
|
mov r1, #0x60
|
|
mov r0, sl
|
|
mov r2, r8, asr #1
|
|
smulbb r1, r2, r1
|
|
mov r3, r8, lsl #0x1f
|
|
mov r2, r3, lsr #0x18
|
|
add r7, r2, #0x60
|
|
add r6, r1, #0x28
|
|
bl ov10_022C1CE8
|
|
cmp r0, #0
|
|
cmpeq sl, #0x1a0
|
|
mvneq r1, #7
|
|
movne r1, #0
|
|
mov r0, sl
|
|
add r7, r7, r1
|
|
bl ov10_022C1CE8
|
|
cmp r0, #0
|
|
bne _022C1100
|
|
cmp sl, #0x1a0
|
|
moveq r0, #0x11
|
|
beq _022C1104
|
|
mov r0, sl
|
|
bl GetBodySize
|
|
cmp r0, #4
|
|
moveq r0, #0xc
|
|
beq _022C1104
|
|
_022C1100:
|
|
mov r0, #0
|
|
_022C1104:
|
|
ldrh r2, [r4, #2]
|
|
ldrb r1, [sp, #0x5c]
|
|
mov r5, #0
|
|
orr r2, r2, #0x10
|
|
strh r2, [r4, #2]
|
|
strh r5, [r4, #0x38]
|
|
ldrh r3, [r4, #2]
|
|
cmp r1, #0
|
|
ldr r2, _022C11D4 ; =0x0000F3FF
|
|
orr r1, r3, #0x20
|
|
strh r1, [r4, #2]
|
|
strh r2, [r4, #0x10]
|
|
strh r2, [r4, #0x14]
|
|
strh r5, [r4, #0x16]
|
|
add r6, r6, r0
|
|
ldrneh r0, [r4, #0x16]
|
|
mov r5, #0
|
|
#endif
|
|
orrne r0, r0, #0x400
|
|
strneh r0, [r4, #0x16]
|
|
ldrsh r0, [sp, #0x58]
|
|
#ifdef JAPAN
|
|
mov r5, #0
|
|
add r0, r8, r0
|
|
#else
|
|
add r0, r7, r0
|
|
#endif
|
|
strh r0, [r4, #0x1c]
|
|
strh r6, [r4, #0x1e]
|
|
b _022C1178
|
|
_022C1164:
|
|
mov r0, r4
|
|
bl SwitchAnimationControlToNextFrame
|
|
add r0, r5, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r5, r0, asr #0x10
|
|
_022C1178:
|
|
cmp r5, sb
|
|
blt _022C1164
|
|
mov r0, r4
|
|
bl sub_0201CF5C
|
|
add r0, sp, #0x10
|
|
mov r2, r4
|
|
mov r1, #4
|
|
bl sub_0201D034
|
|
ldrb r0, [sp, #0x48]
|
|
cmp r0, #0
|
|
beq _022C11C4
|
|
add r4, sp, #0x10
|
|
str r6, [sp]
|
|
mov r0, fp
|
|
mov r1, sl
|
|
#ifdef JAPAN
|
|
mov r2, r7
|
|
mov r3, r8
|
|
#else
|
|
mov r2, r8
|
|
mov r3, r7
|
|
#endif
|
|
str r4, [sp, #4]
|
|
bl ov29_022DD83C
|
|
_022C11C4:
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_022C11CC: .word ov10_022DC1D0
|
|
_022C11D0: .word WAN_TABLE
|
|
_022C11D4: .word 0x0000F3FF
|
|
arm_func_end ov10_022C0F6C
|
|
|
|
arm_func_start ov10_022C11D8
|
|
ov10_022C11D8: ; 0x022C11D8
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x20
|
|
ldr r0, _022C138C ; =ov10_022DC1D0
|
|
mov r2, #0x80
|
|
ldr r3, [r0]
|
|
mov r1, #0x60
|
|
strh r2, [r3, #0x24]
|
|
add r0, r3, #8
|
|
strh r1, [r3, #0x26]
|
|
bl sub_0201CF5C
|
|
ldr r0, _022C138C ; =ov10_022DC1D0
|
|
ldr r1, [r0]
|
|
ldrb r0, [r1, #0x5f4]
|
|
cmp r0, #0
|
|
bne _022C1384
|
|
cmp r1, #0
|
|
ldrneb r0, [r1, #0x285]
|
|
cmpne r0, #0
|
|
ldrneb r0, [r1, #0x286]
|
|
cmpne r0, #0
|
|
beq _022C1384
|
|
mov r8, #0
|
|
mov r5, r8
|
|
mov r4, #1
|
|
mov fp, r8
|
|
_022C123C:
|
|
ldr r0, _022C138C ; =ov10_022DC1D0
|
|
mov sb, #0
|
|
ldr r1, [r0]
|
|
mov r0, #0x5c
|
|
mul r2, r8, r0
|
|
add r3, r1, #0x480
|
|
add r1, r1, #0x88
|
|
mov r0, #0x7c
|
|
mla r6, r8, r0, r1
|
|
ldrb r0, [r3, r2]
|
|
add r7, r3, r2
|
|
cmp r0, #0
|
|
ldrnesh r2, [r7, #0x52]
|
|
cmpne r2, #0
|
|
beq _022C1378
|
|
ldr r0, _022C1390 ; =WAN_TABLE
|
|
ldr r1, [r0]
|
|
mov r0, #0x38
|
|
smlabb r0, r2, r0, r1
|
|
ldr r0, [r0, #0x30]
|
|
cmp r0, #0
|
|
beq _022C1378
|
|
mov r0, r6
|
|
bl sub_0201D1B0
|
|
cmp r0, #0
|
|
moveq sb, #1
|
|
cmp sb, #0
|
|
beq _022C12EC
|
|
ldrsh r1, [r7, #0x52]
|
|
mov r0, r6
|
|
bl SetSpriteIdForAnimationControl
|
|
bl Rand16Bit
|
|
mov r3, #0x14
|
|
and r1, r0, #3
|
|
and r0, r8, #0xff
|
|
stmia sp, {r0, r1, r5}
|
|
mul r3, r8, r3
|
|
str r4, [sp, #0xc]
|
|
mov r3, r3, lsl #0x10
|
|
ldrsh r1, [r7, #0x54]
|
|
mov r0, r6
|
|
mov r2, #7
|
|
mov r3, r3, asr #0x10
|
|
bl SetAndPlayAnimationForAnimationControl
|
|
_022C12EC:
|
|
mov r1, r8, lsr #0x1f
|
|
rsb r0, r1, r8, lsl #31
|
|
add r0, r1, r0, ror #31
|
|
mov r0, r0, lsl #7
|
|
add sl, r0, #0x60
|
|
add r0, r8, r8, lsr #31
|
|
mov r1, r0, asr #1
|
|
mov r0, #0x60
|
|
mul r0, r1, r0
|
|
strh fp, [r6, #0x38]
|
|
ldrh r1, [r6, #2]
|
|
add sb, r0, #0x50
|
|
mov r0, r6
|
|
orr r1, r1, #0x20
|
|
strh r1, [r6, #2]
|
|
ldr r1, _022C1394 ; =0x0000F3FF
|
|
strh r1, [r6, #0x14]
|
|
strh sl, [r6, #0x1c]
|
|
strh sb, [r6, #0x1e]
|
|
bl sub_0201CF5C
|
|
mov r2, r6
|
|
add r0, sp, #0x10
|
|
mov r1, #4
|
|
bl sub_0201D034
|
|
ldrb r0, [r7, #0x4f]
|
|
cmp r0, #0
|
|
beq _022C1378
|
|
str sb, [sp]
|
|
add r0, sp, #0x10
|
|
str r0, [sp, #4]
|
|
ldrsh r1, [r7, #0x42]
|
|
ldr r0, [r7, #0x44]
|
|
mov r3, sl
|
|
mov r2, r8
|
|
bl ov29_022DD83C
|
|
_022C1378:
|
|
add r8, r8, #1
|
|
cmp r8, #4
|
|
blt _022C123C
|
|
_022C1384:
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_022C138C: .word ov10_022DC1D0
|
|
_022C1390: .word WAN_TABLE
|
|
_022C1394: .word 0x0000F3FF
|
|
arm_func_end ov10_022C11D8
|
|
|
|
arm_func_start ov10_022C1398
|
|
ov10_022C1398: ; 0x022C1398
|
|
ldr r0, _022C13AC ; =ov10_022DC1D0
|
|
ldr ip, _022C13B0 ; =ov10_022C231C
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x2d8
|
|
bx ip
|
|
.align 2, 0
|
|
_022C13AC: .word ov10_022DC1D0
|
|
_022C13B0: .word ov10_022C231C
|
|
arm_func_end ov10_022C1398
|
|
|
|
arm_func_start FreeTeamStats
|
|
FreeTeamStats: ; 0x022C13B4
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r0, _022C14C8 ; =ov10_022DC1D0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x2d8
|
|
bl ov10_022C2278
|
|
ldr r0, _022C14C8 ; =ov10_022DC1D0
|
|
ldr r1, _022C14CC ; =WAN_TABLE
|
|
ldr r2, [r0]
|
|
ldr r0, [r1]
|
|
ldrsh r1, [r2, #4]
|
|
bl DeleteWanTableEntryVeneer
|
|
ldr r6, _022C14C8 ; =ov10_022DC1D0
|
|
mov r5, #0
|
|
mvn r4, #1
|
|
_022C13EC:
|
|
ldr r0, [r6]
|
|
add r0, r0, r5
|
|
add r0, r0, #0x200
|
|
ldrsb r0, [r0, #0x78]
|
|
cmp r0, r4
|
|
beq _022C143C
|
|
bl sub_0202836C
|
|
ldr r0, [r6]
|
|
add r0, r0, r5
|
|
add r0, r0, #0x200
|
|
ldrsb r0, [r0, #0x78]
|
|
bl HidePortraitBox
|
|
ldr r0, [r6]
|
|
add r0, r0, r5
|
|
add r0, r0, #0x200
|
|
ldrsb r0, [r0, #0x78]
|
|
bl ClosePortraitBox
|
|
ldr r0, [r6]
|
|
add r0, r0, r5
|
|
strb r4, [r0, #0x278]
|
|
_022C143C:
|
|
add r5, r5, #1
|
|
cmp r5, #4
|
|
blt _022C13EC
|
|
ldr r6, _022C14C8 ; =ov10_022DC1D0
|
|
mov r5, #0
|
|
mvn r4, #1
|
|
_022C1454:
|
|
ldr r0, [r6]
|
|
add r0, r0, r5
|
|
add r0, r0, #0x200
|
|
ldrsb r0, [r0, #0x7c]
|
|
cmp r0, r4
|
|
beq _022C147C
|
|
bl CloseTextBox
|
|
ldr r0, [r6]
|
|
add r0, r0, r5
|
|
strb r4, [r0, #0x27c]
|
|
_022C147C:
|
|
ldr r0, [r6]
|
|
add r0, r0, r5
|
|
add r0, r0, #0x200
|
|
ldrsb r0, [r0, #0x80]
|
|
cmp r0, r4
|
|
beq _022C14A4
|
|
bl CloseTextBox
|
|
ldr r0, [r6]
|
|
add r0, r0, r5
|
|
strb r4, [r0, #0x280]
|
|
_022C14A4:
|
|
add r5, r5, #1
|
|
cmp r5, #4
|
|
blt _022C1454
|
|
ldr r0, _022C14C8 ; =ov10_022DC1D0
|
|
mov r2, #0
|
|
ldr r1, [r0]
|
|
mov r0, #1
|
|
strb r2, [r1, #0x285]
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_022C14C8: .word ov10_022DC1D0
|
|
_022C14CC: .word WAN_TABLE
|
|
arm_func_end FreeTeamStats
|
|
|
|
arm_func_start ov10_022C14D0
|
|
ov10_022C14D0: ; 0x022C14D0
|
|
stmdb sp!, {r4, lr}
|
|
sub sp, sp, #0x10
|
|
ldr r1, _022C1594 ; =ov10_022DC1D0
|
|
mov r4, r0
|
|
ldr r0, [r1]
|
|
cmp r0, #0
|
|
moveq r0, #0
|
|
beq _022C158C
|
|
mov r2, #0
|
|
strb r2, [r0, #0x285]
|
|
ldr r0, [r1]
|
|
mov r3, #1
|
|
strb r2, [r0, #0x286]
|
|
ldr r0, [r1]
|
|
add r1, r0, #0x1f8
|
|
add r0, r0, #0x2d8
|
|
add r1, r1, #0x400
|
|
bl ov10_022C1E80
|
|
bl ov10_022C1990
|
|
ldr r0, _022C1594 ; =ov10_022DC1D0
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x200
|
|
ldrsb r0, [r0, #0x84]
|
|
cmp r0, r1
|
|
bne _022C157C
|
|
ldr r0, _022C1598 ; =ov10_022DBFCC
|
|
add ip, sp, #0
|
|
ldmia r0, {r0, r1, r2, r3}
|
|
stmia ip, {r0, r1, r2, r3}
|
|
mov r0, ip
|
|
mov r1, #0
|
|
bl CreateTextBox
|
|
ldr r1, _022C1594 ; =ov10_022DC1D0
|
|
ldr r2, [r1]
|
|
strb r0, [r2, #0x284]
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x288
|
|
bl InitPreprocessorArgs
|
|
ldr r0, _022C1594 ; =ov10_022DC1D0
|
|
mov r1, #0x10000
|
|
ldr r0, [r0]
|
|
str r1, [r0, #0x2d4]
|
|
_022C157C:
|
|
mov r0, r4
|
|
mov r1, #0
|
|
bl ov10_022C0998
|
|
mov r0, #1
|
|
_022C158C:
|
|
add sp, sp, #0x10
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_022C1594: .word ov10_022DC1D0
|
|
_022C1598: .word ov10_022DBFCC
|
|
arm_func_end ov10_022C14D0
|
|
|
|
arm_func_start ov10_022C159C
|
|
ov10_022C159C: ; 0x022C159C
|
|
#ifdef EUROPE
|
|
#define OV10_022C159C_STACK_OFFSET #0x154
|
|
#else
|
|
#define OV10_022C159C_STACK_OFFSET #0x54
|
|
#endif
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, OV10_022C159C_STACK_OFFSET
|
|
sub sp, sp, #0x400
|
|
ldr r0, _022C16CC ; =ov10_022DC1D0
|
|
mov r2, #0
|
|
ldr r1, [r0]
|
|
strb r2, [r1, #0x5f2]
|
|
ldr r0, [r0]
|
|
strb r2, [r0, #0x286]
|
|
bl ov10_022C1A04
|
|
cmp r0, #0
|
|
beq _022C16C0
|
|
ldr r0, _022C16CC ; =ov10_022DC1D0
|
|
ldr r1, [r0]
|
|
add r0, r1, #0x200
|
|
ldrsb sl, [r0, #0x84]
|
|
add r4, r1, #0x480
|
|
mov r0, sl
|
|
bl sub_02027B1C
|
|
mov sb, #0
|
|
mov r5, sb
|
|
add fp, sp, #4
|
|
_022C15F4:
|
|
mov r0, #0x5c
|
|
mul r1, r5, r0
|
|
ldrb r0, [r4, r1]
|
|
cmp r0, #0
|
|
beq _022C169C
|
|
add r0, r4, r1
|
|
#ifdef EUROPE
|
|
ldrsh r8, [r0, #0x48]
|
|
ldrsh r6, [r0, #0x4a]
|
|
ldrsh r7, [r0, #0x4c]
|
|
#else
|
|
ldrsh r6, [r0, #0x4a]
|
|
ldrsh r7, [r0, #0x4c]
|
|
ldrsh r8, [r0, #0x48]
|
|
#endif
|
|
add r1, r0, #1
|
|
add r0, sp, OV10_022C159C_STACK_OFFSET
|
|
bl strcpy
|
|
mov r0, sl
|
|
mov r1, #0
|
|
mov r2, sb
|
|
add r3, sp, OV10_022C159C_STACK_OFFSET
|
|
bl DrawTextInWindow
|
|
#ifdef EUROPE
|
|
mov r1, r8
|
|
add r0, sp, #0x54
|
|
bl sub_02025010_EU
|
|
ldr r1, _022C16D0 ; =ov10_022DC00C
|
|
add r0, sp, #0x154
|
|
add r2, sp, #0x54
|
|
#else
|
|
ldr r1, _022C16D0 ; =ov10_022DC00C
|
|
mov r2, r8
|
|
add r0, sp, #0x54
|
|
#endif
|
|
bl SprintfStatic__022C183C
|
|
mov r0, sl
|
|
#ifdef JAPAN
|
|
mov r1, #0x38
|
|
#else
|
|
mov r1, #0x44
|
|
#endif
|
|
mov r2, sb
|
|
add r3, sp, OV10_022C159C_STACK_OFFSET
|
|
bl DrawTextInWindow
|
|
mov r0, fp
|
|
bl InitPreprocessorArgs
|
|
ldr r2, _022C16D4 ; =ov10_022DC014
|
|
str r6, [sp, #0x28]
|
|
str r7, [sp, #0x2c]
|
|
add r0, sp, OV10_022C159C_STACK_OFFSET
|
|
mov r1, #0x400
|
|
mov r3, #0
|
|
str fp, [sp]
|
|
bl PreprocessString
|
|
mov r0, sl
|
|
mov r1, #0x80
|
|
mov r2, sb
|
|
add r3, sp, OV10_022C159C_STACK_OFFSET
|
|
bl DrawTextInWindow
|
|
add sb, sb, #0xc
|
|
_022C169C:
|
|
add r5, r5, #1
|
|
cmp r5, #4
|
|
blt _022C15F4
|
|
mov r0, sl
|
|
bl UpdateWindow
|
|
ldr r0, _022C16CC ; =ov10_022DC1D0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x2d8
|
|
bl ov10_022C21D8
|
|
_022C16C0:
|
|
add sp, sp, OV10_022C159C_STACK_OFFSET
|
|
add sp, sp, #0x400
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_022C16CC: .word ov10_022DC1D0
|
|
_022C16D0: .word ov10_022DC00C
|
|
_022C16D4: .word ov10_022DC014
|
|
arm_func_end ov10_022C159C
|
|
|
|
arm_func_start FreeMapAndTeam
|
|
FreeMapAndTeam: ; 0x022C16D8
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _022C1744 ; =ov10_022DC1D0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x2d8
|
|
bl ov10_022C2278
|
|
ldr r0, _022C1744 ; =ov10_022DC1D0
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x200
|
|
ldrsb r0, [r0, #0x84]
|
|
cmp r0, r1
|
|
beq _022C171C
|
|
bl CloseTextBox2
|
|
ldr r0, _022C1744 ; =ov10_022DC1D0
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
strb r1, [r0, #0x284]
|
|
_022C171C:
|
|
ldr r1, _022C1744 ; =ov10_022DC1D0
|
|
mov r3, #0
|
|
ldr r2, [r1]
|
|
mov r0, #1
|
|
strb r3, [r2, #0x285]
|
|
ldr r2, [r1]
|
|
strb r3, [r2, #0x286]
|
|
ldr r1, [r1]
|
|
strb r3, [r1, #0x5f2]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_022C1744: .word ov10_022DC1D0
|
|
arm_func_end FreeMapAndTeam
|
|
|
|
arm_func_start ProcessTeamStatsLvHp
|
|
ProcessTeamStatsLvHp: ; 0x022C1748
|
|
#if defined(EUROPE)
|
|
#define OV10_022C1748_STACK_OFFSET 0x40
|
|
#elif defined(JAPAN)
|
|
#define OV10_022C1748_STACK_OFFSET -0x100
|
|
#else
|
|
#define OV10_022C1748_STACK_OFFSET 0
|
|
#endif
|
|
stmdb sp!, {r4, r5, lr}
|
|
sub sp, sp, #0x254 + OV10_022C1748_STACK_OFFSET
|
|
mov r4, r0
|
|
mvn r0, #1
|
|
cmp r4, r0
|
|
beq _022C182C
|
|
ldr r0, _022C1834 ; =ov10_022DC1D0
|
|
mov r3, #0
|
|
ldr r1, [r0]
|
|
add r2, r1, #0x480
|
|
b _022C178C
|
|
_022C1774:
|
|
add r0, r1, r3
|
|
add r0, r0, #0x200
|
|
ldrsb r0, [r0, #0x80]
|
|
cmp r4, r0
|
|
beq _022C1794
|
|
add r3, r3, #1
|
|
_022C178C:
|
|
cmp r3, #4
|
|
blt _022C1774
|
|
_022C1794:
|
|
cmp r3, #4
|
|
beq _022C182C
|
|
mov r0, #0x5c
|
|
mul r1, r3, r0
|
|
ldrb r0, [r2, r1]
|
|
add r5, r2, r1
|
|
cmp r0, #0
|
|
mov r0, r4
|
|
bne _022C17C8
|
|
bl ClearWindow
|
|
mov r0, r4
|
|
bl UpdateWindow
|
|
b _022C182C
|
|
_022C17C8:
|
|
bl ClearWindow
|
|
#ifdef JAPAN
|
|
ldrsh r2, [r5, #0x48]
|
|
ldr r1, _022C1838 ; =ov10_022DC02C
|
|
add r0, sp, #0x54
|
|
bl SprintfStatic__022C183C
|
|
mov r1, #0
|
|
add r3, sp, #0x54
|
|
mov r0, r4
|
|
mov r2, r1
|
|
bl DrawTextInWindow
|
|
add r0, sp, #4
|
|
bl InitPreprocessorArgs
|
|
ldrsh r1, [r5, #0x4a]
|
|
add r3, sp, #4
|
|
ldr r2, _022C2FA4 ; =ov10_022DC014
|
|
str r1, [sp, #0x28]
|
|
ldrsh ip, [r5, #0x4c]
|
|
add r0, sp, #0x54
|
|
mov r1, #0x100
|
|
str ip, [sp, #0x2c]
|
|
str r3, [sp]
|
|
mov r3, #0
|
|
bl PreprocessString
|
|
mov r0, r4
|
|
mov r1, #0
|
|
mov r2, #0x10
|
|
#else
|
|
add r0, sp, #0x104 + OV10_022C1748_STACK_OFFSET
|
|
bl InitPreprocessorArgs
|
|
#ifdef EUROPE
|
|
ldrsh r1, [r5, #0x4a]
|
|
add r0, sp, #4
|
|
str r1, [sp, #0x168]
|
|
ldrsh r1, [r5, #0x4c]
|
|
str r1, [sp, #0x16c]
|
|
ldrsh r1, [r5, #0x48]
|
|
bl sub_02025010_EU
|
|
ldr r1, _022C1838 ; =ov10_022DC02C
|
|
add r0, sp, #0x44
|
|
add r2, sp, #4
|
|
#else
|
|
ldrsh r2, [r5, #0x4a]
|
|
ldr r1, _022C1838 ; =ov10_022DC02C
|
|
add r0, sp, #4
|
|
str r2, [sp, #0x128]
|
|
ldrsh r2, [r5, #0x4c]
|
|
str r2, [sp, #0x12c]
|
|
ldrsh r2, [r5, #0x48]
|
|
#endif
|
|
bl SprintfStatic__022C183C
|
|
add r1, sp, #0x104 + OV10_022C1748_STACK_OFFSET
|
|
str r1, [sp]
|
|
add r0, sp, #0x154 + OV10_022C1748_STACK_OFFSET
|
|
mov r1, #0x100
|
|
add r2, sp, #4 + OV10_022C1748_STACK_OFFSET
|
|
mov r3, #0
|
|
bl PreprocessString
|
|
mov r1, #0
|
|
mov r0, r4
|
|
mov r2, r1
|
|
#endif
|
|
add r3, sp, #0x154 + OV10_022C1748_STACK_OFFSET
|
|
bl DrawTextInWindow
|
|
mov r0, r4
|
|
bl UpdateWindow
|
|
_022C182C:
|
|
add sp, sp, #0x254 + OV10_022C1748_STACK_OFFSET
|
|
ldmia sp!, {r4, r5, pc}
|
|
.align 2, 0
|
|
_022C1834: .word ov10_022DC1D0
|
|
#ifdef JAPAN
|
|
_022C1838: .word ov10_022DC00C
|
|
_022C2FA4: .word ov10_022DC014
|
|
#else
|
|
_022C1838: .word ov10_022DC02C
|
|
#endif
|
|
arm_func_end ProcessTeamStatsLvHp
|
|
|
|
arm_func_start SprintfStatic__022C183C
|
|
SprintfStatic__022C183C: ; 0x022C183C
|
|
stmdb sp!, {r0, r1, r2, r3}
|
|
stmdb sp!, {r3, lr}
|
|
add r2, sp, #0xc
|
|
bic r2, r2, #3
|
|
ldr r1, [sp, #0xc]
|
|
add r2, r2, #4
|
|
bl vsprintf
|
|
ldmia sp!, {r3, lr}
|
|
add sp, sp, #0x10
|
|
bx lr
|
|
arm_func_end SprintfStatic__022C183C
|
|
|
|
arm_func_start ProcessTeamStatsNameGender
|
|
ProcessTeamStatsNameGender: ; 0x022C1864
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
#ifdef JAPAN
|
|
ldr r1, _022C1984 ; =ov10_022DC1D0
|
|
mov r4, r0
|
|
#else
|
|
sub sp, sp, #0x258
|
|
ldr r1, _022C1984 ; =ov10_022DC1D0
|
|
mov r5, r0
|
|
#endif
|
|
ldr r1, [r1]
|
|
mov r3, #0
|
|
add r2, r1, #0x480
|
|
b _022C189C
|
|
_022C1884:
|
|
add r0, r1, r3
|
|
add r0, r0, #0x200
|
|
ldrsb r0, [r0, #0x7c]
|
|
#ifdef JAPAN
|
|
cmp r4, r0
|
|
#else
|
|
cmp r5, r0
|
|
#endif
|
|
beq _022C18A4
|
|
add r3, r3, #1
|
|
_022C189C:
|
|
cmp r3, #4
|
|
blt _022C1884
|
|
_022C18A4:
|
|
cmp r3, #4
|
|
#ifdef JAPAN
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
#else
|
|
beq _022C197C
|
|
#endif
|
|
mov r0, #0x5c
|
|
mul r1, r3, r0
|
|
ldrb r0, [r2, r1]
|
|
#ifdef JAPAN
|
|
add r5, r2, r1
|
|
cmp r0, #0
|
|
mov r0, r4
|
|
bne _022C3040
|
|
bl ClearWindow
|
|
mov r0, r4
|
|
bl UpdateWindow
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_022C3040:
|
|
bl ClearWindow
|
|
mov r1, #0
|
|
mov r0, r4
|
|
mov r2, r1
|
|
add r3, r5, #1
|
|
bl DrawTextInWindow
|
|
ldrsh r0, [r5, #0x42]
|
|
bl GetMonsterGenderVeneer
|
|
cmp r0, #1
|
|
bne _022C3080
|
|
ldr r3, _022C30C4 ; =ov10_022DC02C
|
|
mov r0, r4
|
|
mov r1, #0x10
|
|
mov r2, #0xc
|
|
bl DrawTextInWindow
|
|
b _022C30B4
|
|
_022C3080:
|
|
ldrsh r0, [r5, #0x42]
|
|
bl GetMonsterGenderVeneer
|
|
cmp r0, #2
|
|
mov r1, #0x10
|
|
mov r2, #0xc
|
|
bne _022C30A8
|
|
ldr r3, _022C30C8_JP ; =ov10_022DD718_JP
|
|
mov r0, r4
|
|
bl DrawTextInWindow
|
|
b _022C30B4
|
|
_022C30A8:
|
|
ldr r3, _022C30CC ; =ov10_022DD71C_JP
|
|
mov r0, r4
|
|
bl DrawTextInWindow
|
|
_022C30B4:
|
|
mov r0, r4
|
|
bl UpdateWindow
|
|
#else
|
|
add r4, r2, r1
|
|
cmp r0, #0
|
|
bne _022C18D8
|
|
mov r0, r5
|
|
bl ClearWindow
|
|
mov r0, r5
|
|
bl UpdateWindow
|
|
b _022C197C
|
|
_022C18D8:
|
|
ldr r1, _022C1988 ; =ov10_022DBFB0
|
|
mov r0, r5
|
|
ldrb r2, [r1]
|
|
strb r2, [sp, #4]
|
|
ldrb r1, [r1, #1]
|
|
strb r1, [sp, #5]
|
|
bl ClearWindow
|
|
add r0, sp, #8
|
|
bl InitPreprocessorArgs
|
|
ldrsh r0, [r4, #0x42]
|
|
bl GetMonsterGenderVeneer
|
|
cmp r0, #1
|
|
moveq r0, #0xbd
|
|
streqb r0, [sp, #4]
|
|
beq _022C1930
|
|
ldrsh r0, [r4, #0x42]
|
|
bl GetMonsterGenderVeneer
|
|
cmp r0, #2
|
|
moveq r0, #0xbe
|
|
streqb r0, [sp, #4]
|
|
movne r0, #0x2d
|
|
strneb r0, [sp, #4]
|
|
_022C1930:
|
|
ldr r1, _022C198C ; =ov10_022DC058
|
|
add r0, sp, #0x158
|
|
add r3, sp, #4
|
|
add r2, r4, #1
|
|
bl SprintfStatic__022C183C
|
|
add r4, sp, #8
|
|
add r0, sp, #0x58
|
|
add r2, sp, #0x158
|
|
mov r1, #0x100
|
|
mov r3, #0
|
|
str r4, [sp]
|
|
bl PreprocessString
|
|
mov r1, #0
|
|
add r3, sp, #0x58
|
|
mov r0, r5
|
|
mov r2, r1
|
|
bl DrawTextInWindow
|
|
mov r0, r5
|
|
bl UpdateWindow
|
|
_022C197C:
|
|
add sp, sp, #0x258
|
|
#endif
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_022C1984: .word ov10_022DC1D0
|
|
#ifdef JAPAN
|
|
_022C30C4: .word ov10_022DC02C
|
|
_022C30C8_JP: .word ov10_022DD718_JP
|
|
_022C30CC: .word ov10_022DD71C_JP
|
|
#else
|
|
_022C1988: .word ov10_022DBFB0
|
|
_022C198C: .word ov10_022DC058
|
|
#endif
|
|
arm_func_end ProcessTeamStatsNameGender
|
|
|
|
arm_func_start ov10_022C1990
|
|
ov10_022C1990: ; 0x022C1990
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
ldr r8, _022C1A00 ; =ov10_022DC1D0
|
|
mov r4, #0
|
|
ldr r0, [r8]
|
|
mov r6, #0x5c
|
|
str r4, [r0]
|
|
mov r7, #0x7c
|
|
_022C19AC:
|
|
mul r5, r4, r6
|
|
ldr r0, [r8]
|
|
add r0, r0, #0x310
|
|
add r0, r0, r5
|
|
bl ov10_022C1D40
|
|
ldr r0, [r8]
|
|
add r0, r0, #0x480
|
|
add r0, r0, r5
|
|
bl ov10_022C1D40
|
|
ldr r0, [r8]
|
|
add r0, r0, #0x88
|
|
mla r0, r4, r7, r0
|
|
bl sub_0201C138
|
|
add r4, r4, #1
|
|
cmp r4, #4
|
|
blt _022C19AC
|
|
ldr r0, _022C1A00 ; =ov10_022DC1D0
|
|
mov r1, #0
|
|
ldr r0, [r0]
|
|
strb r1, [r0, #0x286]
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
_022C1A00: .word ov10_022DC1D0
|
|
arm_func_end ov10_022C1990
|
|
|
|
arm_func_start ov10_022C1A04
|
|
ov10_022C1A04: ; 0x022C1A04
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x14
|
|
ldr r0, _022C1CD0 ; =ov10_022DC1D0
|
|
ldr r3, _022C1CD4 ; =ov10_022DBFB6
|
|
ldr r0, [r0]
|
|
add r2, sp, #0x10
|
|
ldr sb, [r0]
|
|
add fp, r0, #0x310
|
|
add r4, r0, #0x480
|
|
mov r1, #4
|
|
_022C1A2C:
|
|
ldrb r0, [r3], #1
|
|
subs r1, r1, #1
|
|
strb r0, [r2], #1
|
|
bne _022C1A2C
|
|
ldr r3, _022C1CD8 ; =ov10_022DBFBE
|
|
add r2, sp, #0xc
|
|
mov r1, #4
|
|
_022C1A48:
|
|
ldrb r0, [r3], #1
|
|
subs r1, r1, #1
|
|
strb r0, [r2], #1
|
|
bne _022C1A48
|
|
ldr r3, _022C1CDC ; =ov10_022DBFB2
|
|
add r2, sp, #8
|
|
mov r1, #4
|
|
_022C1A64:
|
|
ldrb r0, [r3], #1
|
|
subs r1, r1, #1
|
|
strb r0, [r2], #1
|
|
bne _022C1A64
|
|
ldr r3, _022C1CE0 ; =ov10_022DBFBA
|
|
add r2, sp, #4
|
|
mov r1, #4
|
|
_022C1A80:
|
|
ldrb r0, [r3], #1
|
|
subs r1, r1, #1
|
|
strb r0, [r2], #1
|
|
bne _022C1A80
|
|
mov sl, #0
|
|
mov r8, sl
|
|
str sl, [sp]
|
|
mov r7, r8
|
|
b _022C1C1C
|
|
_022C1AA4:
|
|
mov r0, #0x5c
|
|
mul r1, r7, r0
|
|
ldrb r0, [fp, r1]
|
|
cmp r0, #0
|
|
beq _022C1C24
|
|
add r5, fp, r1
|
|
ldrsh r0, [r5, #0x54]
|
|
add r6, r4, r1
|
|
strh r0, [r6, #0x54]
|
|
ldr r1, [r5, #0x44]
|
|
ldr r0, [r6, #0x44]
|
|
cmp r1, r0
|
|
addne r0, sp, #0x10
|
|
movne r1, #1
|
|
strneb r1, [r0, r7]
|
|
add r0, r5, #1
|
|
add r1, r6, #1
|
|
bl strcmp
|
|
cmp r0, #0
|
|
addne r0, sp, #8
|
|
movne r1, #1
|
|
strneb r1, [r0, r7]
|
|
ldrsh r1, [r5, #0x4a]
|
|
ldrsh r0, [r6, #0x4a]
|
|
cmp r1, r0
|
|
addne r0, sp, #0x10
|
|
movne r1, #1
|
|
strneb r1, [r0, r7]
|
|
ldrsh r1, [r5, #0x4c]
|
|
ldrsh r0, [r6, #0x4c]
|
|
cmp r1, r0
|
|
addne r0, sp, #0x10
|
|
movne r1, #1
|
|
strneb r1, [r0, r7]
|
|
ldrsh r1, [r5, #0x48]
|
|
ldrsh r0, [r6, #0x48]
|
|
cmp r1, r0
|
|
addne r0, sp, #0x10
|
|
movne r1, #1
|
|
strneb r1, [r0, r7]
|
|
ldrsh r0, [r5, #0x42]
|
|
ldrsh r1, [r6, #0x42]
|
|
cmp r0, r1
|
|
beq _022C1B88
|
|
add r3, sp, #0x10
|
|
mov ip, #1
|
|
add r2, sp, #0xc
|
|
add r1, sp, #4
|
|
strb ip, [r3, r7]
|
|
strb ip, [r2, r7]
|
|
strb ip, [r1, r7]
|
|
ldrsh r1, [r6, #0x42]
|
|
bl GendersEqual
|
|
cmp r0, #0
|
|
addeq r0, sp, #8
|
|
moveq r1, #1
|
|
streqb r1, [r0, r7]
|
|
_022C1B88:
|
|
ldrb r1, [r5, #0x4e]
|
|
ldrb r0, [r6, #0x4e]
|
|
cmp r1, r0
|
|
movne r0, #1
|
|
addne r1, sp, #0x10
|
|
strne r0, [sp]
|
|
strneb r0, [r1, r7]
|
|
add r0, sp, #0x10
|
|
ldrb r0, [r0, r7]
|
|
cmp r0, #0
|
|
addeq r0, sp, #0xc
|
|
ldreqb r0, [r0, r7]
|
|
cmpeq r0, #0
|
|
addeq r0, sp, #8
|
|
ldreqb r0, [r0, r7]
|
|
cmpeq r0, #0
|
|
addeq r0, sp, #4
|
|
ldreqb r0, [r0, r7]
|
|
cmpeq r0, #0
|
|
beq _022C1C14
|
|
mov ip, #5
|
|
_022C1BDC:
|
|
ldmia r5!, {r0, r1, r2, r3}
|
|
stmia r6!, {r0, r1, r2, r3}
|
|
subs ip, ip, #1
|
|
bne _022C1BDC
|
|
ldmia r5, {r0, r1, r2}
|
|
stmia r6, {r0, r1, r2}
|
|
add r0, sp, #4
|
|
ldrb r0, [r0, r7]
|
|
cmp r0, #0
|
|
ldrne r0, _022C1CD0 ; =ov10_022DC1D0
|
|
movne r1, #1
|
|
ldrne r0, [r0]
|
|
addne r0, r0, r7
|
|
strneb r1, [r0, #0x84]
|
|
_022C1C14:
|
|
add r8, r8, #1
|
|
add r7, r7, #1
|
|
_022C1C1C:
|
|
cmp r7, #4
|
|
blt _022C1AA4
|
|
_022C1C24:
|
|
mov r5, #0x5c
|
|
b _022C1C38
|
|
_022C1C2C:
|
|
mla r0, r7, r5, r4
|
|
bl ov10_022C1D40
|
|
add r7, r7, #1
|
|
_022C1C38:
|
|
cmp r7, #4
|
|
blt _022C1C2C
|
|
ldr r0, [sp]
|
|
ldr r1, _022C1CD0 ; =ov10_022DC1D0
|
|
cmp r0, #0
|
|
ldr r0, [r1]
|
|
cmpeq sb, r8
|
|
str r8, [r0]
|
|
beq _022C1C6C
|
|
ldr r0, _022C1CE4 ; =0x0000FFFF
|
|
cmp sb, r8
|
|
orrlt r0, r0, #0x80000
|
|
b _022C1CC8
|
|
_022C1C6C:
|
|
mov r7, #0
|
|
mov r5, #1
|
|
mov r3, #2
|
|
add r4, sp, #8
|
|
mov r1, #4
|
|
add r2, sp, #0xc
|
|
add r6, sp, #0x10
|
|
_022C1C88:
|
|
ldrb r0, [r6, r7]
|
|
cmp r0, #0
|
|
movne r0, r7, lsl #2
|
|
orrne sl, sl, r5, lsl r0
|
|
ldrb r0, [r4, r7]
|
|
cmp r0, #0
|
|
movne r0, r7, lsl #2
|
|
orrne sl, sl, r3, lsl r0
|
|
ldrb r0, [r2, r7]
|
|
cmp r0, #0
|
|
movne r0, r7, lsl #2
|
|
add r7, r7, #1
|
|
orrne sl, sl, r1, lsl r0
|
|
cmp r7, #4
|
|
blt _022C1C88
|
|
mov r0, sl
|
|
_022C1CC8:
|
|
add sp, sp, #0x14
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_022C1CD0: .word ov10_022DC1D0
|
|
_022C1CD4: .word ov10_022DBFB6
|
|
_022C1CD8: .word ov10_022DBFBE
|
|
_022C1CDC: .word ov10_022DBFB2
|
|
_022C1CE0: .word ov10_022DBFBA
|
|
_022C1CE4: .word 0x0000FFFF
|
|
arm_func_end ov10_022C1A04
|
|
|
|
#ifndef JAPAN
|
|
arm_func_start ov10_022C1CE8
|
|
ov10_022C1CE8: ; 0x022C1CE8
|
|
ldr r2, _022C1D38 ; =0x0000017B
|
|
cmp r0, r2
|
|
cmpne r0, #0x17c
|
|
addne r1, r2, #2
|
|
cmpne r0, r1
|
|
addne r1, r2, #3
|
|
cmpne r0, r1
|
|
beq _022C1D28
|
|
ldr r1, _022C1D3C ; =0xFFFFFC2D
|
|
add r0, r0, r1
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
cmp r0, #3
|
|
bhi _022C1D30
|
|
_022C1D28:
|
|
mov r0, #1
|
|
bx lr
|
|
_022C1D30:
|
|
mov r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_022C1D38: .word 0x0000017B
|
|
_022C1D3C: .word 0xFFFFFC2D
|
|
arm_func_end ov10_022C1CE8
|
|
#endif
|
|
|
|
arm_func_start ov10_022C1D40
|
|
ov10_022C1D40: ; 0x022C1D40
|
|
mov r2, #0
|
|
strb r2, [r0]
|
|
sub r1, r2, #1
|
|
strh r1, [r0, #0x4a]
|
|
strh r1, [r0, #0x4c]
|
|
str r1, [r0, #0x44]
|
|
strb r2, [r0, #0x4f]
|
|
strh r2, [r0, #0x52]
|
|
str r2, [r0, #0x58]
|
|
ldr ip, _022C1D74 ; =MemZero
|
|
add r0, r0, #1
|
|
mov r1, #0x40
|
|
bx ip
|
|
.align 2, 0
|
|
_022C1D74: .word MemZero
|
|
arm_func_end ov10_022C1D40
|
|
|
|
arm_func_start ov10_022C1D78
|
|
ov10_022C1D78: ; 0x022C1D78
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r4, r0
|
|
mov r6, r1
|
|
mov ip, #1
|
|
mov r1, r2
|
|
add r0, r4, #1
|
|
mov r5, r3
|
|
strb ip, [r4]
|
|
bl strcpy
|
|
strh r5, [r4, #0x42]
|
|
ldrsh r1, [sp, #0x10]
|
|
str r6, [r4, #0x44]
|
|
ldrsh r0, [sp, #0x14]
|
|
strh r1, [r4, #0x48]
|
|
ldrsh r1, [sp, #0x18]
|
|
strh r0, [r4, #0x4a]
|
|
ldrsh r0, [sp, #0x1c]
|
|
strh r1, [r4, #0x4c]
|
|
mov r1, #0
|
|
strb r1, [r4, #0x4f]
|
|
strb r1, [r4, #0x56]
|
|
strh r0, [r4, #0x52]
|
|
str r1, [r4, #0x58]
|
|
strb r1, [r4, #0x4e]
|
|
strh r1, [r4, #0x54]
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end ov10_022C1D78
|
|
|
|
arm_func_start ov10_022C1DE0
|
|
ov10_022C1DE0: ; 0x022C1DE0
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r4, r0
|
|
mov r6, r1
|
|
mov ip, #1
|
|
mov r1, r2
|
|
add r0, r4, #1
|
|
mov r5, r3
|
|
strb ip, [r4]
|
|
bl strcpy
|
|
strh r5, [r4, #0x42]
|
|
ldrsh r1, [sp, #0x10]
|
|
str r6, [r4, #0x44]
|
|
ldrsh r0, [sp, #0x14]
|
|
strh r1, [r4, #0x48]
|
|
ldrsh r1, [sp, #0x18]
|
|
strh r0, [r4, #0x4a]
|
|
ldrsh r0, [sp, #0x1c]
|
|
strh r1, [r4, #0x4c]
|
|
mov r1, #1
|
|
strb r1, [r4, #0x4f]
|
|
strb r1, [r4, #0x56]
|
|
strh r0, [r4, #0x52]
|
|
mov r1, #0
|
|
strb r1, [r4, #0x4e]
|
|
ldrsh r0, [sp, #0x20]
|
|
str r1, [r4, #0x58]
|
|
strh r0, [r4, #0x54]
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end ov10_022C1DE0
|
|
|
|
arm_func_start ov10_022C1E50
|
|
ov10_022C1E50: ; 0x022C1E50
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
mov r5, #0
|
|
mov r4, #0x5c
|
|
_022C1E60:
|
|
smlabb r0, r5, r4, r6
|
|
bl ov10_022C1D40
|
|
add r0, r5, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r5, r0, asr #0x10
|
|
cmp r5, #4
|
|
blt _022C1E60
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end ov10_022C1E50
|
|
|
|
arm_func_start ov10_022C1E80
|
|
ov10_022C1E80: ; 0x022C1E80
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
|
|
sub sp, sp, #0x14
|
|
movs r7, r2
|
|
movne r4, #0xf
|
|
mov sb, r0
|
|
mov r8, r1
|
|
mov r6, r3
|
|
moveq r4, #0x300
|
|
bl GetGameMode
|
|
cmp r0, #3
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
strb r0, [sb, #0x21]
|
|
tst r0, #0xff
|
|
add r1, sp, #0
|
|
beq _022C1ED0
|
|
ldr r0, _022C1F88 ; =ov10_022DC06C
|
|
mov r2, r4
|
|
bl sub_020522F0
|
|
b _022C1EDC
|
|
_022C1ED0:
|
|
ldr r0, _022C1F8C ; =ov10_022DC080
|
|
mov r2, r4
|
|
bl sub_020522F0
|
|
_022C1EDC:
|
|
add r5, sp, #0
|
|
ldmia r5!, {r0, r1, r2, r3}
|
|
mov r4, sb
|
|
stmia r4!, {r0, r1, r2, r3}
|
|
ldr r0, [r5]
|
|
mov lr, r8
|
|
str r0, [r4]
|
|
ldr r0, [sp, #0xc]
|
|
add ip, sb, #0x24
|
|
str r0, [sb, #0x14]
|
|
ldr r0, [sp, #4]
|
|
mov r5, #0
|
|
str r0, [sb, #0x18]
|
|
ldr r4, [sp, #0x10]
|
|
str r4, [sb, #0x1c]
|
|
ldmia lr!, {r0, r1, r2, r3}
|
|
stmia ip!, {r0, r1, r2, r3}
|
|
ldr r0, [lr]
|
|
str r0, [ip]
|
|
strb r7, [sb, #0x20]
|
|
_022C1F2C:
|
|
mov r1, r5, lsl #0x10
|
|
ldr r0, [r8, #0x10]
|
|
mov r2, r4
|
|
mov r1, r1, lsr #0x10
|
|
bl sub_0200A590
|
|
add r5, r5, #1
|
|
cmp r5, #0xa0
|
|
add r4, r4, #4
|
|
blt _022C1F2C
|
|
cmp r6, #0
|
|
beq _022C1F80
|
|
ldr r0, [r8, #0x10]
|
|
bl sub_0200A504
|
|
mov r1, #1
|
|
mov r2, r1
|
|
mov r0, #0
|
|
bl GetBgRegionArea
|
|
ldr r1, [sb, #0x18]
|
|
ldr r2, [sb, #8]
|
|
mov r3, #0
|
|
bl sub_02051FB4
|
|
_022C1F80:
|
|
add sp, sp, #0x14
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
_022C1F88: .word ov10_022DC06C
|
|
_022C1F8C: .word ov10_022DC080
|
|
arm_func_end ov10_022C1E80
|
|
|
|
arm_func_start ov10_022C1F90
|
|
ov10_022C1F90: ; 0x022C1F90
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x10
|
|
mov sl, r0
|
|
mov sb, r2
|
|
mov r8, r3
|
|
cmp r1, #0
|
|
beq _022C2040
|
|
ldr fp, _022C21D0 ; =ov10_022DC1D4
|
|
mov r8, #0
|
|
mov r5, sb, lsl #4
|
|
add r4, fp, sb, lsl #4
|
|
_022C1FBC:
|
|
mov r7, #0
|
|
mov r6, r8, lsl #5
|
|
_022C1FC4:
|
|
ldrsh r1, [fp, r5]
|
|
ldr r2, [sl, #0x14]
|
|
ldrsh r0, [r4, #2]
|
|
add r3, r7, r1
|
|
add r2, r2, r6, lsl #1
|
|
mov r1, r7, lsl #1
|
|
ldrh sb, [r1, r2]
|
|
add r0, r8, r0
|
|
add r1, sp, #8
|
|
str r3, [sp, #8]
|
|
str r0, [sp, #0xc]
|
|
ldr r0, [sl, #0x2c]
|
|
mov r2, #0
|
|
bl sub_0200B3FC
|
|
ldr r0, _022C21D4 ; =0x00000FFF
|
|
add r1, sp, #8
|
|
and r0, sb, r0
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
orr r0, r0, #0x5000
|
|
mov r0, r0, lsl #0x10
|
|
mov r2, r0, lsr #0x10
|
|
ldr r0, [sl, #0x30]
|
|
bl sub_0200B3FC
|
|
add r7, r7, #1
|
|
cmp r7, #0x10
|
|
blt _022C1FC4
|
|
add r8, r8, #1
|
|
cmp r8, #0xc
|
|
blt _022C1FBC
|
|
b _022C21C8
|
|
_022C2040:
|
|
ldrb r0, [sl, #0x21]
|
|
cmp r0, #0
|
|
movne r7, #1
|
|
bne _022C2064
|
|
cmp r8, #0
|
|
movne r0, #8
|
|
moveq r0, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r7, r0, lsr #0x10
|
|
_022C2064:
|
|
ldr r0, _022C21D0 ; =ov10_022DC1D4
|
|
mov r5, #0
|
|
add r0, r0, sb, lsl #4
|
|
mov fp, sb, lsl #4
|
|
str r0, [sp, #4]
|
|
_022C2078:
|
|
mov r6, #0
|
|
mov r4, r5, lsl #5
|
|
_022C2080:
|
|
ldr r0, [sl, #0x14]
|
|
mov r1, r6, lsl #1
|
|
add r0, r0, r4, lsl #1
|
|
ldrh r2, [r1, r0]
|
|
ldr r3, _022C21D4 ; =0x00000FFF
|
|
ldr r0, _022C21D0 ; =ov10_022DC1D4
|
|
and r2, r2, r3
|
|
ldrsh r1, [r0, fp]
|
|
ldr r0, [sp, #4]
|
|
mov r2, r2, lsl #0x10
|
|
mov r2, r2, lsr #0x10
|
|
ldrsh r0, [r0, #2]
|
|
orr r2, r2, r7, lsl #12
|
|
mov r2, r2, lsl #0x10
|
|
mov r2, r2, lsr #0x10
|
|
str r2, [sp]
|
|
add r1, r6, r1
|
|
str r1, [sp, #8]
|
|
add r0, r5, r0
|
|
str r0, [sp, #0xc]
|
|
ldr r0, [sl, #0x2c]
|
|
add r1, sp, #8
|
|
mov r2, #0
|
|
bl sub_0200B3FC
|
|
ldr r2, [sp]
|
|
ldr r0, [sl, #0x30]
|
|
add r1, sp, #8
|
|
bl sub_0200B3FC
|
|
add r6, r6, #1
|
|
cmp r6, #0x10
|
|
blt _022C2080
|
|
add r5, r5, #1
|
|
cmp r5, #0xc
|
|
blt _022C2078
|
|
ldrb r0, [sl, #0x21]
|
|
cmp r0, #0
|
|
movne r4, #0
|
|
bne _022C212C
|
|
cmp r8, #0
|
|
movne r0, #7
|
|
moveq r0, #0
|
|
mov r0, r0, lsl #0x10
|
|
mov r4, r0, lsr #0x10
|
|
_022C212C:
|
|
ldrb r0, [sl, #0x20]
|
|
cmp r0, #0
|
|
bne _022C21C8
|
|
ldr r0, _022C21D0 ; =ov10_022DC1D4
|
|
ldr fp, _022C21D4 ; =0x00000FFF
|
|
mov r7, #0
|
|
add r5, r0, sb, lsl #4
|
|
_022C2148:
|
|
mov r8, #0
|
|
mov r6, r7, lsl #5
|
|
_022C2150:
|
|
ldr r1, [sl, #0x14]
|
|
ldrsh r0, [r5, #4]
|
|
add r1, r1, r6, lsl #1
|
|
add r1, r1, r8, lsl #1
|
|
ldrh r3, [r1, #0x20]
|
|
add r2, r8, r0
|
|
ldrsh r1, [r5, #6]
|
|
and r0, r3, fp
|
|
mov r0, r0, lsl #0x10
|
|
add r1, r7, r1
|
|
mov r0, r0, lsr #0x10
|
|
orr r0, r0, r4, lsl #12
|
|
str r2, [sp, #8]
|
|
str r1, [sp, #0xc]
|
|
mov r3, r0, lsl #0x10
|
|
ldr r0, [sl, #0x2c]
|
|
add r1, sp, #8
|
|
mov r2, #0
|
|
mov sb, r3, lsr #0x10
|
|
bl sub_0200B3FC
|
|
ldr r0, [sl, #0x30]
|
|
mov r2, sb
|
|
add r1, sp, #8
|
|
bl sub_0200B3FC
|
|
add r8, r8, #1
|
|
cmp r8, #6
|
|
blt _022C2150
|
|
add r7, r7, #1
|
|
cmp r7, #6
|
|
blt _022C2148
|
|
_022C21C8:
|
|
add sp, sp, #0x10
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_022C21D0: .word ov10_022DC1D4
|
|
_022C21D4: .word 0x00000FFF
|
|
arm_func_end ov10_022C1F90
|
|
|
|
arm_func_start ov10_022C21D8
|
|
ov10_022C21D8: ; 0x022C21D8
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
sub sp, sp, #8
|
|
mov r5, r0
|
|
ldr r0, [r5, #0x14]
|
|
mov r4, #0
|
|
add r0, r0, #0x400
|
|
ldrh sl, [r0, #0x80]
|
|
add r7, sp, #0
|
|
mov r6, r4
|
|
mov r8, r4
|
|
_022C2200:
|
|
mov sb, r8
|
|
_022C2204:
|
|
str sb, [sp]
|
|
str r4, [sp, #4]
|
|
ldr r0, [r5, #0x2c]
|
|
mov r1, r7
|
|
mov r2, r6
|
|
bl sub_0200B3FC
|
|
ldr r0, [r5, #0x30]
|
|
mov r1, r7
|
|
mov r2, sl
|
|
bl sub_0200B3FC
|
|
add sb, sb, #1
|
|
cmp sb, #0x20
|
|
blt _022C2204
|
|
add r4, r4, #1
|
|
cmp r4, #0x20
|
|
blt _022C2200
|
|
ldr r0, [r5, #0x2c]
|
|
bl sub_0200B330
|
|
ldr r0, [r5, #0x30]
|
|
bl sub_0200B330
|
|
add sp, sp, #8
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
arm_func_end ov10_022C21D8
|
|
|
|
arm_func_start ov10_022C225C
|
|
ov10_022C225C: ; 0x022C225C
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
ldr r0, [r4, #0x2c]
|
|
bl sub_0200B330
|
|
ldr r0, [r4, #0x30]
|
|
bl sub_0200B330
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end ov10_022C225C
|
|
|
|
arm_func_start ov10_022C2278
|
|
ov10_022C2278: ; 0x022C2278
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
ldr r1, [r4]
|
|
cmp r1, #0
|
|
ldmeqia sp!, {r4, pc}
|
|
bl sub_02052334
|
|
mov r0, r4
|
|
mov r1, #0x14
|
|
bl MemZero
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end ov10_022C2278
|
|
|
|
arm_func_start ov10_022C22A0
|
|
ov10_022C22A0: ; 0x022C22A0
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
mov r0, #0
|
|
mov r1, r0
|
|
mov r2, #1
|
|
bl GetBgRegionArea
|
|
mov r1, #1
|
|
str r0, [r4]
|
|
mov r2, r1
|
|
mov r0, #0
|
|
bl GetBgRegionArea
|
|
str r0, [r4, #4]
|
|
mov r0, #0
|
|
mov r1, #1
|
|
bl sub_02051DFC
|
|
str r0, [r4, #8]
|
|
mov r0, #1
|
|
mov r1, r0
|
|
bl sub_02051DFC
|
|
str r0, [r4, #0xc]
|
|
mov r0, #1
|
|
bl sub_02051ED4
|
|
str r0, [r4, #0x10]
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end ov10_022C22A0
|
|
|
|
arm_func_start ov10_022C2300
|
|
ov10_022C2300: ; 0x022C2300
|
|
stmia r0, {r1, r2}
|
|
ldr r2, [sp]
|
|
str r3, [r0, #8]
|
|
ldr r1, [sp, #4]
|
|
str r2, [r0, #0xc]
|
|
str r1, [r0, #0x10]
|
|
bx lr
|
|
arm_func_end ov10_022C2300
|
|
|
|
arm_func_start ov10_022C231C
|
|
ov10_022C231C: ; 0x022C231C
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
ldr r0, [r4, #0x28]
|
|
ldr r1, [r4, #0x18]
|
|
ldr r2, [r4, #8]
|
|
bl Memcpy32
|
|
ldr r0, [r4, #0x34]
|
|
bl sub_0200A504
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end ov10_022C231C
|
|
|
|
arm_func_start ov10_022C2340
|
|
ov10_022C2340: ; 0x022C2340
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r4, r0
|
|
mov r0, #0xc
|
|
mov r1, #0
|
|
bl MemAlloc
|
|
ldr r1, _022C23AC ; =ov10_022DC214
|
|
mov r5, r4, lsl #3
|
|
str r0, [r1]
|
|
mov r0, r5
|
|
mov r1, #0
|
|
bl MemAlloc
|
|
ldr r2, _022C23AC ; =ov10_022DC214
|
|
mov r1, r5
|
|
ldr r3, [r2]
|
|
str r0, [r3]
|
|
ldr r0, [r2]
|
|
ldr r0, [r0]
|
|
bl MemZero
|
|
ldr r0, _022C23AC ; =ov10_022DC214
|
|
ldr r0, [r0]
|
|
str r4, [r0, #4]
|
|
bl Rand16Bit
|
|
ldr r1, _022C23AC ; =ov10_022DC214
|
|
and r2, r0, #0x400
|
|
ldr r0, [r1]
|
|
strh r2, [r0, #8]
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_022C23AC: .word ov10_022DC214
|
|
arm_func_end ov10_022C2340
|
|
|
|
arm_func_start ov10_022C23B0
|
|
ov10_022C23B0: ; 0x022C23B0
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _022C23E8 ; =ov10_022DC214
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
ldr r0, [r0]
|
|
bl MemFree
|
|
ldr r0, _022C23E8 ; =ov10_022DC214
|
|
ldr r0, [r0]
|
|
bl MemFree
|
|
ldr r0, _022C23E8 ; =ov10_022DC214
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_022C23E8: .word ov10_022DC214
|
|
arm_func_end ov10_022C23B0
|
|
|
|
arm_func_start ov10_022C23EC
|
|
ov10_022C23EC: ; 0x022C23EC
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r0, _022C244C ; =ov10_022DC214
|
|
ldr r1, [r0]
|
|
cmp r1, #0
|
|
ldmeqia sp!, {r4, r5, r6, pc}
|
|
ldr r0, [r1, #4]
|
|
ldr r4, [r1]
|
|
mov r0, r0, lsl #0x10
|
|
movs r6, r0, lsr #0x10
|
|
mov r5, #0
|
|
ldmeqia sp!, {r4, r5, r6, pc}
|
|
b _022C2440
|
|
_022C241C:
|
|
ldr r1, [r4]
|
|
cmp r1, #0
|
|
beq _022C2430
|
|
mov r0, r4
|
|
blx r1
|
|
_022C2430:
|
|
add r0, r5, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r5, r0, lsr #0x10
|
|
add r4, r4, #8
|
|
_022C2440:
|
|
cmp r5, r6
|
|
blo _022C241C
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_022C244C: .word ov10_022DC214
|
|
arm_func_end ov10_022C23EC
|
|
|
|
arm_func_start ov10_022C2450
|
|
ov10_022C2450: ; 0x022C2450
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r2, _022C24D4 ; =ov10_022DC214
|
|
mov r5, r0
|
|
ldr r6, [r2]
|
|
mov r4, r1
|
|
ldr r0, [r6, #4]
|
|
ldr r2, [r6]
|
|
mov r1, r0, lsl #0x10
|
|
mov r3, #0
|
|
b _022C24A4
|
|
_022C2478:
|
|
ldr r0, [r2]
|
|
cmp r0, #0
|
|
ldreqh r0, [r6, #8]
|
|
orreq r0, r3, r0
|
|
moveq r0, r0, lsl #0x10
|
|
moveq r6, r0, lsr #0x10
|
|
beq _022C24B0
|
|
add r0, r3, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r3, r0, lsr #0x10
|
|
add r2, r2, #8
|
|
_022C24A4:
|
|
cmp r3, r1, lsr #16
|
|
blo _022C2478
|
|
ldr r6, _022C24D8 ; =0x0000FFFF
|
|
_022C24B0:
|
|
ldr r0, _022C24D8 ; =0x0000FFFF
|
|
cmp r6, r0
|
|
beq _022C24CC
|
|
mov r0, r6
|
|
bl ov10_022C24E8
|
|
str r5, [r0]
|
|
str r4, [r0, #4]
|
|
_022C24CC:
|
|
mov r0, r6
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_022C24D4: .word ov10_022DC214
|
|
_022C24D8: .word 0x0000FFFF
|
|
arm_func_end ov10_022C2450
|
|
|
|
arm_func_start ov10_022C24DC
|
|
ov10_022C24DC: ; 0x022C24DC
|
|
ldr ip, _022C24E4 ; =ov10_022C250C
|
|
bx ip
|
|
.align 2, 0
|
|
_022C24E4: .word ov10_022C250C
|
|
arm_func_end ov10_022C24DC
|
|
|
|
arm_func_start ov10_022C24E8
|
|
ov10_022C24E8: ; 0x022C24E8
|
|
ldr r1, _022C2508 ; =ov10_022DC214
|
|
ldr r1, [r1]
|
|
ldrh r2, [r1, #8]
|
|
ldr r1, [r1]
|
|
sub r0, r0, r2
|
|
mov r0, r0, lsl #0x10
|
|
add r0, r1, r0, lsr #13
|
|
bx lr
|
|
.align 2, 0
|
|
_022C2508: .word ov10_022DC214
|
|
arm_func_end ov10_022C24E8
|
|
|
|
arm_func_start ov10_022C250C
|
|
ov10_022C250C: ; 0x022C250C
|
|
ldr r1, [r0, #4]
|
|
cmp r1, #0
|
|
movne r1, #0
|
|
strne r1, [r0, #4]
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
bx lr
|
|
arm_func_end ov10_022C250C
|
|
|
|
arm_func_start ov10_022C2528
|
|
ov10_022C2528: ; 0x022C2528
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
sub r0, r2, r1
|
|
mov r1, r3
|
|
bl MultiplyByFixedPoint
|
|
mov r4, r0
|
|
str r0, [r5]
|
|
bl abs
|
|
ldr r1, [sp, #0x10]
|
|
cmp r0, r1
|
|
bgt _022C256C
|
|
cmp r4, #0
|
|
rsblt r0, r1, #0
|
|
strlt r0, [r5]
|
|
strge r1, [r5]
|
|
mov r0, #1
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_022C256C:
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end ov10_022C2528
|