summaryrefslogtreecommitdiff
path: root/asm/loadRoomEntity.s
blob: 50933176fa3fdc4f6beb6f1da893494b8545bebf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
	.include "asm/macros.inc"
	.include "constants/constants.inc"

	.syntax unified

	.text
	
	thumb_func_start LoadRoomEntity
LoadRoomEntity: @ 0x0804ADF8
	push {r4, r5, r6, r7, lr}
	adds r4, r0, #0
	ldrb r0, [r4]
	movs r6, #0xf
	ands r6, r0
	ldrb r1, [r4, #1]
	movs r0, #0xf0
	ands r0, r1
	cmp r0, #0x50
	bne _0804AE1C
	ldrb r1, [r4, #2]
	adds r0, r6, #0
	bl DeepFindEntityByID
	cmp r0, #0
	beq _0804AE1C
	movs r0, #0
	b _0804AEAC
_0804AE1C:
	adds r0, r6, #0
	bl GetEmptyEntityByKind
	adds r5, r0, #0
	cmp r5, #0
	beq _0804AEAA
	strb r6, [r5, #8]
	ldrb r0, [r4, #2]
	strb r0, [r5, #9]
	ldrb r0, [r4, #3]
	strb r0, [r5, #0xa]
	adds r0, r5, #0
	adds r1, r4, #0
	bl RegisterRoomEntity
	ldrb r1, [r4, #1]
	movs r7, #0xf0
	adds r0, r7, #0
	ands r0, r1
	cmp r0, #0x10
	beq _0804AEAA
	ldrb r0, [r4, #4]
	strb r0, [r5, #0xb]
	ldr r0, [r4, #4]
	movs r1, #0xff
	lsls r1, r1, #8
	ands r0, r1
	lsrs r0, r0, #8
	strb r0, [r5, #0xe]
	cmp r6, #9
	beq _0804AEAA
	adds r0, r5, #0
	adds r1, r4, #0
	bl sub_0804AF0C
	ldr r0, [r5, #4]
	cmp r0, #0
	beq _0804AEAA
	ldrb r0, [r4]
	adds r2, r7, #0
	ands r2, r0
	movs r0, #0x10
	ands r0, r2
	cmp r0, #0
	bne _0804AE94
	movs r0, #0x20
	ands r2, r0
	cmp r2, #0
	beq _0804AE88
	adds r1, r5, #0
	adds r1, #0x38
	movs r0, #2
	strb r0, [r1]
	b _0804AEAA
_0804AE88:
	ldr r0, _0804AEA0 @ =gRoomControls
	ldrb r1, [r0, #0xf]
	movs r0, #2
	ands r0, r1
	cmp r0, #0
	beq _0804AEA4
_0804AE94:
	adds r1, r5, #0
	adds r1, #0x38
	movs r0, #1
	strb r0, [r1]
	b _0804AEAA
	.align 2, 0
_0804AEA0: .4byte gRoomControls
_0804AEA4:
	adds r0, r5, #0
	bl sub_08016A30
_0804AEAA:
	adds r0, r5, #0
_0804AEAC:
	pop {r4, r5, r6, r7, pc}
	.align 2, 0