mirror of
https://github.com/pret/pmd-sky.git
synced 2026-03-21 17:25:15 -05:00
2646 lines
48 KiB
ArmAsm
2646 lines
48 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "overlay_29_02341E6C.inc"
|
|
|
|
.text
|
|
|
|
arm_func_start StairsAlwaysReachable
|
|
StairsAlwaysReachable: ; 0x02341E6C
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
sub sp, sp, #0x700
|
|
mov r7, r0
|
|
mov r6, r1
|
|
mov r5, r2
|
|
mov r4, #0
|
|
_02341E84:
|
|
mov sl, #0
|
|
add r0, sp, #0
|
|
mov r8, sl
|
|
add sb, r0, r4, lsl #5
|
|
_02341E94:
|
|
mov r0, r4
|
|
mov r1, sl
|
|
bl GetTileSafe
|
|
ldrh r1, [r0]
|
|
cmp r5, #0
|
|
strb r8, [sb, sl]
|
|
ldrneh r2, [r0]
|
|
and r1, r1, #3
|
|
bicne r2, r2, #0x8000
|
|
strneh r2, [r0]
|
|
cmp r1, #1
|
|
beq _02341ED8
|
|
ldrh r2, [r0]
|
|
tst r2, #4
|
|
ldreqb r2, [sb, sl]
|
|
orreq r2, r2, #1
|
|
streqb r2, [sb, sl]
|
|
_02341ED8:
|
|
cmp r1, #2
|
|
bne _02341EF4
|
|
ldrh r0, [r0]
|
|
tst r0, #4
|
|
ldreqb r0, [sb, sl]
|
|
orreq r0, r0, #2
|
|
streqb r0, [sb, sl]
|
|
_02341EF4:
|
|
add sl, sl, #1
|
|
cmp sl, #0x20
|
|
blt _02341E94
|
|
add r4, r4, #1
|
|
cmp r4, #0x38
|
|
blt _02341E84
|
|
add r1, sp, #0
|
|
ldr r0, _02342174 ; =DUNGEON_PTR
|
|
add r2, r1, r7, lsl #5
|
|
ldrb r1, [r2, r6]
|
|
ldr r0, [r0]
|
|
orr r1, r1, #0x50
|
|
add r0, r0, #0xcc00
|
|
strb r1, [r2, r6]
|
|
#ifdef JAPAN
|
|
ldrsh r1, [r0, #0x40]
|
|
cmp r1, r7
|
|
ldreqsh r0, [r0, #0x42]
|
|
#else
|
|
ldrsh r1, [r0, #0xe4]
|
|
cmp r1, r7
|
|
ldreqsh r0, [r0, #0xe6]
|
|
#endif
|
|
cmpeq r0, r6
|
|
movne r0, #0
|
|
bne _0234216C
|
|
ldr r0, _02342178 ; =FLOOR_GENERATION_STATUS
|
|
mov r4, #0
|
|
str r4, [r0, #0x24]
|
|
_02341F50:
|
|
mov r3, #0
|
|
mov r7, r3
|
|
add r4, r4, #1
|
|
add r0, sp, #0
|
|
mov r2, r3
|
|
_02341F64:
|
|
mov r8, r2
|
|
add r1, r0, r7, lsl #5
|
|
_02341F6C:
|
|
ldrb sb, [r1, r8]
|
|
add r6, r1, r8
|
|
tst sb, #0x80
|
|
bne _023420D0
|
|
tst sb, #0x40
|
|
beq _023420D0
|
|
bic sl, sb, #0x40
|
|
and sb, sl, #0xff
|
|
orr sb, sb, #0x80
|
|
strb sb, [r6]
|
|
cmp r7, #0
|
|
add r3, r3, #1
|
|
ble _02341FB0
|
|
ldrb sb, [r6, #-0x20]
|
|
tst sb, #0x83
|
|
orreq sb, sb, #0x40
|
|
streqb sb, [r6, #-0x20]
|
|
_02341FB0:
|
|
cmp r8, #0
|
|
ble _02341FC8
|
|
ldrb sb, [r6, #-1]
|
|
tst sb, #0x83
|
|
orreq sb, sb, #0x40
|
|
streqb sb, [r6, #-1]
|
|
_02341FC8:
|
|
cmp r7, #0x37
|
|
bge _02341FE0
|
|
ldrb sb, [r6, #0x20]
|
|
tst sb, #0x83
|
|
orreq sb, sb, #0x40
|
|
streqb sb, [r6, #0x20]
|
|
_02341FE0:
|
|
cmp r8, #0x1f
|
|
bge _02341FF8
|
|
ldrb sb, [r6, #1]
|
|
tst sb, #0x83
|
|
orreq sb, sb, #0x40
|
|
streqb sb, [r6, #1]
|
|
_02341FF8:
|
|
cmp r7, #0
|
|
cmpgt r8, #0
|
|
ble _0234202C
|
|
ldrb sl, [r6, #-0x21]
|
|
tst sl, #0x87
|
|
bne _0234202C
|
|
ldrb sb, [r6, #-0x20]
|
|
tst sb, #1
|
|
bne _0234202C
|
|
ldrb sb, [r6, #-1]
|
|
tst sb, #1
|
|
orreq sb, sl, #0x40
|
|
streqb sb, [r6, #-0x21]
|
|
_0234202C:
|
|
cmp r7, #0x37
|
|
bge _02342064
|
|
cmp r8, #0
|
|
ble _02342064
|
|
ldrb sl, [r6, #0x1f]
|
|
tst sl, #0x87
|
|
bne _02342064
|
|
ldrb sb, [r6, #0x20]
|
|
tst sb, #1
|
|
bne _02342064
|
|
ldrb sb, [r6, #-1]
|
|
tst sb, #1
|
|
orreq sb, sl, #0x40
|
|
streqb sb, [r6, #0x1f]
|
|
_02342064:
|
|
cmp r7, #0
|
|
ble _0234209C
|
|
cmp r8, #0x1f
|
|
bge _0234209C
|
|
ldrb sl, [r6, #-0x1f]
|
|
tst sl, #0x87
|
|
bne _0234209C
|
|
ldrb sb, [r6, #-0x20]
|
|
tst sb, #1
|
|
bne _0234209C
|
|
ldrb sb, [r6, #1]
|
|
tst sb, #1
|
|
orreq sb, sl, #0x40
|
|
streqb sb, [r6, #-0x1f]
|
|
_0234209C:
|
|
cmp r7, #0x37
|
|
cmplt r8, #0x1f
|
|
bge _023420D0
|
|
ldrb sl, [r6, #0x21]
|
|
tst sl, #0x87
|
|
bne _023420D0
|
|
ldrb sb, [r6, #0x20]
|
|
tst sb, #1
|
|
bne _023420D0
|
|
ldrb sb, [r6, #1]
|
|
tst sb, #1
|
|
orreq sb, sl, #0x40
|
|
streqb sb, [r6, #0x21]
|
|
_023420D0:
|
|
add r8, r8, #1
|
|
cmp r8, #0x20
|
|
blt _02341F6C
|
|
add r7, r7, #1
|
|
cmp r7, #0x38
|
|
blt _02341F64
|
|
cmp r3, #0
|
|
bne _02341F50
|
|
ldr r0, _02342178 ; =FLOOR_GENERATION_STATUS
|
|
mov r8, #0
|
|
str r4, [r0, #0x24]
|
|
add r6, sp, #0
|
|
mov r7, r8
|
|
b _02342160
|
|
_02342108:
|
|
mov sb, r7
|
|
add r4, r6, r8, lsl #5
|
|
b _02342154
|
|
_02342114:
|
|
mov r0, r8
|
|
mov r1, sb
|
|
bl GetTileSafe
|
|
ldrb r1, [sb, r4]
|
|
tst r1, #0x87
|
|
bne _02342150
|
|
cmp r5, #0
|
|
ldrneh r1, [r0]
|
|
orrne r1, r1, #0x8000
|
|
strneh r1, [r0]
|
|
bne _02342150
|
|
ldrh r0, [r0]
|
|
tst r0, #0x100
|
|
moveq r0, #0
|
|
beq _0234216C
|
|
_02342150:
|
|
add sb, sb, #1
|
|
_02342154:
|
|
cmp sb, #0x20
|
|
blt _02342114
|
|
add r8, r8, #1
|
|
_02342160:
|
|
cmp r8, #0x38
|
|
blt _02342108
|
|
mov r0, #1
|
|
_0234216C:
|
|
add sp, sp, #0x700
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
.align 2, 0
|
|
_02342174: .word DUNGEON_PTR
|
|
_02342178: .word FLOOR_GENERATION_STATUS
|
|
arm_func_end StairsAlwaysReachable
|
|
|
|
arm_func_start ov29_0234217C
|
|
ov29_0234217C: ; 0x0234217C
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x30
|
|
mov r4, #0
|
|
str r0, [sp]
|
|
mov r0, r4
|
|
str r0, [sp, #0x18]
|
|
ldr r0, [sp, #0x58]
|
|
str r4, [sp, #0x1c]
|
|
str r0, [sp, #0x58]
|
|
ldr r0, [sp, #0x5c]
|
|
str r1, [sp, #4]
|
|
str r0, [sp, #0x5c]
|
|
ldr r0, [sp, #0x60]
|
|
str r2, [sp, #8]
|
|
str r0, [sp, #0x60]
|
|
ldr r0, [sp, #0x64]
|
|
str r3, [sp, #0xc]
|
|
str r0, [sp, #0x64]
|
|
b _023424B8
|
|
_023421C8:
|
|
ldr r0, [sp]
|
|
mov r1, #0x1e
|
|
mla r8, r4, r1, r0
|
|
ldr r0, [sp, #0x58]
|
|
mov sl, #0
|
|
add r0, r0, r4, lsl #2
|
|
str r0, [sp, #0x20]
|
|
ldr r0, [sp, #4]
|
|
sub r0, r0, #1
|
|
str r0, [sp, #0x28]
|
|
ldr r0, [sp, #8]
|
|
sub r0, r0, #1
|
|
str r0, [sp, #0x2c]
|
|
b _023424A8
|
|
_02342200:
|
|
ldr r0, [sp, #4]
|
|
cmp r0, #2
|
|
ldr r0, [sp, #0xc]
|
|
ldr r2, [r0, sl, lsl #2]
|
|
ldr r0, [sp, #0x58]
|
|
add sb, r2, #2
|
|
ldr r3, [r0, r4, lsl #2]
|
|
ldr r0, [sp, #0xc]
|
|
add r5, r3, #2
|
|
add r0, r0, sl, lsl #2
|
|
ldr r1, [r0, #4]
|
|
ldr r0, [sp, #0x20]
|
|
sub r2, r1, r2
|
|
ldr r0, [r0, #4]
|
|
sub r1, r0, r3
|
|
sub r0, r2, #4
|
|
str r0, [sp, #0x14]
|
|
sub fp, r1, #4
|
|
movle r1, #0xe
|
|
strle r1, [sp, #0x14]
|
|
mov r0, #5
|
|
mov r7, r0
|
|
ldr r1, [sp, #8]
|
|
movle r0, #0xa
|
|
cmp r1, #1
|
|
ldr r1, _023424CC ; =0x000001C2
|
|
moveq r7, #0x10
|
|
mla r1, sl, r1, r8
|
|
str r1, [sp, #0x10]
|
|
ldrb r1, [r1, #0xa]
|
|
moveq fp, #0x18
|
|
cmp r1, #0
|
|
beq _023423D8
|
|
ldr r2, [sp, #0x18]
|
|
ldr r1, [sp, #0x5c]
|
|
cmp r2, r1
|
|
beq _0234231C
|
|
ldr r1, [sp, #0x14]
|
|
bl DungeonRandRange
|
|
mov r6, r0
|
|
mov r0, r7
|
|
mov r1, fp
|
|
bl DungeonRandRange
|
|
mov r7, r0
|
|
ldr r0, [sp, #0x14]
|
|
orr r1, r6, #1
|
|
cmp r1, r0
|
|
orr r0, r7, #1
|
|
movlt r6, r1
|
|
cmp r0, fp
|
|
movlt r7, r0
|
|
add r0, r7, r7, lsl #1
|
|
add r0, r0, r0, lsr #31
|
|
cmp r6, r0, asr #1
|
|
mov r0, r0, asr #1
|
|
movgt r6, r0
|
|
add r0, r6, r6, lsl #1
|
|
add r0, r0, r0, lsr #31
|
|
cmp r7, r0, asr #1
|
|
mov r0, r0, asr #1
|
|
movgt r7, r0
|
|
ldr r0, [sp, #0x14]
|
|
sub r0, r0, r6
|
|
bl DungeonRandInt
|
|
add sb, sb, r0
|
|
sub r0, fp, r7
|
|
bl DungeonRandInt
|
|
add r5, r5, r0
|
|
add fp, sb, r6
|
|
add r6, r5, r7
|
|
b _0234232C
|
|
_0234231C:
|
|
ldr r0, [sp, #0x60]
|
|
add fp, sb, r0
|
|
ldr r0, [sp, #0x64]
|
|
add r6, r5, r0
|
|
_0234232C:
|
|
ldr r0, _023424CC ; =0x000001C2
|
|
mul r0, sl, r0
|
|
strh sb, [r8, r0]
|
|
add r0, r8, r0
|
|
strh fp, [r0, #4]
|
|
strh r5, [r0, #2]
|
|
strh r6, [r0, #6]
|
|
ldr r0, [sp, #0x1c]
|
|
and r0, r0, #0xff
|
|
str r0, [sp, #0x24]
|
|
b _023423A8
|
|
_02342358:
|
|
mov r7, r5
|
|
b _0234239C
|
|
_02342360:
|
|
mov r0, sb
|
|
mov r1, r7
|
|
bl GetTileSafe
|
|
ldrh r2, [r0]
|
|
mov r1, r7
|
|
bic r2, r2, #3
|
|
strh r2, [r0]
|
|
ldrh r2, [r0]
|
|
orr r2, r2, #1
|
|
strh r2, [r0]
|
|
mov r0, sb
|
|
bl GetTileSafe
|
|
ldr r1, [sp, #0x24]
|
|
add r7, r7, #1
|
|
strb r1, [r0, #7]
|
|
_0234239C:
|
|
cmp r7, r6
|
|
blt _02342360
|
|
add sb, sb, #1
|
|
_023423A8:
|
|
cmp sb, fp
|
|
blt _02342358
|
|
ldr r1, [sp, #0x18]
|
|
ldr r0, [sp, #0x5c]
|
|
cmp r1, r0
|
|
ldrne r0, [sp, #0x10]
|
|
movne r1, #1
|
|
strneb r1, [r0, #0x1d]
|
|
ldr r0, [sp, #0x1c]
|
|
add r0, r0, #1
|
|
str r0, [sp, #0x1c]
|
|
b _02342498
|
|
_023423D8:
|
|
mov r2, #2
|
|
ldr r0, [sp, #0x28]
|
|
mov r7, r2
|
|
cmp sl, #0
|
|
moveq r2, #1
|
|
cmp r4, #0
|
|
moveq r7, #1
|
|
cmp sl, r0
|
|
mov r1, #4
|
|
mov r6, r1
|
|
ldr r0, [sp, #0x2c]
|
|
moveq r1, #2
|
|
cmp r4, r0
|
|
add r0, sb, r2
|
|
ldr r2, [sp, #0x14]
|
|
moveq r6, #2
|
|
add r2, sb, r2
|
|
sub r1, r2, r1
|
|
bl DungeonRandRange
|
|
add r1, r5, fp
|
|
sub r1, r1, r6
|
|
mov r6, r0
|
|
add r0, r5, r7
|
|
bl DungeonRandRange
|
|
mov r5, r0
|
|
ldr r0, _023424CC ; =0x000001C2
|
|
mul r0, sl, r0
|
|
strh r6, [r8, r0]
|
|
add r1, r8, r0
|
|
add r0, r6, #1
|
|
strh r0, [r1, #4]
|
|
strh r5, [r1, #2]
|
|
add r0, r5, #1
|
|
strh r0, [r1, #6]
|
|
mov r0, r6
|
|
mov r1, r5
|
|
bl GetTileSafe
|
|
ldrh r2, [r0]
|
|
mov r1, r5
|
|
bic r2, r2, #3
|
|
strh r2, [r0]
|
|
ldrh r2, [r0]
|
|
orr r2, r2, #1
|
|
strh r2, [r0]
|
|
mov r0, r6
|
|
bl GetTileSafe
|
|
mov r1, #0xff
|
|
strb r1, [r0, #7]
|
|
_02342498:
|
|
ldr r0, [sp, #0x18]
|
|
add sl, sl, #1
|
|
add r0, r0, #1
|
|
str r0, [sp, #0x18]
|
|
_023424A8:
|
|
ldr r0, [sp, #4]
|
|
cmp sl, r0
|
|
blt _02342200
|
|
add r4, r4, #1
|
|
_023424B8:
|
|
ldr r0, [sp, #8]
|
|
cmp r4, r0
|
|
blt _023421C8
|
|
add sp, sp, #0x30
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_023424CC: .word 0x000001C2
|
|
arm_func_end ov29_0234217C
|
|
|
|
arm_func_start GetNextFixedRoomAction
|
|
GetNextFixedRoomAction: ; 0x023424D0
|
|
ldr r1, _02342510 ; =FLOOR_GENERATION_STATUS
|
|
ldrh r0, [r1, #0xa]
|
|
cmp r0, #0
|
|
subne r0, r0, #1
|
|
bne _02342504
|
|
ldr r0, _02342514 ; =HIDDEN_STAIRS_SPAWN_BLOCKED
|
|
ldr ip, [r0, #4]
|
|
ldrh r3, [ip]
|
|
add r2, ip, #2
|
|
add r2, r2, #2
|
|
strh r3, [r1, #0xe]
|
|
str r2, [r0, #4]
|
|
ldrh r0, [ip, #2]
|
|
_02342504:
|
|
strh r0, [r1, #0xa]
|
|
ldrh r0, [r1, #0xe]
|
|
bx lr
|
|
.align 2, 0
|
|
_02342510: .word FLOOR_GENERATION_STATUS
|
|
_02342514: .word HIDDEN_STAIRS_SPAWN_BLOCKED
|
|
arm_func_end GetNextFixedRoomAction
|
|
|
|
arm_func_start ov29_02342518
|
|
ov29_02342518: ; 0x02342518
|
|
stmdb sp!, {r3, r4, lr}
|
|
sub sp, sp, #4
|
|
ldrh r4, [r0]
|
|
ldrb ip, [sp, #0x10]
|
|
mov lr, #0
|
|
orr r4, r4, #0x100
|
|
strh r4, [r0]
|
|
strb lr, [r0, #6]
|
|
str ip, [sp]
|
|
bl PlaceFixedRoomTile
|
|
add sp, sp, #4
|
|
ldmia sp!, {r3, r4, pc}
|
|
arm_func_end ov29_02342518
|
|
|
|
arm_func_start ConvertWallsToChasms
|
|
ConvertWallsToChasms: ; 0x02342548
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
mov r6, #0
|
|
mov r4, r6
|
|
_02342554:
|
|
mov r5, r4
|
|
_02342558:
|
|
mov r0, r5
|
|
mov r1, r6
|
|
bl GetTileSafe
|
|
ldrh r1, [r0]
|
|
add r5, r5, #1
|
|
tst r1, #3
|
|
ldreqh r1, [r0]
|
|
orreq r1, r1, #3
|
|
streqh r1, [r0]
|
|
cmp r5, #0x38
|
|
blt _02342558
|
|
add r6, r6, #1
|
|
cmp r6, #0x20
|
|
blt _02342554
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
arm_func_end ConvertWallsToChasms
|
|
|
|
arm_func_start ov29_02342594
|
|
ov29_02342594: ; 0x02342594
|
|
#ifdef JAPAN
|
|
#define OV29_02342594_OFFSET -0xA4
|
|
#else
|
|
#define OV29_02342594_OFFSET 0
|
|
#endif
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x18
|
|
ldr r2, _023427D8 ; =DUNGEON_PTR
|
|
ldr r4, _023427DC ; =HIDDEN_STAIRS_SPAWN_BLOCKED
|
|
ldr sb, [r2]
|
|
ldr r3, _023427E0 ; =FLOOR_GENERATION_STATUS
|
|
add r2, sb, #0x12000
|
|
ldr r5, [r2, #0xaa4 + OV29_02342594_OFFSET]
|
|
mov r6, #0
|
|
ldr r5, [r5, r1, lsl #2]
|
|
mov sl, r0
|
|
add r0, r5, #6
|
|
str r0, [r4, #4]
|
|
strh r6, [r3, #0xa]
|
|
ldr r0, [r2, #0xaa4 + OV29_02342594_OFFSET]
|
|
ldr r0, [r0, r1, lsl #2]
|
|
ldrh r0, [r0, #4]
|
|
tst r0, #1
|
|
beq _0234274C
|
|
ldrsh r1, [sl]
|
|
add r0, sb, #0xc000
|
|
str r1, [r0, #0xd24 + OV29_02342594_OFFSET]
|
|
ldrsh r1, [sl, #2]
|
|
str r1, [r0, #0xd28 + OV29_02342594_OFFSET]
|
|
ldrsh r1, [sl, #4]
|
|
str r1, [r0, #0xd2c + OV29_02342594_OFFSET]
|
|
ldrsh r1, [sl, #6]
|
|
str r1, [r0, #0xd30 + OV29_02342594_OFFSET]
|
|
ldrsh r8, [sl, #2]
|
|
b _0234273C
|
|
_0234260C:
|
|
mov r0, #0x14
|
|
mul r0, r6, r0
|
|
str r0, [sp, #4]
|
|
add r0, sb, r0
|
|
str r0, [sp, #8]
|
|
add r0, sb, r6, lsl #1
|
|
#ifdef JAPAN
|
|
add r1, sb, #0xbc
|
|
str r0, [sp, #0xc]
|
|
add r0, r1, #0xcc00
|
|
#else
|
|
add r1, sb, #0xd60
|
|
str r0, [sp, #0xc]
|
|
add r0, r1, #0xc000
|
|
#endif
|
|
str r0, [sp, #0x10]
|
|
add r0, sb, #0xd000
|
|
ldrsh r4, [sl]
|
|
mov r5, #0
|
|
str r0, [sp, #0x14]
|
|
b _02342728
|
|
_02342648:
|
|
bl GetNextFixedRoomAction
|
|
mov fp, r0
|
|
mov r0, r4
|
|
mov r1, r8
|
|
bl GetTileSafe
|
|
mov r7, r0
|
|
ldr r0, [sp, #0xc]
|
|
mov r1, fp
|
|
add r0, r0, r5, lsl #4
|
|
#ifdef JAPAN
|
|
add r0, r0, #0xd100
|
|
strh fp, [r0, #0xbc]
|
|
#else
|
|
add r0, r0, #0xd200
|
|
strh fp, [r0, #0x60]
|
|
#endif
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
mov r0, #0xa0
|
|
mul fp, r5, r0
|
|
ldr r0, [sp, #0x10]
|
|
mov r3, r8
|
|
add r2, r0, fp
|
|
ldr r0, [sp, #4]
|
|
add r0, r2, r0
|
|
mov r2, r4
|
|
bl ov29_02342518
|
|
ldr r0, [sp, #8]
|
|
ldrb ip, [r7, #7]
|
|
add r0, r0, fp
|
|
#ifdef JAPAN
|
|
add r0, r0, #0xbc
|
|
add fp, r0, #0xcc00
|
|
#else
|
|
add r0, r0, #0xd60
|
|
add fp, r0, #0xc000
|
|
#endif
|
|
ldmia fp!, {r0, r1, r2, r3}
|
|
mov lr, r7
|
|
stmia lr!, {r0, r1, r2, r3}
|
|
ldr r0, [fp]
|
|
str r0, [lr]
|
|
ldrsh r0, [sl]
|
|
add r0, r0, #2
|
|
cmp r4, r0
|
|
blt _02342714
|
|
ldrsh r0, [sl, #4]
|
|
sub r0, r0, #2
|
|
cmp r4, r0
|
|
bge _02342714
|
|
ldrsh r0, [sl, #2]
|
|
add r0, r0, #2
|
|
cmp r8, r0
|
|
blt _02342714
|
|
ldrsh r0, [sl, #6]
|
|
sub r0, r0, #2
|
|
cmp r8, r0
|
|
movlt r0, #0x110
|
|
strlth r0, [r7]
|
|
movlt r0, #0xe
|
|
strltb r0, [r7, #6]
|
|
_02342714:
|
|
ldr r0, [sp, #0x14]
|
|
strb ip, [r7, #7]
|
|
strb ip, [r0, #0x2e0 + OV29_02342594_OFFSET]
|
|
add r5, r5, #1
|
|
add r4, r4, #1
|
|
_02342728:
|
|
ldrsh r0, [sl, #4]
|
|
cmp r4, r0
|
|
blt _02342648
|
|
add r6, r6, #1
|
|
add r8, r8, #1
|
|
_0234273C:
|
|
ldrsh r0, [sl, #6]
|
|
cmp r8, r0
|
|
blt _0234260C
|
|
b _023427D0
|
|
_0234274C:
|
|
ldrsh r8, [sl, #2]
|
|
add r4, sb, #0xd000
|
|
mov r5, r6
|
|
mov fp, #1
|
|
b _023427C4
|
|
_02342760:
|
|
ldrsh sb, [sl]
|
|
b _023427B4
|
|
_02342768:
|
|
bl GetNextFixedRoomAction
|
|
mov r6, r0
|
|
mov r0, sb
|
|
mov r1, r8
|
|
bl GetTileSafe
|
|
mov r1, r6
|
|
mov r6, r0
|
|
ldrb r7, [r6, #7]
|
|
ldrh ip, [r6]
|
|
mov r2, sb
|
|
mov r3, r8
|
|
orr ip, ip, #0x100
|
|
strh ip, [r6]
|
|
strb r5, [r6, #6]
|
|
str fp, [sp]
|
|
bl PlaceFixedRoomTile
|
|
strb r7, [r6, #7]
|
|
strb r7, [r4, #0x2e0 + OV29_02342594_OFFSET]
|
|
add sb, sb, #1
|
|
_023427B4:
|
|
ldrsh r0, [sl, #4]
|
|
cmp sb, r0
|
|
blt _02342768
|
|
add r8, r8, #1
|
|
_023427C4:
|
|
ldrsh r0, [sl, #6]
|
|
cmp r8, r0
|
|
blt _02342760
|
|
_023427D0:
|
|
add sp, sp, #0x18
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_023427D8: .word DUNGEON_PTR
|
|
_023427DC: .word HIDDEN_STAIRS_SPAWN_BLOCKED
|
|
_023427E0: .word FLOOR_GENERATION_STATUS
|
|
arm_func_end ov29_02342594
|
|
|
|
arm_func_start ov29_023427E4
|
|
ov29_023427E4: ; 0x023427E4
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #8
|
|
mov r6, #3
|
|
str r0, [sp]
|
|
mov r7, r6
|
|
mov r5, #0
|
|
mov sb, r6
|
|
mov r4, r6
|
|
ldr r8, _02342B74 ; =FLOOR_GENERATION_STATUS
|
|
b _0234283C
|
|
_0234280C:
|
|
ldr r2, [r8, #0x38]
|
|
ldr r1, [r8, #0x30]
|
|
mov r0, r4
|
|
sub r1, r2, r1
|
|
sub r1, r1, #2
|
|
bl DungeonRandRange
|
|
mov r6, r0
|
|
cmp r6, #3
|
|
movlt r6, sb
|
|
cmp r6, #3
|
|
bge _02342844
|
|
add r5, r5, #1
|
|
_0234283C:
|
|
cmp r5, #0x14
|
|
blt _0234280C
|
|
_02342844:
|
|
mov sb, #3
|
|
mov r5, #0
|
|
mov r4, sb
|
|
ldr r8, _02342B74 ; =FLOOR_GENERATION_STATUS
|
|
b _02342888
|
|
_02342858:
|
|
ldr r2, [r8, #0x3c]
|
|
ldr r1, [r8, #0x34]
|
|
mov r0, r4
|
|
sub r1, r2, r1
|
|
sub r1, r1, #2
|
|
bl DungeonRandRange
|
|
mov r7, r0
|
|
cmp r7, #3
|
|
movlt r7, sb
|
|
cmp r7, #3
|
|
bge _02342890
|
|
add r5, r5, #1
|
|
_02342888:
|
|
cmp r5, #0x14
|
|
blt _02342858
|
|
_02342890:
|
|
mov r0, #2
|
|
mov r1, #4
|
|
bl DungeonRandRange
|
|
mov r5, r0
|
|
mov r4, #0
|
|
b _0234295C
|
|
_023428A8:
|
|
ldr r0, _02342B74 ; =FLOOR_GENERATION_STATUS
|
|
ldr r1, [r0, #0x38]
|
|
ldr r0, [r0, #0x30]
|
|
sub r0, r1, r0
|
|
cmp r0, r6
|
|
ble _02342964
|
|
mov r0, #0x64
|
|
bl DungeonRandInt
|
|
cmp r0, #0x32
|
|
bge _02342918
|
|
ldr sb, _02342B74 ; =FLOOR_GENERATION_STATUS
|
|
ldr r8, [sb, #0x34]
|
|
b _023428F8
|
|
_023428DC:
|
|
ldr r0, [sb, #0x30]
|
|
mov r1, r8
|
|
bl GetTileSafe
|
|
ldrh r1, [r0]
|
|
add r8, r8, #1
|
|
bic r1, r1, #0x20
|
|
strh r1, [r0]
|
|
_023428F8:
|
|
ldr r0, [sb, #0x3c]
|
|
cmp r8, r0
|
|
blt _023428DC
|
|
ldr r0, _02342B74 ; =FLOOR_GENERATION_STATUS
|
|
ldr r1, [r0, #0x30]
|
|
add r1, r1, #1
|
|
str r1, [r0, #0x30]
|
|
b _02342958
|
|
_02342918:
|
|
ldr sb, _02342B74 ; =FLOOR_GENERATION_STATUS
|
|
ldr r0, [sb, #0x38]
|
|
sub r0, r0, #1
|
|
str r0, [sb, #0x38]
|
|
ldr r8, [sb, #0x34]
|
|
b _0234294C
|
|
_02342930:
|
|
ldr r0, [sb, #0x38]
|
|
mov r1, r8
|
|
bl GetTileSafe
|
|
ldrh r1, [r0]
|
|
add r8, r8, #1
|
|
bic r1, r1, #0x20
|
|
strh r1, [r0]
|
|
_0234294C:
|
|
ldr r0, [sb, #0x3c]
|
|
cmp r8, r0
|
|
blt _02342930
|
|
_02342958:
|
|
add r4, r4, #1
|
|
_0234295C:
|
|
cmp r4, r5
|
|
blt _023428A8
|
|
_02342964:
|
|
mov r6, #0
|
|
b _02342A20
|
|
_0234296C:
|
|
ldr r0, _02342B74 ; =FLOOR_GENERATION_STATUS
|
|
ldr r1, [r0, #0x3c]
|
|
ldr r0, [r0, #0x34]
|
|
sub r0, r1, r0
|
|
cmp r0, r7
|
|
ble _02342A28
|
|
mov r0, #0x64
|
|
bl DungeonRandInt
|
|
cmp r0, #0x32
|
|
bge _023429DC
|
|
ldr r8, _02342B74 ; =FLOOR_GENERATION_STATUS
|
|
ldr r4, [r8, #0x30]
|
|
b _023429BC
|
|
_023429A0:
|
|
ldr r1, [r8, #0x34]
|
|
mov r0, r4
|
|
bl GetTileSafe
|
|
ldrh r1, [r0]
|
|
add r4, r4, #1
|
|
bic r1, r1, #0x20
|
|
strh r1, [r0]
|
|
_023429BC:
|
|
ldr r0, [r8, #0x38]
|
|
cmp r4, r0
|
|
blt _023429A0
|
|
ldr r0, _02342B74 ; =FLOOR_GENERATION_STATUS
|
|
ldr r1, [r0, #0x34]
|
|
add r1, r1, #1
|
|
str r1, [r0, #0x34]
|
|
b _02342A1C
|
|
_023429DC:
|
|
ldr r8, _02342B74 ; =FLOOR_GENERATION_STATUS
|
|
ldr r0, [r8, #0x3c]
|
|
sub r0, r0, #1
|
|
str r0, [r8, #0x3c]
|
|
ldr r4, [r8, #0x30]
|
|
b _02342A10
|
|
_023429F4:
|
|
ldr r1, [r8, #0x3c]
|
|
mov r0, r4
|
|
bl GetTileSafe
|
|
ldrh r1, [r0]
|
|
add r4, r4, #1
|
|
bic r1, r1, #0x20
|
|
strh r1, [r0]
|
|
_02342A10:
|
|
ldr r0, [r8, #0x38]
|
|
cmp r4, r0
|
|
blt _023429F4
|
|
_02342A1C:
|
|
add r6, r6, #1
|
|
_02342A20:
|
|
cmp r6, r5
|
|
blt _0234296C
|
|
_02342A28:
|
|
ldr r4, _02342B74 ; =FLOOR_GENERATION_STATUS
|
|
ldr r6, [r4, #0x30]
|
|
b _02342A74
|
|
_02342A34:
|
|
ldr r5, [r4, #0x34]
|
|
b _02342A64
|
|
_02342A3C:
|
|
mov r0, r6
|
|
mov r1, r5
|
|
bl GetTileSafe
|
|
ldrh r1, [r0]
|
|
tst r1, #0x20
|
|
beq _02342A60
|
|
tst r1, #8
|
|
bicne r1, r1, #0x20
|
|
strneh r1, [r0]
|
|
_02342A60:
|
|
add r5, r5, #1
|
|
_02342A64:
|
|
ldr r0, [r4, #0x3c]
|
|
cmp r5, r0
|
|
blt _02342A3C
|
|
add r6, r6, #1
|
|
_02342A74:
|
|
ldr r3, [r4, #0x38]
|
|
cmp r6, r3
|
|
blt _02342A34
|
|
ldr r0, _02342B74 ; =FLOOR_GENERATION_STATUS
|
|
mov r7, #0
|
|
ldr r1, [r0, #0x30]
|
|
ldr r2, [r0, #0x34]
|
|
add r3, r1, r3
|
|
ldr r1, [r0, #0x3c]
|
|
add r0, r3, r3, lsr #31
|
|
mov r0, r0, asr #1
|
|
sub r6, r0, #1
|
|
add r0, r2, r1
|
|
add r0, r0, r0, lsr #31
|
|
mov r1, r0, asr #1
|
|
add r0, r6, #3
|
|
cmp r6, r0
|
|
sub r0, r1, #1
|
|
mov sb, r6
|
|
str r0, [sp, #4]
|
|
bge _02342B6C
|
|
_02342AC8:
|
|
ldr r0, [sp, #4]
|
|
mov r8, #0
|
|
add r5, r0, #3
|
|
mov sl, r0
|
|
cmp r0, r5
|
|
bge _02342B58
|
|
ldr r0, _02342B78 ; =SHOP_ITEM_CHANCES
|
|
add fp, r0, r7, lsl #1
|
|
_02342AE8:
|
|
mov r0, sb
|
|
mov r1, sl
|
|
bl GetTileSafe
|
|
mov r4, r0
|
|
ldrh r0, [r4]
|
|
tst r0, #0x20
|
|
beq _02342B48
|
|
tst r0, #0x40
|
|
bne _02342B48
|
|
tst r0, #8
|
|
bne _02342B48
|
|
mov r0, #0x64
|
|
bl DungeonRandInt
|
|
ldr r1, [sp]
|
|
mov r2, #6
|
|
mul r3, r8, r2
|
|
ldrb r1, [r1, #0x18]
|
|
mov r2, #0x12
|
|
mla r2, r1, r2, fp
|
|
ldrsh r1, [r3, r2]
|
|
cmp r1, r0
|
|
ldrgth r0, [r4, #2]
|
|
orrgt r0, r0, #2
|
|
strgth r0, [r4, #2]
|
|
_02342B48:
|
|
add sl, sl, #1
|
|
cmp sl, r5
|
|
add r8, r8, #1
|
|
blt _02342AE8
|
|
_02342B58:
|
|
add sb, sb, #1
|
|
add r0, r6, #3
|
|
cmp sb, r0
|
|
add r7, r7, #1
|
|
blt _02342AC8
|
|
_02342B6C:
|
|
add sp, sp, #8
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_02342B74: .word FLOOR_GENERATION_STATUS
|
|
_02342B78: .word SHOP_ITEM_CHANCES
|
|
arm_func_end ov29_023427E4
|
|
|
|
arm_func_start ResetInnerBoundaryTileRows
|
|
ResetInnerBoundaryTileRows: ; 0x02342B7C
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r4, #0
|
|
mov r5, #0x1e
|
|
mov r6, #1
|
|
_02342B8C:
|
|
mov r0, r4
|
|
mov r1, r6
|
|
bl GetTileSafe
|
|
mov r7, r0
|
|
bl InitializeTile
|
|
cmp r4, #0
|
|
cmpne r4, #0x37
|
|
ldreqh r0, [r7]
|
|
mov r1, r5
|
|
orreq r0, r0, #0x10
|
|
streqh r0, [r7]
|
|
mov r0, r4
|
|
bl GetTileSafe
|
|
mov r7, r0
|
|
bl InitializeTile
|
|
cmp r4, #0
|
|
cmpne r4, #0x37
|
|
ldreqh r0, [r7]
|
|
add r4, r4, #1
|
|
orreq r0, r0, #0x10
|
|
streqh r0, [r7]
|
|
cmp r4, #0x38
|
|
blt _02342B8C
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
arm_func_end ResetInnerBoundaryTileRows
|
|
|
|
arm_func_start ov29_02342BEC
|
|
ov29_02342BEC: ; 0x02342BEC
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr}
|
|
ldrh r5, [r0]
|
|
ldrh r6, [r0, #2]
|
|
add r4, r0, #6
|
|
mov r0, r5, lsl #1
|
|
mul r0, r6, r0
|
|
ldr r3, _02342C60 ; =HIDDEN_STAIRS_SPAWN_BLOCKED
|
|
ldr r2, _02342C64 ; =FLOOR_GENERATION_STATUS
|
|
mov r1, #0
|
|
str r4, [r3, #4]
|
|
strh r1, [r2, #0xa]
|
|
bl MemAlloc
|
|
mov r7, r0
|
|
mov r8, #0
|
|
mov sl, r7
|
|
mov r4, r8
|
|
b _02342C50
|
|
_02342C30:
|
|
mov sb, r4
|
|
b _02342C44
|
|
_02342C38:
|
|
bl GetNextFixedRoomAction
|
|
strh r0, [sl], #2
|
|
add sb, sb, #1
|
|
_02342C44:
|
|
cmp sb, r5
|
|
blt _02342C38
|
|
add r8, r8, #1
|
|
_02342C50:
|
|
cmp r8, r6
|
|
blt _02342C30
|
|
mov r0, r7
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc}
|
|
.align 2, 0
|
|
_02342C60: .word HIDDEN_STAIRS_SPAWN_BLOCKED
|
|
_02342C64: .word FLOOR_GENERATION_STATUS
|
|
arm_func_end ov29_02342BEC
|
|
|
|
arm_func_start ResetImportantSpawnPositions
|
|
ResetImportantSpawnPositions: ; 0x02342C68
|
|
add r0, r0, #0x8c00
|
|
mvn r1, #0
|
|
strh r1, [r0, #0x1c]
|
|
strh r1, [r0, #0x1e]
|
|
strh r1, [r0, #0x20]
|
|
strh r1, [r0, #0x22]
|
|
strh r1, [r0, #0x24]
|
|
strh r1, [r0, #0x26]
|
|
bx lr
|
|
arm_func_end ResetImportantSpawnPositions
|
|
|
|
arm_func_start SpawnStairs
|
|
SpawnStairs: ; 0x02342C8C
|
|
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
|
mov r6, r0
|
|
mov r8, r1
|
|
ldrb r0, [r6]
|
|
ldrb r1, [r6, #1]
|
|
mov r5, r2
|
|
bl GetTileSafe
|
|
mov r4, r0
|
|
ldrh r0, [r4, #2]
|
|
cmp r5, #0
|
|
orr r0, r0, #1
|
|
bic r0, r0, #2
|
|
strh r0, [r4, #2]
|
|
beq _02342D00
|
|
ldr r0, _02342D94 ; =HIDDEN_STAIRS_SPAWN_BLOCKED
|
|
ldrb r1, [r6]
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
ldrne r0, _02342D98 ; =FLOOR_GENERATION_STATUS
|
|
strneh r1, [r0, #0x1c]
|
|
ldrneb r1, [r6, #1]
|
|
strneh r1, [r0, #0x1e]
|
|
bne _02342D20
|
|
add r0, r8, #0x8c00
|
|
strh r1, [r0, #0x24]
|
|
ldrb r1, [r6, #1]
|
|
strh r1, [r0, #0x26]
|
|
str r5, [r8, #8]
|
|
b _02342D20
|
|
_02342D00:
|
|
ldrb r2, [r6]
|
|
add r0, r8, #0x8c00
|
|
ldr r1, _02342D98 ; =FLOOR_GENERATION_STATUS
|
|
strh r2, [r0, #0x20]
|
|
ldrb r2, [r6, #1]
|
|
strh r2, [r0, #0x22]
|
|
ldrb r0, [r4, #7]
|
|
strb r0, [r1, #2]
|
|
_02342D20:
|
|
cmp r5, #0
|
|
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
|
|
bl GetFloorType
|
|
cmp r0, #2
|
|
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
|
|
ldrb r5, [r4, #7]
|
|
mov r7, #0
|
|
mov r4, r7
|
|
_02342D40:
|
|
mov r6, r4
|
|
_02342D44:
|
|
mov r0, r7
|
|
mov r1, r6
|
|
bl GetTileSafe
|
|
ldrh r1, [r0]
|
|
add r6, r6, #1
|
|
and r1, r1, #3
|
|
cmp r1, #1
|
|
ldreqb r1, [r0, #7]
|
|
cmpeq r1, r5
|
|
ldreqh r1, [r0]
|
|
orreq r1, r1, #0x40
|
|
streqh r1, [r0]
|
|
ldreqb r0, [r0, #7]
|
|
streqb r0, [r8, #5]
|
|
cmp r6, #0x20
|
|
blt _02342D44
|
|
add r7, r7, #1
|
|
cmp r7, #0x38
|
|
blt _02342D40
|
|
ldmia sp!, {r4, r5, r6, r7, r8, pc}
|
|
.align 2, 0
|
|
_02342D94: .word HIDDEN_STAIRS_SPAWN_BLOCKED
|
|
_02342D98: .word FLOOR_GENERATION_STATUS
|
|
arm_func_end SpawnStairs
|
|
|
|
arm_func_start GetHiddenStairsType
|
|
GetHiddenStairsType: ; 0x02342D9C
|
|
stmdb sp!, {r4, r5, r6, lr}
|
|
ldr r2, _02342EB0 ; =DUNGEON_PTR
|
|
mov r5, r0
|
|
ldr r0, [r2]
|
|
mov r6, r1
|
|
ldr r0, [r0, #0x7cc]
|
|
mov r4, #0
|
|
#ifdef JAPAN
|
|
sub r0, r0, #1
|
|
cmp r0, #1
|
|
movls r0, r4
|
|
ldmlsia sp!, {r4, r5, r6, pc}
|
|
#else
|
|
cmp r0, #1
|
|
cmpne r0, #2
|
|
beq _02342EA8
|
|
#endif
|
|
mov r0, #4
|
|
bl DungeonRngSetSecondary
|
|
ldrb r0, [r5, #0x16]
|
|
cmp r0, #0
|
|
bne _02342EA4
|
|
ldrb r0, [r6, #0x1a]
|
|
cmp r0, #0xff
|
|
bne _02342DFC
|
|
bl DungeonRand16Bit
|
|
and r0, r0, #8
|
|
tst r0, #8
|
|
movne r4, #1
|
|
moveq r4, #2
|
|
b _02342E00
|
|
_02342DFC:
|
|
add r4, r0, #1
|
|
_02342E00:
|
|
ldr r0, _02342EB0 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x700
|
|
ldrsb r0, [r0, #0x98]
|
|
cmp r0, #2
|
|
beq _02342E24
|
|
bl IsDestinationFloor
|
|
cmp r0, #0
|
|
beq _02342E2C
|
|
_02342E24:
|
|
mov r0, #1
|
|
b _02342E30
|
|
_02342E2C:
|
|
mov r0, #0
|
|
_02342E30:
|
|
tst r0, #0xff
|
|
ldrne r0, _02342EB4 ; =HIDDEN_STAIRS_SPAWN_BLOCKED
|
|
movne r1, #1
|
|
strneb r1, [r0]
|
|
bne _02342EA4
|
|
cmp r4, #0
|
|
beq _02342EA4
|
|
bl DungeonRand16Bit
|
|
mov r1, #0x64
|
|
bl _s32_div_f
|
|
mov r5, r1
|
|
ldrb r6, [r6, #0x1b]
|
|
bl ShouldBoostHiddenStairsSpawnChance
|
|
cmp r0, #0
|
|
beq _02342E94
|
|
ldr r1, _02342EB8 ; =HIDDEN_STAIRS_SPAWN_CHANCE_MULTIPLIER
|
|
mov r0, r6, lsl #8
|
|
ldr r1, [r1]
|
|
bl MultiplyByFixedPoint
|
|
mov r6, r0
|
|
mov r0, #0
|
|
bl SetShouldBoostHiddenStairsSpawnChance
|
|
mov r0, r6, asr #7
|
|
add r0, r6, r0, lsr #24
|
|
mov r6, r0, asr #8
|
|
_02342E94:
|
|
cmp r5, r6
|
|
ldrhs r0, _02342EB4 ; =HIDDEN_STAIRS_SPAWN_BLOCKED
|
|
movhs r1, #1
|
|
strhsb r1, [r0]
|
|
_02342EA4:
|
|
bl DungeonRngSetPrimary
|
|
_02342EA8:
|
|
mov r0, r4
|
|
ldmia sp!, {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_02342EB0: .word DUNGEON_PTR
|
|
_02342EB4: .word HIDDEN_STAIRS_SPAWN_BLOCKED
|
|
_02342EB8: .word HIDDEN_STAIRS_SPAWN_CHANCE_MULTIPLIER
|
|
arm_func_end GetHiddenStairsType
|
|
|
|
arm_func_start GetFinalKecleonShopSpawnChance
|
|
GetFinalKecleonShopSpawnChance: ; 0x02342EBC
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
bl ShouldBoostKecleonShopSpawnChance
|
|
cmp r0, #0
|
|
moveq r0, r4
|
|
ldmeqia sp!, {r4, pc}
|
|
ldr r1, _02342F04 ; =KECLEON_SHOP_BOOST_CHANCE_MULTIPLIER
|
|
mov r0, r4, lsl #8
|
|
ldr r1, [r1]
|
|
bl MultiplyByFixedPoint
|
|
mov r4, r0
|
|
mov r0, #0
|
|
bl SetShouldBoostKecleonShopSpawnChance
|
|
mov r0, r4, asr #7
|
|
add r0, r4, r0, lsr #24
|
|
mov r0, r0, lsl #8
|
|
mov r0, r0, asr #0x10
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
_02342F04: .word KECLEON_SHOP_BOOST_CHANCE_MULTIPLIER
|
|
arm_func_end GetFinalKecleonShopSpawnChance
|
|
|
|
arm_func_start ResetHiddenStairsSpawn
|
|
ResetHiddenStairsSpawn: ; 0x02342F08
|
|
ldr r1, _02342F28 ; =FLOOR_GENERATION_STATUS
|
|
mvn r2, #0
|
|
strh r2, [r1, #0x1c]
|
|
ldr r0, _02342F2C ; =HIDDEN_STAIRS_SPAWN_BLOCKED
|
|
strh r2, [r1, #0x1e]
|
|
mov r1, #0
|
|
strb r1, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_02342F28: .word FLOOR_GENERATION_STATUS
|
|
_02342F2C: .word HIDDEN_STAIRS_SPAWN_BLOCKED
|
|
arm_func_end ResetHiddenStairsSpawn
|
|
|
|
arm_func_start PlaceFixedRoomTile
|
|
PlaceFixedRoomTile: ; 0x02342F30
|
|
#ifdef JAPAN
|
|
#define PLACE_FIXED_ROOM_TILE_OFFSET -0xA4
|
|
#else
|
|
#define PLACE_FIXED_ROOM_TILE_OFFSET 0
|
|
#endif
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x34
|
|
ldr r4, _02343928 ; =0x00000FFF
|
|
mov sb, r1
|
|
and r1, sb, r4
|
|
mov r1, r1, lsl #0x10
|
|
mov r1, r1, lsr #0x10
|
|
mov r6, r0
|
|
mov r5, r2
|
|
mov r4, r3
|
|
cmp r1, #0x10
|
|
blo _02342F78
|
|
ldrh r0, [r6]
|
|
bic r0, r0, #3
|
|
strh r0, [r6]
|
|
ldrh r0, [r6]
|
|
orr r0, r0, #1
|
|
strh r0, [r6]
|
|
_02342F78:
|
|
cmp r1, #0x62
|
|
bgt _02342FE8
|
|
bge _0234334C
|
|
cmp r1, #0x60
|
|
bgt _02342FDC
|
|
bge _0234334C
|
|
cmp r1, #0xf
|
|
addls pc, pc, r1, lsl #2
|
|
b _023433B8
|
|
_02342F9C: ; jump table
|
|
b _0234304C ; case 0
|
|
b _02343070 ; case 1
|
|
b _02343094 ; case 2
|
|
b _0234391C ; case 3
|
|
b _023430B8 ; case 4
|
|
b _0234313C ; case 5
|
|
b _02343160 ; case 6
|
|
b _02343184 ; case 7
|
|
b _023431B8 ; case 8
|
|
b _02343244 ; case 9
|
|
b _02343194 ; case 10
|
|
b _02343268 ; case 11
|
|
b _02343290 ; case 12
|
|
b _023432DC ; case 13
|
|
b _02343328 ; case 14
|
|
b _0234391C ; case 15
|
|
_02342FDC:
|
|
cmp r1, #0x61
|
|
beq _0234334C
|
|
b _023433B8
|
|
_02342FE8:
|
|
cmp r1, #0x6b
|
|
bgt _02343000
|
|
bge _023431B8
|
|
cmp r1, #0x63
|
|
beq _0234334C
|
|
b _023433B8
|
|
_02343000:
|
|
cmp r1, #0x6c
|
|
bgt _02343010
|
|
beq _02343208
|
|
b _023433B8
|
|
_02343010:
|
|
cmp r1, #0x6d
|
|
bne _023433B8
|
|
ldr r3, _0234392C ; =DUNGEON_PTR
|
|
mov r1, r5
|
|
ldr r0, [r3]
|
|
mov r2, r4
|
|
add r0, r0, #0x700
|
|
strh r5, [r0, #0xa4]
|
|
ldr r0, [r3]
|
|
mov r3, #0
|
|
add r0, r0, #0x700
|
|
strh r4, [r0, #0xa6]
|
|
mov r0, #0xb
|
|
str r3, [sp]
|
|
bl SpawnEnemyTrapAtPos
|
|
_0234304C:
|
|
ldrh r1, [r6]
|
|
mov r0, #0
|
|
bic r1, r1, #3
|
|
strh r1, [r6]
|
|
ldrh r1, [r6]
|
|
orr r1, r1, #1
|
|
strh r1, [r6]
|
|
strb r0, [r6, #7]
|
|
b _0234391C
|
|
_02343070:
|
|
ldrh r1, [r6]
|
|
mov r0, #0xff
|
|
bic r1, r1, #3
|
|
strh r1, [r6]
|
|
ldrh r1, [r6]
|
|
bic r1, r1, #0x100
|
|
strh r1, [r6]
|
|
strb r0, [r6, #7]
|
|
b _0234391C
|
|
_02343094:
|
|
ldrh r1, [r6]
|
|
mov r0, #0xff
|
|
bic r1, r1, #3
|
|
strh r1, [r6]
|
|
ldrh r1, [r6]
|
|
orr r1, r1, #0x10
|
|
strh r1, [r6]
|
|
strb r0, [r6, #7]
|
|
b _0234391C
|
|
_023430B8:
|
|
ldrh r2, [r6]
|
|
mov r0, r5, lsl #0x10
|
|
mov r1, r4, lsl #0x10
|
|
bic r2, r2, #3
|
|
strh r2, [r6]
|
|
ldrh r4, [r6]
|
|
mov r3, sb, asr #0xc
|
|
ldr r2, _0234392C ; =DUNGEON_PTR
|
|
orr r4, r4, #1
|
|
strh r4, [r6]
|
|
ldr r4, [r2]
|
|
mov r5, r0, asr #0x10
|
|
add r0, r4, #0xcc00
|
|
strh r5, [r0, #0xe0 + PLACE_FIXED_ROOM_TILE_OFFSET]
|
|
ldr r0, [r2]
|
|
mov r4, r1, asr #0x10
|
|
add r0, r0, #0xcc00
|
|
strh r4, [r0, #0xe2 + PLACE_FIXED_ROOM_TILE_OFFSET]
|
|
ldr r1, [r2]
|
|
and r0, r3, #0xff
|
|
add r1, r1, #0xcc00
|
|
strh r5, [r1, #0xec + PLACE_FIXED_ROOM_TILE_OFFSET]
|
|
ldr r1, [r2]
|
|
add r1, r1, #0xcc00
|
|
strh r4, [r1, #0xee + PLACE_FIXED_ROOM_TILE_OFFSET]
|
|
bl FixedRoomActionParamToDirection
|
|
ldr r1, _0234392C ; =DUNGEON_PTR
|
|
mov r2, #0
|
|
ldr r1, [r1]
|
|
add r1, r1, #0xc000
|
|
strb r0, [r1, #0xd0c + PLACE_FIXED_ROOM_TILE_OFFSET]
|
|
strb r2, [r6, #7]
|
|
b _0234391C
|
|
_0234313C:
|
|
ldrh r1, [r6]
|
|
mov r0, #0
|
|
bic r1, r1, #3
|
|
strh r1, [r6]
|
|
ldrh r1, [r6]
|
|
orr r1, r1, #2
|
|
strh r1, [r6]
|
|
strb r0, [r6, #7]
|
|
b _0234391C
|
|
_02343160:
|
|
ldrh r1, [r6]
|
|
mov r0, #0xff
|
|
bic r1, r1, #3
|
|
strh r1, [r6]
|
|
ldrh r1, [r6]
|
|
orr r1, r1, #3
|
|
strh r1, [r6]
|
|
strb r0, [r6, #7]
|
|
b _0234391C
|
|
_02343184:
|
|
ldr r0, _02343930 ; =ov29_0237CFC0
|
|
mov r1, #1
|
|
strb r1, [r0]
|
|
bl ov29_023365E8
|
|
_02343194:
|
|
ldrh r1, [r6]
|
|
mov r0, #0xff
|
|
bic r1, r1, #3
|
|
strh r1, [r6]
|
|
ldrh r1, [r6]
|
|
orr r1, r1, #0x13
|
|
strh r1, [r6]
|
|
strb r0, [r6, #7]
|
|
b _0234391C
|
|
_023431B8:
|
|
ldrh r2, [r6]
|
|
ldr r1, _0234392C ; =DUNGEON_PTR
|
|
mov r0, #0
|
|
bic r2, r2, #3
|
|
strh r2, [r6]
|
|
ldrh r2, [r6]
|
|
orr r2, r2, #1
|
|
strh r2, [r6]
|
|
ldrh r2, [r6, #2]
|
|
orr r2, r2, #1
|
|
bic r2, r2, #2
|
|
strh r2, [r6, #2]
|
|
strb r0, [r6, #7]
|
|
ldr r0, [r1]
|
|
add r0, r0, #0xcc00
|
|
strh r5, [r0, #0xe4 + PLACE_FIXED_ROOM_TILE_OFFSET]
|
|
ldr r0, [r1]
|
|
add r0, r0, #0xcc00
|
|
strh r4, [r0, #0xe6 + PLACE_FIXED_ROOM_TILE_OFFSET]
|
|
b _0234391C
|
|
_02343208:
|
|
ldrh r1, [r6]
|
|
mov r0, #0
|
|
orr r1, r1, #0x800
|
|
strh r1, [r6]
|
|
ldrh r1, [r6]
|
|
bic r1, r1, #3
|
|
strh r1, [r6]
|
|
ldrh r1, [r6]
|
|
orr r1, r1, #1
|
|
strh r1, [r6]
|
|
ldrh r1, [r6, #2]
|
|
bic r1, r1, #2
|
|
strh r1, [r6, #2]
|
|
strb r0, [r6, #7]
|
|
b _0234391C
|
|
_02343244:
|
|
ldrh r1, [r6]
|
|
mov r0, #0xff
|
|
bic r1, r1, #3
|
|
strh r1, [r6]
|
|
ldrh r1, [r6]
|
|
orr r1, r1, #1
|
|
strh r1, [r6]
|
|
strb r0, [r6, #7]
|
|
b _0234391C
|
|
_02343268:
|
|
ldrh r1, [r6]
|
|
mov r0, #0
|
|
bic r1, r1, #3
|
|
strh r1, [r6]
|
|
ldrh r1, [r6]
|
|
orr r1, r1, #1
|
|
orr r1, r1, #0x800
|
|
strh r1, [r6]
|
|
strb r0, [r6, #7]
|
|
b _0234391C
|
|
_02343290:
|
|
bl IsFullFloorFixedRoom
|
|
ldrh r1, [r6]
|
|
cmp r0, #0
|
|
moveq r2, #1
|
|
bic r1, r1, #3
|
|
strh r1, [r6]
|
|
ldrh r1, [r6]
|
|
movne r2, #0
|
|
mov r0, #0
|
|
orr r1, r1, r2
|
|
strh r1, [r6]
|
|
ldrh r1, [r6]
|
|
orr r1, r1, #0x1000
|
|
strh r1, [r6]
|
|
ldrh r1, [r6]
|
|
orr r1, r1, #0x810
|
|
strh r1, [r6]
|
|
strb r0, [r6, #7]
|
|
b _0234391C
|
|
_023432DC:
|
|
bl IsFullFloorFixedRoom
|
|
ldrh r1, [r6]
|
|
cmp r0, #0
|
|
moveq r2, #1
|
|
bic r1, r1, #3
|
|
strh r1, [r6]
|
|
ldrh r1, [r6]
|
|
movne r2, #0
|
|
mov r0, #0
|
|
orr r1, r1, r2
|
|
strh r1, [r6]
|
|
ldrh r1, [r6]
|
|
orr r1, r1, #0x810
|
|
strh r1, [r6]
|
|
ldrh r1, [r6]
|
|
orr r1, r1, #0x2000
|
|
strh r1, [r6]
|
|
strb r0, [r6, #7]
|
|
b _0234391C
|
|
_02343328:
|
|
ldrh r1, [r6]
|
|
mov r0, #0xff
|
|
bic r1, r1, #3
|
|
strh r1, [r6]
|
|
ldrh r1, [r6]
|
|
orr r1, r1, #0x10
|
|
strh r1, [r6]
|
|
strb r0, [r6, #7]
|
|
b _0234391C
|
|
_0234334C:
|
|
ldr r2, _0234392C ; =DUNGEON_PTR
|
|
mov r3, sb, asr #0xc
|
|
ldr r0, [r2]
|
|
sub r7, r1, #0x5f
|
|
add r0, r0, r7, lsl #2
|
|
add r0, r0, #0xcc00
|
|
strh r5, [r0, #0xec + PLACE_FIXED_ROOM_TILE_OFFSET]
|
|
ldr r1, [r2]
|
|
and r0, r3, #0xff
|
|
add r1, r1, r7, lsl #2
|
|
add r1, r1, #0xcc00
|
|
strh r4, [r1, #0xee + PLACE_FIXED_ROOM_TILE_OFFSET]
|
|
bl FixedRoomActionParamToDirection
|
|
ldr r1, _0234392C ; =DUNGEON_PTR
|
|
mov r2, #0
|
|
ldr r1, [r1]
|
|
add r1, r1, r7
|
|
add r1, r1, #0xc000
|
|
strb r0, [r1, #0xd0c + PLACE_FIXED_ROOM_TILE_OFFSET]
|
|
ldrh r0, [r6]
|
|
bic r0, r0, #3
|
|
strh r0, [r6]
|
|
ldrh r0, [r6]
|
|
orr r0, r0, #1
|
|
strh r0, [r6]
|
|
strb r2, [r6, #7]
|
|
b _0234391C
|
|
_023433B8:
|
|
cmp r1, #0x10
|
|
blo _0234391C
|
|
ldr r0, _02343934 ; =0x000001FF
|
|
cmp r1, r0
|
|
bhi _0234391C
|
|
sub r1, r1, #0x10
|
|
mov r0, #0xc
|
|
smulbb r2, r1, r0
|
|
ldr r0, _02343938 ; =ov29_023502F4
|
|
ldr r1, _0234393C ; =FIXED_ROOM_ENTITY_SPAWN_TABLE
|
|
ldr r8, [r0, r2]
|
|
ldr sl, [r1, r2]
|
|
ldrb r0, [r8, #2]
|
|
ldr r1, _02343940 ; =ov29_023502F0
|
|
strb r0, [r6, #7]
|
|
ldrsh r0, [sl]
|
|
ldr r7, [r1, r2]
|
|
cmp r0, #0
|
|
ldrneb r1, [sp, #0x58]
|
|
cmpne r1, #0
|
|
beq _02343678
|
|
cmp r0, #0xb2
|
|
bne _02343468
|
|
ldr r0, _0234392C ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x700
|
|
ldrsb r0, [r0, #0x98]
|
|
cmp r0, #2
|
|
cmpne r0, #3
|
|
beq _02343678
|
|
mov r0, #0x17
|
|
bl GetResolvedPerformanceProgressFlag
|
|
cmp r0, #0
|
|
bne _02343678
|
|
ldr r1, [sl, #4]
|
|
mov r0, #0
|
|
str r1, [sp]
|
|
str r0, [sp, #4]
|
|
ldrsh r0, [sl]
|
|
ldrsh r3, [sl, #2]
|
|
mov r1, r5
|
|
mov r2, r4
|
|
bl GenerateAndSpawnItem
|
|
b _02343678
|
|
_02343468:
|
|
bl IsTreasureBox
|
|
cmp r0, #0
|
|
ldrsh r0, [sl]
|
|
beq _02343548
|
|
str r0, [sp, #0x14]
|
|
mov r0, r0
|
|
ldr sl, [sl, #4]
|
|
bl IsTreasureBox
|
|
cmp r0, #0
|
|
bne _023434B0
|
|
mov r1, r5
|
|
mov r2, r4
|
|
str sl, [sp]
|
|
mov r3, #0
|
|
mov r0, #0x49
|
|
str r3, [sp, #4]
|
|
bl GenerateAndSpawnItem
|
|
b _02343678
|
|
_023434B0:
|
|
ldr r0, _0234392C ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
ldrb fp, [r0, #0x748]
|
|
bl IsGoldenChamber
|
|
cmp r0, #0
|
|
beq _023434D8
|
|
ldr r0, _02343944 ; =ov10_022C4B34
|
|
bl ov29_023442B8
|
|
mov r3, r0
|
|
b _02343528
|
|
_023434D8:
|
|
bl IsSecretRoom
|
|
cmp r0, #0
|
|
beq _023434F0
|
|
bl ov29_022E7BD0
|
|
mov r3, r0
|
|
b _02343528
|
|
_023434F0:
|
|
ldr r0, _02343948 ; =ov29_02353050
|
|
b _02343504
|
|
_023434F8:
|
|
cmp fp, r1
|
|
beq _02343510
|
|
add r0, r0, #8
|
|
_02343504:
|
|
ldrb r1, [r0]
|
|
cmp r1, #0
|
|
bne _023434F8
|
|
_02343510:
|
|
cmp r1, #0
|
|
moveq r3, #0x49
|
|
beq _02343528
|
|
ldr r0, [r0, #4]
|
|
bl ov29_023442B8
|
|
mov r3, r0
|
|
_02343528:
|
|
ldr r0, [sp, #0x14]
|
|
mov r1, r5
|
|
str sl, [sp]
|
|
mov sl, #0
|
|
mov r2, r4
|
|
str sl, [sp, #4]
|
|
bl GenerateAndSpawnItem
|
|
b _02343678
|
|
_02343548:
|
|
ldr r2, _0234394C ; =0x00000578
|
|
cmp r0, r2
|
|
bne _02343580
|
|
bl GetSpecialTargetItem
|
|
ldr r2, [sl, #4]
|
|
mov r1, #0
|
|
orr r2, r2, #0x80
|
|
str r2, [sp]
|
|
str r1, [sp, #4]
|
|
ldrsh r3, [sl, #2]
|
|
mov r1, r5
|
|
mov r2, r4
|
|
bl GenerateAndSpawnItem
|
|
b _02343678
|
|
_02343580:
|
|
add r1, r2, #1
|
|
cmp r0, r1
|
|
bne _023435BC
|
|
bl GetSpecialTargetItem
|
|
ldr r1, [sl, #4]
|
|
mov r3, r0
|
|
orr r2, r1, #0x80
|
|
ldr r0, _02343950 ; =0x00000181
|
|
mov r1, r5
|
|
str r2, [sp]
|
|
mov r2, #0
|
|
str r2, [sp, #4]
|
|
mov r2, r4
|
|
bl GenerateAndSpawnItem
|
|
b _02343678
|
|
_023435BC:
|
|
add r1, r2, #0xa
|
|
cmp r0, r1
|
|
blt _02343658
|
|
add r1, r2, #0x13
|
|
cmp r0, r1
|
|
bgt _02343658
|
|
mov r0, #0xc
|
|
bl DungeonRandInt
|
|
mov r0, r0, lsl #0x10
|
|
ldrsh r2, [sl]
|
|
ldr r1, _02343954 ; =0xFFFFFA7E
|
|
str r0, [sp, #0x20]
|
|
add r0, r2, r1
|
|
mov r0, r0, lsl #0x10
|
|
mov r0, r0, asr #0x10
|
|
str r0, [sp, #0x18]
|
|
mov r0, #4
|
|
bl DungeonRandInt
|
|
mov fp, r0, lsl #0x10
|
|
ldr r0, [sp, #0x18]
|
|
mov r1, #0xa
|
|
bl _s32_div_f
|
|
ldr r3, [sl, #4]
|
|
ldr r0, [sp, #0x20]
|
|
str r3, [sp]
|
|
mov r2, r0, asr #0xf
|
|
mov sl, fp, asr #0xf
|
|
mov r0, #1
|
|
mov r3, r1
|
|
str r0, [sp, #4]
|
|
ldr fp, _02343958 ; =ov29_023534F0
|
|
ldr r0, _0234395C ; =TREASURE_BOX_1_ITEM_IDS
|
|
ldr r3, [fp, r3, lsl #2]
|
|
ldrsh r0, [r0, r2]
|
|
ldrsh r3, [r3, sl]
|
|
mov r1, r5
|
|
mov r2, r4
|
|
bl GenerateAndSpawnItem
|
|
b _02343678
|
|
_02343658:
|
|
ldr r2, [sl, #4]
|
|
mov r1, #1
|
|
str r2, [sp]
|
|
str r1, [sp, #4]
|
|
ldrsh r3, [sl, #2]
|
|
mov r1, r5
|
|
mov r2, r4
|
|
bl GenerateAndSpawnItem
|
|
_02343678:
|
|
ldrsh r0, [r7]
|
|
bl GetMatchingMonsterId
|
|
movs fp, r0
|
|
beq _023438BC
|
|
mov r0, sb, asr #0xc
|
|
and r0, r0, #0xff
|
|
bl FixedRoomActionParamToDirection
|
|
mov r1, #0
|
|
str r1, [sp, #8]
|
|
ldrb r1, [r7, #2]
|
|
str r1, [sp, #0x10]
|
|
str r0, [sp, #0xc]
|
|
ldrb sb, [r7, #3]
|
|
ldr r0, [sp, #0x10]
|
|
mov r1, #0xc
|
|
smulbb r0, r0, r1
|
|
ldr sl, [sp, #8]
|
|
str r0, [sp, #0x1c]
|
|
ldrsh r7, [r7]
|
|
b _023436FC
|
|
_023436C8:
|
|
mov r0, sl
|
|
bl GetExplorerMazeMonster
|
|
ldrb r0, [r0]
|
|
tst r0, #1
|
|
movne r0, #1
|
|
moveq r0, #0
|
|
tst r0, #0xff
|
|
movne r0, #1
|
|
strne r0, [sp, #8]
|
|
bne _02343704
|
|
add r0, sl, #1
|
|
mov r0, r0, lsl #0x10
|
|
mov sl, r0, asr #0x10
|
|
_023436FC:
|
|
cmp sl, #4
|
|
blt _023436C8
|
|
_02343704:
|
|
ldr r0, _02343960 ; =0x00000229
|
|
cmp fp, r0
|
|
bne _023437C8
|
|
ldr r0, [sp, #8]
|
|
cmp r0, #0
|
|
beq _02343790
|
|
mov r0, #0
|
|
cmp sb, #0xb
|
|
cmp sb, #0xc
|
|
moveq r0, #1
|
|
cmp sb, #0xd
|
|
moveq r0, #2
|
|
cmp sb, #0xe
|
|
moveq r0, #3
|
|
bl GetExplorerMazeMonster
|
|
ldrb r1, [r0]
|
|
tst r1, #1
|
|
movne r1, #1
|
|
moveq r1, #0
|
|
tst r1, #0xff
|
|
beq _023438BC
|
|
ldrsh r3, [r0, #4]
|
|
mov r2, #0
|
|
mov r1, #1
|
|
strh r3, [sp, #0x24]
|
|
ldrb r3, [r0, #1]
|
|
add r0, sp, #0x24
|
|
strh r3, [sp, #0x2c]
|
|
strb sb, [sp, #0x26]
|
|
str r2, [sp, #0x28]
|
|
strb r2, [sp, #0x32]
|
|
strh r5, [sp, #0x2e]
|
|
strh r4, [sp, #0x30]
|
|
bl SpawnMonster
|
|
b _023438BC
|
|
_02343790:
|
|
mov r0, #0x3c
|
|
strh r0, [sp, #0x24]
|
|
bl GetMonsterLevelToSpawn
|
|
mov r2, #0
|
|
strh r0, [sp, #0x2c]
|
|
add r0, sp, #0x24
|
|
mov r1, #1
|
|
strb sb, [sp, #0x26]
|
|
str r2, [sp, #0x28]
|
|
strb r2, [sp, #0x32]
|
|
strh r5, [sp, #0x2e]
|
|
strh r4, [sp, #0x30]
|
|
bl SpawnMonster
|
|
b _023438BC
|
|
_023437C8:
|
|
cmp fp, #0
|
|
beq _023438BC
|
|
mov r1, #0
|
|
cmp sb, #6
|
|
cmpne sb, #0xa
|
|
str r1, [sp, #0x28]
|
|
strb r1, [sp, #0x32]
|
|
ldreq r1, _02343964 ; =FIXED_ROOM_MONSTER_SPAWN_STATS_TABLE
|
|
ldreq r0, [sp, #0x1c]
|
|
strh fp, [sp, #0x24]
|
|
ldreqsh r0, [r1, r0]
|
|
strb sb, [sp, #0x26]
|
|
strh r5, [sp, #0x2e]
|
|
strh r4, [sp, #0x30]
|
|
streqh r0, [sp, #0x2c]
|
|
beq _02343898
|
|
cmp sb, #1
|
|
bne _0234382C
|
|
ldr r0, _0234392C ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x348
|
|
add r0, r0, #0x400
|
|
bl GetOutlawLevel
|
|
strh r0, [sp, #0x2c]
|
|
b _02343898
|
|
_0234382C:
|
|
cmp sb, #4
|
|
bne _02343850
|
|
ldr r0, _0234392C ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x348
|
|
add r0, r0, #0x400
|
|
bl GetOutlawLeaderLevel
|
|
strh r0, [sp, #0x2c]
|
|
b _02343898
|
|
_02343850:
|
|
cmp sb, #5
|
|
bne _02343874
|
|
ldr r0, _0234392C ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x348
|
|
add r0, r0, #0x400
|
|
bl GetOutlawMinionLevel
|
|
strh r0, [sp, #0x2c]
|
|
b _02343898
|
|
_02343874:
|
|
add r0, r0, #0x25c
|
|
cmp r7, r0
|
|
strneh r1, [sp, #0x2c]
|
|
bne _02343898
|
|
ldr r1, _0234392C ; =DUNGEON_PTR
|
|
ldr r0, _02343968 ; =0x0002C9E6
|
|
ldr r1, [r1]
|
|
ldrsh r0, [r1, r0]
|
|
strh r0, [sp, #0x2c]
|
|
_02343898:
|
|
add r0, sp, #0x24
|
|
mov r1, #1
|
|
bl SpawnMonster
|
|
cmp sb, #6
|
|
cmpne sb, #0xa
|
|
bne _023438BC
|
|
ldr r1, [sp, #0x10]
|
|
ldr r2, [sp, #0xc]
|
|
bl InitOtherMonsterData
|
|
_023438BC:
|
|
ldrb r0, [r8]
|
|
cmp r0, #0x19
|
|
ldrneb r1, [sp, #0x58]
|
|
cmpne r1, #0
|
|
beq _023438F8
|
|
ldrb r1, [r8, #3]
|
|
mov r2, r4
|
|
tst r1, #1
|
|
movne r1, #1
|
|
moveq r1, #0
|
|
and r1, r1, #0xff
|
|
str r1, [sp]
|
|
ldrb r3, [r8, #1]
|
|
mov r1, r5
|
|
bl SpawnEnemyTrapAtPos
|
|
_023438F8:
|
|
ldrb r0, [r8, #3]
|
|
tst r0, #8
|
|
beq _0234391C
|
|
ldrh r0, [r6]
|
|
bic r0, r0, #3
|
|
strh r0, [r6]
|
|
ldrh r0, [r6]
|
|
orr r0, r0, #2
|
|
strh r0, [r6]
|
|
_0234391C:
|
|
mov r0, #0
|
|
add sp, sp, #0x34
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_02343928: .word 0x00000FFF
|
|
_0234392C: .word DUNGEON_PTR
|
|
_02343930: .word ov29_0237CFC0
|
|
_02343934: .word 0x000001FF
|
|
_02343938: .word ov29_023502F4
|
|
_0234393C: .word FIXED_ROOM_ENTITY_SPAWN_TABLE
|
|
_02343940: .word ov29_023502F0
|
|
_02343944: .word ov10_022C4B34
|
|
_02343948: .word ov29_02353050
|
|
_0234394C: .word 0x00000578
|
|
_02343950: .word 0x00000181
|
|
_02343954: .word 0xFFFFFA7E
|
|
_02343958: .word ov29_023534F0
|
|
_0234395C: .word TREASURE_BOX_1_ITEM_IDS
|
|
_02343960: .word 0x00000229
|
|
_02343964: .word FIXED_ROOM_MONSTER_SPAWN_STATS_TABLE
|
|
_02343968: .word 0x0002C9E6 + PLACE_FIXED_ROOM_TILE_OFFSET
|
|
arm_func_end PlaceFixedRoomTile
|
|
|
|
arm_func_start FixedRoomActionParamToDirection
|
|
FixedRoomActionParamToDirection: ; 0x0234396C
|
|
cmp r0, #0
|
|
moveq r0, #0xff
|
|
subne r0, r0, #1
|
|
andne r0, r0, #0xff
|
|
bx lr
|
|
arm_func_end FixedRoomActionParamToDirection
|
|
|
|
arm_func_start ov29_02343980
|
|
ov29_02343980: ; 0x02343980
|
|
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
|
mov r7, #0
|
|
mov r4, r7
|
|
mov r5, r7
|
|
_02343990:
|
|
mov r6, r5
|
|
_02343994:
|
|
mov r0, r6
|
|
mov r1, r7
|
|
bl GetTileSafe
|
|
ldrb r1, [r0, #6]
|
|
cmp r1, #0x10
|
|
blo _023439BC
|
|
mov r2, r6
|
|
mov r3, r7
|
|
str r4, [sp]
|
|
bl PlaceFixedRoomTile
|
|
_023439BC:
|
|
add r6, r6, #1
|
|
cmp r6, #0x38
|
|
blt _02343994
|
|
add r7, r7, #1
|
|
cmp r7, #0x20
|
|
blt _02343990
|
|
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
|
arm_func_end ov29_02343980
|
|
|
|
arm_func_start ov29_023439D8
|
|
ov29_023439D8: ; 0x023439D8
|
|
#ifdef JAPAN
|
|
#define OV29_023439D8_OFFSET -0xA4
|
|
#else
|
|
#define OV29_023439D8_OFFSET 0
|
|
#endif
|
|
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x10
|
|
ldr r4, _02343CD0 ; =DUNGEON_PTR
|
|
mov sb, r1
|
|
ldr r4, [r4]
|
|
mov sl, r0
|
|
add r1, r4, #0x4000
|
|
ldrb r1, [r1, #0xc5 + OV29_023439D8_OFFSET]
|
|
str r2, [sp, #4]
|
|
cmp r1, #0
|
|
bne _02343CC0
|
|
bl IsFullFloorFixedRoom
|
|
ldrsh r1, [sl, #4]
|
|
cmp r0, #0
|
|
str r0, [sp, #8]
|
|
strh r1, [sp, #0xc]
|
|
ldrsh r0, [sl, #6]
|
|
sub r0, r0, #1
|
|
strh r0, [sp, #0xe]
|
|
ldrb fp, [sl, #0x25]
|
|
bne _02343C24
|
|
ldrsh r0, [sl, #6]
|
|
sub r8, r0, #0x15
|
|
b _02343B68
|
|
_02343A38:
|
|
ldrsh r0, [sl, #4]
|
|
sub r4, r0, #0x14
|
|
b _02343B54
|
|
_02343A44:
|
|
ldr r0, _02343CD0 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0xc000
|
|
ldr r1, [r0, #0xd24 + OV29_023439D8_OFFSET]
|
|
ldr r2, [r0, #0xd28 + OV29_023439D8_OFFSET]
|
|
subs r5, r4, r1
|
|
sub r6, r8, r2
|
|
bmi _02343B50
|
|
cmp r6, #0
|
|
blt _02343B50
|
|
cmp r5, #8
|
|
cmplt r6, #8
|
|
bge _02343B50
|
|
add r1, r1, #1
|
|
cmp r4, r1
|
|
addge r1, r2, #1
|
|
cmpge r8, r1
|
|
blt _02343B50
|
|
ldr r1, [r0, #0xd2c + OV29_023439D8_OFFSET]
|
|
sub r1, r1, #1
|
|
cmp r4, r1
|
|
ldrlt r0, [r0, #0xd30 + OV29_023439D8_OFFSET]
|
|
sublt r0, r0, #1
|
|
cmplt r8, r0
|
|
bge _02343B50
|
|
mov r0, r4
|
|
mov r1, r8
|
|
bl GetTileSafe
|
|
mov r7, r0
|
|
ldrh r0, [r7]
|
|
tst r0, #0x100
|
|
beq _02343B0C
|
|
mov r0, #0xa0
|
|
mul r1, r5, r0
|
|
mov r0, #0x14
|
|
ldr r2, _02343CD0 ; =DUNGEON_PTR
|
|
mul r0, r6, r0
|
|
ldr r2, [r2]
|
|
add r2, r2, r1
|
|
add r2, r0, r2
|
|
#ifdef JAPAN
|
|
add r2, r2, #0xcc00
|
|
ldrh r2, [r2, #0xbc]
|
|
#else
|
|
add r2, r2, #0xcd00
|
|
ldrh r2, [r2, #0x60]
|
|
#endif
|
|
strh r2, [r7]
|
|
ldr r2, _02343CD0 ; =DUNGEON_PTR
|
|
ldr r2, [r2]
|
|
add r1, r2, r1
|
|
add r0, r0, r1
|
|
#ifdef JAPAN
|
|
add r0, r0, #0xcc00
|
|
ldrh r0, [r0, #0xbe]
|
|
#else
|
|
add r0, r0, #0xcd00
|
|
ldrh r0, [r0, #0x62]
|
|
#endif
|
|
strh r0, [r7, #2]
|
|
_02343B0C:
|
|
mov r0, #1
|
|
str r0, [sp]
|
|
ldr r1, _02343CD0 ; =DUNGEON_PTR
|
|
mov r0, r7
|
|
ldr r1, [r1]
|
|
mov r2, r4
|
|
add r1, r1, r5, lsl #4
|
|
add r1, r1, r6, lsl #1
|
|
#ifdef JAPAN
|
|
add r1, r1, #0xd100
|
|
ldrh r1, [r1, #0xbc]
|
|
#else
|
|
add r1, r1, #0xd200
|
|
ldrh r1, [r1, #0x60]
|
|
#endif
|
|
mov r3, r8
|
|
bl PlaceFixedRoomTile
|
|
ldrh r0, [r7, #2]
|
|
cmp fp, #0xff
|
|
orr r0, r0, #3
|
|
strh r0, [r7, #2]
|
|
strneb fp, [r7, #7]
|
|
_02343B50:
|
|
add r4, r4, #1
|
|
_02343B54:
|
|
ldrsh r0, [sl, #4]
|
|
add r0, r0, #0x14
|
|
cmp r4, r0
|
|
ble _02343A44
|
|
add r8, r8, #1
|
|
_02343B68:
|
|
ldrsh r1, [sl, #6]
|
|
add r0, r1, #0x13
|
|
cmp r8, r0
|
|
ble _02343A38
|
|
sub r4, r1, #0x15
|
|
b _02343C14
|
|
_02343B80:
|
|
ldrsh r0, [sl, #4]
|
|
ldr r6, _02343CD0 ; =DUNGEON_PTR
|
|
sub r5, r0, #0x14
|
|
b _02343C00
|
|
_02343B90:
|
|
ldr r0, [r6]
|
|
add r0, r0, #0xc000
|
|
ldr r7, [r0, #0xd24 + OV29_023439D8_OFFSET]
|
|
ldr r2, [r0, #0xd28 + OV29_023439D8_OFFSET]
|
|
subs r3, r5, r7
|
|
sub r1, r4, r2
|
|
bmi _02343BFC
|
|
cmp r1, #0
|
|
blt _02343BFC
|
|
cmp r3, #8
|
|
cmplt r1, #8
|
|
bge _02343BFC
|
|
add r1, r7, #1
|
|
cmp r5, r1
|
|
addge r1, r2, #1
|
|
cmpge r4, r1
|
|
blt _02343BFC
|
|
ldr r1, [r0, #0xd2c + OV29_023439D8_OFFSET]
|
|
sub r1, r1, #1
|
|
cmp r5, r1
|
|
ldrlt r0, [r0, #0xd30 + OV29_023439D8_OFFSET]
|
|
sublt r0, r0, #1
|
|
cmplt r4, r0
|
|
bge _02343BFC
|
|
mov r0, r5
|
|
mov r1, r4
|
|
bl ov29_02336694
|
|
_02343BFC:
|
|
add r5, r5, #1
|
|
_02343C00:
|
|
ldrsh r0, [sl, #4]
|
|
add r0, r0, #0x14
|
|
cmp r5, r0
|
|
ble _02343B90
|
|
add r4, r4, #1
|
|
_02343C14:
|
|
ldrsh r0, [sl, #6]
|
|
add r0, r0, #0x13
|
|
cmp r4, r0
|
|
ble _02343B80
|
|
_02343C24:
|
|
ldr r0, _02343CD0 ; =DUNGEON_PTR
|
|
mov r2, #1
|
|
ldr r0, [r0]
|
|
ldr r1, _02343CD4 ; =0xFFFFCFEF
|
|
add r0, r0, #0x4000
|
|
strb r2, [r0, #0xc5 + OV29_023439D8_OFFSET]
|
|
ldr r0, [sp, #8]
|
|
ldrh r2, [sb]
|
|
cmp r0, #0
|
|
and r0, r2, r1
|
|
strh r0, [sb]
|
|
beq _02343C6C
|
|
ldrh r0, [sb]
|
|
bic r0, r0, #3
|
|
strh r0, [sb]
|
|
ldrh r0, [sb]
|
|
orr r0, r0, #1
|
|
strh r0, [sb]
|
|
_02343C6C:
|
|
ldrsh r1, [sl, #6]
|
|
ldrsh r0, [sl, #4]
|
|
sub r1, r1, #1
|
|
bl ov29_02336694
|
|
bl DetermineAllTilesWalkableNeighbors
|
|
bl UpdateTrapsVisibility
|
|
mov r0, #0xc
|
|
bl IsCurrentMissionType
|
|
cmp r0, #0
|
|
moveq r1, #1
|
|
movne r1, #0
|
|
add r0, sp, #0xc
|
|
and r1, r1, #0xff
|
|
bl ov29_022E6694
|
|
ldr r1, [sp, #4]
|
|
mov r0, sl
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
mov r0, #0x14
|
|
mov r1, #0x3c
|
|
bl ov29_022EA370
|
|
b _02343CC8
|
|
_02343CC0:
|
|
mov r1, r3
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
_02343CC8:
|
|
add sp, sp, #0x10
|
|
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_02343CD0: .word DUNGEON_PTR
|
|
_02343CD4: .word 0xFFFFCFEF
|
|
arm_func_end ov29_023439D8
|
|
|
|
arm_func_start ApplyKeyEffect
|
|
ApplyKeyEffect: ; 0x02343CD8
|
|
stmdb sp!, {r4, lr}
|
|
mov r4, r0
|
|
ldrsh r1, [r4, #6]
|
|
ldrsh r0, [r4, #4]
|
|
sub r1, r1, #1
|
|
bl GetTileSafe
|
|
mov r1, r0
|
|
ldrh r0, [r1]
|
|
tst r0, #0x1000
|
|
bne _02343D10
|
|
ldr r1, _02343D28 ; =0x00000B94
|
|
mov r0, r4
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
ldmia sp!, {r4, pc}
|
|
_02343D10:
|
|
ldr r2, _02343D2C ; =0x00000B93
|
|
mov r0, r4
|
|
add r3, r2, #1
|
|
bl ov29_023439D8
|
|
bl UpdateMinimap
|
|
ldmia sp!, {r4, pc}
|
|
.align 2, 0
|
|
#ifdef JAPAN
|
|
_02343D28: .word 0x000008A6
|
|
_02343D2C: .word 0x000008A5
|
|
#else
|
|
_02343D28: .word 0x00000B94
|
|
_02343D2C: .word 0x00000B93
|
|
#endif
|
|
arm_func_end ApplyKeyEffect
|
|
|
|
arm_func_start ov29_02343D30
|
|
ov29_02343D30: ; 0x02343D30
|
|
stmdb sp!, {r3, r4, r5, lr}
|
|
mov r5, r0
|
|
ldrsh r1, [r5, #6]
|
|
ldrsh r0, [r5, #4]
|
|
sub r1, r1, #1
|
|
bl GetTileSafe
|
|
mov r4, r0
|
|
ldrh r0, [r4]
|
|
tst r0, #0x2000
|
|
bne _02343D68
|
|
ldr r1, _02343D88 ; =0x00000B95
|
|
mov r0, r5
|
|
bl LogMessageByIdWithPopupCheckUser
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
_02343D68:
|
|
bl ov29_02348BE8
|
|
ldr r2, _02343D8C ; =0x00000B93
|
|
mov r0, r5
|
|
mov r1, r4
|
|
add r3, r2, #2
|
|
bl ov29_023439D8
|
|
bl UpdateMinimap
|
|
ldmia sp!, {r3, r4, r5, pc}
|
|
.align 2, 0
|
|
#ifdef JAPAN
|
|
_02343D88: .word 0x000008A7
|
|
_02343D8C: .word 0x000008A5
|
|
#else
|
|
_02343D88: .word 0x00000B95
|
|
_02343D8C: .word 0x00000B93
|
|
#endif
|
|
arm_func_end ov29_02343D30
|
|
|
|
arm_func_start LoadFixedRoomData
|
|
LoadFixedRoomData: ; 0x02343D90
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _02343DBC ; =FIXED_ROOM_DATA_PTR
|
|
ldr r1, _02343DC0 ; =ov29_02353110
|
|
ldr r0, [r0]
|
|
mov r2, #0
|
|
bl LoadFileFromRom
|
|
ldr r0, _02343DBC ; =FIXED_ROOM_DATA_PTR
|
|
ldr r0, [r0]
|
|
ldr r1, [r0], #8
|
|
bl HandleSir0Translation
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02343DBC: .word FIXED_ROOM_DATA_PTR
|
|
_02343DC0: .word ov29_02353110
|
|
arm_func_end LoadFixedRoomData
|
|
|
|
arm_func_start ov29_02343DC4
|
|
ov29_02343DC4: ; 0x02343DC4
|
|
ldr r0, _02343DD4 ; =FIXED_ROOM_DATA_PTR
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #8]
|
|
bx lr
|
|
.align 2, 0
|
|
_02343DD4: .word FIXED_ROOM_DATA_PTR
|
|
arm_func_end ov29_02343DC4
|
|
|
|
arm_func_start ov29_02343DD8
|
|
ov29_02343DD8: ; 0x02343DD8
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _02343E1C ; =FIXED_ROOM_DATA_PTR
|
|
ldr r0, [r0]
|
|
bl PointsToZero
|
|
cmp r0, #0
|
|
ldmneia sp!, {r3, pc}
|
|
ldr r0, _02343E1C ; =FIXED_ROOM_DATA_PTR
|
|
ldr r0, [r0]
|
|
bl UnloadFile
|
|
ldr r0, _02343E1C ; =FIXED_ROOM_DATA_PTR
|
|
ldr r0, [r0]
|
|
bl ZInit8
|
|
ldr r0, _02343E1C ; =FIXED_ROOM_DATA_PTR
|
|
mov r1, #0
|
|
ldr r0, [r0]
|
|
str r1, [r0, #8]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02343E1C: .word FIXED_ROOM_DATA_PTR
|
|
arm_func_end ov29_02343DD8
|
|
|
|
arm_func_start LoadFixedRoom
|
|
LoadFixedRoom: ; 0x02343E20
|
|
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
|
|
sub sp, sp, #0x14
|
|
movs r4, r2
|
|
mov sl, r0
|
|
str r1, [sp]
|
|
str r3, [sp, #4]
|
|
moveq r0, #0
|
|
beq _0234402C
|
|
bl LoadFixedRoomData
|
|
ldr r0, _02344034 ; =FIXED_ROOM_DATA_PTR
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, #8]
|
|
ldr r0, [r0, r4, lsl #2]
|
|
ldrh r4, [r0]
|
|
ldrh r5, [r0, #2]
|
|
bl ov29_02342BEC
|
|
mul fp, r4, r5
|
|
mov sb, #0
|
|
str r0, [sp, #8]
|
|
mov r4, r0
|
|
mov r5, sb
|
|
b _02344014
|
|
_02343E78:
|
|
ldrh r2, [r4]
|
|
ldr r1, _02344038 ; =0x00000FFF
|
|
ldr r0, [sp]
|
|
and r2, r2, r1
|
|
cmp sb, r0
|
|
bge _0234401C
|
|
cmp r2, #0x10
|
|
blt _0234400C
|
|
sub r0, r1, #0xe00
|
|
cmp r2, r0
|
|
bgt _0234400C
|
|
ldr r1, _0234403C ; =FIXED_ROOM_ENTITY_SPAWN_TABLE
|
|
sub r2, r2, #0x10
|
|
mov r0, #0xc
|
|
smlabb r0, r2, r0, r1
|
|
ldr r6, [r0, #4]
|
|
ldrsh r0, [r6]
|
|
cmp r0, #0
|
|
ldrne r1, _02344040 ; =0x00000229
|
|
cmpne r0, r1
|
|
ldrne r1, _02344044 ; =0x00000483
|
|
cmpne r0, r1
|
|
beq _0234400C
|
|
bl GetMatchingMonsterId
|
|
movs r8, r0
|
|
beq _0234400C
|
|
mov r7, #0
|
|
b _02343EFC
|
|
_02343EE8:
|
|
add r0, sl, r7, lsl #3
|
|
bl GetMonsterIdFromSpawnEntry
|
|
cmp r8, r0
|
|
beq _02343F04
|
|
add r7, r7, #1
|
|
_02343EFC:
|
|
cmp r7, sb
|
|
blt _02343EE8
|
|
_02343F04:
|
|
cmp r7, sb
|
|
bne _0234400C
|
|
ldrb r0, [r6, #3]
|
|
cmp r0, #1
|
|
bne _02343F40
|
|
ldr r0, _02344048 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x348
|
|
add r0, r0, #0x400
|
|
bl GetOutlawLevel
|
|
mov r1, r0
|
|
add r0, sp, #0xc
|
|
mov r2, r8
|
|
bl SetMonsterLevelAndId
|
|
b _02343FE8
|
|
_02343F40:
|
|
cmp r0, #4
|
|
bne _02343F70
|
|
ldr r0, _02344048 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x348
|
|
add r0, r0, #0x400
|
|
bl GetOutlawLeaderLevel
|
|
mov r1, r0
|
|
add r0, sp, #0xc
|
|
mov r2, r8
|
|
bl SetMonsterLevelAndId
|
|
b _02343FE8
|
|
_02343F70:
|
|
cmp r0, #5
|
|
bne _02343FA0
|
|
ldr r0, _02344048 ; =DUNGEON_PTR
|
|
ldr r0, [r0]
|
|
add r0, r0, #0x348
|
|
add r0, r0, #0x400
|
|
bl GetOutlawMinionLevel
|
|
mov r1, r0
|
|
add r0, sp, #0xc
|
|
mov r2, r8
|
|
bl SetMonsterLevelAndId
|
|
b _02343FE8
|
|
_02343FA0:
|
|
ldrb r3, [r6, #2]
|
|
cmp r3, #0
|
|
ldrnesh r1, [r6]
|
|
ldrne r0, _0234404C ; =0x00000485
|
|
cmpne r1, r0
|
|
bne _02343FCC
|
|
ldr r1, [sp, #4]
|
|
add r0, sp, #0xc
|
|
mov r2, r8
|
|
bl SetMonsterLevelAndId
|
|
b _02343FE8
|
|
_02343FCC:
|
|
mov r0, #0xc
|
|
mul r2, r3, r0
|
|
ldr r1, _02344050 ; =FIXED_ROOM_MONSTER_SPAWN_STATS_TABLE
|
|
add r0, sp, #0xc
|
|
ldrsh r1, [r1, r2]
|
|
mov r2, r8
|
|
bl SetMonsterLevelAndId
|
|
_02343FE8:
|
|
mov r0, sb, lsl #3
|
|
add r3, sp, #0xc
|
|
add sb, sb, #1
|
|
add r2, sl, r0
|
|
mov r1, #4
|
|
_02343FFC:
|
|
ldrh r0, [r3], #2
|
|
subs r1, r1, #1
|
|
strh r0, [r2], #2
|
|
bne _02343FFC
|
|
_0234400C:
|
|
add r5, r5, #1
|
|
add r4, r4, #2
|
|
_02344014:
|
|
cmp r5, fp
|
|
blt _02343E78
|
|
_0234401C:
|
|
ldr r0, [sp, #8]
|
|
bl MemFree
|
|
bl ov29_02343DD8
|
|
mov r0, sb
|
|
_0234402C:
|
|
add sp, sp, #0x14
|
|
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
|
|
.align 2, 0
|
|
_02344034: .word FIXED_ROOM_DATA_PTR
|
|
_02344038: .word 0x00000FFF
|
|
_0234403C: .word FIXED_ROOM_ENTITY_SPAWN_TABLE
|
|
_02344040: .word 0x00000229
|
|
_02344044: .word 0x00000483
|
|
_02344048: .word DUNGEON_PTR
|
|
_0234404C: .word 0x00000485
|
|
_02344050: .word FIXED_ROOM_MONSTER_SPAWN_STATS_TABLE
|
|
arm_func_end LoadFixedRoom
|
|
|
|
arm_func_start OpenFixedBin
|
|
OpenFixedBin: ; 0x02344054
|
|
stmdb sp!, {r3, lr}
|
|
mov r0, #0xc
|
|
mov r1, #0
|
|
bl MemAlloc
|
|
ldr r2, _02344084 ; =FIXED_ROOM_DATA_PTR
|
|
mov r1, #0xc
|
|
str r0, [r2]
|
|
bl MemZero
|
|
ldr r0, _02344084 ; =FIXED_ROOM_DATA_PTR
|
|
ldr r0, [r0]
|
|
bl ZInit8
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_02344084: .word FIXED_ROOM_DATA_PTR
|
|
arm_func_end OpenFixedBin
|
|
|
|
arm_func_start CloseFixedBin
|
|
CloseFixedBin: ; 0x02344088
|
|
stmdb sp!, {r3, lr}
|
|
ldr r0, _023440A8 ; =FIXED_ROOM_DATA_PTR
|
|
ldr r0, [r0]
|
|
bl MemFree
|
|
ldr r0, _023440A8 ; =FIXED_ROOM_DATA_PTR
|
|
mov r1, #0
|
|
str r1, [r0]
|
|
ldmia sp!, {r3, pc}
|
|
.align 2, 0
|
|
_023440A8: .word FIXED_ROOM_DATA_PTR
|
|
arm_func_end CloseFixedBin
|
|
|
|
arm_func_start AreOrbsAllowed
|
|
AreOrbsAllowed: ; 0x023440AC
|
|
cmp r0, #0
|
|
beq _023440BC
|
|
cmp r0, #0xa5
|
|
blo _023440C4
|
|
_023440BC:
|
|
mov r0, #1
|
|
bx lr
|
|
_023440C4:
|
|
mov r1, #0xc
|
|
mul r1, r0, r1
|
|
ldr r0, _023440D8 ; =ov10_022C6C77
|
|
ldrb r0, [r0, r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_023440D8: .word ov10_022C6C77
|
|
arm_func_end AreOrbsAllowed
|
|
|
|
arm_func_start AreTileJumpsAllowed
|
|
AreTileJumpsAllowed: ; 0x023440DC
|
|
cmp r0, #0
|
|
beq _023440EC
|
|
cmp r0, #0xa5
|
|
blo _023440F4
|
|
_023440EC:
|
|
mov r0, #1
|
|
bx lr
|
|
_023440F4:
|
|
mov r1, #0xc
|
|
mul r1, r0, r1
|
|
ldr r0, _02344108 ; =ov10_022C6C78
|
|
ldrb r0, [r0, r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_02344108: .word ov10_022C6C78
|
|
arm_func_end AreTileJumpsAllowed
|
|
|
|
arm_func_start AreTrawlOrbsAllowed
|
|
AreTrawlOrbsAllowed: ; 0x0234410C
|
|
cmp r0, #0
|
|
beq _0234411C
|
|
cmp r0, #0xa5
|
|
blo _02344124
|
|
_0234411C:
|
|
mov r0, #1
|
|
bx lr
|
|
_02344124:
|
|
mov r1, #0xc
|
|
mul r1, r0, r1
|
|
ldr r0, _02344138 ; =ov10_022C6C79
|
|
ldrb r0, [r0, r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_02344138: .word ov10_022C6C79
|
|
arm_func_end AreTrawlOrbsAllowed
|
|
|
|
arm_func_start AreOrbsAllowedVeneer
|
|
AreOrbsAllowedVeneer: ; 0x0234413C
|
|
ldr ip, _02344144 ; =AreOrbsAllowed
|
|
bx ip
|
|
.align 2, 0
|
|
_02344144: .word AreOrbsAllowed
|
|
arm_func_end AreOrbsAllowedVeneer
|
|
|
|
arm_func_start AreLateGameTrapsEnabled
|
|
AreLateGameTrapsEnabled: ; 0x02344148
|
|
mov r1, #0xc
|
|
mul r1, r0, r1
|
|
ldr r0, _0234415C ; =ov10_022C6C75
|
|
ldrb r0, [r0, r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_0234415C: .word ov10_022C6C75
|
|
arm_func_end AreLateGameTrapsEnabled
|