mirror of https://github.com/zeldaret/tmc.git
353 lines
6.0 KiB
ArmAsm
353 lines
6.0 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.text
|
|
.syntax unified
|
|
|
|
thumb_func_start GetCurrentRoomProperty
|
|
GetCurrentRoomProperty: @ 0x0804B128
|
|
push {lr}
|
|
adds r2, r0, #0
|
|
ldr r0, _0804B138 @ =gCurrentRoomProperties
|
|
ldr r1, [r0]
|
|
cmp r1, #0
|
|
bne _0804B13C
|
|
movs r0, #0
|
|
b _0804B166
|
|
.align 2, 0
|
|
_0804B138: .4byte gCurrentRoomProperties
|
|
_0804B13C:
|
|
cmp r2, #0x7f
|
|
bls _0804B150
|
|
ldr r0, _0804B14C @ =gRoomVars
|
|
movs r1, #7
|
|
ands r1, r2
|
|
lsls r1, r1, #2
|
|
adds r0, #0x8c
|
|
b _0804B162
|
|
.align 2, 0
|
|
_0804B14C: .4byte gRoomVars
|
|
_0804B150:
|
|
cmp r2, #7
|
|
bls _0804B15C
|
|
lsls r0, r2, #2
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
b _0804B166
|
|
_0804B15C:
|
|
ldr r0, _0804B168 @ =gRoomVars
|
|
lsls r1, r2, #2
|
|
adds r0, #0x6c
|
|
_0804B162:
|
|
adds r1, r1, r0
|
|
ldr r0, [r1]
|
|
_0804B166:
|
|
pop {pc}
|
|
.align 2, 0
|
|
_0804B168: .4byte gRoomVars
|
|
|
|
thumb_func_start sub_0804B16C
|
|
sub_0804B16C: @ 0x0804B16C
|
|
push {r4, lr}
|
|
ldr r4, _0804B1A4 @ =gUnk_02017660
|
|
_0804B170:
|
|
ldrh r0, [r4, #4]
|
|
cmp r0, #0
|
|
beq _0804B198
|
|
ldrb r0, [r4, #1]
|
|
bl CheckLocalFlag
|
|
cmp r0, #0
|
|
beq _0804B198
|
|
ldrh r3, [r4, #4]
|
|
ldrb r1, [r4, #6]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
movs r2, #1
|
|
cmp r0, #0
|
|
beq _0804B190
|
|
movs r2, #2
|
|
_0804B190:
|
|
movs r0, #0x74
|
|
adds r1, r3, #0
|
|
bl SetTileType
|
|
_0804B198:
|
|
adds r4, #8
|
|
ldr r0, _0804B1A8 @ =gPaletteBuffer
|
|
cmp r4, r0
|
|
blo _0804B170
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_0804B1A4: .4byte gUnk_02017660
|
|
_0804B1A8: .4byte gPaletteBuffer
|
|
|
|
thumb_func_start LoadRoomTileEntities
|
|
LoadRoomTileEntities: @ 0x0804B1AC
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
cmp r4, #0
|
|
beq _0804B25A
|
|
b _0804B254
|
|
_0804B1B6:
|
|
ldrb r0, [r4]
|
|
subs r0, #1
|
|
cmp r0, #0xc
|
|
bhi _0804B252
|
|
lsls r0, r0, #2
|
|
ldr r1, _0804B1C8 @ =_0804B1CC
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0804B1C8: .4byte _0804B1CC
|
|
_0804B1CC: @ jump table
|
|
.4byte _0804B200 @ case 0
|
|
.4byte _0804B208 @ case 1
|
|
.4byte _0804B252 @ case 2
|
|
.4byte _0804B210 @ case 3
|
|
.4byte _0804B252 @ case 4
|
|
.4byte _0804B252 @ case 5
|
|
.4byte _0804B218 @ case 6
|
|
.4byte _0804B252 @ case 7
|
|
.4byte _0804B22C @ case 8
|
|
.4byte _0804B234 @ case 9
|
|
.4byte _0804B23C @ case 10
|
|
.4byte _0804B244 @ case 11
|
|
.4byte _0804B24C @ case 12
|
|
_0804B200:
|
|
adds r0, r4, #0
|
|
bl sub_0804B290
|
|
b _0804B252
|
|
_0804B208:
|
|
adds r0, r4, #0
|
|
bl sub_0804B29C
|
|
b _0804B252
|
|
_0804B210:
|
|
adds r0, r4, #0
|
|
bl sub_0804B300
|
|
b _0804B252
|
|
_0804B218:
|
|
ldr r0, _0804B224 @ =gArea
|
|
ldr r1, _0804B228 @ =0x00000864
|
|
adds r0, r0, r1
|
|
ldrb r1, [r4, #3]
|
|
str r1, [r0]
|
|
b _0804B252
|
|
.align 2, 0
|
|
_0804B224: .4byte gArea
|
|
_0804B228: .4byte 0x00000864
|
|
_0804B22C:
|
|
adds r0, r4, #0
|
|
bl sub_0804B334
|
|
b _0804B252
|
|
_0804B234:
|
|
adds r0, r4, #0
|
|
bl sub_0804B340
|
|
b _0804B252
|
|
_0804B23C:
|
|
adds r0, r4, #0
|
|
bl sub_0804B260
|
|
b _0804B252
|
|
_0804B244:
|
|
adds r0, r4, #0
|
|
bl sub_0804B27C
|
|
b _0804B252
|
|
_0804B24C:
|
|
ldr r1, _0804B25C @ =gRoomVars
|
|
ldrb r0, [r4, #3]
|
|
strb r0, [r1, #9]
|
|
_0804B252:
|
|
adds r4, #8
|
|
_0804B254:
|
|
ldrb r0, [r4]
|
|
cmp r0, #0
|
|
bne _0804B1B6
|
|
_0804B25A:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_0804B25C: .4byte gRoomVars
|
|
|
|
thumb_func_start sub_0804B260
|
|
sub_0804B260: @ 0x0804B260
|
|
push {lr}
|
|
ldrb r0, [r0, #1]
|
|
lsls r0, r0, #5
|
|
ldr r1, _0804B274 @ =gUnk_080015BC
|
|
adds r0, r0, r1
|
|
ldr r1, _0804B278 @ =gUnk_02034398
|
|
movs r2, #0x20
|
|
bl MemCopy
|
|
pop {pc}
|
|
.align 2, 0
|
|
_0804B274: .4byte gUnk_080015BC
|
|
_0804B278: .4byte gUnk_02034398
|
|
|
|
thumb_func_start sub_0804B27C
|
|
sub_0804B27C: @ 0x0804B27C
|
|
push {lr}
|
|
ldr r1, _0804B28C @ =gArea
|
|
ldrb r0, [r0, #1]
|
|
strb r0, [r1, #1]
|
|
bl sub_08054524
|
|
pop {pc}
|
|
.align 2, 0
|
|
_0804B28C: .4byte gArea
|
|
|
|
thumb_func_start sub_0804B290
|
|
sub_0804B290: @ 0x0804B290
|
|
push {lr}
|
|
ldrb r0, [r0, #1]
|
|
bl SetLocalFlag
|
|
pop {pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_0804B29C
|
|
sub_0804B29C: @ 0x0804B29C
|
|
push {r4, lr}
|
|
adds r2, r0, #0
|
|
ldr r4, _0804B2EC @ =gUnk_02017660
|
|
movs r1, #0
|
|
_0804B2A4:
|
|
ldrh r0, [r4, #4]
|
|
cmp r0, #0
|
|
bne _0804B2F4
|
|
adds r0, r2, #0
|
|
adds r1, r4, #0
|
|
movs r2, #8
|
|
bl MemCopy
|
|
ldrb r1, [r4, #6]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0804B2FC
|
|
ldr r0, _0804B2F0 @ =gRoomControls
|
|
ldrb r1, [r0, #0xf]
|
|
movs r0, #2
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0804B2FC
|
|
ldrb r0, [r4, #1]
|
|
bl CheckLocalFlag
|
|
cmp r0, #0
|
|
bne _0804B2FC
|
|
ldrb r1, [r4, #1]
|
|
movs r0, #0x52
|
|
movs r2, #0
|
|
bl CreateObject
|
|
cmp r0, #0
|
|
beq _0804B2FC
|
|
ldrh r1, [r4, #4]
|
|
bl sub_0806F704
|
|
b _0804B2FC
|
|
.align 2, 0
|
|
_0804B2EC: .4byte gUnk_02017660
|
|
_0804B2F0: .4byte gRoomControls
|
|
_0804B2F4:
|
|
adds r1, #1
|
|
adds r4, #8
|
|
cmp r1, #7
|
|
bls _0804B2A4
|
|
_0804B2FC:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_0804B300
|
|
sub_0804B300: @ 0x0804B300
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
bl GetEmptyManager
|
|
adds r1, r0, #0
|
|
cmp r1, #0
|
|
beq _0804B332
|
|
movs r0, #9
|
|
strb r0, [r1, #8]
|
|
movs r0, #0x24
|
|
strb r0, [r1, #9]
|
|
ldrh r0, [r4, #4]
|
|
strh r0, [r1, #0x38]
|
|
ldrh r0, [r4, #6]
|
|
strh r0, [r1, #0x3a]
|
|
ldrb r0, [r4, #2]
|
|
adds r2, r1, #0
|
|
adds r2, #0x35
|
|
strb r0, [r2]
|
|
ldrb r0, [r4, #1]
|
|
strh r0, [r1, #0x3e]
|
|
adds r0, r1, #0
|
|
movs r1, #6
|
|
bl AppendEntityToList
|
|
_0804B332:
|
|
pop {r4, pc}
|
|
|
|
thumb_func_start sub_0804B334
|
|
sub_0804B334: @ 0x0804B334
|
|
push {lr}
|
|
ldrb r0, [r0, #3]
|
|
movs r1, #1
|
|
bl sub_0805BB00
|
|
pop {pc}
|
|
|
|
thumb_func_start sub_0804B340
|
|
sub_0804B340: @ 0x0804B340
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
ldrh r0, [r4, #2]
|
|
bl CheckLocalFlag
|
|
cmp r0, #0
|
|
beq _0804B35A
|
|
ldrh r0, [r4, #6]
|
|
ldrh r1, [r4, #4]
|
|
ldrb r2, [r4, #1]
|
|
bl SetTileType
|
|
b _0804B380
|
|
_0804B35A:
|
|
ldr r1, _0804B384 @ =gRoomVars
|
|
ldrb r0, [r1, #1]
|
|
cmp r0, #0
|
|
bne _0804B380
|
|
movs r0, #1
|
|
strb r0, [r1, #1]
|
|
bl GetEmptyManager
|
|
adds r1, r0, #0
|
|
cmp r1, #0
|
|
beq _0804B380
|
|
movs r0, #9
|
|
strb r0, [r1, #8]
|
|
movs r0, #0x2a
|
|
strb r0, [r1, #9]
|
|
adds r0, r1, #0
|
|
movs r1, #6
|
|
bl AppendEntityToList
|
|
_0804B380:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_0804B384: .4byte gRoomVars
|
|
|
|
thumb_func_start sub_0804B388
|
|
sub_0804B388: @ 0x0804B388
|
|
push {r4, r5, lr}
|
|
adds r5, r0, #0
|
|
adds r4, r1, #0
|
|
movs r0, #0x34
|
|
cmp r4, #1
|
|
bne _0804B396
|
|
movs r0, #0x26
|
|
_0804B396:
|
|
adds r1, r5, #0
|
|
adds r2, r4, #0
|
|
bl SetTileType
|
|
movs r0, #0xf
|
|
movs r1, #2
|
|
movs r2, #0
|
|
bl CreateObject
|
|
adds r1, r0, #0
|
|
cmp r1, #0
|
|
beq _0804B3BA
|
|
adds r0, #0x38
|
|
strb r4, [r0]
|
|
adds r0, r1, #0
|
|
adds r1, r5, #0
|
|
bl sub_0806F704
|
|
_0804B3BA:
|
|
movs r0, #1
|
|
rsbs r0, r0, #0
|
|
bl sub_080526F8
|
|
pop {r4, r5, pc}
|