summaryrefslogtreecommitdiff
path: root/arm9/asm/GX_g3b.s
blob: 5bb7ac21c41c545feef5fe1368bd53878b4cddca (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
    .include "asm/macros.inc"
    .include "global.inc"

    .text

	arm_func_start G3B_End
G3B_End: ; 0x020C75AC
	ldr r1, [r0, #0x0]
	mov r2, #0x41
	str r2, [r1, #0x0]
	ldr r1, [r0, #0x4]
	str r1, [r0, #0x0]
	ldr r1, [r0, #0x0]
	add r1, r1, #0x4
	str r1, [r0, #0x4]
	bx lr

	arm_func_start G3B_Begin
G3B_Begin: ; 0x020C75D0
	ldr r2, [r0, #0x0]
	mov r3, #0x40
	str r3, [r2, #0x0]
	ldr r2, [r0, #0x4]
	str r1, [r2, #0x0]
	ldr r1, [r0, #0x4]
	add r1, r1, #0x4
	str r1, [r0, #0x0]
	ldr r1, [r0, #0x0]
	add r1, r1, #0x4
	str r1, [r0, #0x4]
	bx lr

	arm_func_start G3B_LightColor
G3B_LightColor: ; 0x020C7600
	ldr r3, [r0, #0x0]
	mov r12, #0x33
	str r12, [r3, #0x0]
	ldr r3, [r0, #0x4]
	orr r1, r2, r1, lsl #0x1e
	str r1, [r3, #0x0]
	ldr r1, [r0, #0x4]
	add r1, r1, #0x4
	str r1, [r0, #0x0]
	ldr r1, [r0, #0x0]
	add r1, r1, #0x4
	str r1, [r0, #0x4]
	bx lr

	arm_func_start G3B_LightVector
G3B_LightVector: ; 0x020C7634
	stmdb sp!, {r4-r5,lr}
	sub sp, sp, #0x4
	ldr ip, _020C7694 ; =0x000003FF
	ldrsh r4, [sp, #0x10]
	ldr lr, [r0, #0x0]
	mov r5, #0x32
	str r5, [lr, #0x0]
	and lr, r12, r2, asr #0x3
	and r2, r12, r3, asr #0x3
	and r3, r12, r4, asr #0x3
	orr r2, lr, r2, lsl #0xa
	orr r3, r2, r3, lsl #0x14
	ldr r2, [r0, #0x4]
	orr r1, r3, r1, lsl #0x1e
	str r1, [r2, #0x0]
	ldr r1, [r0, #0x4]
	add r1, r1, #0x4
	str r1, [r0, #0x0]
	ldr r1, [r0, #0x0]
	add r1, r1, #0x4
	str r1, [r0, #0x4]
	add sp, sp, #0x4
	ldmia sp!, {r4-r5,lr}
	bx lr
	.balign 4
_020C7694: .word 0x000003FF

	arm_func_start G3B_MaterialColorSpecEmi
G3B_MaterialColorSpecEmi: ; 0x020C7698
	stmdb sp!, {lr}
	sub sp, sp, #0x4
	ldr r12, [r0, #0x0]
	mov lr, #0x31
	cmp r3, #0x0
	movne r3, #0x1
	str lr, [r12, #0x0]
	orr r2, r1, r2, lsl #0x10
	moveq r3, #0x0
	ldr r1, [r0, #0x4]
	orr r2, r2, r3, lsl #0xf
	str r2, [r1, #0x0]
	ldr r1, [r0, #0x4]
	add r1, r1, #0x4
	str r1, [r0, #0x0]
	ldr r1, [r0, #0x0]
	add r1, r1, #0x4
	str r1, [r0, #0x4]
	add sp, sp, #0x4
	ldmia sp!, {lr}
	bx lr

	arm_func_start G3B_MaterialColorDiffAmb
G3B_MaterialColorDiffAmb: ; 0x020C76EC
	stmdb sp!, {lr}
	sub sp, sp, #0x4
	ldr r12, [r0, #0x0]
	mov lr, #0x30
	cmp r3, #0x0
	movne r3, #0x1
	str lr, [r12, #0x0]
	orr r2, r1, r2, lsl #0x10
	moveq r3, #0x0
	ldr r1, [r0, #0x4]
	orr r2, r2, r3, lsl #0xf
	str r2, [r1, #0x0]
	ldr r1, [r0, #0x4]
	add r1, r1, #0x4
	str r1, [r0, #0x0]
	ldr r1, [r0, #0x0]
	add r1, r1, #0x4
	str r1, [r0, #0x4]
	add sp, sp, #0x4
	ldmia sp!, {lr}
	bx lr

	arm_func_start G3B_PolygonAttr
G3B_PolygonAttr: ; 0x020C7740
	orr r1, r1, r2, lsl #0x4
	ldr r2, [r0, #0x0]
	mov r12, #0x29
	str r12, [r2, #0x0]
	ldr r2, [sp, #0x8]
	orr r1, r1, r3, lsl #0x6
	ldr r3, [sp, #0x0]
	orr r1, r2, r1
	ldr r12, [sp, #0x4]
	orr r2, r1, r3, lsl #0x18
	ldr r1, [r0, #0x4]
	orr r2, r2, r12, lsl #0x10
	str r2, [r1, #0x0]
	ldr r1, [r0, #0x4]
	add r1, r1, #0x4
	str r1, [r0, #0x0]
	ldr r1, [r0, #0x0]
	add r1, r1, #0x4
	str r1, [r0, #0x4]
	bx lr

	arm_func_start G3B_Vtx
G3B_Vtx: ; 0x020C7790
	stmdb sp!, {lr}
	sub sp, sp, #0x4
	ldr r12, [r0, #0x0]
	mov lr, #0x23
	str lr, [r12, #0x0]
	mov r1, r1, lsl #0x10
	mov r2, r2, lsl #0x10
	mov lr, r1, lsr #0x10
	mov r12, r2, lsr #0x10
	mov r1, r3, lsl #0x10
	ldr r2, [r0, #0x4]
	orr r3, lr, r12, lsl #0x10
	str r3, [r2, #0x0]
	ldr r2, [r0, #0x4]
	mov r1, r1, lsr #0x10
	str r1, [r2, #0x4]
	ldr r1, [r0, #0x4]
	add r1, r1, #0x8
	str r1, [r0, #0x0]
	ldr r1, [r0, #0x0]
	add r1, r1, #0x4
	str r1, [r0, #0x4]
	add sp, sp, #0x4
	ldmia sp!, {lr}
	bx lr

	arm_func_start G3B_Normal
G3B_Normal: ; 0x020C77F4
	stmdb sp!, {r4,lr}
	ldr ip, _020C7844 ; =0x000003FF
	ldr lr, [r0, #0x0]
	mov r4, #0x21
	str r4, [lr, #0x0]
	and lr, r12, r1, asr #0x3
	and r1, r12, r2, asr #0x3
	and r3, r12, r3, asr #0x3
	orr r2, lr, r1, lsl #0xa
	ldr r1, [r0, #0x4]
	orr r2, r2, r3, lsl #0x14
	str r2, [r1, #0x0]
	ldr r1, [r0, #0x4]
	add r1, r1, #0x4
	str r1, [r0, #0x0]
	ldr r1, [r0, #0x0]
	add r1, r1, #0x4
	str r1, [r0, #0x4]
	ldmia sp!, {r4,lr}
	bx lr
	.balign 4
_020C7844: .word 0x000003FF

	arm_func_start G3B_Color
G3B_Color: ; 0x020C7848
	ldr r2, [r0, #0x0]
	mov r3, #0x20
	str r3, [r2, #0x0]
	ldr r2, [r0, #0x4]
	str r1, [r2, #0x0]
	ldr r1, [r0, #0x4]
	add r1, r1, #0x4
	str r1, [r0, #0x0]
	ldr r1, [r0, #0x0]
	add r1, r1, #0x4
	str r1, [r0, #0x4]
	bx lr

	arm_func_start G3B_LoadMtx44
G3B_LoadMtx44: ; 0x020C7878
	stmdb sp!, {r4,lr}
	mov r4, r0
	bl G3BS_LoadMtx44
	ldr r0, [r4, #0x4]
	add r0, r0, #0x40
	str r0, [r4, #0x0]
	ldr r0, [r4, #0x0]
	add r0, r0, #0x4
	str r0, [r4, #0x4]
	ldmia sp!, {r4,lr}
	bx lr

	arm_func_start G3B_PopMtx
G3B_PopMtx: ; 0x020C78A4
	ldr r2, [r0, #0x0]
	mov r3, #0x12
	str r3, [r2, #0x0]
	ldr r2, [r0, #0x4]
	str r1, [r2, #0x0]
	ldr r1, [r0, #0x4]
	add r1, r1, #0x4
	str r1, [r0, #0x0]
	ldr r1, [r0, #0x0]
	add r1, r1, #0x4
	str r1, [r0, #0x4]
	bx lr

	arm_func_start G3B_PushMtx
G3B_PushMtx: ; 0x020C78D4
	ldr r1, [r0, #0x0]
	mov r2, #0x11
	str r2, [r1, #0x0]
	ldr r1, [r0, #0x4]
	str r1, [r0, #0x0]
	ldr r1, [r0, #0x0]
	add r1, r1, #0x4
	str r1, [r0, #0x4]
	bx lr

	arm_func_start G3BS_LoadMtx44
G3BS_LoadMtx44: ; 0x020C78F8
	mov r3, r0
	ldr r0, [r3, #0x0]
	mov r2, #0x16
	str r2, [r0, #0x0]
	mov r0, r1
	ldr ip, _020C7918 ; =MI_Copy64B
	ldr r1, [r3, #0x4]
	bx r12
	.balign 4
_020C7918: .word MI_Copy64B