mirror of
https://github.com/pret/pmd-sky.git
synced 2026-03-21 17:25:15 -05:00
4400 lines
86 KiB
ArmAsm
4400 lines
86 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "overlay_14.inc"
|
|
|
|
.text
|
|
|
|
arm_func_start SentrySetupState
|
|
SentrySetupState: ; 0x0238A140
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
mov r4, r0
|
|
ldr r0, _0238A504 ; =0x000038D4
|
|
mov r1, #8
|
|
bl MemAlloc
|
|
ldr r1, _0238A508 ; =SENTRY_DUTY_PTR
|
|
str r0, [r1]
|
|
add r0, r0, #0xa4
|
|
bl InitPreprocessorArgs
|
|
ldr r0, _0238A508 ; =SENTRY_DUTY_PTR
|
|
mov r5, #0
|
|
ldr r1, [r0]
|
|
sub r3, r5, #1
|
|
str r5, [r1, #0x104]
|
|
ldr r7, [r0]
|
|
mov r2, #2
|
|
ldr r6, [r7, #0x108]
|
|
mov r1, #1
|
|
str r6, [r7, #0x110]
|
|
ldr r6, [r0]
|
|
str r5, [r6, #0x10c]
|
|
ldr r6, [r0]
|
|
str r3, [r6, #0x114]
|
|
ldr r6, [r0]
|
|
str r5, [r6, #0x118]
|
|
ldr r6, [r0]
|
|
add r6, r6, #0x3000
|
|
str r5, [r6, #0x88c]
|
|
ldr r6, [r0]
|
|
add r6, r6, #0x3000
|
|
str r5, [r6, #0x890]
|
|
ldr r6, [r0]
|
|
add r6, r6, #0x3000
|
|
strb r5, [r6, #0x530]
|
|
ldr r6, [r0]
|
|
add r6, r6, #0x3000
|
|
str r2, [r6, #0x534]
|
|
ldr r6, [r0]
|
|
add r6, r6, #0x3000
|
|
str r5, [r6, #0x538]
|
|
ldr r6, [r0]
|
|
add r6, r6, #0x3000
|
|
str r5, [r6, #0x53c]
|
|
ldr r6, [r0]
|
|
add r6, r6, #0x3000
|
|
str r5, [r6, #0x540]
|
|
ldr r6, [r0]
|
|
add r6, r6, #0x3000
|
|
str r3, [r6, #0x564]
|
|
ldr r6, [r0]
|
|
add r6, r6, #0x3000
|
|
str r3, [r6, #0x568]
|
|
ldr r3, [r0]
|
|
add r3, r3, #0x3000
|
|
str r5, [r3, #0x56c]
|
|
ldr r3, [r0]
|
|
add r3, r3, #0x3000
|
|
strb r5, [r3, #0x870]
|
|
ldr r3, [r0]
|
|
add r3, r3, #0x3000
|
|
str r5, [r3, #0x884]
|
|
ldr r3, [r0]
|
|
add r3, r3, #0x3000
|
|
str r5, [r3, #0x88c]
|
|
ldr r3, [r0]
|
|
add r3, r3, #0x3000
|
|
str r2, [r3, #0x898]
|
|
ldr r2, [r0]
|
|
add r2, r2, #0x3000
|
|
strb r1, [r2, #0x89c]
|
|
mov r2, r1
|
|
_0238A25C:
|
|
ldr r1, [r0]
|
|
add r1, r1, r5, lsl #2
|
|
add r1, r1, #0x3000
|
|
str r2, [r1, #0x544]
|
|
ldr r1, [r0]
|
|
add r1, r1, r5, lsl #2
|
|
add r1, r1, #0x3000
|
|
add r5, r5, #1
|
|
str r2, [r1, #0x554]
|
|
cmp r5, #4
|
|
blt _0238A25C
|
|
ldr r2, _0238A508 ; =SENTRY_DUTY_PTR
|
|
mov r0, #0
|
|
ldr r1, [r2]
|
|
mov r3, #0x60
|
|
add r1, r1, #0x3000
|
|
strb r0, [r1, #0x871]
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x3000
|
|
str r0, [r1, #0x874]
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x3000
|
|
str r3, [r1, #0x8b0]
|
|
mvn r3, #0
|
|
_0238A2BC:
|
|
ldr r1, [r2]
|
|
add r1, r1, r0, lsl #2
|
|
add r1, r1, #0x3000
|
|
add r0, r0, #1
|
|
str r3, [r1, #0x8b8]
|
|
cmp r0, #6
|
|
blt _0238A2BC
|
|
bl GetHeroMemberIdx
|
|
ldr r1, _0238A508 ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r1]
|
|
add r1, r1, #0x3800
|
|
strh r0, [r1, #0xd0]
|
|
bl GetPartnerMemberIdx
|
|
ldr r3, _0238A508 ; =SENTRY_DUTY_PTR
|
|
mvn r1, #1
|
|
ldr r2, [r3]
|
|
add r2, r2, #0x3800
|
|
strh r0, [r2, #0xd2]
|
|
ldr r2, [r3]
|
|
mov r0, #0
|
|
str r4, [r2, #0x11c]
|
|
ldr r2, [r3]
|
|
strb r1, [r2]
|
|
ldr r2, [r3]
|
|
strb r1, [r2, #1]
|
|
ldr r2, [r3]
|
|
strb r1, [r2, #2]
|
|
ldr r2, [r3]
|
|
strb r1, [r2, #3]
|
|
ldr r2, [r3]
|
|
strb r1, [r2, #4]
|
|
ldr r2, [r3]
|
|
strb r1, [r2, #5]
|
|
ldr r2, [r3]
|
|
strb r1, [r2, #6]
|
|
ldr r2, [r3]
|
|
strb r1, [r2, #7]
|
|
ldr r2, [r3]
|
|
strb r1, [r2, #8]
|
|
ldr r2, [r3]
|
|
strb r1, [r2, #9]
|
|
ldr r2, [r3]
|
|
strb r1, [r2, #0xa]
|
|
ldr r2, [r3]
|
|
strb r1, [r2, #0xb]
|
|
bl ov14_0238AC04
|
|
ldr r0, _0238A508 ; =SENTRY_DUTY_PTR
|
|
#ifdef EUROPE
|
|
mov r1, #0xbd
|
|
#else
|
|
mov r1, #0xad
|
|
#endif
|
|
ldr r0, [r0]
|
|
mov r2, #0x8100000
|
|
add r0, r0, #0x120
|
|
bl LoadObjectAnimData
|
|
ldr r0, _0238A508 ; =SENTRY_DUTY_PTR
|
|
ldr r2, _0238A50C ; =0x88080000
|
|
ldr r0, [r0]
|
|
#ifdef EUROPE
|
|
mov r1, #0xdd
|
|
#else
|
|
mov r1, #0xcd
|
|
#endif
|
|
add r0, r0, #0x1e4
|
|
bl LoadObjectAnimData
|
|
ldr r0, _0238A508 ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
add r0, r1, #0x2a8
|
|
add r1, r1, #0x1e4
|
|
bl InitAnimDataFromOtherAnimDataVeneer
|
|
ldr r0, _0238A508 ; =SENTRY_DUTY_PTR
|
|
mov r1, #0x800
|
|
ldr r0, [r0]
|
|
mov r2, #0
|
|
add r0, r0, #0x2a8
|
|
bl SetAnimDataFields2
|
|
mov sb, #0
|
|
ldr r5, _0238A510 ; =0xC8100000
|
|
ldr r4, _0238A508 ; =SENTRY_DUTY_PTR
|
|
mov r7, #0x800
|
|
mov r6, sb
|
|
mov sl, #0xc4
|
|
_0238A3E8:
|
|
mul r8, sb, sl
|
|
ldr r1, [r4]
|
|
add r0, r1, #0x36c
|
|
add r0, r0, r8
|
|
add r1, r1, #0x1e4
|
|
bl InitAnimDataFromOtherAnimDataVeneer
|
|
ldr r0, [r4]
|
|
mov r1, r7
|
|
add r0, r0, #0x36c
|
|
mov r2, r6
|
|
add r0, r0, r8
|
|
bl SetAnimDataFields2
|
|
ldr r1, [r4]
|
|
add r0, r1, #0x3ac
|
|
add r0, r0, #0xc00
|
|
add r0, r0, r8
|
|
add r1, r1, #0x1e4
|
|
bl InitAnimDataFromOtherAnimDataVeneer
|
|
ldr r0, [r4]
|
|
mov r1, r5
|
|
add r0, r0, #0x3ac
|
|
add r0, r0, #0xc00
|
|
add r0, r0, r8
|
|
bl SetAnimDataFieldsWrapper
|
|
ldr r1, [r4]
|
|
add r0, r1, #0x3ec
|
|
add r0, r0, #0x1800
|
|
add r0, r0, r8
|
|
add r1, r1, #0x1e4
|
|
bl InitAnimDataFromOtherAnimDataVeneer
|
|
ldr r0, [r4]
|
|
mov r1, r5
|
|
add r0, r0, #0x3ec
|
|
add r0, r0, #0x1800
|
|
add r0, r0, r8
|
|
bl SetAnimDataFieldsWrapper
|
|
add sb, sb, #1
|
|
cmp sb, #0x10
|
|
blt _0238A3E8
|
|
ldr r8, _0238A510 ; =0xC8100000
|
|
ldr r7, _0238A508 ; =SENTRY_DUTY_PTR
|
|
mov r5, #0
|
|
mov r6, #0xc4
|
|
_0238A494:
|
|
mul r4, r5, r6
|
|
ldr r1, [r7]
|
|
add r0, r1, #0x2c
|
|
add r0, r0, #0x2800
|
|
add r0, r0, r4
|
|
add r1, r1, #0x1e4
|
|
bl InitAnimDataFromOtherAnimDataVeneer
|
|
ldr r0, [r7]
|
|
mov r1, r8
|
|
add r0, r0, #0x2c
|
|
add r0, r0, #0x2800
|
|
add r0, r0, r4
|
|
bl SetAnimDataFieldsWrapper
|
|
add r5, r5, #1
|
|
cmp r5, #2
|
|
blt _0238A494
|
|
ldr r0, _0238A508 ; =SENTRY_DUTY_PTR
|
|
ldr r2, [r0]
|
|
ldr r0, [r2, #0x11c]
|
|
cmp r0, #2
|
|
mov r0, #4
|
|
streq r0, [r2, #0x108]
|
|
beq _0238A4FC
|
|
mov r1, #6
|
|
str r1, [r2, #0x108]
|
|
bl PlayBgmByIdVeneer
|
|
_0238A4FC:
|
|
mov r0, #1
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
.align 2, 0
|
|
_0238A504: .word 0x000038D4
|
|
_0238A508: .word SENTRY_DUTY_PTR
|
|
_0238A50C: .word 0x88080000
|
|
_0238A510: .word 0xC8100000
|
|
arm_func_end SentrySetupState
|
|
|
|
arm_func_start ov14_0238A514
|
|
ov14_0238A514: ; 0x0238A514
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _0238A6AC ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #2
|
|
bne _0238A540
|
|
ldrsb r0, [r1, #1]
|
|
mvn r1, #1
|
|
cmp r0, r1
|
|
beq _0238A540
|
|
bl sub_0202F334
|
|
_0238A540:
|
|
ldr r0, _0238A6AC ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #1
|
|
bne _0238A568
|
|
ldrsb r0, [r1]
|
|
mvn r1, #1
|
|
cmp r0, r1
|
|
beq _0238A568
|
|
bl sub_0202BC60
|
|
_0238A568:
|
|
ldr r0, _0238A6AC ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #4
|
|
bne _0238A590
|
|
ldrsb r0, [r1, #2]
|
|
mvn r1, #1
|
|
cmp r0, r1
|
|
beq _0238A590
|
|
bl HidePortraitBox
|
|
_0238A590:
|
|
ldr r0, _0238A6AC ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #8
|
|
bne _0238A5B8
|
|
ldrsb r0, [r1, #3]
|
|
mvn r1, #1
|
|
cmp r0, r1
|
|
beq _0238A5B8
|
|
bl sub_0202F954
|
|
_0238A5B8:
|
|
ldr r0, _0238A6AC ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #0x10
|
|
bne _0238A5E0
|
|
ldrsb r0, [r1, #4]
|
|
mvn r1, #1
|
|
cmp r0, r1
|
|
beq _0238A5E0
|
|
bl sub_0202F954
|
|
_0238A5E0:
|
|
ldr r0, _0238A6AC ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #0x20
|
|
bne _0238A608
|
|
ldrsb r0, [r1, #5]
|
|
mvn r1, #1
|
|
cmp r0, r1
|
|
beq _0238A608
|
|
bl sub_0202F954
|
|
_0238A608:
|
|
ldr r0, _0238A6AC ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #0x40
|
|
bne _0238A630
|
|
ldrsb r0, [r1, #6]
|
|
mvn r1, #1
|
|
cmp r0, r1
|
|
beq _0238A630
|
|
bl HidePortraitBox
|
|
_0238A630:
|
|
ldr r0, _0238A6AC ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #0x80
|
|
bne _0238A658
|
|
ldrsb r0, [r1, #7]
|
|
mvn r1, #1
|
|
cmp r0, r1
|
|
beq _0238A658
|
|
bl HidePortraitBox
|
|
_0238A658:
|
|
ldr r0, _0238A6AC ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #0x100
|
|
bne _0238A680
|
|
ldrsb r0, [r1, #8]
|
|
mvn r1, #1
|
|
cmp r0, r1
|
|
beq _0238A680
|
|
bl HidePortraitBox
|
|
_0238A680:
|
|
ldr r0, _0238A6AC ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #0x200
|
|
ldmneia sp!, {r3, pc}
|
|
ldrsb r0, [r1, #9]
|
|
mvn r1, #1
|
|
cmp r0, r1
|
|
ldmeqia sp!, {r3, pc}
|
|
bl HidePortraitBox
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0238A6AC: .word SENTRY_DUTY_PTR
|
|
arm_func_end ov14_0238A514
|
|
|
|
arm_func_start ov14_0238A6B0
|
|
ov14_0238A6B0: ; 0x0238A6B0
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #2
|
|
bne _0238A71C
|
|
ldrsb r0, [r1, #1]
|
|
mvn r1, #1
|
|
cmp r0, r1
|
|
moveq r2, #1
|
|
beq _0238A710
|
|
bl IsDialogueBoxActive
|
|
cmp r0, #0
|
|
movne r2, #0
|
|
bne _0238A710
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0, #1]
|
|
bl CloseDialogueBox
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
mov r2, #1
|
|
strb r1, [r0, #1]
|
|
_0238A710:
|
|
cmp r2, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
_0238A71C:
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #1
|
|
bne _0238A784
|
|
ldrsb r0, [r1]
|
|
mvn r1, #1
|
|
cmp r0, r1
|
|
moveq r2, #1
|
|
beq _0238A778
|
|
bl IsAdvancedMenuActive2
|
|
cmp r0, #0
|
|
movne r2, #0
|
|
bne _0238A778
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0]
|
|
bl CloseAdvancedMenu
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
mov r2, #1
|
|
strb r1, [r0]
|
|
_0238A778:
|
|
cmp r2, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
_0238A784:
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #4
|
|
bne _0238A7EC
|
|
ldrsb r0, [r1, #2]
|
|
mvn r1, #1
|
|
cmp r0, r1
|
|
moveq r2, #1
|
|
beq _0238A7E0
|
|
bl PortraitBoxNeedsUpdate
|
|
cmp r0, #0
|
|
movne r2, #0
|
|
bne _0238A7E0
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0, #2]
|
|
bl ClosePortraitBox
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
mov r2, #1
|
|
strb r1, [r0, #2]
|
|
_0238A7E0:
|
|
cmp r2, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
_0238A7EC:
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #8
|
|
bne _0238A854
|
|
ldrsb r0, [r1, #3]
|
|
mvn r1, #1
|
|
cmp r0, r1
|
|
moveq r2, #1
|
|
beq _0238A848
|
|
bl IsTextBoxActive
|
|
cmp r0, #0
|
|
movne r2, #0
|
|
bne _0238A848
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0, #3]
|
|
bl CloseTextBox
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
mov r2, #1
|
|
strb r1, [r0, #3]
|
|
_0238A848:
|
|
cmp r2, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
_0238A854:
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #0x10
|
|
bne _0238A8BC
|
|
ldrsb r0, [r1, #4]
|
|
mvn r1, #1
|
|
cmp r0, r1
|
|
moveq r2, #1
|
|
beq _0238A8B0
|
|
bl IsTextBoxActive
|
|
cmp r0, #0
|
|
movne r2, #0
|
|
bne _0238A8B0
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0, #4]
|
|
bl CloseTextBox
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
mov r2, #1
|
|
strb r1, [r0, #4]
|
|
_0238A8B0:
|
|
cmp r2, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
_0238A8BC:
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #0x20
|
|
bne _0238A924
|
|
ldrsb r0, [r1, #5]
|
|
mvn r1, #1
|
|
cmp r0, r1
|
|
moveq r2, #1
|
|
beq _0238A918
|
|
bl IsTextBoxActive
|
|
cmp r0, #0
|
|
movne r2, #0
|
|
bne _0238A918
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0, #5]
|
|
bl CloseTextBox
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
mov r2, #1
|
|
strb r1, [r0, #5]
|
|
_0238A918:
|
|
cmp r2, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
_0238A924:
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #0x40
|
|
bne _0238A98C
|
|
ldrsb r0, [r1, #6]
|
|
mvn r1, #1
|
|
cmp r0, r1
|
|
moveq r2, #1
|
|
beq _0238A980
|
|
bl PortraitBoxNeedsUpdate
|
|
cmp r0, #0
|
|
movne r2, #0
|
|
bne _0238A980
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0, #6]
|
|
bl ClosePortraitBox
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
mov r2, #1
|
|
strb r1, [r0, #6]
|
|
_0238A980:
|
|
cmp r2, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
_0238A98C:
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #0x80
|
|
bne _0238A9F4
|
|
ldrsb r0, [r1, #7]
|
|
mvn r1, #1
|
|
cmp r0, r1
|
|
moveq r2, #1
|
|
beq _0238A9E8
|
|
bl PortraitBoxNeedsUpdate
|
|
cmp r0, #0
|
|
movne r2, #0
|
|
bne _0238A9E8
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0, #7]
|
|
bl ClosePortraitBox
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
mov r2, #1
|
|
strb r1, [r0, #7]
|
|
_0238A9E8:
|
|
cmp r2, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
_0238A9F4:
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #0x100
|
|
bne _0238AA5C
|
|
ldrsb r0, [r1, #8]
|
|
mvn r1, #1
|
|
cmp r0, r1
|
|
moveq r2, #1
|
|
beq _0238AA50
|
|
bl PortraitBoxNeedsUpdate
|
|
cmp r0, #0
|
|
movne r2, #0
|
|
bne _0238AA50
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0, #8]
|
|
bl ClosePortraitBox
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
mov r2, #1
|
|
strb r1, [r0, #8]
|
|
_0238AA50:
|
|
cmp r2, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
_0238AA5C:
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #0x200
|
|
bne _0238AAC4
|
|
ldrsb r0, [r1, #9]
|
|
mvn r1, #1
|
|
cmp r0, r1
|
|
moveq r2, #1
|
|
beq _0238AAB8
|
|
bl PortraitBoxNeedsUpdate
|
|
cmp r0, #0
|
|
movne r2, #0
|
|
bne _0238AAB8
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0, #9]
|
|
bl ClosePortraitBox
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
mov r2, #1
|
|
strb r1, [r0, #9]
|
|
_0238AAB8:
|
|
cmp r2, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
_0238AAC4:
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #0x40000000
|
|
bne _0238AB2C
|
|
ldrsb r0, [r1, #0xa]
|
|
mvn r1, #1
|
|
cmp r0, r1
|
|
moveq r2, #1
|
|
beq _0238AB20
|
|
bl IsSimpleMenuActive
|
|
cmp r0, #0
|
|
movne r2, #0
|
|
bne _0238AB20
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0, #0xa]
|
|
bl CloseSimpleMenu
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
mov r2, #1
|
|
strb r1, [r0, #0xa]
|
|
_0238AB20:
|
|
cmp r2, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
_0238AB2C:
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #0x80000000
|
|
bne _0238AB94
|
|
ldrsb r0, [r1, #0xb]
|
|
mvn r1, #1
|
|
cmp r0, r1
|
|
moveq r2, #1
|
|
beq _0238AB88
|
|
bl IsSimpleMenuActive
|
|
cmp r0, #0
|
|
movne r2, #0
|
|
bne _0238AB88
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0, #0xb]
|
|
bl CloseSimpleMenu
|
|
ldr r0, _0238AB9C ; =SENTRY_DUTY_PTR
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
mov r2, #1
|
|
strb r1, [r0, #0xb]
|
|
_0238AB88:
|
|
cmp r2, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
_0238AB94:
|
|
mov r0, #1
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0238AB9C: .word SENTRY_DUTY_PTR
|
|
arm_func_end ov14_0238A6B0
|
|
|
|
arm_func_start ov14_0238ABA0
|
|
ov14_0238ABA0: ; 0x0238ABA0
|
|
stmdb sp!, {r4, r5, lr}
|
|
sub sp, sp, #0x54
|
|
mov r4, r1
|
|
mov r1, r4, lsl #0x10
|
|
mov r5, r0
|
|
mov r0, r1, asr #0x10
|
|
bl GetSentryDutyGamePoints
|
|
#ifdef JAPAN
|
|
add r1, r4, #0x49
|
|
add r1, r1, #0x3d00
|
|
#else
|
|
add r1, r4, #0x6e0
|
|
#endif
|
|
mov r1, r1, lsl #0x10
|
|
str r0, [sp, #0x28]
|
|
mov r0, r1, lsr #0x10
|
|
bl StringFromId
|
|
str r0, [sp, #0x3c]
|
|
add r0, sp, #4
|
|
str r0, [sp]
|
|
ldr r2, _0238ABFC ; =ov14_0238DAE8
|
|
ldr r3, _0238AC00 ; =0x0000C402
|
|
mov r0, r5
|
|
mov r1, #0x400
|
|
bl PreprocessString
|
|
mov r0, r5
|
|
add sp, sp, #0x54
|
|
ldmia sp!, {r4, r5, pc}
|
|
.align 2, 0
|
|
_0238ABFC: .word ov14_0238DAE8
|
|
_0238AC00: .word 0x0000C402
|
|
arm_func_end ov14_0238ABA0
|
|
|
|
arm_func_start ov14_0238AC04
|
|
ov14_0238AC04: ; 0x0238AC04
|
|
stmdb sp!, {r3, lr}
|
|
rsb ip, r0, #0x10
|
|
mov r3, #1
|
|
ldr r0, _0238AC3C ; =ov14_0238DB84
|
|
mov r1, r3
|
|
mov r2, #2
|
|
_0238AC1C:
|
|
cmp r3, ip
|
|
movge lr, r2
|
|
movlt lr, r1
|
|
strb lr, [r0, r3]
|
|
add r3, r3, #1
|
|
cmp r3, #0x10
|
|
blt _0238AC1C
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0238AC3C: .word ov14_0238DB84
|
|
arm_func_end ov14_0238AC04
|
|
|
|
arm_func_start ov14_0238AC40
|
|
ov14_0238AC40: ; 0x0238AC40
|
|
stmdb sp!, {r3, lr}
|
|
ldr r1, _0238ACE4 ; =SENTRY_DUTY_PTR
|
|
ldr ip, [r1]
|
|
add r0, ip, #0x3000
|
|
ldr r2, [r0, #0x880]
|
|
ldr r3, [r0, #0x888]
|
|
mov r0, r2, lsl #2
|
|
#ifdef JAPAN
|
|
add r0, r0, #0xd60
|
|
add r0, r0, #0x3000
|
|
#else
|
|
add r0, r0, #0xf7
|
|
add r0, r0, #0x600
|
|
#endif
|
|
add r0, r3, r0
|
|
str r0, [ip, #0x114]
|
|
ldr r0, [r1]
|
|
ldrsb r0, [r0, #1]
|
|
bl ShowDialogueBox
|
|
ldr r0, _0238ACE4 ; =SENTRY_DUTY_PTR
|
|
ldr r1, _0238ACE8 ; =0x00000408
|
|
ldr r3, [r0]
|
|
ldr r2, [r3, #0x114]
|
|
ldrsb r0, [r3, #1]
|
|
mov r2, r2, lsl #0x10
|
|
mov r2, r2, lsr #0x10
|
|
add r3, r3, #0xa4
|
|
bl ShowStringIdInDialogueBox
|
|
ldr r0, _0238ACE4 ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0, #1]
|
|
bl ShowDialogueBox
|
|
ldr r1, _0238ACE4 ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x3000
|
|
ldr r2, [r0, #0x888]
|
|
add r2, r2, #1
|
|
str r2, [r0, #0x888]
|
|
ldr r0, [r1]
|
|
add r2, r0, #0x3000
|
|
ldr r0, [r2, #0x888]
|
|
mov r1, r0, lsr #0x1f
|
|
rsb r0, r1, r0, lsl #30
|
|
add r0, r1, r0, ror #30
|
|
str r0, [r2, #0x888]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0238ACE4: .word SENTRY_DUTY_PTR
|
|
_0238ACE8: .word 0x00000408
|
|
arm_func_end ov14_0238AC40
|
|
|
|
arm_func_start ov14_0238ACEC
|
|
ov14_0238ACEC: ; 0x0238ACEC
|
|
stmdb sp!, {r3, lr}
|
|
mvn r1, #1
|
|
cmp r0, r1
|
|
ldmeqia sp!, {r3, pc}
|
|
bl ClearWindow
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end ov14_0238ACEC
|
|
|
|
arm_func_start ov14_0238AD04
|
|
ov14_0238AD04: ; 0x0238AD04
|
|
#ifdef JAPAN
|
|
#define OV14_0238AD04_OFFSET -2
|
|
#else
|
|
#define OV14_0238AD04_OFFSET 0
|
|
#endif
|
|
stmdb sp!, {r4, lr}
|
|
sub sp, sp, #0x18
|
|
mov r4, r0
|
|
mvn r1, #1
|
|
cmp r4, r1
|
|
beq _0238ADF0
|
|
bl ClearWindow
|
|
ldr r0, _0238ADF8 ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldrsb r0, [r1, #4]
|
|
cmp r4, r0
|
|
bne _0238AD84
|
|
add r0, r1, #0x3800
|
|
ldrsh r1, [r0, #0xa2]
|
|
add r0, sp, #0
|
|
bl GetNameRaw
|
|
mov r1, #2 + OV14_0238AD04_OFFSET
|
|
add r3, sp, #0
|
|
mov r0, r4
|
|
sub r2, r1, #3 + OV14_0238AD04_OFFSET
|
|
bl DrawTextInWindow
|
|
ldr r1, _0238ADF8 ; =SENTRY_DUTY_PTR
|
|
add r0, sp, #0
|
|
ldr r1, [r1]
|
|
add r1, r1, #0x3800
|
|
ldrsh r1, [r1, #0xa4]
|
|
bl GetNameRaw
|
|
mov r1, #0x7a + OV14_0238AD04_OFFSET
|
|
mov r0, r4
|
|
sub r2, r1, #0x7b + OV14_0238AD04_OFFSET
|
|
add r3, sp, #0
|
|
bl DrawTextInWindow
|
|
_0238AD84:
|
|
ldr r0, _0238ADF8 ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldrsb r0, [r1, #5]
|
|
cmp r4, r0
|
|
bne _0238ADE8
|
|
add r0, r1, #0x3800
|
|
ldrsh r1, [r0, #0xa6]
|
|
add r0, sp, #0
|
|
bl GetNameRaw
|
|
mov r1, #2 + OV14_0238AD04_OFFSET
|
|
add r3, sp, #0
|
|
mov r0, r4
|
|
sub r2, r1, #3 + OV14_0238AD04_OFFSET
|
|
bl DrawTextInWindow
|
|
ldr r1, _0238ADF8 ; =SENTRY_DUTY_PTR
|
|
add r0, sp, #0
|
|
ldr r1, [r1]
|
|
add r1, r1, #0x3800
|
|
ldrsh r1, [r1, #0xa8]
|
|
bl GetNameRaw
|
|
mov r1, #0x7a + OV14_0238AD04_OFFSET
|
|
mov r0, r4
|
|
sub r2, r1, #0x7b + OV14_0238AD04_OFFSET
|
|
add r3, sp, #0
|
|
bl DrawTextInWindow
|
|
_0238ADE8:
|
|
mov r0, r4
|
|
bl UpdateWindow
|
|
_0238ADF0:
|
|
add sp, sp, #0x18
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_0238ADF8: .word SENTRY_DUTY_PTR
|
|
arm_func_end ov14_0238AD04
|
|
|
|
arm_func_start SentryUpdateDisplay
|
|
SentryUpdateDisplay: ; 0x0238ADFC
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x6c
|
|
ldr r1, _0238B690 ; =ov14_0238D970
|
|
ldr r0, _0238B694 ; =SENTRY_DUTY_PTR
|
|
ldr r2, [r1, #0x14]
|
|
ldr r1, [r1, #0x10]
|
|
ldr r4, [r0]
|
|
str r1, [sp, #0x14]
|
|
str r2, [sp, #0x18]
|
|
cmp r4, #0
|
|
ldrne r0, [r4, #0x11c]
|
|
cmpne r0, #2
|
|
beq _0238B688
|
|
add r0, r4, #0x3000
|
|
ldrb r1, [r0, #0x870]
|
|
cmp r1, #0
|
|
beq _0238AECC
|
|
ldr r0, [r0, #0x874]
|
|
mov r1, #0x3c
|
|
bl _s32_div_f
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
cmp r0, #9
|
|
blt _0238AECC
|
|
add r0, r4, #0x3000
|
|
ldr r1, [r0, #0x540]
|
|
mov r5, #0
|
|
cmp r1, #2
|
|
moveq r1, #3
|
|
ldr r4, _0238B698 ; =ov14_0238DA40
|
|
ldr r7, _0238B694 ; =SENTRY_DUTY_PTR
|
|
streq r1, [r0, #0x540]
|
|
add sb, sp, #0x14
|
|
mov r8, r5
|
|
mov r6, #0xc4
|
|
_0238AE88:
|
|
ldr r0, [r7]
|
|
add r1, r4, r5, lsl #3
|
|
add r0, r0, #0x278
|
|
add r0, r0, #0x2800
|
|
mla r0, r5, r6, r0
|
|
ldr r2, [r4, r5, lsl #3]
|
|
ldr r1, [r1, #4]
|
|
add sl, r2, #0x2200
|
|
add r3, r1, #0x1600
|
|
mov r1, sb
|
|
mov r2, r8
|
|
str sl, [sp, #0x14]
|
|
str r3, [sp, #0x18]
|
|
bl AnimRelatedFunction__022F6F14
|
|
add r5, r5, #1
|
|
cmp r5, #4
|
|
blt _0238AE88
|
|
_0238AECC:
|
|
ldr r7, _0238B694 ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r7]
|
|
add r0, r0, #0x3000
|
|
ldrb r0, [r0, #0x870]
|
|
cmp r0, #0
|
|
beq _0238AFDC
|
|
ldr r0, _0238B69C ; =0x00000806
|
|
mov r4, #0xc4
|
|
ldr r8, _0238B698 ; =ov14_0238DA40
|
|
mov sl, #0
|
|
sub sb, r0, #2
|
|
mov r5, r4
|
|
mov r6, r4
|
|
mov fp, r4
|
|
_0238AF04:
|
|
ldr r0, [r7]
|
|
add r0, r0, sl, lsl #2
|
|
add r0, r0, #0x3000
|
|
ldr r2, [r0, #0x544]
|
|
ldr r1, [r0, #0x554]
|
|
cmp r2, r1
|
|
beq _0238AFA0
|
|
str r1, [r0, #0x544]
|
|
ldr r1, [r7]
|
|
add r0, r1, sl, lsl #2
|
|
add r0, r0, #0x3000
|
|
ldr r0, [r0, #0x544]
|
|
cmp r0, #2
|
|
beq _0238AF50
|
|
cmp r0, #3
|
|
beq _0238AF6C
|
|
cmp r0, #4
|
|
beq _0238AF88
|
|
b _0238AFA0
|
|
_0238AF50:
|
|
add r0, r1, #0x188
|
|
add r0, r0, #0x2c00
|
|
mla r0, sl, r6, r0
|
|
mov r1, sb
|
|
mov r2, #0
|
|
bl SetAnimDataFields2
|
|
b _0238AFA0
|
|
_0238AF6C:
|
|
add r0, r1, #0x188
|
|
add r0, r0, #0x2c00
|
|
mla r0, sl, r5, r0
|
|
ldr r1, _0238B6A0 ; =0x00001005
|
|
mov r2, #0
|
|
bl SetAnimDataFields2
|
|
b _0238AFA0
|
|
_0238AF88:
|
|
add r0, r1, #0x188
|
|
add r0, r0, #0x2c00
|
|
mla r0, sl, r4, r0
|
|
ldr r1, _0238B69C ; =0x00000806
|
|
mov r2, #0
|
|
bl SetAnimDataFields2
|
|
_0238AFA0:
|
|
ldr r1, [r7]
|
|
add r0, r1, sl, lsl #2
|
|
add r0, r0, #0x3000
|
|
ldr r0, [r0, #0x544]
|
|
cmp r0, #1
|
|
ble _0238AFD0
|
|
add r0, r1, #0x188
|
|
add r0, r0, #0x2c00
|
|
mla r0, sl, fp, r0
|
|
add r1, r8, sl, lsl #3
|
|
mov r2, #0
|
|
bl AnimRelatedFunction__022F6F14
|
|
_0238AFD0:
|
|
add sl, sl, #1
|
|
cmp sl, #4
|
|
blt _0238AF04
|
|
_0238AFDC:
|
|
ldr r0, _0238B694 ; =SENTRY_DUTY_PTR
|
|
ldr r2, [r0]
|
|
add r0, r2, #0x3000
|
|
ldrb r1, [r0, #0x870]
|
|
cmp r1, #0
|
|
beq _0238B038
|
|
mov r1, #0x8000
|
|
str r1, [sp, #0x14]
|
|
ldr r1, [r0, #0x8b0]
|
|
add r0, r2, #0x3a8
|
|
mov r3, r1, lsl #8
|
|
add r1, sp, #0x14
|
|
add r0, r0, #0x3000
|
|
mov r2, #0
|
|
str r3, [sp, #0x18]
|
|
bl AnimRelatedFunction__022F7064
|
|
ldr r0, _0238B694 ; =SENTRY_DUTY_PTR
|
|
add r1, sp, #0x14
|
|
ldr r0, [r0]
|
|
mov r2, #0
|
|
add r0, r0, #0x6c
|
|
add r0, r0, #0x3400
|
|
bl AnimRelatedFunction__022F6F14
|
|
_0238B038:
|
|
ldr r0, _0238B694 ; =SENTRY_DUTY_PTR
|
|
ldr r2, [r0]
|
|
add r0, r2, #0x3000
|
|
ldrb r1, [r0, #0x870]
|
|
cmp r1, #0
|
|
beq _0238B1DC
|
|
ldr r1, [r0, #0x538]
|
|
cmp r1, #0
|
|
beq _0238B1A8
|
|
cmp r1, #3
|
|
beq _0238B078
|
|
cmp r1, #4
|
|
beq _0238B0EC
|
|
cmp r1, #5
|
|
beq _0238B128
|
|
b _0238B164
|
|
_0238B078:
|
|
ldr r0, [r0, #0x534]
|
|
cmp r0, #4
|
|
bne _0238B098
|
|
add r0, r2, #0x1b4
|
|
add r0, r0, #0x2800
|
|
bl ov11_022F4990
|
|
cmp r0, #0
|
|
bne _0238B1A8
|
|
_0238B098:
|
|
ldr r0, _0238B694 ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
add r0, r1, #0x3000
|
|
ldr r0, [r0, #0x534]
|
|
cmp r0, #3
|
|
beq _0238B0C4
|
|
add r0, r1, #0x1b4
|
|
ldr r1, _0238B6A4 ; =0x00000801
|
|
add r0, r0, #0x2800
|
|
mov r2, #0
|
|
bl SetAnimDataFields2
|
|
_0238B0C4:
|
|
ldr r1, _0238B694 ; =SENTRY_DUTY_PTR
|
|
mov r2, #0
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x3000
|
|
ldr r3, [r0, #0x538]
|
|
str r3, [r0, #0x534]
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x3000
|
|
str r2, [r0, #0x538]
|
|
b _0238B1A8
|
|
_0238B0EC:
|
|
add r0, r2, #0x1b4
|
|
ldr r1, _0238B6A8 ; =0x00001002
|
|
add r0, r0, #0x2800
|
|
mov r2, #0
|
|
bl SetAnimDataFields2
|
|
ldr r1, _0238B694 ; =SENTRY_DUTY_PTR
|
|
mov r2, #0
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x3000
|
|
ldr r3, [r0, #0x538]
|
|
str r3, [r0, #0x534]
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x3000
|
|
str r2, [r0, #0x538]
|
|
b _0238B1A8
|
|
_0238B128:
|
|
add r0, r2, #0x1b4
|
|
ldr r1, _0238B6AC ; =0x00000802
|
|
add r0, r0, #0x2800
|
|
mov r2, #0
|
|
bl SetAnimDataFields2
|
|
ldr r1, _0238B694 ; =SENTRY_DUTY_PTR
|
|
mov r2, #0
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x3000
|
|
ldr r3, [r0, #0x538]
|
|
str r3, [r0, #0x534]
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x3000
|
|
str r2, [r0, #0x538]
|
|
b _0238B1A8
|
|
_0238B164:
|
|
ldr r0, [r0, #0x534]
|
|
cmp r0, r1
|
|
beq _0238B184
|
|
add r0, r2, #0x1b4
|
|
add r0, r0, #0x2800
|
|
mov r1, #0x800
|
|
mov r2, #0
|
|
bl SetAnimDataFields2
|
|
_0238B184:
|
|
ldr r1, _0238B694 ; =SENTRY_DUTY_PTR
|
|
mov r2, #0
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x3000
|
|
ldr r3, [r0, #0x538]
|
|
str r3, [r0, #0x534]
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x3000
|
|
str r2, [r0, #0x538]
|
|
_0238B1A8:
|
|
ldr r0, _0238B694 ; =SENTRY_DUTY_PTR
|
|
ldr r3, [r0]
|
|
add r0, r3, #0x3000
|
|
ldr r1, [r0, #0x534]
|
|
cmp r1, #1
|
|
beq _0238B1DC
|
|
ldr r1, [r0, #0x878]
|
|
ldr r2, _0238B698 ; =ov14_0238DA40
|
|
add r0, r3, #0x1b4
|
|
add r0, r0, #0x2800
|
|
add r1, r2, r1, lsl #3
|
|
mov r2, #0
|
|
bl AnimRelatedFunction__022F6F14
|
|
_0238B1DC:
|
|
mov sl, #0
|
|
ldr r8, _0238B6B0 ; =ov14_0238DB84
|
|
ldr r7, _0238B6B4 ; =ov14_0238DA60
|
|
ldr r5, _0238B694 ; =SENTRY_DUTY_PTR
|
|
mov fp, sl
|
|
mov r6, #0xa000
|
|
mov r4, #0xc4
|
|
_0238B1F8:
|
|
mul sb, sl, r4
|
|
ldrsb r0, [r8, sl]
|
|
ldr r1, [r5]
|
|
mov r2, fp
|
|
add r0, r0, #0x800
|
|
add r3, r1, #0x36c
|
|
mov r1, r0, lsl #0x10
|
|
add r0, r3, sb
|
|
mov r1, r1, asr #0x10
|
|
bl SetAnimDataFields2
|
|
mov r0, sl, lsl #1
|
|
ldrsh r1, [r7, r0]
|
|
ldr r0, [r5]
|
|
mov r2, #0
|
|
mov r1, r1, lsl #8
|
|
add r0, r0, #0x36c
|
|
str r1, [sp, #0x14]
|
|
add r0, r0, sb
|
|
add r1, sp, #0x14
|
|
str r6, [sp, #0x18]
|
|
bl AnimRelatedFunction__022F6F14
|
|
add sl, sl, #1
|
|
cmp sl, #0x10
|
|
blt _0238B1F8
|
|
ldr r1, _0238B694 ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x3000
|
|
ldr r3, [r0, #0x884]
|
|
ldr r2, [r0, #0x564]
|
|
cmp r3, r2
|
|
beq _0238B2E4
|
|
str r3, [r0, #0x564]
|
|
ldr r2, [r1]
|
|
mov r1, #6
|
|
add r0, r2, #0x3000
|
|
ldr r0, [r0, #0x564]
|
|
ldr r3, _0238B6B8 ; =0x0000C402
|
|
add r0, r0, #1
|
|
str r0, [sp, #0x40]
|
|
cmp r0, #6
|
|
add r0, r2, #0x570
|
|
ldr r2, _0238B6BC ; =ov14_0238DB0C
|
|
str r1, [sp, #0x44]
|
|
strgt r1, [sp, #0x40]
|
|
add r4, sp, #0x1c
|
|
add r0, r0, #0x3000
|
|
mov r1, #0x400
|
|
str r4, [sp]
|
|
bl PreprocessString
|
|
mov r1, r4
|
|
str r1, [sp]
|
|
ldr r0, _0238B694 ; =SENTRY_DUTY_PTR
|
|
ldr r2, _0238B6C0 ; =ov14_0238DB18
|
|
ldr r0, [r0]
|
|
ldr r3, _0238B6B8 ; =0x0000C402
|
|
add r0, r0, #0x670
|
|
add r0, r0, #0x3000
|
|
mov r1, #0x400
|
|
bl PreprocessString
|
|
_0238B2E4:
|
|
ldr r0, _0238B694 ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
add r0, r1, #0x3000
|
|
ldr r0, [r0, #0x564]
|
|
cmp r0, #0
|
|
blt _0238B374
|
|
add r0, r1, #0x3ac
|
|
add r4, r0, #0xc00
|
|
add r0, r1, #0x570
|
|
mov r3, #0x3a
|
|
str r4, [sp, #0x10]
|
|
str r3, [sp, #0xc]
|
|
mov r4, #1
|
|
add r1, sp, #0x10
|
|
add r2, sp, #0xc
|
|
add r0, r0, #0x3000
|
|
mov r3, #0x16
|
|
str r4, [sp]
|
|
bl ov14_0238D828
|
|
mov r4, #0
|
|
ldr r0, _0238B6C4 ; =ov14_0238DB24
|
|
add r1, sp, #0x10
|
|
add r2, sp, #0xc
|
|
mov r3, #0x16
|
|
str r4, [sp]
|
|
bl ov14_0238D828
|
|
mov r1, #1
|
|
str r1, [sp]
|
|
ldr r0, _0238B694 ; =SENTRY_DUTY_PTR
|
|
add r1, sp, #0x10
|
|
ldr r0, [r0]
|
|
add r2, sp, #0xc
|
|
add r0, r0, #0x670
|
|
add r0, r0, #0x3000
|
|
mov r3, #0x16
|
|
bl ov14_0238D828
|
|
_0238B374:
|
|
ldr r1, _0238B694 ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x3000
|
|
ldr r3, [r0, #0x88c]
|
|
ldr r2, [r0, #0x568]
|
|
cmp r3, r2
|
|
beq _0238B3C4
|
|
str r3, [r0, #0x568]
|
|
ldr r2, [r1]
|
|
ldr r3, _0238B6B8 ; =0x0000C402
|
|
add r0, r2, #0x3000
|
|
ldr r1, [r0, #0x568]
|
|
add r0, r2, #0x770
|
|
str r1, [sp, #0x40]
|
|
add r4, sp, #0x1c
|
|
ldr r2, _0238B6BC ; =ov14_0238DB0C
|
|
add r0, r0, #0x3000
|
|
mov r1, #0x400
|
|
str r4, [sp]
|
|
bl PreprocessString
|
|
_0238B3C4:
|
|
ldr r0, _0238B694 ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
add r0, r1, #0x3000
|
|
ldr r0, [r0, #0x568]
|
|
cmp r0, #0
|
|
blt _0238B42C
|
|
add r0, r1, #0x3ec
|
|
add r4, r0, #0x1800
|
|
add r0, r1, #0x770
|
|
mov r3, #0xa8
|
|
str r4, [sp, #8]
|
|
str r3, [sp, #4]
|
|
mov r4, #8
|
|
add r1, sp, #8
|
|
add r2, sp, #4
|
|
add r0, r0, #0x3000
|
|
mov r3, #0x18
|
|
str r4, [sp]
|
|
bl ov14_0238D828
|
|
mov r4, #0
|
|
ldr r0, _0238B6C8 ; =ov14_0238DB28
|
|
add r1, sp, #8
|
|
add r2, sp, #4
|
|
mov r3, #0x18
|
|
str r4, [sp]
|
|
bl ov14_0238D828
|
|
_0238B42C:
|
|
ldr r4, _0238B694 ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r4]
|
|
add r0, r0, #0x3000
|
|
ldr r8, [r0, #0x56c]
|
|
ldr r7, [r0, #0x898]
|
|
cmp r7, r8
|
|
beq _0238B4E4
|
|
cmp r7, r8
|
|
mov r5, #0
|
|
ble _0238B494
|
|
mov r6, #0x304
|
|
mov r7, #0xc4
|
|
b _0238B47C
|
|
_0238B460:
|
|
add r0, r1, #0x2c
|
|
add r0, r0, #0x2800
|
|
mla r0, r8, r7, r0
|
|
mov r1, r6
|
|
mov r2, r5
|
|
bl SetAnimDataFields2
|
|
add r8, r8, #1
|
|
_0238B47C:
|
|
ldr r1, [r4]
|
|
add r0, r1, #0x3000
|
|
ldr r0, [r0, #0x898]
|
|
cmp r8, r0
|
|
blt _0238B460
|
|
b _0238B4D0
|
|
_0238B494:
|
|
ldr r6, _0238B6CC ; =0x00001004
|
|
mov r8, #0xc4
|
|
b _0238B4BC
|
|
_0238B4A0:
|
|
add r0, r1, #0x2c
|
|
add r0, r0, #0x2800
|
|
mla r0, r7, r8, r0
|
|
mov r1, r6
|
|
mov r2, r5
|
|
bl SetAnimDataFields2
|
|
add r7, r7, #1
|
|
_0238B4BC:
|
|
ldr r1, [r4]
|
|
add r0, r1, #0x3000
|
|
ldr r0, [r0, #0x56c]
|
|
cmp r7, r0
|
|
blt _0238B4A0
|
|
_0238B4D0:
|
|
ldr r0, _0238B694 ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
ldr r1, [r0, #0x898]
|
|
str r1, [r0, #0x56c]
|
|
_0238B4E4:
|
|
mov r0, #0x2600
|
|
mov r4, #0
|
|
ldr r6, _0238B694 ; =SENTRY_DUTY_PTR
|
|
str r0, [sp, #0x18]
|
|
add r8, sp, #0x14
|
|
mov r7, r4
|
|
mov r5, #0xc4
|
|
_0238B500:
|
|
ldr r0, [r6]
|
|
mov r1, r4, lsl #4
|
|
add r0, r0, #0x2c
|
|
add r0, r0, #0x2800
|
|
mla r0, r4, r5, r0
|
|
add r1, r1, #0xd6
|
|
mov r3, r1, lsl #8
|
|
mov r1, r8
|
|
mov r2, r7
|
|
str r3, [sp, #0x14]
|
|
bl AnimRelatedFunction__022F6F14
|
|
add r4, r4, #1
|
|
cmp r4, #2
|
|
blt _0238B500
|
|
ldr r6, _0238B694 ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r6]
|
|
add r0, r0, #0x3000
|
|
ldrb r1, [r0, #0x870]
|
|
cmp r1, #0
|
|
beq _0238B688
|
|
ldr r2, [r0, #0x53c]
|
|
ldr r1, [r0, #0x540]
|
|
cmp r2, r1
|
|
beq _0238B5BC
|
|
mov r4, #0
|
|
ldr r8, _0238B6D0 ; =0x00001003
|
|
str r1, [r0, #0x53c]
|
|
mov r7, r4
|
|
mov r5, #0xc4
|
|
_0238B574:
|
|
ldr r0, [r6]
|
|
mov r1, r8
|
|
add r0, r0, #0x98
|
|
add r0, r0, #0x3000
|
|
mla r0, r4, r5, r0
|
|
mov r2, r7
|
|
bl SetAnimDataFields2
|
|
add r4, r4, #1
|
|
cmp r4, #4
|
|
blt _0238B574
|
|
ldr r0, _0238B694 ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
ldr r0, [r0, #0x53c]
|
|
cmp r0, #3
|
|
bne _0238B5BC
|
|
ldr r0, _0238B6D4 ; =0x00002C05
|
|
bl PlaySeByIdVolumeWrapper
|
|
_0238B5BC:
|
|
ldr r6, _0238B694 ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r6]
|
|
add r0, r0, #0x3000
|
|
ldr r0, [r0, #0x53c]
|
|
cmp r0, #1
|
|
ble _0238B688
|
|
mov sl, #0
|
|
mov r4, #0xc4
|
|
ldr sb, _0238B698 ; =ov14_0238DA40
|
|
add r8, sp, #0x14
|
|
mov fp, sl
|
|
mov r7, sl
|
|
mov r5, r4
|
|
_0238B5F0:
|
|
ldr r1, [r6]
|
|
add r0, r1, #0x3000
|
|
ldr r0, [r0, #0x53c]
|
|
cmp r0, #2
|
|
beq _0238B610
|
|
cmp r0, #3
|
|
beq _0238B648
|
|
b _0238B67C
|
|
_0238B610:
|
|
add r0, r1, #0x98
|
|
add r0, r0, #0x3000
|
|
mla r0, sl, r5, r0
|
|
add r1, sb, sl, lsl #3
|
|
ldr r2, [sb, sl, lsl #3]
|
|
ldr r1, [r1, #4]
|
|
sub r3, r2, #0x1600
|
|
sub ip, r1, #0x600
|
|
mov r1, r8
|
|
mov r2, r7
|
|
str r3, [sp, #0x14]
|
|
str ip, [sp, #0x18]
|
|
bl AnimRelatedFunction__022F6F14
|
|
b _0238B67C
|
|
_0238B648:
|
|
add r0, r1, #0x98
|
|
add r0, r0, #0x3000
|
|
mla r0, sl, r4, r0
|
|
add r1, sb, sl, lsl #3
|
|
ldr r2, [sb, sl, lsl #3]
|
|
ldr r1, [r1, #4]
|
|
add r3, r2, #0x2200
|
|
add ip, r1, #0xe00
|
|
mov r1, r8
|
|
mov r2, fp
|
|
str r3, [sp, #0x14]
|
|
str ip, [sp, #0x18]
|
|
bl AnimRelatedFunction__022F6F14
|
|
_0238B67C:
|
|
add sl, sl, #1
|
|
cmp sl, #4
|
|
blt _0238B5F0
|
|
_0238B688:
|
|
add sp, sp, #0x6c
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_0238B690: .word ov14_0238D970
|
|
_0238B694: .word SENTRY_DUTY_PTR
|
|
_0238B698: .word ov14_0238DA40
|
|
_0238B69C: .word 0x00000806
|
|
_0238B6A0: .word 0x00001005
|
|
_0238B6A4: .word 0x00000801
|
|
_0238B6A8: .word 0x00001002
|
|
_0238B6AC: .word 0x00000802
|
|
_0238B6B0: .word ov14_0238DB84
|
|
_0238B6B4: .word ov14_0238DA60
|
|
_0238B6B8: .word 0x0000C402
|
|
_0238B6BC: .word ov14_0238DB0C
|
|
_0238B6C0: .word ov14_0238DB18
|
|
_0238B6C4: .word ov14_0238DB24
|
|
_0238B6C8: .word ov14_0238DB28
|
|
_0238B6CC: .word 0x00001004
|
|
_0238B6D0: .word 0x00001003
|
|
_0238B6D4: .word 0x00002C05
|
|
arm_func_end SentryUpdateDisplay
|
|
|
|
arm_func_start SentrySetExitingState
|
|
SentrySetExitingState: ; 0x0238B6D8
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _0238B704 ; =SENTRY_DUTY_PTR
|
|
mov r1, #0
|
|
ldr r0, [r0]
|
|
str r1, [r0, #0x118]
|
|
bl ov14_0238A514
|
|
ldr r0, _0238B704 ; =SENTRY_DUTY_PTR
|
|
mov r1, #1
|
|
ldr r0, [r0]
|
|
str r1, [r0, #0x104]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0238B704: .word SENTRY_DUTY_PTR
|
|
arm_func_end SentrySetExitingState
|
|
|
|
arm_func_start ov14_0238B708
|
|
ov14_0238B708: ; 0x0238B708
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
ldr r0, _0238B7F8 ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
|
|
add r0, r0, #0x2a8
|
|
bl ov11_022F6EFC
|
|
ldr r7, _0238B7F8 ; =SENTRY_DUTY_PTR
|
|
mov r4, #0
|
|
mov r6, #0xc4
|
|
_0238B730:
|
|
mul r5, r4, r6
|
|
ldr r0, [r7]
|
|
add r0, r0, #0x36c
|
|
add r0, r0, r5
|
|
bl ov11_022F6EFC
|
|
ldr r0, [r7]
|
|
add r0, r0, #0x3ac
|
|
add r0, r0, #0xc00
|
|
add r0, r0, r5
|
|
bl ov11_022F6EFC
|
|
ldr r0, [r7]
|
|
add r0, r0, #0x3ec
|
|
add r0, r0, #0x1800
|
|
add r0, r0, r5
|
|
bl ov11_022F6EFC
|
|
add r4, r4, #1
|
|
cmp r4, #0x10
|
|
blt _0238B730
|
|
ldr r5, _0238B7F8 ; =SENTRY_DUTY_PTR
|
|
mov r6, #0
|
|
mov r4, #0xc4
|
|
_0238B784:
|
|
ldr r0, [r5]
|
|
add r0, r0, #0x2c
|
|
add r0, r0, #0x2800
|
|
mla r0, r6, r4, r0
|
|
bl ov11_022F6EFC
|
|
add r6, r6, #1
|
|
cmp r6, #2
|
|
blt _0238B784
|
|
ldr r0, _0238B7F8 ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x120
|
|
bl ov11_022F6EFC
|
|
ldr r0, _0238B7F8 ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1e4
|
|
bl ov11_022F6EFC
|
|
ldr r0, _0238B7F8 ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #0x11c]
|
|
cmp r0, #2
|
|
beq _0238B7DC
|
|
bl sub_02017B70
|
|
_0238B7DC:
|
|
ldr r0, _0238B7F8 ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
bl MemFree
|
|
ldr r0, _0238B7F8 ; =SENTRY_DUTY_PTR
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_0238B7F8: .word SENTRY_DUTY_PTR
|
|
arm_func_end ov14_0238B708
|
|
|
|
arm_func_start SentryRunState
|
|
SentryRunState: ; 0x0238B7FC
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
sub sp, sp, #8
|
|
ldr r0, _0238C12C ; =SENTRY_DUTY_PTR
|
|
ldr r2, [r0]
|
|
ldr r1, [r2, #0x104]
|
|
cmp r1, #3
|
|
addls pc, pc, r1, lsl #2
|
|
b _0238C120
|
|
_0238B81C: ; jump table
|
|
b _0238B82C ; case 0
|
|
b _0238C0E0 ; case 1
|
|
b _0238C0FC ; case 2
|
|
b _0238C120 ; case 3
|
|
_0238B82C:
|
|
ldr r1, [r2, #0x10c]
|
|
cmp r1, #3
|
|
addls pc, pc, r1, lsl #2
|
|
b _0238C0D8
|
|
_0238B83C: ; jump table
|
|
b _0238B84C ; case 0
|
|
b _0238B8BC ; case 1
|
|
b _0238C090 ; case 2
|
|
b _0238B84C ; case 3
|
|
_0238B84C:
|
|
mov r1, #0
|
|
str r1, [r2, #0x10c]
|
|
ldr r1, [r0]
|
|
ldr r0, _0238C130 ; =SENTRY_DUTY_STATE_HANDLER_TABLE
|
|
ldr r1, [r1, #0x108]
|
|
ldr r0, [r0, r1, lsl #2]
|
|
blx r0
|
|
ldr r0, _0238C12C ; =SENTRY_DUTY_PTR
|
|
ldr r3, [r0]
|
|
ldr r1, [r3, #0x108]
|
|
ldr r2, [r3, #0x110]
|
|
cmp r1, r2
|
|
beq _0238C0D8
|
|
ldr r1, [r3, #0x10c]
|
|
cmp r1, #3
|
|
bne _0238B8A4
|
|
str r2, [r3, #0x108]
|
|
ldr r1, [r0]
|
|
ldr r0, _0238C130 ; =SENTRY_DUTY_STATE_HANDLER_TABLE
|
|
ldr r1, [r1, #0x108]
|
|
ldr r0, [r0, r1, lsl #2]
|
|
blx r0
|
|
_0238B8A4:
|
|
bl ov14_0238A514
|
|
ldr r0, _0238C12C ; =SENTRY_DUTY_PTR
|
|
mov r1, #1
|
|
ldr r0, [r0]
|
|
str r1, [r0, #0x10c]
|
|
b _0238C0D8
|
|
_0238B8BC:
|
|
bl ov14_0238A6B0
|
|
cmp r0, #0
|
|
beq _0238C0D8
|
|
ldr r1, _0238C12C ; =SENTRY_DUTY_PTR
|
|
ldr r3, [r1]
|
|
ldr r0, [r3, #0x118]
|
|
tst r0, #1
|
|
beq _0238B96C
|
|
ldrsb r2, [r3]
|
|
mvn r0, #1
|
|
cmp r2, r0
|
|
bne _0238B96C
|
|
#ifdef JAPAN
|
|
mov r0, #0
|
|
str r0, [r3, #0xc]
|
|
ldr r0, [r1]
|
|
ldr r3, _0238D698_JP ; =0x00003D47
|
|
mov r2, #0x10
|
|
strh r3, [r0, #0x14]
|
|
ldr r0, [r1]
|
|
mov r4, #5
|
|
str r2, [r0, #0x18]
|
|
ldr r2, [r1]
|
|
ldr r1, _0238C134 ; =0x04080800
|
|
ldr r0, [r2, #0x11c]
|
|
#else
|
|
mov r2, #0
|
|
str r2, [r3, #0xc]
|
|
ldr r2, [r1]
|
|
add r0, r0, #0x6e0
|
|
strh r0, [r2, #0x14]
|
|
ldr r0, [r1]
|
|
mov r2, #0x10
|
|
str r2, [r0, #0x18]
|
|
ldr r2, [r1]
|
|
mov r4, #5
|
|
ldr r0, [r2, #0x11c]
|
|
ldr r1, _0238C134 ; =0x04080800
|
|
#endif
|
|
cmp r0, #2
|
|
str r4, [sp]
|
|
beq _0238B94C
|
|
ldr r0, _0238C138 ; =ov14_0238D9C8
|
|
ldr r3, _0238C13C ; =ov14_0238ABA0
|
|
add r2, r2, #0xc
|
|
str r4, [sp, #4]
|
|
bl CreateAdvancedMenu
|
|
ldr r1, _0238C12C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r1]
|
|
strb r0, [r1]
|
|
b _0238B96C
|
|
_0238B94C:
|
|
ldr r0, _0238C140 ; =ov14_0238D9D8
|
|
ldr r3, _0238C13C ; =ov14_0238ABA0
|
|
add r2, r2, #0xc
|
|
str r4, [sp, #4]
|
|
bl CreateAdvancedMenu
|
|
ldr r1, _0238C12C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r1]
|
|
strb r0, [r1]
|
|
_0238B96C:
|
|
ldr r0, _0238C12C ; =SENTRY_DUTY_PTR
|
|
ldr r3, [r0]
|
|
ldr r1, [r3, #0x118]
|
|
tst r1, #2
|
|
beq _0238BDA4
|
|
ldr r5, [r3, #0x114]
|
|
mov r2, #0x32
|
|
str r2, [r3, #0xf0]
|
|
ldr r1, [r0]
|
|
sub r0, r2, #0x34
|
|
ldrsb r1, [r1, #1]
|
|
ldr r4, _0238C144 ; =0x00003018
|
|
cmp r1, r0
|
|
bne _0238B9B8
|
|
ldr r0, _0238C148 ; =ov14_0238D9B8
|
|
bl CreateDialogueBox
|
|
ldr r1, _0238C12C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r1]
|
|
strb r0, [r1, #1]
|
|
_0238B9B8:
|
|
ldr r0, _0238C12C ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0, #1]
|
|
bl ShowDialogueBox
|
|
ldr r2, _0238C12C ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r2]
|
|
ldr r1, [r0, #0x108]
|
|
cmp r1, #0x21
|
|
addls pc, pc, r1, lsl #2
|
|
b _0238BD6C
|
|
_0238B9E0: ; jump table
|
|
b _0238BD6C ; case 0
|
|
b _0238BD6C ; case 1
|
|
b _0238BD6C ; case 2
|
|
b _0238BD6C ; case 3
|
|
b _0238BA68 ; case 4
|
|
b _0238BA68 ; case 5
|
|
b _0238BA7C ; case 6
|
|
b _0238BA7C ; case 7
|
|
b _0238BA90 ; case 8
|
|
b _0238BD6C ; case 9
|
|
b _0238BA90 ; case 10
|
|
b _0238BD6C ; case 11
|
|
b _0238BAA4 ; case 12
|
|
b _0238BAA4 ; case 13
|
|
b _0238BD6C ; case 14
|
|
b _0238BD6C ; case 15
|
|
b _0238BAC0 ; case 16
|
|
b _0238BAC0 ; case 17
|
|
b _0238BADC ; case 18
|
|
b _0238BADC ; case 19
|
|
b _0238BAF0 ; case 20
|
|
b _0238BD6C ; case 21
|
|
b _0238BD6C ; case 22
|
|
b _0238BB60 ; case 23
|
|
b _0238BD6C ; case 24
|
|
b _0238BBE0 ; case 25
|
|
b _0238BD6C ; case 26
|
|
b _0238BD6C ; case 27
|
|
b _0238BC50 ; case 28
|
|
b _0238BD6C ; case 29
|
|
b _0238BC88 ; case 30
|
|
b _0238BD6C ; case 31
|
|
b _0238BCFC ; case 32
|
|
b _0238BD6C ; case 33
|
|
_0238BA68:
|
|
ldr r1, _0238C14C ; =0x00000142
|
|
#ifdef JAPAN
|
|
ldr r4, _0238C144 ; =0x00003018
|
|
str r1, [r0, #0xf0]
|
|
add r5, r1, #0x3c00
|
|
#else
|
|
ldr r5, _0238C150 ; =0x000006D9
|
|
str r1, [r0, #0xf0]
|
|
ldr r4, _0238C144 ; =0x00003018
|
|
#endif
|
|
b _0238BD6C
|
|
_0238BA7C:
|
|
ldr r1, _0238C14C ; =0x00000142
|
|
ldr r5, _0238C154 ; =0x000006D8
|
|
str r1, [r0, #0xf0]
|
|
#ifdef JAPAN
|
|
ldr r4, _0238C144 ; =0x00003018
|
|
#else
|
|
add r4, r5, #0x2940
|
|
#endif
|
|
b _0238BD6C
|
|
_0238BA90:
|
|
ldr r1, _0238C14C ; =0x00000142
|
|
ldr r5, _0238C158 ; =0x000006DA
|
|
str r1, [r0, #0xf0]
|
|
ldr r4, _0238C144 ; =0x00003018
|
|
b _0238BD6C
|
|
_0238BAA4:
|
|
add r1, r0, #0x3800
|
|
ldrsh r1, [r1, #0xd2]
|
|
ldr r5, _0238C15C ; =0x000006DB
|
|
ldr r4, _0238C160 ; =0x00003028
|
|
orr r1, r1, #0x20000
|
|
str r1, [r0, #0xf0]
|
|
b _0238BD6C
|
|
_0238BAC0:
|
|
add r1, r0, #0x3800
|
|
ldrsh r1, [r1, #0xd2]
|
|
ldr r5, _0238C164 ; =0x000006EB
|
|
ldr r4, _0238C160 ; =0x00003028
|
|
orr r1, r1, #0x20000
|
|
str r1, [r0, #0xf0]
|
|
b _0238BD6C
|
|
_0238BADC:
|
|
ldr r1, _0238C14C ; =0x00000142
|
|
ldr r5, _0238C168 ; =0x000006DC
|
|
str r1, [r0, #0xf0]
|
|
ldr r4, _0238C160 ; =0x00003028
|
|
b _0238BD6C
|
|
_0238BAF0:
|
|
add r1, r0, #0x3000
|
|
ldr r1, [r1, #0x8ac]
|
|
cmp r1, #0
|
|
beq _0238BB0C
|
|
cmp r1, #1
|
|
beq _0238BB38
|
|
b _0238BB58
|
|
_0238BB0C:
|
|
add r1, r0, #0x3800
|
|
ldrsh r1, [r1, #0xd0]
|
|
ldr r5, _0238C16C ; =0x000006EE
|
|
orr r1, r1, #0x20000
|
|
str r1, [r0, #0xf0]
|
|
ldr r0, [r2]
|
|
add r0, r0, #0x3000
|
|
ldr r1, [r0, #0x8ac]
|
|
add r1, r1, #1
|
|
str r1, [r0, #0x8ac]
|
|
b _0238BB58
|
|
_0238BB38:
|
|
ldr r1, _0238C14C ; =0x00000142
|
|
ldr r5, _0238C170 ; =0x000006EF
|
|
str r1, [r0, #0xf0]
|
|
ldr r0, [r2]
|
|
add r0, r0, #0x3000
|
|
ldr r1, [r0, #0x8ac]
|
|
add r1, r1, #1
|
|
str r1, [r0, #0x8ac]
|
|
_0238BB58:
|
|
ldr r4, _0238C160 ; =0x00003028
|
|
b _0238BD6C
|
|
_0238BB60:
|
|
add r1, r0, #0x3000
|
|
ldr r1, [r1, #0x8ac]
|
|
cmp r1, #0
|
|
beq _0238BB7C
|
|
cmp r1, #1
|
|
beq _0238BBAC
|
|
b _0238BBD8
|
|
_0238BB7C:
|
|
ldr r3, _0238C14C ; =0x00000142
|
|
ldr r1, _0238C174 ; =0x00002311
|
|
str r3, [r0, #0xf0]
|
|
ldr r0, [r2]
|
|
ldr r5, _0238C178 ; =0x000006F1
|
|
str r1, [r0, #0xc8]
|
|
ldr r0, [r2]
|
|
add r0, r0, #0x3000
|
|
ldr r1, [r0, #0x8ac]
|
|
add r1, r1, #1
|
|
str r1, [r0, #0x8ac]
|
|
b _0238BBD8
|
|
_0238BBAC:
|
|
#ifdef JAPAN
|
|
ldr r3, _0238C14C ; =0x00000142
|
|
ldr r1, _0238C180 ; =0x00002C07
|
|
str r3, [r0, #0xf0]
|
|
ldr r0, [r2]
|
|
ldr r5, _0238D6E4 ; =0x00003D5B
|
|
#else
|
|
ldr r5, _0238C17C ; =0x000006F2
|
|
ldr r1, _0238C180 ; =0x00002C07
|
|
sub r3, r5, #0x5b0
|
|
str r3, [r0, #0xf0]
|
|
ldr r0, [r2]
|
|
#endif
|
|
str r1, [r0, #0xc8]
|
|
ldr r0, [r2]
|
|
add r0, r0, #0x3000
|
|
ldr r1, [r0, #0x8ac]
|
|
add r1, r1, #1
|
|
str r1, [r0, #0x8ac]
|
|
_0238BBD8:
|
|
ldr r4, _0238C160 ; =0x00003028
|
|
b _0238BD6C
|
|
_0238BBE0:
|
|
add r1, r0, #0x3000
|
|
ldr r1, [r1, #0x8ac]
|
|
cmp r1, #0
|
|
beq _0238BBFC
|
|
cmp r1, #1
|
|
beq _0238BC28
|
|
b _0238BC48
|
|
_0238BBFC:
|
|
add r1, r0, #0x3800
|
|
ldrsh r1, [r1, #0xd0]
|
|
ldr r5, _0238C184 ; =0x000006EC
|
|
orr r1, r1, #0x20000
|
|
str r1, [r0, #0xf0]
|
|
ldr r0, [r2]
|
|
add r0, r0, #0x3000
|
|
ldr r1, [r0, #0x8ac]
|
|
add r1, r1, #1
|
|
str r1, [r0, #0x8ac]
|
|
b _0238BC48
|
|
_0238BC28:
|
|
ldr r1, _0238C14C ; =0x00000142
|
|
ldr r5, _0238C188 ; =0x000006ED
|
|
str r1, [r0, #0xf0]
|
|
ldr r0, [r2]
|
|
add r0, r0, #0x3000
|
|
ldr r1, [r0, #0x8ac]
|
|
add r1, r1, #1
|
|
str r1, [r0, #0x8ac]
|
|
_0238BC48:
|
|
ldr r4, _0238C160 ; =0x00003028
|
|
b _0238BD6C
|
|
_0238BC50:
|
|
add r1, r0, #0x3000
|
|
ldr r1, [r1, #0x8ac]
|
|
cmp r1, #0
|
|
bne _0238BC80
|
|
ldr r1, _0238C14C ; =0x00000142
|
|
#ifdef JAPAN
|
|
ldr r5, _0238D6F0_JP ; =0x00003D59
|
|
#else
|
|
mov r5, #0x6f0
|
|
#endif
|
|
str r1, [r0, #0xf0]
|
|
ldr r0, [r2]
|
|
add r0, r0, #0x3000
|
|
ldr r1, [r0, #0x8ac]
|
|
add r1, r1, #1
|
|
str r1, [r0, #0x8ac]
|
|
_0238BC80:
|
|
ldr r4, _0238C160 ; =0x00003028
|
|
b _0238BD6C
|
|
_0238BC88:
|
|
add r1, r0, #0x3000
|
|
ldr r1, [r1, #0x8ac]
|
|
cmp r1, #0
|
|
beq _0238BCA4
|
|
cmp r1, #1
|
|
beq _0238BCD4
|
|
b _0238BCF4
|
|
_0238BCA4:
|
|
mov r1, #0x32
|
|
str r1, [r0, #0xf0]
|
|
ldr r0, [r2]
|
|
ldr r1, _0238C18C ; =0x00002C09
|
|
ldr r5, _0238C190 ; =0x000006F3
|
|
str r1, [r0, #0xc8]
|
|
ldr r0, [r2]
|
|
add r0, r0, #0x3000
|
|
ldr r1, [r0, #0x8ac]
|
|
add r1, r1, #1
|
|
str r1, [r0, #0x8ac]
|
|
b _0238BCF4
|
|
_0238BCD4:
|
|
ldr r1, _0238C14C ; =0x00000142
|
|
ldr r5, _0238C194 ; =0x000006F4
|
|
str r1, [r0, #0xf0]
|
|
ldr r0, [r2]
|
|
add r0, r0, #0x3000
|
|
ldr r1, [r0, #0x8ac]
|
|
add r1, r1, #1
|
|
str r1, [r0, #0x8ac]
|
|
_0238BCF4:
|
|
ldr r4, _0238C144 ; =0x00003018
|
|
b _0238BD6C
|
|
_0238BCFC:
|
|
add r1, r0, #0x3000
|
|
ldr r1, [r1, #0x8ac]
|
|
cmp r1, #0
|
|
beq _0238BD18
|
|
cmp r1, #1
|
|
beq _0238BD48
|
|
b _0238BD68
|
|
_0238BD18:
|
|
ldr r3, _0238C198 ; =0x000001E3
|
|
ldr r1, _0238C18C ; =0x00002C09
|
|
str r3, [r0, #0xf0]
|
|
ldr r0, [r2]
|
|
ldr r5, _0238C19C ; =0x000006F5
|
|
str r1, [r0, #0xc8]
|
|
ldr r0, [r2]
|
|
add r0, r0, #0x3000
|
|
ldr r1, [r0, #0x8ac]
|
|
add r1, r1, #1
|
|
str r1, [r0, #0x8ac]
|
|
b _0238BD68
|
|
_0238BD48:
|
|
ldr r1, _0238C14C ; =0x00000142
|
|
ldr r5, _0238C1A0 ; =0x000006F6
|
|
str r1, [r0, #0xf0]
|
|
ldr r0, [r2]
|
|
add r0, r0, #0x3000
|
|
ldr r1, [r0, #0x8ac]
|
|
add r1, r1, #1
|
|
str r1, [r0, #0x8ac]
|
|
_0238BD68:
|
|
ldr r4, _0238C144 ; =0x00003018
|
|
_0238BD6C:
|
|
ldr r0, _0238C12C ; =SENTRY_DUTY_PTR
|
|
ldr r2, [r0]
|
|
ldr r1, [r2, #0x114]
|
|
cmp r1, r5
|
|
beq _0238BDA4
|
|
str r5, [r2, #0x114]
|
|
ldr r3, [r0]
|
|
mov r1, r4
|
|
ldr r2, [r3, #0x114]
|
|
ldrsb r0, [r3, #1]
|
|
mov r2, r2, lsl #0x10
|
|
mov r2, r2, lsr #0x10
|
|
add r3, r3, #0xa4
|
|
bl ShowStringIdInDialogueBox
|
|
_0238BDA4:
|
|
ldr r0, _0238C12C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #4
|
|
beq _0238BE30
|
|
ldrsb r1, [r1, #2]
|
|
mvn r0, #1
|
|
cmp r1, r0
|
|
bne _0238BE30
|
|
mov r0, #0
|
|
mov r1, #3
|
|
mov r2, #1
|
|
bl CreatePortraitBox
|
|
ldr r2, _0238C12C ; =SENTRY_DUTY_PTR
|
|
mov r1, #0x32
|
|
ldr r3, [r2]
|
|
strb r0, [r3, #2]
|
|
ldr r0, [r2]
|
|
add r0, r0, #0xf4
|
|
bl InitPortraitParamsWithMonsterId
|
|
ldr r0, _0238C12C ; =SENTRY_DUTY_PTR
|
|
mov r1, #0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0xf4
|
|
bl SetPortraitLayout
|
|
ldr r0, _0238C12C ; =SENTRY_DUTY_PTR
|
|
mov r1, #0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0xf4
|
|
bl SetPortraitEmotion
|
|
ldr r0, _0238C12C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldrsb r0, [r1, #2]
|
|
add r1, r1, #0xf4
|
|
bl ShowPortraitInPortraitBox
|
|
_0238BE30:
|
|
ldr r0, _0238C12C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #8
|
|
beq _0238BE6C
|
|
ldrsb r1, [r1, #3]
|
|
mvn r0, #1
|
|
cmp r1, r0
|
|
bne _0238BE6C
|
|
ldr r0, _0238C1A4 ; =ov14_0238D9F8
|
|
ldr r1, _0238C1A8 ; =ov14_0238ACEC
|
|
bl CreateTextBox
|
|
ldr r1, _0238C12C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r1]
|
|
strb r0, [r1, #3]
|
|
_0238BE6C:
|
|
ldr r0, _0238C12C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #0x10
|
|
beq _0238BEA8
|
|
ldrsb r1, [r1, #4]
|
|
mvn r0, #1
|
|
cmp r1, r0
|
|
bne _0238BEA8
|
|
ldr r0, _0238C1AC ; =ov14_0238D988
|
|
ldr r1, _0238C1B0 ; =ov14_0238AD04
|
|
bl CreateTextBox
|
|
ldr r1, _0238C12C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r1]
|
|
strb r0, [r1, #4]
|
|
_0238BEA8:
|
|
ldr r0, _0238C12C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #0x20
|
|
beq _0238BEE4
|
|
ldrsb r1, [r1, #5]
|
|
mvn r0, #1
|
|
cmp r1, r0
|
|
bne _0238BEE4
|
|
ldr r0, _0238C1B4 ; =ov14_0238D998
|
|
ldr r1, _0238C1B0 ; =ov14_0238AD04
|
|
bl CreateTextBox
|
|
ldr r1, _0238C12C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r1]
|
|
strb r0, [r1, #5]
|
|
_0238BEE4:
|
|
ldr r0, _0238C12C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #0x40
|
|
beq _0238BF24
|
|
ldrsb r1, [r1, #6]
|
|
mvn r0, #1
|
|
cmp r1, r0
|
|
bne _0238BF24
|
|
mov r0, #0
|
|
mov r2, r0
|
|
mov r1, #3
|
|
bl CreatePortraitBox
|
|
ldr r1, _0238C12C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r1]
|
|
strb r0, [r1, #6]
|
|
_0238BF24:
|
|
ldr r0, _0238C12C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #0x80
|
|
beq _0238BF64
|
|
ldrsb r1, [r1, #7]
|
|
mvn r0, #1
|
|
cmp r1, r0
|
|
bne _0238BF64
|
|
mov r0, #0
|
|
mov r2, r0
|
|
mov r1, #4
|
|
bl CreatePortraitBox
|
|
ldr r1, _0238C12C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r1]
|
|
strb r0, [r1, #7]
|
|
_0238BF64:
|
|
ldr r0, _0238C12C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #0x100
|
|
beq _0238BFA4
|
|
ldrsb r1, [r1, #8]
|
|
mvn r0, #1
|
|
cmp r1, r0
|
|
bne _0238BFA4
|
|
mov r0, #0
|
|
mov r2, r0
|
|
mov r1, #5
|
|
bl CreatePortraitBox
|
|
ldr r1, _0238C12C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r1]
|
|
strb r0, [r1, #8]
|
|
_0238BFA4:
|
|
ldr r0, _0238C12C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #0x200
|
|
beq _0238BFE4
|
|
ldrsb r1, [r1, #9]
|
|
mvn r0, #1
|
|
cmp r1, r0
|
|
bne _0238BFE4
|
|
mov r0, #0
|
|
mov r2, r0
|
|
mov r1, #6
|
|
bl CreatePortraitBox
|
|
ldr r1, _0238C12C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r1]
|
|
strb r0, [r1, #9]
|
|
_0238BFE4:
|
|
ldr r0, _0238C12C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #0x40000000
|
|
beq _0238C030
|
|
ldrsb r1, [r1, #0xa]
|
|
mvn r0, #1
|
|
cmp r1, r0
|
|
bne _0238C030
|
|
ldr r0, _0238C1B8 ; =ov14_0238D9A8
|
|
mov r4, #8
|
|
ldr r3, _0238C1BC ; =SENTRY_DEBUG_MENU_ITEMS
|
|
mov r1, #0x13
|
|
mov r2, #0
|
|
str r4, [sp]
|
|
bl CreateSimpleMenuFromStringIds
|
|
ldr r1, _0238C12C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r1]
|
|
strb r0, [r1, #0xa]
|
|
_0238C030:
|
|
ldr r0, _0238C12C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x118]
|
|
tst r0, #0x80000000
|
|
beq _0238C07C
|
|
ldrsb r1, [r1, #0xb]
|
|
mvn r0, #1
|
|
cmp r1, r0
|
|
bne _0238C07C
|
|
ldr r0, _0238C1C0 ; =ov14_0238D9E8
|
|
mov r4, #2
|
|
ldr r3, _0238C1C4 ; =ov14_0238DA08
|
|
mov r1, #0x13
|
|
mov r2, #0
|
|
str r4, [sp]
|
|
bl CreateSimpleMenuFromStringIds
|
|
ldr r1, _0238C12C ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r1]
|
|
strb r0, [r1, #0xb]
|
|
_0238C07C:
|
|
ldr r0, _0238C12C ; =SENTRY_DUTY_PTR
|
|
mov r1, #2
|
|
ldr r0, [r0]
|
|
str r1, [r0, #0x10c]
|
|
b _0238C0D8
|
|
_0238C090:
|
|
ldr r0, [r2, #0x118]
|
|
tst r0, #2
|
|
beq _0238C0B0
|
|
ldrsb r0, [r2, #1]
|
|
bl IsDialogueBoxActive
|
|
cmp r0, #0
|
|
movne r0, #0
|
|
bne _0238C0B4
|
|
_0238C0B0:
|
|
mov r0, #1
|
|
_0238C0B4:
|
|
cmp r0, #0
|
|
beq _0238C0D8
|
|
ldr r0, _0238C12C ; =SENTRY_DUTY_PTR
|
|
mov r2, #0
|
|
ldr r1, [r0]
|
|
str r2, [r1, #0x10c]
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x110]
|
|
str r0, [r1, #0x108]
|
|
_0238C0D8:
|
|
mov r0, #1
|
|
b _0238C124
|
|
_0238C0E0:
|
|
bl ov14_0238A6B0
|
|
cmp r0, #0
|
|
ldrne r0, _0238C12C ; =SENTRY_DUTY_PTR
|
|
movne r1, #2
|
|
ldrne r0, [r0]
|
|
strne r1, [r0, #0x104]
|
|
b _0238C120
|
|
_0238C0FC:
|
|
mov r1, #3
|
|
str r1, [r2, #0x104]
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
ldr r0, [r0, #0x890]
|
|
bl ov11_022E6E8C
|
|
bl ov14_0238B708
|
|
mov r0, #4
|
|
b _0238C124
|
|
_0238C120:
|
|
mov r0, #1
|
|
_0238C124:
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
#ifdef JAPAN
|
|
#define SENTRY_RUN_STATE_OFFSET 0x3669
|
|
#else
|
|
#define SENTRY_RUN_STATE_OFFSET 0
|
|
#endif
|
|
_0238C12C: .word SENTRY_DUTY_PTR
|
|
_0238C130: .word SENTRY_DUTY_STATE_HANDLER_TABLE
|
|
#ifdef JAPAN
|
|
_0238D698_JP: .word 0x00003D47
|
|
#endif
|
|
_0238C134: .word 0x04080800
|
|
_0238C138: .word ov14_0238D9C8
|
|
_0238C13C: .word ov14_0238ABA0
|
|
_0238C140: .word ov14_0238D9D8
|
|
_0238C144: .word 0x00003018
|
|
_0238C148: .word ov14_0238D9B8
|
|
_0238C14C: .word 0x00000142
|
|
#ifndef JAPAN
|
|
_0238C150: .word 0x000006D9
|
|
#endif
|
|
_0238C154: .word 0x000006D8 + SENTRY_RUN_STATE_OFFSET
|
|
_0238C158: .word 0x000006DA + SENTRY_RUN_STATE_OFFSET
|
|
_0238C15C: .word 0x000006DB + SENTRY_RUN_STATE_OFFSET
|
|
_0238C160: .word 0x00003028
|
|
_0238C164: .word 0x000006EB + SENTRY_RUN_STATE_OFFSET
|
|
_0238C168: .word 0x000006DC + SENTRY_RUN_STATE_OFFSET
|
|
_0238C16C: .word 0x000006EE + SENTRY_RUN_STATE_OFFSET
|
|
_0238C170: .word 0x000006EF + SENTRY_RUN_STATE_OFFSET
|
|
_0238C174: .word 0x00002311
|
|
_0238C178: .word 0x000006F1 + SENTRY_RUN_STATE_OFFSET
|
|
#ifdef JAPAN
|
|
_0238C180: .word 0x00002C07
|
|
_0238D6E4: .word 0x00003D5B
|
|
#else
|
|
_0238C17C: .word 0x000006F2
|
|
_0238C180: .word 0x00002C07
|
|
#endif
|
|
_0238C184: .word 0x000006EC + SENTRY_RUN_STATE_OFFSET
|
|
_0238C188: .word 0x000006ED + SENTRY_RUN_STATE_OFFSET
|
|
#ifdef JAPAN
|
|
_0238D6F0_JP: .word 0x00003D59
|
|
#endif
|
|
_0238C18C: .word 0x00002C09
|
|
_0238C190: .word 0x000006F3 + SENTRY_RUN_STATE_OFFSET
|
|
_0238C194: .word 0x000006F4 + SENTRY_RUN_STATE_OFFSET
|
|
_0238C198: .word 0x000001E3
|
|
_0238C19C: .word 0x000006F5 + SENTRY_RUN_STATE_OFFSET
|
|
_0238C1A0: .word 0x000006F6 + SENTRY_RUN_STATE_OFFSET
|
|
_0238C1A4: .word ov14_0238D9F8
|
|
_0238C1A8: .word ov14_0238ACEC
|
|
_0238C1AC: .word ov14_0238D988
|
|
_0238C1B0: .word ov14_0238AD04
|
|
_0238C1B4: .word ov14_0238D998
|
|
_0238C1B8: .word ov14_0238D9A8
|
|
_0238C1BC: .word SENTRY_DEBUG_MENU_ITEMS
|
|
_0238C1C0: .word ov14_0238D9E8
|
|
_0238C1C4: .word ov14_0238DA08
|
|
arm_func_end SentryRunState
|
|
|
|
arm_func_start SentrySetStateIntermediate
|
|
SentrySetStateIntermediate: ; 0x0238C1C8
|
|
ldr r1, _0238C1E4 ; =SENTRY_DUTY_PTR
|
|
mov r3, #3
|
|
ldr r2, [r1]
|
|
str r3, [r2, #0x10c]
|
|
ldr r1, [r1]
|
|
str r0, [r1, #0x110]
|
|
bx lr
|
|
.align 2, 0
|
|
_0238C1E4: .word SENTRY_DUTY_PTR
|
|
arm_func_end SentrySetStateIntermediate
|
|
|
|
arm_func_start SentryState0
|
|
SentryState0: ; 0x0238C1E8
|
|
ldr r0, _0238C208 ; =SENTRY_DUTY_PTR
|
|
mov r3, #0x80000000
|
|
ldr r2, [r0]
|
|
mov r1, #1
|
|
str r3, [r2, #0x118]
|
|
ldr r0, [r0]
|
|
str r1, [r0, #0x110]
|
|
bx lr
|
|
.align 2, 0
|
|
_0238C208: .word SENTRY_DUTY_PTR
|
|
arm_func_end SentryState0
|
|
|
|
arm_func_start SentryState1
|
|
SentryState1: ; 0x0238C20C
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _0238C260 ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0, #0xb]
|
|
bl IsSimpleMenuActive
|
|
cmp r0, #0
|
|
ldmneia sp!, {r3, pc}
|
|
ldr r0, _0238C260 ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0, #0xb]
|
|
bl GetSimpleMenuResult__0202B870
|
|
cmp r0, #8
|
|
beq _0238C248
|
|
cmp r0, #9
|
|
beq _0238C254
|
|
_0238C248:
|
|
mov r0, #2
|
|
bl SentrySetStateIntermediate
|
|
ldmia sp!, {r3, pc}
|
|
_0238C254:
|
|
mov r0, #6
|
|
bl SentrySetStateIntermediate
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0238C260: .word SENTRY_DUTY_PTR
|
|
arm_func_end SentryState1
|
|
|
|
arm_func_start SentryState2
|
|
SentryState2: ; 0x0238C264
|
|
ldr r0, _0238C284 ; =SENTRY_DUTY_PTR
|
|
mov r3, #0x40000000
|
|
ldr r2, [r0]
|
|
mov r1, #3
|
|
str r3, [r2, #0x118]
|
|
ldr r0, [r0]
|
|
str r1, [r0, #0x110]
|
|
bx lr
|
|
.align 2, 0
|
|
_0238C284: .word SENTRY_DUTY_PTR
|
|
arm_func_end SentryState2
|
|
|
|
arm_func_start SentryState3
|
|
SentryState3: ; 0x0238C288
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _0238C3AC ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0, #0xa]
|
|
bl IsSimpleMenuActive
|
|
cmp r0, #0
|
|
ldmneia sp!, {r3, pc}
|
|
ldr r0, _0238C3AC ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0, #0xa]
|
|
bl GetSimpleMenuResult__0202B870
|
|
add r0, r0, #1
|
|
cmp r0, #8
|
|
addls pc, pc, r0, lsl #2
|
|
b _0238C3A4
|
|
_0238C2C4: ; jump table
|
|
b _0238C3A4 ; case 0
|
|
b _0238C2E8 ; case 1
|
|
b _0238C300 ; case 2
|
|
b _0238C318 ; case 3
|
|
b _0238C330 ; case 4
|
|
b _0238C348 ; case 5
|
|
b _0238C360 ; case 6
|
|
b _0238C378 ; case 7
|
|
b _0238C390 ; case 8
|
|
_0238C2E8:
|
|
ldr r0, _0238C3AC ; =SENTRY_DUTY_PTR
|
|
mov r1, #0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
str r1, [r0, #0x890]
|
|
b _0238C3A4
|
|
_0238C300:
|
|
ldr r0, _0238C3AC ; =SENTRY_DUTY_PTR
|
|
mov r1, #1
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
str r1, [r0, #0x890]
|
|
b _0238C3A4
|
|
_0238C318:
|
|
ldr r0, _0238C3AC ; =SENTRY_DUTY_PTR
|
|
mov r1, #2
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
str r1, [r0, #0x890]
|
|
b _0238C3A4
|
|
_0238C330:
|
|
ldr r0, _0238C3AC ; =SENTRY_DUTY_PTR
|
|
mov r1, #3
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
str r1, [r0, #0x890]
|
|
b _0238C3A4
|
|
_0238C348:
|
|
ldr r0, _0238C3AC ; =SENTRY_DUTY_PTR
|
|
mov r1, #4
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
str r1, [r0, #0x890]
|
|
b _0238C3A4
|
|
_0238C360:
|
|
ldr r0, _0238C3AC ; =SENTRY_DUTY_PTR
|
|
mov r1, #5
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
str r1, [r0, #0x890]
|
|
b _0238C3A4
|
|
_0238C378:
|
|
ldr r0, _0238C3AC ; =SENTRY_DUTY_PTR
|
|
mov r1, #6
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
str r1, [r0, #0x890]
|
|
b _0238C3A4
|
|
_0238C390:
|
|
ldr r0, _0238C3AC ; =SENTRY_DUTY_PTR
|
|
mov r1, #7
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
str r1, [r0, #0x890]
|
|
_0238C3A4:
|
|
bl SentrySetExitingState
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0238C3AC: .word SENTRY_DUTY_PTR
|
|
arm_func_end SentryState3
|
|
|
|
arm_func_start SentryState4
|
|
SentryState4: ; 0x0238C3B0
|
|
ldr r0, _0238C3D0 ; =SENTRY_DUTY_PTR
|
|
mov r3, #3
|
|
ldr r2, [r0]
|
|
mov r1, #5
|
|
str r3, [r2, #0x118]
|
|
ldr r0, [r0]
|
|
str r1, [r0, #0x110]
|
|
bx lr
|
|
.align 2, 0
|
|
_0238C3D0: .word SENTRY_DUTY_PTR
|
|
arm_func_end SentryState4
|
|
|
|
arm_func_start SentryStateExit
|
|
SentryStateExit: ; 0x0238C3D4
|
|
ldr ip, _0238C3DC ; =SentrySetExitingState
|
|
bx ip
|
|
.align 2, 0
|
|
_0238C3DC: .word SentrySetExitingState
|
|
arm_func_end SentryStateExit
|
|
|
|
arm_func_start SentryState6
|
|
SentryState6: ; 0x0238C3E0
|
|
ldr r0, _0238C400 ; =SENTRY_DUTY_PTR
|
|
mov r3, #3
|
|
ldr r2, [r0]
|
|
mov r1, #7
|
|
str r3, [r2, #0x118]
|
|
ldr r0, [r0]
|
|
str r1, [r0, #0x110]
|
|
bx lr
|
|
.align 2, 0
|
|
_0238C400: .word SENTRY_DUTY_PTR
|
|
arm_func_end SentryState6
|
|
|
|
arm_func_start SentryState7
|
|
SentryState7: ; 0x0238C404
|
|
ldr r0, _0238C418 ; =SENTRY_DUTY_PTR
|
|
mov r1, #8
|
|
ldr r0, [r0]
|
|
str r1, [r0, #0x110]
|
|
bx lr
|
|
.align 2, 0
|
|
_0238C418: .word SENTRY_DUTY_PTR
|
|
arm_func_end SentryState7
|
|
|
|
arm_func_start SentryState8
|
|
SentryState8: ; 0x0238C41C
|
|
ldr r0, _0238C43C ; =SENTRY_DUTY_PTR
|
|
mov r3, #3
|
|
ldr r2, [r0]
|
|
mov r1, #9
|
|
str r3, [r2, #0x118]
|
|
ldr r0, [r0]
|
|
str r1, [r0, #0x110]
|
|
bx lr
|
|
.align 2, 0
|
|
_0238C43C: .word SENTRY_DUTY_PTR
|
|
arm_func_end SentryState8
|
|
|
|
arm_func_start SentryState9
|
|
SentryState9: ; 0x0238C440
|
|
ldr r0, _0238C460 ; =SENTRY_DUTY_PTR
|
|
mov r3, #2
|
|
ldr r2, [r0]
|
|
mov r1, #0xc
|
|
str r3, [r2, #0x118]
|
|
ldr r0, [r0]
|
|
str r1, [r0, #0x110]
|
|
bx lr
|
|
.align 2, 0
|
|
_0238C460: .word SENTRY_DUTY_PTR
|
|
arm_func_end SentryState9
|
|
|
|
arm_func_start SentryStateA
|
|
SentryStateA: ; 0x0238C464
|
|
ldr r0, _0238C478 ; =SENTRY_DUTY_PTR
|
|
mov r1, #0xb
|
|
ldr r0, [r0]
|
|
str r1, [r0, #0x110]
|
|
bx lr
|
|
.align 2, 0
|
|
_0238C478: .word SENTRY_DUTY_PTR
|
|
arm_func_end SentryStateA
|
|
|
|
arm_func_start SentryStateB
|
|
SentryStateB: ; 0x0238C47C
|
|
ldr r0, _0238C490 ; =SENTRY_DUTY_PTR
|
|
mov r1, #0xc
|
|
ldr r0, [r0]
|
|
str r1, [r0, #0x110]
|
|
bx lr
|
|
.align 2, 0
|
|
_0238C490: .word SENTRY_DUTY_PTR
|
|
arm_func_end SentryStateB
|
|
|
|
arm_func_start SentryStateGenerateChoices
|
|
SentryStateGenerateChoices: ; 0x0238C494
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x20
|
|
ldr r0, _0238CA54 ; =SENTRY_DUTY_PTR
|
|
ldr r1, _0238CA58 ; =0x000003FA
|
|
ldr r0, [r0]
|
|
str r1, [r0, #0x118]
|
|
bl GetHero
|
|
mov r6, r0
|
|
bl GetPartner
|
|
ldr r2, _0238CA54 ; =SENTRY_DUTY_PTR
|
|
mov r5, r0
|
|
ldr r1, [r2]
|
|
mov r0, #0
|
|
add r1, r1, #0x3000
|
|
str r0, [r1, #0x878]
|
|
ldr r1, [r2]
|
|
ldr r3, _0238CA5C ; =0x000005DC
|
|
add r2, r1, #0x3000
|
|
mov r1, #4
|
|
str r3, [r2, #0x894]
|
|
bl RandRange
|
|
ldr r2, _0238CA54 ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x3000
|
|
str r0, [r1, #0x888]
|
|
ldr r1, [r2]
|
|
mov r0, #0
|
|
add r1, r1, #0x3000
|
|
strb r0, [r1, #0x89d]
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x3000
|
|
strb r0, [r1, #0x89e]
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x3000
|
|
strb r0, [r1, #0x89f]
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x3000
|
|
strb r0, [r1, #0x8a0]
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x3000
|
|
strb r0, [r1, #0x871]
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x3000
|
|
str r0, [r1, #0x874]
|
|
bl ov14_0238AC04
|
|
mov r0, #0
|
|
mov r1, #4
|
|
bl RandRange
|
|
ldr r1, _0238CA54 ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r1]
|
|
add r1, r1, #0x3000
|
|
str r0, [r1, #0x87c]
|
|
_0238C564:
|
|
mov r0, #0
|
|
mov r1, #0x65
|
|
bl RandRange
|
|
ldr r2, _0238CA54 ; =SENTRY_DUTY_PTR
|
|
ldr r3, _0238CA60 ; =SENTRY_DUTY_MONSTER_IDS
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x3000
|
|
str r0, [r1, #0x880]
|
|
ldr r4, [r2]
|
|
add r0, r4, #0x3000
|
|
ldr r1, [r0, #0x880]
|
|
ldr r0, [r0, #0x87c]
|
|
mov r1, r1, lsl #1
|
|
add r0, r4, r0, lsl #1
|
|
ldrsh r1, [r3, r1]
|
|
add r0, r0, #0x3800
|
|
strh r1, [r0, #0xa2]
|
|
ldrsh r0, [r6, #4]
|
|
ldr r4, [r2]
|
|
bl FemaleToMaleForm
|
|
add r1, r4, #0x3000
|
|
ldr r1, [r1, #0x87c]
|
|
add r1, r4, r1, lsl #1
|
|
add r1, r1, #0x3800
|
|
ldrsh r1, [r1, #0xa2]
|
|
cmp r1, r0
|
|
beq _0238C564
|
|
ldr r1, _0238CA54 ; =SENTRY_DUTY_PTR
|
|
ldrsh r0, [r5, #4]
|
|
ldr r2, [r1]
|
|
add r1, r2, #0x3000
|
|
ldr r1, [r1, #0x87c]
|
|
add r1, r2, r1, lsl #1
|
|
add r1, r1, #0x3800
|
|
ldrsh r4, [r1, #0xa2]
|
|
bl FemaleToMaleForm
|
|
cmp r4, r0
|
|
ldrne r0, _0238CA64 ; =0x00000119
|
|
cmpne r4, r0
|
|
beq _0238C564
|
|
ldr r0, _0238CA54 ; =SENTRY_DUTY_PTR
|
|
mov r8, #0
|
|
ldr r4, [r0]
|
|
add r2, r4, #0x3000
|
|
ldr r0, [r2, #0x884]
|
|
b _0238C640
|
|
_0238C61C:
|
|
add r1, r4, r8, lsl #2
|
|
add r1, r1, #0x3000
|
|
ldr r3, [r2, #0x880]
|
|
ldr r1, [r1, #0x8b8]
|
|
cmp r3, r1
|
|
beq _0238C648
|
|
add r1, r8, #1
|
|
mov r1, r1, lsl #0x10
|
|
mov r8, r1, asr #0x10
|
|
_0238C640:
|
|
cmp r8, r0
|
|
blt _0238C61C
|
|
_0238C648:
|
|
cmp r8, r0
|
|
blt _0238C564
|
|
ldr r1, _0238CA54 ; =SENTRY_DUTY_PTR
|
|
mov sb, #0
|
|
ldr r2, [r1]
|
|
add r1, r2, #0x3000
|
|
add r0, r2, r0, lsl #2
|
|
ldr r1, [r1, #0x880]
|
|
add r0, r0, #0x3000
|
|
str r1, [r0, #0x8b8]
|
|
_0238C670:
|
|
ldr sl, _0238CA54 ; =SENTRY_DUTY_PTR
|
|
ldr r0, [sl]
|
|
add r0, r0, #0x3000
|
|
ldr r0, [r0, #0x87c]
|
|
cmp sb, r0
|
|
beq _0238C72C
|
|
ldr r4, _0238CA60 ; =SENTRY_DUTY_MONSTER_IDS
|
|
ldr fp, _0238CA64 ; =0x00000119
|
|
_0238C690:
|
|
mov r0, #0
|
|
mov r1, #0x65
|
|
bl RandRange
|
|
mov r0, r0, lsl #1
|
|
ldrsh r8, [r4, r0]
|
|
ldrsh r0, [r6, #4]
|
|
bl FemaleToMaleForm
|
|
cmp r8, r0
|
|
beq _0238C690
|
|
ldrsh r0, [r5, #4]
|
|
bl FemaleToMaleForm
|
|
cmp r8, r0
|
|
cmpne r8, fp
|
|
beq _0238C690
|
|
ldr r1, [sl]
|
|
add r0, r1, #0x3000
|
|
ldr r0, [r0, #0x87c]
|
|
add r0, r1, r0, lsl #1
|
|
add r0, r0, #0x3800
|
|
ldrsh r0, [r0, #0xa2]
|
|
cmp r8, r0
|
|
beq _0238C690
|
|
mov r0, #0
|
|
b _0238C710
|
|
_0238C6F0:
|
|
add r2, r1, r0, lsl #1
|
|
add r2, r2, #0x3800
|
|
ldrsh r2, [r2, #0xa2]
|
|
cmp r8, r2
|
|
beq _0238C718
|
|
add r0, r0, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
_0238C710:
|
|
cmp r0, sb
|
|
blt _0238C6F0
|
|
_0238C718:
|
|
cmp r0, sb
|
|
blt _0238C690
|
|
add r0, r1, sb, lsl #1
|
|
add r0, r0, #0x3800
|
|
strh r8, [r0, #0xa2]
|
|
_0238C72C:
|
|
add r0, sb, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov sb, r0, asr #0x10
|
|
cmp sb, #4
|
|
blt _0238C670
|
|
ldr r0, _0238CA68 ; =ov14_0238DB2C
|
|
bl Debug_Print0
|
|
ldr r1, _0238CA54 ; =SENTRY_DUTY_PTR
|
|
ldr r0, _0238CA6C ; =ov14_0238DB44
|
|
ldr r1, [r1]
|
|
add r1, r1, #0x3000
|
|
ldr r1, [r1, #0x880]
|
|
bl Debug_Print0
|
|
ldr r1, _0238CA54 ; =SENTRY_DUTY_PTR
|
|
ldr r0, _0238CA70 ; =ov14_0238DB58
|
|
ldr r1, [r1]
|
|
add r1, r1, #0x3000
|
|
ldr r1, [r1, #0x87c]
|
|
bl Debug_Print0
|
|
ldr r0, _0238CA54 ; =SENTRY_DUTY_PTR
|
|
ldr r2, _0238CA74 ; =0x880A0000
|
|
ldr r3, [r0]
|
|
add r0, r3, #0x3000
|
|
ldr r1, [r0, #0x880]
|
|
add r0, r3, #0x3a8
|
|
add r1, r1, #1
|
|
mov r1, r1, lsl #0x10
|
|
add r0, r0, #0x3000
|
|
mov r1, r1, asr #0x10
|
|
bl ov11_022F6FE0
|
|
ldr r0, _0238CA54 ; =SENTRY_DUTY_PTR
|
|
ldr r1, _0238CA78 ; =0x00001001
|
|
ldr r0, [r0]
|
|
mov r2, #0
|
|
add r0, r0, #0x3a8
|
|
add r0, r0, #0x3000
|
|
bl SetAnimDataFields2
|
|
ldr r0, _0238CA54 ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
add r0, r1, #0x6c
|
|
add r0, r0, #0x3400
|
|
add r1, r1, #0x1e4
|
|
bl InitAnimDataFromOtherAnimDataVeneer
|
|
ldr r0, _0238CA54 ; =SENTRY_DUTY_PTR
|
|
ldr r1, _0238CA7C ; =0x00001003
|
|
ldr r0, [r0]
|
|
mov r2, #0
|
|
add r0, r0, #0x6c
|
|
add r0, r0, #0x3400
|
|
bl SetAnimDataFields2
|
|
ldr r1, _0238CA54 ; =SENTRY_DUTY_PTR
|
|
mov r2, #0x60
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x3000
|
|
str r2, [r0, #0x8b0]
|
|
ldr r1, [r1]
|
|
add r0, r1, #0x1b4
|
|
add r0, r0, #0x2800
|
|
add r1, r1, #0x120
|
|
bl InitAnimDataFromOtherAnimDataVeneer
|
|
ldr r0, _0238CA54 ; =SENTRY_DUTY_PTR
|
|
ldr r1, _0238CA80 ; =0x48140000
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x1b4
|
|
add r0, r0, #0x2800
|
|
bl SetAnimDataFieldsWrapper
|
|
ldr r0, _0238CA54 ; =SENTRY_DUTY_PTR
|
|
mov r1, #0x800
|
|
ldr r0, [r0]
|
|
mov r2, #0
|
|
add r0, r0, #0x1b4
|
|
add r0, r0, #0x2800
|
|
bl SetAnimDataFields2
|
|
ldr r4, _0238CA54 ; =SENTRY_DUTY_PTR
|
|
mov sb, #0
|
|
ldr r0, [r4]
|
|
ldr r1, _0238CA84 ; =ov14_0238D970
|
|
add r0, r0, #0x3000
|
|
str sb, [r0, #0x53c]
|
|
ldr r0, [r4]
|
|
mov fp, #1
|
|
add r0, r0, #0x3000
|
|
str sb, [r0, #0x540]
|
|
ldr r6, [r1]
|
|
ldr r5, [r1, #4]
|
|
str r6, [sp]
|
|
str r5, [sp, #4]
|
|
mvn sl, #1
|
|
_0238C88C:
|
|
mov r0, #0xc4
|
|
mul r8, sb, r0
|
|
ldr r1, [r4]
|
|
ldr r2, _0238CA88 ; =0x08120000
|
|
add r0, r1, #0x278
|
|
add r1, r1, sb, lsl #1
|
|
add r1, r1, #0x3800
|
|
add r0, r0, #0x2800
|
|
ldrsh r1, [r1, #0xa2]
|
|
add r0, r0, r8
|
|
bl ov11_022F5BBC
|
|
ldr r0, [r4]
|
|
ldr r1, _0238CA8C ; =0x00000807
|
|
add r0, r0, #0x278
|
|
add r0, r0, #0x2800
|
|
add r0, r0, r8
|
|
mov r2, #7
|
|
bl SetAnimDataFields2
|
|
ldr r1, [r4]
|
|
add r0, r1, #0x188
|
|
add r0, r0, #0x2c00
|
|
add r0, r0, r8
|
|
add r1, r1, #0x120
|
|
bl InitAnimDataFromOtherAnimDataVeneer
|
|
ldr r0, [r4]
|
|
ldr r1, _0238CA80 ; =0x48140000
|
|
add r0, r0, #0x188
|
|
add r0, r0, #0x2c00
|
|
add r0, r0, r8
|
|
bl SetAnimDataFieldsWrapper
|
|
ldr r0, [r4]
|
|
add r0, r0, sb, lsl #2
|
|
add r0, r0, #0x3000
|
|
str fp, [r0, #0x544]
|
|
ldr r0, [r4]
|
|
add r0, r0, sb, lsl #2
|
|
add r0, r0, #0x3000
|
|
str fp, [r0, #0x554]
|
|
ldr r1, [r4]
|
|
add r0, r1, #0x98
|
|
add r0, r0, #0x3000
|
|
add r0, r0, r8
|
|
add r1, r1, #0x120
|
|
bl InitAnimDataFromOtherAnimDataVeneer
|
|
cmp sb, #3
|
|
addls pc, pc, sb, lsl #2
|
|
b _0238C984
|
|
_0238C948: ; jump table
|
|
b _0238C958 ; case 0
|
|
b _0238C964 ; case 1
|
|
b _0238C970 ; case 2
|
|
b _0238C97C ; case 3
|
|
_0238C958:
|
|
ldr r0, [r4]
|
|
ldrsb r7, [r0, #6]
|
|
b _0238C984
|
|
_0238C964:
|
|
ldr r0, [r4]
|
|
ldrsb r7, [r0, #7]
|
|
b _0238C984
|
|
_0238C970:
|
|
ldr r0, [r4]
|
|
ldrsb r7, [r0, #8]
|
|
b _0238C984
|
|
_0238C97C:
|
|
ldr r0, [r4]
|
|
ldrsb r7, [r0, #9]
|
|
_0238C984:
|
|
cmp r7, sl
|
|
beq _0238C9C0
|
|
add r0, sp, #0x10
|
|
str r6, [sp, #8]
|
|
str r5, [sp, #0xc]
|
|
bl InitPortraitParams
|
|
add r0, sp, #0x10
|
|
mov r1, #3
|
|
bl SetPortraitLayout
|
|
add r0, sp, #0x10
|
|
add r1, sp, #8
|
|
bl SetPortraitOffset
|
|
mov r0, r7
|
|
add r1, sp, #0x10
|
|
bl ShowPortraitInPortraitBox
|
|
_0238C9C0:
|
|
add r0, sb, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov sb, r0, asr #0x10
|
|
cmp sb, #4
|
|
blt _0238C88C
|
|
ldr r0, _0238CA54 ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0, #4]
|
|
bl ov14_0238AD04
|
|
ldr r0, _0238CA54 ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0, #5]
|
|
bl ov14_0238AD04
|
|
ldr r0, _0238CA54 ; =SENTRY_DUTY_PTR
|
|
mvn r1, #1
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0, #3]
|
|
cmp r0, r1
|
|
beq _0238CA10
|
|
bl ClearWindow
|
|
_0238CA10:
|
|
ldr r1, _0238CA54 ; =SENTRY_DUTY_PTR
|
|
ldr r0, _0238CA90 ; =0x00002C04
|
|
ldr r1, [r1]
|
|
mov r2, #1
|
|
add r1, r1, #0x3000
|
|
strb r2, [r1, #0x870]
|
|
bl PlaySeByIdVolumeWrapper
|
|
ldr r1, _0238CA54 ; =SENTRY_DUTY_PTR
|
|
mov r3, #2
|
|
ldr r0, [r1]
|
|
mov r2, #0xd
|
|
add r0, r0, #0x3000
|
|
str r3, [r0, #0x538]
|
|
ldr r0, [r1]
|
|
str r2, [r0, #0x110]
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_0238CA54: .word SENTRY_DUTY_PTR
|
|
_0238CA58: .word 0x000003FA
|
|
_0238CA5C: .word 0x000005DC
|
|
_0238CA60: .word SENTRY_DUTY_MONSTER_IDS
|
|
_0238CA64: .word 0x00000119
|
|
_0238CA68: .word ov14_0238DB2C
|
|
_0238CA6C: .word ov14_0238DB44
|
|
_0238CA70: .word ov14_0238DB58
|
|
_0238CA74: .word 0x880A0000
|
|
_0238CA78: .word 0x00001001
|
|
_0238CA7C: .word 0x00001003
|
|
_0238CA80: .word 0x48140000
|
|
_0238CA84: .word ov14_0238D970
|
|
_0238CA88: .word 0x08120000
|
|
_0238CA8C: .word 0x00000807
|
|
_0238CA90: .word 0x00002C04
|
|
arm_func_end SentryStateGenerateChoices
|
|
|
|
arm_func_start SentryStateGetUserChoice
|
|
SentryStateGetUserChoice: ; 0x0238CA94
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
sub sp, sp, #0x38
|
|
ldr r2, _0238CFA4 ; =SENTRY_DUTY_PTR
|
|
mov r1, #0x3c
|
|
ldr r0, [r2]
|
|
add r0, r0, #0x3000
|
|
ldr r3, [r0, #0x874]
|
|
add r3, r3, #1
|
|
str r3, [r0, #0x874]
|
|
ldr r0, [r2]
|
|
add r0, r0, #0x3000
|
|
ldr r3, [r0, #0x894]
|
|
sub r3, r3, #1
|
|
str r3, [r0, #0x894]
|
|
ldr r0, [r2]
|
|
add r0, r0, #0x3000
|
|
ldr r0, [r0, #0x874]
|
|
bl _s32_div_f
|
|
mov r0, r0, lsl #0x10
|
|
mov r8, r0, asr #0x10
|
|
mov r1, r8, lsr #0x1f
|
|
rsb r0, r1, r8, lsl #28
|
|
add r0, r1, r0, ror #28
|
|
bl ov14_0238AC04
|
|
ldr r0, _0238CFA4 ; =SENTRY_DUTY_PTR
|
|
mov r1, #0x3c
|
|
ldr r4, [r0]
|
|
add r0, r4, #0x3000
|
|
ldr r0, [r0, #0x874]
|
|
bl _s32_div_f
|
|
cmp r0, #0x10
|
|
bge _0238CDE0
|
|
mov r4, #0
|
|
add r1, sp, #2
|
|
mov r0, r4
|
|
bl sub_020063F4
|
|
add r1, sp, #0
|
|
mov r0, r4
|
|
bl GetPressedButtons
|
|
bl IsTouchScreenNotOff
|
|
cmp r0, #0
|
|
beq _0238CBCC
|
|
add r0, sp, #4
|
|
bl GetReleasedStylus
|
|
ldrh r0, [sp, #4]
|
|
tst r0, #2
|
|
beq _0238CBCC
|
|
ldr r2, [sp, #8]
|
|
ldr r3, [sp, #0xc]
|
|
mov r1, r4
|
|
ldr r0, _0238CFA8 ; =ov14_0238DA20
|
|
b _0238CBC4
|
|
_0238CB64:
|
|
ldr r6, [r0, r1, lsl #3]
|
|
sub r5, r6, #0x38
|
|
cmp r2, r5
|
|
blt _0238CBB8
|
|
add r5, r6, #0x40
|
|
cmp r2, r5
|
|
bgt _0238CBB8
|
|
add r5, r0, r1, lsl #3
|
|
ldr r6, [r5, #4]
|
|
sub r5, r6, #0x20
|
|
cmp r3, r5
|
|
blt _0238CBB8
|
|
add r5, r6, #0x28
|
|
cmp r3, r5
|
|
bgt _0238CBB8
|
|
ldr r0, _0238CFA4 ; =SENTRY_DUTY_PTR
|
|
mov r4, #1
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
str r1, [r0, #0x878]
|
|
b _0238CBCC
|
|
_0238CBB8:
|
|
add r1, r1, #1
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, asr #0x10
|
|
_0238CBC4:
|
|
cmp r1, #4
|
|
blt _0238CB64
|
|
_0238CBCC:
|
|
cmp r4, #0
|
|
bne _0238CBEC
|
|
ldrh r0, [sp]
|
|
tst r0, #1
|
|
movne r0, #0
|
|
strneh r0, [sp, #2]
|
|
strneh r0, [sp]
|
|
movne r4, #1
|
|
_0238CBEC:
|
|
cmp r4, #0
|
|
beq _0238CCCC
|
|
ldr r1, _0238CFA4 ; =SENTRY_DUTY_PTR
|
|
ldr r0, _0238CFAC ; =0x00003F02
|
|
ldr r1, [r1]
|
|
mov r2, #0
|
|
add r1, r1, #0x3000
|
|
str r2, [r1, #0x8ac]
|
|
bl PlaySeByIdVolumeWrapper
|
|
ldr r2, _0238CFA4 ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r2]
|
|
add r0, r1, #0x3000
|
|
ldr r0, [r0, #0x878]
|
|
add r0, r1, r0, lsl #1
|
|
add r0, r0, #0x3800
|
|
ldrsh r0, [r0, #0xa2]
|
|
str r0, [r1, #0xa4]
|
|
ldr r4, [r2]
|
|
add r1, r4, #0x3000
|
|
ldr r3, [r1, #0x878]
|
|
ldr r0, [r1, #0x87c]
|
|
cmp r3, r0
|
|
bne _0238CC5C
|
|
mov r2, #5
|
|
mov r0, #0x19
|
|
str r2, [r1, #0x538]
|
|
bl SentrySetStateIntermediate
|
|
b _0238CCE0
|
|
_0238CC5C:
|
|
add r0, r4, r3, lsl #2
|
|
add r0, r0, #0x3000
|
|
ldr r0, [r0, #0x554]
|
|
cmp r0, #3
|
|
bne _0238CC7C
|
|
ldr r0, _0238CFB0 ; =0x00003F03
|
|
bl PlaySeByIdVolumeWrapper
|
|
b _0238CCE0
|
|
_0238CC7C:
|
|
ldr r0, [r1, #0x898]
|
|
cmp r0, #0
|
|
ble _0238CCB8
|
|
mov r0, #4
|
|
str r0, [r1, #0x538]
|
|
ldr r3, [r2]
|
|
mov r2, #3
|
|
add r0, r3, #0x3000
|
|
ldr r1, [r0, #0x878]
|
|
mov r0, #0x10
|
|
add r1, r3, r1, lsl #2
|
|
add r1, r1, #0x3000
|
|
str r2, [r1, #0x554]
|
|
bl SentrySetStateIntermediate
|
|
b _0238CCE0
|
|
_0238CCB8:
|
|
mov r2, #5
|
|
mov r0, #0x14
|
|
str r2, [r1, #0x538]
|
|
bl SentrySetStateIntermediate
|
|
b _0238CCE0
|
|
_0238CCCC:
|
|
ldr r0, _0238CFA4 ; =SENTRY_DUTY_PTR
|
|
mov r1, #3
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
str r1, [r0, #0x538]
|
|
_0238CCE0:
|
|
ldrh r0, [sp, #2]
|
|
tst r0, #0xf0
|
|
beq _0238CCF4
|
|
ldr r0, _0238CFB4 ; =0x00003F01
|
|
bl PlaySeByIdVolumeWrapper
|
|
_0238CCF4:
|
|
ldr r0, _0238CFA4 ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
ldr r1, [r0, #0x878]
|
|
cmp r1, #3
|
|
addls pc, pc, r1, lsl #2
|
|
b _0238CF14
|
|
_0238CD10: ; jump table
|
|
b _0238CD20 ; case 0
|
|
b _0238CD50 ; case 1
|
|
b _0238CD80 ; case 2
|
|
b _0238CDB0 ; case 3
|
|
_0238CD20:
|
|
ldrh r2, [sp, #2]
|
|
tst r2, #0x80
|
|
movne r1, #2
|
|
strne r1, [r0, #0x878]
|
|
tst r2, #0x10
|
|
beq _0238CF14
|
|
ldr r0, _0238CFA4 ; =SENTRY_DUTY_PTR
|
|
mov r1, #1
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
str r1, [r0, #0x878]
|
|
b _0238CF14
|
|
_0238CD50:
|
|
ldrh r2, [sp, #2]
|
|
tst r2, #0x80
|
|
movne r1, #3
|
|
strne r1, [r0, #0x878]
|
|
tst r2, #0x20
|
|
beq _0238CF14
|
|
ldr r0, _0238CFA4 ; =SENTRY_DUTY_PTR
|
|
mov r1, #0
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
str r1, [r0, #0x878]
|
|
b _0238CF14
|
|
_0238CD80:
|
|
ldrh r2, [sp, #2]
|
|
tst r2, #0x40
|
|
movne r1, #0
|
|
strne r1, [r0, #0x878]
|
|
tst r2, #0x10
|
|
beq _0238CF14
|
|
ldr r0, _0238CFA4 ; =SENTRY_DUTY_PTR
|
|
mov r1, #3
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
str r1, [r0, #0x878]
|
|
b _0238CF14
|
|
_0238CDB0:
|
|
ldrh r2, [sp, #2]
|
|
tst r2, #0x40
|
|
movne r1, #1
|
|
strne r1, [r0, #0x878]
|
|
tst r2, #0x20
|
|
beq _0238CF14
|
|
ldr r0, _0238CFA4 ; =SENTRY_DUTY_PTR
|
|
mov r1, #2
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
str r1, [r0, #0x878]
|
|
b _0238CF14
|
|
_0238CDE0:
|
|
add r0, r4, #0x3000
|
|
mov r2, #1
|
|
ldr r1, _0238CFA4 ; =SENTRY_DUTY_PTR
|
|
strb r2, [r0, #0x871]
|
|
ldr r0, [r1]
|
|
mov r2, #2
|
|
add r1, r0, #0x3000
|
|
mov r0, #0x12
|
|
str r2, [r1, #0x538]
|
|
bl SentrySetStateIntermediate
|
|
b _0238CF14
|
|
_0238CE0C:
|
|
ldr r4, _0238CFA4 ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r4]
|
|
add r0, r0, #0x3000
|
|
ldrb r1, [r0, #0x89d]
|
|
cmp r1, #0
|
|
bne _0238CF1C
|
|
mov r1, #1
|
|
strb r1, [r0, #0x89d]
|
|
ldr r0, [r4]
|
|
mov sb, #0
|
|
mov r1, #2
|
|
add r0, r0, #0x3000
|
|
ldr r6, _0238CFB8 ; =ov14_0238D96C
|
|
ldr r5, _0238CFBC ; =ov14_0238DA80
|
|
str r1, [r0, #0x540]
|
|
add r7, sp, #0x28
|
|
mov sl, sb
|
|
_0238CE50:
|
|
mov r0, r7
|
|
bl InitPortraitParams
|
|
ldr r1, [r4]
|
|
mov r0, r7
|
|
add r1, r1, sb, lsl #1
|
|
add r1, r1, #0x3800
|
|
ldrsh r1, [r1, #0xa2]
|
|
bl InitPortraitParamsWithMonsterId
|
|
ldrb r1, [r6, sb]
|
|
mov r0, r7
|
|
bl SetPortraitLayout
|
|
mov r0, r7
|
|
add r1, r5, sb, lsl #3
|
|
bl SetPortraitOffset
|
|
mov r0, r7
|
|
mov r1, sl
|
|
bl SetPortraitEmotion
|
|
cmp sb, #3
|
|
addls pc, pc, sb, lsl #2
|
|
b _0238CEFC
|
|
_0238CEA0: ; jump table
|
|
b _0238CEB0 ; case 0
|
|
b _0238CEC4 ; case 1
|
|
b _0238CED8 ; case 2
|
|
b _0238CEEC ; case 3
|
|
_0238CEB0:
|
|
ldr r0, [r4]
|
|
mov r1, r7
|
|
ldrsb r0, [r0, #6]
|
|
bl ShowPortraitInPortraitBox
|
|
b _0238CEFC
|
|
_0238CEC4:
|
|
ldr r0, [r4]
|
|
mov r1, r7
|
|
ldrsb r0, [r0, #7]
|
|
bl ShowPortraitInPortraitBox
|
|
b _0238CEFC
|
|
_0238CED8:
|
|
ldr r0, [r4]
|
|
mov r1, r7
|
|
ldrsb r0, [r0, #8]
|
|
bl ShowPortraitInPortraitBox
|
|
b _0238CEFC
|
|
_0238CEEC:
|
|
ldr r0, [r4]
|
|
mov r1, r7
|
|
ldrsb r0, [r0, #9]
|
|
bl ShowPortraitInPortraitBox
|
|
_0238CEFC:
|
|
add r0, sb, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov sb, r0, asr #0x10
|
|
cmp sb, #4
|
|
blt _0238CE50
|
|
b _0238CF1C
|
|
_0238CF14:
|
|
cmp r8, #2
|
|
bge _0238CE0C
|
|
_0238CF1C:
|
|
cmp r8, #5
|
|
blt _0238CF5C
|
|
ldr r0, _0238CFA4 ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
ldrb r0, [r0, #0x89e]
|
|
cmp r0, #0
|
|
bne _0238CF5C
|
|
bl ov14_0238AC40
|
|
ldr r0, _0238CFC0 ; =0x00002C06
|
|
bl PlaySeByIdVolumeWrapper
|
|
ldr r0, _0238CFA4 ; =SENTRY_DUTY_PTR
|
|
mov r1, #1
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
strb r1, [r0, #0x89e]
|
|
_0238CF5C:
|
|
cmp r8, #0xb
|
|
blt _0238CF9C
|
|
ldr r0, _0238CFA4 ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
ldrb r0, [r0, #0x89f]
|
|
cmp r0, #0
|
|
bne _0238CF9C
|
|
bl ov14_0238AC40
|
|
ldr r0, _0238CFC0 ; =0x00002C06
|
|
bl PlaySeByIdVolumeWrapper
|
|
ldr r0, _0238CFA4 ; =SENTRY_DUTY_PTR
|
|
mov r1, #1
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
strb r1, [r0, #0x89f]
|
|
_0238CF9C:
|
|
add sp, sp, #0x38
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
.align 2, 0
|
|
_0238CFA4: .word SENTRY_DUTY_PTR
|
|
_0238CFA8: .word ov14_0238DA20
|
|
_0238CFAC: .word 0x00003F02
|
|
_0238CFB0: .word 0x00003F03
|
|
_0238CFB4: .word 0x00003F01
|
|
_0238CFB8: .word ov14_0238D96C
|
|
_0238CFBC: .word ov14_0238DA80
|
|
_0238CFC0: .word 0x00002C06
|
|
arm_func_end SentryStateGetUserChoice
|
|
|
|
arm_func_start SentryStateFinalizeRound
|
|
SentryStateFinalizeRound: ; 0x0238CFC4
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x20
|
|
ldr r2, _0238D2FC ; =SENTRY_DUTY_PTR
|
|
mov r0, #0
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x3000
|
|
ldrb r4, [r1, #0x870]
|
|
strb r0, [r1, #0x870]
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x3000
|
|
ldr r3, [r1, #0x884]
|
|
add r3, r3, #1
|
|
str r3, [r1, #0x884]
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x3000
|
|
str r0, [r1, #0x874]
|
|
ldr r1, [r2]
|
|
add r1, r1, #0x3000
|
|
strb r0, [r1, #0x871]
|
|
bl ov14_0238AC04
|
|
cmp r4, #0
|
|
beq _0238D078
|
|
ldr r0, _0238D2FC ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3a8
|
|
add r0, r0, #0x3000
|
|
bl ov11_022F7058
|
|
ldr r0, _0238D2FC ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x6c
|
|
add r0, r0, #0x3400
|
|
bl ov11_022F6EFC
|
|
ldr r1, _0238D2FC ; =SENTRY_DUTY_PTR
|
|
mov r3, #1
|
|
ldr r0, [r1]
|
|
mov r2, #0
|
|
add r0, r0, #0x3000
|
|
str r3, [r0, #0x534]
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x3000
|
|
str r2, [r0, #0x538]
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x1b4
|
|
add r0, r0, #0x2800
|
|
bl ov11_022F6EFC
|
|
_0238D078:
|
|
ldr r0, _0238D300 ; =ov14_0238D970
|
|
ldr r4, _0238D2FC ; =SENTRY_DUTY_PTR
|
|
ldr r6, [r0, #8]
|
|
ldr r5, [r0, #0xc]
|
|
mov r7, #0
|
|
str r6, [sp]
|
|
str r5, [sp, #4]
|
|
mvn sl, #1
|
|
mov fp, #0xc4
|
|
_0238D09C:
|
|
ldr r0, [r4]
|
|
smulbb sb, r7, fp
|
|
add r0, r0, #0x278
|
|
add r0, r0, #0x2800
|
|
add r0, r0, sb
|
|
bl ov11_022F6EFC
|
|
ldr r0, [r4]
|
|
add r0, r0, #0x188
|
|
add r0, r0, #0x2c00
|
|
add r0, r0, sb
|
|
bl ov11_022F6EFC
|
|
ldr r0, [r4]
|
|
add r0, r0, #0x98
|
|
add r0, r0, #0x3000
|
|
add r0, r0, sb
|
|
bl ov11_022F6EFC
|
|
cmp r7, #3
|
|
addls pc, pc, r7, lsl #2
|
|
b _0238D124
|
|
_0238D0E8: ; jump table
|
|
b _0238D0F8 ; case 0
|
|
b _0238D104 ; case 1
|
|
b _0238D110 ; case 2
|
|
b _0238D11C ; case 3
|
|
_0238D0F8:
|
|
ldr r0, [r4]
|
|
ldrsb r8, [r0, #6]
|
|
b _0238D124
|
|
_0238D104:
|
|
ldr r0, [r4]
|
|
ldrsb r8, [r0, #7]
|
|
b _0238D124
|
|
_0238D110:
|
|
ldr r0, [r4]
|
|
ldrsb r8, [r0, #8]
|
|
b _0238D124
|
|
_0238D11C:
|
|
ldr r0, [r4]
|
|
ldrsb r8, [r0, #9]
|
|
_0238D124:
|
|
cmp r8, sl
|
|
beq _0238D160
|
|
add r0, sp, #0x10
|
|
str r6, [sp, #8]
|
|
str r5, [sp, #0xc]
|
|
bl InitPortraitParams
|
|
add r0, sp, #0x10
|
|
mov r1, #3
|
|
bl SetPortraitLayout
|
|
add r0, sp, #0x10
|
|
add r1, sp, #8
|
|
bl SetPortraitOffset
|
|
mov r0, r8
|
|
add r1, sp, #0x10
|
|
bl ShowPortraitInPortraitBox
|
|
_0238D160:
|
|
add r0, r7, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r7, r0, asr #0x10
|
|
cmp r7, #4
|
|
blt _0238D09C
|
|
ldr r0, _0238D2FC ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0, #4]
|
|
bl ClearWindow
|
|
ldr r0, _0238D2FC ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0, #4]
|
|
bl UpdateWindow
|
|
ldr r0, _0238D2FC ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0, #5]
|
|
bl ClearWindow
|
|
ldr r0, _0238D2FC ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
ldrsb r0, [r0, #5]
|
|
bl UpdateWindow
|
|
ldr r1, _0238D2FC ; =SENTRY_DUTY_PTR
|
|
ldr r3, [r1]
|
|
add r0, r3, #0x3000
|
|
ldr r2, [r0, #0x884]
|
|
cmp r2, #6
|
|
movlt r0, #0xf
|
|
strlt r0, [r3, #0x110]
|
|
blt _0238D2F4
|
|
mov r2, #0
|
|
str r2, [r0, #0x8ac]
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x3000
|
|
ldr r0, [r0, #0x88c]
|
|
bl SetSentryDutyGamePoints
|
|
cmp r0, #0
|
|
beq _0238D25C
|
|
ldr r1, _0238D2FC ; =SENTRY_DUTY_PTR
|
|
mov r2, #0
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x3000
|
|
str r2, [r0, #0x890]
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x3000
|
|
ldr r1, [r0, #0x88c]
|
|
cmp r1, #0xfa0
|
|
movgt r1, #1
|
|
strgt r1, [r0, #0x890]
|
|
ldr r0, _0238D2FC ; =SENTRY_DUTY_PTR
|
|
ldr r1, _0238D304 ; =0x00001B58
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
ldr r2, [r0, #0x88c]
|
|
cmp r2, r1
|
|
movgt r1, #2
|
|
strgt r1, [r0, #0x890]
|
|
ldr r0, _0238D2FC ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
ldrb r1, [r0, #0x89c]
|
|
cmp r1, #0
|
|
movne r1, #3
|
|
b _0238D2C0
|
|
_0238D25C:
|
|
ldr r1, _0238D2FC ; =SENTRY_DUTY_PTR
|
|
mov r2, #4
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x3000
|
|
str r2, [r0, #0x890]
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x3000
|
|
ldr r1, [r0, #0x88c]
|
|
cmp r1, #0xfa0
|
|
movgt r1, #5
|
|
strgt r1, [r0, #0x890]
|
|
ldr r0, _0238D2FC ; =SENTRY_DUTY_PTR
|
|
ldr r1, _0238D304 ; =0x00001B58
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
ldr r2, [r0, #0x88c]
|
|
cmp r2, r1
|
|
movgt r1, #6
|
|
strgt r1, [r0, #0x890]
|
|
ldr r0, _0238D2FC ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
ldrb r1, [r0, #0x89c]
|
|
cmp r1, #0
|
|
movne r1, #7
|
|
_0238D2C0:
|
|
strne r1, [r0, #0x890]
|
|
ldr r0, _0238D2FC ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, #0x11c]
|
|
cmp r0, #0
|
|
beq _0238D2EC
|
|
cmp r0, #1
|
|
bne _0238D2EC
|
|
mov r0, #0x1e
|
|
str r0, [r1, #0x110]
|
|
b _0238D2F4
|
|
_0238D2EC:
|
|
mov r0, #0x20
|
|
str r0, [r1, #0x110]
|
|
_0238D2F4:
|
|
add sp, sp, #0x20
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_0238D2FC: .word SENTRY_DUTY_PTR
|
|
_0238D300: .word ov14_0238D970
|
|
_0238D304: .word 0x00001B58
|
|
arm_func_end SentryStateFinalizeRound
|
|
|
|
arm_func_start SentryStateF
|
|
SentryStateF: ; 0x0238D308
|
|
ldr r0, _0238D31C ; =SENTRY_DUTY_PTR
|
|
mov r1, #0xa
|
|
ldr r0, [r0]
|
|
str r1, [r0, #0x110]
|
|
bx lr
|
|
.align 2, 0
|
|
_0238D31C: .word SENTRY_DUTY_PTR
|
|
arm_func_end SentryStateF
|
|
|
|
arm_func_start SentryState10
|
|
SentryState10: ; 0x0238D320
|
|
stmdb sp!, {r3, lr}
|
|
ldr r2, _0238D390 ; =SENTRY_DUTY_PTR
|
|
mvn r1, #1
|
|
ldr r0, [r2]
|
|
add r0, r0, #0x3000
|
|
ldr r3, [r0, #0x898]
|
|
sub r3, r3, #1
|
|
str r3, [r0, #0x898]
|
|
ldr r0, [r2]
|
|
add r0, r0, #0x3000
|
|
ldr r3, [r0, #0x894]
|
|
sub r3, r3, #0xfa
|
|
str r3, [r0, #0x894]
|
|
ldr r0, [r2]
|
|
ldrsb r0, [r0, #3]
|
|
cmp r0, r1
|
|
beq _0238D368
|
|
bl ClearWindow
|
|
_0238D368:
|
|
ldr r0, _0238D394 ; =0x00002C08
|
|
bl PlaySeByIdVolumeWrapper
|
|
ldr r0, _0238D390 ; =SENTRY_DUTY_PTR
|
|
mvn r3, #0
|
|
ldr r2, [r0]
|
|
mov r1, #0x11
|
|
str r3, [r2, #0x114]
|
|
ldr r0, [r0]
|
|
str r1, [r0, #0x110]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0238D390: .word SENTRY_DUTY_PTR
|
|
_0238D394: .word 0x00002C08
|
|
arm_func_end SentryState10
|
|
|
|
arm_func_start SentryState11
|
|
SentryState11: ; 0x0238D398
|
|
ldr r0, _0238D3AC ; =SENTRY_DUTY_PTR
|
|
mov r1, #0xd
|
|
ldr r0, [r0]
|
|
str r1, [r0, #0x110]
|
|
bx lr
|
|
.align 2, 0
|
|
_0238D3AC: .word SENTRY_DUTY_PTR
|
|
arm_func_end SentryState11
|
|
|
|
arm_func_start SentryState12
|
|
SentryState12: ; 0x0238D3B0
|
|
ldr r1, _0238D3E0 ; =SENTRY_DUTY_PTR
|
|
mov r2, #0
|
|
ldr r0, [r1]
|
|
ldr r3, _0238D3E4 ; =0x00002311
|
|
add r0, r0, #0x3000
|
|
strb r2, [r0, #0x89c]
|
|
ldr r0, [r1]
|
|
mov r2, #0x13
|
|
str r3, [r0, #0xc8]
|
|
ldr r0, [r1]
|
|
str r2, [r0, #0x110]
|
|
bx lr
|
|
.align 2, 0
|
|
_0238D3E0: .word SENTRY_DUTY_PTR
|
|
_0238D3E4: .word 0x00002311
|
|
arm_func_end SentryState12
|
|
|
|
arm_func_start SentryState13
|
|
SentryState13: ; 0x0238D3E8
|
|
ldr r1, _0238D40C ; =SENTRY_DUTY_PTR
|
|
mov r3, #1
|
|
ldr r0, [r1]
|
|
mov r2, #0x17
|
|
add r0, r0, #0x3000
|
|
str r3, [r0, #0x8ac]
|
|
ldr r0, [r1]
|
|
str r2, [r0, #0x110]
|
|
bx lr
|
|
.align 2, 0
|
|
_0238D40C: .word SENTRY_DUTY_PTR
|
|
arm_func_end SentryState13
|
|
|
|
arm_func_start SentryState14
|
|
SentryState14: ; 0x0238D410
|
|
ldr r0, _0238D424 ; =SENTRY_DUTY_PTR
|
|
mov r1, #0x15
|
|
ldr r0, [r0]
|
|
str r1, [r0, #0x110]
|
|
bx lr
|
|
.align 2, 0
|
|
_0238D424: .word SENTRY_DUTY_PTR
|
|
arm_func_end SentryState14
|
|
|
|
arm_func_start SentryState15
|
|
SentryState15: ; 0x0238D428
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _0238D464 ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
ldr r0, [r0, #0x8ac]
|
|
cmp r0, #2
|
|
bge _0238D450
|
|
mov r0, #0x14
|
|
bl SentrySetStateIntermediate
|
|
ldmia sp!, {r3, pc}
|
|
_0238D450:
|
|
mov r0, #0x304
|
|
bl PlaySeByIdVolumeWrapper
|
|
mov r0, #0x16
|
|
bl SentrySetStateIntermediate
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0238D464: .word SENTRY_DUTY_PTR
|
|
arm_func_end SentryState15
|
|
|
|
arm_func_start SentryState16
|
|
SentryState16: ; 0x0238D468
|
|
stmdb sp!, {r3, lr}
|
|
ldr r2, _0238D4BC ; =SENTRY_DUTY_PTR
|
|
mvn r1, #0x3f
|
|
ldr r0, [r2]
|
|
add r0, r0, #0x3000
|
|
ldr r3, [r0, #0x8b0]
|
|
sub r3, r3, #4
|
|
str r3, [r0, #0x8b0]
|
|
ldr r0, [r2]
|
|
add r0, r0, #0x3000
|
|
ldr r3, [r0, #0x8b0]
|
|
cmp r3, r1
|
|
ldmgeia sp!, {r3, pc}
|
|
mov r3, #0
|
|
strb r3, [r0, #0x89c]
|
|
ldr r1, [r2]
|
|
mov r0, #0x17
|
|
add r1, r1, #0x3000
|
|
str r3, [r1, #0x8ac]
|
|
bl SentrySetStateIntermediate
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0238D4BC: .word SENTRY_DUTY_PTR
|
|
arm_func_end SentryState16
|
|
|
|
arm_func_start SentryState17
|
|
SentryState17: ; 0x0238D4C0
|
|
ldr r1, _0238D534 ; =SENTRY_DUTY_PTR
|
|
mov r3, #4
|
|
ldr r2, [r1]
|
|
add r0, r2, #0x3000
|
|
ldr r0, [r0, #0x87c]
|
|
add r0, r2, r0, lsl #1
|
|
add r0, r0, #0x3800
|
|
ldrsh r0, [r0, #0xa2]
|
|
str r0, [r2, #0xa4]
|
|
ldr r2, [r1]
|
|
add r0, r2, #0x3000
|
|
ldrb r1, [r0, #0x871]
|
|
cmp r1, #0
|
|
ldreq r0, [r0, #0x878]
|
|
moveq r1, #3
|
|
addeq r0, r2, r0, lsl #2
|
|
addeq r0, r0, #0x3000
|
|
streq r1, [r0, #0x554]
|
|
ldr r1, _0238D534 ; =SENTRY_DUTY_PTR
|
|
mov r2, #0x18
|
|
ldr ip, [r1]
|
|
add r0, ip, #0x3000
|
|
ldr r0, [r0, #0x87c]
|
|
add r0, ip, r0, lsl #2
|
|
add r0, r0, #0x3000
|
|
str r3, [r0, #0x554]
|
|
ldr r0, [r1]
|
|
str r2, [r0, #0x110]
|
|
bx lr
|
|
.align 2, 0
|
|
_0238D534: .word SENTRY_DUTY_PTR
|
|
arm_func_end SentryState17
|
|
|
|
arm_func_start SentryState18
|
|
SentryState18: ; 0x0238D538
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _0238D56C ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
ldr r0, [r0, #0x8ac]
|
|
cmp r0, #2
|
|
bge _0238D560
|
|
mov r0, #0x17
|
|
bl SentrySetStateIntermediate
|
|
ldmia sp!, {r3, pc}
|
|
_0238D560:
|
|
mov r0, #0xe
|
|
bl SentrySetStateIntermediate
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0238D56C: .word SENTRY_DUTY_PTR
|
|
arm_func_end SentryState18
|
|
|
|
arm_func_start SentryState19
|
|
SentryState19: ; 0x0238D570
|
|
ldr r0, _0238D584 ; =SENTRY_DUTY_PTR
|
|
mov r1, #0x1a
|
|
ldr r0, [r0]
|
|
str r1, [r0, #0x110]
|
|
bx lr
|
|
.align 2, 0
|
|
_0238D584: .word SENTRY_DUTY_PTR
|
|
arm_func_end SentryState19
|
|
|
|
arm_func_start SentryState1A
|
|
SentryState1A: ; 0x0238D588
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _0238D5C4 ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
ldr r0, [r0, #0x8ac]
|
|
cmp r0, #2
|
|
bge _0238D5B0
|
|
mov r0, #0x19
|
|
bl SentrySetStateIntermediate
|
|
ldmia sp!, {r3, pc}
|
|
_0238D5B0:
|
|
mov r0, #0x304
|
|
bl PlaySeByIdVolumeWrapper
|
|
mov r0, #0x1b
|
|
bl SentrySetStateIntermediate
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0238D5C4: .word SENTRY_DUTY_PTR
|
|
arm_func_end SentryState1A
|
|
|
|
arm_func_start SentryStateFinalizePoints
|
|
SentryStateFinalizePoints: ; 0x0238D5C8
|
|
stmdb sp!, {r3, lr}
|
|
ldr r2, _0238D654 ; =SENTRY_DUTY_PTR
|
|
mvn r1, #0x3f
|
|
ldr r0, [r2]
|
|
add r0, r0, #0x3000
|
|
ldr r3, [r0, #0x8b0]
|
|
sub r3, r3, #4
|
|
str r3, [r0, #0x8b0]
|
|
ldr r0, [r2]
|
|
add r0, r0, #0x3000
|
|
ldr r3, [r0, #0x8b0]
|
|
cmp r3, r1
|
|
ldmgeia sp!, {r3, pc}
|
|
ldr r3, [r0, #0x88c]
|
|
ldr r1, [r0, #0x894]
|
|
add r1, r3, r1
|
|
str r1, [r0, #0x88c]
|
|
ldr r0, [r2]
|
|
add r0, r0, #0x3000
|
|
ldr r1, [r0, #0x884]
|
|
cmp r1, #5
|
|
bne _0238D634
|
|
ldrb r1, [r0, #0x89c]
|
|
cmp r1, #0
|
|
ldrne r1, [r0, #0x88c]
|
|
addne r1, r1, #0x7d0
|
|
strne r1, [r0, #0x88c]
|
|
_0238D634:
|
|
ldr r0, _0238D654 ; =SENTRY_DUTY_PTR
|
|
mov r2, #0
|
|
ldr r1, [r0]
|
|
mov r0, #0x1c
|
|
add r1, r1, #0x3000
|
|
str r2, [r1, #0x8ac]
|
|
bl SentrySetStateIntermediate
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0238D654: .word SENTRY_DUTY_PTR
|
|
arm_func_end SentryStateFinalizePoints
|
|
|
|
arm_func_start SentryState1C
|
|
SentryState1C: ; 0x0238D658
|
|
ldr r1, _0238D694 ; =SENTRY_DUTY_PTR
|
|
ldr r2, _0238D698 ; =0x00002310
|
|
ldr r0, [r1]
|
|
mov r3, #2
|
|
str r2, [r0, #0xc8]
|
|
ldr ip, [r1]
|
|
mov r2, #0x1d
|
|
add r0, ip, #0x3000
|
|
ldr r0, [r0, #0x878]
|
|
add r0, ip, r0, lsl #2
|
|
add r0, r0, #0x3000
|
|
str r3, [r0, #0x554]
|
|
ldr r0, [r1]
|
|
str r2, [r0, #0x110]
|
|
bx lr
|
|
.align 2, 0
|
|
_0238D694: .word SENTRY_DUTY_PTR
|
|
_0238D698: .word 0x00002310
|
|
arm_func_end SentryState1C
|
|
|
|
arm_func_start SentryState1D
|
|
SentryState1D: ; 0x0238D69C
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _0238D6FC ; =SENTRY_DUTY_PTR
|
|
ldr r1, [r0]
|
|
add r0, r1, #0x3000
|
|
ldr r0, [r0, #0x8ac]
|
|
cmp r0, #1
|
|
bne _0238D6CC
|
|
ldrsb r0, [r1, #3]
|
|
mvn r1, #1
|
|
cmp r0, r1
|
|
beq _0238D6CC
|
|
bl ClearWindow
|
|
_0238D6CC:
|
|
ldr r0, _0238D6FC ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
ldr r0, [r0, #0x8ac]
|
|
cmp r0, #1
|
|
bge _0238D6F0
|
|
mov r0, #0x1c
|
|
bl SentrySetStateIntermediate
|
|
ldmia sp!, {r3, pc}
|
|
_0238D6F0:
|
|
mov r0, #0xe
|
|
bl SentrySetStateIntermediate
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0238D6FC: .word SENTRY_DUTY_PTR
|
|
arm_func_end SentryState1D
|
|
|
|
arm_func_start SentryState1E
|
|
SentryState1E: ; 0x0238D700
|
|
ldr r0, _0238D714 ; =SENTRY_DUTY_PTR
|
|
mov r1, #0x1f
|
|
ldr r0, [r0]
|
|
str r1, [r0, #0x110]
|
|
bx lr
|
|
.align 2, 0
|
|
_0238D714: .word SENTRY_DUTY_PTR
|
|
arm_func_end SentryState1E
|
|
|
|
arm_func_start SentryState1F
|
|
SentryState1F: ; 0x0238D718
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _0238D790 ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
ldr r1, [r0, #0x8ac]
|
|
cmp r1, #2
|
|
bge _0238D754
|
|
mov r0, #0x1e
|
|
bl SentrySetStateIntermediate
|
|
ldr r0, _0238D790 ; =SENTRY_DUTY_PTR
|
|
mov r1, #0x1e
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
str r1, [r0, #0x8b4]
|
|
ldmia sp!, {r3, pc}
|
|
_0238D754:
|
|
ldr r0, [r0, #0x8b4]
|
|
cmp r0, #0x1e
|
|
bne _0238D768
|
|
mov r0, #0x1e
|
|
bl sub_02017B7C
|
|
_0238D768:
|
|
ldr r0, _0238D790 ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
ldr r1, [r0, #0x8b4]
|
|
cmp r1, #0
|
|
subgt r1, r1, #1
|
|
strgt r1, [r0, #0x8b4]
|
|
ldmgtia sp!, {r3, pc}
|
|
bl SentrySetExitingState
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0238D790: .word SENTRY_DUTY_PTR
|
|
arm_func_end SentryState1F
|
|
|
|
arm_func_start SentryState20
|
|
SentryState20: ; 0x0238D794
|
|
ldr r0, _0238D7A8 ; =SENTRY_DUTY_PTR
|
|
mov r1, #0x21
|
|
ldr r0, [r0]
|
|
str r1, [r0, #0x110]
|
|
bx lr
|
|
.align 2, 0
|
|
_0238D7A8: .word SENTRY_DUTY_PTR
|
|
arm_func_end SentryState20
|
|
|
|
arm_func_start SentryState21
|
|
SentryState21: ; 0x0238D7AC
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _0238D824 ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
ldr r1, [r0, #0x8ac]
|
|
cmp r1, #2
|
|
bge _0238D7E8
|
|
mov r0, #0x20
|
|
bl SentrySetStateIntermediate
|
|
ldr r0, _0238D824 ; =SENTRY_DUTY_PTR
|
|
mov r1, #0x1e
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
str r1, [r0, #0x8b4]
|
|
ldmia sp!, {r3, pc}
|
|
_0238D7E8:
|
|
ldr r0, [r0, #0x8b4]
|
|
cmp r0, #0x1e
|
|
bne _0238D7FC
|
|
mov r0, #0x1e
|
|
bl sub_02017B7C
|
|
_0238D7FC:
|
|
ldr r0, _0238D824 ; =SENTRY_DUTY_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x3000
|
|
ldr r1, [r0, #0x8b4]
|
|
cmp r1, #0
|
|
subgt r1, r1, #1
|
|
strgt r1, [r0, #0x8b4]
|
|
ldmgtia sp!, {r3, pc}
|
|
bl SentrySetExitingState
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_0238D824: .word SENTRY_DUTY_PTR
|
|
arm_func_end SentryState21
|
|
|
|
arm_func_start ov14_0238D828
|
|
ov14_0238D828: ; 0x0238D828
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #8
|
|
mov sb, r1
|
|
mov sl, r0
|
|
mov r8, r2
|
|
mov r4, r3
|
|
ldr r7, [sb]
|
|
bl strlen
|
|
ldr r2, [sp, #0x30]
|
|
#ifdef EUROPE
|
|
add fp, sp, #0
|
|
#else
|
|
mov r6, #0
|
|
#endif
|
|
cmp r0, r2
|
|
ldrlt r1, [r8]
|
|
sublt r0, r2, r0
|
|
addlt r0, r1, r0, lsl #3
|
|
strlt r0, [r8]
|
|
mov r0, r4, lsl #8
|
|
str r0, [sp, #4]
|
|
#ifdef EUROPE
|
|
ldr r0, _0238D968 ; =0x0000080F
|
|
mov r6, #0
|
|
sub r4, r0, #1
|
|
sub r5, r0, #3
|
|
#else
|
|
add r5, sp, #0
|
|
ldr fp, _0238D968 ; =0x0000080F
|
|
mov r4, r6
|
|
#endif
|
|
b _0238D950
|
|
_0238D87C:
|
|
ldrb r1, [sl], #1
|
|
ldr r0, [r8]
|
|
mov r0, r0, lsl #8
|
|
str r0, [sp]
|
|
cmp r1, #0x30
|
|
blo _0238D8DC
|
|
cmp r1, #0x39
|
|
bhi _0238D8DC
|
|
sub r0, r1, #0x2b
|
|
#ifdef EUROPE
|
|
ldr r2, [r8]
|
|
orr r0, r0, #0x800
|
|
mov r0, r0, lsl #0x10
|
|
add r2, r2, #8
|
|
mov r1, r0, asr #0x10
|
|
str r2, [r8]
|
|
mov r0, r7
|
|
#else
|
|
orr r0, r0, #0x800
|
|
mov r0, r0, lsl #0x10
|
|
mov r1, r0, asr #0x10
|
|
ldr r2, [r8]
|
|
mov r0, r7
|
|
add r2, r2, #8
|
|
str r2, [r8]
|
|
#endif
|
|
mov r2, r6
|
|
bl SetAnimDataFields2
|
|
mov r0, r7
|
|
#ifdef EUROPE
|
|
mov r1, fp
|
|
mov r2, #0
|
|
#else
|
|
mov r1, r5
|
|
mov r2, r4
|
|
#endif
|
|
bl AnimRelatedFunction__022F6F14
|
|
add r7, r7, #0xc4
|
|
b _0238D950
|
|
_0238D8DC:
|
|
cmp r1, #0x2f
|
|
bne _0238D918
|
|
ldr r1, [r8]
|
|
mov r0, r7
|
|
add r1, r1, #8
|
|
str r1, [r8]
|
|
#ifdef EUROPE
|
|
mov r1, r5
|
|
#else
|
|
mov r1, fp
|
|
#endif
|
|
mov r2, #0
|
|
bl SetAnimDataFields2
|
|
mov r0, r7
|
|
#ifdef EUROPE
|
|
mov r1, fp
|
|
#else
|
|
mov r1, r5
|
|
#endif
|
|
mov r2, #0
|
|
bl AnimRelatedFunction__022F6F14
|
|
add r7, r7, #0xc4
|
|
b _0238D950
|
|
_0238D918:
|
|
cmp r1, #0x50
|
|
bne _0238D950
|
|
#ifdef EUROPE
|
|
ldr r0, [r8]
|
|
add r0, r0, #8
|
|
str r0, [r8]
|
|
bl GetLanguage
|
|
sub r1, r0, #2
|
|
mov r1, r1, lsl #0x18
|
|
mov r1, r1, asr #0x18
|
|
and r1, r1, #0xff
|
|
cmp r1, #1
|
|
mov r2, #0
|
|
bhi _0238E4AC
|
|
ldr r1, [sp]
|
|
mov r0, r7
|
|
add r1, r1, #0x400
|
|
str r1, [sp]
|
|
mov r1, r4
|
|
bl SetAnimDataFields2
|
|
b _0238E4DC
|
|
_0238E4AC:
|
|
cmp r0, #4
|
|
bne _0238E4D0
|
|
ldr r1, [sp]
|
|
mov r0, r7
|
|
add r1, r1, #0x400
|
|
str r1, [sp]
|
|
ldr r1, _0238D968 ; =0x00000812
|
|
bl SetAnimDataFields2
|
|
b _0238E4DC
|
|
_0238E4D0:
|
|
mov r0, r7
|
|
mov r1, #0x810
|
|
bl SetAnimDataFields2
|
|
_0238E4DC:
|
|
mov r0, r7
|
|
mov r1, fp
|
|
#else
|
|
ldr r1, [r8]
|
|
mov r0, r7
|
|
add r1, r1, #8
|
|
str r1, [r8]
|
|
mov r1, #0x810
|
|
mov r2, #0
|
|
bl SetAnimDataFields2
|
|
mov r0, r7
|
|
mov r1, r5
|
|
#endif
|
|
mov r2, #0
|
|
bl AnimRelatedFunction__022F6F14
|
|
add r7, r7, #0xc4
|
|
_0238D950:
|
|
ldrb r0, [sl]
|
|
cmp r0, #0
|
|
bne _0238D87C
|
|
str r7, [sb]
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
#ifdef EUROPE
|
|
_0238D968: .word 0x00000812
|
|
#else
|
|
_0238D968: .word 0x0000080F
|
|
#endif
|
|
arm_func_end ov14_0238D828
|
|
; 0x0238D96C
|
|
|
|
.rodata
|
|
.global ov14_0238D96C
|
|
ov14_0238D96C:
|
|
.byte 0x03, 0x03, 0x03, 0x03
|
|
.global ov14_0238D970
|
|
ov14_0238D970:
|
|
.byte 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00
|
|
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global ov14_0238D988
|
|
ov14_0238D988:
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
#ifdef JAPAN
|
|
.byte 0x03, 0x07, 0x18, 0x02
|
|
#else
|
|
.byte 0x02, 0x07, 0x1A, 0x02
|
|
#endif
|
|
.byte 0x00, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global ov14_0238D998
|
|
ov14_0238D998:
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
#ifdef JAPAN
|
|
.byte 0x03, 0x10, 0x18, 0x02
|
|
#else
|
|
.byte 0x02, 0x10, 0x1A, 0x02
|
|
#endif
|
|
.byte 0x00, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global ov14_0238D9A8
|
|
ov14_0238D9A8:
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x02, 0x02, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global ov14_0238D9B8
|
|
ov14_0238D9B8:
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x02, 0x13, 0x1C, 0x04, 0x00, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global ov14_0238D9C8
|
|
ov14_0238D9C8:
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x08, 0x06, 0x10, 0x0B, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global ov14_0238D9D8
|
|
ov14_0238D9D8:
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x08, 0x04, 0x10, 0x0B, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global ov14_0238D9E8
|
|
ov14_0238D9E8:
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x02, 0x02, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global ov14_0238D9F8
|
|
ov14_0238D9F8:
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x02, 0x02, 0x1D, 0x05, 0x01, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global ov14_0238DA08
|
|
ov14_0238DA08:
|
|
#ifdef JAPAN
|
|
#define OV14_DATA_OFFSET 0x3669
|
|
#else
|
|
#define OV14_DATA_OFFSET 0
|
|
#endif
|
|
.word 0x6D6 + OV14_DATA_OFFSET
|
|
.byte 0x08, 0x00, 0x00, 0x00
|
|
.word 0x6D7 + OV14_DATA_OFFSET
|
|
.byte 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.byte 0x08, 0x00, 0x00, 0x00
|
|
.global ov14_0238DA20
|
|
ov14_0238DA20:
|
|
.byte 0x40, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00
|
|
.byte 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00
|
|
.byte 0x68, 0x00, 0x00, 0x00
|
|
.global ov14_0238DA40
|
|
ov14_0238DA40:
|
|
.byte 0x00, 0x40, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0xB8, 0x00, 0x00
|
|
.byte 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0xB8, 0x00, 0x00
|
|
.byte 0x00, 0x68, 0x00, 0x00
|
|
.global ov14_0238DA60
|
|
ov14_0238DA60:
|
|
.byte 0x20, 0x00, 0x2C, 0x00, 0x38, 0x00, 0x44, 0x00, 0x50, 0x00, 0x5C, 0x00
|
|
.byte 0x68, 0x00, 0x74, 0x00, 0x80, 0x00, 0x8C, 0x00, 0x98, 0x00, 0xA4, 0x00, 0xB0, 0x00, 0xBC, 0x00
|
|
.byte 0xC8, 0x00, 0xD4, 0x00
|
|
.global ov14_0238DA80
|
|
ov14_0238DA80:
|
|
.byte 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00
|
|
.byte 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00
|
|
.byte 0x0A, 0x00, 0x00, 0x00
|
|
.global SENTRY_DEBUG_MENU_ITEMS
|
|
SENTRY_DEBUG_MENU_ITEMS:
|
|
.word 0x6CE + OV14_DATA_OFFSET
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.word 0x6CF + OV14_DATA_OFFSET
|
|
.byte 0x01, 0x00, 0x00, 0x00
|
|
.word 0x6D0 + OV14_DATA_OFFSET
|
|
.byte 0x02, 0x00, 0x00, 0x00
|
|
.word 0x6D1 + OV14_DATA_OFFSET
|
|
.byte 0x03, 0x00, 0x00, 0x00
|
|
.word 0x6D2 + OV14_DATA_OFFSET
|
|
.byte 0x04, 0x00, 0x00, 0x00
|
|
.word 0x6D3 + OV14_DATA_OFFSET
|
|
.byte 0x05, 0x00, 0x00, 0x00
|
|
.word 0x6D4 + OV14_DATA_OFFSET
|
|
.byte 0x06, 0x00, 0x00, 0x00
|
|
.word 0x6D5 + OV14_DATA_OFFSET
|
|
.byte 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
.global ov14_0238DAE8
|
|
ov14_0238DAE8:
|
|
.byte 0x5B, 0x73, 0x74, 0x72
|
|
.byte 0x69, 0x6E, 0x67, 0x30, 0x5D, 0x5B, 0x43, 0x4C, 0x55, 0x4D, 0x5F, 0x53, 0x45, 0x54, 0x3A, 0x36
|
|
.byte 0x34, 0x5D, 0x5B, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x3A, 0x30, 0x3A, 0x38, 0x5D, 0x00, 0x00, 0x00
|
|
.global ov14_0238DB0C
|
|
ov14_0238DB0C:
|
|
.byte 0x5B, 0x64, 0x69, 0x67, 0x69, 0x74, 0x73, 0x3A, 0x30, 0x5D, 0x00, 0x00
|
|
.global ov14_0238DB18
|
|
ov14_0238DB18:
|
|
.byte 0x5B, 0x64, 0x69, 0x67
|
|
.byte 0x69, 0x74, 0x73, 0x3A, 0x31, 0x5D, 0x00, 0x00
|
|
.global ov14_0238DB24
|
|
ov14_0238DB24:
|
|
.byte 0x2F, 0x00, 0x00, 0x00
|
|
.global ov14_0238DB28
|
|
ov14_0238DB28:
|
|
.byte 0x50, 0x00, 0x00, 0x00
|
|
.global ov14_0238DB2C
|
|
ov14_0238DB2C:
|
|
.byte 0x2D, 0x2D, 0x2D, 0x2D, 0x20, 0x46, 0x6F, 0x6F, 0x74, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x2D
|
|
.byte 0x2D, 0x2D, 0x2D, 0x0A, 0x00, 0x00, 0x00, 0x00
|
|
.global ov14_0238DB44
|
|
ov14_0238DB44:
|
|
.byte 0x46, 0x6F, 0x6F, 0x72, 0x70, 0x72, 0x69, 0x6E
|
|
.byte 0x74, 0x4E, 0x6F, 0x20, 0x3D, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00
|
|
.global ov14_0238DB58
|
|
ov14_0238DB58:
|
|
.byte 0x41, 0x6E, 0x73, 0x77
|
|
.byte 0x65, 0x72, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3D, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00
|
|
|
|
.data
|
|
.global SENTRY_DUTY_PTR
|
|
SENTRY_DUTY_PTR:
|
|
.byte 0x00, 0x00, 0x00, 0x00
|
|
.global ov14_0238DB84
|
|
ov14_0238DB84:
|
|
.byte 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
|
|
.byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
|
|
.global SENTRY_DUTY_STATE_HANDLER_TABLE
|
|
SENTRY_DUTY_STATE_HANDLER_TABLE:
|
|
.word SentryState0
|
|
.word SentryState1
|
|
.word SentryState2
|
|
.word SentryState3
|
|
.word SentryState4
|
|
.word SentryStateExit
|
|
.word SentryState6
|
|
.word SentryState7
|
|
.word SentryState8
|
|
.word SentryState9
|
|
.word SentryStateA
|
|
.word SentryStateB
|
|
.word SentryStateGenerateChoices
|
|
.word SentryStateGetUserChoice
|
|
.word SentryStateFinalizeRound
|
|
.word SentryStateF
|
|
.word SentryState10
|
|
.word SentryState11
|
|
.word SentryState12
|
|
.word SentryState13
|
|
.word SentryState14
|
|
.word SentryState15
|
|
.word SentryState16
|
|
.word SentryState17
|
|
.word SentryState18
|
|
.word SentryState19
|
|
.word SentryState1A
|
|
.word SentryStateFinalizePoints
|
|
.word SentryState1C
|
|
.word SentryState1D
|
|
.word SentryState1E
|
|
.word SentryState1F
|
|
.word SentryState20
|
|
.word SentryState21
|