summaryrefslogtreecommitdiff
path: root/arm9/modules/05/asm/mod05_021F61F4.s
blob: 6b6cd88914c5c254bc4a041f3be825c4d02c61a8 (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
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
	.include "asm/macros.inc"
	.include "global.inc"
	.section .text
	.balign 4, 0

	thumb_func_start MOD05_021F61F4
MOD05_021F61F4: ; 0x021F61F4
	push {r4, r5, r6, lr}
	add r6, r1, #0
	add r5, r0, #0
	add r0, r6, #0
	mov r1, #0x34
	bl AllocFromHeapAtEnd
	add r4, r0, #0
	mov r1, #0
	mov r2, #0x34
	bl memset
	str r6, [r4]
	mov r0, #0
	str r0, [r4, #0xc]
	str r5, [r4, #0x2c]
	ldr r0, [r5, #0x20]
	str r0, [r4, #0x30]
	bl Camera_GetDistance
	str r0, [r4, #0x10]
	str r0, [r4, #0x20]
	ldr r0, _021F622C ; =MOD05_021F6270
	ldr r2, _021F6230 ; =0x0000FFFF
	add r1, r4, #0
	bl FUN_0200CA44
	pop {r4, r5, r6, pc}
	.align 2, 0
_021F622C: .word MOD05_021F6270
_021F6230: .word 0x0000FFFF

	thumb_func_start MOD05_021F6234
MOD05_021F6234: ; 0x021F6234
	push {r3, lr}
	bl FUN_0201B6C8
	ldr r0, [r0, #8]
	pop {r3, pc}
	.align 2, 0

	thumb_func_start MOD05_021F6240
MOD05_021F6240: ; 0x021F6240
	push {r4, lr}
	add r4, r0, #0
	bl FUN_0201B6C8
	bl FreeToHeap
	add r0, r4, #0
	bl FUN_0200CAB4
	pop {r4, pc}

	thumb_func_start MOD05_021F6254
MOD05_021F6254: ; 0x021F6254
	push {r4, r5, r6, lr}
	add r5, r1, #0
	add r4, r2, #0
	add r6, r3, #0
	bl FUN_0201B6C8
	mov r1, #0
	str r1, [r0, #4]
	str r1, [r0, #8]
	str r5, [r0, #0xc]
	str r4, [r0, #0x14]
	str r6, [r0, #0x1c]
	str r1, [r0, #0x24]
	pop {r4, r5, r6, pc}

	thumb_func_start MOD05_021F6270
MOD05_021F6270: ; 0x021F6270
	push {r3, lr}
	add r0, r1, #0
	ldr r1, [r1, #0xc]
	lsl r2, r1, #2
	ldr r1, _021F6280 ; =UNK05_021FD1B8
	ldr r1, [r1, r2]
	blx r1
	pop {r3, pc}
	.align 2, 0
_021F6280: .word UNK05_021FD1B8

	thumb_func_start MOD05_021F6284
MOD05_021F6284: ; 0x021F6284
	mov r1, #1
	str r1, [r0, #8]
	bx lr
	.align 2, 0

	thumb_func_start MOD05_021F628C
MOD05_021F628C: ; 0x021F628C
	push {r4, lr}
	add r4, r0, #0
	ldr r1, [r4, #4]
	cmp r1, #0
	beq _021F629C
	cmp r1, #1
	beq _021F62A6
	pop {r4, pc}
_021F629C:
	bl MOD05_021F630C
	ldr r0, [r4, #4]
	add r0, r0, #1
	str r0, [r4, #4]
_021F62A6:
	add r0, r4, #0
	bl MOD05_021F633C
	cmp r0, #1
	bne _021F62BA
	ldr r0, [r4, #4]
	add r0, r0, #1
	str r0, [r4, #4]
	mov r0, #1
	str r0, [r4, #8]
_021F62BA:
	add r0, r4, #0
	bl MOD05_021F62FC
	pop {r4, pc}
	.align 2, 0

	thumb_func_start MOD05_021F62C4
MOD05_021F62C4: ; 0x021F62C4
	push {r4, lr}
	add r4, r0, #0
	ldr r1, [r4, #4]
	cmp r1, #0
	beq _021F62D4
	cmp r1, #1
	beq _021F62DE
	pop {r4, pc}
_021F62D4:
	bl MOD05_021F6324
	ldr r0, [r4, #4]
	add r0, r0, #1
	str r0, [r4, #4]
_021F62DE:
	add r0, r4, #0
	bl MOD05_021F633C
	cmp r0, #1
	bne _021F62F2
	ldr r0, [r4, #4]
	add r0, r0, #1
	str r0, [r4, #4]
	mov r0, #1
	str r0, [r4, #8]
_021F62F2:
	add r0, r4, #0
	bl MOD05_021F62FC
	pop {r4, pc}
	.align 2, 0

	thumb_func_start MOD05_021F62FC
MOD05_021F62FC: ; 0x021F62FC
	ldr r3, _021F6308 ; =FUN_0201EFE0
	add r1, r0, #0
	ldr r0, [r1, #0x20]
	ldr r1, [r1, #0x30]
	bx r3
	nop
_021F6308: .word Camera_SetDistance

	thumb_func_start MOD05_021F630C
MOD05_021F630C: ; 0x021F630C
	push {r4, lr}
	add r4, r0, #0
	ldr r0, [r4, #0x14]
	ldr r1, [r4, #0x1c]
	bl _s32_div_f
	str r0, [r4, #0x28]
	ldr r1, [r4, #0x20]
	ldr r0, [r4, #0x14]
	add r0, r1, r0
	str r0, [r4, #0x18]
	pop {r4, pc}

	thumb_func_start MOD05_021F6324
MOD05_021F6324: ; 0x021F6324
	push {r4, lr}
	add r4, r0, #0
	ldr r1, [r4, #0x10]
	ldr r0, [r4, #0x20]
	sub r0, r1, r0
	ldr r1, [r4, #0x1c]
	bl _s32_div_f
	str r0, [r4, #0x28]
	ldr r0, [r4, #0x10]
	str r0, [r4, #0x18]
	pop {r4, pc}

	thumb_func_start MOD05_021F633C
MOD05_021F633C: ; 0x021F633C
	ldr r2, [r0, #0x20]
	ldr r1, [r0, #0x28]
	add r1, r2, r1
	str r1, [r0, #0x20]
	ldr r1, [r0, #0x24]
	add r2, r1, #1
	str r2, [r0, #0x24]
	ldr r1, [r0, #0x1c]
	cmp r2, r1
	blo _021F635A
	str r1, [r0, #0x24]
	ldr r1, [r0, #0x18]
	str r1, [r0, #0x20]
	mov r0, #1
	bx lr
_021F635A:
	mov r0, #0
	bx lr
	.align 2, 0

	.section .rodata

	.global UNK05_021FD1B8
UNK05_021FD1B8: ; 0x021FD1B8
	.word MOD05_021F6284, MOD05_021F628C, MOD05_021F62C4, 0x00000000