mirror of
https://github.com/pret/pmd-sky.git
synced 2026-04-26 00:26:19 -05:00
2482 lines
44 KiB
ArmAsm
2482 lines
44 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "overlay_29_0231CBEC.inc"
|
|
|
|
.text
|
|
|
|
arm_func_start ov29_0231CBEC
|
|
ov29_0231CBEC: ; 0x0231CBEC
|
|
stmdb sp!, {r3, lr}
|
|
ldr r2, [r1, #0xb4]
|
|
ldrb r2, [r2, #0xbf]
|
|
cmp r2, #4
|
|
bne _0231CC08
|
|
bl ov29_023061A8
|
|
ldmia sp!, {r3, pc}
|
|
_0231CC08:
|
|
ldr r2, _0231CC14 ; =0x00000BE9
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0231CC14: .word 0x00000BE9
|
|
arm_func_end ov29_0231CBEC
|
|
|
|
arm_func_start ov29_0231CC18
|
|
ov29_0231CC18: ; 0x0231CC18
|
|
stmdb sp!, {r3, lr}
|
|
ldr r2, [r1, #0xb4]
|
|
ldrb r2, [r2, #0xbf]
|
|
add r2, r2, #0xfe
|
|
and r2, r2, #0xff
|
|
cmp r2, #1
|
|
bhi _0231CC3C
|
|
bl ov29_023061A8
|
|
ldmia sp!, {r3, pc}
|
|
_0231CC3C:
|
|
ldr r2, _0231CC48 ; =0x00000BE9
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0231CC48: .word 0x00000BE9
|
|
arm_func_end ov29_0231CC18
|
|
|
|
arm_func_start ov29_0231CC4C
|
|
ov29_0231CC4C: ; 0x0231CC4C
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r4, r1
|
|
ldr r2, [r4, #0xb4]
|
|
mov r5, r0
|
|
ldrb r2, [r2, #0xbf]
|
|
cmp r2, #1
|
|
bne _0231CC70
|
|
bl ov29_023061A8
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_0231CC70:
|
|
mov r0, #0
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldr r2, _0231CC90 ; =0x00000BEA
|
|
mov r0, r5
|
|
mov r1, r4
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_0231CC90: .word 0x00000BEA
|
|
arm_func_end ov29_0231CC4C
|
|
|
|
arm_func_start ov29_0231CC94
|
|
ov29_0231CC94: ; 0x0231CC94
|
|
stmdb sp!, {r3, r4, r5, r6, lr}
|
|
sub sp, sp, #4
|
|
mov r5, r1
|
|
ldr r4, [r5, #0xb4]
|
|
mov r6, r0
|
|
ldrb r2, [r4, #7]
|
|
cmp r2, #0
|
|
beq _0231CCC4
|
|
mov r2, #0
|
|
mov r3, #5
|
|
bl ov29_023168D8
|
|
b _0231CD6C
|
|
_0231CCC4:
|
|
mov r0, #0
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
mov r0, r5
|
|
mov r1, #0x12
|
|
bl IqSkillIsEnabled
|
|
cmp r0, #0
|
|
beq _0231CCF8
|
|
ldr r2, _0231CD74 ; =0x00000BEB
|
|
mov r0, r6
|
|
mov r1, r5
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _0231CD6C
|
|
_0231CCF8:
|
|
add r0, r4, #0x100
|
|
ldrh r1, [r0, #0x46]
|
|
sub r2, sp, #4
|
|
strh r1, [r2]
|
|
ldrh r0, [r0, #0x48]
|
|
strh r0, [r2, #2]
|
|
ldr r0, [r2]
|
|
bl CeilFixedPoint
|
|
cmp r0, #0
|
|
beq _0231CD5C
|
|
mov r0, #0
|
|
bl sub_02050FF8
|
|
strh r0, [sp]
|
|
mov r0, r0, lsr #0x10
|
|
strh r0, [sp, #2]
|
|
ldrh r0, [sp]
|
|
add r3, r4, #0x100
|
|
ldrh r4, [sp, #2]
|
|
strh r0, [r3, #0x46]
|
|
ldr r2, _0231CD78 ; =0x00000BEC
|
|
mov r0, r6
|
|
mov r1, r5
|
|
strh r4, [r3, #0x48]
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _0231CD6C
|
|
_0231CD5C:
|
|
ldr r2, _0231CD7C ; =0x00000BED
|
|
mov r0, r6
|
|
mov r1, r5
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
_0231CD6C:
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_0231CD74: .word 0x00000BEB
|
|
_0231CD78: .word 0x00000BEC
|
|
_0231CD7C: .word 0x00000BED
|
|
arm_func_end ov29_0231CC94
|
|
|
|
arm_func_start ov29_0231CD80
|
|
ov29_0231CD80: ; 0x0231CD80
|
|
stmdb sp!, {r4, r5, lr}
|
|
sub sp, sp, #0xc
|
|
mov r4, r1
|
|
ldr r1, _0231CE10 ; =0x023529AC
|
|
ldr ip, [r4, #0xb4]
|
|
ldrh r3, [r1]
|
|
ldrh r2, [r1, #2]
|
|
ldrsh r1, [ip, #0x28]
|
|
mov r5, r0
|
|
ldrsh r0, [ip, #0x2a]
|
|
mov ip, #1
|
|
strh r3, [sp, #8]
|
|
cmp r1, #0
|
|
strgth r1, [sp, #8]
|
|
str ip, [sp]
|
|
strh r2, [sp, #0xa]
|
|
cmp r0, #0
|
|
strgth r0, [sp, #0xa]
|
|
ldr r0, _0231CE14 ; =0x02352AEC
|
|
ldrsh r3, [sp, #8]
|
|
ldr r2, [r0]
|
|
mov r0, r5
|
|
mov r1, r4
|
|
str ip, [sp, #4]
|
|
bl LowerDefensiveStat
|
|
ldr r0, _0231CE18 ; =0x02352AE8
|
|
mov ip, #1
|
|
ldr r2, [r0]
|
|
str ip, [sp]
|
|
ldrsh r3, [sp, #0xa]
|
|
mov r0, r5
|
|
mov r1, r4
|
|
str ip, [sp, #4]
|
|
bl LowerDefensiveStat
|
|
add sp, sp, #0xc
|
|
ldmia sp!, {r4, r5, pc}
|
|
.align 2, 0
|
|
_0231CE10: .word 0x023529AC
|
|
_0231CE14: .word 0x02352AEC
|
|
_0231CE18: .word 0x02352AE8
|
|
arm_func_end ov29_0231CD80
|
|
|
|
arm_func_start ViolentSeedBoost
|
|
ViolentSeedBoost: ; 0x0231CE1C
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r5, r1
|
|
ldr r4, [r5, #0xb4]
|
|
ldr r2, _0231CE60 ; =0x02352AEC
|
|
ldrsh r3, [r4, #0x24]
|
|
ldr r2, [r2]
|
|
mov r6, r0
|
|
rsb r3, r3, #0x14
|
|
bl BoostOffensiveStat
|
|
ldrsh r3, [r4, #0x26]
|
|
ldr r1, _0231CE64 ; =0x02352AE8
|
|
mov r0, r6
|
|
ldr r2, [r1]
|
|
mov r1, r5
|
|
rsb r3, r3, #0x14
|
|
bl BoostOffensiveStat
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_0231CE60: .word 0x02352AEC
|
|
_0231CE64: .word 0x02352AE8
|
|
arm_func_end ViolentSeedBoost
|
|
|
|
arm_func_start ov29_0231CE68
|
|
ov29_0231CE68: ; 0x0231CE68
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
mov sb, r0
|
|
mov r8, r1
|
|
mov r0, #0x64
|
|
ldr r6, [r8, #0xb4]
|
|
mov r4, #0
|
|
mov r5, #1
|
|
bl DungeonRandInt
|
|
ldr r1, _0231CF78 ; =0x022C46C0
|
|
mov ip, #0
|
|
ldrsh r1, [r1]
|
|
add r3, r6, #0x124
|
|
cmp r0, r1
|
|
movlt r5, #3
|
|
mov r0, ip
|
|
mov r1, #1
|
|
b _0231CF10
|
|
_0231CEAC:
|
|
ldrb r2, [r3, ip, lsl #3]
|
|
add r7, r3, ip, lsl #3
|
|
tst r2, #1
|
|
movne r2, r1
|
|
moveq r2, r0
|
|
tst r2, #0xff
|
|
beq _0231CF0C
|
|
mov r0, r7
|
|
bl GetMoveBasePower
|
|
cmp r0, #0
|
|
beq _0231CF18
|
|
mov r0, r7
|
|
ldrb r6, [r7, #7]
|
|
bl GetMoveMaxGinsengBoost
|
|
ldrb r1, [r7, #7]
|
|
add r2, r1, r5
|
|
and r1, r2, #0xff
|
|
strb r2, [r7, #7]
|
|
cmp r1, r0
|
|
strgeb r0, [r7, #7]
|
|
ldrb r0, [r7, #7]
|
|
cmp r6, r0
|
|
movne r4, #1
|
|
b _0231CF18
|
|
_0231CF0C:
|
|
add ip, ip, #1
|
|
_0231CF10:
|
|
cmp ip, #4
|
|
blt _0231CEAC
|
|
_0231CF18:
|
|
cmp r4, #0
|
|
beq _0231CF64
|
|
ldrh r1, [r7, #4]
|
|
mov r0, #0
|
|
bl ov29_0234B084
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r2, #0xbf0
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
cmp r5, #1
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
mov r0, #0xa
|
|
mov r1, #0x40
|
|
bl ov29_022EA370
|
|
ldr r2, _0231CF7C ; =0x00000BEF
|
|
mov r0, sb
|
|
mov r1, r8
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
_0231CF64:
|
|
ldr r2, _0231CF80 ; =0x00000BEE
|
|
mov r0, sb
|
|
mov r1, r8
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
_0231CF78: .word 0x022C46C0
|
|
_0231CF7C: .word 0x00000BEF
|
|
_0231CF80: .word 0x00000BEE
|
|
arm_func_end ov29_0231CE68
|
|
|
|
arm_func_start ov29_0231CF84
|
|
ov29_0231CF84: ; 0x0231CF84
|
|
stmdb sp!, {r4, r5, r6, r7, lr}
|
|
sub sp, sp, #0x1c
|
|
mov r6, r0
|
|
mov r5, r1
|
|
cmp r2, #0
|
|
beq _0231D00C
|
|
ldr r7, [r5, #0xb4]
|
|
bl ov29_022E0880
|
|
cmp r0, #0
|
|
ldrne r0, _0231D0A8 ; =0x022C45D8
|
|
ldreq r0, _0231D0AC ; =0x022C45D4
|
|
ldrsh r4, [r0]
|
|
ldrb r0, [r7, #0xc4]
|
|
cmp r0, #1
|
|
bne _0231CFD0
|
|
mov r0, r6
|
|
mov r1, r5
|
|
mov r2, #1
|
|
bl EndFrozenClassStatus
|
|
_0231CFD0:
|
|
add r0, sp, #0x18
|
|
str r0, [sp]
|
|
mov ip, #0
|
|
ldr r0, _0231D0B0 ; =0x00000255
|
|
str ip, [sp, #4]
|
|
str r0, [sp, #8]
|
|
str ip, [sp, #0xc]
|
|
str ip, [sp, #0x10]
|
|
mov r0, r6
|
|
mov r1, r5
|
|
mov r2, r4
|
|
mov r3, #1
|
|
str ip, [sp, #0x14]
|
|
bl CalcDamageFixedNoCategory
|
|
b _0231D0A0
|
|
_0231D00C:
|
|
bl ov29_022E5BD8
|
|
mov r0, r6
|
|
bl ov29_022F8830
|
|
movs r4, r0
|
|
bne _0231D034
|
|
ldr r2, _0231D0B4 ; =0x00000BF2
|
|
mov r0, r6
|
|
mov r1, r5
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _0231D0A0
|
|
_0231D034:
|
|
ldr r7, [r4, #0xb4]
|
|
bl ov29_022E0880
|
|
cmp r0, #0
|
|
ldrne r0, _0231D0B8 ; =0x022C45DC
|
|
ldreq r0, _0231D0BC ; =0x022C44E8
|
|
ldrsh r5, [r0]
|
|
ldrb r0, [r7, #0xc4]
|
|
cmp r0, #1
|
|
bne _0231D068
|
|
mov r0, r6
|
|
mov r1, r4
|
|
mov r2, #1
|
|
bl EndFrozenClassStatus
|
|
_0231D068:
|
|
add r0, sp, #0x18
|
|
str r0, [sp]
|
|
mov ip, #0
|
|
ldr r0, _0231D0B0 ; =0x00000255
|
|
str ip, [sp, #4]
|
|
str r0, [sp, #8]
|
|
str ip, [sp, #0xc]
|
|
str ip, [sp, #0x10]
|
|
mov r0, r6
|
|
mov r1, r4
|
|
mov r2, r5
|
|
mov r3, #1
|
|
str ip, [sp, #0x14]
|
|
bl CalcDamageFixedNoCategory
|
|
_0231D0A0:
|
|
add sp, sp, #0x1c
|
|
ldmia sp!, {r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_0231D0A8: .word 0x022C45D8
|
|
_0231D0AC: .word 0x022C45D4
|
|
_0231D0B0: .word 0x00000255
|
|
_0231D0B4: .word 0x00000BF2
|
|
_0231D0B8: .word 0x022C45DC
|
|
_0231D0BC: .word 0x022C44E8
|
|
arm_func_end ov29_0231CF84
|
|
|
|
arm_func_start ApplyGummiBoostsDungeonMode
|
|
ApplyGummiBoostsDungeonMode: ; 0x0231D0C0
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #8
|
|
mov r4, #0
|
|
mov sb, r1
|
|
mov sl, r0
|
|
mov r8, r3
|
|
mov r3, r4
|
|
mov r5, r4
|
|
cmp r2, #0xff
|
|
ldr r7, [sb, #0xb4]
|
|
bne _0231D108
|
|
ldr r1, _0231D468 ; =0x020A1890
|
|
ldr r0, _0231D46C ; =0x020A1894
|
|
ldrsh r1, [r1]
|
|
ldrsh r0, [r0]
|
|
add fp, r4, r1
|
|
add r3, r4, r0
|
|
b _0231D164
|
|
_0231D108:
|
|
ldrb r1, [r7, #0x5e]
|
|
ldrb r6, [r7, #0x5f]
|
|
mov r0, #0x24
|
|
smulbb r1, r1, r0
|
|
ldr fp, _0231D470 ; =0x020A22B0
|
|
smulbb r6, r6, r0
|
|
add ip, fp, r1
|
|
mov r0, r2, lsl #1
|
|
add fp, fp, r6
|
|
ldrsh ip, [r0, ip]
|
|
ldrsh r0, [r0, fp]
|
|
cmp ip, r0
|
|
addgt fp, r4, ip
|
|
addle fp, r4, r0
|
|
ldr ip, _0231D474 ; =0x020A2538
|
|
mov r0, r2, lsl #1
|
|
add r2, ip, r1
|
|
add r1, ip, r6
|
|
ldrsh r2, [r0, r2]
|
|
ldrsh r0, [r0, r1]
|
|
cmp r2, r0
|
|
addgt r3, r3, r2
|
|
addle r3, r3, r0
|
|
_0231D164:
|
|
mov r6, #1
|
|
mov r0, sl
|
|
mov r1, sb
|
|
mov r2, r3
|
|
str r6, [sp]
|
|
mov r3, #0
|
|
bl ov29_02316BB0
|
|
ldrb r0, [r7, #6]
|
|
cmp r0, #0
|
|
bne _0231D284
|
|
mov r0, r7
|
|
bl IsExperienceLocked
|
|
cmp r0, #0
|
|
bne _0231D284
|
|
ldrsh r6, [r7, #0xe]
|
|
add r2, r6, fp
|
|
strh r2, [r7, #0xe]
|
|
ldrsh r0, [r7, #0xe]
|
|
cmp r0, #1
|
|
movlt r0, #1
|
|
strlth r0, [r7, #0xe]
|
|
ldrsh r1, [r7, #0xe]
|
|
ldr r0, _0231D478 ; =0x000003E7
|
|
cmp r1, r0
|
|
strgth r0, [r7, #0xe]
|
|
ldrsh r1, [r7, #0xe]
|
|
cmp r6, r1
|
|
bne _0231D1EC
|
|
ldr r2, _0231D47C ; =0x00000BF3
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
mov r4, #1
|
|
b _0231D284
|
|
_0231D1EC:
|
|
sub r0, r2, r6
|
|
cmp r0, #9
|
|
movge r5, #0
|
|
bge _0231D214
|
|
cmp r0, #5
|
|
movge r5, #1
|
|
bge _0231D214
|
|
cmp r0, #3
|
|
movge r5, #2
|
|
movlt r5, #3
|
|
_0231D214:
|
|
sub r0, r1, r6
|
|
cmp r0, #9
|
|
movge fp, #0
|
|
bge _0231D23C
|
|
cmp r0, #5
|
|
movge fp, #1
|
|
bge _0231D23C
|
|
cmp r0, #3
|
|
movge fp, #2
|
|
movlt fp, #3
|
|
_0231D23C:
|
|
ldr r0, _0231D480 ; =0x023532D0
|
|
mov r1, r5, lsl #1
|
|
ldrh r2, [r0, r1]
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
ldr r0, _0231D484 ; =0x02353324
|
|
mov r1, fp, lsl #1
|
|
ldrh r2, [r0, r1]
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
mov r0, r7
|
|
mov r1, r6
|
|
mov r2, #0
|
|
bl ov29_022FA02C
|
|
mov r0, sb
|
|
bl ov29_023021F0
|
|
_0231D284:
|
|
cmp r5, #3
|
|
beq _0231D460
|
|
ldr r0, _0231D488 ; =0x022C44CC
|
|
ldrsh r0, [r0]
|
|
bl DungeonRandOutcome__022EAB20
|
|
cmp r0, #0
|
|
beq _0231D460
|
|
ldr r5, [sb, #0xb4]
|
|
ldr r0, _0231D48C ; =0x022C45E4
|
|
ldrb r1, [r5, #0x1a]
|
|
ldrsh r0, [r0]
|
|
str r1, [sp, #4]
|
|
ldrb fp, [r5, #0x1b]
|
|
ldrb r6, [r5, #0x1c]
|
|
ldrb r7, [r5, #0x1d]
|
|
bl DungeonRandInt
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, lsr #0x10
|
|
cmp r4, #0
|
|
cmpeq r0, #0xa
|
|
moveq r0, #0xf
|
|
beq _0231D2F4
|
|
mov r0, #4
|
|
bl DungeonRandInt
|
|
mov r0, r0, lsl #0x10
|
|
ldr r1, _0231D490 ; =0x023529B0
|
|
mov r0, r0, lsr #0xf
|
|
ldrh r0, [r1, r0]
|
|
_0231D2F4:
|
|
tst r0, #1
|
|
beq _0231D328
|
|
ldrb r1, [r5, #0x1a]
|
|
cmp r1, #0xff
|
|
bge _0231D320
|
|
add r1, r1, r8
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, asr #0x10
|
|
cmp r1, #0xff
|
|
movgt r1, #0xff
|
|
b _0231D324
|
|
_0231D320:
|
|
bic r0, r0, #1
|
|
_0231D324:
|
|
strb r1, [r5, #0x1a]
|
|
_0231D328:
|
|
tst r0, #2
|
|
beq _0231D35C
|
|
ldrb r1, [r5, #0x1b]
|
|
cmp r1, #0xff
|
|
bge _0231D354
|
|
add r1, r1, r8
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, asr #0x10
|
|
cmp r1, #0xff
|
|
movgt r1, #0xff
|
|
b _0231D358
|
|
_0231D354:
|
|
bic r0, r0, #2
|
|
_0231D358:
|
|
strb r1, [r5, #0x1b]
|
|
_0231D35C:
|
|
tst r0, #4
|
|
beq _0231D390
|
|
ldrb r1, [r5, #0x1c]
|
|
cmp r1, #0xff
|
|
bge _0231D388
|
|
add r1, r1, r8
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, asr #0x10
|
|
cmp r1, #0xff
|
|
movgt r1, #0xff
|
|
b _0231D38C
|
|
_0231D388:
|
|
bic r0, r0, #4
|
|
_0231D38C:
|
|
strb r1, [r5, #0x1c]
|
|
_0231D390:
|
|
tst r0, #8
|
|
beq _0231D3BC
|
|
ldrb r0, [r5, #0x1d]
|
|
cmp r0, #0xff
|
|
bge _0231D3B8
|
|
add r0, r0, r8
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
cmp r0, #0xff
|
|
movgt r0, #0xff
|
|
_0231D3B8:
|
|
strb r0, [r5, #0x1d]
|
|
_0231D3BC:
|
|
ldrb r1, [r5, #0x1a]
|
|
ldr r0, [sp, #4]
|
|
cmp r1, r0
|
|
ble _0231D3E8
|
|
sub r1, r1, r0
|
|
mov r0, #0
|
|
bl ov29_0234B09C
|
|
ldr r2, _0231D494 ; =0x00000BF7
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
_0231D3E8:
|
|
ldrb r0, [r5, #0x1b]
|
|
cmp r0, fp
|
|
ble _0231D410
|
|
sub r1, r0, fp
|
|
mov r0, #0
|
|
bl ov29_0234B09C
|
|
ldr r2, _0231D498 ; =0x00000BF8
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
_0231D410:
|
|
ldrb r0, [r5, #0x1c]
|
|
cmp r0, r6
|
|
ble _0231D438
|
|
sub r1, r0, r6
|
|
mov r0, #0
|
|
bl ov29_0234B09C
|
|
ldr r2, _0231D49C ; =0x00000BF9
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
_0231D438:
|
|
ldrb r0, [r5, #0x1d]
|
|
cmp r0, r7
|
|
ble _0231D460
|
|
sub r1, r0, r7
|
|
mov r0, #0
|
|
bl ov29_0234B09C
|
|
ldr r2, _0231D4A0 ; =0x00000BFA
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
_0231D460:
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_0231D468: .word 0x020A1890
|
|
_0231D46C: .word 0x020A1894
|
|
_0231D470: .word 0x020A22B0
|
|
_0231D474: .word 0x020A2538
|
|
_0231D478: .word 0x000003E7
|
|
_0231D47C: .word 0x00000BF3
|
|
_0231D480: .word 0x023532D0
|
|
_0231D484: .word 0x02353324
|
|
_0231D488: .word 0x022C44CC
|
|
_0231D48C: .word 0x022C45E4
|
|
_0231D490: .word 0x023529B0
|
|
_0231D494: .word 0x00000BF7
|
|
_0231D498: .word 0x00000BF8
|
|
_0231D49C: .word 0x00000BF9
|
|
_0231D4A0: .word 0x00000BFA
|
|
arm_func_end ApplyGummiBoostsDungeonMode
|
|
|
|
arm_func_start ov29_0231D4A4
|
|
ov29_0231D4A4: ; 0x0231D4A4
|
|
stmdb sp!, {r4, lr}
|
|
ldrb r2, [r1]
|
|
mov r4, r0
|
|
ldr r0, [r4, #0xb4]
|
|
tst r2, #8
|
|
movne r2, #1
|
|
moveq r2, #0
|
|
tst r2, #0xff
|
|
beq _0231D4E4
|
|
mov r0, #0
|
|
bl ov29_02344B44
|
|
ldr r1, _0231D52C ; =0x00000BE7
|
|
mov r0, r4
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
mov r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
_0231D4E4:
|
|
ldrb r0, [r0, #0xf3]
|
|
cmp r0, #1
|
|
bne _0231D524
|
|
ldrsh r0, [r1, #4]
|
|
bl IsEdible
|
|
cmp r0, #0
|
|
beq _0231D524
|
|
mov r0, #0
|
|
mov r1, r4
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldr r1, _0231D530 ; =0x00000BF6
|
|
mov r0, r4
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
mov r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
_0231D524:
|
|
mov r0, #1
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_0231D52C: .word 0x00000BE7
|
|
_0231D530: .word 0x00000BF6
|
|
arm_func_end ov29_0231D4A4
|
|
|
|
arm_func_start ov29_0231D534
|
|
ov29_0231D534: ; 0x0231D534
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
sub sp, sp, #8
|
|
mov ip, #1
|
|
mov r4, r1
|
|
mov r2, #0x1e
|
|
mov r3, #0
|
|
mov r5, r0
|
|
str ip, [sp]
|
|
bl ov29_02316BB0
|
|
mov r0, r4
|
|
mov r1, #0x25
|
|
bl IqSkillIsEnabled
|
|
cmp r0, #0
|
|
bne _0231D580
|
|
mov r0, r4
|
|
mov r1, #0x59
|
|
bl AbilityIsActive2
|
|
cmp r0, #0
|
|
beq _0231D598
|
|
_0231D580:
|
|
mov r0, #0x64
|
|
bl DungeonRandInt
|
|
ldr r1, _0231D674 ; =0x022C4680
|
|
ldrsh r1, [r1]
|
|
cmp r0, r1
|
|
blt _0231D66C
|
|
_0231D598:
|
|
mov r0, #5
|
|
bl DungeonRandInt
|
|
cmp r0, #4
|
|
addls pc, pc, r0, lsl #2
|
|
b _0231D66C
|
|
_0231D5AC: ; jump table
|
|
b _0231D5C0 ; case 0
|
|
b _0231D5D8 ; case 1
|
|
b _0231D5EC ; case 2
|
|
b _0231D60C ; case 3
|
|
b _0231D624 ; case 4
|
|
_0231D5C0:
|
|
mov r0, r5
|
|
mov r1, r4
|
|
mov r2, #1
|
|
mov r3, #0
|
|
bl TryInflictPoisonedStatus
|
|
b _0231D66C
|
|
_0231D5D8:
|
|
mov r0, r5
|
|
mov r1, r4
|
|
mov r2, #0
|
|
bl TryInflictShadowHoldStatus
|
|
b _0231D66C
|
|
_0231D5EC:
|
|
mov r2, #1
|
|
mov ip, #0
|
|
mov r0, r5
|
|
mov r1, r4
|
|
mov r3, r2
|
|
str ip, [sp]
|
|
bl TryInflictBurnStatus
|
|
b _0231D66C
|
|
_0231D60C:
|
|
mov r0, r5
|
|
mov r1, r4
|
|
mov r2, #1
|
|
mov r3, #0
|
|
bl TryInflictParalysisStatus
|
|
b _0231D66C
|
|
_0231D624:
|
|
ldr r0, _0231D678 ; =0x02352AEC
|
|
mov ip, #1
|
|
ldr r2, [r0]
|
|
str ip, [sp]
|
|
mov r0, r5
|
|
mov r1, r4
|
|
mov r3, #3
|
|
str ip, [sp, #4]
|
|
bl LowerOffensiveStat
|
|
ldr r0, _0231D67C ; =0x02352AE8
|
|
mov ip, #1
|
|
str ip, [sp]
|
|
ldr r2, [r0]
|
|
mov r0, r5
|
|
mov r1, r4
|
|
mov r3, #3
|
|
str ip, [sp, #4]
|
|
bl LowerOffensiveStat
|
|
_0231D66C:
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_0231D674: .word 0x022C4680
|
|
_0231D678: .word 0x02352AEC
|
|
_0231D67C: .word 0x02352AE8
|
|
arm_func_end ov29_0231D534
|
|
|
|
arm_func_start ov29_0231D680
|
|
ov29_0231D680: ; 0x0231D680
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r5, r1
|
|
ldr r2, [r5, #0xb4]
|
|
mov r6, r0
|
|
ldrsh r4, [r2, #2]
|
|
mov r0, #0
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
cmp r4, #0x124
|
|
cmpne r4, #0x37c
|
|
bne _0231D6C4
|
|
ldr r2, _0231D6D8 ; =0x000003E7
|
|
mov r0, r6
|
|
mov r1, r5
|
|
mov r3, #0
|
|
bl RestoreMovePP
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
_0231D6C4:
|
|
ldr r2, _0231D6DC ; =0x00000C64
|
|
mov r0, r6
|
|
mov r1, r5
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_0231D6D8: .word 0x000003E7
|
|
_0231D6DC: .word 0x00000C64
|
|
arm_func_end ov29_0231D680
|
|
|
|
arm_func_start ov29_0231D6E0
|
|
ov29_0231D6E0: ; 0x0231D6E0
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r0, #0
|
|
mov r4, r1
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldr r0, [r4, #0xb4]
|
|
ldrb r0, [r0, #6]
|
|
cmp r0, #0
|
|
bne _0231D730
|
|
bl ov29_02338530
|
|
cmp r0, #0
|
|
bne _0231D730
|
|
mov r0, #1
|
|
bl ov29_02338548
|
|
ldr r2, _0231D744 ; =0x00000C6E
|
|
mov r0, r5
|
|
mov r1, r4
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_0231D730:
|
|
ldr r2, _0231D748 ; =0x00000C6F
|
|
mov r0, r5
|
|
mov r1, r4
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_0231D744: .word 0x00000C6E
|
|
_0231D748: .word 0x00000C6F
|
|
arm_func_end ov29_0231D6E0
|
|
|
|
arm_func_start ov29_0231D74C
|
|
ov29_0231D74C: ; 0x0231D74C
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r0, #0
|
|
mov r4, r1
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
mov r0, r4
|
|
bl ov29_022E272C
|
|
cmp r0, #0
|
|
beq _0231D788
|
|
ldr r1, _0231D7B8 ; =0x00000C68
|
|
mov r0, #0
|
|
mov r2, #1
|
|
bl DisplayMessage2
|
|
b _0231D7A0
|
|
_0231D788:
|
|
ldr r2, _0231D7BC ; =0x00000C69
|
|
mov r0, r5
|
|
mov r1, r4
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
mov r0, #0xa
|
|
bl ov29_0234BA54
|
|
_0231D7A0:
|
|
mov r2, #0
|
|
mov r0, r5
|
|
mov r1, r4
|
|
mov r3, r2
|
|
bl TryWarp
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_0231D7B8: .word 0x00000C68
|
|
_0231D7BC: .word 0x00000C69
|
|
arm_func_end ov29_0231D74C
|
|
|
|
arm_func_start ov29_0231D7C0
|
|
ov29_0231D7C0: ; 0x0231D7C0
|
|
stmdb sp!, {r3, r4, r5, r6, lr}
|
|
sub sp, sp, #4
|
|
mov r5, r1
|
|
ldr r1, [r5, #0xb4]
|
|
mov r6, r0
|
|
ldrsh r0, [r1, #2]
|
|
bl FemaleToMaleForm
|
|
mov r1, #1
|
|
mov r4, r0
|
|
str r1, [sp]
|
|
ldr r0, _0231D830 ; =0x022C47E0
|
|
mov r1, r5
|
|
ldrsh r2, [r0]
|
|
ldrsh r3, [r0, #2]
|
|
mov r0, r6
|
|
bl ov29_02316BB0
|
|
cmp r4, #0x1e0
|
|
cmpne r4, #0xb9
|
|
bne _0231D828
|
|
ldr r1, _0231D834 ; =0x022C47F0
|
|
mov r0, r5
|
|
ldr r1, [r1]
|
|
mov r2, #0
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, asr #0x10
|
|
bl ov29_022FA144
|
|
_0231D828:
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_0231D830: .word 0x022C47E0
|
|
_0231D834: .word 0x022C47F0
|
|
arm_func_end ov29_0231D7C0
|
|
|
|
arm_func_start ov29_0231D838
|
|
ov29_0231D838: ; 0x0231D838
|
|
stmdb sp!, {r3, r4, r5, r6, lr}
|
|
sub sp, sp, #0xc
|
|
mov r5, r1
|
|
mov r6, r0
|
|
mov r0, r5
|
|
bl ov29_022E272C
|
|
cmp r0, #0
|
|
beq _0231D978
|
|
mov r0, #1
|
|
bl ov29_022EFB20
|
|
bl ov29_022EAF20
|
|
mov r4, r0
|
|
mov r0, #3
|
|
bl ov29_022EAF34
|
|
ldr r1, _0231D9B0 ; =0x000003FF
|
|
mov r0, #4
|
|
add r2, sp, #4
|
|
mov r3, #0
|
|
bl AllocAndLoadFileInPack
|
|
ldr r1, [sp, #4]
|
|
add r0, sp, #0
|
|
bl HandleSir0Translation
|
|
mov r0, r5
|
|
bl ov29_022F04F0
|
|
ldrb r0, [r5, #0xaa]
|
|
mov r1, #1
|
|
bl ov29_022DE47C
|
|
mov r0, #0
|
|
bl ov29_022DD828
|
|
ldr r0, [sp]
|
|
mov r1, #6
|
|
bl ov29_022F085C
|
|
ldr r0, _0231D9B4 ; =0x00000C65
|
|
bl ov29_022F0780
|
|
bl ov29_022F05E4
|
|
mov r0, #0
|
|
bl ov29_022EFB84
|
|
mov r0, #0
|
|
mov r1, r5
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldr r2, _0231D9B8 ; =0x00000C66
|
|
mov r0, r6
|
|
mov r1, r5
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
mov r0, #0xa
|
|
bl ov29_0234BA54
|
|
mov r0, r6
|
|
mov r1, r5
|
|
bl ov29_02319378
|
|
ldr r0, _0231D9BC ; =0x02353538
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x4000
|
|
ldrsh r0, [r0, #0xd6]
|
|
bl ov29_022EAD00
|
|
bl ov29_022EAE14
|
|
mov r0, r4
|
|
bl ov29_022EAF34
|
|
bl ov29_02339CE8
|
|
mov r0, #1
|
|
bl ov29_02339FF4
|
|
mov r0, #0
|
|
bl GetApparentWeather
|
|
bl ov29_022DE620
|
|
mov r1, #6
|
|
bl ov29_022F085C
|
|
mov r0, r5
|
|
bl ov29_022F0518
|
|
add r0, sp, #4
|
|
bl UnloadFile
|
|
ldrb r0, [r5, #0xaa]
|
|
mov r1, #0
|
|
bl ov29_022DE47C
|
|
bl ov29_022DE608
|
|
mov r0, #1
|
|
bl ov29_022DD828
|
|
mov r0, #0xa
|
|
mov r1, r0
|
|
bl ov29_022EA370
|
|
b _0231D9A8
|
|
_0231D978:
|
|
mov r0, #0
|
|
mov r1, r5
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldr r1, _0231D9B8 ; =0x00000C66
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopup
|
|
mov r0, #0xa
|
|
bl ov29_0234BA54
|
|
mov r0, r6
|
|
mov r1, r5
|
|
bl ov29_02319378
|
|
_0231D9A8:
|
|
add sp, sp, #0xc
|
|
ldmia sp!, {r3, r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_0231D9B0: .word 0x000003FF
|
|
_0231D9B4: .word 0x00000C65
|
|
_0231D9B8: .word 0x00000C66
|
|
_0231D9BC: .word 0x02353538
|
|
arm_func_end ov29_0231D838
|
|
|
|
arm_func_start ov29_0231D9C0
|
|
ov29_0231D9C0: ; 0x0231D9C0
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r0, #0x1a
|
|
mov r5, r1
|
|
bl GetPerformanceFlagWithChecks
|
|
cmp r0, #0
|
|
beq _0231DA50
|
|
mov r0, r5
|
|
mov r1, #1
|
|
bl ov29_0231B4EC
|
|
mov r4, r0
|
|
mov r0, #0
|
|
mov r1, r5
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
cmp r4, #3
|
|
bne _0231DA10
|
|
ldr r1, _0231DA70 ; =0x00000C71
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_0231DA10:
|
|
cmp r4, #1
|
|
bne _0231DA28
|
|
ldr r1, _0231DA74 ; =0x00000C72
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_0231DA28:
|
|
cmp r4, #2
|
|
bne _0231DA40
|
|
ldr r1, _0231DA78 ; =0x00000C74
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_0231DA40:
|
|
ldr r1, _0231DA7C ; =0x00000C73
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_0231DA50:
|
|
mov r0, #0
|
|
mov r1, r5
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldr r1, _0231DA7C ; =0x00000C73
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_0231DA70: .word 0x00000C71
|
|
_0231DA74: .word 0x00000C72
|
|
_0231DA78: .word 0x00000C74
|
|
_0231DA7C: .word 0x00000C73
|
|
arm_func_end ov29_0231D9C0
|
|
|
|
arm_func_start ov29_0231DA80
|
|
ov29_0231DA80: ; 0x0231DA80
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
mov sb, r1
|
|
mov sl, r0
|
|
ldrsh r0, [sb, #4]
|
|
bl GetItemMoveId16
|
|
ldrb r1, [sb]
|
|
mov r5, r0
|
|
tst r1, #8
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _0231DAC8
|
|
ldr r1, _0231DBE0 ; =0x00000BE7
|
|
mov r0, #0
|
|
mov r2, #1
|
|
bl DisplayMessage2
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_0231DAC8:
|
|
ldrsh r0, [sb, #4]
|
|
bl IsHM
|
|
cmp r0, #0
|
|
beq _0231DAF0
|
|
ldr r1, _0231DBE4 ; =0x00000BF4
|
|
mov r0, #0
|
|
mov r2, #1
|
|
bl DisplayMessage2
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_0231DAF0:
|
|
ldr fp, _0231DBE8 ; =0x02353538
|
|
mov r4, #0
|
|
_0231DAF8:
|
|
ldr r0, [fp]
|
|
add r0, r0, r4, lsl #2
|
|
add r0, r0, #0x12000
|
|
ldr r7, [r0, #0xb28]
|
|
mov r0, r7
|
|
bl EntityIsValid__0231CBC8
|
|
cmp r0, #0
|
|
beq _0231DB70
|
|
ldr r8, [r7, #0xb4]
|
|
mov r0, r5
|
|
ldrsh r1, [r8, #2]
|
|
bl sub_02053D1C
|
|
mov r6, r0
|
|
mov r0, r7
|
|
mov r1, r5
|
|
bl ov29_022FBA54
|
|
cmp r0, #0
|
|
mov r0, r7
|
|
movne r6, #0
|
|
bl ov29_023009A0
|
|
cmp r0, #0
|
|
ldrb r0, [r8, #0xbc]
|
|
movne r6, #0
|
|
cmp r0, #7
|
|
mov r0, r8
|
|
moveq r6, #0
|
|
bl IsExperienceLocked
|
|
cmp r0, #0
|
|
movne r6, #0
|
|
strb r6, [r8, #0x161]
|
|
_0231DB70:
|
|
add r4, r4, #1
|
|
cmp r4, #4
|
|
blt _0231DAF8
|
|
mov r0, #0
|
|
mov r2, r0
|
|
mov r3, r0
|
|
mov r1, #1
|
|
bl ov31_023877EC
|
|
mov r4, r0
|
|
bl EntityIsValid__0231CBC8
|
|
cmp r0, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
mov r0, r4
|
|
mov r1, sb
|
|
bl ov29_022E5AE4
|
|
mov r0, r4
|
|
mov r1, r5
|
|
bl ov29_023038D4
|
|
cmp r0, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
ldr r2, _0231DBEC ; =0x00000141
|
|
mov r0, sl
|
|
mov r1, #0
|
|
bl ov29_022EB668
|
|
mov r0, #1
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_0231DBE0: .word 0x00000BE7
|
|
_0231DBE4: .word 0x00000BF4
|
|
_0231DBE8: .word 0x02353538
|
|
_0231DBEC: .word 0x00000141
|
|
arm_func_end ov29_0231DA80
|
|
|
|
arm_func_start ov29_0231DBF0
|
|
ov29_0231DBF0: ; 0x0231DBF0
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
mov sb, r1
|
|
ldrb r1, [sb]
|
|
mov sl, r0
|
|
tst r1, #8
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
beq _0231DC2C
|
|
ldr r1, _0231DD50 ; =0x00000BE7
|
|
mov r0, #0
|
|
mov r2, #1
|
|
bl DisplayMessage2
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_0231DC2C:
|
|
ldr r4, _0231DD54 ; =0x02353538
|
|
ldr r0, [r4]
|
|
ldrb r0, [r0, #0x75c]
|
|
cmp r0, #0
|
|
bne _0231DC58
|
|
ldr r1, _0231DD58 ; =0x00000BA4
|
|
mov r0, #0
|
|
mov r2, #1
|
|
bl DisplayMessage2
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_0231DC58:
|
|
mov r5, #0
|
|
mov fp, #1
|
|
_0231DC60:
|
|
ldr r0, [r4]
|
|
add r0, r0, r5, lsl #2
|
|
add r0, r0, #0x12000
|
|
ldr r7, [r0, #0xb28]
|
|
mov r0, r7
|
|
bl EntityIsValid__0231CBC8
|
|
cmp r0, #0
|
|
beq _0231DCEC
|
|
ldr r8, [r7, #0xb4]
|
|
mov r6, fp
|
|
ldrsh r0, [r8, #0xc]
|
|
cmp r0, #4
|
|
movge r6, #0
|
|
bge _0231DCAC
|
|
bl GetActiveTeamMember
|
|
ldrsh r0, [r0, #8]
|
|
bl CheckTeamMemberIdx__022F9C34
|
|
cmp r0, #0
|
|
movne r6, #0
|
|
_0231DCAC:
|
|
mov r0, r7
|
|
mov r1, #0
|
|
bl ov29_02300818
|
|
cmp r0, #0
|
|
ldrb r0, [r8, #0xbc]
|
|
movne r6, #0
|
|
cmp r0, #7
|
|
mov r0, r8
|
|
moveq r6, #0
|
|
bl IsExperienceLocked
|
|
cmp r0, #0
|
|
ldrb r0, [r8, #7]
|
|
movne r6, #0
|
|
cmp r0, #0
|
|
movne r6, #0
|
|
strb r6, [r8, #0x161]
|
|
_0231DCEC:
|
|
add r5, r5, #1
|
|
cmp r5, #4
|
|
blt _0231DC60
|
|
mov r0, #0
|
|
mov r1, #1
|
|
mov r2, r0
|
|
mov r3, r1
|
|
bl ov31_023877EC
|
|
mov r4, r0
|
|
bl EntityIsValid__0231CBC8
|
|
cmp r0, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
mov r0, sl
|
|
mov r1, sb
|
|
bl ov29_022E5AE4
|
|
ldr r0, _0231DD54 ; =0x02353538
|
|
ldr r2, _0231DD5C ; =0x00000142
|
|
ldr r3, [r0]
|
|
mov r0, sl
|
|
mov r1, #0
|
|
str r4, [r3, #0xc8]
|
|
bl ov29_022EB668
|
|
mov r0, #1
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_0231DD50: .word 0x00000BE7
|
|
_0231DD54: .word 0x02353538
|
|
_0231DD58: .word 0x00000BA4
|
|
_0231DD5C: .word 0x00000142
|
|
arm_func_end ov29_0231DBF0
|
|
|
|
arm_func_start ov29_0231DD60
|
|
ov29_0231DD60: ; 0x0231DD60
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x1c
|
|
mov sb, r1
|
|
ldrb r1, [sb]
|
|
mov sl, r0
|
|
mov r6, #0
|
|
tst r1, #8
|
|
movne r0, #1
|
|
moveq r0, r6
|
|
ldr r4, [sl, #0xb4]
|
|
tst r0, #0xff
|
|
beq _0231DDA8
|
|
ldr r1, _0231E04C ; =0x00000BE7
|
|
mov r0, #0
|
|
mov r2, #1
|
|
bl DisplayMessage2
|
|
mov r0, #0
|
|
b _0231E044
|
|
_0231DDA8:
|
|
ldr fp, _0231E050 ; =0x02353538
|
|
mov r5, #0
|
|
_0231DDB0:
|
|
ldr r0, [fp]
|
|
add r0, r0, r5, lsl #2
|
|
add r0, r0, #0x12000
|
|
ldr r7, [r0, #0xb28]
|
|
mov r0, r7
|
|
bl EntityIsValid__0231CBC8
|
|
cmp r0, #0
|
|
beq _0231DE0C
|
|
ldr r8, [r7, #0xb4]
|
|
mov r0, r7
|
|
mov r1, #0
|
|
mov r7, #1
|
|
bl ov29_023008DC
|
|
cmp r0, #0
|
|
ldrb r0, [r8, #0xbc]
|
|
movne r7, #0
|
|
cmp r0, #7
|
|
mov r0, r8
|
|
moveq r7, #0
|
|
bl IsExperienceLocked
|
|
cmp r0, #0
|
|
movne r7, #0
|
|
strb r7, [r8, #0x161]
|
|
_0231DE0C:
|
|
add r5, r5, #1
|
|
cmp r5, #4
|
|
blt _0231DDB0
|
|
mov r0, #0
|
|
mov r2, r0
|
|
mov r3, r0
|
|
mov r1, #1
|
|
bl ov31_023877EC
|
|
str r0, [sp, #4]
|
|
bl EntityIsValid__0231CBC8
|
|
cmp r0, #0
|
|
moveq r0, #0
|
|
beq _0231E044
|
|
add r2, sp, #8
|
|
add r3, r4, #0x4a
|
|
mov r1, #0xa
|
|
_0231DE4C:
|
|
ldrh r0, [r3], #2
|
|
subs r1, r1, #1
|
|
strh r0, [r2], #2
|
|
bne _0231DE4C
|
|
mov fp, #1
|
|
ldr r5, _0231E054 ; =0x0000016A
|
|
add r7, sp, #4
|
|
mov r8, fp
|
|
_0231DE6C:
|
|
add r0, r4, #0x4a
|
|
bl ClearMonsterActionFields
|
|
ldrsh r0, [sb, #4]
|
|
mov r2, #0
|
|
cmp r0, r5
|
|
beq _0231DE9C
|
|
mov r0, r7
|
|
mov r1, r8
|
|
mov r3, r2
|
|
str r8, [sp]
|
|
bl ov30_023853BC
|
|
b _0231DEB0
|
|
_0231DE9C:
|
|
mov r0, r7
|
|
mov r1, fp
|
|
mov r3, r2
|
|
str fp, [sp]
|
|
bl ov30_023853E0
|
|
_0231DEB0:
|
|
cmp r0, #0
|
|
beq _0231DF1C
|
|
cmp r6, #0
|
|
beq _0231DFF4
|
|
ldrsh r0, [sb, #4]
|
|
ldr r1, _0231E058 ; =0x00000BF5
|
|
cmp r0, r5
|
|
bne _0231DF00
|
|
mov r0, #1
|
|
str r0, [sp]
|
|
mov r0, #0
|
|
mov r2, #1
|
|
mov r3, r0
|
|
bl ov29_0234D518
|
|
cmp r0, #1
|
|
bne _0231DF1C
|
|
mov r0, #0
|
|
mov r1, r0
|
|
bl ov29_022EA428
|
|
b _0231DFF4
|
|
_0231DF00:
|
|
mov r0, #0
|
|
mov r2, r0
|
|
mov r3, r0
|
|
str r0, [sp]
|
|
bl ov29_0234D518
|
|
cmp r0, #1
|
|
beq _0231DFF4
|
|
_0231DF1C:
|
|
ldrh r0, [r4, #0x4a]
|
|
cmp r0, #0x1d
|
|
bne _0231DF34
|
|
add r0, r4, #0x4a
|
|
bl ov30_02385FE0
|
|
b _0231DE6C
|
|
_0231DF34:
|
|
cmp r0, #0x20
|
|
bne _0231DF60
|
|
mov r0, #0xb
|
|
mov r1, #0
|
|
bl ov29_022EA428
|
|
add r0, r4, #0x4a
|
|
bl ov31_02386204
|
|
mov r0, #1
|
|
bl ov29_022EB398
|
|
mov r6, #1
|
|
b _0231DE6C
|
|
_0231DF60:
|
|
cmp r0, #0x21
|
|
bne _0231DF8C
|
|
mov r0, #0xb
|
|
mov r1, #0
|
|
bl ov29_022EA428
|
|
add r0, r4, #0x4a
|
|
mov r1, #0
|
|
bl ov31_02386308
|
|
mov r0, #1
|
|
bl ov29_022EB398
|
|
b _0231DE6C
|
|
_0231DF8C:
|
|
cmp r0, #0x1e
|
|
bne _0231DFB0
|
|
mov r0, #0xb
|
|
mov r1, #0
|
|
bl ov29_022EA428
|
|
add r0, r4, #0x4a
|
|
mov r1, #0
|
|
bl ov31_023860A4
|
|
b _0231DE6C
|
|
_0231DFB0:
|
|
cmp r0, #0x33
|
|
bne _0231DFD4
|
|
mov r0, #0xb
|
|
mov r1, #0
|
|
bl ov29_022EA428
|
|
add r0, r4, #0x4a
|
|
mov r1, #0
|
|
bl ov31_023860A4
|
|
b _0231DE6C
|
|
_0231DFD4:
|
|
cmp r0, #0x1f
|
|
bne _0231DE6C
|
|
mov r0, #0xb
|
|
mov r1, #0
|
|
bl ov29_022EA428
|
|
add r0, r4, #0x4a
|
|
bl ov31_0238619C
|
|
b _0231DE6C
|
|
_0231DFF4:
|
|
cmp r6, #0
|
|
beq _0231E038
|
|
add r3, sp, #8
|
|
add r2, r4, #0x4a
|
|
mov r1, #0xa
|
|
_0231E008:
|
|
ldrh r0, [r3], #2
|
|
subs r1, r1, #1
|
|
strh r0, [r2], #2
|
|
bne _0231E008
|
|
mov r0, sl
|
|
mov r1, #0
|
|
mov r2, #0x6e
|
|
bl ov29_022EB60C
|
|
add r0, r4, #0x4a
|
|
mov r1, #0x2c
|
|
bl SetMonsterActionFields
|
|
b _0231E040
|
|
_0231E038:
|
|
mov r0, #1
|
|
bl ov29_022EB398
|
|
_0231E040:
|
|
mov r0, r6
|
|
_0231E044:
|
|
add sp, sp, #0x1c
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_0231E04C: .word 0x00000BE7
|
|
_0231E050: .word 0x02353538
|
|
_0231E054: .word 0x0000016A
|
|
_0231E058: .word 0x00000BF5
|
|
arm_func_end ov29_0231DD60
|
|
|
|
arm_func_start ov29_0231E05C
|
|
ov29_0231E05C: ; 0x0231E05C
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
mov r7, r0
|
|
tst r2, #1
|
|
mov r4, #0
|
|
movne r0, #1
|
|
moveq r0, r4
|
|
ldrsh r1, [r1, #4]
|
|
tst r2, #2
|
|
and r5, r0, #0xff
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
ldr r6, [r7, #0xb4]
|
|
and r0, r0, #0xff
|
|
cmp r1, #0xa7
|
|
bgt _0231E2D0
|
|
bge _0231E7DC
|
|
cmp r1, #0x89
|
|
addls pc, pc, r1, lsl #2
|
|
b _0231E8DC
|
|
_0231E0A8: ; jump table
|
|
b _0231E8DC ; case 0
|
|
b _0231E2F0 ; case 1
|
|
b _0231E2F0 ; case 2
|
|
b _0231E2F0 ; case 3
|
|
b _0231E2F0 ; case 4
|
|
b _0231E2F0 ; case 5
|
|
b _0231E2F0 ; case 6
|
|
b _0231E2F0 ; case 7
|
|
b _0231E2F0 ; case 8
|
|
b _0231E2F0 ; case 9
|
|
b _0231E2F0 ; case 10
|
|
b _0231E8DC ; case 11
|
|
b _0231E8DC ; case 12
|
|
b _0231E8DC ; case 13
|
|
b _0231E8B0 ; case 14
|
|
b _0231E8B0 ; case 15
|
|
b _0231E8DC ; case 16
|
|
b _0231E8DC ; case 17
|
|
b _0231E8DC ; case 18
|
|
b _0231E8DC ; case 19
|
|
b _0231E34C ; case 20
|
|
b _0231E8DC ; case 21
|
|
b _0231E8DC ; case 22
|
|
b _0231E8DC ; case 23
|
|
b _0231E8DC ; case 24
|
|
b _0231E8DC ; case 25
|
|
b _0231E8DC ; case 26
|
|
b _0231E8DC ; case 27
|
|
b _0231E8DC ; case 28
|
|
b _0231E8DC ; case 29
|
|
b _0231E8DC ; case 30
|
|
b _0231E8DC ; case 31
|
|
b _0231E8DC ; case 32
|
|
b _0231E8DC ; case 33
|
|
b _0231E2FC ; case 34
|
|
b _0231E8DC ; case 35
|
|
b _0231E8DC ; case 36
|
|
b _0231E8DC ; case 37
|
|
b _0231E8DC ; case 38
|
|
b _0231E8DC ; case 39
|
|
b _0231E8DC ; case 40
|
|
b _0231E8DC ; case 41
|
|
b _0231E8DC ; case 42
|
|
b _0231E8DC ; case 43
|
|
b _0231E8DC ; case 44
|
|
b _0231E8DC ; case 45
|
|
b _0231E8DC ; case 46
|
|
b _0231E338 ; case 47
|
|
b _0231E338 ; case 48
|
|
b _0231E8DC ; case 49
|
|
b _0231E8DC ; case 50
|
|
b _0231E8DC ; case 51
|
|
b _0231E8DC ; case 52
|
|
b _0231E8DC ; case 53
|
|
b _0231E8DC ; case 54
|
|
b _0231E8DC ; case 55
|
|
b _0231E8DC ; case 56
|
|
b _0231E8DC ; case 57
|
|
b _0231E8DC ; case 58
|
|
b _0231E8DC ; case 59
|
|
b _0231E8DC ; case 60
|
|
b _0231E8DC ; case 61
|
|
b _0231E8DC ; case 62
|
|
b _0231E8DC ; case 63
|
|
b _0231E8DC ; case 64
|
|
b _0231E8DC ; case 65
|
|
b _0231E8DC ; case 66
|
|
b _0231E8DC ; case 67
|
|
b _0231E8DC ; case 68
|
|
b _0231E448 ; case 69
|
|
b _0231E354 ; case 70
|
|
b _0231E354 ; case 71
|
|
b _0231E4D8 ; case 72
|
|
b _0231E8DC ; case 73
|
|
b _0231E5D0 ; case 74
|
|
b _0231E730 ; case 75
|
|
b _0231E52C ; case 76
|
|
b _0231E4B4 ; case 77
|
|
b _0231E6E4 ; case 78
|
|
b _0231E6FC ; case 79
|
|
b _0231E504 ; case 80
|
|
b _0231E5A4 ; case 81
|
|
b _0231E554 ; case 82
|
|
b _0231E57C ; case 83
|
|
b _0231E670 ; case 84
|
|
b _0231E8DC ; case 85
|
|
b _0231E600 ; case 86
|
|
b _0231E76C ; case 87
|
|
b _0231E6DC ; case 88
|
|
b _0231E6C8 ; case 89
|
|
b _0231E6B0 ; case 90
|
|
b _0231E744 ; case 91
|
|
b _0231E448 ; case 92
|
|
b _0231E8DC ; case 93
|
|
b _0231E804 ; case 94
|
|
b _0231E8DC ; case 95
|
|
b _0231E814 ; case 96
|
|
b _0231E828 ; case 97
|
|
b _0231E8DC ; case 98
|
|
b _0231E3BC ; case 99
|
|
b _0231E464 ; case 100
|
|
b _0231E478 ; case 101
|
|
b _0231E48C ; case 102
|
|
b _0231E8DC ; case 103
|
|
b _0231E8C0 ; case 104
|
|
b _0231E8DC ; case 105
|
|
b _0231E798 ; case 106
|
|
b _0231E8B0 ; case 107
|
|
b _0231E4A0 ; case 108
|
|
b _0231E864 ; case 109
|
|
b _0231E864 ; case 110
|
|
b _0231E898 ; case 111
|
|
b _0231E864 ; case 112
|
|
b _0231E8DC ; case 113
|
|
b _0231E8DC ; case 114
|
|
b _0231E8DC ; case 115
|
|
b _0231E3BC ; case 116
|
|
b _0231E8B0 ; case 117
|
|
b _0231E784 ; case 118
|
|
b _0231E8DC ; case 119
|
|
b _0231E8DC ; case 120
|
|
b _0231E8DC ; case 121
|
|
b _0231E8DC ; case 122
|
|
b _0231E8DC ; case 123
|
|
b _0231E8DC ; case 124
|
|
b _0231E8DC ; case 125
|
|
b _0231E8DC ; case 126
|
|
b _0231E8DC ; case 127
|
|
b _0231E8DC ; case 128
|
|
b _0231E8DC ; case 129
|
|
b _0231E8DC ; case 130
|
|
b _0231E8DC ; case 131
|
|
b _0231E8DC ; case 132
|
|
b _0231E8DC ; case 133
|
|
b _0231E8DC ; case 134
|
|
b _0231E8DC ; case 135
|
|
b _0231E8DC ; case 136
|
|
b _0231E83C ; case 137
|
|
_0231E2D0:
|
|
cmp r1, #0xa8
|
|
bgt _0231E2E0
|
|
beq _0231E8B0
|
|
b _0231E8DC
|
|
_0231E2E0:
|
|
ldr r0, _0231E8E8 ; =0x0000014F
|
|
cmp r1, r0
|
|
beq _0231E8A0
|
|
b _0231E8DC
|
|
_0231E2F0:
|
|
cmp r5, #0
|
|
movne r4, #0x46
|
|
b _0231E8E0
|
|
_0231E2FC:
|
|
cmp r5, #0
|
|
beq _0231E330
|
|
add r0, r6, #0x100
|
|
ldrh r1, [r0, #0x46]
|
|
sub r2, sp, #4
|
|
strh r1, [r2]
|
|
ldrh r0, [r0, #0x48]
|
|
strh r0, [r2, #2]
|
|
ldr r0, [r2]
|
|
bl CeilFixedPoint
|
|
cmp r0, #0
|
|
movgt r0, #0x32
|
|
ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
_0231E330:
|
|
mov r4, #0
|
|
b _0231E8E0
|
|
_0231E338:
|
|
cmp r5, #0
|
|
movne r0, #0x32
|
|
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
mov r4, #0
|
|
b _0231E8E0
|
|
_0231E34C:
|
|
mov r4, #0x28
|
|
b _0231E8E0
|
|
_0231E354:
|
|
ldrsh r1, [r6, #0x12]
|
|
ldrsh r0, [r6, #0x16]
|
|
ldr r2, _0231E8EC ; =0x000003E7
|
|
add r3, r1, r0
|
|
cmp r3, r2
|
|
ldrsh r1, [r6, #0x10]
|
|
movle r2, r3
|
|
cmp r1, r2
|
|
bge _0231E8E0
|
|
ldr r0, _0231E8EC ; =0x000003E7
|
|
cmp r3, r0
|
|
movgt r3, r0
|
|
mov r0, r3, asr #1
|
|
add r0, r3, r0, lsr #30
|
|
cmp r1, r0, asr #2
|
|
bgt _0231E8E0
|
|
cmp r5, #0
|
|
bne _0231E3B4
|
|
mov r0, r7
|
|
bl ov29_0231E8F0
|
|
cmp r0, #0
|
|
movne r4, #0x64
|
|
moveq r4, #0x32
|
|
b _0231E8E0
|
|
_0231E3B4:
|
|
mov r4, #0x32
|
|
b _0231E8E0
|
|
_0231E3BC:
|
|
cmp r1, #0x74
|
|
mov r1, #1
|
|
bne _0231E3D8
|
|
ldrsh r0, [r6, #4]
|
|
cmp r0, #0x124
|
|
cmpne r0, #0x37c
|
|
movne r1, #0
|
|
_0231E3D8:
|
|
cmp r1, #0
|
|
beq _0231E8E0
|
|
mov r4, #0
|
|
add r7, r6, #0x124
|
|
mov r8, r4
|
|
mov r5, r4
|
|
mov r6, #1
|
|
_0231E3F4:
|
|
ldrb r0, [r7, r8, lsl #3]
|
|
add sb, r7, r8, lsl #3
|
|
tst r0, #1
|
|
movne r0, r6
|
|
moveq r0, r5
|
|
tst r0, #0xff
|
|
beq _0231E430
|
|
ldrb r0, [sb, #6]
|
|
cmp r0, #0
|
|
mov r0, sb
|
|
addeq r4, r4, #0x1e
|
|
bl GetMaxPpWrapper
|
|
ldrb r1, [sb, #6]
|
|
cmp r1, r0
|
|
addne r4, r4, #6
|
|
_0231E430:
|
|
add r8, r8, #1
|
|
cmp r8, #4
|
|
blt _0231E3F4
|
|
cmp r4, #0x63
|
|
movge r4, #0x63
|
|
b _0231E8E0
|
|
_0231E448:
|
|
mov r0, r7
|
|
mov r1, #1
|
|
bl ov29_02300634
|
|
cmp r0, #0
|
|
movne r4, #0x50
|
|
moveq r4, #0
|
|
b _0231E8E0
|
|
_0231E464:
|
|
ldrb r0, [r6, #0x1a]
|
|
cmp r0, #0xfa
|
|
movhs r4, #0
|
|
movlo r4, #0x64
|
|
b _0231E8E0
|
|
_0231E478:
|
|
ldrb r0, [r6, #0x1b]
|
|
cmp r0, #0xfa
|
|
movhs r4, #0
|
|
movlo r4, #0x64
|
|
b _0231E8E0
|
|
_0231E48C:
|
|
ldrb r0, [r6, #0x1c]
|
|
cmp r0, #0xfa
|
|
movhs r4, #0
|
|
movlo r4, #0x64
|
|
b _0231E8E0
|
|
_0231E4A0:
|
|
ldrb r0, [r6, #0x1d]
|
|
cmp r0, #0xfa
|
|
movhs r4, #0
|
|
movlo r4, #0x64
|
|
b _0231E8E0
|
|
_0231E4B4:
|
|
cmp r5, #0
|
|
movne r4, #0
|
|
bne _0231E8E0
|
|
mov r0, r7
|
|
bl ov29_0231E8F0
|
|
cmp r0, #0
|
|
movne r4, #0xa
|
|
moveq r4, #0x64
|
|
b _0231E8E0
|
|
_0231E4D8:
|
|
mov r0, r7
|
|
bl CanSeeInvisibleMonsters
|
|
cmp r0, #0
|
|
movne r0, #0
|
|
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
mov r0, r7
|
|
bl ov29_0231E8F0
|
|
cmp r0, #0
|
|
movne r4, #0x50
|
|
moveq r4, #5
|
|
b _0231E8E0
|
|
_0231E504:
|
|
ldr r0, [r6, #0x110]
|
|
cmp r0, #3
|
|
movgt r0, #0
|
|
ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
mov r0, r7
|
|
bl ov29_0231E8F0
|
|
cmp r0, #0
|
|
movne r4, #0x50
|
|
moveq r4, #5
|
|
b _0231E8E0
|
|
_0231E52C:
|
|
ldrb r0, [r6, #0xf1]
|
|
cmp r0, #2
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
mov r0, r7
|
|
bl ov29_0231E8F0
|
|
cmp r0, #0
|
|
movne r4, #0x50
|
|
moveq r4, #5
|
|
b _0231E8E0
|
|
_0231E554:
|
|
ldrb r0, [r6, #0xbf]
|
|
cmp r0, #4
|
|
movne r0, #0
|
|
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
mov r0, r7
|
|
bl ov29_0231E8F0
|
|
cmp r0, #0
|
|
movne r4, #0x50
|
|
moveq r4, #0x1e
|
|
b _0231E8E0
|
|
_0231E57C:
|
|
ldrb r0, [r6, #0xd0]
|
|
cmp r0, #2
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
mov r0, r7
|
|
bl ov29_0231E8F0
|
|
cmp r0, #0
|
|
movne r4, #0x50
|
|
moveq r4, #0xf
|
|
b _0231E8E0
|
|
_0231E5A4:
|
|
ldrb r0, [r6, #0xbf]
|
|
cmp r0, #2
|
|
cmpne r0, #3
|
|
movne r0, #0
|
|
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
mov r0, r7
|
|
bl ov29_0231E8F0
|
|
cmp r0, #0
|
|
movne r4, #0x64
|
|
moveq r4, #0x32
|
|
b _0231E8E0
|
|
_0231E5D0:
|
|
mov r0, r7
|
|
mov r1, #1
|
|
bl IsBlinded
|
|
cmp r0, #0
|
|
movne r0, #0
|
|
ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
mov r0, r7
|
|
bl ov29_0231E8F0
|
|
cmp r0, #0
|
|
movne r4, #0x50
|
|
moveq r4, #5
|
|
b _0231E8E0
|
|
_0231E600:
|
|
cmp r0, #0
|
|
bne _0231E620
|
|
mov r0, r7
|
|
bl ov29_0231E8F0
|
|
cmp r0, #0
|
|
movne r4, #0x28
|
|
moveq r4, #5
|
|
b _0231E8E0
|
|
_0231E620:
|
|
ldrsh r2, [r6, #0x12]
|
|
ldrsh r1, [r6, #0x16]
|
|
ldr r0, _0231E8EC ; =0x000003E7
|
|
add r1, r2, r1
|
|
cmp r1, r0
|
|
movgt r1, r0
|
|
ldrsh r0, [r6, #0x10]
|
|
cmp r0, r1
|
|
cmplt r0, #0x14
|
|
bge _0231E8E0
|
|
cmp r5, #0
|
|
bne _0231E668
|
|
mov r0, r7
|
|
bl ov29_0231E8F0
|
|
cmp r0, #0
|
|
movne r4, #0x64
|
|
moveq r4, #0x32
|
|
b _0231E8E0
|
|
_0231E668:
|
|
mov r4, #0x32
|
|
b _0231E8E0
|
|
_0231E670:
|
|
ldrb r0, [r6, #0xbd]
|
|
cmp r0, #1
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
cmp r0, #5
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
cmp r0, #3
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
mov r0, r7
|
|
bl ov29_0231E8F0
|
|
cmp r0, #0
|
|
movne r4, #0x50
|
|
moveq r4, #5
|
|
b _0231E8E0
|
|
_0231E6B0:
|
|
ldrb r0, [r6, #0xbd]
|
|
cmp r0, #2
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
mov r4, #5
|
|
b _0231E8E0
|
|
_0231E6C8:
|
|
ldrb r0, [r6, #0xa]
|
|
cmp r0, #0x63
|
|
movlo r4, #0x50
|
|
movhs r4, #0
|
|
b _0231E8E0
|
|
_0231E6DC:
|
|
mov r4, #0x50
|
|
b _0231E8E0
|
|
_0231E6E4:
|
|
ldrb r0, [r6, #0xbf]
|
|
cmp r0, #1
|
|
moveq r0, #0x32
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
mov r4, #0
|
|
b _0231E8E0
|
|
_0231E6FC:
|
|
add r0, r6, #0x100
|
|
ldrh r1, [r0, #0x46]
|
|
sub r2, sp, #4
|
|
strh r1, [r2]
|
|
ldrh r0, [r0, #0x48]
|
|
strh r0, [r2, #2]
|
|
ldr r0, [r2]
|
|
bl CeilFixedPoint
|
|
cmp r0, #0
|
|
movgt r0, #0x32
|
|
ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
mov r4, #0
|
|
b _0231E8E0
|
|
_0231E730:
|
|
ldrb r0, [r6, #0xa]
|
|
cmp r0, #1
|
|
movhi r4, #0x50
|
|
movls r4, #0
|
|
b _0231E8E0
|
|
_0231E744:
|
|
ldrb r0, [r6, #0xc4]
|
|
cmp r0, #6
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
mov r0, r7
|
|
bl ov29_0231E8F0
|
|
cmp r0, #0
|
|
movne r4, #0x50
|
|
moveq r4, #5
|
|
b _0231E8E0
|
|
_0231E76C:
|
|
mov r0, r7
|
|
bl ov29_0231E8F0
|
|
cmp r0, #0
|
|
movne r4, #0x50
|
|
moveq r4, #0x1e
|
|
b _0231E8E0
|
|
_0231E784:
|
|
ldrb r0, [r6, #6]
|
|
cmp r0, #0
|
|
movne r4, #0
|
|
moveq r4, #0x64
|
|
b _0231E8E0
|
|
_0231E798:
|
|
ldrsh r0, [r6, #2]
|
|
bl GetMobilityType
|
|
cmp r0, #0
|
|
cmpne r0, #4
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
tst r0, #0xff
|
|
ldrneb r0, [r6, #0xef]
|
|
cmpne r0, #4
|
|
moveq r4, #0
|
|
beq _0231E8E0
|
|
mov r0, r7
|
|
bl ov29_0231E8F0
|
|
cmp r0, #0
|
|
movne r4, #0xa
|
|
moveq r4, #0x64
|
|
b _0231E8E0
|
|
_0231E7DC:
|
|
ldrb r0, [r6, #0xd5]
|
|
cmp r0, #9
|
|
moveq r4, #0
|
|
beq _0231E8E0
|
|
mov r0, r7
|
|
bl ov29_0231E8F0
|
|
cmp r0, #0
|
|
movne r4, #0x50
|
|
moveq r4, #0
|
|
b _0231E8E0
|
|
_0231E804:
|
|
cmp r5, #0
|
|
movne r4, #0x46
|
|
moveq r4, #0
|
|
b _0231E8E0
|
|
_0231E814:
|
|
ldrsh r0, [r6, #0x26]
|
|
cmp r0, #0x14
|
|
movge r4, #0
|
|
movlt r4, #0x50
|
|
b _0231E8E0
|
|
_0231E828:
|
|
ldrb r0, [r6, #0xef]
|
|
cmp r0, #1
|
|
movne r4, #0x50
|
|
moveq r4, #0
|
|
b _0231E8E0
|
|
_0231E83C:
|
|
ldrsh r0, [r6, #4]
|
|
bl FemaleToMaleForm
|
|
ldrsh r0, [r6, #4]
|
|
cmp r0, #0x1e0
|
|
cmpne r0, #0xb9
|
|
bne _0231E8E0
|
|
cmp r5, #0
|
|
movne r4, #0x46
|
|
moveq r4, #0x64
|
|
b _0231E8E0
|
|
_0231E864:
|
|
add r0, r6, #0x100
|
|
ldrh r1, [r0, #0x46]
|
|
sub r2, sp, #4
|
|
strh r1, [r2]
|
|
ldrh r0, [r0, #0x48]
|
|
strh r0, [r2, #2]
|
|
ldr r0, [r2]
|
|
bl CeilFixedPoint
|
|
cmp r0, #0xa
|
|
movlt r0, #0x64
|
|
ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
mov r4, #0
|
|
b _0231E8E0
|
|
_0231E898:
|
|
mov r4, #0x1e
|
|
b _0231E8E0
|
|
_0231E8A0:
|
|
cmp r5, #0
|
|
movne r4, #0
|
|
moveq r4, #0x14
|
|
b _0231E8E0
|
|
_0231E8B0:
|
|
cmp r5, #0
|
|
movne r4, #0x50
|
|
moveq r4, #0
|
|
b _0231E8E0
|
|
_0231E8C0:
|
|
ldrb r0, [r6, #0xf1]
|
|
cmp r0, #4
|
|
beq _0231E8E0
|
|
cmp r5, #0
|
|
movne r4, #0x50
|
|
moveq r4, #0
|
|
b _0231E8E0
|
|
_0231E8DC:
|
|
mov r4, #0
|
|
_0231E8E0:
|
|
mov r0, r4
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
_0231E8E8: .word 0x0000014F
|
|
_0231E8EC: .word 0x000003E7
|
|
arm_func_end ov29_0231E05C
|
|
|
|
arm_func_start ov29_0231E8F0
|
|
ov29_0231E8F0: ; 0x0231E8F0
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
mov r5, #0
|
|
mov sl, #1
|
|
mov r6, r0
|
|
mov sb, r5
|
|
mov r8, r5
|
|
mov r7, sl
|
|
ldr r4, _0231E98C ; =0x0235171C
|
|
b _0231E97C
|
|
_0231E914:
|
|
mov r1, r5, lsl #2
|
|
add r0, r4, r5, lsl #2
|
|
ldrsh ip, [r6, #4]
|
|
ldrsh r3, [r4, r1]
|
|
ldrsh r2, [r6, #6]
|
|
ldrsh r1, [r0, #2]
|
|
add r0, ip, r3
|
|
add r1, r2, r1
|
|
bl GetTile
|
|
ldr r1, [r0, #0xc]
|
|
cmp r1, #0
|
|
beq _0231E978
|
|
ldr r0, [r1]
|
|
cmp r0, #0
|
|
moveq r0, sl
|
|
movne r0, sb
|
|
cmp r0, #1
|
|
beq _0231E978
|
|
mov r0, r6
|
|
mov r2, r8
|
|
mov r3, r7
|
|
bl ov29_0230175C
|
|
cmp r0, #1
|
|
moveq r0, #1
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
_0231E978:
|
|
add r5, r5, #1
|
|
_0231E97C:
|
|
cmp r5, #8
|
|
blt _0231E914
|
|
mov r0, #0
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
.align 2, 0
|
|
_0231E98C: .word 0x0235171C
|
|
arm_func_end ov29_0231E8F0
|
|
|
|
arm_func_start ov29_0231E990
|
|
ov29_0231E990: ; 0x0231E990
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
cmp r4, #0x45
|
|
blt _0231E9A8
|
|
cmp r4, #0x8a
|
|
ble _0231E9B0
|
|
_0231E9A8:
|
|
mov r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
_0231E9B0:
|
|
bl IsItemValidVeneer
|
|
cmp r0, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r4, pc}
|
|
ldr r0, _0231E9EC ; =0x022C4B74
|
|
b _0231E9D8
|
|
_0231E9C8:
|
|
cmp r4, r1
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r4, pc}
|
|
add r0, r0, #2
|
|
_0231E9D8:
|
|
ldrsh r1, [r0]
|
|
cmp r1, #0
|
|
bne _0231E9C8
|
|
mov r0, #1
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_0231E9EC: .word 0x022C4B74
|
|
arm_func_end ov29_0231E990
|
|
|
|
arm_func_start GetMaxPpWrapper
|
|
GetMaxPpWrapper: ; 0x0231E9F0
|
|
stmdb sp!, {r3, lr}
|
|
bl GetMaxPp
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end GetMaxPpWrapper
|
|
|
|
arm_func_start ov29_0231EA04
|
|
ov29_0231EA04: ; 0x0231EA04
|
|
ldr ip, _0231EA14 ; =InitMove
|
|
mov r0, r1
|
|
mov r1, r2
|
|
bx ip
|
|
.align 2, 0
|
|
_0231EA14: .word InitMove
|
|
arm_func_end ov29_0231EA04
|
|
|
|
arm_func_start MoveIsNotPhysical
|
|
MoveIsNotPhysical: ; 0x0231EA18
|
|
stmdb sp!, {r3, lr}
|
|
bl GetMoveCategory
|
|
cmp r0, #0
|
|
moveq r0, #0
|
|
movne r0, #1
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end MoveIsNotPhysical
|
|
|
|
arm_func_start ov29_0231EA30
|
|
ov29_0231EA30: ; 0x0231EA30
|
|
cmp r0, #0
|
|
moveq r0, #0
|
|
movne r0, #1
|
|
bx lr
|
|
arm_func_end ov29_0231EA30
|
|
|
|
arm_func_start ov29_0231EA40
|
|
ov29_0231EA40: ; 0x0231EA40
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
mov sl, r0
|
|
bl ov29_023361D4
|
|
cmp r0, #0
|
|
bne _0231EA80
|
|
ldr r0, _0231EDC8 ; =0x02353538
|
|
ldr r0, [r0]
|
|
add r1, r0, #0x4000
|
|
ldrsh r0, [r1, #0xd4]
|
|
sub r2, r0, #0x1a
|
|
mov r2, r2, lsl #0x10
|
|
mov r2, r2, asr #0x10
|
|
mov r2, r2, lsl #0x10
|
|
mov r2, r2, lsr #0x10
|
|
cmp r2, #1
|
|
bhi _0231EA90
|
|
_0231EA80:
|
|
ldr r1, _0231EDCC ; =0x00000E01
|
|
mov r0, sl
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_0231EA90:
|
|
ldrb r2, [r1, #0xc4]
|
|
cmp r2, #0
|
|
beq _0231EAAC
|
|
ldr r1, _0231EDD0 ; =0x00000DFF
|
|
mov r0, sl
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_0231EAAC:
|
|
ldrb r1, [r1, #0xc7]
|
|
cmp r1, #0
|
|
beq _0231EAC8
|
|
mov r0, sl
|
|
mov r1, #0xe00
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_0231EAC8:
|
|
bl ov29_022E0378
|
|
cmp r0, #0
|
|
movne r7, #3
|
|
moveq r7, #2
|
|
mov r6, #0
|
|
mov sb, #1
|
|
_0231EAE0:
|
|
ldr fp, _0231EDC8 ; =0x02353538
|
|
mov r5, #1
|
|
mov r4, #0
|
|
_0231EAEC:
|
|
mov r0, sb
|
|
mov r1, r5
|
|
mov r8, #0
|
|
bl GetTileSafe
|
|
ldrh r1, [r0]
|
|
bic r1, r1, #0x400
|
|
strh r1, [r0]
|
|
strb r4, [r0, #7]
|
|
ldrh r1, [r0]
|
|
tst r1, #0x10
|
|
bne _0231EBCC
|
|
tst r1, #0x100
|
|
bne _0231EBCC
|
|
ldrh r1, [r0, #2]
|
|
orr r1, r1, #3
|
|
strh r1, [r0, #2]
|
|
ldrh r1, [r0]
|
|
bic r1, r1, #8
|
|
strh r1, [r0]
|
|
ldrh r1, [r0]
|
|
tst r1, #0x40
|
|
ldrh r1, [r0]
|
|
movne r6, #1
|
|
and r2, r1, #3
|
|
cmp r2, #2
|
|
cmpne r2, #3
|
|
beq _0231EBCC
|
|
cmp sb, #1
|
|
cmpne r5, #1
|
|
cmpne sb, #0x36
|
|
cmpne r5, #0x1e
|
|
bne _0231EB84
|
|
ldr r1, [r0, #0x10]
|
|
cmp r1, #0
|
|
ldreq r1, [fp]
|
|
ldreqb r1, [r1, #0x78f]
|
|
cmpeq r1, #0
|
|
moveq r8, #1
|
|
_0231EB84:
|
|
cmp r8, #0
|
|
beq _0231EBA8
|
|
ldrh r1, [r0]
|
|
bic r1, r1, #3
|
|
strh r1, [r0]
|
|
ldrh r1, [r0]
|
|
orr r1, r1, r7
|
|
strh r1, [r0]
|
|
b _0231EBCC
|
|
_0231EBA8:
|
|
cmp r2, #1
|
|
beq _0231EBCC
|
|
ldrh r1, [r0]
|
|
bic r1, r1, #3
|
|
strh r1, [r0]
|
|
ldrh r1, [r0]
|
|
orr r1, r1, #1
|
|
orr r1, r1, #0x400
|
|
strh r1, [r0]
|
|
_0231EBCC:
|
|
add r5, r5, #1
|
|
cmp r5, #0x1f
|
|
blt _0231EAEC
|
|
add sb, sb, #1
|
|
cmp sb, #0x37
|
|
blt _0231EAE0
|
|
ldr r0, _0231EDC8 ; =0x02353538
|
|
mov r2, #1
|
|
ldr r0, [r0]
|
|
add r1, r0, #0xcc00
|
|
ldrsh r0, [r1, #0xe4]
|
|
ldrsh r1, [r1, #0xe6]
|
|
bl StairsAlwaysReachable
|
|
cmp r0, #0
|
|
beq _0231EC64
|
|
mov r5, #0
|
|
mov r4, r5
|
|
_0231EC10:
|
|
mov r8, r4
|
|
_0231EC14:
|
|
mov r0, r5
|
|
mov r1, r8
|
|
bl GetTileSafe
|
|
ldrh r1, [r0]
|
|
tst r1, #0x100
|
|
bne _0231EC4C
|
|
tst r1, #0x400
|
|
beq _0231EC4C
|
|
tst r1, #0x8000
|
|
bicne r1, r1, #3
|
|
strneh r1, [r0]
|
|
ldrneh r1, [r0]
|
|
orrne r1, r1, r7
|
|
strneh r1, [r0]
|
|
_0231EC4C:
|
|
add r8, r8, #1
|
|
cmp r8, #0x20
|
|
blt _0231EC14
|
|
add r5, r5, #1
|
|
cmp r5, #0x38
|
|
blt _0231EC10
|
|
_0231EC64:
|
|
cmp r6, #0
|
|
ldrne r0, _0231EDC8 ; =0x02353538
|
|
mov r5, #0
|
|
ldrne r0, [r0]
|
|
movne r1, #0
|
|
addne r0, r0, #0x4000
|
|
strneb r1, [r0, #0xc9]
|
|
mov r4, r5
|
|
_0231EC84:
|
|
mov r7, r4
|
|
_0231EC88:
|
|
cmp r6, #0
|
|
beq _0231ECA8
|
|
mov r0, r5
|
|
mov r1, r7
|
|
bl GetTileSafe
|
|
ldrh r1, [r0]
|
|
orr r1, r1, #0x40
|
|
strh r1, [r0]
|
|
_0231ECA8:
|
|
mov r0, r5
|
|
mov r1, r7
|
|
bl ov29_02336A84
|
|
add r7, r7, #1
|
|
cmp r7, #0x20
|
|
blt _0231EC88
|
|
add r5, r5, #1
|
|
cmp r5, #0x38
|
|
blt _0231EC84
|
|
ldr r4, _0231EDC8 ; =0x02353538
|
|
mov r5, #0
|
|
_0231ECD4:
|
|
ldr r0, [r4]
|
|
add r0, r0, r5, lsl #2
|
|
add r0, r0, #0x12000
|
|
ldr r6, [r0, #0xb78]
|
|
mov r0, r6
|
|
bl EntityIsValid__0231EDD8
|
|
cmp r0, #0
|
|
beq _0231ED08
|
|
ldrsh r0, [r6, #4]
|
|
ldrsh r1, [r6, #6]
|
|
bl GetTile
|
|
ldrb r0, [r0, #7]
|
|
strb r0, [r6, #0x25]
|
|
_0231ED08:
|
|
add r5, r5, #1
|
|
cmp r5, #0x14
|
|
blt _0231ECD4
|
|
bl ov29_0233FB1C
|
|
bl ov29_0233785C
|
|
bl ov29_0233665C
|
|
bl ov29_02304B64
|
|
bl ov29_02339CE8
|
|
bl ov29_02336F4C
|
|
ldr r1, _0231EDD4 ; =0x00000DFE
|
|
mov r0, sl
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
mov r0, #0x28
|
|
mov r1, #0x2b
|
|
bl ov29_022EA370
|
|
mov r0, sl
|
|
mov r1, #1
|
|
bl ov29_02305814
|
|
ldr r4, _0231EDC8 ; =0x02353538
|
|
mov r6, #0
|
|
_0231ED58:
|
|
ldr r0, [r4]
|
|
add r0, r0, r6, lsl #2
|
|
add r0, r0, #0x12000
|
|
ldr r5, [r0, #0xb78]
|
|
mov r0, r5
|
|
bl EntityIsValid__0231EDD8
|
|
cmp r0, #0
|
|
beq _0231ED98
|
|
mov r0, r5
|
|
bl ov29_022F9C74
|
|
mov r0, r5
|
|
bl EntityIsValid__0231EDD8
|
|
cmp r0, #0
|
|
beq _0231ED98
|
|
mov r0, r5
|
|
bl ov29_02321104
|
|
_0231ED98:
|
|
add r6, r6, #1
|
|
cmp r6, #0x14
|
|
blt _0231ED58
|
|
ldr r0, _0231EDC8 ; =0x02353538
|
|
mov r3, #1
|
|
ldr r1, [r0]
|
|
mov r0, #0x14
|
|
add r2, r1, #0x4000
|
|
mov r1, #0x2b
|
|
strb r3, [r2, #0xc4]
|
|
bl ov29_022EA370
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_0231EDC8: .word 0x02353538
|
|
_0231EDCC: .word 0x00000E01
|
|
_0231EDD0: .word 0x00000DFF
|
|
_0231EDD4: .word 0x00000DFE
|
|
arm_func_end ov29_0231EA40
|