mirror of
https://github.com/pret/pmd-sky.git
synced 2026-03-21 17:25:15 -05:00
987 lines
19 KiB
ArmAsm
987 lines
19 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "overlay_29_02348D3C.inc"
|
|
|
|
.text
|
|
|
|
arm_func_start ov29_02348D3C
|
|
ov29_02348D3C: ; 0x02348D3C
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r0, #9
|
|
mov r4, #0
|
|
bl IsCurrentMissionType
|
|
cmp r0, #0
|
|
beq _02348D78
|
|
bl GetItemToRetrieve
|
|
ldrsh r1, [r5, #4]
|
|
cmp r1, r0
|
|
bne _02348DCC
|
|
ldrb r0, [r5]
|
|
tst r0, #0x80
|
|
movne r4, #1
|
|
b _02348DCC
|
|
_02348D78:
|
|
mov r0, #0xc
|
|
bl IsCurrentMissionType
|
|
cmp r0, #0
|
|
beq _02348DA8
|
|
bl GetSpecialTargetItem
|
|
ldrh r1, [r5, #2]
|
|
cmp r1, r0
|
|
bne _02348DCC
|
|
ldrb r0, [r5]
|
|
tst r0, #0x80
|
|
movne r4, #3
|
|
b _02348DCC
|
|
_02348DA8:
|
|
ldr r0, _02348DD4 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #0x777]
|
|
cmp r0, #0
|
|
beq _02348DCC
|
|
bl GetItemToRetrieve
|
|
ldrsh r1, [r5, #4]
|
|
cmp r1, r0
|
|
moveq r4, #2
|
|
_02348DCC:
|
|
mov r0, r4
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_02348DD4: .word DUNGEON_PTR
|
|
arm_func_end ov29_02348D3C
|
|
|
|
arm_func_start ov29_02348DD8
|
|
ov29_02348DD8: ; 0x02348DD8
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, r0
|
|
mov r5, r1
|
|
mov r4, r2
|
|
bl GetSpecialTargetItem
|
|
cmp r0, #0
|
|
beq _02348E04
|
|
mov r0, r6
|
|
bl EntityIsValid__0234987C
|
|
cmp r0, #0
|
|
bne _02348E0C
|
|
_02348E04:
|
|
mov r0, #0
|
|
b _02348E64
|
|
_02348E0C:
|
|
ldr r0, [r6, #0xb4]
|
|
ldrb r0, [r0, #6]
|
|
cmp r0, #0
|
|
movne r0, #0
|
|
bne _02348E64
|
|
ldrsh r0, [r5, #4]
|
|
cmp r0, #0
|
|
beq _02348E60
|
|
bl GetSpecialTargetItem
|
|
ldrsh r1, [r5, #4]
|
|
cmp r1, r0
|
|
bne _02348E60
|
|
ldrb r0, [r5]
|
|
tst r0, #0x80
|
|
beq _02348E60
|
|
mov r0, r6
|
|
bl ov29_02348BA0
|
|
cmp r0, #0
|
|
moveq r0, #1
|
|
movne r0, #2
|
|
b _02348E64
|
|
_02348E60:
|
|
mov r0, #0
|
|
_02348E64:
|
|
cmp r0, #1
|
|
bne _02348EAC
|
|
cmp r4, #0
|
|
beq _02348E9C
|
|
mov r0, #0
|
|
mov r1, r6
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
mov r1, r5
|
|
mov r0, #0
|
|
bl PrepareItemForPrinting__02345728
|
|
ldr r1, _02348EC8 ; =0x00000BD2
|
|
mov r0, r6
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
_02348E9C:
|
|
mov r0, r6
|
|
bl ov29_0234A244
|
|
mov r0, #1
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
_02348EAC:
|
|
cmp r0, #2
|
|
movne r0, #0
|
|
ldmneia sp!, {r4, r5, r6, pc}
|
|
mov r0, r6
|
|
bl ov29_0234AA98
|
|
mov r0, #1
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
#ifdef JAPAN
|
|
_02348EC8: .word 0x00000911
|
|
#else
|
|
_02348EC8: .word 0x00000BD2
|
|
#endif
|
|
arm_func_end ov29_02348DD8
|
|
|
|
arm_func_start ov29_02348ECC
|
|
ov29_02348ECC: ; 0x02348ECC
|
|
stmdb sp!, {r3, lr}
|
|
cmp r1, #1
|
|
mov r2, #0
|
|
bne _02348EF4
|
|
ldrb r1, [r0]
|
|
tst r1, #2
|
|
bne _02348F18
|
|
bl ov29_02348B28
|
|
mov r2, #1
|
|
b _02348F18
|
|
_02348EF4:
|
|
cmp r1, #2
|
|
bne _02348F08
|
|
bl ov29_02348ABC
|
|
mov r2, #1
|
|
b _02348F18
|
|
_02348F08:
|
|
cmp r1, #3
|
|
bne _02348F18
|
|
bl ov29_0234AC8C
|
|
mov r2, #1
|
|
_02348F18:
|
|
mov r0, r2
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end ov29_02348ECC
|
|
|
|
arm_func_start ov29_02348F20
|
|
ov29_02348F20: ; 0x02348F20
|
|
stmdb sp!, {r3, lr}
|
|
bl MissionTargetEnemyIsDefeated
|
|
cmp r0, #0
|
|
ldrne r0, _02348FD4 ; =DUNGEON_PTR
|
|
ldrne r0, [r0]
|
|
ldrneb r0, [r0, #1]
|
|
cmpne r0, #0
|
|
beq _02348FCC
|
|
mov r0, #0xa
|
|
bl IsCurrentMissionType
|
|
cmp r0, #0
|
|
beq _02348F68
|
|
ldr r0, _02348FD4 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x700
|
|
ldrsh r0, [r0, #0x6e]
|
|
bl ov29_0234A790
|
|
b _02348FB4
|
|
_02348F68:
|
|
mov r0, #9
|
|
bl IsCurrentMissionType
|
|
cmp r0, #0
|
|
beq _02348F90
|
|
ldr r0, _02348FD4 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x700
|
|
ldrsh r0, [r0, #0x6e]
|
|
bl ov29_0234A8BC
|
|
b _02348FB4
|
|
_02348F90:
|
|
mov r0, #0xb
|
|
bl IsCurrentMissionType
|
|
cmp r0, #0
|
|
beq _02348FB4
|
|
ldr r0, _02348FD4 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x700
|
|
ldrsh r0, [r0, #0x6e]
|
|
bl ov29_0234ABB0
|
|
_02348FB4:
|
|
ldr r0, _02348FD4 ; =DUNGEON_PTR
|
|
mov r2, #0
|
|
ldr r1, [r0]
|
|
mov r0, #1
|
|
strb r2, [r1, #1]
|
|
ldmia sp!, {r3, pc}
|
|
_02348FCC:
|
|
mov r0, #0
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02348FD4: .word DUNGEON_PTR
|
|
arm_func_end ov29_02348F20
|
|
|
|
arm_func_start ov29_02348FD8
|
|
ov29_02348FD8: ; 0x02348FD8
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, #0
|
|
bl IsDestinationFloorWithItem
|
|
cmp r0, #0
|
|
beq _02349014
|
|
ldr r0, _02349088 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #0x77a]
|
|
cmp r0, #0
|
|
bne _02349014
|
|
bl GetItemToRetrieve
|
|
bl IsItemInBag
|
|
cmp r0, #0
|
|
movne r4, #1
|
|
b _02349058
|
|
_02349014:
|
|
mov r0, #9
|
|
bl IsCurrentMissionType
|
|
cmp r0, #0
|
|
beq _02349050
|
|
ldr r0, _02349088 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #0x77a]
|
|
cmp r0, #0
|
|
bne _02349050
|
|
bl GetItemToRetrieve
|
|
mov r1, #0x40
|
|
bl IsItemWithFlagsInBag
|
|
cmp r0, #0
|
|
movne r4, #1
|
|
b _02349058
|
|
_02349050:
|
|
mov r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
_02349058:
|
|
cmp r4, #0
|
|
beq _02349080
|
|
bl GetItemToRetrieve
|
|
mov r1, r0
|
|
mov r0, #0
|
|
bl ov29_02349AD4
|
|
ldr r0, _02349088 ; =DUNGEON_PTR
|
|
mov r1, #1
|
|
ldr r0, [r0]
|
|
strb r1, [r0, #0x77a]
|
|
_02349080:
|
|
mov r0, r4
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_02349088: .word DUNGEON_PTR
|
|
arm_func_end ov29_02348FD8
|
|
|
|
arm_func_start ov29_0234908C
|
|
ov29_0234908C: ; 0x0234908C
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r4, #0
|
|
bl IsDestinationFloorWithItem
|
|
cmp r0, #0
|
|
beq _023490CC
|
|
ldr r0, _02349148 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #0x77a]
|
|
cmp r0, #0
|
|
bne _023490CC
|
|
bl GetItemToRetrieve
|
|
ldrsh r1, [r5, #4]
|
|
cmp r1, r0
|
|
moveq r4, #1
|
|
b _02349118
|
|
_023490CC:
|
|
mov r0, #9
|
|
bl IsCurrentMissionType
|
|
cmp r0, #0
|
|
beq _02349110
|
|
ldr r0, _02349148 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #0x77a]
|
|
cmp r0, #0
|
|
bne _02349110
|
|
bl GetItemToRetrieve
|
|
ldrsh r1, [r5, #4]
|
|
cmp r1, r0
|
|
bne _02349118
|
|
ldrb r0, [r5]
|
|
tst r0, #0x40
|
|
movne r4, #1
|
|
b _02349118
|
|
_02349110:
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_02349118:
|
|
cmp r4, #0
|
|
beq _02349140
|
|
bl GetItemToRetrieve
|
|
mov r1, r0
|
|
mov r0, #0
|
|
bl ov29_02349AD4
|
|
ldr r0, _02349148 ; =DUNGEON_PTR
|
|
mov r1, #1
|
|
ldr r0, [r0]
|
|
strb r1, [r0, #0x77a]
|
|
_02349140:
|
|
mov r0, r4
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_02349148: .word DUNGEON_PTR
|
|
arm_func_end ov29_0234908C
|
|
|
|
arm_func_start CheckActiveChallengeRequest
|
|
CheckActiveChallengeRequest: ; 0x0234914C
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _02349184 ; =DUNGEON_PTR
|
|
mov r1, #5
|
|
ldr r0, [r0]
|
|
strb r1, [sp]
|
|
ldrb r2, [r0, #0x748]
|
|
add r1, sp, #0
|
|
mov r0, #0xb
|
|
bl CheckAcceptedMissionByTypeAndDungeon
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02349184: .word DUNGEON_PTR
|
|
arm_func_end CheckActiveChallengeRequest
|
|
|
|
arm_func_start ov29_02349188
|
|
ov29_02349188: ; 0x02349188
|
|
ldr r0, _0234919C ; =DUNGEON_PTR
|
|
ldr ip, _023491A0 ; =ov29_023496EC
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x760
|
|
bx ip
|
|
.align 2, 0
|
|
_0234919C: .word DUNGEON_PTR
|
|
_023491A0: .word ov29_023496EC
|
|
arm_func_end ov29_02349188
|
|
|
|
arm_func_start GetMissionDestination
|
|
GetMissionDestination: ; 0x023491A4
|
|
ldr r0, _023491B4 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x760
|
|
bx lr
|
|
.align 2, 0
|
|
_023491B4: .word DUNGEON_PTR
|
|
arm_func_end GetMissionDestination
|
|
|
|
arm_func_start ov29_023491B8
|
|
ov29_023491B8: ; 0x023491B8
|
|
ldr ip, _023491C0 ; =ov29_02349A70
|
|
bx ip
|
|
.align 2, 0
|
|
_023491C0: .word ov29_02349A70
|
|
arm_func_end ov29_023491B8
|
|
|
|
arm_func_start IsOutlawOrChallengeRequestFloor
|
|
IsOutlawOrChallengeRequestFloor: ; 0x023491C4
|
|
stmdb sp!, {r3, lr}
|
|
mov r0, #0xb
|
|
bl IsCurrentMissionType
|
|
cmp r0, #0
|
|
bne _023491F8
|
|
mov r0, #0xa
|
|
bl IsCurrentMissionType
|
|
cmp r0, #0
|
|
bne _023491F8
|
|
mov r0, #9
|
|
bl IsCurrentMissionType
|
|
cmp r0, #0
|
|
beq _02349200
|
|
_023491F8:
|
|
mov r0, #1
|
|
ldmia sp!, {r3, pc}
|
|
_02349200:
|
|
mov r0, #0
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end IsOutlawOrChallengeRequestFloor
|
|
|
|
arm_func_start IsDestinationFloor
|
|
IsDestinationFloor: ; 0x02349208
|
|
ldr r0, _02349218 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #0x760]
|
|
bx lr
|
|
.align 2, 0
|
|
_02349218: .word DUNGEON_PTR
|
|
arm_func_end IsDestinationFloor
|
|
|
|
arm_func_start IsCurrentMissionType
|
|
IsCurrentMissionType: ; 0x0234921C
|
|
ldr r1, _0234924C ; =DUNGEON_PTR
|
|
ldr r2, [r1]
|
|
ldrb r1, [r2, #0x760]
|
|
cmp r1, #0
|
|
beq _0234923C
|
|
ldrb r1, [r2, #0x761]
|
|
cmp r1, r0
|
|
beq _02349244
|
|
_0234923C:
|
|
mov r0, #0
|
|
bx lr
|
|
_02349244:
|
|
mov r0, #1
|
|
bx lr
|
|
.align 2, 0
|
|
_0234924C: .word DUNGEON_PTR
|
|
arm_func_end IsCurrentMissionType
|
|
|
|
arm_func_start IsCurrentMissionTypeExact
|
|
IsCurrentMissionTypeExact: ; 0x02349250
|
|
ldr r2, _02349288 ; =DUNGEON_PTR
|
|
ldr r3, [r2]
|
|
ldrb r2, [r3, #0x760]
|
|
cmp r2, #0
|
|
beq _02349278
|
|
ldrb r2, [r3, #0x761]
|
|
cmp r2, r0
|
|
ldreqb r0, [r3, #0x762]
|
|
cmpeq r0, r1
|
|
beq _02349280
|
|
_02349278:
|
|
mov r0, #0
|
|
bx lr
|
|
_02349280:
|
|
mov r0, #1
|
|
bx lr
|
|
.align 2, 0
|
|
_02349288: .word DUNGEON_PTR
|
|
arm_func_end IsCurrentMissionTypeExact
|
|
|
|
arm_func_start IsOutlawMonsterHouseFloor
|
|
IsOutlawMonsterHouseFloor: ; 0x0234928C
|
|
stmdb sp!, {r3, lr}
|
|
mov r0, #0xa
|
|
mov r1, #7
|
|
bl IsCurrentMissionTypeExact
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end IsOutlawMonsterHouseFloor
|
|
|
|
arm_func_start IsGoldenChamber
|
|
IsGoldenChamber: ; 0x023492B0
|
|
stmdb sp!, {r3, lr}
|
|
mov r0, #3
|
|
mov r1, #2
|
|
bl IsCurrentMissionTypeExact
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end IsGoldenChamber
|
|
|
|
arm_func_start IsLegendaryChallengeFloor
|
|
IsLegendaryChallengeFloor: ; 0x023492D4
|
|
stmdb sp!, {r3, lr}
|
|
mov r0, #0xb
|
|
bl IsCurrentMissionType
|
|
cmp r0, #0
|
|
beq _02349308
|
|
ldr r0, _02349310 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #0x762]
|
|
add r0, r0, #0xff
|
|
and r0, r0, #0xff
|
|
cmp r0, #4
|
|
movls r0, #1
|
|
ldmlsia sp!, {r3, pc}
|
|
_02349308:
|
|
mov r0, #0
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02349310: .word DUNGEON_PTR
|
|
arm_func_end IsLegendaryChallengeFloor
|
|
|
|
arm_func_start IsJirachiChallengeFloor
|
|
IsJirachiChallengeFloor: ; 0x02349314
|
|
stmdb sp!, {r3, lr}
|
|
mov r0, #0xb
|
|
bl IsCurrentMissionType
|
|
cmp r0, #0
|
|
beq _02349340
|
|
ldr r0, _02349348 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #0x762]
|
|
cmp r0, #5
|
|
moveq r0, #1
|
|
ldmeqia sp!, {r3, pc}
|
|
_02349340:
|
|
mov r0, #0
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02349348: .word DUNGEON_PTR
|
|
arm_func_end IsJirachiChallengeFloor
|
|
|
|
arm_func_start IsDestinationFloorWithMonster
|
|
IsDestinationFloorWithMonster: ; 0x0234934C
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _02349374 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x760
|
|
bl FloorHasMissionMonster
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02349374: .word DUNGEON_PTR
|
|
arm_func_end IsDestinationFloorWithMonster
|
|
|
|
arm_func_start ov29_02349378
|
|
ov29_02349378: ; 0x02349378
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r0, _023493F4 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r6, r0, #0x760
|
|
mov r0, r6
|
|
bl FloorHasMissionMonster
|
|
cmp r0, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r4, r5, r6, pc}
|
|
ldrsh r0, [r6, #0xc]
|
|
mov r4, #0
|
|
mov r5, r4
|
|
cmp r0, #0
|
|
beq _023493E0
|
|
bl GetSpriteFileSize
|
|
add r4, r4, r0
|
|
b _023493E0
|
|
_023493BC:
|
|
add r0, r6, r5, lsl #1
|
|
ldrsh r0, [r0, #0xe]
|
|
cmp r0, #0
|
|
beq _023493D4
|
|
bl GetSpriteFileSize
|
|
add r4, r4, r0
|
|
_023493D4:
|
|
add r0, r5, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r5, r0, asr #0x10
|
|
_023493E0:
|
|
ldrsh r0, [r6, #0x14]
|
|
cmp r5, r0
|
|
blt _023493BC
|
|
mov r0, r4
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_023493F4: .word DUNGEON_PTR
|
|
arm_func_end ov29_02349378
|
|
|
|
arm_func_start LoadMissionMonsterSprites
|
|
LoadMissionMonsterSprites: ; 0x023493F8
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r0, _0234946C ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r6, r0, #0x760
|
|
mov r0, r6
|
|
bl FloorHasMissionMonster
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r4, r5, r6, pc}
|
|
ldrsh r0, [r6, #0xc]
|
|
cmp r0, #0
|
|
beq _0234942C
|
|
mov r1, #1
|
|
bl LoadMonsterSprite
|
|
_0234942C:
|
|
mov r5, #0
|
|
mov r4, #1
|
|
b _0234945C
|
|
_02349438:
|
|
add r0, r6, r5, lsl #1
|
|
ldrsh r0, [r0, #0xe]
|
|
cmp r0, #0
|
|
beq _02349450
|
|
mov r1, r4
|
|
bl LoadMonsterSprite
|
|
_02349450:
|
|
add r0, r5, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r5, r0, asr #0x10
|
|
_0234945C:
|
|
ldrsh r0, [r6, #0x14]
|
|
cmp r5, r0
|
|
blt _02349438
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_0234946C: .word DUNGEON_PTR
|
|
arm_func_end LoadMissionMonsterSprites
|
|
|
|
arm_func_start MissionTargetEnemyIsDefeated
|
|
MissionTargetEnemyIsDefeated: ; 0x02349470
|
|
ldr r0, _0234948C ; =DUNGEON_PTR
|
|
ldr r1, [r0]
|
|
ldrb r0, [r1, #0x760]
|
|
cmp r0, #0
|
|
ldrneb r0, [r1, #0x77b]
|
|
moveq r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_0234948C: .word DUNGEON_PTR
|
|
arm_func_end MissionTargetEnemyIsDefeated
|
|
|
|
arm_func_start SetMissionTargetEnemyDefeated
|
|
SetMissionTargetEnemyDefeated: ; 0x02349490
|
|
ldr r1, _023494A0 ; =DUNGEON_PTR
|
|
ldr r1, [r1]
|
|
strb r0, [r1, #0x77b]
|
|
bx lr
|
|
.align 2, 0
|
|
_023494A0: .word DUNGEON_PTR
|
|
arm_func_end SetMissionTargetEnemyDefeated
|
|
|
|
arm_func_start IsDestinationFloorWithFixedRoom
|
|
IsDestinationFloorWithFixedRoom: ; 0x023494A4
|
|
ldr r0, _023494C8 ; =DUNGEON_PTR
|
|
ldr r1, [r0]
|
|
ldrb r0, [r1, #0x760]
|
|
cmp r0, #0
|
|
ldrneb r0, [r1, #0x776]
|
|
cmpne r0, #0
|
|
moveq r0, #0
|
|
movne r0, #1
|
|
bx lr
|
|
.align 2, 0
|
|
_023494C8: .word DUNGEON_PTR
|
|
arm_func_end IsDestinationFloorWithFixedRoom
|
|
|
|
arm_func_start GetItemToRetrieve
|
|
GetItemToRetrieve: ; 0x023494CC
|
|
ldr r0, _023494EC ; =DUNGEON_PTR
|
|
ldr r1, [r0]
|
|
ldrb r0, [r1, #0x760]
|
|
add r1, r1, #0x760
|
|
cmp r0, #0
|
|
ldrnesh r0, [r1, #4]
|
|
moveq r0, #0
|
|
bx lr
|
|
.align 2, 0
|
|
_023494EC: .word DUNGEON_PTR
|
|
arm_func_end GetItemToRetrieve
|
|
|
|
arm_func_start GetItemToDeliver
|
|
GetItemToDeliver: ; 0x023494F0
|
|
stmdb sp!, {r4, lr}
|
|
ldr r1, _02349518 ; =DUNGEON_PTR
|
|
mov r0, #7
|
|
ldr r1, [r1]
|
|
add r4, r1, #0x760
|
|
bl IsCurrentMissionType
|
|
cmp r0, #0
|
|
ldrnesh r0, [r4, #6]
|
|
moveq r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_02349518: .word DUNGEON_PTR
|
|
arm_func_end GetItemToDeliver
|
|
|
|
arm_func_start GetSpecialTargetItem
|
|
GetSpecialTargetItem: ; 0x0234951C
|
|
stmdb sp!, {r4, lr}
|
|
ldr r1, _02349560 ; =DUNGEON_PTR
|
|
mov r0, #3
|
|
ldr r2, [r1]
|
|
mov r1, #1
|
|
add r4, r2, #0x760
|
|
bl IsCurrentMissionTypeExact
|
|
cmp r0, #0
|
|
bne _02349550
|
|
mov r0, #0xc
|
|
bl IsCurrentMissionType
|
|
cmp r0, #0
|
|
beq _02349558
|
|
_02349550:
|
|
ldrsh r0, [r4, #8]
|
|
ldmia sp!, {r4, pc}
|
|
_02349558:
|
|
mov r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_02349560: .word DUNGEON_PTR
|
|
arm_func_end GetSpecialTargetItem
|
|
|
|
arm_func_start IsDestinationFloorWithItem
|
|
IsDestinationFloorWithItem: ; 0x02349564
|
|
stmdb sp!, {r4, lr}
|
|
ldr r0, _023495C0 ; =DUNGEON_PTR
|
|
ldr r1, [r0]
|
|
ldrb r0, [r1, #0x760]
|
|
add r4, r1, #0x760
|
|
cmp r0, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r4, pc}
|
|
mov r0, #9
|
|
bl IsCurrentMissionType
|
|
cmp r0, #0
|
|
bne _023495B0
|
|
mov r0, #7
|
|
bl IsCurrentMissionType
|
|
cmp r0, #0
|
|
bne _023495B0
|
|
ldrsh r0, [r4, #4]
|
|
cmp r0, #0
|
|
bne _023495B8
|
|
_023495B0:
|
|
mov r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
_023495B8:
|
|
mov r0, #1
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_023495C0: .word DUNGEON_PTR
|
|
arm_func_end IsDestinationFloorWithItem
|
|
|
|
arm_func_start IsDestinationFloorWithHiddenOutlaw
|
|
IsDestinationFloorWithHiddenOutlaw: ; 0x023495C4
|
|
stmdb sp!, {r3, lr}
|
|
mov r0, #9
|
|
mov r1, #1
|
|
bl IsCurrentMissionTypeExact
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end IsDestinationFloorWithHiddenOutlaw
|
|
|
|
arm_func_start IsDestinationFloorWithFleeingOutlaw
|
|
IsDestinationFloorWithFleeingOutlaw: ; 0x023495E8
|
|
stmdb sp!, {r3, lr}
|
|
mov r0, #0xa
|
|
mov r1, #5
|
|
bl IsCurrentMissionTypeExact
|
|
cmp r0, #0
|
|
bne _02349618
|
|
mov r0, #9
|
|
mov r1, #2
|
|
bl IsCurrentMissionTypeExact
|
|
cmp r0, #0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
_02349618:
|
|
mov r0, #1
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end IsDestinationFloorWithFleeingOutlaw
|
|
|
|
arm_func_start GetMissionTargetEnemy
|
|
GetMissionTargetEnemy: ; 0x02349620
|
|
ldr r0, _02349634 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x700
|
|
ldrsh r0, [r0, #0x6e]
|
|
bx lr
|
|
.align 2, 0
|
|
_02349634: .word DUNGEON_PTR
|
|
arm_func_end GetMissionTargetEnemy
|
|
|
|
arm_func_start GetMissionEnemyMinionGroup
|
|
GetMissionEnemyMinionGroup: ; 0x02349638
|
|
ldr r1, _02349654 ; =DUNGEON_PTR
|
|
add r0, r0, #1
|
|
ldr r1, [r1]
|
|
add r0, r1, r0, lsl #1
|
|
add r0, r0, #0x700
|
|
ldrsh r0, [r0, #0x6e]
|
|
bx lr
|
|
.align 2, 0
|
|
_02349654: .word DUNGEON_PTR
|
|
arm_func_end GetMissionEnemyMinionGroup
|
|
|
|
arm_func_start ov29_02349658
|
|
ov29_02349658: ; 0x02349658
|
|
ldr r0, _02349684 ; =DUNGEON_PTR
|
|
mov r2, #0
|
|
ldr r1, [r0]
|
|
strb r2, [r1]
|
|
ldr r1, [r0]
|
|
strb r2, [r1, #1]
|
|
ldr r1, [r0]
|
|
strb r2, [r1, #2]
|
|
ldr r0, [r0]
|
|
strb r2, [r0, #3]
|
|
bx lr
|
|
.align 2, 0
|
|
_02349684: .word DUNGEON_PTR
|
|
arm_func_end ov29_02349658
|
|
|
|
arm_func_start ov29_02349688
|
|
ov29_02349688: ; 0x02349688
|
|
ldr r1, _02349698 ; =DUNGEON_PTR
|
|
ldr r1, [r1]
|
|
strb r0, [r1, #1]
|
|
bx lr
|
|
.align 2, 0
|
|
_02349698: .word DUNGEON_PTR
|
|
arm_func_end ov29_02349688
|
|
|
|
arm_func_start ov29_0234969C
|
|
ov29_0234969C: ; 0x0234969C
|
|
ldr r1, _023496AC ; =DUNGEON_PTR
|
|
ldr r1, [r1]
|
|
strb r0, [r1, #2]
|
|
bx lr
|
|
.align 2, 0
|
|
_023496AC: .word DUNGEON_PTR
|
|
arm_func_end ov29_0234969C
|
|
|
|
arm_func_start ov29_023496B0
|
|
ov29_023496B0: ; 0x023496B0
|
|
ldr r0, _023496C0 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #2]
|
|
bx lr
|
|
.align 2, 0
|
|
_023496C0: .word DUNGEON_PTR
|
|
arm_func_end ov29_023496B0
|
|
|
|
arm_func_start SetTargetMonsterNotFoundFlag
|
|
SetTargetMonsterNotFoundFlag: ; 0x023496C4
|
|
ldr r1, _023496D4 ; =DUNGEON_PTR
|
|
ldr r1, [r1]
|
|
strb r0, [r1, #3]
|
|
bx lr
|
|
.align 2, 0
|
|
_023496D4: .word DUNGEON_PTR
|
|
arm_func_end SetTargetMonsterNotFoundFlag
|
|
|
|
arm_func_start GetTargetMonsterNotFoundFlag
|
|
GetTargetMonsterNotFoundFlag: ; 0x023496D8
|
|
ldr r0, _023496E8 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
ldrb r0, [r0, #3]
|
|
bx lr
|
|
.align 2, 0
|
|
_023496E8: .word DUNGEON_PTR
|
|
arm_func_end GetTargetMonsterNotFoundFlag
|
|
|
|
arm_func_start ov29_023496EC
|
|
ov29_023496EC: ; 0x023496EC
|
|
mov ip, #0
|
|
strb ip, [r0]
|
|
strb ip, [r0, #0x18]
|
|
strb ip, [r0, #0x17]
|
|
strb ip, [r0, #0x1a]
|
|
strh ip, [r0, #4]
|
|
strh ip, [r0, #6]
|
|
strh ip, [r0, #8]
|
|
strb ip, [r0, #0x16]
|
|
strh ip, [r0, #0xa]
|
|
strb ip, [r0, #0x1b]
|
|
strb ip, [r0, #0x1c]
|
|
strh ip, [r0, #0xc]
|
|
mov r3, ip
|
|
_02349724:
|
|
add r1, ip, #1
|
|
mov r1, r1, lsl #0x10
|
|
add r2, r0, ip, lsl #1
|
|
mov ip, r1, asr #0x10
|
|
strh r3, [r2, #0xe]
|
|
cmp ip, #3
|
|
blt _02349724
|
|
strh r3, [r0, #0x14]
|
|
bx lr
|
|
arm_func_end ov29_023496EC
|
|
|
|
arm_func_start FloorHasMissionMonster
|
|
FloorHasMissionMonster: ; 0x02349748
|
|
ldrb r1, [r0]
|
|
cmp r1, #0
|
|
moveq r0, #0
|
|
bxeq lr
|
|
ldrb r0, [r0, #1]
|
|
cmp r0, #7
|
|
cmpne r0, #0
|
|
cmpne r0, #2
|
|
cmpne r0, #1
|
|
beq _02349780
|
|
add r0, r0, #0xf8
|
|
and r0, r0, #0xff
|
|
cmp r0, #3
|
|
bhi _02349788
|
|
_02349780:
|
|
mov r0, #1
|
|
bx lr
|
|
_02349788:
|
|
mov r0, #0
|
|
bx lr
|
|
arm_func_end FloorHasMissionMonster
|
|
|
|
#ifndef JAPAN
|
|
arm_func_start GetMissionIfActiveOnFloor
|
|
GetMissionIfActiveOnFloor: ; 0x02349790
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
mov r0, r1
|
|
bl GetAcceptedMission
|
|
ldrb r1, [r0]
|
|
cmp r1, #5
|
|
ldreqb r2, [r4]
|
|
ldreqb r1, [r0, #4]
|
|
cmpeq r2, r1
|
|
ldreqb r2, [r4, #1]
|
|
ldreqb r1, [r0, #5]
|
|
cmpeq r2, r1
|
|
movne r0, #0
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end GetMissionIfActiveOnFloor
|
|
#endif
|
|
|
|
arm_func_start ov29_023497C8
|
|
ov29_023497C8: ; 0x023497C8
|
|
stmdb sp!, {r4, lr}
|
|
mov ip, #0
|
|
mov r4, ip
|
|
b _02349804
|
|
_023497D8:
|
|
mov r3, r4, lsl #1
|
|
ldrsh lr, [r1, r3]
|
|
cmp lr, #0
|
|
addne r3, ip, #1
|
|
addne ip, r0, ip, lsl #1
|
|
movne r3, r3, lsl #0x10
|
|
strneh lr, [ip, #0xe]
|
|
movne ip, r3, asr #0x10
|
|
add r3, r4, #1
|
|
mov r3, r3, lsl #0x10
|
|
mov r4, r3, asr #0x10
|
|
_02349804:
|
|
cmp r4, #2
|
|
cmplt ip, r2
|
|
blt _023497D8
|
|
strh ip, [r0, #0x14]
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end ov29_023497C8
|
|
|
|
arm_func_start ov29_02349818
|
|
ov29_02349818: ; 0x02349818
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, #0
|
|
add ip, r4, #1
|
|
mov ip, ip, lsl #0x10
|
|
strh r1, [r0, #0xe]
|
|
cmp r2, #0
|
|
mov ip, ip, asr #0x10
|
|
beq _02349874
|
|
b _02349868
|
|
_0234983C:
|
|
mov r1, r4, lsl #1
|
|
ldrsh lr, [r2, r1]
|
|
cmp lr, #0
|
|
addne r1, ip, #1
|
|
addne ip, r0, ip, lsl #1
|
|
movne r1, r1, lsl #0x10
|
|
strneh lr, [ip, #0xe]
|
|
movne ip, r1, asr #0x10
|
|
add r1, r4, #1
|
|
mov r1, r1, lsl #0x10
|
|
mov r4, r1, asr #0x10
|
|
_02349868:
|
|
cmp r4, #2
|
|
cmplt ip, r3
|
|
blt _0234983C
|
|
_02349874:
|
|
strh ip, [r0, #0x14]
|
|
ldmia sp!, {r4, pc}
|
|
arm_func_end ov29_02349818
|