pmd-sky/asm/overlay_29_02341E6C.s

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