mirror of
https://github.com/pret/pmd-sky.git
synced 2026-03-21 17:25:15 -05:00
1031 lines
19 KiB
ArmAsm
1031 lines
19 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "overlay_29_02348020.inc"
|
|
|
|
.text
|
|
|
|
arm_func_start DoesProjectileHitTarget
|
|
DoesProjectileHitTarget: ; 0x02348020
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r4, r1
|
|
ldr r1, [r4, #0xb4]
|
|
mov r5, r0
|
|
ldrb r0, [r1, #9]
|
|
cmp r0, #1
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r4, r5, r6, pc}
|
|
ldrb r0, [r1, #0xbc]
|
|
cmp r0, #7
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r4, r5, r6, pc}
|
|
mov r0, #0x64
|
|
bl DungeonRandInt
|
|
ldr r1, _023480F8 ; =THROWN_ITEM_HIT_CHANCE
|
|
ldrsh r1, [r1]
|
|
cmp r0, r1
|
|
movlt r1, #1
|
|
movge r1, #0
|
|
ldr r0, [r5]
|
|
and r6, r1, #0xff
|
|
cmp r0, #1
|
|
bne _023480A8
|
|
mov r0, r5
|
|
mov r1, #0x2f
|
|
bl ItemIsActive__02347B50
|
|
cmp r0, #0
|
|
movne r6, #0
|
|
bne _023480A8
|
|
mov r0, r5
|
|
mov r1, #0x31
|
|
bl ItemIsActive__02347B50
|
|
cmp r0, #0
|
|
movne r6, #1
|
|
_023480A8:
|
|
ldr r0, [r4]
|
|
cmp r0, #1
|
|
bne _023480F0
|
|
mov r0, r4
|
|
bl ov29_022FB9BC
|
|
cmp r0, #0
|
|
bne _023480EC
|
|
mov r0, r4
|
|
mov r1, #0x2c
|
|
bl ItemIsActive__02347B50
|
|
cmp r0, #0
|
|
bne _023480EC
|
|
mov r0, r4
|
|
mov r1, #0x53
|
|
bl ExclusiveItemEffectIsActive__02347B80
|
|
cmp r0, #0
|
|
beq _023480F0
|
|
_023480EC:
|
|
mov r6, #0
|
|
_023480F0:
|
|
mov r0, r6
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_023480F8: .word THROWN_ITEM_HIT_CHANCE
|
|
arm_func_end DoesProjectileHitTarget
|
|
|
|
arm_func_start ov29_023480FC
|
|
ov29_023480FC: ; 0x023480FC
|
|
bx lr
|
|
arm_func_end ov29_023480FC
|
|
|
|
arm_func_start ov29_02348100
|
|
ov29_02348100: ; 0x02348100
|
|
#ifdef JAPAN
|
|
#define OV29_02348100_OFFSET -4
|
|
#else
|
|
#define OV29_02348100_OFFSET 0
|
|
#endif
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
movs r4, r0
|
|
moveq r0, #0
|
|
beq _02348124
|
|
ldr r0, [r4]
|
|
cmp r0, #0
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
and r0, r0, #0xff
|
|
_02348124:
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r4, r5, r6, r7, r8, pc}
|
|
ldr r7, [r4, #0xb4]
|
|
ldrb r0, [r7, #6]
|
|
cmp r0, #0
|
|
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
|
|
ldrsh r1, [r7, #4]
|
|
ldrb r2, [r7, #0x5e]
|
|
ldrb r3, [r7, #0x5f]
|
|
add r0, r7, #0x224 + OV29_02348100_OFFSET
|
|
bl sub_02011220
|
|
mov r0, r4
|
|
mov r1, #0x4c
|
|
bl ExclusiveItemEffectIsActive__023482B0
|
|
cmp r0, #0
|
|
ldrne r0, _023482AC ; =_020A1878
|
|
ldrnesh r1, [r7, #0x16]
|
|
ldrnesh r0, [r0]
|
|
addne r0, r1, r0
|
|
strneh r0, [r7, #0x16]
|
|
mov r0, r4
|
|
mov r1, #0x4d
|
|
bl ExclusiveItemEffectIsActive__023482B0
|
|
cmp r0, #0
|
|
ldrne r0, _023482AC ; =_020A1878
|
|
ldrnesh r1, [r7, #0x16]
|
|
ldrnesh r0, [r0]
|
|
addne r0, r1, r0, lsl #1
|
|
strneh r0, [r7, #0x16]
|
|
mov r0, r4
|
|
mov r1, #0x4e
|
|
bl ExclusiveItemEffectIsActive__023482B0
|
|
cmp r0, #0
|
|
beq _023481C4
|
|
ldr r0, _023482AC ; =_020A1878
|
|
ldrsh r1, [r7, #0x16]
|
|
ldrsh r0, [r0]
|
|
add r0, r0, r0, lsl #1
|
|
add r0, r1, r0
|
|
strh r0, [r7, #0x16]
|
|
_023481C4:
|
|
mov r5, #0
|
|
mov r0, r4
|
|
mov r1, #0x4a
|
|
mov r6, r5
|
|
bl ExclusiveItemEffectIsActive__023482B0
|
|
cmp r0, #0
|
|
mov r0, r4
|
|
mov r1, #0x4b
|
|
movne r5, #1
|
|
bl ExclusiveItemEffectIsActive__023482B0
|
|
cmp r0, #0
|
|
movne r6, #1
|
|
mov r8, #0
|
|
add r4, r7, #0x124 + OV29_02348100_OFFSET
|
|
_023481FC:
|
|
add r0, r7, r8, lsl #3
|
|
cmp r5, #0
|
|
addne r0, r0, #0x100
|
|
ldrneh r1, [r0, #0x26 + OV29_02348100_OFFSET]
|
|
orrne r1, r1, #0x200
|
|
strneh r1, [r0, #0x26 + OV29_02348100_OFFSET]
|
|
bne _02348248
|
|
add r1, r0, #0x100
|
|
ldrh r2, [r1, #0x26 + OV29_02348100_OFFSET]
|
|
add r0, r4, r8, lsl #3
|
|
bic r2, r2, #0x200
|
|
strh r2, [r1, #0x26 + OV29_02348100_OFFSET]
|
|
bl GetMaxPp
|
|
add r2, r7, r8, lsl #3
|
|
mov r0, r0, lsl #0x10
|
|
ldrb r1, [r2, #0x12a + OV29_02348100_OFFSET]
|
|
mov r3, r0, asr #0x10
|
|
cmp r1, r0, asr #16
|
|
strgtb r3, [r2, #0x12a + OV29_02348100_OFFSET]
|
|
_02348248:
|
|
add r0, r7, r8, lsl #3
|
|
cmp r6, #0
|
|
addne r0, r0, #0x100
|
|
ldrneh r1, [r0, #0x26 + OV29_02348100_OFFSET]
|
|
orrne r1, r1, #0x400
|
|
strneh r1, [r0, #0x26 + OV29_02348100_OFFSET]
|
|
bne _02348294
|
|
add r1, r0, #0x100
|
|
ldrh r2, [r1, #0x26 + OV29_02348100_OFFSET]
|
|
add r0, r4, r8, lsl #3
|
|
bic r2, r2, #0x400
|
|
strh r2, [r1, #0x26 + OV29_02348100_OFFSET]
|
|
bl GetMaxPp
|
|
add r2, r7, r8, lsl #3
|
|
mov r0, r0, lsl #0x10
|
|
ldrb r1, [r2, #0x12a + OV29_02348100_OFFSET]
|
|
mov r3, r0, asr #0x10
|
|
cmp r1, r0, asr #16
|
|
strgtb r3, [r2, #0x12a + OV29_02348100_OFFSET]
|
|
_02348294:
|
|
add r0, r8, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov r8, r0, asr #0x10
|
|
cmp r8, #4
|
|
blt _023481FC
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
_023482AC: .word _020A1878
|
|
arm_func_end ov29_02348100
|
|
|
|
arm_func_start ExclusiveItemEffectIsActive__023482B0
|
|
ExclusiveItemEffectIsActive__023482B0: ; 0x023482B0
|
|
stmdb sp!, {r3, lr}
|
|
ldr r2, [r0, #0xb4]
|
|
ldrb r0, [r2, #6]
|
|
cmp r0, #0
|
|
movne r0, #0
|
|
ldmneia sp!, {r3, pc}
|
|
#ifdef JAPAN
|
|
add r0, r2, #0x224
|
|
#else
|
|
add r0, r2, #0x228
|
|
#endif
|
|
bl ExclusiveItemEffectFlagTest
|
|
ldmia sp!, {r3, pc}
|
|
arm_func_end ExclusiveItemEffectIsActive__023482B0
|
|
|
|
arm_func_start DisplayFloorCard
|
|
DisplayFloorCard: ; 0x023482D4
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
ldr r1, _02348308 ; =DUNGEON_PTR
|
|
mov r5, r0
|
|
ldr r4, [r1]
|
|
bl GetCurrentHiddenStairsType
|
|
mov r3, r0
|
|
ldrb ip, [r4, #0x749]
|
|
ldrsh r1, [r4, #0x1e]
|
|
ldrb r0, [r4, #0x748]
|
|
mov r2, r5
|
|
add r1, ip, r1
|
|
bl HandleFloorCard
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
_02348308: .word DUNGEON_PTR
|
|
arm_func_end DisplayFloorCard
|
|
|
|
arm_func_start HandleFloorCard
|
|
HandleFloorCard: ; 0x0234830C
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, lr}
|
|
sub sp, sp, #0xc
|
|
mov r7, r0
|
|
mov r6, r1
|
|
mov r0, #4
|
|
mov r1, #0
|
|
mov r5, r2
|
|
mov r4, r3
|
|
bl MemAlloc
|
|
ldr r2, _02348498 ; =ov29_023537C4
|
|
mov r1, #4
|
|
str r0, [r2]
|
|
bl MemZero
|
|
mov r0, #1
|
|
mov r1, #0
|
|
bl ov29_022E0DD8
|
|
mov r0, #3
|
|
mov r1, #0
|
|
bl ov29_022E0DD8
|
|
mov r0, #4
|
|
mov r1, #0
|
|
bl ov29_022E0DD8
|
|
bl ov29_022E0DFC
|
|
mov r0, #1
|
|
mov r1, #0x1000
|
|
mov r2, #0
|
|
bl StartFadeDungeonWrapper
|
|
mov r0, #0
|
|
bl sub_02051EB8
|
|
mov sb, r0
|
|
mov r0, #0
|
|
mov r1, r0
|
|
bl sub_02051DFC
|
|
mov r8, r0
|
|
mov r0, #0
|
|
mov r1, r0
|
|
mov r2, r0
|
|
bl GetBgRegionArea
|
|
mov r1, r8
|
|
mov r2, sb
|
|
mov r3, #0
|
|
str r3, [sp]
|
|
mov ip, #0xe
|
|
str ip, [sp, #4]
|
|
str r3, [sp, #8]
|
|
bl sub_02015328
|
|
bl sub_02015588
|
|
cmp r4, #1
|
|
bne _023483D8
|
|
bl sub_02017A00
|
|
b _023483F8
|
|
_023483D8:
|
|
cmp r4, #2
|
|
bne _023483E8
|
|
bl sub_02017A20
|
|
b _023483F8
|
|
_023483E8:
|
|
mov r1, r6, lsl #0x10
|
|
mov r0, r7
|
|
mov r1, r1, asr #0x10
|
|
bl sub_020178A8
|
|
_023483F8:
|
|
mov r0, #0
|
|
bl ov29_0234C738
|
|
mov r6, #2
|
|
ldr r4, _0234849C ; =DUNGEON_BUTTON_INPUT
|
|
b _02348424
|
|
_0234840C:
|
|
mov r0, r6
|
|
bl AdvanceFrame
|
|
ldrh r0, [r4, #2]
|
|
tst r0, #1
|
|
bne _0234842C
|
|
sub r5, r5, #1
|
|
_02348424:
|
|
cmp r5, #0
|
|
bgt _0234840C
|
|
_0234842C:
|
|
mov r0, #2
|
|
mov r1, #0x1000
|
|
mov r2, #0
|
|
bl StartFadeDungeonWrapper
|
|
mov r0, #0
|
|
bl ov29_0234C738
|
|
mov r0, #1
|
|
mov r1, #0
|
|
bl ov29_022E0DE4
|
|
mov r0, #3
|
|
mov r1, #0
|
|
bl ov29_022E0DE4
|
|
mov r0, #4
|
|
mov r1, #0
|
|
bl ov29_022E0DE4
|
|
bl ov29_022E0E44
|
|
bl sub_0201551C
|
|
ldr r0, _02348498 ; =ov29_023537C4
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
beq _02348490
|
|
bl MemFree
|
|
ldr r0, _02348498 ; =ov29_023537C4
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
_02348490:
|
|
add sp, sp, #0xc
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, pc}
|
|
.align 2, 0
|
|
_02348498: .word ov29_023537C4
|
|
_0234849C: .word DUNGEON_BUTTON_INPUT
|
|
arm_func_end HandleFloorCard
|
|
|
|
arm_func_start FillMissionDestinationInfo
|
|
FillMissionDestinationInfo: ; 0x023484A0
|
|
#ifdef JAPAN
|
|
#define OV29_023484A0_OFFSET -0xA4
|
|
#else
|
|
#define OV29_023484A0_OFFSET 0
|
|
#endif
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
ldr r0, _02348804 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x348
|
|
add r7, r0, #0x400
|
|
add r0, r7, #0x18
|
|
bl ov29_023496EC
|
|
ldr r0, _02348804 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x700
|
|
ldrsb r0, [r0, #0x98]
|
|
cmp r0, #1
|
|
moveq r0, #1
|
|
movne r0, #0
|
|
tst r0, #0xff
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
mov r8, #0
|
|
mov fp, #0x6f
|
|
mov sl, #0xa5
|
|
mov r5, #3
|
|
mov r6, #1
|
|
ldr r4, _02348804 ; =DUNGEON_PTR
|
|
b _02348798
|
|
_023484FC:
|
|
#ifdef JAPAN
|
|
mov r0, r8
|
|
bl GetAcceptedMission
|
|
mov sb, r0
|
|
ldrb r0, [sb]
|
|
cmp r0, #5
|
|
ldreqb r1, [r7]
|
|
ldreqb r0, [sb, #4]
|
|
cmpeq r1, r0
|
|
ldreqb r1, [r7, #1]
|
|
ldreqb r0, [sb, #5]
|
|
cmpeq r1, r0
|
|
movne r0, #0
|
|
bne _02348784
|
|
#else
|
|
mov r0, r7
|
|
mov r1, r8
|
|
bl GetMissionIfActiveOnFloor
|
|
movs sb, r0
|
|
moveq r0, #0
|
|
beq _02348784
|
|
#endif
|
|
strb r6, [r7, #0x18]
|
|
ldrb r0, [sb, #1]
|
|
strb r0, [r7, #0x19]
|
|
ldrb r0, [sb, #2]
|
|
strb r0, [r7, #0x1a]
|
|
ldrsh r0, [sb, #0xe]
|
|
strh r0, [r7, #0x22]
|
|
ldr r0, [r4]
|
|
strb r6, [r0]
|
|
ldrb r0, [r7, #0x19]
|
|
cmp r0, #0xe
|
|
addls pc, pc, r0, lsl #2
|
|
b _0234877C
|
|
_02348548: ; jump table
|
|
b _02348584 ; case 0
|
|
b _02348590 ; case 1
|
|
b _0234859C ; case 2
|
|
b _023485AC ; case 3
|
|
b _02348608 ; case 4
|
|
b _02348618 ; case 5
|
|
b _02348628 ; case 6
|
|
b _02348648 ; case 7
|
|
b _0234865C ; case 8
|
|
b _02348668 ; case 9
|
|
b _0234869C ; case 10
|
|
b _02348718 ; case 11
|
|
b _0234876C ; case 12
|
|
b _0234877C ; case 13
|
|
b _0234877C ; case 14
|
|
_02348584:
|
|
ldrsh r0, [sb, #0x10]
|
|
strh r0, [r7, #0x24]
|
|
b _0234877C
|
|
_02348590:
|
|
ldrsh r0, [sb, #0x10]
|
|
strh r0, [r7, #0x24]
|
|
b _0234877C
|
|
_0234859C:
|
|
ldrsh r0, [sb, #0x10]
|
|
strh r0, [r7, #0x24]
|
|
strb r6, [r7, #0x30]
|
|
b _0234877C
|
|
_023485AC:
|
|
ldrb r0, [sb, #2]
|
|
cmp r0, #0
|
|
ldreq r0, [r4]
|
|
streqb r5, [r0]
|
|
beq _0234877C
|
|
cmp r0, #1
|
|
ldreqsh r0, [sb, #0x14]
|
|
streqh r0, [r7, #0x20]
|
|
streqb sl, [r7, #0x2e]
|
|
beq _0234877C
|
|
cmp r0, #2
|
|
bne _0234877C
|
|
mov r0, #4
|
|
bl DungeonRandInt
|
|
mov r1, r0, lsl #1
|
|
ldr r0, _02348808 ; =ov10_022C48E4
|
|
strb fp, [r7, #0x2e]
|
|
ldrsh r0, [r0, r1]
|
|
strh r0, [r7, #0x1c]
|
|
ldr r1, [r4]
|
|
mov r0, #2
|
|
strb r0, [r1]
|
|
b _0234877C
|
|
_02348608:
|
|
ldrsh r0, [sb, #0x14]
|
|
strh r0, [r7, #0x1c]
|
|
strb r6, [r7, #0x2f]
|
|
b _0234877C
|
|
_02348618:
|
|
ldr r1, [r4]
|
|
mov r0, #3
|
|
strb r0, [r1]
|
|
b _0234877C
|
|
_02348628:
|
|
ldrb r0, [sb, #2]
|
|
cmp r0, #4
|
|
moveq r0, #0
|
|
streqh r0, [r7, #0x1c]
|
|
ldrnesh r0, [sb, #0x14]
|
|
strneh r0, [r7, #0x1c]
|
|
strneb r6, [r7, #0x2f]
|
|
b _0234877C
|
|
_02348648:
|
|
ldrsh r0, [sb, #0x14]
|
|
strh r0, [r7, #0x1e]
|
|
ldrsh r0, [sb, #0x10]
|
|
strh r0, [r7, #0x24]
|
|
b _0234877C
|
|
_0234865C:
|
|
ldrsh r0, [sb, #0x10]
|
|
strh r0, [r7, #0x24]
|
|
b _0234877C
|
|
_02348668:
|
|
ldrb r0, [sb, #2]
|
|
cmp r0, #1
|
|
beq _02348680
|
|
cmp r0, #2
|
|
moveq r0, #0x64
|
|
streqb r0, [r7, #0x34]
|
|
_02348680:
|
|
add r0, r7, #0x18
|
|
add r1, sb, #0x10
|
|
mov r2, #1
|
|
bl ov29_023497C8
|
|
ldrsh r0, [sb, #0x14]
|
|
strh r0, [r7, #0x1c]
|
|
b _0234877C
|
|
_0234869C:
|
|
ldrb r0, [sb, #2]
|
|
cmp r0, #4
|
|
bne _023486BC
|
|
add r1, sb, #0x10
|
|
add r0, r7, #0x18
|
|
mov r2, r6
|
|
bl ov29_023497C8
|
|
b _0234877C
|
|
_023486BC:
|
|
cmp r0, #5
|
|
bne _023486E0
|
|
add r1, sb, #0x10
|
|
add r0, r7, #0x18
|
|
mov r2, r6
|
|
bl ov29_023497C8
|
|
mov r0, #0x64
|
|
strb r0, [r7, #0x34]
|
|
b _0234877C
|
|
_023486E0:
|
|
cmp r0, #6
|
|
bne _02348704
|
|
add r0, r7, #0x18
|
|
add r1, sb, #0x10
|
|
mov r2, #2
|
|
bl ov29_023497C8
|
|
ldrb r0, [sb, #0xc]
|
|
strb r0, [r7, #0x2e]
|
|
b _0234877C
|
|
_02348704:
|
|
add r1, sb, #0x10
|
|
add r0, r7, #0x18
|
|
mov r2, r6
|
|
bl ov29_023497C8
|
|
b _0234877C
|
|
_02348718:
|
|
ldrb r0, [sb, #0xc]
|
|
strb r0, [r7, #0x2e]
|
|
ldrb r0, [r7, #0x1a]
|
|
cmp r0, #0
|
|
bne _02348744
|
|
ldrsh r1, [sb, #0xe]
|
|
add r0, r7, #0x18
|
|
add r2, sb, #0x10
|
|
mov r3, #3
|
|
bl ov29_02349818
|
|
b _0234877C
|
|
_02348744:
|
|
add r0, r0, #0xff
|
|
and r0, r0, #0xff
|
|
cmp r0, #4
|
|
bhi _0234877C
|
|
ldrsh r1, [sb, #0xe]
|
|
add r0, r7, #0x18
|
|
mov r2, #0
|
|
mov r3, #3
|
|
bl ov29_02349818
|
|
b _0234877C
|
|
_0234876C:
|
|
ldrb r0, [sb, #0xc]
|
|
strb r0, [r7, #0x2e]
|
|
ldrsh r0, [sb, #0x14]
|
|
strh r0, [r7, #0x20]
|
|
_0234877C:
|
|
strb r8, [r7, #0x1b]
|
|
mov r0, #1
|
|
_02348784:
|
|
cmp r0, #0
|
|
bne _023487A0
|
|
add r0, r8, #1
|
|
mov r0, r0, lsl #0x18
|
|
mov r8, r0, asr #0x18
|
|
_02348798:
|
|
cmp r8, #8
|
|
blt _023484FC
|
|
_023487A0:
|
|
ldr r0, _02348804 ; =DUNGEON_PTR
|
|
ldr r4, [r0]
|
|
ldrb r0, [r4, #0x760]
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
bl IsDestinationFloorWithFixedRoom
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
bl IsGoldenChamber
|
|
cmp r0, #0
|
|
beq _023487D4
|
|
bl TrySpawnGoldenChamber
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_023487D4:
|
|
ldr r1, _02348804 ; =DUNGEON_PTR
|
|
ldrb r2, [r4, #0x776]
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x4000
|
|
strb r2, [r0, #0xda + OV29_023484A0_OFFSET]
|
|
ldr r0, [r1]
|
|
add r0, r0, #0x4000
|
|
ldrb r1, [r0, #0xda + OV29_023484A0_OFFSET]
|
|
cmp r1, #0x95
|
|
moveq r1, #0xc6
|
|
streqh r1, [r0, #0xd4 + OV29_023484A0_OFFSET]
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_02348804: .word DUNGEON_PTR
|
|
_02348808: .word ov10_022C48E4
|
|
arm_func_end FillMissionDestinationInfo
|
|
|
|
#ifndef JAPAN
|
|
arm_func_start ov29_0234880C
|
|
ov29_0234880C: ; 0x0234880C
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
mov r4, #0
|
|
b _02348840
|
|
_0234881C:
|
|
mov r0, r5
|
|
mov r1, r4
|
|
bl GetMissionIfActiveOnFloor
|
|
cmp r0, #0
|
|
movne r0, r4
|
|
ldmneia sp!, {r3, r4, r5, pc}
|
|
add r0, r4, #1
|
|
mov r0, r0, lsl #0x18
|
|
mov r4, r0, asr #0x18
|
|
_02348840:
|
|
cmp r4, #8
|
|
blt _0234881C
|
|
mvn r0, #0
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end ov29_0234880C
|
|
|
|
arm_func_start ov29_02348850
|
|
ov29_02348850: ; 0x02348850
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _02348884 ; =DUNGEON_PTR
|
|
ldr r1, [r0]
|
|
ldrb r0, [r1, #0x760]
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
add r0, r1, #0x348
|
|
add r0, r0, #0x400
|
|
bl ov29_0234880C
|
|
ldr r1, _02348884 ; =DUNGEON_PTR
|
|
ldr r1, [r1]
|
|
strb r0, [r1, #0x763]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02348884: .word DUNGEON_PTR
|
|
arm_func_end ov29_02348850
|
|
#endif
|
|
|
|
arm_func_start ov29_02348888
|
|
ov29_02348888: ; 0x02348888
|
|
ldr ip, _02348890 ; =ov29_02349AD4
|
|
bx ip
|
|
.align 2, 0
|
|
_02348890: .word ov29_02349AD4
|
|
arm_func_end ov29_02348888
|
|
|
|
arm_func_start ov29_02348894
|
|
ov29_02348894: ; 0x02348894
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, #0
|
|
mov r4, #8
|
|
_023488A0:
|
|
mov r0, r5, lsl #0x18
|
|
mov r0, r0, asr #0x18
|
|
bl GetAcceptedMission
|
|
ldrb r1, [r0]
|
|
add r5, r5, #1
|
|
cmp r1, #7
|
|
streqb r4, [r0]
|
|
cmp r5, #8
|
|
blt _023488A0
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end ov29_02348894
|
|
|
|
arm_func_start ov29_023488C8
|
|
ov29_023488C8: ; 0x023488C8
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r4, #0
|
|
mov r5, #5
|
|
_023488D4:
|
|
mov r0, r4, lsl #0x18
|
|
mov r0, r0, asr #0x18
|
|
bl GetAcceptedMission
|
|
ldrb r1, [r0]
|
|
cmp r1, #7
|
|
ldreqb r1, [r0, #1]
|
|
cmpeq r1, #0xb
|
|
bne _02348908
|
|
ldrb r1, [r0, #2]
|
|
add r1, r1, #0xff
|
|
and r1, r1, #0xff
|
|
cmp r1, #4
|
|
strlsb r5, [r0]
|
|
_02348908:
|
|
add r4, r4, #1
|
|
cmp r4, #8
|
|
blt _023488D4
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end ov29_023488C8
|
|
|
|
arm_func_start ov29_02348918
|
|
ov29_02348918: ; 0x02348918
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r0, _02348990 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r5, r0, #0x348
|
|
bl GetForcedLossReason
|
|
cmp r0, #4
|
|
ldmeqia sp!, {r4, r5, r6, pc}
|
|
mov r4, #0
|
|
mov r6, #7
|
|
_0234893C:
|
|
mov r0, r4, lsl #0x18
|
|
mov r0, r0, asr #0x18
|
|
bl GetAcceptedMission
|
|
ldrb r1, [r0]
|
|
cmp r1, #5
|
|
ldreqb r2, [r5, #0x400]
|
|
ldreqb r1, [r0, #4]
|
|
cmpeq r2, r1
|
|
ldreqb r1, [r0, #1]
|
|
cmpeq r1, #3
|
|
ldreqb r1, [r0, #2]
|
|
cmpeq r1, #3
|
|
streqb r6, [r0]
|
|
ldreqb r1, [r0, #0x16]
|
|
cmpeq r1, #5
|
|
bne _02348980
|
|
bl GenerateMissionEggMonster
|
|
_02348980:
|
|
add r4, r4, #1
|
|
cmp r4, #8
|
|
blt _0234893C
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_02348990: .word DUNGEON_PTR
|
|
arm_func_end ov29_02348918
|
|
|
|
arm_func_start ov29_02348994
|
|
ov29_02348994: ; 0x02348994
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r0, _02348A14 ; =DUNGEON_PTR
|
|
mov r4, #0
|
|
ldr r0, [r0]
|
|
add r6, r0, #0x348
|
|
_023489A8:
|
|
mov r0, r4, lsl #0x18
|
|
mov r0, r0, asr #0x18
|
|
bl GetAcceptedMission
|
|
mov r5, r0
|
|
ldrb r0, [r5]
|
|
cmp r0, #5
|
|
ldreqb r1, [r6, #0x400]
|
|
ldreqb r0, [r5, #4]
|
|
cmpeq r1, r0
|
|
bne _02348A04
|
|
ldrb r0, [r5, #1]
|
|
cmp r0, #6
|
|
cmpne r0, #4
|
|
bne _02348A04
|
|
ldrsh r0, [r5, #0x14]
|
|
bl IsItemInBag
|
|
cmp r0, #0
|
|
beq _02348A04
|
|
ldrb r0, [r5, #0x16]
|
|
cmp r0, #5
|
|
bne _02348A04
|
|
mov r0, r5
|
|
bl GenerateMissionEggMonster
|
|
_02348A04:
|
|
add r4, r4, #1
|
|
cmp r4, #8
|
|
blt _023489A8
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_02348A14: .word DUNGEON_PTR
|
|
arm_func_end ov29_02348994
|
|
|
|
arm_func_start ov29_02348A18
|
|
ov29_02348A18: ; 0x02348A18
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
mov r7, #0
|
|
mov r5, #1
|
|
ldr r6, _02348AB8 ; =0x00000E24
|
|
mov sl, r0
|
|
mov r4, r7
|
|
mov fp, r5
|
|
mov sb, r7
|
|
mov r8, r5
|
|
_02348A3C:
|
|
mov r0, sb
|
|
mov r1, sl
|
|
mov r2, sb
|
|
mov r3, r8
|
|
str sb, [sp]
|
|
bl YesNoMenu
|
|
cmp r0, #1
|
|
bne _02348A90
|
|
mov r0, r7
|
|
mov r1, r6
|
|
mov r2, r5
|
|
mov r3, r5
|
|
str r7, [sp]
|
|
bl YesNoMenu
|
|
cmp r0, #1
|
|
bne _02348A3C
|
|
mov r0, #2
|
|
mov r1, #1
|
|
bl SetDungeonEscapeFields
|
|
mov r0, #1
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
_02348A90:
|
|
mov r0, r4
|
|
mov r2, fp
|
|
mov r3, fp
|
|
add r1, r6, #1
|
|
str r4, [sp]
|
|
bl YesNoMenu
|
|
cmp r0, #1
|
|
bne _02348A3C
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
#ifdef JAPAN
|
|
_02348AB8: .word 0x00000B65
|
|
#else
|
|
_02348AB8: .word 0x00000E24
|
|
#endif
|
|
arm_func_end ov29_02348A18
|
|
|
|
arm_func_start ov29_02348ABC
|
|
ov29_02348ABC: ; 0x02348ABC
|
|
stmdb sp!, {r3, lr}
|
|
bl GetItemToRetrieve
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
bl GetItemToRetrieve
|
|
mov r1, r0
|
|
mov r0, #1
|
|
bl ov29_02344B9C
|
|
ldr r1, _02348B20 ; =DUNGEON_PTR
|
|
ldr r0, _02348B24 ; =0x00000E22
|
|
ldr r1, [r1]
|
|
mov r2, #0
|
|
strb r2, [r1, #0x777]
|
|
bl ov29_02348A18
|
|
cmp r0, #0
|
|
ldmeqia sp!, {r3, pc}
|
|
bl GetItemToRetrieve
|
|
mov r1, r0
|
|
mov r0, #0
|
|
bl ov29_02349AD4
|
|
ldr r0, _02348B20 ; =DUNGEON_PTR
|
|
mov r1, #1
|
|
ldr r0, [r0]
|
|
strb r1, [r0, #0x77a]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02348B20: .word DUNGEON_PTR
|
|
#ifdef JAPAN
|
|
_02348B24: .word 0x00000B63
|
|
#else
|
|
_02348B24: .word 0x00000E22
|
|
#endif
|
|
arm_func_end ov29_02348ABC
|
|
|
|
arm_func_start ov29_02348B28
|
|
ov29_02348B28: ; 0x02348B28
|
|
stmdb sp!, {r4, lr}
|
|
ldr r1, _02348B94 ; =DUNGEON_PTR
|
|
mov r4, r0
|
|
ldr r1, [r1]
|
|
mov r0, #0
|
|
add r1, r1, #0x700
|
|
ldrsh r1, [r1, #0x6a]
|
|
bl SetMessageLogPreprocessorArgsFlagVal
|
|
mov r1, r4
|
|
mov r0, #1
|
|
bl PrepareItemForPrinting__02345728
|
|
ldr r1, _02348B98 ; =0x00000E17
|
|
mov r0, #0
|
|
mov r2, #1
|
|
bl DisplayMessage2
|
|
bl GetLeader
|
|
mov r1, r0
|
|
mov r0, #0
|
|
mov r2, r0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldr r0, _02348B9C ; =0x00000E44
|
|
bl ov29_02348A18
|
|
mov r1, #1
|
|
ldr r0, _02348B94 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
strb r1, [r0, #0x77a]
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_02348B94: .word DUNGEON_PTR
|
|
#ifdef JAPAN
|
|
_02348B98: .word 0x00000B58
|
|
_02348B9C: .word 0x00000B85
|
|
#else
|
|
_02348B98: .word 0x00000E17
|
|
_02348B9C: .word 0x00000E44
|
|
#endif
|
|
arm_func_end ov29_02348B28
|
|
|
|
arm_func_start ov29_02348BA0
|
|
ov29_02348BA0: ; 0x02348BA0
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
bl ov29_02349A70
|
|
movs r4, r0
|
|
moveq r0, #0
|
|
ldmeqia sp!, {r3, r4, r5, pc}
|
|
bl ov29_023009CC
|
|
cmp r0, #0
|
|
beq _02348BD8
|
|
mov r0, r5
|
|
mov r1, r4
|
|
bl CanSeeTarget
|
|
cmp r0, #0
|
|
bne _02348BE0
|
|
_02348BD8:
|
|
mov r0, #0
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_02348BE0:
|
|
mov r0, #1
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
arm_func_end ov29_02348BA0
|
|
|
|
arm_func_start ov29_02348BE8
|
|
ov29_02348BE8: ; 0x02348BE8
|
|
stmdb sp!, {r4, lr}
|
|
sub sp, sp, #0x10
|
|
bl ov29_02349A70
|
|
movs r4, r0
|
|
beq _02348C50
|
|
ldr r1, [r4, #0xb4]
|
|
add r0, sp, #0
|
|
ldrsh r1, [r1, #4]
|
|
mov r2, #0
|
|
bl InitPortraitDungeon
|
|
mov r1, r4
|
|
mov r0, #1
|
|
mov r2, #0
|
|
bl SubstitutePlaceholderStringTags
|
|
ldr r1, _02348C58 ; =0x00000E3B
|
|
add r0, sp, #0
|
|
mov r2, #1
|
|
bl DisplayMessage
|
|
ldr r1, _02348C5C ; =0x00000E3C
|
|
mov r0, #0
|
|
mov r2, #1
|
|
bl DisplayMessage
|
|
ldr r1, _02348C60 ; =0x00000E3D
|
|
add r0, sp, #0
|
|
mov r2, #1
|
|
bl DisplayMessage2
|
|
_02348C50:
|
|
add sp, sp, #0x10
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
#ifdef JAPAN
|
|
#define OV29_02348BE8_OFFSET -0x2BF
|
|
#else
|
|
#define OV29_02348BE8_OFFSET 0
|
|
#endif
|
|
_02348C58: .word 0x00000E3B + OV29_02348BE8_OFFSET
|
|
_02348C5C: .word 0x00000E3C + OV29_02348BE8_OFFSET
|
|
_02348C60: .word 0x00000E3D + OV29_02348BE8_OFFSET
|
|
arm_func_end ov29_02348BE8
|
|
|
|
arm_func_start ov29_02348C64
|
|
ov29_02348C64: ; 0x02348C64
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
sub sp, sp, #0x40
|
|
ldr r1, _02348CFC ; =DUNGEON_PTR
|
|
mov r5, r0
|
|
ldr r0, [r1]
|
|
mov r4, #0
|
|
add r6, r0, #0x348
|
|
b _02348CEC
|
|
_02348C84:
|
|
mov r0, r4, lsl #0x18
|
|
mov r0, r0, asr #0x18
|
|
bl GetAcceptedMission
|
|
ldrb r1, [r0]
|
|
cmp r1, #5
|
|
ldreqb r2, [r6, #0x400]
|
|
ldreqb r1, [r0, #4]
|
|
cmpeq r2, r1
|
|
ldreqb r1, [r0, #1]
|
|
cmpeq r1, #2
|
|
bne _02348CE8
|
|
ldrsh r1, [r0, #0x10]
|
|
add r0, sp, #0
|
|
mov r2, #0x4e
|
|
bl GetName
|
|
mov r0, r5
|
|
bl GetSize0x80Buffer
|
|
add r1, sp, #0
|
|
bl strcpy
|
|
mov r0, r5
|
|
bl GetSize0x80Buffer
|
|
mov r1, r0
|
|
mov r0, r5
|
|
bl SetMessageLogPreprocessorArgsString
|
|
b _02348CF4
|
|
_02348CE8:
|
|
add r4, r4, #1
|
|
_02348CEC:
|
|
cmp r4, #8
|
|
blt _02348C84
|
|
_02348CF4:
|
|
add sp, sp, #0x40
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_02348CFC: .word DUNGEON_PTR
|
|
arm_func_end ov29_02348C64
|