tmc/asm/non_matching/common/DrawDungeonFeatures.inc

180 lines
3.1 KiB
PHP

.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0x14
adds r4, r0, #0
bl AreaHasMap
cmp r0, #0
bne _0801DDB8
b _0801DEEA
_0801DDB8:
ldr r1, _0801DDD8 @ =gUnk_080C9C50
ldr r0, _0801DDDC @ =gArea
ldrb r0, [r0, #3]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
lsls r0, r4, #2
adds r0, r0, r1
ldr r4, [r0]
ldr r0, _0801DDE0 @ =gMapDataBottomSpecial
movs r1, #0x80
lsls r1, r1, #8
bl MemClear
b _0801DEE2
.align 2, 0
_0801DDD8: .4byte gUnk_080C9C50
_0801DDDC: .4byte gArea
_0801DDE0: .4byte gMapDataBottomSpecial
_0801DDE4:
ldrb r0, [r4]
ldrb r1, [r4, #1]
movs r2, #3
bl GetRoomProperty
adds r6, r0, #0
adds r0, r4, #0
bl sub_0801DF10
adds r5, r0, #0
movs r0, #0
str r0, [sp, #0xc]
ldrh r2, [r4]
ldr r0, _0801DE14 @ =gUI
ldrh r3, [r0, #0x20]
ldr r1, _0801DE18 @ =0x0000FFFF
ands r1, r2
ldr r0, _0801DE18 @ =0x0000FFFF
ands r0, r3
cmp r1, r0
bne _0801DE1C
movs r3, #8
b _0801DE36
.align 2, 0
_0801DE14: .4byte gUI
_0801DE18: .4byte 0x0000FFFF
_0801DE1C:
bl HasDungeonSmallKey
cmp r0, #0
beq _0801DE28
movs r0, #2
str r0, [sp, #0xc]
_0801DE28:
adds r0, r6, #0
adds r1, r5, #0
bl sub_0801DF90
cmp r0, #0
beq _0801DE38
movs r3, #3
_0801DE36:
str r3, [sp, #0xc]
_0801DE38:
ldrb r1, [r4, #2]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0801DE46
movs r0, #0
str r0, [sp, #0xc]
_0801DE46:
adds r3, r4, #0
adds r3, #8
str r3, [sp, #0x10]
ldr r0, [sp, #0xc]
cmp r0, #0
beq _0801DEE0
ldr r2, _0801DEF8 @ =0x040000D4
ldr r0, [r4, #4]
ldr r1, _0801DEFC @ =gMapData
adds r0, r0, r1
str r0, [r2]
ldr r0, _0801DF00 @ =gMapDataBottomSpecial
str r0, [r2, #4]
ldr r0, _0801DF04 @ =0x84000100
str r0, [r2, #8]
ldr r0, [r2, #8]
ldr r0, _0801DF08 @ =gAreaRoomHeaders
ldrb r2, [r4]
lsls r2, r2, #2
adds r2, r2, r0
ldrb r1, [r4, #1]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #1
ldr r2, [r2]
adds r2, r2, r0
ldrh r0, [r2]
lsrs r0, r0, #4
str r0, [sp]
ldrh r0, [r2, #2]
ldr r1, _0801DF0C @ =0x000007FF
ands r0, r1
lsrs r0, r0, #4
str r0, [sp, #4]
ldrh r0, [r2, #4]
lsrs r7, r0, #4
ldrh r0, [r2, #6]
lsrs r0, r0, #4
mov sl, r0
adds r0, r7, #3
lsrs r0, r0, #2
str r0, [sp, #8]
movs r6, #0
cmp r6, sl
bhs _0801DEE0
_0801DEA0:
ldr r3, [sp, #8]
adds r1, r6, #0
muls r1, r3, r1
ldr r0, _0801DF00 @ =gMapDataBottomSpecial
adds r1, r1, r0
mov r8, r1
movs r5, #0
adds r0, r6, #1
mov sb, r0
cmp r5, r7
bhs _0801DEDA
_0801DEB6:
ldr r3, [sp]
adds r4, r3, r5
adds r0, r5, #0
mov r1, r8
bl sub_0801DF60
ldr r1, [sp, #0xc]
bl sub_0801DF78
adds r2, r0, #0
adds r0, r4, #0
ldr r3, [sp, #4]
adds r1, r3, r6
bl sub_0801DF28
adds r5, #1
cmp r5, r7
blo _0801DEB6
_0801DEDA:
mov r6, sb
cmp r6, sl
blo _0801DEA0
_0801DEE0:
ldr r4, [sp, #0x10]
_0801DEE2:
ldrb r0, [r4]
cmp r0, #0
beq _0801DEEA
b _0801DDE4
_0801DEEA:
add sp, #0x14
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0801DEF8: .4byte 0x040000D4
_0801DEFC: .4byte gMapData
_0801DF00: .4byte gMapDataBottomSpecial
_0801DF04: .4byte 0x84000100
_0801DF08: .4byte gAreaRoomHeaders
_0801DF0C: .4byte 0x000007FF
.syntax divided