pmd-sky/asm/overlay_29_02336450.s
2025-12-22 06:51:47 +00:00

1833 lines
34 KiB
ArmAsm

.include "asm/macros.inc"
.include "overlay_29_02336450.inc"
.text
arm_func_start GetDefaultTileTextureId
GetDefaultTileTextureId: ; 0x02336450
ldr r0, _0233645C ; =DEFAULT_TILE
ldr r0, [r0, #4]
bx lr
.align 2, 0
_0233645C: .word DEFAULT_TILE
arm_func_end GetDefaultTileTextureId
arm_func_start ov29_02336460
ov29_02336460: ; 0x02336460
#ifdef JAPAN
#define OV29_02336460_OFFSET -0xA4
#else
#define OV29_02336460_OFFSET 0
#endif
stmdb sp!, {r4, lr}
ldr r1, _02336598 ; =DUNGEON_PTR
ldr r0, _0233659C ; =ov29_0237CAAC
ldr r1, [r1]
mov r2, #0
add r1, r1, #0x4000
ldrsh r4, [r1, #0xd4 + OV29_02336460_OFFSET]
mov r1, r4
bl ov10_022C25EC
ldr r1, _023365A0 ; =ov29_0237CAA0
mov r0, #0
ldr ip, [r1, #0x14]
ldr r3, _023365A4 ; =DEFAULT_TILE
mov r2, r0
mov r1, #1
str ip, [r3, #4]
bl GetBgRegionArea
mov r1, r4
mov r2, #0
bl ov10_022C2588
ldr r0, _02336598 ; =DUNGEON_PTR
mov r1, r4
ldr r0, [r0]
mov r2, #0
add r0, r0, #0x2a8 + OV29_02336460_OFFSET
add r0, r0, #0x10000
bl InitTilesetBuffer
#ifdef JAPAN
ldr r0, _02336598 ; =DUNGEON_PTR
mov r1, r4
ldr r0, [r0]
mov r2, #0
add r0, r0, #0xbe
add r0, r0, #0x12000
#else
ldr r1, _02336598 ; =DUNGEON_PTR
ldr r0, _023365A8 ; =0x00012162
ldr r2, [r1]
mov r1, r4
add r0, r2, r0
mov r2, #0
#endif
bl ov10_022C2720
mov r0, #0
mov r1, r0
bl ov29_022E9F80
ldr r0, _023365AC ; =ov29_0237CAA0
mov r1, r4
mov r2, #0
bl ov10_022C2654
ldr r0, _023365A0 ; =ov29_0237CAA0
mov r1, #0x20
ldr r0, [r0, #8]
bl ov29_022DE0EC
ldr r1, _023365B0 ; =MOBILITY_TYPE_TO_DUNGEON_MOBILITY_TYPE
mov r4, #0
mov r3, #1
strb r4, [r1]
strb r3, [r1, #1]
mov r0, #2
strb r0, [r1, #2]
mov r0, #3
strb r0, [r1, #3]
ldr r0, _02336598 ; =DUNGEON_PTR
ldr r2, _023365B4 ; =SECONDARY_TERRAIN_TYPES
ldr ip, [r0]
add r0, ip, #0x4000
ldrsh r0, [r0, #0xd4 + OV29_02336460_OFFSET]
ldrb r0, [r2, r0]
cmp r0, #1
streqb r3, [r1, #4]
streqb r4, [r1, #5]
strneb r4, [r1, #4]
strneb r3, [r1, #5]
add r0, ip, #0x4000
ldrsh r0, [r0, #0xd4 + OV29_02336460_OFFSET]
sub r0, r0, #0x1a
mov r0, r0, lsl #0x10
mov r0, r0, asr #0x10
mov r0, r0, lsl #0x10
mov r0, r0, lsr #0x10
cmp r0, #1
ldrls r0, _023365B0 ; =MOBILITY_TYPE_TO_DUNGEON_MOBILITY_TYPE
movls r1, #0
strlsb r1, [r0, #4]
strlsb r1, [r0, #5]
ldmia sp!, {r4, pc}
.align 2, 0
_02336598: .word DUNGEON_PTR
_0233659C: .word ov29_0237CAAC
_023365A0: .word ov29_0237CAA0
_023365A4: .word DEFAULT_TILE
#ifndef JAPAN
_023365A8: .word 0x00012162
#endif
_023365AC: .word ov29_0237CAA0
_023365B0: .word MOBILITY_TYPE_TO_DUNGEON_MOBILITY_TYPE
_023365B4: .word SECONDARY_TERRAIN_TYPES
arm_func_end ov29_02336460
arm_func_start ov29_023365B8
ov29_023365B8: ; 0x023365B8
stmdb sp!, {r3, lr}
ldr r0, _023365DC ; =ov29_0237CAAC
bl ov10_022C2638
ldr r0, _023365E0 ; =ov29_0237CAA0
bl ov10_022C26A0
ldr r0, _023365E4 ; =DEFAULT_TILE
mov r1, #0
str r1, [r0, #4]
ldmia sp!, {r3, pc}
.align 2, 0
_023365DC: .word ov29_0237CAAC
_023365E0: .word ov29_0237CAA0
_023365E4: .word DEFAULT_TILE
arm_func_end ov29_023365B8
arm_func_start ov29_023365E8
ov29_023365E8: ; 0x023365E8
stmdb sp!, {r3, lr}
ldr r0, _02336648 ; =DUNGEON_PTR
ldr r0, [r0]
add r0, r0, #0x4000
#ifdef JAPAN
ldrsh r0, [r0, #0x30]
#else
ldrsh r0, [r0, #0xd4]
#endif
sub r1, r0, #0x1a
mov r1, r1, lsl #0x10
mov r1, r1, asr #0x10
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
cmp r1, #1
ldrls r1, _0233664C ; =ov29_02352B60
ldrls r0, _02336650 ; =DEFAULT_TILE
strls r1, [r0]
ldmlsia sp!, {r3, pc}
bl FloorSecondaryTerrainIsChasm
cmp r0, #0
ldrne r1, _02336654 ; =ov29_02352B88
ldrne r0, _02336650 ; =DEFAULT_TILE
strne r1, [r0]
ldreq r1, _02336658 ; =ov29_02352B74
ldreq r0, _02336650 ; =DEFAULT_TILE
streq r1, [r0]
ldmia sp!, {r3, pc}
.align 2, 0
_02336648: .word DUNGEON_PTR
_0233664C: .word ov29_02352B60
_02336650: .word DEFAULT_TILE
_02336654: .word ov29_02352B88
_02336658: .word ov29_02352B74
arm_func_end ov29_023365E8
arm_func_start ov29_0233665C
ov29_0233665C: ; 0x0233665C
stmdb sp!, {r4, r5, r6, lr}
mov r6, #0
mov r4, r6
_02336668:
mov r5, r4
_0233666C:
mov r0, r5
mov r1, r6
bl ov29_02336694
add r5, r5, #1
cmp r5, #0x38
blt _0233666C
add r6, r6, #1
cmp r6, #0x20
blt _02336668
ldmia sp!, {r4, r5, r6, pc}
arm_func_end ov29_0233665C
arm_func_start ov29_02336694
ov29_02336694: ; 0x02336694
#ifdef JAPAN
#define OV29_02336694_OFFSET -0xA4
#else
#define OV29_02336694_OFFSET 0
#endif
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #8
movs sb, r0
mov r8, r1
bmi _023369E8
cmp r8, #0
blt _023369E8
cmp sb, #0x38
cmplt r8, #0x20
bge _023369E8
bl GetTile
ldr r1, _023369F0 ; =DUNGEON_PTR
ldrh r2, [r0]
ldr r4, [r1]
add r0, r4, #0x4000
ldrsh r1, [r0, #0xd4 + OV29_02336694_OFFSET]
and r0, r2, #3
str r0, [sp, #4]
cmp r1, #0xaa
blt _02336728
cmp sb, #0x20
cmplt r8, #0x20
mov r0, sb
bge _02336714
mov r1, r8
bl GetTileSafe
#ifdef JAPAN
add r1, r4, r8, lsl #6
add r1, r1, sb, lsl #1
add r1, r1, #0x12000
ldrh r1, [r1, #0xbe]
#else
add r2, r4, r8, lsl #6
ldr r1, _023369F4 ; =0x00012162
add r2, r2, sb, lsl #1
ldrh r1, [r2, r1]
#endif
strh r1, [r0, #4]
b _023369E8
_02336714:
mov r1, r8
bl GetTileSafe
mov r1, #0
strh r1, [r0, #4]
b _023369E8
_02336728:
mov r0, sb
add r1, r8, #1
bl GetTile
ldrh r2, [r0]
add r0, sb, #1
add r1, r8, #1
and sl, r2, #3
bl GetTile
ldrh r2, [r0]
mov r1, r8
add r0, sb, #1
and r2, r2, #3
str r2, [sp]
bl GetTile
ldrh r2, [r0]
add r0, sb, #1
sub r1, r8, #1
and fp, r2, #3
bl GetTile
ldrh r2, [r0]
mov r0, sb
sub r1, r8, #1
and r4, r2, #3
bl GetTile
ldrh r2, [r0]
sub r0, sb, #1
sub r1, r8, #1
and r5, r2, #3
bl GetTile
ldrh r2, [r0]
sub r0, sb, #1
mov r1, r8
and r6, r2, #3
bl GetTile
ldrh r2, [r0]
sub r0, sb, #1
add r1, r8, #1
and r7, r2, #3
bl GetTile
ldrh r1, [r0]
ldr r0, [sp, #4]
cmp r0, #1
and r0, r1, #3
bne _02336828
cmp sl, #0
mov sl, #0xff
ldr r1, [sp]
biceq sl, sl, #1
cmp r1, #0
biceq sl, sl, #2
cmp fp, #0
biceq sl, sl, #4
cmp r4, #0
biceq sl, sl, #8
cmp r5, #0
biceq sl, sl, #0x10
cmp r6, #0
biceq sl, sl, #0x20
cmp r7, #0
biceq sl, sl, #0x40
cmp r0, #0
biceq sl, sl, #0x80
orr sl, sl, #0x200
b _0233699C
_02336828:
ldr r1, [sp, #4]
cmp r1, #2
bne _02336884
cmp sl, #2
mov sl, #0xff
ldr r1, [sp]
bicne sl, sl, #1
cmp r1, #2
bicne sl, sl, #2
cmp fp, #2
bicne sl, sl, #4
cmp r4, #2
bicne sl, sl, #8
cmp r5, #2
bicne sl, sl, #0x10
cmp r6, #2
bicne sl, sl, #0x20
cmp r7, #2
bicne sl, sl, #0x40
cmp r0, #2
bicne sl, sl, #0x80
orr sl, sl, #0x100
b _0233699C
_02336884:
cmp r1, #3
bne _02336954
ldr r1, _023369F0 ; =DUNGEON_PTR
ldr r1, [r1]
add r1, r1, #0x4000
ldrsh r1, [r1, #0xd4 + OV29_02336694_OFFSET]
sub r1, r1, #0x1a
mov r1, r1, lsl #0x10
mov r1, r1, asr #0x10
mov r1, r1, lsl #0x10
mov r1, r1, lsr #0x10
cmp r1, #1
bhi _02336904
cmp sl, #3
mov sl, #0
ldr r1, [sp]
orreq sl, sl, #1
cmp r1, #3
orreq sl, sl, #2
cmp fp, #3
orreq sl, sl, #4
cmp r4, #3
orreq sl, sl, #8
cmp r5, #3
orreq sl, sl, #0x10
cmp r6, #3
orreq sl, sl, #0x20
cmp r7, #3
orreq sl, sl, #0x40
cmp r0, #3
orreq sl, sl, #0x80
b _0233699C
_02336904:
cmp sl, #3
mov sl, #0xff
ldr r1, [sp]
bicne sl, sl, #1
cmp r1, #3
bicne sl, sl, #2
cmp fp, #3
bicne sl, sl, #4
cmp r4, #3
bicne sl, sl, #8
cmp r5, #3
bicne sl, sl, #0x10
cmp r6, #3
bicne sl, sl, #0x20
cmp r7, #3
bicne sl, sl, #0x40
cmp r0, #3
bicne sl, sl, #0x80
orr sl, sl, #0x100
b _0233699C
_02336954:
cmp sl, #0
mov sl, #0
ldr r1, [sp]
orreq sl, sl, #1
cmp r1, #0
orreq sl, sl, #2
cmp fp, #0
orreq sl, sl, #4
cmp r4, #0
orreq sl, sl, #8
cmp r5, #0
orreq sl, sl, #0x10
cmp r6, #0
orreq sl, sl, #0x20
cmp r7, #0
orreq sl, sl, #0x40
cmp r0, #0
orreq sl, sl, #0x80
_0233699C:
mov r0, #4
bl RandIntSafe
mov r4, r0
cmp r4, #3
moveq r4, #0
bl IsCurrentFixedRoomBossFight
cmp r0, #0
mov r0, sb
mov r1, r8
movne r4, #0
bl GetTileSafe
ldr r1, _023369F0 ; =DUNGEON_PTR
add r2, sl, sl, lsl #1
ldr r1, [r1]
add r1, r1, r2
add r1, r1, r4
add r1, r1, #0x12000
ldrb r1, [r1, #0x162 + OV29_02336694_OFFSET]
strh r1, [r0, #4]
_023369E8:
add sp, sp, #8
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_023369F0: .word DUNGEON_PTR
#ifndef JAPAN
_023369F4: .word 0x00012162
#endif
arm_func_end ov29_02336694
arm_func_start ov29_023369F8
ov29_023369F8: ; 0x023369F8
#ifdef JAPAN
#define OV29_023369F8_OFFSET -0xA4
#else
#define OV29_023369F8_OFFSET 0
#endif
ldr r1, _02336A48 ; =DUNGEON_PTR
mov ip, #0
mvn r3, #0
mov r2, #0xff
_02336A08:
ldr r0, [r1]
add r0, r0, ip, lsl #2
add r0, r0, #0xcc00
strh r3, [r0, #0xec + OV29_023369F8_OFFSET]
ldr r0, [r1]
add r0, r0, ip, lsl #2
add r0, r0, #0xcc00
strh r3, [r0, #0xee + OV29_023369F8_OFFSET]
ldr r0, [r1]
add r0, r0, ip
add r0, r0, #0xc000
add ip, ip, #1
strb r2, [r0, #0xd0c + OV29_023369F8_OFFSET]
cmp ip, #8
blt _02336A08
bx lr
.align 2, 0
_02336A48: .word DUNGEON_PTR
arm_func_end ov29_023369F8
arm_func_start DetermineAllTilesWalkableNeighbors
DetermineAllTilesWalkableNeighbors: ; 0x02336A4C
stmdb sp!, {r4, r5, r6, lr}
mov r6, #0
mov r4, r6
_02336A58:
mov r5, r4
_02336A5C:
mov r0, r5
mov r1, r6
bl DetermineTileWalkableNeighbors
add r5, r5, #1
cmp r5, #0x38
blt _02336A5C
add r6, r6, #1
cmp r6, #0x20
blt _02336A58
ldmia sp!, {r4, r5, r6, pc}
arm_func_end DetermineAllTilesWalkableNeighbors
arm_func_start DetermineTileWalkableNeighbors
DetermineTileWalkableNeighbors: ; 0x02336A84
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x28
mov r4, r1
mov r6, #0
add r1, r4, #1
mov r5, r0
mov r7, r6
mov r8, r6
bl GetTile
ldrh r2, [r0]
add r0, r5, #1
add r1, r4, #1
and r2, r2, #3
str r2, [sp, #8]
bl GetTile
ldrh r2, [r0]
mov r1, r4
add r0, r5, #1
and r2, r2, #3
str r2, [sp, #0xc]
bl GetTile
ldrh r1, [r0]
sub sb, r4, #1
add r0, r5, #1
and r1, r1, #3
str r1, [sp, #0x10]
mov r1, sb
bl GetTile
ldrh r2, [r0]
mov r0, r5
mov r1, sb
and r2, r2, #3
str r2, [sp, #0x14]
bl GetTile
ldrh r2, [r0]
mov r1, sb
sub sb, r5, #1
and r2, r2, #3
mov r0, sb
str r2, [sp, #0x18]
bl GetTile
ldrh r2, [r0]
mov r0, sb
mov r1, r4
and r2, r2, #3
str r2, [sp, #0x1c]
bl GetTile
ldrh r2, [r0]
mov r0, sb
add r1, r4, #1
and r2, r2, #3
str r2, [sp, #0x20]
bl GetTile
ldrh r1, [r0]
ldr r0, [sp, #8]
ldr r2, [sp, #0x10]
cmp r0, #1
and r0, r1, #3
orreq r6, r6, #1
str r0, [sp, #0x24]
cmp r2, #1
ldr r3, [sp, #0x18]
orreq r6, r6, #4
cmp r3, #1
ldr ip, [sp, #0x20]
orreq r6, r6, #0x10
cmp ip, #1
ldr r0, [sp, #8]
orreq r6, r6, #0x40
cmp r0, #0
beq _02336BB4
ldr r0, [sp, #0xc]
cmp r0, #1
bne _02336BB4
cmp r2, #0
orrne r6, r6, #2
_02336BB4:
cmp r2, #0
beq _02336BD0
ldr r0, [sp, #0x14]
cmp r0, #1
bne _02336BD0
cmp r3, #0
orrne r6, r6, #8
_02336BD0:
cmp r3, #0
beq _02336BEC
ldr r0, [sp, #0x1c]
cmp r0, #1
bne _02336BEC
cmp ip, #0
orrne r6, r6, #0x20
_02336BEC:
cmp ip, #0
beq _02336C0C
ldr r0, [sp, #0x24]
cmp r0, #1
bne _02336C0C
ldr r0, [sp, #8]
cmp r0, #0
orrne r6, r6, #0x80
_02336C0C:
mov r1, #0
mov fp, r1
add lr, sp, #0
mov sb, #1
add r0, sp, #8
_02336C20:
ldr sl, [r0, r1, lsl #2]
sub sl, sl, #1
cmp sl, #1
strlsb sb, [lr, r1]
strhib fp, [lr, r1]
add r1, r1, #1
cmp r1, #8
blt _02336C20
ldrb r0, [sp]
mov sb, #0xff
mov r1, r4
cmp r0, #0
ldrb r0, [sp, #2]
orrne r7, r7, #1
cmp r0, #0
ldrb r0, [sp, #4]
orrne r7, r7, #4
cmp r0, #0
ldrb r0, [sp, #6]
orrne r7, r7, #0x10
cmp r0, #0
ldr r0, [sp, #8]
orrne r7, r7, #0x40
cmp r0, #0
ldrneb r0, [sp, #1]
cmpne r0, #0
cmpne r2, #0
orrne r7, r7, #2
cmp r2, #0
ldrneb r0, [sp, #3]
cmpne r0, #0
cmpne r3, #0
orrne r7, r7, #8
cmp r3, #0
ldrneb r0, [sp, #5]
cmpne r0, #0
cmpne ip, #0
orrne r7, r7, #0x20
cmp ip, #0
ldrneb r0, [sp, #7]
cmpne r0, #0
ldrne r0, [sp, #8]
cmpne r0, #0
ldr r0, [sp, #8]
orrne r7, r7, #0x80
cmp r0, #0
orrne r8, r8, #1
cmp r2, #0
orrne r8, r8, #4
cmp r3, #0
orrne r8, r8, #0x10
cmp ip, #0
ldr r0, [sp, #8]
orrne r8, r8, #0x40
cmp r0, #0
ldrne r0, [sp, #0xc]
cmpne r0, #0
cmpne r2, #0
orrne r8, r8, #2
cmp r2, #0
ldrne r0, [sp, #0x14]
cmpne r0, #0
cmpne r3, #0
orrne r8, r8, #8
cmp r3, #0
ldrne r0, [sp, #0x1c]
cmpne r0, #0
cmpne ip, #0
orrne r8, r8, #0x20
cmp ip, #0
ldrne r0, [sp, #0x24]
cmpne r0, #0
ldrne r0, [sp, #8]
cmpne r0, #0
orrne r8, r8, #0x80
cmp r5, #1
bicle sb, sb, #0xe0
cmp r4, #1
bicle sb, sb, #0x38
cmp r5, #0x36
bicge sb, sb, #0xe
cmp r4, #0x1e
mov r0, r5
bicge sb, sb, #0x83
bl GetTileSafe
strb r6, [r0, #8]
mov r0, r5
mov r1, r4
bl GetTileSafe
strb r7, [r0, #9]
mov r0, r5
mov r1, r4
bl GetTileSafe
strb r8, [r0, #0xa]
mov r0, r5
mov r1, r4
bl GetTileSafe
strb sb, [r0, #0xb]
add sp, sp, #0x28
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
arm_func_end DetermineTileWalkableNeighbors
arm_func_start ov29_02336DB0
ov29_02336DB0: ; 0x02336DB0
stmdb sp!, {r4, r5, r6, lr}
mov r6, r0
mov r0, r1
mov r1, r2
mov r5, r3
bl GetTile
mov r4, r0
ldrh r0, [r4]
tst r0, #0x200
beq _02336DE0
ldr r0, _02336F48 ; =ov29_02352F14
bl Debug_Print0
_02336DE0:
ldrh r1, [r4]
tst r1, #0x1000
bne _02336DF4
tst r1, #0x2000
beq _02336E04
_02336DF4:
add r0, r6, #0x32
add r0, r0, #0xe000
add r0, r0, r5, lsl #1
ldmia sp!, {r4, r5, r6, pc}
_02336E04:
tst r1, #0x20
addne r0, r6, #0x20
addne r0, r0, #0xe000
addne r0, r0, r5, lsl #1
ldmneia sp!, {r4, r5, r6, pc}
ldrb r0, [sp, #0x14]
cmp r0, #0
beq _02336E40
ldrh r1, [r4, #4]
add r0, r6, #0x1e4
add r2, r0, #0xc000
mov r0, #0x12
mla r0, r1, r0, r2
add r0, r0, r5, lsl #1
ldmia sp!, {r4, r5, r6, pc}
_02336E40:
ldrh r0, [r4, #2]
tst r0, #4
addne r0, r6, #0x44
addne r0, r0, #0xe000
addne r0, r0, r5, lsl #1
ldmneia sp!, {r4, r5, r6, pc}
ldr r2, [r4, #0x10]
cmp r2, #0
beq _02336EFC
ldrb r0, [r2, #0x20]
cmp r0, #0
ldreqb r0, [sp, #0x10]
cmpeq r0, #0
movne r0, #1
moveq r0, #0
ands r1, r0, #0xff
beq _02336EB0
ldr r0, [r2]
cmp r0, #2
bne _02336EB0
ldr r1, [r2, #0xb4]
add r0, r6, #0x204
ldrb r1, [r1]
add r2, r0, #0xdc00
mov r0, #0x12
mla r0, r1, r0, r2
add r0, r0, r5, lsl #1
ldmia sp!, {r4, r5, r6, pc}
_02336EB0:
cmp r1, #0
beq _02336EE0
ldr r0, [r2]
cmp r0, #5
bne _02336EE0
ldrsh r1, [r6, #0x14]
add r0, r6, #0x204
add r2, r0, #0xdc00
mov r0, #0x12
smlabb r0, r1, r0, r2
add r0, r0, r5, lsl #1
ldmia sp!, {r4, r5, r6, pc}
_02336EE0:
ldrh r1, [r4, #4]
add r0, r6, #0x1e4
add r2, r0, #0xc000
mov r0, #0x12
mla r0, r1, r0, r2
add r0, r0, r5, lsl #1
ldmia sp!, {r4, r5, r6, pc}
_02336EFC:
ldrb r0, [sp, #0x18]
cmp r0, #0
bne _02336F2C
tst r1, #0x200
beq _02336F2C
ldrsh r1, [r6, #0x14]
add r0, r6, #0x204
add r2, r0, #0xdc00
mov r0, #0x12
smlabb r0, r1, r0, r2
add r0, r0, r5, lsl #1
ldmia sp!, {r4, r5, r6, pc}
_02336F2C:
ldrh r1, [r4, #4]
add r0, r6, #0x1e4
add r2, r0, #0xc000
mov r0, #0x12
mla r0, r1, r0, r2
add r0, r0, r5, lsl #1
ldmia sp!, {r4, r5, r6, pc}
.align 2, 0
_02336F48: .word ov29_02352F14
arm_func_end ov29_02336DB0
arm_func_start UpdateTrapsVisibility
UpdateTrapsVisibility: ; 0x02336F4C
#ifdef JAPAN
#define UPDATE_TRAPS_VISIBILITY_OFFSET -0xA4
#else
#define UPDATE_TRAPS_VISIBILITY_OFFSET 0
#endif
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x30
ldr r0, _02337108 ; =DUNGEON_PTR
ldr sl, [r0]
add r1, sl, #0x1a000
ldrb r0, [r1, #0x245 + UPDATE_TRAPS_VISIBILITY_OFFSET]
str r0, [sp, #0x18]
ldrb fp, [r1, #0x244 + UPDATE_TRAPS_VISIBILITY_OFFSET]
bl IsSecretBazaar
ldr r1, _0233710C ; =0x0001A224
ldr r2, _02337110 ; =ov29_02352B9C
ldrsh r3, [sl, r1]
ldr r1, _02337114 ; =ov29_02352D58
mov sb, r3, asr #3
str r0, [sp, #0x14]
add r0, sb, #0x1e
mov r0, r0, lsl #1
ldrsh r7, [r2, r0]
ldrsh r5, [r1, r0]
mov r0, #0
str r0, [sp, #0x10]
_02336FA0:
ldr r0, _02337118 ; =0x0001A226
add r1, sl, #0xc4 + UPDATE_TRAPS_VISIBILITY_OFFSET
ldrsh r3, [sl, r0]
ldr r0, _02337110 ; =ov29_02352B9C
mov r2, r5, lsl #0x10
mov r3, r3, asr #3
sub r4, r3, #1
add r3, r0, r4, lsl #1
ldr r0, _02337114 ; =ov29_02352D58
ldrsh r8, [r3, #0x3c]
add r0, r0, r4, lsl #1
ldrsh r6, [r0, #0x3c]
add r0, r1, #0x4000
add r3, r8, r8, lsl #1
mov r1, r2, asr #0x10
add r2, r7, r3
mov r2, r2, lsl #0x10
str fp, [sp]
mov r3, r2, asr #0x10
ldr r2, [sp, #0x18]
and sb, sb, #0x3f
str r2, [sp, #4]
ldr r2, [sp, #0x14]
str r2, [sp, #8]
mov r2, r6, lsl #0x10
mov r2, r2, asr #0x10
bl ov29_02336DB0
str r0, [sp, #0x1c]
mov r0, #0
str r0, [sp, #0xc]
mov r0, r5, lsl #0x10
mov r0, r0, asr #0x10
str r0, [sp, #0x24]
add r0, sl, #0xc4 + UPDATE_TRAPS_VISIBILITY_OFFSET
str r0, [sp, #0x2c]
mov r0, r7, lsl #0x10
mov r0, r0, asr #0x10
str r0, [sp, #0x28]
mov r0, sb, lsl #0x10
mov r0, r0, asr #0x10
str r0, [sp, #0x20]
_02337044:
mov r0, #0
str r0, [sp]
ldr r3, [sp, #0x1c]
and r4, r4, #0x1f
ldrh r2, [r3], #6
str r3, [sp, #0x1c]
ldr r0, [sp, #0x20]
mov r1, r4
mov r3, #1
bl sub_02051D8C
add r8, r8, #1
add r4, r4, #1
cmp r8, #3
bne _023370B8
str fp, [sp]
ldr r0, [sp, #0x18]
add r6, r6, #1
str r0, [sp, #4]
ldr r0, [sp, #0x14]
mov r2, r6, lsl #0x10
str r0, [sp, #8]
ldr r0, [sp, #0x2c]
ldr r1, [sp, #0x24]
ldr r3, [sp, #0x28]
add r0, r0, #0x4000
mov r2, r2, asr #0x10
mov r8, #0
bl ov29_02336DB0
str r0, [sp, #0x1c]
_023370B8:
ldr r0, [sp, #0xc]
add r0, r0, #1
str r0, [sp, #0xc]
cmp r0, #0x1b
blt _02337044
ldr r0, [sp, #0x10]
add r7, r7, #1
add r0, r0, #1
cmp r7, #3
add sb, sb, #1
addeq r5, r5, #1
moveq r7, #0
str r0, [sp, #0x10]
cmp r0, #0x21
blt _02336FA0
mov r0, #1
mov r1, #0
bl sub_02051E60
add sp, sp, #0x30
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_02337108: .word DUNGEON_PTR
_0233710C: .word 0x0001A224 + UPDATE_TRAPS_VISIBILITY_OFFSET
_02337110: .word ov29_02352B9C
_02337114: .word ov29_02352D58
_02337118: .word 0x0001A226 + UPDATE_TRAPS_VISIBILITY_OFFSET
arm_func_end UpdateTrapsVisibility
arm_func_start ov29_0233711C
ov29_0233711C: ; 0x0233711C
#ifdef JAPAN
#define OV29_0233711C_OFFSET -0xA4
#else
#define OV29_0233711C_OFFSET 0
#endif
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x1c
ldr r2, _02337294 ; =DUNGEON_PTR
mov r4, r1
ldr sl, [r2]
mov r5, r0
add r1, sl, #0x1a000
ldrb r0, [r1, #0x245 + OV29_0233711C_OFFSET]
str r0, [sp, #0x18]
ldrb fp, [r1, #0x244 + OV29_0233711C_OFFSET]
bl IsSecretBazaar
ldr r2, _02337298 ; =0x0001A224
ldr r1, _0233729C ; =ov29_02352B9C
add r3, r2, #2
ldrsh r6, [sl, r2]
ldrsh r2, [sl, r3]
add r3, r6, r5
str r0, [sp, #0x14]
add r0, r2, r4
mov r0, r0, asr #3
sub sb, r0, #1
add r0, sb, #0x1e
mov r2, r0, lsl #1
str fp, [sp]
ldr r0, [sp, #0x18]
mov r8, r3, asr #3
str r0, [sp, #4]
ldr r0, [sp, #0x14]
ldrsh r7, [r1, r2]
str r0, [sp, #8]
add r0, r8, #0x1e
mov r3, r0, lsl #1
ldrsh r6, [r1, r3]
ldr r1, _023372A0 ; =ov29_02352D58
add r0, sl, #0xc4 + OV29_0233711C_OFFSET
ldrsh r4, [r1, r3]
ldrsh r5, [r1, r2]
add r3, r7, r7, lsl #1
add r3, r6, r3
mov r1, r4, lsl #0x10
mov r2, r5, lsl #0x10
mov r3, r3, lsl #0x10
add r0, r0, #0x4000
mov r1, r1, asr #0x10
mov r2, r2, asr #0x10
mov r3, r3, asr #0x10
bl ov29_02336DB0
str r0, [sp, #0x10]
mov r0, #0
str r0, [sp, #0xc]
mov r0, r4, lsl #0x10
mov r1, r6, lsl #0x10
add r4, sl, #0xc4 + OV29_0233711C_OFFSET
mov r6, r0, asr #0x10
mov sl, r1, asr #0x10
_023371F8:
mov r0, #0
ldr r3, [sp, #0x10]
str r0, [sp]
ldrh r2, [r3], #6
and r8, r8, #0x3f
and sb, sb, #0x1f
str r3, [sp, #0x10]
mov r0, r8
mov r1, sb
mov r3, #1
bl sub_02051D8C
add r7, r7, #1
add sb, sb, #1
cmp r7, #3
bne _0233726C
str fp, [sp]
ldr r0, [sp, #0x18]
add r5, r5, #1
str r0, [sp, #4]
ldr r0, [sp, #0x14]
mov r2, r5, lsl #0x10
str r0, [sp, #8]
add r0, r4, #0x4000
mov r1, r6
mov r2, r2, asr #0x10
mov r3, sl
mov r7, #0
bl ov29_02336DB0
str r0, [sp, #0x10]
_0233726C:
ldr r0, [sp, #0xc]
add r0, r0, #1
str r0, [sp, #0xc]
cmp r0, #0x1b
blt _023371F8
mov r0, #1
mov r1, #0
bl sub_02051E60
add sp, sp, #0x1c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_02337294: .word DUNGEON_PTR
_02337298: .word 0x0001A224 + OV29_0233711C_OFFSET
_0233729C: .word ov29_02352B9C
_023372A0: .word ov29_02352D58
arm_func_end ov29_0233711C
arm_func_start ov29_023372A4
ov29_023372A4: ; 0x023372A4
#ifdef JAPAN
#define OV29_023372A4_OFFSET -0xA4
#else
#define OV29_023372A4_OFFSET 0
#endif
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x1c
ldr r2, _02337418 ; =DUNGEON_PTR
mov r4, r1
ldr sl, [r2]
mov r5, r0
add r1, sl, #0x1a000
ldrb r0, [r1, #0x245 + OV29_023372A4_OFFSET]
str r0, [sp, #0x18]
ldrb fp, [r1, #0x244 + OV29_023372A4_OFFSET]
bl IsSecretBazaar
ldr r2, _0233741C ; =0x0001A224
ldr r1, _02337420 ; =ov29_02352B9C
add r3, r2, #2
ldrsh r6, [sl, r2]
ldrsh r2, [sl, r3]
add r3, r6, r5
str r0, [sp, #0x14]
add r0, r2, r4
mov r8, r0, asr #3
add r0, r8, #0x1e
mov r7, r3, asr #3
str fp, [sp]
mov r2, r0, lsl #1
ldr r0, [sp, #0x18]
ldr r3, _02337424 ; =ov29_02352D58
str r0, [sp, #4]
ldr r0, [sp, #0x14]
ldrsh r5, [r3, r2]
str r0, [sp, #8]
add r0, r7, #0x1e
mov r4, r0, lsl #1
ldrsh r6, [r1, r4]
ldrsh r1, [r1, r2]
add r0, sl, #0xc4 + OV29_023372A4_OFFSET
mov r2, r5, lsl #0x10
ldrsh r4, [r3, r4]
add sb, r1, r1, lsl #1
add r3, r6, sb
mov r1, r4, lsl #0x10
mov r3, r3, lsl #0x10
add r0, r0, #0x4000
mov r1, r1, asr #0x10
mov r2, r2, asr #0x10
mov r3, r3, asr #0x10
bl ov29_02336DB0
str r0, [sp, #0x10]
mov r0, #0
str r0, [sp, #0xc]
mov r0, r5, lsl #0x10
mov r1, sb, lsl #0x10
add r5, sl, #0xc4 + OV29_023372A4_OFFSET
mov sb, r0, asr #0x10
mov sl, r1, asr #0x10
_0233737C:
mov r0, #0
ldr r3, [sp, #0x10]
str r0, [sp]
ldrh r2, [r3], #2
and r7, r7, #0x3f
and r8, r8, #0x1f
str r3, [sp, #0x10]
mov r0, r7
mov r1, r8
mov r3, #1
bl sub_02051D8C
add r6, r6, #1
add r7, r7, #1
cmp r6, #3
bne _023373F0
str fp, [sp]
ldr r0, [sp, #0x18]
add r4, r4, #1
str r0, [sp, #4]
ldr r0, [sp, #0x14]
mov r1, r4, lsl #0x10
str r0, [sp, #8]
add r0, r5, #0x4000
mov r1, r1, asr #0x10
mov r2, sb
mov r3, sl
mov r6, #0
bl ov29_02336DB0
str r0, [sp, #0x10]
_023373F0:
ldr r0, [sp, #0xc]
add r0, r0, #1
str r0, [sp, #0xc]
cmp r0, #0x21
blt _0233737C
mov r0, #1
mov r1, #0
bl sub_02051E60
add sp, sp, #0x1c
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_02337418: .word DUNGEON_PTR
_0233741C: .word 0x0001A224 + OV29_023372A4_OFFSET
_02337420: .word ov29_02352B9C
_02337424: .word ov29_02352D58
arm_func_end ov29_023372A4
arm_func_start DrawTileGrid
DrawTileGrid: ; 0x02337428
#ifdef JAPAN
#define DRAW_TILE_GRID_OFFSET -0xA4
#else
#define DRAW_TILE_GRID_OFFSET 0
#endif
stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr}
sub sp, sp, #0x44
ldr r5, _02337780 ; =DUNGEON_PTR
str r2, [sp, #4]
mov r4, r0
mov r7, r1
mov r6, r3
ldr r5, [r5]
bl GetLeader
ldr r1, _02337784 ; =0x0001A224
ldr r2, _02337780 ; =DUNGEON_PTR
ldrsh r8, [r5, r1]
ldr r1, [r2]
ldr r2, _02337788 ; =DIRECTIONS_XY
add r1, r1, #0x1a000
strb r6, [r1, #0x251 + DRAW_TILE_GRID_OFFSET]
mov r3, r7, lsl #2
add r1, r2, r7, lsl #2
ldrsh r3, [r2, r3]
ldrsh sl, [r1, #2]
ldrsh r6, [r4]
ldrsh r7, [r4, #2]
str r0, [sp, #0x20]
mov sb, r8, asr #3
mov r2, #0
add r1, sp, #0x2c
_02337490:
mov r0, r2, lsl #2
strh r6, [r1, r0]
add r0, r1, r2, lsl #2
add r2, r2, #1
strh r7, [r0, #2]
cmp r2, #6
add r6, r6, r3
add r7, r7, sl
blt _02337490
add r0, sb, #0x1e
mov r2, r0, lsl #1
ldr r1, _0233778C ; =ov29_02352B9C
ldr r0, _02337790 ; =ov29_02352D58
ldrsh r8, [r1, r2]
ldrsh r6, [r0, r2]
mov r0, #0
str r0, [sp, #0xc]
_023374D4:
ldr r0, _02337794 ; =0x0001A226
ldr r2, _0233778C ; =ov29_02352B9C
ldrsh r3, [r5, r0]
ldr r0, [sp, #4]
ldr r1, _02337790 ; =ov29_02352D58
mov fp, r3, asr #3
cmp r0, #0
add r0, r2, fp, lsl #1
add r1, r1, fp, lsl #1
ldrsh r0, [r0, #0x3c]
ldrsh r7, [r1, #0x3c]
strh r6, [sp, #0x28]
str r0, [sp, #0x1c]
add r0, r0, r0, lsl #1
strh r7, [sp, #0x2a]
add sl, r8, r0
beq _02337544
ldrsh r0, [r4]
cmp r6, r0
ldreqsh r0, [r4, #2]
cmpeq r7, r0
addeq r0, r5, #0x150 + DRAW_TILE_GRID_OFFSET
addeq r0, r0, #0x12000
addeq sl, r0, sl, lsl #1
addne r0, r5, #0x12c + DRAW_TILE_GRID_OFFSET
addne r0, r0, #0x12000
addne sl, r0, sl, lsl #1
b _023375E8
_02337544:
ldr r0, [sp, #0x20]
add r1, sp, #0x28
bl ov29_022FF958
cmp r0, #0
bne _023375DC
ldr r0, [sp, #0x20]
add r1, sp, #0x28
bl ov29_022E2930
cmp r0, #0
beq _023375DC
mov r0, #0
add r2, sp, #0x2c
b _02337598
_02337578:
mov r3, r0, lsl #2
ldrsh r1, [r2, r3]
cmp r6, r1
addeq r1, r2, r3
ldreqsh r1, [r1, #2]
cmpeq r7, r1
beq _023375A0
add r0, r0, #1
_02337598:
cmp r0, #6
blt _02337578
_023375A0:
cmp r0, #6
bne _023375CC
bl GetGridsOption
cmp r0, #0
#ifdef JAPAN
addne r0, r5, #0x9a
addne r0, r0, #0x12000
#else
ldrne r0, _02337798 ; =0x0001213E
addne r0, r5, r0
#endif
addne sl, r0, sl, lsl #1
addeq r0, r5, #0x12c + DRAW_TILE_GRID_OFFSET
addeq r0, r0, #0x12000
addeq sl, r0, sl, lsl #1
b _023375E8
_023375CC:
add r0, r5, #0x150 + DRAW_TILE_GRID_OFFSET
add r0, r0, #0x12000
add sl, r0, sl, lsl #1
b _023375E8
_023375DC:
add r0, r5, #0x12c + DRAW_TILE_GRID_OFFSET
add r0, r0, #0x12000
add sl, r0, sl, lsl #1
_023375E8:
add r0, r5, #0x150 + DRAW_TILE_GRID_OFFSET
add r0, r0, #0x12000
add r0, r0, r8, lsl #1
#ifdef JAPAN
add r1, r5, #0x88
str r0, [sp, #0x18]
add r0, r1, #0x12000
add r0, r0, r8, lsl #1
str r0, [sp, #0x14]
mov r0, #0
str r0, [sp, #8]
add r0, r5, #0x9a
add r0, r0, #0x12000
add r0, r0, r8, lsl #1
str r0, [sp, #0x10]
#else
ldr r1, _02337798 ; =0x0001213E
str r0, [sp, #0x18]
add r0, r5, r1
add r0, r0, r8, lsl #1
str r0, [sp, #0x10]
mov r0, #0
str r0, [sp, #8]
add r0, r5, #0x12c
add r0, r0, #0x12000
add r0, r0, r8, lsl #1
str r0, [sp, #0x14]
#endif
mov r0, r6, lsl #0x10
mov r0, r0, asr #0x10
str r0, [sp, #0x24]
_0233762C:
mov r0, #0
str r0, [sp]
ldrh r2, [sl], #6
and sb, sb, #0x3f
and fp, fp, #0x1f
mov r0, sb
mov r1, fp
mov r3, #0
bl sub_02051D8C
ldr r0, [sp, #0x1c]
add fp, fp, #1
add r0, r0, #1
str r0, [sp, #0x1c]
cmp r0, #3
bne _02337730
ldr r0, [sp, #0x24]
add r7, r7, #1
strh r0, [sp, #0x28]
ldr r0, [sp, #4]
cmp r0, #0
mov r0, #0
str r0, [sp, #0x1c]
strh r7, [sp, #0x2a]
beq _023376A8
ldrsh r0, [r4]
cmp r6, r0
ldreqsh r0, [r4, #2]
cmpeq r7, r0
ldreq sl, [sp, #0x18]
ldrne sl, [sp, #0x14]
b _02337730
_023376A8:
ldr r0, [sp, #0x20]
add r1, sp, #0x28
bl ov29_022FF958
cmp r0, #0
bne _0233772C
ldr r0, [sp, #0x20]
add r1, sp, #0x28
bl ov29_022E2930
cmp r0, #0
beq _0233772C
mov r0, #0
b _02337700
_023376D8:
mov r2, r0, lsl #2
add r1, sp, #0x2c
ldrsh r1, [r1, r2]
cmp r6, r1
addeq r1, sp, #0x2c
addeq r1, r1, r2
ldreqsh r1, [r1, #2]
cmpeq r7, r1
beq _02337708
add r0, r0, #1
_02337700:
cmp r0, #6
blt _023376D8
_02337708:
cmp r0, #6
bne _02337724
bl GetGridsOption
cmp r0, #0
ldrne sl, [sp, #0x10]
ldreq sl, [sp, #0x14]
b _02337730
_02337724:
ldr sl, [sp, #0x18]
b _02337730
_0233772C:
ldr sl, [sp, #0x14]
_02337730:
ldr r0, [sp, #8]
add r0, r0, #1
str r0, [sp, #8]
cmp r0, #0x19
blt _0233762C
ldr r0, [sp, #0xc]
add r8, r8, #1
add r0, r0, #1
cmp r8, #3
add sb, sb, #1
addeq r6, r6, #1
moveq r8, #0
str r0, [sp, #0xc]
cmp r0, #0x21
blt _023374D4
mov r0, #0
mov r1, r0
bl sub_02051E60
add sp, sp, #0x44
ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_02337780: .word DUNGEON_PTR
_02337784: .word 0x0001A224 + DRAW_TILE_GRID_OFFSET
_02337788: .word DIRECTIONS_XY
_0233778C: .word ov29_02352B9C
_02337790: .word ov29_02352D58
_02337794: .word 0x0001A226 + DRAW_TILE_GRID_OFFSET
#ifndef JAPAN
_02337798: .word 0x0001213E
#endif
arm_func_end DrawTileGrid
arm_func_start HideTileGrid
HideTileGrid: ; 0x0233779C
stmdb sp!, {r3, r4, r5, r6, r7, r8, lr}
sub sp, sp, #4
mov r8, #0
mov r5, r8
mov r6, r8
_023377B0:
mov r0, r8, lsl #0x10
mov r7, r6
mov r4, r0, asr #0x10
_023377BC:
mov r0, r7, lsl #0x10
mov r1, r4
mov r2, r5
mov r3, r5
mov r0, r0, asr #0x10
str r5, [sp]
bl sub_02051D8C
add r7, r7, #1
cmp r7, #0x20
blt _023377BC
add r8, r8, #1
cmp r8, #0x20
blt _023377B0
mov r0, #0
mov r1, r0
bl sub_02051E60
ldr r0, _02337818 ; =DUNGEON_PTR
mov r1, #0
ldr r0, [r0]
add r0, r0, #0x1a000
#ifdef JAPAN
strb r1, [r0, #0x1ad]
#else
strb r1, [r0, #0x251]
#endif
add sp, sp, #4
ldmia sp!, {r3, r4, r5, r6, r7, r8, pc}
.align 2, 0
_02337818: .word DUNGEON_PTR
arm_func_end HideTileGrid
arm_func_start ov29_0233781C
ov29_0233781C: ; 0x0233781C
stmdb sp!, {r3, r4, r5, r6, r7, lr}
mov r7, #0
mov r4, r7
mov r5, r7
_0233782C:
mov r6, r5
_02337830:
mov r0, r6
mov r1, r7
bl GetTileSafe
add r6, r6, #1
strh r4, [r0, #2]
cmp r6, #0x38
blt _02337830
add r7, r7, #1
cmp r7, #0x20
blt _0233782C
ldmia sp!, {r3, r4, r5, r6, r7, pc}
arm_func_end ov29_0233781C
arm_func_start ov29_0233785C
ov29_0233785C: ; 0x0233785C
#ifdef JAPAN
#define OV29_0233785C_OFFSET -0xA4
#else
#define OV29_0233785C_OFFSET 0
#endif
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr}
ldr r1, _02337A34 ; =0x0000270F
mov r3, #0
ldr r6, _02337A38 ; =DUNGEON_PTR
mov sb, r3
rsb r0, r1, #0
mov r4, #0x1c
_02337878:
mul r2, r3, r4
ldr r5, [r6]
add r3, r3, #1
add r5, r5, r2
add r5, r5, #0xe000
strb sb, [r5, #0xee8 + OV29_0233785C_OFFSET]
ldr r5, [r6]
cmp r3, #0x20
add r5, r5, r2
add r5, r5, #0xe000
strb sb, [r5, #0xee9 + OV29_0233785C_OFFSET]
ldr r5, [r6]
add r5, r5, r2
add r5, r5, #0xee00
strh r1, [r5, #0xea + OV29_0233785C_OFFSET]
ldr r5, [r6]
add r5, r5, r2
add r5, r5, #0xee00
strh r1, [r5, #0xec + OV29_0233785C_OFFSET]
ldr r5, [r6]
add r5, r5, r2
add r5, r5, #0xee00
strh r0, [r5, #0xee + OV29_0233785C_OFFSET]
ldr r5, [r6]
add r2, r5, r2
add r2, r2, #0xee00
strh r0, [r2, #0xf0 + OV29_0233785C_OFFSET]
blt _02337878
mov sl, sb
_023378EC:
add r5, sl, #1
mov r0, sl, lsl #0x10
mov r1, r5, lsl #0x10
ldr fp, _02337A38 ; =DUNGEON_PTR
mov r8, #0
mov r6, r0, asr #0x10
mov r4, r1, asr #0x10
mov r7, #1
_0233790C:
mov r0, r8
mov r1, sl
bl GetTile
ldrb r1, [r0, #7]
cmp r1, #0xff
beq _0233797C
mov r0, #0x1c
mul r2, r1, r0
ldr r0, [fp]
add r0, r0, #0x2e8 + OV29_0233785C_OFFSET
add r0, r0, #0xec00
strb r7, [r0, r2]
add r0, r0, r2
ldrsh r2, [r0, #2]
cmp r2, r8
strgth r8, [r0, #2]
ldrsh r2, [r0, #4]
cmp r2, sl
strgth r6, [r0, #4]
ldrsh r3, [r0, #6]
add r2, r8, #1
cmp r3, r2
strlth r2, [r0, #6]
ldrsh r2, [r0, #8]
cmp r2, r5
strlth r4, [r0, #8]
cmp sb, r1
andlt sb, r1, #0xff
_0233797C:
add r8, r8, #1
cmp r8, #0x38
blt _0233790C
add sl, sl, #1
cmp sl, #0x20
blt _023378EC
mov r2, #0x18
ldr r7, _02337A38 ; =DUNGEON_PTR
mov r1, #0
mov r3, r2
mov r4, r2
mov r5, r2
mov r6, #0x1c
_023379B0:
mul sl, r1, r6
ldr r0, [r7]
add r0, r0, #0x2e8 + OV29_0233785C_OFFSET
add r0, r0, #0xec00
ldrb r8, [r0, sl]
add r0, r0, sl
cmp r8, #0
beq _02337A10
ldrsh r8, [r0, #2]
sub r8, r8, #1
mul sl, r8, r2
str sl, [r0, #0xc]
ldrsh r8, [r0, #4]
sub r8, r8, #1
mul sl, r8, r3
str sl, [r0, #0x10]
ldrsh r8, [r0, #6]
add r8, r8, #1
mul sl, r8, r4
str sl, [r0, #0x14]
ldrsh r8, [r0, #8]
add r8, r8, #1
mul sl, r8, r5
str sl, [r0, #0x18]
_02337A10:
add r1, r1, #1
cmp r1, #0x20
blt _023379B0
ldr r0, _02337A38 ; =DUNGEON_PTR
add r1, sb, #1
ldr r0, [r0]
add r0, r0, #0xe000
strb r1, [r0, #0xee4 + OV29_0233785C_OFFSET]
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc}
.align 2, 0
_02337A34: .word 0x0000270F
_02337A38: .word DUNGEON_PTR
arm_func_end ov29_0233785C
arm_func_start DiscoverMinimap
DiscoverMinimap: ; 0x02337A3C
#ifdef JAPAN
#define DISCOVER_MINIMAP_OFFSET -0xA4
#else
#define DISCOVER_MINIMAP_OFFSET 0
#endif
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r5, r0
ldrsh r0, [r5]
ldrsh r1, [r5, #2]
bl GetTile
ldrb r4, [r0, #7]
bl GetVisibilityRange
ldr r1, _02337B28 ; =DUNGEON_PTR
ldr r3, [r1]
add r1, r3, #0x1a000
ldrb r2, [r1, #0x23e + DISCOVER_MINIMAP_OFFSET]
cmp r2, #0
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
ldrb r1, [r1, #0x250 + DISCOVER_MINIMAP_OFFSET]
cmp r1, #0
bne _02337A84
cmp r4, #0xff
bne _02337AA0
_02337A84:
ldrsh r2, [r5]
ldrsh r1, [r5, #2]
sub r4, r2, r0
sub r7, r1, r0
add r5, r2, r0
add r6, r1, r0
b _02337B1C
_02337AA0:
add r0, r3, #0x2e8 + DISCOVER_MINIMAP_OFFSET
add r1, r0, #0xec00
mov r0, #0x1c
mla r2, r4, r0, r1
ldrb r0, [r2, #1]
cmp r0, #0
ldmneia sp!, {r4, r5, r6, r7, r8, pc}
mov r0, #1
strb r0, [r2, #1]
ldrsh r1, [r2, #2]
ldrsh r0, [r2, #4]
ldrsh r5, [r2, #6]
ldrsh r6, [r2, #8]
sub r4, r1, #1
sub r7, r0, #1
b _02337B1C
_02337AE0:
mov r8, r4
b _02337B10
_02337AE8:
mov r0, r8
mov r1, r7
bl GetTileSafe
ldrh r2, [r0, #2]
mov r1, r7
orr r2, r2, #3
strh r2, [r0, #2]
mov r0, r8
bl DrawMinimapTile
add r8, r8, #1
_02337B10:
cmp r8, r5
ble _02337AE8
add r7, r7, #1
_02337B1C:
cmp r7, r6
ble _02337AE0
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_02337B28: .word DUNGEON_PTR
arm_func_end DiscoverMinimap
arm_func_start PositionHasItem
PositionHasItem: ; 0x02337B2C
stmdb sp!, {r3, lr}
mov r1, r0
ldrsh r0, [r1]
ldrsh r1, [r1, #2]
bl GetTile
ldr r0, [r0, #0x10]
cmp r0, #0
moveq r0, #0
ldmeqia sp!, {r3, pc}
ldr r0, [r0]
cmp r0, #3
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end PositionHasItem
arm_func_start PositionHasMonster
PositionHasMonster: ; 0x02337B68
stmdb sp!, {r3, lr}
mov r1, r0
ldrsh r0, [r1]
ldrsh r1, [r1, #2]
bl GetTile
ldr r0, [r0, #0xc]
cmp r0, #0
beq _02337B94
ldr r1, [r0]
cmp r1, #1
ldmeqia sp!, {r3, pc}
_02337B94:
mov r0, #0
ldmia sp!, {r3, pc}
arm_func_end PositionHasMonster
arm_func_start TrySmashWall
TrySmashWall: ; 0x02337B9C
stmdb sp!, {r4, r5, r6, r7, r8, lr}
mov r8, r0
ldrsh r0, [r8]
ldrsh r1, [r8, #2]
mov r5, #0
bl GetTileSafe
ldrh r1, [r0]
tst r1, #3
bne _02337C4C
ldrh r1, [r0]
tst r1, #0x100
bne _02337C4C
tst r1, #0x10
bne _02337C4C
bic r1, r1, #3
strh r1, [r0]
ldrh r1, [r0]
mov r5, #1
sub r7, r5, #2
orr r1, r1, #1
strh r1, [r0]
mov r4, r7
_02337BF4:
mov r6, r4
_02337BF8:
ldrsh r0, [r8]
ldrsh r1, [r8, #2]
add r0, r6, r0
add r1, r7, r1
bl ov29_02336694
ldrsh r0, [r8]
ldrsh r1, [r8, #2]
add r0, r6, r0
add r1, r7, r1
bl DetermineTileWalkableNeighbors
ldrsh r0, [r8]
ldrsh r1, [r8, #2]
add r0, r6, r0
add r1, r7, r1
bl DrawMinimapTile
add r6, r6, #1
cmp r6, #1
ble _02337BF8
add r7, r7, #1
cmp r7, #1
ble _02337BF4
_02337C4C:
cmp r5, #0
beq _02337C9C
ldr r4, _02337CA4 ; =DUNGEON_PTR
mov r6, #0
_02337C5C:
ldr r0, [r4]
add r0, r0, r6, lsl #2
add r0, r0, #0x12000
#ifdef JAPAN
ldr r7, [r0, #0xad4]
#else
ldr r7, [r0, #0xb78]
#endif
mov r0, r7
bl EntityIsValid__02337CA8
cmp r0, #0
beq _02337C84
mov r0, r7
bl DetermineMonsterShadow
_02337C84:
add r6, r6, #1
cmp r6, #0x14
blt _02337C5C
bl UpdateTrapsVisibility
mov r0, r8
bl ov29_022E66C4
_02337C9C:
mov r0, r5
ldmia sp!, {r4, r5, r6, r7, r8, pc}
.align 2, 0
_02337CA4: .word DUNGEON_PTR
arm_func_end TrySmashWall