mirror of
https://github.com/pret/pmd-sky.git
synced 2026-03-21 17:25:15 -05:00
2738 lines
52 KiB
ArmAsm
2738 lines
52 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "overlay_29_02305C28.inc"
|
|
|
|
.text
|
|
|
|
arm_func_start EndNegativeStatusConditionWrapper
|
|
EndNegativeStatusConditionWrapper: ; 0x02305C28
|
|
stmdb sp!, {r3, lr}
|
|
mov ip, #0
|
|
str ip, [sp]
|
|
bl EndNegativeStatusCondition
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end EndNegativeStatusConditionWrapper
|
|
|
|
arm_func_start TransferNegativeStatusCondition
|
|
TransferNegativeStatusCondition: ; 0x02305C3C
|
|
#ifdef JAPAN
|
|
#define TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET -1
|
|
#define TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET_2 -4
|
|
#else
|
|
#define TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET 0
|
|
#define TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET_2 0
|
|
#endif
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
sub sp, sp, #0xb8
|
|
mov sb, r0
|
|
mov r8, r1
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
beq _02305F4C
|
|
mov r0, r8
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
beq _02305F4C
|
|
mov r5, #0
|
|
mov r0, sb
|
|
mov r1, r5
|
|
ldr r6, [sb, #0xb4]
|
|
ldr r7, [r8, #0xb4]
|
|
bl MonsterHasNegativeStatus
|
|
cmp r0, #0
|
|
beq _02305D28
|
|
mov r0, sb
|
|
mov r1, r8
|
|
bl ov29_02306DCC
|
|
orr r5, r5, r0
|
|
mov r0, sb
|
|
mov r1, r8
|
|
bl ov29_02306F00
|
|
orr r5, r5, r0
|
|
mov r0, sb
|
|
mov r1, r8
|
|
bl ov29_02307078
|
|
orr r5, r5, r0
|
|
mov r0, sb
|
|
mov r1, r8
|
|
bl ov29_02307198
|
|
orr r5, r5, r0
|
|
mov r0, sb
|
|
mov r1, r8
|
|
bl ov29_0230737C
|
|
orr r5, r5, r0
|
|
mov r0, sb
|
|
mov r1, r8
|
|
bl ov29_023076C0
|
|
orr r5, r5, r0
|
|
mov r0, sb
|
|
mov r1, r8
|
|
bl ov29_023077FC
|
|
orr r5, r5, r0
|
|
mov r0, sb
|
|
mov r1, r8
|
|
bl TransferNegativeBlinkerClassStatus
|
|
orr r5, r5, r0
|
|
mov r0, sb
|
|
mov r1, r8
|
|
bl ov29_02307A2C
|
|
orr r5, r5, r0
|
|
mov r0, sb
|
|
mov r1, r8
|
|
bl ov29_02307B0C
|
|
orr r5, r5, r0
|
|
_02305D28:
|
|
ldrb r0, [r6, #0x106 + TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET]
|
|
cmp r0, #0
|
|
beq _02305D68
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r2, #1
|
|
bl TryInflictPerishSongStatus
|
|
cmp r0, #0
|
|
ldrneb r1, [r6, #0x106 + TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET]
|
|
orrne r0, r5, #0x11
|
|
andne r5, r0, #0xff
|
|
orreq r0, r5, #1
|
|
andeq r5, r0, #0xff
|
|
strneb r1, [r7, #0x106 + TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET]
|
|
mov r0, #0
|
|
strb r0, [r6, #0x106 + TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET]
|
|
_02305D68:
|
|
ldrb r0, [r6, #0xfe]
|
|
cmp r0, #0
|
|
beq _02305DAC
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r2, #0
|
|
mov r3, #1
|
|
bl TryInflictExposedStatus
|
|
cmp r0, #0
|
|
ldrneb r1, [r6, #0xfe]
|
|
orrne r0, r5, #0x11
|
|
andne r5, r0, #0xff
|
|
orreq r0, r5, #1
|
|
andeq r5, r0, #0xff
|
|
strneb r1, [r7, #0xfe]
|
|
mov r0, #0
|
|
strb r0, [r6, #0xfe]
|
|
_02305DAC:
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r2, #0
|
|
bl SafeguardIsActive
|
|
cmp r0, #0
|
|
bne _02305E08
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r2, #0
|
|
bl IsProtectedFromNegativeStatus
|
|
cmp r0, #0
|
|
bne _02305E08
|
|
mov r2, #0
|
|
_02305DE0:
|
|
add r0, r6, r2
|
|
ldrb r0, [r0, #0x119 + TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET_2]
|
|
add r1, r7, r2
|
|
add r2, r2, #1
|
|
strb r0, [r1, #0x119 + TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET_2]
|
|
cmp r0, #0
|
|
orrne r0, r5, #0x11
|
|
andne r5, r0, #0xff
|
|
cmp r2, #5
|
|
blt _02305DE0
|
|
_02305E08:
|
|
mov r0, sb
|
|
bl CalcSpeedStageWrapper
|
|
mov r2, #0
|
|
mov r4, r0
|
|
mov r1, r2
|
|
_02305E1C:
|
|
add r0, r6, r2
|
|
add r2, r2, #1
|
|
strb r1, [r0, #0x119 + TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET_2]
|
|
cmp r2, #5
|
|
blt _02305E1C
|
|
mov r0, sb
|
|
bl CalcSpeedStageWrapper
|
|
cmp r4, r0
|
|
orrne r0, r5, #1
|
|
andne r5, r0, #0xff
|
|
mov r0, #0
|
|
add r6, r6, #0x124 + TRANSFER_NEGATIVE_STATUS_CONDITION_OFFSET_2
|
|
mov r3, r0
|
|
mov r4, #1
|
|
_02305E54:
|
|
ldrb r1, [r6, r0, lsl #3]
|
|
add ip, r6, r0, lsl #3
|
|
tst r1, #1
|
|
movne r1, r4
|
|
moveq r1, r3
|
|
tst r1, #0xff
|
|
beq _02305E88
|
|
ldrh r1, [ip, #2]
|
|
tst r1, #1
|
|
orrne r2, r5, #1
|
|
bicne r1, r1, #1
|
|
strneh r1, [ip, #2]
|
|
andne r5, r2, #0xff
|
|
_02305E88:
|
|
add r0, r0, #1
|
|
cmp r0, #4
|
|
blt _02305E54
|
|
mov r0, #0
|
|
mov r1, sb
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldrb r0, [r7, #0xd8]
|
|
mov r2, #0
|
|
cmp r0, #2
|
|
mov r0, #1
|
|
bne _02305ED0
|
|
mov r1, r8
|
|
strb r2, [r7, #0xd8]
|
|
bl SubstitutePlaceholderStringTags
|
|
mov r0, #2
|
|
strb r0, [r7, #0xd8]
|
|
b _02305ED8
|
|
_02305ED0:
|
|
mov r1, r8
|
|
bl SubstitutePlaceholderStringTags
|
|
_02305ED8:
|
|
cmp r5, #0
|
|
beq _02305EF4
|
|
cmp r5, #1
|
|
beq _02305F08
|
|
cmp r5, #0x11
|
|
beq _02305F24
|
|
b _02305F3C
|
|
_02305EF4:
|
|
ldr r2, _02305F54 ; =0x00000CCC
|
|
add r1, sp, #0
|
|
mov r0, sb
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _02305F3C
|
|
_02305F08:
|
|
mov r0, sb
|
|
bl ov29_022E543C
|
|
ldr r2, _02305F58 ; =0x00000CCB
|
|
add r1, sp, #0
|
|
mov r0, sb
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _02305F3C
|
|
_02305F24:
|
|
mov r0, sb
|
|
bl ov29_022E543C
|
|
ldr r2, _02305F5C ; =0x00000CCA
|
|
add r1, sp, #0
|
|
mov r0, sb
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
_02305F3C:
|
|
mov r0, sb
|
|
bl UpdateStatusIconFlags
|
|
mov r0, r8
|
|
bl UpdateStatusIconFlags
|
|
_02305F4C:
|
|
add sp, sp, #0xb8
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
#ifdef JAPAN
|
|
_02305F54: .word 0x00000A0C
|
|
_02305F58: .word 0x00000A0B
|
|
_02305F5C: .word 0x00000A0A
|
|
#else
|
|
_02305F54: .word 0x00000CCC
|
|
_02305F58: .word 0x00000CCB
|
|
_02305F5C: .word 0x00000CCA
|
|
#endif
|
|
arm_func_end TransferNegativeStatusCondition
|
|
|
|
arm_func_start ov29_02305F60
|
|
ov29_02305F60: ; 0x02305F60
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r4, r1
|
|
mov r0, r4
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
ldr r5, [r4, #0xb4]
|
|
mov r1, #0
|
|
mov r0, r5
|
|
bl SubInitMonster
|
|
mov ip, #0
|
|
#ifdef JAPAN
|
|
strb ip, [r5, #0x105]
|
|
strb ip, [r5, #0xfe]
|
|
add r3, r5, #0x120
|
|
#else
|
|
strb ip, [r5, #0x106]
|
|
strb ip, [r5, #0xfe]
|
|
add r3, r5, #0x124
|
|
#endif
|
|
mov r1, ip
|
|
mov r2, #1
|
|
_02305FA0:
|
|
ldrb r0, [r3, ip, lsl #3]
|
|
add lr, r3, ip, lsl #3
|
|
add ip, ip, #1
|
|
tst r0, #1
|
|
movne r0, r2
|
|
moveq r0, r1
|
|
tst r0, #0xff
|
|
ldrneh r0, [lr, #2]
|
|
bicne r0, r0, #1
|
|
strneh r0, [lr, #2]
|
|
cmp ip, #4
|
|
blt _02305FA0
|
|
mov r0, r4
|
|
bl UpdateStatusIconFlags
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end ov29_02305F60
|
|
|
|
arm_func_start EndSleepClassStatus
|
|
EndSleepClassStatus: ; 0x02305FDC
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
mov r8, r1
|
|
mov sb, r0
|
|
mov r0, r8
|
|
mov r7, r2
|
|
mov r6, r3
|
|
mov r4, #0
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
mov r0, r4
|
|
ldr r5, [r8, #0xb4]
|
|
mov r1, r8
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldrb r0, [r5, #0xbd]
|
|
cmp r0, #6
|
|
addls pc, pc, r0, lsl #2
|
|
b _02306164
|
|
_02306028: ; jump table
|
|
b _02306164 ; case 0
|
|
b _02306044 ; case 1
|
|
b _0230605C ; case 2
|
|
b _02306070 ; case 3
|
|
b _02306118 ; case 4
|
|
b _023060A8 ; case 5
|
|
b _02306164 ; case 6
|
|
_02306044:
|
|
ldr r2, _0230618C ; =0x00000C8D
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r4, #1
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _02306164
|
|
_0230605C:
|
|
ldr r2, _02306190 ; =0x00000C8E
|
|
mov r0, sb
|
|
mov r1, r8
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _02306164
|
|
_02306070:
|
|
mov r4, #1
|
|
mov r0, sb
|
|
mov r1, r8
|
|
#ifdef JAPAN
|
|
rsb r2, r4, #0x9d0
|
|
#else
|
|
rsb r2, r4, #0xc90
|
|
#endif
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
cmp r6, #0
|
|
beq _02306164
|
|
ldr r0, _02306194 ; =ov10_022C45A8
|
|
ldr r3, _02306198 ; =0x0000024E
|
|
ldrsh r1, [r0]
|
|
mov r0, r8
|
|
mov r2, #8
|
|
bl ApplyDamageAndEffectsWrapper
|
|
b _02306164
|
|
_023060A8:
|
|
mov r0, sb
|
|
mov r1, r8
|
|
#ifdef JAPAN
|
|
mov r2, #0x9d0
|
|
#else
|
|
mov r2, #0xc90
|
|
#endif
|
|
mov r4, #1
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
ldrb r0, [sp, #0x20]
|
|
cmp r0, #0
|
|
beq _023060E8
|
|
ldr r0, _0230619C ; =ov10_022C45A0
|
|
mov r6, r4
|
|
ldrsh r2, [r0]
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r3, #0
|
|
str r6, [sp]
|
|
bl TryIncreaseHp
|
|
_023060E8:
|
|
ldrb r0, [sp, #0x20]
|
|
mov r6, #0
|
|
strb r6, [r5, #0xbd]
|
|
cmp r0, #0
|
|
beq _02306164
|
|
mov r2, #1
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r3, r2
|
|
str r6, [sp]
|
|
bl EndNegativeStatusCondition
|
|
b _02306164
|
|
_02306118:
|
|
cmp r7, #0
|
|
beq _02306154
|
|
ldr r1, _023061A0 ; =ov10_022C4868
|
|
mov r3, r4
|
|
mov r0, r8
|
|
mov r2, #1
|
|
strb r3, [r5, #0xbd]
|
|
bl CalcStatusDuration
|
|
mov r2, r0
|
|
mov r0, sb
|
|
mov r1, r8
|
|
add r2, r2, #1
|
|
mov r3, #1
|
|
bl TryInflictSleepStatus
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
_02306154:
|
|
ldr r2, _023061A4 ; =0x00000C91
|
|
mov r0, sb
|
|
mov r1, r8
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
_02306164:
|
|
mov r1, #0
|
|
mov r0, r8
|
|
strb r1, [r5, #0xbd]
|
|
bl UpdateStatusIconFlags
|
|
cmp r4, #0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
mov r0, r8
|
|
mov r1, #8
|
|
bl ov29_02304A48
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
#ifdef JAPAN
|
|
#define END_SLEEP_CLASS_STATUS_OFFSET -0x2C0
|
|
#else
|
|
#define END_SLEEP_CLASS_STATUS_OFFSET 0
|
|
#endif
|
|
_0230618C: .word 0x00000C8D + END_SLEEP_CLASS_STATUS_OFFSET
|
|
_02306190: .word 0x00000C8E + END_SLEEP_CLASS_STATUS_OFFSET
|
|
_02306194: .word ov10_022C45A8
|
|
_02306198: .word 0x0000024E
|
|
_0230619C: .word ov10_022C45A0
|
|
_023061A0: .word ov10_022C4868
|
|
_023061A4: .word 0x00000C91 + END_SLEEP_CLASS_STATUS_OFFSET
|
|
arm_func_end EndSleepClassStatus
|
|
|
|
arm_func_start EndBurnClassStatus
|
|
EndBurnClassStatus: ; 0x023061A8
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r5, r1
|
|
mov r6, r0
|
|
mov r0, r5
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r4, r5, r6, pc}
|
|
mov r0, #0
|
|
ldr r4, [r5, #0xb4]
|
|
mov r1, r5
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldrb r0, [r4, #0xbf]
|
|
cmp r0, #5
|
|
addls pc, pc, r0, lsl #2
|
|
b _02306238
|
|
_023061E8: ; jump table
|
|
b _02306238 ; case 0
|
|
b _02306228 ; case 1
|
|
b _02306200 ; case 2
|
|
b _02306200 ; case 3
|
|
b _02306214 ; case 4
|
|
b _02306238 ; case 5
|
|
_02306200:
|
|
ldr r2, _0230624C ; =0x00000C9E
|
|
mov r0, r6
|
|
mov r1, r5
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _02306238
|
|
_02306214:
|
|
ldr r2, _02306250 ; =0x00000C9C
|
|
mov r0, r6
|
|
mov r1, r5
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _02306238
|
|
_02306228:
|
|
ldr r2, _02306254 ; =0x00000C9D
|
|
mov r0, r6
|
|
mov r1, r5
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
_02306238:
|
|
mov r1, #0
|
|
mov r0, r5
|
|
strb r1, [r4, #0xbf]
|
|
bl UpdateStatusIconFlags
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
#ifdef JAPAN
|
|
_0230624C: .word 0x000009DE
|
|
_02306250: .word 0x000009DC
|
|
_02306254: .word 0x000009DD
|
|
#else
|
|
_0230624C: .word 0x00000C9E
|
|
_02306250: .word 0x00000C9C
|
|
_02306254: .word 0x00000C9D
|
|
#endif
|
|
arm_func_end EndBurnClassStatus
|
|
|
|
arm_func_start EndFrozenClassStatus
|
|
EndFrozenClassStatus: ; 0x02306258
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
mov r7, r1
|
|
mov r8, r0
|
|
mov r0, r7
|
|
mov r6, r2
|
|
mov r4, #0
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
|
|
mov r0, r4
|
|
ldr r5, [r7, #0xb4]
|
|
mov r1, r7
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldrb r0, [r5, #0xc4]
|
|
cmp r0, #8
|
|
addls pc, pc, r0, lsl #2
|
|
b _02306398
|
|
_023062A0: ; jump table
|
|
b _02306398 ; case 0
|
|
b _023062C4 ; case 1
|
|
b _02306300 ; case 2
|
|
b _02306338 ; case 3
|
|
b _0230635C ; case 4
|
|
#ifdef JAPAN
|
|
b _02306300 ; case 5
|
|
#else
|
|
b _0230631C ; case 5
|
|
#endif
|
|
b _02306380 ; case 6
|
|
b _023062E4 ; case 7
|
|
b _02306398 ; case 8
|
|
_023062C4:
|
|
cmp r6, #0
|
|
beq _023062DC
|
|
ldr r2, _023063BC ; =0x00000C9F
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
_023062DC:
|
|
mov r4, #1
|
|
b _02306398
|
|
_023062E4:
|
|
cmp r6, #0
|
|
beq _02306398
|
|
ldr r2, _023063C0 ; =0x00000C99
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _02306398
|
|
_02306300:
|
|
cmp r6, #0
|
|
beq _02306398
|
|
ldr r2, _023063C4 ; =0x00000C9A
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _02306398
|
|
#ifndef JAPAN
|
|
_0230631C:
|
|
cmp r6, #0
|
|
beq _02306398
|
|
ldr r2, _023063C8 ; =0x00000C9B
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _02306398
|
|
#endif
|
|
_02306338:
|
|
cmp r6, #0
|
|
beq _02306350
|
|
ldr r2, _023063CC ; =0x00000C98
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
_02306350:
|
|
ldr r0, [r5, #0xb4]
|
|
bl FreeOtherWrappedMonsters
|
|
b _02306398
|
|
_0230635C:
|
|
cmp r6, #0
|
|
beq _02306374
|
|
ldr r2, _023063CC ; =0x00000C98
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
_02306374:
|
|
ldr r0, [r5, #0xb4]
|
|
bl FreeOtherWrappedMonsters
|
|
b _02306398
|
|
_02306380:
|
|
cmp r6, #0
|
|
beq _02306398
|
|
ldr r2, _023063D0 ; =0x00000CBB
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
_02306398:
|
|
mov r1, #0
|
|
mov r0, r7
|
|
strb r1, [r5, #0xc4]
|
|
bl UpdateStatusIconFlags
|
|
cmp r4, #0
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
|
|
mov r0, r7
|
|
bl ov29_022E6798
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
#ifdef JAPAN
|
|
#define END_FROZEN_CLASS_STATUS_OFFSET -0x2C0
|
|
#else
|
|
#define END_FROZEN_CLASS_STATUS_OFFSET 0
|
|
#endif
|
|
_023063BC: .word 0x00000C9F + END_FROZEN_CLASS_STATUS_OFFSET
|
|
_023063C0: .word 0x00000C99 + END_FROZEN_CLASS_STATUS_OFFSET
|
|
_023063C4: .word 0x00000C9A + END_FROZEN_CLASS_STATUS_OFFSET
|
|
#ifndef JAPAN
|
|
_023063C8: .word 0x00000C9B
|
|
#endif
|
|
_023063CC: .word 0x00000C98 + END_FROZEN_CLASS_STATUS_OFFSET
|
|
_023063D0: .word 0x00000CBB + END_FROZEN_CLASS_STATUS_OFFSET
|
|
arm_func_end EndFrozenClassStatus
|
|
|
|
arm_func_start EndCringeClassStatus
|
|
EndCringeClassStatus: ; 0x023063D4
|
|
#ifdef JAPAN
|
|
#define END_CRINGE_CLASS_STATUS_OFFSET -0x2C0
|
|
#else
|
|
#define END_CRINGE_CLASS_STATUS_OFFSET 0
|
|
#endif
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r5, r1
|
|
mov r6, r0
|
|
mov r0, r5
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r4, r5, r6, pc}
|
|
mov r0, #0
|
|
ldr r4, [r5, #0xb4]
|
|
mov r1, r5
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldrb r0, [r4, #0xd0]
|
|
cmp r0, #8
|
|
addls pc, pc, r0, lsl #2
|
|
b _023064C0
|
|
_02306414: ; jump table
|
|
b _023064C0 ; case 0
|
|
b _023064B0 ; case 1
|
|
b _02306438 ; case 2
|
|
b _02306474 ; case 3
|
|
b _0230644C ; case 4
|
|
b _02306460 ; case 5
|
|
b _0230649C ; case 6
|
|
b _02306488 ; case 7
|
|
b _023064C0 ; case 8
|
|
_02306438:
|
|
ldr r2, _023064DC ; =0x00000C97
|
|
mov r0, r6
|
|
mov r1, r5
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _023064C0
|
|
_0230644C:
|
|
ldr r2, _023064E0 ; =0x00000CA4
|
|
mov r0, r6
|
|
mov r1, r5
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _023064C0
|
|
_02306460:
|
|
ldr r2, _023064E4 ; =0x00000CA7
|
|
mov r0, r6
|
|
mov r1, r5
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _023064C0
|
|
_02306474:
|
|
ldr r2, _023064E8 ; =0x00000CBD
|
|
mov r0, r6
|
|
mov r1, r5
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _023064C0
|
|
_02306488:
|
|
ldr r2, _023064EC ; =0x00000CB7
|
|
mov r0, r6
|
|
mov r1, r5
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _023064C0
|
|
_0230649C:
|
|
mov r0, r6
|
|
mov r1, r5
|
|
mov r2, #0xcb0 + END_CRINGE_CLASS_STATUS_OFFSET
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
b _023064C0
|
|
_023064B0:
|
|
ldr r2, _023064F0 ; =0x00000CBC
|
|
mov r0, r6
|
|
mov r1, r5
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
_023064C0:
|
|
mov r1, #0
|
|
mov r0, r5
|
|
strb r1, [r4, #0xd0]
|
|
bl UpdateStatusIconFlags
|
|
mov r0, r5
|
|
bl CalcSpeedStageWrapper
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_023064DC: .word 0x00000C97 + END_CRINGE_CLASS_STATUS_OFFSET
|
|
_023064E0: .word 0x00000CA4 + END_CRINGE_CLASS_STATUS_OFFSET
|
|
_023064E4: .word 0x00000CA7 + END_CRINGE_CLASS_STATUS_OFFSET
|
|
_023064E8: .word 0x00000CBD + END_CRINGE_CLASS_STATUS_OFFSET
|
|
_023064EC: .word 0x00000CB7 + END_CRINGE_CLASS_STATUS_OFFSET
|
|
_023064F0: .word 0x00000CBC + END_CRINGE_CLASS_STATUS_OFFSET
|
|
arm_func_end EndCringeClassStatus
|
|
|
|
arm_func_start EndReflectClassStatus
|
|
EndReflectClassStatus: ; 0x023064F4
|
|
#ifdef JAPAN
|
|
#define END_REFLECT_CLASS_STATUS_OFFSET -0x2C0
|
|
#else
|
|
#define END_REFLECT_CLASS_STATUS_OFFSET 0
|
|
#endif
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r1
|
|
mov r0, r5
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
mov r0, #0
|
|
ldr r4, [r5, #0xb4]
|
|
mov r1, r5
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldrb r0, [r4, #0xd5]
|
|
cmp r0, #0x12
|
|
addls pc, pc, r0, lsl #2
|
|
b _02306688
|
|
_02306530: ; jump table
|
|
b _02306688 ; case 0
|
|
b _0230657C ; case 1
|
|
b _0230658C ; case 2
|
|
b _0230659C ; case 3
|
|
b _023065AC ; case 4
|
|
b _023065BC ; case 5
|
|
b _023065CC ; case 6
|
|
b _023065DC ; case 7
|
|
b _023065EC ; case 8
|
|
b _023065FC ; case 9
|
|
b _023065AC ; case 10
|
|
b _0230660C ; case 11
|
|
b _0230661C ; case 12
|
|
b _0230663C ; case 13
|
|
b _0230664C ; case 14
|
|
b _0230665C ; case 15
|
|
b _0230666C ; case 16
|
|
b _0230667C ; case 17
|
|
b _02306688 ; case 18
|
|
_0230657C:
|
|
ldr r1, _0230669C ; =0x00000C87
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
b _02306688
|
|
_0230658C:
|
|
ldr r1, _023066A0 ; =0x00000C8A
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
b _02306688
|
|
_0230659C:
|
|
ldr r1, _023066A4 ; =0x00000C88
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
b _02306688
|
|
_023065AC:
|
|
ldr r1, _023066A8 ; =0x00000C89
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
b _02306688
|
|
_023065BC:
|
|
ldr r1, _023066AC ; =0x00000C8B
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
b _02306688
|
|
_023065CC:
|
|
ldr r1, _023066B0 ; =0x00000C8C
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
b _02306688
|
|
_023065DC:
|
|
ldr r1, _023066B4 ; =0x00000CA6
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
b _02306688
|
|
_023065EC:
|
|
ldr r1, _023066B8 ; =0x00000CAE
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
b _02306688
|
|
_023065FC:
|
|
ldr r1, _023066BC ; =0x00000CB1
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
b _02306688
|
|
_0230660C:
|
|
ldr r1, _023066C0 ; =0x00000CB2
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
b _02306688
|
|
_0230661C:
|
|
ldr r1, _023066C4 ; =0x00000CB3
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
mov r0, r5
|
|
bl ov29_022E65F4
|
|
mov r0, r5
|
|
bl ov29_02307CE0
|
|
b _02306688
|
|
_0230663C:
|
|
ldr r1, _023066C8 ; =0x00000CB4
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
b _02306688
|
|
_0230664C:
|
|
ldr r1, _023066CC ; =0x00000CB5
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
b _02306688
|
|
_0230665C:
|
|
ldr r1, _023066D0 ; =0x00000CBE
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
b _02306688
|
|
_0230666C:
|
|
mov r0, r5
|
|
mov r1, #0xcc0 + END_REFLECT_CLASS_STATUS_OFFSET
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
b _02306688
|
|
_0230667C:
|
|
ldr r1, _023066D4 ; =0x00000CC1
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
_02306688:
|
|
mov r1, #0
|
|
mov r0, r5
|
|
strb r1, [r4, #0xd5]
|
|
bl UpdateStatusIconFlags
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_0230669C: .word 0x00000C87 + END_REFLECT_CLASS_STATUS_OFFSET
|
|
_023066A0: .word 0x00000C8A + END_REFLECT_CLASS_STATUS_OFFSET
|
|
_023066A4: .word 0x00000C88 + END_REFLECT_CLASS_STATUS_OFFSET
|
|
_023066A8: .word 0x00000C89 + END_REFLECT_CLASS_STATUS_OFFSET
|
|
_023066AC: .word 0x00000C8B + END_REFLECT_CLASS_STATUS_OFFSET
|
|
_023066B0: .word 0x00000C8C + END_REFLECT_CLASS_STATUS_OFFSET
|
|
_023066B4: .word 0x00000CA6 + END_REFLECT_CLASS_STATUS_OFFSET
|
|
_023066B8: .word 0x00000CAE + END_REFLECT_CLASS_STATUS_OFFSET
|
|
_023066BC: .word 0x00000CB1 + END_REFLECT_CLASS_STATUS_OFFSET
|
|
_023066C0: .word 0x00000CB2 + END_REFLECT_CLASS_STATUS_OFFSET
|
|
_023066C4: .word 0x00000CB3 + END_REFLECT_CLASS_STATUS_OFFSET
|
|
_023066C8: .word 0x00000CB4 + END_REFLECT_CLASS_STATUS_OFFSET
|
|
_023066CC: .word 0x00000CB5 + END_REFLECT_CLASS_STATUS_OFFSET
|
|
_023066D0: .word 0x00000CBE + END_REFLECT_CLASS_STATUS_OFFSET
|
|
_023066D4: .word 0x00000CC1 + END_REFLECT_CLASS_STATUS_OFFSET
|
|
arm_func_end EndReflectClassStatus
|
|
|
|
arm_func_start TryRemoveSnatchedMonsterFromDungeonStruct
|
|
TryRemoveSnatchedMonsterFromDungeonStruct: ; 0x023066D8
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r1
|
|
mov r0, r4
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r4, pc}
|
|
ldr r0, [r4, #0xb4]
|
|
ldrb r0, [r0, #0xd8]
|
|
cmp r0, #3
|
|
ldmneia sp!, {r4, pc}
|
|
ldr r1, _02306724 ; =DUNGEON_PTR
|
|
mov r2, #0
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x19000
|
|
#ifdef JAPAN
|
|
str r2, [r0, #0x860]
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x19000
|
|
str r2, [r0, #0x868]
|
|
#else
|
|
str r2, [r0, #0x904]
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x19000
|
|
str r2, [r0, #0x90c]
|
|
#endif
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_02306724: .word DUNGEON_PTR
|
|
arm_func_end TryRemoveSnatchedMonsterFromDungeonStruct
|
|
|
|
arm_func_start EndCurseClassStatus
|
|
EndCurseClassStatus: ; 0x02306728
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
mov r7, r1
|
|
mov r8, r0
|
|
mov r0, r7
|
|
mov r6, r2
|
|
mov r5, r3
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
|
|
mov r0, #0
|
|
ldr r4, [r7, #0xb4]
|
|
mov r1, r7
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldrb r0, [r4, #0xd8]
|
|
cmp r0, #7
|
|
addls pc, pc, r0, lsl #2
|
|
b _02306894
|
|
_02306770: ; jump table
|
|
b _02306894 ; case 0
|
|
b _02306790 ; case 1
|
|
b _023067D4 ; case 2
|
|
b _023067AC ; case 3
|
|
b _02306830 ; case 4
|
|
b _02306868 ; case 5
|
|
b _02306880 ; case 6
|
|
b _02306894 ; case 7
|
|
_02306790:
|
|
cmp r6, #1
|
|
cmpne r5, #0
|
|
beq _02306894
|
|
ldr r1, _023068A8 ; =0x00000C95
|
|
mov r0, r7
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
b _02306894
|
|
_023067AC:
|
|
cmp r6, #3
|
|
cmpne r5, #0
|
|
beq _023067C4
|
|
ldr r1, _023068AC ; =0x00000C96
|
|
mov r0, r7
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
_023067C4:
|
|
mov r0, r8
|
|
mov r1, r7
|
|
bl TryRemoveSnatchedMonsterFromDungeonStruct
|
|
b _02306894
|
|
_023067D4:
|
|
mov r1, #0
|
|
mov r0, r7
|
|
strb r1, [r4, #0xd8]
|
|
bl GetIdleAnimationId
|
|
mov r1, r0
|
|
mov r0, r7
|
|
bl ov29_02304830
|
|
ldr r1, _023068B0 ; =DUNGEON_PTR
|
|
mov r0, #0
|
|
ldr r1, [r1]
|
|
cmp r6, #2
|
|
add r1, r1, #0x3000
|
|
#ifdef JAPAN
|
|
strb r0, [r1, #0xd94]
|
|
#else
|
|
strb r0, [r1, #0xe38]
|
|
#endif
|
|
beq _02306894
|
|
mov r1, r7
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
cmp r5, #0
|
|
beq _02306894
|
|
ldr r1, _023068B4 ; =0x00000CA5
|
|
mov r0, r7
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
b _02306894
|
|
_02306830:
|
|
mov r1, #0
|
|
mov r0, r7
|
|
strb r1, [r4, #0xd8]
|
|
bl ov29_022FB984
|
|
cmp r5, #0
|
|
beq _02306854
|
|
ldr r1, _023068B8 ; =0x00000CBF
|
|
mov r0, r7
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
_02306854:
|
|
ldr r0, _023068B0 ; =DUNGEON_PTR
|
|
mov r1, #1
|
|
ldr r0, [r0]
|
|
strb r1, [r0, #0xe]
|
|
b _02306894
|
|
_02306868:
|
|
cmp r5, #0
|
|
beq _02306894
|
|
ldr r1, _023068BC ; =0x00000CC2
|
|
mov r0, r7
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
b _02306894
|
|
_02306880:
|
|
cmp r5, #0
|
|
beq _02306894
|
|
ldr r1, _023068C0 ; =0x00000CC3
|
|
mov r0, r7
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
_02306894:
|
|
mov r1, #0
|
|
mov r0, r7
|
|
strb r1, [r4, #0xd8]
|
|
bl UpdateStatusIconFlags
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
#ifdef JAPAN
|
|
#define END_CURSE_CLASS_OFFSET -0x2C0
|
|
#else
|
|
#define END_CURSE_CLASS_OFFSET 0
|
|
#endif
|
|
_023068A8: .word 0x00000C95 + END_CURSE_CLASS_OFFSET
|
|
_023068AC: .word 0x00000C96 + END_CURSE_CLASS_OFFSET
|
|
_023068B0: .word DUNGEON_PTR
|
|
_023068B4: .word 0x00000CA5 + END_CURSE_CLASS_OFFSET
|
|
_023068B8: .word 0x00000CBF + END_CURSE_CLASS_OFFSET
|
|
_023068BC: .word 0x00000CC2 + END_CURSE_CLASS_OFFSET
|
|
_023068C0: .word 0x00000CC3 + END_CURSE_CLASS_OFFSET
|
|
arm_func_end EndCurseClassStatus
|
|
|
|
arm_func_start EndLeechSeedClassStatus
|
|
EndLeechSeedClassStatus: ; 0x023068C4
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r1
|
|
mov r0, r5
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
mov r0, #0
|
|
ldr r4, [r5, #0xb4]
|
|
mov r1, r5
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldrb r0, [r4, #0xe0]
|
|
cmp r0, #3
|
|
addls pc, pc, r0, lsl #2
|
|
b _0230692C
|
|
_02306900: ; jump table
|
|
b _0230692C ; case 0
|
|
b _02306910 ; case 1
|
|
b _02306920 ; case 2
|
|
b _0230692C ; case 3
|
|
_02306910:
|
|
ldr r1, _02306948 ; =0x00000C94
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
b _0230692C
|
|
_02306920:
|
|
ldr r1, _0230694C ; =0x00000CAF
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
_0230692C:
|
|
mov r1, #0
|
|
mov r0, r5
|
|
strb r1, [r4, #0xe0]
|
|
mov r1, #0xff
|
|
strb r1, [r4, #0xe8]
|
|
bl UpdateStatusIconFlags
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
#ifdef JAPAN
|
|
_02306948: .word 0x000009D4
|
|
_0230694C: .word 0x000009EF
|
|
#else
|
|
_02306948: .word 0x00000C94
|
|
_0230694C: .word 0x00000CAF
|
|
#endif
|
|
arm_func_end EndLeechSeedClassStatus
|
|
|
|
arm_func_start EndSureShotClassStatus
|
|
EndSureShotClassStatus: ; 0x02306950
|
|
#ifdef JAPAN
|
|
#define END_SURE_SHOT_CLASS_STATUS_OFFSET -0x2C0
|
|
#else
|
|
#define END_SURE_SHOT_CLASS_STATUS_OFFSET 0
|
|
#endif
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r1
|
|
mov r0, r5
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
mov r0, #0
|
|
ldr r4, [r5, #0xb4]
|
|
mov r1, r5
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldrb r0, [r4, #0xec]
|
|
cmp r0, #5
|
|
addls pc, pc, r0, lsl #2
|
|
b _023069E0
|
|
_0230698C: ; jump table
|
|
b _023069E0 ; case 0
|
|
b _023069A4 ; case 1
|
|
b _023069B4 ; case 2
|
|
b _023069C4 ; case 3
|
|
b _023069D4 ; case 4
|
|
b _023069E0 ; case 5
|
|
_023069A4:
|
|
mov r0, r5
|
|
mov r1, #0xca0 + END_SURE_SHOT_CLASS_STATUS_OFFSET
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
b _023069E0
|
|
_023069B4:
|
|
ldr r1, _023069F4 ; =0x00000CA1
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
b _023069E0
|
|
_023069C4:
|
|
ldr r1, _023069F8 ; =0x00000CA2
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
b _023069E0
|
|
_023069D4:
|
|
ldr r1, _023069FC ; =0x00000CA3
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
_023069E0:
|
|
mov r1, #0
|
|
mov r0, r5
|
|
strb r1, [r4, #0xec]
|
|
bl UpdateStatusIconFlags
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_023069F4: .word 0x00000CA1 + END_SURE_SHOT_CLASS_STATUS_OFFSET
|
|
_023069F8: .word 0x00000CA2 + END_SURE_SHOT_CLASS_STATUS_OFFSET
|
|
_023069FC: .word 0x00000CA3 + END_SURE_SHOT_CLASS_STATUS_OFFSET
|
|
arm_func_end EndSureShotClassStatus
|
|
|
|
arm_func_start EndInvisibleClassStatus
|
|
EndInvisibleClassStatus: ; 0x02306A00
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
mov r8, r1
|
|
mov r4, #0
|
|
mov r0, r8
|
|
mov r7, r2
|
|
mov r5, r4
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
|
|
mov r0, r4
|
|
ldr r6, [r8, #0xb4]
|
|
mov r1, r8
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldrb r0, [r6, #0xef]
|
|
cmp r0, #5
|
|
addls pc, pc, r0, lsl #2
|
|
b _02306ADC
|
|
_02306A48: ; jump table
|
|
b _02306ADC ; case 0
|
|
b _02306A60 ; case 1
|
|
b _02306A84 ; case 2
|
|
b _02306A74 ; case 3
|
|
b _02306AC4 ; case 4
|
|
b _02306ADC ; case 5
|
|
_02306A60:
|
|
ldr r1, _02306B18 ; =0x00000CA8
|
|
mov r0, r8
|
|
mov r4, #1
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
b _02306ADC
|
|
_02306A74:
|
|
ldr r1, _02306B1C ; =0x00000CB8
|
|
mov r0, r8
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
b _02306ADC
|
|
_02306A84:
|
|
ldrsh r1, [r6, #2]
|
|
mov r0, r8
|
|
bl GetMonsterApparentId
|
|
strh r0, [r6, #4]
|
|
ldrsh r0, [r6, #4]
|
|
bl DungeonGetSpriteIndex
|
|
strh r0, [r8, #0xa8]
|
|
mov r0, r8
|
|
bl GetIdleAnimationId
|
|
mov r1, r0
|
|
mov r0, r8
|
|
bl ov29_02304830
|
|
ldr r1, _02306B20 ; =0x00000CB6
|
|
mov r0, r8
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
b _02306ADC
|
|
_02306AC4:
|
|
cmp r7, #0
|
|
bne _02306AD8
|
|
ldr r1, _02306B24 ; =0x00000CAC
|
|
mov r0, r8
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
_02306AD8:
|
|
mov r5, #1
|
|
_02306ADC:
|
|
mov r1, #0
|
|
mov r0, r8
|
|
strb r1, [r6, #0xef]
|
|
bl UpdateStatusIconFlags
|
|
cmp r4, #0
|
|
beq _02306AFC
|
|
mov r0, #1
|
|
bl ov29_022F62CC
|
|
_02306AFC:
|
|
cmp r7, #0
|
|
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
|
|
cmp r5, #0
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
|
|
mov r0, r8
|
|
bl EnsureCanStandCurrentTile
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
#ifdef JAPAN
|
|
#define END_INVISIBLE_CLASS_OFFSET -0x2C0
|
|
#else
|
|
#define END_INVISIBLE_CLASS_OFFSET 0
|
|
#endif
|
|
_02306B18: .word 0x00000CA8 + END_INVISIBLE_CLASS_OFFSET
|
|
_02306B1C: .word 0x00000CB8 + END_INVISIBLE_CLASS_OFFSET
|
|
_02306B20: .word 0x00000CB6 + END_INVISIBLE_CLASS_OFFSET
|
|
_02306B24: .word 0x00000CAC + END_INVISIBLE_CLASS_OFFSET
|
|
arm_func_end EndInvisibleClassStatus
|
|
|
|
arm_func_start EndBlinkerClassStatus
|
|
EndBlinkerClassStatus: ; 0x02306B28
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r1
|
|
mov r0, r5
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
mov r0, #0
|
|
ldr r4, [r5, #0xb4]
|
|
mov r1, r5
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldrb r0, [r4, #0xf1]
|
|
cmp r0, #5
|
|
addls pc, pc, r0, lsl #2
|
|
b _02306BB8
|
|
_02306B64: ; jump table
|
|
b _02306BB8 ; case 0
|
|
b _02306B7C ; case 1
|
|
b _02306B8C ; case 2
|
|
b _02306B9C ; case 3
|
|
b _02306BAC ; case 4
|
|
b _02306BB8 ; case 5
|
|
_02306B7C:
|
|
ldr r1, _02306BE8 ; =0x00000CA9
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
b _02306BB8
|
|
_02306B8C:
|
|
ldr r1, _02306BEC ; =0x00000CAA
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
b _02306BB8
|
|
_02306B9C:
|
|
ldr r1, _02306BF0 ; =0x00000CAB
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
b _02306BB8
|
|
_02306BAC:
|
|
ldr r1, _02306BF4 ; =0x00000CAD
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
_02306BB8:
|
|
mov r1, #0
|
|
mov r0, r5
|
|
strb r1, [r4, #0xf1]
|
|
bl UpdateStatusIconFlags
|
|
ldrb r0, [r4, #7]
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
mov r0, #0x31
|
|
bl AdvanceFrame
|
|
bl UpdateTrapsVisibility
|
|
bl UpdateMinimap
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
#ifdef JAPAN
|
|
#define END_BLINKER_CLASS_OFFSET -0x2C0
|
|
#else
|
|
#define END_BLINKER_CLASS_OFFSET 0
|
|
#endif
|
|
_02306BE8: .word 0x00000CA9 + END_BLINKER_CLASS_OFFSET
|
|
_02306BEC: .word 0x00000CAA + END_BLINKER_CLASS_OFFSET
|
|
_02306BF0: .word 0x00000CAB + END_BLINKER_CLASS_OFFSET
|
|
_02306BF4: .word 0x00000CAD + END_BLINKER_CLASS_OFFSET
|
|
arm_func_end EndBlinkerClassStatus
|
|
|
|
arm_func_start EndMuzzledStatus
|
|
EndMuzzledStatus: ; 0x02306BF8
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r1
|
|
mov r0, r5
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
mov r0, #0
|
|
ldr r4, [r5, #0xb4]
|
|
mov r1, r5
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldrb r0, [r4, #0xf3]
|
|
cmp r0, #0
|
|
beq _02306C4C
|
|
cmp r0, #1
|
|
beq _02306C40
|
|
cmp r0, #2
|
|
b _02306C4C
|
|
_02306C40:
|
|
ldr r1, _02306C60 ; =0x00000CB9
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
_02306C4C:
|
|
mov r1, #0
|
|
mov r0, r5
|
|
strb r1, [r4, #0xf3]
|
|
bl UpdateStatusIconFlags
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
#ifdef JAPAN
|
|
_02306C60: .word 0x000009F9
|
|
#else
|
|
_02306C60: .word 0x00000CB9
|
|
#endif
|
|
arm_func_end EndMuzzledStatus
|
|
|
|
arm_func_start EndMiracleEyeStatus
|
|
EndMiracleEyeStatus: ; 0x02306C64
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r1
|
|
mov r0, r5
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
mov r0, #0
|
|
ldr r4, [r5, #0xb4]
|
|
mov r1, r5
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldrb r0, [r4, #0xf5]
|
|
cmp r0, #0
|
|
beq _02306CB8
|
|
cmp r0, #1
|
|
beq _02306CAC
|
|
cmp r0, #2
|
|
b _02306CB8
|
|
_02306CAC:
|
|
ldr r1, _02306CCC ; =0x00000CC4
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
_02306CB8:
|
|
mov r1, #0
|
|
mov r0, r5
|
|
strb r1, [r4, #0xf5]
|
|
bl UpdateStatusIconFlags
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
#ifdef JAPAN
|
|
_02306CCC: .word 0x00000A04
|
|
#else
|
|
_02306CCC: .word 0x00000CC4
|
|
#endif
|
|
arm_func_end EndMiracleEyeStatus
|
|
|
|
arm_func_start EndMagnetRiseStatus
|
|
EndMagnetRiseStatus: ; 0x02306CD0
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r1
|
|
mov r0, r6
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r4, r5, r6, pc}
|
|
mov r4, #0
|
|
ldr r5, [r6, #0xb4]
|
|
mov r0, r4
|
|
mov r1, r6
|
|
mov r2, r4
|
|
bl SubstitutePlaceholderStringTags
|
|
ldrb r0, [r5, #0xf7]
|
|
cmp r0, #0
|
|
beq _02306D2C
|
|
cmp r0, #1
|
|
beq _02306D1C
|
|
cmp r0, #2
|
|
b _02306D2C
|
|
_02306D1C:
|
|
ldr r1, _02306D50 ; =0x00000CC5
|
|
mov r0, r6
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
mov r4, #1
|
|
_02306D2C:
|
|
mov r1, #0
|
|
mov r0, r6
|
|
strb r1, [r5, #0xf7]
|
|
bl UpdateStatusIconFlags
|
|
cmp r4, #0
|
|
ldmeqia sp!, {r4, r5, r6, pc}
|
|
mov r0, r6
|
|
bl ov29_02321134
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
#ifdef JAPAN
|
|
_02306D50: .word 0x00000A05
|
|
#else
|
|
_02306D50: .word 0x00000CC5
|
|
#endif
|
|
arm_func_end EndMagnetRiseStatus
|
|
|
|
arm_func_start ov29_02306D54
|
|
ov29_02306D54: ; 0x02306D54
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
|
mov r8, #0
|
|
ldr r4, _02306DC8 ; =DUNGEON_PTR
|
|
mov sb, r0
|
|
mov r5, r8
|
|
mov r6, #1
|
|
mov r7, r8
|
|
_02306D70:
|
|
ldr r0, [r4]
|
|
add r0, r0, r8, lsl #2
|
|
add r0, r0, #0x12000
|
|
#ifdef JAPAN
|
|
ldr r1, [r0, #0xad4]
|
|
#else
|
|
ldr r1, [r0, #0xb78]
|
|
#endif
|
|
cmp r1, #0
|
|
moveq r0, r7
|
|
beq _02306DA0
|
|
ldr r0, [r1]
|
|
cmp r0, #1
|
|
moveq r0, r6
|
|
movne r0, r5
|
|
and r0, r0, #0xff
|
|
_02306DA0:
|
|
cmp r0, #0
|
|
beq _02306DB0
|
|
mov r0, sb
|
|
bl EndMagnetRiseStatus
|
|
_02306DB0:
|
|
add r0, r8, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r8, r0, asr #0x10
|
|
cmp r8, #0x14
|
|
blt _02306D70
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
_02306DC8: .word DUNGEON_PTR
|
|
arm_func_end ov29_02306D54
|
|
|
|
arm_func_start ov29_02306DCC
|
|
ov29_02306DCC: ; 0x02306DCC
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
|
|
sub sp, sp, #4
|
|
mov r8, r1
|
|
mov r4, #0
|
|
mov sb, r0
|
|
mov r0, r8
|
|
mov sl, r4
|
|
mov r5, r4
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
mov r0, r4
|
|
beq _02306EF8
|
|
mov r1, sb
|
|
mov r2, r0
|
|
ldr r6, [sb, #0xb4]
|
|
ldr r7, [r8, #0xb4]
|
|
bl SubstitutePlaceholderStringTags
|
|
mov r1, r8
|
|
mov r0, #1
|
|
mov r2, r4
|
|
bl SubstitutePlaceholderStringTags
|
|
ldrb r0, [r6, #0xbd]
|
|
cmp r0, #0
|
|
moveq r0, r4
|
|
beq _02306EF8
|
|
cmp r0, #6
|
|
addls pc, pc, r0, lsl #2
|
|
b _02306E9C
|
|
_02306E3C: ; jump table
|
|
b _02306E9C ; case 0
|
|
b _02306E58 ; case 1
|
|
b _02306E9C ; case 2
|
|
b _02306E58 ; case 3
|
|
b _02306E58 ; case 4
|
|
b _02306E7C ; case 5
|
|
b _02306E9C ; case 6
|
|
_02306E58:
|
|
mov r2, #1
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r3, r2
|
|
str r4, [sp]
|
|
bl ov29_02311C28
|
|
mov sl, r0
|
|
mov r4, #1
|
|
b _02306E9C
|
|
_02306E7C:
|
|
mov r2, r4
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r3, r2
|
|
str r2, [sp]
|
|
bl ov29_02311C28
|
|
mov sl, r0
|
|
mov r4, #1
|
|
_02306E9C:
|
|
cmp sl, #0
|
|
beq _02306EBC
|
|
ldrb r1, [r6, #0xbd]
|
|
orr r0, r5, #0x11
|
|
and r5, r0, #0xff
|
|
strb r1, [r7, #0xbd]
|
|
ldrb r0, [r6, #0xbe]
|
|
strb r0, [r7, #0xbe]
|
|
_02306EBC:
|
|
cmp r4, #0
|
|
orrne r1, r5, #1
|
|
movne r0, #0
|
|
strneb r0, [r6, #0xbd]
|
|
andne r5, r1, #0xff
|
|
cmp r4, #0
|
|
beq _02306EE4
|
|
mov r0, sb
|
|
mov r1, #0x378
|
|
bl ov29_02304A48
|
|
_02306EE4:
|
|
mov r0, sb
|
|
bl UpdateStatusIconFlags
|
|
mov r0, r8
|
|
bl UpdateStatusIconFlags
|
|
mov r0, r5
|
|
_02306EF8:
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
|
|
arm_func_end ov29_02306DCC
|
|
|
|
arm_func_start ov29_02306F00
|
|
ov29_02306F00: ; 0x02306F00
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
|
|
sub sp, sp, #4
|
|
mov sl, #0
|
|
mov sb, r0
|
|
mov r8, r1
|
|
mov r4, sl
|
|
mov r5, sl
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
moveq r0, sl
|
|
beq _02307070
|
|
mov r0, r8
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
moveq r0, sl
|
|
beq _02307070
|
|
ldr r6, [sb, #0xb4]
|
|
ldr r7, [r8, #0xb4]
|
|
ldrb r0, [r6, #0xbf]
|
|
cmp r0, #0
|
|
mov r0, sl
|
|
beq _02307070
|
|
mov r1, sb
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
mov r1, r8
|
|
mov r0, #1
|
|
mov r2, sl
|
|
bl SubstitutePlaceholderStringTags
|
|
ldrb r0, [r6, #0xbf]
|
|
cmp r0, #5
|
|
addls pc, pc, r0, lsl #2
|
|
b _0230701C
|
|
_02306F84: ; jump table
|
|
b _0230701C ; case 0
|
|
b _02306FFC ; case 1
|
|
b _02306F9C ; case 2
|
|
b _02306FBC ; case 3
|
|
b _02306FDC ; case 4
|
|
b _0230701C ; case 5
|
|
_02306F9C:
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r2, sl
|
|
mov r3, #1
|
|
bl TryInflictPoisonedStatus
|
|
mov sl, r0
|
|
mov r4, #1
|
|
b _0230701C
|
|
_02306FBC:
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r2, sl
|
|
mov r3, #1
|
|
bl TryInflictBadlyPoisonedStatus
|
|
mov sl, r0
|
|
mov r4, #1
|
|
b _0230701C
|
|
_02306FDC:
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r2, sl
|
|
mov r3, #1
|
|
bl TryInflictParalysisStatus
|
|
mov sl, r0
|
|
mov r4, #1
|
|
b _0230701C
|
|
_02306FFC:
|
|
mov r2, sl
|
|
mov r4, #1
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r3, r2
|
|
str r4, [sp]
|
|
bl TryInflictBurnStatus
|
|
mov sl, r0
|
|
_0230701C:
|
|
cmp sl, #0
|
|
beq _02307048
|
|
add r3, r6, #0xbf
|
|
add r2, r7, #0xbf
|
|
mov r1, #4
|
|
_02307030:
|
|
ldrb r0, [r3], #1
|
|
subs r1, r1, #1
|
|
strb r0, [r2], #1
|
|
bne _02307030
|
|
orr r0, r5, #0x11
|
|
and r5, r0, #0xff
|
|
_02307048:
|
|
cmp r4, #0
|
|
orrne r0, r5, #1
|
|
movne r1, #0
|
|
andne r5, r0, #0xff
|
|
mov r0, sb
|
|
strneb r1, [r6, #0xbf]
|
|
bl UpdateStatusIconFlags
|
|
mov r0, r8
|
|
bl UpdateStatusIconFlags
|
|
mov r0, r5
|
|
_02307070:
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
|
|
arm_func_end ov29_02306F00
|
|
|
|
arm_func_start ov29_02307078
|
|
ov29_02307078: ; 0x02307078
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
mov r4, #0
|
|
mov sb, r0
|
|
mov r8, r1
|
|
mov sl, r4
|
|
mov r5, r4
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
moveq r0, r4
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
mov r0, r8
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
moveq r0, r4
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
ldr r6, [sb, #0xb4]
|
|
ldr r7, [r8, #0xb4]
|
|
ldrb r1, [r6, #0xc4]
|
|
cmp r1, #3
|
|
cmpne r1, #4
|
|
beq _023070E0
|
|
ldrb r0, [r7, #0xc4]
|
|
add r0, r0, #0xfd
|
|
and r0, r0, #0xff
|
|
cmp r0, #1
|
|
bhi _023070E8
|
|
_023070E0:
|
|
mov r0, #0
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
_023070E8:
|
|
cmp r1, #7
|
|
addls pc, pc, r1, lsl #2
|
|
b _0230714C
|
|
_023070F4: ; jump table
|
|
b _0230714C ; case 0
|
|
b _0230714C ; case 1
|
|
b _02307114 ; case 2
|
|
b _0230714C ; case 3
|
|
b _0230714C ; case 4
|
|
b _0230714C ; case 5
|
|
b _0230714C ; case 6
|
|
b _02307130 ; case 7
|
|
_02307114:
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r2, #1
|
|
bl TryInflictShadowHoldStatus
|
|
mov sl, r0
|
|
mov r4, #1
|
|
b _0230714C
|
|
_02307130:
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r2, #0x7e
|
|
mov r3, #1
|
|
bl TryInflictConstrictionStatus
|
|
mov sl, r0
|
|
mov r4, #1
|
|
_0230714C:
|
|
cmp sl, #0
|
|
beq _0230716C
|
|
add r0, r6, #0xc4
|
|
add r7, r7, #0xc4
|
|
ldmia r0, {r0, r1, r2}
|
|
orr r3, r5, #0x11
|
|
stmia r7, {r0, r1, r2}
|
|
and r5, r3, #0xff
|
|
_0230716C:
|
|
cmp r4, #0
|
|
orrne r0, r5, #1
|
|
movne r1, #0
|
|
andne r5, r0, #0xff
|
|
mov r0, sb
|
|
strneb r1, [r6, #0xc4]
|
|
bl UpdateStatusIconFlags
|
|
mov r0, r8
|
|
bl UpdateStatusIconFlags
|
|
mov r0, r5
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
arm_func_end ov29_02307078
|
|
|
|
arm_func_start ov29_02307198
|
|
ov29_02307198: ; 0x02307198
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
sub sp, sp, #8
|
|
mov r4, #0
|
|
mov sb, r0
|
|
mov r8, r1
|
|
mov sl, r4
|
|
mov r5, r4
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
moveq r0, r4
|
|
beq _02307374
|
|
mov r0, r8
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
moveq r0, r4
|
|
beq _02307374
|
|
ldr r6, [sb, #0xb4]
|
|
ldr r7, [r8, #0xb4]
|
|
ldrb r0, [r6, #0xd0]
|
|
cmp r0, #0
|
|
mov r0, r4
|
|
beq _02307374
|
|
mov r1, sb
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
mov r1, r8
|
|
mov r0, #1
|
|
mov r2, r4
|
|
bl SubstitutePlaceholderStringTags
|
|
ldrb r0, [r6, #0xd0]
|
|
cmp r0, #8
|
|
addls pc, pc, r0, lsl #2
|
|
b _0230731C
|
|
_0230721C: ; jump table
|
|
b _0230731C ; case 0
|
|
b _02307300 ; case 1
|
|
b _02307240 ; case 2
|
|
b _0230729C ; case 3
|
|
b _02307260 ; case 4
|
|
b _02307280 ; case 5
|
|
b _023072E4 ; case 6
|
|
b _023072C4 ; case 7
|
|
b _0230731C ; case 8
|
|
_02307240:
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r2, r4
|
|
mov r3, #1
|
|
bl TryInflictConfusedStatus
|
|
mov sl, r0
|
|
mov r4, #1
|
|
b _0230731C
|
|
_02307260:
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r2, r4
|
|
mov r3, #1
|
|
bl TryInflictCoweringStatus
|
|
mov sl, r0
|
|
mov r4, #1
|
|
b _0230731C
|
|
_02307280:
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r2, #1
|
|
bl TryInflictTauntStatus
|
|
mov sl, r0
|
|
mov r4, #1
|
|
b _0230731C
|
|
_0230729C:
|
|
mov r3, r4
|
|
mov r0, sb
|
|
mov r1, r8
|
|
str r3, [sp]
|
|
mov r2, #1
|
|
str r2, [sp, #4]
|
|
bl TryInflictPausedStatus
|
|
mov sl, r0
|
|
mov r4, #1
|
|
b _0230731C
|
|
_023072C4:
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r2, r4
|
|
mov r3, #1
|
|
bl TryInflictInfatuatedStatus
|
|
mov sl, r0
|
|
mov r4, #1
|
|
b _0230731C
|
|
_023072E4:
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r2, #1
|
|
bl TryInflictEncoreStatus
|
|
mov sl, r0
|
|
mov r4, #1
|
|
b _0230731C
|
|
_02307300:
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r2, r4
|
|
mov r3, #1
|
|
bl TryInflictCringeStatus
|
|
mov sl, r0
|
|
mov r4, #1
|
|
_0230731C:
|
|
cmp sl, #0
|
|
beq _0230733C
|
|
ldrb r1, [r6, #0xd0]
|
|
orr r0, r5, #0x11
|
|
and r5, r0, #0xff
|
|
strb r1, [r7, #0xd0]
|
|
ldrb r0, [r6, #0xd1]
|
|
strb r0, [r7, #0xd1]
|
|
_0230733C:
|
|
cmp r4, #0
|
|
movne r0, #0
|
|
orrne r1, r5, #1
|
|
strneb r0, [r6, #0xd0]
|
|
mov r0, sb
|
|
andne r5, r1, #0xff
|
|
bl UpdateStatusIconFlags
|
|
mov r0, r8
|
|
bl UpdateStatusIconFlags
|
|
mov r0, sb
|
|
bl CalcSpeedStageWrapper
|
|
mov r0, r8
|
|
bl CalcSpeedStageWrapper
|
|
mov r0, r5
|
|
_02307374:
|
|
add sp, sp, #8
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
arm_func_end ov29_02307198
|
|
|
|
arm_func_start ov29_0230737C
|
|
ov29_0230737C: ; 0x0230737C
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr}
|
|
sub sp, sp, #4
|
|
mov r4, #0
|
|
mov sb, r0
|
|
mov r8, r1
|
|
mov r5, r4
|
|
mov r6, r4
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
moveq r0, r4
|
|
beq _023076B4
|
|
mov r0, r8
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
mov r0, r4
|
|
beq _023076B4
|
|
mov r1, sb
|
|
mov r2, r0
|
|
ldr r7, [sb, #0xb4]
|
|
ldr sl, [r8, #0xb4]
|
|
bl SubstitutePlaceholderStringTags
|
|
mov r1, r8
|
|
mov r0, #1
|
|
mov r2, r4
|
|
bl SubstitutePlaceholderStringTags
|
|
ldrb r0, [r7, #0xd8]
|
|
cmp r0, #7
|
|
addls pc, pc, r0, lsl #2
|
|
b _0230749C
|
|
_023073F0: ; jump table
|
|
b _0230749C ; case 0
|
|
b _02307410 ; case 1
|
|
b _0230741C ; case 2
|
|
b _0230749C ; case 3
|
|
b _02307440 ; case 4
|
|
b _02307460 ; case 5
|
|
b _02307480 ; case 6
|
|
b _0230749C ; case 7
|
|
_02307410:
|
|
mov r5, #1
|
|
mov r4, r5
|
|
b _0230749C
|
|
_0230741C:
|
|
mov r2, r4
|
|
mov r4, #1
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r3, r2
|
|
str r4, [sp]
|
|
bl TryInflictDecoyStatus
|
|
mov r5, r0
|
|
b _0230749C
|
|
_02307440:
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r2, r4
|
|
mov r3, #1
|
|
bl TryInflictGastroAcidStatus
|
|
mov r5, r0
|
|
mov r4, #1
|
|
b _0230749C
|
|
_02307460:
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r2, r4
|
|
mov r3, #1
|
|
bl TryInflictHealBlockStatus
|
|
mov r5, r0
|
|
mov r4, #1
|
|
b _0230749C
|
|
_02307480:
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r2, r4
|
|
mov r3, #1
|
|
bl TryInflictEmbargoStatus
|
|
mov r5, r0
|
|
mov r4, #1
|
|
_0230749C:
|
|
ldrb r0, [r7, #0xd8]
|
|
cmp r0, #6
|
|
addls pc, pc, r0, lsl #2
|
|
b _023076A0
|
|
_023074AC: ; jump table
|
|
b _023076A0 ; case 0
|
|
b _023074C8 ; case 1
|
|
b _02307528 ; case 2
|
|
b _023076A0 ; case 3
|
|
b _02307554 ; case 4
|
|
b _023075D4 ; case 5
|
|
b _0230763C ; case 6
|
|
_023074C8:
|
|
cmp r5, #0
|
|
beq _02307500
|
|
mov r0, sb
|
|
mov r1, r8
|
|
bl TryRemoveSnatchedMonsterFromDungeonStruct
|
|
add r3, r7, #0xd8
|
|
add r2, sl, #0xd8
|
|
mov r1, #5
|
|
_023074E8:
|
|
ldrb r0, [r3], #1
|
|
subs r1, r1, #1
|
|
strb r0, [r2], #1
|
|
bne _023074E8
|
|
orr r0, r6, #0x11
|
|
and r6, r0, #0xff
|
|
_02307500:
|
|
cmp r4, #0
|
|
beq _023076A0
|
|
mov r0, r8
|
|
mov r1, sb
|
|
mov r2, #1
|
|
mov r3, #0
|
|
bl EndCurseClassStatus
|
|
orr r0, r6, #1
|
|
and r6, r0, #0xff
|
|
b _023076A0
|
|
_02307528:
|
|
cmp r5, #0
|
|
beq _023076A0
|
|
mov r3, #0
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r2, #1
|
|
str r3, [sp]
|
|
bl TryInflictDecoyStatus
|
|
orr r0, r6, #0x11
|
|
and r6, r0, #0xff
|
|
b _023076A0
|
|
_02307554:
|
|
cmp r5, #0
|
|
beq _023075AC
|
|
mov r0, sb
|
|
mov r1, r8
|
|
bl TryRemoveSnatchedMonsterFromDungeonStruct
|
|
add r3, r7, #0xd8
|
|
add r2, sl, #0xd8
|
|
mov r1, #5
|
|
_02307574:
|
|
ldrb r0, [r3], #1
|
|
subs r1, r1, #1
|
|
strb r0, [r2], #1
|
|
bne _02307574
|
|
ldr r1, _023076BC ; =DUNGEON_PTR
|
|
mov r0, r8
|
|
ldr r1, [r1]
|
|
mov r2, #1
|
|
strb r2, [r1, #0xe]
|
|
bl ov29_022FB984
|
|
mov r0, r8
|
|
bl UpdateStatusIconFlags
|
|
orr r0, r6, #0x11
|
|
and r6, r0, #0xff
|
|
_023075AC:
|
|
cmp r4, #0
|
|
beq _023076A0
|
|
mov r0, r8
|
|
mov r1, sb
|
|
mov r2, #4
|
|
mov r3, #0
|
|
bl EndCurseClassStatus
|
|
orr r0, r6, #1
|
|
and r6, r0, #0xff
|
|
b _023076A0
|
|
_023075D4:
|
|
cmp r5, #0
|
|
beq _02307614
|
|
mov r0, sb
|
|
mov r1, r8
|
|
bl TryRemoveSnatchedMonsterFromDungeonStruct
|
|
add r3, r7, #0xd8
|
|
add r2, sl, #0xd8
|
|
mov r1, #5
|
|
_023075F4:
|
|
ldrb r0, [r3], #1
|
|
subs r1, r1, #1
|
|
strb r0, [r2], #1
|
|
bne _023075F4
|
|
mov r0, r8
|
|
bl UpdateStatusIconFlags
|
|
orr r0, r6, #0x11
|
|
and r6, r0, #0xff
|
|
_02307614:
|
|
cmp r4, #0
|
|
beq _023076A0
|
|
mov r0, r8
|
|
mov r1, sb
|
|
mov r2, #5
|
|
mov r3, #0
|
|
bl EndCurseClassStatus
|
|
orr r0, r6, #1
|
|
and r6, r0, #0xff
|
|
b _023076A0
|
|
_0230763C:
|
|
cmp r5, #0
|
|
beq _0230767C
|
|
mov r0, sb
|
|
mov r1, r8
|
|
bl TryRemoveSnatchedMonsterFromDungeonStruct
|
|
add r3, r7, #0xd8
|
|
add r2, sl, #0xd8
|
|
mov r1, #5
|
|
_0230765C:
|
|
ldrb r0, [r3], #1
|
|
subs r1, r1, #1
|
|
strb r0, [r2], #1
|
|
bne _0230765C
|
|
mov r0, r8
|
|
bl UpdateStatusIconFlags
|
|
orr r0, r6, #0x11
|
|
and r6, r0, #0xff
|
|
_0230767C:
|
|
cmp r4, #0
|
|
beq _023076A0
|
|
mov r0, r8
|
|
mov r1, sb
|
|
mov r2, #6
|
|
mov r3, #0
|
|
bl EndCurseClassStatus
|
|
orr r0, r6, #1
|
|
and r6, r0, #0xff
|
|
_023076A0:
|
|
mov r0, sb
|
|
bl UpdateStatusIconFlags
|
|
mov r0, r8
|
|
bl UpdateStatusIconFlags
|
|
mov r0, r6
|
|
_023076B4:
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc}
|
|
.align 2, 0
|
|
_023076BC: .word DUNGEON_PTR
|
|
arm_func_end ov29_0230737C
|
|
|
|
arm_func_start ov29_023076C0
|
|
ov29_023076C0: ; 0x023076C0
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
mov r4, #0
|
|
mov sb, r0
|
|
mov r8, r1
|
|
mov sl, r4
|
|
mov r5, r4
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
moveq r0, r4
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
mov r0, r8
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
moveq r0, r4
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
ldr r6, [sb, #0xb4]
|
|
ldr r7, [r8, #0xb4]
|
|
ldrb r0, [r6, #0xe0]
|
|
cmp r0, #0
|
|
mov r0, r4
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
mov r1, sb
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
mov r1, r8
|
|
mov r0, #1
|
|
mov r2, r4
|
|
bl SubstitutePlaceholderStringTags
|
|
ldrb r0, [r6, #0xe0]
|
|
cmp r0, #3
|
|
addls pc, pc, r0, lsl #2
|
|
b _0230776C
|
|
_02307740: ; jump table
|
|
b _0230776C ; case 0
|
|
b _02307750 ; case 1
|
|
b _0230776C ; case 2
|
|
b _0230776C ; case 3
|
|
_02307750:
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r2, r4
|
|
mov r3, #1
|
|
bl TryInflictLeechSeedStatus
|
|
mov sl, r0
|
|
mov r4, #1
|
|
_0230776C:
|
|
cmp sl, #0
|
|
beq _023077CC
|
|
add r0, r6, #0xe0
|
|
add r3, r7, #0xe0
|
|
ldmia r0, {r0, r1, r2}
|
|
stmia r3, {r0, r1, r2}
|
|
mov r0, #0xff
|
|
strb r0, [r7, #0xe8]
|
|
ldr r2, _023077F8 ; =DUNGEON_PTR
|
|
mov r0, #0
|
|
_02307794:
|
|
ldr r1, [r2]
|
|
add r1, r1, r0, lsl #2
|
|
add r1, r1, #0x12000
|
|
#ifdef JAPAN
|
|
ldr r1, [r1, #0xad4]
|
|
#else
|
|
ldr r1, [r1, #0xb78]
|
|
#endif
|
|
cmp sb, r1
|
|
streqb r0, [r7, #0xe8]
|
|
ldreq r1, [sb, #0xb4]
|
|
add r0, r0, #1
|
|
ldreq r1, [r1, #0xb0]
|
|
streq r1, [r7, #0xe4]
|
|
cmp r0, #0x14
|
|
blt _02307794
|
|
orr r0, r5, #0x11
|
|
and r5, r0, #0xff
|
|
_023077CC:
|
|
cmp r4, #0
|
|
orrne r0, r5, #1
|
|
movne r1, #0
|
|
andne r5, r0, #0xff
|
|
mov r0, sb
|
|
strneb r1, [r6, #0xe0]
|
|
bl UpdateStatusIconFlags
|
|
mov r0, r8
|
|
bl UpdateStatusIconFlags
|
|
mov r0, r5
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
.align 2, 0
|
|
_023077F8: .word DUNGEON_PTR
|
|
arm_func_end ov29_023076C0
|
|
|
|
arm_func_start ov29_023077FC
|
|
ov29_023077FC: ; 0x023077FC
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
mov r4, #0
|
|
mov sb, r0
|
|
mov r8, r1
|
|
mov sl, r4
|
|
mov r5, r4
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
moveq r0, r4
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
mov r0, r8
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
mov r0, r4
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
mov r1, sb
|
|
mov r2, r0
|
|
ldr r6, [sb, #0xb4]
|
|
ldr r7, [r8, #0xb4]
|
|
bl SubstitutePlaceholderStringTags
|
|
mov r1, r8
|
|
mov r0, #1
|
|
mov r2, r4
|
|
bl SubstitutePlaceholderStringTags
|
|
ldrb r0, [r6, #0xec]
|
|
cmp r0, #5
|
|
addls pc, pc, r0, lsl #2
|
|
b _023078A0
|
|
_0230786C: ; jump table
|
|
b _023078A0 ; case 0
|
|
b _023078A0 ; case 1
|
|
b _02307884 ; case 2
|
|
b _023078A0 ; case 3
|
|
b _023078A0 ; case 4
|
|
b _023078A0 ; case 5
|
|
_02307884:
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r2, r4
|
|
mov r3, #1
|
|
bl TryInflictWhifferStatus
|
|
mov sl, r0
|
|
mov r4, #1
|
|
_023078A0:
|
|
cmp sl, #0
|
|
beq _023078C0
|
|
ldrb r1, [r6, #0xec]
|
|
orr r0, r5, #0x11
|
|
and r5, r0, #0xff
|
|
strb r1, [r7, #0xec]
|
|
ldrb r0, [r6, #0xed]
|
|
strb r0, [r7, #0xed]
|
|
_023078C0:
|
|
cmp r4, #0
|
|
orrne r0, r5, #1
|
|
movne r1, #0
|
|
andne r5, r0, #0xff
|
|
mov r0, sb
|
|
strneb r1, [r6, #0xec]
|
|
bl UpdateStatusIconFlags
|
|
mov r0, r8
|
|
bl UpdateStatusIconFlags
|
|
mov r0, r5
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
arm_func_end ov29_023077FC
|
|
|
|
arm_func_start TransferNegativeBlinkerClassStatus
|
|
TransferNegativeBlinkerClassStatus: ; 0x023078EC
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
mov r4, #0
|
|
mov sb, r0
|
|
mov r8, r1
|
|
mov sl, r4
|
|
mov r5, r4
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
moveq r0, r4
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
mov r0, r8
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
mov r0, r4
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
mov r1, sb
|
|
mov r2, r0
|
|
ldr r6, [sb, #0xb4]
|
|
ldr r7, [r8, #0xb4]
|
|
bl SubstitutePlaceholderStringTags
|
|
mov r1, r8
|
|
mov r0, #1
|
|
mov r2, r4
|
|
bl SubstitutePlaceholderStringTags
|
|
ldrb r0, [r6, #0xf1]
|
|
cmp r0, #5
|
|
addls pc, pc, r0, lsl #2
|
|
b _023079C4
|
|
_0230795C: ; jump table
|
|
b _023079C4 ; case 0
|
|
b _02307974 ; case 1
|
|
b _02307994 ; case 2
|
|
b _023079C4 ; case 3
|
|
b _023079B0 ; case 4
|
|
b _023079C4 ; case 5
|
|
_02307974:
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r2, #1
|
|
mov r3, r4
|
|
bl TryInflictBlinkerStatus
|
|
mov sl, r0
|
|
mov r4, #1
|
|
b _023079C4
|
|
_02307994:
|
|
mov r0, sb
|
|
mov r1, r8
|
|
mov r2, #1
|
|
bl TryInflictCrossEyedStatus
|
|
mov sl, r0
|
|
mov r4, #1
|
|
b _023079C4
|
|
_023079B0:
|
|
mov r0, sb
|
|
mov r1, r8
|
|
bl TryInflictDropeyeStatus
|
|
mov sl, r0
|
|
mov r4, #1
|
|
_023079C4:
|
|
cmp sl, #0
|
|
beq _023079E4
|
|
ldrb r1, [r6, #0xf1]
|
|
orr r0, r5, #0x11
|
|
and r5, r0, #0xff
|
|
strb r1, [r7, #0xf1]
|
|
ldrb r0, [r6, #0xf2]
|
|
strb r0, [r7, #0xf2]
|
|
_023079E4:
|
|
cmp r4, #0
|
|
orrne r0, r5, #1
|
|
movne r1, #0
|
|
andne r5, r0, #0xff
|
|
mov r0, sb
|
|
strneb r1, [r6, #0xf1]
|
|
bl UpdateStatusIconFlags
|
|
mov r0, r8
|
|
bl UpdateStatusIconFlags
|
|
ldrb r0, [r6, #7]
|
|
cmp r0, #0
|
|
beq _02307A24
|
|
mov r0, #0x31
|
|
bl AdvanceFrame
|
|
bl UpdateTrapsVisibility
|
|
bl UpdateMinimap
|
|
_02307A24:
|
|
mov r0, r5
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
arm_func_end TransferNegativeBlinkerClassStatus
|
|
|
|
arm_func_start ov29_02307A2C
|
|
ov29_02307A2C: ; 0x02307A2C
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
mov r4, #0
|
|
mov sl, r0
|
|
mov sb, r1
|
|
mov r5, r4
|
|
mov r6, r4
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
moveq r0, r4
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
mov r0, sb
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
mov r0, r4
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
mov r1, sl
|
|
mov r2, r0
|
|
ldr r7, [sl, #0xb4]
|
|
ldr r8, [sb, #0xb4]
|
|
bl SubstitutePlaceholderStringTags
|
|
mov r1, sb
|
|
mov r0, #1
|
|
mov r2, r4
|
|
bl SubstitutePlaceholderStringTags
|
|
ldrb r0, [r7, #0xf3]
|
|
cmp r0, #0
|
|
beq _02307AC0
|
|
cmp r0, #1
|
|
beq _02307AA8
|
|
cmp r0, #2
|
|
b _02307AC0
|
|
_02307AA8:
|
|
mov r0, sl
|
|
mov r1, sb
|
|
mov r2, #1
|
|
bl TryInflictMuzzledStatus
|
|
mov r5, r0
|
|
mov r4, #1
|
|
_02307AC0:
|
|
cmp r5, #0
|
|
beq _02307AE0
|
|
ldrb r1, [r7, #0xf3]
|
|
orr r0, r6, #0x11
|
|
and r6, r0, #0xff
|
|
strb r1, [r8, #0xf3]
|
|
ldrb r0, [r7, #0xf4]
|
|
strb r0, [r8, #0xf4]
|
|
_02307AE0:
|
|
cmp r4, #0
|
|
orrne r0, r6, #1
|
|
movne r1, #0
|
|
andne r6, r0, #0xff
|
|
mov r0, sl
|
|
strneb r1, [r7, #0xf3]
|
|
bl UpdateStatusIconFlags
|
|
mov r0, sb
|
|
bl UpdateStatusIconFlags
|
|
mov r0, r6
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
arm_func_end ov29_02307A2C
|
|
|
|
arm_func_start ov29_02307B0C
|
|
ov29_02307B0C: ; 0x02307B0C
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
mov r4, #0
|
|
mov sl, r0
|
|
mov sb, r1
|
|
mov r5, r4
|
|
mov r6, r4
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
moveq r0, r4
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
mov r0, sb
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
mov r0, r4
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
mov r1, sl
|
|
mov r2, r0
|
|
ldr r7, [sl, #0xb4]
|
|
ldr r8, [sb, #0xb4]
|
|
bl SubstitutePlaceholderStringTags
|
|
mov r1, sb
|
|
mov r0, #1
|
|
mov r2, r4
|
|
bl SubstitutePlaceholderStringTags
|
|
ldrb r0, [r7, #0xf5]
|
|
cmp r0, #1
|
|
bne _02307B90
|
|
mov r0, sl
|
|
mov r1, sb
|
|
mov r2, #1
|
|
bl TryInflictMiracleEyeStatus
|
|
mov r5, r0
|
|
mov r4, #1
|
|
_02307B90:
|
|
cmp r5, #0
|
|
beq _02307BB0
|
|
ldrb r1, [r7, #0xf5]
|
|
orr r0, r6, #0x11
|
|
and r6, r0, #0xff
|
|
strb r1, [r8, #0xf5]
|
|
ldrb r0, [r7, #0xf6]
|
|
strb r0, [r8, #0xf6]
|
|
_02307BB0:
|
|
cmp r4, #0
|
|
orrne r0, r6, #1
|
|
movne r1, #0
|
|
andne r6, r0, #0xff
|
|
mov r0, sl
|
|
strneb r1, [r7, #0xf5]
|
|
bl UpdateStatusIconFlags
|
|
mov r0, sb
|
|
bl UpdateStatusIconFlags
|
|
mov r0, r6
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
arm_func_end ov29_02307B0C
|
|
|
|
arm_func_start TryEndPetrifiedOrSleepStatus
|
|
TryEndPetrifiedOrSleepStatus: ; 0x02307BDC
|
|
stmdb sp!, {r3, r4, r5, r6, lr}
|
|
sub sp, sp, #4
|
|
mov r5, r1
|
|
ldr r4, [r5, #0xb4]
|
|
mov r6, r0
|
|
ldrb r2, [r4, #0xc4]
|
|
mov r3, #0
|
|
cmp r2, #6
|
|
bne _02307C0C
|
|
mov r2, #1
|
|
bl EndFrozenClassStatus
|
|
mov r3, #1
|
|
_02307C0C:
|
|
ldrb r0, [r4, #0xbd]
|
|
cmp r0, #1
|
|
ldreqb r0, [r4, #0xbe]
|
|
cmpeq r0, #0x7f
|
|
bne _02307C3C
|
|
mov r3, #1
|
|
mov r0, r6
|
|
mov r1, r5
|
|
mov r2, #0
|
|
str r3, [sp]
|
|
bl EndSleepClassStatus
|
|
mov r3, #1
|
|
_02307C3C:
|
|
mov r0, r3
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, r5, r6, pc}
|
|
arm_func_end TryEndPetrifiedOrSleepStatus
|
|
|
|
arm_func_start ov29_02307C48
|
|
ov29_02307C48: ; 0x02307C48
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
ldr ip, [r4, #0xb4]
|
|
mov r3, #0
|
|
mov r1, #1
|
|
strb r3, [ip, #0xbd]
|
|
mov r2, r1
|
|
strb r3, [ip, #0xbe]
|
|
bl ov29_022FA1D8
|
|
mov r0, r4
|
|
bl UpdateStatusIconFlags
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end ov29_02307C48
|
|
|
|
arm_func_start EndFrozenStatus
|
|
EndFrozenStatus: ; 0x02307C78
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r4, r1
|
|
mov r5, r0
|
|
mov r0, r4
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
ldr r3, [r4, #0xb4]
|
|
ldrb r0, [r3, #0xc4]
|
|
cmp r0, #1
|
|
ldmneia sp!, {r3, r4, r5, pc}
|
|
mov r0, #0
|
|
strb r0, [r3, #0xc4]
|
|
strb r0, [r3, #0xcc]
|
|
mov r1, r4
|
|
mov r2, r0
|
|
strb r0, [r3, #0xcd]
|
|
bl SubstitutePlaceholderStringTags
|
|
ldr r2, _02307CDC ; =0x00000C9F
|
|
mov r0, r5
|
|
mov r1, r4
|
|
bl LogMessageByIdWithPopupCheckUserTarget
|
|
mov r0, r4
|
|
bl UpdateStatusIconFlags
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
#ifdef JAPAN
|
|
_02307CDC: .word 0x000009DF
|
|
#else
|
|
_02307CDC: .word 0x00000C9F
|
|
#endif
|
|
arm_func_end EndFrozenStatus
|
|
|
|
arm_func_start ov29_02307CE0
|
|
ov29_02307CE0: ; 0x02307CE0
|
|
stmdb sp!, {r4, lr}
|
|
ldr r4, [r0, #0xb4]
|
|
mov r1, #0
|
|
bl TryRestoreRoostTyping
|
|
mov r1, #0
|
|
strb r1, [r4, #0xff]
|
|
ldrsh r0, [r4, #2]
|
|
bl GetType
|
|
strb r0, [r4, #0x5e]
|
|
ldrsh r0, [r4, #2]
|
|
mov r1, #1
|
|
bl GetType
|
|
strb r0, [r4, #0x5f]
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end ov29_02307CE0
|
|
|
|
arm_func_start EndProtectStatus
|
|
EndProtectStatus: ; 0x02307D18
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r4, r1
|
|
mov r5, r0
|
|
mov r0, r4
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
ldr r0, [r4, #0xb4]
|
|
ldrb r0, [r0, #0xd5]
|
|
cmp r0, #7
|
|
ldmneia sp!, {r3, r4, r5, pc}
|
|
mov r0, r5
|
|
mov r1, r4
|
|
bl EndReflectClassStatus
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end EndProtectStatus
|
|
|
|
arm_func_start TryRestoreRoostTyping
|
|
TryRestoreRoostTyping: ; 0x02307D54
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r4, r1
|
|
bl EntityIsValid__02305C04
|
|
cmp r0, #0
|
|
ldrne r2, [r5, #0xb4]
|
|
ldrneb r0, [r2, #0xa9]
|
|
cmpne r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
mov r0, #0
|
|
strb r0, [r2, #0xa9]
|
|
ldrb r1, [r2, #0xaa]
|
|
cmp r4, #0
|
|
strb r1, [r2, #0x5e]
|
|
ldrb r1, [r2, #0xab]
|
|
strb r1, [r2, #0x5f]
|
|
strb r0, [r2, #0xaa]
|
|
strb r0, [r2, #0xab]
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
mov r1, r5
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldr r1, _02307DBC ; =0x00000CC8
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
#ifdef JAPAN
|
|
_02307DBC: .word 0x00000A08
|
|
#else
|
|
_02307DBC: .word 0x00000CC8
|
|
#endif
|
|
arm_func_end TryRestoreRoostTyping
|
|
|
|
arm_func_start ov29_02307DC0
|
|
ov29_02307DC0: ; 0x02307DC0
|
|
#ifdef JAPAN
|
|
ldr r1, [r0, #0xb4]
|
|
mov r0, #0
|
|
strb r0, [r1, #0x103]
|
|
strb r0, [r1, #0x104]
|
|
#else
|
|
mov r1, #0
|
|
strb r1, [r0, #0x104]
|
|
strb r1, [r0, #0x105]
|
|
#endif
|
|
bx lr
|
|
arm_func_end ov29_02307DC0
|
|
|
|
arm_func_start ov29_02307DD0
|
|
ov29_02307DD0: ; 0x02307DD0
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
mov r4, #0
|
|
_02307DD8:
|
|
ldr r0, _02307EF4 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, r4, lsl #2
|
|
add r0, r0, #0x12000
|
|
#ifdef JAPAN
|
|
ldr r6, [r0, #0xa94]
|
|
#else
|
|
ldr r6, [r0, #0xb38]
|
|
#endif
|
|
mov r0, r6
|
|
bl EntityIsValid__02307EF8
|
|
cmp r0, #0
|
|
beq _02307EE4
|
|
ldr r1, [r6, #0xb4]
|
|
ldrb r0, [r1, #0xbd]
|
|
cmp r0, #1
|
|
ldreqb r0, [r1, #0xbe]
|
|
cmpeq r0, #0x7f
|
|
bne _02307EE4
|
|
mov r8, #0
|
|
mov r7, r8
|
|
mov r5, r8
|
|
ldrb sl, [r6, #0x25]
|
|
ldr fp, _02307EF4 ; =DUNGEON_PTR
|
|
b _02307EBC
|
|
_02307E2C:
|
|
ldr r0, [fp]
|
|
add r0, r0, r5, lsl #2
|
|
add r0, r0, #0x12000
|
|
#ifdef JAPAN
|
|
ldr sb, [r0, #0xa84]
|
|
#else
|
|
ldr sb, [r0, #0xb28]
|
|
#endif
|
|
mov r0, sb
|
|
bl EntityIsValid__02307EF8
|
|
cmp r0, #0
|
|
beq _02307EB8
|
|
mov r0, sb
|
|
mov r1, #0x1f
|
|
bl ItemIsActive__02307F1C
|
|
cmp r0, #0
|
|
bne _02307EB8
|
|
ldrsh r1, [sb, #4]
|
|
ldrsh r0, [r6, #4]
|
|
sub r0, r1, r0
|
|
bl abs
|
|
cmp r0, #1
|
|
bgt _02307E94
|
|
ldrsh r1, [sb, #6]
|
|
ldrsh r0, [r6, #6]
|
|
sub r0, r1, r0
|
|
bl abs
|
|
cmp r0, #1
|
|
movle r8, #1
|
|
ble _02307EC4
|
|
_02307E94:
|
|
mov r0, sb
|
|
mov r1, #0x24
|
|
bl ItemIsActive__02307F1C
|
|
cmp r0, #0
|
|
beq _02307EB8
|
|
ldrb r0, [sb, #0x25]
|
|
cmp sl, r0
|
|
moveq r7, #1
|
|
beq _02307EC4
|
|
_02307EB8:
|
|
add r5, r5, #1
|
|
_02307EBC:
|
|
cmp r5, #4
|
|
blt _02307E2C
|
|
_02307EC4:
|
|
cmp r7, #0
|
|
bne _02307ED4
|
|
cmp r8, #0
|
|
movne r7, #1
|
|
_02307ED4:
|
|
cmp r7, #0
|
|
beq _02307EE4
|
|
mov r0, r6
|
|
bl ov29_02307C48
|
|
_02307EE4:
|
|
add r4, r4, #1
|
|
cmp r4, #0x10
|
|
blt _02307DD8
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_02307EF4: .word DUNGEON_PTR
|
|
arm_func_end ov29_02307DD0
|