summaryrefslogtreecommitdiff
path: root/arm9/asm/unk_0204A368.s
blob: dee2d54be5d1e148ebea1164080f6db942638690 (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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
	.include "asm/macros.inc"
	.include "global.inc"

	.text

	thumb_func_start FUN_0204A368
FUN_0204A368: ; 0x0204A368
	push {r3-r5, lr}
	add r5, r0, #0x0
	ldr r0, [r5, #0x54]
	add r4, r1, #0x0
	cmp r0, #0x0
	bne _0204A388
	ldr r1, _0204A38C ; =0x000080E2
	mov r0, #0xb
	bl AllocFromHeap
	str r0, [r5, #0x54]
	ldr r0, [r5, #0x28]
	ldr r1, [r5, #0x54]
	add r2, r4, #0x0
	bl FUN_0204A3B0
_0204A388:
	pop {r3-r5, pc}
	nop
_0204A38C: .word 0x000080E2

	thumb_func_start FUN_0204A390
FUN_0204A390: ; 0x0204A390
	push {r4, lr}
	add r4, r0, #0x0
	ldr r0, [r4, #0x54]
	cmp r0, #0x0
	beq _0204A3A2
	bl FreeToHeap
	mov r0, #0x0
	str r0, [r4, #0x54]
_0204A3A2:
	pop {r4, pc}

	thumb_func_start FUN_0204A3A4
FUN_0204A3A4: ; 0x0204A3A4
	ldrb r0, [r1, r0]
	add r2, r1, #0x0
	add r2, #0xe2
	lsl r0, r0, #0xb
	add r0, r2, r0
	bx lr

	thumb_func_start FUN_0204A3B0
FUN_0204A3B0: ; 0x0204A3B0
	push {r4-r7, lr}
	sub sp, #0x3c
	str r1, [sp, #0x8]
	str r2, [sp, #0xc]
	str r0, [sp, #0x4]
	mov r2, #0x0
	add r1, sp, #0x18
	strb r2, [r1, #0x0]
	bl MapMatrix_GetWidth
	add r6, r0, #0x0
	ldr r0, [sp, #0x4]
	bl MapMatrix_GetHeight
	str r0, [sp, #0x10]
	mov r0, #0x0
	str r0, [sp, #0x14]
	ldr r0, [sp, #0x10]
	cmp r0, #0x0
	ble _0204A410
	ldr r7, [sp, #0x14]
_0204A3DA:
	mov r5, #0x0
	cmp r6, #0x0
	ble _0204A402
_0204A3E0:
	add r0, r5, r7
	lsl r0, r0, #0x10
	lsr r4, r0, #0x10
	ldr r1, [sp, #0x4]
	add r0, r4, #0x0
	bl MapMatrix_GetMapData
	add r1, sp, #0x18
	add r1, #0x2
	add r2, sp, #0x18
	bl FUN_0204A45C
	ldr r1, [sp, #0x8]
	add r5, r5, #0x1
	strb r0, [r1, r4]
	cmp r5, r6
	blt _0204A3E0
_0204A402:
	ldr r0, [sp, #0x14]
	add r7, r7, r6
	add r1, r0, #0x1
	ldr r0, [sp, #0x10]
	str r1, [sp, #0x14]
	cmp r1, r0
	blt _0204A3DA
_0204A410:
	mov r0, #0x43
	mov r1, #0xb
	bl NARC_ctor
	add r7, r0, #0x0
	ldr r0, [sp, #0xc]
	mov r6, #0x0
	cmp r0, #0x0
	ble _0204A452
	ldr r0, [sp, #0x8]
	add r4, sp, #0x18
	add r0, #0xe2
	add r4, #0x2
	add r5, r6, #0x0
	str r0, [sp, #0x8]
_0204A42E:
	ldr r0, [sp, #0x8]
	lsl r1, r5, #0x1
	add r0, r0, r1
	str r0, [sp, #0x0]
	ldrh r1, [r4, #0x0]
	mov r2, #0x10
	add r0, r7, #0x0
	lsl r3, r2, #0x7
	bl NARC_ReadFromMember
	mov r0, #0x1
	lsl r0, r0, #0xa
	add r5, r5, r0
	ldr r0, [sp, #0xc]
	add r6, r6, #0x1
	add r4, r4, #0x2
	cmp r6, r0
	blt _0204A42E
_0204A452:
	add r0, r7, #0x0
	bl NARC_dtor
	add sp, #0x3c
	pop {r4-r7, pc}

	thumb_func_start FUN_0204A45C
FUN_0204A45C: ; 0x0204A45C
	push {r3-r7, lr}
	add r7, r2, #0x0
	add r5, r0, #0x0
	ldrb r0, [r7, #0x0]
	add r6, r1, #0x0
	mov r4, #0x0
	cmp r0, #0x0
	bls _0204A482
_0204A46C:
	lsl r1, r4, #0x1
	ldrh r1, [r6, r1]
	cmp r5, r1
	bne _0204A478
	add r0, r4, #0x0
	pop {r3-r7, pc}
_0204A478:
	add r1, r4, #0x1
	lsl r1, r1, #0x18
	lsr r4, r1, #0x18
	cmp r4, r0
	blo _0204A46C
_0204A482:
	cmp r4, #0x10
	blo _0204A48A
	bl GF_AssertFail
_0204A48A:
	lsl r0, r4, #0x1
	strh r5, [r6, r0]
	ldrb r0, [r7, #0x0]
	add r0, r0, #0x1
	strb r0, [r7, #0x0]
	add r0, r4, #0x0
	pop {r3-r7, pc}