summaryrefslogtreecommitdiff
path: root/arm9/asm/NNS_G3D_res_struct_acce.s
blob: e0420f9b8ea9de1a49bb9208c1433b9ff3bdae6e (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
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
	.include "asm/macros.inc"
	.include "global.inc"

	.section .text

	arm_func_start NNS_G3dGetTex
NNS_G3dGetTex: ; 0x020BC0FC
	ldrh r2, [r0, #0xc]
	ldrh r1, [r0, #0xe]
	add r3, r0, r2
	cmp r1, #0x1
	bne _020BC12C
	ldr r2, [r0, #0x0]
	ldr r1, _020BC138 ; =0x30585442
	cmp r2, r1
	ldreq r1, [r3, #0x0]
	addeq r0, r0, r1
	movne r0, #0x0
	bx lr
_020BC12C:
	ldr r1, [r3, #0x4]
	add r0, r0, r1
	bx lr
	.balign 4
_020BC138: .word 0x30585442
	arm_func_end NNS_G3dGetTex

	arm_func_start NNS_G3dGetMdlSet
NNS_G3dGetMdlSet: ; 0x020BC13C
	ldrh r1, [r0, #0xc]
	ldr r1, [r0, r1]
	add r0, r0, r1
	bx lr
	arm_func_end NNS_G3dGetMdlSet

	arm_func_start NNS_G3dGetResDictIdxByName
NNS_G3dGetResDictIdxByName: ; 0x020BC14C
	stmdb sp!, {r4-r7,lr}
	sub sp, sp, #0x4
	ldrb r2, [r0, #0x1]
	cmp r2, #0x10
	bhs _020BC1E4
	cmp r2, #0x0
	ldr lr, [r1, #0x0]
	ldr r12, [r1, #0x4]
	ldr r3, [r1, #0x8]
	ldr r2, [r1, #0xc]
	mov r4, #0x0
	bls _020BC294
	ldrh r5, [r0, #0x6]
	mov r1, r4
	add r6, r0, r5
	ldrh r5, [r6, #0x2]
	add r6, r6, r5
_020BC190:
	ldr r5, [r6, r1]
	add r7, r6, r1
	cmp r5, lr
	bne _020BC1CC
	ldr r5, [r7, #0x4]
	cmp r5, r12
	bne _020BC1CC
	ldr r5, [r7, #0x8]
	cmp r5, r3
	bne _020BC1CC
	ldr r5, [r7, #0xc]
	cmp r5, r2
	addeq sp, sp, #0x4
	moveq r0, r4
	ldmeqia sp!, {r4-r7,pc}
_020BC1CC:
	ldrb r5, [r0, #0x1]
	add r4, r4, #0x1
	add r1, r1, #0x10
	cmp r4, r5
	blo _020BC190
	b _020BC294
_020BC1E4:
	add r3, r0, #0x8
	ldrb r2, [r3, #0x1]
	cmp r2, #0x0
	beq _020BC294
	ldrb r5, [r3, r2, lsl #0x2]
	ldrb r4, [r3, #0x0]
	add r2, r3, r2, lsl #0x2
	cmp r4, r5
	bls _020BC238
_020BC208:
	mov r4, r5, asr #0x5
	ldr r12, [r1, r4, lsl #0x2]
	and r4, r5, #0x1f
	mov r4, r12, lsr r4
	and r4, r4, #0x1
	add r4, r2, r4
	ldrb r12, [r4, #0x1]
	ldrb r4, [r2, #0x0]
	ldrb r5, [r3, r12, lsl #0x2]
	add r2, r3, r12, lsl #0x2
	cmp r4, r5
	bhi _020BC208
_020BC238:
	ldrh r4, [r0, #0x6]
	ldr r3, [r1, #0x0]
	add r12, r0, r4
	ldrh r4, [r12, #0x2]
	ldrb r0, [r2, #0x3]
	add r4, r12, r4
	ldr r2, [r4, r0, lsl #0x4]
	add r4, r4, r0, lsl #0x4
	cmp r2, r3
	bne _020BC294
	ldr r3, [r4, #0x4]
	ldr r2, [r1, #0x4]
	cmp r3, r2
	bne _020BC294
	ldr r3, [r4, #0x8]
	ldr r2, [r1, #0x8]
	cmp r3, r2
	bne _020BC294
	ldr r2, [r4, #0xc]
	ldr r1, [r1, #0xc]
	cmp r2, r1
	addeq sp, sp, #0x4
	ldmeqia sp!, {r4-r7,pc}
_020BC294:
	mvn r0, #0x0
	add sp, sp, #0x4
	ldmia sp!, {r4-r7,pc}
	arm_func_end NNS_G3dGetResDictIdxByName

	arm_func_start NNS_G3dGetResDataByName
NNS_G3dGetResDataByName: ; 0x020BC2A0
	stmdb sp!, {r4-r7,lr}
	sub sp, sp, #0x4
	ldrb r2, [r0, #0x1]
	cmp r2, #0x10
	bhs _020BC34C
	cmp r2, #0x0
	ldr lr, [r1, #0x0]
	ldr r12, [r1, #0x4]
	ldr r3, [r1, #0x8]
	ldr r2, [r1, #0xc]
	mov r4, #0x0
	bls _020BC404
	ldrh r5, [r0, #0x6]
	mov r1, r4
	add r6, r0, r5
	ldrh r5, [r6, #0x2]
	add r6, r6, r5
_020BC2E4:
	ldr r5, [r6, r1]
	add r7, r6, r1
	cmp r5, lr
	bne _020BC334
	ldr r5, [r7, #0x4]
	cmp r5, r12
	bne _020BC334
	ldr r5, [r7, #0x8]
	cmp r5, r3
	bne _020BC334
	ldr r5, [r7, #0xc]
	cmp r5, r2
	bne _020BC334
	ldrh r2, [r0, #0x6]
	add sp, sp, #0x4
	ldrh r1, [r0, r2]
	add r0, r0, r2
	add r0, r0, #0x4
	mla r0, r1, r4, r0
	ldmia sp!, {r4-r7,pc}
_020BC334:
	ldrb r5, [r0, #0x1]
	add r4, r4, #0x1
	add r1, r1, #0x10
	cmp r4, r5
	blo _020BC2E4
	b _020BC404
_020BC34C:
	add r3, r0, #0x8
	ldrb r2, [r3, #0x1]
	cmp r2, #0x0
	beq _020BC404
	ldrb r5, [r3, r2, lsl #0x2]
	ldrb r4, [r3, #0x0]
	add r2, r3, r2, lsl #0x2
	cmp r4, r5
	bls _020BC3A0
_020BC370:
	mov r4, r5, asr #0x5
	ldr r12, [r1, r4, lsl #0x2]
	and r4, r5, #0x1f
	mov r4, r12, lsr r4
	and r4, r4, #0x1
	add r4, r2, r4
	ldrb r12, [r4, #0x1]
	ldrb r4, [r2, #0x0]
	ldrb r5, [r3, r12, lsl #0x2]
	add r2, r3, r12, lsl #0x2
	cmp r4, r5
	bhi _020BC370
_020BC3A0:
	ldrh r4, [r0, #0x6]
	ldrb r2, [r2, #0x3]
	ldr r3, [r1, #0x0]
	add r0, r0, r4
	ldrh r4, [r0, #0x2]
	add r12, r0, r4
	ldr r4, [r12, r2, lsl #0x4]
	add r12, r12, r2, lsl #0x4
	cmp r4, r3
	bne _020BC404
	ldr r4, [r12, #0x4]
	ldr r3, [r1, #0x4]
	cmp r4, r3
	bne _020BC404
	ldr r4, [r12, #0x8]
	ldr r3, [r1, #0x8]
	cmp r4, r3
	bne _020BC404
	ldr r3, [r12, #0xc]
	ldr r1, [r1, #0xc]
	cmp r3, r1
	ldreqh r1, [r0], #0x4
	addeq sp, sp, #0x4
	mlaeq r0, r1, r2, r0
	ldmeqia sp!, {r4-r7,pc}
_020BC404:
	mov r0, #0x0
	add sp, sp, #0x4
	ldmia sp!, {r4-r7,pc}
	arm_func_end NNS_G3dGetResDataByName

	arm_func_start NNSi_G3dGetTexPatAnmDataByIdx
NNSi_G3dGetTexPatAnmDataByIdx: ; 0x020BC410
	ldrh r3, [r0, #0x12]
	add r0, r0, #0xc
	ldrh r2, [r0, r3]
	add r0, r0, r3
	add r0, r0, #0x4
	mla r0, r2, r1, r0
	bx lr
	arm_func_end NNSi_G3dGetTexPatAnmDataByIdx

	arm_func_start NNSi_G3dGetTexPatAnmFV
NNSi_G3dGetTexPatAnmFV: ; 0x020BC42C
	stmdb sp!, {r4-r5,lr}
	sub sp, sp, #0x4
	mov r5, r0
	mov r4, r2
	bl NNSi_G3dGetTexPatAnmDataByIdx
	ldrsh r1, [r0, #0x4]
	ldrh r3, [r0, #0x6]
	mul r2, r1, r4
	add r3, r5, r3
	mov r2, r2, lsr #0xc
	b _020BC45C
_020BC458:
	sub r2, r2, #0x1
_020BC45C:
	cmp r2, #0x0
	beq _020BC474
	mov r1, r2, lsl #0x2
	ldrh r1, [r3, r1]
	cmp r1, r4
	bhs _020BC458
_020BC474:
	ldrh r1, [r0, #0x0]
	b _020BC480
_020BC47C:
	add r2, r2, #0x1
_020BC480:
	add r0, r2, #0x1
	cmp r0, r1
	bhs _020BC49C
	add r0, r3, r2, lsl #0x2
	ldrh r0, [r0, #0x4]
	cmp r0, r4
	bls _020BC47C
_020BC49C:
	add r0, r3, r2, lsl #0x2
	add sp, sp, #0x4
	ldmia sp!, {r4-r5,pc}
	arm_func_end NNSi_G3dGetTexPatAnmFV

	arm_func_start NNSi_G3dGetTexPatAnmPlttNameByIdx
NNSi_G3dGetTexPatAnmPlttNameByIdx: ; 0x020BC4A8
	ldrh r2, [r0, #0xa]
	add r0, r0, r2
	add r0, r0, r1, lsl #0x4
	bx lr
	arm_func_end NNSi_G3dGetTexPatAnmPlttNameByIdx

	arm_func_start NNSi_G3dGetTexPatAnmTexNameByIdx
NNSi_G3dGetTexPatAnmTexNameByIdx: ; 0x020BC4B8
	ldrh r2, [r0, #0x8]
	add r0, r0, r2
	add r0, r0, r1, lsl #0x4
	bx lr
	arm_func_end NNSi_G3dGetTexPatAnmTexNameByIdx

	arm_func_start NNS_G3dGetAnmByIdx
NNS_G3dGetAnmByIdx: ; 0x020BC4C8
	ldrh r2, [r0, #0xc]
	ldr r2, [r0, r2]
	add r12, r0, r2
	ldrh r2, [r12, #0xe]
	add r3, r12, #0x8
	ldrh r0, [r3, r2]
	add r2, r3, r2
	add r2, r2, #0x4
	mul r1, r0, r1
	adds r0, r2, r1
	ldrne r0, [r0, #0x0]
	addne r0, r12, r0
	moveq r0, #0x0
	bx lr
	arm_func_end NNS_G3dGetAnmByIdx